Add preload tags to the generated HTML
authorTim Düsterhus <duesterhus@woltlab.com>
Thu, 25 Feb 2021 15:49:51 +0000 (16:49 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Thu, 25 Feb 2021 15:49:51 +0000 (16:49 +0100)
wcfsetup/install/files/lib/system/style/StyleHandler.class.php

index 58d0acb07eefe88d53c512868ac6edb3be79b05d..19fe7bef75d6698948ccdb21e27294e43aa3bd03 100644 (file)
@@ -139,6 +139,8 @@ class StyleHandler extends SingletonFactory
      */
     public function getStylesheet($isACP = false)
     {
+        $preload = '';
+
         if ($isACP) {
             // ACP
             $filename = 'acp/style/style' . (WCF::getLanguage()->get('wcf.global.pageDirection') == 'rtl' ? '-rtl' : '') . '.css';
@@ -151,9 +153,16 @@ class StyleHandler extends SingletonFactory
             if (!\file_exists(WCF_DIR . $filename)) {
                 StyleCompiler::getInstance()->compile($this->getStyle()->getDecoratedObject());
             }
+
+            if (\is_readable(WCF_DIR . 'style/style-' . $this->getStyle()->styleID . '-preload.json')) {
+                $decoded = JSON::decode(\file_get_contents(WCF_DIR . 'style/style-' . $this->getStyle()->styleID . '-preload.json'));
+                if (isset($decoded['html']) && \is_array($decoded['html'])) {
+                    $preload = \implode('', $decoded['html']);
+                }
+            }
         }
 
-        return '<link rel="stylesheet" type="text/css" href="' . WCF::getPath() . $filename . '?m=' . \filemtime(WCF_DIR . $filename) . '">';
+        return '<link rel="stylesheet" type="text/css" href="' . WCF::getPath() . $filename . '?m=' . \filemtime(WCF_DIR . $filename) . '">' . $preload;
     }
 
     /**