1
0
Fork 0
mirror of https://gitlab.com/Shinobi-Systems/ShinobiCE.git synced 2025-03-09 15:40:15 +00:00

Shinobi CE officially lands on Gitlab

This commit is contained in:
Moe 2018-06-07 23:21:38 -07:00
commit f1406d4eec
431 changed files with 118157 additions and 0 deletions

95
web/pages/blocks/api.ejs Normal file
View file

@ -0,0 +1,95 @@
<!--API Window-->
<div class="modal medium fade dark" id="apis" role="dialog" aria-labelledby="apisLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<form class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="apisLabel"><i class="fa fa-code"></i> &nbsp; <%-lang['API Keys']%> <small><%-lang['Group Key']%> : <%- $user.ke %></small></h4>
</div>
<div class="modal-body">
<div class="text-center msg"></div>
<div class="col-md-6">
<div class="form-group">
<label><div><span><%-lang['Allowed IPs']%> <small><%-lang['Separate with commas, no spaces']%></small></span></div>
<div><input class="form-control" name="ip" placeholder="0.0.0.0 <%-lang['for Global Access']%>"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Can Authenticate Websocket']%></span></div>
<div><select class="form-control" detail="auth_socket">
<option value="1"><%-lang['Yes']%></option>
<option value="0" selected><%-lang['No']%></option>
</select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Can Get Monitors']%></span></div>
<div><select class="form-control" detail="get_monitors">
<option value="1" selected><%-lang['Yes']%></option>
<option value="0"><%-lang['No']%></option>
</select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Can Control Monitors']%></span></div>
<div><select class="form-control" detail="control_monitors">
<option value="1" selected><%-lang['Yes']%></option>
<option value="0"><%-lang['No']%></option>
</select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Can Get Logs']%></span></div>
<div><select class="form-control" detail="get_logs">
<option value="1" selected><%-lang['Yes']%></option>
<option value="0"><%-lang['No']%></option>
</select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Can View Streams']%></span></div>
<div><select class="form-control" detail="watch_stream">
<option value="1" selected><%-lang['Yes']%></option>
<option value="0"><%-lang['No']%></option>
</select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Can View Snapshots']%></span></div>
<div><select class="form-control" detail="watch_snapshot">
<option value="1" selected><%-lang['Yes']%></option>
<option value="0"><%-lang['No']%></option>
</select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Can View Videos']%></span></div>
<div><select class="form-control" detail="watch_videos">
<option value="1" selected><%-lang['Yes']%></option>
<option value="0"><%-lang['No']%></option>
</select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Can Delete Videos']%></span></div>
<div><select class="form-control" detail="delete_videos">
<option value="1" selected><%-lang['Yes']%></option>
<option value="0"><%-lang['No']%></option>
</select></div>
</label>
</div>
</div>
<div class="col-md-6">
<table class="table table-striped" id="api_list"></table>
</div>
<input type="hidden" name="details">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><%-lang['Close']%></button>
<button type="submit" class="btn btn-primary"><i class="fa fa-plus"></i> &nbsp; <%-lang['Add']%></button>
</div>
</form>
</div>
</div>

View file

@ -0,0 +1,37 @@
<!--Confirmation Window-->
<div class="modal fade" id="confirm_window" role="dialog" aria-labelledby="confirm_windowLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="confirm_windowLabel"><i class="fa fa-exclamation-circle"></i> &nbsp; <span><%- lang['Confirm'] %></span></h4>
</div>
<div class="modal-body"></div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal"><i class="fa fa-times"></i> <%- lang['Close'] %></button>
<button type="button" class="btn btn-success confirmaction"><%- lang['Save'] %></button>
</div>
</div>
</div>
</div>
<script>
//confirmwindow
$.confirm={e:$('#confirm_window')};
$.confirm.title=$.confirm.e.find('.modal-title span')
$.confirm.body=$.confirm.e.find('.modal-body')
$.confirm.click=function(x,e){
if(!x.class){x.class='btn-success'}
if(!x.title){x.title='Save changes'}
x.e=$.confirm.e.find('.confirmaction').removeClass('btn-danger btn-warning btn-primary btn-success').addClass(x.class).text(x.title);
x.e.click(function(){
x.e.unbind('click');$.confirm.e.modal('hide');e();
})
}
$(document).ready(function(){
$.confirm.e.on('hidden.bs.modal', function () {
$.confirm.e.find('.confirmaction').unbind('click');
})
})
</script>

View file

@ -0,0 +1,118 @@
<!--Filters Window-->
<div class="modal fade dark medium" id="filters" role="dialog" aria-labelledby="filtersLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<form class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="filtersLabel"><i class="fa fa-filter"></i> &nbsp; <%- lang['Filters'] %></h4>
</div>
<div class="modal-body">
<div class="text-center msg"></div>
<div class="form-group-group green">
<h4><%- lang['Saved Filters'] %> : <small class="filter_name"></small></h4>
<div class="form-group">
<label>
<div><select class="form-control" id="saved_filters">
</select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%- lang['Filter Name'] %></span></div>
<div><input class="form-control" name="id" type="hidden">
<input class="form-control" name="name"></div>
</label>
</div>
</div>
<div class="form-group-group blue where">
<h4><%- lang['Find Where'] %>
<div class="pull-right">
<a class="btn btn-default btn-xs add">&nbsp;<i class="fa fa-plus"></i>&nbsp;</a>
<a class="btn btn-danger btn-xs remove">&nbsp;<i class="fa fa-minus"></i>&nbsp;</a>
</div>
</h4>
<div id="filters_where">
</div>
<h4><%- lang['Sort By'] %></h4>
<div class="row">
<div class="form-group col-md-4">
<label>
<div><select class="form-control" name="sort_by">
<option value="time" selected><%- lang['Start Time'] %></option>
<option value="end"><%- lang['End Time'] %></option>
<option value="mid"><%- lang['Monitor ID'] %></option>
<option value="ext"><%- lang['File Type'] %></option>
<option value="size"><%- lang['Filesize'] %></option>
<option value="status"><%- lang['Video Status'] %></option>
</select></div>
</label>
</div>
<div class="form-group col-md-4">
<label>
<div><select class="form-control" name="sort_by_direction">
<option value="ASC" selected><%- lang['ASC'] %></option>
<option value="DESC"><%- lang['DESC'] %></option>
</select></div>
</label>
</div>
<div class="form-group col-md-4">
<label>
<input class="form-control" title="Row Limit" placeholder="Row Limit" name="limit">
</label>
</div>
</div>
</div>
<div class="form-group-group red">
<h4><%- lang['Action for Selected'] %></h4>
<div class="form-group">
<label><div><span><%- lang['Enabled'] %></span></div>
<div><select class="form-control" name="enabled">
<option value="0" selected><%- lang['No'] %></option>
<option value="1"><%- lang['Yes'] %></option>
</select></div>
</label>
</div>
<div class="row">
<div class="form-group col-md-12 hidden">
<label><div><span><%- lang['Archive'] %></span></div>
<div><select class="form-control" name="archive">
<option value="0" selected><%- lang['No'] %></option>
<option value="1"><%- lang['Yes'] %></option>
</select></div>
</label>
</div>
<div class="form-group col-md-12">
<label><div><span><%- lang['Email Details'] %></span></div>
<div><select class="form-control" name="email">
<option value="0" selected><%- lang['No'] %></option>
<option value="1"><%- lang['Yes'] %></option>
</select></div>
</label>
</div>
<div class="form-group col-md-12">
<label><div><span><%- lang['Delete Matches'] %></span></div>
<div><select class="form-control" name="delete">
<option value="0" selected><%- lang['No'] %></option>
<option value="1"><%- lang['Yes'] %></option>
</select></div>
</label>
</div>
</div>
<div class="form-group">
<label><div><span><%- lang['Execute Command'] %></span></div>
<div><input class="form-control" name="execute"></div>
</label>
</div>
</div>
</div>
<div class="modal-footer">
<div class="pull-left">
<button type="button" class="btn btn-default" data-dismiss="modal"><%- lang['Close'] %></button>
<button type="button" class="btn btn-danger delete"><%- lang['Delete'] %></button>
</div>
<button type="submit" class="btn btn-success"><%- lang['Save'] %></button>
</div>
</form>
</div>
</div>

