diff options
Diffstat (limited to 'admin')
-rw-r--r-- | admin/include/plugins.class.php | 24 | ||||
-rw-r--r-- | admin/plugins_installed.php | 22 | ||||
-rw-r--r-- | admin/themes/default/template/plugins_list.tpl | 49 |
3 files changed, 56 insertions, 39 deletions
diff --git a/admin/include/plugins.class.php b/admin/include/plugins.class.php index d1b8f5c5b..22e58857c 100644 --- a/admin/include/plugins.class.php +++ b/admin/include/plugins.class.php @@ -534,30 +534,20 @@ DELETE FROM ' . PLUGINS_TABLE . ' WHERE id=\'' . $plugin_id . '\''; function get_merged_extensions($version=PHPWG_VERSION) { - if (isset($_SESSION['merged_extensions']) and $_SESSION['merged_extensions']['~~expire~~'] > time()) - { - return $_SESSION['merged_extensions']; - } - - $_SESSION['merged_extensions'] = array('~~expire~~' => time() + 600); + $file = PHPWG_ROOT_PATH.'install/obsolete_extensions.list'; + $merged_extensions = array(); - if (fetchRemote(PHPWG_URL.'/download/merged_extensions.txt', $result)) + if (file_exists($file) and $obsolete_ext = file($file, FILE_IGNORE_NEW_LINES) and !empty($obsolete_ext)) { - $rows = explode("\n", $result); - foreach ($rows as $row) + foreach ($obsolete_ext as $ext) { - if (preg_match('/^(\d+\.\d+): *(.*)$/', $row, $match)) + if (preg_match('/^(\d+) ?: ?(.*?)$/', $ext, $matches)) { - if (version_compare($version, $match[1], '>=')) - { - $extensions = explode(',', trim($match[2])); - $_SESSION['merged_extensions'] = array_merge($_SESSION['merged_extensions'], $extensions); - } + $merged_extensions[$matches[1]] = $matches[2]; } } } - - return $_SESSION['merged_extensions']; + return $merged_extensions; } /** diff --git a/admin/plugins_installed.php b/admin/plugins_installed.php index 4cefe45e4..26ba295e2 100644 --- a/admin/plugins_installed.php +++ b/admin/plugins_installed.php @@ -64,13 +64,26 @@ if (isset($_GET['action']) and isset($_GET['plugin'])) } } +//--------------------------------------------------------Incompatible Plugins +if (isset($_GET['incompatible_plugins'])) +{ + $incompatible_plugins = array(); + foreach ($plugins->get_incompatible_plugins() as $plugin => $version) + { + if ($plugin == '~~expire~~') continue; + array_push($incompatible_plugins, $plugin); + + } + echo json_encode($incompatible_plugins); + exit; +} + // +-----------------------------------------------------------------------+ // | start template output | // +-----------------------------------------------------------------------+ $plugins->sort_fs_plugins('name'); -$plugins->get_merged_extensions(); -$plugins->get_incompatible_plugins(); +$merged_extensions = $plugins->get_merged_extensions(); $merged_plugins = false; $tpl_plugins = array(); @@ -80,7 +93,7 @@ foreach($plugins->fs_plugins as $plugin_id => $fs_plugin) and $fs_plugin['version'] != $_SESSION['incompatible_plugins'][$plugin_id]) { // Incompatible plugins must be reinitilized - $plugins->get_incompatible_plugins(true); + unset($_SESSION['incompatible_plugins']); } $tpl_plugin = array( @@ -92,7 +105,6 @@ foreach($plugins->fs_plugins as $plugin_id => $fs_plugin) 'AUTHOR' => $fs_plugin['author'], 'AUTHOR_URL' => @$fs_plugin['author uri'], 'U_ACTION' => sprintf($action_url, $plugin_id), - 'INCOMPATIBLE' => isset($_SESSION['incompatible_plugins'][$plugin_id]), ); if (isset($plugins->db_plugins_by_id[$plugin_id])) @@ -104,7 +116,7 @@ foreach($plugins->fs_plugins as $plugin_id => $fs_plugin) $tpl_plugin['STATE'] = 'inactive'; } - if (isset($fs_plugin['extension']) and in_array($fs_plugin['extension'], $_SESSION['merged_extensions'])) + if (isset($fs_plugin['extension']) and isset($merged_extensions[$fs_plugin['extension']])) { $plugins->perform_action('uninstall', $plugin_id); $tpl_plugin['STATE'] = 'merged'; diff --git a/admin/themes/default/template/plugins_list.tpl b/admin/themes/default/template/plugins_list.tpl index 1f11865b2..c7480a9e7 100644 --- a/admin/themes/default/template/plugins_list.tpl +++ b/admin/themes/default/template/plugins_list.tpl @@ -3,8 +3,7 @@ {footer_script require='jquery.ajaxmanager'} /* incompatible message */ var incompatible_msg = '{'WARNING! This plugin does not seem to be compatible with this version of Piwigo.'|@translate|@escape:'javascript'}'; -incompatible_msg += '\n'; -incompatible_msg += '{'Do you want to activate anyway?'|@translate|@escape:'javascript'}'; +var activate_msg = '\n{'Do you want to activate anyway?'|@translate|@escape:'javascript'}'; /* group action */ var pwg_token = '{$PWG_TOKEN}'; @@ -39,18 +38,36 @@ jQuery(document).ready(function() { }); }; - /* incompatible message */ - jQuery('.incompatible a.incompatible').click(function() { - return confirm(incompatible_msg); + /* incompatible plugins */ + jQuery(document).ready(function() { + jQuery.ajax({ + method: 'GET', + url: 'admin.php', + data: { page: 'plugins_installed', incompatible_plugins: true }, + dataType: 'json', + success: function(data) { + for (i=0;i<data.length;i++) { + {/literal} + {if $plugin_display == 'complete'} + jQuery('#'+data[i]+' .pluginBoxNameCell').prepend('<a class="warning" title="'+incompatible_msg+'"></a>') + {else} + jQuery('#'+data[i]+' .pluginMiniBoxNameCell').prepend('<span class="warning" title="'+incompatible_msg+'"></span>') + {/if} + {literal} + jQuery('#'+data[i]).addClass('incompatible'); + jQuery('#'+data[i]+' .activate').attr('onClick', 'return confirm(incompatible_msg + activate_msg);'); + } + jQuery('.warning').tipTip({ + 'delay' : 0, + 'fadeIn' : 200, + 'fadeOut' : 200, + 'maxWidth':'250px' + }); + } + }); }); /* TipTips */ - jQuery('.warning').tipTip({ - 'delay' : 0, - 'fadeIn' : 200, - 'fadeOut' : 200, - 'maxWidth':'250px' - }); jQuery('.plugin-restore').tipTip({ 'delay' : 0, 'fadeIn' : 200, @@ -117,11 +134,10 @@ jQuery(document).ready(function() { {/if} {if $plugin_display == 'complete'} - <div id="{$plugin.ID}" class="pluginBox {$plugin.STATE}{if $plugin.INCOMPATIBLE} incompatible{/if}"> + <div id="{$plugin.ID}" class="pluginBox"> <table> <tr> <td class="pluginBoxNameCell"> - {if $plugin.INCOMPATIBLE}<a class="warning" title="{'WARNING! This plugin does not seem to be compatible with this version of Piwigo.'|@translate|@escape:'html'}"></a>{/if} {$plugin.NAME} </td> <td>{$plugin.DESC}</td> @@ -133,7 +149,7 @@ jQuery(document).ready(function() { | <a href="{$plugin.U_ACTION}&action=restore" class="plugin-restore" title="{'Restore default configuration. You will lost your plugin settings!'|@translate}" onclick="return confirm('{'Are you sure?'|@translate|@escape:'javascript'}');">{'Restore'|@translate}</a> {elseif $plugin.STATE == 'inactive'} - <a href="{$plugin.U_ACTION}&action=activate" {if $plugin.INCOMPATIBLE}class="incompatible"{/if}>{'Activate'|@translate}</a> + <a href="{$plugin.U_ACTION}&action=activate" class="activate">{'Activate'|@translate}</a> | <a href="{$plugin.U_ACTION}&action=delete" onclick="return confirm('{'Are you sure?'|@translate|@escape:'javascript'}');">{'Delete'|@translate}</a> {elseif $plugin.STATE == 'missing'} @@ -165,9 +181,8 @@ jQuery(document).ready(function() { {assign var='version' value=$plugin.VERSION} {/if} - <div id="{$plugin.ID}" class="pluginMiniBox {$plugin.STATE}{if $plugin.INCOMPATIBLE} incompatible{/if}"> + <div id="{$plugin.ID}" class="pluginMiniBox"> <div class="pluginMiniBoxNameCell"> - {if $plugin.INCOMPATIBLE}<span class="warning" title="{'WARNING! This plugin does not seem to be compatible with this version of Piwigo.'|@translate|@escape:'html'}"></span>{/if} {$plugin.NAME} <a class="showInfo" title="{if !empty($author)}{'By %s'|@translate|@sprintf:$author} | {/if}{'Version'|@translate} {$version}<br/>{$plugin.DESC|@escape:'html'}">i</a> </div> @@ -178,7 +193,7 @@ jQuery(document).ready(function() { | <a href="{$plugin.U_ACTION}&action=restore" class="plugin-restore" title="{'Restore default configuration. You will lost all your settings !'|@translate}" onclick="return confirm('{'Are you sure?'|@translate|@escape:'javascript'}');">{'Restore'|@translate}</a> {elseif $plugin.STATE == 'inactive'} - <a href="{$plugin.U_ACTION}&action=activate" {if $plugin.INCOMPATIBLE}class="incompatible"{/if}>{'Activate'|@translate}</a> + <a href="{$plugin.U_ACTION}&action=activate" class="activate">{'Activate'|@translate}</a> | <a href="{$plugin.U_ACTION}&action=delete" onclick="return confirm('{'Are you sure?'|@translate|@escape:'javascript'}');">{'Delete'|@translate}</a> {elseif $plugin.STATE == 'missing'} |