diff --git a/scripts/zmtrigger.pl.in b/scripts/zmtrigger.pl.in index c56107276..1ee392c1e 100644 --- a/scripts/zmtrigger.pl.in +++ b/scripts/zmtrigger.pl.in @@ -356,11 +356,16 @@ sub handleMessage { my $connection = shift; my $message = shift; + # CUA - Axis camera send the message quoted with" + # CUA - Also Axis camera cannot save the plus sign which + $message =~ s/^\"//g; + $message =~ s/\"$//g; + my ( $id, $action, $score, $cause, $text, $showtext ) = split( /\|/, $message ); - $score = 0 if ( !defined($score) ); - $cause = '' if ( !defined($cause) ); - $text = '' if ( !defined($text) ); + $score = 0 if !defined($score); + $cause = '' if !defined($cause); + $text = '' if !defined($text); my $monitor = $monitors{$id}; if ( !$monitor ) { @@ -372,7 +377,7 @@ sub handleMessage { next if !zmMemVerify($monitor); Debug("Handling action '$action'"); - if ( $action =~ /^(enable|disable)(?:\+(\d+))?$/ ) { + if ( $action =~ /^(enable|disable)(?:[\+ ](\d+))?$/ ) { my $state = $1; my $delay = $2; if ( $state eq 'enable' ) { diff --git a/web/ajax/event.php b/web/ajax/event.php index 9c2e57c2c..fb9000cc6 100644 --- a/web/ajax/event.php +++ b/web/ajax/event.php @@ -1,5 +1,5 @@ diff --git a/web/includes/actions/version.php b/web/includes/actions/version.php index fde85427f..a203e1dd3 100644 --- a/web/includes/actions/version.php +++ b/web/includes/actions/version.php @@ -42,6 +42,8 @@ if ( $action == 'version' && isset($_REQUEST['option']) ) { $nextReminder += 24*60*60; } elseif ( $option == 'week' ) { $nextReminder += 7*24*60*60; + } elseif ( $option == 'month' ) { + $nextReminder += 30*24*60*60; } dbQuery("UPDATE Config SET Value = '".$nextReminder."' WHERE Name = 'ZM_DYN_NEXT_REMINDER'"); break; diff --git a/web/includes/config.php.in b/web/includes/config.php.in index 57064f22d..7052a061a 100644 --- a/web/includes/config.php.in +++ b/web/includes/config.php.in @@ -193,7 +193,7 @@ if ( ! defined('ZM_SERVER_ID') ) { } } -if ( ZM_TIMEZONE ) +if ( defined('ZM_TIMEZONE') and ZM_TIMEZONE ) ini_set('date.timezone', ZM_TIMEZONE); function process_configfile($configFile) { diff --git a/web/lang/en_gb.php b/web/lang/en_gb.php index 0570005d3..b2a91cd45 100644 --- a/web/lang/en_gb.php +++ b/web/lang/en_gb.php @@ -798,6 +798,7 @@ $SLANG = array( 'VersionRemindHour' => 'Remind again in 1 hour', 'VersionRemindNever' => 'Don\'t remind about new versions', 'VersionRemindWeek' => 'Remind again in 1 week', + 'VersionRemindMonth' => 'Remind again in 1 month', 'Version' => 'Version', 'ViewMatches' => 'View Matches', 'VideoFormat' => 'Video Format', diff --git a/web/skins/classic/css/base/export.css b/web/skins/classic/css/base/export.css index 757b49057..8cccfddad 100644 --- a/web/skins/classic/css/base/export.css +++ b/web/skins/classic/css/base/export.css @@ -52,3 +52,42 @@ td.monoRow { background-color: #ffffff; } +ul.tabs { + margin: 0; + margin-bottom: -1px; + padding: 0; + float: left; + list-style: none; + height: 32px; + border-bottom: 1px solid #7f7fb2; + border-left: 1px solid #7f7fb2; + width: 100%; +} +ul.tabs li { + float: left; + margin: 0; + padding: 0; + height: 31px; + line-height: 31px; + border: 1px solid #7f7fb2; + border-left: none; + margin-bottom: -1px; + background: #fff; + overflow: hidden; + position: relative; +} +ul.tabs li a { + text-decoration: none; + color: #000; + display: block; + font-size: 1.2em; + padding: 0 20px; + outline: none; +} +ul.tabs li a:hover { + background: #ccc; +} +html ul.tabs li.active, html ul.tabs li.active a:hover { + background: #dddddd; + border-bottom: 1px solid #e0e0e0; +} diff --git a/web/skins/classic/css/base/skin.css b/web/skins/classic/css/base/skin.css index a963dc0e7..cc58073e1 100644 --- a/web/skins/classic/css/base/skin.css +++ b/web/skins/classic/css/base/skin.css @@ -445,14 +445,14 @@ th.table-th-sort span.table-th-sort-span { float: right; width: 12px; height: 12px; - background: url("/skins/classic/graphics/arrow-s-u.png") no-repeat 0 0; + background: url("../skins/classic/graphics/arrow-s-u.png") no-repeat 0 0; } th.table-th-sort-rev span.table-th-sort-span { float: right; width: 12px; height: 12px; - background: url("/skins/classic/graphics/arrow-s-d.png") no-repeat 0 0; + background: url("../skins/classic/graphics/arrow-s-d.png") no-repeat 0 0; } .table-tr-odd { diff --git a/web/skins/classic/css/classic/export.css b/web/skins/classic/css/classic/export.css index 757b49057..e69de29bb 100644 --- a/web/skins/classic/css/classic/export.css +++ b/web/skins/classic/css/classic/export.css @@ -1,54 +0,0 @@ -body { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size:10px; - font-weight: normal; - color: #333333; -} - -table { - border-collapse: collapse; -} - -th, td { - border: 1px solid #7f7fb2; - text-align: center; - padding: 2px 4px; -} - -a:link { - color: #7f7fb2; - text-decoration: none -} - -a:visited { - color: #7f7fb2; - text-decoration: none -} - -a:hover { - color: #666699; - text-decoration: underline -} - -img.thumb { - width: 40px; -} - -td.monoRow { - line-height: 200%; - text-align: center; - vertical-align: middle; -} - -#eventFrames tr.alarm { - background-color: #fa8072; -} - -#eventFrames tr.bulk { - background-color: #cccccc; -} - -#eventFrames tr.normal { - background-color: #ffffff; -} - diff --git a/web/skins/classic/css/dark/export.css b/web/skins/classic/css/dark/export.css index 757b49057..e69de29bb 100644 --- a/web/skins/classic/css/dark/export.css +++ b/web/skins/classic/css/dark/export.css @@ -1,54 +0,0 @@ -body { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size:10px; - font-weight: normal; - color: #333333; -} - -table { - border-collapse: collapse; -} - -th, td { - border: 1px solid #7f7fb2; - text-align: center; - padding: 2px 4px; -} - -a:link { - color: #7f7fb2; - text-decoration: none -} - -a:visited { - color: #7f7fb2; - text-decoration: none -} - -a:hover { - color: #666699; - text-decoration: underline -} - -img.thumb { - width: 40px; -} - -td.monoRow { - line-height: 200%; - text-align: center; - vertical-align: middle; -} - -#eventFrames tr.alarm { - background-color: #fa8072; -} - -#eventFrames tr.bulk { - background-color: #cccccc; -} - -#eventFrames tr.normal { - background-color: #ffffff; -} - diff --git a/web/skins/classic/includes/export_functions.php b/web/skins/classic/includes/export_functions.php index d43c697e3..5ec45b022 100644 --- a/web/skins/classic/includes/export_functions.php +++ b/web/skins/classic/includes/export_functions.php @@ -20,52 +20,18 @@ function exportHeader($title) { ?> + <?php echo $title ?> - @@ -95,21 +61,21 @@ html ul.tabs li.active, html ul.tabs li.active a:hover { Id()); $otherlinks = ''; - if( $exportFrames ) $otherlinks .= ''.translate('Frames').','; - if( $exportImages ) $otherlinks .= ''.translate('Images').','; - $otherlinks = substr($otherlinks,0,-1); + if ( $exportFrames ) $otherlinks .= ' '.translate('Frames').','; + if ( $exportImages ) $otherlinks .= ' '.translate('Images').','; + $otherlinks = substr($otherlinks, 0, -1); ?>
-

: Name()) ?> ()