View file

@ -0,0 +1,36 @@
<head>
<title><%-lang.Shinobi%></title>
<meta charset="utf-8">
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
<meta name="viewport" content="width=device-width, maximum-scale=1, user-scalable=no" />
<meta name="description" content="Shinobi, Open Source CCTV Technology">
<meta name="author" content="Moe Alam, moeiscool on GitHub">
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="libs/css/bootstrap.min.css">
<link rel="stylesheet" href="libs/css/login.css">
<link rel="stylesheet" href="libs/css/material.min.css">
<link rel="stylesheet" href="libs/css/material.style.css">
<meta name="mobile-web-app-capable" content="yes">
<link rel="icon" href="libs/img/icon/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="libs/img/icon/favicon.ico" type="image/x-icon" />
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="Shinobi">
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="apple-touch-icon" sizes="57x57" href="libs/img/icon/apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon" sizes="72x72" href="libs/img/icon/apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon" sizes="76x76" href="libs/img/icon/apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon" sizes="114x114" href="libs/img/icon/apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon" sizes="120x120" href="libs/img/icon/apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon" sizes="144x144" href="libs/img/icon/apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon" sizes="152x152" href="libs/img/icon/apple-touch-icon-152x152.png" />
<link rel="apple-touch-icon" sizes="180x180" href="libs/img/icon/apple-touch-icon-180x180.png" />
<script src="libs/js/jquery.min.js"></script>
<script src="libs/js/jquery-ui.min.js"></script>
<script src="libs/js/jquery.serialize.js"></script>
</head>
<% cleanLang=function(string){
if(!string){string=''}
return string.replace(/'/g,"\\'")
} %>

45
web/pages/blocks/help.ejs Normal file
View file

@ -0,0 +1,45 @@
<!--Help Window-->
<!--
<div class="modal fade" id="help_window" tabindex="-1" role="dialog" aria-labelledby="help_windowLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="help_windowLabel"><i class="fa fa-question-circle"></i> &nbsp; <span><%-lang.Help%></span></h4>
</div>
<div class="modal-body">
<a href="http://shinobi.video/docs/donate"><img src="libs/img/icon/apple-touch-icon-152x152.png" class="pull-right" style="border-radius:50%;margin-left:20px;border: 1px solid #c3996b;"></a>
<p>For information about how to use Shinobi you can check out the <a target="_blank" href="http://shinobi.video/docs">Docs</a>.</p>
<p>If you would like to get professional support please consider ordering a <a href="http://shinobi.video/support">support package</a>. You can find <b>Moe Alam, The Author</b>, on the <a target="_blank" href="https://discord.gg/ehRd8Zz">Discord</a> Community Chat. For general questions and community support you can also try <a href="https://www.reddit.com/r/ShinobiCCTV">Reddit</a>.</p>
<p><strong>Support </strong> <a href="http://shinobi.video/support">from @moeiscool</a></p>
<p><b>Like Shinobi?</b> Please consider donating!</p>
<div><p><strong>Paypal Address :</strong> <a href="https://www.paypal.me/ShinobiCCTV" target="_blank">paypal@m03.ca</a></p>
</div>
<p><strong>Bitcoin Address :</strong> 1FvC7M8P9wVT1hXwHj8ugxpZj8JGfGyUDu</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger pull-left hide_donate"><%-lang['Don\'t show this anymore']%></button>
<a target="_blank" href="http://discordapp.com/invite/mdhmvuH/" class="btn btn-primary"><%-lang['Chat on Discord']%></a>
<a target="_blank" href="http://shinobi.video/docs" class="btn btn-success"><%-lang.Documentation%></a>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$.help={hide:$('#help_window .hide_donate'),e:$('#help_window')}
if($.ccio.op().hide_donate!==1){
setTimeout(function(){
$.help.e.modal('show')
},1000*60*5)
$.help.hide.click(function(){
$.ccio.op('hide_donate',1);
$.help.e.modal('hide');
})
}else{
$.help.hide.hide()
}
})
</script>-->

37
web/pages/blocks/logs.ejs Normal file
View file

