/*!
* Piwik - Web Analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
// NOTE: if you cannot find the definition of a variable here, look in index.twig
function SitesManager(_timezones, _currencies, _defaultTimezone, _defaultCurrency) {
var timezones = _timezones;
var currencies = _currencies;
var defaultTimezone = _defaultTimezone;
var defaultCurrency = _defaultCurrency;
var siteBeingEdited = false;
var siteBeingEditedName = '';
function sendDeleteSiteAJAX(idSite) {
var ajaxHandler = new ajaxHelper();
ajaxHandler.addParams({
idSite: idSite,
module: 'API',
format: 'json',
method: 'SitesManager.deleteSite'
}, 'GET');
ajaxHandler.redirectOnSuccess();
ajaxHandler.setLoadingElement();
ajaxHandler.send(true);
}
function sendAddSiteAJAX(row) {
var siteName = $(row).find('input#name').val();
var urls = $(row).find('textarea#urls').val();
urls = urls.trim().split("\n");
var excludedIps = $(row).find('textarea#excludedIps').val();
excludedIps = piwikHelper.getApiFormatTextarea(excludedIps);
var timezone = $(row).find('#timezones option:selected').val();
var currency = $(row).find('#currencies option:selected').val();
var excludedQueryParameters = $(row).find('textarea#excludedQueryParameters').val();
excludedQueryParameters = piwikHelper.getApiFormatTextarea(excludedQueryParameters);
var excludedUserAgents = $(row).find('textarea#excludedUserAgents').val();
excludedUserAgents = piwikHelper.getApiFormatTextarea(excludedUserAgents);
var keepURLFragments = $('#keepURLFragmentSelect', row).val();
var ecommerce = $(row).find('#ecommerce option:selected').val();
var sitesearch = $(row).find('#sitesearch option:selected').val();
var searchKeywordParameters = $('input#searchKeywordParameters').val();
var searchCategoryParameters = $('input#searchCategoryParameters').val();
var ajaxHandler = new ajaxHelper();
ajaxHandler.addParams({
module: 'API',
format: 'json',
method: 'SitesManager.addSite'
}, 'GET');
ajaxHandler.addParams({
siteName: siteName,
timezone: timezone,
currency: currency,
ecommerce: ecommerce,
excludedIps: excludedIps,
excludedQueryParameters: excludedQueryParameters,
excludedUserAgents: excludedUserAgents,
keepURLFragments: keepURLFragments,
siteSearch: sitesearch,
searchKeywordParameters: searchKeywordParameters,
searchCategoryParameters: searchCategoryParameters,
urls: urls
}, 'POST');
ajaxHandler.redirectOnSuccess();
ajaxHandler.setLoadingElement();
ajaxHandler.send(true);
}
function sendUpdateSiteAJAX(row) {
var siteName = $(row).find('input#siteName').val();
var idSite = $(row).children('#idSite').html();
var urls = $(row).find('textarea#urls').val();
urls = urls.trim().split("\n");
var excludedIps = $(row).find('textarea#excludedIps').val();
excludedIps = piwikHelper.getApiFormatTextarea(excludedIps);
var excludedQueryParameters = $(row).find('textarea#excludedQueryParameters').val();
excludedQueryParameters = piwikHelper.getApiFormatTextarea(excludedQueryParameters);
var excludedUserAgents = $(row).find('textarea#excludedUserAgents').val();
excludedUserAgents = piwikHelper.getApiFormatTextarea(excludedUserAgents);
var keepURLFragments = $('#keepURLFragmentSelect', row).val();
var timezone = $(row).find('#timezones option:selected').val();
var currency = $(row).find('#currencies option:selected').val();
var ecommerce = $(row).find('#ecommerce option:selected').val();
var sitesearch = $(row).find('#sitesearch option:selected').val();
var searchKeywordParameters = $('input#searchKeywordParameters').val();
var searchCategoryParameters = $('input#searchCategoryParameters').val();
var ajaxHandler = new ajaxHelper();
ajaxHandler.addParams({
module: 'API',
format: 'json',
method: 'SitesManager.updateSite',
idSite: idSite
}, 'GET');
ajaxHandler.addParams({
siteName: siteName,
timezone: timezone,
currency: currency,
ecommerce: ecommerce,
excludedIps: excludedIps,
excludedQueryParameters: excludedQueryParameters,
excludedUserAgents: excludedUserAgents,
keepURLFragments: keepURLFragments,
siteSearch: sitesearch,
searchKeywordParameters: searchKeywordParameters,
searchCategoryParameters: searchCategoryParameters,
urls: urls
}, 'POST');
ajaxHandler.redirectOnSuccess();
ajaxHandler.setLoadingElement();
ajaxHandler.send(true);
}
function sendGlobalSettingsAJAX() {
var timezone = $('#defaultTimezone').find('option:selected').val();
var currency = $('#defaultCurrency').find('option:selected').val();
var excludedIps = $('textarea#globalExcludedIps').val();
excludedIps = piwikHelper.getApiFormatTextarea(excludedIps);
var excludedQueryParameters = $('textarea#globalExcludedQueryParameters').val();
excludedQueryParameters = piwikHelper.getApiFormatTextarea(excludedQueryParameters);
var globalExcludedUserAgents = $('textarea#globalExcludedUserAgents').val();
globalExcludedUserAgents = piwikHelper.getApiFormatTextarea(globalExcludedUserAgents);
var globalKeepURLFragments = $('#globalKeepURLFragments').is(':checked') ? 1 : 0;
var searchKeywordParameters = $('input#globalSearchKeywordParameters').val();
var searchCategoryParameters = $('input#globalSearchCategoryParameters').val();
var enableSiteUserAgentExclude = $('input#enableSiteUserAgentExclude').is(':checked') ? 1 : 0;
var ajaxHandler = new ajaxHelper();
ajaxHandler.addParams({
module: 'SitesManager',
format: 'json',
action: 'setGlobalSettings'
}, 'GET');
ajaxHandler.addParams({
timezone: timezone,
currency: currency,
excludedIps: excludedIps,
excludedQueryParameters: excludedQueryParameters,
excludedUserAgents: globalExcludedUserAgents,
keepURLFragments: globalKeepURLFragments,
enableSiteUserAgentExclude: enableSiteUserAgentExclude,
searchKeywordParameters: searchKeywordParameters,
searchCategoryParameters: searchCategoryParameters
}, 'POST');
ajaxHandler.redirectOnSuccess();
ajaxHandler.setLoadingElement('#ajaxLoadingGlobalSettings');
ajaxHandler.setErrorElement('#ajaxErrorGlobalSettings');
ajaxHandler.send(true);
}
this.init = function () {
$('.addRowSite').click(function () {
piwikHelper.hideAjaxError();
$('.addRowSite').toggle();
var excludedUserAgentCell = '';
if ($('#exclude-user-agent-header').is(':visible')) {
excludedUserAgentCell = '
' + excludedUserAgentsHelp + ' ';
}
var numberOfRows = $('table#editSites')[0].rows.length;
var newRowId = 'rowNew' + numberOfRows;
var submitButtonHtml = ' ';
$($.parseHTML(' \
\
' + submitButtonHtml + ' \
' + aliasUrlsHelp + keepURLFragmentSelectHTML + ' \
' + excludedIpHelp + ' \
' + excludedQueryParametersHelp + ' ' +
excludedUserAgentCell +
'' + getSitesearchSelector(false) + ' \
' + getTimezoneSelector(defaultTimezone) + ' ' + timezoneHelp + ' \
' + getCurrencySelector(defaultCurrency) + ' ' + currencyHelp + ' \
' + getEcommerceSelector(0) + ' ' + ecommerceHelp + ' \
' + submitButtonHtml + ' \
' + sprintf(_pk_translate('General_OrCancel'), "", "") + ' \
'))
.appendTo('#editSites')
;
piwikHelper.lazyScrollTo('#' + newRowId);
$('.addsite').click(function () {
sendAddSiteAJAX($('tr#' + newRowId));
});
$('.cancel').click(function () {
piwikHelper.hideAjaxError();
$(this).parents('tr').remove();
$('.addRowSite').toggle();
});
return false;
});
// when click on deleteuser, the we ask for confirmation and then delete the user
$('.deleteSite').click(function () {
piwikHelper.hideAjaxError();
var idRow = $(this).attr('id');
var nameToDelete = $(this).parent().parent().find('input#siteName').val() || $(this).parent().parent().find('td#siteName').html();
var idsiteToDelete = $(this).parent().parent().find('#idSite').html();
$('#confirm').find('h2').text(sprintf(_pk_translate('SitesManager_DeleteConfirm'), '"' + nameToDelete + '" (idSite = ' + idsiteToDelete + ')'));
piwikHelper.modalConfirm('#confirm', { yes: function () {
sendDeleteSiteAJAX(idsiteToDelete);
}});
}
);
var alreadyEdited = [];
$('.editSite')
.click(function () {
piwikHelper.hideAjaxError();
var idRow = $(this).attr('id');
if (alreadyEdited[idRow] == 1) return;
if (siteBeingEdited) {
$('#alert').find('h2').text(sprintf(_pk_translate('SitesManager_OnlyOneSiteAtTime'), '"' + $("
").html(siteBeingEditedName).text() + '"'));
piwikHelper.modalConfirm('#alert', {});
return;
}
siteBeingEdited = true;
alreadyEdited[idRow] = 1;
$('tr#' + idRow + ' .editableSite').each(
// make the fields editable
// change the EDIT button to VALID button
function (i, n) {
var contentBefore = $(n).html();
var idName = $(n).attr('id');
if (idName == 'siteName') {
siteBeingEditedName = contentBefore;
var contentAfter = ' ';
var inputSave = $(' ')
.click(function () { submitUpdateSite($(this).parent()); });
var spanCancel = $(' ' + sprintf(_pk_translate('General_OrCancel'), "", "") + '
')
.click(function () { piwikHelper.refreshAfter(0); });
$(n)
.html(contentAfter)
.keypress(submitSiteOnEnter)
.append(inputSave)
.append(spanCancel);
}
else if (idName == 'urls') {
var keepURLFragmentsForSite = $(this).closest('tr').attr('data-keep-url-fragments');
var contentAfter = '';
contentAfter += ' ' + aliasUrlsHelp + keepURLFragmentSelectHTML;
$(n).html(contentAfter).find('select').val(keepURLFragmentsForSite);
}
else if (idName == 'excludedIps') {
var contentAfter = '';
contentAfter += ' ' + excludedIpHelp;
$(n).html(contentAfter);
}
else if (idName == 'excludedQueryParameters') {
var contentAfter = '';
contentAfter += ' ' + excludedQueryParametersHelp;
$(n).html(contentAfter);
}
else if (idName == 'excludedUserAgents') {
var contentAfter = ' ' + excludedUserAgentsHelp;
$(n).html(contentAfter);
}
else if (idName == 'timezone') {
var contentAfter = getTimezoneSelector(contentBefore);
contentAfter += ' ' + timezoneHelp;
$(n).html(contentAfter);
}
else if (idName == 'currency') {
var contentAfter = getCurrencySelector(contentBefore);
contentAfter += ' ' + currencyHelp;
$(n).html(contentAfter);
}
else if (idName == 'ecommerce') {
var ecommerceActive = contentBefore.indexOf("ecommerceActive") > 0 ? 1 : 0;
contentAfter = getEcommerceSelector(ecommerceActive) + ' ' + ecommerceHelp;
$(n).html(contentAfter);
}
else if (idName == 'sitesearch') {
contentAfter = getSitesearchSelector(contentBefore);
$(n).html(contentAfter);
onClickSiteSearchUseDefault();
}
}
);
$(this)
.toggle()
.parent()
.prepend($(' ')
.click(function () { sendUpdateSiteAJAX($('tr#' + idRow)); })
);
});
$('#globalSettingsSubmit').click(function () {
sendGlobalSettingsAJAX();
});
$('#defaultTimezone').html(getTimezoneSelector(defaultTimezone));
$('#defaultCurrency').html(getCurrencySelector(defaultCurrency));
$('td.editableSite').click(function (event) {
$(this).parent().find('.editSite').click();
});
};
function getSitesearchSelector(contentBefore) {
var globalKeywordParameters = $('input#globalSearchKeywordParameters').val().trim();
var globalCategoryParameters = $('input#globalSearchCategoryParameters').val().trim();
if (contentBefore) {
var enabled = contentBefore.indexOf("sitesearchActive") > 0 ? 1 : 0;
var spanSearch = $(contentBefore).filter('.sskp');
var searchKeywordParameters = spanSearch.attr('sitesearch_keyword_parameters').trim();
var searchCategoryParameters = spanSearch.attr('sitesearch_category_parameters').trim();
var checked = globalKeywordParameters.length && !searchKeywordParameters.trim().length;
} else {
var searchKeywordParameters = globalKeywordParameters;
var searchCategoryParameters = globalCategoryParameters;
var enabled = searchKeywordParameters.length || searchCategoryParameters.length; // default is enabled
var checked = enabled;
}
var searchGlobalHasValues = globalKeywordParameters.trim().length;
var html = '';
var selected = ' selected="selected" ';
html += '' + sitesearchEnabled + ' ';
html += '' + sitesearchDisabled + ' ';
html += ' ';
html += ' ';
if (searchGlobalHasValues) {
var checkedStr = checked ? ' checked ' : '';
html += ' '
+ sitesearchUseDefault + ' ';
+ '';
html += ''
+ searchKeywordLabel + ' (' + strDefault + ') ' + ': '
+ piwikHelper.htmlEntities( globalKeywordParameters )
+ (globalCategoryParameters.length ? ', ' + searchCategoryLabel + ': ' + piwikHelper.htmlEntities(globalCategoryParameters) : '')
+ '
';
}
html += '' + sitesearchIntro + '
';
html += ' ';
return html;
}
function getEcommerceSelector(enabled) {
var html = '';
var selected = ' selected="selected" ';
html += '' + ecommerceDisabled + ' ';
html += '' + ecommerceEnabled + ' ';
html += ' ';
return html;
}
function getTimezoneSelector(selectedTimezone) {
var html = '';
for (var continent in timezones) {
html += '';
for (var timezoneId in timezones[continent]) {
var selected = '';
if (timezoneId == selectedTimezone) {
selected = ' selected="selected" ';
}
html += '' + timezones[continent][timezoneId] + ' ';
}
html += " \n";
}
html += ' ';
return html;
}
function getCurrencySelector(selectedCurrency) {
var html = '';
for (var currency in currencies) {
var selected = '';
if (currency == selectedCurrency) {
selected = ' selected="selected" ';
}
html += '' + currencies[currency] + ' ';
}
html += ' ';
return html;
}
function submitSiteOnEnter(e) {
var key = e.keyCode || e.which;
if (key == 13) {
submitUpdateSite(this);
$(this).find('.addsite').click();
}
}
function submitUpdateSite(self) {
$(self).parent().find('.updateSite').click();
}
}
function onClickSiteSearchUseDefault() {
// Site Search enabled
if ($('select#sitesearch').val() == "1") {
$('#sitesearchUseDefault').show();
// Use default is checked
if ($('#sitesearchUseDefaultCheck').is(':checked')) {
$('#searchSiteParameters').hide();
$('#sitesearchIntro').show();
$('#searchKeywordParameters,#searchCategoryParameters').val('');
$('.searchDisplayParams').show();
// Use default is unchecked
} else {
$('#sitesearchIntro').hide();
$('.searchDisplayParams').hide();
$('#searchSiteParameters').show();
}
} else {
$('.searchDisplayParams').hide();
$('#sitesearchUseDefault').hide();
$('#searchSiteParameters').hide();
$('#sitesearchIntro').show();
}
}
$(function () {
// when code element is clicked, select the text
$('.trackingHelp code').click(function() {
// credit where credit is due:
// http://stackoverflow.com/questions/1173194/select-all-div-text-with-single-mouse-click
var range;
if (document.body.createTextRange) // MSIE
{
range = document.body.createTextRange();
range.moveToElementText(this);
range.select();
}
else if (window.getSelection) // others
{
range = document.createRange();
range.selectNodeContents(this);
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
}
})
.click();
});