This commit is contained in:
github-actions[bot] 2025-02-10 23:18:52 +00:00
parent 7dc7e421ae
commit 5f016b5491
34 changed files with 891 additions and 12 deletions

View file

@ -0,0 +1,21 @@
{
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 2,
"name": "wporg/pledge-contributors",
"version": "1.0.0-7dc7e42",
"title": "Pledge contributors",
"category": "design",
"icon": "",
"description": "List out the contributors for this organization's pledge.",
"textdomain": "wporg",
"supports": {
"html": false
},
"usesContext": [
"postId",
"postType"
],
"editorScript": "file:./index.js",
"style": "file:./style-index.css",
"render": "file:./render.php"
}

View file

@ -0,0 +1 @@
<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-server-side-render'), 'version' => 'd5ac64c46f40b9fd623c');

View file

@ -0,0 +1 @@
(()=>{"use strict";var r,e={687:(r,e,t)=>{const o=window.wp.blocks,n=window.wp.blockEditor,i=window.wp.serverSideRender;var s=t.n(i);const a=JSON.parse('{"UU":"wporg/pledge-contributors"}'),l=window.ReactJSXRuntime;(0,o.registerBlockType)(a.UU,{edit:({attributes:r,name:e})=>{const t=(0,n.useBlockProps)();return(0,l.jsx)("div",{...t,children:(0,l.jsx)(s(),{block:e,attributes:r,skipBlockSupportAttributes:!0})})},save:()=>null})}},t={};function o(r){var n=t[r];if(void 0!==n)return n.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,o),i.exports}o.m=e,r=[],o.O=(e,t,n,i)=>{if(!t){var s=1/0;for(u=0;u<r.length;u++){t=r[u][0],n=r[u][1],i=r[u][2];for(var a=!0,l=0;l<t.length;l++)(!1&i||s>=i)&&Object.keys(o.O).every((r=>o.O[r](t[l])))?t.splice(l--,1):(a=!1,i<s&&(s=i));if(a){r.splice(u--,1);var p=n();void 0!==p&&(e=p)}}return e}i=i||0;for(var u=r.length;u>0&&r[u-1][2]>i;u--)r[u]=r[u-1];r[u]=[t,n,i]},o.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return o.d(e,{a:e}),e},o.d=(r,e)=>{for(var t in e)o.o(e,t)&&!o.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:e[t]})},o.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={102:0,394:0};o.O.j=e=>0===r[e];var e=(e,t)=>{var n,i,s=t[0],a=t[1],l=t[2],p=0;if(s.some((e=>0!==r[e]))){for(n in a)o.o(a,n)&&(o.m[n]=a[n]);if(l)var u=l(o)}for(e&&e(t);p<s.length;p++)i=s[p],o.o(r,i)&&r[i]&&r[i][0](),r[i]=0;return o.O(u)},t=self.webpackChunkwporg_5ftf_2024=self.webpackChunkwporg_5ftf_2024||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))})();var n=o.O(void 0,[394],(()=>o(687)));n=o.O(n)})();

View file

@ -0,0 +1,50 @@
<?php
use WordPressDotOrg\FiveForTheFuture\Contributor;
use const WordPressdotorg\Theme\FiveForTheFuture_2024\Pledge_Contributors\TRUNCATED_MAX;
if ( ! $block->context['postId'] ) {
return '';
}
$contributors = Contributor\get_contributor_user_objects(
Contributor\get_pledge_contributors( $block->context['postId'], 'publish' )
);
$is_truncated = isset( $attributes['className'] ) && str_contains( $attributes['className'], 'is-style-truncated' );
// Initialize count to zero for untruncated view.
$count_more = 0;
// Set avatar size at smallest usage in px.
$avatar_size = 70;
if ( $is_truncated ) {
$count_more = count( $contributors ) - TRUNCATED_MAX;
$contributors = array_splice( $contributors, 0, TRUNCATED_MAX );
$avatar_size = 30;
}
?>
<div
<?php echo get_block_wrapper_attributes(); // phpcs:ignore ?>
>
<?php if ( ! empty( $contributors ) ) : ?>
<ul class="pledge-contributors">
<?php foreach ( $contributors as $contributor ) : ?>
<li class="pledge-contributor">
<span class="pledge-contributor__avatar">
<a href="<?php echo esc_url( 'https://profiles.wordpress.org/' . $contributor->user_nicename . '/' ); ?>">
<?php echo get_avatar( $contributor->user_email, $avatar_size, 'mystery', $contributor->display_name ); ?>
</a>
</span>
</li>
<?php endforeach; ?>
<?php if ( $count_more > 0 ) : ?>
<li class="pledge-contributors__more"><?php echo '+' . esc_html( $count_more ); ?></li>
<?php endif; ?>
</ul>
<?php else : ?>
<p class="pledge-no-contributors"><?php esc_html_e( 'No confirmed contributors yet.', 'wporg-5ftf' ); ?></p>
<?php endif; ?>
</div>

