1
0
mirror of https://github.com/e107inc/e107.git synced 2025-01-29 10:38:08 +01:00

Allow selection of themes available to users

This commit is contained in:
e107steved 2008-10-02 21:10:34 +00:00
parent 35d6530e72
commit 87f676d764
3 changed files with 188 additions and 50 deletions

View File

@ -0,0 +1,118 @@
<?php
/*
+ ----------------------------------------------------------------------------+
| e107 website system
|
| ©Steve Dunstan 2001-2002
| http://e107.org
| jalist@e107.org
|
| Released under the terms and conditions of the
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_plugins/user_menu/config.php,v $
| $Revision: 1.1 $
| $Date: 2008-10-02 21:10:02 $
| $Author: e107steved $
+----------------------------------------------------------------------------+
*/
$eplug_admin = TRUE;
require_once("../../class2.php");
@include_lan(e_PLUGIN."user_menu/languages/".e_LANGUAGE.".php");
require_once(e_HANDLER.'userclass_class.php');
global $e_userclass;
if (!is_object($e_userclass)) $e_userclass = new user_class;
if (!getperms("2")) // Same permissions as menu configuration
{
header("location:".e_BASE."index.php");
exit ;
}
require_once(e_ADMIN."auth.php");
// Get the list of available themes
$handle = opendir(e_THEME);
while ($file = readdir($handle))
{
if ($file != "." && $file != ".." && $file != "templates" && $file != "" && $file != "CVS")
{
if (is_readable(e_THEME.$file."/theme.php") && is_readable(e_THEME.$file."/style.css"))
{
$themeOptions[] = $file;
$themeCount[$file] = 0;
}
}
}
closedir($handle);
if (isset($_POST['update_theme']))
{
$tmp = array();
foreach($_POST as $key => $value)
{
if (substr($key,0,6) == 'theme_')
{
$tmp[] = $value;
}
}
$newThemes = implode(',',$tmp);
$themeeditclass = intval($_POST['themeeditclass']);
if (($newThemes != $pref['allowed_themes']) || ($themeeditclass != $pref['allow_theme_select']))
{
$pref['allowed_themes'] = $newThemes;
$pref['allow_theme_select'] = $themeeditclass;
save_prefs();
$woffle = LAN_UMENU_THEME_8.$pref['allowed_themes'].'[!br!]'.LAN_UMENU_THEME_9.$pref['allow_theme_select'];
$admin_log->log_event('UTHEME_01',$woffle,E_LOG_INFORMATIVE,'');
}
}
if (isset($pref['allowed_themes']))
{
$allThemes = FALSE;
$themeList = explode(',',$pref['allowed_themes']);
}
$themeeditclass = varset($pref['allow_theme_select'],e_UC_NOBODY);
$text = "
<form method='post' action='".e_SELF."' name='menu_conf_form'>
<table style='".ADMIN_WIDTH."' class='fborder' >
<colgroup>
<col style='width: 50%' />
<col style='width: 50%' />
</colgroup>
<tr>
<td colspan='2' class='forumheader2'>".LAN_UMENU_THEME_4."</td>
</tr>";
foreach ($themeOptions as $th)
{
$ch = (in_array($th, $themeList) ? " checked='checked'" : '');
$text .= "
<tr>
<td class='forumheader3'>{$th}</td>
<td class='forumheader3'><input class='tbox' type='checkbox' name='theme_{$th}' value='{$th}' {$ch} /></td>
</tr>";
}
$text .= "
<tr>
<td class='forumheader3'>".LAN_UMENU_THEME_7."</td>
<td class='forumheader3'>".$e_userclass->uc_dropdown("themeeditclass", $themeeditclass, "main,member,admin,classes,matchclass,nobody")."</td>
</tr>";
$text .= "
<tr>
<td colspan='2' class='forumheader' style='text-align:center'><input class='button' type='submit' name='update_theme' value='".LAN_UMENU_THEME_5."' /></td>
</tr>
</table>
</form>
</div>";
$ns->tablerender(LAN_UMENU_THEME_6, $text);
require_once(e_ADMIN."footer.php");
?>

View File

@ -11,18 +11,24 @@
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_plugins/user_menu/languages/English.php,v $
| $Revision: 1.1 $
| $Date: 2007-03-23 22:42:40 $
| $Author: lisa_ $
| $Revision: 1.2 $
| $Date: 2008-10-02 21:10:02 $
| $Author: e107steved $
+----------------------------------------------------------------------------+
*/
define("UTHEME_MENU_L1", "Set Language");
define("UTHEME_MENU_L2", "Select Language");
define("UTHEME_MENU_L3", "tables");
define("LAN_UMENU_THEME_1", "Set Theme");
define("LAN_UMENU_THEME_2", "Select Theme");
define("LAN_UMENU_THEME_3", "users:");
define('UTHEME_MENU_L1', 'Set Language');
define('UTHEME_MENU_L2', 'Select Language');
define('UTHEME_MENU_L3', 'tables');
define('LAN_UMENU_THEME_1', 'Set Theme');
define('LAN_UMENU_THEME_2', 'Select Theme');
define('LAN_UMENU_THEME_3', 'users:');
define('LAN_UMENU_THEME_4', 'Enable those themes which users may select');
define('LAN_UMENU_THEME_5', 'Update');
define('LAN_UMENU_THEME_6', 'Themes available to users');
define('LAN_UMENU_THEME_7', 'Class which can select themes');
define('LAN_UMENU_THEME_8', 'Allowed themes: ');
define('LAN_UMENU_THEME_9', 'Class which can select themes: ');
?>

