aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--admin/themes/default/template/intro.tpl28
-rw-r--r--admin/themes/default/template/updates_ext.tpl20
-rw-r--r--include/ws_functions.inc.php37
-rw-r--r--language/en_UK/admin.lang.php3
-rw-r--r--language/fr_FR/admin.lang.php3
-rw-r--r--ws.php7
6 files changed, 91 insertions, 7 deletions
diff --git a/admin/themes/default/template/intro.tpl b/admin/themes/default/template/intro.tpl
index aa744ac48..0f4dc7c00 100644
--- a/admin/themes/default/template/intro.tpl
+++ b/admin/themes/default/template/intro.tpl
@@ -1,13 +1,37 @@
{combine_script id='jquery.cluetip' load='async' require='jquery' path='themes/default/js/plugins/jquery.cluetip.js'}
{footer_script require='jquery.cluetip'}
-jQuery().ready(function(){ldelim}
- jQuery('.cluetip').cluetip({ldelim}
+var piwigo_need_update_msg = '<a href="admin.php?page=updates">{"A new version of Piwigo is available."|@translate|@escape:"javascript"}</a>';
+var ext_need_update_msg = '<a href="admin.php?page=updates&amp;tab=ext">{"Some upgrades are available for extensions."|@translate|@escape:"javascript"}</a>';
+
+{literal}
+jQuery().ready(function(){
+ jQuery('.cluetip').cluetip({
width: 300,
splitTitle: '|',
positionBy: 'bottomTop'
});
+ jQuery.ajax({
+ type: 'GET',
+ url: 'ws.php',
+ dataType: 'json',
+ data: { method: 'pwg.extensions.checkUpdates', format: 'json' },
+ timeout: 5000,
+ success: function (data) {
+ if (data['stat'] != 'ok')
+ return;
+ piwigo_update = data['result']['piwigo_need_update'];
+ ext_update = data['result']['ext_need_update']
+ if ((piwigo_update || ext_update) && !jQuery(".warnings").is('div'))
+ jQuery("#content").prepend('<div class="warnings"><ul></ul></div>');
+ if (piwigo_update)
+ jQuery(".warnings ul").append('<li>'+piwigo_need_update_msg+'</li>');
+ if (ext_update)
+ jQuery(".warnings ul").append('<li>'+ext_need_update_msg+'</li>');
+ }
+ });
});
+{/literal}
{/footer_script}
<h2>{'Piwigo Administration'|@translate}</h2>
diff --git a/admin/themes/default/template/updates_ext.tpl b/admin/themes/default/template/updates_ext.tpl
index a2ffccd4d..a4f52f10b 100644
--- a/admin/themes/default/template/updates_ext.tpl
+++ b/admin/themes/default/template/updates_ext.tpl
@@ -29,6 +29,13 @@ function updateAll() {
}
};
+function ignoreAll() {
+ jQuery('.ignoreExtension').each( function() {
+ if (jQuery(this).parents('div').css('display') == 'block')
+ jQuery(this).click();
+ });
+};
+
function resetIgnored() {
jQuery.ajax({
type: 'GET',
@@ -39,6 +46,7 @@ function resetIgnored() {
if (data['stat'] == 'ok') {
jQuery(".pluginBox, fieldset").show();
jQuery("#update_all").show();
+ jQuery("#ignore_all").show();
jQuery("#up_to_date").hide();
jQuery("#reset_ignore").hide();
jQuery("#ignored").hide();
@@ -67,6 +75,7 @@ function checkFieldsets() {
if (total == 0) {
jQuery("#update_all").hide();
+ jQuery("#ignore_all").hide();
jQuery("#up_to_date").show();
}
if (ignored > 0) {
@@ -96,7 +105,7 @@ function updateExtension(type, id, revision) {
};
function ignoreExtension(type, id) {
- jQuery.ajax({
+ queuedManager.add({
type: 'GET',
url: 'ws.php',
dataType: 'json',
@@ -137,10 +146,11 @@ checkFieldsets();
<div class="autoupdate_bar">
<br>
<input type="submit" id="update_all" value="{'Update All'|@translate}" onClick="updateAll(); return false;">
+<input type="submit" id="ignore_all" value="{'Ignore All'|@translate}" onClick="ignoreAll(); return false;">
<input type="submit" id="reset_ignore" value="{'Reset ignored updates'|@translate}" onClick="resetIgnored(); return false;" {if !$SHOW_RESET}style="display:none;"{/if}>
</div>
<div class="autoupdate_bar" style="display:none;">
-{'Update in progress... Please wait.'|@translate}<br><img src="admin/themes/default/images/ajax-loader-bar.gif">
+{'Please wait...'|@translate}<br><img src="admin/themes/default/images/ajax-loader-bar.gif">
</div>
<p id="up_to_date" style="display:none; text-align:left; margin-left:20px;">{'All extensions are up to date.'|@translate}</p>
@@ -159,7 +169,7 @@ checkFieldsets();
<td>
<a href="#" onClick="updateExtension('plugins', '{$plugin.EXT_ID}', {$plugin.REVISION_ID});" class="updateExtension">{'Install'|@translate}</a>
| <a href="{$plugin.URL_DOWNLOAD}">{'Download'|@translate}</a>
- | <a href="#" onClick="ignoreExtension('plugins', '{$plugin.EXT_ID}'); return false;">{'Ignore this update'|@translate}</a>
+ | <a href="#" onClick="ignoreExtension('plugins', '{$plugin.EXT_ID}'); return false;" class="ignoreExtension">{'Ignore this update'|@translate}</a>
</td>
</tr>
<tr>
@@ -201,7 +211,7 @@ checkFieldsets();
<td>
<a href="#" onClick="updateExtension('themes', '{$theme.EXT_ID}', {$theme.REVISION_ID});" class="updateExtension">{'Install'|@translate}</a>
| <a href="{$theme.URL_DOWNLOAD}">{'Download'|@translate}</a>
- | <a href="#" onClick="ignoreExtension('themes', '{$theme.EXT_ID}'); return false;">{'Ignore this update'|@translate}</a>
+ | <a href="#" onClick="ignoreExtension('themes', '{$theme.EXT_ID}'); return false;" class="ignoreExtension">{'Ignore this update'|@translate}</a>
</td>
</tr>
<tr>
@@ -243,7 +253,7 @@ checkFieldsets();
<td>
<a href="#" onClick="updateExtension('languages', '{$language.EXT_ID}', {$language.REVISION_ID});" class="updateExtension">{'Install'|@translate}</a>
| <a href="{$language.URL_DOWNLOAD}">{'Download'|@translate}</a>
- | <a href="#" onClick="ignoreExtension('languages', '{$language.EXT_ID}'); return false;">{'Ignore this update'|@translate}</a>
+ | <a href="#" onClick="ignoreExtension('languages', '{$language.EXT_ID}'); return false;" class="ignoreExtension">{'Ignore this update'|@translate}</a>
</td>
</tr>
<tr>
diff --git a/include/ws_functions.inc.php b/include/ws_functions.inc.php
index 0aaa5f561..2646abbe0 100644
--- a/include/ws_functions.inc.php
+++ b/include/ws_functions.inc.php
@@ -2845,6 +2845,7 @@ function ws_extensions_ignoreupdate($params, &$service)
$conf['updates_ignored'] = unserialize($conf['updates_ignored']);
+ // Reset ignored extension
if ($params['reset'])
{
$conf['updates_ignored'] = array(
@@ -2871,4 +2872,40 @@ function ws_extensions_ignoreupdate($params, &$service)
unset($_SESSION['extensions_need_update']);
return true;
}
+
+function ws_extensions_checkupdates($params, &$service)
+{
+ global $conf;
+
+ define('IN_ADMIN', true);
+ include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+ include_once(PHPWG_ROOT_PATH.'admin/include/updates.class.php');
+ $update = new updates();
+
+ if (!is_admin())
+ {
+ return new PwgError(401, 'Access denied');
+ }
+
+ $result = array();
+
+ if (!isset($_SESSION['need_update']))
+ $update->check_piwigo_upgrade();
+
+ $result['piwigo_need_update'] = $_SESSION['need_update'];
+
+ $conf['updates_ignored'] = unserialize($conf['updates_ignored']);
+
+ if (!isset($_SESSION['extensions_need_update']))
+ $update->check_extensions();
+ else
+ $update->check_updated_extensions();
+
+ if (!is_array($_SESSION['extensions_need_update']))
+ $result['ext_need_update'] = null;
+ else
+ $result['ext_need_update'] = !empty($_SESSION['extensions_need_update']);
+
+ return $result;
+}
?>
diff --git a/language/en_UK/admin.lang.php b/language/en_UK/admin.lang.php
index 5b70871c3..a0e36b216 100644
--- a/language/en_UK/admin.lang.php
+++ b/language/en_UK/admin.lang.php
@@ -822,4 +822,7 @@ $lang['Include history data (Warning: server memory limit may be exceeded)'] = '
$lang['Unable to write new local directory.'] = 'Unable to write new local directory.';
$lang['Unable to send template directory.'] = 'Unable to send template directory.';
$lang['Unable to dump database.'] = 'Unable to dump database.';
+$lang['Some upgrades are available for extensions.'] = 'Some upgrades are available for extensions.';
+$lang['Please wait...'] = 'Please wait...';
+$lang['Ignore All'] = 'Ignore All';
?> \ No newline at end of file
diff --git a/language/fr_FR/admin.lang.php b/language/fr_FR/admin.lang.php
index 92239633c..f66902c2c 100644
--- a/language/fr_FR/admin.lang.php
+++ b/language/fr_FR/admin.lang.php
@@ -833,4 +833,7 @@ $lang['Include history data (Warning: server memory limit may be exceeded)'] = '
$lang['Unable to write new local directory.'] = 'Impossible d\'écrire le nouveau dossier local.';
$lang['Unable to send template directory.'] = 'Impossible d\'envoyer le dossier template.';
$lang['Unable to dump database.'] = 'Impossible de sauvegarder la base de données.';
+$lang['Some upgrades are available for extensions.'] = 'Des mises à jour sont disponibles pour les extensions.';
+$lang['Please wait...'] = 'Please wait...';
+$lang['Ignore All'] = 'Tout ignorer';
?> \ No newline at end of file
diff --git a/ws.php b/ws.php
index 046ee4743..46429b021 100644
--- a/ws.php
+++ b/ws.php
@@ -445,6 +445,13 @@ function ws_addDefaultMethods( $arr )
<br>Parameter type must be "plugins", "languages" or "themes".
<br>If reset parameter is true, all ignored extensions will be reinitilized.'
);
+
+ $service->addMethod(
+ 'pwg.extensions.checkUpdates',
+ 'ws_extensions_checkupdates',
+ array(),
+ 'Check if piwigo or extensions are up to date.'
+ );
}
add_event_handler('ws_add_methods', 'ws_addDefaultMethods');