@ -0,0 +1,37 @@
<!--Log Window-->
<div class="modal full fade search-parent" id="logs_modal" role="dialog" aria-labelledby="logsLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="logsLabel"><i class="fa fa-exclamation-triangle"></i> &nbsp; <%-lang.Logs%></h4>
</div>
<div class="modal-body">
<div class="form-group">
<label>
<div>
<select class="form-control" id="log_monitors">
<option class="hard" value="all"><%-lang['All Logs']%></option>
<option class="hard" value="$USER"><%-lang['For Group']%></option>
</select>
</div>
</label>
</div>
<div class="form-group">
<label>
<input class="form-control search-controller" placeholder="<%-lang.Search%>">
</label>
</div>
<table class="table table-striped">
<tbody class="search-body"></tbody>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal"><i class="fa fa-times"></i> <%-lang.Close%></button>
<button onclick="$.log.lm.change()" class="btn btn-success"><%-lang.Check%></button>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,219 @@
<!--Confirmation Window-->
<div class="modal fade" id="add_edit" tabindex="-1" role="dialog" aria-labelledby="permissionsLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<form class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="permissionsLabel"><i class="fa fa-lock"></i> &nbsp; <span id="title"></span>
<div class="pull-right">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="edit">
<input type="checkbox" id="edit" value="1" class="mdl-switch__input">
<span class="monospace mdl-switch__label"></span>
</label>
</div>
</h4>
</div>
<div class="modal-body" style="max-height:600px;overflow:auto">
<div class="form-group">
<label>
<div><span><%-lang.Email%></span></div>
<div><input class="form-control" type="email" name="mail"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Group Key']%> <small><%-lang['Leave blank for random.']%></small></span></div>
<div><input class="form-control" name="ke"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang.Password%> <small class="h_e_input h_e_edit"><%-lang.blankPassword%></small></span></div>
<div><input class="form-control" type="password" name="pass"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Password Again']%></span></div>
<div><input class="form-control" type="password" name="password_again"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['2-Factor Authentication']%> (<%-lang.Email%>)</span></div>
<div><select class="form-control" detail="factorAuth">
<option value="0" selected><%-lang.No%></option>
<option value="1"><%-lang.Yes%></option>
</select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Max Storage Amount']%></span></div>
<div><input class="form-control" detail="size" placeholder="10000"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Number of Days to keep']%> <b><%-lang.Videos%></b></span></div>
<div><input class="form-control" detail="days" placeholder="5"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Number of Days to keep']%> <b><%-lang.Events%></b></span></div>
<div><input class="form-control" detail="event_days" placeholder="10"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Number of Days to keep']%> <b><%-lang.Logs%></b></span></div>
<div><input class="form-control" detail="log_days" placeholder="10"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Max Number of Cameras']%></span></div>
<div><input class="form-control" detail="max_camera" placeholder="<%-lang['Leave blank for unlimited']%>"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Permissions']%></span></div>
<div><select class="form-control" detail="permissions" selector="h_l">
<option value="all" selected><%-lang['All Privileges']%></option>
<option value="limited"><%-lang.Limited%></option>
</select></div>
</label>
</div>
<div class="form-group h_l_input h_l_limited">
<label><div><span><%-lang['Can edit Max Storage']%></span></div>
<div><select class="form-control" detail="edit_size">
<option value="1" selected><%-lang.Yes%></option>
<option value="0"><%-lang.No%></option>
</select></div>
</label>
</div>
<div class="form-group h_l_input h_l_limited">
<label><div><span><%-lang['Can edit Max Days']%></span></div>
<div><select class="form-control" detail="edit_days">
<option value="1" selected><%-lang.Yes%></option>
<option value="0"><%-lang.No%></option>
</select></div>
</label>
</div>
<div class="form-group h_l_input h_l_limited">
<label><div><span><%-lang['Can edit how long to keep Events']%> <small><%-lang['in Days']%></small></span></div>
<div><select class="form-control" detail="edit_event_days">
<option value="1" selected><%-lang.Yes%></option>
<option value="0"><%-lang.No%></option>
</select></div>
</label>
</div>
<div class="form-group h_l_input h_l_limited">
<label><div><span><%-lang['Can edit how long to keep Logs']%> <small><%-lang['in Days']%></small></span></div>
<div><select class="form-control" detail="edit_log_days">
<option value="1" selected><%-lang.Yes%></option>
<option value="0"><%-lang.No%></option>
</select></div>
</label>
</div>
<div class="form-group h_l_input h_l_limited">
<label><div><span><%-lang['Can use Admin Panel']%></span></div>
<div><select class="form-control" detail="use_admin">
<option value="1" selected><%-lang.Yes%></option>
<option value="0"><%-lang.No%></option>
</select></div>
</label>
</div>
<div class="form-group h_l_input h_l_limited">
<label><div><span><%-lang['Can use WebDAV']%></span></div>
<div><select class="form-control" detail="use_webdav">
<option value="1" selected><%-lang.Yes%></option>
<option value="0"><%-lang.No%></option>
</select></div>
</label>
</div>
<div class="form-group h_l_input h_l_limited">
<label><div><span><%-lang['Can use LDAP']%></span></div>
<div><select class="form-control" detail="use_ldap">
<option value="1" selected><%-lang.Yes%></option>
<option value="0"><%-lang.No%></option>
</select></div>
</label>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal"><i class="fa fa-times"></i> <%-lang.Close%></button>
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> <%-lang.Save%></button>
</div>
<input type="hidden" name="details" value="{}">
</form>
</div>
</div>
<script>
//add new
$.aN={e:$('#add_edit')};$.aN.f=$.aN.e.find('form')
$.aN.f.submit(function(e){
e.preventDefault();
e.s=$.aN.f.serializeObject()
e.cx={f:'accounts',ff:'register',form:e.s};
if($('#edit').is(':checked')){
e.cx.ff='edit';
e.cx.account=$.aN.selected;
}
$.ccio.cx(e.cx)
$.aN.e.modal('hide')
return false;
});
$.aN.e.on('change','[detail]',function(e){
e.ar={},e.f=$(this).parents('form');
$.each(e.f.find('[detail]'),function(n,v){
v=$(v);e.ar[v.attr('detail')]=v.val();
});
e.f.find('[name="details"]').val(JSON.stringify(e.ar));
})
$('#edit').change(function(e){
if($('#edit').is(':checked')){
$('#title').text("<%-lang['Edit']%>")
$.aN.e.find('[name="mail"],[name="ke"]').prop('disabled',true)
}else{
$('#title').text("<%-lang['Add New']%>")
$.aN.e.find('input,select').prop('disabled',false)
}
}).change()
$.aN.e.on('change','[selector]',function(e){
e.v=$(this).val();e.a=$(this).attr('selector')
$.aN.e.find('.'+e.a+'_input').hide()
$.aN.e.find('.'+e.a+'_'+e.v).show();
}).find('[selector]').change();
//simple lister
$.aC={e:$('#accounts')};$.aC.t=$.aC.e.find('table')
$.aC.e.on('click','.add',function(e){
$.aN.e.modal('show')
$('#edit').prop('checked',false).change().parent().removeClass('is-checked')
$.aN.f[0].reset()
})
$.aC.e.on('click','.delete',function(e){
e.e=$(this).parents('tr');
e.u=e.e.attr('ke');
e.account=$.ccio.accounts[e.u];
$.confirm.e.modal('show');
$.confirm.title.html('Delete Account <small>'+e.u+'</small>')
e.html='Do you want to delete <b>'+e.account.mail+'</b>? You cannot recover this account. Files will remain in the filesystem. If you choose to create an account with the same Group Key it will have the previous events activated in that account.'
$.confirm.body.html(e.html)
$.confirm.click({title:'Delete',class:'btn-danger'},function(){
$.ccio.cx({f:'accounts',ff:'delete',account:e.account})
});
})
$.aC.e.on('click','.permission',function(e){
$.aN.e.modal('show')
$('#edit').prop('checked',true).change().parent().addClass('is-checked')
e.e=$(this).parents('tr');
e.u=e.e.attr('ke');
e.account=$.ccio.accounts[e.u];
$.aN.selected=e.account;
$.aN.e.find('input').val('');
$.each(e.account,function(n,v){
if(n=='pass'){return}
$.aN.e.find('[name="'+n+'"]').val(v).change()
})
$.each(JSON.parse(e.account.details),function(n,v){
$.aN.e.find('[detail="'+n+'"]').val(v).change()
})
// $.pR.e.modal('show');
})
</script>