View file

@ -0,0 +1 @@
.wp-block-wporg-pledge-contributors{--wporg-pledge-contributors--spacing--size:70px;--wporg-pledge-contributors--spacing--block-gap:var(--wp--preset--spacing--10)}.wp-block-wporg-pledge-contributors ul{align-content:center;display:flex;flex-wrap:wrap;gap:var(--wporg-pledge-contributors--spacing--block-gap);list-style:none;padding-right:0}.wp-block-wporg-pledge-contributors li{height:var(--wporg-pledge-contributors--spacing--size);width:var(--wporg-pledge-contributors--spacing--size)}.wp-block-wporg-pledge-contributors .pledge-contributor__avatar a{background:var(--wp--preset--color--light-grey-2);border-radius:50%;display:inline-block}.wp-block-wporg-pledge-contributors .pledge-contributor__avatar a:focus{box-shadow:0 0 0 3px var(--wp--preset--color--blueberry-1);outline:1.5px solid var(--wp--preset--color--white)}.wp-block-wporg-pledge-contributors .pledge-contributor__avatar a img{border-radius:50%;display:block;height:auto;max-width:100%}.wp-block-wporg-pledge-contributors .pledge-contributors__more{align-content:center;width:45px}.wp-block-wporg-pledge-contributors .pledge-contributors__more,.wp-block-wporg-pledge-contributors .pledge-no-contributors{font-size:var(--wp--preset--font-size--small);line-height:var(--wp--custom--body--small--typography--line-height)}.wp-block-wporg-pledge-contributors.is-style-truncated{--wporg-pledge-contributors--spacing--size:30px;--wporg-pledge-contributors--spacing--block-gap:4px}

View file

@ -0,0 +1 @@
.wp-block-wporg-pledge-contributors{--wporg-pledge-contributors--spacing--size:70px;--wporg-pledge-contributors--spacing--block-gap:var(--wp--preset--spacing--10)}.wp-block-wporg-pledge-contributors ul{align-content:center;display:flex;flex-wrap:wrap;gap:var(--wporg-pledge-contributors--spacing--block-gap);list-style:none;padding-left:0}.wp-block-wporg-pledge-contributors li{height:var(--wporg-pledge-contributors--spacing--size);width:var(--wporg-pledge-contributors--spacing--size)}.wp-block-wporg-pledge-contributors .pledge-contributor__avatar a{background:var(--wp--preset--color--light-grey-2);border-radius:50%;display:inline-block}.wp-block-wporg-pledge-contributors .pledge-contributor__avatar a:focus{box-shadow:0 0 0 3px var(--wp--preset--color--blueberry-1);outline:1.5px solid var(--wp--preset--color--white)}.wp-block-wporg-pledge-contributors .pledge-contributor__avatar a img{border-radius:50%;display:block;height:auto;max-width:100%}.wp-block-wporg-pledge-contributors .pledge-contributors__more{align-content:center;width:45px}.wp-block-wporg-pledge-contributors .pledge-contributors__more,.wp-block-wporg-pledge-contributors .pledge-no-contributors{font-size:var(--wp--preset--font-size--small);line-height:var(--wp--custom--body--small--typography--line-height)}.wp-block-wporg-pledge-contributors.is-style-truncated{--wporg-pledge-contributors--spacing--size:30px;--wporg-pledge-contributors--spacing--block-gap:4px}