$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['"]\]//;
$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];
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";
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(); }
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 " ";
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";
print "| d (done) |\n";
print "`-------------------------'\n";
}
- print "[theme] command (?=help) > ";
+ print "[user_theme] command (?=help) > ";
$input = <STDIN>;
$input =~ s/[\r\n]//g;
}
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";
/**
- * 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
* 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
}
}
-// 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;
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();
* 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.
**/
$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) {
}
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;
}