PDF rausgenommen
This commit is contained in:
@ -0,0 +1,226 @@
|
||||
/*!
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
(function () {
|
||||
angular.module('piwikApp').controller('SitesManagerSiteController', SitesManagerSiteController);
|
||||
|
||||
SitesManagerSiteController.$inject = ['$scope', '$filter', 'sitesManagerApiHelper', 'sitesManagerTypeModel', 'piwikApi', '$timeout'];
|
||||
|
||||
function SitesManagerSiteController($scope, $filter, sitesManagerApiHelper, sitesManagerTypeModel, piwikApi, $timeout) {
|
||||
|
||||
var translate = $filter('translate');
|
||||
|
||||
var updateView = function () {
|
||||
$timeout(function () {
|
||||
$('.editingSite').find('select').material_select();
|
||||
Materialize.updateTextFields();
|
||||
});
|
||||
}
|
||||
|
||||
var init = function () {
|
||||
|
||||
initModel();
|
||||
initActions();
|
||||
|
||||
$scope.site.isLoading = true;
|
||||
sitesManagerTypeModel.fetchTypeById($scope.site.type).then(function (type) {
|
||||
$scope.site.isLoading = false;
|
||||
|
||||
if (type) {
|
||||
$scope.currentType = type;
|
||||
$scope.howToSetupUrl = type.howToSetupUrl;
|
||||
$scope.isInternalSetupUrl = '?' === ('' + type.howToSetupUrl).substr(0, 1);
|
||||
$scope.typeSettings = type.settings;
|
||||
|
||||
if (isSiteNew()) {
|
||||
$scope.measurableSettings = angular.copy(type.settings);
|
||||
}
|
||||
} else {
|
||||
$scope.currentType = {name: $scope.site.type};
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var initActions = function () {
|
||||
|
||||
$scope.editSite = editSite;
|
||||
$scope.saveSite = saveSite;
|
||||
$scope.openDeleteDialog = openDeleteDialog;
|
||||
$scope.site['delete'] = deleteSite;
|
||||
};
|
||||
|
||||
var initModel = function() {
|
||||
|
||||
if (isSiteNew()) {
|
||||
initNewSite();
|
||||
} else {
|
||||
$scope.site.excluded_ips = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.site.excluded_ips);
|
||||
$scope.site.excluded_parameters = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.site.excluded_parameters);
|
||||
$scope.site.excluded_user_agents = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.site.excluded_user_agents);
|
||||
$scope.site.sitesearch_keyword_parameters = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.site.sitesearch_keyword_parameters);
|
||||
$scope.site.sitesearch_category_parameters = sitesManagerApiHelper.commaDelimitedFieldToArray($scope.site.sitesearch_category_parameters);
|
||||
}
|
||||
|
||||
$scope.site.removeDialog = {};
|
||||
|
||||
updateView();
|
||||
};
|
||||
|
||||
var editSite = function () {
|
||||
$scope.site.editMode = true;
|
||||
|
||||
$scope.measurableSettings = [];
|
||||
$scope.site.isLoading = true;
|
||||
piwikApi.fetch({method: 'SitesManager.getSiteSettings', idSite: $scope.site.idsite}).then(function (settings) {
|
||||
$scope.measurableSettings = settings;
|
||||
$scope.site.isLoading = false;
|
||||
}, function () {
|
||||
$scope.site.isLoading = false;
|
||||
});
|
||||
|
||||
updateView();
|
||||
};
|
||||
|
||||
var saveSite = function() {
|
||||
|
||||
var sendSiteSearchKeywordParams = $scope.site.sitesearch == '1' && !$scope.site.useDefaultSiteSearchParams;
|
||||
var sendSearchCategoryParameters = sendSiteSearchKeywordParams && $scope.customVariablesActivated;
|
||||
|
||||
var values = {
|
||||
siteName: $scope.site.name,
|
||||
timezone: $scope.site.timezone,
|
||||
currency: $scope.site.currency,
|
||||
type: $scope.site.type,
|
||||
settingValues: {}
|
||||
};
|
||||
|
||||
var isNewSite = isSiteNew();
|
||||
|
||||
var apiMethod = 'SitesManager.addSite';
|
||||
if (!isNewSite) {
|
||||
apiMethod = 'SitesManager.updateSite';
|
||||
values.idSite = $scope.site.idsite;
|
||||
}
|
||||
|
||||
angular.forEach($scope.measurableSettings, function (settings) {
|
||||
if (!values['settingValues'][settings.pluginName]) {
|
||||
values['settingValues'][settings.pluginName] = [];
|
||||
}
|
||||
|
||||
angular.forEach(settings.settings, function (setting) {
|
||||
var value = setting.value;
|
||||
if (value === false) {
|
||||
value = '0';
|
||||
} else if (value === true) {
|
||||
value = '1';
|
||||
}
|
||||
if (angular.isArray(value) && setting.uiControl == 'textarea') {
|
||||
var newValue = [];
|
||||
angular.forEach(value, function (val) {
|
||||
// as they are line separated we cannot trim them in the view
|
||||
if (val) {
|
||||
newValue.push(val);
|
||||
}
|
||||
});
|
||||
value = newValue;
|
||||
}
|
||||
|
||||
values['settingValues'][settings.pluginName].push({
|
||||
name: setting.name,
|
||||
value: value
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
piwikApi.post({method: apiMethod}, values).then(function (response) {
|
||||
$scope.site.editMode = false;
|
||||
|
||||
var UI = require('piwik/UI');
|
||||
var notification = new UI.Notification();
|
||||
|
||||
var message = 'Website updated';
|
||||
if (isNewSite) {
|
||||
message = 'Website created';
|
||||
}
|
||||
|
||||
notification.show(message, {context: 'success', id: 'websitecreated'});
|
||||
notification.scrollToNotification();
|
||||
|
||||
if (!$scope.site.idsite && response && response.value) {
|
||||
$scope.site.idsite = response.value;
|
||||
}
|
||||
|
||||
angular.forEach(values.settingValues, function (settings, pluginName) {
|
||||
angular.forEach(settings, function (setting) {
|
||||
if (setting.name === 'urls') {
|
||||
$scope.site.alias_urls = setting.value;
|
||||
} else {
|
||||
$scope.site[setting.name] = setting.value;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
var isSiteNew = function() {
|
||||
return angular.isUndefined($scope.site.idsite);
|
||||
};
|
||||
|
||||
var initNewSite = function() {
|
||||
$scope.site.editMode = true;
|
||||
$scope.site.timezone = $scope.globalSettings.defaultTimezone;
|
||||
$scope.site.currency = $scope.globalSettings.defaultCurrency;
|
||||
|
||||
if ($scope.typeSettings) {
|
||||
// we do not want to manipulate initial type settings
|
||||
$scope.measurableSettings = angular.copy($scope.typeSettings);
|
||||
}
|
||||
};
|
||||
|
||||
var openDeleteDialog = function() {
|
||||
|
||||
$scope.site.removeDialog.title = translate('SitesManager_DeleteConfirm', '"' + $scope.site.name + '" (idSite = ' + $scope.site.idsite + ')');
|
||||
$scope.site.removeDialog.show = true;
|
||||
};
|
||||
|
||||
var deleteSite = function() {
|
||||
var redirectParams = $scope.redirectParams;
|
||||
|
||||
// if the current idSite in the URL is the site we're deleting, then we have to make to change it. otherwise,
|
||||
// if a user goes to another page, the invalid idSite may cause a fatal error.
|
||||
if (broadcast.getValueFromUrl('idSite') == $scope.site.idsite) {
|
||||
var sites = $scope.adminSites.sites;
|
||||
|
||||
var otherSite;
|
||||
for (var i = 0; i !== sites.length; ++i) {
|
||||
if (sites[i].idsite != $scope.site.idsite) {
|
||||
otherSite = sites[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (otherSite) {
|
||||
redirectParams = $.extend({}, redirectParams, { idSite: otherSite.idsite });
|
||||
}
|
||||
}
|
||||
|
||||
var ajaxHandler = new ajaxHelper();
|
||||
|
||||
ajaxHandler.addParams({
|
||||
idSite: $scope.site.idsite,
|
||||
module: 'API',
|
||||
format: 'json',
|
||||
method: 'SitesManager.deleteSite'
|
||||
}, 'GET');
|
||||
|
||||
ajaxHandler.redirectOnSuccess(redirectParams);
|
||||
ajaxHandler.setLoadingElement();
|
||||
ajaxHandler.send();
|
||||
};
|
||||
|
||||
init();
|
||||
}
|
||||
})();
|
Reference in New Issue
Block a user