Strict type check prevents old config files from breaking everything (per new changes...
[squirrelmail.git] / functions / page_header.php
index f0d129b2c151373c5968eb93f739fb969eb9edde..e6a6cf3d8c70d34c391ba61ba9ec269a3a95605e 100644 (file)
@@ -32,8 +32,9 @@ function displayHtmlHeader( $title = 'SquirrelMail', $xtra = '', $do_hook = TRUE
     if ( !sqgetGlobalVar('base_uri', $base_uri, SQ_SESSION) ) {
         global $base_uri;
     }
-    global $theme_css, $custom_css, $pageheader_sent, $theme, $theme_default, $text_direction,
-        $default_fontset, $chosen_fontset, $default_fontsize, $chosen_fontsize, $chosen_theme;
+    global $custom_css, $pageheader_sent, $theme, $theme_default, $text_direction,
+        $default_fontset, $chosen_fontset, $default_fontsize, $chosen_fontsize, 
+        $chosen_theme, $chosen_theme_path, $user_themes, $user_theme_default;
 
     /* add no cache headers here */
 //FIXME: should change all header() calls in SM core to use $oTemplate->header()!!
@@ -49,27 +50,62 @@ function displayHtmlHeader( $title = 'SquirrelMail', $xtra = '', $do_hook = TRUE
 
     $used_fontset = (!empty($chosen_fontset) ? $chosen_fontset : $default_fontset);
     $used_fontsize = (!empty($chosen_fontsize) ? $chosen_fontsize : $default_fontsize);
-    $used_theme = basename((!empty($chosen_theme) ? $chosen_theme : $theme[$theme_default]['PATH']),'.php');
+    $used_theme = !isset($chosen_theme) && $user_theme_default != 'none' ?  'u_'.$user_themes[$user_theme_default]['PATH'] : $chosen_theme_path;
+    
+    /**
+     * Stylesheets are loaded in the following order:
+     *    1) All stylesheets provided by the template.  Normally, these are
+     *       stylsheets in templates/<template>/css/.  This is accomplished by calling
+     *       $oTemplate->fetch_standard_stylesheet_links().
+     *    2) An optional user-defined stylesheet.  This is set in the Display
+     *       Preferences.
+     *    3) src/style.php which sets some basic font prefs.
+     *    4) If we are dealing with an RTL language, we load rtl.css from the
+     *       template set.
+     */
 
+    // 1. Stylesheets from the template.
     $header_tags .= $oTemplate->fetch_standard_stylesheet_links();
+
     $aUserStyles = array();
-//FIXME: remove this!!
-    // load custom style sheet (deprecated)
-    if ( ! empty($theme_css) ) {
-        $aUserStyles[] = $theme_css;
-    }
+
+    // 2. Option user-defined stylesheet from preferences.
 // FIXME: the following user pref ("sUserStyle"; rename as necessary) will have to be populated by the display prefs screen from a widget similar to the color themes widget (which it replaces) where its values should be full relative paths (from SM_PATH) to the selected css "themes" (either in template css/alternates dir or SM_PATH/css/alternates dir)
 // FIXME: uhhh, getPref() is not available yet here.  (at least on login page) Ugh.  Nor has load_prefs been included yet -- how do we fix this?
 //    $aUserStyles[] = getPref($data_dir, $username, 'sUserStyle', '');
-    $aUserStyles[] = $base_uri .'src/style.php'
-                   . '?themeid='.$used_theme
-                   . '&amp;templateid='.$sTemplateID
+// Steve, can you please document what u_ means?  Will it work with the
+// new template inheritance system and auto-detection of alternate sheets?
+/**
+ * Stylesheets beginning with a "u_" == user provided stylesheets, e.g. those
+ * in SM_PATH/css/.  Template provided stylesheets (TEMPLATE_DIR/css/alternatives/)
+ * should begin with 't_'.  This was the initial path I took to get it working 
+ * since I wasn't sure what mods to the Template class would be used to handle
+ * template-provided alt stylesheets.
+ * 
+ * TODO: Re-evaluate this naming convetion.
+ */
+#    var_dump($used_theme);
+    if (!empty($used_theme)) {
+        if (substr($used_theme, 0, 2) == 'u_') {
+            $aUserStyles[] = substr($used_theme, 2) .'/default.css';
+        } elseif (substr($used_theme, 0, 2) == 't_') {
+            $aUserStyles[] = SM_PATH . $oTemplate->get_template_file_directory().'css/alternates/'.substr($used_theme, 2);
+#            $aUserStyles[] = substr($used_theme, 2);
+        }
+    }
+
+    // 3. src/style.php
+    $aUserStyles[] = $base_uri .'src/style.php?'
                    . (!empty($used_fontset) ? '&amp;fontset='.$used_fontset : '')
-                   . (!empty($used_fontsize) ? '&amp;fontsize='.$used_fontsize : '')
-                   . (!empty($text_direction) ? '&amp;dir='.$text_direction : '');
+                   . (!empty($used_fontsize) ? '&amp;fontsize='.$used_fontsize : '');
+
+    // 3.1.  Load the stylesheets we have already  
     $header_tags .= $oTemplate->fetch_external_stylesheet_links($aUserStyles);
-//FIXME: only call the next method if language is right-to-left!
-    $header_tags .= $oTemplate->fetch_right_to_left_stylesheet_link();
+
+    // 4. Optional rtl.css stylesheet
+    if ($text_direction == 'rtl') {
+        $header_tags .= $oTemplate->fetch_right_to_left_stylesheet_link();
+    }
 
     if ($squirrelmail_language == 'ja_JP') {
         /*