View file

@ -0,0 +1,81 @@
<!--Migrator-->
<div class="modal full fade dark" id="migrator" role="dialog" aria-labelledby="migratorLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="migratorLabel"><i class="fa fa-play-circle"></i> &nbsp; <span></span></h4>
</div>
<div class="modal-body">
<form>
<div class="form-group-group green">
<h4><%-lang['']%></h4>
<div class="form-group">
<label><div><span><%-lang['Monitor JSON']%></span></div>
<div><textarea name="json" class="form-control"></textarea></div>
</label>
</div>
</div>
</form>
<!--
<form>
<div class="form-group-group green">
<h4><%-lang['Connection']%></h4>
<div class="form-group">
<label><div><span><%-lang.Username%></span></div>
<div><input class="form-control" name="name" value=""></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Password']%></span></div>
<div><input class="form-control" name="password" type="password" value=""></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Host']%></span></div>
<div><input class="form-control" name="host" value=""></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Host Type']%></span></div>
<div><select class="form-control" name="host_type">
<option value="zm" selected>ZoneMinder</option>
</select></div>
</label>
</div>
</div>
</form>
-->
</div>
<div class="modal-footer">
<a class="btn btn-primary download_link"><i class="fa fa-download"></i> &nbsp; <%-lang.Import%></a>
<button type="button" class="btn btn-default" data-dismiss="modal"><%-lang.Close%></button>
</div>
</div>
</div>
</div>
<script>
$.migrator = {
e : $('#migrator')
}
$.migrator.f = $.migrator.e.find('form')
$.migrator.f.submit(function(e){
e.preventDefault()
var postMonitor = function(v){
$.post($.ccio.init('location',$user)+$user.auth_token+'/configureMonitor/'+$user.ke+'/'+v.mid,{data:JSON.stringify(v,null,3)},function(d){
$.ccio.log(d)
})
}
var form = $.migrator.f.serializeObject()
switch(form.host_type){
case'zm':
$.get(form.host+'/index.php?username='+form.name+'&password='+form.password+'&action=login&view=console',function(data){
console.log(data)
})
break;
}
return false
})
</script>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,148 @@
<!--Multi Monitor Manager-->
<div class="modal medium fade dark" mid ke id="multi_mon" tabindex="-1" role="dialog" aria-labelledby="multi_monLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="multi_monLabel"><i class="fa fa-clone"></i> &nbsp; <%- lang['Monitors'] %></h4>
</div>
<form class="modal-body">
<table class="table table-striped tableData">
<thead>
<tr>
<th><div class="checkbox"><input id="multimon_select_all" type="checkbox"><label for="multimon_select_all"></label></div></th>
<th><%-lang['Name']%></th>
<th><%-lang['Mode']%></th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal">Close</button>
<div>
<!-- <a class="btn btn-success edit_all"><%-lang['Edit Selected']%></a>-->
<a class="btn btn-danger delete"><%-lang['Delete']%></a>
<a class="btn btn-primary save_config"><%-lang['Export']%></a>
<a class="btn btn-default import_config"><%-lang['Import']%></a>
<a class="btn btn-success" data-dismiss="modal" monitor="edit"><%-lang['Add New']%></a>
</div>
</div>
</div>
</div>
</div>
<!--Multi Monitor Manager-->
<!--
<div class="modal medium fade dark" mid ke id="multi_mon_edit" tabindex="-1" role="dialog" aria-labelledby="multi_mon_editLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="multi_mon_editLabel"><i class="fa fa-clone"></i> &nbsp; <%- lang['Monitors'] %></h4>
</div>
<div class="modal-body">
<table class="table table-striped tableData">
<thead></thead>
<tbody></tbody>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal">Close</button>
<div>
<a class="btn btn-success save"><%-lang['Save']%></a>
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
//multiple monitor editor, multimonitoredit
$.multimonedit={
e:$('#multi_mon_edit'),
}
$.multimonedit.findFieldInDefintion = function(){
$define['Monitor Settings']
}
$.multimonedit.submit = function(){
}
$.multimonedit.refreshMonitors = function(){
// $.get('/'+$user.auth_token+'/monitor/'+$user.ke,function(monitors){
// $.multimonedit.monitorsList = monitors;
// var selectedMonitors = $.multimonedit.selectedList;
// $.each(monitors,function(n,monitor){
// if(selectedMonitors[monitor.ke+monitor.mid]){
// monitor.details = JSON.parse(monitor.details)
// }
// })
// console.log(monitors)
// })
var tmp = '';
var tmpHeader = '<tr>';
$.each($.multimonedit.selectedList,function(n,monitor){
var details = '';
var detailsHeader = '';
tmp += '<tr>';
monitor.details = JSON.parse(monitor.details)
var drawField = function(e){
if(!e.attr){
e.attr='name'
}
if(!e.value){
e.value=''
}
return '<td><input class="form-control" '+e.attr+'='+e.name+' value="'+e.value+'" style="width:100px"></td>'
}
$.each(monitor,function(m,field){
console.log(n)
var drawHeader = function(mm){
if(n === 0){
return '<th>'+mm+'</th>'
}
}
if(m === 'ke'){
return
}
if(m === 'details'){
$.each(field,function(k,detailField){
detailsHeader += drawHeader(k)
details += drawField({
attr:'detail',
name:k,
value:detailField
})
})
}else{
tmpHeader += drawHeader(m)
tmp += drawField({
attr:'name',
name:m,
value:field
})
}
})
tmpHeader += detailsHeader;
tmp += details;
tmp += '</tr>';
})
tmpHeader += '</tr>';
$.multimonedit.e.find('tbody').html(tmp)
$.multimonedit.e.find('thead').html(tmpHeader)
}
$.multimonedit.e.on('shown.bs.modal', function() {
$.multimonedit.refreshMonitors()
})
})
</script>-->

View file

