Skip to content

Commit

Permalink
Merge pull request #81 from dgt41/_update
Browse files Browse the repository at this point in the history
Plugins: joomla update, extensions update refactor
  • Loading branch information
C-Lodder committed Oct 24, 2016
2 parents 9c0ba71 + f506458 commit 2ed6dfb
Show file tree
Hide file tree
Showing 7 changed files with 178 additions and 125 deletions.
14 changes: 14 additions & 0 deletions dev/Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ module.exports = function(grunt) {
cmmod : '../media/vendor/codemirror/mode',
cmthem : '../media/vendor/codemirror/theme',
polyfills : '../media/vendor/polyfills/js',
jupdate : '../media/plg_quickicon_joomlaupdate/js',
extupdate : '../media/plg_quickicon_extensionupdate/js',
},

// Let's clean up the system
Expand Down Expand Up @@ -228,6 +230,18 @@ module.exports = function(grunt) {
expand: true,
ext: '.min.js'
},
{
src: ['<%= folder.jupdate %>/*.js','!<%= folder.jupdate %>/*.min.js'],
dest: '',
expand: true,
ext: '.min.js'
},
{
src: ['<%= folder.extupdate %>/*.js','!<%= folder.extupdate %>/*.min.js'],
dest: '',
expand: true,
ext: '.min.js'
},
{
src: '<%= folder.polyfills %>/polyfill.classlist.js',
dest: '<%= folder.polyfills %>/polyfill.classlist.min.js',
Expand Down
107 changes: 66 additions & 41 deletions media/plg_quickicon_extensionupdate/js/extensionupdatecheck.js
Original file line number Diff line number Diff line change
@@ -1,46 +1,71 @@
/**
* @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
* @package Joomla.JavaScript
* @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

jQuery(document).ready(function() {
var ajax_structure = {
success: function(data, textStatus, jqXHR) {
var link = jQuery('#plg_quickicon_extensionupdate').find('span.j-links-link');

try {
var updateInfoList = jQuery.parseJSON(data);
} catch (e) {
// An error occurred
link.html(plg_quickicon_extensionupdate_text.ERROR);
}

if (updateInfoList instanceof Array) {
if (updateInfoList.length == 0) {
// No updates
link.html(plg_quickicon_extensionupdate_text.UPTODATE);
} else {
var updateString = plg_quickicon_extensionupdate_text.UPDATEFOUND_MESSAGE.replace("%s", updateInfoList.length);
jQuery('#system-message-container').prepend(
'<div class="alert alert-error alert-joomlaupdate">'
+ updateString
+ ' <button class="btn btn-primary" onclick="document.location=\'' + plg_quickicon_extensionupdate_url + '\'">'
+ plg_quickicon_extensionupdate_text.UPDATEFOUND_BUTTON + '</button>'
+ '</div>'
);
var updateString = plg_quickicon_extensionupdate_text.UPDATEFOUND.replace("%s", updateInfoList.length);
link.html(updateString);
/**
* Ajax call to get the update status of the installed extensions
*/
(function() {
"use strict";

var checkForExtensionsUpdates = function() {

if (Joomla.getOptions('js-extensions-update')) {

var options = Joomla.getOptions('js-extensions-update');
Joomla.request(
{
url: options.ajaxUrl + '&eid=0&skip=700',
method: 'GET',
data: '',
perform: true,
onSuccess: function(response, xhr)
{
var link = document.getElementById('plg_quickicon_extensionupdate').querySelector('span.j-links-link');

var updateInfoList = JSON.parse(response);

if (updateInfoList instanceof Array) {
if (updateInfoList.length === 0) {
/** No updates **/
link.innerHTML = Joomla.JText._('PLG_QUICKICON_EXTENSIONUPDATE_UPTODATE');
} else {
var messages = {
"message": [
Joomla.JText._('PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND_MESSAGE').replace("%s", updateInfoList.length)
+ '<button class="btn btn-primary" onclick="document.location=\'' + options.url + '\'">'
+ Joomla.JText._('PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND_BUTTON') + '</button>'
], "error": ["info"]
};

/** Render the message **/
Joomla.renderMessages(messages);

/** Scroll to page top **/
window.scrollTo(0, 0);

link.innerHTML = Joomla.JText._('PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND').replace("%s", updateInfoList.length);
}
} else {
/** An error occurred **/
link.innerHTML = Joomla.JText._('PLG_QUICKICON_EXTENSIONUPDATE_ERROR');
}

},
onError: function(xhr)
{
/** An error occurred **/
document.getElementById('plg_quickicon_extensionupdate').querySelector('span.j-links-link').innerHTML = Joomla.JText._('PLG_QUICKICON_EXTENSIONUPDATE_ERROR');
}
}
} else {
// An error occurred
link.html(plg_quickicon_extensionupdate_text.ERROR);
}
},
error: function(jqXHR, textStatus, errorThrown) {
// An error occurred
jQuery('#plg_quickicon_extensionupdate').find('span.j-links-link').html(plg_quickicon_extensionupdate_text.ERROR);
},
url: plg_quickicon_extensionupdate_ajax_url + '&eid=0&skip=700'
);
}
};
ajax_object = new jQuery.ajax(ajax_structure);
});

