Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbenakamoorthi <benaka.moorthi@gmail.com>2012-04-07 06:30:49 +0400
committerbenakamoorthi <benaka.moorthi@gmail.com>2012-04-07 06:30:49 +0400
commitf4d248d5e1792e49a9eea42801a4ab120dc0663f (patch)
treee006abc7fa499ea4a13ec29637faf8ffeb36f849 /plugins/PrivacyManager/templates
parent259028c93bdbe8bb19156bfe92d0c7dc5e47a336 (diff)
Fixes #53. Augmented the log data deletion feature. Added the ability to purge old reports and metrics.
Other changes: * Added the following plugin functions: Piwik_DropTables, Piwik_OptimizeTables, Piwik_DeleteAllRows. Also refactored existing code to use them. * Modified graph, tag cloud & datatable templates/views to show a different message if there's no data for a report and if its possible that report was purged. * Refactored DbStats API, added getAllTablesStatus method that doesn't modify the SHOW TABLE STATUS result. * Deletelogs config options are now stored in the DB. * Added task priority support to the TaskScheduler. git-svn-id: http://dev.piwik.org/svn/trunk@6174 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'plugins/PrivacyManager/templates')
-rwxr-xr-xplugins/PrivacyManager/templates/databaseSize.tpl4
-rw-r--r--plugins/PrivacyManager/templates/privacySettings.js141
-rw-r--r--plugins/PrivacyManager/templates/privacySettings.tpl211
3 files changed, 265 insertions, 91 deletions
diff --git a/plugins/PrivacyManager/templates/databaseSize.tpl b/plugins/PrivacyManager/templates/databaseSize.tpl
new file mode 100755
index 0000000000..fc3f6e956e
--- /dev/null
+++ b/plugins/PrivacyManager/templates/databaseSize.tpl
@@ -0,0 +1,4 @@
+<p>Current database size: {$dbStats.currentSize}</p>
+<p>Estimated database size after purge: {$dbStats.sizeAfterPurge}</p>
+<p>Estimated space saved: {$dbStats.spaceSaved}</p>
+
diff --git a/plugins/PrivacyManager/templates/privacySettings.js b/plugins/PrivacyManager/templates/privacySettings.js
index 4a778f957e..9c029cc7a0 100644
--- a/plugins/PrivacyManager/templates/privacySettings.js
+++ b/plugins/PrivacyManager/templates/privacySettings.js
@@ -5,21 +5,144 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function toggleBlock(id, value) {
- $('#' + id).toggle(value == 1);
-}
-
$(document).ready(function() {
- $(function() {
- toggleBlock("deleteLogSettings", $("input[name=deleteEnable]:checked").val());
- toggleBlock("anonymizeIPenabled", $("input[name=anonymizeIPEnable]:checked").val());
- });
-
+ function toggleBlock(id, value) {
+ $('#' + id).toggle(value == 1);
+ }
+
+ // reloads purged database size estimate
+ var currentRequest;
+ function reloadDbStats() {
+ if (currentRequest) {
+ currentRequest.abort();
+ }
+
+ $('#deleteDataEstimate').html('');
+ $('#deleteDataEstimateSect .loadingPiwik').show();
+
+ currentRequest = $.ajax({
+ type: 'GET',
+ url: 'index.php?module=PrivacyManager&action=getDatabaseSize',
+ dataType: 'html',
+ async: true,
+ error: piwikHelper.ajaxHandleError, // Callback when the request fails
+ data: $('#formDeleteSettings').serialize(),
+ success: function(data) {
+ currentRequest = undefined;
+ $('#deleteDataEstimateSect .loadingPiwik').hide();
+ $('#deleteDataEstimate').html(data);
+ }
+ });
+ }
+
+ // make sure certain sections only display if their corresponding features are enabled
$('input[name=anonymizeIPEnable]').click(function() {
toggleBlock("anonymizeIPenabled", $(this).val());
});
$('input[name=deleteEnable]').click(function() {
toggleBlock("deleteLogSettings", $(this).val());
+ }).change(reloadDbStats);
+
+ $('input[name=deleteReportsEnable]').click(function() {
+ toggleBlock("deleteReportsSettings", $(this).val());
+ }).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());
+ });
+
+ // make sure the DB size estimate is reloaded every time a delete logs/reports setting is changed
+ $('#formDeleteSettings input[type=text]').each(function() {
+ $(this).change(reloadDbStats);
+ });
+ $('#formDeleteSettings 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>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 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();
+ $('#deleteSchedulingSettings .loadingPiwik').show();
+
+ // execute a data purge
+ $.ajax({
+ type: 'POST',
+ url: 'index.php?module=PrivacyManager&action=executeDataPurge',
+ dataType: 'html',
+ async: true,
+ error: piwikHelper.ajaxHandleError, // Callback when the request fails
+ success: function(data) { // ajax request will return new database estimate
+ $('#deleteSchedulingSettings .loadingPiwik').hide();
+ $(link).show();
+ $('#deleteDataEstimate').html(data);
+ }
+ });
+ }
+ });
});
});
diff --git a/plugins/PrivacyManager/templates/privacySettings.tpl b/plugins/PrivacyManager/templates/privacySettings.tpl
index d9680f8405..b3037bb628 100644
--- a/plugins/PrivacyManager/templates/privacySettings.tpl
+++ b/plugins/PrivacyManager/templates/privacySettings.tpl
@@ -51,92 +51,139 @@ See also our official guide <b><a href='http://piwik.org/privacy/' target='_blan
<input type="submit" value="{'General_Save'|translate}" id="privacySettingsSubmit" class="submit"/>
</form>
+<div class="ui-confirm" id="confirmDeleteSettings">
+ <h2 id="deleteLogsConfirm">{'PrivacyManager_DeleteLogsConfirm'|translate}</h2>
+ <h2 id="deleteReportsConfirm">{'PrivacyManager_DeleteReportsConfirm'|translate}</h2>
+ <h2 id="deleteBothConfirm">{'PrivacyManager_DeleteBothConfirm'|translate}</h2>
+ <input role="yes" type="button" value="{'General_Yes'|translate}" />
+ <input role="no" type="button" value="{'General_No'|translate}" />
+</div>
+
+<div class="ui-confirm" id="saveSettingsBeforePurge">
+ <h2>{'PrivacyManager_SaveSettingsBeforePurge'|translate}</h2>
+ <input role="yes" type="button" value="{'General_Ok'|translate}"/>
+</div>
+
+<div class="ui-confirm" id="confirmPurgeNow">
+ <h2>{'PrivacyManager_PurgeNowConfirm'|translate}</h2>
+ <input role="yes" type="button" value="{'General_Yes'|translate}" />
+ <input role="no" type="button" value="{'General_No'|translate}" />
+</div>
+
<a name="deleteLogsAnchor"></a>
-<h2>{'PrivacyManager_DeleteLogSettings'|translate}</h2>
-<p>{'PrivacyManager_DeleteLogDescription'|translate}</p>
+<h2>{'PrivacyManager_DeleteDataSettings'|translate}</h2>
+<p>{'PrivacyManager_DeleteDataDescription'|translate}</p>
<form method="post" action="{url action=index form=formDeleteSettings}" id="formDeleteSettings" name="formMaskLength">
- <div id='deleteLogSettingEnabled'>
- <table class="adminTable" style='width:800px;'>
- <tr>
- <td width="250">{'PrivacyManager_UseDeleteLog'|translate}<br/>
-
- </td>
- <td width='500'>
- <label><input type="radio" name="deleteEnable" value="1" {if $deleteLogs.config.delete_logs_enable eq '1'}
- checked {/if}/> {'General_Yes'|translate}</label>
- <label><input type="radio" name="deleteEnable" value="0"
- style="margin-left:20px;" {if $deleteLogs.config.delete_logs_enable eq '0'}
- checked {/if}/> {'General_No'|translate}
- </label>
- <span class="ajaxSuccess">
- {'PrivacyManager_DeleteLogDescription2'|translate}
- <a href="http://piwik.org/faq/general/#faq_125" target="_blank">
- {'General_ClickHere'|translate}
- </a>
- </span>
- </td>
- <td width="200">
- {'PrivacyManager_DeleteLogInfo'|translate:$deleteLogs.deleteTables|inlineHelp}
- </td>
- </tr>
- </table>
- </div>
+ <table class="adminTable" style='width:800px;'>
+ <tr id='deleteLogSettingEnabled'>
+ <td width="250">{'PrivacyManager_UseDeleteLog'|translate}<br/>
- <div id="deleteLogSettings">
- <table class="adminTable" style='width:800px;'>
- <tr>
- <td width="250">&nbsp;</td>
- <td width="500">
- <label>{'PrivacyManager_DeleteLogsOlderThan'|translate}
- <input type="text" id="deleteOlderThan" value="{$deleteLogs.config.delete_logs_older_than}" style="width:30px;"
- name="deleteOlderThan">
- {'CoreHome_PeriodDays'|translate}</label><br/>
- <span class="form-description">{'PrivacyManager_LeastDaysInput'|translate:"7"}</span>
- </td>
- <td width="200">
+ </td>
+ <td width='500'>
+ <label><input type="radio" name="deleteEnable" value="1" {if $deleteData.config.delete_logs_enable eq '1'}
+ checked {/if}/> {'General_Yes'|translate}</label>
+ <label><input type="radio" name="deleteEnable" value="0"
+ style="margin-left:20px;" {if $deleteData.config.delete_logs_enable eq '0'}
+ checked {/if}/> {'General_No'|translate}
+ </label>
+ <span class="ajaxSuccess">
+ {'PrivacyManager_DeleteLogDescription2'|translate}
+ <a href="http://piwik.org/faq/general/#faq_125" target="_blank">
+ {'General_ClickHere'|translate}
+ </a>
+ </span>
+ </td>
+ <td width="200">
+ {'PrivacyManager_DeleteLogInfo'|translate:$deleteData.deleteTables|inlineHelp}
+ </td>
+ </tr>
+ <tr id="deleteLogSettings">
+ <td width="250">&nbsp;</td>
+ <td width="500">
+ <label>{'PrivacyManager_DeleteLogsOlderThan'|translate}
+ <input type="text" id="deleteOlderThan" value="{$deleteData.config.delete_logs_older_than}" style="width:30px;"
+ name="deleteOlderThan"/>
+ {'CoreHome_PeriodDays'|translate}</label><br/>
+ <span class="form-description">{'PrivacyManager_LeastDaysInput'|translate:"7"}</span>
+ </td>
+ <td width="200">
- </td>
- </tr>
- <tr>
- <td width="250">&nbsp;</td>
- <td width="500">
- {'PrivacyManager_DeleteLogInterval'|translate}
- <select id="deleteLowestInterval" name="deleteLowestInterval">
- <option {if $deleteLogs.config.delete_logs_schedule_lowest_interval eq '1'} selected="selected" {/if}
- value="1"> {'CoreHome_PeriodDay'|translate}</option>
- <option {if $deleteLogs.config.delete_logs_schedule_lowest_interval eq '7'} selected="selected" {/if}
- value="7">{'CoreHome_PeriodWeek'|translate}</option>
- <option {if $deleteLogs.config.delete_logs_schedule_lowest_interval eq '30'} selected="selected" {/if}
- value="30">{'CoreHome_PeriodMonth'|translate}</option>
- </select>
- </td>
- <td width="200">
- {capture assign=purgeStats}
- {if $deleteLogs.lastRun}<strong>{'PrivacyManager_LastDelete'|translate}:</strong>
- {$deleteLogs.lastRunPretty}
- <br/><br/>{/if}
- <strong>{'PrivacyManager_NextDelete'|translate}:</strong>
- {$deleteLogs.nextRunPretty}
- {/capture}
- {$purgeStats|inlineHelp}
- </td>
- </tr>
- <tr>
- <td width="250">&nbsp;</td>
- <td width="500">
- {'PrivacyManager_DeleteMaxRows'|translate}
- <select id="deleteMaxRows" name="deleteMaxRows">
- <option {if $deleteLogs.config.delete_max_rows_per_run eq '100'} selected="selected" {/if} value="100">100.000</option>
- <option {if $deleteLogs.config.delete_max_rows_per_run eq '500'} selected="selected" {/if} value="500">500.000</option>
- <option {if $deleteLogs.config.delete_max_rows_per_run eq '1000'} selected="selected" {/if} value="1000">1.000.000</option>
- <option {if $deleteLogs.config.delete_max_rows_per_run eq '0'} selected="selected" {/if} value="0">{'PrivacyManager_DeleteMaxRowsNoLimit'|translate}</option>
- </select>
- </td>
- <td width="200"></td>
- </tr>
- </table>
- </div>
- <input type="submit" value="{'General_Save'|translate}" id="deleteLogSettingsSubmit" class="submit"/>
+ </td>
+ </tr>
+ <tr id='deleteReportsSettingEnabled'>
+ <td width="250">{'PrivacyManager_UseDeleteReports'|translate}<br/>
+
+ </td>
+ <td width="500">
+ <label><input type="radio" name="deleteReportsEnable" value="1" {if $deleteData.config.delete_reports_enable eq '1'}checked="true"{/if}/> {'General_Yes'|translate}</label>
+ <label><input type="radio" name="deleteReportsEnable" value="0" {if $deleteData.config.delete_reports_enable eq '0'}checked="true"{/if} style="margin-left:20px;"/> {'General_No'|translate}</label>
+ <span class="ajaxSuccess">
+ {'PrivacyManager_DeleteReportsInfo'|translate}
+ </span>
+ </td>
+ <td width="200">
+ {'PrivacyManager_DeleteReportsDetailedInfo'|translate|inlineHelp}
+ </td>
+ </tr>
+ <tr id='deleteReportsSettings'>
+ <td width="250">&nbsp;</td>
+ <td width="500">
+ <label>{'PrivacyManager_DeleteReportsOlderThan'|translate}
+ <input type="text" id="deleteReportsOlderThan" value="{$deleteData.config.delete_reports_older_than}" style="width:30px;"
+ name="deleteReportsOlderThan"/>
+ {'CoreHome_PeriodMonths'|translate}
+ </label><br/>
+ <span class="form-description">{'PrivacyManager_LeastMonthsInput'|translate:"3"}</span><br/><br/>
+ <label><input type="checkbox" name="deleteReportsKeepBasic" value="1" {if $deleteData.config.delete_reports_keep_basic_metrics}checked="true"{/if}>{'PrivacyManager_KeepBasicMetrics'|translate}<span class="form-description">{'General_Recommended'|translate}</span></input>
+ </label><br/><br/>
+ <label>{'PrivacyManager_KeepDataFor'|translate}</label><br/><br/>
+ <input type="checkbox" name="deleteReportsKeepDay" value="1" {if $deleteData.config.delete_reports_keep_day_reports}checked="true"{/if}>{'General_DailyReports'|translate}</input><br/>
+ <input type="checkbox" name="deleteReportsKeepWeek" value="1" {if $deleteData.config.delete_reports_keep_week_reports}checked="true"{/if}>{'General_WeeklyReports'|translate}</input><br/>
+ <input type="checkbox" name="deleteReportsKeepMonth" value="1" {if $deleteData.config.delete_reports_keep_month_reports}checked="true"{/if}>{'General_MonthlyReports'|translate}<span class="form-description">{'General_Recommended'|translate}</span></input><br/>
+ <input type="checkbox" name="deleteReportsKeepYear" value="1" {if $deleteData.config.delete_reports_keep_year_reports}checked="true"{/if}>{'General_YearlyReports'|translate}<span class="form-description">{'General_Recommended'|translate}</span></input><br/>
+ </td>
+ <td width="200">
+
+ </td>
+ </tr>
+ <tr id="deleteDataEstimateSect">
+ <td width="250">{'PrivacyManager_ReportsDataSavedEstimate'|translate}<br/></td>
+ <td width="500">
+ <div id="deleteDataEstimate">{include file="PrivacyManager/templates/databaseSize.tpl" dbStats=$deleteDbStats}</div>
+ <span class='loadingPiwik' style='display:none'><img src='/themes/default/images/loading-blue.gif' /> {'General_LoadingData'|translate}</span>
+ </td>
+ <td width="200">
+
+ </td>
+ </tr>
+ <tr id="deleteSchedulingSettings">
+ <td width="250">{'PrivacyManager_DeleteSchedulingSettings'|translate}<br/></td>
+ <td width="500">
+ {'PrivacyManager_DeleteDataInterval'|translate}
+ <select id="deleteLowestInterval" name="deleteLowestInterval">
+ <option {if $deleteData.config.delete_logs_schedule_lowest_interval eq '1'} selected="selected" {/if}
+ value="1"> {'CoreHome_PeriodDay'|translate}</option>
+ <option {if $deleteData.config.delete_logs_schedule_lowest_interval eq '7'} selected="selected" {/if}
+ value="7">{'CoreHome_PeriodWeek'|translate}</option>
+ <option {if $deleteData.config.delete_logs_schedule_lowest_interval eq '30'} selected="selected" {/if}
+ value="30">{'CoreHome_PeriodMonth'|translate}</option>
+ </select><br/><br/>
+ <em><a id="purgeDataNowLink" href="#">{'PrivacyManager_PurgeNow'|translate}</a></em>
+ <span class='loadingPiwik' style='display:none'><img src='/themes/default/images/loading-blue.gif' /> {'PrivacyManager_PurgingData'|translate}</span>
+ </td>
+ <td width="200">
+ {capture assign=purgeStats}
+ {if $deleteData.lastRun}<strong>{'PrivacyManager_LastDelete'|translate}:</strong>
+ {$deleteData.lastRunPretty}
+ <br/><br/>{/if}
+ <strong>{'PrivacyManager_NextDelete'|translate}:</strong>
+ {$deleteData.nextRunPretty}
+ {/capture}
+ {$purgeStats|inlineHelp}
+ </td>
+ </tr>
+ </table>
+ <input type="button" value="{'General_Save'|translate}" id="deleteLogSettingsSubmit" class="submit"/>
</form>
{/if}