diff options
author | mattab <matthieu.aubry@gmail.com> | 2013-05-15 09:03:59 +0400 |
---|---|---|
committer | mattab <matthieu.aubry@gmail.com> | 2013-05-15 09:03:59 +0400 |
commit | 36fc4ca1db9840fe25bd0f6ac6f8e51ac5bd9a06 (patch) | |
tree | 4f15b9539bee5099fc316d94436c07b024bcba89 | |
parent | 6a714fb5a8a2898383ba83911b010ad089e64238 (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.js | 26 | ||||
-rw-r--r-- | themes/default/common.js | 49 |
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; }, /** |