+

Name()).( (!empty($otherlinks)) ? ' ('.$otherlinks.') ' : '' ) ?>

@@ -134,21 +100,21 @@ function exportEventDetail($event, $exportFrames, $exportImages) { } function exportEventFrames($event, $exportDetail, $exportImages) { - $sql = 'SELECT *, unix_timestamp( TimeStamp ) AS UnixTimeStamp FROM Frames WHERE EventID = ? ORDER BY FrameId'; + $sql = 'SELECT *, unix_timestamp(TimeStamp) AS UnixTimeStamp FROM Frames WHERE EventID = ? ORDER BY FrameId'; $frames = dbFetchAll($sql, NULL, array($event->Id())); ob_start(); exportHeader(translate('Frames').' '.$event->Id()); $otherlinks = ''; - if ( $exportDetail ) $otherlinks .= ''.translate('Event').','; - if ( $exportImages ) $otherlinks .= ''.translate('Images').','; - $otherlinks = substr($otherlinks,0,-1); + if ( $exportDetail ) $otherlinks .= ' '.translate('Event').','; + if ( $exportImages ) $otherlinks .= ' '.translate('Images').','; + $otherlinks = substr($otherlinks, 0, -1); ?>
-

: Name()) ?> ()

+

Name()).( (!empty($otherlinks)) ? ' ('.$otherlinks.')':'') ?>

