@automattic/newspack-blocks 1.0.0-hotfix-cap-count-user-posts-dedup.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +3 -0
- package/.hooks/pre-push +8 -0
- package/.nvmrc +1 -0
- package/.prettierignore +4 -0
- package/.prettierrc.js +5 -0
- package/.stylelintrc.js +3 -0
- package/AGENTS.md +275 -0
- package/CHANGELOG.md +3971 -0
- package/CLAUDE.md +1 -0
- package/README.md +43 -0
- package/babel.config.js +6 -0
- package/bin/install-wp-tests.sh +155 -0
- package/bin/update-translations.sh +13 -0
- package/block-list.json +12 -0
- package/composer.json +46 -0
- package/composer.lock +3632 -0
- package/dist/author-list/view-rtl.css +1 -0
- package/dist/author-list/view.asset.php +1 -0
- package/dist/author-list/view.css +1 -0
- package/dist/author-list/view.js +0 -0
- package/dist/author-profile/view-rtl.css +1 -0
- package/dist/author-profile/view.asset.php +1 -0
- package/dist/author-profile/view.css +1 -0
- package/dist/author-profile/view.js +0 -0
- package/dist/block_styles-rtl.css +2 -0
- package/dist/block_styles.asset.php +1 -0
- package/dist/block_styles.css +2 -0
- package/dist/block_styles.js +0 -0
- package/dist/blocks/author-list/block.json +89 -0
- package/dist/blocks/author-profile/block.json +80 -0
- package/dist/blocks/carousel/block.json +125 -0
- package/dist/blocks/checkout-button/block.json +117 -0
- package/dist/blocks/donate/block.json +103 -0
- package/dist/blocks/homepage-articles/block.json +260 -0
- package/dist/blocks/iframe/block.json +36 -0
- package/dist/carousel/view-rtl.css +2 -0
- package/dist/carousel/view.asset.php +1 -0
- package/dist/carousel/view.css +2 -0
- package/dist/carousel/view.js +3 -0
- package/dist/checkout-button/view-rtl.css +1 -0
- package/dist/checkout-button/view.asset.php +1 -0
- package/dist/checkout-button/view.css +1 -0
- package/dist/checkout-button/view.js +0 -0
- package/dist/donate/view-rtl.css +1 -0
- package/dist/donate/view.asset.php +1 -0
- package/dist/donate/view.css +1 -0
- package/dist/donate/view.js +1 -0
- package/dist/editor-rtl.css +66 -0
- package/dist/editor.asset.php +1 -0
- package/dist/editor.css +66 -0
- package/dist/editor.js +57 -0
- package/dist/frequencyBased-rtl.css +1 -0
- package/dist/frequencyBased.asset.php +1 -0
- package/dist/frequencyBased.css +1 -0
- package/dist/frequencyBased.js +1 -0
- package/dist/homepage-articles/view-rtl.css +1 -0
- package/dist/homepage-articles/view.asset.php +1 -0
- package/dist/homepage-articles/view.css +1 -0
- package/dist/homepage-articles/view.js +1 -0
- package/dist/iframe/view-rtl.css +1 -0
- package/dist/iframe/view.asset.php +1 -0
- package/dist/iframe/view.css +1 -0
- package/dist/iframe/view.js +1 -0
- package/dist/modal-rtl.css +1 -0
- package/dist/modal.asset.php +1 -0
- package/dist/modal.css +1 -0
- package/dist/modal.js +1 -0
- package/dist/modalCheckout-rtl.css +1 -0
- package/dist/modalCheckout.asset.php +1 -0
- package/dist/modalCheckout.css +1 -0
- package/dist/modalCheckout.js +1 -0
- package/dist/placeholder_blocks.asset.php +1 -0
- package/dist/placeholder_blocks.js +4 -0
- package/dist/tiersBased-rtl.css +1 -0
- package/dist/tiersBased.asset.php +1 -0
- package/dist/tiersBased.css +1 -0
- package/dist/tiersBased.js +1 -0
- package/includes/class-modal-checkout.php +2324 -0
- package/includes/class-newspack-blocks-api.php +347 -0
- package/includes/class-newspack-blocks-caching.php +291 -0
- package/includes/class-newspack-blocks-patterns.php +167 -0
- package/includes/class-newspack-blocks.php +1581 -0
- package/includes/modal-checkout/class-change-payment-gateway.php +86 -0
- package/includes/modal-checkout/class-checkout-data.php +406 -0
- package/includes/plugins/class-the-events-calendar.php +84 -0
- package/includes/tracking/class-data-events.php +83 -0
- package/languages/newspack-blocks-de_DE-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
- package/languages/newspack-blocks-de_DE-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
- package/languages/newspack-blocks-de_DE-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
- package/languages/newspack-blocks-de_DE-10754bc02d28d4301c103f26dbf519ce.json +1 -0
- package/languages/newspack-blocks-de_DE-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
- package/languages/newspack-blocks-de_DE-34e5c64f90b1444f3fc735376442eada.json +1 -0
- package/languages/newspack-blocks-de_DE-351fd022e077061b5796bf7042446bfc.json +1 -0
- package/languages/newspack-blocks-de_DE-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
- package/languages/newspack-blocks-de_DE-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
- package/languages/newspack-blocks-de_DE-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
- package/languages/newspack-blocks-de_DE-4f16e21047908d19937bc10ced63acd1.json +1 -0
- package/languages/newspack-blocks-de_DE-4fdea541976076f02d56139fb35e5b42.json +1 -0
- package/languages/newspack-blocks-de_DE-501b38ac90d35730a620fb0d483702fa.json +1 -0
- package/languages/newspack-blocks-de_DE-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
- package/languages/newspack-blocks-de_DE-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
- package/languages/newspack-blocks-de_DE-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
- package/languages/newspack-blocks-de_DE-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
- package/languages/newspack-blocks-de_DE-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
- package/languages/newspack-blocks-de_DE-727631509ad8eec8e2cbe740c6dad199.json +1 -0
- package/languages/newspack-blocks-de_DE-73c6d3bde805172d1993f75397e9832d.json +1 -0
- package/languages/newspack-blocks-de_DE-78456b164809d080adecb4d2b3895802.json +1 -0
- package/languages/newspack-blocks-de_DE-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
- package/languages/newspack-blocks-de_DE-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
- package/languages/newspack-blocks-de_DE-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
- package/languages/newspack-blocks-de_DE-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
- package/languages/newspack-blocks-de_DE-969286d51bb0afe10983b9aec317b5ee.json +1 -0
- package/languages/newspack-blocks-de_DE-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
- package/languages/newspack-blocks-de_DE-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
- package/languages/newspack-blocks-de_DE-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
- package/languages/newspack-blocks-de_DE-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
- package/languages/newspack-blocks-de_DE-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
- package/languages/newspack-blocks-de_DE-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
- package/languages/newspack-blocks-de_DE-bb66d96d450663284550bed5a3e9113e.json +1 -0
- package/languages/newspack-blocks-de_DE-c810378e74f20906b8193ea76adb6bc0.json +1 -0
- package/languages/newspack-blocks-de_DE-d3a1c55a07efd1a65e227bf120840752.json +1 -0
- package/languages/newspack-blocks-de_DE-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
- package/languages/newspack-blocks-de_DE-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
- package/languages/newspack-blocks-de_DE-dd56360b115d1b39c48033c1e0749a11.json +1 -0
- package/languages/newspack-blocks-de_DE-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
- package/languages/newspack-blocks-de_DE-e58126c278611ed6c17684ba8e7459b4.json +1 -0
- package/languages/newspack-blocks-de_DE-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
- package/languages/newspack-blocks-de_DE-eccbc51a43c04f59165364eda71e0be7.json +1 -0
- package/languages/newspack-blocks-de_DE-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
- package/languages/newspack-blocks-de_DE-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
- package/languages/newspack-blocks-de_DE-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
- package/languages/newspack-blocks-de_DE-f5f8db76788e4079ddfa743333708b88.json +1 -0
- package/languages/newspack-blocks-de_DE-f8b1589c450689398f90b179f47e74ee.json +1 -0
- package/languages/newspack-blocks-de_DE-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
- package/languages/newspack-blocks-de_DE-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
- package/languages/newspack-blocks-de_DE-fcc93143c1f2b74671f595454b971f44.json +1 -0
- package/languages/newspack-blocks-de_DE.mo +0 -0
- package/languages/newspack-blocks-de_DE.po +2088 -0
- package/languages/newspack-blocks-es_ES-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
- package/languages/newspack-blocks-es_ES-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
- package/languages/newspack-blocks-es_ES-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
- package/languages/newspack-blocks-es_ES-10754bc02d28d4301c103f26dbf519ce.json +1 -0
- package/languages/newspack-blocks-es_ES-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
- package/languages/newspack-blocks-es_ES-34e5c64f90b1444f3fc735376442eada.json +1 -0
- package/languages/newspack-blocks-es_ES-351fd022e077061b5796bf7042446bfc.json +1 -0
- package/languages/newspack-blocks-es_ES-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
- package/languages/newspack-blocks-es_ES-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
- package/languages/newspack-blocks-es_ES-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
- package/languages/newspack-blocks-es_ES-4f16e21047908d19937bc10ced63acd1.json +1 -0
- package/languages/newspack-blocks-es_ES-4fdea541976076f02d56139fb35e5b42.json +1 -0
- package/languages/newspack-blocks-es_ES-501b38ac90d35730a620fb0d483702fa.json +1 -0
- package/languages/newspack-blocks-es_ES-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
- package/languages/newspack-blocks-es_ES-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
- package/languages/newspack-blocks-es_ES-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
- package/languages/newspack-blocks-es_ES-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
- package/languages/newspack-blocks-es_ES-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
- package/languages/newspack-blocks-es_ES-727631509ad8eec8e2cbe740c6dad199.json +1 -0
- package/languages/newspack-blocks-es_ES-73c6d3bde805172d1993f75397e9832d.json +1 -0
- package/languages/newspack-blocks-es_ES-78456b164809d080adecb4d2b3895802.json +1 -0
- package/languages/newspack-blocks-es_ES-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
- package/languages/newspack-blocks-es_ES-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
- package/languages/newspack-blocks-es_ES-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
- package/languages/newspack-blocks-es_ES-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
- package/languages/newspack-blocks-es_ES-969286d51bb0afe10983b9aec317b5ee.json +1 -0
- package/languages/newspack-blocks-es_ES-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
- package/languages/newspack-blocks-es_ES-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
- package/languages/newspack-blocks-es_ES-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
- package/languages/newspack-blocks-es_ES-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
- package/languages/newspack-blocks-es_ES-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
- package/languages/newspack-blocks-es_ES-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
- package/languages/newspack-blocks-es_ES-bb66d96d450663284550bed5a3e9113e.json +1 -0
- package/languages/newspack-blocks-es_ES-c810378e74f20906b8193ea76adb6bc0.json +1 -0
- package/languages/newspack-blocks-es_ES-d3a1c55a07efd1a65e227bf120840752.json +1 -0
- package/languages/newspack-blocks-es_ES-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
- package/languages/newspack-blocks-es_ES-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
- package/languages/newspack-blocks-es_ES-dd56360b115d1b39c48033c1e0749a11.json +1 -0
- package/languages/newspack-blocks-es_ES-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
- package/languages/newspack-blocks-es_ES-e58126c278611ed6c17684ba8e7459b4.json +1 -0
- package/languages/newspack-blocks-es_ES-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
- package/languages/newspack-blocks-es_ES-eccbc51a43c04f59165364eda71e0be7.json +1 -0
- package/languages/newspack-blocks-es_ES-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
- package/languages/newspack-blocks-es_ES-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
- package/languages/newspack-blocks-es_ES-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
- package/languages/newspack-blocks-es_ES-f5f8db76788e4079ddfa743333708b88.json +1 -0
- package/languages/newspack-blocks-es_ES-f8b1589c450689398f90b179f47e74ee.json +1 -0
- package/languages/newspack-blocks-es_ES-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
- package/languages/newspack-blocks-es_ES-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
- package/languages/newspack-blocks-es_ES-fcc93143c1f2b74671f595454b971f44.json +1 -0
- package/languages/newspack-blocks-es_ES.mo +0 -0
- package/languages/newspack-blocks-es_ES.po +2080 -0
- package/languages/newspack-blocks-fr_BE-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
- package/languages/newspack-blocks-fr_BE-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
- package/languages/newspack-blocks-fr_BE-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
- package/languages/newspack-blocks-fr_BE-10754bc02d28d4301c103f26dbf519ce.json +1 -0
- package/languages/newspack-blocks-fr_BE-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
- package/languages/newspack-blocks-fr_BE-34e5c64f90b1444f3fc735376442eada.json +1 -0
- package/languages/newspack-blocks-fr_BE-351fd022e077061b5796bf7042446bfc.json +1 -0
- package/languages/newspack-blocks-fr_BE-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
- package/languages/newspack-blocks-fr_BE-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
- package/languages/newspack-blocks-fr_BE-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
- package/languages/newspack-blocks-fr_BE-4f16e21047908d19937bc10ced63acd1.json +1 -0
- package/languages/newspack-blocks-fr_BE-4fdea541976076f02d56139fb35e5b42.json +1 -0
- package/languages/newspack-blocks-fr_BE-501b38ac90d35730a620fb0d483702fa.json +1 -0
- package/languages/newspack-blocks-fr_BE-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
- package/languages/newspack-blocks-fr_BE-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
- package/languages/newspack-blocks-fr_BE-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
- package/languages/newspack-blocks-fr_BE-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
- package/languages/newspack-blocks-fr_BE-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
- package/languages/newspack-blocks-fr_BE-727631509ad8eec8e2cbe740c6dad199.json +1 -0
- package/languages/newspack-blocks-fr_BE-73c6d3bde805172d1993f75397e9832d.json +1 -0
- package/languages/newspack-blocks-fr_BE-78456b164809d080adecb4d2b3895802.json +1 -0
- package/languages/newspack-blocks-fr_BE-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
- package/languages/newspack-blocks-fr_BE-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
- package/languages/newspack-blocks-fr_BE-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
- package/languages/newspack-blocks-fr_BE-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
- package/languages/newspack-blocks-fr_BE-969286d51bb0afe10983b9aec317b5ee.json +1 -0
- package/languages/newspack-blocks-fr_BE-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
- package/languages/newspack-blocks-fr_BE-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
- package/languages/newspack-blocks-fr_BE-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
- package/languages/newspack-blocks-fr_BE-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
- package/languages/newspack-blocks-fr_BE-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
- package/languages/newspack-blocks-fr_BE-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
- package/languages/newspack-blocks-fr_BE-bb66d96d450663284550bed5a3e9113e.json +1 -0
- package/languages/newspack-blocks-fr_BE-c810378e74f20906b8193ea76adb6bc0.json +1 -0
- package/languages/newspack-blocks-fr_BE-d3a1c55a07efd1a65e227bf120840752.json +1 -0
- package/languages/newspack-blocks-fr_BE-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
- package/languages/newspack-blocks-fr_BE-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
- package/languages/newspack-blocks-fr_BE-dd56360b115d1b39c48033c1e0749a11.json +1 -0
- package/languages/newspack-blocks-fr_BE-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
- package/languages/newspack-blocks-fr_BE-e58126c278611ed6c17684ba8e7459b4.json +1 -0
- package/languages/newspack-blocks-fr_BE-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
- package/languages/newspack-blocks-fr_BE-eccbc51a43c04f59165364eda71e0be7.json +1 -0
- package/languages/newspack-blocks-fr_BE-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
- package/languages/newspack-blocks-fr_BE-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
- package/languages/newspack-blocks-fr_BE-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
- package/languages/newspack-blocks-fr_BE-f5f8db76788e4079ddfa743333708b88.json +1 -0
- package/languages/newspack-blocks-fr_BE-f8b1589c450689398f90b179f47e74ee.json +1 -0
- package/languages/newspack-blocks-fr_BE-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
- package/languages/newspack-blocks-fr_BE-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
- package/languages/newspack-blocks-fr_BE-fcc93143c1f2b74671f595454b971f44.json +1 -0
- package/languages/newspack-blocks-fr_BE.mo +0 -0
- package/languages/newspack-blocks-fr_BE.po +2079 -0
- package/languages/newspack-blocks-nb_NO-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
- package/languages/newspack-blocks-nb_NO-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
- package/languages/newspack-blocks-nb_NO-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
- package/languages/newspack-blocks-nb_NO-10754bc02d28d4301c103f26dbf519ce.json +1 -0
- package/languages/newspack-blocks-nb_NO-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
- package/languages/newspack-blocks-nb_NO-34e5c64f90b1444f3fc735376442eada.json +1 -0
- package/languages/newspack-blocks-nb_NO-351fd022e077061b5796bf7042446bfc.json +1 -0
- package/languages/newspack-blocks-nb_NO-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
- package/languages/newspack-blocks-nb_NO-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
- package/languages/newspack-blocks-nb_NO-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
- package/languages/newspack-blocks-nb_NO-4f16e21047908d19937bc10ced63acd1.json +1 -0
- package/languages/newspack-blocks-nb_NO-4fdea541976076f02d56139fb35e5b42.json +1 -0
- package/languages/newspack-blocks-nb_NO-501b38ac90d35730a620fb0d483702fa.json +1 -0
- package/languages/newspack-blocks-nb_NO-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
- package/languages/newspack-blocks-nb_NO-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
- package/languages/newspack-blocks-nb_NO-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
- package/languages/newspack-blocks-nb_NO-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
- package/languages/newspack-blocks-nb_NO-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
- package/languages/newspack-blocks-nb_NO-73c6d3bde805172d1993f75397e9832d.json +1 -0
- package/languages/newspack-blocks-nb_NO-78456b164809d080adecb4d2b3895802.json +1 -0
- package/languages/newspack-blocks-nb_NO-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
- package/languages/newspack-blocks-nb_NO-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
- package/languages/newspack-blocks-nb_NO-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
- package/languages/newspack-blocks-nb_NO-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
- package/languages/newspack-blocks-nb_NO-969286d51bb0afe10983b9aec317b5ee.json +1 -0
- package/languages/newspack-blocks-nb_NO-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
- package/languages/newspack-blocks-nb_NO-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
- package/languages/newspack-blocks-nb_NO-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
- package/languages/newspack-blocks-nb_NO-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
- package/languages/newspack-blocks-nb_NO-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
- package/languages/newspack-blocks-nb_NO-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
- package/languages/newspack-blocks-nb_NO-bb66d96d450663284550bed5a3e9113e.json +1 -0
- package/languages/newspack-blocks-nb_NO-c810378e74f20906b8193ea76adb6bc0.json +1 -0
- package/languages/newspack-blocks-nb_NO-d3a1c55a07efd1a65e227bf120840752.json +1 -0
- package/languages/newspack-blocks-nb_NO-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
- package/languages/newspack-blocks-nb_NO-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
- package/languages/newspack-blocks-nb_NO-dd56360b115d1b39c48033c1e0749a11.json +1 -0
- package/languages/newspack-blocks-nb_NO-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
- package/languages/newspack-blocks-nb_NO-e58126c278611ed6c17684ba8e7459b4.json +1 -0
- package/languages/newspack-blocks-nb_NO-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
- package/languages/newspack-blocks-nb_NO-eccbc51a43c04f59165364eda71e0be7.json +1 -0
- package/languages/newspack-blocks-nb_NO-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
- package/languages/newspack-blocks-nb_NO-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
- package/languages/newspack-blocks-nb_NO-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
- package/languages/newspack-blocks-nb_NO-f5f8db76788e4079ddfa743333708b88.json +1 -0
- package/languages/newspack-blocks-nb_NO-f8b1589c450689398f90b179f47e74ee.json +1 -0
- package/languages/newspack-blocks-nb_NO-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
- package/languages/newspack-blocks-nb_NO-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
- package/languages/newspack-blocks-nb_NO-fcc93143c1f2b74671f595454b971f44.json +1 -0
- package/languages/newspack-blocks-nb_NO.mo +0 -0
- package/languages/newspack-blocks-nb_NO.po +2078 -0
- package/languages/newspack-blocks-pt_PT-01a5b44b8bc8d20f62541de420aa61ab.json +1 -0
- package/languages/newspack-blocks-pt_PT-0662222bf15e7a1a7b74db2dabb48d6c.json +1 -0
- package/languages/newspack-blocks-pt_PT-0c8dad524e2a57cee4f8efb6e35387c1.json +1 -0
- package/languages/newspack-blocks-pt_PT-10754bc02d28d4301c103f26dbf519ce.json +1 -0
- package/languages/newspack-blocks-pt_PT-2d52b39fdbc5d6c94b3514803f3720b8.json +1 -0
- package/languages/newspack-blocks-pt_PT-34e5c64f90b1444f3fc735376442eada.json +1 -0
- package/languages/newspack-blocks-pt_PT-351fd022e077061b5796bf7042446bfc.json +1 -0
- package/languages/newspack-blocks-pt_PT-37552bb09e2a9fceec1970e3c6d46557.json +1 -0
- package/languages/newspack-blocks-pt_PT-4b2ccb4e4dc8b3491228b2feb54872f2.json +1 -0
- package/languages/newspack-blocks-pt_PT-4cecf783e091d36284a3e0cdafcd0fd5.json +1 -0
- package/languages/newspack-blocks-pt_PT-4f16e21047908d19937bc10ced63acd1.json +1 -0
- package/languages/newspack-blocks-pt_PT-4fdea541976076f02d56139fb35e5b42.json +1 -0
- package/languages/newspack-blocks-pt_PT-501b38ac90d35730a620fb0d483702fa.json +1 -0
- package/languages/newspack-blocks-pt_PT-53e2a1d5945b8d2b1c35e81ae1e532f3.json +1 -0
- package/languages/newspack-blocks-pt_PT-5d4055f484eeb00e3ea0f9d8aace0897.json +1 -0
- package/languages/newspack-blocks-pt_PT-5f70538e0223bc8a05b922cba67da6fb.json +1 -0
- package/languages/newspack-blocks-pt_PT-6c2e53bab28419c30e1eaee70ba599cf.json +1 -0
- package/languages/newspack-blocks-pt_PT-6ed95fb4873e6e2b81351177a44995f6.json +1 -0
- package/languages/newspack-blocks-pt_PT-727631509ad8eec8e2cbe740c6dad199.json +1 -0
- package/languages/newspack-blocks-pt_PT-73c6d3bde805172d1993f75397e9832d.json +1 -0
- package/languages/newspack-blocks-pt_PT-78456b164809d080adecb4d2b3895802.json +1 -0
- package/languages/newspack-blocks-pt_PT-7b1aa64ce2d962decc04666ab86c53de.json +1 -0
- package/languages/newspack-blocks-pt_PT-7c29764d5ef91723f5ce454f66431b9e.json +1 -0
- package/languages/newspack-blocks-pt_PT-912a2876091ef0dca9b26f3cfc01fc9c.json +1 -0
- package/languages/newspack-blocks-pt_PT-91a7ac8017d6e2159be1c5a3c1e372e4.json +1 -0
- package/languages/newspack-blocks-pt_PT-969286d51bb0afe10983b9aec317b5ee.json +1 -0
- package/languages/newspack-blocks-pt_PT-9ef9b2c60c897ad79f92951e6e9949a1.json +1 -0
- package/languages/newspack-blocks-pt_PT-a822c3d210c89af3cb7da28eaaef929c.json +1 -0
- package/languages/newspack-blocks-pt_PT-aa9f9057c77a46b31d7e325a4322f2da.json +1 -0
- package/languages/newspack-blocks-pt_PT-b6d3cfc30bb16d88d7bc5384bc775543.json +1 -0
- package/languages/newspack-blocks-pt_PT-b712270cd4eb3cae7899b50b57bdd576.json +1 -0
- package/languages/newspack-blocks-pt_PT-babcc0ca24e7f0145b1c8f647049f085.json +1 -0
- package/languages/newspack-blocks-pt_PT-bb66d96d450663284550bed5a3e9113e.json +1 -0
- package/languages/newspack-blocks-pt_PT-c810378e74f20906b8193ea76adb6bc0.json +1 -0
- package/languages/newspack-blocks-pt_PT-d3a1c55a07efd1a65e227bf120840752.json +1 -0
- package/languages/newspack-blocks-pt_PT-d5f23a52ecbfd492ebf819c14206a9e2.json +1 -0
- package/languages/newspack-blocks-pt_PT-d684e5c5ac51934ba20811c2f588e1d5.json +1 -0
- package/languages/newspack-blocks-pt_PT-dd56360b115d1b39c48033c1e0749a11.json +1 -0
- package/languages/newspack-blocks-pt_PT-e0e4434aee4db01e71268ce3edf1dd97.json +1 -0
- package/languages/newspack-blocks-pt_PT-e58126c278611ed6c17684ba8e7459b4.json +1 -0
- package/languages/newspack-blocks-pt_PT-ea3e2a660753c7bfa13b5bbd8a46bdd0.json +1 -0
- package/languages/newspack-blocks-pt_PT-eccbc51a43c04f59165364eda71e0be7.json +1 -0
- package/languages/newspack-blocks-pt_PT-eeb28f99adedd5fad3081d2756d6f4a4.json +1 -0
- package/languages/newspack-blocks-pt_PT-f03802d9ac1ae8f3b85caee4347b93a7.json +1 -0
- package/languages/newspack-blocks-pt_PT-f32a4d8bd8f1f1e03b6523dfaa4c9f73.json +1 -0
- package/languages/newspack-blocks-pt_PT-f5f8db76788e4079ddfa743333708b88.json +1 -0
- package/languages/newspack-blocks-pt_PT-f8b1589c450689398f90b179f47e74ee.json +1 -0
- package/languages/newspack-blocks-pt_PT-f9d0b05d4d6ddd3273f1f3fb2eb2ca50.json +1 -0
- package/languages/newspack-blocks-pt_PT-fbe7f8c598cf05d4603ba49fec909ded.json +1 -0
- package/languages/newspack-blocks-pt_PT-fcc93143c1f2b74671f595454b971f44.json +1 -0
- package/languages/newspack-blocks-pt_PT.mo +0 -0
- package/languages/newspack-blocks-pt_PT.po +2078 -0
- package/languages/newspack-blocks.pot +2370 -0
- package/newspack-blocks.php +96 -0
- package/package.json +64 -0
- package/phpcs.xml +38 -0
- package/release.config.js +1 -0
- package/src/assets/placeholder-1024x536.jpg +0 -0
- package/src/assets/placeholder-600x800.jpg +0 -0
- package/src/assets/placeholder-800x600.jpg +0 -0
- package/src/assets/placeholder-800x800.jpg +0 -0
- package/src/assets/placeholder-donations-cover.jpg +0 -0
- package/src/assets/placeholder-donations-image.jpg +0 -0
- package/src/assets/placeholder-subscribe-cover.jpg +0 -0
- package/src/assets/placeholder-subscribe-image.jpg +0 -0
- package/src/block-patterns/donations-1.php +13 -0
- package/src/block-patterns/donations-2.php +13 -0
- package/src/block-patterns/donations-3.php +13 -0
- package/src/block-patterns/donations-4.php +13 -0
- package/src/block-patterns/donations-5.php +13 -0
- package/src/block-patterns/homepage-posts-1.php +13 -0
- package/src/block-patterns/homepage-posts-10.php +13 -0
- package/src/block-patterns/homepage-posts-11.php +13 -0
- package/src/block-patterns/homepage-posts-12.php +13 -0
- package/src/block-patterns/homepage-posts-13.php +13 -0
- package/src/block-patterns/homepage-posts-14.php +13 -0
- package/src/block-patterns/homepage-posts-15.php +13 -0
- package/src/block-patterns/homepage-posts-16.php +13 -0
- package/src/block-patterns/homepage-posts-17.php +13 -0
- package/src/block-patterns/homepage-posts-18.php +13 -0
- package/src/block-patterns/homepage-posts-19.php +13 -0
- package/src/block-patterns/homepage-posts-2.php +13 -0
- package/src/block-patterns/homepage-posts-20.php +13 -0
- package/src/block-patterns/homepage-posts-21.php +13 -0
- package/src/block-patterns/homepage-posts-22.php +13 -0
- package/src/block-patterns/homepage-posts-23.php +13 -0
- package/src/block-patterns/homepage-posts-24.php +13 -0
- package/src/block-patterns/homepage-posts-25.php +13 -0
- package/src/block-patterns/homepage-posts-26.php +13 -0
- package/src/block-patterns/homepage-posts-27.php +13 -0
- package/src/block-patterns/homepage-posts-28.php +13 -0
- package/src/block-patterns/homepage-posts-29.php +13 -0
- package/src/block-patterns/homepage-posts-3.php +13 -0
- package/src/block-patterns/homepage-posts-30.php +13 -0
- package/src/block-patterns/homepage-posts-31.php +13 -0
- package/src/block-patterns/homepage-posts-4.php +13 -0
- package/src/block-patterns/homepage-posts-5.php +13 -0
- package/src/block-patterns/homepage-posts-6.php +13 -0
- package/src/block-patterns/homepage-posts-7.php +13 -0
- package/src/block-patterns/homepage-posts-8.php +13 -0
- package/src/block-patterns/homepage-posts-9.php +13 -0
- package/src/block-patterns/subscribe-1.php +13 -0
- package/src/block-patterns/subscribe-2.php +13 -0
- package/src/block-patterns/subscribe-3.php +13 -0
- package/src/block-patterns/subscribe-4.php +13 -0
- package/src/block-patterns/subscribe-5.php +13 -0
- package/src/block-patterns/subscribe-6.php +13 -0
- package/src/block-patterns/subscribe-7.php +13 -0
- package/src/block-styles/core/columns/editor.scss +90 -0
- package/src/block-styles/core/columns/index.js +20 -0
- package/src/block-styles/core/columns/view.scss +131 -0
- package/src/block-styles/core/group/editor.scss +24 -0
- package/src/block-styles/core/group/index.js +25 -0
- package/src/block-styles/core/group/view.scss +13 -0
- package/src/block-styles/view.js +5 -0
- package/src/blocks/author-list/block.json +84 -0
- package/src/blocks/author-list/class-wp-rest-newspack-author-list-controller.php +381 -0
- package/src/blocks/author-list/edit.js +456 -0
- package/src/blocks/author-list/editor.js +7 -0
- package/src/blocks/author-list/editor.scss +1 -0
- package/src/blocks/author-list/index.js +60 -0
- package/src/blocks/author-list/view.js +5 -0
- package/src/blocks/author-list/view.php +180 -0
- package/src/blocks/author-list/view.scss +46 -0
- package/src/blocks/author-profile/README.md +105 -0
- package/src/blocks/author-profile/block.json +77 -0
- package/src/blocks/author-profile/class-wp-rest-newspack-authors-controller.php +618 -0
- package/src/blocks/author-profile/context.js +26 -0
- package/src/blocks/author-profile/edit.js +1031 -0
- package/src/blocks/author-profile/editor.js +7 -0
- package/src/blocks/author-profile/editor.scss +61 -0
- package/src/blocks/author-profile/index.js +66 -0
- package/src/blocks/author-profile/single-author.js +106 -0
- package/src/blocks/author-profile/templates.js +263 -0
- package/src/blocks/author-profile/variations.js +86 -0
- package/src/blocks/author-profile/view.js +5 -0
- package/src/blocks/author-profile/view.php +501 -0
- package/src/blocks/author-profile/view.scss +159 -0
- package/src/blocks/carousel/block.json +121 -0
- package/src/blocks/carousel/create-swiper.js +230 -0
- package/src/blocks/carousel/edit.js +469 -0
- package/src/blocks/carousel/editor.js +7 -0
- package/src/blocks/carousel/editor.scss +54 -0
- package/src/blocks/carousel/index.js +55 -0
- package/src/blocks/carousel/view.js +49 -0
- package/src/blocks/carousel/view.php +417 -0
- package/src/blocks/carousel/view.scss +397 -0
- package/src/blocks/checkout-button/block.json +117 -0
- package/src/blocks/checkout-button/deprecated.js +81 -0
- package/src/blocks/checkout-button/edit.js +385 -0
- package/src/blocks/checkout-button/edit.scss +67 -0
- package/src/blocks/checkout-button/editor.js +19 -0
- package/src/blocks/checkout-button/index.js +32 -0
- package/src/blocks/checkout-button/view.js +4 -0
- package/src/blocks/checkout-button/view.php +178 -0
- package/src/blocks/checkout-button/view.scss +39 -0
- package/src/blocks/donate/block.json +103 -0
- package/src/blocks/donate/consts.ts +25 -0
- package/src/blocks/donate/edit/FrequencyBasedLayout.tsx +255 -0
- package/src/blocks/donate/edit/TierBasedLayout.tsx +133 -0
- package/src/blocks/donate/edit/components/AmountValueInput.tsx +62 -0
- package/src/blocks/donate/edit/components/index.tsx +1 -0
- package/src/blocks/donate/edit/index.tsx +445 -0
- package/src/blocks/donate/editor.js +7 -0
- package/src/blocks/donate/frequency-based/index.ts +135 -0
- package/src/blocks/donate/frequency-based/style.scss +245 -0
- package/src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-base.php +225 -0
- package/src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-frequency-based.php +341 -0
- package/src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-tiers-based.php +184 -0
- package/src/blocks/donate/frontend/class-newspack-blocks-donate-renderer.php +117 -0
- package/src/blocks/donate/index.js +72 -0
- package/src/blocks/donate/styles/editor.scss +230 -0
- package/src/blocks/donate/styles/style-variations.scss +792 -0
- package/src/blocks/donate/styles/view.scss +45 -0
- package/src/blocks/donate/tiers-based/index.ts +36 -0
- package/src/blocks/donate/tiers-based/slider.ts +64 -0
- package/src/blocks/donate/tiers-based/style.scss +185 -0
- package/src/blocks/donate/tiers-based/types.ts +3 -0
- package/src/blocks/donate/tiers-based/utils.test.js +38 -0
- package/src/blocks/donate/tiers-based/utils.ts +21 -0
- package/src/blocks/donate/tiers-based/view.ts +132 -0
- package/src/blocks/donate/types.ts +96 -0
- package/src/blocks/donate/utils.ts +108 -0
- package/src/blocks/donate/view.php +29 -0
- package/src/blocks/donate/view.ts +44 -0
- package/src/blocks/homepage-articles/block.json +260 -0
- package/src/blocks/homepage-articles/class-wp-rest-newspack-articles-controller.php +231 -0
- package/src/blocks/homepage-articles/edit.tsx +730 -0
- package/src/blocks/homepage-articles/editor.js +16 -0
- package/src/blocks/homepage-articles/editor.scss +226 -0
- package/src/blocks/homepage-articles/index.js +102 -0
- package/src/blocks/homepage-articles/store.js +193 -0
- package/src/blocks/homepage-articles/templates/article.php +290 -0
- package/src/blocks/homepage-articles/templates/articles-list.php +21 -0
- package/src/blocks/homepage-articles/templates/articles-loop.php +35 -0
- package/src/blocks/homepage-articles/utils.ts +270 -0
- package/src/blocks/homepage-articles/view.js +242 -0
- package/src/blocks/homepage-articles/view.php +561 -0
- package/src/blocks/homepage-articles/view.scss +784 -0
- package/src/blocks/iframe/block.json +36 -0
- package/src/blocks/iframe/class-wp-rest-newspack-iframe-controller.php +586 -0
- package/src/blocks/iframe/edit.js +232 -0
- package/src/blocks/iframe/editor.js +7 -0
- package/src/blocks/iframe/editor.scss +84 -0
- package/src/blocks/iframe/iframe-placeholder.js +166 -0
- package/src/blocks/iframe/index.js +54 -0
- package/src/blocks/iframe/view.js +49 -0
- package/src/blocks/iframe/view.php +116 -0
- package/src/blocks/iframe/view.scss +9 -0
- package/src/blocks/shared/author.js +47 -0
- package/src/blocks/video-playlist/edit.js +222 -0
- package/src/blocks/video-playlist/editor.js +7 -0
- package/src/blocks/video-playlist/editor.scss +23 -0
- package/src/blocks/video-playlist/index.js +54 -0
- package/src/blocks/video-playlist/view.php +188 -0
- package/src/components/autocomplete-tokenfield.js +189 -0
- package/src/components/autocomplete-tokenfield.scss +27 -0
- package/src/components/editor-panels.js +90 -0
- package/src/components/query-controls.js +450 -0
- package/src/components/redirect-after-success.tsx +50 -0
- package/src/modal-checkout/accessibility.js +73 -0
- package/src/modal-checkout/analytics/ga4/README.md +45 -0
- package/src/modal-checkout/analytics/ga4/checkout-attempt.js +18 -0
- package/src/modal-checkout/analytics/ga4/checkout-success.js +17 -0
- package/src/modal-checkout/analytics/ga4/dismissed.js +17 -0
- package/src/modal-checkout/analytics/ga4/loaded.js +17 -0
- package/src/modal-checkout/analytics/ga4/opened.js +37 -0
- package/src/modal-checkout/analytics/ga4/pagination.js +59 -0
- package/src/modal-checkout/analytics/ga4/utils/index.js +64 -0
- package/src/modal-checkout/analytics/index.js +6 -0
- package/src/modal-checkout/checkout.scss +1064 -0
- package/src/modal-checkout/index.js +929 -0
- package/src/modal-checkout/modal.js +983 -0
- package/src/modal-checkout/modal.scss +265 -0
- package/src/modal-checkout/templates/empty-html-add-recipient.php +15 -0
- package/src/modal-checkout/templates/empty-order-details.php +16 -0
- package/src/modal-checkout/templates/form-change-payment-method.php +99 -0
- package/src/modal-checkout/templates/form-checkout.php +74 -0
- package/src/modal-checkout/templates/form-coupon.php +22 -0
- package/src/modal-checkout/templates/form-gift-subscription.php +34 -0
- package/src/modal-checkout/templates/payment-method.php +29 -0
- package/src/modal-checkout/templates/thankyou.php +94 -0
- package/src/modal-checkout/utils.js +309 -0
- package/src/setup/block-styles.js +2 -0
- package/src/setup/category.js +18 -0
- package/src/setup/editor.js +7 -0
- package/src/setup/editor.scss +56 -0
- package/src/setup/newspack-logo.js +26 -0
- package/src/setup/placeholder-blocks.js +84 -0
- package/src/setup/unregister-blocks.js +14 -0
- package/src/shared/authors.php +63 -0
- package/src/shared/js/newspack-icon.js +31 -0
- package/src/shared/js/utils.js +50 -0
- package/src/shared/sass/_mixins.scss +42 -0
- package/src/shared/sass/_placeholder.scss +5 -0
- package/src/shared/sass/_preview.scss +12 -0
- package/src/shared/sass/_variables.scss +24 -0
- package/src/templates/author-profile-card.php +145 -0
- package/src/types/@wordpress/block-editor.d.ts +1 -0
- package/src/types/@wordpress/components.d.ts +1 -0
- package/src/types/index.d.ts +170 -0
- package/src/types/newspack-components.d.ts +7 -0
- package/tsconfig.json +7 -0
- package/vendor/autoload.php +22 -0
- package/vendor/composer/ClassLoader.php +579 -0
- package/vendor/composer/InstalledVersions.php +396 -0
- package/vendor/composer/LICENSE +21 -0
- package/vendor/composer/autoload_classmap.php +10 -0
- package/vendor/composer/autoload_namespaces.php +9 -0
- package/vendor/composer/autoload_psr4.php +9 -0
- package/vendor/composer/autoload_real.php +36 -0
- package/vendor/composer/autoload_static.php +20 -0
- package/vendor/composer/installed.json +5 -0
- package/vendor/composer/installed.php +23 -0
- package/webpack.config.js +82 -0
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
/**
|
|
3
|
+
* Server-side render functions for the Author Profile block.
|
|
4
|
+
*
|
|
5
|
+
* @package WordPress
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Register block bindings source for author data.
|
|
10
|
+
*
|
|
11
|
+
* This allows core blocks to bind their content to author fields using:
|
|
12
|
+
* {"metadata":{"bindings":{"content":{"source":"newspack-blocks/author","args":{"key":"name"}}}}}
|
|
13
|
+
*
|
|
14
|
+
* Supported keys: name, bio, url, archive_url, archive_link_text, newspack_job_title, newspack_role, newspack_employer
|
|
15
|
+
*/
|
|
16
|
+
function newspack_blocks_register_author_bindings_source() {
|
|
17
|
+
// Block bindings require WordPress 6.5+.
|
|
18
|
+
if ( ! function_exists( 'register_block_bindings_source' ) ) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
register_block_bindings_source(
|
|
23
|
+
'newspack-blocks/author',
|
|
24
|
+
[
|
|
25
|
+
'label' => __( 'Author Profile', 'newspack-blocks' ),
|
|
26
|
+
'get_value_callback' => 'newspack_blocks_get_author_binding_value',
|
|
27
|
+
'uses_context' => [ 'newspack-blocks/author' ],
|
|
28
|
+
]
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
add_action( 'init', 'newspack_blocks_register_author_bindings_source' );
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Get a value from the author context for block bindings.
|
|
35
|
+
*
|
|
36
|
+
* @param array $source_args Array containing 'key' for the author field to retrieve.
|
|
37
|
+
* @param WP_Block $block_instance The block instance.
|
|
38
|
+
* @param string $attribute_name The attribute being bound.
|
|
39
|
+
* @return mixed The value for the binding, or null if not found.
|
|
40
|
+
*/
|
|
41
|
+
function newspack_blocks_get_author_binding_value( $source_args, $block_instance, $attribute_name ) {
|
|
42
|
+
$author = $block_instance->context['newspack-blocks/author'] ?? null;
|
|
43
|
+
|
|
44
|
+
if ( ! $author || empty( $source_args['key'] ) ) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
$key = $source_args['key'];
|
|
49
|
+
|
|
50
|
+
// Handle special cases.
|
|
51
|
+
switch ( $key ) {
|
|
52
|
+
case 'archive_url':
|
|
53
|
+
case 'url':
|
|
54
|
+
return $author['url'] ?? '';
|
|
55
|
+
|
|
56
|
+
case 'archive_link_text':
|
|
57
|
+
$name = $author['name'] ?? '';
|
|
58
|
+
if ( ! $name ) {
|
|
59
|
+
return '';
|
|
60
|
+
}
|
|
61
|
+
/* translators: %s: author name */
|
|
62
|
+
return sprintf( __( 'More by %s', 'newspack-blocks' ), $name );
|
|
63
|
+
|
|
64
|
+
default:
|
|
65
|
+
// Empty string prevents saved editor placeholders from leaking to frontend.
|
|
66
|
+
return $author[ $key ] ?? '';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Dynamic block registration.
|
|
72
|
+
*/
|
|
73
|
+
function newspack_blocks_register_author_profile() {
|
|
74
|
+
$block_json = json_decode(
|
|
75
|
+
file_get_contents( __DIR__ . '/block.json' ), // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
|
|
76
|
+
true
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
if ( class_exists( '\Newspack\Authors_Custom_Fields' ) ) {
|
|
80
|
+
$author_custom_fields = \Newspack\Authors_Custom_Fields::get_custom_fields();
|
|
81
|
+
foreach ( $author_custom_fields as $field ) {
|
|
82
|
+
$block_json['attributes'][ 'show' . $field['name'] ] = [
|
|
83
|
+
'type' => 'boolean',
|
|
84
|
+
'default' => true,
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
register_block_type(
|
|
90
|
+
'newspack-blocks/' . $block_json['name'],
|
|
91
|
+
[
|
|
92
|
+
'api_version' => $block_json['apiVersion'],
|
|
93
|
+
'attributes' => $block_json['attributes'],
|
|
94
|
+
'render_callback' => 'newspack_blocks_render_block_author_profile',
|
|
95
|
+
'uses_context' => $block_json['usesContext'] ?? [],
|
|
96
|
+
// Note: provides_context is declared here for registration but the actual
|
|
97
|
+
// context injection happens in newspack_blocks_render_nested_author_profile()
|
|
98
|
+
// via new WP_Block() with a merged context array.
|
|
99
|
+
'provides_context' => [
|
|
100
|
+
'newspack-blocks/author' => 'author',
|
|
101
|
+
],
|
|
102
|
+
]
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
// Register layout styles only for classic themes. Block themes use
|
|
106
|
+
// InnerBlocks (nested mode) for layout control instead.
|
|
107
|
+
if ( ! wp_is_block_theme() ) {
|
|
108
|
+
register_block_style(
|
|
109
|
+
'newspack-blocks/author-profile',
|
|
110
|
+
[
|
|
111
|
+
'name' => 'default',
|
|
112
|
+
'label' => _x( 'Default', 'block style', 'newspack-blocks' ),
|
|
113
|
+
'is_default' => true,
|
|
114
|
+
]
|
|
115
|
+
);
|
|
116
|
+
register_block_style(
|
|
117
|
+
'newspack-blocks/author-profile',
|
|
118
|
+
[
|
|
119
|
+
'name' => 'center',
|
|
120
|
+
'label' => _x( 'Centered', 'block style', 'newspack-blocks' ),
|
|
121
|
+
]
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Given a numeric ID, get the corresponding WP user or Co-authors Plus guest author.
|
|
128
|
+
*
|
|
129
|
+
* @param int $author_id Author ID to look up.
|
|
130
|
+
* @param int $avatar_size Size of the avatar image to fetch.
|
|
131
|
+
* @param boolean $hide_default If true, don't show default avatars.
|
|
132
|
+
* @param boolean $is_guest_author If true, search for guest authors. If false, only search for WP users.
|
|
133
|
+
* @return object|boolean Author object in standardized format, or false if none exists.
|
|
134
|
+
*/
|
|
135
|
+
function newspack_blocks_get_author_or_guest_author( $author_id, $avatar_size = 128, $hide_default = false, $is_guest_author = true ) {
|
|
136
|
+
$wp_user = get_user_by( 'id', $author_id );
|
|
137
|
+
$author = false;
|
|
138
|
+
|
|
139
|
+
// First, see if the $author_id is a guest author.
|
|
140
|
+
if ( class_exists( 'CoAuthors_Guest_Authors' ) && $is_guest_author ) {
|
|
141
|
+
// Check if the ID given is a WP user with linked guest author.
|
|
142
|
+
$linked_guest_author = false;
|
|
143
|
+
|
|
144
|
+
if ( $wp_user ) {
|
|
145
|
+
$linked_guest_author = WP_REST_Newspack_Authors_Controller::get_linked_guest_author( $wp_user->user_login );
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if ( $linked_guest_author && isset( $linked_guest_author->ID ) ) {
|
|
149
|
+
$author_id = $linked_guest_author->ID;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
$author = ( new CoAuthors_Guest_Authors() )->get_guest_author_by( 'id', $author_id );
|
|
153
|
+
$avatar = function_exists( 'coauthors_get_avatar' ) ? coauthors_get_avatar( $author, $avatar_size ) : false;
|
|
154
|
+
|
|
155
|
+
// Format CAP guest author object to return to the render function.
|
|
156
|
+
if ( $author && isset( $author->ID ) ) {
|
|
157
|
+
$author = WP_REST_Newspack_Authors_Controller::fill_guest_author_data(
|
|
158
|
+
[
|
|
159
|
+
'id' => $author_id,
|
|
160
|
+
],
|
|
161
|
+
$author
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
if ( $avatar && ( false === strpos( $avatar, 'avatar-default' ) || ! $hide_default ) ) {
|
|
165
|
+
$author['avatar'] = $avatar;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// If $author is still false, see if it's a standard WP User.
|
|
171
|
+
if ( ! $author && $wp_user && isset( $wp_user->data ) ) {
|
|
172
|
+
$author = WP_REST_Newspack_Authors_Controller::fill_user_data(
|
|
173
|
+
[
|
|
174
|
+
'id' => $author_id,
|
|
175
|
+
],
|
|
176
|
+
$wp_user
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
$avatar = get_avatar( $author_id, $avatar_size );
|
|
180
|
+
if ( $avatar && ( false === strpos( $avatar, 'avatar-default' ) || ! $hide_default ) ) {
|
|
181
|
+
$author['avatar'] = $avatar;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return $author;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Check if custom byline is active for a post.
|
|
190
|
+
*
|
|
191
|
+
* @param int $post_id Post ID to check.
|
|
192
|
+
* @return bool True if custom byline is active.
|
|
193
|
+
*/
|
|
194
|
+
function newspack_blocks_is_custom_byline_active( $post_id ) {
|
|
195
|
+
return (bool) get_post_meta( $post_id, '_newspack_byline_active', true );
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Get authors for a post (CAP or default).
|
|
200
|
+
*
|
|
201
|
+
* @param int $post_id Post ID to get authors for.
|
|
202
|
+
* @param array $attributes Block attributes.
|
|
203
|
+
* @return array Array of author data.
|
|
204
|
+
*/
|
|
205
|
+
function newspack_blocks_get_post_authors( $post_id, $attributes ) {
|
|
206
|
+
$authors = [];
|
|
207
|
+
$avatar_size = intval( $attributes['avatarSize'] ?? 128 );
|
|
208
|
+
$hide_default = $attributes['avatarHideDefault'] ?? false;
|
|
209
|
+
|
|
210
|
+
// Try Co-Authors Plus first. When CAP is active, always return its result
|
|
211
|
+
// and never fall back to post_author, which could show the wrong person.
|
|
212
|
+
if ( function_exists( 'get_coauthors' ) ) {
|
|
213
|
+
$coauthors = get_coauthors( $post_id );
|
|
214
|
+
foreach ( $coauthors as $coauthor ) {
|
|
215
|
+
$author = newspack_blocks_get_contextual_author( $coauthor, $attributes );
|
|
216
|
+
if ( $author ) {
|
|
217
|
+
$authors[] = $author;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return $authors;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Fallback to default author.
|
|
224
|
+
$author_id = get_post_field( 'post_author', $post_id );
|
|
225
|
+
if ( $author_id ) {
|
|
226
|
+
$author = newspack_blocks_get_author_or_guest_author(
|
|
227
|
+
$author_id,
|
|
228
|
+
$avatar_size,
|
|
229
|
+
$hide_default,
|
|
230
|
+
false // Not a guest author.
|
|
231
|
+
);
|
|
232
|
+
if ( $author ) {
|
|
233
|
+
$authors[] = $author;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
return $authors;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Convert a WP_User, WP_Post (guest author), or stdClass to the expected format.
|
|
242
|
+
*
|
|
243
|
+
* Note: get_coauthors() returns stdClass objects, not WP_User.
|
|
244
|
+
* Guest authors from get_queried_object() are WP_Post objects.
|
|
245
|
+
*
|
|
246
|
+
* @param object $author_obj Author object from WP_User, WP_Post, or stdClass.
|
|
247
|
+
* @param array $attributes Block attributes.
|
|
248
|
+
* @return array|null Author data array or null if invalid.
|
|
249
|
+
*/
|
|
250
|
+
function newspack_blocks_get_contextual_author( $author_obj, $attributes ) {
|
|
251
|
+
$avatar_size = intval( $attributes['avatarSize'] ?? 128 );
|
|
252
|
+
$hide_default = $attributes['avatarHideDefault'] ?? false;
|
|
253
|
+
|
|
254
|
+
// WP_Post object - guest author from get_queried_object() on author archives.
|
|
255
|
+
if ( $author_obj instanceof WP_Post && 'guest-author' === $author_obj->post_type ) {
|
|
256
|
+
return newspack_blocks_get_author_or_guest_author(
|
|
257
|
+
$author_obj->ID,
|
|
258
|
+
$avatar_size,
|
|
259
|
+
$hide_default,
|
|
260
|
+
true // Is guest author.
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// WP_User object - regular author from get_queried_object() on author archives.
|
|
265
|
+
if ( $author_obj instanceof WP_User ) {
|
|
266
|
+
return newspack_blocks_get_author_or_guest_author(
|
|
267
|
+
$author_obj->ID,
|
|
268
|
+
$avatar_size,
|
|
269
|
+
$hide_default,
|
|
270
|
+
false
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// stdClass from get_coauthors() - check 'type' property to determine guest vs user.
|
|
275
|
+
if ( is_object( $author_obj ) && isset( $author_obj->ID ) ) {
|
|
276
|
+
$is_guest = isset( $author_obj->type ) && 'guest-author' === $author_obj->type;
|
|
277
|
+
return newspack_blocks_get_author_or_guest_author(
|
|
278
|
+
$author_obj->ID,
|
|
279
|
+
$avatar_size,
|
|
280
|
+
$hide_default,
|
|
281
|
+
$is_guest
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
return null;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Render a single author profile card.
|
|
290
|
+
*
|
|
291
|
+
* @param array $author Author data array.
|
|
292
|
+
* @param array $attributes Block attributes.
|
|
293
|
+
* @return string Rendered HTML.
|
|
294
|
+
*/
|
|
295
|
+
function newspack_blocks_render_author_profile_card( $author, $attributes ) {
|
|
296
|
+
return Newspack_Blocks::template_include(
|
|
297
|
+
'author-profile-card',
|
|
298
|
+
[
|
|
299
|
+
'attributes' => $attributes,
|
|
300
|
+
'author' => $author,
|
|
301
|
+
]
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Block render callback.
|
|
307
|
+
*
|
|
308
|
+
* @param array $attributes Block attributes.
|
|
309
|
+
* @param string $content Block inner content.
|
|
310
|
+
* @param WP_Block $block Block instance.
|
|
311
|
+
* @return string Rendered block HTML.
|
|
312
|
+
*/
|
|
313
|
+
function newspack_blocks_render_block_author_profile( $attributes, $content, $block ) {
|
|
314
|
+
$layout_version = $attributes['layoutVersion'] ?? 1;
|
|
315
|
+
|
|
316
|
+
// Get authors based on mode.
|
|
317
|
+
$authors = newspack_blocks_get_authors_for_render( $attributes, $block );
|
|
318
|
+
|
|
319
|
+
if ( empty( $authors ) ) {
|
|
320
|
+
return '';
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
Newspack_Blocks::enqueue_view_assets( 'author-profile' );
|
|
324
|
+
|
|
325
|
+
// NESTED MODE: Determined by layoutVersion attribute, not theme type.
|
|
326
|
+
// Once a block is created in nested mode (layoutVersion 2), it stays nested.
|
|
327
|
+
// Block themes automatically set layoutVersion 2 for NEW blocks.
|
|
328
|
+
// Fall back to flat rendering if a v2 block is used in a classic theme.
|
|
329
|
+
if ( 2 === $layout_version && ! empty( $block->inner_blocks ) ) {
|
|
330
|
+
$registry = WP_Block_Type_Registry::get_instance();
|
|
331
|
+
$has_nested_blocks = $registry->is_registered( 'newspack/avatar' ) && $registry->is_registered( 'newspack/author-profile-social' );
|
|
332
|
+
if ( ! wp_is_block_theme() || ! $has_nested_blocks ) {
|
|
333
|
+
return newspack_blocks_render_flat_author_profiles( $authors, $attributes );
|
|
334
|
+
}
|
|
335
|
+
return newspack_blocks_render_nested_author_profile( $authors, $attributes, $block );
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
// FLAT MODE: Use existing template rendering.
|
|
339
|
+
return newspack_blocks_render_flat_author_profiles( $authors, $attributes );
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Get authors for rendering based on block mode.
|
|
344
|
+
*
|
|
345
|
+
* @param array $attributes Block attributes.
|
|
346
|
+
* @param WP_Block $block Block instance.
|
|
347
|
+
* @return array Array of author data.
|
|
348
|
+
*/
|
|
349
|
+
function newspack_blocks_get_authors_for_render( $attributes, $block ) {
|
|
350
|
+
$is_contextual = ! empty( $attributes['isContextual'] );
|
|
351
|
+
|
|
352
|
+
// SPECIFIC MODE: Get single author by ID.
|
|
353
|
+
if ( ! $is_contextual ) {
|
|
354
|
+
if ( empty( $attributes['authorId'] ) ) {
|
|
355
|
+
return [];
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
$author = newspack_blocks_get_author_or_guest_author(
|
|
359
|
+
intval( $attributes['authorId'] ),
|
|
360
|
+
intval( $attributes['avatarSize'] ),
|
|
361
|
+
$attributes['avatarHideDefault'],
|
|
362
|
+
$attributes['isGuestAuthor']
|
|
363
|
+
);
|
|
364
|
+
|
|
365
|
+
return $author ? [ $author ] : [];
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// CONTEXTUAL MODE: Auto-detect authors.
|
|
369
|
+
$post_id = $block->context['postId'] ?? get_the_ID();
|
|
370
|
+
|
|
371
|
+
// On author archives: render the queried author.
|
|
372
|
+
if ( is_author() ) {
|
|
373
|
+
$queried = get_queried_object();
|
|
374
|
+
$author = newspack_blocks_get_contextual_author( $queried, $attributes );
|
|
375
|
+
return $author ? [ $author ] : [];
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
// On single posts: if custom byline is active, show the referenced authors (if any).
|
|
379
|
+
if ( newspack_blocks_is_custom_byline_active( $post_id ) ) {
|
|
380
|
+
if ( class_exists( 'Newspack\Bylines' ) ) {
|
|
381
|
+
$byline_authors = \Newspack\Bylines::get_post_byline_authors( $post_id );
|
|
382
|
+
$authors = [];
|
|
383
|
+
foreach ( $byline_authors as $wp_user ) {
|
|
384
|
+
if ( $wp_user instanceof WP_User ) {
|
|
385
|
+
$author = newspack_blocks_get_contextual_author( $wp_user, $attributes );
|
|
386
|
+
if ( $author ) {
|
|
387
|
+
$authors[] = $author;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
return $authors;
|
|
392
|
+
}
|
|
393
|
+
// Bylines class unavailable: byline is active so don't show post authors.
|
|
394
|
+
return [];
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// Get authors (CAP or default).
|
|
398
|
+
return newspack_blocks_get_post_authors( $post_id, $attributes );
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Render author profiles using flat template (existing behavior).
|
|
403
|
+
*
|
|
404
|
+
* @param array $authors Array of author data.
|
|
405
|
+
* @param array $attributes Block attributes.
|
|
406
|
+
* @return string Rendered HTML.
|
|
407
|
+
*/
|
|
408
|
+
function newspack_blocks_render_flat_author_profiles( $authors, $attributes ) {
|
|
409
|
+
$output = '';
|
|
410
|
+
$show_empty_bio = $attributes['showEmptyBio'] ?? false;
|
|
411
|
+
|
|
412
|
+
foreach ( $authors as $author ) {
|
|
413
|
+
// Skip authors with no bio if configured.
|
|
414
|
+
if ( empty( $author['bio'] ) && ! $show_empty_bio ) {
|
|
415
|
+
continue;
|
|
416
|
+
}
|
|
417
|
+
$output .= newspack_blocks_render_author_profile_card( $author, $attributes );
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
return $output;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* Render author profiles using nested inner blocks.
|
|
425
|
+
*
|
|
426
|
+
* Renders the full inner block tree (including core/columns) and post-processes
|
|
427
|
+
* the HTML to wrap specific paragraphs in links.
|
|
428
|
+
*
|
|
429
|
+
* @param array $authors Array of author data.
|
|
430
|
+
* @param array $attributes Block attributes.
|
|
431
|
+
* @param WP_Block $block Block instance.
|
|
432
|
+
* @return string Rendered HTML.
|
|
433
|
+
*/
|
|
434
|
+
function newspack_blocks_render_nested_author_profile( $authors, $attributes, $block ) {
|
|
435
|
+
$output = '';
|
|
436
|
+
$show_empty_bio = $attributes['showEmptyBio'] ?? false;
|
|
437
|
+
|
|
438
|
+
foreach ( $authors as $author ) {
|
|
439
|
+
if ( empty( $author['bio'] ) && ! $show_empty_bio ) {
|
|
440
|
+
continue;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
$extra_classes = [ 'is-nested-mode' ];
|
|
444
|
+
$classes = Newspack_Blocks::block_classes( 'author-profile', $attributes, $extra_classes );
|
|
445
|
+
|
|
446
|
+
// Render entire inner block tree with author context.
|
|
447
|
+
// WP_Block propagates available_context to all descendants automatically
|
|
448
|
+
// through core/columns > core/column > child blocks.
|
|
449
|
+
$author_html = '';
|
|
450
|
+
foreach ( $block->inner_blocks as $inner_block ) {
|
|
451
|
+
$inner_block_instance = new WP_Block(
|
|
452
|
+
$inner_block->parsed_block,
|
|
453
|
+
array_merge(
|
|
454
|
+
$block->context,
|
|
455
|
+
[
|
|
456
|
+
'newspack-blocks/author' => array_merge(
|
|
457
|
+
$author,
|
|
458
|
+
[ 'avatarHideDefault' => ! empty( $attributes['avatarHideDefault'] ) ]
|
|
459
|
+
),
|
|
460
|
+
]
|
|
461
|
+
)
|
|
462
|
+
);
|
|
463
|
+
$author_html .= $inner_block_instance->render();
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
// Post-process: wrap archive link paragraph in anchor tag.
|
|
467
|
+
$author_html = newspack_blocks_wrap_author_archive_link( $author_html, $author );
|
|
468
|
+
|
|
469
|
+
$output .= '<div class="' . esc_attr( $classes ) . '">' . $author_html . '</div>';
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
return $output;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Post-process rendered HTML to wrap the archive link paragraph in an anchor tag.
|
|
477
|
+
*
|
|
478
|
+
* @param string $html Rendered HTML from inner blocks.
|
|
479
|
+
* @param array $author Author data array.
|
|
480
|
+
* @return string Processed HTML with archive link wrapped.
|
|
481
|
+
*/
|
|
482
|
+
function newspack_blocks_wrap_author_archive_link( $html, $author ) {
|
|
483
|
+
$url = $author['url'] ?? '';
|
|
484
|
+
if ( $url ) {
|
|
485
|
+
$html = preg_replace_callback(
|
|
486
|
+
'/(<p[^>]*class="[^"]*author-archive-link[^"]*"[^>]*>)(.*?)(<\/p>)/s',
|
|
487
|
+
function ( $matches ) use ( $url ) {
|
|
488
|
+
// Avoid creating nested anchors if the paragraph already contains a link.
|
|
489
|
+
if ( false !== stripos( $matches[2], '<a ' ) ) {
|
|
490
|
+
return $matches[0];
|
|
491
|
+
}
|
|
492
|
+
return $matches[1] . '<a href="' . esc_url( $url ) . '">' . wp_kses_post( $matches[2] ) . '</a>' . $matches[3];
|
|
493
|
+
},
|
|
494
|
+
$html
|
|
495
|
+
);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
return $html;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
add_action( 'init', 'newspack_blocks_register_author_profile' );
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
@use "../../shared/sass/variables";
|
|
2
|
+
@use "../../shared/sass/mixins";
|
|
3
|
+
|
|
4
|
+
.wp-block-newspack-blocks-author-profile {
|
|
5
|
+
/* Default mode */
|
|
6
|
+
&:not(.is-nested-mode) {
|
|
7
|
+
@include mixins.media( mobile ) {
|
|
8
|
+
display: flex;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
h3 {
|
|
12
|
+
margin-bottom: 0.5em;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
p {
|
|
16
|
+
font-size: 1em;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&.text-size-small {
|
|
20
|
+
font-size: 0.75em;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&.text-size-large {
|
|
24
|
+
font-size: 1.25em;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
&.text-size-extra-large {
|
|
28
|
+
font-size: 1.5em;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
+ .wp-block-newspack-blocks-author-profile {
|
|
32
|
+
margin-top: 2.5rem;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* Nested mode */
|
|
37
|
+
&.is-nested-mode {
|
|
38
|
+
// Dynamic column sizing: avatar column fits content, content column flexes to fill.
|
|
39
|
+
.author-profile-columns {
|
|
40
|
+
.author-profile-avatar-column {
|
|
41
|
+
flex-basis: auto;
|
|
42
|
+
flex-grow: 0;
|
|
43
|
+
flex-shrink: 0;
|
|
44
|
+
width: fit-content; // Prevents expansion when vertical alignment (align-self) is set.
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.author-profile-content-column {
|
|
48
|
+
flex-basis: auto;
|
|
49
|
+
flex-grow: 1;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
p:empty {
|
|
54
|
+
display: none;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
&__avatar {
|
|
59
|
+
@include mixins.media( mobile ) {
|
|
60
|
+
flex: 0 1 auto;
|
|
61
|
+
margin-right: 1.5em;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
figure {
|
|
65
|
+
margin: 0;
|
|
66
|
+
overflow: hidden;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.avatar {
|
|
70
|
+
border-radius: 0;
|
|
71
|
+
display: block;
|
|
72
|
+
height: 100%;
|
|
73
|
+
max-width: none;
|
|
74
|
+
object-fit: cover;
|
|
75
|
+
width: 100%;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
&__bio {
|
|
80
|
+
@include mixins.media( mobile ) {
|
|
81
|
+
flex: 4;
|
|
82
|
+
|
|
83
|
+
h3 {
|
|
84
|
+
margin-top: 0;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
&__job-title,
|
|
90
|
+
&__employment {
|
|
91
|
+
margin-top: 0;
|
|
92
|
+
margin-bottom: 0;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
&__employment {
|
|
96
|
+
font-size: 0.8em !important;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
&__social-links {
|
|
100
|
+
display: flex;
|
|
101
|
+
flex-wrap: wrap;
|
|
102
|
+
list-style: none;
|
|
103
|
+
margin: -8px;
|
|
104
|
+
padding: 0;
|
|
105
|
+
|
|
106
|
+
li {
|
|
107
|
+
margin: 8px;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
a,
|
|
111
|
+
svg {
|
|
112
|
+
display: block;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
a:hover {
|
|
116
|
+
color: var(--wp--preset--color--contrast-2, inherit);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
svg {
|
|
120
|
+
fill: currentcolor;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.hidden {
|
|
125
|
+
display: none;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* Avatar – Right */
|
|
129
|
+
&.avatar-right {
|
|
130
|
+
@include mixins.media( mobile ) {
|
|
131
|
+
.wp-block-newspack-blocks-author-profile__avatar {
|
|
132
|
+
margin-left: 1.5em;
|
|
133
|
+
margin-right: 0;
|
|
134
|
+
order: 2;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* Style – Center */
|
|
140
|
+
&.is-style-center {
|
|
141
|
+
display: block;
|
|
142
|
+
|
|
143
|
+
.wp-block-newspack-blocks-author-profile__avatar {
|
|
144
|
+
margin: 0 0 1.5em;
|
|
145
|
+
|
|
146
|
+
figure {
|
|
147
|
+
margin: 0 auto;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.wp-block-newspack-blocks-author-profile__bio {
|
|
152
|
+
text-align: center;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.wp-block-newspack-blocks-author-profile__social-links {
|
|
156
|
+
justify-content: center;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|