Move management of user themes (SM_PATH/css/) to conf.pl.
authorstevetruckstuff <stevetruckstuff@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Mon, 2 Oct 2006 18:49:00 +0000 (18:49 +0000)
committerstevetruckstuff <stevetruckstuff@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Mon, 2 Oct 2006 18:49:00 +0000 (18:49 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@11811 7612ce4b-ef26-0410-bec9-ea0150e637f0

config/conf.pl
config/config_default.php
include/options/display.php

index 9dec82f..93d8c24 100755 (executable)
@@ -175,19 +175,19 @@ while ( $line = <FILE> ) {
         $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 = <FILE> ) {
             $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 = <STDIN>;
     $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 = <STDIN>;
             $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 = <STDIN>;
             $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 = <STDIN>;
                         $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 = <STDIN>;
         $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";
 
index c9e6f27..b5c2e41 100644 (file)
@@ -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
index d4301d1..4511c9a 100644 (file)
@@ -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;
     }