Make the Save/Delete buttons always present, but disabled when not authorized. Allow anyone to create a filter, but only System:Edit or the owner of the filter can change or delete it.

pull/3630/head
Isaac Connor 2022-10-11 10:03:57 -04:00
parent ef0ad5a17b
commit 999591ee6f
3 changed files with 34 additions and 38 deletions

View File

@ -520,19 +520,14 @@ if ( ZM_OPT_EMAIL ) {
<button type="button" data-on-click-this="submitToMontageReview"><?php echo translate('ViewMatches') ?></button>
<button type="button" data-on-click-this="submitToExport"><?php echo translate('ExportMatches') ?></button>
<button type="button" data-on-click-this="submitAction" value="execute" id="executeButton"><?php echo translate('Execute') ?></button>
<?php
if ( canEdit('Events') ) {
?>
<button type="button" data-on-click-this="submitAction" value="Save" id="Save"><?php echo translate('Save') ?></button>
<button type="button" data-on-click-this="submitAction" value="SaveAs" id="SaveAs"><?php echo translate('SaveAs') ?></button>
<?php
if ( $filter->Id() ) {
?>
<button type="button" value="delete" data-on-click-this="deleteFilter"><?php echo translate('Delete') ?></button>
<?php
}
}
<?php
$canEdit = (canEdit('System') or ($filter->UserId() == $user['Id']));
$canSave = !$filter->Id() or $canEdit;
$canDelete = $filter->Id() and $canEdit;
?>
<button type="button" data-on-click-this="submitAction" value="Save" id="Save"<?php echo $canSave ? '' : ' disabled="disabled"' ?>><?php echo translate('Save') ?></button>
<button type="button" data-on-click-this="submitAction" value="SaveAs" id="SaveAs"<?php echo $canSave ? '' : ' disabled="disabled"' ?>><?php echo translate('SaveAs') ?></button>
<button type="button" value="delete" data-on-click-this="deleteFilter" id="Delete"<?php echo $canDelete ? '' : ' disabled="disabled"' ?>><?php echo translate('Delete') ?></button>
<button type="button" value="Debug" data-on-click-this="debugFilter"><?php echo translate('Debug') ?></button>
<button type="button" value="Reset" data-on-click-this="resetFilter"><?php echo translate('Reset') ?></button>
</div>

View File

@ -71,9 +71,9 @@ function validateForm(form) {
}
function updateButtons(element) {
var form = element.form;
const form = element.form;
var canExecute = false;
let canExecute = false;
if ( form.elements['filter[AutoArchive]'] && form.elements['filter[AutoArchive]'].checked ) {
canExecute = true;
} else if ( form.elements['filter[AutoUnarchive]'] && form.elements['filter[AutoUnarchive]'].checked ) {
@ -98,13 +98,13 @@ function updateButtons(element) {
canExecute = true;
}
document.getElementById('executeButton').disabled = !canExecute;
if ( form.elements['filter[Name]'].value ) {
document.getElementById('Save').disabled = false;
document.getElementById('SaveAs').disabled = false;
} else {
document.getElementById('Save').disabled = true;
document.getElementById('SaveAs').disabled = true;
}
// Anyone can create a filter, only canEdit:System or the owner of the filter can edit/delete it.
const canWeEdit = (canEdit['System'] || (user.Id == filter.UserId) || !filter.Id);
const canSave = (form.elements['filter[Name]'].value && canWeEdit);
document.getElementById('Save').disabled = !canSave;
document.getElementById('SaveAs').disabled = !canSave;
document.getElementById('Delete').disabled = !(filter.Id && canWeEdit);
}
function click_AutoEmail(element) {

View File

@ -13,24 +13,25 @@
global $booleanValues;
global $filter;
?>
var filterid = '<?php echo $filter->Id() ?>';
var filterQuery = '<?php echo isset($filterQuery) ? validJsStr(htmlspecialchars_decode($filterQuery)) : '' ?>';
var sortQuery = '<?php echo isset($sortQuery) ? validJsStr(htmlspecialchars_decode($sortQuery)) : '' ?>';
const filterid = '<?php echo $filter->Id() ?>';
const filter = <?php echo json_encode($filter) ?>;
const filterQuery = '<?php echo isset($filterQuery) ? validJsStr(htmlspecialchars_decode($filterQuery)) : '' ?>';
const sortQuery = '<?php echo isset($sortQuery) ? validJsStr(htmlspecialchars_decode($sortQuery)) : '' ?>';
var conjTypes = <?php echo isset($conjunctionTypes) ? json_encode($conjunctionTypes) : '' ?>;
var opTypes = <?php echo isset($opTypes) ? json_encode($opTypes) : '' ?>;
const conjTypes = <?php echo isset($conjunctionTypes) ? json_encode($conjunctionTypes) : '' ?>;
const opTypes = <?php echo isset($opTypes) ? json_encode($opTypes) : '' ?>;
var archiveTypes = <?php echo isset($archiveTypes) ? json_encode($archiveTypes) : '' ?>;
var weekdays = <?php echo isset($weekdays) ? json_encode($weekdays) : '' ?>;
var states = <?php echo isset($states) ? json_encode($states) : '{}' ?>;
var servers = <?php echo isset($servers) ? json_encode($servers) : '{}' ?>;
var storageareas = <?php echo isset($storageareas) ? json_encode($storageareas) : '{}' ?>;
var monitors = <?php echo isset($monitors) ? json_encode($monitors) : '{}' ?>;
var sorted_monitor_ids = <?php echo isset($monitors) ? json_encode(array_keys($monitors)) : '[]' ?>;
var zones = <?php echo isset($zones) ? json_encode($zones) : '{}' ?>;
var booleanValues = <?php echo json_encode($booleanValues) ?>;
const archiveTypes = <?php echo isset($archiveTypes) ? json_encode($archiveTypes) : '' ?>;
const weekdays = <?php echo isset($weekdays) ? json_encode($weekdays) : '' ?>;
const states = <?php echo isset($states) ? json_encode($states) : '{}' ?>;
const servers = <?php echo isset($servers) ? json_encode($servers) : '{}' ?>;
const storageareas = <?php echo isset($storageareas) ? json_encode($storageareas) : '{}' ?>;
const monitors = <?php echo isset($monitors) ? json_encode($monitors) : '{}' ?>;
const sorted_monitor_ids = <?php echo isset($monitors) ? json_encode(array_keys($monitors)) : '[]' ?>;
const zones = <?php echo isset($zones) ? json_encode($zones) : '{}' ?>;
const booleanValues = <?php echo json_encode($booleanValues) ?>;
var errorBrackets = '<?php echo translate('ErrorBrackets') ?>';
var errorValue = '<?php echo translate('ErrorValidValue') ?>';
const errorBrackets = '<?php echo translate('ErrorBrackets') ?>';
const errorValue = '<?php echo translate('ErrorValidValue') ?>';
var deleteSavedFilterString = "<?php echo translate('DeleteSavedFilter') ?>";
const deleteSavedFilterString = "<?php echo translate('DeleteSavedFilter') ?>";