Add StyleCompiler::convertToRtl()
authorTim Düsterhus <duesterhus@woltlab.com>
Wed, 3 Feb 2021 13:17:50 +0000 (14:17 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Wed, 3 Feb 2021 15:00:43 +0000 (16:00 +0100)
wcfsetup/install/files/lib/system/style/StyleCompiler.class.php

index 366922e3c8a060a4647af18fd31898c3fcee8d76..8c42a51c970e5e9033ef198e5621ea67485b0a19 100644 (file)
@@ -556,21 +556,35 @@ EOT;
         \file_put_contents($filename . '.css', $content);
         FileUtil::makeWritable($filename . '.css');
 
-        // convert stylesheet to RTL
-        $content = StyleUtil::convertCSSToRTL($content);
-
-        // force code boxes to be always LTR
-        $content .= "\n/* RTL fix for code boxes */\n";
-        $content .= ".redactor-layer pre { direction: ltr; text-align: left; }\n";
-        $content .= ".codeBoxCode { direction: ltr; } \n";
-        $content .= ".codeBox .codeBoxCode { padding-left: 7ch; padding-right: 0; } \n";
-        $content .= ".codeBox .codeBoxCode > code .codeBoxLine > a { margin-left: -7ch; margin-right: 0; text-align: right; } \n";
+        $content = $this->convertToRtl($content);
 
         // write stylesheet for RTL
         \file_put_contents($filename . '-rtl.css', $content);
         FileUtil::makeWritable($filename . '-rtl.css');
     }
 
+    /**
+     * Converts the given CSS into the RTL variant.
+     *
+     * This method differs from StyleUtil::convertCSSToRTL() in that it includes some fixes
+     * for elements that need to remain LTR.
+     *
+     * @see StyleUtil::convertCSSToRTL()
+     */
+    private function convertToRtl(string $css): string
+    {
+        $css = StyleUtil::convertCSSToRTL($css);
+
+        // force code boxes to be always LTR
+        $css .= "\n/* RTL fix for code boxes */\n";
+        $css .= ".redactor-layer pre { direction: ltr; text-align: left; }\n";
+        $css .= ".codeBoxCode { direction: ltr; } \n";
+        $css .= ".codeBox .codeBoxCode { padding-left: 7ch; padding-right: 0; } \n";
+        $css .= ".codeBox .codeBoxCode > code .codeBoxLine > a { margin-left: -7ch; margin-right: 0; text-align: right; } \n";
+
+        return $css;
+    }
+
     /**
      * Returns the name of the CSS file for a specific style.
      *