WIP: Standard backend theme page and login

Signed-off-by: Deon George <deon@leenooks.net>
This commit is contained in:
Deon George
2017-12-12 16:28:49 +11:00
parent e594ff2057
commit 33658e37a3
45 changed files with 1150 additions and 896 deletions

View File

@@ -1,52 +1,52 @@
@extends('layouts.auth')
@section('htmlheader_title')
Log in
Log in
@endsection
@section('content')
<body class="hold-transition login-page">
<div id="app" v-cloak>
<div class="login-box">
<div class="login-logo">
<a href="{{ url('/home') }}">{!! config('app.namehtml') !!}</a>
</div><!-- /.login-logo -->
<div id="app" v-cloak>
<div class="login-box">
<div class="login-logo">
<a href="{{ url('/home') }}">{!! config('app.namehtml') !!}</a>
</div><!-- /.login-logo -->
@if (count($errors) > 0)
<div class="alert alert-danger">
<strong>Whoops!</strong> {{ trans('message.someproblems') }}<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if (count($errors) > 0)
<div class="alert alert-danger">
<strong>Whoops!</strong> {{ trans('message.someproblems') }}<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="login-box-body">
<p class="login-box-msg"> {{ trans('message.siginsession') }} </p>
<div class="login-box-body">
<p class="login-box-msg"> {{ trans('message.siginsession') }} </p>
<login-form name="{{ config('auth.providers.users.field','email') }}"
domain="{{ config('auth.defaults.domain','') }}"></login-form>
<login-form name="{{ config('auth.providers.users.field','email') }}"
domain="{{ config('auth.defaults.domain','') }}"></login-form>
<a href="{{ url('/password/reset') }}">{{ trans('message.forgotpassword') }}</a><br>
<a href="{{ url('/password/reset') }}">{{ trans('message.forgotpassword') }}</a><br>
@if(isset($site_social))
@include('auth.partials.social_login')
@endif
</div>
</div>
</div>
@include('layouts.partials.scripts_auth')
@if(isset($site_social))
@include('auth.partials.social_login')
@endif
</div>
</div>
</div>
@include('layouts.partials.scripts_auth')
<script>
$(function () {
$('input').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%' // optional
});
});
</script>
<script>
$(function () {
$('input').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%' // optional
});
});
</script>
</body>
@endsection

View File

@@ -0,0 +1,32 @@
@extends('layouts.app')
@section('htmlheader_title')
Page Title
@endsection
@section('contentheader_title')
Home Page
@endsection
@section('contentheader_description')
Home
@endsection
@section('main-content')
<div class="col-sm-2 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">Content</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body">
Content Here
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="en">
@section('htmlheader')
@include('layouts.partials.htmlheader')
@show
<body class="fixed skin-blue sidebar-mini">
<div id="app" v-cloak>
<div class="wrapper">
@include('layouts.partials.mainheader')
@include('layouts.partials.sidebar')
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
@include('layouts.partials.contentheader')
<!-- Main content -->
<section class="content">
<div class="row">
<!-- Your Page Content Here -->
@yield('main-content')
</div>
</section><!-- /.content -->
</div><!-- /.content-wrapper -->
<!-- #include('layouts.partials.controlsidebar') -->
@include('layouts.partials.footer')
</div><!-- ./wrapper -->
</div> <!-- ./app -->
@section('scripts')
@include('layouts.partials.scripts')
{{-- Scripts --}}
{!! Asset::scripts() !!}
@show
</body>
</html>

View File

@@ -0,0 +1,17 @@
<!-- Content Header (Page header) -->
<section class="content-header">
<div id="search_results"></div>
<h1>
@yield('contentheader_title', 'Software Deployment')
<small>@yield('contentheader_description')</small>
</h1>
<ol class="breadcrumb">
<li><a href="{{ url('/home') }}"><i class="fa fa-dashboard"></i>Home</a></li>
@isset($breadcrumb)
@foreach ($breadcrumb as $item => $url)
<li><a href="{{url($url)}}">{{ $item }}</a></li>
@endforeach
@endisset
</ol> <!-- /.breadcrumb -->
</section> <!-- /.content-header -->

View File

@@ -0,0 +1,8 @@
<!-- Main Footer -->
<footer class="main-footer">
<!-- To the right -->
<div class="pull-right hidden-xs">
<a href="#"></a><b>{{ config('app.name') }}</b></a>
</div>
<strong>&copy Leenooks</strong>
</footer>

View File

