From 9968507c7ed56007b3f59de4092ab071ef73843e Mon Sep 17 00:00:00 2001 From: Fedik Date: Tue, 11 Aug 2015 20:38:20 +0300 Subject: [PATCH 1/3] Update javascript a litle bit :smile: --- .../modules/mod_sampledata/mod_sampledata.xml | 3 + .../modules/mod_sampledata/tmpl/default.php | 57 +++--------- media/mod_sampledata/js/sampledata-process.js | 91 +++++++++++++++++++ plugins/sampledata/default/default.php | 30 +++++- 4 files changed, 135 insertions(+), 46 deletions(-) create mode 100644 media/mod_sampledata/js/sampledata-process.js diff --git a/administrator/modules/mod_sampledata/mod_sampledata.xml b/administrator/modules/mod_sampledata/mod_sampledata.xml index cda9dbbd744b4..7a66b3aafd8d8 100644 --- a/administrator/modules/mod_sampledata/mod_sampledata.xml +++ b/administrator/modules/mod_sampledata/mod_sampledata.xml @@ -14,6 +14,9 @@ helper.php tmpl + + js + en-GB.mod_sampledata.ini en-GB.mod_sampledata.sys.ini diff --git a/administrator/modules/mod_sampledata/tmpl/default.php b/administrator/modules/mod_sampledata/tmpl/default.php index 852130bc2281b..41cfe3cef3836 100644 --- a/administrator/modules/mod_sampledata/tmpl/default.php +++ b/administrator/modules/mod_sampledata/tmpl/default.php @@ -11,52 +11,15 @@ JHtml::_('jquery.framework'); JHtml::_('bootstrap.tooltip'); +JHtml::_('script', 'mod_sampledata/sampledata-process.js', false, true); -$url = 'index.php?option=com_ajax&format=json&group=sampledata'; -$js = ' -function applySampledataAjax(type, steps, step) { - if (step <= steps) { - jQuery("div.sampledata-progress-" + type + " ul").append("
  • "); - jQuery.get( - "' . $url . '&type=" + type + "&plugin=SampledataApplyStep" + step, - function(response) { - var success = false; - if (response.data.length > 0) { - jQuery.each( - response.data, - function(index, value) { - var successClass = "error"; - if (value.success) { - success = true; - successClass = "success"; - jQuery(".sampledata-progress-" + type + " progress").val(step/steps); - } - jQuery("li.sampledata-steps-" + type + "-" + step).removeClass("center"); - jQuery("li.sampledata-steps-" + type + "-" + step).addClass("alert alert-" + successClass); - jQuery("li.sampledata-steps-" + type + "-" + step).html(value.message); - } - ); - if (success) { - step++; - applySampledataAjax(type, steps, step); - } - } else { - jQuery(".sampledata-progress-" + type + " progress").val(0); - jQuery("li.sampledata-steps-" + type + "-" + step).addClass("alert alert-error"); - jQuery("li.sampledata-steps-" + type + "-" + step).html("' . JText::_('MOD_SAMPLEDATA_INVALID_RESPONSE') . '"); - } - } - ); - } -} -function applySampledata(type, steps) { - var step = 1; - jQuery(".sampledata-" + type).after("
      "); - jQuery(".sampledata-" + type).after("
      "); - applySampledataAjax(type, steps, step); -}'; +JText::script('MOD_SAMPLEDATA_CONFIRM_START'); +JText::script('MOD_SAMPLEDATA_INVALID_RESPONSE'); -JFactory::getDocument()->addScriptDeclaration($js); +JFactory::getDocument()->addScriptDeclaration(' + var modSampledataUrl = "index.php?option=com_ajax&format=json&group=sampledata", + modSampledataIconProgress = "' . JUri::root(true) . '/media/jui/img/ajax-loader.gif"; +'); ?> diff --git a/media/mod_sampledata/js/sampledata-process.js b/media/mod_sampledata/js/sampledata-process.js new file mode 100644 index 0000000000000..8f74ebdf1084f --- /dev/null +++ b/media/mod_sampledata/js/sampledata-process.js @@ -0,0 +1,91 @@ +/** + * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +!(function ($) { + "use strict"; + + var inProgress = false; + + var sampledataAjax = function(type, steps, step) { + if (step > steps) { + return; + } + var stepClass = 'sampledata-steps-' + type + '-' + step, + $stepLi = $('
    • '), + $progress = $(".sampledata-progress-" + type + " progress"); + + $("div.sampledata-progress-" + type + " ul").append($stepLi); + + var request = $.ajax({ + url: window.modSampledataUrl, + type: 'POST', + dataType: 'json', + data: { + type: type, + plugin: 'SampledataApplyStep' + step, + step: step + } + }); + request.done(function(response){ + $stepLi.children('img').remove(); + + if (response.success && response.data && response.data.length > 0) { + var success, value, resultClass, $msg; + + // Display all messages that we got + for(var i = 0, l = response.data.length; i < l; i++) { + value = response.data[i]; + success = value.success; + resultClass = success ? 'success' : 'error'; + $stepLi.append($('
      ', { + html: value.message, + 'class': 'alert alert-' + resultClass, + })); + } + + // Update progress + $progress.val(step/steps); + + // Move on next step + if (success) { + step++; + sampledataAjax(type, steps, step); + } + + } else { + $progress.hide(); + $stepLi.addClass('alert alert-error'); + $stepLi.html(Joomla.JText._('MOD_SAMPLEDATA_INVALID_RESPONSE')); + inProgress = false; + } + }); + request.fail(function(jqXHR, textStatus){ + alert('Something went wrong! Please reboot the Windows and try again!'); + }); + }; + + window.sampledataApply = function(el) { + var $el = $(el), type = $el.data('type'), steps = $el.data('steps'); + + // Check whether the work in progress or we alredy proccessed with current item + if (inProgress || $el.data('processed')) { + return; + } + + // Make sure that use run this not by random clicking on the page links + if (!confirm(Joomla.JText._('MOD_SAMPLEDATA_CONFIRM_START'))) { + return false; + } + + // Turn on the progress container + $('.sampledata-progress-' + type).show(); + $el.data('processed', true) + + inProgress = true; + sampledataAjax(type, steps, 1); + return false; + }; + +})(jQuery); diff --git a/plugins/sampledata/default/default.php b/plugins/sampledata/default/default.php index 712dfae993a85..bc4daf35dd59a 100644 --- a/plugins/sampledata/default/default.php +++ b/plugins/sampledata/default/default.php @@ -44,7 +44,7 @@ public function onSampledataGetOverview() $data->title = 'Default Sampledata'; $data->description = 'Default Sampledata.'; $data->icon = 'book'; - $data->steps = 1; + $data->steps = 3; return $data; } @@ -67,4 +67,32 @@ public function onAjaxSampledataApplyStep1() return $response; } + + public function onAjaxSampledataApplyStep2() + { + if ($this->app->input->get('type') != $this->_name) + { + return; + }; + + $response = new stdClass; + $response->success = true; + $response->message = JText::_('PLG_SAMPLEDATA_DEFAULT_STEP2'); + + return $response; + } + + public function onAjaxSampledataApplyStep3() + { + if ($this->app->input->get('type') != $this->_name) + { + return; + }; + + $response = new stdClass; + $response->success = true; + $response->message = JText::_('PLG_SAMPLEDATA_DEFAULT_STEP3'); + + return $response; + } } From 295374c081be30cbf1fc5aa27d5cd8a17f5bc6ae Mon Sep 17 00:00:00 2001 From: Fedik Date: Tue, 11 Aug 2015 20:47:37 +0300 Subject: [PATCH 2/3] Merged by accident --- plugins/sampledata/default/default.php | 30 +------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/plugins/sampledata/default/default.php b/plugins/sampledata/default/default.php index bc4daf35dd59a..712dfae993a85 100644 --- a/plugins/sampledata/default/default.php +++ b/plugins/sampledata/default/default.php @@ -44,7 +44,7 @@ public function onSampledataGetOverview() $data->title = 'Default Sampledata'; $data->description = 'Default Sampledata.'; $data->icon = 'book'; - $data->steps = 3; + $data->steps = 1; return $data; } @@ -67,32 +67,4 @@ public function onAjaxSampledataApplyStep1() return $response; } - - public function onAjaxSampledataApplyStep2() - { - if ($this->app->input->get('type') != $this->_name) - { - return; - }; - - $response = new stdClass; - $response->success = true; - $response->message = JText::_('PLG_SAMPLEDATA_DEFAULT_STEP2'); - - return $response; - } - - public function onAjaxSampledataApplyStep3() - { - if ($this->app->input->get('type') != $this->_name) - { - return; - }; - - $response = new stdClass; - $response->success = true; - $response->message = JText::_('PLG_SAMPLEDATA_DEFAULT_STEP3'); - - return $response; - } } From 948f7e73ed5a0b7755bd8a531c26bd61d0c91f24 Mon Sep 17 00:00:00 2001 From: Fedik Date: Fri, 21 Aug 2015 18:07:32 +0300 Subject: [PATCH 3/3] Update the markup, show alert about alredy imported item, --- .../modules/mod_sampledata/tmpl/default.php | 5 +++ media/mod_sampledata/js/sampledata-process.js | 43 +++++++++++-------- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/administrator/modules/mod_sampledata/tmpl/default.php b/administrator/modules/mod_sampledata/tmpl/default.php index 41cfe3cef3836..b7ea484fc5da6 100644 --- a/administrator/modules/mod_sampledata/tmpl/default.php +++ b/administrator/modules/mod_sampledata/tmpl/default.php @@ -14,6 +14,7 @@ JHtml::_('script', 'mod_sampledata/sampledata-process.js', false, true); JText::script('MOD_SAMPLEDATA_CONFIRM_START'); +JText::script('MOD_SAMPLEDATA_ITEM_ALREADY_PROCESSED'); JText::script('MOD_SAMPLEDATA_INVALID_RESPONSE'); JFactory::getDocument()->addScriptDeclaration(' @@ -40,8 +41,12 @@
      +
      +
      + +
        diff --git a/media/mod_sampledata/js/sampledata-process.js b/media/mod_sampledata/js/sampledata-process.js index 8f74ebdf1084f..f32632b2d016f 100644 --- a/media/mod_sampledata/js/sampledata-process.js +++ b/media/mod_sampledata/js/sampledata-process.js @@ -10,26 +10,28 @@ var sampledataAjax = function(type, steps, step) { if (step > steps) { + $('.sampledata-' + type + ' .row-title').append(' '); + inProgress = false; return; } var stepClass = 'sampledata-steps-' + type + '-' + step, - $stepLi = $('
      • '), + $stepLi = $('
      • '), $progress = $(".sampledata-progress-" + type + " progress"); $("div.sampledata-progress-" + type + " ul").append($stepLi); var request = $.ajax({ url: window.modSampledataUrl, - type: 'POST', - dataType: 'json', - data: { - type: type, - plugin: 'SampledataApplyStep' + step, - step: step - } + type: 'POST', + dataType: 'json', + data: { + type: type, + plugin: 'SampledataApplyStep' + step, + step: step + } }); request.done(function(response){ - $stepLi.children('img').remove(); + $stepLi.children('.loader-image').remove(); if (response.success && response.data && response.data.length > 0) { var success, value, resultClass, $msg; @@ -54,23 +56,26 @@ sampledataAjax(type, steps, step); } - } else { - $progress.hide(); - $stepLi.addClass('alert alert-error'); - $stepLi.html(Joomla.JText._('MOD_SAMPLEDATA_INVALID_RESPONSE')); - inProgress = false; - } + } else { + $stepLi.addClass('alert alert-error'); + $stepLi.html(Joomla.JText._('MOD_SAMPLEDATA_INVALID_RESPONSE')); + inProgress = false; + } + }); + request.fail(function(jqXHR, textStatus){ + alert('Something went wrong! Please reboot the Windows and try again!'); }); - request.fail(function(jqXHR, textStatus){ - alert('Something went wrong! Please reboot the Windows and try again!'); - }); }; window.sampledataApply = function(el) { var $el = $(el), type = $el.data('type'), steps = $el.data('steps'); // Check whether the work in progress or we alredy proccessed with current item - if (inProgress || $el.data('processed')) { + if (inProgress) { + return; + } + if ($el.data('processed')) { + alert(Joomla.JText._('MOD_SAMPLEDATA_ITEM_ALREADY_PROCESSED')); return; }