Commit 1836d3b3 authored by Dries's avatar Dries

- Patch #29002 by Neil: list_themes() currently returns all themes, not just...

- Patch #29002 by Neil: list_themes() currently returns all themes, not just enabled themes. This functionality is only used in one place- configuration for disabled themes. These configuration pages can be removed with a usability improvement since you shouldn't be able to configure things which are disabled. Additionally, this allows us to remove some extra logic in system_user(). And it it more consistent with the module API which only lists enabled modules.

list_themes() sorts the results by name. This uses filesort in MySQL since there aren't any indexes. Sorting is not used except in system_user(). This one use can be handled with ksort since it is not often executed (only on the user edit screen when multiple themes are enabled).

And a one line fix to remove a variable in system_user() is in here too.
parent 97bc92f6
......@@ -99,7 +99,7 @@ function list_themes($refresh = FALSE) {
if (!$list) {
$list = array();
$result = db_query("SELECT * FROM {system} WHERE type = 'theme' ORDER BY name");
$result = db_query("SELECT * FROM {system} WHERE type = 'theme' AND status = 1");
while ($theme = db_fetch_object($result)) {
if (file_exists($theme->filename)) {
$list[$theme->name] = $theme;
......
......@@ -126,14 +126,8 @@ function system_test() {
*/
function system_user($type, $edit, &$user, $category = NULL) {
if ($type == 'form' && $category == 'account') {
$allthemes = list_themes();
// list only active themes
foreach ($allthemes as $key => $theme) {
if ($theme->status) {
$themes[$key] = $theme;
}
}
$themes = list_themes();
ksort($themes);
if (count($themes) > 1) {
$rows = array();
......@@ -145,8 +139,7 @@ function system_user($type, $edit, &$user, $category = NULL) {
$row[] = file_exists($screenshot) ? theme('image', $screenshot, t('Screenshot for %theme theme', array('%theme' => $value->name)), '', array('class' => 'screenshot'), false) : t('no screenshot');
// Information field.
$field = '<strong>'. $value->name .'</strong>';
$row[] = $field;
$row[] = '<strong>'. $value->name .'</strong>';
// Reset to follow site default theme if user selects the site default
if ($key == variable_get('theme_default', 'bluemarine')) {
......@@ -485,7 +478,7 @@ function system_theme_listing() {
// enabled, default, and operations columns
$row[] = array('data' => form_checkbox('', 'status]['. $info->name, 1, $info->status), 'align' => 'center');
$row[] = array('data' => form_radio('', 'theme_default', $info->name, (variable_get('theme_default', 'bluemarine') == $info->name) ? 1 : 0), 'align' => 'center');
if (function_exists($info->prefix . '_settings') || function_exists($info->prefix . '_features')) {
if ($info->status && (function_exists($info->prefix . '_settings') || function_exists($info->prefix . '_features'))) {
$row[] = array('data' => l(t('configure'), 'admin/themes/settings/' . $info->name), 'align' => 'center');
}
else {
......
......@@ -126,14 +126,8 @@ function system_test() {
*/
function system_user($type, $edit, &$user, $category = NULL) {
if ($type == 'form' && $category == 'account') {
$allthemes = list_themes();
// list only active themes
foreach ($allthemes as $key => $theme) {
if ($theme->status) {
$themes[$key] = $theme;
}
}
$themes = list_themes();
ksort($themes);
if (count($themes) > 1) {
$rows = array();
......@@ -145,8 +139,7 @@ function system_user($type, $edit, &$user, $category = NULL) {
$row[] = file_exists($screenshot) ? theme('image', $screenshot, t('Screenshot for %theme theme', array('%theme' => $value->name)), '', array('class' => 'screenshot'), false) : t('no screenshot');
// Information field.
$field = '<strong>'. $value->name .'</strong>';
$row[] = $field;
$row[] = '<strong>'. $value->name .'</strong>';
// Reset to follow site default theme if user selects the site default
if ($key == variable_get('theme_default', 'bluemarine')) {
......@@ -485,7 +478,7 @@ function system_theme_listing() {
// enabled, default, and operations columns
$row[] = array('data' => form_checkbox('', 'status]['. $info->name, 1, $info->status), 'align' => 'center');
$row[] = array('data' => form_radio('', 'theme_default', $info->name, (variable_get('theme_default', 'bluemarine') == $info->name) ? 1 : 0), 'align' => 'center');
if (function_exists($info->prefix . '_settings') || function_exists($info->prefix . '_features')) {
if ($info->status && (function_exists($info->prefix . '_settings') || function_exists($info->prefix . '_features'))) {
$row[] = array('data' => l(t('configure'), 'admin/themes/settings/' . $info->name), 'align' => 'center');
}
else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment