From 341fd984f58e3a75ea11b8b14d5f871f2034d87e Mon Sep 17 00:00:00 2001 From: stevetruckstuff Date: Mon, 9 Oct 2006 18:04:42 +0000 Subject: [PATCH] Add support for fallback icon themes. Similar to fallback template set. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@11883 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- config/conf.pl | 51 ++++++++++++++++++++++++++++++--------- config/config_default.php | 6 ++++- include/load_prefs.php | 3 +++ templates/util_global.php | 8 +++--- 4 files changed, 52 insertions(+), 16 deletions(-) diff --git a/config/conf.pl b/config/conf.pl index 732c4aae..0a0a2539 100755 --- a/config/conf.pl +++ b/config/conf.pl @@ -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 = ; @@ -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') { diff --git a/config/config_default.php b/config/config_default.php index 56d73f49..57215877 100644 --- a/config/config_default.php +++ b/config/config_default.php @@ -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 diff --git a/include/load_prefs.php b/include/load_prefs.php index 8b12b66b..63187aa8 100644 --- a/include/load_prefs.php +++ b/include/load_prefs.php @@ -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 ); diff --git a/templates/util_global.php b/templates/util_global.php index 9ef9e040..56c832c2 100644 --- a/templates/util_global.php +++ b/templates/util_global.php @@ -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)) { -- 2.25.1