Filter improvements (#2438)
* Put back code to close the popup when view is none * clean up and reduce depth of some logic * Increase width of user popup * fix code style * Make execute_filter work on a filter Id instead of name * rework logic to reduce code depth. Change view to events to display the results of execute. * Change the redirect to stay on the new view. When redirecting from executing a filter, it was redirecting to filter. * Set a form action for correctness. Change execute button to a button instead of a submit. Stay on the filter view when executing
This commit is contained in:
parent
4da95369f9
commit
6eb4d7ae27
|
@ -19,7 +19,10 @@
|
|||
//
|
||||
|
||||
// Event scope actions, view permissions only required
|
||||
if ( canView('Events') ) {
|
||||
if ( !canView('Events') ) {
|
||||
Warning('You do not have permission to view Events.');
|
||||
return;
|
||||
}
|
||||
|
||||
if ( isset($_REQUEST['object']) and ( $_REQUEST['object'] == 'filter' ) ) {
|
||||
if ( $action == 'addterm' ) {
|
||||
|
@ -32,7 +35,6 @@ if ( canView('Events') ) {
|
|||
dbQuery('DELETE FROM Filters WHERE Id=?', array($_REQUEST['Id']));
|
||||
}
|
||||
} else if ( ( $action == 'Save' ) or ( $action == 'SaveAs' ) or ( $action == 'execute' ) ) {
|
||||
# or ( $action == 'submit' ) ) {
|
||||
|
||||
$sql = '';
|
||||
$_REQUEST['filter']['Query']['sort_field'] = validStr($_REQUEST['filter']['Query']['sort_field']);
|
||||
|
@ -69,13 +71,12 @@ if ( canView('Events') ) {
|
|||
$_REQUEST['Id'] = dbInsertId();
|
||||
}
|
||||
if ( $action == 'execute' ) {
|
||||
executeFilter( $tempFilterName );
|
||||
executeFilter($_REQUEST['Id']);
|
||||
$view = 'events';
|
||||
}
|
||||
|
||||
} // end if save or execute
|
||||
} // end if canEdit(Events)
|
||||
return;
|
||||
} // end if object == filter
|
||||
} // end canView(Events)
|
||||
|
||||
?>
|
||||
|
|
|
@ -958,11 +958,11 @@ Logger::Debug("generating Video $command: result($result outptu:(".implode("\n",
|
|||
return( $status?"":rtrim($result) );
|
||||
}
|
||||
|
||||
function executeFilter( $filter ) {
|
||||
$command = ZM_PATH_BIN."/zmfilter.pl --filter ".escapeshellarg($filter);
|
||||
function executeFilter( $filter_id ) {
|
||||
$command = ZM_PATH_BIN.'/zmfilter.pl --filter_id '.escapeshellarg($filter_id);
|
||||
$result = exec($command, $output, $status);
|
||||
dbQuery( "delete from Filters where Name like '_TempFilter%'" );
|
||||
return( $status );
|
||||
dbQuery('DELETE FROM Filters WHERE Id=?', array($filter_id));
|
||||
return $status;
|
||||
}
|
||||
|
||||
# This takes more than one scale amount, so it runs through each and alters dimension.
|
||||
|
|
|
@ -51,7 +51,6 @@ require_once('includes/Event.php');
|
|||
require_once('includes/Group.php');
|
||||
require_once('includes/Monitor.php');
|
||||
|
||||
|
||||
if (
|
||||
(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')
|
||||
or
|
||||
|
@ -166,6 +165,7 @@ if ( !is_writable(ZM_DIR_EVENTS) ) {
|
|||
}
|
||||
|
||||
# Globals
|
||||
$action = null;
|
||||
$error_message = null;
|
||||
$redirect = null;
|
||||
$view = null;
|
||||
|
@ -185,9 +185,9 @@ foreach ( getSkinIncludes('skin.php') as $includeFile )
|
|||
# User Login will be performed in auth.php
|
||||
require_once('includes/auth.php');
|
||||
|
||||
if ( isset($_REQUEST['action']) ) {
|
||||
if ( isset($_REQUEST['action']) )
|
||||
$action = detaintPath($_REQUEST['action']);
|
||||
}
|
||||
|
||||
|
||||
# The only variable we really need to set is action. The others are informal.
|
||||
isset($view) || $view = NULL;
|
||||
|
@ -244,7 +244,8 @@ if ( $request ) {
|
|||
require_once $includeFile;
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
}
|
||||
|
||||
if ( $includeFiles = getSkinIncludes('views/'.$view.'.php', true, true) ) {
|
||||
foreach ( $includeFiles as $includeFile ) {
|
||||
if ( !file_exists($includeFile) )
|
||||
|
@ -266,5 +267,4 @@ if ( $request ) {
|
|||
foreach ( getSkinIncludes('views/error.php', true, true) as $includeFile )
|
||||
require_once $includeFile;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -64,7 +64,7 @@ var popupSizes = {
|
|||
'stats': {'width': 840, 'height': 200},
|
||||
'storage': {'width': 600, 'height': 405},
|
||||
'timeline': {'width': 760, 'height': 540},
|
||||
'user': {'width': 360, 'height': 720},
|
||||
'user': {'width': 460, 'height': 720},
|
||||
'version': {'width': 360, 'height': 185},
|
||||
'video': {'width': 420, 'height': 360},
|
||||
'videoview': {'addWidth': 48, 'addHeight': 80},
|
||||
|
|
|
@ -79,7 +79,9 @@ $pagination = getPagination($pages, $page, $maxShortcuts, $filterQuery.$sortQuer
|
|||
$focusWindow = true;
|
||||
|
||||
if ( $_POST ) {
|
||||
header('Location: ' . $_SERVER['REQUEST_URI'].htmlspecialchars_decode($filterQuery).htmlspecialchars_decode($sortQuery).$limitQuery.'&page='.$page);
|
||||
// I think this is basically so that a refresh doesn't repost
|
||||
Logger::Debug("Redirecting to " . $_SERVER['REQUEST_URI']);
|
||||
header('Location: ?view=' . $view.htmlspecialchars_decode($filterQuery).htmlspecialchars_decode($sortQuery).$limitQuery.'&page='.$page);
|
||||
exit();
|
||||
}
|
||||
|
||||
|
|
|
@ -177,9 +177,9 @@ if ( (null !== $filter->Concurrent()) and $filter->Concurrent() )
|
|||
?>
|
||||
</div>
|
||||
</form>
|
||||
<form name="contentForm" id="contentForm" method="post" class="validateFormOnSubmit">
|
||||
<form name="contentForm" id="contentForm" method="post" class="validateFormOnSubmit" action="?view=filter">
|
||||
<input type="hidden" name="Id" value="<?php echo $filter->Id() ?>"/>
|
||||
<input type="hidden" name="action" value=""/>
|
||||
<input type="hidden" name="action"/>
|
||||
<input type="hidden" name="object" value="filter"/>
|
||||
|
||||
<hr/>
|
||||
|
@ -393,7 +393,7 @@ if ( ZM_OPT_MESSAGE ) {
|
|||
</p>
|
||||
<p><label><?php echo translate('FilterMoveEvents') ?></label>
|
||||
<input type="checkbox" name="filter[AutoMove]" value="1"<?php if ( $filter->AutoMove() ) { ?> checked="checked"<?php } ?> onclick="updateButtons(this);if(this.checked){$j(this.form.elements['filter[AutoMoveTo]']).css('display','inline');}else{this.form.elements['filter[AutoMoveTo]'].hide();};"/>
|
||||
<?php echo htmlSelect( "filter[AutoMoveTo]", $storageareas, $filter->AutoMoveTo(), $filter->AutoMove() ? null : array('style'=>'display:none;' ) ); ?>
|
||||
<?php echo htmlSelect('filter[AutoMoveTo]', $storageareas, $filter->AutoMoveTo(), $filter->AutoMove() ? null : array('style'=>'display:none;' )); ?>
|
||||
</p>
|
||||
<p>
|
||||
<label for="background"><?php echo translate('BackgroundFilter') ?></label>
|
||||
|
@ -407,7 +407,7 @@ if ( ZM_OPT_MESSAGE ) {
|
|||
<hr/>
|
||||
<div id="contentButtons">
|
||||
<button type="submit" data-on-click-this="submitToEvents"><?php echo translate('ListMatches') ?></button>
|
||||
<button type="submit" name="executeButton" id="executeButton" data-on-click-this="executeFilter"><?php echo translate('Execute') ?></button>
|
||||
<button type="button" name="executeButton" id="executeButton" data-on-click-this="executeFilter"><?php echo translate('Execute') ?></button>
|
||||
<?php
|
||||
if ( canEdit('Events') ) {
|
||||
?>
|
||||
|
|
|
@ -12,7 +12,7 @@ function validateForm( form ) {
|
|||
return false;
|
||||
}
|
||||
}
|
||||
if (obrCount - cbrCount != 0) {
|
||||
if ( (obrCount - cbrCount) != 0 ) {
|
||||
alert(errorBrackets);
|
||||
return false;
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ function validateForm( form ) {
|
|||
alert("There appear to be non-numeric characters in your limit. Limit must be a positive integer value or empty.");
|
||||
return false;
|
||||
}
|
||||
console.log("Success validating");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -82,9 +83,10 @@ function submitToEvents( element ) {
|
|||
|
||||
function executeFilter( element ) {
|
||||
var form = element.form;
|
||||
form.action = thisUrl + '?view=events';
|
||||
form.action = thisUrl + '?view=filter';
|
||||
form.elements['action'].value = 'execute';
|
||||
history.replaceState(null, null, '?view=filter&' + $j(form).serialize());
|
||||
form.submit();
|
||||
//history.replaceState(null, null, '?view=filter&' + $j(form).serialize());
|
||||
}
|
||||
|
||||
function saveFilter( element ) {
|
||||
|
@ -228,12 +230,12 @@ function stringFilter(term) {
|
|||
|
||||
function addTerm( element ) {
|
||||
var row = $j(element).closest('tr');
|
||||
row.find('select').chosen("destroy");
|
||||
row.find('select').chosen('destroy');
|
||||
var newRow = row.clone().insertAfter(row);
|
||||
row.find('select').chosen({width: "101%"});
|
||||
row.find('select').chosen({width: '101%'});
|
||||
newRow.find('select').each( function() { //reset new row to default
|
||||
this[0].selected = 'selected';
|
||||
}).chosen({width: "101%"});
|
||||
}).chosen({width: '101%'});
|
||||
newRow.find('input[type="text"]').val('');
|
||||
var rows = $j(row).parent().children();
|
||||
parseRows(rows);
|
||||
|
|
|
@ -32,6 +32,12 @@ require_once($skinJsPhpFile);
|
|||
?>
|
||||
</script>
|
||||
<script src="<?php echo cache_bust($skinJsFile) ?>"></script>
|
||||
<script nonce="<?php echo $cspNonce ?>">
|
||||
<?php
|
||||
if ( !$debug )
|
||||
echo 'closeWindow();';
|
||||
?>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
|
|
|
@ -20,15 +20,14 @@
|
|||
|
||||
$selfEdit = ZM_USER_SELF_EDIT && $_REQUEST['uid'] == $user['Id'];
|
||||
|
||||
if ( !canEdit( 'System' ) && !$selfEdit )
|
||||
{
|
||||
$view = "error";
|
||||
if ( !canEdit('System') && !$selfEdit ) {
|
||||
$view = 'error';
|
||||
return;
|
||||
}
|
||||
|
||||
if ( $_REQUEST['uid'] ) {
|
||||
if ( !($newUser = dbFetchOne('SELECT * FROM Users WHERE Id = ?', NULL, ARRAY($_REQUEST['uid']))) ) {
|
||||
$view = "error";
|
||||
$view = 'error';
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
|
@ -43,24 +42,23 @@ $monitorIds = array_flip(explode( ',', $newUser['MonitorIds'] ));
|
|||
$yesno = array( 0=>translate('No'), 1=>translate('Yes') );
|
||||
$nv = array( 'None'=>translate('None'), 'View'=>translate('View') );
|
||||
$nve = array( 'None'=>translate('None'), 'View'=>translate('View'), 'Edit'=>translate('Edit') );
|
||||
$bandwidths = array_merge( array( ""=>"" ), $bandwidth_options );
|
||||
$langs = array_merge( array( ""=>"" ), getLanguages() );
|
||||
$bandwidths = array_merge( array( ''=>'' ), $bandwidth_options );
|
||||
$langs = array_merge( array( ''=>'' ), getLanguages() );
|
||||
|
||||
$sql = "select Id,Name from Monitors order by Sequence asc";
|
||||
$sql = 'SELECT Id,Name FROM Monitors ORDER BY Sequence ASC';
|
||||
$monitors = array();
|
||||
foreach( dbFetchAll( $sql ) as $monitor )
|
||||
{
|
||||
foreach( dbFetchAll($sql) as $monitor ) {
|
||||
$monitors[] = $monitor;
|
||||
}
|
||||
|
||||
$focusWindow = true;
|
||||
|
||||
xhtmlHeaders(__FILE__, translate('User')." - ".$newUser['Username'] );
|
||||
xhtmlHeaders(__FILE__, translate('User').' - '.$newUser['Username']);
|
||||
?>
|
||||
<body>
|
||||
<div id="page">
|
||||
<div id="header">
|
||||
<h2><?php echo translate('User')." - ".$newUser['Username'] ?></h2>
|
||||
<h2><?php echo translate('User').' - '.$newUser['Username'] ?></h2>
|
||||
</div>
|
||||
<div id="content">
|
||||
<form name="contentForm" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" onsubmit="return validateForm( this, <?php echo empty($newUser['Password'])?'true':'false' ?> )">
|
||||
|
@ -68,11 +66,10 @@ xhtmlHeaders(__FILE__, translate('User')." - ".$newUser['Username'] );
|
|||
<input type="hidden" name="action" value="user"/>
|
||||
<input type="hidden" name="uid" value="<?php echo validHtmlStr($_REQUEST['uid']) ?>"/>
|
||||
<input type="hidden" name="newUser[MonitorIds]" value="<?php echo $newUser['MonitorIds'] ?>"/>
|
||||
<table id="contentTable" class="major" cellspacing="0">
|
||||
<table id="contentTable" class="major">
|
||||
<tbody>
|
||||
<?php
|
||||
if ( canEdit( 'System' ) )
|
||||
{
|
||||
if ( canEdit('System') ) {
|
||||
?>
|
||||
<tr>
|
||||
<th scope="row"><?php echo translate('Username') ?></th>
|
||||
|
@ -83,19 +80,18 @@ if ( canEdit( 'System' ) )
|
|||
?>
|
||||
<tr>
|
||||
<th scope="row"><?php echo translate('NewPassword') ?></th>
|
||||
<td><input type="password" name="newUser[Password]" value=""/></td>
|
||||
<td><input type="password" name="newUser[Password]"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><?php echo translate('ConfirmPassword') ?></th>
|
||||
<td><input type="password" name="conf_password" value=""/></td>
|
||||
<td><input type="password" name="conf_password"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><?php echo translate('Language') ?></th>
|
||||
<td><?php echo buildSelect( "newUser[Language]", $langs ) ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
if ( canEdit( 'System' ) )
|
||||
{
|
||||
if ( canEdit('System') ) {
|
||||
?>
|
||||
<tr>
|
||||
<th scope="row"><?php echo translate('Enabled') ?></th>
|
||||
|
@ -134,10 +130,8 @@ if ( canEdit( 'System' ) )
|
|||
<td>
|
||||
<select name="monitorIds" size="4" multiple="multiple">
|
||||
<?php
|
||||
foreach ( $monitors as $monitor )
|
||||
{
|
||||
if ( visibleMonitor( $monitor['Id'] ) )
|
||||
{
|
||||
foreach ( $monitors as $monitor ) {
|
||||
if ( visibleMonitor($monitor['Id']) ) {
|
||||
?>
|
||||
<option value="<?php echo $monitor['Id'] ?>"<?php if ( array_key_exists($monitor['Id'], $monitorIds) ) { ?> selected="selected"<?php } ?>><?php echo htmlentities($monitor['Name']) ?></option>
|
||||
<?php
|
||||
|
@ -153,7 +147,8 @@ if ( canEdit( 'System' ) )
|
|||
</tbody>
|
||||
</table>
|
||||
<div id="contentButtons">
|
||||
<input type="submit" value="<?php echo translate('Save') ?>"/><input type="button" value="<?php echo translate('Cancel') ?>" data-on-click="closeWindow"/>
|
||||
<button type="submit" value="Save"><?php echo translate('Save') ?></button>
|
||||
<button type="button" data-on-click="closeWindow"><?php echo translate('Cancel') ?></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue