v4.1.9: Начальная производственная версия

- Полный backend на Hono + TypeScript
- SQLite база данных с 38 записями
- 3 пользователя: admin, aknaproff, kasutaja
- Модальное окно reportModal (4 шага)
- Docker конфигурация для Synology ARM
- Все миграции (0001-0017)
- Frontend: vanilla HTML/JS (original.html)
This commit is contained in:
Deploy Bot
2025-12-31 12:00:00 +02:00
parent afea76b053
commit 4898f5ec7f
381 changed files with 9105 additions and 65477 deletions

View File

@@ -1,74 +0,0 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name', 'Laravel') }}</title>
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="//fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
<!-- Styles -->
@include('layouts.partials.css')
@yield('css')
</head>
<body class="layout-top-nav">
<div id="app" class="wrapper">
@if(!isset($nav) || $nav === true)
@include('layouts.partials.top-nav')
@endif
<div class="content-wrapper">
@if(!isset($iframe_enabled) || !$iframe_enabled)
<div class="content-header">
<div class="container">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0 text-dark"> @yield('heading')</h1>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
@endif
<section class="content">
<div class="container">
<div col-md-12>
<!-- @include('layouts.partials.status') -->
</div>
</div>
@yield('content')
</section>
<div class="modal fade" id="modal_div" tabindex="-1" role="dialog"
aria-labelledby="gridSystemModalLabel">
</div>
</div>
<aside class="control-sidebar control-sidebar-dark">
<!-- Control sidebar content goes here -->
<div class="p-3">
<h5>Title</h5>
<p>Sidebar content</p>
</div>
</aside>
@if(!isset($nav) || $nav === true)
@include('layouts.partials.footer')
@endif
</div>
@include('layouts.partials.javascript')
@yield('footer')
</body>
</html>

View File

