fsf changes, meant to be rebased on upstream
[squirrelmail.git] / functions / page_header.php
index 2c6719cfcf65a22037cc74735a165bbc5b07024c..339035ea55f846458cae61d61964f3530794d91d 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Prints the page header (duh)
  *
- * @copyright 1999-2014 The SquirrelMail Project Team
+ * @copyright 1999-2022 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
@@ -37,7 +37,8 @@ function displayHtmlHeader( $title = 'SquirrelMail', $xtra = '', $do_hook = TRUE
     }
     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;
+        $chosen_theme, $chosen_theme_path, $user_themes, $user_theme_default,
+        $head_tag_extra;
 
     // add no cache headers here
     //
@@ -79,11 +80,28 @@ function displayHtmlHeader( $title = 'SquirrelMail', $xtra = '', $do_hook = TRUE
     $oTemplate->assign('frames', $frames);
     $oTemplate->assign('lang', $squirrelmail_language);
 
-    $header_tags .= "<meta name=\"robots\" content=\"noindex,nofollow\" />\n";
+    $header_tags .= "<meta name=\"robots\" content=\"noindex,nofollow\" />\n"
+
+    // For adding a favicon or anything else that should be inserted in *ALL* <head> for *ALL* documents,
+    // define $head_tag_extra in config/config_local.php
+    // The string "###SM BASEURI###" will be replaced with the base URI for this SquirrelMail installation.
+    // When not defined, a default is provided that displays the default favicon.ico.
+    // If you override this and still want to use the default favicon.ico, you'll have to include the following
+    // following in your $head_tag_extra string:
+    // $head_tag_extra = '<link rel="shortcut icon" href="###SM BASEURI###favicon.ico" />...<YOUR CONTENT HERE>...';
+    //
+    . (empty($head_tag_extra) ? '<link rel="shortcut icon" href="' . sqm_baseuri() . 'favicon.ico" />'
+    : str_replace('###SM BASEURI###', sqm_baseuri(), $head_tag_extra));
 
     $used_fontset = (!empty($chosen_fontset) ? $chosen_fontset : $default_fontset);
     $used_fontsize = (!empty($chosen_fontsize) ? $chosen_fontsize : $default_fontsize);
-    $used_theme = !isset($chosen_theme) && $user_theme_default != 'none' && is_dir($chosen_theme) && is_readable($chosen_theme)?  $user_themes[$user_theme_default]['PATH'].'/default.css' : $chosen_theme_path;
+    if (!empty($chosen_theme) && is_dir($chosen_theme) && is_readable($chosen_theme))
+        $used_theme = $chosen_theme_path;
+    else if ($user_theme_default != 'none')
+        $used_theme = $user_themes[$user_theme_default]['PATH'];
+    else
+        $used_theme = 'none';
+
     
     /**
      * Stylesheets are loaded in the following order:
@@ -103,14 +121,13 @@ function displayHtmlHeader( $title = 'SquirrelMail', $xtra = '', $do_hook = TRUE
     $aUserStyles = array();
 
     // 2. Option user-defined stylesheet from preferences.
-    if (!empty($used_theme) && $used_theme != 'none') {
+    if ($used_theme != 'none') {
+//FIXME: rid ourselves of "none" strings!  I didn't do it here because I think the problem is that the theme itself should never be "none" (? well, what else would it be?  if "none" theme is actually OK, then is there a constant to use below instead of a hard-coded string?)
         /**
          * All styles (except "none" - ugh) just point to a directory,
          * so we need to include all .css files in that directory.
          */
-//FIXME: rid ourselves of "none" strings!  I didn't do it here because I think the problem is that the theme itself should never be "none" (? well, what else would it be?  if "none" theme is actually OK, then is there a constant to use below in stead of a hard-coded string?)
-        $styles = $used_theme == 'none' ? array()
-                : list_files($used_theme, '.css');
+        $styles = list_files($used_theme, '.css');
         foreach ($styles as $sheet) { 
             $aUserStyles[] = $used_theme .'/'.$sheet;
         }
@@ -164,6 +181,13 @@ function displayHtmlHeader( $title = 'SquirrelMail', $xtra = '', $do_hook = TRUE
         if (!empty($output)) trigger_error('A plugin on the "generic_header" hook has attempted to output directly to the browser', E_USER_ERROR);
     }
 
+    // Add message subject to page title (should only have an effect when loaded in its own browser window/tab)
+    // TODO: For search page, could add " - Search: $what" or something like that
+    global $message;
+    if (!empty($message) && !empty($message->rfc822_header) && !empty($message->rfc822_header->subject))
+        // decodeHeader() should already encode the output, so no sm_encode_html_special_chars()
+        $title .= ' - ' . decodeHeader($message->rfc822_header->subject);
+
     $header_tags .= $xtra;
     $oTemplate->assign('page_title', $title);