fixed error pages
This commit is contained in:
parent
ef95a33648
commit
6f7d94e676
@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Http\ViewComposers;
|
||||
|
||||
use Auth;
|
||||
use App\Utilities\Updater;
|
||||
use Illuminate\View\View;
|
||||
use App\Traits\Modules as RemoteModules;
|
||||
@ -21,42 +20,43 @@ class Header
|
||||
{
|
||||
$user = user();
|
||||
|
||||
$bills = [];
|
||||
$invoices = [];
|
||||
$notifications = 0;
|
||||
$invoices = $bills = [];
|
||||
$updates = $notifications = 0;
|
||||
$company = null;
|
||||
|
||||
// Get customer company
|
||||
if ($user->can('read-client-portal')) {
|
||||
$company = (object) [
|
||||
'company_name' => setting('company.name'),
|
||||
'company_email' => setting('company.email'),
|
||||
'company_address' => setting('company.address'),
|
||||
'company_logo' => setting('company.logo'),
|
||||
];
|
||||
}
|
||||
|
||||
$undereads = $user->unreadNotifications;
|
||||
|
||||
foreach ($undereads as $underead) {
|
||||
$data = $underead->getAttribute('data');
|
||||
|
||||
switch ($underead->getAttribute('type')) {
|
||||
case 'App\Notifications\Expense\Bill':
|
||||
$bills[$data['bill_id']] = $data['amount'];
|
||||
$notifications++;
|
||||
break;
|
||||
case 'App\Notifications\Income\Invoice':
|
||||
$invoices[$data['invoice_id']] = $data['amount'];
|
||||
$notifications++;
|
||||
break;
|
||||
if (!empty($user)) {
|
||||
// Get customer company
|
||||
if ($user->can('read-client-portal')) {
|
||||
$company = (object) [
|
||||
'company_name' => setting('company.name'),
|
||||
'company_email' => setting('company.email'),
|
||||
'company_address' => setting('company.address'),
|
||||
'company_logo' => setting('company.logo'),
|
||||
];
|
||||
}
|
||||
|
||||
$undereads = $user->unreadNotifications;
|
||||
|
||||
foreach ($undereads as $underead) {
|
||||
$data = $underead->getAttribute('data');
|
||||
|
||||
switch ($underead->getAttribute('type')) {
|
||||
case 'App\Notifications\Expense\Bill':
|
||||
$bills[$data['bill_id']] = $data['amount'];
|
||||
$notifications++;
|
||||
break;
|
||||
case 'App\Notifications\Income\Invoice':
|
||||
$invoices[$data['invoice_id']] = $data['amount'];
|
||||
$notifications++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$updates = count(Updater::all());
|
||||
|
||||
$this->loadSuggestions();
|
||||
}
|
||||
|
||||
$updates = count(Updater::all());
|
||||
|
||||
$this->loadSuggestions();
|
||||
|
||||
$view->with([
|
||||
'user' => $user,
|
||||
'notifications' => $notifications,
|
||||
|
@ -19,7 +19,7 @@ class Notifications
|
||||
public function compose(View $view)
|
||||
{
|
||||
// No need to add suggestions in console
|
||||
if (app()->runningInConsole() || !env('APP_INSTALLED')) {
|
||||
if (app()->runningInConsole() || !env('APP_INSTALLED') || !user()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -26,26 +26,28 @@ class Suggestions
|
||||
|
||||
$modules = false;
|
||||
|
||||
$path = Route::current()->uri();
|
||||
if (user()) {
|
||||
$path = Route::current()->uri();
|
||||
|
||||
if ($path) {
|
||||
$suggestions = $this->getSuggestions($path);
|
||||
if ($path) {
|
||||
$suggestions = $this->getSuggestions($path);
|
||||
|
||||
if ($suggestions) {
|
||||
$suggestion_modules = $suggestions->modules;
|
||||
|
||||
foreach ($suggestion_modules as $key => $module) {
|
||||
$installed = Module::where('company_id', session('company_id'))->where('alias', $module->alias)->first();
|
||||
|
||||
if ($suggestions) {
|
||||
$suggestion_modules = $suggestions->modules;
|
||||
|
||||
foreach ($suggestion_modules as $key => $module) {
|
||||
$installed = Module::where('company_id', '=', session('company_id'))->where('alias', '=', $module->alias)->first();
|
||||
|
||||
if ($installed) {
|
||||
unset($suggestion_modules[$key]);
|
||||
if ($installed) {
|
||||
unset($suggestion_modules[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($suggestion_modules) {
|
||||
shuffle($suggestion_modules);
|
||||
if ($suggestion_modules) {
|
||||
shuffle($suggestion_modules);
|
||||
|
||||
$modules[] = $suggestion_modules[0];
|
||||
$modules[] = $suggestion_modules[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,23 +2,22 @@
|
||||
|
||||
return [
|
||||
|
||||
'forbidden_access' => 'Forbidden Access',
|
||||
'error_page' => 'Error Page',
|
||||
'page_not_found' => 'Page Not Found',
|
||||
|
||||
'body' => [
|
||||
'forbidden_access' => 'Oops! Forbidden Access.',
|
||||
'error_page' => 'Oops! Something went wrong.',
|
||||
'page_not_found' => 'Oops! Page not found.',
|
||||
'title' => [
|
||||
'403' => 'Oops! Forbidden Access',
|
||||
'404' => 'Oops! Page not found',
|
||||
'500' => 'Oops! Something went wrong',
|
||||
],
|
||||
|
||||
'messages' => [
|
||||
'forbidden_access' => 'You can not access this page.
|
||||
Meanwhile, you may <a href=":link">return to dashboard</a>.',
|
||||
'error_page' => 'We will work on fixing that right away.
|
||||
Meanwhile, you may <a href=":link">return to dashboard</a>.',
|
||||
'page_not_found' => 'We could not find the page you were looking for.
|
||||
Meanwhile, you may <a href=":link">return to dashboard</a>.',
|
||||
'header' => [
|
||||
'403' => '403 Forbidden',
|
||||
'404' => '404 Not Found',
|
||||
'500' => '500 Internal Server Error',
|
||||
],
|
||||
|
||||
'message' => [
|
||||
'403' => 'You can not access this page.',
|
||||
'404' => 'We could not find the page you were looking for.',
|
||||
'500' => 'We will work on fixing that right away.',
|
||||
],
|
||||
|
||||
];
|
||||
|
@ -1,16 +1,16 @@
|
||||
@extends('layouts.admin')
|
||||
@extends('layouts.error')
|
||||
|
||||
@section('title', trans('errors.forbidden_access'))
|
||||
@section('title', trans('errors.title.403'))
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h2 class="mb-0 text-warning">403 Forbidden</h2>
|
||||
<h2 class="mb-0 text-danger"><i class="fa fa-exclamation-triangle text-danger"></i> {{ trans('errors.header.403') }}</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h3><i class="fa fa-exclamation-triangle text-danger"></i> {{ trans('errors.body.forbidden_access') }}</h3>
|
||||
<p>{{ trans('errors.message.403') }}</p>
|
||||
|
||||
<p>{!! trans('errors.messages.forbidden_access', ['link' => url('/') ]) !!}</p>
|
||||
<a href="{{ url('/') }}" class="btn btn-success header-button-top"><span class="fa fa-tachometer-alt"></span> {{ trans('general.go_to', ['name' => trans('general.dashboard')]) }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
@ -1,16 +1,16 @@
|
||||
@extends('layouts.admin')
|
||||
@extends('layouts.error')
|
||||
|
||||
@section('title', trans('errors.page_not_found'))
|
||||
@section('title', trans('errors.title.404'))
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h2 class="mb-0 text-yellow">404 Not Found</h2>
|
||||
<h2 class="mb-0 text-warning"><i class="fa fa-exclamation-triangle text-warning"></i> {{ trans('errors.header.404') }}</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h3><i class="fa fa-exclamation-triangle text-yellow"></i> {{ trans('errors.body.page_not_found') }}</h3>
|
||||
<p>{{ trans('errors.message.404') }}</p>
|
||||
|
||||
<p>{!! trans('errors.messages.page_not_found', ['link' => url('/')]) !!}</p>
|
||||
<a href="{{ url('/') }}" class="btn btn-success header-button-top"><span class="fa fa-tachometer-alt"></span> {{ trans('general.go_to', ['name' => trans('general.dashboard')]) }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
@ -1,16 +1,17 @@
|
||||
@extends('layouts.admin')
|
||||
@extends('layouts.error')
|
||||
|
||||
@section('title', trans('errors.error_page'))
|
||||
@section('title', trans('errors.title.500'))
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h2 class="mb-0 text-danger">500 Internal Server Error</h2>
|
||||
<h2 class="mb-0 text-danger"><i class="fa fa-exclamation-triangle text-danger"></i> {{ trans('errors.header.500') }}</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h3><i class="fa fa-exclamation-triangle text-danger"></i> {{ trans('errors.body.error_page') }}</h3>
|
||||
<p>{{ trans('errors.message.500') }}</p>
|
||||
|
||||
<p>{!! trans('errors.messages.error_page', ['link' => url('/') ]) !!}</p>
|
||||
<a href="{{ url('/') }}" class="btn btn-success header-button-top"><span class="fa fa-tachometer-alt"></span> {{ trans('general.go_to', ['name' => trans('general.dashboard')]) }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
31
resources/views/layouts/error.blade.php
Normal file
31
resources/views/layouts/error.blade.php
Normal file
@ -0,0 +1,31 @@
|
||||
<html lang="{{ app()->getLocale() }}">
|
||||
|
||||
@include('partials.admin.head')
|
||||
|
||||
<body class="g-sidenav-show g-sidenav-pinned">
|
||||
@stack('body_start')
|
||||
|
||||
<div class="main-content" id="panel">
|
||||
|
||||
<div id="main-body">
|
||||
|
||||
@include('partials.admin.header')
|
||||
|
||||
<div class="container-fluid content-layout mt--6">
|
||||
|
||||
@include('partials.admin.content')
|
||||
|
||||
@include('partials.admin.footer')
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@stack('body_end')
|
||||
|
||||
@include('partials.admin.scripts')
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,31 +1,31 @@
|
||||
@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-flex mb-0 long-texts">@yield('title')</h2>
|
||||
@yield('dashboard_action')
|
||||
</div>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<div class="text-right">
|
||||
@yield('new_button')
|
||||
<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-flex mb-0 long-texts">@yield('title')</h2>
|
||||
@yield('dashboard_action')
|
||||
</div>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<div class="text-right">
|
||||
@yield('new_button')
|
||||
|
||||
@permission('read-modules-home')
|
||||
@if (!empty($suggestion_modules))
|
||||
@foreach($suggestion_modules as $s_module)
|
||||
<span>
|
||||
<a href="{{ url($s_module->action_url) . '?' . http_build_query((array) $s_module->action_parameters) }}" class="btn btn-white btn-sm header-button-bottom" target="{{ $s_module->action_target }}"><span class="fa fa-rocket"></span> {{ $s_module->name }}</a>
|
||||
</span>
|
||||
@endforeach
|
||||
@endif
|
||||
@endpermission
|
||||
@permission('read-modules-home')
|
||||
@if (!empty($suggestion_modules))
|
||||
@foreach($suggestion_modules as $s_module)
|
||||
<span>
|
||||
<a href="{{ url($s_module->action_url) . '?' . http_build_query((array) $s_module->action_parameters) }}" class="btn btn-white btn-sm header-button-bottom" target="{{ $s_module->action_target }}"><span class="fa fa-rocket"></span> {{ $s_module->name }}</a>
|
||||
</span>
|
||||
@endforeach
|
||||
@endif
|
||||
@endpermission
|
||||
|
||||
@stack('header_button')
|
||||
</div>
|
||||
@stack('header_button')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stack('header_end')
|
||||
|
@ -1,252 +1,252 @@
|
||||
@stack('navbar_start')
|
||||
<nav class="navbar navbar-top navbar-expand navbar-dark border-bottom">
|
||||
<div class="container-fluid">
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
@if (user()->can('read-common-search'))
|
||||
<form class="navbar-search navbar-search-light form-inline mb-0" id="navbar-search-main" autocomplete="off">
|
||||
<div id="global-search" class="form-group mb-0 mr-sm-3">
|
||||
<div class="input-group input-group-alternative input-group-merge">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text"><i class="fa fa-search"></i></span>
|
||||
</div>
|
||||
<input type="text" name="search" v-model="keyword" @input="onChange" v-click-outside="closeResult" class="form-control" autocomplete="off" placeholder="Search">
|
||||
<div class="dropdown-menu dropdown-menu-xl dropdown-menu-center" ref="menu" :class="[{show: show}]">
|
||||
<div class="list-group list-group-flush">
|
||||
<a class="list-group-item list-group-item-action" :href="item.href" v-for="(item, index) in items">
|
||||
<div class="row align-items-center">
|
||||
<div class="col ml--2">
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<div>
|
||||
<div class="name" v-text="item.name"></div>
|
||||
</div>
|
||||
<div class="text-muted">
|
||||
<span class="type" v-text="item.type"></span>
|
||||
</div>
|
||||
<nav class="navbar navbar-top navbar-expand navbar-dark border-bottom">
|
||||
<div class="container-fluid">
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
@permission('read-common-search')
|
||||
<form class="navbar-search navbar-search-light form-inline mb-0" id="navbar-search-main" autocomplete="off">
|
||||
<div id="global-search" class="form-group mb-0 mr-sm-3">
|
||||
<div class="input-group input-group-alternative input-group-merge">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text"><i class="fa fa-search"></i></span>
|
||||
</div>
|
||||
<input type="text" name="search" v-model="keyword" @input="onChange" v-click-outside="closeResult" class="form-control" autocomplete="off" placeholder="Search">
|
||||
<div class="dropdown-menu dropdown-menu-xl dropdown-menu-center" ref="menu" :class="[{show: show}]">
|
||||
<div class="list-group list-group-flush">
|
||||
<a class="list-group-item list-group-item-action" :href="item.href" v-for="(item, index) in items">
|
||||
<div class="row align-items-center">
|
||||
<div class="col ml--2">
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<div>
|
||||
<div class="name" v-text="item.name"></div>
|
||||
</div>
|
||||
<div class="text-muted">
|
||||
<span class="type" v-text="item.type"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="close" data-action="search-close" data-target="#navbar-search-main" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
<button type="button" class="close" data-action="search-close" data-target="#navbar-search-main" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</form>
|
||||
@endpermission
|
||||
|
||||
<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>
|
||||
<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>
|
||||
</li>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="nav-item d-sm-none">
|
||||
<a class="nav-link" href="#" data-action="search-show" data-target="#navbar-search-main">
|
||||
<i class="fa fa-search"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@if (user()->can(['create-incomes-invoices', 'create-incomes-revenues', 'create-incomes-customers', 'create-expenses-bills', 'create-expenses-payments', 'create-expenses-vendors']))
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<i class="fas fa-plus"></i>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-dark dropdown-menu-right">
|
||||
<div class="row shortcuts px-4">
|
||||
@permission('create-incomes-invoices')
|
||||
<a href="{{ route('invoices.create') }}" class="col-4 shortcut-item">
|
||||
<span class="shortcut-media avatar rounded-circle bg-gradient-info">
|
||||
<i class="fa fa-money-bill"></i>
|
||||
</span>
|
||||
<small class="text-info">{{ trans_choice('general.invoices', 1) }}</small>
|
||||
</a>
|
||||
@endpermission
|
||||
|
||||
@permission('create-incomes-revenues')
|
||||
<a href="{{ route('revenues.create') }}" class="col-4 shortcut-item">
|
||||
<span class="shortcut-media avatar rounded-circle bg-gradient-info">
|
||||
<i class="fas fa-hand-holding-usd"></i>
|
||||
</span>
|
||||
<small class="text-info">{{ trans_choice('general.revenues', 1) }}</small>
|
||||
</a>
|
||||
@endpermission
|
||||
|
||||
@permission('create-incomes-customers')
|
||||
<a href="{{ route('customers.create') }}" class="col-4 shortcut-item">
|
||||
<span class="shortcut-media avatar rounded-circle bg-gradient-info">
|
||||
<i class="fas fa-user"></i>
|
||||
</span>
|
||||
<small class="text-info">{{ trans_choice('general.customers', 1) }}</small>
|
||||
</a>
|
||||
@endpermission
|
||||
|
||||
@permission('create-expenses-bills')
|
||||
<a href="{{ route('bills.create') }}" class="col-4 shortcut-item">
|
||||
<span class="shortcut-media avatar rounded-circle bg-gradient-danger">
|
||||
<i class="fa fa-shopping-cart"></i>
|
||||
</span>
|
||||
<small class="text-danger">{{ trans_choice('general.bills', 1) }}</small>
|
||||
</a>
|
||||
@endpermission
|
||||
|
||||
@permission('create-expenses-payments')
|
||||
<a href="{{ route('payments.create') }}" class="col-4 shortcut-item">
|
||||
<span class="shortcut-media avatar rounded-circle bg-gradient-danger">
|
||||
<i class="fas fa-hand-holding-usd"></i>
|
||||
</span>
|
||||
<small class="text-danger">{{ trans_choice('general.payments', 1) }}</small>
|
||||
</a>
|
||||
@endpermission
|
||||
|
||||
@permission('create-expenses-vendors')
|
||||
<a href="{{ route('vendors.create') }}" class="col-4 shortcut-item">
|
||||
<span class="shortcut-media avatar rounded-circle bg-gradient-danger">
|
||||
<i class="fas fa-user"></i>
|
||||
</span>
|
||||
<small class="text-danger">{{ trans_choice('general.vendors', 1) }}</small>
|
||||
</a>
|
||||
@endpermission
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@endif
|
||||
<li class="nav-item d-sm-none">
|
||||
<a class="nav-link" href="#" data-action="search-show" data-target="#navbar-search-main">
|
||||
<i class="fa fa-search"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@permission(['create-incomes-invoices', 'create-incomes-revenues', 'create-incomes-customers', 'create-expenses-bills', 'create-expenses-payments', 'create-expenses-vendors'])
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<i class="fas fa-plus"></i>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-dark dropdown-menu-right">
|
||||
<div class="row shortcuts px-4">
|
||||
@permission('create-incomes-invoices')
|
||||
<a href="{{ route('invoices.create') }}" class="col-4 shortcut-item">
|
||||
<span class="shortcut-media avatar rounded-circle bg-gradient-info">
|
||||
<i class="fa fa-money-bill"></i>
|
||||
</span>
|
||||
<small class="text-info">{{ trans_choice('general.invoices', 1) }}</small>
|
||||
</a>
|
||||
@endpermission
|
||||
|
||||
@permission('create-incomes-revenues')
|
||||
<a href="{{ route('revenues.create') }}" class="col-4 shortcut-item">
|
||||
<span class="shortcut-media avatar rounded-circle bg-gradient-info">
|
||||
<i class="fas fa-hand-holding-usd"></i>
|
||||
</span>
|
||||
<small class="text-info">{{ trans_choice('general.revenues', 1) }}</small>
|
||||
</a>
|
||||
@endpermission
|
||||
|
||||
@permission('create-incomes-customers')
|
||||
<a href="{{ route('customers.create') }}" class="col-4 shortcut-item">
|
||||
<span class="shortcut-media avatar rounded-circle bg-gradient-info">
|
||||
<i class="fas fa-user"></i>
|
||||
</span>
|
||||
<small class="text-info">{{ trans_choice('general.customers', 1) }}</small>
|
||||
</a>
|
||||
@endpermission
|
||||
|
||||
@permission('create-expenses-bills')
|
||||
<a href="{{ route('bills.create') }}" class="col-4 shortcut-item">
|
||||
<span class="shortcut-media avatar rounded-circle bg-gradient-danger">
|
||||
<i class="fa fa-shopping-cart"></i>
|
||||
</span>
|
||||
<small class="text-danger">{{ trans_choice('general.bills', 1) }}</small>
|
||||
</a>
|
||||
@endpermission
|
||||
|
||||
@permission('create-expenses-payments')
|
||||
<a href="{{ route('payments.create') }}" class="col-4 shortcut-item">
|
||||
<span class="shortcut-media avatar rounded-circle bg-gradient-danger">
|
||||
<i class="fas fa-hand-holding-usd"></i>
|
||||
</span>
|
||||
<small class="text-danger">{{ trans_choice('general.payments', 1) }}</small>
|
||||
</a>
|
||||
@endpermission
|
||||
|
||||
@permission('create-expenses-vendors')
|
||||
<a href="{{ route('vendors.create') }}" class="col-4 shortcut-item">
|
||||
<span class="shortcut-media avatar rounded-circle bg-gradient-danger">
|
||||
<i class="fas fa-user"></i>
|
||||
</span>
|
||||
<small class="text-danger">{{ trans_choice('general.vendors', 1) }}</small>
|
||||
</a>
|
||||
@endpermission
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span>
|
||||
<i class="far fa-bell"></i>
|
||||
</span>
|
||||
@if ($notifications)
|
||||
<span class="badge badge-md badge-circle badge-reminder badge-warning">{{ $notifications }}</span>
|
||||
@endif
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right py-0 overflow-hidden">
|
||||
@if ($notifications)
|
||||
<div class="p-3">
|
||||
<a class="text-sm text-muted">{{ trans_choice('header.notifications.counter', $notifications, ['count' => $notifications]) }}</a>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="list-group list-group-flush">
|
||||
@if (count($bills))
|
||||
<a href="{{ route('users.read.bills', $user->id) }}" 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="{{ route('users.read.invoices', $user->id) }}" class="list-group-item list-group-item-action">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<i class="fa fa-money-bill"></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>
|
||||
|
||||
@if ($notifications)
|
||||
<a href="#" class="dropdown-item text-center text-primary font-weight-bold py-3">{{ trans('header.notifications.view_all') }}</a>
|
||||
@else
|
||||
<a class="dropdown-item text-center text-primary font-weight-bold py-3">{{ trans_choice('header.notifications.counter', $notifications, ['count' => $notifications]) }}</a>
|
||||
@endif
|
||||
</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="far fa-bell"></i>
|
||||
<i class="fa fa-sync-alt"></i>
|
||||
</span>
|
||||
@if ($notifications)
|
||||
<span class="badge badge-md badge-circle badge-reminder badge-warning">{{ $notifications }}</span>
|
||||
@if ($updates)
|
||||
<span class="badge badge-md badge-circle badge-update badge-warning">{{ $updates }}</span>
|
||||
@endif
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right py-0 overflow-hidden">
|
||||
@if ($notifications)
|
||||
<div class="p-3">
|
||||
<a class="text-sm text-muted">{{ trans_choice('header.notifications.counter', $notifications, ['count' => $notifications]) }}</a>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="list-group list-group-flush">
|
||||
@if (count($bills))
|
||||
<a href="{{ route('users.read.bills', $user->id) }}" 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="{{ route('users.read.invoices', $user->id) }}" class="list-group-item list-group-item-action">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<i class="fa fa-money-bill"></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>
|
||||
|
||||
@if ($notifications)
|
||||
<a href="#" class="dropdown-item text-center text-primary font-weight-bold py-3">{{ trans('header.notifications.view_all') }}</a>
|
||||
@else
|
||||
<a class="dropdown-item text-center text-primary font-weight-bold py-3">{{ trans_choice('header.notifications.counter', $notifications, ['count' => $notifications]) }}</a>
|
||||
@endif
|
||||
</div>
|
||||
</li>
|
||||
@endpermission
|
||||
|
||||
@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>
|
||||
<li class="nav-item d-none d-md-block">
|
||||
<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="true">
|
||||
<div class="media align-items-center">
|
||||
<img src="{{ asset('public/img/user.png') }}" height="36" width="36" alt="User"/>
|
||||
<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>
|
||||
@if ($updates)
|
||||
<span class="badge badge-md badge-circle badge-update badge-warning">{{ $updates }}</span>
|
||||
@endif
|
||||
</a>
|
||||
</li>
|
||||
@endpermission
|
||||
|
||||
<li class="nav-item d-none d-md-block">
|
||||
<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="true">
|
||||
<div class="media align-items-center">
|
||||
<img src="{{ asset('public/img/user.png') }}" height="36" width="36" alt="User"/>
|
||||
<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>
|
||||
@permission('update-auth-users')
|
||||
<a href="{{ route('users.edit', $user->id) }}" class="dropdown-item">
|
||||
<i class="fas fa-user"></i>
|
||||
<span>{{ trans('auth.profile') }}</span>
|
||||
</a>
|
||||
@endpermission
|
||||
@permission('read-auth-users')
|
||||
<div class="dropdown-divider"></div>
|
||||
<a href="{{ route('users.index') }}" class="dropdown-item">
|
||||
<i class="fas fa-users"></i>
|
||||
<span>{{ trans_choice('general.users', 2) }}</span>
|
||||
</a>
|
||||
@endpermission
|
||||
@permission('read-auth-roles')
|
||||
<a href="{{ route('roles.index') }}" class="dropdown-item">
|
||||
<i class="fas fa-list"></i>
|
||||
<span>{{ trans_choice('general.roles', 2) }}</span>
|
||||
</a>
|
||||
@endpermission
|
||||
@permission('read-auth-permissions')
|
||||
<a href="{{ route('permissions.index') }}" class="dropdown-item">
|
||||
<i class="fas fa-key"></i>
|
||||
<span>{{ trans_choice('general.permissions', 2) }}</span>
|
||||
</a>
|
||||
@endpermission
|
||||
<div class="dropdown-divider"></div>
|
||||
<a href="{{ route('logout') }}" class="dropdown-item">
|
||||
<i class="fas fa-power-off"></i>
|
||||
<span>{{ trans('auth.logout') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</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>
|
||||
@permission('update-auth-users')
|
||||
<a href="{{ route('users.edit', $user->id) }}" class="dropdown-item">
|
||||
<i class="fas fa-user"></i>
|
||||
<span>{{ trans('auth.profile') }}</span>
|
||||
</a>
|
||||
@endpermission
|
||||
@permission('read-auth-users')
|
||||
<div class="dropdown-divider"></div>
|
||||
<a href="{{ route('users.index') }}" class="dropdown-item">
|
||||
<i class="fas fa-users"></i>
|
||||
<span>{{ trans_choice('general.users', 2) }}</span>
|
||||
</a>
|
||||
@endpermission
|
||||
@permission('read-auth-roles')
|
||||
<a href="{{ route('roles.index') }}" class="dropdown-item">
|
||||
<i class="fas fa-list"></i>
|
||||
<span>{{ trans_choice('general.roles', 2) }}</span>
|
||||
</a>
|
||||
@endpermission
|
||||
@permission('read-auth-permissions')
|
||||
<a href="{{ route('permissions.index') }}" class="dropdown-item">
|
||||
<i class="fas fa-key"></i>
|
||||
<span>{{ trans_choice('general.permissions', 2) }}</span>
|
||||
</a>
|
||||
@endpermission
|
||||
<div class="dropdown-divider"></div>
|
||||
<a href="{{ route('logout') }}" class="dropdown-item">
|
||||
<i class="fas fa-power-off"></i>
|
||||
<span>{{ trans('auth.logout') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</nav>
|
||||
@stack('navbar_end')
|
||||
|
@ -1,21 +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-flex mb-0 long-texts">@yield('title')</h2>
|
||||
@yield('dashboard_action')
|
||||
</div>
|
||||
<div class="col-sm-8 col-md-7">
|
||||
<div class="text-right">
|
||||
@yield('new_button')
|
||||
<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-flex mb-0 long-texts">@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>
|
||||
@stack('header_button')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stack('header_end')
|
||||
|
Loading…
x
Reference in New Issue
Block a user