Making WordPress.org

Changeset 13181


Ignore:
Timestamp:
02/07/2024 05:58:19 AM (22 months ago)
Author:
dd32
Message:

Trac: Escape HTML within script tags, as DOMDocument doesn't like it. Remove CDATA entirely, I don't think it's needed.

Location:
sites/trunk/trac.wordpress.org/templates
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/trac.wordpress.org/templates/update-headers.php

    r12855 r13181  
    77function domdocument_from_url( $url ) {
    88    $html = file_get_contents( $url );
     9
     10    /*
     11     * Escape HTML within Javascript strings.
     12     * DomDocument doesn't handle HTML tags within Javascript strings.
     13     * See https://stackoverflow.com/questions/40703313/php-domdocument-errors-while-parsing-unescaped-strings
     14     */
     15    $html = preg_replace_callback(
     16        '!<script([^>]+)>(.*?)</script>!ism',
     17        function( $m ) {
     18            $escaped = $m[2];
     19            $escaped = str_replace( array( '<', '>' ), array( '\x3C',  '\x3E' ), $escaped );
     20            return "<script{$m[1]}>{$escaped}</script>";
     21        },
     22        $html
     23    );
    924
    1025    $doc = new DOMDocument();
     
    4257    $html = preg_replace( '#<style([^>]*)><!\[CDATA\[(.+?)\]\]></style>#ism', "<style$1>$2</style>", $html );
    4358
    44     // Escape CDATA tags in <script>
    45     $html = preg_replace( '#<script([^>]*)><!\[CDATA\[(.+?)\]\]></script>#ism', "<script$1>//<![CDATA[\n$2\n//]]></script>", $html );
     59    // Remove CDATA tags in <script>
     60    $html = preg_replace( '#<script([^>]*)><!\[CDATA\[(.+?)\]\]></script>#ism', "<script$1>$2</script>", $html );
    4661
    4762    // Remove trailing whitespace.
  • sites/trunk/trac.wordpress.org/templates/wporg-footer.html

    r13180 r13181  
    6666</footer><script src="https://wordpress.org/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-image-cdn/dist/image-cdn.js?minify=false&amp;ver=132249e245926ae3e188" id="jetpack-photon-js"/>
    6767<script src="https://wordpress.org/wp-content/mu-plugins/pub-sync/blocks/time/build/view.js?ver=362338b9e6592dcf125b" id="wporg-time-view-script-js" defer="defer" data-wp-strategy="defer"/>
    68 <script id="wporg-global-header-script-js-extra">//<![CDATA[
     68<script id="wporg-global-header-script-js-extra">
    6969var wporgGlobalHeaderI18n = {"openSearchLabel":"Open Search","closeSearchLabel":"Close Search","overflowMenuLabel":"More menu"};
    70 //]]></script>
     70</script>
    7171<script src="https://wordpress.org/wp-content/mu-plugins/pub-sync/blocks/global-header-footer/js/view.js?ver=1697687513" id="wporg-global-header-script-js"/>
    7272    </html>
  • sites/trunk/trac.wordpress.org/templates/wporg-head.html

    r13180 r13181  
    1111<link rel="dns-prefetch" href="//v0.wordpress.com"/>
    1212<link rel="dns-prefetch" href="//i0.wp.com"/>
    13 <script>//<![CDATA[
    14 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
     13<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    1514new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    1615j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    1716'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    18 })(window,document,'script','dataLayer','GTM-P24PF4B');
    19 //]]></script>
    20     <script>//<![CDATA[
     17})(window,document,'script','dataLayer','GTM-P24PF4B');</script>
     18    <script>
    2119window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/wordpress.org\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.5-alpha-57545"}};
    2220/*! This file is auto-generated */
    2321!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c\udfff","\ud83e\udef1\ud83c\udffb\u200b\ud83e\udef2\ud83c\udfff")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
    24 //]]></script>
     22</script>
    2523<style id="wp-block-navigation-link-inline-css">
    2624.wp-block-navigation .wp-block-navigation-item__label{overflow-wrap:break-word}.wp-block-navigation .wp-block-navigation-item__description{display:none}
     
    3230</style>
    3331<link rel="stylesheet" id="open-sans-css" href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,600;1,300;1,400;1,600&amp;display=swap" media="all"/>
    34 <link rel="stylesheet" id="wp4-styles-css" href="https://s.w.org/style/wp4.css?ver=1645139111" media="all"/>
     32<link rel="stylesheet" id="wp4-styles-css" href="https://s.w.org/style/wp4.css?ver=1645139150" media="all"/>
    3533<style id="wp-emoji-styles-inline-css">
    3634    img.wp-smiley, img.emoji {
     
    258256.wp-container-core-navigation-is-layout-2.wp-container-core-navigation-is-layout-2{flex-direction:column;align-items:flex-start;}
    259257</style>
    260 <link rel="stylesheet" id="wporg-global-fonts-css" href="https://wordpress.org/wp-content/mu-plugins/pub-sync/global-fonts/style.css?ver=1700434831" media="all"/>
    261 <link rel="stylesheet" id="wporg-global-header-footer-css" href="https://wordpress.org/wp-content/mu-plugins/pub-sync/blocks/global-header-footer/build/style.css?ver=1706749233" media="all"/>
     258<link rel="stylesheet" id="wporg-global-fonts-css" href="https://wordpress.org/wp-content/mu-plugins/pub-sync/global-fonts/style.css?ver=1700434933" media="all"/>
     259<link rel="stylesheet" id="wporg-global-header-footer-css" href="https://wordpress.org/wp-content/mu-plugins/pub-sync/blocks/global-header-footer/build/style.css?ver=1706749302" media="all"/>
    262260<link rel="stylesheet" id="jetpack_css-css" href="https://wordpress.org/wp-content/plugins/jetpack/css/jetpack.css?ver=12.9.3" media="all"/>
    263 <script id="wp-load-polyfill-importmap">//<![CDATA[
    264 ( HTMLScriptElement.supports && HTMLScriptElement.supports("importmap") ) || document.write( '<script src="https://wordpress.org/wp-includes/js/dist/vendor/wp-polyfill-importmap.min.js?ver=1.8.2">' + 'ipt>' );
    265 //]]></script>
    266 <script type="importmap" id="wp-importmap">//<![CDATA[
     261<script id="wp-load-polyfill-importmap">
     262( HTMLScriptElement.supports && HTMLScriptElement.supports("importmap") ) || document.write( '\x3Cscript src="https://wordpress.org/wp-includes/js/dist/vendor/wp-polyfill-importmap.min.js?ver=1.8.2"\x3E\x3C/scr' + 'ipt\x3E' );
     263</script>
     264<script type="importmap" id="wp-importmap">
    267265{"imports":{"@wordpress\/interactivity":"https:\/\/wordpress.org\/wp-includes\/js\/dist\/interactivity.min.js?ver=6.5-alpha-57545"}}
    268 //]]></script>
     266</script>
    269267<script type="module" src="https://wordpress.org/wp-content/plugins/gutenberg/build/interactivity/navigation.min.js?ver=17.6.3" id="@wordpress/block-library/navigation-js-module"/>
    270268<link rel="modulepreload" href="https://wordpress.org/wp-includes/js/dist/interactivity.min.js?ver=6.5-alpha-57545" id="@wordpress/interactivity-js-modulepreload"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""/>
Note: See TracChangeset for help on using the changeset viewer.