diff options
author | benakamoorthi <benaka.moorthi@gmail.com> | 2012-04-07 06:30:49 +0400 |
---|---|---|
committer | benakamoorthi <benaka.moorthi@gmail.com> | 2012-04-07 06:30:49 +0400 |
commit | f4d248d5e1792e49a9eea42801a4ab120dc0663f (patch) | |
tree | e006abc7fa499ea4a13ec29637faf8ffeb36f849 /plugins/PrivacyManager/templates | |
parent | 259028c93bdbe8bb19156bfe92d0c7dc5e47a336 (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-x | plugins/PrivacyManager/templates/databaseSize.tpl | 4 | ||||
-rw-r--r-- | plugins/PrivacyManager/templates/privacySettings.js | 141 | ||||
-rw-r--r-- | plugins/PrivacyManager/templates/privacySettings.tpl | 211 |
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"> </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"> </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"> </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"> </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"> </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} |