├── .editorconfig
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── config.yml
├── config.yml
├── dependabot.yml
├── pull_request_template.md
├── release-drafter.yml
├── stale.yml
└── workflows
│ ├── add-to-project.yml
│ ├── chatgpt-bot.yml
│ ├── coverage.yml
│ ├── support.yml
│ └── testing.yml
├── .gitignore
├── .scrutinizer.yml
├── .styleci.yml
├── CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── SECURITY.md
├── composer.json
├── phpunit.xml
├── src
├── BackpackServiceProvider.php
├── Stats.php
├── ThemeServiceProvider.php
├── ViewNamespaces.php
├── app
│ ├── Console
│ │ └── Commands
│ │ │ ├── AddCustomRouteContent.php
│ │ │ ├── AddMenuContent.php
│ │ │ ├── Addons
│ │ │ ├── RequireDevTools.php
│ │ │ ├── RequireEditableColumns.php
│ │ │ └── RequirePro.php
│ │ │ ├── CreateUser.php
│ │ │ ├── Fix.php
│ │ │ ├── Install.php
│ │ │ ├── PublishBackpackMiddleware.php
│ │ │ ├── PublishHeaderMetas.php
│ │ │ ├── PublishView.php
│ │ │ ├── Themes
│ │ │ ├── InstallsTheme.php
│ │ │ ├── RequireThemeCoreuiv2.php
│ │ │ ├── RequireThemeCoreuiv4.php
│ │ │ └── RequireThemeTabler.php
│ │ │ ├── Traits
│ │ │ ├── AddonsHelper.php
│ │ │ └── PrettyCommandOutput.php
│ │ │ └── Version.php
│ ├── Exceptions
│ │ ├── AccessDeniedException.php
│ │ └── BackpackProRequiredException.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── AdminController.php
│ │ │ ├── Auth
│ │ │ │ ├── ForgotPasswordController.php
│ │ │ │ ├── LoginController.php
│ │ │ │ ├── RegisterController.php
│ │ │ │ ├── ResetPasswordController.php
│ │ │ │ └── VerifyEmailController.php
│ │ │ ├── BaseController.php
│ │ │ ├── ChartController.php
│ │ │ ├── CrudController.php
│ │ │ ├── MyAccountController.php
│ │ │ └── Operations
│ │ │ │ ├── BulkCloneOperation.php
│ │ │ │ ├── BulkDeleteOperation.php
│ │ │ │ ├── CloneOperation.php
│ │ │ │ ├── Concerns
│ │ │ │ └── HasForm.php
│ │ │ │ ├── CreateOperation.php
│ │ │ │ ├── DeleteOperation.php
│ │ │ │ ├── FetchOperation.php
│ │ │ │ ├── InlineCreateOperation.php
│ │ │ │ ├── ListOperation.php
│ │ │ │ ├── ReorderOperation.php
│ │ │ │ ├── ShowOperation.php
│ │ │ │ └── UpdateOperation.php
│ │ ├── Middleware
│ │ │ ├── AuthenticateSession.php
│ │ │ ├── CheckIfAdmin.php
│ │ │ ├── EnsureEmailVerification.php
│ │ │ ├── ThrottlePasswordRecovery.php
│ │ │ └── UseBackpackAuthGuardInsteadOfDefaultAuthGuard.php
│ │ └── Requests
│ │ │ ├── AccountInfoRequest.php
│ │ │ ├── ChangePasswordRequest.php
│ │ │ ├── CrudRequest.php
│ │ │ └── EmailVerificationRequest.php
│ ├── Library
│ │ ├── Attributes
│ │ │ └── DeprecatedIgnoreOnRuntime.php
│ │ ├── Auth
│ │ │ ├── AuthenticatesUsers.php
│ │ │ ├── ConfirmsPasswords.php
│ │ │ ├── PasswordBroker.php
│ │ │ ├── PasswordBrokerManager.php
│ │ │ ├── RedirectsUsers.php
│ │ │ ├── RegistersUsers.php
│ │ │ ├── ResetsPasswords.php
│ │ │ ├── ThrottlesLogins.php
│ │ │ ├── UserFromCookie.php
│ │ │ └── VerifiesEmails.php
│ │ ├── CrudPanel
│ │ │ ├── CrudButton.php
│ │ │ ├── CrudColumn.php
│ │ │ ├── CrudField.php
│ │ │ ├── CrudFilter.php
│ │ │ ├── CrudObjectGroup.php
│ │ │ ├── CrudPanel.php
│ │ │ ├── CrudPanelFacade.php
│ │ │ ├── CrudRouter.php
│ │ │ └── Traits
│ │ │ │ ├── Access.php
│ │ │ │ ├── AutoFocus.php
│ │ │ │ ├── AutoSet.php
│ │ │ │ ├── Buttons.php
│ │ │ │ ├── Columns.php
│ │ │ │ ├── ColumnsProtectedMethods.php
│ │ │ │ ├── Create.php
│ │ │ │ ├── Delete.php
│ │ │ │ ├── Errors.php
│ │ │ │ ├── FakeColumns.php
│ │ │ │ ├── FakeFields.php
│ │ │ │ ├── Fields.php
│ │ │ │ ├── FieldsPrivateMethods.php
│ │ │ │ ├── FieldsProtectedMethods.php
│ │ │ │ ├── Filters.php
│ │ │ │ ├── HasViewNamespaces.php
│ │ │ │ ├── HeadingsAndTitles.php
│ │ │ │ ├── Input.php
│ │ │ │ ├── Macroable.php
│ │ │ │ ├── MorphRelationships.php
│ │ │ │ ├── Operations.php
│ │ │ │ ├── Query.php
│ │ │ │ ├── Read.php
│ │ │ │ ├── Relationships.php
│ │ │ │ ├── Reorder.php
│ │ │ │ ├── SaveActions.php
│ │ │ │ ├── Search.php
│ │ │ │ ├── Settings.php
│ │ │ │ ├── Support
│ │ │ │ └── MacroableWithAttributes.php
│ │ │ │ ├── Tabs.php
│ │ │ │ ├── Update.php
│ │ │ │ ├── Validation.php
│ │ │ │ └── Views.php
│ │ ├── Database
│ │ │ ├── DatabaseSchema.php
│ │ │ ├── Table.php
│ │ │ └── TableSchema.php
│ │ ├── Uploaders
│ │ │ ├── MultipleFiles.php
│ │ │ ├── SingleBase64Image.php
│ │ │ ├── SingleFile.php
│ │ │ ├── Support
│ │ │ │ ├── FileNameGenerator.php
│ │ │ │ ├── Interfaces
│ │ │ │ │ ├── FileNameGeneratorInterface.php
│ │ │ │ │ └── UploaderInterface.php
│ │ │ │ ├── RegisterUploadEvents.php
│ │ │ │ ├── Traits
│ │ │ │ │ ├── HandleFileNaming.php
│ │ │ │ │ └── HandleRepeatableUploads.php
│ │ │ │ └── UploadersRepository.php
│ │ │ └── Uploader.php
│ │ ├── Validation
│ │ │ └── Rules
│ │ │ │ ├── BackpackCustomRule.php
│ │ │ │ ├── Support
│ │ │ │ └── HasFiles.php
│ │ │ │ ├── ValidFileArray.php
│ │ │ │ ├── ValidUpload.php
│ │ │ │ └── ValidUploadMultiple.php
│ │ └── Widget.php
│ ├── Models
│ │ └── Traits
│ │ │ ├── CrudTrait.php
│ │ │ ├── HasEnumFields.php
│ │ │ ├── HasFakeFields.php
│ │ │ ├── HasIdentifiableAttribute.php
│ │ │ ├── HasRelationshipFields.php
│ │ │ ├── HasTranslatableFields.php
│ │ │ ├── HasUploadFields.php
│ │ │ └── SpatieTranslatable
│ │ │ ├── HasTranslations.php
│ │ │ ├── SlugService.php
│ │ │ ├── Sluggable.php
│ │ │ └── SluggableScopeHelpers.php
│ ├── Notifications
│ │ └── ResetPasswordNotification.php
│ └── View
│ │ └── Components
│ │ ├── MenuDropdown.php
│ │ ├── MenuDropdownHeader.php
│ │ ├── MenuDropdownItem.php
│ │ ├── MenuItem.php
│ │ └── MenuSeparator.php
├── config
│ └── backpack
│ │ ├── base.php
│ │ ├── crud.php
│ │ ├── operations
│ │ ├── create.php
│ │ ├── form.php
│ │ ├── list.php
│ │ ├── reorder.php
│ │ ├── show.php
│ │ └── update.php
│ │ └── ui.php
├── helpers.php
├── macros.php
├── public
│ ├── android-chrome-192x192.png
│ ├── android-chrome-512x512.png
│ ├── apple-touch-icon.png
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── favicon.ico
│ ├── mstile-144x144.png
│ ├── mstile-150x150.png
│ ├── mstile-310x150.png
│ ├── mstile-310x310.png
│ ├── mstile-70x70.png
│ └── safari-pinned-tab.svg
├── resources
│ ├── assets
│ │ ├── css
│ │ │ └── common.css
│ │ ├── img
│ │ │ └── spinner.svg
│ │ ├── js
│ │ │ └── common.js
│ │ └── libs
│ │ │ └── jquery.mjs.nestedSortable2.js
│ ├── lang
│ │ ├── ar
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── bg
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── bn
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── ca
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── cs
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ └── langfilemanager.php
│ │ ├── da-DK
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── da_DK
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── de
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── el
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── en
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── es
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── fa
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── fr-CA
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── fr
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── fr_CA
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── gr
│ │ │ ├── backup.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── hu
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── id
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── it
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── ja
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── lo
│ │ │ ├── backup.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── lv
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── my
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── nl
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── pt-BR
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── pt
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── pt_br
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── ro
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── ru
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── sr
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── th
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── tr
│ │ │ ├── crud.php
│ │ │ └── langfilemanager.php
│ │ ├── uk
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── vi
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ ├── zh-Hant
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ │ └── zh-cn
│ │ │ ├── backup.php
│ │ │ ├── base.php
│ │ │ ├── crud.php
│ │ │ ├── langfilemanager.php
│ │ │ ├── logmanager.php
│ │ │ ├── pagemanager.php
│ │ │ ├── permissionmanager.php
│ │ │ └── settings.php
│ ├── stubs
│ │ ├── browserconfig.stub
│ │ ├── header_metas.stub
│ │ └── manifest.stub
│ └── views
│ │ ├── crud
│ │ ├── buttons
│ │ │ ├── create.blade.php
│ │ │ ├── delete.blade.php
│ │ │ ├── quick.blade.php
│ │ │ ├── reorder.blade.php
│ │ │ ├── show.blade.php
│ │ │ └── update.blade.php
│ │ ├── columns
│ │ │ ├── boolean.blade.php
│ │ │ ├── check.blade.php
│ │ │ ├── checkbox.blade.php
│ │ │ ├── checklist.blade.php
│ │ │ ├── checklist_dependency.blade.php
│ │ │ ├── closure.blade.php
│ │ │ ├── color.blade.php
│ │ │ ├── custom_html.blade.php
│ │ │ ├── date.blade.php
│ │ │ ├── datetime.blade.php
│ │ │ ├── email.blade.php
│ │ │ ├── enum.blade.php
│ │ │ ├── hidden.blade.php
│ │ │ ├── image.blade.php
│ │ │ ├── inc
│ │ │ │ ├── bulk_actions_checkbox.blade.php
│ │ │ │ ├── details_row_button.blade.php
│ │ │ │ ├── wrapper_end.blade.php
│ │ │ │ └── wrapper_start.blade.php
│ │ │ ├── json.blade.php
│ │ │ ├── model_function.blade.php
│ │ │ ├── model_function_attribute.blade.php
│ │ │ ├── month.blade.php
│ │ │ ├── multidimensional_array.blade.php
│ │ │ ├── number.blade.php
│ │ │ ├── password.blade.php
│ │ │ ├── phone.blade.php
│ │ │ ├── radio.blade.php
│ │ │ ├── range.blade.php
│ │ │ ├── relationship_count.blade.php
│ │ │ ├── row_number.blade.php
│ │ │ ├── select.blade.php
│ │ │ ├── select_from_array.blade.php
│ │ │ ├── select_grouped.blade.php
│ │ │ ├── select_multiple.blade.php
│ │ │ ├── summernote.blade.php
│ │ │ ├── switch.blade.php
│ │ │ ├── text.blade.php
│ │ │ ├── textarea.blade.php
│ │ │ ├── time.blade.php
│ │ │ ├── upload.blade.php
│ │ │ ├── upload_multiple.blade.php
│ │ │ ├── url.blade.php
│ │ │ ├── view.blade.php
│ │ │ └── week.blade.php
│ │ ├── create.blade.php
│ │ ├── details_row.blade.php
│ │ ├── edit.blade.php
│ │ ├── fields
│ │ │ ├── boolean.blade.php
│ │ │ ├── checkbox.blade.php
│ │ │ ├── checklist.blade.php
│ │ │ ├── checklist_dependency.blade.php
│ │ │ ├── color.blade.php
│ │ │ ├── custom_html.blade.php
│ │ │ ├── date.blade.php
│ │ │ ├── datetime.blade.php
│ │ │ ├── email.blade.php
│ │ │ ├── enum.blade.php
│ │ │ ├── hidden.blade.php
│ │ │ ├── inc
│ │ │ │ ├── attributes.blade.php
│ │ │ │ ├── translatable_icon.blade.php
│ │ │ │ ├── wrapper_end.blade.php
│ │ │ │ └── wrapper_start.blade.php
│ │ │ ├── month.blade.php
│ │ │ ├── number.blade.php
│ │ │ ├── password.blade.php
│ │ │ ├── radio.blade.php
│ │ │ ├── range.blade.php
│ │ │ ├── select.blade.php
│ │ │ ├── select_from_array.blade.php
│ │ │ ├── select_grouped.blade.php
│ │ │ ├── select_multiple.blade.php
│ │ │ ├── summernote.blade.php
│ │ │ ├── switch.blade.php
│ │ │ ├── text.blade.php
│ │ │ ├── textarea.blade.php
│ │ │ ├── time.blade.php
│ │ │ ├── upload.blade.php
│ │ │ ├── upload_multiple.blade.php
│ │ │ ├── url.blade.php
│ │ │ ├── view.blade.php
│ │ │ └── week.blade.php
│ │ ├── form_content.blade.php
│ │ ├── inc
│ │ │ ├── ajax_error_frame.blade.php
│ │ │ ├── button_stack.blade.php
│ │ │ ├── datatables_logic.blade.php
│ │ │ ├── details_row_logic.blade.php
│ │ │ ├── edit_translation_notice.blade.php
│ │ │ ├── export_buttons.blade.php
│ │ │ ├── filters_navbar.blade.php
│ │ │ ├── form_fields_script.blade.php
│ │ │ ├── form_page.blade.php
│ │ │ ├── form_save_buttons.blade.php
│ │ │ ├── grouped_errors.blade.php
│ │ │ ├── show_fields.blade.php
│ │ │ ├── show_tabbed_fields.blade.php
│ │ │ ├── show_tabbed_table.blade.php
│ │ │ └── show_table.blade.php
│ │ ├── list.blade.php
│ │ ├── reorder.blade.php
│ │ └── show.blade.php
│ │ └── ui
│ │ ├── components
│ │ ├── menu-dropdown-header.blade.php
│ │ ├── menu-dropdown-item.blade.php
│ │ ├── menu-dropdown.blade.php
│ │ ├── menu-item.blade.php
│ │ └── menu-separator.blade.php
│ │ ├── dashboard.blade.php
│ │ ├── errors
│ │ ├── 400.blade.php
│ │ ├── 401.blade.php
│ │ ├── 403.blade.php
│ │ ├── 404.blade.php
│ │ ├── 405.blade.php
│ │ ├── 408.blade.php
│ │ ├── 429.blade.php
│ │ ├── 4xx.blade.php
│ │ ├── 500.blade.php
│ │ ├── 503.blade.php
│ │ ├── blank.blade.php
│ │ └── layout.blade.php
│ │ ├── inc
│ │ ├── getting_started.blade.php
│ │ ├── menu_items.blade.php
│ │ ├── scripts.blade.php
│ │ └── styles.blade.php
│ │ └── widgets
│ │ ├── alert.blade.php
│ │ ├── card.blade.php
│ │ ├── div.blade.php
│ │ ├── inc
│ │ ├── wrapper_end.blade.php
│ │ └── wrapper_start.blade.php
│ │ ├── jumbotron.blade.php
│ │ ├── livewire.blade.php
│ │ ├── progress.blade.php
│ │ ├── progress_white.blade.php
│ │ ├── script.blade.php
│ │ ├── style.blade.php
│ │ └── view.blade.php
└── routes
│ └── backpack
│ ├── base.php
│ ├── custom.php
│ └── testing.php
└── tests
├── BaseTestClass.php
├── Unit
├── CrudPanel
│ ├── CrudPanelAccessTest.php
│ ├── CrudPanelAutoSetTest.php
│ ├── CrudPanelAutofocusTest.php
│ ├── CrudPanelButtonsTest.php
│ ├── CrudPanelColumnsTest.php
│ ├── CrudPanelCreateTest.php
│ ├── CrudPanelDeleteTest.php
│ ├── CrudPanelErrorsTest.php
│ ├── CrudPanelFakeColumnsTest.php
│ ├── CrudPanelFakeFieldsTest.php
│ ├── CrudPanelFieldsTest.php
│ ├── CrudPanelFiltersTest.php
│ ├── CrudPanelMacroTest.php
│ ├── CrudPanelObjectGroupTest.php
│ ├── CrudPanelOperationsTest.php
│ ├── CrudPanelQueryDatabaseTest.php
│ ├── CrudPanelQueryTest.php
│ ├── CrudPanelReadTest.php
│ ├── CrudPanelReorderOperationTest.php
│ ├── CrudPanelReorderTest.php
│ ├── CrudPanelSaveActionsTest.php
│ ├── CrudPanelSearchTest.php
│ ├── CrudPanelSettingsTest.php
│ ├── CrudPanelTablePrefixedTests.php
│ ├── CrudPanelTabsTest.php
│ ├── CrudPanelTest.php
│ ├── CrudPanelTitlesAndHeadingsTest.php
│ ├── CrudPanelUpdateTest.php
│ ├── CrudPanelValidationTest.php
│ ├── CrudPanelViewsTest.php
│ ├── HelpersTest.php
│ ├── TranslatableFieldsTest.php
│ └── ViewNamespacesTest.php
└── CrudTrait
│ └── CrudTraitFakeFieldsTest.php
└── config
├── CrudPanel
├── BaseCrudPanel.php
├── BaseDBCrudPanel.php
├── BasePrefixedDBCrudPanel.php
└── NoSqlDriverCrudPanel.php
├── CrudTrait
└── BaseCrudTrait.php
├── Http
├── Controllers
│ ├── ArticleCrudController.php
│ └── UserCrudController.php
├── CrudControllerTest.php
└── Requests
│ └── UserRequest.php
├── Models
├── AccountDetails.php
├── Address.php
├── Article.php
├── ArticleWithEnum.php
├── Bang.php
├── Bill.php
├── ColumnType.php
├── Comet.php
├── Comment.php
├── Enums
│ ├── StateEnum.php
│ ├── StatusEnum.php
│ └── StyleEnum.php
├── FakeColumnsModel.php
├── ModelWithoutCrudTrait.php
├── Planet.php
├── PlanetNonNullable.php
├── Recommend.php
├── Reorder.php
├── Role.php
├── Star.php
├── SuperArticlePivot.php
├── TestModel.php
├── TestModelWithTranslations.php
├── Traits
│ └── HasTranslationsFake.php
├── Transaction.php
├── TranslatableModel.php
├── Universe.php
├── User.php
├── UserWithReturnTypes.php
└── UserWithTranslations.php
├── TestsServiceProvider.php
├── database
├── migrations
│ ├── 2017_09_05_000000_create_users_table.php
│ ├── 2017_09_06_000000_create_articles_table.php
│ ├── 2017_09_06_000001_create_column_types_table.php
│ ├── 2017_09_08_000000_create_user_roles_table.php
│ ├── 2017_09_08_000001_create_account_details_table.php
│ ├── 2017_09_08_000001_create_addresses_table.php
│ ├── 2020_03_31_114745_create_pivotable_relations_tables.php
│ ├── 2024_07_30_000000_create_reorder_table.php
│ └── 2024_07_30_000001_create_translatable_table.php
└── seeds
│ ├── ArticlesTableSeeder.php
│ ├── MorphableSeeders.php
│ ├── UsersRolesTableSeeder.php
│ └── UsersTableSeeder.php
└── views
├── buttons
└── test.blade.php
└── fields
├── custom_namespace
└── test.blade.php
└── test.blade.php
/.editorconfig:
--------------------------------------------------------------------------------
1 | ; This file is for unifying the coding style for different editors and IDEs.
2 | ; More information at http://editorconfig.org
3 |
4 | root = true
5 |
6 | [*]
7 | charset = utf-8
8 | indent_size = 4
9 | indent_style = space
10 | end_of_line = lf
11 | insert_final_newline = true
12 | trim_trailing_whitespace = true
13 |
14 | [*.md]
15 | trim_trailing_whitespace = false
16 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: Documentation issue
4 | url: https://github.com/laravel-backpack/docs
5 | about: Please open an issue or pull request in our docs repository.
6 | - name: How Do I _____?
7 | url: https://github.com/Laravel-Backpack/community-forum/discussions
8 | about: Please use Discussions in our community forum. We've been blessed with a great community, that is happy to help.
9 | - name: Feature Request or Idea
10 | url: https://github.com/Laravel-Backpack/community-forum/discussions/new
11 | about: If you have an idea, request or want to show something you did, use our Community Forum. This is where we all hang out.
12 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: composer
4 | directory: "/"
5 | schedule:
6 | interval: monthly
7 | open-pull-requests-limit: 10
8 | - package-ecosystem: npm
9 | directory: "/"
10 | schedule:
11 | interval: monthly
12 | open-pull-requests-limit: 10
13 | ignore:
14 | - dependency-name: css-loader
15 | versions:
16 | - 5.0.1
17 | - 5.1.0
18 | - 5.1.1
19 | - dependency-name: pace-js
20 | versions:
21 | - 1.2.3
22 | - dependency-name: sass-loader
23 | versions:
24 | - 10.1.0
25 | - 10.1.1
26 | - package-ecosystem: "github-actions"
27 | directory: "/"
28 | schedule:
29 | interval: monthly
30 | open-pull-requests-limit: 10
31 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 | ## WHY
2 |
3 | ### BEFORE - What was wrong? What was happening before this PR?
4 |
5 | ??
6 |
7 | ### AFTER - What is happening after this PR?
8 |
9 | ??
10 |
11 |
12 | ## HOW
13 |
14 | ### How did you achieve that, in technical terms?
15 |
16 | ??
17 |
18 |
19 |
20 | ### Is it a breaking change?
21 |
22 | ??
23 |
24 |
25 | ### How can we test the before & after?
26 |
27 | ??
28 |
29 | If the PR has changes in multiple repos please provide the command to checkout all branches, eg.:
30 | ```bash
31 | git checkout "dev-branch-name" &&
32 | cd vendor/backpack/crud && git checkout crud-branch-name &&
33 | cd ../pro && git checkout pro-branch-name &&
34 | cd ../../..
35 | ```
36 |
--------------------------------------------------------------------------------
/.github/workflows/add-to-project.yml:
--------------------------------------------------------------------------------
1 | name: Add new bugs & PRs to This Week project
2 |
3 | on:
4 | issues:
5 | types:
6 | - opened
7 | - transferred
8 | pull_request:
9 | types:
10 | - opened
11 |
12 | permissions: {}
13 | jobs:
14 | add-to-project:
15 | name: Add new bugs and PRs to This Week project
16 | runs-on: ubuntu-latest
17 | steps:
18 | - uses: actions/add-to-project@main
19 | with:
20 | project-url: https://github.com/orgs/Laravel-Backpack/projects/13
21 | github-token: ${{ secrets.ADD_TO_PROJECT_PAT }}
22 |
--------------------------------------------------------------------------------
/.github/workflows/chatgpt-bot.yml:
--------------------------------------------------------------------------------
1 | name: ChatGPT Bot
2 |
3 | on:
4 | issue_comment:
5 | types:
6 | - created
7 |
8 | jobs:
9 | run-bot:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: austenstone/chatgpt-bot@main
13 | env:
14 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
15 | OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | vendor/
3 | node_modules/
4 | .DS_Store
5 | .composer.lock
6 | composer.lock
7 | .phpunit.result.cache
8 | src/public/packages/
9 | /.phpunit.cache
10 |
11 |
--------------------------------------------------------------------------------
/.styleci.yml:
--------------------------------------------------------------------------------
1 | preset: laravel
2 | finder:
3 | not-name:
4 | - "LicenseCheck.php"
--------------------------------------------------------------------------------
/src/app/Exceptions/AccessDeniedException.php:
--------------------------------------------------------------------------------
1 | setDefaultDriver(config('backpack.base.guard'));
20 |
21 | return $next($request);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/app/Http/Requests/EmailVerificationRequest.php:
--------------------------------------------------------------------------------
1 | redirectTo();
16 | }
17 |
18 | return property_exists($this, 'redirectTo') ? $this->redirectTo : '/dashboard';
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/app/Library/Auth/UserFromCookie.php:
--------------------------------------------------------------------------------
1 | first();
13 | }
14 |
15 | return null;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/app/Library/CrudPanel/Traits/AutoFocus.php:
--------------------------------------------------------------------------------
1 | getOperationSetting('autoFocusOnFirstField');
13 | }
14 |
15 | public function setAutoFocusOnFirstField($value)
16 | {
17 | return $this->setOperationSetting('autoFocusOnFirstField', (bool) $value);
18 | }
19 |
20 | public function enableAutoFocus()
21 | {
22 | return $this->setAutoFocusOnFirstField(true);
23 | }
24 |
25 | public function disableAutoFocus()
26 | {
27 | return $this->setAutoFocusOnFirstField(false);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/app/Library/Uploaders/Support/Interfaces/FileNameGeneratorInterface.php:
--------------------------------------------------------------------------------
1 | fileRules = self::getRulesAsArray($rules);
15 |
16 | return $this;
17 | }
18 |
19 | protected function getFileRules(): array
20 | {
21 | return $this->fileRules ?? [];
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/app/Models/Traits/CrudTrait.php:
--------------------------------------------------------------------------------
1 | crud->setReorderContentClass('class-string')
12 | 'contentClass' => 'col-md-12 col-md-offset-2',
13 |
14 | // should the content of the reorder label be escaped?
15 | 'escaped' => false,
16 | ];
17 |
--------------------------------------------------------------------------------
/src/public/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Laravel-Backpack/CRUD/e8ff80c21bc03b8b9e6163c0434285fc44ad8de4/src/public/android-chrome-192x192.png
--------------------------------------------------------------------------------
/src/public/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Laravel-Backpack/CRUD/e8ff80c21bc03b8b9e6163c0434285fc44ad8de4/src/public/android-chrome-512x512.png
--------------------------------------------------------------------------------
/src/public/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Laravel-Backpack/CRUD/e8ff80c21bc03b8b9e6163c0434285fc44ad8de4/src/public/apple-touch-icon.png
--------------------------------------------------------------------------------
/src/public/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Laravel-Backpack/CRUD/e8ff80c21bc03b8b9e6163c0434285fc44ad8de4/src/public/favicon-16x16.png
--------------------------------------------------------------------------------
/src/public/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Laravel-Backpack/CRUD/e8ff80c21bc03b8b9e6163c0434285fc44ad8de4/src/public/favicon-32x32.png
--------------------------------------------------------------------------------
/src/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Laravel-Backpack/CRUD/e8ff80c21bc03b8b9e6163c0434285fc44ad8de4/src/public/favicon.ico
--------------------------------------------------------------------------------
/src/public/mstile-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Laravel-Backpack/CRUD/e8ff80c21bc03b8b9e6163c0434285fc44ad8de4/src/public/mstile-144x144.png
--------------------------------------------------------------------------------
/src/public/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Laravel-Backpack/CRUD/e8ff80c21bc03b8b9e6163c0434285fc44ad8de4/src/public/mstile-150x150.png
--------------------------------------------------------------------------------
/src/public/mstile-310x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Laravel-Backpack/CRUD/e8ff80c21bc03b8b9e6163c0434285fc44ad8de4/src/public/mstile-310x150.png
--------------------------------------------------------------------------------
/src/public/mstile-310x310.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Laravel-Backpack/CRUD/e8ff80c21bc03b8b9e6163c0434285fc44ad8de4/src/public/mstile-310x310.png
--------------------------------------------------------------------------------
/src/public/mstile-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Laravel-Backpack/CRUD/e8ff80c21bc03b8b9e6163c0434285fc44ad8de4/src/public/mstile-70x70.png
--------------------------------------------------------------------------------
/src/resources/assets/js/common.js:
--------------------------------------------------------------------------------
1 | // Ajax calls should always have the CSRF token attached to them, otherwise they won't work
2 | $.ajaxSetup({
3 | headers: {
4 | 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content,
5 | }
6 | });
7 |
8 | // Enable deep link to tab
9 | document.querySelectorAll('.nav-tabs a').forEach(e => {
10 | if(e.dataset.name === location.hash.substring(1)) (new bootstrap.Tab(e)).show();
11 | e.addEventListener('click', () => location.hash = e.dataset.name);
12 | });
13 |
--------------------------------------------------------------------------------
/src/resources/lang/ar/backup.php:
--------------------------------------------------------------------------------
1 |
2 |
{!! $field['hint'] !!}
16 | @endif 17 | @include('crud::fields.inc.wrapper_end') 18 | -------------------------------------------------------------------------------- /src/resources/views/crud/fields/textarea.blade.php: -------------------------------------------------------------------------------- 1 | {{-- textarea --}} 2 | @include('crud::fields.inc.wrapper_start') 3 | 4 | @include('crud::fields.inc.translatable_icon') 5 | 10 | 11 | {{-- HINT --}} 12 | @if (isset($field['hint'])) 13 |{!! $field['hint'] !!}
14 | @endif 15 | @include('crud::fields.inc.wrapper_end') 16 | -------------------------------------------------------------------------------- /src/resources/views/crud/fields/view.blade.php: -------------------------------------------------------------------------------- 1 | {{-- view field --}} 2 | @includeWhen(!isset($field['wrapper']) || $field['wrapper'] !== false, 'crud::fields.inc.wrapper_start') 3 | @include($field['view'], ['crud' => $crud, 'entry' => $entry ?? null, 'field' => $field]) 4 | @includeWhen(!isset($field['wrapper']) || $field['wrapper'] !== false, 'crud::fields.inc.wrapper_end') 5 | -------------------------------------------------------------------------------- /src/resources/views/crud/inc/button_stack.blade.php: -------------------------------------------------------------------------------- 1 | @if ($crud->buttons()->where('stack', $stack)->count()) 2 | @foreach ($crud->buttons()->where('stack', $stack) as $button) 3 | {!! $button->getHtml($entry ?? null) !!} 4 | @endforeach 5 | @endif 6 | -------------------------------------------------------------------------------- /src/resources/views/crud/inc/grouped_errors.blade.php: -------------------------------------------------------------------------------- 1 | {{-- Show the errors, if any --}} 2 | @if ($crud->groupedErrorsEnabled() && session()->get('errors')) 3 |