mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-03-28 17:42:57 +01:00
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
This commit is contained in:
@@ -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';
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 -->
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user