aboutsummaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2010-03-22 14:11:10 +0000
committerplegall <plg@piwigo.org>2010-03-22 14:11:10 +0000
commit15499d5dc13cb4680fa2a683f459bbfe785d70a5 (patch)
treee665409a80a6f934925a09f9742ccb2a0624c0c0 /admin
parentcf9af7d0628053b16c3bfc82c2146c3cd7ecec8f (diff)
feature 1514: improvement, impossible to delete a theme that is required
by another installed theme. git-svn-id: http://piwigo.org/svn/trunk@5258 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'admin')
-rw-r--r--admin/include/themes.class.php32
-rw-r--r--admin/themes/default/template/footer.tpl2
-rw-r--r--admin/themes/default/template/themes_installed.tpl15
-rw-r--r--admin/themes_installed.php18
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);
}
}