@ -0,0 +1,86 @@
<!--Video File Window-->
<div class="modal full fade dark" id="pvideo_viewer" role="dialog" aria-labelledby="pvideo_viewerLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="pvideo_viewerLabel"><i class="fa fa-map-marker"></i> &nbsp; <%-lang['Power Video Viewer']%><span style="display:none" class="_loading"> &nbsp; <i class="fa fa-pulse fa-spinner"></i></span></h4>
</div>
<div class="modal-body" style="overflow:inherit">
<form class="row text-center" style="margin:0">
<div id="live_view" class="col-md-4"><h3><%-lang['Live View']%> : <span></span></h3><iframe></iframe></div>
<div id="video_preview" class="col-md-4">
<h3></h3>
<div style="position:relative">
<div class="stream-objects holder"></div>
</div>
<div style="margin-top:10px">
<div class="form-group">
<div class="progress" id="pwrvid_seekBar" style="height:10px;">
<div class="progress-bar progress-bar-primary" role="progressbar" style="width:0%"></div>
</div>
</div>
<div class="form-group">
<div class="progress motion-meter" title="<%-lang['Motion Meter']%>">
<div class="progress-bar progress-bar-danger" role="progressbar" style="width:0%;"><span></span></div>
</div>
</div>
<div class="clearfix" style="margin:5px"></div>
<div class="btn-group btn-group-sm">
<a preview="stepBackBack" class="active btn btn-primary"><i class="fa fa-backward"></i></a>
<a preview="stepBack" class="btn btn-primary"><i class="fa fa-arrow-circle-o-left"></i></a>
<a preview="play" class="btn btn-default"><i class="fa fa-play"></i></a>
<a preview="mute" class="btn btn-default"><i class="fa fa-volume-up"></i></a>
<a preview="stepFront" class="btn btn-primary"><i class="fa fa-arrow-circle-o-right"></i></a>
<a preview="stepFrontFront" class="active btn btn-primary"><i class="fa fa-forward"></i></a>
<a preview="fullscreen" class="btn btn-default"><i class="fa fa-arrows-alt"></i></a>
</div>
<div class="btn-group btn-group-sm">
<a onclick="$.pwrvid.f.submit()" class="active btn btn-success"><i class="fa fa-refresh"></i></a>
<a download="" href="" class="btn btn-sm btn-default"><i class="fa fa-download"></i></a>
<% if(config.DropboxAppKey){ %><a video="download" host="dropbox" download="" href="" class="btn btn-sm btn-default"><i class="fa fa-dropbox"></i></a><% } %>
</div>
<!-- <a class="btn btn-sm btn-primary" video="launch" href=""><i class="fa fa-play-circle"></i> <span>No Video Selected</span></a>-->
</div>
</div>
<div class="col-md-4">
<div class="temp hidden"></div>
<div class="form-group">
<label><div><span><%-lang['Monitor']%></span></div>
<div><select class="form-control dark" id="vis_monitors"></select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Date Range']%></span></div>
<div><input type="text" id="pvideo_daterange" class="form-control dark" value="" /></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Event Limit']%></span></div>
<div><input type="text" id="pvideo_event_limit" class="form-control dark" placeholder="500" localStorage="powerEventLimit" /></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Video Limit']%></span></div>
<div><input type="text" id="pvideo_video_limit" class="form-control dark" value="200" placeholder="0 for No Limit" localStorage="powerVideoLimit" /></div>
</label>
</div>
<div class="form-group">
<ul id="motion_list" class="list-group text-left"></ul>
</div>
</div>
</form>
<div class="row" style="position:relative">
<div class="nodata super-center"><%-lang['No Data']%> <div class="divider"></div><i class="fa fa-4x fa-area-chart"></i></div>
<div class="loading super-center" style="display:none">Loading <div class="divider"></div><i class="fa fa-4x fa-spinner fa-pulse"></i></div>
<div id="vis_pwrvideo" class="col-md-12"></div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><%-lang['Close']%></button>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,94 @@
<!--ffPROBE Window-->
<div class="modal dark fade" id="probe" role="dialog" aria-labelledby="probeLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<form class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="probeLabel"><i class="fa fa-search"></i> &nbsp; <%-lang.FFprobe%> <small><span style="display:none" class="_loading"> &nbsp; <i class="fa fa-pulse fa-spinner"></i></span></small></h4>
</div>
<div class="modal-body">
<div class="text-center msg"></div>
<div class="form-group">
<i>"<%-lang['FFmpegTip']%>"</i> - FFmpegTips
</div>
<div class="form-group">
<label><div><span><%-lang['Complete Stream URL']%></span></div>
<div><input class="form-control" name="url" placeholder="<%-lang.Example%> : http://192.168.88.126/videostream.cgi or /dev/video0"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Mode']%></span></div>
<div><select class="form-control" name="mode">
<option value="default" selected><%-lang.Default%></option>
<option value="json">JSON</option>
</select></div>
</label>
</div>
<div class="output_data"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal"><i class="fa fa-times"></i> <%-lang.Close%></button>
<a class="btn btn-danger stop" style="display:none"><%-lang.Stop%><span> &nbsp; <i class="fa fa-pulse fa-spinner"></i></span></a>
<button type="submit" class="btn btn-success"><%-lang.Check%></button>
</div>
</form>
</div>
</div>
<!--onvif PROBE Window-->
<div class="modal full dark fade" id="onvif_probe" role="dialog" aria-labelledby="onvif_probeLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<form class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="onvif_probeLabel"><i class="fa fa-rss"></i> &nbsp; <%-lang['ONVIF Scanner']%><span style="display:none" class="_loading"> &nbsp; <i class="fa fa-pulse fa-spinner"></i></span></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<div class="form-group-group navy">
<h4><%-lang['Scan Settings']%></h4>
<p class="text-center"><%-lang.ONVIFnote%></p>
<div class="form-group">
<label><div><span><%-lang['IP Address']%> <small><%-lang['Range or Single']%></small></span></div>
<div><input class="form-control" name="ip" placeholder="Example : 10.1.100.1-10.1.100.254"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Port']%> <small>Separate by Commas or a Range</small></span></div>
<div><input class="form-control" name="port" placeholder="Example : 80,7575,8000,8080,8081"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Camera Username']%></span></div>
<div><input class="form-control" name="user" placeholder="Can be left blank."></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Camera Password']%></span></div>
<div><input class="form-control" name="pass"></div>
</label>
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-success"><%-lang.Search%><span class="_loading" style="display:none"> &nbsp; <i class="fa fa-pulse fa-spinner"></i></span></button>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group-group blue">
<h4><%-lang['Found Devices']%></h4>
<!-- <div id="onvif_video"></div>-->
<table class="output_data table table-striped" style="margin:0"></table>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal"><i class="fa fa-times"></i> <%-lang.Close%></button>
</div>
</form>
</div>
</div>

View file

