Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Steur <tsteur@users.noreply.github.com>2021-07-01 04:05:17 +0300
committerGitHub <noreply@github.com>2021-07-01 04:05:17 +0300
commitbb7abdb88ea3ade70d59cb8b733105ebdc804b33 (patch)
treeb079f263c68e09a30671baaa6478b1d0efff75a4 /plugins
parent9d1e5b5423fa031b578e6758bca761e75a4e70ec (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')
-rw-r--r--plugins/SitesManager/angularjs/sites-manager/sites-manager-site.controller.js7
-rw-r--r--plugins/SitesManager/angularjs/sites-manager/sites-manager-type-model.js15
-rw-r--r--plugins/SitesManager/angularjs/sites-manager/sites-manager.controller.js10
-rw-r--r--plugins/SitesManager/tests/UI/SitesManager_spec.js11
-rw-r--r--plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png3
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