/** Add a listener on content loaded to initiate the check **/
document.addEventListener('DOMContentLoaded', function() {
checkForExtensionsUpdates();
});
})();

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

111 changes: 66 additions & 45 deletions media/plg_quickicon_joomlaupdate/js/jupdatecheck.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,52 +2,73 @@
* @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
/**
* Ajax call to get the update status of Joomla
*/
(function() {
"use strict";

var checkForJoomlaUpdates = function() {
if (Joomla.getOptions('js-joomla-update')) {
var options = Joomla.getOptions('js-joomla-update');

Joomla.request(
{
url: options.ajaxUrl + '&eid=700&cache_timeout=3600',
method: 'GET',
data: '',
perform: true,
onSuccess: function(response, xhr)
{
var link = document.getElementById('plg_quickicon_joomlaupdate').querySelector('span.j-links-link');

var updateInfoList = JSON.parse(response);

if (updateInfoList instanceof Array) {
if (updateInfoList.length === 0) {
/** No updates **/
link.innerHTML = Joomla.JText._('PLG_QUICKICON_JOOMLAUPDATE_UPTODATE');
} else {
var updateInfo = updateInfoList.shift();

var plg_quickicon_jupdatecheck_ajax_structure = {};

jQuery(document).ready(function() {
plg_quickicon_jupdatecheck_ajax_structure = {
success: function(data, textStatus, jqXHR) {
var link = jQuery('#plg_quickicon_joomlaupdate').find('span.j-links-link');

try {
var updateInfoList = jQuery.parseJSON(data);
} catch (e) {
// An error occurred
link.html(plg_quickicon_joomlaupdate_text.ERROR);
}

if (updateInfoList instanceof Array) {
if (updateInfoList.length < 1) {
// No updates
link.replaceWith(plg_quickicon_joomlaupdate_text.UPTODATE);
} else {
var updateInfo = updateInfoList.shift();
if (updateInfo.version != plg_quickicon_jupdatecheck_jversion) {
var updateString = plg_quickicon_joomlaupdate_text.UPDATEFOUND.replace("%s", updateInfo.version + "");
jQuery('#plg_quickicon_joomlaupdate').find('.j-links-link').html(updateString);
var updateString = plg_quickicon_joomlaupdate_text.UPDATEFOUND_MESSAGE.replace("%s", updateInfo.version + "");
jQuery('#system-message-container').prepend(
'<div class="alert alert-error alert-joomlaupdate">'
+ updateString
+ ' <button class="btn btn-primary" onclick="document.location=\'' + plg_quickicon_joomlaupdate_url + '\'">'
+ plg_quickicon_joomlaupdate_text.UPDATEFOUND_BUTTON + '</button>'
+ '</div>'
);
} else {
link.html(plg_quickicon_joomlaupdate_text.UPTODATE);
if (updateInfo.version != options.version) {
var messages = {
"message": [
Joomla.JText._('PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND_MESSAGE').replace("%s", updateInfoList.length)
+ '<button class="btn btn-primary" onclick="document.location=\'' + options.url + '\'">'
+ Joomla.JText._('PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND_BUTOON') + '</button>'
], "error": ["info"]
};

/** Render the message **/
Joomla.renderMessages(messages);

/** Scroll to page top **/
window.scrollTo(0, 0);

link.innerHTML = Joomla.JText._('PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND').replace("%s", updateInfoList.length);
} else {
link.innerHTML = Joomla.JText._('PLG_QUICKICON_JOOMLAUPDATE_UPTODATE');
}
}
} else {
/** An error occurred **/
link.innerHTML = Joomla.JText._('PLG_QUICKICON_JOOMLAUPDATE_ERROR');
}

},
onError: function(xhr)
{
/** An error occurred **/
document.getElementById('plg_quickicon_joomlaupdate').querySelector('span.j-links-link').innerHTML = Joomla.JText._('PLG_QUICKICON_JOOMLAUPDATE_ERROR');
}
}
} else {
// An error occurred
link.html(plg_quickicon_joomlaupdate_text.ERROR);
}
},
error: function(jqXHR, textStatus, errorThrown) {
// An error occurred
jQuery('#plg_quickicon_joomlaupdate').find('span.j-links-link').html(plg_quickicon_joomlaupdate_text.ERROR);
},
url: plg_quickicon_joomlaupdate_ajax_url + '&eid=700&cache_timeout=3600'
);
}
};
setTimeout("ajax_object = new jQuery.ajax(plg_quickicon_jupdatecheck_ajax_structure);", 2000);
});

/** Add a listener on content loaded to initiate the check **/
document.addEventListener('DOMContentLoaded', function() {
setTimeout(checkForJoomlaUpdates, 2000)
});
})();
1 change: 1 addition & 0 deletions media/plg_quickicon_joomlaupdate/js/jupdatecheck.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 15 additions & 16 deletions plugins/quickicon/extensionupdate/extensionupdate.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,23 +42,22 @@ public function onGetIcons($context)
return;
}

JHtml::_('jquery.framework');
$token = JSession::getFormToken() . '=1';
$options = array(
'url' => JUri::base() . 'index.php?option=com_installer&view=update&task=update.find&' . $token,
'ajaxUrl' => JUri::base() . 'index.php?option=com_installer&view=update&task=update.ajax&' . $token,
);

JText::script('PLG_QUICKICON_EXTENSIONUPDATE_UPTODATE', true);
JText::script('PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND', true);
JText::script('PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND_MESSAGE', true);
JText::script('PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND_BUTTON', true);
JText::script('PLG_QUICKICON_EXTENSIONUPDATE_ERROR', true);

JHtml::_('behavior.core');
JHtml::_('script', 'plg_quickicon_extensionupdate/extensionupdatecheck.min.js', false, true);

$token = JSession::getFormToken() . '=' . 1;
$url = JUri::base() . 'index.php?option=com_installer&view=update&task=update.find&' . $token;
$ajax_url = JUri::base() . 'index.php?option=com_installer&view=update&task=update.ajax&' . $token;
$script = array();
$script[] = 'var plg_quickicon_extensionupdate_url = \'' . $url . '\';';
$script[] = 'var plg_quickicon_extensionupdate_ajax_url = \'' . $ajax_url . '\';';
$script[] = 'var plg_quickicon_extensionupdate_text = {'
. '"UPTODATE" : "' . JText::_('PLG_QUICKICON_EXTENSIONUPDATE_UPTODATE', true) . '",'
. '"UPDATEFOUND": "' . JText::_('PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND', true) . '",'
. '"UPDATEFOUND_MESSAGE": "' . JText::_('PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND_MESSAGE', true) . '",'
. '"UPDATEFOUND_BUTTON": "' . JText::_('PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND_BUTTON', true) . '",'
. '"ERROR": "' . JText::_('PLG_QUICKICON_EXTENSIONUPDATE_ERROR', true) . '",'
. '};';
JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
JHtml::_('script', 'plg_quickicon_extensionupdate/extensionupdatecheck.js', false, true);
JFactory::getDocument()->addScriptOptions('js-extensions-update', $options);

return array(
array(
Expand Down
38 changes: 15 additions & 23 deletions plugins/quickicon/joomlaupdate/joomlaupdate.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,31 +43,23 @@ public function onGetIcons($context)
return;
}

JHtml::_('jquery.framework');
JText::script('PLG_QUICKICON_JOOMLAUPDATE_ERROR', true);
JText::script('PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND_BUTTON', true);
JText::script('PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND_MESSAGE', true);
JText::script('PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND', true);
JText::script('PLG_QUICKICON_JOOMLAUPDATE_UPTODATE', true);

$cur_template = JFactory::getApplication()->getTemplate();
JFactory::getDocument()->addScriptOptions(
'js-joomla-update',
[
'url' => JUri::base() . 'index.php?option=com_joomlaupdate',
'ajaxUrl' => JUri::base() . 'index.php?option=com_installer&view=update&task=update.ajax&' . JSession::getFormToken() . '=1',
'version' => JVERSION,
]
);

$token = JSession::getFormToken() . '=' . 1;
$url = JUri::base() . 'index.php?option=com_joomlaupdate';
$ajax_url = JUri::base() . 'index.php?option=com_installer&view=update&task=update.ajax&' . $token;
$script = array();
$script[] = 'var plg_quickicon_joomlaupdate_url = \'' . $url . '\';';
$script[] = 'var plg_quickicon_joomlaupdate_ajax_url = \'' . $ajax_url . '\';';
$script[] = 'var plg_quickicon_jupdatecheck_jversion = \'' . JVERSION . '\'';
$script[] = 'var plg_quickicon_joomlaupdate_text = {'
. '"UPTODATE" : "' . JText::_('PLG_QUICKICON_JOOMLAUPDATE_UPTODATE', true) . '",'
. '"UPDATEFOUND": "' . JText::_('PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND', true) . '",'
. '"UPDATEFOUND_MESSAGE": "' . JText::_('PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND_MESSAGE', true) . '",'
. '"UPDATEFOUND_BUTTON": "' . JText::_('PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND_BUTTON', true) . '",'
. '"ERROR": "' . JText::_('PLG_QUICKICON_JOOMLAUPDATE_ERROR', true) . '",'
. '};';
$script[] = 'var plg_quickicon_joomlaupdate_img = {'
. '"UPTODATE" : "' . JUri::base(true) . '/templates/' . $cur_template . '/images/header/icon-48-jupdate-uptodate.png",'
. '"UPDATEFOUND": "' . JUri::base(true) . '/templates/' . $cur_template . '/images/header/icon-48-jupdate-updatefound.png",'
. '"ERROR": "' . JUri::base(true) . '/templates/' . $cur_template . '/images/header/icon-48-deny.png",'
. '};';
JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
JHtml::_('script', 'plg_quickicon_joomlaupdate/jupdatecheck.js', false, true);
JHtml::_('behavior.core');
JHtml::_('script', 'plg_quickicon_joomlaupdate/jupdatecheck.min.js', false, true);

return array(
array(
Expand Down

0 comments on commit 2ed6dfb

Please sign in to comment.