- Patch #38981 by Robert: add permission to enable/disbale theme switching by users.
parent
0f6067fc84
commit
b8ae0b3218
|
@ -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,31 +159,36 @@ function system_test() {
|
|||
*/
|
||||
function system_user($type, $edit, &$user, $category = NULL) {
|
||||
if ($type == 'form' && $category == 'account') {
|
||||
$themes = list_themes();
|
||||
ksort($themes);
|
||||
if (user_access('select different theme')) {
|
||||
$themes = list_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 (count($themes) > 1) {
|
||||
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'] = '';
|
||||
}
|
||||
}
|
||||
|
||||
$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');
|
||||
|
||||
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'));
|
||||
}
|
||||
}
|
||||
|
||||
$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');
|
||||
|
||||
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();
|
||||
$form['locale'] = array('#type'=>'item', '#title' => t('Locale settings'), '#weight' => 6);
|
||||
|
|
|
@ -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,31 +159,36 @@ function system_test() {
|
|||
*/
|
||||
function system_user($type, $edit, &$user, $category = NULL) {
|
||||
if ($type == 'form' && $category == 'account') {
|
||||
$themes = list_themes();
|
||||
ksort($themes);
|
||||
if (user_access('select different theme')) {
|
||||
$themes = list_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 (count($themes) > 1) {
|
||||
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'] = '';
|
||||
}
|
||||
}
|
||||
|
||||
$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');
|
||||
|
||||
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'));
|
||||
}
|
||||
}
|
||||
|
||||
$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');
|
||||
|
||||
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();
|
||||
$form['locale'] = array('#type'=>'item', '#title' => t('Locale settings'), '#weight' => 6);
|
||||
|
|
|
@ -1820,7 +1820,7 @@ function user_help($section) {
|
|||
<ul>
|
||||
<li>view your <a href="%user">user page</a>.</li>
|
||||
<li>administer user at <a href="%admin-user">administer >> user</a>.</li>
|
||||
<li>allow users to select themes from their user account by enabling themes in <a href="%admin-themes">administer >> themes</a>.</li>
|
||||
<li>allow users who have the "select different theme" permission to select themes from their user account by enabling themes in <a href="%admin-themes">administer >> themes</a>.</li>
|
||||
<li>read user profile help at <a href="%admin-help-profile">administer >> help >> profile</a>.</li>
|
||||
<li>read about distributed authentication in the system module help at <a href="%admin-help-system">administer >> help >> system</a>.</li>
|
||||
</ul>
|
||||
|
|
|
@ -1820,7 +1820,7 @@ function user_help($section) {
|
|||
<ul>
|
||||
<li>view your <a href="%user">user page</a>.</li>
|
||||
<li>administer user at <a href="%admin-user">administer >> user</a>.</li>
|
||||
<li>allow users to select themes from their user account by enabling themes in <a href="%admin-themes">administer >> themes</a>.</li>
|
||||
<li>allow users who have the "select different theme" permission to select themes from their user account by enabling themes in <a href="%admin-themes">administer >> themes</a>.</li>
|
||||
<li>read user profile help at <a href="%admin-help-profile">administer >> help >> profile</a>.</li>
|
||||
<li>read about distributed authentication in the system module help at <a href="%admin-help-system">administer >> help >> system</a>.</li>
|
||||
</ul>
|
||||
|
|
Loading…
Reference in New Issue