@@ -0,0 +1,95 @@
<!-- Main Header -->
<header class="main-header">
<!-- Logo -->
<a href="{{ url('/home') }}" class="logo">
<!-- mini logo for sidebar mini 50x50 pixels -->
<span class="logo-mini">{!! config('name_html_short','<b>A</b>N') !!}</span>
<!-- logo for regular state and mobile devices -->
<span class="logo-lg">{!! config('name_html_long','<b>App</b>Name') !!}</span>
</a>
<!-- Header Navbar -->
<nav class="navbar navbar-static-top" role="navigation">
<!-- Sidebar toggle button-->
<a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button">
<span class="sr-only">{{ trans('message.togglenav') }}</span>
</a>
<!-- Navbar Right Menu -->
<div class="navbar-custom-menu">
<ul class="nav navbar-nav">
<!-- Tasks Menu -->
@if (Auth::guest())
<li><a href="{{ url('/register') }}">{{ trans('message.register') }}</a></li>
<li><a href="{{ url('/login') }}">{{ trans('message.login') }}</a></li>
@else
@if (isset($topmenu))
<!-- Available Data Menu -->
<li class="dropdown tasks-menu" id="import_date">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span class="hidden-xs">Items</span>
</a>
<ul class="dropdown-menu">
<li class="header">Header</li>
<li>
<ul class="menu small">
&nbsp;
</ul>
</li>
<li class="footer"><a href="#">(Not Active)</a></li>
</ul>
</li>
@endif
<li class="dropdown user user-menu" id="user_menu">
<!-- Menu Toggle Button -->
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<!-- The user image in the navbar-->
<img src="{{ Gravatar::get($user->email) }}" class="user-image" alt="User Image"/>
<!-- hidden-xs hides the username on small devices so only the image appears. -->
<span class="hidden-xs">{{ $user->name }}</span>
</a>
<ul class="dropdown-menu">
<!-- The user image in the menu -->
<li class="user-header">
<img src="{{ Gravatar::get($user->email) }}" class="img-circle" alt="User Image" />
<p>
{{ $user->name }}
<small>{{ trans('message.login') }}: @if($user->last_access) {{ $user->last_access->format('Y-m-d') }} @else Unknown @endif</small>
</p>
</li>
<!-- Menu Footer-->
<li class="user-footer">
<div class="pull-left">
<a href="{{ url('/settings') }}" class="btn btn-default btn-flat">{{ trans('message.profile') }}</a>
</div>
<div class="pull-right">
<a href="{{ url('/logout') }}" class="btn btn-default btn-flat" id="logout"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
{{ trans('message.signout') }}
</a>
<form id="logout-form" action="{{ url('/logout') }}" method="POST" style="display: none;">
{{ csrf_field() }}
<input type="submit" value="logout" style="display: none;">
</form>
</div>
</li>
</ul>
</li>
@endif
<!-- Control Sidebar Toggle Button -->
@if (isset($controlbar))
<li>
<a href="#" data-toggle="control-sidebar"><i class="fa fa-gears"></i></a>
</li>
@endif
</ul>
</div>
</nav>
</header>

View File

@@ -0,0 +1,13 @@
<!-- REQUIRED JS SCRIPTS -->
<!-- JQuery and bootstrap are required by Laravel 5.3 in resources/assets/js/bootstrap.js-->
<!-- Laravel App -->
<script src="{{ url (mix('/js/app.js')) }}" type="text/javascript"></script>
@yield('page-scripts')
<!-- Optionally, you can add Slimscroll and FastClick plugins.
Both of these plugins are recommended to enhance the
user experience. Slimscroll is required when using the
fixed layout. -->
@js('/site/js/jquery.slimscroll.min.js',jquery)
@js('/site/js/fastclick.min.js')

View File

@@ -0,0 +1,108 @@
<!-- Left side column. contains the logo and sidebar -->
<aside class="main-sidebar">
<!-- sidebar: style can be found in sidebar.less -->
<section class="sidebar">
<!-- Sidebar user panel (optional) -->
@if (! Auth::guest())
<div class="user-panel">
<div class="pull-left image">
<img src="{{ Gravatar::get($user->email) }}" class="img-circle" alt="User Image" />
</div>
<div class="pull-left info">
<p>{{ Auth::user()->name }}</p>
<!-- Status -->
<a href="#"><i class="fa fa-circle text-success"></i> {{ trans('message.online') }}</a>
</div>
</div>
@endif
<!-- search form (Optional) -->
<form action="#" method="get" class="sidebar-form">
<div class="input-group">
<input type="text" name="q" class="form-control" autocomplete="off" placeholder="{{ trans('message.search') }}..."/>
<span class="input-group-btn">
<button type='submit' name='search' id='search-btn' class="btn btn-flat"><i class="fa fa-search"></i></button>
</span>
</div>
</form>
<!-- /.search form -->
<!-- Sidebar Menu -->
<ul class="sidebar-menu">
<li class="header">Menu</li>
<!-- Optionally, you can add icons to the links -->
<li class="active"><a href="{{ url('home',['date'=>(isset($ido) ? $ido->id : NULL)]) }}"><i class='fa fa-link'></i> <span>{{ trans('message.home') }}</span></a></li>
</ul><!-- /.sidebar-menu -->
</section>
<!-- /.sidebar -->
</aside>
@section('page-scripts')
@js('/site/js/bootstrap3-typeahead.min.js')
<script type="text/javascript">
$(document).ready(function() {
$("input[name=q]").typeahead({
delay: 300,
minLength: 2,
fitToElement: false,
appendTo: "#search_results",
source: function (query,process) {
search('{{ url("search",['date'=>isset($ido) ? $ido->id : NULL]) }}',query,process);
},
matcher: function () { return true; },
updater: function (item) {
window.parent.location.href = '{{ url("/") }}'+users[item];
},
});
});
var c=0;
var search = _.debounce(function(url,query,process,icon){
$.ajax({
url : url,
type : 'GET',
data : 'term=' + query,
dataType : 'JSON',
async : false,
cache : false,
beforeSend : function() {
if (c++ == 0) {
if (icon)
$('i[name='+icon+']').addClass("fa-spin");
else
$('i[name=searching]').removeClass("hidden");
}
},
success : function(data) {
// if json is null, means no match, won't do again.
if(data==null || (data.length===0)) return;
users = {};
userLabels = [];
_.each(data,function(item,ix,list) {
if (_.includes(users,item.label))
item.label = item.label + ' #' + item.value;
userLabels.push(item.label);
users[item.label] = item.value;
});
process(userLabels);
},
complete : function() {
if (--c == 0) {
if (icon)
$('i[name='+icon+']').removeClass("fa-spin");
else
$('i[name=searching]').addClass("hidden");
}
}
})
}, 500);
</script>
@append