Add support for fallback icon themes. Similar to fallback template set.
authorstevetruckstuff <stevetruckstuff@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Mon, 9 Oct 2006 18:04:42 +0000 (18:04 +0000)
committerstevetruckstuff <stevetruckstuff@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Mon, 9 Oct 2006 18:04:42 +0000 (18:04 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@11883 7612ce4b-ef26-0410-bec9-ea0150e637f0

config/conf.pl
config/config_default.php
include/load_prefs.php
templates/util_global.php

index 732c4aa..0a0a253 100755 (executable)
@@ -2744,14 +2744,22 @@ sub command_userThemes {
 sub command_iconSets {
     print "\nDefine the icon themes that you wish to use.  If you have added\n";
     print "a theme of your own, just follow the instructions (?) about\n";
-    print "how to add them.  You can also change the default theme.\n\n";
+    print "how to add them.  You can also change the default and fallback\n";
+    print "themes.  The default theme will be used when no icon theme is\n";
+    print "set by the user.  The fallback theme will be used if an icon\n";
+    print "cannot be found in the currently selected icon theme.\n\n";
     
     print "Available icon themes:\n\n";
 
     $count = 0;
     while ( $count <= $#icon_theme_name ) {
         if ( $count == $icon_theme_def ) {
-            print " *";
+            print " d";
+        } else {
+            print "  ";
+        }
+        if ( $count eq $icon_theme_fallback ) {
+            print "f ";
         } else {
             print "  ";
         }
@@ -2770,12 +2778,15 @@ sub command_iconSets {
         $count++;
     }
     
+    print "\n d = Default icon theme\n";
+    print " f = Fallback icon theme\n";
     print "\n";
     print ".------------------------------------.\n";
     print "| t             (detect icon themes) |\n";
     print "| +                 (add icon theme) |\n";
     print "| - N            (remove icon theme) |\n";
     print "| m N      (mark default icon theme) |\n";
+    print "| f N        (set fallback icon set) |\n";
     print "| l               (list icon themes) |\n";
     print "| d                           (done) |\n";
     print "`------------------------------------'\n";
@@ -2786,15 +2797,18 @@ sub command_iconSets {
     while ( $input ne "d" ) {
         if ( $input =~ /^\s*l\s*/i ) {
             $count = 0;
+            print "\n";
             while ( $count <= $#icon_theme_name ) {
-                if ( $count == $icon_theme_def ) {
-                    print " *";
-                } else {
-                    print "  ";
-                }
-                if ( $count < 10 ) {
-                    print " ";
-                }
+                       if ( $count == $icon_theme_def ) {
+                           print " d";
+                       } else {
+                           print "  ";
+                       }
+                       if ( $count eq $icon_theme_fallback ) {
+                           print "f ";
+                       } else {
+                           print "  ";
+                       }
                 $name       = $icon_theme_name[$count];
                 $num_spaces = 35 - length($name);
                 for ( $i = 0 ; $i < $num_spaces ; $i++ ) {
@@ -2806,6 +2820,8 @@ sub command_iconSets {
 
                 $count++;
             }
+                   print "\n d = Default icon theme\n";
+                   print " f = Fallback icon theme\n\n";
         } elsif ( $input =~ /^\s*m\s*[0-9]+/i ) {
             $old_def       = $icon_theme_def;
             $icon_theme_def = $input;
@@ -2814,6 +2830,14 @@ sub command_iconSets {
                 print "Cannot set default icon theme to $icon_theme_default.  That theme does not exist.\n";
                 $icon_theme_def = $old_def;
             }
+        } elsif ( $input =~ /^\s*f\s*[0-9]+/i ) {
+            $old_fb       = $icon_theme_fallback;
+            $icon_theme_fallback = $input;
+            $icon_theme_fallback =~ s/^\s*f\s*//;
+            if ( ( $icon_theme_fallback > $#icon_theme_name ) || ( $icon_theme_fallback < 0 ) ) {
+                print "Cannot set fallback icon theme to $icon_theme_fallback.  That theme does not exist.\n";
+                $icon_theme_fallback = $old_fb;
+            }
         } elsif ( $input =~ /^\s*\+/ ) {
             print "What is the name of this icon theme? ";
             $name = <STDIN>;
@@ -2834,6 +2858,8 @@ sub command_iconSets {
             }
             if ( $rem_num == $icon_theme_def ) {
                 print "You cannot remove the default icon theme!\n";
+            } elsif ( $rem_num == $icon_theme_fallback ) {
+                print "You cannot remove the fallback icon theme!\n";
             } else {
                 $count          = 0;
                 @new_theme_name = ();
@@ -2910,6 +2936,7 @@ sub command_iconSets {
             print "| +                 (add icon theme) |\n";
             print "| - N            (remove icon theme) |\n";
             print "| m N      (mark default icon theme) |\n";
+            print "| f N        (set fallback icon set) |\n";
             print "| l               (list icon themes) |\n";
             print "| d                           (done) |\n";
             print "`------------------------------------'\n";
@@ -4354,7 +4381,9 @@ sub save_data {
 
         if ( $icon_theme_def eq '' ) { $icon_theme_def = '0'; }
         print CF "\$icon_theme_def = $icon_theme_def;\n";
-
+        if ( $icon_theme_fallback eq '' ) { $icon_theme_fallback = '0'; }
+           print CF "\$icon_theme_fallback = $icon_theme_fallback;\n";
+           
         for ( $count = 0 ; $count <= $#icon_theme_name ; $count++ ) {
             $path = $icon_theme_path[$count];
             if ($path eq 'none' || $path eq 'template') {
index 56d73f4..5721587 100644 (file)
@@ -708,11 +708,15 @@ $use_icons = true;
  *    number to the array below and follow the pattern
  * 
  *    $icon_theme_default sets the theme that will be used by default.
+ *    $icon_theme_fallback specifies which theme will be used if an icon is 
+ *    not found in the selected theme
  * 
  * @global integer $icon_theme_def
+ * @global integer $icon_theme_fallback
  * @since 1.5.2
  */
-$icon_theme_def = 3;
+$icon_theme_def = 1;
+$icon_theme_fallback = 3;
 
 /**
  * Listing of installed icon themes
index 8b12b66..63187aa 100644 (file)
@@ -116,6 +116,7 @@ if (isset($chosen_theme) && $found_theme && (file_exists($chosen_theme))) {
 // user's icon theme, if using icons
 $icon_theme = getPref($data_dir, $username, 'icon_theme');
 $default_icon_theme = $icon_themes[$icon_theme_def]['PATH'];
+$fallback_icon_theme = $icon_themes[$icon_theme_fallback]['PATH'];
 $found_theme = false;
 
 // Make sure the chosen icon theme is a legitimate one.
@@ -137,6 +138,8 @@ if (!$found_theme) {
  *       set the icon theme to "None," no icons will be used.
  */
 $icon_theme_path = (!$use_icons || $icon_theme=='none') ? NULL : ($icon_theme == 'template' ? SM_PATH . Template::calculate_template_images_directory($sTemplateID) : $icon_theme);
+$default_icon_theme_path = (!$use_icons || $default_icon_theme=='none') ? NULL : ($default_icon_theme == 'template' ? SM_PATH . Template::calculate_template_images_directory($sTemplateID) : $default_icon_theme);
+$fallback_icon_theme_path = (!$use_icons || $fallback_icon_theme=='none') ? NULL : ($fallback_icon_theme == 'template' ? SM_PATH . Template::calculate_template_images_directory($sTemplateID) : $fallback_icon_theme);
 
 // show (or not) flag and unflag buttons on mailbox list screen
 $show_flag_buttons = getPref($data_dir, $username, 'show_flag_buttons', SMPREF_ON );
index 9ef9e04..56c832c 100644 (file)
@@ -61,7 +61,7 @@ function getIcon($icon_theme_path, $icon_name, $text_icon, $alt_text='', $w=NULL
  * @since 1.5.2
  */
 function getIconPath ($icon_theme_path, $icon_name) {
-    global $default_icon_theme;
+    global $fallback_icon_theme_path;
 
     if (is_null($icon_theme_path))
         return NULL;
@@ -70,9 +70,9 @@ function getIconPath ($icon_theme_path, $icon_name) {
     if (is_file($icon_theme_path . $icon_name)) {
         return $icon_theme_path . $icon_name;
         
-    // Icon not found, check for the admin-specified default
-    } elseif (!is_null($default_icon_theme) && is_file($default_icon_theme . $icon_name)) {
-        return $default_icon_theme . $icon_name;
+    // Icon not found, check for the admin-specified fallback
+    } elseif (!is_null($fallback_icon_theme_path) && is_file($fallback_icon_theme_path . $icon_name)) {
+        return $fallback_icon_theme_path . $icon_name;
         
     // Icon not found, return the SQM default icon
     } elseif (is_file(SM_PATH . 'images/themes/default/'.$icon_name)) {