@@ -1,214 +0,0 @@
@php
$is_download = isset($is_download) ? $is_download : false;
$error_msg_color = isset($error_msg_color) ? $error_msg_color : 'red';
@endphp
@if(!$is_download)
<link href="{{asset(mix('css/app.css'))}}" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/v/bs4/jszip-2.5.0/dt-1.10.18/b-1.5.6/b-colvis-1.5.6/b-flash-1.5.6/b-html5-1.5.6/b-print-1.5.6/fc-3.3.1/fh-3.1.4/datatables.min.css?v={{$asset_version}}"/>
<!-- ladda.js -->
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/Ladda/1.0.6/ladda-themeless.min.css?v={{$asset_version}}">
<!-- intro.js -->
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/intro.js/2.9.3/introjs.min.css?v={{$asset_version}}">
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/intro.js@2.9.3/themes/introjs-nassim.min.css?v={{$asset_version}}">
<link href="https://cdn.jsdelivr.net/npm/animate.css@3.5.1?v={{$asset_version}}" rel="stylesheet" type="text/css">
@else
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css?v={{$asset_version}}">
@endif
<!-- form theme -->
@if($is_download && isset($form->schema['settings']['theme']) && $form->schema['settings']['theme'] != 'default')
<link href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/{{$form->schema['settings']['theme']}}/bootstrap.min.css" rel="stylesheet">
@endif
<link href="//cdnjs.cloudflare.com/ajax/libs/summernote/0.8.12/summernote-bs4.css?v={{$asset_version}}" rel="stylesheet">
<link href="//cdn.jsdelivr.net/npm/toastr@2.1.4/build/toastr.min.css?v={{$asset_version}}" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css?v={{$asset_version}}">
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/rangeslider.js/2.3.2/rangeslider.min.css?v={{$asset_version}}">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.1.2/css/tempusdominus-bootstrap-4.min.css?v={{$asset_version}}" />
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/dropzone/5.5.1/min/dropzone.min.css?v={{$asset_version}}">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.10/css/bootstrap-select.min.css?v={{$asset_version}}"/>
<link href="//cdnjs.cloudflare.com/ajax/libs/summernote/0.8.12/summernote-bs4.css?v={{$asset_version}}" rel="stylesheet">
<!-- bootstrap star rating -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-star-rating/4.0.6/css/star-rating.min.css?v={{$asset_version}}" media="all" rel="stylesheet" type="text/css" />
<!-- if you need to use a theme, then include the theme CSS file -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-star-rating/4.0.6/themes/krajee-svg/theme.css?v={{$asset_version}}" media="all" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="{{asset('/plugins/countdowntimer/countdowntimer.css').'?v='.$asset_version}}">
<style type="text/css">
.xs{
font-size: 0.575rem !important;
}
.error {
color:{!!$error_msg_color!!}
}
@if(!$is_download)
body {
margin: 0; /* If not already reset */
}
.content {
min-height: calc(100vh - 80px);
}
footer {
height: 50px;
}
@endif
/*custom css for switch*/
.switch {
font-size: 1rem;
position: relative;
}
.switch input {
position: absolute;
height: 1px;
width: 1px;
background: none;
border: 0;
clip: rect(0 0 0 0);
clip-path: inset(50%);
overflow: hidden;
padding: 0;
}
.switch input + label {
position: relative;
min-width: calc(calc(2.375rem * .8) * 2);
border-radius: calc(2.375rem * .8);
height: calc(2.375rem * .8);
line-height: calc(2.375rem * .8);
display: inline-block;
cursor: pointer;
outline: none;
user-select: none;
vertical-align: middle;
text-indent: calc(calc(calc(2.375rem * .8) * 2) + .5rem);
}
.switch input + label::before,
.switch input + label::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: calc(calc(2.375rem * .8) * 2);
bottom: 0;
display: block;
}
.switch input + label::before {
right: 0;
background-color: #dee2e6;
border-radius: calc(2.375rem * .8);
transition: 0.2s all;
}
.switch input + label::after {
top: 2px;
left: 2px;
width: calc(calc(2.375rem * .8) - calc(2px * 2));
height: calc(calc(2.375rem * .8) - calc(2px * 2));
border-radius: 50%;
background-color: white;
transition: 0.2s all;
}
.switch input:checked + label::before {
background-color: #08d;
}
.switch input:checked + label::after {
margin-left: calc(2.375rem * .8);
}
.switch input:focus + label::before {
outline: none;
box-shadow: 0 0 0 0.2rem rgba(0, 136, 221, 0.25);
}
.switch input:disabled + label {
color: #868e96;
cursor: not-allowed;
}
.switch input:disabled + label::before {
background-color: #e9ecef;
}
.switch.switch-sm {
font-size: 0.875rem;
}
.switch.switch-sm input + label {
min-width: calc(calc(1.9375rem * .8) * 2);
height: calc(1.9375rem * .8);
line-height: calc(1.9375rem * .8);
text-indent: calc(calc(calc(1.9375rem * .8) * 2) + .5rem);
}
.switch.switch-sm input + label::before {
width: calc(calc(1.9375rem * .8) * 2);
}
.switch.switch-sm input + label::after {
width: calc(calc(1.9375rem * .8) - calc(2px * 2));
height: calc(calc(1.9375rem * .8) - calc(2px * 2));
}
.switch.switch-sm input:checked + label::after {
margin-left: calc(1.9375rem * .8);
}
.switch.switch-lg {
font-size: 1.25rem;
}
.switch.switch-lg input + label {
min-width: calc(calc(3rem * .8) * 2);
height: calc(3rem * .8);
line-height: calc(3rem * .8);
text-indent: calc(calc(calc(3rem * .8) * 2) + .5rem);
}
.switch.switch-lg input + label::before {
width: calc(calc(3rem * .8) * 2);
}
.switch.switch-lg input + label::after {
width: calc(calc(3rem * .8) - calc(2px * 2));
height: calc(calc(3rem * .8) - calc(2px * 2));
}
.switch.switch-lg input:checked + label::after {
margin-left: calc(3rem * .8);
}
.switch + .switch {
margin-left: 1rem;
}
.dropdown-menu {
margin-top: .75rem;
}
.signature-pad {
background: aliceblue;
}
.pointer{
cursor: pointer;
}
/* Scrollbar design css*/
::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
background-color: #F5F5F5;
}
::-webkit-scrollbar
{
width: 6px;
background-color: #F5F5F5;
height: 6px;
}
::-webkit-scrollbar-thumb
{
background-color: #9ca3af;
}
</style>
<!-- Form additional css -->
@if(!empty($additional_css))
{!!$additional_css!!}
@endif
<!-- Application additional css -->
@if(!$is_download && !isset($nav))
@if(!empty($__additional_css))
{!!$__additional_css!!}
@endif
@endif

