mark: A photo of Mark kneeling on top of the Taal Volcano in the Philippines. It was a long hike. (Default)
Mark Smith ([staff profile] mark) wrote in [site community profile] changelog2009-09-13 04:44 am

[dw-free] Brainstorm thread for how to handle different problems with printing stylesheets

[commit: http://hg.dwscoalition.org/dw-free/rev/0f9e42f655bc]

http://bugs.dwscoalition.org/show_bug.cgi?id=1611

Change the way default stylesheets are printed. Gives more flexibility in
when to print the ones from the layout, when to print from theme, etc.

Patch by [personal profile] afuna.

Files modified:
  • bin/upgrading/s2layers/core2.s2
--------------------------------------------------------------------------------
diff -r 8a852af3fbac -r 0f9e42f655bc bin/upgrading/s2layers/core2.s2
--- a/bin/upgrading/s2layers/core2.s2	Sun Sep 13 04:39:19 2009 +0000
+++ b/bin/upgrading/s2layers/core2.s2	Sun Sep 13 04:44:38 2009 +0000
@@ -596,8 +596,11 @@ class Page
     function print_stylesheets
     "Prints all defined stylesheets, including default and user-defined ones.";
 
+    function print_default_stylesheets
+    "Prints stylesheets defined by the layout, including any additional CSS defined by the theme.";
+
     function print_default_stylesheet
-    "Prints the default stylesheet.";
+    "Prints the layout's base default stylesheet.";
 
     function builtin print_trusted(string key)
     "Prints a trusted string by key.";
@@ -1802,7 +1805,7 @@ set custom_colors_template = "";
 ##===============================
 
 property bool external_stylesheet {
-    des = "Use linked stylesheet";
+    des = "Use links for external stylesheets";
     note = "If true, a stylesheet link element will point to a file containing the layout's CSS data.";
     noui = 1;
 }
@@ -1813,7 +1816,7 @@ property bool include_default_stylesheet
 }
 
 property string linked_stylesheet {
-    des = "Use an external stylesheet";
+    des = "Custom stylesheet URL";
     note = "If you have a custom external stylesheet that you'd like to use, enter its URL here.";
 }
 
@@ -2843,21 +2846,27 @@ function Page::print_default_stylesheet(
     """</style>\n""";
 }
 
+function Page::print_default_stylesheets() 
+"Contains the layout and theme default stylesheets. Themes and child layouts may use this to disable the printing of the layout's base default stylesheet, or to add theme-specific CSS bits. May be overriden on a per-layout/theme basis"
+{
+    $this->print_default_stylesheet();
+    if ($*external_stylesheet) {
+        println safe """<link rel="stylesheet" href="$.stylesheet_url" type="text/css" />""";
+    }
+    else {
+        println """<style type="text/css">""";
+        start_css();
+        print_stylesheet();
+        end_css();
+        println """</style>""";
+    }   
+}
+
 function Page::print_stylesheets()
 "If you have specific CSS to code onto all themes using this layout, override print_default_stylesheet.  If you have specific CSS to code into this theme, set the external_stylesheet property or override the print_stylesheet function. An end user can choose to link to an off-site stylesheet using the linked_stylesheet property and/or use the custom_css property.  Overriding this function is NOT RECOMMENDED. Overriding this function could prevent sitewide improvements to styles, accessibility, or other functionality from operating in your layout."
 {
     if ($*include_default_stylesheet) {
-        $this->print_default_stylesheet();
-        if ($*external_stylesheet) {
-            println safe """<link rel="stylesheet" href="$.stylesheet_url" type="text/css" />""";
-        }
-        else {
-            println """<style type="text/css">""";
-            start_css();
-            print_stylesheet();
-            end_css();
-            println """</style>""";
-        }
+        $this->print_default_stylesheets();
     }
 
     if ($*linked_stylesheet != "") {
--------------------------------------------------------------------------------