@ -0,0 +1,67 @@
<!--Zone Editor Window-->
<div class="modal full fade dark" id="region_editor" tabindex="-1" role="dialog" aria-labelledby="region_editorLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<form class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="region_editorLabel"><i class="fa fa-grav"></i> &nbsp; <%-lang['Region Editor']%></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-6 text-left">
<div class="form-group-group orange where">
<h4><span class="cord_name"></span>
<div class="pull-right">
<a class="btn btn-success btn-xs add">&nbsp;<i class="fa fa-plus"></i>&nbsp;</a>
<a class="btn btn-danger btn-xs erase">&nbsp;<i class="fa fa-trash-o"></i>&nbsp;</a>
</div>
</h4>
<div class="form-group">
<label>
<div><span><%-lang.Regions%></span></div>
<div><select id="regions_list" class="form-control"></select></div>
</label>
</div>
<div class="row">
<div class="form-group col-md-12">
<label>
<div><span><%-lang['Region Name']%></span></div>
<div><input class="form-control" name="name"></div>
</label>
</div>
<div class="form-group col-md-12">
<label>
<div><span><%-lang.Indifference%></span></div>
<div><input class="form-control" name="sensitivity"></div>
</label>
</div>
</div>
<div class="form-group">
<label><div><span><%-lang.Points%></span></div></label>
<table class="table table-striped" id="regions_points"><tbody></tbody></table>
</div>
</div>
</div>
<div class="col-md-6">
<p><%-lang.RegionNote%></p>
<div class="canvas_holder">
<div id="region_editor_live"><iframe></iframe><img></div>
<textarea id="regions_canvas" rows=3 class="hidden canvas-area input-xxlarge" disabled></textarea>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<div class="pull-left">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="region_still_image" title="<%-lang['Switch on for Still Image']%>">
<input type="checkbox" id="region_still_image" value="1" name="remember" class="mdl-switch__input">
<span class="monospace mdl-switch__label"><%-lang['Live Stream Toggle']%></span>
</label>
</div>
<button type="button" class="btn btn-default pull-right" data-dismiss="modal"><i class="fa fa-times"></i> <%-lang.Close%></button>
</div>
</form>
</div>
</div>

View file

@ -0,0 +1,282 @@
<!--Settings Window-->
<% var audioFiles = fs.readdirSync('./web/libs/audio') %>
<div class="modal fade medium dark" id="settings" tabindex="-1" role="dialog" aria-labelledby="settingsLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<form class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="settingsLabel"><i class="fa fa-gears"></i> &nbsp; <%-lang.Settings%></h4>
</div>
<div class="modal-body">
<div class="text-center msg"></div>
<div class="form-group-group green">
<h4><%-lang['Account Info']%></h4>
<div class="form-group">
<label><div><span><%-lang.Email%></span></div>
<div><input class="form-control" value="<%- $user.mail %>" disabled></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Group Key']%></span></div>
<div><input class="form-control" value="<%- $user.ke %>" disabled></div>
</label>
</div>
</div>
<div class="form-group-group grey">
<h4><%-lang.Profile%></h4>
<div class="form-group">
<label><div><span><%-lang.Email%></span></div>
<div><input class="form-control" type="email" name="mail"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang.Password%> <small><%-lang.blankPassword%></small></span></div>
<div><input class="form-control" type="password" name="pass"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang.Password%> <%-lang.Again%></span></div>
<div><input class="form-control" type="password" name="password_again"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['2-Factor Authentication']%> (<%-lang.Email%>)</span></div>
<div><select class="form-control" detail="factorAuth">
<option value="0" selected><%-lang.No%></option>
<option value="1"><%-lang.Yes%></option>
</select></div>
</label>
</div>
<% if(!details.sub){ %>
<% if(details.edit_size!=='0'){ %>
<div class="form-group">
<label><div><span><%-lang['Max Storage Amount']%></span></div>
<div><input class="form-control" detail="size" placeholder="10000"></div>
</label>
</div>
<% } %>
<% if(details.edit_days!=='0'){ %>
<div class="form-group">
<label><div><span><%-lang['Number of Days to keep']%> <%-lang.Videos%></span></div>
<div><input class="form-control" detail="days" placeholder="5"></div>
</label>
</div>
<% } %>
<% if(details.edit_event_days!=='0'){ %>
<div class="form-group">
<label><div><span><%-lang['Number of Days to keep']%> <%-lang.Events%></span></div>
<div><input class="form-control" detail="event_days" placeholder="10"></div>
</label>
</div>
<% } %>
<% if(details.edit_log_days!=='0'){ %>
<div class="form-group">
<label><div><span><%-lang['Number of Days to keep']%> <%-lang.Logs%></span></div>
<div><input class="form-control" detail="log_days" placeholder="10"></div>
</label>
</div>
<% } %>
<% } %>
<div class="form-group">
<label><div><span><%-lang['Dashboard Language']%></span></div>
<div>
<select class="form-control" detail="lang">
<option value="" selected>Default</option>
<% fs.readdirSync('./languages').forEach(function(v,n){
v=v.replace('.json','') %>
<option value="<%-v%>"><%-v%></option>
<% }) %>
</select>
</div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Notification Sound']%></span></div>
<div>
<select class="form-control" detail="audio_note">
<option value="" selected>No Sound</option>
<% audioFiles.forEach(function(v,n){ %>
<option value="<%-v%>"><%-v%></option>
<% }) %>
</select>
</div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Alert Sound']%></span></div>
<div>
<select class="form-control" detail="audio_alert">
<option value="" selected>No Sound</option>
<% audioFiles.forEach(function(v,n){ %>
<option value="<%-v%>"><%-v%></option>
<% }) %>
</select>
</div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Alert Sound Delay']%></span></div>
<div><input class="form-control" detail="audio_delay" placeholder="1"></div>
</label>
</div>
</div>
<% if(!details.sub){ %>
<div class="form-group-group blue">
<h4 class="mon_groups">
<%-lang['Monitor Groups']%>
<div class="pull-right">
<a class="btn btn-success btn-xs add"><i class="fa fa-plus"></i></a>
<a class="btn btn-danger btn-xs delete"><i class="fa fa-trash-o"></i></a>
</div>
</h4>
<div class="form-group">
<label><div><span><%-lang['Monitor Groups']%></span></div>
<div><select class="form-control" id="settings_mon_groups"></select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Group Name']%></span></div>
<div><input type="hidden" group="id">
<input class="form-control" group="name"></div>
</label>
</div>
<input type="hidden" detail="mon_groups">
</div>
<% if(details.use_webdav!=='0'){ %>
<div class="form-group-group forestgreen">
<h4><%-lang.WebDAV%></h4>
<div class="form-group">
<label><div><span><%-lang.URL%></span></div>
<div><input class="form-control" detail="webdav_url"></div>
</label>
</div>
<div class="row">
<div class="form-group col-md-12">
<label><div><span><%-lang.Username%></span></div>
<div><input class="form-control" detail="webdav_user"></div>
</label>
</div>
<div class="form-group col-md-12">
<label><div><span><%-lang.Password%></span></div>
<div><input class="form-control" type="password" detail="webdav_pass"></div>
</label>
</div>
</div>
<div class="form-group">
<label><div><span><%-lang.Autosave%></span></div>
<div><select class="form-control" detail="webdav_save">
<option value="0"><%-lang.No%></option>
<option value="1"><%-lang.Yes%></option>
</select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Save Directory']%></span></div>
<div><input class="form-control" placeholder="/" detail="webdav_dir"></div>
</label>
</div>
</div>
<% } %>
<% if(details.use_ldap!=='0'){ %>
<div class="form-group-group forestgreen">
<h4><%-lang.LDAP%></h4>
<div class="form-group">
<label><div><span><%-lang.Enable%></span></div>
<div><select class="form-control" detail="ldap_enable" selector="ldap_i">
<option value="0"><%-lang.No%></option>
<option value="1"><%-lang.Yes%></option>
</select></div>
</label>
</div>
<div class="ldap_i_input ldap_i_1" style="display:none">
<div class="form-group">
<label><div><span><%-lang.URL%></span></div>
<div><input class="form-control" detail="ldap_url"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['bindDN']%></span></div>
<div><input class="form-control" detail="ldap_bindDN" placeholder="<%-lang.Example%> : cn=admin,dc=test,dc=com"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Bind Credentials']%></span></div>
<div><input class="form-control" detail="ldap_bindCredentials"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Search Filter']%></span></div>
<div><input class="form-control" detail="ldap_searchFilter" placeholder="cn={{username}}"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Search Base']%></span></div>
<div><input class="form-control" detail="ldap_searchBase" placeholder="dc=test,dc=com"></div>
</label>
</div>
</div>
</div>
<% } %>
<% } %>
<div class="form-group-group navy">
<h4><%-lang.Preferences%></h4>
<div class="form-group">
<label><div><span><%-lang.CSS%></span></div>
<div><textarea class="form-control" placeholder="#main_header{background:#b59f00}" detail="css"></textarea></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Force Monitors Per Row']%></span></div>
<div><select class="form-control" localStorage="montage_use" selector="st_force_mon_rows">
<option value="1"><%-lang.Yes%></option>
<option value="0" selected><%-lang.No%></option>
</select></div>
</label>
</div>
<div class="form-group st_force_mon_rows_input st_force_mon_rows_1">
<label><div><span><%-lang['Monitors per row']%></span></div>
<div><input class="form-control" placeholder="3" localStorage="montage"></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Browser Console Log']%></span></div>
<div><select class="form-control" localStorage="browserLog">
<option value="0" selected><%-lang.No%></option>
<option value="1"><%-lang.Yes%></option>
</select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Get Logs to Client']%></span></div>
<div><select class="form-control" detail="get_server_log">
<option value="1" selected><%-lang.Yes%></option>
<option value="0"><%-lang.No%></option>
</select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Themes']%></span></div>
<div><select class="form-control" detail="theme">
<option value="" selected>Default</option>
<% fs.readdirSync(__dirname+'/web/libs/themes').forEach(function(v){ %>
<option value="<%-v%>"><%-v%></option>
<% }) %>
</select></div>
</label>
</div>
</div>
<div class="form-group-group green linkShinobi">
<h4><%-lang['Link Shinobi']%><div class="pull-right"><a class="btn btn-success btn-xs add"><i class="fa fa-plus"></i></a></div></h4>
<div id="linkShinobi"></div>
</div>
<input type="hidden" name="details">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal"><i class="fa fa-times"></i> <%-lang.Close%></button>
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> <%-lang.Save%></button>
</div>
</form>
</div>
</div>

