From 5535bd6eb9a2e91ea6935b85e1efa1c172774e65 Mon Sep 17 00:00:00 2001 From: f4ilji Date: Fri, 20 Dec 2024 00:21:22 +0500 Subject: [PATCH] Changes --- .../ItemForm/Pages/ContentBuilderItem.php | 17 +- app/Filament/Components/Forms/PostForm.php | 374 +----------------- resources/views/app.blade.php | 4 + 3 files changed, 17 insertions(+), 378 deletions(-) diff --git a/app/Filament/Components/Forms/ItemForm/Pages/ContentBuilderItem.php b/app/Filament/Components/Forms/ItemForm/Pages/ContentBuilderItem.php index bb1a658..55b23e5 100644 --- a/app/Filament/Components/Forms/ItemForm/Pages/ContentBuilderItem.php +++ b/app/Filament/Components/Forms/ItemForm/Pages/ContentBuilderItem.php @@ -58,6 +58,7 @@ class ContentBuilderItem ->label(''), ])->label('Текст'), Builder\Block::make('files') + ->label('Файл(-ы)') ->schema([ Forms\Components\Repeater::make('file')->schema([ Hidden::make('expansion')->required(), @@ -91,6 +92,7 @@ class ContentBuilderItem ]), ]), Builder\Block::make('person') + ->label('Персона') ->schema([ TextInput::make('name') ->label('Имя') @@ -99,21 +101,24 @@ class ContentBuilderItem FileUpload::make('photo') ->label('Фотография') ->image() + ->optimize('webp') + ->resize(50) ->disk('public') ->directory('images') ->imageEditor(), Forms\Components\Repeater::make('info')->schema([ - Forms\Components\Grid::make(2)->schema([ TextInput::make('column') + ->label('Название колонки') ->required() ->maxLength(255), - TextInput::make('content') + Forms\Components\Textarea::make('content') + ->label('Содержание') ->required() - ->maxLength(255), - ]), - ])->minItems(1), + ->maxLength(1000), + ])->minItems(1)->label('Информация о персоне'), ]), Builder\Block::make('stepper') + ->label('Строитель этапов') ->schema([ TextInput::make('step_name') ->label('Название шага') @@ -127,6 +132,7 @@ class ContentBuilderItem ])->minItems(1), ]), Builder\Block::make('tabs') + ->label('Вкладки') ->schema([ Forms\Components\Repeater::make('tab')->schema([ TextInput::make('title') @@ -325,6 +331,7 @@ class ContentBuilderItem ->placeholder('Необязяательно') ])->label('Изображение'), Builder\Block::make('video') + ->label('Видео (Не стабильно)') ->schema([ TextInput::make('mime')->readOnly(), TextInput::make('title') diff --git a/app/Filament/Components/Forms/PostForm.php b/app/Filament/Components/Forms/PostForm.php index 504f2d2..a9ea3d7 100644 --- a/app/Filament/Components/Forms/PostForm.php +++ b/app/Filament/Components/Forms/PostForm.php @@ -111,379 +111,7 @@ class PostForm ]), Tabs\Tab::make('Содержание новости') ->schema([ - Builder::make('content')->label('')->blocks([ - Builder\Block::make('heading')->label('Заголовок') - ->schema([ - TextInput::make('id')->hidden()->integer()->default(rand(2335235,324634264263426)), - TextInput::make('content') - ->label('') - ->live(onBlur: true) - ->afterStateUpdated(function (string $operation, string|null $state, Forms\Set $set, $get) { - }), - ]), - Builder\Block::make('paragraph')->label('Текст') - ->schema([ - Toggle::make('seo_active')->label('Использовать блок как seo') - ->live(onBlur: true) - ->required() - ->disabled(function ($state, Forms\Get $get) { - $data = $get('../../'); - return self::findSeoActive($data) && !$state; - }) - ->dehydrated(), - RichEditor::make('content') - ->toolbarButtons([ - 'blockquote', - 'bold', - 'bulletList', - 'italic', - 'link', - 'orderedList', - 'redo', - 'strike', - 'underline', - 'undo', - ]) - ->label(''), - ])->live(onBlur: true), - Builder\Block::make('files') - ->schema([ - Forms\Components\Repeater::make('file')->schema([ - Hidden::make('expansion')->required(), - Hidden::make('size')->required(), - TextInput::make('title') - ->required() - ->maxLength(255) - ->autofocus(), - FileUpload::make('path') - ->required() - ->getUploadedFileNameForStorageUsing( - fn (TemporaryUploadedFile $file): string => - str(Str::slug(pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME) . '-' . Carbon::now()->timestamp ) . '.' . $file->getClientOriginalExtension()) - ) - ->acceptedFileTypes([ - 'application/pdf', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'application/zip' - ]) - ->maxSize(512000) - ->disk('public') - ->directory('files') - ->downloadable() - ->afterStateUpdated(function ($set, $state) { - $set('expansion', $state?->getClientOriginalExtension()); - $set('size', ByteConverter::bytesToHuman($state?->getSize())); - }) - ->visibility('public') - ]), - ]), - Builder\Block::make('person') - ->schema([ - TextInput::make('name') - ->label('Имя') - ->required() - ->maxLength(255), - FileUpload::make('photo') - ->label('Фотография') - ->image() - ->disk('public') - ->directory('images') - ->imageEditor(), - Forms\Components\Repeater::make('info')->schema([ - Forms\Components\Grid::make(2)->schema([ - TextInput::make('column') - ->required() - ->maxLength(255), - TextInput::make('content') - ->required() - ->maxLength(255), - ]), - ])->minItems(1), - ]), - Builder\Block::make('stepper') - ->schema([ - TextInput::make('step_name') - ->label('Название шага') - ->required() - ->maxLength(255), - Forms\Components\Repeater::make('steps')->schema([ - TextInput::make('title') - ->required() - ->maxLength(255)->columnSpanFull(), - RichEditor::make('content')->required(), - ])->minItems(1), - ]), - Builder\Block::make('tabs') - ->schema([ - Forms\Components\Repeater::make('tab')->schema([ - TextInput::make('title') - ->required() - ->maxLength(255)->columnSpanFull(), - \Filament\Forms\Components\Builder::make('content')->label('')->blocks([ - Builder\Block::make('heading')->label('Заголовок') - ->schema([ - TextInput::make('id')->hidden()->integer()->default(rand(2335235,324634264263426)), - TextInput::make('content') - ->label('') - ->live(onBlur: true) - ->afterStateUpdated(function (string $operation, string $state, Forms\Set $set, $get) { - }), - ]), - Builder\Block::make('paragraph') - ->schema([ - RichEditor::make('content') - ->toolbarButtons([ - 'blockquote', - 'bold', - 'bulletList', - 'italic', - 'link', - 'orderedList', - 'redo', - 'strike', - 'underline', - 'undo', - ]) - ->label(''), - ])->label('Текст'), - Builder\Block::make('files') - ->schema([ - Forms\Components\Repeater::make('file')->schema([ - TextInput::make('title') - ->required() - ->maxLength(255) - ->autofocus(), - FileUpload::make('path') - ->required() - ->acceptedFileTypes([ - 'application/pdf', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'application/zip' - ]) - ->maxSize(512000) - ->disk('public') - ->directory('files') - ->downloadable() - ->visibility('public') - ]), - ]), - Builder\Block::make('person') - ->schema([ - TextInput::make('name') - ->label('Имя') - ->required() - ->maxLength(255), - FileUpload::make('photo') - ->label('Фотография') - ->image() - ->disk('public') - ->directory('images') - ->imageEditor(), - Forms\Components\Repeater::make('info')->schema([ - Forms\Components\Grid::make(2)->schema([ - TextInput::make('column') - ->required() - ->maxLength(255), - TextInput::make('content') - ->required() - ->maxLength(255), - ]), - ])->minItems(1), - ]), - Builder\Block::make('stepper') - ->schema([ - TextInput::make('step_name') - ->label('Название шага') - ->required() - ->maxLength(255), - Forms\Components\Repeater::make('steps')->schema([ - TextInput::make('title') - ->required() - ->maxLength(255)->columnSpanFull(), - RichEditor::make('content')->required(), - ])->minItems(1), - ]), - Builder\Block::make('images') - ->schema([ - FileUpload::make('url') - ->label('Изображение(-я)') - ->image() - ->multiple() - ->reorderable() - ->maxFiles(5) - ->disk('public') - ->directory('images') - ->imageEditor() - ->required(), - TextInput::make('alt') - ->label('Описание') - ->placeholder('Необязяательно') - ])->label('Слайдер изображений'), - Builder\Block::make('image') - ->schema([ - FileUpload::make('url') - ->label('Изображение(-я)') - ->image() - ->multiple() - ->reorderable() - ->maxFiles(5) - ->disk('public') - ->directory('images') - ->imageEditor() - ->required(), - TextInput::make('alt') - ->label('Описание') - ->placeholder('Необязяательно') - ])->label('Изображение'), - Builder\Block::make('video') - ->schema([ - TextInput::make('mime')->readOnly(), - TextInput::make('title') - ->required() - ->maxLength(255) - ->autofocus(), - FileUpload::make('path') - ->required() - ->acceptedFileTypes([ - 'video/mp4', - 'video/quicktime', - 'video/x-msvideo', - 'video/x-ms-wmv', - 'video/avi', - 'video/webm', - 'video/ogg', - 'video/3gpp', - 'video/3gpp2', - 'video/x-m4v', - ]) - ->disk('public') - ->directory('videos') - ->afterStateUpdated(fn (callable $set, $state) => $set('mime', $state?->getMimeType())), - ]), - Builder\Block::make('postsList') - ->schema([ - Forms\Components\Grid::make(2)->schema([ - TextInput::make('count') - ->label('Количество запией') - ->integer(), - Select::make('category') - ->options(Category::all()->pluck('title', 'id')) - ]), - ])->label('Список новостей'), - ]) - ->collapsed() - ->blockNumbers(false) - ->collapsible() - ->addActionLabel('Добавить новый блок'), - ])->minItems(1), - ]), - Builder\Block::make('images') - ->schema([ - FileUpload::make('url') - ->label('Изображение(-я)') - ->image() - ->multiple() - ->reorderable() - ->maxFiles(5) - ->disk('public') - ->directory('images') - ->imageEditor() - ->required(), - TextInput::make('alt') - ->label('Описание') - ->placeholder('Необязяательно') - ])->label('Слайдер изображений'), - Builder\Block::make('image') - ->schema([ - FileUpload::make('url') - ->label('Изображение(-я)') - ->image() - ->multiple() - ->reorderable() - ->maxFiles(5) - ->disk('public') - ->directory('images') - ->imageEditor() - ->required(), - TextInput::make('alt') - ->label('Описание') - ->placeholder('Необязяательно') - ])->label('Изображение'), - Builder\Block::make('video') - ->schema([ - TextInput::make('mime')->readOnly(), - TextInput::make('title') - ->required() - ->maxLength(255) - ->autofocus(), - FileUpload::make('path') - ->required() - ->acceptedFileTypes([ - 'video/mp4', - 'video/quicktime', - 'video/x-msvideo', - 'video/x-ms-wmv', - 'video/avi', - 'video/webm', - 'video/ogg', - 'video/3gpp', - 'video/3gpp2', - 'video/x-m4v', - ]) - ->disk('public') - ->directory('videos') - ->afterStateUpdated(fn (callable $set, $state) => $set('mime', $state?->getMimeType())), - ]), - Builder\Block::make('postsList') - ->schema([ - Forms\Components\Grid::make(2)->schema([ - TextInput::make('count') - ->label('Количество запией') - ->integer(), - Select::make('category') - ->options(Category::all()->pluck('title', 'id')) - ]), - ])->label('Список новостей'), - Builder\Block::make('postItem') - ->schema([ - Select::make('post') - ->options(Post::query()->where('status', PostStatus::PUBLISHED)->pluck('title', 'id')) - ->searchable() - ->required(), - ])->label('Новость'), - Builder\Block::make('pageItem') - ->schema([ - Select::make('page') - ->options(Page::query()->where('title', '!=' , null)->where('is_visible', true)->pluck('title', 'id')) - ->searchable() - ->required(), - ])->label('Страница'), - Builder\Block::make('customForm') - ->schema([ - Select::make('form') - ->options(CustomForm::query()->where('status', CustomFormStatus::PUBLISHED)->pluck('title', 'form_id')) - ->searchable() - ->required(), - ])->label('Форма'), - Builder\Block::make('PageResourceList') - ->schema([ - Select::make('resource') - ->options(PageReferenceList::query()->where('is_active', true)->pluck('title', 'slug')) - ->searchable() - ->required(), - ])->label('Ресурсы'), - ]) - ->collapsed() - ->required() - ->blockNumbers(false) - ->collapsible() - ->blockPickerColumns(3) - ->blockPickerWidth('2xl') - ->addActionLabel('Добавить новый блок'), + ContentBuilderItem::getItem('content') ]), Tabs\Tab::make('Изображения') ->schema([ diff --git a/resources/views/app.blade.php b/resources/views/app.blade.php index 894eb0d..bd74b8f 100644 --- a/resources/views/app.blade.php +++ b/resources/views/app.blade.php @@ -26,6 +26,10 @@ -webkit-tap-highlight-color: transparent !important; } + #nprogress .bar { + z-index: 10000000!important; + } + .ce-header { font-weight: bold; font-size: 20px;