diff options
-rw-r--r-- | admin/include/themes.class.php | 32 | ||||
-rw-r--r-- | admin/themes/default/template/footer.tpl | 2 | ||||
-rw-r--r-- | admin/themes/default/template/themes_installed.tpl | 15 | ||||
-rw-r--r-- | admin/themes_installed.php | 18 |
4 files changed, 62 insertions, 5 deletions
diff --git a/admin/include/themes.class.php b/admin/include/themes.class.php index 98a75339c..ad32b6f7f 100644 --- a/admin/include/themes.class.php +++ b/admin/include/themes.class.php @@ -140,6 +140,19 @@ DELETE // nothing to do here break; } + + $children = $this->get_children_themes($theme_id); + if (count($children) > 0) + { + array_push( + $errors, + sprintf( + l10n('Impossible to delete this theme. Other themes depends on it: %s'), + implode(', ', $children) + ) + ); + break; + } if (!$this->deltree(PHPWG_THEMES_PATH.$theme_id)) { @@ -155,6 +168,21 @@ DELETE return $errors; } + function get_children_themes($theme_id) + { + $children = array(); + + foreach ($this->fs_themes as $test_child) + { + if (isset($test_child['parent']) and $test_child['parent'] == $theme_id) + { + array_push($children, $test_child['name']); + } + } + + return $children; + } + function set_default_theme($theme_id) { // first we need to know which users are using the current default theme @@ -267,6 +295,10 @@ SELECT list( , $extension) = explode('extension_view.php?eid=', $theme['uri']); if (is_numeric($extension)) $theme['extension'] = $extension; } + if (preg_match('/["\']parent["\'][^"\']+["\']([^"\']+)["\']/', $theme_data, $val)) + { + $theme['parent'] = $val[1]; + } // screenshot $screenshot_path = $path.'/screenshot.png'; diff --git a/admin/themes/default/template/footer.tpl b/admin/themes/default/template/footer.tpl index 3b6b8af43..763942e60 100644 --- a/admin/themes/default/template/footer.tpl +++ b/admin/themes/default/template/footer.tpl @@ -45,7 +45,7 @@ {literal} <script type='text/javascript'> $(function() { - $('#pwgHead A, #footer A, .themeActions A').tipTip({ + $('#pwgHead A, #footer A, .themeActions A, .themeActions SPAN').tipTip({ 'delay' : 0, 'fadeIn' : 200, 'fadeOut' : 200, diff --git a/admin/themes/default/template/themes_installed.tpl b/admin/themes/default/template/themes_installed.tpl index a231f39ff..0a5a0cc85 100644 --- a/admin/themes/default/template/themes_installed.tpl +++ b/admin/themes/default/template/themes_installed.tpl @@ -4,7 +4,8 @@ <div id="themesContent"> -<h3>Active Themes</h3> +<fieldset> +<legend>Active Themes</legend> {if isset($active_themes)} <div class="themeBoxes"> {foreach from=$active_themes item=theme} @@ -21,9 +22,11 @@ {/foreach} </div> <!-- themeBoxes --> {/if} +</fieldset> {if isset($inactive_themes)} -<h3>Inactive Themes</h3> +<fieldset> +<legend>Inactive Themes</legend> <div class="themeBoxes"> {foreach from=$inactive_themes item=theme} <div class="themeBox"> @@ -31,12 +34,18 @@ <div class="themeShot"><img src="{$theme.screenshot}"></div> <div class="themeActions"> <a href="{$activate_baseurl}{$theme.id}" title="{'Make this theme available to users'|@translate}">{'Activate'|@translate}</a> - | <a href="{$delete_baseurl}{$theme.id}" onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');" title="{'Delete this theme'|@translate}">{'Delete'|@translate}</a> + | + {if $theme.deletable} + <a href="{$delete_baseurl}{$theme.id}" onclick="return confirm('{'Are you sure?'|@translate|@escape:javascript}');" title="{'Delete this theme'|@translate}">{'Delete'|@translate}</a> + {else} + <span title="{$theme.delete_tooltip}">{'Delete'|@translate}</span> + {/if} </div> </div> {/foreach} </div> <!-- themeBoxes --> +</fieldset> {/if} </div> <!-- themesContent -->
\ No newline at end of file diff --git a/admin/themes_installed.php b/admin/themes_installed.php index 68510354f..82efe569a 100644 --- a/admin/themes_installed.php +++ b/admin/themes_installed.php @@ -68,7 +68,7 @@ foreach ($db_themes as $db_theme) $active_themes = array(); $inactive_themes = array(); -foreach($themes->fs_themes as $theme_id => $fs_theme) +foreach ($themes->fs_themes as $theme_id => $fs_theme) { if ($theme_id == 'default') { @@ -89,6 +89,22 @@ foreach($themes->fs_themes as $theme_id => $fs_theme) } else { + $children = $themes->get_children_themes($theme_id); + + if (count($children) > 0) + { + $fs_theme['deletable'] = false; + + $fs_theme['delete_tooltip'] = sprintf( + l10n('Impossible to delete this theme. Other themes depends on it: %s'), + implode(', ', $children) + ); + } + else + { + $fs_theme['deletable'] = true; + } + array_push($inactive_themes, $fs_theme); } } |