Merge branch 'storageareas' into zma_to_thread
This commit is contained in:
commit
7c9c2b0f01
|
@ -701,7 +701,7 @@ CREATE TABLE `Storage` (
|
||||||
--
|
--
|
||||||
-- Create a default storage location
|
-- Create a default storage location
|
||||||
--
|
--
|
||||||
insert into Storage VALUES (NULL, '/var/cache/zoneminder/events', 'Default', 'local', NULL );
|
insert into Storage VALUES (NULL, '/var/cache/zoneminder/events', 'Default', 'local', NULL, 'Medium', 0 );
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||||
|
@ -723,22 +723,6 @@ insert into Users VALUES (NULL,'admin',password('admin'),'',1,'View','Edit','Edi
|
||||||
--
|
--
|
||||||
-- Add a sample filter to purge the oldest 100 events when the disk is 95% full
|
-- Add a sample filter to purge the oldest 100 events when the disk is 95% full
|
||||||
--
|
--
|
||||||
`Id` int(10) unsigned NOT NULL auto_increment,
|
|
||||||
`Name` varchar(64) NOT NULL default '',
|
|
||||||
`Query` text NOT NULL,
|
|
||||||
`AutoArchive` tinyint(3) unsigned NOT NULL default '0',
|
|
||||||
`AutoVideo` tinyint(3) unsigned NOT NULL default '0',
|
|
||||||
`AutoUpload` tinyint(3) unsigned NOT NULL default '0',
|
|
||||||
`AutoEmail` tinyint(3) unsigned NOT NULL default '0',
|
|
||||||
`AutoMessage` tinyint(3) unsigned NOT NULL default '0',
|
|
||||||
`AutoExecute` tinyint(3) unsigned NOT NULL default '0',
|
|
||||||
`AutoExecuteCmd` tinytext,
|
|
||||||
`AutoDelete` tinyint(3) unsigned NOT NULL default '0',
|
|
||||||
`AutoMove` tinyint(3) unsigned NOT NULL default '0',
|
|
||||||
`AutoMoveTo` smallint(5) unsigned NOT NULL default 0,
|
|
||||||
`UpdateDiskSpace` tinyint(3) unsigned NOT NULL default '0',
|
|
||||||
`Background` tinyint(1) unsigned NOT NULL default '0',
|
|
||||||
`Concurrent` tinyint(1) unsigned NOT NULL default '0',
|
|
||||||
|
|
||||||
insert into Filters values (NULL,'PurgeWhenFull','{"sort_field":"Id","terms":[{"val":0,"attr":"Archived","op":"="},{"cnj":"and","val":95,"attr":"DiskPercent","op":">="}],"limit":100,"sort_asc":1}',0/*AutoArchive*/,0/*AutoVideo*/,0/*AutoUpload*/,0/*AutoEmail*/,0/*AutoMessage*/,0/*AutoExecute*/,'',1/*AutoDelete*/,0/*AutoMove*/,0/*MoveTo*/,0/*UpdateDiskSpace*/,1/*Background*/,0/*Concurrent*/);
|
insert into Filters values (NULL,'PurgeWhenFull','{"sort_field":"Id","terms":[{"val":0,"attr":"Archived","op":"="},{"cnj":"and","val":95,"attr":"DiskPercent","op":">="}],"limit":100,"sort_asc":1}',0/*AutoArchive*/,0/*AutoVideo*/,0/*AutoUpload*/,0/*AutoEmail*/,0/*AutoMessage*/,0/*AutoExecute*/,'',1/*AutoDelete*/,0/*AutoMove*/,0/*MoveTo*/,0/*UpdateDiskSpace*/,1/*Background*/,0/*Concurrent*/);
|
||||||
insert into Filters values (NULL,'Update DiskSpace','{"terms":[{"attr":"DiskSpace","op":"IS","val":"NULL"}]}',0,0,0,0,0,0,'',0,0,0,1,1,0);
|
insert into Filters values (NULL,'Update DiskSpace','{"terms":[{"attr":"DiskSpace","op":"IS","val":"NULL"}]}',0,0,0,0,0,0,'',0,0,0,1,1,0);
|
||||||
|
|
|
@ -244,3 +244,32 @@ SET @s = (SELECT IF(
|
||||||
|
|
||||||
PREPARE stmt FROM @s;
|
PREPARE stmt FROM @s;
|
||||||
EXECUTE stmt;
|
EXECUTE stmt;
|
||||||
|
|
||||||
|
UPDATE Monitors INNER JOIN (
|
||||||
|
SELECT MonitorId,
|
||||||
|
COUNT(Id) AS TotalEvents,
|
||||||
|
SUM(DiskSpace) AS TotalEventDiskSpace,
|
||||||
|
SUM(IF(Archived,1,0)) AS ArchivedEvents,
|
||||||
|
SUM(IF(Archived,DiskSpace,0)) AS ArchivedEventDiskSpace,
|
||||||
|
SUM(IF(StartTime > DATE_SUB(NOW(), INTERVAL 1 hour),1,0)) AS HourEvents,
|
||||||
|
SUM(IF(StartTime > DATE_SUB(NOW(), INTERVAL 1 hour),DiskSpace,0)) AS HourEventDiskSpace,
|
||||||
|
SUM(IF(StartTime > DATE_SUB(NOW(), INTERVAL 1 day),1,0)) AS DayEvents,
|
||||||
|
SUM(IF(StartTime > DATE_SUB(NOW(), INTERVAL 1 day),DiskSpace,0)) AS DayEventDiskSpace,
|
||||||
|
SUM(IF(StartTime > DATE_SUB(NOW(), INTERVAL 1 week),1,0)) AS WeekEvents,
|
||||||
|
SUM(IF(StartTime > DATE_SUB(NOW(), INTERVAL 1 week),DiskSpace,0)) AS WeekEventDiskSpace,
|
||||||
|
SUM(IF(StartTime > DATE_SUB(NOW(), INTERVAL 1 month),1,0)) AS MonthEvents,
|
||||||
|
SUM(IF(StartTime > DATE_SUB(NOW(), INTERVAL 1 month),DiskSpace,0)) AS MonthEventDiskSpace
|
||||||
|
FROM Events GROUP BY MonitorId
|
||||||
|
) AS E ON E.MonitorId=Monitors.Id SET
|
||||||
|
Monitors.TotalEvents = E.TotalEvents,
|
||||||
|
Monitors.TotalEventDiskSpace = E.TotalEventDiskSpace,
|
||||||
|
Monitors.ArchivedEvents = E.ArchivedEvents,
|
||||||
|
Monitors.ArchivedEventDiskSpace = E.ArchivedEventDiskSpace,
|
||||||
|
Monitors.HourEvents = E.HourEvents,
|
||||||
|
Monitors.HourEventDiskSpace = E.HourEventDiskSpace,
|
||||||
|
Monitors.DayEvents = E.DayEvents,
|
||||||
|
Monitors.DayEventDiskSpace = E.DayEventDiskSpace,
|
||||||
|
Monitors.WeekEvents = E.WeekEvents,
|
||||||
|
Monitors.WeekEventDiskSpace = E.WeekEventDiskSpace,
|
||||||
|
Monitors.MonthEvents = E.MonthEvents,
|
||||||
|
Monitors.MonthEventDiskSpace = E.MonthEventDiskSpace;
|
||||||
|
|
|
@ -1451,6 +1451,17 @@ our @options = (
|
||||||
type => $types{boolean},
|
type => $types{boolean},
|
||||||
category => 'logging',
|
category => 'logging',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name => 'ZM_WEB_TITLE',
|
||||||
|
default => 'ZoneMinder',
|
||||||
|
description => 'The title displayed wherever the site references itself.',
|
||||||
|
help => q`
|
||||||
|
If you want the site to identify as something other than ZoneMinder, change this here.
|
||||||
|
It can be used to more accurately identify this installation from others.
|
||||||
|
`,
|
||||||
|
type => $types{string},
|
||||||
|
category => 'web',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name => 'ZM_WEB_TITLE_PREFIX',
|
name => 'ZM_WEB_TITLE_PREFIX',
|
||||||
default => 'ZM',
|
default => 'ZM',
|
||||||
|
@ -1464,6 +1475,27 @@ our @options = (
|
||||||
type => $types{string},
|
type => $types{string},
|
||||||
category => 'web',
|
category => 'web',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name => 'ZM_HOME_URL',
|
||||||
|
default => 'http://zoneminder.com',
|
||||||
|
description => 'The url used in the home/logo area of the navigation bar.',
|
||||||
|
help => q`
|
||||||
|
By default this takes you to the zoneminder.com website,
|
||||||
|
but perhaps you would prefer it to take you somewhere else.
|
||||||
|
`,
|
||||||
|
type => $types{string},
|
||||||
|
category => 'web',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name => 'ZM_HOME_CONTENT',
|
||||||
|
default => 'ZoneMinder',
|
||||||
|
description => 'The content of the home button.',
|
||||||
|
help => q`
|
||||||
|
You may wish to set this to empty if you are using css to put a background image on it.
|
||||||
|
`,
|
||||||
|
type => $types{string},
|
||||||
|
category => 'web',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name => 'ZM_WEB_CONSOLE_BANNER',
|
name => 'ZM_WEB_CONSOLE_BANNER',
|
||||||
default => '',
|
default => '',
|
||||||
|
|
|
@ -2145,7 +2145,8 @@ function cache_bust( $file ) {
|
||||||
# To defeat caching. Should probably use md5 hash
|
# To defeat caching. Should probably use md5 hash
|
||||||
$parts = pathinfo($file);
|
$parts = pathinfo($file);
|
||||||
global $css;
|
global $css;
|
||||||
$cacheFile = 'cache/'.$parts['filename'].'-'.$css.'-'.filemtime($file).'.'.$parts['extension'];
|
$dirname = preg_replace( '/\//', '_', $parts['dirname'] );
|
||||||
|
$cacheFile = 'cache/'.$dirname.'_'.$parts['filename'].'-'.$css.'-'.filemtime($file).'.'.$parts['extension'];
|
||||||
if ( file_exists( ZM_PATH_WEB.'/'.$cacheFile ) or symlink( ZM_PATH_WEB.'/'.$file, ZM_PATH_WEB.'/'.$cacheFile ) ) {
|
if ( file_exists( ZM_PATH_WEB.'/'.$cacheFile ) or symlink( ZM_PATH_WEB.'/'.$file, ZM_PATH_WEB.'/'.$cacheFile ) ) {
|
||||||
return $cacheFile;
|
return $cacheFile;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
#options {
|
||||||
|
padding-top: 10px;
|
||||||
|
|
||||||
|
}
|
||||||
input.small {
|
input.small {
|
||||||
width: 6em;
|
width: 6em;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,14 +19,14 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
// Don't load in additional JS to these views
|
|
||||||
$bad_views = array('monitor', 'log');
|
|
||||||
|
|
||||||
function xhtmlHeaders( $file, $title ) {
|
function xhtmlHeaders( $file, $title ) {
|
||||||
global $css;
|
global $css;
|
||||||
global $skin;
|
global $skin;
|
||||||
$skinCssFile = getSkinFile( 'css/'.$css.'/skin.css' );
|
|
||||||
$skinCssFilejquery = getSkinFile( 'css/'.$css.'/jquery-ui-theme.css' );
|
# This idea is that we always include the classic css files,
|
||||||
|
# and then any different skin only needs to contain things that are different.
|
||||||
|
$baseCssPhpFile = getSkinFile( 'css/classic/skin.css.php' );
|
||||||
|
|
||||||
$skinCssPhpFile = getSkinFile( 'css/'.$css.'/skin.css.php' );
|
$skinCssPhpFile = getSkinFile( 'css/'.$css.'/skin.css.php' );
|
||||||
|
|
||||||
$skinJsFile = getSkinFile( 'js/skin.js' );
|
$skinJsFile = getSkinFile( 'js/skin.js' );
|
||||||
|
@ -34,7 +34,7 @@ function xhtmlHeaders( $file, $title ) {
|
||||||
$cssJsFile = getSkinFile( 'js/'.$css.'.js' );
|
$cssJsFile = getSkinFile( 'js/'.$css.'.js' );
|
||||||
|
|
||||||
$basename = basename( $file, '.php' );
|
$basename = basename( $file, '.php' );
|
||||||
$viewCssFile = getSkinFile( '/css/'.$css.'/views/'.$basename.'.css' );
|
|
||||||
if ($basename == 'watch') {
|
if ($basename == 'watch') {
|
||||||
$viewCssFileExtra = getSkinFile( '/css/'.$css.'/views/control.css' );
|
$viewCssFileExtra = getSkinFile( '/css/'.$css.'/views/control.css' );
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,16 @@ function xhtmlHeaders( $file, $title ) {
|
||||||
$viewJsPhpFile = getSkinFile( 'views/js/'.$basename.'.js.php' );
|
$viewJsPhpFile = getSkinFile( 'views/js/'.$basename.'.js.php' );
|
||||||
|
|
||||||
extract( $GLOBALS, EXTR_OVERWRITE );
|
extract( $GLOBALS, EXTR_OVERWRITE );
|
||||||
|
function output_link_if_exists( $files ) {
|
||||||
|
global $skin;
|
||||||
|
$html = array();
|
||||||
|
foreach ( $files as $file ) {
|
||||||
|
if ( getSkinFile( $file ) ) {
|
||||||
|
$html[] = '<link rel="stylesheet" href="'.cache_bust( 'skins/'.$skin.'/'.$file ).'" type="text/css"/>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return implode("\n", $html);
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
@ -66,15 +76,20 @@ if ( file_exists( "skins/$skin/css/$css/graphics/favicon.ico" ) ) {
|
||||||
<link rel="stylesheet" href="css/reset.css" type="text/css"/>
|
<link rel="stylesheet" href="css/reset.css" type="text/css"/>
|
||||||
<link rel="stylesheet" href="css/overlay.css" type="text/css"/>
|
<link rel="stylesheet" href="css/overlay.css" type="text/css"/>
|
||||||
<link rel="stylesheet" href="css/bootstrap.min.css" type="text/css"/>
|
<link rel="stylesheet" href="css/bootstrap.min.css" type="text/css"/>
|
||||||
<link rel="stylesheet" href="<?php echo cache_bust($skinCssFile) ?>" type="text/css" media="screen"/>
|
|
||||||
<link rel="stylesheet" href="<?php echo cache_bust($skinCssFilejquery) ?>" type="text/css" media="screen"/>
|
|
||||||
<?php
|
<?php
|
||||||
if ( $viewCssFile ) {
|
echo output_link_if_exists( array(
|
||||||
|
'css/classic/skin.css',
|
||||||
|
'css/'.$css.'/skin.css',
|
||||||
|
'css/classic/views/'.$basename.'.css',
|
||||||
|
'css/'.$css.'/views/'.$basename.'.css',
|
||||||
|
'/js/dateTimePicker/jquery-ui-timepicker-addon.css',
|
||||||
|
'/js/jquery-ui-structure.css',
|
||||||
|
'/css/'.$css.'/jquery-ui-theme.css',
|
||||||
|
'/js/chosen/chosen.min.css',
|
||||||
|
)
|
||||||
|
);
|
||||||
?>
|
?>
|
||||||
<link rel="stylesheet" href="<?php echo cache_bust($viewCssFile) ?>" type="text/css" media="screen"/>
|
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
}
|
|
||||||
if ( isset($viewCssFileExtra) ) {
|
if ( isset($viewCssFileExtra) ) {
|
||||||
?>
|
?>
|
||||||
<link rel="stylesheet" href="<?php echo cache_bust($viewCssFileExtra) ?>" type="text/css" media="screen"/>
|
<link rel="stylesheet" href="<?php echo cache_bust($viewCssFileExtra) ?>" type="text/css" media="screen"/>
|
||||||
|
@ -92,6 +107,7 @@ if ( file_exists( "skins/$skin/css/$css/graphics/favicon.ico" ) ) {
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<script type="text/javascript" src="tools/mootools/mootools-core.js"></script>
|
<script type="text/javascript" src="tools/mootools/mootools-core.js"></script>
|
||||||
<script type="text/javascript" src="tools/mootools/mootools-more.js"></script>
|
<script type="text/javascript" src="tools/mootools/mootools-more.js"></script>
|
||||||
<script type="text/javascript" src="js/mootools.ext.js"></script>
|
<script type="text/javascript" src="js/mootools.ext.js"></script>
|
||||||
|
@ -101,9 +117,6 @@ if ( file_exists( "skins/$skin/css/$css/graphics/favicon.ico" ) ) {
|
||||||
<script type="text/javascript" src="skins/<?php echo $skin; ?>/js/chosen/chosen.jquery.min.js"></script>
|
<script type="text/javascript" src="skins/<?php echo $skin; ?>/js/chosen/chosen.jquery.min.js"></script>
|
||||||
<script type="text/javascript" src="skins/<?php echo $skin; ?>/js/dateTimePicker/jquery-ui-timepicker-addon.js"></script>
|
<script type="text/javascript" src="skins/<?php echo $skin; ?>/js/dateTimePicker/jquery-ui-timepicker-addon.js"></script>
|
||||||
|
|
||||||
<link href="skins/<?php echo $skin ?>/js/dateTimePicker/jquery-ui-timepicker-addon.css" rel="stylesheet">
|
|
||||||
<link href="skins/<?php echo $skin ?>/js/jquery-ui-structure.css" rel="stylesheet">
|
|
||||||
<link href="skins/<?php echo $skin ?>/js/chosen/chosen.min.css" rel="stylesheet">
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
//<![CDATA[
|
//<![CDATA[
|
||||||
<!--
|
<!--
|
||||||
|
@ -205,7 +218,7 @@ function getNavBarHTML($reload = null) {
|
||||||
?>
|
?>
|
||||||
<noscript>
|
<noscript>
|
||||||
<div style="background-color:red;color:white;font-size:x-large;">
|
<div style="background-color:red;color:white;font-size:x-large;">
|
||||||
ZoneMinder requires Javascript. Please enable Javascript in your browser for this site.
|
<?php echo ZM_WEB_TITLE ?> requires Javascript. Please enable Javascript in your browser for this site.
|
||||||
</div>
|
</div>
|
||||||
</noscript>
|
</noscript>
|
||||||
<div class="navbar navbar-inverse navbar-static-top">
|
<div class="navbar navbar-inverse navbar-static-top">
|
||||||
|
@ -217,7 +230,7 @@ ZoneMinder requires Javascript. Please enable Javascript in your browser for thi
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
</button>
|
</button>
|
||||||
<a class="navbar-brand" href="http://www.zoneminder.com" target="ZoneMinder">ZoneMinder</a>
|
<div class="navbar-brand"><a href="<?php echo ZM_HOME_URL?>" target="<?php echo ZM_WEB_TITLE ?>"><?php echo ZM_HOME_CONTENT ?></a></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="collapse navbar-collapse" id="main-header-nav">
|
<div class="collapse navbar-collapse" id="main-header-nav">
|
||||||
|
@ -295,13 +308,13 @@ if ($reload == 'reload') ob_start();
|
||||||
<?php echo makePopupLink( '?view=bandwidth', 'zmBandwidth', 'bandwidth', $bandwidth_options[$_COOKIE['zmBandwidth']] . ' ' . translate('BandwidthHead'), ($user && $user['MaxBandwidth'] != 'low' ) ) ?>
|
<?php echo makePopupLink( '?view=bandwidth', 'zmBandwidth', 'bandwidth', $bandwidth_options[$_COOKIE['zmBandwidth']] . ' ' . translate('BandwidthHead'), ($user && $user['MaxBandwidth'] != 'low' ) ) ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<?php echo makePopupLink( '?view=version', 'zmVersion', 'version', '<span class="'.$versionClass.'">v'.ZM_VERSION.'</span>', canEdit( 'System' ) ) ?>
|
<?php echo makePopupLink( '?view=version', 'zmVersion', 'version', '<span class="version '.$versionClass.'">v'.ZM_VERSION.'</span>', canEdit( 'System' ) ) ?>
|
||||||
<?php if ( defined('ZM_WEB_CONSOLE_BANNER') and ZM_WEB_CONSOLE_BANNER != '' ) { ?>
|
<?php if ( defined('ZM_WEB_CONSOLE_BANNER') and ZM_WEB_CONSOLE_BANNER != '' ) { ?>
|
||||||
<h3 id="development"><?php echo ZM_WEB_CONSOLE_BANNER ?></h3>
|
<h3 id="development"><?php echo ZM_WEB_CONSOLE_BANNER ?></h3>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</div>
|
</div>
|
||||||
<ul class="list-inline">
|
<ul class="list-inline">
|
||||||
<li><?php echo translate('Load') ?>: <?php echo getLoad() ?></li>
|
<li class="Load"><?php echo translate('Load') ?>: <?php echo getLoad() ?></li>
|
||||||
<?php
|
<?php
|
||||||
$connections = dbFetchOne( "SHOW status WHERE variable_name='threads_connected'", 'Value' );
|
$connections = dbFetchOne( "SHOW status WHERE variable_name='threads_connected'", 'Value' );
|
||||||
$max_connections = dbFetchOne( "SHOW variables WHERE variable_name='max_connections'", 'Value' );
|
$max_connections = dbFetchOne( "SHOW variables WHERE variable_name='max_connections'", 'Value' );
|
||||||
|
|
|
@ -15,7 +15,7 @@ xhtmlHeaders(__FILE__, translate('Login') );
|
||||||
|
|
||||||
<div id="loginform">
|
<div id="loginform">
|
||||||
|
|
||||||
<h1>ZoneMinder <?php echo translate('Login') ?></h1>
|
<h1><?php echo ZM_WEB_TITLE . ' ' . translate('Login') ?></h1>
|
||||||
|
|
||||||
<label for="inputUsername" class="sr-only"><?php echo translate('Username') ?></label>
|
<label for="inputUsername" class="sr-only"><?php echo translate('Username') ?></label>
|
||||||
<input type="text" id="inputUsername" name="username" class="form-control" placeholder="Username" required autofocus />
|
<input type="text" id="inputUsername" name="username" class="form-control" placeholder="Username" required autofocus />
|
||||||
|
|
Loading…
Reference in New Issue