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:
authormattab <matthieu.aubry@gmail.com>2013-05-15 09:03:59 +0400
committermattab <matthieu.aubry@gmail.com>2013-05-15 09:03:59 +0400
commit36fc4ca1db9840fe25bd0f6ac6f8e51ac5bd9a06 (patch)
tree4f15b9539bee5099fc316d94436c07b024bcba89
parent6a714fb5a8a2898383ba83911b010ad089e64238 (diff)
Refs #2135
* when changing website in the selector, the segment parameter will be reset (to no segment).
-rw-r--r--plugins/CoreHome/templates/autocomplete.js26
-rw-r--r--themes/default/common.js49
2 files changed, 47 insertions, 28 deletions
diff --git a/plugins/CoreHome/templates/autocomplete.js b/plugins/CoreHome/templates/autocomplete.js
index 0e5fa3d1fa..1a9a523c21 100644
--- a/plugins/CoreHome/templates/autocomplete.js
+++ b/plugins/CoreHome/templates/autocomplete.js
@@ -14,7 +14,7 @@ function switchSite(id, name, showAjaxLoading, idCanBeAll) {
$('.sites_autocomplete input').val(id);
$('.custom_select_main_link').text(name);
$('.custom_select_main_link').addClass('custom_select_loading');
- broadcast.propagateNewPage('idSite=' + id, showAjaxLoading);
+ broadcast.propagateNewPage('segment=&idSite=' + id, showAjaxLoading);
}
return false;
}
@@ -29,6 +29,15 @@ $(function () {
// sets up every un-inited site selector widget
piwik.initSiteSelectors = function () {
+ function getUrlForWebsiteId(idSite) {
+ var idSiteParam = 'idSite=' + idSite;
+ var newParameters = 'segment=&' + idSiteParam;
+ var hash = broadcast.isHashExists() ? broadcast.getHashFromUrl() : "",
+ linkUrl = piwikHelper.getCurrentQueryStringWithParametersModified(newParameters)
+ + '#' + piwikHelper.getQueryStringWithParametersModified(hash.substring(1), newParameters);
+ return linkUrl;
+ }
+
$('.sites_autocomplete').each(function () {
var selector = $(this);
@@ -117,11 +126,8 @@ $(function () {
}
}).data("ui-autocomplete")._renderItem = function (ul, item) {
$(ul).addClass('siteSelect');
-
- var idSiteParam = 'idSite=' + item.id,
- hash = broadcast.isHashExists() ? broadcast.getHashFromUrl().replace(/idSite=[0-9]+/, idSiteParam) : "",
- linkUrl = piwikHelper.getCurrentQueryStringWithParametersModified(idSiteParam) + hash,
- link = $("<a></a>").html(item.label).attr('href', linkUrl),
+ var linkUrl = getUrlForWebsiteId(item.id);
+ var link = $("<a></a>").html(item.label).attr('href', linkUrl),
listItem = $('<li></li>');
listItem.data("item.ui-autocomplete", item)
@@ -162,12 +168,10 @@ $(function () {
$('.custom_select_block', selector).on('mouseenter', function () {
$('.custom_select_ul_list li a', selector).each(function () {
- var hash = broadcast.getHashFromUrl();
- hash = hash ? hash.replace(/idSite=[0-9]+/, 'idSite=' + $(this).attr('siteid')) : "";
+ var idSite = $(this).attr('siteid');
- var queryString = piwikHelper.getCurrentQueryStringWithParametersModified(
- 'idSite=' + $(this).attr('siteid'));
- $(this).attr('href', queryString + hash);
+ var linkUrl = getUrlForWebsiteId(idSite);
+ $(this).attr('href', linkUrl);
});
});
diff --git a/themes/default/common.js b/themes/default/common.js
index 2e84968968..adc6d6ed06 100644
--- a/themes/default/common.js
+++ b/themes/default/common.js
@@ -113,6 +113,32 @@ var piwikHelper = {
});
},
+ getQueryStringWithParametersModified: function (queryString, newParameters) {
+ if (queryString != '') {
+ var r, i, keyvalue, keysvalues = newParameters.split('&');
+ var appendUrl = '';
+ for (i = 0; i < keysvalues.length; i++) {
+ keyvalue = keysvalues[i].split('=');
+ r = new RegExp('(^|[?&])' + keyvalue[0] + '=[^&]*');
+ queryString = queryString.replace(r, '');
+
+ // empty value, eg. &segment=, we remove the parameter from URL entirely
+ if (keyvalue[1].length == 0) {
+ continue;
+ }
+ appendUrl += '&' + keyvalue[0] + '=' + keyvalue[1];
+ }
+ queryString += appendUrl;
+ if (queryString[0] == '&') {
+ queryString = '?' + queryString.substring(1);
+ }
+ } else {
+ queryString = '?' + newParameters;
+ }
+
+ return queryString;
+ },
+
/**
* Returns the current query string with the given parameters modified
* @param {object} newparams parameters to be modified
@@ -120,24 +146,13 @@ var piwikHelper = {
*/
getCurrentQueryStringWithParametersModified: function(newparams)
{
- var parameters = String(window.location.search);
- if(newparams) {
- if(parameters != '') {
- var r, i, keyvalue, keysvalues = newparams.split('&');
- for(i = 0; i < keysvalues.length; i++) {
- keyvalue = keysvalues[i].split('=');
- r = new RegExp('(^|[?&])'+keyvalue[0]+'=[^&]*');
- parameters = parameters.replace(r, '');
- }
- parameters += '&' + newparams;
- if(parameters[0] == '&') {
- parameters = '?' + parameters.substring(1);
- }
- } else {
- parameters = '?' + newparams;
- }
+ var queryString = String(window.location.search);
+ if (newparams) {
+ queryString = this.getQueryStringWithParametersModified(queryString, newparams);
}
- return String(window.location.pathname) + parameters;
+ var value = String(window.location.pathname) + queryString;
+
+ return value;
},
/**