From a6a2239e5beb536cda0073cf65adc4d25d025a7e Mon Sep 17 00:00:00 2001 From: Isaac Connor Date: Wed, 24 Jul 2019 11:39:21 -0400 Subject: [PATCH 1/2] Fixes #2579 by putting the event Id into an attribute of the delete button. Also uses a button instead of a link. Also only does parent refresh if parent exists (#2662) --- web/skins/classic/views/js/watch.js | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/web/skins/classic/views/js/watch.js b/web/skins/classic/views/js/watch.js index 0f19a1802..eceb994cc 100644 --- a/web/skins/classic/views/js/watch.js +++ b/web/skins/classic/views/js/watch.js @@ -463,8 +463,8 @@ function cmdCancelForcedAlarm() { function getActResponse( respObj, respText ) { if ( respObj.result == 'Ok' ) { - if ( respObj.refreshParent ) { - console.log('refreshing'); + if ( respObj.refreshParent && window.opener ) { + console.log('refreshing parent'); window.opener.location.reload(); } } @@ -555,9 +555,24 @@ function getEventCmdResponse( respObj, respText ) { link.set( 'text', event.AvgScore+'/'+event.MaxScore ); link.inject( row.getElement( 'td.colScore' ) ); - link = new Element( 'a', {'href': '#', 'title': deleteString, 'events': {'click': function( e ) { - deleteEvent( e, event.Id ); - }, 'mouseover': highlightRow.pass( row ), 'mouseout': highlightRow.pass( row )}}); + link = new Element( 'button', { + 'type': 'button', + 'title': deleteString, + 'data-event-id': event.Id, + 'events': { + 'click': function(e) { + var event_id = e.target.getAttribute('data-event-id'); + if ( !event_id ) { + console.log('No event id in deleteEvent'); + console.log(e); + } else { + deleteEvent(e, event_id); + } + }, + 'mouseover': highlightRow.pass(row), + 'mouseout': highlightRow.pass(row) + } + }); link.set( 'text', 'X' ); link.inject( row.getElement( 'td.colDelete' ) ); From 547e80b1a9182e41bc7a2b37e2c859a2dec02541 Mon Sep 17 00:00:00 2001 From: Isaac Connor Date: Wed, 24 Jul 2019 12:31:43 -0400 Subject: [PATCH 2/2] Fix download and export button from events list. Fixes #2668 (#2670) --- web/ajax/event.php | 16 ++++++++++++---- web/skins/classic/views/download.php | 12 ++++++------ web/skins/classic/views/js/download.js | 16 +++++++++++++--- web/skins/classic/views/js/download.js.php | 3 ++- web/skins/classic/views/js/events.js | 5 +++-- 5 files changed, 36 insertions(+), 16 deletions(-) diff --git a/web/ajax/event.php b/web/ajax/event.php index 3d9c89c36..cb4d3d7ad 100644 --- a/web/ajax/event.php +++ b/web/ajax/event.php @@ -101,11 +101,19 @@ if ( canView('Events') ) { if ( $exportFile = exportEvents( $exportIds, (isset($_REQUEST['connkey'])?$_REQUEST['connkey']:''), - false,false, false, - $exportVideo, false, $exportFormat, $exportStructure ) ) - ajaxResponse(array('exportFile'=>$exportFile)); - else + false,#detail + false,#frames + false,#images + $exportVideo, + false,#Misc + $exportFormat, + false#,#Compress + #$exportStructure + ) ) { + ajaxResponse(array('exportFile'=>$exportFile,'exportFormat'=>$exportFormat, 'connkey'=>(isset($_REQUEST['connkey'])?$_REQUEST['connkey']:''))); + } else { ajaxError('Export Failed'); + } break; } } // end if canView('Events') diff --git a/web/skins/classic/views/download.php b/web/skins/classic/views/download.php index 49dc11833..88bb0958b 100644 --- a/web/skins/classic/views/download.php +++ b/web/skins/classic/views/download.php @@ -26,7 +26,7 @@ if ( !canView('Events') ) { $total_size = 0; if ( isset($_SESSION['montageReviewFilter']) and !isset($_REQUEST['eids']) ) { # Handles montageReview filter - $eventsSql = 'SELECT E.Id,E.DiskSpace FROM Events as E WHERE 1'; + $eventsSql = 'SELECT E.Id, E.DiskSpace FROM Events AS E WHERE 1'; $eventsSql .= $_SESSION['montageReviewFilter']['sql']; $results = dbQuery($eventsSql); $eids = []; @@ -48,17 +48,16 @@ if ( isset($_SESSION['montageReviewFilter']) and !isset($_REQUEST['eids']) ) { $exportFormat = ''; if ( isset($_REQUEST['exportFormat']) ) { if ( !in_array($_REQUEST['exportFormat'], array('zip', 'tar')) ) { - ZM\Error('Invalid exportFormat'); - return; + ZM\Error('Invalid exportFormat: '.$_REQUEST['exportFormat']); + } else { + $exportFormat = $_REQUEST['exportFormat']; } - $exportFormat = $_REQUEST['exportFormat']; } if ( !empty($_REQUEST['eid']) ) { $Event = new ZM\Event($_REQUEST['eid']); if ( !$Event->Id ) { Error('Invalid event id'); - return; } } @@ -120,7 +119,8 @@ if ( !empty($_REQUEST['eid']) ) { - diff --git a/web/skins/classic/views/js/download.js b/web/skins/classic/views/js/download.js index 6dafdd23f..55a256795 100644 --- a/web/skins/classic/views/js/download.js +++ b/web/skins/classic/views/js/download.js @@ -11,6 +11,7 @@ function configureExportButton( element ) { } function startDownload( exportFile ) { + console.log("Starting download from " + exportFile); window.location.replace( exportFile ); } @@ -26,12 +27,21 @@ function exportProgress() { } function exportResponse( respObj, respText ) { - window.location.replace( thisUrl+'?view='+currentView+'&'+eidParm+'&exportFormat='+respObj.exportFormat+'&generated='+((respObj.result=='Ok')?1:0) ); + console.log(respObj); + window.location.replace( + thisUrl+'?view='+currentView+'&'+eidParm + +'&exportFormat='+respObj.exportFormat + +'&exportFile='+respObj.exportFile + +'&generated='+((respObj.result=='Ok')?1:0) + +'&connkey='+connkey + ); } -function exportEvent( form ) { +function exportEvent( element ) { + var form = element.form; var parms = 'view=request&request=event&action=download'; parms += '&'+$(form).toQueryString(); + console.log(parms); var query = new Request.JSON( {url: thisUrl, method: 'post', data: parms, onSuccess: exportResponse} ); query.send(); $('exportProgress').removeClass( 'hidden' ); @@ -46,7 +56,7 @@ function initPage() { startDownload.pass( exportFile ).delay( 1500 ); } document.getElementById('exportButton').addEventListener("click", function onClick(evt) { - exportEvent(this.form); + exportEvent(this); }); } diff --git a/web/skins/classic/views/js/download.js.php b/web/skins/classic/views/js/download.js.php index 3501fc711..0d0c05679 100644 --- a/web/skins/classic/views/js/download.js.php +++ b/web/skins/classic/views/js/download.js.php @@ -14,6 +14,7 @@ var eidParm = 'eid='; ?> var exportReady = ; -var exportFile = '?view=archive&type='; +var exportFile = '?view=archive&type=&connkey='; +var connkey = ''; var exportProgressString = ''; diff --git a/web/skins/classic/views/js/events.js b/web/skins/classic/views/js/events.js index 3ef9eae5f..ca7f7c7ec 100644 --- a/web/skins/classic/views/js/events.js +++ b/web/skins/classic/views/js/events.js @@ -100,8 +100,9 @@ function downloadVideo( element ) { function exportEvents( element ) { var form = element.form; - form.attr('action', '?view=export'); - form[0].elements['view'].value='export'; + console.log(form); + form.action = '?view=export'; + form.elements['view'].value='export'; form.submit(); }