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()!!
$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
- . '&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) ? '&fontset='.$used_fontset : '')
- . (!empty($used_fontsize) ? '&fontsize='.$used_fontsize : '')
- . (!empty($text_direction) ? '&dir='.$text_direction : '');
+ . (!empty($used_fontsize) ? '&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') {
/*