<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[53213] trunk/src/wp-includes/blocks/cover.php: Editor: Include the PHP file for the Cover block</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/53213">53213</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/53213","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>gziolo</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2022-04-19 11:49:22 +0000 (Tue, 19 Apr 2022)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Editor: Include the PHP file for the Cover block

This file is copied by the build process but it also needs to be versioned so unit tests can run without issues.

Follow-up <a href="https://core.trac.wordpress.org/changeset/53212">[53212]</a>.
See <a href="https://core.trac.wordpress.org/ticket/55580">#55580</a>.</pre>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunksrcwpincludesblockscoverphp">trunk/src/wp-includes/blocks/cover.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpincludesblockscoverphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: trunk/src/wp-includes/blocks/cover.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/blocks/cover.php                            (rev 0)
+++ trunk/src/wp-includes/blocks/cover.php      2022-04-19 11:49:22 UTC (rev 53213)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,85 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * Server-side rendering of the `core/cover` block.
+ *
+ * @package WordPress
+ */
+
+/**
+ * Renders the `core/cover` block on server.
+ *
+ * @param array $attributes The block attributes.
+ * @param array $content    The block rendered content.
+ *
+ * @return string Returns the cover block markup, if useFeaturedImage is true.
+ */
+function render_block_core_cover( $attributes, $content ) {
+       if ( false === $attributes['useFeaturedImage'] ) {
+               return $content;
+       }
+
+       $current_featured_image = get_the_post_thumbnail_url();
+
+       if ( false === $current_featured_image ) {
+               return $content;
+       }
+
+       $is_img_element      = ! ( $attributes['hasParallax'] || $attributes['isRepeated'] );
+       $is_image_background = 'image' === $attributes['backgroundType'];
+
+       if ( $is_image_background && ! $is_img_element ) {
+               $content = preg_replace(
+                       '/class=\".*?\"/',
+                       '${0} style="background-image:url(' . esc_url( $current_featured_image ) . ')"',
+                       $content,
+                       1
+               );
+       }
+
+       if ( $is_image_background && $is_img_element ) {
+               $object_position = '';
+               if ( isset( $attributes['focalPoint'] ) ) {
+                       $object_position = round( $attributes['focalPoint']['x'] * 100 ) . '%' . ' ' .
+                       round( $attributes['focalPoint']['x'] * 100 ) . '%';
+               }
+
+               $image_template = '<img
+                       class="wp-block-cover__image-background"
+                       alt="%s"
+                       src="%s"
+                       style="object-position: %s"
+                       data-object-fit="cover"
+                       data-object-position="%s"
+               />';
+
+               $image = sprintf(
+                       $image_template,
+                       esc_attr( get_the_post_thumbnail_caption() ),
+                       esc_url( $current_featured_image ),
+                       esc_attr( $object_position ),
+                       esc_attr( $object_position )
+               );
+
+               $content = str_replace(
+                       '</span><div',
+                       '</span>' . $image . '<div',
+                       $content
+               );
+
+       }
+
+       return $content;
+}
+
+/**
+ * Registers the `core/cover` block renderer on server.
+ */
+function register_block_core_cover() {
+       register_block_type_from_metadata(
+               __DIR__ . '/cover',
+               array(
+                       'render_callback' => 'render_block_core_cover',
+               )
+       );
+}
+add_action( 'init', 'register_block_core_cover' );
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: trunk/src/wp-includes/blocks/cover.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span></div>

</body>
</html>