From 82351c82c9251726ce0f999708d06b3460db3714 Mon Sep 17 00:00:00 2001 From: stevetruckstuff Date: Mon, 2 Oct 2006 18:49:00 +0000 Subject: [PATCH] Move management of user themes (SM_PATH/css/) to conf.pl. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@11811 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- config/conf.pl | 136 +++++++++++++++-------------- config/config_default.php | 167 ++---------------------------------- include/options/display.php | 55 ++++++------ 3 files changed, 103 insertions(+), 255 deletions(-) diff --git a/config/conf.pl b/config/conf.pl index 9dec82ff..93d8c243 100755 --- a/config/conf.pl +++ b/config/conf.pl @@ -175,19 +175,19 @@ while ( $line = ) { $options[1] =~ s/\\'/'/g; $options[1] =~ s/\\\\/\\/g; - if ( $options[0] =~ /^theme\[[0-9]+\]\[['"]PATH['"]\]/ ) { + if ( $options[0] =~ /^user_themes\[[0-9]+\]\[['"]PATH['"]\]/ ) { $sub = $options[0]; $sub =~ s/\]\[['"]PATH['"]\]//; $sub =~ s/.*\[//; - if ( -e "../themes" ) { - $options[1] =~ s/^\.\.\/config/\.\.\/themes/; + if ( -e "../css/" ) { + $options[1] =~ s/^\.\.\/config/\.\.\/css/; } - $theme_path[$sub] = &change_to_rel_path($options[1]); - } elsif ( $options[0] =~ /^theme\[[0-9]+\]\[['"]NAME['"]\]/ ) { + $user_theme_path[$sub] = &change_to_rel_path($options[1]); + } elsif ( $options[0] =~ /^user_themes\[[0-9]+\]\[['"]NAME['"]\]/ ) { $sub = $options[0]; $sub =~ s/\]\[['"]NAME['"]\]//; $sub =~ s/.*\[//; - $theme_name[$sub] = $options[1]; + $user_theme_name[$sub] = $options[1]; } elsif ( $options[0] =~ /^aTemplateSet\[[0-9]+\]\[['"]ID['"]\]/ ) { $sub = $options[0]; $sub =~ s/\]\[['"]ID['"]\]//; @@ -330,7 +330,7 @@ while ( $line = ) { $ldap_writeable[$sub] = $writeable; $ldap_search_tree[$sub] = $search_tree; $ldap_starttls[$sub] = $starttls; - } elsif ( $options[0] =~ /^(data_dir|attachment_dir|org_logo|signout_page|icon_theme_def)$/ ) { + } elsif ( $options[0] =~ /^(data_dir|attachment_dir|user_theme_default|org_logo|signout_page|icon_theme_def)$/ ) { ${ $options[0] } = &change_to_rel_path($options[1]); } else { ${ $options[0] } = $options[1]; @@ -625,7 +625,7 @@ while ( ( $command ne "q" ) && ( $command ne "Q" ) && ( $command ne ":q" ) ) { print "3. Default Icon Set : $WHT$icon_theme_def$NRM\n"; print "4. Default font size : $WHT$default_fontsize$NRM\n"; print "5. Modify available font sets\n"; -# print "4. Change Themes\n"; + print "6. Modify available user themes\n"; print "\n"; print "R Return to Main Menu\n"; @@ -852,6 +852,7 @@ while ( ( $command ne "q" ) && ( $command ne "Q" ) && ( $command ne ":q" ) ) { elsif ( $command == 3 ) { $icon_theme_def = commandB7(); } elsif ( $command == 4 ) { $default_fontsize = command_default_fontsize(); } elsif ( $command == 5 ) { command_fontsets(); } + elsif ( $command == 6 ) { command41(); } } elsif ( $menu == 6 ) { if ( $command == 1 ) { command61(); } elsif ( $command == 2 ) { command62(); } @@ -2535,17 +2536,17 @@ sub command_config_location_base { sub command41 { - print "\nDefine the themes that you wish to use. If you have added "; - print "a theme of your own, just follow the instructions (?) about how to add "; - print "them. You can also change the default theme.\n"; - print "[theme] command (?=help) > "; + print "\nDefine the user 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 "[user_theme] command (?=help) > "; $input = ; $input =~ s/[\r\n]//g; while ( $input ne "d" ) { if ( $input =~ /^\s*l\s*/i ) { $count = 0; - while ( $count <= $#theme_name ) { - if ( $count == $theme_default ) { + while ( $count <= $#user_theme_name ) { + if ( $count == $user_theme_default ) { print " *"; } else { print " "; @@ -2553,110 +2554,110 @@ sub command41 { if ( $count < 10 ) { print " "; } - $name = $theme_name[$count]; + $name = $user_theme_name[$count]; $num_spaces = 35 - length($name); for ( $i = 0 ; $i < $num_spaces ; $i++ ) { $name = $name . " "; } print " $count. $name"; - print "($theme_path[$count])\n"; + print "($user_theme_path[$count])\n"; $count++; } } elsif ( $input =~ /^\s*m\s*[0-9]+/i ) { - $old_def = $theme_default; - $theme_default = $input; - $theme_default =~ s/^\s*m\s*//; - if ( ( $theme_default > $#theme_name ) || ( $theme_default < 0 ) ) { - print "Cannot set default theme to $theme_default. That theme does not exist.\n"; - $theme_default = $old_def; + $old_def = $user_theme_default; + $user_theme_default = $input; + $user_theme_default =~ s/^\s*m\s*//; + if ( ( $user_theme_default > $#user_theme_name ) || ( $user_theme_default < 0 ) ) { + print "Cannot set default theme to $user_theme_default. That theme does not exist.\n"; + $user_theme_default = $old_def; } } elsif ( $input =~ /^\s*\+/ ) { - print "What is the name of this theme: "; + print "What is the name of this theme? "; $name = ; $name =~ s/[\r\n]//g; - $theme_name[ $#theme_name + 1 ] = $name; - print "Be sure to put ../themes/ before the filename.\n"; - print "What file is this stored in (ex: ../themes/default_theme.php): "; + $user_theme_name[ $#theme_name + 1 ] = $name; + print "Be sure to put ../css/ before the filename.\n"; + print "What file is this stored in (ex: ../css/my_theme/): "; $name = ; $name =~ s/[\r\n]//g; - $theme_path[ $#theme_path + 1 ] = $name; + $user_theme_path[ $#user_theme_path + 1 ] = $name; } elsif ( $input =~ /^\s*-\s*[0-9]?/ ) { if ( $input =~ /[0-9]+\s*$/ ) { $rem_num = $input; $rem_num =~ s/^\s*-\s*//g; $rem_num =~ s/\s*$//; } else { - $rem_num = $#theme_name; + $rem_num = $#user_theme_name; } - if ( $rem_num == $theme_default ) { + if ( $rem_num == $user_theme_default ) { print "You cannot remove the default theme!\n"; } else { $count = 0; @new_theme_name = (); @new_theme_path = (); - while ( $count <= $#theme_name ) { + while ( $count <= $#user_theme_name ) { if ( $count != $rem_num ) { - @new_theme_name = ( @new_theme_name, $theme_name[$count] ); - @new_theme_path = ( @new_theme_path, $theme_path[$count] ); + @new_theme_name = ( @new_theme_name, $user_theme_name[$count] ); + @new_theme_path = ( @new_theme_path, $user_theme_path[$count] ); } $count++; } - @theme_name = @new_theme_name; - @theme_path = @new_theme_path; - if ( $theme_default > $rem_num ) { - $theme_default--; + @user_theme_name = @new_theme_name; + @user_theme_path = @new_theme_path; + if ( $user_theme_default > $rem_num ) { + $user_theme_default--; } } } elsif ( $input =~ /^\s*t\s*/i ) { print "\nStarting detection...\n\n"; - opendir( DIR, "../themes" ); - @files = grep { /\.php$/i } readdir(DIR); + opendir( DIR, "../css" ); + @files = readdir(DIR); $cnt = 0; while ( $cnt <= $#files ) { - $filename = "../themes/" . $files[$cnt]; - if ( $filename ne "../themes/index.php" ) { + $filename = "../css/" . $files[$cnt] .'/'; + if ( $filename ne "../css/rtl.css" && -e $filename . "default.css" ) { $found = 0; - for ( $x = 0 ; $x <= $#theme_path ; $x++ ) { - if ( $theme_path[$x] eq $filename ) { + for ( $x = 0 ; $x <= $#user_theme_path ; $x++ ) { + if ( $user_theme_path[$x] eq $filename ) { $found = 1; } } if ( $found != 1 ) { - print "** Found theme: $filename\n"; + print "** Found user theme: $filename\n"; print " What is its name? "; $nm = ; $nm =~ s/[\n\r]//g; - $theme_name[ $#theme_name + 1 ] = $nm; - $theme_path[ $#theme_path + 1 ] = $filename; + $user_theme_name[ $#user_theme_name + 1 ] = $nm; + $user_theme_path[ $#user_theme_path + 1 ] = $filename; } } $cnt++; } print "\n"; - for ( $cnt = 0 ; $cnt <= $#theme_path ; $cnt++ ) { - $filename = $theme_path[$cnt]; - if ( !( -e $filename ) ) { + for ( $cnt = 0 ; $cnt <= $#user_theme_path ; $cnt++ ) { + $filename = $user_theme_path[$cnt]; + if ( $filename != 'none' && !( -e $filename ."/default.css" ) ) { print " Removing $filename (file not found)\n"; $offset = 0; - @new_theme_name = (); - @new_theme_path = (); - for ( $x = 0 ; $x < $#theme_path ; $x++ ) { - if ( $theme_path[$x] eq $filename ) { + @new_user_theme_name = (); + @new_user_theme_path = (); + for ( $x = 0 ; $x < $#user_theme_path ; $x++ ) { + if ( $user_theme_path[$x] eq $filename ) { $offset = 1; } if ( $offset == 1 ) { - $new_theme_name[$x] = $theme_name[ $x + 1 ]; - $new_theme_path[$x] = $theme_path[ $x + 1 ]; + $new_user_theme_name[$x] = $user_theme_name[ $x + 1 ]; + $new_user_theme_path[$x] = $user_theme_path[ $x + 1 ]; } else { - $new_theme_name[$x] = $theme_name[$x]; - $new_theme_path[$x] = $theme_path[$x]; + $new_user_theme_name[$x] = $user_theme_name[$x]; + $new_user_theme_path[$x] = $user_theme_path[$x]; } } - @theme_name = @new_theme_name; - @theme_path = @new_theme_path; + @user_theme_name = @new_user_theme_name; + @user_theme_path = @new_user_theme_path; } } print "\nDetection complete!\n\n"; @@ -2672,7 +2673,7 @@ sub command41 { print "| d (done) |\n"; print "`-------------------------'\n"; } - print "[theme] command (?=help) > "; + print "[user_theme] command (?=help) > "; $input = ; $input =~ s/[\r\n]//g; } @@ -4102,16 +4103,21 @@ sub save_data { print CF "\n"; # strings - if ( $theme_default eq '' ) { $theme_default = '0'; } - print CF "\$theme_default = $theme_default;\n"; + if ( $user_theme_default eq '' ) { $user_theme_default = '0'; } + print CF "\$user_theme_default = $user_theme_default;\n"; - for ( $count = 0 ; $count <= $#theme_name ; $count++ ) { - print CF "\$theme[$count]['PATH'] = " . &change_to_SM_path($theme_path[$count]) . ";\n"; + for ( $count = 0 ; $count <= $#user_theme_name ; $count++ ) { + if ($user_theme_path[$count] eq 'none') { + $path = '\'none\''; + } else { + $path = &change_to_SM_path($user_theme_path[$count]); + } + print CF "\$user_themes[$count]['PATH'] = " . $path . ";\n"; # escape theme name so it can contain single quotes. - $esc_name = $theme_name[$count]; + $esc_name = $user_theme_name[$count]; $esc_name =~ s/\\/\\\\/g; $esc_name =~ s/'/\\'/g; - print CF "\$theme[$count]['NAME'] = '$esc_name';\n"; + print CF "\$user_themes[$count]['NAME'] = '$esc_name';\n"; } print CF "\n"; diff --git a/config/config_default.php b/config/config_default.php index c9e6f27b..b5c2e419 100644 --- a/config/config_default.php +++ b/config/config_default.php @@ -663,7 +663,7 @@ $session_name = 'SQMSESSID'; /** - * Themes + * User Themes * You can define your own theme and put it in this directory. * You must call it as the example below. You can name the theme * whatever you want. For an example of a theme, see the ones @@ -672,171 +672,18 @@ $session_name = 'SQMSESSID'; * To add a new theme to the options that users can choose from, just * add a new number to the array at the bottom, and follow the pattern. * - * $theme_default sets theme that will be used by default + * $user_theme_default sets theme that will be used by default * used by default. - * @global integer $theme_default + * @global integer $user_theme_default */ -$theme_default = 0; +$user_theme_default = 0; /** * Listing of installed themes - * @global array $theme + * @global array $user_themes */ -$theme[0]['PATH'] = SM_PATH . 'themes/default_theme.php'; -$theme[0]['NAME'] = 'Default'; - -$theme[1]['PATH'] = SM_PATH . 'themes/plain_blue_theme.php'; -$theme[1]['NAME'] = 'Plain Blue'; - -$theme[2]['PATH'] = SM_PATH . 'themes/sandstorm_theme.php'; -$theme[2]['NAME'] = 'Sand Storm'; - -$theme[3]['PATH'] = SM_PATH . 'themes/deepocean_theme.php'; -$theme[3]['NAME'] = 'Deep Ocean'; - -$theme[4]['PATH'] = SM_PATH . 'themes/slashdot_theme.php'; -$theme[4]['NAME'] = 'Slashdot'; - -$theme[5]['PATH'] = SM_PATH . 'themes/purple_theme.php'; -$theme[5]['NAME'] = 'Purple'; - -$theme[6]['PATH'] = SM_PATH . 'themes/forest_theme.php'; -$theme[6]['NAME'] = 'Forest'; - -$theme[7]['PATH'] = SM_PATH . 'themes/ice_theme.php'; -$theme[7]['NAME'] = 'Ice'; - -$theme[8]['PATH'] = SM_PATH . 'themes/seaspray_theme.php'; -$theme[8]['NAME'] = 'Sea Spray'; - -$theme[9]['PATH'] = SM_PATH . 'themes/bluesteel_theme.php'; -$theme[9]['NAME'] = 'Blue Steel'; - -$theme[10]['PATH'] = SM_PATH . 'themes/dark_grey_theme.php'; -$theme[10]['NAME'] = 'Dark Grey'; - -$theme[11]['PATH'] = SM_PATH . 'themes/high_contrast_theme.php'; -$theme[11]['NAME'] = 'High Contrast'; - -$theme[12]['PATH'] = SM_PATH . 'themes/black_bean_burrito_theme.php'; -$theme[12]['NAME'] = 'Black Bean Burrito'; - -$theme[13]['PATH'] = SM_PATH . 'themes/servery_theme.php'; -$theme[13]['NAME'] = 'Servery'; - -$theme[14]['PATH'] = SM_PATH . 'themes/maize_theme.php'; -$theme[14]['NAME'] = 'Maize'; - -$theme[15]['PATH'] = SM_PATH . 'themes/bluesnews_theme.php'; -$theme[15]['NAME'] = 'BluesNews'; - -$theme[16]['PATH'] = SM_PATH . 'themes/deepocean2_theme.php'; -$theme[16]['NAME'] = 'Deep Ocean 2'; - -$theme[17]['PATH'] = SM_PATH . 'themes/blue_grey_theme.php'; -$theme[17]['NAME'] = 'Blue Grey'; - -$theme[18]['PATH'] = SM_PATH . 'themes/dompie_theme.php'; -$theme[18]['NAME'] = 'Dompie'; - -$theme[19]['PATH'] = SM_PATH . 'themes/methodical_theme.php'; -$theme[19]['NAME'] = 'Methodical'; - -$theme[20]['PATH'] = SM_PATH . 'themes/greenhouse_effect.php'; -$theme[20]['NAME'] = 'Greenhouse Effect (Changes)'; - -$theme[21]['PATH'] = SM_PATH . 'themes/in_the_pink.php'; -$theme[21]['NAME'] = 'In The Pink (Changes)'; - -$theme[22]['PATH'] = SM_PATH . 'themes/kind_of_blue.php'; -$theme[22]['NAME'] = 'Kind of Blue (Changes)'; - -$theme[23]['PATH'] = SM_PATH . 'themes/monostochastic.php'; -$theme[23]['NAME'] = 'Monostochastic (Changes)'; - -$theme[24]['PATH'] = SM_PATH . 'themes/shades_of_grey.php'; -$theme[24]['NAME'] = 'Shades of Grey (Changes)'; - -$theme[25]['PATH'] = SM_PATH . 'themes/spice_of_life.php'; -$theme[25]['NAME'] = 'Spice of Life (Changes)'; - -$theme[26]['PATH'] = SM_PATH . 'themes/spice_of_life_lite.php'; -$theme[26]['NAME'] = 'Spice of Life - Lite (Changes)'; - -$theme[27]['PATH'] = SM_PATH . 'themes/spice_of_life_dark.php'; -$theme[27]['NAME'] = 'Spice of Life - Dark (Changes)'; - -$theme[28]['PATH'] = SM_PATH . 'themes/christmas.php'; -$theme[28]['NAME'] = 'Holiday - Christmas'; - -$theme[29]['PATH'] = SM_PATH . 'themes/darkness.php'; -$theme[29]['NAME'] = 'Darkness (Changes)'; - -$theme[30]['PATH'] = SM_PATH . 'themes/random.php'; -$theme[30]['NAME'] = 'Random (Changes every login)'; - -$theme[31]['PATH'] = SM_PATH . 'themes/midnight.php'; -$theme[31]['NAME'] = 'Midnight'; - -$theme[32]['PATH'] = SM_PATH . 'themes/alien_glow.php'; -$theme[32]['NAME'] = 'Alien Glow'; - -$theme[33]['PATH'] = SM_PATH . 'themes/dark_green.php'; -$theme[33]['NAME'] = 'Dark Green'; - -$theme[34]['PATH'] = SM_PATH . 'themes/penguin.php'; -$theme[34]['NAME'] = 'Penguin'; - -$theme[35]['PATH'] = SM_PATH . 'themes/minimal_bw.php'; -$theme[35]['NAME'] = 'Minimal BW'; - -$theme[36]['PATH'] = SM_PATH . 'themes/redmond.php'; -$theme[36]['NAME'] = 'Redmond'; - -$theme[37]['PATH'] = SM_PATH . 'themes/netstyle_theme.php'; -$theme[37]['NAME'] = 'Net Style'; - -$theme[38]['PATH'] = SM_PATH . 'themes/silver_steel_theme.php'; -$theme[38]['NAME'] = 'Silver Steel'; - -$theme[39]['PATH'] = SM_PATH . 'themes/simple_green_theme.php'; -$theme[39]['NAME'] = 'Simple Green'; - -$theme[40]['PATH'] = SM_PATH . 'themes/wood_theme.php'; -$theme[40]['NAME'] = 'Wood'; - -$theme[41]['PATH'] = SM_PATH . 'themes/bluesome.php'; -$theme[41]['NAME'] = 'Bluesome'; - -$theme[42]['PATH'] = SM_PATH . 'themes/simple_green2.php'; -$theme[42]['NAME'] = 'Simple Green 2'; - -$theme[43]['PATH'] = SM_PATH . 'themes/simple_purple.php'; -$theme[43]['NAME'] = 'Simple Purple'; - -$theme[44]['PATH'] = SM_PATH . 'themes/autumn.php'; -$theme[44]['NAME'] = 'Autumn'; - -$theme[45]['PATH'] = SM_PATH . 'themes/autumn2.php'; -$theme[45]['NAME'] = 'Autumn 2'; - -$theme[46]['PATH'] = SM_PATH . 'themes/blue_on_blue.php'; -$theme[46]['NAME'] = 'Blue on Blue'; - -$theme[47]['PATH'] = SM_PATH . 'themes/classic_blue.php'; -$theme[47]['NAME'] = 'Classic Blue'; - -$theme[48]['PATH'] = SM_PATH . 'themes/classic_blue2.php'; -$theme[48]['NAME'] = 'Classic Blue 2'; - -$theme[49]['PATH'] = SM_PATH . 'themes/powder_blue.php'; -$theme[49]['NAME'] = 'Powder Blue'; - -$theme[50]['PATH'] = SM_PATH . 'themes/techno_blue.php'; -$theme[50]['NAME'] = 'Techno Blue'; - -$theme[51]['PATH'] = SM_PATH . 'themes/turquoise.php'; -$theme[51]['NAME'] = 'Turquoise'; +$user_themes[0]['PATH'] = 'none'; +$user_themes[0]['NAME'] = 'Default'; /** * Templates diff --git a/include/options/display.php b/include/options/display.php index d4301d19..4511c9aa 100644 --- a/include/options/display.php +++ b/include/options/display.php @@ -37,19 +37,6 @@ if ($use_icons) { } } -// load user-provided CSS themes -global $css_themes; -$dirName = SM_PATH . 'css'; -if (is_readable($dirName) && is_dir($dirName)) { - $d = dir($dirName); - while($dir = $d->read()) { - if ($dir != "." && $dir != "..") { - if (is_dir($dirName."/".$dir) && file_exists("$dirName/$dir/config.php")) - include("$dirName/$dir/config.php"); - } - } -} - global $use_iframe; if (! isset($use_iframe)) $use_iframe=false; @@ -70,7 +57,7 @@ function load_optpage_data_display() { global $theme, $fontsets, $language, $languages,$aTemplateSet, $default_use_mdn, $squirrelmail_language, $allow_thread_sort, $show_alternative_names, $use_icons, $use_iframe, $sTemplateID, - $oTemplate, $css_themes; + $oTemplate, $user_themes; /* Build a simple array into which we will build options. */ $optgrps = array(); @@ -110,7 +97,11 @@ function load_optpage_data_display() { * User themes start with a 'u_', template themes start with a 't_' to * differentiate which is which. This seems kind of hackish, but we can * come up with a better solution later. -No need for the prefixes. Just use full paths, no? +PL: No need for the prefixes. Just use full paths, no? + +SB: Don't think so. If the user chooses a template theme than changes the + path to the template, it would error out, right? Or should we worry about + that? * * TODO: Clean me. **/ @@ -120,32 +111,36 @@ No need for the prefixes. Just use full paths, no? $theme_values['none'] = 'Template Default Theme'; // List alternate themes provided by templates first + $template_themes = array(); /* * Since this requires mods to the template class, I'm holding off on alternate * template styles until Paul finishes template inheritence. * -- SB, 2006-09-30 * - $template_provided = $oTemplate->get_alternative_stylesheets(); + $template_themes = $oTemplate->get_alternative_stylesheets(); asort($template_provided); foreach ($template_provided as $sheet=>$name) { $theme_values['t_'.$sheet] = 'Template Theme - '.htmlspecialchars($name); } */ // Next, list styles provided in SM_PATH/css/ - // FIXME, these should probably be defined in conf.pl!! - asort($css_themes); - foreach ($css_themes as $style) { + asort($user_themes); + foreach ($user_themes as $style) { + if ($style['PATH'] == 'none') + continue; $theme_values['u_'.$style['PATH']] = 'User Theme - '.htmlspecialchars($style['NAME']); } - $optvals[SMOPT_GRP_GENERAL][] = array( - 'name' => 'chosen_theme', - 'caption' => _("Theme"), - 'type' => SMOPT_TYPE_STRLIST, - 'refresh' => SMOPT_REFRESH_ALL, - 'posvals' => $theme_values, - 'save' => 'css_theme_save' - ); + if (count($user_themes) + count($template_themes) > 1) { + $optvals[SMOPT_GRP_GENERAL][] = array( + 'name' => 'chosen_theme', + 'caption' => _("Theme"), + 'type' => SMOPT_TYPE_STRLIST, + 'refresh' => SMOPT_REFRESH_ALL, + 'posvals' => $theme_values, + 'save' => 'css_theme_save' + ); + } /* Icon theme selection */ if ($use_icons) { @@ -538,14 +533,14 @@ function icon_theme_save($option) { } function css_theme_save ($option) { - global $css_themes, $data_dir, $username; + global $user_themes, $data_dir, $username; // Don't assume the new value is there, double check // and only save if found // $found = false; - reset($css_themes); - while (!$found && (list($index, $data) = each($css_themes))) { + reset($user_themes); + while (!$found && (list($index, $data) = each($user_themes))) { if ('u_'.$data['PATH'] == $option->new_value) $found = true; } -- 2.25.1