Id() ?>
Name()) ?>
@@ -208,26 +174,45 @@ function exportEventFrames($event, $exportDetail, $exportImages) { Id()); $otherlinks = ''; - if( $exportDetail ) $otherlinks .= ''.translate('Event').','; - if( $exportFrames ) $otherlinks .= ''.translate('Frames').','; - $otherlinks = substr($otherlinks,0,-1); + if ( $exportDetail ) $otherlinks .= ' '.translate('Event').','; + if ( $exportFrames ) $otherlinks .= ' '.translate('Frames').','; + $otherlinks = substr($otherlinks, 0, -1); $filelist = array_keys($myfilelist); - sort($filelist,SORT_NUMERIC); + sort($filelist, SORT_NUMERIC); $slides = '"'.implode('","',$filelist).'"'; $listcount = count($filelist); ?> -

: Name()) ?> ()

+

Name()).( (!empty($otherlinks)) ? ' ('.$otherlinks.') ' : '' ) ?>

DefaultVideo() ) { @@ -247,12 +232,12 @@ function exportEventImages($event, $exportDetail, $exportFrames, $myfilelist) { if ( $Monitor->VideoWriter() == '2' ) { # Passthrough $Rotation = $event->Orientation(); - if ( in_array($event->Orientation(),array('ROTATE_90','ROTATE_270')) ) + if ( in_array($event->Orientation(), array('ROTATE_90','ROTATE_270')) ) $Zoom = $event->Height()/$event->Width(); - } + } # end if passthrough ?>
-
+'; + return $html; +} // end function eventlist_html -function exportEventImagesMaster($eids) { +function exportEventImagesMaster($eids, $exportDetail, $exportFrames) { ob_start(); exportHeader(translate('Images').' Master'); ?> @@ -620,10 +614,10 @@ function exportEventImagesMaster($eids) { $eids)); - foreach ($events as $event) { + foreach ( $events as $event ) { //get monitor id and event id - $eventMonitorId[$eid] = $event->MonitorId(); - $eventPath[$eid] = $event->Relative_Path(); + $eventMonitorId[$event->Id()] = $event->MonitorId(); + $eventPath[$event->Id()] = $event->Relative_Path(); } $monitors = array_values(array_flip(array_flip($eventMonitorId))); //unique monitors and reindex the array @@ -631,11 +625,10 @@ function exportEventImagesMaster($eids) { //* if ( !empty($monitors) ) { - $tmp = dbFetchAll('SELECT Id,Name FROM Monitors WHERE Id IN ('.implode(',', $monitors).') '); + $tmp = dbFetchAll('SELECT Id, Name FROM Monitors WHERE Id IN ('.implode(',', $monitors).') '); foreach ( $tmp as $row ) { $monitorNames[$row['Id']] = $row['Name']; } } //*/ - //trigger_error(print_r($monitorNames,1)); ?>
    @@ -647,31 +640,32 @@ function exportEventImagesMaster($eids) { ?>
-
+
', $Group->depth()); $html .= '

All

-
+ "; - echo '

Monitor: ' . $monitorNames[$monitor_id] . '

'; + foreach ( $monitors as $monitor_id ) { + echo '
'; + echo '

Monitor: '.$monitorNames[$monitor_id].'

'; foreach ( $events as $event ) { if ( $event->MonitorId() == $monitor_id ) { - eventlist_html($event); + echo eventlist_html($event, $exportDetail, $exportFrames); } # end if its the right monitor } # end foreach event echo '
'; } # end foreach monitor ?> -
- @@ -681,7 +675,7 @@ function exportEventImagesMaster($eids) { @@ -751,7 +763,14 @@ function loadintoIframe(iframeid, url) { return ob_get_clean(); } -function exportFileList($event, $exportDetail, $exportFrames, $exportImages, $exportVideo, $exportMisc) { +function exportFileList( + $event, + $exportDetail, + $exportFrames, + $exportImages, + $exportVideo, + $exportMisc +) { if ( !canView('Events') or !$event ) { return; @@ -773,28 +792,31 @@ function exportFileList($event, $exportDetail, $exportFrames, $exportImages, $ex if ( $exportDetail ) { $file = 'zmEventDetail.html'; - if ( !($fp = fopen($eventPath.'/'.$file, 'w')) ) { - ZM\Fatal("Can't open event detail export file '$file'"); + if ( $fp = fopen($eventPath.'/'.$file, 'w') ) { + fwrite($fp, exportEventDetail($event, $exportFrames, $exportImages)); + fclose($fp); + $exportFileList[$file] = $file; + } else { + ZM\Error("Can't open event detail export file '$file'"); } - fwrite($fp, exportEventDetail($event, $exportFrames, $exportImages)); - fclose($fp); - $exportFileList[$file] = $file; } + if ( $exportFrames ) { $file = 'zmEventFrames.html'; - if ( !($fp = fopen($eventPath.'/'.$file, 'w')) ) { - ZM\Fatal("Can't open event frames export file '$file'"); + if ( $fp = fopen($eventPath.'/'.$file, 'w') ) { + fwrite($fp, exportEventFrames($event, $exportDetail, $exportImages)); + fclose($fp); + $exportFileList[$file] = $file; + } else { + ZM\Error("Can't open event frames export file '$file'"); } - fwrite($fp, exportEventFrames($event, $exportDetail, $exportImages)); - fclose($fp); - $exportFileList[$file] = $file; } if ( $exportImages ) { $filesLeft = array(); $myfilelist = array(); foreach ( $files as $file ) { - if ( preg_match('/-(?:capture|analyse).jpg$/', $file ) ) { + if ( preg_match('/-(?:capture|analyse).jpg$/', $file) ) { $myfilelist[$file] = $exportFileList[$file] = $file; } else { $filesLeft[$file] = $file; @@ -805,11 +827,13 @@ function exportFileList($event, $exportDetail, $exportFrames, $exportImages, $ex // create an image slider if ( !empty($myfilelist) ) { $file = 'zmEventImages.html'; - if ( !($fp = fopen($file, 'w')) ) - ZM\Fatal("Can't open event images export file '$file'"); - fwrite($fp, exportEventImages($event, $exportDetail, $exportFrames, $myfilelist)); - fclose($fp); - $exportFileList[$file] = $file; + if ( $fp = fopen($eventPath.'/'.$file, 'w') ) { + fwrite($fp, exportEventImages($event, $exportDetail, $exportFrames, $myfilelist)); + fclose($fp); + $exportFileList[$file] = $file; + } else { + ZM\Error("Can't open event images export file '$file'"); + } } } # end if exportImages @@ -823,7 +847,7 @@ function exportFileList($event, $exportDetail, $exportFrames, $exportImages, $ex } } $files = $filesLeft; - } # end if exportVideo + } # end if exportVideo if ( $exportMisc ) { foreach ( $files as $file ) { @@ -869,13 +893,14 @@ function exportEvents( # Ensure that we are going to be able to do this. if ( ! ( mkdir($export_dir) or file_exists($export_dir) ) ) { - ZM\Fatal("Can't create exports dir at '$export_dir'"); - } else { - ZM\Logger::Debug("Successfully created dir '$export_dir'"); + ZM\Error("Can't create exports dir at '$export_dir'"); + return false; } + ZM\Logger::Debug("Successfully created dir '$export_dir'"); chmod($export_dir, 0700); if ( !chdir($export_dir) ) { - ZM\Fatal("Can't chdir to $export_dir"); + ZM\Error("Can't chdir to $export_dir"); + return; } $export_root = 'zmExport'; @@ -886,43 +911,37 @@ function exportEvents( if ( !is_array($eids) ) { $eids = array($eids); } - ZM\Logger::Debug('Eids: ' . print_r($eids,true)); foreach ( $eids as $eid ) { $event = new ZM\Event($eid); $event_dir = $export_dir.'/'.$event->Id(); - if ( !(mkdir($event_dir) or file_exists($event_dir) ) ) { + if ( !(mkdir($event_dir) or file_exists($event_dir)) ) { ZM\Error("Can't mkdir $event_dir"); } $event_exportFileList = exportFileList($event, $exportDetail, $exportFrames, $exportImages, $exportVideo, $exportMisc); - ZM\Logger::Debug("File list for event $eid " . print_r($event_exportFileList, true)); - $exportFileList = array_merge($exportFileList,$event_exportFileList); + $exportFileList = array_merge($exportFileList, $event_exportFileList); foreach ( $event_exportFileList as $file ) { - if ( preg_match('/\.html$/', $file) ) - continue; - #exec('cp -as '.$event->Path().'/../'.$file.' '.$export_dir.'/'.$file, $output, $return); + #if ( preg_match('/\.html$/', $file) ) + #continue; $cmd = 'cp -as '.$event->Path().'/'.$file.' '.$export_dir.'/'.$event->Id().'/'.$file. ' 2>&1'; exec($cmd, $output, $return); ZM\Logger::Debug($cmd.' return code: '.$return.' output: '.print_r($output,true)); - } + } # end foreach event_exportFile } # end foreach event - // create an master image - if ( $exportImages ) { - if ( !symlink(ZM_PATH_WEB.'/'.ZM_SKIN_PATH.'/js/jquery.js', $export_dir.'/jquery.js') ) - ZM\Error('Failed linking jquery.js'); - //if ( !symlink(ZM_PATH_WEB.'/'.ZM_SKIN_PATH.'/js/video.js', $export_dir.'/video.js') ) - //Error("Failed linking video.js"); + if ( !symlink(ZM_PATH_WEB.'/'.ZM_SKIN_PATH.'/js/jquery.js', $export_dir.'/jquery.js') ) + ZM\Error('Failed linking jquery.js'); + //if ( !symlink(ZM_PATH_WEB.'/'.ZM_SKIN_PATH.'/js/video.js', $export_dir.'/video.js') ) + //Error("Failed linking video.js"); - $html_eventMaster_file = 'zmEventImagesMaster_'.date('Ymd_His'). '.html'; - $html_eventMaster_path = $export_dir.'/'.$html_eventMaster_file; + $html_eventMaster_file = 'zmEventImagesMaster.html'; + $html_eventMaster_path = $export_dir.'/'.$html_eventMaster_file; - if ( ($fp = fopen($html_eventMaster_path, 'w')) ) { - fwrite($fp, exportEventImagesMaster($eids)); - fclose($fp); - $exportFileList[] = $html_eventMaster_file; - } else { - ZM\Error("Can't open event images export file '$html_eventMaster_path'"); - } + if ( ($fp = fopen($html_eventMaster_path, 'w')) ) { + fwrite($fp, exportEventImagesMaster($eids, $exportDetail, $exportFrames)); + fclose($fp); + $exportFileList[] = $html_eventMaster_file; + } else { + ZM\Error("Can't open event images export file '$html_eventMaster_path'"); } $listFile = $export_dir.'/'.$export_listFile; @@ -949,10 +968,10 @@ function exportEvents( $exportFormat .= '.gz'; } if ( $exportStructure == 'flat' ) { - if (preg_match("/BSD/i", $version)) { - $command .= " -s '#^.*/##'"; + if ( preg_match('/BSD/i', $version) ) { + $command .= ' -s \'#^.*/##\''; } else { - $command .= " --xform='s#^.+/##x'"; + $command .= ' --xform=\'s#^.+/##x\''; } } $command .= ' --file='.escapeshellarg($archive); @@ -974,10 +993,10 @@ function exportEvents( return false; } - //clean up temporary files + // clean up temporary files if ( !empty($html_eventMaster) ) { unlink($monitorPath.'/'.$html_eventMaster); } return '?view=archive%26type='.$exportFormat.'%26connkey='.$connkey; -} +} // end function exportEvents diff --git a/web/skins/classic/views/export.php b/web/skins/classic/views/export.php index c008b0f2b..6abfd62bf 100644 --- a/web/skins/classic/views/export.php +++ b/web/skins/classic/views/export.php @@ -101,7 +101,7 @@ if ( isset($_REQUEST['eid']) and $_REQUEST['eid'] ) { $eventsSql .= $_REQUEST['filter']['sql']; } $eventsSql .= " ORDER BY $sortColumn $sortOrder"; - if ( isset($_REQUEST['filter']['Query']['limit']) ) + if ( isset($_REQUEST['filter']['Query']['limit']) ) $eventsSql .= ' LIMIT '.validInt($_REQUEST['filter']['Query']['limit']); } # end if filter @@ -244,30 +244,28 @@ while ( $event_row = dbFetchNext($results) ) { - -

+

-

- + diff --git a/web/skins/classic/views/groups.php b/web/skins/classic/views/groups.php index cba26aaea..4ffe47f7d 100644 --- a/web/skins/classic/views/groups.php +++ b/web/skins/classic/views/groups.php @@ -69,7 +69,7 @@ function group_line( $Group ) { $html .= str_repeat('
 '; if ( canEdit('Groups') ) { - $html .= ''. validHtmlStr($Group->Id() . ' ' . $Group->Name()).''; + $html .= ''.validHtmlStr($Group->Id().' '.$Group->Name()).''; } else { $html .= validHtmlStr($Group->Name()); } diff --git a/web/skins/classic/views/js/console.js.php b/web/skins/classic/views/js/console.js.php index f5e65332d..e6af2a8b6 100644 --- a/web/skins/classic/views/js/console.js.php +++ b/web/skins/classic/views/js/console.js.php @@ -1,20 +1,24 @@ var consoleRefreshTimeout = ; 0 ) { if ( ZM_DYN_DONATE_REMINDER_TIME < time() ) { $showDonatePopup = true; } } else { $nextReminder = time() + 30*24*60*60; - dbQuery( "update Config set Value = '".$nextReminder."' where Name = 'ZM_DYN_DONATE_REMINDER_TIME'" ); + dbQuery("UPDATE Config SET Value = '".$nextReminder."' WHERE Name = 'ZM_DYN_DONATE_REMINDER_TIME'"); } } -} +} // end if canEdit('System') ?> var showVersionPopup = ; var showDonatePopup = ; diff --git a/web/skins/classic/views/js/export.js b/web/skins/classic/views/js/export.js index d553f9385..7dd7f6c6d 100644 --- a/web/skins/classic/views/js/export.js +++ b/web/skins/classic/views/js/export.js @@ -65,7 +65,7 @@ function exportResponse(respObj, respText) { //window.location.replace( thisUrl+'?view='+currentView+'&'+eids.join('&')+'&exportFile='+respObj.exportFile+'&generated='+((respObj.result=='Ok')?1:0) ); } -function exportEvent( ) { +function exportEvents( ) { var parms = 'view=event&request=event&action=export'; parms += '&'+$('contentForm').toQueryString(); var query = new Request.JSON( { @@ -87,7 +87,7 @@ function initPage() { if ( exportReady ) { startDownload.pass(exportFile).delay(1500); } - document.getElementById('exportButton').addEventListener('click', exportEvent); + document.getElementById('exportButton').addEventListener('click', exportEvents); } window.addEventListener('DOMContentLoaded', initPage); diff --git a/web/skins/classic/views/js/groups.js b/web/skins/classic/views/js/groups.js index 31c9402a2..8ff1b61ff 100644 --- a/web/skins/classic/views/js/groups.js +++ b/web/skins/classic/views/js/groups.js @@ -8,8 +8,13 @@ function setGroup( element ) { form.submit(); } -function editGroup( gid ) { - createPopup( '?view=group&gid='+gid, 'zmGroup', 'group' ); +function editGroup( element ) { + var gid = element.getAttribute('data-group-id'); + if ( !gid ) { + console.log('No group id found in editGroup'); + } else { + createPopup('?view=group&gid='+gid, 'zmGroup'+gid, 'group'); + } } function deleteGroup( element ) { diff --git a/web/skins/classic/views/version.php b/web/skins/classic/views/version.php index 3ced8c613..6552c4cd5 100644 --- a/web/skins/classic/views/version.php +++ b/web/skins/classic/views/version.php @@ -33,6 +33,7 @@ if ( verNum(ZM_DYN_CURR_VERSION) != verNum(ZM_DYN_LAST_VERSION) and canEdit('Sys 'hour' => translate('VersionRemindHour'), 'day' => translate('VersionRemindDay'), 'week' => translate('VersionRemindWeek'), + 'month' => translate('VersionRemindMonth'), 'never' => translate('VersionRemindNever') ) ); } @@ -64,16 +65,16 @@ if ( ZM_DYN_DB_VERSION && (ZM_DYN_DB_VERSION != ZM_VERSION) ) { } else { ?>
- +

-

+

- + -