diff options
author | Thomas Steur <tsteur@users.noreply.github.com> | 2021-07-01 04:05:17 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-01 04:05:17 +0300 |
commit | bb7abdb88ea3ade70d59cb8b733105ebdc804b33 (patch) | |
tree | b079f263c68e09a30671baaa6478b1d0efff75a4 /plugins/SitesManager | |
parent | 9d1e5b5423fa031b578e6758bca761e75a4e70ec (diff) |
Add possiblity to open sites manager and directly edit a specific site using URL parameter (#17726)
* Add possiblity to open sites manager and directly edit a specific site using URL parameter
* fix ui test
* remove url parameter when it is saved or cancelled
* hide utc time so screenshot does not fail every time
* fix screenshot
Diffstat (limited to 'plugins/SitesManager')
5 files changed, 43 insertions, 3 deletions
diff --git a/plugins/SitesManager/angularjs/sites-manager/sites-manager-site.controller.js b/plugins/SitesManager/angularjs/sites-manager/sites-manager-site.controller.js index 4a7ebeccd3..3794c6e9e4 100644 --- a/plugins/SitesManager/angularjs/sites-manager/sites-manager-site.controller.js +++ b/plugins/SitesManager/angularjs/sites-manager/sites-manager-site.controller.js @@ -41,6 +41,11 @@ } else { $scope.currentType = {name: $scope.site.type}; } + + var forcedEditSiteId = sitesManagerTypeModel.getEditSiteIdParameter(); + if (forcedEditSiteId && $scope.site.idsite == forcedEditSiteId) { + editSite(); + } }); }; @@ -159,6 +164,8 @@ } }); }); + + sitesManagerTypeModel.removeEditSiteIdParameterFromHash(); }); }; diff --git a/plugins/SitesManager/angularjs/sites-manager/sites-manager-type-model.js b/plugins/SitesManager/angularjs/sites-manager/sites-manager-type-model.js index 3ccb403e1f..78b59975b6 100644 --- a/plugins/SitesManager/angularjs/sites-manager/sites-manager-type-model.js +++ b/plugins/SitesManager/angularjs/sites-manager/sites-manager-type-model.js @@ -14,11 +14,24 @@ typesById: {}, fetchTypeById: fetchTypeById, fetchAvailableTypes: fetchAvailableTypes, - hasMultipleTypes: hasMultipleTypes + hasMultipleTypes: hasMultipleTypes, + removeEditSiteIdParameterFromHash: removeEditSiteIdParameterFromHash, + getEditSiteIdParameter: getEditSiteIdParameter }; return model; + function getEditSiteIdParameter() { + var search = String(window.location.hash).substr('#/'.length); + var searchParams = piwik.helper.getArrayFromQueryString(search); + if (searchParams.editsiteid && $.isNumeric(searchParams.editsiteid)) { + return searchParams.editsiteid; + } + } + function removeEditSiteIdParameterFromHash() { + window.location.hash = window.location.hash.replace(/editsiteid=\d+/g, ''); + } + function hasMultipleTypes(typeId) { return fetchAvailableTypes().then(function (types) { diff --git a/plugins/SitesManager/angularjs/sites-manager/sites-manager.controller.js b/plugins/SitesManager/angularjs/sites-manager/sites-manager.controller.js index 3b50ce06d5..891835b928 100644 --- a/plugins/SitesManager/angularjs/sites-manager/sites-manager.controller.js +++ b/plugins/SitesManager/angularjs/sites-manager/sites-manager.controller.js @@ -102,9 +102,16 @@ var triggerAddSiteIfRequested = function() { var search = String(window.location.search); + var searchParams = piwik.helper.getArrayFromQueryString(search); - if(piwik.helper.getArrayFromQueryString(search).showaddsite == 1) + var forcedEditSiteId = sitesManagerTypeModel.getEditSiteIdParameter(); + + if(searchParams.showaddsite == 1) { addNewEntity(); + } else if(forcedEditSiteId) { + adminSites.search = parseInt(forcedEditSiteId, 10); + adminSites.searchSite(adminSites.search); + } }; var initUtcTime = function() { @@ -232,6 +239,7 @@ siteElement[0].scrollIntoView(); } } + sitesManagerTypeModel.removeEditSiteIdParameterFromHash(); }; var lookupCurrentEditSite = function () { diff --git a/plugins/SitesManager/tests/UI/SitesManager_spec.js b/plugins/SitesManager/tests/UI/SitesManager_spec.js index 80fa3e548d..af28b3cbfb 100644 --- a/plugins/SitesManager/tests/UI/SitesManager_spec.js +++ b/plugins/SitesManager/tests/UI/SitesManager_spec.js @@ -87,4 +87,13 @@ describe("SitesManager", function () { }); }); }); -});
\ No newline at end of file + + it("should be able to open and edit a site directly based on url parameter", async function() { + await assertScreenshotEquals("site_edit_url", async function () { + await page.goto(url + '#/editsiteid=23'); + await page.evaluate(function () { + $('.form-help:contains(UTC time is)').hide(); + }); + }); + }); +}); diff --git a/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png b/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png new file mode 100644 index 0000000000..0dca054ecb --- /dev/null +++ b/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e0350c0722f80f1f34f543e33983ef1b76f2e94f762b66564b325de0ace4340 +size 331773 |