From 38822bfb5e13c5ad235becbb7ec01387740f42cd Mon Sep 17 00:00:00 2001 From: Vincent Augagneur Date: Thu, 12 Sep 2013 10:08:28 +0200 Subject: [PATCH] //dashactivity configuration --- .../dashboard/helpers/view/view.tpl | 4 +- .../admin/AdminDashboardController.php | 27 ++++++++++-- js/admin-dashboard.js | 41 ++++++++++++++++++- modules/dashactivity/dashactivity.php | 7 +++- .../templates/hook/dashboard_zone_one.tpl | 2 +- 5 files changed, 73 insertions(+), 8 deletions(-) diff --git a/admin-dev/themes/default/template/controllers/dashboard/helpers/view/view.tpl b/admin-dev/themes/default/template/controllers/dashboard/helpers/view/view.tpl index dd9e8940d..abf5c2171 100644 --- a/admin-dev/themes/default/template/controllers/dashboard/helpers/view/view.tpl +++ b/admin-dev/themes/default/template/controllers/dashboard/helpers/view/view.tpl @@ -43,10 +43,10 @@
-
+
{$hookDashboardZoneOne}
-
+
{$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 @@
    -
    +
    {l s='Configuration'}
    {$dashactivity_config_form}