v2 first commit
This commit is contained in:
17
resources/views/partials/portal/content.blade.php
Normal file
17
resources/views/partials/portal/content.blade.php
Normal file
@ -0,0 +1,17 @@
|
||||
@stack('content_start')
|
||||
<div id="app">
|
||||
@stack('content_content_start')
|
||||
|
||||
@yield('content')
|
||||
|
||||
@stack('content_content_end')
|
||||
<notifications></notifications>
|
||||
|
||||
<akaunting-modal
|
||||
v-if="addNew.modal"
|
||||
:show="addNew.modal"
|
||||
:title="addNew.title"
|
||||
:message="addNew.html">
|
||||
</akaunting-modal>
|
||||
</div>
|
||||
@stack('content_end')
|
7
resources/views/partials/portal/footer.blade.php
Normal file
7
resources/views/partials/portal/footer.blade.php
Normal file
@ -0,0 +1,7 @@
|
||||
@stack('footer_start')
|
||||
<footer class="footer pt-0">
|
||||
<div class="text-sm float-left text-muted footer-texts">
|
||||
{{ trans('footer.powered') }}: <a class="text-success" href="{{ trans('footer.link') }}" target="_blank">{{ trans('footer.software') }}</a>
|
||||
</div>
|
||||
</footer>
|
||||
@stack('footer_end')
|
54
resources/views/partials/portal/head.blade.php
Normal file
54
resources/views/partials/portal/head.blade.php
Normal file
@ -0,0 +1,54 @@
|
||||
<head>
|
||||
@stack('head_start')
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<title>@yield('title') - @setting('company.name')</title>
|
||||
|
||||
@include('partials.pwa.pwa')
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ asset('public/img/favicon.ico') }}" type="image/png">
|
||||
|
||||
<!-- Font -->
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700">
|
||||
|
||||
<!-- Icons -->
|
||||
<link rel="stylesheet" href="{{ asset('public/vendor/nucleo/css/nucleo.css') }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/vendor/@fortawesome/fontawesome-free/css/all.min.css') }}" type="text/css">
|
||||
|
||||
<!-- Css -->
|
||||
<!-- Argon -->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/argon.css?v=1.1.0') }}" type="text/css">
|
||||
|
||||
<!-- Color -->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/akaunting-color.css?v=' . version('short')) }}">
|
||||
<!-- Custom -->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/custom.css?v=' . version('short')) }}">
|
||||
|
||||
@stack('css')
|
||||
|
||||
@stack('stylesheet')
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
var url = '{{ url("/") }}';
|
||||
var app_url = '{{ env("APP_URL") }}';
|
||||
//--></script>
|
||||
|
||||
@stack('js')
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
window.Laravel = <?php echo json_encode([
|
||||
'csrfToken' => csrf_token(),
|
||||
]); ?>;
|
||||
|
||||
var aka_currency = {!! !empty($currency) ? $currency : 'false' !!};
|
||||
|
||||
var flash_notification = {!! (session()->has('flash_notification')) ? json_encode(session()->get('flash_notification')) : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
{{ session()->forget('flash_notification') }}
|
||||
|
||||
@stack('scripts')
|
||||
@stack('head_end')
|
||||
</head>
|
21
resources/views/partials/portal/header.blade.php
Normal file
21
resources/views/partials/portal/header.blade.php
Normal file
@ -0,0 +1,21 @@
|
||||
@stack('header_start')
|
||||
<div id="header" class="header pb-6">
|
||||
<div class="container-fluid content-layout">
|
||||
<div class="header-body">
|
||||
<div class="row py-4 align-items-center">
|
||||
<div class="col-sm-4 col-md-5 align-items-center">
|
||||
<h2 class="d-inline-block mb-0">@yield('title')</h2>
|
||||
@yield('dashboard_action')
|
||||
</div>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<div class="text-right">
|
||||
@yield('new_button')
|
||||
|
||||
@stack('header_button')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stack('header_end')
|
30
resources/views/partials/portal/menu.blade.php
Normal file
30
resources/views/partials/portal/menu.blade.php
Normal file
@ -0,0 +1,30 @@
|
||||
@stack('menu_start')
|
||||
<nav class="sidenav navbar navbar-vertical fixed-left navbar-expand-xs navbar-light bg-default" id="sidenav-main">
|
||||
<div class="scrollbar-inner">
|
||||
<div class="sidenav-header d-flex align-items-center ml-4">
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="avatar avatar-xs background-unset">
|
||||
<img class="border-radius-0 border-0 mr-3" alt="Image placeholder" src="{{ setting('company.logo') ? Storage::url(setting('company.logo')) : asset('public/img/akaunting-logo-white.png') }}">
|
||||
</span>
|
||||
<div class="media-body pl-2 d-grid nav-header-text">
|
||||
<span class="font-weight-bold o-y">{{ Str::limit(setting('company.name'), 22) }}<i class="fas fa-sort-down pl-2"></i></span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="ml-auto left-menu-toggle-position">
|
||||
<div class="sidenav-toggler d-none d-xl-block left-menu-toggle" data-action="sidenav-unpin" data-target="#sidenav-main">
|
||||
<div class="sidenav-toggler-inner">
|
||||
<i class="sidenav-toggler-line"></i>
|
||||
<i class="sidenav-toggler-line"></i>
|
||||
<i class="sidenav-toggler-line"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{!! menu('portal') !!}
|
||||
</div>
|
||||
</nav>
|
||||
@stack('menu_end')
|
115
resources/views/partials/portal/navbar.blade.php
Normal file
115
resources/views/partials/portal/navbar.blade.php
Normal file
@ -0,0 +1,115 @@
|
||||
<nav class="navbar navbar-top navbar-expand navbar-dark border-bottom">
|
||||
<div class="container-fluid">
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<ul class="navbar-nav align-items-center ml-md-auto">
|
||||
<li class="nav-item d-xl-none">
|
||||
<div class="pr-3 sidenav-toggler sidenav-toggler-dark" data-action="sidenav-pin" data-target="#sidenav-main">
|
||||
<div class="sidenav-toggler-inner">
|
||||
<i class="sidenav-toggler-line"></i>
|
||||
<i class="sidenav-toggler-line"></i>
|
||||
<i class="sidenav-toggler-line"></i>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<i class="far fa-bell"></i>
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-xl dropdown-menu-right py-0 overflow-hidden">
|
||||
<div class="px-3 py-3">
|
||||
<a class="text-sm text-muted m-0">{{ trans_choice('header.notifications.counter', $notifications, ['count' => $notifications]) }}</a>
|
||||
</div>
|
||||
|
||||
<div class="list-group list-group-flush">
|
||||
@if (count($bills))
|
||||
<a href="{{ url('auth/users/' . $user->id . '/read-bills') }}" class="list-group-item list-group-item-action">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<i class="fa fa-shopping-cart"></i>
|
||||
</div>
|
||||
<div class="col ml--2">
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<h4 class="mb-0 text-sm">{{ trans_choice('header.notifications.upcoming_bills', count($bills), ['count' => count($bills)]) }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
@endif
|
||||
|
||||
@if (count($invoices))
|
||||
<a href="{{ url('auth/users/' . $user->id . '/read-invoices') }}" class="list-group-item list-group-item-action">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<i class="fa fa-money-bill-alt"></i>
|
||||
</div>
|
||||
<div class="col ml--2">
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<h4 class="mb-0 text-sm">{{ trans_choice('header.notifications.overdue_invoices', count($invoices), ['count' => count($invoices)]) }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<a href="#!" class="dropdown-item text-center text-success font-weight-bold py-3">{{ trans('header.notifications.view_all') }}</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@permission('read-install-updates')
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('updates.index') }}" title="{{ $updates }} Updates Available" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
<span>
|
||||
<i class="fa fa-sync-alt"></i>
|
||||
</span>
|
||||
@if ($updates)
|
||||
<span class="badge badge-md badge-circle badge-floating badge-warning">{{ $updates }}</span>
|
||||
@endif
|
||||
</a>
|
||||
</li>
|
||||
@endpermission
|
||||
|
||||
<li class="nav-item hidden-md">
|
||||
<a class="nav-link" href="{{ url(trans('header.support_link')) }}" target="_blank" title="{{ trans('general.help') }}" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
<i class="far fa-life-ring"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="navbar-nav align-items-center ml-auto ml-md-0">
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link pr-0" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<div class="media align-items-center">
|
||||
<span class="avatar avatar-sm rounded-circle bg-default font-size-1">
|
||||
<i class="fas fa-user-alt"></i>
|
||||
</span>
|
||||
<div class="media-body ml-2 d-none d-lg-block">
|
||||
<span class="mb-0 text-sm font-weight-bold">
|
||||
@if (!empty($user->name))
|
||||
{{ $user->name }}
|
||||
@endif
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
<div class="dropdown-header noti-title">
|
||||
<h6 class="text-overflow m-0">{{ trans('general.welcome') }}</h6>
|
||||
</div>
|
||||
<a href="{{ url('portal/profile/edit') }}" class="dropdown-item">
|
||||
<i class="fas fa-user"></i>
|
||||
<span>{{ trans('auth.profile') }}</span>
|
||||
</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a href="{{ route('portal.logout') }}" class="dropdown-item">
|
||||
<i class="fas fa-power-off"></i>
|
||||
<span>{{ trans('auth.logout') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
24
resources/views/partials/portal/pagination.blade.php
Normal file
24
resources/views/partials/portal/pagination.blade.php
Normal file
@ -0,0 +1,24 @@
|
||||
@stack('pagination_start')
|
||||
@if ($items->firstItem())
|
||||
<div class="col-6">
|
||||
<span class="table-text hidden-lg">
|
||||
{{ trans('general.show') }}
|
||||
</span>
|
||||
{!! Form::select('limit', $limits, request('limit', setting('default.list_limit', '25')), ['class' => 'form-control form-control-sm table-header-search hidden-md', 'onchange' => 'this.form.submit()']) !!}
|
||||
<span class="table-text hidden-lg">
|
||||
{{ trans('pagination.page') }}
|
||||
{{ trans('pagination.showing', ['first' => $items->firstItem(), 'last' => $items->lastItem(), 'total' => $items->total(), 'type' => strtolower((isset($title)) ? $title : trans_choice('general.' . $type, 2))]) }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="col-6">
|
||||
<nav class="float-right">
|
||||
{!! $items->appends(request()->except('page'))->links() !!}
|
||||
</nav>
|
||||
</div>
|
||||
@else
|
||||
<div class="col-12" id="datatable-basic_info" role="status" aria-live="polite">
|
||||
<small>{{ trans('general.no_records') }}</small>
|
||||
</div>
|
||||
@endif
|
||||
@stack('pagination_end')
|
@ -0,0 +1,28 @@
|
||||
<div>
|
||||
<div class="hidden">
|
||||
@if (!empty($setting['name']))
|
||||
<h2>{{ $setting['name'] }}</h2>
|
||||
@endif
|
||||
|
||||
@if (!empty($setting['description']))
|
||||
<div class="well well-sm">{{ $setting['description'] }}</div>
|
||||
@endif
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="buttons">
|
||||
<div class="pull-right">
|
||||
{!! Form::open([
|
||||
'url' => $confirm_url,
|
||||
'id' => 'redirect-form',
|
||||
'role' => 'form',
|
||||
'autocomplete' => "off",
|
||||
'novalidate' => 'true'
|
||||
]) !!}
|
||||
<button @click="onRedirectConfirm" type="button" id="button-confirm" class="btn btn-success">
|
||||
{{ trans('general.confirm') }}
|
||||
</button>
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,28 @@
|
||||
<div>
|
||||
<div class="hidden">
|
||||
@if (!empty($setting['name']))
|
||||
<h2>{{ $setting['name'] }}</h2>
|
||||
@endif
|
||||
|
||||
@if (!empty($setting['description']))
|
||||
<div class="well well-sm">{{ $setting['description'] }}</div>
|
||||
@endif
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="buttons">
|
||||
<div class="pull-right">
|
||||
{!! Form::open([
|
||||
'url' => $confirm_url,
|
||||
'id' => 'redirect-form',
|
||||
'role' => 'form',
|
||||
'autocomplete' => "off",
|
||||
'novalidate' => 'true'
|
||||
]) !!}
|
||||
<button @click="onRedirectConfirm" type="button" id="button-confirm" class="btn btn-success">
|
||||
{{ trans('general.confirm') }}
|
||||
</button>
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
142
resources/views/partials/portal/scripts.blade.php
Normal file
142
resources/views/partials/portal/scripts.blade.php
Normal file
@ -0,0 +1,142 @@
|
||||
<!-- Core -->
|
||||
<script src="{{ asset('public/vendor/jquery/dist/jquery.min.js') }}"></script>
|
||||
<script src="{{ asset('public/vendor/bootstrap/dist/js/bootstrap.bundle.min.js') }}"></script>
|
||||
<script src="{{ asset('public/vendor/js-cookie/js.cookie.js') }}"></script>
|
||||
|
||||
@stack('scripts_start')
|
||||
|
||||
<script src="{{ asset('public/vendor/chart.js/dist/Chart.min.js') }}"></script>
|
||||
|
||||
<script src="https://unpkg.com/vue"></script>
|
||||
|
||||
@stack('charts')
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.0.2/echarts-en.min.js" charset=utf-8></script>
|
||||
|
||||
<!-- Argon -->
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
'use strict';
|
||||
|
||||
var Layout = (function() {
|
||||
|
||||
function pinSidenav() {
|
||||
$('.sidenav-toggler').addClass('active');
|
||||
$('.sidenav-toggler').data('action', 'sidenav-unpin');
|
||||
$('body').removeClass('g-sidenav-hidden').addClass('g-sidenav-show g-sidenav-pinned');
|
||||
$('body').append('<div class="backdrop d-xl-none" data-action="sidenav-unpin" data-target='+$('#sidenav-main').data('target')+' />');
|
||||
|
||||
// Store the sidenav state in a cookie session
|
||||
Cookies.set('sidenav-state', 'pinned');
|
||||
}
|
||||
|
||||
function unpinSidenav() {
|
||||
$('.sidenav-toggler').removeClass('active');
|
||||
$('.sidenav-toggler').data('action', 'sidenav-pin');
|
||||
$('body').removeClass('g-sidenav-pinned').addClass('g-sidenav-hidden');
|
||||
$('body').find('.backdrop').remove();
|
||||
|
||||
// Store the sidenav state in a cookie session
|
||||
Cookies.set('sidenav-state', 'unpinned');
|
||||
}
|
||||
|
||||
// Set sidenav state from cookie
|
||||
|
||||
var $sidenavState = Cookies.get('sidenav-state') ? Cookies.get('sidenav-state') : 'pinned';
|
||||
|
||||
if($(window).width() > 1200) {
|
||||
if($sidenavState == 'pinned') {
|
||||
pinSidenav()
|
||||
}
|
||||
|
||||
if(Cookies.get('sidenav-state') == 'unpinned') {
|
||||
unpinSidenav()
|
||||
}
|
||||
}
|
||||
|
||||
$("body").on("click", "[data-action]", function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var $this = $(this);
|
||||
var action = $this.data('action');
|
||||
var target = $this.data('target');
|
||||
|
||||
// Manage actions
|
||||
switch (action) {
|
||||
case 'sidenav-pin':
|
||||
pinSidenav();
|
||||
break;
|
||||
|
||||
case 'sidenav-unpin':
|
||||
unpinSidenav();
|
||||
break;
|
||||
|
||||
case 'search-show':
|
||||
target = $this.data('target');
|
||||
$('body').removeClass('g-navbar-search-show').addClass('g-navbar-search-showing');
|
||||
|
||||
setTimeout(function() {
|
||||
$('body').removeClass('g-navbar-search-showing').addClass('g-navbar-search-show');
|
||||
}, 150);
|
||||
|
||||
setTimeout(function() {
|
||||
$('body').addClass('g-navbar-search-shown');
|
||||
}, 300)
|
||||
break;
|
||||
|
||||
case 'search-close':
|
||||
target = $this.data('target');
|
||||
$('body').removeClass('g-navbar-search-shown');
|
||||
|
||||
setTimeout(function() {
|
||||
$('body').removeClass('g-navbar-search-show').addClass('g-navbar-search-hiding');
|
||||
}, 150);
|
||||
|
||||
setTimeout(function() {
|
||||
$('body').removeClass('g-navbar-search-hiding').addClass('g-navbar-search-hidden');
|
||||
}, 300);
|
||||
|
||||
setTimeout(function() {
|
||||
$('body').removeClass('g-navbar-search-hidden');
|
||||
}, 500);
|
||||
break;
|
||||
}
|
||||
})
|
||||
|
||||
// Add sidenav modifier classes on mouse events
|
||||
$('.sidenav').on('mouseenter', function() {
|
||||
if(! $('body').hasClass('g-sidenav-pinned')) {
|
||||
$('body').removeClass('g-sidenav-hide').removeClass('g-sidenav-hidden').addClass('g-sidenav-show');
|
||||
}
|
||||
})
|
||||
|
||||
$('.sidenav').on('mouseleave', function() {
|
||||
if(! $('body').hasClass('g-sidenav-pinned')) {
|
||||
$('body').removeClass('g-sidenav-show').addClass('g-sidenav-hide');
|
||||
|
||||
setTimeout(function() {
|
||||
$('body').removeClass('g-sidenav-hide').addClass('g-sidenav-hidden');
|
||||
}, 300);
|
||||
}
|
||||
})
|
||||
|
||||
// Make the body full screen size if it has not enough content inside
|
||||
$(window).on('load resize', function() {
|
||||
if($('body').height() < 800) {
|
||||
$('body').css('min-height', '100vh');
|
||||
$('#footer-main').addClass('footer-auto-bottom')
|
||||
}
|
||||
})
|
||||
})();
|
||||
</script>
|
||||
|
||||
@stack('body_css')
|
||||
|
||||
@stack('body_stylesheet')
|
||||
|
||||
@stack('body_js')
|
||||
|
||||
@stack('body_scripts')
|
||||
|
||||
@stack('scripts_end')
|
Reference in New Issue
Block a user