View file

@ -0,0 +1,105 @@
<!--Confirmation Window-->
<div class="modal fade" id="permissions" tabindex="-1" role="dialog" aria-labelledby="permissionsLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<form class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="permissionsLabel"><i class="fa fa-lock"></i> &nbsp; <%-lang.Permissions%></h4>
</div>
<div class="modal-body" style="max-height:600px;overflow:auto">
<div class="text-center msg"></div>
<div class="form-group">
<label><div><span><%-lang['All Monitors and Privileges']%></span></div>
<div><select class="form-control" detail="allmonitors">
<option value="0" selected><%-lang.No%></option>
<option value="1"><%-lang.Yes%></option>
</select></div>
</label>
</div>
<div class="form-group-group blue" id="monitors_section">
<h4>
<%-lang['Can View Monitor']%>
<div class="pull-right">
<a class="btn btn-success btn-xs" check="1"><i class="fa fa-check-square-o"></i></a>
<a class="btn btn-danger btn-xs" check="0"><i class="fa fa-square-o"></i></a>
</div>
</h4>
<% $mons.forEach(function(v,n){ %>
<div class="form-group">
<label><div><span><%- v.name %></span></div>
<div><select class="form-control" monitor="monitors" mid="<%- v.mid %>">
<option value="0" selected><%-lang.No%></option>
<option value="1"><%-lang.Yes%></option>
</select></div>
</label>
</div>
<% }) %>
</div>
<div class="form-group-group forestgreen" id="monitors_edit_section">
<h4>
<%-lang['Can Edit Monitor']%>
<div class="pull-right">
<a class="btn btn-success btn-xs" check="1"><i class="fa fa-check-square-o"></i></a>
<a class="btn btn-danger btn-xs" check="0"><i class="fa fa-square-o"></i></a>
</div>
</h4>
<% $mons.forEach(function(v,n){ %>
<div class="form-group">
<label><div><span><%- v.name %></span></div>
<div><select class="form-control" monitor="monitor_edit" mid="<%- v.mid %>">
<option value="0" selected><%-lang.No%></option>
<option value="1"><%-lang.Yes%></option>
</select></div>
</label>
</div>
<% }) %>
</div>
<div class="form-group-group navy" id="video_view_section">
<h4>
<%-lang['Can View Videos and Events']%>
<div class="pull-right">
<a class="btn btn-success btn-xs" check="1"><i class="fa fa-check-square-o"></i></a>
<a class="btn btn-danger btn-xs" check="0"><i class="fa fa-square-o"></i></a>
</div>
</h4>
<% $mons.forEach(function(v,n){ %>
<div class="form-group">
<label><div><span><%- v.name %></span></div>
<div><select class="form-control" monitor="video_view" mid="<%- v.mid %>">
<option value="0" selected><%-lang.No%></option>
<option value="1"><%-lang.Yes%></option>
</select></div>
</label>
</div>
<% }) %>
</div>
<div class="form-group-group red" id="video_delete_section">
<h4>
<%-lang['Can Delete Videos and Events']%>
<div class="pull-right">
<a class="btn btn-success btn-xs" check="1"><i class="fa fa-check-square-o"></i></a>
<a class="btn btn-danger btn-xs" check="0"><i class="fa fa-square-o"></i></a>
</div>
</h4>
<% $mons.forEach(function(v,n){ %>
<div class="form-group">
<label><div><span><%- v.name %></span></div>
<div><select class="form-control" monitor="video_delete" mid="<%- v.mid %>">
<option value="0" selected><%-lang.No%></option>
<option value="1"><%-lang.Yes%></option>
</select></div>
</label>
</div>
<% }) %>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal"><i class="fa fa-times"></i> <%-lang.Close%></button>
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> <%-lang.Save%></button>
</div>
<input type="hidden" name="details">
</form>
</div>
</div>

