summaryrefslogtreecommitdiff
path: root/modules/system.module
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2005-11-30 11:09:38 +0000
committerDries Buytaert <dries@buytaert.net>2005-11-30 11:09:38 +0000
commitb8ae0b32188231ce79c2945e78c26e909f4e25c2 (patch)
tree91397a84e5848fdc0bb4fcc282c513ce667262e4 /modules/system.module
parent0f6067fc849f749ca4356a5db224c6a0e5f95666 (diff)
downloadbrdo-b8ae0b32188231ce79c2945e78c26e909f4e25c2.tar.gz
brdo-b8ae0b32188231ce79c2945e78c26e909f4e25c2.tar.bz2
- Patch #38981 by Robert: add permission to enable/disbale theme switching by users.
Diffstat (limited to 'modules/system.module')
-rw-r--r--modules/system.module47
1 files changed, 26 insertions, 21 deletions
diff --git a/modules/system.module b/modules/system.module
index 248ae68a4..e22afafed 100644
--- a/modules/system.module
+++ b/modules/system.module
@@ -47,7 +47,7 @@ function system_help($section) {
* Implementation of hook_perm().
*/
function system_perm() {
- return array('administer site configuration', 'access administration pages');
+ return array('administer site configuration', 'access administration pages', 'select different theme');
}
/**
@@ -159,30 +159,35 @@ function system_test() {
*/
function system_user($type, $edit, &$user, $category = NULL) {
if ($type == 'form' && $category == 'account') {
- $themes = list_themes();
- ksort($themes);
-
- // Reset to follow site default theme if user selects the site default
- if ($key == variable_get('theme_default', 'bluemarine')) {
- $key = '';
- if ($edit['theme'] == variable_get('theme_default', 'bluemarine')) {
- $edit['theme'] = '';
- }
- }
+ if (user_access('select different theme')) {
+ $themes = list_themes();
- $form['themes'] = array(
- '#type' => 'fieldset', '#title' => t('Theme configuration'), '#description' => t('Selecting a different theme will change the look and feel of the site.'), '#weight' => 2, '#collapsible' => TRUE, '#theme' => 'system_user');
+ if (count($themes) > 1) {
+ ksort($themes);
- foreach ($themes as $info) {
- $info->screenshot = dirname($info->filename) . '/screenshot.png';
- $screenshot = file_exists($info->screenshot) ? theme('image', $info->screenshot, t('Screenshot for %theme theme', array('%theme' => $info->name)), '', array('class' => 'screenshot'), false) : t('no screenshot');
+ // Reset to follow site default theme if user selects the site default
+ if ($key == variable_get('theme_default', 'bluemarine')) {
+ $key = '';
+ if ($edit['theme'] == variable_get('theme_default', 'bluemarine')) {
+ $edit['theme'] = '';
+ }
+ }
- $form['themes'][$info->name]['screenshot'] = array('#type' => 'markup', '#value' => $screenshot);
- $form['themes'][$info->name]['description'] = array('#type' => 'item', '#title' => $info->name, '#value' => dirname($info->filename));
- $options[$info->name] = '';
- }
+ $form['themes'] = array(
+ '#type' => 'fieldset', '#title' => t('Theme configuration'), '#description' => t('Selecting a different theme will change the look and feel of the site.'), '#weight' => 2, '#collapsible' => TRUE, '#theme' => 'system_user');
- $form['themes']['theme'] = array('#type' => 'radios', '#options' => $options, '#default_value' => $edit['theme'] ? $edit['theme'] : variable_get('theme_default', 'bluemarine'));
+ foreach ($themes as $info) {
+ $info->screenshot = dirname($info->filename) . '/screenshot.png';
+ $screenshot = file_exists($info->screenshot) ? theme('image', $info->screenshot, t('Screenshot for %theme theme', array('%theme' => $info->name)), '', array('class' => 'screenshot'), false) : t('no screenshot');
+
+ $form['themes'][$info->name]['screenshot'] = array('#type' => 'markup', '#value' => $screenshot);
+ $form['themes'][$info->name]['description'] = array('#type' => 'item', '#title' => $info->name, '#value' => dirname($info->filename));
+ $options[$info->name] = '';
+ }
+
+ $form['themes']['theme'] = array('#type' => 'radios', '#options' => $options, '#default_value' => $edit['theme'] ? $edit['theme'] : variable_get('theme_default', 'bluemarine'));
+ }
+ }
if (variable_get('configurable_timezones', 1)) {
$zones = _system_zonelist();