X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fstyle.php;h=341d89ffc722ff37b1578a85b487391f6670ef78;hb=4b5049de2fa934c45599d6e4c74bf2bbee10d34d;hp=2a11a090897b82dab46c1c1a33e84eabd2f62cf6;hpb=d3c2ff0a43b2880b0442b990803c75af9d151492;p=squirrelmail.git diff --git a/src/style.php b/src/style.php index 2a11a090..341d89ff 100644 --- a/src/style.php +++ b/src/style.php @@ -1,48 +1,48 @@ *
  • themeid - string, sets theme file from themes/*.php + *
  • templateid - string, sets template set ID *
  • fontset - string, sets selected set of fonts from $fontsets array. *
  • fontsize - integer, sets selected font size + *
  • dir - string, sets text direction variables. Possible values 'rtl' or 'ltr' * - * @copyright © 2005 The SquirrelMail Project Team + * @copyright © 2005-2007 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ * @package squirrelmail */ -/** @ignore */ -define('SM_PATH','../'); - -/* SquirrelMail required files. */ -require_once(SM_PATH . 'functions/global.php'); -require_once(SM_PATH . 'functions/strings.php'); -require_once(SM_PATH . 'config/config.php'); - -/* temp setting containing list of font styles. Should go to config.php */ -$fontsets=array(); -$fontsets['sans']['NAME']='Sans'; -$fontsets['sans']['STYLE']='helvetica,arial,sans-serif'; -$fontsets['serif']['NAME']='Serif'; -$fontsets['serif']['STYLE']='serif'; -$fontsets['comicsans']['NAME']='Comic Sans'; -$fontsets['comicsans']['STYLE']='comic sans ms,sans-serif'; -$fontsets['vera']['NAME']='Vera'; -$fontsets['vera']['STYLE']='bitstream vera sans,verdana,sans-serif'; -$fontsets['tahoma']['NAME']='Tahoma'; -$fontsets['tahoma']['STYLE']='tahoma,sans-serif'; - -/* template init */ -/** start block copy from right_main.php */ -include_once(SM_PATH . 'class/template/template.class.php'); -$sTplDir = SM_PATH . 'templates/default/'; -$oTemplate = new Template($sTplDir); -/** end block copy */ +/** + * Set the location in order to skip unneeded validation and other includes + * in the SquirrelMail initialisation file. + */ +$sInitLocation = 'style'; + +/** + * Include the SquirrelMail initialization file. + */ +require('../include/init.php'); + +/* safety check for older config.php */ +if (!isset($fontsets) || !is_array($fontsets)) { + $fontsets=array(); +} + +/** + * The following code should no longer be neccesary, but it will remain for the + * time being, just in case. + * + * TODO: Remove if no longer needed. + **/ /* set default colors in case color theme is not full */ $color = array(); $color[0] = '#dcdcdc'; // (light gray) TitleBar @@ -63,20 +63,9 @@ $color[14] = '#ff0000'; // (red) Color for quoted text -- >> 2 or mo $color[15] = '#002266'; // (dark blue) Unselectable folders $color[16] = '#ff9933'; // (orange) Highlight color -/** get theme from GET */ -if (sqgetGlobalVar('themeid',$themeid,SQ_GET) && - file_exists(SM_PATH . 'themes/'.basename($themeid,'.php').'.php')) { - include_once(SM_PATH . 'themes/'.basename($themeid,'.php').'.php'); -} elseif (file_exists($theme[$theme_default]['PATH'])) { - include_once($theme[$theme_default]['PATH']); -} - -/**/ -$oTemplate->assign('color', $color); - /** * set color constants in order to use simple names instead of color array - * 0 - SQM_TEXT_DISABLED, SQM_TITLE_BACKGROUND, SQM_BUTTON_BACKGROUND_DISABLED, + * 0 - SQM_TEXT_DISABLED, SQM_TITLE_BACKGROUND, SQM_BUTTON_BACKGROUND_DISABLED, * SQM_ROW_BACKGROUND_1 * 1 - * 2 - SQM_ERROR_TEXT @@ -85,8 +74,8 @@ $oTemplate->assign('color', $color); * 5 - SQM_ROW_BACKGROUND_HIGHLIGHT, SQM_COLUMN_HEADER_BACKGROUND * 6 - SQM_TEXT_STANDARD_LEFT * 7 - SQM_TITLE_TEXT, SQM_BLOCK_TITLE_TEXT - * 8 - SQM_TEXT_STANDARD, SQM_BUTTON_TEXT, SQM_BLOCK_TEXT, SQM_ROW_TEXT_1, - * SQM_ROW_TEXT_2, SQM_ROW_TEXT_HIGHLIGHT, SQM_ROW_TEXT_SELECTED, + * 8 - SQM_TEXT_STANDARD, SQM_BUTTON_TEXT, SQM_BLOCK_TEXT, SQM_ROW_TEXT_1, + * SQM_ROW_TEXT_2, SQM_ROW_TEXT_HIGHLIGHT, SQM_ROW_TEXT_SELECTED, * SQM_COLUMN_HEADER_TEXT * 9 - SQM_BUTTON_BACKGROUND * 10 - SQM_BLOCK_TITLE @@ -139,23 +128,97 @@ define('SQM_MESSAGE_QUOTE_2',$color[14]); define('SQM_ERROR_TEXT',$color[2]); +define('SQM_ALIGN_LEFT', $align['left']); +define('SQM_ALIGN_RIGHT', $align['right']); + +// END TODO + if (sqgetGlobalVar('fontset',$fontset,SQ_GET) && isset($fontsets[$fontset])) { - $fontfamily=$fontsets[$fontset]['STYLE']; + $fontfamily=$fontsets[$fontset]; } else { $fontfamily=''; } -$oTemplate->assign('fontfamily', $fontfamily); if (! sqgetGlobalVar('fontsize',$fontsize,SQ_GET)) { $fontsize = 0; } else { $fontsize = (int) $fontsize; } -$oTemplate->assign('fontsize', $fontsize); -header('Content-Type: text/css'); +$oTemplate->header('Content-Type: text/css'); +/** + * GOTCHA #1: When sending the headers for caching, we must send Expires, + * Last-Modified, Pragma, and Cache-Control headers. If we don't PHP + * will makeup values that will break the cacheing. + * + * GOTCHA #2: If the current template does not contain a template named + * stylesheet.tpl, this cacheing will break because filemtime() won't + * work. This is a problem e.g. with the default_advanced template + * that inherits CSS properties from the default template but + * doesn't contain stylesheet.tpl itself. +IDEA: So ask the Template class object to return the mtime or better yet, the full file path (at least from SM_PATH) by using $oTemplate->get_template_file_path(stylesheet.tpl) but this is still a problem if the default template also does not have such a file (in which case, we fall back to SM's css/deafult css file (so in that case, go get that file's mtime!) + * Possibly naive suggestion - template can define its own default + * template name + * + * GOTCHA #3: If the user changes user prefs for things like font size then + * the mtime should be updated to the time of that change, and not + * that of the stylesheet.tpl file. IDEA: can this be a value kept + * in user prefs (always compare to actual file mtime before sending + * to the browser) + * + * Comment re gotcha #3: If we only define basic font prefs here, we really + * only need to refresh the cache if one of the font prefs changes. + * Possibly some type of "force nocache flag could be set if a font pref is + * changed? + * + * Response: Perhaps, if that can be implemented great, but I think the + * user prefs solution would definitely work: catch the font setting change + * in a custom save() routine from user prefs and away we go. + * + * TODO: Fix this. :) + */ -$oTemplate->display('stylesheet.tpl'); +if ( $lastmod = @filemtime(SM_PATH . $oTemplate->get_template_file_directory() + . 'css/stylesheet.tpl') ) { + $gmlastmod = gmdate('D, d M Y H:i:s', $lastmod) . ' GMT'; + $expires = gmdate('D, d M Y H:i:s', strtotime('+1 week')) . ' GMT'; + header('Last-Modified: ' . $gmlastmod); + header('Expires: '. $expires); + header('Pragma: '); + header('Cache-Control: public, must-revalidate'); +} +// Steve, why did you remove this? Is it irrelevant now? If so, let's +// remove the rest of the references to it here (note that it is being +// used above in the filetime() statement) and elsewhere +// $oTemplate->display('css/stylesheet.tpl'); + +/** + * Additional styles are now handled by adding stylesheets to + * templates/