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 d6800922b..7c32a200b 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 @@ -25,8 +25,9 @@
diff --git a/controllers/admin/AdminDashboardController.php b/controllers/admin/AdminDashboardController.php index 5738c83ee..74e13f4f5 100644 --- a/controllers/admin/AdminDashboardController.php +++ b/controllers/admin/AdminDashboardController.php @@ -66,6 +66,7 @@ class AdminDashboardControllerCore extends AdminController 'hookDashboardZoneTwo' => Hook::exec('dashboardZoneTwo'), 'translations' => $translations, 'action' => '#', + 'dashboard_use_push' => Configuration::get('PS_DASHBOARD_USE_PUSH'), 'datepickerFrom' => Tools::getValue('datepickerFrom', $this->context->employee->stats_date_from), 'datepickerTo' => Tools::getValue('datepickerTo', $this->context->employee->stats_date_to) ); @@ -76,12 +77,16 @@ class AdminDashboardControllerCore extends AdminController { $id_module = null; if ($module = Tools::getValue('module')) - $id_module = Module::getInstanceByName($module)->id; - + { + $module_obj = Module::getInstanceByName($module); + if (Validate::isLoadedObject($module_obj)) + $id_module = $module_obj->id; + } + $params = array( 'date_from' => $this->context->employee->stats_date_from, 'date_to' => $this->context->employee->stats_date_to, - 'use_push' => (int)Tools::getValue('use_push') + 'dashboard_use_push' => (int)Tools::getValue('dashboard_use_push') ); die(Tools::jsonEncode(Hook::exec('dashboardData', $params, $id_module, true))); diff --git a/controllers/admin/AdminStatsTabController.php b/controllers/admin/AdminStatsTabController.php index 9c737ac45..35caf83b5 100644 --- a/controllers/admin/AdminStatsTabController.php +++ b/controllers/admin/AdminStatsTabController.php @@ -194,6 +194,25 @@ abstract class AdminStatsTabControllerCore extends AdminPreferencesControllerCor public function postProcess() { $this->context = Context::getContext(); + + $this->ajaxProcessSetDashboardDateRange(); + + if (Tools::getValue('submitSettings')) + { + if ($this->tabAccess['edit'] === '1') + { + self::$currentIndex .= '&module='.Tools::getValue('module'); + Configuration::updateValue('PS_STATS_RENDER', Tools::getValue('PS_STATS_RENDER', Configuration::get('PS_STATS_RENDER'))); + Configuration::updateValue('PS_STATS_GRID_RENDER', Tools::getValue('PS_STATS_GRID_RENDER', Configuration::get('PS_STATS_GRID_RENDER'))); + Configuration::updateValue('PS_STATS_OLD_CONNECT_AUTO_CLEAN', Tools::getValue('PS_STATS_OLD_CONNECT_AUTO_CLEAN', Configuration::get('PS_STATS_OLD_CONNECT_AUTO_CLEAN'))); + } + else + $this->errors[] = Tools::displayError('You do not have permission to edit this.'); + } + } + + public function ajaxProcessSetDashboardDateRange() + { if (Tools::isSubmit('submitDatePicker')) { if (!Validate::isDate($from = Tools::getValue('datepickerFrom')) || !Validate::isDate($to = Tools::getValue('datepickerTo'))) @@ -239,17 +258,21 @@ abstract class AdminStatsTabControllerCore extends AdminPreferencesControllerCor $this->context->employee->update(); Tools::redirectAdmin($_SERVER['REQUEST_URI']); } - if (Tools::getValue('submitSettings')) + if ($this->isXmlHttpRequest()) { - if ($this->tabAccess['edit'] === '1') - { - self::$currentIndex .= '&module='.Tools::getValue('module'); - Configuration::updateValue('PS_STATS_RENDER', Tools::getValue('PS_STATS_RENDER', Configuration::get('PS_STATS_RENDER'))); - Configuration::updateValue('PS_STATS_GRID_RENDER', Tools::getValue('PS_STATS_GRID_RENDER', Configuration::get('PS_STATS_GRID_RENDER'))); - Configuration::updateValue('PS_STATS_OLD_CONNECT_AUTO_CLEAN', Tools::getValue('PS_STATS_OLD_CONNECT_AUTO_CLEAN', Configuration::get('PS_STATS_OLD_CONNECT_AUTO_CLEAN'))); - } + if (is_array($this->errors) && count($this->errors)) + die(Tools::jsonEncode(array( + 'has_errors' => true, + 'errors' => array($this->errors), + 'date_from' => $this->context->employee->stats_date_from, + 'date_to' => $this->context->employee->stats_date_to) + )); else - $this->errors[] = Tools::displayError('You do not have permission to edit this.'); + die(Tools::jsonEncode(array( + 'has_errors' => false, + 'date_from' => $this->context->employee->stats_date_from, + 'date_to' => $this->context->employee->stats_date_to) + )); } } diff --git a/js/admin-dashboard.js b/js/admin-dashboard.js index 4cc7b03e5..d11cd1d0f 100644 --- a/js/admin-dashboard.js +++ b/js/admin-dashboard.js @@ -23,34 +23,16 @@ */ $(document).ready( function () { - refreshDashbard(); - /* -if (use_push) - launchPush(); -*/ -}); - -function launchPush() -{ - $.ajax({ - url : dashboard_ajax_url, - data : { - ajax:true, - action:'refreshDashboard', - module:'dashactivity', - use_push:1, - }, - dataType: 'json', - success : function(widgets){ - for (var name in widgets) - { - for (data_type in widgets[name]) - window[data_type](widgets[name][data_type]); - } - launchPush(); - }, + + $('#calendar_form input[type="submit"]').on('click', function (elt) { + setDashboardDateRange(elt.currentTarget.name); + return false; }); -} + + refreshDashbard(); + if (dashboard_use_push) + refreshDashbard(); +}); function refreshDashbard(module_name) { @@ -78,7 +60,8 @@ function refreshDashbard(module_name) data : { ajax:true, action:'refreshDashboard', - module:module_list[module_id] + module:module_list[module_id], + dashboard_use_push:dashboard_use_push }, dataType: 'json', success : function(widgets){ @@ -87,6 +70,8 @@ function refreshDashbard(module_name) for (data_type in widgets[widget_name]) window[data_type](widget_name, widgets[widget_name][data_type]); } + if (dashboard_use_push) + refreshDashbard(); }, error : function(data){ //@TODO display errors @@ -95,6 +80,28 @@ function refreshDashbard(module_name) } } +function setDashboardDateRange(action) +{ + data = 'ajax=true&action=setDashboardDateRange&submitDatePicker=true&'+$('#calendar_form').serialize()+'&'+action+'=1'; + $.ajax({ + url : adminstats_ajax_url, + data : data, + dataType: 'json', + type: 'POST', + success : function(jsonData){ + if (!jsonData.has_errors) + { + refreshDashbard(); + $('#datepickerFrom').val(jsonData.date_from); + $('#datepickerTo').val(jsonData.date_to); + } + }, + error : function(data){ + //@TODO display errors + } + }); +} + function data_value(widget_name, data) { for (var data_id in data)