From b5c1285fb48c787758bfb1f73aa920d0c9af2f48 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 2 Oct 2019 15:48:42 +0200 Subject: [PATCH 1/5] =?UTF-8?q?-=20Infocenter=20filter=20dataset=20is=20re?= =?UTF-8?q?loaded=20anytime=20Infocenter=20menu=20is=20clicked=20for=20?= =?UTF-8?q?=C3=9Cbersicht,=20Frreigegeben=20or=20Reihungstestabsolviert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/infocenter/InfoCenter.php | 20 +++++++++++++------ .../infocenter/infocenterFreigegebenData.php | 1 + .../infocenterReihungstestAbsolviertData.php | 1 + 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index c803520ed..e14a34d8f 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -24,6 +24,7 @@ class InfoCenter extends Auth_Controller const FILTER_ID = 'filter_id'; const PREV_FILTER_ID = 'prev_filter_id'; + const RELOAD_DATASET = 'reloadDataset'; private $_uid; // contains the UID of the logged user @@ -234,7 +235,7 @@ class InfoCenter extends Auth_Controller $redirectLink = '/'.self::INFOCENTER_URI.'?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId(); // Force reload of Dataset after Unlock - $redirectLink .= '&reloadDataset=true'; + $redirectLink .= '&'.self::RELOAD_DATASET.'=true'; $currentFilterId = $this->input->get(self::FILTER_ID); if (isset($currentFilterId)) @@ -894,10 +895,16 @@ class InfoCenter extends Auth_Controller $freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE); $reihungstestAbsolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE); $currentFilterId = $this->input->get(self::FILTER_ID); + $reloadDatasetParam = self::RELOAD_DATASET.'=true'; if (isset($currentFilterId)) { - $freigegebenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; - $reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; + $freigegebenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId.'&'.$reloadDatasetParam; + $reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId.'&'.$reloadDatasetParam; + } + else + { + $freigegebenLink .= '?'.$reloadDatasetParam; + $reihungstestAbsolviertLink .= '?'.$reloadDatasetParam; } $this->navigationlib->setSessionMenu( @@ -993,9 +1000,10 @@ class InfoCenter extends Auth_Controller $this->load->library('NavigationLib', array(self::NAVIGATION_PAGE => self::INFOCENTER_URI.'/'.$page)); // Generate the home link with the eventually loaded filter - $homeLink = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE); - $freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE); - $absolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE); + $reloadDatasetParam = '?'.self::RELOAD_DATASET.'=true'; + $homeLink = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE.$reloadDatasetParam); + $freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE.$reloadDatasetParam); + $absolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE.$reloadDatasetParam); $prevFilterId = $this->input->get(self::PREV_FILTER_ID); if (isset($prevFilterId)) { diff --git a/application/views/system/infocenter/infocenterFreigegebenData.php b/application/views/system/infocenter/infocenterFreigegebenData.php index 89ba2ec38..13a2c0563 100644 --- a/application/views/system/infocenter/infocenterFreigegebenData.php +++ b/application/views/system/infocenter/infocenterFreigegebenData.php @@ -235,6 +235,7 @@ 'filter_id' => $this->input->get('filter_id'), 'requiredPermissions' => 'infocenter', 'datasetRepresentation' => 'tablesorter', + 'reloadDataset' => ($this->input->get('reloadDataset')=='true'?true:false), 'checkboxes' => 'PersonId', 'additionalColumns' => array('Details'), 'columnsAliases' => array( diff --git a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php index 22b122bb0..652ab4887 100644 --- a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php +++ b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php @@ -204,6 +204,7 @@ 'filter_id' => $this->input->get('filter_id'), 'requiredPermissions' => 'infocenter', 'datasetRepresentation' => 'tablesorter', + 'reloadDataset' => ($this->input->get('reloadDataset')=='true'?true:false), 'checkboxes' => 'PersonId', 'additionalColumns' => array('Details'), 'columnsAliases' => array( From 854dcb7cea1a984122ee0df5686d3f56f95d6d65 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 3 Oct 2019 16:23:19 +0200 Subject: [PATCH 2/5] =?UTF-8?q?-=20Infocenter:=20dataset=20in=20=C3=9Cbers?= =?UTF-8?q?icht=20is=20reloaded=20when=20clicking=20on=20back=20button=20f?= =?UTF-8?q?rom=20details=20page.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/controllers/system/infocenter/InfoCenter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index e14a34d8f..7d005489d 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -970,7 +970,7 @@ class InfoCenter extends Auth_Controller $prevFilterId = $this->input->get(self::PREV_FILTER_ID); if (isset($prevFilterId)) { - $link .= '?'.self::FILTER_ID.'='.$prevFilterId; + $link .= '?'.self::FILTER_ID.'='.$prevFilterId.'&'.self::RELOAD_DATASET.'=true'; } $this->navigationlib->setSessionMenu( From 72a3c2845f8244e955592f7f0f01d17563860339 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 7 Oct 2019 18:30:06 +0200 Subject: [PATCH 3/5] =?UTF-8?q?tablesorter=20filters=20saved=20in=20local?= =?UTF-8?q?=20storage=20in=20infocenter=20=C3=9Cbersicht=20are=20not=20del?= =?UTF-8?q?eted=20when=20using=20zur=C3=BCck=20button=20or=20freigegeben?= =?UTF-8?q?=20on=20infocenter=20details=20page.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/system/infocenter/InfoCenter.php | 7 ++++--- public/js/FilterWidget.js | 13 ++++++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 7d005489d..3a8d51aee 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -25,6 +25,7 @@ class InfoCenter extends Auth_Controller const FILTER_ID = 'filter_id'; const PREV_FILTER_ID = 'prev_filter_id'; const RELOAD_DATASET = 'reloadDataset'; + const KEEP_TABLESORTER_FILTER = 'keepTsFilter'; private $_uid; // contains the UID of the logged user @@ -235,7 +236,7 @@ class InfoCenter extends Auth_Controller $redirectLink = '/'.self::INFOCENTER_URI.'?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId(); // Force reload of Dataset after Unlock - $redirectLink .= '&'.self::RELOAD_DATASET.'=true'; + $redirectLink .= '&'.self::RELOAD_DATASET.'=true&'.self::KEEP_TABLESORTER_FILTER.'=true'; $currentFilterId = $this->input->get(self::FILTER_ID); if (isset($currentFilterId)) @@ -957,7 +958,7 @@ class InfoCenter extends Auth_Controller $origin_page = $this->input->get(self::ORIGIN_PAGE); - $link = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE); + $link = site_url(self::INFOCENTER_URI); if ($origin_page == self::FREIGEGEBEN_PAGE) { $link = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE); @@ -970,7 +971,7 @@ class InfoCenter extends Auth_Controller $prevFilterId = $this->input->get(self::PREV_FILTER_ID); if (isset($prevFilterId)) { - $link .= '?'.self::FILTER_ID.'='.$prevFilterId.'&'.self::RELOAD_DATASET.'=true'; + $link .= '?'.self::FILTER_ID.'='.$prevFilterId.'&'.self::RELOAD_DATASET.'=true&'.self::KEEP_TABLESORTER_FILTER.'=true'; } $this->navigationlib->setSessionMenu( diff --git a/public/js/FilterWidget.js b/public/js/FilterWidget.js index 6aad74562..dccc8893c 100644 --- a/public/js/FilterWidget.js +++ b/public/js/FilterWidget.js @@ -413,6 +413,7 @@ var FHC_FilterWidget = { }, { successCallback: function(data, textStatus, jqXHR) { + FHC_FilterWidget._cleanTablesorterLocalStorage(); FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR); } } @@ -488,6 +489,7 @@ var FHC_FilterWidget = { }, { successCallback: function(data, textStatus, jqXHR) { + FHC_FilterWidget._cleanTablesorterLocalStorage(); FHC_FilterWidget._failOrReload(data, textStatus, jqXHR); } } @@ -507,6 +509,7 @@ var FHC_FilterWidget = { }, { successCallback: function(data, textStatus, jqXHR) { + FHC_FilterWidget._cleanTablesorterLocalStorage(); FHC_FilterWidget._failOrReload(data, textStatus, jqXHR); } } @@ -935,9 +938,13 @@ var FHC_FilterWidget = { } }); - // Reset filter storage if there is a filter id in url TODO: find better solution - var filter_id = FHC_AjaxClient.getUrlParameter("filter_id"); - if (typeof filter_id !== "undefined") FHC_FilterWidget._cleanTablesorterLocalStorage(); + // Reset filter storage if not specified by get parameter + var keepTsFilter = FHC_AjaxClient.getUrlParameter("keepTsFilter"); + + if (typeof keepTsFilter === "undefined" || keepTsFilter !== "true") + { + FHC_FilterWidget._cleanTablesorterLocalStorage(); + } $.tablesorter.updateAll($("#filterTableDataset")[0].config, true, null); } From 1971ec8ed117589e37e25b312d46a90528da69df Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 25 Oct 2019 10:20:56 +0200 Subject: [PATCH 4/5] - Infocenter.php bugfix: GET parameter list is separated by "&" and not by ? (params filter_id, reloadDataset) --- application/controllers/system/infocenter/InfoCenter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 3a8d51aee..3fb97f887 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -1008,7 +1008,7 @@ class InfoCenter extends Auth_Controller $prevFilterId = $this->input->get(self::PREV_FILTER_ID); if (isset($prevFilterId)) { - $homeLink .= '?'.self::FILTER_ID.'='.$prevFilterId; + $homeLink .= '&'.self::FILTER_ID.'='.$prevFilterId; } $this->navigationlib->setSessionElementMenu( From 89ad21b1ef09f89cca028be7f721a0bdcaf40598 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 25 Oct 2019 10:26:54 +0200 Subject: [PATCH 5/5] - Infocenter uebersicht bugfix: tablesorter filter storage is the same for homepage with and without "/index" (for keeping tablesorter filter when coming back from details page) --- public/js/FilterWidget.js | 28 ++++++++----------- .../js/infocenter/infocenterPersonDataset.js | 22 +++++++++++++++ 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/public/js/FilterWidget.js b/public/js/FilterWidget.js index dccc8893c..a9e0f6cf9 100644 --- a/public/js/FilterWidget.js +++ b/public/js/FilterWidget.js @@ -84,7 +84,7 @@ var FHC_FilterWidget = { // Public methods /** - * To display the FilterWidget using the loaded data prenset in the session + * To display the FilterWidget using the loaded data present in the session */ display: function() { @@ -392,7 +392,6 @@ var FHC_FilterWidget = { }, { successCallback: function(data, textStatus, jqXHR) { - FHC_FilterWidget._cleanTablesorterLocalStorage(); FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR); } } @@ -413,7 +412,6 @@ var FHC_FilterWidget = { }, { successCallback: function(data, textStatus, jqXHR) { - FHC_FilterWidget._cleanTablesorterLocalStorage(); FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR); } } @@ -454,7 +452,6 @@ var FHC_FilterWidget = { }, { successCallback: function(data, textStatus, jqXHR) { - FHC_FilterWidget._cleanTablesorterLocalStorage(); FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR); } } @@ -489,7 +486,6 @@ var FHC_FilterWidget = { }, { successCallback: function(data, textStatus, jqXHR) { - FHC_FilterWidget._cleanTablesorterLocalStorage(); FHC_FilterWidget._failOrReload(data, textStatus, jqXHR); } } @@ -509,7 +505,6 @@ var FHC_FilterWidget = { }, { successCallback: function(data, textStatus, jqXHR) { - FHC_FilterWidget._cleanTablesorterLocalStorage(); FHC_FilterWidget._failOrReload(data, textStatus, jqXHR); } } @@ -840,6 +835,14 @@ var FHC_FilterWidget = { */ _renderDatasetTablesorter: function(data) { + //clear tablesorter filter storage + var keepTsFilter = FHC_AjaxClient.getUrlParameter("keepTsFilter"); + + if (typeof keepTsFilter === "undefined" || keepTsFilter !== "true") + { + FHC_FilterWidget._clearTablesorterLocalStorage(); + } + if (data.hasOwnProperty("checkboxes") && data.checkboxes!=null && data.checkboxes.trim() != "") { $("#filterTableDataset > thead > tr").append("Select"); @@ -938,14 +941,6 @@ var FHC_FilterWidget = { } }); - // Reset filter storage if not specified by get parameter - var keepTsFilter = FHC_AjaxClient.getUrlParameter("keepTsFilter"); - - if (typeof keepTsFilter === "undefined" || keepTsFilter !== "true") - { - FHC_FilterWidget._cleanTablesorterLocalStorage(); - } - $.tablesorter.updateAll($("#filterTableDataset")[0].config, true, null); } }, @@ -1064,9 +1059,8 @@ var FHC_FilterWidget = { /** * Tablesorter filter local storage clean */ - _cleanTablesorterLocalStorage: function() { - - $("#filterTableDataset").trigger("filterResetSaved"); + _clearTablesorterLocalStorage: function() { + localStorage.removeItem("tablesorter-filters"); }, /** diff --git a/public/js/infocenter/infocenterPersonDataset.js b/public/js/infocenter/infocenterPersonDataset.js index 54933165d..816dd2fda 100644 --- a/public/js/infocenter/infocenterPersonDataset.js +++ b/public/js/infocenter/infocenterPersonDataset.js @@ -148,6 +148,28 @@ var InfocenterPersonDataset = { trs.find("input[name=PersonId\\[\\]]").prop("checked", false); } ); + + //make sure tablesorter local storage for homepage url with and without "/index" shares same values + $("#filterTableDataset").bind('filterEnd', function() + { + if (FHC_JS_DATA_STORAGE_OBJECT.called_method === 'index') + { + var pathname = window.location.pathname; + var storageobj = localStorage.getItem("tablesorter-filters"); + var parsed = JSON.parse(storageobj); + var regex = new RegExp(/\/index(?!\.ci\.php)/); + if (regex.test(pathname)) + { + parsed[pathname.replace(regex, "")] = parsed[pathname]; + } + else + { + parsed[pathname + "/index"] = parsed[pathname]; + } + storageobj = JSON.stringify(parsed); + localStorage.setItem("tablesorter-filters", storageobj); + } + }); }, /**