View File

@ -11,59 +11,73 @@
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_plugins/user_menu/usertheme_menu.php,v $
| $Revision: 1.1 $
| $Date: 2007-03-23 22:42:40 $
| $Author: lisa_ $
| $Revision: 1.2 $
| $Date: 2008-10-02 21:10:02 $
| $Author: e107steved $
+----------------------------------------------------------------------------+
*/
if (!defined('e107_INIT')) { exit; }
if (USER == TRUE) {
if ((USER == TRUE) && check_class(varset($pref['allow_theme_select'],FALSE)))
{
$allThemes = TRUE;
if (isset($pref['allowed_themes']))
{
$allThemes = FALSE;
$themeList = explode(',',$pref['allowed_themes']);
}
$handle = opendir(e_THEME);
while ($file = readdir($handle)) {
if ($file != "." && $file != ".." && $file != "templates" && $file != "" && $file != "CVS") {
if (is_readable(e_THEME.$file."/theme.php") && is_readable(e_THEME.$file."/style.css")) {
while ($file = readdir($handle))
{
if ($file != "." && $file != ".." && $file != "templates" && $file != "" && $file != "CVS")
{
if (is_readable(e_THEME.$file."/theme.php") && is_readable(e_THEME.$file."/style.css") && ($allThemes || in_Array($file, $themeList)))
{
$themelist[] = $file;
$themecount[$file] = 0;
}
}
}
closedir($handle);
$defaulttheme = $pref['sitetheme'];
$count = 0;
$totalct = $sql->db_Select("user", "user_prefs", "user_prefs REGEXP('sitetheme') ");
while ($row = $sql->db_Fetch()) {
$up = unserialize($row['user_prefs']);
if (isset($themecount[$up['sitetheme']])) { $themecount[$up['sitetheme']]++; }
}
$defaultusers = $sql->db_Count("user") - $totalct;
$themecount[$defaulttheme] += $defaultusers;
$text = "<form method='post' action='".e_SELF."'>
<div style='text-align:center'>
<select name='sitetheme' class='tbox' style='width: 95%;'>";
$counter = 0;
while (isset($themelist[$counter]) && $themelist[$counter]) {
$text .= "<option value='".$themelist[$counter]."' ";
if (($themelist[$counter] == USERTHEME) || (USERTHEME == FALSE && $themelist[$counter] == $defaulttheme)) {
$text .= "selected='selected'";
if (count($themelist))
{
$defaulttheme = $pref['sitetheme'];
$count = 0;
$totalct = $sql->db_Select("user", "user_prefs", "user_prefs REGEXP('sitetheme') ");
while ($row = $sql->db_Fetch())
{
$up = unserialize($row['user_prefs']);
if (isset($themecount[$up['sitetheme']])) { $themecount[$up['sitetheme']]++; }
}
$text .= ">".($themelist[$counter] == $defaulttheme ? "[ ".$themelist[$counter]." ]" : $themelist[$counter])." (".LAN_UMENU_THEME_3." ".$themecount[$themelist[$counter]].")</option>\n";
$counter++;
}
$text .= "</select>
<br /><br />
<input class='button' type='submit' name='settheme' value='".LAN_UMENU_THEME_1."' />
</div></form>";
$defaultusers = $sql->db_Count("user") - $totalct;
$themecount[$defaulttheme] += $defaultusers;
$ns->tablerender(LAN_UMENU_THEME_2, $text, 'usertheme');
$text = "<form method='post' action='".e_SELF."'>
<div style='text-align:center'>
<select name='sitetheme' class='tbox' style='width: 95%;'>";
$counter = 0;
while (isset($themelist[$counter]) && $themelist[$counter])
{
$text .= "<option value='".$themelist[$counter]."' ";
if (($themelist[$counter] == USERTHEME) || (USERTHEME == FALSE && $themelist[$counter] == $defaulttheme))
{
$text .= "selected='selected'";
}
$text .= ">".($themelist[$counter] == $defaulttheme ? "[ ".$themelist[$counter]." ]" : $themelist[$counter]).' ('.LAN_UMENU_THEME_3.' '.$themecount[$themelist[$counter]].")</option>\n";
$counter++;
}
$text .= "</select>
<br /><br />
<input class='button' type='submit' name='settheme' value='".LAN_UMENU_THEME_1."' />
</div></form>";
$ns->tablerender(LAN_UMENU_THEME_2, $text, 'usertheme');
}
}
?>