@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,341 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
/**
|
|
3
|
+
* Renders the frequency-based Donate block.
|
|
4
|
+
*
|
|
5
|
+
* @package WordPress
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
defined( 'ABSPATH' ) || exit;
|
|
9
|
+
|
|
10
|
+
require_once NEWSPACK_BLOCKS__PLUGIN_DIR . 'src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-base.php';
|
|
11
|
+
|
|
12
|
+
use Newspack_Blocks\Modal_Checkout\Checkout_Data;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Renders the frequency-based Donate block.
|
|
16
|
+
*/
|
|
17
|
+
class Newspack_Blocks_Donate_Renderer_Frequency_Based extends Newspack_Blocks_Donate_Renderer_Base {
|
|
18
|
+
/**
|
|
19
|
+
* Renders the frequency selection of the donation form.
|
|
20
|
+
*
|
|
21
|
+
* @param string $frequency_slug Frequency slug.
|
|
22
|
+
* @param string $frequency_name Frequency name.
|
|
23
|
+
* @param number $uid Unique ID.
|
|
24
|
+
* @param array $configuration The donations settings.
|
|
25
|
+
*
|
|
26
|
+
* @return string
|
|
27
|
+
*/
|
|
28
|
+
private static function render_frequency_selection( $frequency_slug, $frequency_name, $uid, $configuration ) {
|
|
29
|
+
ob_start();
|
|
30
|
+
?>
|
|
31
|
+
<input
|
|
32
|
+
type='radio'
|
|
33
|
+
value='<?php echo esc_attr( $frequency_slug ); ?>'
|
|
34
|
+
id='newspack-donate-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>'
|
|
35
|
+
name="<?php echo esc_attr( self::FREQUENCY_PARAM ); ?>"
|
|
36
|
+
<?php
|
|
37
|
+
checked(
|
|
38
|
+
$configuration['defaultFrequency'],
|
|
39
|
+
$frequency_slug
|
|
40
|
+
);
|
|
41
|
+
?>
|
|
42
|
+
/>
|
|
43
|
+
<label for='newspack-donate-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>'>
|
|
44
|
+
<?php echo esc_html( $frequency_name ); ?>
|
|
45
|
+
</label>
|
|
46
|
+
<?php
|
|
47
|
+
return ob_get_clean();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Renders the frequency selection of the donation form in accessible tabs.
|
|
52
|
+
*
|
|
53
|
+
* @param string $frequency_slug Frequency slug.
|
|
54
|
+
* @param string $frequency_name Frequency name.
|
|
55
|
+
* @param number $uid Unique ID.
|
|
56
|
+
* @param array $configuration The donations settings.
|
|
57
|
+
*
|
|
58
|
+
* @return string
|
|
59
|
+
*/
|
|
60
|
+
private static function render_frequency_tab( $frequency_slug, $frequency_name, $uid, $configuration ) {
|
|
61
|
+
ob_start();
|
|
62
|
+
?>
|
|
63
|
+
<button
|
|
64
|
+
role='tab'
|
|
65
|
+
type='button'
|
|
66
|
+
aria-controls='tab-panel-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>'
|
|
67
|
+
class="wpbnbd__button freq-label<?php echo esc_attr( $frequency_slug === $configuration['defaultFrequency'] ? ' wpbnbd__button--active' : '' ); ?>"
|
|
68
|
+
data-tab-id="<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>"
|
|
69
|
+
id="tab-newspack-donate-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>"
|
|
70
|
+
<?php echo "aria-selected='" . ( $frequency_slug === $configuration['defaultFrequency'] ? 'true' : 'false' ) . "'"; ?>
|
|
71
|
+
>
|
|
72
|
+
<?php echo esc_html( $frequency_name ); ?>
|
|
73
|
+
</button>
|
|
74
|
+
<?php
|
|
75
|
+
return ob_get_clean();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Renders the footer of the donation form.
|
|
80
|
+
*
|
|
81
|
+
* @param array $attributes The block attributes.
|
|
82
|
+
*
|
|
83
|
+
* @return string
|
|
84
|
+
*/
|
|
85
|
+
private static function render_footer( $attributes ) {
|
|
86
|
+
$campaign = $attributes['campaign'] ?? false;
|
|
87
|
+
$button_style_attr = 'style="' . self::get_button_style( $attributes ) . '"';
|
|
88
|
+
|
|
89
|
+
ob_start();
|
|
90
|
+
?>
|
|
91
|
+
<p class='wp-block-newspack-blocks-donate__thanks thanks'>
|
|
92
|
+
<?php echo wp_kses_post( $attributes['thanksText'] ); ?>
|
|
93
|
+
</p>
|
|
94
|
+
|
|
95
|
+
<button type='submit' <?php echo $button_style_attr; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
|
|
96
|
+
<?php echo wp_kses_post( $attributes['buttonText'] ); ?>
|
|
97
|
+
</button>
|
|
98
|
+
<?php if ( $campaign ) : ?>
|
|
99
|
+
<input type='hidden' name='campaign' value='<?php echo esc_attr( $campaign ); ?>' />
|
|
100
|
+
<?php endif; ?>
|
|
101
|
+
|
|
102
|
+
<?php
|
|
103
|
+
return ob_get_clean();
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Render the form header.
|
|
108
|
+
*
|
|
109
|
+
* @param array $configuration The donations settings.
|
|
110
|
+
* @param string $uid ID of the block.
|
|
111
|
+
*/
|
|
112
|
+
private static function render_form_header( $configuration, $uid ) {
|
|
113
|
+
?>
|
|
114
|
+
<?php if ( ! self::renders_single_frequency( $configuration ) ) : ?>
|
|
115
|
+
<div role='tablist' class='tab-container'>
|
|
116
|
+
<?php foreach ( $configuration['frequencies'] as $frequency_slug => $frequency_name ) : ?>
|
|
117
|
+
<?php echo self::render_frequency_tab( $frequency_slug, $frequency_name, $uid, $configuration ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
118
|
+
<?php endforeach; ?>
|
|
119
|
+
</div>
|
|
120
|
+
<?php endif; ?>
|
|
121
|
+
<?php
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Does the block render just a single frequency?
|
|
126
|
+
*
|
|
127
|
+
* @param array $configuration The donations settings.
|
|
128
|
+
*/
|
|
129
|
+
private static function renders_single_frequency( $configuration ) {
|
|
130
|
+
return count( $configuration['frequencies'] ) === 1;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Render the frequency-based layout.
|
|
135
|
+
*
|
|
136
|
+
* @param array $attributes Block attributes.
|
|
137
|
+
*/
|
|
138
|
+
public static function render( $attributes ) {
|
|
139
|
+
$uid = wp_rand( 10000, 99999 ); // Unique identifier to prevent labels colliding with other instances of Donate block.
|
|
140
|
+
|
|
141
|
+
$configuration = self::get_configuration( $attributes );
|
|
142
|
+
|
|
143
|
+
// Calculate the value for the "step" property of the custom amount donation value `input` element.
|
|
144
|
+
$input_element_step_attribute = '1';
|
|
145
|
+
$thousand_separator = get_option( 'woocommerce_price_thousand_sep', false );
|
|
146
|
+
$decimals = get_option( 'woocommerce_price_num_decimals', 2 );
|
|
147
|
+
if ( $thousand_separator !== '.' && $decimals > 0 ) {
|
|
148
|
+
// According to the HTML spec, a float can only use a dot (https://html.spec.whatwg.org/dev/common-microsyntaxes.html#valid-floating-point-number).
|
|
149
|
+
// Therefore, an `input[type="number"]` with a `,` decimal separator is invalid HTML.
|
|
150
|
+
// To support separators other than a dot would mean using a standard `input[type="text"]` element,
|
|
151
|
+
// with JS handling the validation and input filtering. This might be revisited in the future.
|
|
152
|
+
$input_element_step_attribute = '0.' . str_repeat( '0', $decimals - 1 ) . '1';
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
ob_start();
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* For AMP-compatibility, the donation forms were implemented as pure HTML forms (no JS).
|
|
159
|
+
* Each frequency and tier option is a radio input, styled to look like a button.
|
|
160
|
+
* As the radio inputs are checked/unchecked, fields are hidden/displayed using only CSS.
|
|
161
|
+
*/
|
|
162
|
+
if ( ! $configuration['tiered'] ) :
|
|
163
|
+
?>
|
|
164
|
+
<div
|
|
165
|
+
class="untiered <?php echo esc_html( $configuration['container_classnames'] ); ?>"
|
|
166
|
+
id="<?php echo esc_attr( $configuration['uid'] ); ?>"
|
|
167
|
+
>
|
|
168
|
+
<form>
|
|
169
|
+
<?php echo self::render_hidden_form_inputs( $attributes ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
170
|
+
<div class='wp-block-newspack-blocks-donate__options'>
|
|
171
|
+
<div class='wp-block-newspack-blocks-donate__frequencies frequencies'>
|
|
172
|
+
<?php echo self::render_form_header( $configuration, $uid ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
173
|
+
<?php foreach ( $configuration['frequencies'] as $frequency_slug => $frequency_name ) : ?>
|
|
174
|
+
<?php $amount = $configuration['amounts'][ $frequency_slug ][3]; ?>
|
|
175
|
+
<div
|
|
176
|
+
class="wp-block-newspack-blocks-donate__frequency donation-frequency__<?php echo esc_attr( $frequency_slug ); ?> frequency"
|
|
177
|
+
id='tab-panel-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>'
|
|
178
|
+
role='tabpanel'
|
|
179
|
+
aria-labelledby='tab-newspack-donate-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>'
|
|
180
|
+
data-checkout='<?php echo esc_attr( wp_json_encode( Checkout_Data::get_donation_checkout_data( $frequency_slug, $amount ) ) ); ?>'
|
|
181
|
+
<?php ( $frequency_slug === $configuration['defaultFrequency'] ? 'tabindex="0"' : '' ); ?>
|
|
182
|
+
>
|
|
183
|
+
<?php echo self::render_frequency_selection( $frequency_slug, $frequency_name, $uid, $configuration ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
184
|
+
<div class='input-container'>
|
|
185
|
+
<?php if ( Newspack_Blocks::can_use_name_your_price() ) : ?>
|
|
186
|
+
<label
|
|
187
|
+
class='donate-label'
|
|
188
|
+
for='newspack-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>-untiered-input'
|
|
189
|
+
>
|
|
190
|
+
<?php echo esc_html__( 'Donation amount', 'newspack-blocks' ); ?>
|
|
191
|
+
<?php echo esc_html( trim( self::get_frequency_label( $frequency_slug, true ) ) ); ?>
|
|
192
|
+
</label>
|
|
193
|
+
<div class='wp-block-newspack-blocks-donate__money-input money-input'>
|
|
194
|
+
<span class='currency'>
|
|
195
|
+
<?php echo esc_html( $configuration['currencySymbol'] ); ?>
|
|
196
|
+
</span>
|
|
197
|
+
<input
|
|
198
|
+
type='number'
|
|
199
|
+
min='<?php echo esc_attr( $configuration['minimumDonation'] ); ?>'
|
|
200
|
+
name='donation_value_<?php echo esc_attr( $frequency_slug ); ?>_untiered'
|
|
201
|
+
value='<?php echo esc_attr( $amount ); ?>'
|
|
202
|
+
id='newspack-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>-untiered-input'
|
|
203
|
+
step='<?php echo esc_attr( $input_element_step_attribute ); ?>'
|
|
204
|
+
/>
|
|
205
|
+
</div>
|
|
206
|
+
<?php else : ?>
|
|
207
|
+
<input
|
|
208
|
+
type='radio'
|
|
209
|
+
name='donation_value_<?php echo esc_attr( $frequency_slug ); ?>'
|
|
210
|
+
value='<?php echo esc_attr( $amount ); ?>'
|
|
211
|
+
id='newspack-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>-untiered-input'
|
|
212
|
+
checked
|
|
213
|
+
/>
|
|
214
|
+
<label
|
|
215
|
+
class='tier-select-label tier-label'
|
|
216
|
+
for='newspack-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>-untiered-input'
|
|
217
|
+
>
|
|
218
|
+
<?php echo wp_kses_post( Newspack_Blocks::get_formatted_amount( $amount, $frequency_slug ) ); ?>
|
|
219
|
+
</label>
|
|
220
|
+
<?php endif; ?>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
|
|
224
|
+
<?php endforeach; ?>
|
|
225
|
+
</div>
|
|
226
|
+
</div>
|
|
227
|
+
<?php echo self::render_footer( $attributes ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
228
|
+
</form>
|
|
229
|
+
</div>
|
|
230
|
+
|
|
231
|
+
<?php
|
|
232
|
+
else :
|
|
233
|
+
$suggested_amounts = $configuration['amounts'];
|
|
234
|
+
?>
|
|
235
|
+
|
|
236
|
+
<div
|
|
237
|
+
class="tiered <?php echo esc_html( $configuration['container_classnames'] ); ?>"
|
|
238
|
+
id="<?php echo esc_attr( $configuration['uid'] ); ?>"
|
|
239
|
+
>
|
|
240
|
+
<form>
|
|
241
|
+
<?php echo self::render_hidden_form_inputs( $attributes ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
242
|
+
<div class='wp-block-newspack-blocks-donate__options'>
|
|
243
|
+
<div class='wp-block-newspack-blocks-donate__frequencies frequencies'>
|
|
244
|
+
<?php echo self::render_form_header( $configuration, $uid ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
245
|
+
<?php foreach ( $configuration['frequencies'] as $frequency_slug => $frequency_name ) : ?>
|
|
246
|
+
<div
|
|
247
|
+
class='wp-block-newspack-blocks-donate__frequency frequency'
|
|
248
|
+
id='tab-panel-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>'
|
|
249
|
+
role='tabpanel'
|
|
250
|
+
aria-labelledby='tab-newspack-donate-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>'
|
|
251
|
+
<?php ( $frequency_slug === $configuration['defaultFrequency'] ? 'tabindex="0"' : '' ); ?>
|
|
252
|
+
>
|
|
253
|
+
<?php echo self::render_frequency_selection( $frequency_slug, $frequency_name, $uid, $configuration ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
254
|
+
<div class='wp-block-newspack-blocks-donate__tiers tiers'>
|
|
255
|
+
<?php foreach ( $suggested_amounts[ $frequency_slug ] as $index => $amount ) : ?>
|
|
256
|
+
<?php
|
|
257
|
+
$decimals = intval( $amount ) == floatval( $amount ) ? 0 : 2;
|
|
258
|
+
$format_options = [ 'decimals' => $decimals ];
|
|
259
|
+
$formatted_amount = function_exists( 'wc_price' ) ?
|
|
260
|
+
wp_strip_all_tags( \wc_price( (float) $amount, $format_options ) ) :
|
|
261
|
+
$configuration['currencySymbol'] . number_format( $amount, $decimals );
|
|
262
|
+
?>
|
|
263
|
+
<div
|
|
264
|
+
class='wp-block-newspack-blocks-donate__tier donation-tier__<?php echo esc_attr( $frequency_slug ); ?>'
|
|
265
|
+
data-checkout='<?php echo esc_attr( wp_json_encode( Checkout_Data::get_donation_checkout_data( $frequency_slug, $amount ) ) ); ?>'
|
|
266
|
+
>
|
|
267
|
+
<?php if ( 3 === $index ) : // The "other" tier. ?>
|
|
268
|
+
<input
|
|
269
|
+
type='radio'
|
|
270
|
+
class='other-input'
|
|
271
|
+
name='donation_value_<?php echo esc_attr( $frequency_slug ); ?>'
|
|
272
|
+
value='other'
|
|
273
|
+
id='newspack-tier-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>-other'
|
|
274
|
+
/>
|
|
275
|
+
<label
|
|
276
|
+
class='tier-select-label tier-label'
|
|
277
|
+
for='newspack-tier-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>-other'
|
|
278
|
+
>
|
|
279
|
+
<?php echo esc_html__( 'Other', 'newspack-blocks' ); ?>
|
|
280
|
+
</label>
|
|
281
|
+
<label
|
|
282
|
+
class='odl'
|
|
283
|
+
for='newspack-tier-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>-other-input'
|
|
284
|
+
>
|
|
285
|
+
<?php echo esc_html__( 'Donation amount', 'newspack-blocks' ); ?>
|
|
286
|
+
<?php echo esc_html( trim( self::get_frequency_label( $frequency_slug, true ) ) ); ?>
|
|
287
|
+
</label>
|
|
288
|
+
<div class='wp-block-newspack-blocks-donate__money-input money-input'>
|
|
289
|
+
<span class='currency'>
|
|
290
|
+
<?php echo esc_html( $configuration['currencySymbol'] ); ?>
|
|
291
|
+
</span>
|
|
292
|
+
<input
|
|
293
|
+
type='number'
|
|
294
|
+
min='<?php echo esc_attr( $configuration['minimumDonation'] ); ?>'
|
|
295
|
+
name='donation_value_<?php echo esc_attr( $frequency_slug ); ?>_other'
|
|
296
|
+
id='newspack-tier-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>-other-input'
|
|
297
|
+
step='<?php echo esc_attr( $input_element_step_attribute ); ?>'
|
|
298
|
+
/>
|
|
299
|
+
</div>
|
|
300
|
+
<?php
|
|
301
|
+
else :
|
|
302
|
+
?>
|
|
303
|
+
<input
|
|
304
|
+
type='radio'
|
|
305
|
+
name='donation_value_<?php echo esc_attr( $frequency_slug ); ?>'
|
|
306
|
+
value='<?php echo esc_attr( $amount ); ?>'
|
|
307
|
+
id='newspack-tier-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>-<?php echo (int) $index; ?>'
|
|
308
|
+
<?php checked( 1, $index ); ?>
|
|
309
|
+
/>
|
|
310
|
+
<label
|
|
311
|
+
class='tier-select-label tier-label'
|
|
312
|
+
for='newspack-tier-<?php echo esc_attr( $frequency_slug . '-' . $uid ); ?>-<?php echo (int) $index; ?>'
|
|
313
|
+
>
|
|
314
|
+
<?php echo wp_kses_post( $formatted_amount ); ?>
|
|
315
|
+
</label>
|
|
316
|
+
<?php endif; ?>
|
|
317
|
+
</div>
|
|
318
|
+
<?php endforeach; ?>
|
|
319
|
+
<?php if ( self::renders_single_frequency( $configuration ) ) : ?>
|
|
320
|
+
<div class='wp-block-newspack-blocks-donate__frequency-label'>
|
|
321
|
+
<div>
|
|
322
|
+
<?php echo esc_html( trim( self::get_frequency_label( $frequency_slug, true ) ) ); ?>
|
|
323
|
+
|
|
324
|
+
</div>
|
|
325
|
+
</div>
|
|
326
|
+
<?php endif; ?>
|
|
327
|
+
</div>
|
|
328
|
+
</div>
|
|
329
|
+
|
|
330
|
+
<?php endforeach; ?>
|
|
331
|
+
</div>
|
|
332
|
+
</div>
|
|
333
|
+
<?php echo self::render_footer( $attributes ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
334
|
+
</form>
|
|
335
|
+
</div>
|
|
336
|
+
<?php
|
|
337
|
+
endif;
|
|
338
|
+
|
|
339
|
+
return apply_filters( 'newspack_blocks_donate_block_html', ob_get_clean(), $attributes );
|
|
340
|
+
}
|
|
341
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
/**
|
|
3
|
+
* Renders the tiers-based Donate block.
|
|
4
|
+
*
|
|
5
|
+
* @package WordPress
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
defined( 'ABSPATH' ) || exit;
|
|
9
|
+
|
|
10
|
+
require_once NEWSPACK_BLOCKS__PLUGIN_DIR . 'src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-base.php';
|
|
11
|
+
|
|
12
|
+
use Newspack_Blocks\Modal_Checkout\Checkout_Data;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Renders the tiers-based Donate block.
|
|
16
|
+
*/
|
|
17
|
+
class Newspack_Blocks_Donate_Renderer_Tiers_Based extends Newspack_Blocks_Donate_Renderer_Base {
|
|
18
|
+
/**
|
|
19
|
+
* Get displayed amounts.
|
|
20
|
+
*
|
|
21
|
+
* @param array $amounts Amounts.
|
|
22
|
+
*/
|
|
23
|
+
private static function get_displayed_amounts( $amounts ) {
|
|
24
|
+
$disabled_in_tiers_based_layout_tier_index = 3;
|
|
25
|
+
return array_slice( $amounts, 0, $disabled_in_tiers_based_layout_tier_index );
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Render the single option.
|
|
30
|
+
*
|
|
31
|
+
* @param array $attributes Block attributes.
|
|
32
|
+
* @param int $index Option index.
|
|
33
|
+
* @param int $amount Option amount.
|
|
34
|
+
* @param string $selected_frequency Selected frequency.
|
|
35
|
+
* @param bool $is_any_recommended Is any option recommended.
|
|
36
|
+
*/
|
|
37
|
+
private static function render_single_tier( $attributes, $index, $amount, $selected_frequency, $is_any_recommended ) {
|
|
38
|
+
$configuration = self::get_configuration( $attributes );
|
|
39
|
+
$has_recommend_label = isset( $attributes['tiersBasedOptions'][ $index ]['recommendLabel'] ) && ! empty( $attributes['tiersBasedOptions'][ $index ]['recommendLabel'] );
|
|
40
|
+
$has_description = isset( $attributes['tiersBasedOptions'][ $index ]['description'] ) && ! empty( $attributes['tiersBasedOptions'][ $index ]['description'] );
|
|
41
|
+
$is_reverse_style = ! $has_recommend_label && $is_any_recommended;
|
|
42
|
+
$button_style_attr = 'style="' . self::get_button_style( $attributes, $is_reverse_style ) . '"';
|
|
43
|
+
|
|
44
|
+
ob_start();
|
|
45
|
+
?>
|
|
46
|
+
<div class="wpbnbd__tiers__tier <?php echo $has_recommend_label ? 'wpbnbd__tiers__tier--recommended' : ''; ?>">
|
|
47
|
+
<div class="wpbnbd__tiers__top">
|
|
48
|
+
<h2 class="wpbnbd__tiers__heading">
|
|
49
|
+
<?php echo esc_html( $attributes['tiersBasedOptions'][ $index ]['heading'] ); ?>
|
|
50
|
+
</h2>
|
|
51
|
+
<?php if ( $has_recommend_label ) : ?>
|
|
52
|
+
<h3 class="wpbnbd__tiers__recommend-label">
|
|
53
|
+
<?php echo esc_html( wp_strip_all_tags( $attributes['tiersBasedOptions'][ $index ]['recommendLabel'] ) ); ?>
|
|
54
|
+
</h3>
|
|
55
|
+
<?php endif; ?>
|
|
56
|
+
</div>
|
|
57
|
+
<div class="wpbnbd__tiers__amount">
|
|
58
|
+
<span>
|
|
59
|
+
<?php foreach ( $configuration['frequencies'] as $frequency_slug => $frequency_name ) : ?>
|
|
60
|
+
<?php $amount = $configuration['amounts'][ $frequency_slug ][ $index ]; ?>
|
|
61
|
+
<span
|
|
62
|
+
style="<?php echo $frequency_slug === $selected_frequency ? '' : 'display:none;'; ?>"
|
|
63
|
+
class="donation-tier__<?php echo esc_attr( $frequency_slug ); ?>"
|
|
64
|
+
data-frequency-slug="<?php echo esc_attr( $frequency_slug ); ?>"
|
|
65
|
+
data-amount="<?php echo esc_attr( $amount ); ?>"
|
|
66
|
+
data-tier-index="<?php echo esc_attr( $index ); ?>"
|
|
67
|
+
data-checkout="<?php echo esc_attr( wp_json_encode( Checkout_Data::get_donation_checkout_data( $frequency_slug, $amount ) ) ); ?>"
|
|
68
|
+
>
|
|
69
|
+
<?php echo wp_kses_post( Newspack_Blocks::get_formatted_amount( $amount, $frequency_slug ) ); ?>
|
|
70
|
+
</span>
|
|
71
|
+
<?php endforeach; ?>
|
|
72
|
+
</span>
|
|
73
|
+
</div>
|
|
74
|
+
<button
|
|
75
|
+
type='submit'
|
|
76
|
+
name="<?php echo esc_attr( self::TIER_PARAM_PREFIX ); ?><?php echo esc_attr( $selected_frequency ); ?>"
|
|
77
|
+
value="<?php echo esc_attr( $configuration['amounts'][ $selected_frequency ][ $index ] ); ?>"
|
|
78
|
+
data-tier-index="<?php echo esc_attr( $index ); ?>"
|
|
79
|
+
<?php echo $button_style_attr; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
80
|
+
>
|
|
81
|
+
<?php echo esc_html( $attributes['tiersBasedOptions'][ $index ]['buttonText'] ); ?>
|
|
82
|
+
</button>
|
|
83
|
+
<?php if ( $has_description ) : ?>
|
|
84
|
+
<div class="wpbnbd__tiers__description">
|
|
85
|
+
<?php echo wp_kses_post( $attributes['tiersBasedOptions'][ $index ]['description'] ); ?>
|
|
86
|
+
</div>
|
|
87
|
+
<?php endif; ?>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
<?php
|
|
91
|
+
return ob_get_clean();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Render the tiers-based layout.
|
|
96
|
+
*
|
|
97
|
+
* @param array $attributes Block attributes.
|
|
98
|
+
*/
|
|
99
|
+
public static function render( $attributes ) {
|
|
100
|
+
$configuration = self::get_configuration( $attributes );
|
|
101
|
+
$displayed_frequencies = array_keys( $configuration['frequencies'] );
|
|
102
|
+
if ( isset( $attributes['defaultFrequency'] ) && in_array( $attributes['defaultFrequency'], $displayed_frequencies, true ) ) {
|
|
103
|
+
$intial_selected_frequency = $attributes['defaultFrequency'];
|
|
104
|
+
} else {
|
|
105
|
+
$intial_selected_frequency = $displayed_frequencies[0];
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
$displayed_amounts = self::get_displayed_amounts( $configuration['amounts'][ $intial_selected_frequency ] );
|
|
109
|
+
$config_related_attributes = array_map(
|
|
110
|
+
function ( $option ) {
|
|
111
|
+
return [ 'heading' => $option['heading'] ];
|
|
112
|
+
},
|
|
113
|
+
$attributes['tiersBasedOptions']
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
$configuration_for_tiers_based = [
|
|
117
|
+
self::FREQUENCY_PARAM,
|
|
118
|
+
self::TIER_PARAM_PREFIX,
|
|
119
|
+
$intial_selected_frequency,
|
|
120
|
+
$config_related_attributes,
|
|
121
|
+
$configuration['amounts'],
|
|
122
|
+
( new DateTime() )->modify( '+1 month' )->format( 'F d, Y' ),
|
|
123
|
+
( new DateTime() )->modify( '+1 year' )->format( 'F d, Y' ),
|
|
124
|
+
$attributes['buttonColor'],
|
|
125
|
+
];
|
|
126
|
+
|
|
127
|
+
$is_any_recommended = array_reduce(
|
|
128
|
+
$attributes['tiersBasedOptions'],
|
|
129
|
+
function ( $carry, $item ) {
|
|
130
|
+
return ( $carry || ( isset( $item['recommendLabel'] ) && ! empty( $item['recommendLabel'] ) ) );
|
|
131
|
+
},
|
|
132
|
+
false
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
ob_start();
|
|
136
|
+
?>
|
|
137
|
+
<div
|
|
138
|
+
class="<?php echo esc_attr( $configuration['container_classnames'] ); ?>"
|
|
139
|
+
id="<?php echo esc_attr( $configuration['uid'] ); ?>"
|
|
140
|
+
data-tiers-based-config="<?php echo esc_attr( htmlspecialchars( wp_json_encode( $configuration_for_tiers_based ), ENT_QUOTES, 'UTF-8' ) ); ?>"
|
|
141
|
+
>
|
|
142
|
+
<form data-is-init-form>
|
|
143
|
+
<div class="wpbnbd__tiers__view">
|
|
144
|
+
<?php echo self::render_hidden_form_inputs( $attributes ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
145
|
+
<input type="hidden" name="<?php echo esc_attr( self::FREQUENCY_PARAM ); ?>" value="<?php echo esc_attr( $intial_selected_frequency ); ?>">
|
|
146
|
+
<div class="wpbnbd__tiers">
|
|
147
|
+
<?php if ( count( $configuration['frequencies'] ) > 1 ) : ?>
|
|
148
|
+
<div class="wpbnbd__tiers__selection">
|
|
149
|
+
<?php foreach ( $configuration['frequencies'] as $frequency_slug => $frequency_name ) : ?>
|
|
150
|
+
<button
|
|
151
|
+
type="button"
|
|
152
|
+
data-frequency-slug="<?php echo esc_attr( $frequency_slug ); ?>"
|
|
153
|
+
data-frequency-label="<?php echo esc_attr( self::get_frequency_label( $frequency_slug ) ); ?>"
|
|
154
|
+
class="wpbnbd__button <?php echo $intial_selected_frequency === $frequency_slug ? 'wpbnbd__button--active' : ''; ?>"
|
|
155
|
+
><?php echo esc_html( $frequency_name ); ?></button>
|
|
156
|
+
<?php endforeach; ?>
|
|
157
|
+
</div>
|
|
158
|
+
<?php endif; ?>
|
|
159
|
+
<?php
|
|
160
|
+
$keys = array_keys( $configuration['frequencies'] );
|
|
161
|
+
$frequency_slug = reset( $keys );
|
|
162
|
+
?>
|
|
163
|
+
<div class="wpbnbd__tiers__options">
|
|
164
|
+
<?php foreach ( $displayed_amounts as $index => $amount ) : ?>
|
|
165
|
+
<?php
|
|
166
|
+
echo self::render_single_tier( $attributes, $index, $configuration['amounts'][ $frequency_slug ][ $index ], $intial_selected_frequency, $is_any_recommended ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
|
167
|
+
?>
|
|
168
|
+
<?php endforeach; ?>
|
|
169
|
+
</div>
|
|
170
|
+
<ul class="wpbnbd__tiers__options__dots">
|
|
171
|
+
<?php foreach ( $displayed_amounts as $index => $amount ) : ?>
|
|
172
|
+
<li></li>
|
|
173
|
+
<?php endforeach; ?>
|
|
174
|
+
</ul>
|
|
175
|
+
</div>
|
|
176
|
+
</div>
|
|
177
|
+
|
|
178
|
+
</form>
|
|
179
|
+
</div>
|
|
180
|
+
|
|
181
|
+
<?php
|
|
182
|
+
return apply_filters( 'newspack_blocks_donate_block_html', ob_get_clean(), $attributes );
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
/**
|
|
3
|
+
* Server-side rendering of the `newspack-blocks/donate` block.
|
|
4
|
+
*
|
|
5
|
+
* @package WordPress
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
defined( 'ABSPATH' ) || exit;
|
|
9
|
+
|
|
10
|
+
require_once NEWSPACK_BLOCKS__PLUGIN_DIR . 'src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-frequency-based.php';
|
|
11
|
+
require_once NEWSPACK_BLOCKS__PLUGIN_DIR . 'src/blocks/donate/frontend/class-newspack-blocks-donate-renderer-tiers-based.php';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Server-side rendering of the `newspack-blocks/donate` block.
|
|
15
|
+
*/
|
|
16
|
+
class Newspack_Blocks_Donate_Renderer {
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Get the keys of the billing fields to render for logged out users.
|
|
20
|
+
*
|
|
21
|
+
* @return array
|
|
22
|
+
*/
|
|
23
|
+
public static function get_billing_fields_keys() {
|
|
24
|
+
$fields = [
|
|
25
|
+
'billing_first_name',
|
|
26
|
+
'billing_last_name',
|
|
27
|
+
'billing_email',
|
|
28
|
+
];
|
|
29
|
+
/**
|
|
30
|
+
* Filters the billing fields used on modal checkout.
|
|
31
|
+
*
|
|
32
|
+
* @param array $fields Billing fields.
|
|
33
|
+
*/
|
|
34
|
+
return apply_filters( 'newspack_blocks_donate_billing_fields_keys', $fields );
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Enqueue frontend scripts and styles.
|
|
39
|
+
*
|
|
40
|
+
* @param string $handle_slug The slug of the script to enqueue.
|
|
41
|
+
* @param array $dependencies The dependencies of the script to enqueue.
|
|
42
|
+
*/
|
|
43
|
+
private static function enqueue_scripts( $handle_slug, $dependencies = [ 'wp-i18n' ] ) {
|
|
44
|
+
$has_css = true;
|
|
45
|
+
switch ( $handle_slug ) {
|
|
46
|
+
case 'frequency-based':
|
|
47
|
+
$filename = 'frequencyBased';
|
|
48
|
+
break;
|
|
49
|
+
case 'tiers-based':
|
|
50
|
+
$filename = 'tiersBased';
|
|
51
|
+
break;
|
|
52
|
+
default:
|
|
53
|
+
$filename = false;
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if ( false === $filename ) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
$handle = Newspack_Blocks::SCRIPT_HANDLES[ $handle_slug ];
|
|
62
|
+
$script_data = Newspack_Blocks::script_enqueue_helper( NEWSPACK_BLOCKS__BLOCKS_DIRECTORY . '/' . $filename . '.js' );
|
|
63
|
+
wp_enqueue_script(
|
|
64
|
+
$handle,
|
|
65
|
+
$script_data['script_path'],
|
|
66
|
+
$dependencies,
|
|
67
|
+
NEWSPACK_BLOCKS__VERSION,
|
|
68
|
+
true
|
|
69
|
+
);
|
|
70
|
+
wp_script_add_data( $handle, 'async', true );
|
|
71
|
+
|
|
72
|
+
if ( $has_css ) {
|
|
73
|
+
$style_path = NEWSPACK_BLOCKS__BLOCKS_DIRECTORY . $filename . '.css';
|
|
74
|
+
wp_enqueue_style(
|
|
75
|
+
$handle,
|
|
76
|
+
plugins_url( $style_path, NEWSPACK_BLOCKS__PLUGIN_FILE ),
|
|
77
|
+
[],
|
|
78
|
+
NEWSPACK_BLOCKS__VERSION
|
|
79
|
+
);
|
|
80
|
+
wp_style_add_data( $handle, 'rtl', 'replace' );
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Renders the `newspack-blocks/donate` block on server.
|
|
86
|
+
*
|
|
87
|
+
* @param array $attributes The block attributes.
|
|
88
|
+
*
|
|
89
|
+
* @return string
|
|
90
|
+
*/
|
|
91
|
+
public static function render( $attributes ) {
|
|
92
|
+
if ( ! class_exists( 'Newspack\Donations' ) ) {
|
|
93
|
+
return '';
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
$configuration = Newspack_Blocks_Donate_Renderer_Frequency_Based::get_configuration( $attributes );
|
|
97
|
+
if ( \is_wp_error( $configuration ) ) {
|
|
98
|
+
return '';
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
Newspack_Blocks::enqueue_view_assets( 'donate' );
|
|
102
|
+
wp_script_add_data( 'newspack-blocks-donate', 'async', true );
|
|
103
|
+
|
|
104
|
+
if ( true === $attributes['useModalCheckout'] ) {
|
|
105
|
+
\Newspack_Blocks\Modal_Checkout::enqueue_modal();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if ( $configuration['is_tier_based_layout'] ) {
|
|
109
|
+
self::enqueue_scripts( 'tiers-based' );
|
|
110
|
+
return Newspack_Blocks_Donate_Renderer_Tiers_Based::render( $attributes );
|
|
111
|
+
} else {
|
|
112
|
+
self::enqueue_scripts( 'frequency-based' );
|
|
113
|
+
return Newspack_Blocks_Donate_Renderer_Frequency_Based::render( $attributes );
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
new Newspack_Blocks_Donate_Renderer();
|