🆙 Final fix delete storage link to fix news_images and logs 🆙
@@ -1,22 +0,0 @@
|
||||
@props(['icon' => '', 'classes' => ''])
|
||||
|
||||
<div
|
||||
class="w-full flex flex-col gap-y-4 rounded overflow-hidden bg-white pb-3 shadow {{ $classes }}">
|
||||
<div class="flex gap-x-2 border-b bg-gray-50 p-3">
|
||||
<div
|
||||
class="max-w-[50px] max-h-[50px] min-w-[50px] min-h-[50px] rounded-full relative flex items-center justify-center {{ $icon }}">
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col justify-center text-sm">
|
||||
<p class="font-semibold text-black">{{ $title }}</p>
|
||||
|
||||
@if(isset($underTitle))
|
||||
<p>{{ $underTitle }}</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="px-3 text-[14px]">
|
||||
{{ $slot }}
|
||||
</section>
|
||||
</div>
|
||||
@@ -1,11 +0,0 @@
|
||||
@props(['primaryColor', 'secondaryColor'])
|
||||
|
||||
<div class="flex h-[45px] col-span-4 sm:col-span-2 md:col-span-1">
|
||||
<div class="w-1/3 {{ $secondaryColor }} rounded-l flex items-center justify-center">
|
||||
{{ $icon }}
|
||||
</div>
|
||||
|
||||
<div class="p-2 rounded rounded-l-none {{ $primaryColor }} w-2/3 font-semibold flex justify-center items-center">
|
||||
{{ $slot }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,4 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 3h1.386c.51 0 .955.343 1.087.835l.383 1.437M7.5 14.25a3 3 0 0 0-3 3h15.75m-12.75-3h11.218c1.121-2.3 2.1-4.684 2.924-7.138a60.114 60.114 0 0 0-16.536-1.84M7.5 14.25 5.106 5.272M6 20.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Zm12.75 0a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 478 B |
@@ -1,4 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"
|
||||
stroke-width="2">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 218 B |
@@ -1,5 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-6 w-6">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z" />
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 487 B |
@@ -1,5 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
|
||||
class="h-5 w-5">
|
||||
<path stroke-linecap="round" stroke-linejoin="round"
|
||||
d="M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 363 B |
@@ -1,3 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-6 w-6">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M21 11.25v8.25a1.5 1.5 0 0 1-1.5 1.5H5.25a1.5 1.5 0 0 1-1.5-1.5v-8.25M12 4.875A2.625 2.625 0 1 0 9.375 7.5H12m0-2.625V7.5m0-2.625A2.625 2.625 0 1 1 14.625 7.5H12m0 0V21m-8.625-9.75h18c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125h-18c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 518 B |
@@ -1,6 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="h-5 w-5">
|
||||
<path
|
||||
d="M11.47 3.84a.75.75 0 011.06 0l8.69 8.69a.75.75 0 101.06-1.06l-8.689-8.69a2.25 2.25 0 00-3.182 0l-8.69 8.69a.75.75 0 001.061 1.06l8.69-8.69z" />
|
||||
<path
|
||||
d="M12 5.432l8.159 8.159c.03.03.06.058.091.086v6.198c0 1.035-.84 1.875-1.875 1.875H15a.75.75 0 01-.75-.75v-4.5a.75.75 0 00-.75-.75h-3a.75.75 0 00-.75.75V21a.75.75 0 01-.75.75H5.625a1.875 1.875 0 01-1.875-1.875v-6.198a2.29 2.29 0 00.091-.086L12 5.43z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 541 B |
@@ -1,4 +0,0 @@
|
||||
<svg {{ $attributes }} fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"></path>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 300 B |
@@ -1,5 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
|
||||
class="h-5 w-5">
|
||||
<path stroke-linecap="round" stroke-linejoin="round"
|
||||
d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 377 B |
@@ -1,5 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="h-4 w-4">
|
||||
<path fill-rule="evenodd"
|
||||
d="M7.5 6a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM3.751 20.105a8.25 8.25 0 0116.498 0 .75.75 0 01-.437.695A18.683 18.683 0 0112 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 01-.437-.695z"
|
||||
clip-rule="evenodd" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 354 B |
@@ -1,230 +0,0 @@
|
||||
<x-dynamic-component
|
||||
:component="$getFieldWrapperView()"
|
||||
:id="$getId()"
|
||||
:label="$getLabel()"
|
||||
:label-sr-only="$isLabelHidden()"
|
||||
:helper-text="$getHelperText()"
|
||||
:hint="$getHint()"
|
||||
:hint-icon="$getHintIcon()"
|
||||
:required="$isRequired()"
|
||||
:state-path="$getStatePath()"
|
||||
class="relative z-0"
|
||||
>
|
||||
<div x-data="{ state: $wire.{{ $applyStateBindingModifiers('entangle(\'' . $getStatePath() . '\')') }}, initialized: false, editorChanged: false }"
|
||||
x-init="(() => {
|
||||
window.addEventListener('DOMContentLoaded', () => initCKEditor())
|
||||
$nextTick(() => initCKEditor())
|
||||
|
||||
const initCKEditor = () => {
|
||||
if(initialized) return
|
||||
|
||||
if(typeof CKEDITOR === undefined || !$refs.ckeditor) {
|
||||
console.error('[CKEDITOR] not found or [CKEDITOR element] not found')
|
||||
return
|
||||
}
|
||||
|
||||
CKEDITOR.ClassicEditor.create($refs.ckeditor, {
|
||||
toolbar: {
|
||||
items: [
|
||||
'exportPDF',
|
||||
'exportWord',
|
||||
'|',
|
||||
'findAndReplace',
|
||||
'selectAll',
|
||||
'heading',
|
||||
'|',
|
||||
'bold',
|
||||
'italic',
|
||||
'strikethrough',
|
||||
'underline',
|
||||
'code',
|
||||
'subscript',
|
||||
'superscript',
|
||||
'removeFormat',
|
||||
'|',
|
||||
'bulletedList',
|
||||
'numberedList',
|
||||
'outdent',
|
||||
'indent',
|
||||
'|',
|
||||
'undo',
|
||||
'redo',
|
||||
'fontSize',
|
||||
'fontFamily',
|
||||
'fontColor',
|
||||
'fontBackgroundColor',
|
||||
'highlight',
|
||||
'|',
|
||||
'alignment',
|
||||
'link',
|
||||
'insertImage',
|
||||
'blockQuote',
|
||||
'insertTable',
|
||||
'mediaEmbed',
|
||||
'codeBlock',
|
||||
'htmlEmbed',
|
||||
'specialCharacters',
|
||||
'horizontalLine',
|
||||
'pageBreak',
|
||||
'|',
|
||||
'sourceEditing',
|
||||
],
|
||||
shouldNotGroupWhenFull: true,
|
||||
},
|
||||
list: {
|
||||
properties: {
|
||||
styles: true,
|
||||
startIndex: true,
|
||||
reversed: true,
|
||||
},
|
||||
},
|
||||
heading: {
|
||||
options: [
|
||||
{
|
||||
model: 'paragraph',
|
||||
title: 'Paragraph',
|
||||
class: 'ck-heading_paragraph',
|
||||
},
|
||||
{
|
||||
model: 'heading1',
|
||||
view: 'h1',
|
||||
title: 'Heading 1',
|
||||
class: 'ck-heading_heading1',
|
||||
},
|
||||
{
|
||||
model: 'heading2',
|
||||
view: 'h2',
|
||||
title: 'Heading 2',
|
||||
class: 'ck-heading_heading2',
|
||||
},
|
||||
{
|
||||
model: 'heading3',
|
||||
view: 'h3',
|
||||
title: 'Heading 3',
|
||||
class: 'ck-heading_heading3',
|
||||
},
|
||||
{
|
||||
model: 'heading4',
|
||||
view: 'h4',
|
||||
title: 'Heading 4',
|
||||
class: 'ck-heading_heading4',
|
||||
},
|
||||
{
|
||||
model: 'heading5',
|
||||
view: 'h5',
|
||||
title: 'Heading 5',
|
||||
class: 'ck-heading_heading5',
|
||||
},
|
||||
{
|
||||
model: 'heading6',
|
||||
view: 'h6',
|
||||
title: 'Heading 6',
|
||||
class: 'ck-heading_heading6',
|
||||
},
|
||||
],
|
||||
},
|
||||
placeholder: '. . .',
|
||||
fontFamily: {
|
||||
options: [
|
||||
'default',
|
||||
'Arial, Helvetica, sans-serif',
|
||||
'Courier New, Courier, monospace',
|
||||
'Georgia, serif',
|
||||
'Lucida Sans Unicode, Lucida Grande, sans-serif',
|
||||
'Tahoma, Geneva, sans-serif',
|
||||
'Times New Roman, Times, serif',
|
||||
'Trebuchet MS, Helvetica, sans-serif',
|
||||
'Verdana, Geneva, sans-serif',
|
||||
'Montserrat, sans-serif'
|
||||
],
|
||||
supportAllValues: true,
|
||||
},
|
||||
htmlSupport: {
|
||||
allow: [
|
||||
{
|
||||
name: /.*/,
|
||||
attributes: true,
|
||||
classes: true,
|
||||
styles: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
htmlEmbed: {
|
||||
showPreviews: true,
|
||||
},
|
||||
link: {
|
||||
decorators: {
|
||||
addTargetToExternalLinks: true,
|
||||
defaultProtocol: 'https://',
|
||||
toggleDownloadable: {
|
||||
mode: 'manual',
|
||||
label: 'Downloadable',
|
||||
attributes: {
|
||||
download: 'file',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
removePlugins: [
|
||||
'CKBox',
|
||||
'CKFinder',
|
||||
'EasyImage',
|
||||
'RealTimeCollaborativeComments',
|
||||
'RealTimeCollaborativeTrackChanges',
|
||||
'RealTimeCollaborativeRevisionHistory',
|
||||
'PresenceList',
|
||||
'Comments',
|
||||
'TrackChanges',
|
||||
'TrackChangesData',
|
||||
'RevisionHistory',
|
||||
'Pagination',
|
||||
'WProofreader',
|
||||
'MathType',
|
||||
],
|
||||
}).then(editor => {
|
||||
if(state) editor.setData(state)
|
||||
|
||||
editor.model.document.on('change:data', () => { editorChanged = true })
|
||||
|
||||
editor.ui.focusTracker.on('change:isFocused', (evt, name, isFocused) => {
|
||||
if(isFocused || !editorChanged) return
|
||||
|
||||
state = editor.getData()
|
||||
editorChanged = false
|
||||
})
|
||||
});
|
||||
|
||||
initialized = true
|
||||
}
|
||||
})()"
|
||||
x-cloak
|
||||
wire:ignore
|
||||
>
|
||||
@unless($isDisabled())
|
||||
<input
|
||||
id="ck-editor-{{ $getId() }}"
|
||||
type="hidden"
|
||||
x-ref="ckeditor"
|
||||
placeholder="{{ $getPlaceholder() }}"
|
||||
>
|
||||
@else
|
||||
<div
|
||||
x-html="state"
|
||||
style="font-size: 13px"
|
||||
@class([
|
||||
'prose ck-content block w-full max-w-none rounded-lg border border-gray-300 bg-white p-3 opacity-70 shadow-sm transition duration-75',
|
||||
'dark:prose-invert dark:bg-gray-700 dark:border-gray-600 dark:text-white' => true,
|
||||
])
|
||||
></div>
|
||||
@endunless
|
||||
</div>
|
||||
</x-dynamic-component>
|
||||
|
||||
@once
|
||||
@push('scripts')
|
||||
<script src="https://cdn.ckeditor.com/ckeditor5/35.4.0/super-build/ckeditor.js"></script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet">
|
||||
@endpush
|
||||
@endonce
|
||||
@@ -1,57 +0,0 @@
|
||||
@php
|
||||
use Filament\Infolists\Components\IconEntry\IconEntrySize;
|
||||
@endphp
|
||||
|
||||
<x-dynamic-component :component="$getEntryWrapperView()" :entry="$entry">
|
||||
<div
|
||||
{{
|
||||
$attributes
|
||||
->merge($getExtraAttributes(), escape: false)
|
||||
->class([
|
||||
'absolute flex items-center justify-center w-6 h-6 bg-gray-200 rounded-full -start-3 ring-4 ring-white dark:bg-gray-700 dark:ring-gray-900',
|
||||
])
|
||||
}}
|
||||
>
|
||||
@if (count($arrayState = \Illuminate\Support\Arr::wrap($getState())))
|
||||
@foreach ($arrayState as $state)
|
||||
@if ($icon = $getIcon($state))
|
||||
@php
|
||||
$color = $getColor($state) ?? 'gray';
|
||||
$size = $getSize($state) ?? IconEntrySize::Large;
|
||||
@endphp
|
||||
|
||||
<x-filament::icon
|
||||
:icon="$icon"
|
||||
@class([
|
||||
'fi-in-icon-item',
|
||||
match ($size) {
|
||||
IconEntrySize::ExtraSmall, 'xs' => 'fi-in-icon-item-size-xs h-3 w-3',
|
||||
IconEntrySize::Small, 'sm' => 'fi-in-icon-item-size-sm h-4 w-4',
|
||||
IconEntrySize::Medium, 'md' => 'fi-in-icon-item-size-md h-5 w-5',
|
||||
IconEntrySize::Large, 'lg' => 'fi-in-icon-item-size-lg h-6 w-6',
|
||||
IconEntrySize::ExtraLarge, 'xl' => 'fi-in-icon-item-size-xl h-7 w-7',
|
||||
IconEntrySize::TwoExtraLarge, IconEntrySize::ExtraExtraLarge, '2xl' => 'fi-in-icon-item-size-2xl h-8 w-8',
|
||||
default => $size,
|
||||
},
|
||||
match ($color) {
|
||||
'gray' => 'fi-color-gray text-gray-400 dark:text-gray-500',
|
||||
default => 'fi-color-custom text-custom-500 dark:text-custom-400',
|
||||
},
|
||||
])
|
||||
@style([
|
||||
\Filament\Support\get_color_css_variables(
|
||||
$color,
|
||||
shades: [400, 500],
|
||||
alias: 'infolists::components.icon-entry.item',
|
||||
) => $color !== 'gray',
|
||||
])
|
||||
/>
|
||||
@endif
|
||||
@endforeach
|
||||
@elseif (($placeholder = $getPlaceholder()) !== null)
|
||||
<div class="text-gray-500 text-sm p-4">
|
||||
{{ $placeholder }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</x-dynamic-component>
|
||||
@@ -1,7 +0,0 @@
|
||||
<x-dynamic-component :component="$getEntryWrapperView()" :entry="$entry">
|
||||
<div>
|
||||
|
||||
{{ $getModifiedState() ?? (!is_array($getState()) ? $getState() ?? $getPlaceholder() : null) }}
|
||||
|
||||
</div>
|
||||
</x-dynamic-component>
|
||||
@@ -1,53 +0,0 @@
|
||||
@php
|
||||
$isContained = $isContained();
|
||||
@endphp
|
||||
<div x-data="{}"
|
||||
x-load-css="[@js(\Filament\Support\Facades\FilamentAsset::getStyleHref('activitylog-styles', package: 'rmsramos/activitylog'))]"
|
||||
>
|
||||
</div>
|
||||
|
||||
<x-dynamic-component :component="$getEntryWrapperView()" :entry="$entry">
|
||||
<div
|
||||
{{
|
||||
$attributes
|
||||
->merge([
|
||||
'id' => $getId(),
|
||||
], escape: false)
|
||||
->merge($getExtraAttributes(), escape: false)
|
||||
->class([
|
||||
'fi-in-repeatable',
|
||||
'fi-contained' => $isContained,
|
||||
])
|
||||
}}
|
||||
>
|
||||
@if (count($childComponentContainers = $getChildComponentContainers()))
|
||||
<ol class="relative border-gray-200 border-s dark:border-gray-700">
|
||||
<x-filament-schemas::grid
|
||||
:default="$getGridColumns('default')"
|
||||
:sm="$getGridColumns('sm')"
|
||||
:md="$getGridColumns('md')"
|
||||
:lg="$getGridColumns('lg')"
|
||||
:xl="$getGridColumns('xl')"
|
||||
:two-xl="$getGridColumns('2xl')"
|
||||
class="gap-2"
|
||||
>
|
||||
@foreach ($childComponentContainers as $container)
|
||||
<li
|
||||
@class([
|
||||
'mb-4 ms-6',
|
||||
'fi-in-repeatable-item block',
|
||||
'rounded-xl bg-white p-4 shadow-sm ring-1 ring-gray-950/5 dark:bg-white/5 dark:ring-white/10' => $isContained,
|
||||
])
|
||||
>
|
||||
{{ $container }}
|
||||
</li>
|
||||
@endforeach
|
||||
</x-filament-schemas::grid>
|
||||
</ol>
|
||||
@elseif (($placeholder = $getPlaceholder()) !== null)
|
||||
<div class="text-gray-500 text-sm p-4">
|
||||
{{ $placeholder }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</x-dynamic-component>
|
||||
@@ -1,13 +0,0 @@
|
||||
<x-dynamic-component :component="$getEntryWrapperView()" :entry="$entry">
|
||||
<div
|
||||
{{
|
||||
$attributes
|
||||
->merge($getExtraAttributes(), escape: false)
|
||||
->class(['fi-in-text w-full -mt-6'])
|
||||
}}
|
||||
>
|
||||
|
||||
{{ $getModifiedState() }}
|
||||
|
||||
</div>
|
||||
</x-dynamic-component>
|
||||
@@ -1,3 +0,0 @@
|
||||
<x-filament-panels::page>
|
||||
{{ $this->form }}
|
||||
</x-filament-panels::page>
|
||||
@@ -1,93 +0,0 @@
|
||||
<x-filament::page>
|
||||
<div class="flex items-center justify-between gap-2">
|
||||
<div class="w-full mr-2">
|
||||
{{ $this->search }}
|
||||
</div>
|
||||
@if(config('filament-log-manager.allow_delete'))
|
||||
<div class="w-auto ml-2">
|
||||
<x-filament::button
|
||||
x-on:click="window.dispatchEvent(new CustomEvent('open-modal', { detail: { id: 'filament-log-manager-delete-log-file-modal' } }));"
|
||||
:disabled="is_null($this->logFile)"
|
||||
type="button"
|
||||
color="danger"
|
||||
>
|
||||
{{ __('filament-log-manager::translations.delete') }}
|
||||
</x-filament::button>
|
||||
</div>
|
||||
@endif
|
||||
@if(config('filament-log-manager.allow_download'))
|
||||
<div class="w-auto ml-2">
|
||||
<x-filament::button
|
||||
wire:click="download"
|
||||
:disabled="is_null($this->logFile)"
|
||||
type="button"
|
||||
color="primary"
|
||||
>
|
||||
{{ __('filament-log-manager::translations.download') }}
|
||||
</x-filament::button>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<hr class="dark:border-gray-700">
|
||||
<div>
|
||||
<div>
|
||||
<div x-data="{ isCardOpen: null }" class="flex flex-col">
|
||||
@forelse($this->getLogs() as $key => $log)
|
||||
<div
|
||||
class="rounded-xl relative mb-2 py-3 px-3 bg-{{ $log['level_class'] }}"
|
||||
:class="{'no-bottom-radius mb-0': isCardOpen == {{$key}}}"
|
||||
>
|
||||
<a
|
||||
@click="isCardOpen = isCardOpen == {{$key}} ? null : {{$key}} "
|
||||
style="cursor: pointer;"
|
||||
class="block overflow-hidden rounded-t-xl text-white"
|
||||
>
|
||||
<span>[{{ $log['date'] }}]</span>
|
||||
{{ Str::limit($log['text'], 100) }}
|
||||
</a>
|
||||
</div>
|
||||
<div x-show="isCardOpen=={{$key}}" class="mb-2 px-4 py-4 bg-white dark:bg-gray-800 text-gray-900 dark:text-white rounded-xl no-top-radius">
|
||||
<div class="space-y-2">
|
||||
<p>{{$log['text']}}</p>
|
||||
@if(!empty($log['stack']))
|
||||
<div class="bg-gray-100 dark:bg-gray-900 !mt-4 p-4 text-sm opacity-40">
|
||||
<pre style="overflow-x: scroll;"><code>{{ trim($log['stack']) }}</code></pre>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<h3 class="text-center">{{ __('filament-log-manager::translations.no_logs') }}</h3>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<x-filament::modal id="filament-log-manager-delete-log-file-modal">
|
||||
<x-slot name="heading">
|
||||
{{ __('filament-log-manager::translations.modal_delete_heading') }}
|
||||
</x-slot>
|
||||
<x-slot name="description">
|
||||
{{ __('filament-log-manager::translations.modal_delete_subheading') }}
|
||||
</x-slot>
|
||||
<x-slot name="footerActions">
|
||||
<x-filament::button
|
||||
type="button"
|
||||
x-on:click="isOpen = false"
|
||||
color="secondary"
|
||||
outlined="true"
|
||||
class="filament-page-modal-button-action"
|
||||
>
|
||||
{{ __('filament-log-manager::translations.modal_delete_action_cancel') }}
|
||||
</x-filament::button>
|
||||
<x-filament::button
|
||||
wire:click="delete"
|
||||
x-on:click="isOpen = false"
|
||||
type="button"
|
||||
color="danger"
|
||||
class="filament-page-modal-button-action"
|
||||
>
|
||||
{{ __('filament-log-manager::translations.modal_delete_action_confirm') }}
|
||||
</x-filament::button>
|
||||
</x-slot>
|
||||
</x-filament::modal>
|
||||
</x-filament::page>
|
||||
@@ -1,14 +0,0 @@
|
||||
<x-filament::page>
|
||||
<div class="space-y-4">
|
||||
<h2 class="text-lg font-bold">Upload a New Badge</h2>
|
||||
|
||||
{{-- Render the form --}}
|
||||
<form wire:submit.prevent="save" class="space-y-4">
|
||||
{{ $this->form }}
|
||||
|
||||
<x-filament::button type="submit">
|
||||
Upload Badge
|
||||
</x-filament::button>
|
||||
</form>
|
||||
</div>
|
||||
</x-filament::page>
|
||||
@@ -1,19 +0,0 @@
|
||||
<div class="my-2 text-sm tracking-tight">
|
||||
@foreach($getState() as $key => $value)
|
||||
<span class="inline-block p-1 mr-1 font-medium text-gray-700 whitespace-normal rounded-md dark:text-gray-200 bg-gray-500/10">
|
||||
{{ $key }}
|
||||
</span>
|
||||
|
||||
@if(is_array($value))
|
||||
<span class="whitespace-normal divide-x divide-gray-200 divide-solid dark:divide-gray-700">
|
||||
@foreach ($value as $nestedKey => $nestedValue)
|
||||
<span class="inline-block mr-1">
|
||||
{{ $nestedKey }}: {{ is_array($nestedValue) ? json_encode($nestedValue) : $nestedValue }}
|
||||
</span>
|
||||
@endforeach
|
||||
</span>
|
||||
@else
|
||||
<span class="whitespace-normal">{{ $value }}</span>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
@@ -1,3 +0,0 @@
|
||||
<div>
|
||||
<img loading="lazy" src="{{ $getBadgePath() }}" alt="{{ $getBadgeName() }}" />
|
||||
</div>
|
||||
@@ -1,3 +0,0 @@
|
||||
<div class="pl-3" style="image-rendering: pixelated">
|
||||
<img loading="lazy" src="{{ $column->getAvatarUrl() }}" alt="{{ $column->getRecord()->name }}" />
|
||||
</div>
|
||||
@@ -1,5 +0,0 @@
|
||||
<x-filament-widgets::widget>
|
||||
<x-filament::section>
|
||||
{{-- Widget content --}}
|
||||
</x-filament::section>
|
||||
</x-filament-widgets::widget>
|
||||
@@ -1,5 +0,0 @@
|
||||
<x-filament-widgets::widget>
|
||||
<x-filament::section>
|
||||
{{-- Widget content --}}
|
||||
</x-filament::section>
|
||||
</x-filament-widgets::widget>
|
||||
@@ -1,70 +0,0 @@
|
||||
<x-installation-layout>
|
||||
<x-content.installation-content-section icon="hotel-icon" classes="border">
|
||||
<x-slot:title>
|
||||
{{ __('Welcome to Atom CMS') }}
|
||||
</x-slot:title>
|
||||
|
||||
<x-slot:under-title>
|
||||
{{ __('We are delighted of having you trying Atom CMS') }}
|
||||
</x-slot:under-title>
|
||||
|
||||
<div class="space-y-3">
|
||||
<p>
|
||||
{{ __('Hello there! We are truly grateful that you have chosen Atom CMS for your hotel.') }}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{{ __('Atom CMS is built with the community in mind, meaning we highly value community input, rather than only bringing our own ideas & vision to the CMS we try our very best to implement suggestions made by our beloved community. We want everyone to be able to contribute or customise Atom CMS to their needs without having a bachelor in programming.') }}
|
||||
</p>
|
||||
|
||||
<p>{{ __('Atom CMS sole purpose is to empower hotel owners like you. We want you to be able to run your hotel with ease. Our user-friendly interface, robust features, and helpful community are here to ensure that your experience with Atom CMS is nothing short of exceptional!') }}</p>
|
||||
|
||||
<p>
|
||||
{{ __('As you dive into Atom CMS, we encourage you to explore the extensive range of features we have curated to help you bring your vision to life. From customizable templates to seamless integrations with clients like Nitro, we will have you set up in no time.') }}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{!! __('To get started, we recommend checking out our <a href=":documentation_link" target="_blank" class="font-semibold underline">comprehensive documentation</a>, which will guide you through the initial setup and help you make the most of your Atom CMS experience.', ['documentation_link' => 'https://github.com/atom-retros/atomcms/wiki']) !!}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{!! __('And remember, please <a href=":discord_link" target="_blank" class="font-semibold underline">join our Discord</a>. If you have any questions or need assistance, please do not hesitate to reach out. We are here to help you every step of the way.', ['discord_link' => 'https://discord.gg/pP6HyZedAj']) !!}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{{ __('Once again, thank you for choosing Atom CMS, and we cannot wait to see the incredible project you will create.') }}
|
||||
</p>
|
||||
|
||||
<p class="font-semibold italic">
|
||||
{{ __('With everything being said we just want to wish you a warm welcome to the Atom CMS family!') }}
|
||||
</p>
|
||||
<hr>
|
||||
|
||||
<div>
|
||||
{{ __('To avoid any third-party party abuse, please provide the installation code, which can be found in your database inside the "website_installation" table under the column "installation_key".') }}
|
||||
</div>
|
||||
|
||||
<form action="{{ route('installation.start-installation') }}" method="POST">
|
||||
@csrf
|
||||
|
||||
<label class="block font-semibold text-gray-700" for="installation_key">
|
||||
{{ __('Installation key') }}
|
||||
</label>
|
||||
|
||||
<input
|
||||
class="focus:ring-0 border-4 border-gray-200 rounded focus:border-[#eeb425] w-full @error('installation_key')border-red-600 ring-red-500 @enderror"
|
||||
id="installation_key" type="text" name="installation_key" placeholder="{{ __('Enter your installation key') }}" autofocus required autocomplete="false">
|
||||
|
||||
@error('installation_key')
|
||||
<p class="mt-1 text-xs italic text-red-500">
|
||||
{{ $message }}
|
||||
</p>
|
||||
@enderror
|
||||
|
||||
<x-form.secondary-button classes="mt-3">
|
||||
{{ __('Start the setup') }}
|
||||
</x-form.secondary-button>
|
||||
</form>
|
||||
</div>
|
||||
</x-content.installation-content-section>
|
||||
</x-installation-layout>
|
||||
@@ -1,49 +0,0 @@
|
||||
<x-installation-layout>
|
||||
<x-content.installation-content-section icon="hotel-icon" classes="border">
|
||||
<x-slot:title>
|
||||
{{ __('Welcome to Atom CMS') }}
|
||||
</x-slot:title>
|
||||
|
||||
<x-slot:under-title>
|
||||
{{ __('We are delighted of having you trying Atom CMS') }}
|
||||
</x-slot:under-title>
|
||||
|
||||
<form action="{{ route('installation.save-step') }}" method="POST" class="space-y-3">
|
||||
@csrf
|
||||
|
||||
@foreach($settings as $setting)
|
||||
<div>
|
||||
<label class="block font-semibold text-gray-700" for="{{ $setting->key }}">
|
||||
{{ Str::replace('_', ' ', Str::ucfirst($setting->key)) }}
|
||||
</label>
|
||||
|
||||
<input
|
||||
class="focus:ring-0 border-4 border-gray-200 rounded focus:border-[#eeb425] w-full @error($setting->key)border-red-600 ring-red-500 @enderror"
|
||||
id="{{ $setting->key }}" type="text" name="{{ $setting->key }}" value="{{ $setting->value }}" placeholder="{{ $setting->key }}" required>
|
||||
|
||||
@error($setting->key)
|
||||
<p class="mt-1 text-xs italic text-red-500">
|
||||
{{ $message }}
|
||||
</p>
|
||||
@enderror
|
||||
|
||||
<small>{{ $setting->comment }}</small>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<x-form.secondary-button>
|
||||
{{ __('Continue to step 2') }}
|
||||
</x-form.secondary-button>
|
||||
</form>
|
||||
|
||||
<div class="flex gap-x-4">
|
||||
<form action="{{ route('installation.restart') }}" method="POST" class="w-full mt-3">
|
||||
@csrf
|
||||
|
||||
<x-form.danger-button>
|
||||
{{ __('Restart installation') }}
|
||||
</x-form.danger-button>
|
||||
</form>
|
||||
</div>
|
||||
</x-content.installation-content-section>
|
||||
</x-installation-layout>
|
||||
@@ -1,57 +0,0 @@
|
||||
<x-installation-layout>
|
||||
<x-content.installation-content-section icon="hotel-icon" classes="border">
|
||||
<x-slot:title>
|
||||
{{ __('Welcome to Atom CMS') }}
|
||||
</x-slot:title>
|
||||
|
||||
<x-slot:under-title>
|
||||
{{ __('We are delighted of having you trying Atom CMS') }}
|
||||
</x-slot:under-title>
|
||||
|
||||
<form action="{{ route('installation.save-step') }}" method="POST" class="space-y-3">
|
||||
@csrf
|
||||
|
||||
@foreach($settings as $setting)
|
||||
<div>
|
||||
<label class="block font-semibold text-gray-700" for="{{ $setting->key }}">
|
||||
{{ Str::replace('_', ' ', Str::ucfirst($setting->key)) }}
|
||||
</label>
|
||||
|
||||
<input
|
||||
class="focus:ring-0 border-4 border-gray-200 rounded focus:border-[#eeb425] w-full @error($setting->key)border-red-600 ring-red-500 @enderror"
|
||||
id="{{ $setting->key }}" type="text" name="{{ $setting->key }}" value="{{ $setting->value }}" placeholder="{{ $setting->key }}" required>
|
||||
|
||||
@error($setting->key)
|
||||
<p class="mt-1 text-xs italic text-red-500">
|
||||
{{ $message }}
|
||||
</p>
|
||||
@enderror
|
||||
|
||||
<small>{{ $setting->comment }}</small>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<x-form.secondary-button>
|
||||
{{ __('Continue to step 3') }}
|
||||
</x-form.secondary-button>
|
||||
</form>
|
||||
|
||||
<div class="flex gap-x-4">
|
||||
<form action="{{ route('installation.previous-step') }}" method="POST" class="w-full mt-3">
|
||||
@csrf
|
||||
|
||||
<x-form.primary-button>
|
||||
{{ __('Previous step') }}
|
||||
</x-form.primary-button>
|
||||
</form>
|
||||
|
||||
<form action="{{ route('installation.restart') }}" method="POST" class="w-full mt-3">
|
||||
@csrf
|
||||
|
||||
<x-form.danger-button>
|
||||
{{ __('Restart installation') }}
|
||||
</x-form.danger-button>
|
||||
</form>
|
||||
</div>
|
||||
</x-content.installation-content-section>
|
||||
</x-installation-layout>
|
||||
@@ -1,57 +0,0 @@
|
||||
<x-installation-layout>
|
||||
<x-content.installation-content-section icon="hotel-icon" classes="border">
|
||||
<x-slot:title>
|
||||
{{ __('Welcome to Atom CMS') }}
|
||||
</x-slot:title>
|
||||
|
||||
<x-slot:under-title>
|
||||
{{ __('We are delighted of having you trying Atom CMS') }}
|
||||
</x-slot:under-title>
|
||||
|
||||
<form action="{{ route('installation.save-step') }}" method="POST" class="space-y-3">
|
||||
@csrf
|
||||
|
||||
@foreach($settings as $setting)
|
||||
<div>
|
||||
<label class="block font-semibold text-gray-700" for="{{ $setting->key }}">
|
||||
{{ Str::replace('_', ' ', Str::ucfirst($setting->key)) }}
|
||||
</label>
|
||||
|
||||
<input
|
||||
class="focus:ring-0 border-4 border-gray-200 rounded focus:border-[#eeb425] w-full @error($setting->key)border-red-600 ring-red-500 @enderror"
|
||||
id="{{ $setting->key }}" type="text" name="{{ $setting->key }}" value="{{ $setting->value }}" placeholder="{{ $setting->key }}" required>
|
||||
|
||||
@error($setting->key)
|
||||
<p class="mt-1 text-xs italic text-red-500">
|
||||
{{ $message }}
|
||||
</p>
|
||||
@enderror
|
||||
|
||||
<small>{{ $setting->comment }}</small>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<x-form.secondary-button>
|
||||
{{ __('Continue to step 4') }}
|
||||
</x-form.secondary-button>
|
||||
</form>
|
||||
|
||||
<div class="flex gap-x-4">
|
||||
<form action="{{ route('installation.previous-step') }}" method="POST" class="w-full mt-3">
|
||||
@csrf
|
||||
|
||||
<x-form.primary-button>
|
||||
{{ __('Previous step') }}
|
||||
</x-form.primary-button>
|
||||
</form>
|
||||
|
||||
<form action="{{ route('installation.restart') }}" method="POST" class="w-full mt-3">
|
||||
@csrf
|
||||
|
||||
<x-form.danger-button>
|
||||
{{ __('Restart installation') }}
|
||||
</x-form.danger-button>
|
||||
</form>
|
||||
</div>
|
||||
</x-content.installation-content-section>
|
||||
</x-installation-layout>
|
||||
@@ -1,57 +0,0 @@
|
||||
<x-installation-layout>
|
||||
<x-content.installation-content-section icon="hotel-icon" classes="border">
|
||||
<x-slot:title>
|
||||
{{ __('Welcome to Atom CMS') }}
|
||||
</x-slot:title>
|
||||
|
||||
<x-slot:under-title>
|
||||
{{ __('We are delighted of having you trying Atom CMS') }}
|
||||
</x-slot:under-title>
|
||||
|
||||
<form action="{{ route('installation.save-step') }}" method="POST" class="space-y-3">
|
||||
@csrf
|
||||
|
||||
@foreach($settings as $setting)
|
||||
<div>
|
||||
<label class="block font-semibold text-gray-700" for="{{ $setting->key }}">
|
||||
{{ Str::replace('_', ' ', Str::ucfirst($setting->key)) }}
|
||||
</label>
|
||||
|
||||
<input
|
||||
class="focus:ring-0 border-4 border-gray-200 rounded focus:border-[#eeb425] w-full @error($setting->key)border-red-600 ring-red-500 @enderror"
|
||||
id="{{ $setting->key }}" type="text" name="{{ $setting->key }}" value="{{ $setting->value }}" placeholder="{{ $setting->key }}">
|
||||
|
||||
@error($setting->key)
|
||||
<p class="mt-1 text-xs italic text-red-500">
|
||||
{{ $message }}
|
||||
</p>
|
||||
@enderror
|
||||
|
||||
<small>{{ $setting->comment }}</small>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<x-form.secondary-button>
|
||||
{{ __('Complete setup') }}
|
||||
</x-form.secondary-button>
|
||||
</form>
|
||||
|
||||
<div class="flex gap-x-4">
|
||||
<form action="{{ route('installation.previous-step') }}" method="POST" class="w-full mt-3">
|
||||
@csrf
|
||||
|
||||
<x-form.primary-button>
|
||||
{{ __('Previous step') }}
|
||||
</x-form.primary-button>
|
||||
</form>
|
||||
|
||||
<form action="{{ route('installation.restart') }}" method="POST" class="w-full mt-3">
|
||||
@csrf
|
||||
|
||||
<x-form.danger-button>
|
||||
{{ __('Restart installation') }}
|
||||
</x-form.danger-button>
|
||||
</form>
|
||||
</div>
|
||||
</x-content.installation-content-section>
|
||||
</x-installation-layout>
|
||||
@@ -1,76 +0,0 @@
|
||||
<x-installation-layout>
|
||||
<x-content.installation-content-section icon="hotel-icon" classes="border">
|
||||
<x-slot:title>
|
||||
{{ __('Welcome to Atom CMS') }}
|
||||
</x-slot:title>
|
||||
|
||||
<x-slot:under-title>
|
||||
{{ __('We are delighted of having you trying Atom CMS') }}
|
||||
</x-slot:under-title>
|
||||
|
||||
<div class="space-y-3">
|
||||
<p>
|
||||
{{ __('Congratulations on successfully completing the Atom CMS setup! You have now taken the first steps towards an exciting new journey. With Atom CMS, you can effortlessly manage various aspect of your hotel, while giving your new visitors an easy gateway into a world of joy.') }}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{{ __('You can at any time change the settings you went through. All it takes is for you to hop into your database and find the "website_settings" table and then tweak the settings you wish. Who knows... As you explore the features and functionalities of Atom CMS, you might discover features that will improve you and your users experience & helping you achieve your online goals!') }}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{!! __('We also have written a throughout documentation, explaining tons of things regarding managing Atom CMS & other aspect of your hotel. You can visit our <a href=":documentation_link" target="_blank" class="font-semibold underline">comprehensive documentation right here</a>. Our goal is to keep expanding our coverage, so keep checking it from time to time.') !!}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{{ __('Lastly, we just want to show our gratitude by letting your know how delighted we are to be a part of your journey and we hope you will gain some amazing memories. So, here is to your new hotel, the boundless creativity it will inspire, and the endless possibilities that lie ahead.') }}
|
||||
</p>
|
||||
|
||||
<p class="font-semibold italic">
|
||||
{{ __('Once again, congratulations and best of wishes for you & your hotel!') }}
|
||||
</p>
|
||||
|
||||
<form action="{{ route('installation.complete') }}" method="POST" class="w-full mt-3">
|
||||
@csrf
|
||||
|
||||
<x-form.secondary-button>
|
||||
{{ __('Take me to :hotel', ['hotel' => setting('hotel_name')]) }}
|
||||
</x-form.secondary-button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="flex gap-x-4">
|
||||
<form action="{{ route('installation.previous-step') }}" method="POST" class="w-full mt-3">
|
||||
@csrf
|
||||
|
||||
<x-form.primary-button>
|
||||
{{ __('Previous step') }}
|
||||
</x-form.primary-button>
|
||||
</form>
|
||||
|
||||
<form action="{{ route('installation.restart') }}" method="POST" class="w-full mt-3">
|
||||
@csrf
|
||||
|
||||
<x-form.danger-button>
|
||||
{{ __('Restart installation') }}
|
||||
</x-form.danger-button>
|
||||
</form>
|
||||
</div>
|
||||
</x-content.installation-content-section>
|
||||
|
||||
<script>
|
||||
localStorage.setItem("theme", 'light');
|
||||
</script>
|
||||
|
||||
@if (setting('cms_color_mode') === 'dark')
|
||||
<script>
|
||||
localStorage.removeItem("theme");
|
||||
|
||||
if (localStorage.getItem("theme") === null) {
|
||||
document.documentElement.classList.add("dark");
|
||||
localStorage.setItem("theme", 'dark');
|
||||
}
|
||||
</script>
|
||||
@endif
|
||||
</x-installation-layout>
|
||||
@@ -1,26 +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">
|
||||
<meta name="turbolinks-cache-control" content="no-cache">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>{{ setting('hotel_name') }} - @stack('title')</title>
|
||||
|
||||
<link rel="icon" type="image/gif" sizes="18x17" href="{{ asset('assets/images/home_icon.gif') }}">
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap">
|
||||
|
||||
@vite(['resources/css/global.scss', 'resources/js/global.js'], 'build')
|
||||
@stack('scripts')
|
||||
</head>
|
||||
|
||||
<body class="flex justify-center items-center min-h-screen site-bg">
|
||||
<main class="mx-auto w-full lg:w-[40%] p-4 lg:px-0 lg:py-4">
|
||||
{{ $slot }}
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,22 +0,0 @@
|
||||
@props([
|
||||
'callback' => '',
|
||||
'errorCallback' => '',
|
||||
'theme' => 'auto',
|
||||
'language' => 'en-US',
|
||||
'size' => 'normal',
|
||||
])
|
||||
|
||||
<div {{ $attributes->merge([
|
||||
'class' => 'cf-turnstile',
|
||||
'data-sitekey' => config('turnstile.turnstile_site_key'),
|
||||
'data-callback' => $callback,
|
||||
'data-error-callback' => $errorCallback,
|
||||
'data-theme' => $theme,
|
||||
'data-language' => $language,
|
||||
'data-size' => $size,
|
||||
'name' => 'cf-turnstile',
|
||||
'id'=>'cf-turnstile-widget',
|
||||
]) }}></div>
|
||||
|
||||
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" defer></script>
|
||||
|
||||