/*! * 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 = ''; html += '
'; if (searchGlobalHasValues) { var checkedStr = checked ? ' checked ' : ''; html += ''; + ''; html += '
' + searchKeywordLabel + ' (' + strDefault + ') ' + ': ' + piwikHelper.htmlEntities( globalKeywordParameters ) + (globalCategoryParameters.length ? ', ' + searchCategoryLabel + ': ' + piwikHelper.htmlEntities(globalCategoryParameters) : '') + '
'; } html += '
' + sitesearchIntro + '
'; html += '
'; html += '
'; // if custom var plugin is disabled, category tracking not supported if (globalCategoryParameters != 'globalSearchCategoryParametersIsDisabled') { html += '
'; } html += '
'; return html; } function getEcommerceSelector(enabled) { var html = ''; return html; } function getTimezoneSelector(selectedTimezone) { var html = ''; return html; } function getCurrencySelector(selectedCurrency) { var 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(); });