OwlCyberSecurity - MANAGER
Edit File: LandingResource.php
<?php namespace App\Filament\Resources; use App\Filament\Resources\LandingResource\Pages; use App\Filament\Resources\LandingResource\RelationManagers; use App\Models\Article; use App\Models\Landing; use Filament\Forms; use Filament\Forms\Components\FileUpload; use Filament\Forms\Components\Grid; use Filament\Forms\Components\Section; use Filament\Forms\Components\Select; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; use Filament\Forms\Components\Toggle; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\Filter; use Filament\Tables\Filters\SelectFilter; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; use Mohamedsabil83\FilamentFormsTinyeditor\Components\TinyEditor; class LandingResource extends Resource { protected static ?string $model = Landing::class; protected static ?string $navigationIcon = 'heroicon-o-pencil-square'; protected static ?string $modelLabel = 'لندینگ'; protected static ?string $pluralModelLabel = 'صفحات لندینگ'; protected static ?int $navigationSort = 4; protected static ?string $navigationGroup = 'محتوا'; public static function form(Form $form): Form { return $form ->schema([ Grid::make(3)->schema([ Grid::make(1)->schema([ Grid::make(1)->schema([ TextInput::make('title')->label('عنوان')->columnSpan(2)->required(), ]), Section::make()->schema([ TinyEditor::make('body')->label('متن')->fileAttachmentsDisk('public')->fileAttachmentsVisibility('public')->fileAttachmentsDirectory('uploads')->required(), Textarea::make('excerpt')->required()->label('خلاصه')->maxLength(65535)->required(), ]), ])->columnSpan(2), Section::make()->schema([ TextInput::make('slug')->label('اسلاگ')->unique(ignoreRecord: true)->maxLength(255)->required(), FileUpload::make('image_name')->image()->label('تصویر')->imageEditor()->required(), Toggle::make('is_show')->label('وضعیت نمایش')->required(), ])->columnSpan(1), ]), ]); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('title')->label('عنوان')->searchable(), TextColumn::make('view_count')->label('تعداد نمایش'), TextColumn::make('link_view_article')->label('نمایش در سایت ') ->url(fn(Landing $landing) => config('app.front_url') . "/landing/" . "{$landing->slug}") ->getStateUsing(fn(Landing $landing) => "{$landing->slug}") ->openUrlInNewTab() ->icon('heroicon-o-link') ->color('primary'), IconColumn::make('is_show')->label('وضعیت نمایش')->boolean(), TextColumn::make('created_at')->label('ایجاد در')->dateTime(), ]) ->filters([ SelectFilter::make('is_show')->label('وضعیت نمایش')->options(['1' => 'بله', '0' => 'خیر']), ]) ->actions([ Tables\Actions\EditAction::make(), ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ // Tables\Actions\DeleteBulkAction::make(), ]), ])->defaultSort('id', 'desc'); } public static function getRelations(): array { return [ // ]; } public static function getPages(): array { return [ 'index' => Pages\ListLandings::route('/'), 'create' => Pages\CreateLanding::route('/create'), 'edit' => Pages\EditLanding::route('/{record}/edit'), ]; } public static function canViewAny(): bool { return auth()->user()->can('landing::view'); } }