View file

@ -0,0 +1,80 @@
<!--Timelapse Window-->
<div class="modal full fade dark" id="timelapse" role="dialog" aria-labelledby="timelapseLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="timelapseLabel"><i class="fa fa-angle-double-right"></i> &nbsp; <span><%-lang['Time-lapse Tool']%></span></h4>
</div>
<div class="modal-body text-center">
<div class="row">
<div class="col-md-8">
<div class="timelapse_hud">
<div class="timelapse_playRate hover-hide"></div>
<div class="controlBar hover-hide">
<div class="form-group">
<div class="progress" id="timelapse_seekBar">
<div class="progress-bar progress-bar-warning" role="progressbar" style="width:0%"></div>
</div>
</div>
<div>
<div class="form-group monospace">
<div class="btn-group timelapseSpeedUseBasicSwitch">
<a timelapse="stepBackBack" class="active btn btn-primary">&nbsp;<i class="fa fa-backward"></i>&nbsp;</a>
<a timelapse="stepBack" class="btn btn-primary">&nbsp;<i class="fa fa-arrow-circle-o-left"></i>&nbsp;</a>
</div>
<div class="btn-group">
<a timelapse="play" class="btn btn-default">&nbsp;<i class="fa fa-play"></i>&nbsp;</a>
<a timelapse="mute" class="btn btn-default">&nbsp;<i class="fa fa-volume-up"></i>&nbsp;</a>
</div>
<div class="btn-group">
<a timelapse="stepFront" class="btn btn-primary">&nbsp;<i class="fa fa-arrow-circle-o-right"></i>&nbsp;</a>
<a timelapse="stepFrontFront" class="active btn btn-primary">&nbsp;<i class="fa fa-forward"></i>&nbsp;</a>
</div>
<a timelapse="download" class="btn btn-info">&nbsp;<i class="fa fa-download"></i>&nbsp;</a>
<div class="btn-group">
<a timelapse="setPlayBackRate" playRate="1" class="btn btn-default">1</a>
<a timelapse="setPlayBackRate" playRate="5" class="btn btn-default">5</a>
<a timelapse="setPlayBackRate" playRate="15" class="btn btn-default">15</a>
</div>
<div class="btn-group timelapseSpeedUseBasicSwitch">
<a timelapse="setPlayBackRate" playRate="30" class="btn btn-default">30</a>
<a timelapse="setPlayBackRate" playRate="60" class="btn btn-default">60</a>
<a timelapse="setPlayBackRate" playRate="120" class="btn btn-default">120</a>
</div>
</div>
<div class="marc-toggle abs-bot-left">
<input title="<%-lang['Use HTML5 Play Method']%>" type="checkbox" id="timelapseSpeedUseBasic"/><label for="timelapseSpeedUseBasic"><%-lang['Use HTML5 Play Method']%></label>
</div>
</div>
</div>
<div id="timelapse_video_display"></div>
</div>
</div>
<form class="col-md-4">
<div class="form-group">
<label><div><span><%-lang.Monitor%></span></div>
<div><select class="form-control monitors_list"></select></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Date Range']%></span></div>
<div><input type="text" id="timelapse_daterange" class="form-control" value="" /></div>
</label>
</div>
<div class="form-group">
<ul id="timelapse_video_line" class="list-group"></ul>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<div class="btn-group">
<button type="button" class="btn btn-default" data-dismiss="modal"><%-lang.Close%></button>
</div>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,69 @@
<!--Videos List Window-->
<div class="modal full fade" id="videos_viewer" role="dialog" aria-labelledby="videos_viewerLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<form class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="videos_viewerLabel"><i class="fa fa-film"></i> &nbsp; <%-lang.Videos%> <small> <span class="video_viewer_total"></span> <%-lang.total%></small></h4>
</div>
<div class="modal-body flex-container-modal-body">
<div style="padding:20px 0" class="flex-block flex-modal-block">
<div class="col-md-3">
<div class="form-group">
<label><div><span><%-lang['Date Range']%></span></div>
<div><input type="text" id="videos_viewer_daterange" class="form-control" value="" /></div>
</label>
</div>
<div class="form-group">
<label><div><span><%-lang['Video Limit']%></span></div>
<div><input id="videos_viewer_limit" value="100" class="form-control" placeholder="0 for No Limit" localStorage="videosViewerLimit" /></div>
</label>
</div>
<div id="videos_viewer_preview" class="text-center"></div>
</div>
<div class="col-md-9">
<div class="contents"></div>
</div>
</div>
</div>
<div class="modal-footer">
<div class="row">
<div class="col-md-4 text-left">
<a class="btn btn-danger delete_selected"><i class="fa fa-trash-o"></i> &nbsp; <%-lang['Delete selected']%></a>
</div>
<div class="col-md-4">
<div class="text-center" id="videos_viewer_pages"></div>
</div>
<div class="col-md-4">
<button type="button" class="btn btn-danger" data-dismiss="modal"><%-lang.Close%></button>
</div>
</div>
</div>
</form>
</div>
</div>
<!--Video File Window-->
<div class="modal full fade dark" id="video_viewer" role="dialog" aria-labelledby="video_viewerLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="video_viewerLabel"><i class="fa fa-play-circle"></i> &nbsp; <span></span></h4>
</div>
<div class="modal-body text-center"></div>
<div class="modal-footer">
<a class="btn btn-danger pull-left" video="delete" data-dismiss="modal"><%-lang.Delete%></a>
<div class="btn-group">
<a class="btn btn-primary download_link"><i class="fa fa-download"></i> &nbsp; <%-lang.Save%></a>
<% if(config.DropboxAppKey){ %><a class="btn btn-primary" monitor="download" host="dropbox"><i class="fa fa-dropbox"></i> &nbsp; Dropbox</a><% } %>
<button type="button" class="btn btn-default" data-dismiss="modal"><%-lang.Close%></button>
</div>
</div>
</div>
</div>
</div>