View File

@@ -1,12 +0,0 @@
<footer class="main-footer no-print">
<div class="float-right d-none d-sm-inline">
@lang('messages.application_copyright',[
'name' => config('app.name', 'Laravel'),
'version' => config('author.app_version'),
'year' => date('Y')
])
</div>
<!-- Default to the left -->
<!-- <strong>Copyright © 2014-2019 <a href="https://adminlte.io">AdminLTE.io</a>.</strong> All rights reserved. -->
</footer>

View File

@@ -1,474 +0,0 @@
@php
$is_download = isset($is_download) ? $is_download : false;
$form = !empty($form) ? $form : '';
@endphp
<!-- reCaptcha -->
<script src="//www.google.com/recaptcha/api.js?v={{$asset_version}}" async defer></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
document.write('<script src="//code.jquery.com/jquery-3.4.1.min.js?v={{$asset_version}}"></' + 'script>');
}
</script>
<!-- Bootstrap Js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js?v={{$asset_version}}"></script>
<script src="//stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js?v={{$asset_version}}"></script>
<script type="text/javascript" src="//cdn.jsdelivr.net/npm/moment@2.24.0/moment.min.js?v={{$asset_version}}"></script>
<script src="//cdn.jsdelivr.net/npm/toastr@2.1.4/build/toastr.min.js?v={{$asset_version}}"></script>
<script src="//cdn.jsdelivr.net/npm/jquery-validation@1.17.0/dist/jquery.validate.min.js?v={{$asset_version}}"></script>
<script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/rangeslider.js/2.3.2/rangeslider.min.js?v={{$asset_version}}"></script>
<script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.1.2/js/tempusdominus-bootstrap-4.min.js?v={{$asset_version}}"></script>
<script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/dropzone/5.5.1/min/dropzone.min.js?v={{$asset_version}}"></script>
<script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.10/js/bootstrap-select.min.js?v={{$asset_version}}"></script>
<script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/summernote/0.8.12/summernote-bs4.min.js?v={{$asset_version}}"></script>
<!-- Boostrap star rating -->
<script
src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-star-rating/4.0.6/js/star-rating.min.js?v={{$asset_version}}"
type="text/javascript"></script>
<!-- if you need to use a theme, then include the theme Js file -->
<script
src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-star-rating/4.0.6/themes/krajee-svg/theme.js?v={{$asset_version}}"></script>
<!-- optionally if you need translation for your language then include locale file as mentioned below -->
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-star-rating/4.0.6/js/locales/<lang>.js"></script> -->
<!-- signature pad (https://github.com/szimek/signature_pad)-->
<script src="https://cdn.jsdelivr.net/npm/signature_pad@2.3.2/dist/signature_pad.min.js?v={{$asset_version}}"></script>
<script src="{{asset('/plugins/countdowntimer/countdowntimer.min.js').'?v='.$asset_version}}"></script>
@if(!$is_download)
<!-- app js values -->
<script type="application/javascript">
var APP = {};
APP.APP_URL = "{{config('app.url')}}";
APP.CURRENCY_SYMBOL = "{{env('CURRENCY_SYMBOL')}}";
APP.ACELLE_MAIL_NAME = "{{config('constants.ACELLE_MAIL_NAME')}}";
APP.ACELLE_MAIL_ENABLED = false;
APP.APP_MEDIA_URL = "{{asset('/uploads/'.config('constants.doc_path').'/')}}";
APP.PDF_PLACEHOLDER = "{{asset('/img/pdf_placeholder.png')}}";
APP.MAX_UPLOAD_SIZE = "{{config('constants.max_upload_size')}}";
APP.MAX_PDF_UPLOAD_SIZE = "{{config('constants.pdf_upload_size')}}";
@if(!empty(config('constants.ACELLE_MAIL_NAME')) && !empty(config('constants.ACELLE_MAIL_API')))
APP.ACELLE_MAIL_ENABLED = true;
@endif
$.ajaxSetup({
beforeSend: function (jqXHR, settings) {
if (settings.url.indexOf('http') === -1) {
settings.url = APP.APP_URL + settings.url;
}
},
});
</script>
<script type="text/javascript">
//function to print page
function printElement(elem) {
var domClone = elem.cloneNode(true);
var printSection = document.getElementById("printSection");
if (!printSection) {
var printSection = document.createElement("div");
printSection.id = "printSection";
document.body.appendChild(printSection);
}
printSection.innerHTML = "";
printSection.appendChild(domClone);
window.print();
}
</script>
<script
src="//cdn.jsdelivr.net/npm/jquery-validation-unobtrusive@3.2.10/dist/jquery.validate.unobtrusive.min.js?v={{$asset_version}}"></script>
<script src="//cdn.jsdelivr.net/npm/sweetalert2@11?v={{$asset_version}}"></script>
<script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min.js?v={{$asset_version}}"></script>
<script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js?v={{$asset_version}}"></script>
<script type="text/javascript"
src="//cdn.datatables.net/v/bs4/jszip-2.5.0/dt-1.10.18/b-1.5.6/b-colvis-1.5.6/b-flash-1.5.6/b-html5-1.5.6/b-print-1.5.6/fc-3.3.1/fh-3.1.4/datatables.min.js?v={{$asset_version}}"></script>
<!-- ladda.js -->
<script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/Ladda/1.0.6/spin.min.js?v={{$asset_version}}"></script>
<script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/Ladda/1.0.6/ladda.min.js?v={{$asset_version}}"></script>
<!-- localization -->
<script src="{{ url('/js/lang.js') . '?v=' . $asset_version }}"></script>
<script src="{{ asset(mix('js/app.js')) }}" defer></script>
<!-- intro.js -->
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/intro.js/2.9.3/intro.min.js?v={{$asset_version}}"></script>
<script src="{{ asset('js/iframeResizercontentWindow.js') }}"></script>
@endif
<script type="text/javascript">
jQuery.validator.setDefaults({
errorPlacement: function (error, element) {
if (element.hasClass('select2') && element.parent().hasClass('input-group')) {
error.insertAfter(element.parent());
} else if (element.hasClass('select2')) {
error.insertAfter(element.next('span.select2-container'));
} else if (element.parent().hasClass('input-group')) {
error.insertAfter(element.parent());
} else if (element.parent().hasClass('multi-input')) {
error.insertAfter(element.closest('.multi-input'));
} else if (element.hasClass('summer_note')) {
error.insertAfter(element.next('.note-editor'));
} else if (element.hasClass('custom-control-input')) {
error.insertAfter(element.parent().parent().parent());
} else if (element.hasClass('star_rating')) {
error.insertAfter(element.parent().parent());
} else if (element.hasClass('switch')) {
error.insertAfter(element.parent().parent());
} else if (element.hasClass('signature')) {
error.insertAfter(element.parent());
} else {
error.insertAfter(element);
}
},
invalidHandler: function () {
toastr.error("{{ __('messages.some_error_in_input_field') }}");
}
});
$(document).ready(function () {
@if(!$is_download)
jQuery.extend($.fn.dataTable.defaults, {
fixedHeader: false,
aLengthMenu: [
[25, 50, 100, 200, 500, 1000, -1], [25, 50, 100, 200, 500, 1000, "{{__('messages.all')}}"]
],
iDisplayLength: 25,
dom: 'lfrtip',
"language": {
"emptyTable": "{{__('messages.emptyTable')}}",
"info": "{{__('messages.dt_info')}}",
"infoEmpty": "{{__('messages.infoEmpty')}}",
"infoFiltered": "{{__('messages.infoFiltered')}}",
"lengthMenu": "{{__('messages.lengthMenu')}}",
"loadingRecords": "{{__('messages.loadingRecords')}}",
"processing": "{{__('messages.processing')}}",
"search": "{{__('messages.search')}}",
"zeroRecords": "{{__('messages.zeroRecords')}}",
"paginate": {
"first": "{{__('messages.first')}}",
"last": "{{__('messages.last')}}",
"next": "{{__('messages.next')}}",
"previous": "{{__('messages.previous')}}"
},
buttons: {
copyTitle: "{{__('messages.copy_to_clipboard')}}",
copySuccess: {
_: "{{__('messages.copied_n_rows_to_clipboard')}}"
}
}
}
});
$.ajaxSetup({
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
});
@endif
$('button[type=reset]').on('click', function () {
$(this).parents('form').find('input').val('');
window.location.href = $(this).parents('form').attr('action');
});
});
function initialize_datetimepicker(element_name, element_date, start_date, end_date, date_format, time_format, disabled_days, enable_time_picker, time_picker_inline) {
var start = null;
var end = null;
var format = '';
var display_time = null;
var disabled_week_days = '';
var side_by_side = time_picker_inline;
if (disabled_days.length > 0) {
disabled_week_days = disabled_days.join(',');
}
//format
if (date_format != null) {
format = date_format.toUpperCase();
}
if (enable_time_picker) {
display_time = 'hh:mm A';
if (time_format == '24') {
display_time = 'HH:mm';
}
format += ' ' + display_time;
}
// start date
if (start_date == 'none') {
start = false;
} else if (start_date == 'today') {
start = moment();
} else if (start_date == 'current_year') {
start = moment().startOf('year');
} else if (start_date == 'current_month') {
start = moment().startOf('month');
}
//end date
if (end_date == 'none') {
end = false;
} else if (end_date == 'today') {
end = moment().add(0, 'd');
} else if (end_date == 'current_year') {
end = moment().endOf('year');
} else if (end_date == 'current_month') {
end = moment().endOf('month');
}
$('#' + element_name).datetimepicker({
icons: {
time: 'far fa-clock',
},
format: format,
minDate: start,
maxDate: end,
daysOfWeekDisabled: [disabled_week_days],
showClear: true,
ignoreReadonly: true,
sideBySide: side_by_side,
defaultDate: element_date.length ? moment(element_date, format) : ''
});
}
function initialize_rangeslider(element_name) {
$('#' + element_name).rangeslider({
polyfill: false,
//Callback function
onInit: function () {
},
// Callback function
onSlide: function (position, value) {
$('.' + element_name).text(value);
},
});
}
Dropzone.autoDiscover = false;
function initialize_dropzone(element_name, file_upload_msg, no_of_files_can_be_uploaded, max_file_size, allowed_file_type, url = null) {
var file_remove_url = "library/delete_file.php";
if (url == null) {
url = "{{ url('/file-upload')}}";
file_remove_url = "{{ url('/file-delete')}}";
}
var file_names = [];
if ($('input#' + element_name).val().length > 0) {
file_names.push($('input#' + element_name).val());
}
$('#' + element_name).dropzone({
paramName: "file",
addRemoveLinks: true,
url: url,
maxFilesize: max_file_size,
dictDefaultMessage: file_upload_msg,
maxFiles: no_of_files_can_be_uploaded,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
acceptedFiles: allowed_file_type,
init: function () {
//function to be use on editing a form, to display existing files
if ($('input#' + element_name).val().length > 0) {
window[`${element_name}_myDropzone`] = this;
var file_obj = {files: $('input#' + element_name).val()};
$.ajax({
method: "GET",
url: '/existing-file-display',
dataType: "json",
data: file_obj,
success: function (result) {
if (result.success) {
$.each(result.files, function (key, file) {
var mockFile = {name: file.name, uploaded_as: file.uploaded_as, size: file.size};
window[`${element_name}_myDropzone`].emit("addedfile", mockFile);
window[`${element_name}_myDropzone`].emit("thumbnail", mockFile, file.path);
window[`${element_name}_myDropzone`].emit("complete", mockFile);
});
}
}
});
}
//function to be use on removeing a file
this.on("removedfile", function (file) {
$.ajax({
url: file_remove_url,
data: {"file_name": file.uploaded_as},
type: "POST",
success: function (result) {
if (typeof (result) == 'string') {
var result = JSON.parse(result);
}
if (result.success == 1) {
toastr.success(result.msg);
var index = file_names.indexOf(file.uploaded_as);
if (index != -1) {
file_names.splice(index, 1);
}
var elementVal = $('input#' + element_name).val();
var oldVal = elementVal.split(",");
index = oldVal.indexOf(file.uploaded_as);
if (index != -1) {
oldVal.splice(index, 1);
}
var newVal = oldVal.join(",");
$('input#' + element_name).val(newVal);
} else {
toastr.error(result.msg);
}
}
});
});
},
success: function (file, response) {
if (typeof (response) == 'string') {
var response = JSON.parse(response);
}
if (response.success == true) {
toastr.success(response.msg);
file_names.push(response.path);
file.uploaded_as = response.path;
$('input#' + element_name).val(file_names); //store file_names
} else {
toastr.error(response.msg);
}
}
});
}
function initialize_text_editor(element_name, placeholder, height) {
$('#' + element_name).summernote({
placeholder: placeholder,
height: height
});
}
function initialize_star_rating(element_name) {
$("#" + element_name).rating({
theme: 'krajee-fas',
filledStar: '<i class="fas fa-star"></i>',
emptyStar: '<i class="fas fa-star"></i>'
});
}
function initialize_datetimepicker_for_form_scheduling() {
$('div#start_date_time').datetimepicker({
icons: {
time: 'far fa-clock',
},
format: 'YYYY-MM-DD hh:mm A',
minDate: moment(),
showClear: true,
ignoreReadonly: true
});
$('div#end_date_time').datetimepicker({
icons: {
time: 'far fa-clock',
},
format: 'YYYY-MM-DD hh:mm A',
minDate: moment(),
showClear: true,
ignoreReadonly: true
});
}
function initialize_signature_pad(element) {
var signaturePad = element;
var canvas = document.getElementById(element);
signaturePad = new SignaturePad(canvas, {
onEnd: function (event) {
var element = $(this)[0]._canvas.id
var signature = $(this)[0].toDataURL();
$('#output_' + element).val(signature);
}
});
if ($('#output_' + element).val().length > 0) {
signaturePad.fromDataURL($('#output_' + element).val());
}
$(document).on('click', '#clear_' + element, function () {
signaturePad.clear();
$('#output_' + $(this).data('name')).val('');
});
$(document).on('click', '#undo_' + element, function () {
var data = signaturePad.toData();
if (data) {
data.pop(); // remove the last dot or line
signaturePad.fromData(data); //draw signature from array of data
if (data.length > 0) {
var signature = signaturePad.toDataURL();
$('#output_' + $(this).data('name')).val(signature);
} else {
$('#output_' + $(this).data('name')).val('');
}
}
});
}
function initializeToastrSettingsForForm(position) {
var toastr_position = 'toast-top-right';
if (position) {
toastr_position = position;
}
toastr.options = {
"positionClass": toastr_position
}
}
function initialize_countdowntimer(element) {
$("#" + element.name).countdowntimer({
hours: element.hours,
minutes: element.minutes,
seconds: element.seconds,
size: element.size,
labelsFormat: element.labels_format,
borderColor: element.border_color,
fontColor: element.font_color,
backgroundColor: element.bg_color,
timeSeparator: element.time_separator,
displayFormat: element.display_format
});
}
</script>
<!-- Application additional js -->
@if(!$is_download && !isset($nav))
@if(!empty($__additional_js))
{!!$__additional_js!!}
@endif
@endif

View File

@@ -1,17 +0,0 @@
@if (session('status') && isset(session('status')['success']))
@if(session('status')['success'] == 1)
<div class="alert alert-success" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
{!!session('status')['msg']!!}
</div>
@else
<div class="alert alert-danger" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
{!!session('status')['msg']!!}
</div>
@endif
@endif

View File

@@ -1,143 +0,0 @@
<!-- Navbar -->
<nav class="main-header navbar navbar-expand navbar-light @guest navbar-laravel @else navbar-white @endguest">
<div class="container">
@auth
<a href="{{action([\App\Http\Controllers\HomeController::class, 'index'])}}" class="navbar-brand">
<!-- <img src="dist/img/AdminLTELogo.png" alt="AdminLTE Logo" class="brand-image img-circle elevation-3"
style="opacity: .8"> -->
<span class="brand-text font-weight-light">{{ config('app.name', 'Laravel') }}</span>
</a>
<ul class="navbar-nav">
<li class="nav-item d-none d-sm-inline-block">
<a class="nav-link" href="{{ action([\App\Http\Controllers\HomeController::class, 'index']) }}">
<i class="fas fa-home"></i>
{{ __('messages.home') }}</a>
</li>
</ul>
@endauth
<!-- Right Side Of Navbar -->
<ul class="navbar-nav ml-auto">
<!-- Authentication Links -->
@guest
<li class="nav-item d-none d-sm-inline-block">
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
</li>
@if (Route::has('register'))
<li class="nav-item">
<a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
</li>
@endif
@else
<!-- superadmin menu -->
@if(auth()->user()->hasRole([\App\Enums\User\RoleEnum::SUPERVISOR->value, \App\Enums\User\RoleEnum::ADMIN->value], 'web'))
<li class="nav-item dropdown">
<a id="superadminDropdown" href="#" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false" class="nav-link dropdown-toggle">
<i class="fas fa-universal-access"></i>
@lang('messages.' . auth()->user()->roles->first()->name)
</a>
<ul aria-labelledby="superadminDropdown" class="dropdown-menu border-0 shadow">
<li>
@if($__enable_saas)
<a href="{{action([\App\Http\Controllers\Superadmin\PackageController::class, 'index'])}}"
class="dropdown-item">
<i class="fas fa-money-check"></i>
@lang('messages.packages')
</a>
<a href="{{action([\App\Http\Controllers\Superadmin\PackageSubscriptionsController::class, 'index'])}}"
class="dropdown-item">
<i class="fas fa-sync"></i>
@lang('messages.package_subscription')
</a>
@endif
<a href="{{action([\App\Http\Controllers\Superadmin\ManageUsersController::class, 'index'])}}"
class="dropdown-item">
<i class="fas fa-users"></i>
@lang('messages.users')
</a>
@if(auth()->user()->hasRole(\App\Enums\User\RoleEnum::SUPERVISOR->value))
<a class="dropdown-item"
href="{{action([\App\Http\Controllers\Superadmin\SuperadminSettingsController::class, 'create'])}}">
<i class="fa fa-cogs"></i>
@lang('messages.system_settings')
</a>
@endif
</li>
</ul>
</li>
@endif
<!-- /superadmin menu -->
<li class="nav-item dropdown">
<a id="navbarDropdown" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"
class="nav-link dropdown-toggle">
<i class="fas fa-user-tie"></i>
{{ ucfirst(Auth::user()->name) }}
</a>
<ul aria-labelledby="navbarDropdown" class="dropdown-menu border-0 shadow">
<li>
<a class="dropdown-item"
href="{{action([\App\Http\Controllers\ManageProfileController::class, 'getProfile'])}}">
<i class="fas fa-user-edit"></i>
@lang('messages.profile')
</a>
@if($__enable_saas)
<a class="dropdown-item"
href="{{action([\App\Http\Controllers\SubscriptionsController::class, 'index'])}}">
<i class="fas fa-sync"></i>
@lang('messages.my_subscription')
</a>
@endif
<a class="dropdown-item"
href="{{action([\App\Http\Controllers\ManageSettingsController::class, 'getSettings'])}}">
<i class="fas fa-user-cog"></i>
@lang('messages.my_settings')
</a>
<a class="dropdown-item"
href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
<i class="fas fa-sign-out-alt"></i>
{{ __('Logout') }}
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
@csrf
</form>
</li>
</ul>
</li>
@endguest
</ul>
<!-- Left navbar links -->
<!-- <ul class="navbar-nav">
<li class="nav-item">
</li>
<li class="nav-item d-none d-sm-inline-block">
<a href="index3.html" class="nav-link">Home</a>
</li>
<li class="nav-item d-none d-sm-inline-block">
<a href="#" class="nav-link">Contact</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Help
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="#">FAQ</a>
<a class="dropdown-item" href="#">Support</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Contact</a>
</div>
</li>
</ul> -->
</div>
</nav>
<!-- /.navbar -->