+
{$hookDashboardZoneTwo}
diff --git a/controllers/admin/AdminDashboardController.php b/controllers/admin/AdminDashboardController.php
index fc7df91ec..0970bfe25 100644
--- a/controllers/admin/AdminDashboardController.php
+++ b/controllers/admin/AdminDashboardController.php
@@ -96,10 +96,8 @@ class AdminDashboardControllerCore extends AdminController
{
$return = array('has_errors' => false, 'rss' => array());
if (!$this->isFresh('/config/xml/blog-'.$this->context->language->iso_code.'.xml', 604800))
- {
if (!$this->refresh('/config/xml/blog-'.$this->context->language->iso_code.'.xml', 'https://api.prestashop.com/rss/blog/blog-'.$this->context->language->iso_code.'.xml'))
$return['has_errors'] = true;
- }
if (!$return['has_errors'])
{
@@ -120,4 +118,27 @@ class AdminDashboardControllerCore extends AdminController
die(Tools::jsonEncode($return));
}
-}
\ No newline at end of file
+
+ public function ajaxProcessSaveDashConfig()
+ {
+ $return = array('has_errors' => false);
+ $module = Tools::getValue('module');
+ $hook = Tools::getValue('hook');
+ $configs = Tools::getValue('configs');
+
+ if (Validate::isModuleName($module) && $module_obj = Module::getInstanceByName($module))
+ if (Validate::isLoadedObject($module_obj) && method_exists($module_obj, 'saveDashConfig'))
+ $return['has_errors'] = $module_obj->saveDashConfig($configs);
+ else if (is_array($configs) && count($configs))
+ foreach ($configs as $name => $value)
+ if (Validate::isConfigName($name))
+ Configuration::updateValue($name, $value);
+
+ if (Validate::isHookName($hook) && method_exists($module_obj, $hook))
+ $return['widget_html'] = $module_obj->$hook(array());
+
+ die(Tools::jsonEncode($return));
+ }
+}
+
+
diff --git a/js/admin-dashboard.js b/js/admin-dashboard.js
index d1bcb363d..9ba5c74ef 100644
--- a/js/admin-dashboard.js
+++ b/js/admin-dashboard.js
@@ -31,6 +31,8 @@ $(document).ready( function () {
refreshDashboard(false, false);
getBlogRss();
+ bindSubmitDashConfig();
+
});
function refreshDashboard(module_name, use_push)
@@ -183,8 +185,9 @@ function data_list_small(widget_name, data)
{
for (var data_id in data)
{
+ $('#'+data_id).html('');
for (var item in data[data_id])
- $('#'+data_id+' ').append('
'+item+''+data[data_id][item]+'');
+ $('#'+data_id).append(''+item+''+data[data_id][item]+'');
$('#'+data_id+', #'+widget_name).closest('section').removeClass('loading');
}
}
@@ -233,4 +236,40 @@ function toggleDashConfig(widget)
}
}
+function bindSubmitDashConfig()
+{
+ $('.submit_dash_config').on('click', function () {
+ saveDashConfig($(this).closest('section.widget').attr('id'));
+ return false;
+ });
+}
+
+function saveDashConfig(widget_name)
+{
+ configs = '';
+ $('#'+widget_name+' form input, #'+widget_name+' form textarea , #'+widget_name+' form select').each( function () {
+ if ($(this).attr('type') == 'radio' && !$(this).attr('checked'))
+ return;
+ configs += '&configs['+$(this).attr('name')+']='+$(this).val();
+ });
+ data = 'ajax=true&action=saveDashConfig&module='+widget_name+configs+'&hook='+$('#'+widget_name).closest('[id^=hook]').attr('id');
+
+ $.ajax({
+ url : dashboard_ajax_url,
+ data : data,
+ dataType: 'json',
+ success : function(jsonData){
+ if (!jsonData.has_errors)
+ {
+ $('#'+widget_name).find('section').not('.dash_config').remove();
+ $('#'+widget_name).append($(jsonData.widget_html).find('section').not('.dash_config'));
+ refreshDashboard(widget_name);
+ toggleDashConfig(widget_name);
+ }
+ },
+ error : function(data){
+ //@TODO display errors
+ }
+ });
+}
diff --git a/modules/dashactivity/dashactivity.php b/modules/dashactivity/dashactivity.php
index ae3f3c86a..eac881049 100644
--- a/modules/dashactivity/dashactivity.php
+++ b/modules/dashactivity/dashactivity.php
@@ -261,7 +261,11 @@ class Dashactivity extends Module
$fields_form = array(
'form' => array(
'id_form' => 'step_carrier_general',
- 'input' => array()
+ 'input' => array(),
+ 'submit' => array(
+ 'title' => $this->l(' Save '),
+ 'class' => 'btn submit_dash_config'
+ )
),
);
@@ -302,6 +306,7 @@ class Dashactivity extends Module
$this->fields_form = array();
$helper->id = (int)Tools::getValue('id_carrier');
$helper->identifier = $this->identifier;
+ $helper->submit_action = 'submitDashConfig';
$helper->tpl_vars = array(
'fields_value' => $this->getConfigFieldsValues(),
'languages' => $this->context->controller->getLanguages(),
diff --git a/modules/dashactivity/views/templates/hook/dashboard_zone_one.tpl b/modules/dashactivity/views/templates/hook/dashboard_zone_one.tpl
index 29c8edaac..2a45d2b91 100644
--- a/modules/dashactivity/views/templates/hook/dashboard_zone_one.tpl
+++ b/modules/dashactivity/views/templates/hook/dashboard_zone_one.tpl
@@ -34,7 +34,7 @@
-
+
{$dashactivity_config_form}