211 lines
7.4 KiB
JavaScript
211 lines
7.4 KiB
JavaScript
/*!
|
|
* Piwik - free/libre analytics platform
|
|
*
|
|
* @link http://piwik.org
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
|
|
$(document).ready(function () {
|
|
function toggleBlock(id, value) {
|
|
$('#' + id).toggle(value == 1);
|
|
}
|
|
|
|
function isEitherDeleteSectionEnabled() {
|
|
return ($('input[name=deleteEnable]:checked').val() == 1)
|
|
|| ($('input[name=deleteReportsEnable]:checked').val() == 1);
|
|
}
|
|
|
|
function toggleOtherDeleteSections() {
|
|
var showSection = isEitherDeleteSectionEnabled();
|
|
toggleBlock('deleteDataEstimateSect', showSection);
|
|
toggleBlock('scheduleSettingsHeadline', showSection);
|
|
toggleBlock('databaseSizeHeadline', showSection);
|
|
toggleBlock('deleteSchedulingSettings', showSection);
|
|
}
|
|
|
|
// reloads purged database size estimate
|
|
var currentRequest;
|
|
|
|
/**
|
|
* @param {boolean} [forceEstimate] (defaults to false)
|
|
*/
|
|
function reloadDbStats(forceEstimate) {
|
|
if (currentRequest) {
|
|
currentRequest.abort();
|
|
}
|
|
|
|
// if the section isn't visible or the manual estimate link is showing, abort
|
|
// (unless on first load or forcing)
|
|
var isFirstLoad = $('#deleteDataEstimate').html() == '';
|
|
if (!isFirstLoad
|
|
&& forceEstimate !== true
|
|
&& (!isEitherDeleteSectionEnabled() || $('#getPurgeEstimateLink').length > 0)) {
|
|
return;
|
|
}
|
|
|
|
$('#deleteDataEstimate').hide();
|
|
|
|
var data = $('#formDeleteSettings').serializeArray();
|
|
var formData = {};
|
|
for (var i = 0; i < data.length; i++) {
|
|
formData[data[i].name] = data[i].value;
|
|
}
|
|
if (forceEstimate === true) {
|
|
formData['forceEstimate'] = 1;
|
|
}
|
|
|
|
currentRequest = new ajaxHelper();
|
|
currentRequest.setLoadingElement('#deleteDataEstimateSect .loadingPiwik');
|
|
currentRequest.addParams({
|
|
module: 'PrivacyManager',
|
|
action: 'getDatabaseSize'
|
|
}, 'get');
|
|
currentRequest.addParams(formData, 'post');
|
|
currentRequest.setCallback(
|
|
function (data) {
|
|
currentRequest = undefined;
|
|
$('#deleteDataEstimate').html(data).show();
|
|
|
|
// lock size of db size estimate
|
|
$('#deleteDataEstimateSect').height($('#deleteDataEstimateSect').height());
|
|
}
|
|
);
|
|
currentRequest.setFormat('html');
|
|
currentRequest.send(false);
|
|
}
|
|
|
|
// make sure certain sections only display if their corresponding features are enabled
|
|
$('input[name=anonymizeIPEnable]').change(function () {
|
|
toggleBlock("anonymizeIPenabled", $(this).val());
|
|
});
|
|
|
|
$('input[name=deleteEnable]').change(function () {
|
|
toggleBlock("deleteLogSettings", $(this).val());
|
|
toggleOtherDeleteSections();
|
|
}).change(reloadDbStats);
|
|
|
|
$('input[name=deleteReportsEnable]').change(function () {
|
|
toggleBlock("deleteReportsSettings", $(this).val());
|
|
toggleBlock("deleteOldReportsMoreInfo", $(this).val());
|
|
toggleOtherDeleteSections();
|
|
}).change(reloadDbStats);
|
|
|
|
// initial toggling calls
|
|
$(function () {
|
|
toggleBlock("deleteLogSettings", $("input[name=deleteEnable]:checked").val());
|
|
toggleBlock("anonymizeIPenabled", $("input[name=anonymizeIPEnable]:checked").val());
|
|
toggleBlock("deleteReportsSettings", $("input[name=deleteReportsEnable]:checked").val());
|
|
// This one is in an AngularJS directive, so is generated later
|
|
setTimeout(function () {
|
|
toggleBlock("deleteOldReportsMoreInfo", $("input[name=deleteReportsEnable]:checked").val());
|
|
}, 500);
|
|
toggleOtherDeleteSections();
|
|
});
|
|
|
|
// make sure the DB size estimate is reloaded every time a delete logs/reports setting is changed
|
|
$('#formDeleteSettings').find('input[type=text]').each(function () {
|
|
$(this).change(reloadDbStats);
|
|
});
|
|
$('#formDeleteSettings').find('input[type=checkbox]').each(function () {
|
|
$(this).click(reloadDbStats);
|
|
});
|
|
|
|
// make sure when the delete log/report settings are submitted, a confirmation popup is
|
|
// displayed first
|
|
$('#deleteLogSettingsSubmit').click(function (e) {
|
|
var deletingLogs = $("input[name=deleteEnable]:checked").val() == 1,
|
|
deletingReports = $("input[name=deleteReportsEnable]:checked").val() == 1,
|
|
confirm_id;
|
|
|
|
// hide all confirmation texts, then show the correct one based on what
|
|
// type of deletion is enabled.
|
|
$('#confirmDeleteSettings').find('>h2').each(function () {
|
|
$(this).hide();
|
|
});
|
|
|
|
if (deletingLogs) {
|
|
confirm_id = deletingReports ? "deleteBothConfirm" : "deleteLogsConfirm";
|
|
}
|
|
else if (deletingReports) {
|
|
confirm_id = "deleteReportsConfirm";
|
|
}
|
|
|
|
if (confirm_id) {
|
|
$("#" + confirm_id).show();
|
|
e.preventDefault();
|
|
|
|
piwikHelper.modalConfirm('#confirmDeleteSettings', {
|
|
yes: function () {
|
|
$('#formDeleteSettings').submit();
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
$('#formDeleteSettings').submit();
|
|
}
|
|
});
|
|
|
|
// execute purge now link click
|
|
$('#purgeDataNowLink').click(function (e) {
|
|
e.preventDefault();
|
|
|
|
var link = this;
|
|
|
|
// if any option has been modified, abort purging and instruct user to save first
|
|
var modified = false;
|
|
$('#formDeleteSettings').find('input').each(function () {
|
|
if (this.type === 'checkbox' || this.type === 'radio') {
|
|
modified |= this.defaultChecked !== this.checked;
|
|
} else {
|
|
modified |= this.defaultValue !== this.value;
|
|
}
|
|
});
|
|
|
|
if (modified) {
|
|
piwikHelper.modalConfirm('#saveSettingsBeforePurge', {yes: function () {}});
|
|
return;
|
|
}
|
|
|
|
// ask user if they really want to delete their old data
|
|
piwikHelper.modalConfirm('#confirmPurgeNow', {
|
|
yes: function () {
|
|
$(link).hide();
|
|
|
|
// execute a data purge
|
|
var ajaxRequest = new ajaxHelper();
|
|
ajaxRequest.setLoadingElement('#deleteSchedulingSettings .loadingPiwik');
|
|
ajaxRequest.addParams({
|
|
module: 'PrivacyManager',
|
|
action: 'executeDataPurge'
|
|
}, 'get');
|
|
ajaxRequest.setCallback(
|
|
function () {
|
|
// force reload
|
|
$('#deleteDataEstimate').html('');
|
|
reloadDbStats();
|
|
|
|
// show 'db purged' message
|
|
$('#db-purged-message').fadeIn('slow');
|
|
setTimeout(function () {
|
|
// hide 'db purged' message & show link
|
|
$('#db-purged-message').fadeOut('slow', function () {
|
|
$(link).show();
|
|
});
|
|
}, 2000);
|
|
}
|
|
);
|
|
ajaxRequest.setFormat('html');
|
|
ajaxRequest.send(false);
|
|
}
|
|
});
|
|
});
|
|
|
|
// get estimate link click
|
|
$('#getPurgeEstimateLink').click(function (e) {
|
|
e.preventDefault();
|
|
reloadDbStats(true);
|
|
});
|
|
|
|
// load initial db size estimate
|
|
reloadDbStats();
|
|
});
|