Skip to content
Extraits de code Groupes Projets
Valider 36fc4ca1 rédigé par mattab's avatar mattab
Parcourir les fichiers

Refs #2135

 * when changing website in the selector, the segment parameter will be reset (to no segment).
parent 6a714fb5
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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);
});
});
......
......@@ -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;
},
/**
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter