From: Vincent Vanwaelscappel Date: Tue, 10 Mar 2020 18:46:48 +0000 (+0100) Subject: wip #2413 @0.5 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=50ca8e012f31f7721f7acf562143a07203638af7;p=extranet.git wip #2413 @0.5 --- diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php new file mode 100644 index 0000000..8881bfd --- /dev/null +++ b/app/Http/Controllers/PageController.php @@ -0,0 +1,10 @@ + [ 'throttle:60,1', - 'bindings', + \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ]; @@ -57,6 +64,7 @@ class Kernel extends HttpKernel 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, @@ -73,7 +81,10 @@ class Kernel extends HttpKernel \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\Authenticate::class, + \Illuminate\Routing\Middleware\ThrottleRequests::class, \Illuminate\Session\Middleware\AuthenticateSession::class, + \Cubist\Backpack\app\Middleware\VariantSelector::class, + \Cubist\Backpack\app\Middleware\LocaleSelector::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \Illuminate\Auth\Middleware\Authorize::class, ]; diff --git a/app/Models/Locale.php b/app/Models/Locale.php new file mode 100644 index 0000000..fd75ee0 --- /dev/null +++ b/app/Models/Locale.php @@ -0,0 +1,8 @@ + 'Phone', 'type' => 'Phone']); - $this->addField(['name' => 'phone', + $this->addField(['name' => 'mobile', 'label' => 'Mobile', 'type' => 'Phone']); } diff --git a/bootstrap/app.php b/bootstrap/app.php index 037e17d..521fba4 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -11,7 +11,7 @@ | */ -$app = new Illuminate\Foundation\Application( +$app = new Cubist\Backpack\app\Application( $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__) ); diff --git a/config/auth.php b/config/auth.php index 7817501..8d5b185 100644 --- a/config/auth.php +++ b/config/auth.php @@ -14,7 +14,7 @@ return [ */ 'defaults' => [ - 'guard' => 'web', + 'guard' => 'admin', 'passwords' => 'users', ], diff --git a/config/backup.php b/config/backup.php index 2474a70..deaa8a4 100644 --- a/config/backup.php +++ b/config/backup.php @@ -17,7 +17,7 @@ return [ * --disable-notifications */ 'backpack_flags' => [ - '--disable-notifications' => true, + '--disable-notifications'=> true, ], /* @@ -95,12 +95,12 @@ return [ 'notifications' => [ 'notifications' => [ - \Spatie\Backup\Notifications\Notifications\BackupHasFailed::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\BackupHasFailed::class => ['mail'], \Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFound::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\CleanupHasFailed::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\BackupWasSuccessful::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\HealthyBackupWasFound::class => ['mail'], - \Spatie\Backup\Notifications\Notifications\CleanupWasSuccessful::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\CleanupHasFailed::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\BackupWasSuccessful::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\HealthyBackupWasFound::class => ['mail'], + \Spatie\Backup\Notifications\Notifications\CleanupWasSuccessful::class => ['mail'], ], /* @@ -113,7 +113,7 @@ return [ * Here you can specify how emails should be sent. */ 'mail' => [ - 'to' => 'your@email.com', + 'to' => 'your@email.com', ], /* @@ -136,9 +136,9 @@ return [ */ 'monitorBackups' => [ [ - 'name' => env('APP_NAME'), - 'disks' => ['backups'], - 'newestBackupsShouldNotBeOlderThanDays' => 1, + 'name' => env('APP_NAME'), + 'disks' => ['backups'], + 'newestBackupsShouldNotBeOlderThanDays' => 1, 'storageUsedMayNotBeHigherThanMegabytes' => 5000, ], diff --git a/config/base.php b/config/base.php new file mode 100644 index 0000000..2e26533 --- /dev/null +++ b/config/base.php @@ -0,0 +1,277 @@ + 'D MMM YYYY', + 'default_datetime_format' => 'D MMM YYYY, HH:mm', + + // Direction, according to language + // (left-to-right vs right-to-left) + 'html_direction' => 'ltr', + + // ---- + // HEAD + // ---- + + // Project name. Shown in the window title. + 'project_name' => 'Quiz Factory', + + // When clicking on the admin panel's top-left logo/name, + // where should the user be redirected? + // The string below will be passed through the url() helper. + // - default: '' (project root) + // - alternative: 'admin' (the admin's dashboard) + 'home_link' => 'admin', + + // Content of the HTML meta robots tag to prevent indexing and link following + 'meta_robots_content' => 'noindex, nofollow', + + // ------ + // STYLES + // ------ + + // CSS files that are loaded in all pages, using Laravel's asset() helper + 'styles' => [ + 'packages/backpack/base/css/bundle.css', + + // Here's what's inside the bundle: + // 'packages/@digitallyhappy/backstrap/css/style.min.css', + // 'packages/animate.css/animate.min.css', + // 'packages/noty/noty.css', + + // Load the fonts separately (so that you can replace them at will): + 'packages/source-sans-pro/source-sans-pro.css', + 'packages/line-awesome/css/line-awesome.min.css', + + // Example (the fonts above, loaded from CDN instead) + // 'https://maxcdn.icons8.com/fonts/line-awesome/1.1/css/line-awesome-font-awesome.min.css', + // 'https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic', + + // Example (load font-awesome instead of line-awesome): + // 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.10.2/css/all.min.css', + ], + + // CSS files that are loaded in all pages, using Laravel's mix() helper + 'mix_styles' => [ // file_path => manifest_directory_path + // 'css/app.css' => '', + ], + + // ------ + // HEADER + // ------ + + // Menu logo. You can replace this with an tag if you have a logo. + 'project_logo' => 'PROJECTLOGO', + + // Show / hide breadcrumbs on admin panel pages. + 'breadcrumbs' => true, + + // Horizontal navbar classes. Helps make the admin panel look similar to your project's design. + 'header_class' => 'app-header bg-purple border-0 navbar navbar-color', + // For background colors use: bg-dark, bg-primary, bg-secondary, bg-danger, bg-warning, bg-success, bg-info, bg-blue, bg-light-blue, bg-indigo, bg-purple, bg-pink, bg-red, bg-orange, bg-yellow, bg-green, bg-teal, bg-cyan, bg-white + // For links to be visible on different background colors use: "navbar-dark", "navbar-light", "navbar-color" + + // ---- + // BODY + // ---- + + // Body element classes. + 'body_class' => 'app aside-menu-fixed sidebar-lg-show', + // Try sidebar-hidden, sidebar-fixed, sidebar-compact, sidebar-lg-show + + // Sidebar element classes. + 'sidebar_class' => 'sidebar sidebar-pills bg-light', + // Remove "sidebar-transparent" for standard sidebar look + // Try "sidebar-light" or "sidebar-dark" for dark/light links + // You can also add a background class like bg-dark, bg-primary, bg-secondary, bg-danger, bg-warning, bg-success, bg-info, bg-blue, bg-light-blue, bg-indigo, bg-purple, bg-pink, bg-red, bg-orange, bg-yellow, bg-green, bg-teal, bg-cyan + + // ------ + // FOOTER + // ------ + + // Footer element classes. + 'footer_class' => 'app-footer d-print-none', + // hide it with d-none + // change background color with bg-dark, bg-primary, bg-secondary, bg-danger, bg-warning, bg-success, bg-info, bg-blue, bg-light-blue, bg-indigo, bg-purple, bg-pink, bg-red, bg-orange, bg-yellow, bg-green, bg-teal, bg-cyan, bg-white + + // Developer or company name. Shown in footer. + 'developer_name' => 'Cubedesigners', + + // Developer website. Link in footer. Type false if you want to hide it. + 'developer_link' => 'https://www.cubedesigners.com', + + // Show powered by Laravel Backpack in the footer? true/false + 'show_powered_by' => false, + + // ------- + // SCRIPTS + // ------- + + // JS files that are loaded in all pages, using Laravel's asset() helper + 'scripts' => [ + // Backstrap includes jQuery, Bootstrap, CoreUI, PNotify, Popper + 'packages/backpack/base/js/bundle.js', + + // examples (everything inside the bundle, loaded from CDN) + // 'https://code.jquery.com/jquery-3.4.1.min.js', + // 'https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js', + // 'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js', + // 'https://unpkg.com/@coreui/coreui/dist/js/coreui.min.js', + // 'https://cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/pace.min.js', + // 'https://unpkg.com/sweetalert/dist/sweetalert.min.js', + // 'https://cdnjs.cloudflare.com/ajax/libs/noty/3.1.4/noty.min.js' + + // examples (VueJS or React) + // 'https://unpkg.com/vue@2.4.4/dist/vue.min.js', + // 'https://unpkg.com/react@16/umd/react.production.min.js', + // 'https://unpkg.com/react-dom@16/umd/react-dom.production.min.js', + ], + + // JS files that are loaded in all pages, using Laravel's mix() helper + 'mix_scripts' => [// file_path => manifest_directory_path + // 'js/app.js' => '', + ], + + // ------------- + // CACHE-BUSTING + // ------------- + + // All JS and CSS assets defined above have this string appended as query string (?v=string). + // If you want to manually trigger cachebusting for all styles and scripts, + // append or prepent something to the string below, so that it's different. + 'cachebusting_string' => \PackageVersions\Versions::getVersion('backpack/crud'), + + /* + |-------------------------------------------------------------------------- + | Registration Open + |-------------------------------------------------------------------------- + | + | Choose whether new users/admins are allowed to register. + | This will show the Register button on the login page and allow access to the + | Register functions in AuthController. + | + | By default the registration is open only on localhost. + */ + + 'registration_open' => env('BACKPACK_REGISTRATION_OPEN', env('APP_ENV') === 'local'), + + /* + |-------------------------------------------------------------------------- + | Routing + |-------------------------------------------------------------------------- + */ + + // The prefix used in all base routes (the 'admin' in admin/dashboard) + // You can make sure all your URLs use this prefix by using the backpack_url() helper instead of url() + 'route_prefix' => 'admin', + + // Set this to false if you would like to use your own AuthController and PasswordController + // (you then need to setup your auth routes manually in your routes.php file) + 'setup_auth_routes' => true, + + // Set this to false if you would like to skip adding the dashboard routes + // (you then need to overwrite the login route on your AuthController) + 'setup_dashboard_routes' => true, + + // Set this to false if you would like to skip adding "my account" routes + // (you then need to manually define the routes in your web.php) + 'setup_my_account_routes' => true, + + /* + |-------------------------------------------------------------------------- + | Authentication + |-------------------------------------------------------------------------- + */ + + // Fully qualified namespace of the User model + 'user_model_fqn' => App\Models\BackpackUser::class, + + // The classes for the middleware to check if the visitor is an admin + // Can be a single class or an array of clases + 'middleware_class' => [ + App\Http\Middleware\CheckIfAdmin::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + // \Backpack\CRUD\app\Http\Middleware\UseBackpackAuthGuardInsteadOfDefaultAuthGuard::class, + ], + + // Alias for that middleware + 'middleware_key' => 'admin', + // Note: It's recommended to use the backpack_middleware() helper everywhere, which pulls this key for you. + + // Username column for authentication + // The Backpack default is the same as the Laravel default (email) + // If you need to switch to username, you also need to create that column in your db + 'authentication_column' => 'email', + 'authentication_column_name' => 'Email', + + // The guard that protects the Backpack admin panel. + // If null, the config.auth.defaults.guard value will be used. + 'guard' => 'backpack', + + // The password reset configuration for Backpack. + // If null, the config.auth.defaults.passwords value will be used. + 'passwords' => 'backpack', + + // What kind of avatar will you like to show to the user? + // Default: gravatar (automatically use the gravatar for his email) + // Other options: + // - placehold (generic image with his first letter) + // - example_method_name (specify the method on the User model that returns the URL) + 'avatar_type' => 'gravatar', + + /* + |-------------------------------------------------------------------------- + | Theme (User Interface) + |-------------------------------------------------------------------------- + */ + // Change the view namespace in order to load a different theme than the one Backpack provides. + // You can create child themes yourself, by creating a view folder anywhere in your resources/views + // and choosing that view_namespace instead of the default one. Backpack will load a file from there + // if it exists, otherwise it will load it from the default namespace ("backpack::"). + + 'view_namespace' => 'backpack::', + + // EXAMPLE: if you create a new folder in resources/views/vendor/myname/mypackage, + // your namespace would be the one below. IMPORTANT: in this case the namespace ends with a dot. + // 'view_namespace' => 'vendor.myname.mypackage.', + + /* + |-------------------------------------------------------------------------- + | File System + |-------------------------------------------------------------------------- + */ + + // Backpack\Base sets up its own filesystem disk, just like you would by + // adding an entry to your config/filesystems.php. It points to the root + // of your project and it's used throughout all Backpack packages. + // + // You can rename this disk here. Default: root + 'root_disk_name' => 'root', + + /* + |-------------------------------------------------------------------------- + | License Code + |-------------------------------------------------------------------------- + | + | If you, your employer or your client make money by using Backpack, you need + | to purchase a license. A license code will be provided after purchase, + | which you can put here or in your ENV file in staging & production. + | + | More info and payment form on: + | https://www.backpackforlaravel.com + | + */ + + 'license_code' => env('BACKPACK_LICENSE', false), +]; diff --git a/config/blade-svg.php b/config/blade-svg.php new file mode 100644 index 0000000..4d4a955 --- /dev/null +++ b/config/blade-svg.php @@ -0,0 +1,72 @@ + 'public/images', + + /* + |-------------------------------------------------------------------------- + | Spritesheet Path + |-------------------------------------------------------------------------- + | + | If you would rather have one spritesheet than a lot of individual SVG + | files, you may specify a path to a spritesheet. The SVG images are + | extracted from this spritesheet to be rendered out individually. + | + */ + + 'spritesheet_path' => 'resources/svg/spritesheet.svg', + + /* + |-------------------------------------------------------------------------- + | Spritesheet URL + |-------------------------------------------------------------------------- + | + | If you don't want to embed the spritesheet directly in your markup and + | would rather reference an external URL, you can specify the path to + | the external spritesheet to use with this configuration option. + | + */ + + 'spritesheet_url' => '', + + /* + |-------------------------------------------------------------------------- + | Inline Rendering + |-------------------------------------------------------------------------- + | + | This value will determine whether or not the SVG should be rendered inline + | or if it should reference a spritesheet through a element. + | + | Default: true + | + */ + + 'inline' => true, + + /* + |-------------------------------------------------------------------------- + | Optional Class + |-------------------------------------------------------------------------- + | + | If you would like to have CSS classes applied to your SVGs, you must + | specify them here. Much like how you would define multiple classes + | in an HTML attribute, you may separate each class using a space. + | + | Default: '' + | + */ + + 'class' => 'svg fill-current', +]; diff --git a/config/cache.php b/config/cache.php index 0c30969..c291ff0 100644 --- a/config/cache.php +++ b/config/cache.php @@ -59,7 +59,7 @@ return [ env('MEMCACHED_PASSWORD'), ], 'options' => [ - // Memcached::OPT_CONNECT_TIMEOUT => 2000, + // Memcached::OPT_CONNECT_TIMEOUT => 2000, ], 'servers' => [ [ @@ -88,6 +88,6 @@ return [ | */ - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_' . Str::slug(env('APP_ENV', 'env')) . '_cache'), ]; diff --git a/config/crud.php b/config/crud.php new file mode 100644 index 0000000..7114ca9 --- /dev/null +++ b/config/crud.php @@ -0,0 +1,598 @@ + [ + + /* + * List Operation + */ + 'list' => [ + // Define the size/looks of the content div for all CRUDs + // To override per view use $this->crud->setListContentClass('class-string') + 'contentClass' => 'col-md-12', + + // enable the datatables-responsive plugin, which hides columns if they don't fit? + // if not, a horizontal scrollbar will be shown instead + 'responsiveTable' => true, + + // stores pagination and filters in localStorage for two hours + // whenever the user tries to see that page, backpack loads the previous pagination and filtration + 'persistentTable' => true, + + // the time the table will be persisted in minutes + // after this the table info is cleared from localStorage. + // use false to never force localStorage clear. (default) + // keep in mind: User can clear his localStorage whenever he wants. + + 'persistentTableDuration' => false, + + // How many items should be shown by default by the Datatable? + // This value can be overwritten on a specific CRUD by calling + // $this->crud->setDefaultPageLength(50); + 'defaultPageLength' => 10, + + // A 1D array of options which will be used for both the displayed option and the value, or + // A 2D array in which the first array is used to define the value options and the second array the displayed options + // If a 2D array is used, strings in the right hand array will be automatically run through trans() + 'pageLengthMenu' => [[10, 25, 50, 100, -1], [10, 25, 50, 100, 'backpack::crud.all']], + + // How important is it for the action buttons to be visible? + // - 0 - most important + // - 1 - as important as bulk buttons + // - 2-3 - more important than the rest of the columns + // - 4 - less important than most columns + 'actionsColumnPriority' => 1, + ], + + /* + * Create Operation + */ + 'create' => [ + // Define the size/looks of the content div for all CRUDs + // To override per view use $this->crud->setCreateContentClass('class-string') + 'contentClass' => 'col-md-8 bold-labels', + + // When using tabbed forms (create & update), what kind of tabs would you like? + 'tabsType' => 'horizontal', //options: horizontal, vertical + + // How would you like the validation errors to be shown? + 'groupedErrors' => true, + 'inlineErrors' => true, + + // when the page loads, put the cursor on the first input? + 'autoFocusOnFirstField' => true, + + // Where do you want to redirect the user by default, save? + // options: save_and_back, save_and_edit, save_and_new + 'defaultSaveAction' => 'save_and_back', + + // When the user chooses "save and back" or "save and new", show a bubble + // for the fact that the default save action has been changed? + 'showSaveActionChange' => true, //options: true, false + + // Before saving the entry, how would you like the request to be stripped? + // - false - ONLY save inputs that have fields (safest) + // - [x, y, z] - save ALL inputs, EXCEPT the ones given in this array + 'saveAllInputsExcept' => false, + // 'saveAllInputsExcept' => ['_token', '_method', 'http_referrer', 'current_tab', 'save_action'], + ], + + /* + * Update Operation + */ + 'update' => [ + // Define the size/looks of the content div for all CRUDs + // To override per view use $this->crud->setEditContentClass('class-string') + 'contentClass' => 'col-md-8 bold-labels', + + // When using tabbed forms (create & update), what kind of tabs would you like? + 'tabsType' => 'horizontal', //options: horizontal, vertical + + // How would you like the validation errors to be shown? + 'groupedErrors' => true, + 'inlineErrors' => true, + + // when the page loads, put the cursor on the first input? + 'autoFocusOnFirstField' => true, + + // Where do you want to redirect the user by default, save? + // options: save_and_back, save_and_edit, save_and_new + 'defaultSaveAction' => 'save_and_back', + + // When the user chooses "save and back" or "save and new", show a bubble + // for the fact that the default save action has been changed? + 'showSaveActionChange' => true, //options: true, false + + // Before saving the entry, how would you like the request to be stripped? + // - false - Save ONLY inputs that have a field (safest, default); + // - [x, y, z] - Save ALL inputs, EXCEPT the ones given in this array; + 'saveAllInputsExcept' => false, + // 'saveAllInputsExcept' => ['_token', '_method', 'http_referrer', 'current_tab', 'save_action'], + ], + + /* + * Show Operation + */ + 'show' => [ + // Define the size/looks of the content div for all CRUDs + // To override per Controller use $this->crud->setShowContentClass('class-string') + 'contentClass' => 'col-md-8', + ], + + /* + * Reorder Operation + */ + 'reorder' => [ + // Define the size/looks of the content div for all CRUDs + // To override per Controller use $this->crud->setReorderContentClass('class-string') + 'contentClass' => 'col-md-8 col-md-offset-2', + ], + + /* + * Revisions Operation + */ + 'revisions' => [ + // Define the size/looks of the content div for all CRUDs + // To override per view use $this->crud->setRevisionsTimelineContentClass('class-string') + 'timelineContentClass' => 'col-md-12', + ], + + ], + + /* + |------------------- + | TRANSLATABLE CRUDS + |------------------- + */ + + 'show_translatable_field_icon' => true, + 'translatable_field_icon_position' => 'right', // left or right + + 'locales' => [ + // "af_NA" => "Afrikaans (Namibia)", + // "af_ZA" => "Afrikaans (South Africa)", + // "af" => "Afrikaans", + // "ak_GH" => "Akan (Ghana)", + // "ak" => "Akan", + // "sq_AL" => "Albanian (Albania)", + // "sq" => "Albanian", + // "am_ET" => "Amharic (Ethiopia)", + // "am" => "Amharic", + // "ar_DZ" => "Arabic (Algeria)", + // "ar_BH" => "Arabic (Bahrain)", + // "ar_EG" => "Arabic (Egypt)", + // "ar_IQ" => "Arabic (Iraq)", + // "ar_JO" => "Arabic (Jordan)", + // "ar_KW" => "Arabic (Kuwait)", + // "ar_LB" => "Arabic (Lebanon)", + // "ar_LY" => "Arabic (Libya)", + // "ar_MA" => "Arabic (Morocco)", + // "ar_OM" => "Arabic (Oman)", + // "ar_QA" => "Arabic (Qatar)", + // "ar_SA" => "Arabic (Saudi Arabia)", + // "ar_SD" => "Arabic (Sudan)", + // "ar_SY" => "Arabic (Syria)", + // "ar_TN" => "Arabic (Tunisia)", + // "ar_AE" => "Arabic (United Arab Emirates)", + // "ar_YE" => "Arabic (Yemen)", + // "ar" => "Arabic", + // "hy_AM" => "Armenian (Armenia)", + // "hy" => "Armenian", + // "as_IN" => "Assamese (India)", + // "as" => "Assamese", + // "asa_TZ" => "Asu (Tanzania)", + // "asa" => "Asu", + // "az_Cyrl" => "Azerbaijani (Cyrillic)", + // "az_Cyrl_AZ" => "Azerbaijani (Cyrillic, Azerbaijan)", + // "az_Latn" => "Azerbaijani (Latin)", + // "az_Latn_AZ" => "Azerbaijani (Latin, Azerbaijan)", + // "az" => "Azerbaijani", + // "bm_ML" => "Bambara (Mali)", + // "bm" => "Bambara", + // "eu_ES" => "Basque (Spain)", + // "eu" => "Basque", + // "be_BY" => "Belarusian (Belarus)", + // "be" => "Belarusian", + // "bem_ZM" => "Bemba (Zambia)", + // "bem" => "Bemba", + // "bez_TZ" => "Bena (Tanzania)", + // "bez" => "Bena", + // "bn_BD" => "Bengali (Bangladesh)", + // "bn_IN" => "Bengali (India)", + // "bn" => "Bengali", + // "bs_BA" => "Bosnian (Bosnia and Herzegovina)", + // "bs" => "Bosnian", + // "bg_BG" => "Bulgarian (Bulgaria)", + // "bg" => "Bulgarian", + // "my_MM" => "Burmese (Myanmar [Burma])", + // "my" => "Burmese", + // "ca_ES" => "Catalan (Spain)", + // "ca" => "Catalan", + // "tzm_Latn" => "Central Morocco Tamazight (Latin)", + // "tzm_Latn_MA" => "Central Morocco Tamazight (Latin, Morocco)", + // "tzm" => "Central Morocco Tamazight", + // "chr_US" => "Cherokee (United States)", + // "chr" => "Cherokee", + // "cgg_UG" => "Chiga (Uganda)", + // "cgg" => "Chiga", + // "zh_Hans" => "Chinese (Simplified Han)", + // "zh_Hans_CN" => "Chinese (Simplified Han, China)", + // "zh_Hans_HK" => "Chinese (Simplified Han, Hong Kong SAR China)", + // "zh_Hans_MO" => "Chinese (Simplified Han, Macau SAR China)", + // "zh_Hans_SG" => "Chinese (Simplified Han, Singapore)", + // "zh_Hant" => "Chinese (Traditional Han)", + // "zh_Hant_HK" => "Chinese (Traditional Han, Hong Kong SAR China)", + // "zh_Hant_MO" => "Chinese (Traditional Han, Macau SAR China)", + // "zh_Hant_TW" => "Chinese (Traditional Han, Taiwan)", + // "zh" => "Chinese", + // "kw_GB" => "Cornish (United Kingdom)", + // "kw" => "Cornish", + // "hr_HR" => "Croatian (Croatia)", + // "hr" => "Croatian", + // "cs_CZ" => "Czech (Czech Republic)", + // "cs" => "Czech", + // "da_DK" => "Danish (Denmark)", + // "da" => "Danish", + // "nl_BE" => "Dutch (Belgium)", + // "nl_NL" => "Dutch (Netherlands)", + // "nl" => "Dutch", + // "ebu_KE" => "Embu (Kenya)", + // "ebu" => "Embu", + // "en_AS" => "English (American Samoa)", + // "en_AU" => "English (Australia)", + // "en_BE" => "English (Belgium)", + // "en_BZ" => "English (Belize)", + // "en_BW" => "English (Botswana)", + // "en_CA" => "English (Canada)", + // "en_GU" => "English (Guam)", + // "en_HK" => "English (Hong Kong SAR China)", + // "en_IN" => "English (India)", + // "en_IE" => "English (Ireland)", + // "en_JM" => "English (Jamaica)", + // "en_MT" => "English (Malta)", + // "en_MH" => "English (Marshall Islands)", + // "en_MU" => "English (Mauritius)", + // "en_NA" => "English (Namibia)", + // "en_NZ" => "English (New Zealand)", + // "en_MP" => "English (Northern Mariana Islands)", + // "en_PK" => "English (Pakistan)", + // "en_PH" => "English (Philippines)", + // "en_SG" => "English (Singapore)", + // "en_ZA" => "English (South Africa)", + // "en_TT" => "English (Trinidad and Tobago)", + // "en_UM" => "English (U.S. Minor Outlying Islands)", + // "en_VI" => "English (U.S. Virgin Islands)", + // "en_GB" => "English (United Kingdom)", + // "en_US" => "English (United States)", + // "en_ZW" => "English (Zimbabwe)", + 'en' => 'English', + // "eo" => "Esperanto", + // "et_EE" => "Estonian (Estonia)", + // "et" => "Estonian", + // "ee_GH" => "Ewe (Ghana)", + // "ee_TG" => "Ewe (Togo)", + // "ee" => "Ewe", + // "fo_FO" => "Faroese (Faroe Islands)", + // "fo" => "Faroese", + // "fil_PH" => "Filipino (Philippines)", + // "fil" => "Filipino", + // "fi_FI" => "Finnish (Finland)", + // "fi" => "Finnish", + // "fr_BE" => "French (Belgium)", + // "fr_BJ" => "French (Benin)", + // "fr_BF" => "French (Burkina Faso)", + // "fr_BI" => "French (Burundi)", + // "fr_CM" => "French (Cameroon)", + // "fr_CA" => "French (Canada)", + // "fr_CF" => "French (Central African Republic)", + // "fr_TD" => "French (Chad)", + // "fr_KM" => "French (Comoros)", + // "fr_CG" => "French (Congo - Brazzaville)", + // "fr_CD" => "French (Congo - Kinshasa)", + // "fr_CI" => "French (Côte d’Ivoire)", + // "fr_DJ" => "French (Djibouti)", + // "fr_GQ" => "French (Equatorial Guinea)", + // "fr_FR" => "French (France)", + // "fr_GA" => "French (Gabon)", + // "fr_GP" => "French (Guadeloupe)", + // "fr_GN" => "French (Guinea)", + // "fr_LU" => "French (Luxembourg)", + // "fr_MG" => "French (Madagascar)", + // "fr_ML" => "French (Mali)", + // "fr_MQ" => "French (Martinique)", + // "fr_MC" => "French (Monaco)", + // "fr_NE" => "French (Niger)", + // "fr_RW" => "French (Rwanda)", + // "fr_RE" => "French (Réunion)", + // "fr_BL" => "French (Saint Barthélemy)", + // "fr_MF" => "French (Saint Martin)", + // "fr_SN" => "French (Senegal)", + // "fr_CH" => "French (Switzerland)", + // "fr_TG" => "French (Togo)", + 'fr' => 'French', + // "ff_SN" => "Fulah (Senegal)", + // "ff" => "Fulah", + // "gl_ES" => "Galician (Spain)", + // "gl" => "Galician", + // "lg_UG" => "Ganda (Uganda)", + // "lg" => "Ganda", + // "ka_GE" => "Georgian (Georgia)", + // "ka" => "Georgian", + // "de_AT" => "German (Austria)", + // "de_BE" => "German (Belgium)", + // "de_DE" => "German (Germany)", + // "de_LI" => "German (Liechtenstein)", + // "de_LU" => "German (Luxembourg)", + // "de_CH" => "German (Switzerland)", + // "de" => "German", + // "el_CY" => "Greek (Cyprus)", + // "el_GR" => "Greek (Greece)", + // "el" => "Greek", + // "gu_IN" => "Gujarati (India)", + // "gu" => "Gujarati", + // "guz_KE" => "Gusii (Kenya)", + // "guz" => "Gusii", + // "ha_Latn" => "Hausa (Latin)", + // "ha_Latn_GH" => "Hausa (Latin, Ghana)", + // "ha_Latn_NE" => "Hausa (Latin, Niger)", + // "ha_Latn_NG" => "Hausa (Latin, Nigeria)", + // "ha" => "Hausa", + // "haw_US" => "Hawaiian (United States)", + // "haw" => "Hawaiian", + // "he_IL" => "Hebrew (Israel)", + // "he" => "Hebrew", + // "hi_IN" => "Hindi (India)", + // "hi" => "Hindi", + // "hu_HU" => "Hungarian (Hungary)", + // "hu" => "Hungarian", + // "is_IS" => "Icelandic (Iceland)", + // "is" => "Icelandic", + // "ig_NG" => "Igbo (Nigeria)", + // "ig" => "Igbo", + // "id_ID" => "Indonesian (Indonesia)", + // "id" => "Indonesian", + // "ga_IE" => "Irish (Ireland)", + // "ga" => "Irish", + // "it_IT" => "Italian (Italy)", + // "it_CH" => "Italian (Switzerland)", + 'it' => 'Italian', + // "ja_JP" => "Japanese (Japan)", + // "ja" => "Japanese", + // "kea_CV" => "Kabuverdianu (Cape Verde)", + // "kea" => "Kabuverdianu", + // "kab_DZ" => "Kabyle (Algeria)", + // "kab" => "Kabyle", + // "kl_GL" => "Kalaallisut (Greenland)", + // "kl" => "Kalaallisut", + // "kln_KE" => "Kalenjin (Kenya)", + // "kln" => "Kalenjin", + // "kam_KE" => "Kamba (Kenya)", + // "kam" => "Kamba", + // "kn_IN" => "Kannada (India)", + // "kn" => "Kannada", + // "kk_Cyrl" => "Kazakh (Cyrillic)", + // "kk_Cyrl_KZ" => "Kazakh (Cyrillic, Kazakhstan)", + // "kk" => "Kazakh", + // "km_KH" => "Khmer (Cambodia)", + // "km" => "Khmer", + // "ki_KE" => "Kikuyu (Kenya)", + // "ki" => "Kikuyu", + // "rw_RW" => "Kinyarwanda (Rwanda)", + // "rw" => "Kinyarwanda", + // "kok_IN" => "Konkani (India)", + // "kok" => "Konkani", + // "ko_KR" => "Korean (South Korea)", + // "ko" => "Korean", + // "khq_ML" => "Koyra Chiini (Mali)", + // "khq" => "Koyra Chiini", + // "ses_ML" => "Koyraboro Senni (Mali)", + // "ses" => "Koyraboro Senni", + // "lag_TZ" => "Langi (Tanzania)", + // "lag" => "Langi", + // "lv_LV" => "Latvian (Latvia)", + // "lv" => "Latvian", + // "lt_LT" => "Lithuanian (Lithuania)", + // "lt" => "Lithuanian", + // "luo_KE" => "Luo (Kenya)", + // "luo" => "Luo", + // "luy_KE" => "Luyia (Kenya)", + // "luy" => "Luyia", + // "mk_MK" => "Macedonian (Macedonia)", + // "mk" => "Macedonian", + // "jmc_TZ" => "Machame (Tanzania)", + // "jmc" => "Machame", + // "kde_TZ" => "Makonde (Tanzania)", + // "kde" => "Makonde", + // "mg_MG" => "Malagasy (Madagascar)", + // "mg" => "Malagasy", + // "ms_BN" => "Malay (Brunei)", + // "ms_MY" => "Malay (Malaysia)", + // "ms" => "Malay", + // "ml_IN" => "Malayalam (India)", + // "ml" => "Malayalam", + // "mt_MT" => "Maltese (Malta)", + // "mt" => "Maltese", + // "gv_GB" => "Manx (United Kingdom)", + // "gv" => "Manx", + // "mr_IN" => "Marathi (India)", + // "mr" => "Marathi", + // "mas_KE" => "Masai (Kenya)", + // "mas_TZ" => "Masai (Tanzania)", + // "mas" => "Masai", + // "mer_KE" => "Meru (Kenya)", + // "mer" => "Meru", + // "mfe_MU" => "Morisyen (Mauritius)", + // "mfe" => "Morisyen", + // "naq_NA" => "Nama (Namibia)", + // "naq" => "Nama", + // "ne_IN" => "Nepali (India)", + // "ne_NP" => "Nepali (Nepal)", + // "ne" => "Nepali", + // "nd_ZW" => "North Ndebele (Zimbabwe)", + // "nd" => "North Ndebele", + // "nb_NO" => "Norwegian Bokmål (Norway)", + // "nb" => "Norwegian Bokmål", + // "nn_NO" => "Norwegian Nynorsk (Norway)", + // "nn" => "Norwegian Nynorsk", + // "nyn_UG" => "Nyankole (Uganda)", + // "nyn" => "Nyankole", + // "or_IN" => "Oriya (India)", + // "or" => "Oriya", + // "om_ET" => "Oromo (Ethiopia)", + // "om_KE" => "Oromo (Kenya)", + // "om" => "Oromo", + // "ps_AF" => "Pashto (Afghanistan)", + // "ps" => "Pashto", + // "fa_AF" => "Persian (Afghanistan)", + // "fa_IR" => "Persian (Iran)", + // "fa" => "Persian", + // "pl_PL" => "Polish (Poland)", + // "pl" => "Polish", + // "pt_BR" => "Portuguese (Brazil)", + // "pt_GW" => "Portuguese (Guinea-Bissau)", + // "pt_MZ" => "Portuguese (Mozambique)", + // "pt_PT" => "Portuguese (Portugal)", + // "pt" => "Portuguese", + // "pa_Arab" => "Punjabi (Arabic)", + // "pa_Arab_PK" => "Punjabi (Arabic, Pakistan)", + // "pa_Guru" => "Punjabi (Gurmukhi)", + // "pa_Guru_IN" => "Punjabi (Gurmukhi, India)", + // "pa" => "Punjabi", + // "ro_MD" => "Romanian (Moldova)", + // "ro_RO" => "Romanian (Romania)", + 'ro' => 'Romanian', + // "rm_CH" => "Romansh (Switzerland)", + // "rm" => "Romansh", + // "rof_TZ" => "Rombo (Tanzania)", + // "rof" => "Rombo", + // "ru_MD" => "Russian (Moldova)", + // "ru_RU" => "Russian (Russia)", + // "ru_UA" => "Russian (Ukraine)", + // "ru" => "Russian", + // "rwk_TZ" => "Rwa (Tanzania)", + // "rwk" => "Rwa", + // "saq_KE" => "Samburu (Kenya)", + // "saq" => "Samburu", + // "sg_CF" => "Sango (Central African Republic)", + // "sg" => "Sango", + // "seh_MZ" => "Sena (Mozambique)", + // "seh" => "Sena", + // "sr_Cyrl" => "Serbian (Cyrillic)", + // "sr_Cyrl_BA" => "Serbian (Cyrillic, Bosnia and Herzegovina)", + // "sr_Cyrl_ME" => "Serbian (Cyrillic, Montenegro)", + // "sr_Cyrl_RS" => "Serbian (Cyrillic, Serbia)", + // "sr_Latn" => "Serbian (Latin)", + // "sr_Latn_BA" => "Serbian (Latin, Bosnia and Herzegovina)", + // "sr_Latn_ME" => "Serbian (Latin, Montenegro)", + // "sr_Latn_RS" => "Serbian (Latin, Serbia)", + // "sr" => "Serbian", + // "sn_ZW" => "Shona (Zimbabwe)", + // "sn" => "Shona", + // "ii_CN" => "Sichuan Yi (China)", + // "ii" => "Sichuan Yi", + // "si_LK" => "Sinhala (Sri Lanka)", + // "si" => "Sinhala", + // "sk_SK" => "Slovak (Slovakia)", + // "sk" => "Slovak", + // "sl_SI" => "Slovenian (Slovenia)", + // "sl" => "Slovenian", + // "xog_UG" => "Soga (Uganda)", + // "xog" => "Soga", + // "so_DJ" => "Somali (Djibouti)", + // "so_ET" => "Somali (Ethiopia)", + // "so_KE" => "Somali (Kenya)", + // "so_SO" => "Somali (Somalia)", + // "so" => "Somali", + // "es_AR" => "Spanish (Argentina)", + // "es_BO" => "Spanish (Bolivia)", + // "es_CL" => "Spanish (Chile)", + // "es_CO" => "Spanish (Colombia)", + // "es_CR" => "Spanish (Costa Rica)", + // "es_DO" => "Spanish (Dominican Republic)", + // "es_EC" => "Spanish (Ecuador)", + // "es_SV" => "Spanish (El Salvador)", + // "es_GQ" => "Spanish (Equatorial Guinea)", + // "es_GT" => "Spanish (Guatemala)", + // "es_HN" => "Spanish (Honduras)", + // "es_419" => "Spanish (Latin America)", + // "es_MX" => "Spanish (Mexico)", + // "es_NI" => "Spanish (Nicaragua)", + // "es_PA" => "Spanish (Panama)", + // "es_PY" => "Spanish (Paraguay)", + // "es_PE" => "Spanish (Peru)", + // "es_PR" => "Spanish (Puerto Rico)", + // "es_ES" => "Spanish (Spain)", + // "es_US" => "Spanish (United States)", + // "es_UY" => "Spanish (Uruguay)", + // "es_VE" => "Spanish (Venezuela)", + // "es" => "Spanish", + // "sw_KE" => "Swahili (Kenya)", + // "sw_TZ" => "Swahili (Tanzania)", + // "sw" => "Swahili", + // "sv_FI" => "Swedish (Finland)", + // "sv_SE" => "Swedish (Sweden)", + // "sv" => "Swedish", + // "gsw_CH" => "Swiss German (Switzerland)", + // "gsw" => "Swiss German", + // "shi_Latn" => "Tachelhit (Latin)", + // "shi_Latn_MA" => "Tachelhit (Latin, Morocco)", + // "shi_Tfng" => "Tachelhit (Tifinagh)", + // "shi_Tfng_MA" => "Tachelhit (Tifinagh, Morocco)", + // "shi" => "Tachelhit", + // "dav_KE" => "Taita (Kenya)", + // "dav" => "Taita", + // "ta_IN" => "Tamil (India)", + // "ta_LK" => "Tamil (Sri Lanka)", + // "ta" => "Tamil", + // "te_IN" => "Telugu (India)", + // "te" => "Telugu", + // "teo_KE" => "Teso (Kenya)", + // "teo_UG" => "Teso (Uganda)", + // "teo" => "Teso", + // "th_TH" => "Thai (Thailand)", + // "th" => "Thai", + // "bo_CN" => "Tibetan (China)", + // "bo_IN" => "Tibetan (India)", + // "bo" => "Tibetan", + // "ti_ER" => "Tigrinya (Eritrea)", + // "ti_ET" => "Tigrinya (Ethiopia)", + // "ti" => "Tigrinya", + // "to_TO" => "Tonga (Tonga)", + // "to" => "Tonga", + // "tr_TR" => "Turkish (Turkey)", + // "tr" => "Turkish", + // "uk_UA" => "Ukrainian (Ukraine)", + // "uk" => "Ukrainian", + // "ur_IN" => "Urdu (India)", + // "ur_PK" => "Urdu (Pakistan)", + // "ur" => "Urdu", + // "uz_Arab" => "Uzbek (Arabic)", + // "uz_Arab_AF" => "Uzbek (Arabic, Afghanistan)", + // "uz_Cyrl" => "Uzbek (Cyrillic)", + // "uz_Cyrl_UZ" => "Uzbek (Cyrillic, Uzbekistan)", + // "uz_Latn" => "Uzbek (Latin)", + // "uz_Latn_UZ" => "Uzbek (Latin, Uzbekistan)", + // "uz" => "Uzbek", + // "vi_VN" => "Vietnamese (Vietnam)", + // "vi" => "Vietnamese", + // "vun_TZ" => "Vunjo (Tanzania)", + // "vun" => "Vunjo", + // "cy_GB" => "Welsh (United Kingdom)", + // "cy" => "Welsh", + // "yo_NG" => "Yoruba (Nigeria)", + // "yo" => "Yoruba", + // "zu_ZA" => "Zulu (South Africa)", + // "zu" => "Zulu" + ], + +]; diff --git a/config/cubist-front.php b/config/cubist-front.php new file mode 100644 index 0000000..a1b26e6 --- /dev/null +++ b/config/cubist-front.php @@ -0,0 +1,2 @@ + env('CUBIST_INTERNAL_SEARCH', false), + 'internal_search_index' => env('CUBIST_INTERNAL_SEARCH_INDEX', strtolower(env('APP_NAME', 'App_name') . '_' . env('APP_ENV', 'dev'))), + 'page_model' => '\App\Models\Page', + 'settings_model' => '\App\Models\Settings', + 'locale_model' => '\App\Models\Locale', + 'seo_robots' => env('SEO_ROBOTS', true), +]; + diff --git a/config/elasticsearch.php b/config/elasticsearch.php new file mode 100644 index 0000000..98c1ecd --- /dev/null +++ b/config/elasticsearch.php @@ -0,0 +1,206 @@ + 'default', + + /** + * These are the connection parameters used when building a client. + */ + + 'connections' => [ + + 'default' => [ + + /** + * Hosts + * + * This is an array of hosts that the client will connect to. It can be a + * single host, or an array if you are running a cluster of Elasticsearch + * instances. + * + * This is the only configuration value that is mandatory. + * + * Presently using "extended" host configuration method + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_configuration.html#_extended_host_configuration + * + * There is also the shorter "inline" configuration method available + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_configuration.html#_inline_host_configuration + */ + + 'hosts' => [ + [ + 'host' => env('ELASTICSEARCH_HOST', '127.0.0.1'), + 'port' => env('ELASTICSEARCH_PORT', 9200), + 'scheme' => env('ELASTICSEARCH_SCHEME', null), + 'user' => env('ELASTICSEARCH_USER', null), + 'pass' => env('ELASTICSEARCH_PASS', null), + + // If you are connecting to an Elasticsearch instance on AWS, you will need these values as well + 'aws' => env('AWS_ELASTICSEARCH_ENABLED', false), + 'aws_region' => env('AWS_REGION', ''), + 'aws_key' => env('AWS_ACCESS_KEY_ID', ''), + 'aws_secret' => env('AWS_SECRET_ACCESS_KEY', '') + ], + ], + + /** + * SSL + * + * If your Elasticsearch instance uses an out-dated or self-signed SSL + * certificate, you will need to pass in the certificate bundle. This can + * either be the path to the certificate file (for self-signed certs), or a + * package like https://github.com/Kdyby/CurlCaBundle. See the documentation + * below for all the details. + * + * If you are using SSL instances, and the certificates are up-to-date and + * signed by a public certificate authority, then you can leave this null and + * just use "https" in the host path(s) above and you should be fine. + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_security.html#_ssl_encryption_2 + */ + + 'sslVerification' => null, + + /** + * Logging + * + * Logging is handled by passing in an instance of Monolog\Logger (which + * coincidentally is what Laravel's default logger is). + * + * If logging is enabled, you either need to set the path and log level + * (some defaults are given for you below), or you can use a custom logger by + * setting 'logObject' to an instance of Psr\Log\LoggerInterface. In fact, + * if you just want to use the default Laravel logger, then set 'logObject' + * to \Log::getMonolog(). + * + * Note: 'logObject' takes precedent over 'logPath'/'logLevel', so set + * 'logObject' null if you just want file-based logging to a custom path. + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_configuration.html#enabling_logger + */ + + 'logging' => false, + + // If you have an existing instance of Monolog you can use it here. + // 'logObject' => \Log::getMonolog(), + + 'logPath' => storage_path('logs/elasticsearch.log'), + + 'logLevel' => Monolog\Logger::INFO, + + /** + * Retries + * + * By default, the client will retry n times, where n = number of nodes in + * your cluster. If you would like to disable retries, or change the number, + * you can do so here. + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_configuration.html#_set_retries + */ + + 'retries' => null, + + /** + * The remainder of the configuration options can almost always be left + * as-is unless you have specific reasons to change them. Refer to the + * appropriate sections in the Elasticsearch documentation for what each option + * does and what values it expects. + */ + + /** + * Sniff On Start + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_configuration.html + */ + + 'sniffOnStart' => false, + + /** + * HTTP Handler + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_configuration.html#_configure_the_http_handler + * @see http://ringphp.readthedocs.org/en/latest/client_handlers.html + */ + + 'httpHandler' => null, + + /** + * Connection Pool + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_configuration.html#_setting_the_connection_pool + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_connection_pool.html + */ + + 'connectionPool' => null, + + /** + * Connection Selector + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_configuration.html#_setting_the_connection_selector + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_selectors.html + */ + + 'connectionSelector' => null, + + /** + * Serializer + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_configuration.html#_setting_the_serializer + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_serializers.html + */ + + 'serializer' => null, + + /** + * Connection Factory + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_configuration.html#_setting_a_custom_connectionfactory + */ + + 'connectionFactory' => null, + + /** + * Endpoint + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/6.0/_configuration.html#_set_the_endpoint_closure + */ + + 'endpoint' => null, + + + /** + * Register additional namespaces + * + * An array of additional namespaces to register. + * + * @example 'namespaces' => [XPack::Security(), XPack::Watcher()] + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/ElasticsearchPHP_Endpoints.html#Elasticsearch_ClientBuilderregisterNamespace_registerNamespace + */ + 'namespaces' => [], + + /** + * Tracer + * + * Tracer is handled by passing in a name of the class implements Psr\Log\LoggerInterface. + * + * @see https://www.elastic.co/guide/en/elasticsearch/client/php-api/2.0/_configuration.html#_setting_a_custom_connectionfactory + */ + 'tracer' => null, + + ], + + ], + +]; diff --git a/config/features.php b/config/features.php new file mode 100644 index 0000000..397f405 --- /dev/null +++ b/config/features.php @@ -0,0 +1,10 @@ + env('FEATURE_SEARCH', true), + 'quote' => env('FEATURE_QUOTE', true), + 'news' => env('FEATURE_NEWS', true), + 'i18n' => env('FEATURE_I18N', true), + 'team' => env('FEATURE_TEAM', true), + 'partners' => env('FEATURE_PARTNERS', true), + 'clients' => env('FEATURE_CLIENTS', true), +]; diff --git a/config/filesystems.php b/config/filesystems.php index 300aa76..0e611cb 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -51,7 +51,7 @@ return [ 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL') . '/storage', + 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ], @@ -64,9 +64,10 @@ return [ 'url' => env('AWS_URL'), ], + // used for Backpack/BackupManager 'backups' => [ 'driver' => 'local', - 'root' => storage_path('backups'), // that's where your backups are stored by default: storage/backups + 'root' => storage_path('backups'), // that's where your backups are stored by default: storage/backups ], 'storage' => [ diff --git a/config/googletagmanager.php b/config/googletagmanager.php new file mode 100644 index 0000000..eeb26cd --- /dev/null +++ b/config/googletagmanager.php @@ -0,0 +1,26 @@ + env('GOOGLE_TAGMANAGER_ID', ''), + + /* + * Enable or disable script rendering. Useful for local development. + */ + 'enabled' => env('GOOGLE_TAGMANAGER_ID', '') != '', + + /* + * If you want to use some macro's you 'll probably store them + * in a dedicated file. You can optionally define the path + * to that file here and we will load it for you. + */ + 'macroPath' => '', + + /* + * The key under which data is saved to the session with flash. + */ + 'sessionKey' => '_googleTagManager', + +]; diff --git a/config/gtag.php b/config/gtag.php new file mode 100644 index 0000000..a0c3110 --- /dev/null +++ b/config/gtag.php @@ -0,0 +1,19 @@ + env('GOOGLE_ANALYTICS_ID', ''), + + /* + * Enable or disable script rendering. Useful for local development. + */ + 'enabled' => env('GOOGLE_ANALYTICS_ID', '') != '', + + /* + * Observe Do Not Track header. Disable google analytics tracking when enabled on the user agent + */ + 'observe_dnt' => true, +]; diff --git a/config/laravel-menu/settings.php b/config/laravel-menu/settings.php new file mode 100644 index 0000000..22dc044 --- /dev/null +++ b/config/laravel-menu/settings.php @@ -0,0 +1,13 @@ + [ + 'auto_activate' => true, + 'activate_parents' => true, + 'active_class' => 'active', + 'restful' => false, + 'cascade_data' => true, + 'rest_base' => '', // string|array + 'active_element' => 'item', // item|link + ], +]; diff --git a/config/laravel-menu/views.php b/config/laravel-menu/views.php new file mode 100644 index 0000000..e136d88 --- /dev/null +++ b/config/laravel-menu/views.php @@ -0,0 +1,5 @@ + 'laravel-menu::bootstrap-navbar-items', +]; diff --git a/config/logging.php b/config/logging.php index 506f2f3..d09cd7d 100644 --- a/config/logging.php +++ b/config/logging.php @@ -37,6 +37,7 @@ return [ 'stack' => [ 'driver' => 'stack', 'channels' => ['daily'], + 'ignore_exceptions' => false, ], 'single' => [ @@ -61,7 +62,7 @@ return [ ], 'papertrail' => [ - 'driver' => 'monolog', + 'driver' => 'monolog', 'level' => 'debug', 'handler' => SyslogUdpHandler::class, 'handler_with' => [ @@ -73,6 +74,7 @@ return [ 'stderr' => [ 'driver' => 'monolog', 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), 'with' => [ 'stream' => 'php://stderr', ], diff --git a/config/mail.php b/config/mail.php index f400645..83dd874 100644 --- a/config/mail.php +++ b/config/mail.php @@ -56,8 +56,8 @@ return [ */ 'from' => [ - 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), - 'name' => env('MAIL_FROM_NAME', 'Example'), + 'address' => env('MAIL_FROM_ADDRESS', 'pmi@cubedesigners.com'), + 'name' => env('MAIL_FROM_NAME', 'PM-Instrumentation'), ], /* diff --git a/config/markdown.php b/config/markdown.php new file mode 100644 index 0000000..5f7115c --- /dev/null +++ b/config/markdown.php @@ -0,0 +1,168 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +return [ + + /* + |-------------------------------------------------------------------------- + | Enable View Integration + |-------------------------------------------------------------------------- + | + | This option specifies if the view integration is enabled so you can write + | markdown views and have them rendered as html. The following extensions + | are currently supported: ".md", ".md.php", and ".md.blade.php". You may + | disable this integration if it is conflicting with another package. + | + | Default: true + | + */ + + 'views' => true, + + /* + |-------------------------------------------------------------------------- + | CommonMark Extensions + |-------------------------------------------------------------------------- + | + | This option specifies what extensions will be automatically enabled. + | Simply provide your extension class names here. + | + | Default: [] + | + */ + + 'extensions' => [ + Cubist\Backpack\app\Markdown\Heading\Extension::class, + Cubist\Backpack\app\Markdown\Wrapper\Extension::class, + League\CommonMark\Ext\Autolink\AutolinkExtension::class, + League\CommonMark\Ext\Table\TableExtension::class, + Cubist\Backpack\app\Markdown\InternalLink\Extension::class, + + ], + + /* + |-------------------------------------------------------------------------- + | Renderer Configuration + |-------------------------------------------------------------------------- + | + | This option specifies an array of options for rendering HTML. + | + | Default: [ + | 'block_separator' => "\n", + | 'inner_separator' => "\n", + | 'soft_break' => "\n", + | ] + | + */ + + 'renderer' => [ + 'block_separator' => "\n", + 'inner_separator' => "\n", + 'soft_break' => "\n", + ], + + /* + |-------------------------------------------------------------------------- + | Enable Em Tag Parsing + |-------------------------------------------------------------------------- + | + | This option specifies if `` parsing is enabled. + | + | Default: true + | + */ + + 'enable_em' => true, + + /* + |-------------------------------------------------------------------------- + | Enable Strong Tag Parsing + |-------------------------------------------------------------------------- + | + | This option specifies if `` parsing is enabled. + | + | Default: true + | + */ + + 'enable_strong' => true, + + /* + |-------------------------------------------------------------------------- + | Enable Asterisk Parsing + |-------------------------------------------------------------------------- + | + | This option specifies if `*` should be parsed for emphasis. + | + | Default: true + | + */ + + 'use_asterisk' => true, + + /* + |-------------------------------------------------------------------------- + | Enable Underscore Parsing + |-------------------------------------------------------------------------- + | + | This option specifies if `_` should be parsed for emphasis. + | + | Default: true + | + */ + + 'use_underscore' => true, + + /* + |-------------------------------------------------------------------------- + | HTML Input + |-------------------------------------------------------------------------- + | + | This option specifies how to handle untrusted HTML input. + | + | Default: 'strip' + | + */ + + 'html_input' => 'strip', + + /* + |-------------------------------------------------------------------------- + | Allow Unsafe Links + |-------------------------------------------------------------------------- + | + | This option specifies whether to allow risky image URLs and links. + | + | Default: true + | + */ + + 'allow_unsafe_links' => true, + + /* + |-------------------------------------------------------------------------- + | Maximum Nesting Level + |-------------------------------------------------------------------------- + | + | This option specifies the maximum permitted block nesting level. + | + | Default: INF + | + */ + + 'max_nesting_level' => INF, + + 'heading_offset' => 0, + 'heading_max' => 6 + +]; diff --git a/config/medialibrary.php b/config/medialibrary.php new file mode 100644 index 0000000..9275e29 --- /dev/null +++ b/config/medialibrary.php @@ -0,0 +1,150 @@ + 'public', + + /* + * The maximum file size of an item in bytes. + * Adding a larger file will result in an exception. + */ + 'max_file_size' => 1024 * 1024 * 1024, + + /* + * This queue will be used to generate derived and responsive images. + * Leave empty to use the default queue. + */ + 'queue_name' => '', + + /* + * The fully qualified class name of the media model. + */ + 'media_model' => Spatie\MediaLibrary\Models\Media::class, + + 's3' => [ + /* + * The domain that should be prepended when generating urls. + */ + 'domain' => 'https://'.env('AWS_BUCKET').'.s3.amazonaws.com', + ], + + 'remote' => [ + /* + * Any extra headers that should be included when uploading media to + * a remote disk. Even though supported headers may vary between + * different drivers, a sensible default has been provided. + * + * Supported by S3: CacheControl, Expires, StorageClass, + * ServerSideEncryption, Metadata, ACL, ContentEncoding + */ + 'extra_headers' => [ + 'CacheControl' => 'max-age=604800', + ], + ], + + 'responsive_images' => [ + + /* + * This class is responsible for calculating the target widths of the responsive + * images. By default we optimize for filesize and create variations that each are 20% + * smaller than the previous one. More info in the documentation. + * + * https://docs.spatie.be/laravel-medialibrary/v7/advanced-usage/generating-responsive-images + */ + 'width_calculator' => Spatie\MediaLibrary\ResponsiveImages\WidthCalculator\FileSizeOptimizedWidthCalculator::class, + + /* + * By default rendering media to a responsive image will add some javascript and a tiny placeholder. + * This ensures that the browser can already determine the correct layout. + */ + 'use_tiny_placeholders' => true, + + /* + * This class will generate the tiny placeholder used for progressive image loading. By default + * the medialibrary will use a tiny blurred jpg image. + */ + 'tiny_placeholder_generator' => Spatie\MediaLibrary\ResponsiveImages\TinyPlaceholderGenerator\Blurred::class, + ], + + /* + * When urls to files get generated, this class will be called. Leave empty + * if your files are stored locally above the site root or on s3. + */ + 'url_generator' => null, + + /* + * The class that contains the strategy for determining a media file's path. + */ + 'path_generator' => null, + + /* + * Medialibrary will try to optimize all converted images by removing + * metadata and applying a little bit of compression. These are + * the optimizers that will be used by default. + */ + 'image_optimizers' => [ + Spatie\ImageOptimizer\Optimizers\Jpegoptim::class => [ + '--strip-all', // this strips out all text information such as comments and EXIF data + '--all-progressive', // this will make sure the resulting image is a progressive one + ], + Spatie\ImageOptimizer\Optimizers\Pngquant::class => [ + '--force', // required parameter for this package + ], + Spatie\ImageOptimizer\Optimizers\Optipng::class => [ + '-i0', // this will result in a non-interlaced, progressive scanned image + '-o2', // this set the optimization level to two (multiple IDAT compression trials) + '-quiet', // required parameter for this package + ], + Spatie\ImageOptimizer\Optimizers\Svgo::class => [ + '--disable=cleanupIDs', // disabling because it is known to cause troubles + ], + Spatie\ImageOptimizer\Optimizers\Gifsicle::class => [ + '-b', // required parameter for this package + '-O3', // this produces the slowest but best results + ], + ], + + /* + * These generators will be used to create an image of media files. + */ + 'image_generators' => [ + Spatie\MediaLibrary\ImageGenerators\FileTypes\Image::class, + Spatie\MediaLibrary\ImageGenerators\FileTypes\Webp::class, + Spatie\MediaLibrary\ImageGenerators\FileTypes\Pdf::class, + Spatie\MediaLibrary\ImageGenerators\FileTypes\Svg::class, + Spatie\MediaLibrary\ImageGenerators\FileTypes\Video::class, + ], + + /* + * The engine that should perform the image conversions. + * Should be either `gd` or `imagick`. + */ + 'image_driver' => 'gd', + + /* + * FFMPEG & FFProbe binaries paths, only used if you try to generate video + * thumbnails and have installed the php-ffmpeg/php-ffmpeg composer + * dependency. + */ + 'ffmpeg_path' => env('FFMPEG_PATH', '/usr/bin/ffmpeg'), + 'ffprobe_path' => env('FFPROBE_PATH', '/usr/bin/ffprobe'), + + /* + * The path where to store temporary files while performing image conversions. + * If set to null, storage_path('medialibrary/temp') will be used. + */ + 'temporary_directory_path' => null, + + /* + * Here you can override the class names of the jobs used by this package. Make sure + * your custom jobs extend the ones provided by the package. + */ + 'jobs' => [ + 'perform_conversions' => Spatie\MediaLibrary\Jobs\PerformConversions::class, + 'generate_responsive_images' => Spatie\MediaLibrary\Jobs\GenerateResponsiveImages::class, + ], +]; diff --git a/config/permission.php b/config/permission.php index f88dd2c..c675dce 100644 --- a/config/permission.php +++ b/config/permission.php @@ -2,142 +2,126 @@ return [ - /* - |-------------------------------------------------------------------------- - | Authorization Models - |-------------------------------------------------------------------------- - */ - 'models' => [ /* - |-------------------------------------------------------------------------- - | Permission Model - |-------------------------------------------------------------------------- - | - | When using the "HasRoles" trait from this package, we need to know which - | Eloquent model should be used to retrieve your permissions. Of course, it - | is often just the "Permission" model but you may use whatever you like. - | - | The model you want to use as a Permission model needs to implement the - | `Spatie\Permission\Contracts\Permission` contract. - | + * When using the "HasPermissions" trait from this package, we need to know which + * Eloquent model should be used to retrieve your permissions. Of course, it + * is often just the "Permission" model but you may use whatever you like. + * + * The model you want to use as a Permission model needs to implement the + * `Spatie\Permission\Contracts\Permission` contract. */ - 'permission' => Backpack\PermissionManager\app\Models\Permission::class, + 'permission' => Spatie\Permission\Models\Permission::class, /* - |-------------------------------------------------------------------------- - | Role Model - |-------------------------------------------------------------------------- - | - | When using the "HasRoles" trait from this package, we need to know which - | Eloquent model should be used to retrieve your roles. Of course, it - | is often just the "Role" model but you may use whatever you like. - | - | The model you want to use as a Role model needs to implement the - | `Spatie\Permission\Contracts\Role` contract. - | + * When using the "HasRoles" trait from this package, we need to know which + * Eloquent model should be used to retrieve your roles. Of course, it + * is often just the "Role" model but you may use whatever you like. + * + * The model you want to use as a Role model needs to implement the + * `Spatie\Permission\Contracts\Role` contract. */ - 'role' => Backpack\PermissionManager\app\Models\Role::class, + 'role' => Spatie\Permission\Models\Role::class, ], - /* - |-------------------------------------------------------------------------- - | Authorization Tables - |-------------------------------------------------------------------------- - */ - 'table_names' => [ /* - |-------------------------------------------------------------------------- - | Users Table - |-------------------------------------------------------------------------- - | - | The table that your application uses for users. This table's model will - | be using the "HasRoles" and "HasPermissions" traits. - | - */ - 'users' => 'users', - - /* - |-------------------------------------------------------------------------- - | Roles Table - |-------------------------------------------------------------------------- - | - | When using the "HasRoles" trait from this package, we need to know which - | table should be used to retrieve your roles. We have chosen a basic - | default value but you may easily change it to any table you like. - | + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles. We have chosen a basic + * default value but you may easily change it to any table you like. */ 'roles' => 'roles', /* - |-------------------------------------------------------------------------- - | Permissions Table - |-------------------------------------------------------------------------- - | - | When using the "HasRoles" trait from this package, we need to know which - | table should be used to retrieve your permissions. We have chosen a basic - | default value but you may easily change it to any table you like. - | + * When using the "HasPermissions" trait from this package, we need to know which + * table should be used to retrieve your permissions. We have chosen a basic + * default value but you may easily change it to any table you like. */ 'permissions' => 'permissions', /* - |-------------------------------------------------------------------------- - | User Permissions Table - |-------------------------------------------------------------------------- - | - | When using the "HasRoles" trait from this package, we need to know which - | table should be used to retrieve your models permissions. We have chosen a - | basic default value but you may easily change it to any table you like. - | + * When using the "HasPermissions" trait from this package, we need to know which + * table should be used to retrieve your models permissions. We have chosen a + * basic default value but you may easily change it to any table you like. */ 'model_has_permissions' => 'model_has_permissions', /* - |-------------------------------------------------------------------------- - | User Roles Table - |-------------------------------------------------------------------------- - | - | When using the "HasRoles" trait from this package, we need to know which - | table should be used to retrieve your model roles. We have chosen a - | basic default value but you may easily change it to any table you like. - | - */ + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your models roles. We have chosen a + * basic default value but you may easily change it to any table you like. + */ 'model_has_roles' => 'model_has_roles', /* - |-------------------------------------------------------------------------- - | Role Permissions Table - |-------------------------------------------------------------------------- - | - | When using the "HasRoles" trait from this package, we need to know which - | table should be used to retrieve your roles permissions. We have chosen a - | basic default value but you may easily change it to any table you like. - | - */ + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ 'role_has_permissions' => 'role_has_permissions', ], - /* - * By default all permissions will be cached for 24 hours unless a permission or - * role is updated. Then the cache will be flushed immediately. - */ - 'cache_expiration_time' => 60 * 24, + 'column_names' => [ + + /* + * Change this if you want to name the related model primary key other than + * `model_id`. + * + * For example, this would be nice if your primary keys are all UUIDs. In + * that case, name this `model_uuid`. + */ + 'model_morph_key' => 'model_id', + ], + /* * When set to true, the required permission/role names are added to the exception * message. This could be considered an information leak in some contexts, so * the default setting is false here for optimum safety. */ + 'display_permission_in_exception' => false, + + 'cache' => [ + + /* + * By default all permissions will be cached for 24 hours unless a permission or + * role is updated. Then the cache will be flushed immediately. + */ + + 'expiration_time' => 60 * 24, + + /* + * The key to use when tagging and prefixing entries in the cache. + */ + + 'key' => 'spatie.permission.cache', + + /* + * When checking for a permission against a model by passing a Permission + * instance to the check, this key determines what attribute on the + * Permissions model is used to cache against. + * + * Ideally, this should match your preferred way of checking permissions, eg: + * `$user->can('view-posts')` would be 'name'. + */ + + 'model_key' => 'name', + + /* + * You may optionally indicate a specific cache driver to use for permission and + * role caching using any of the `store` drivers listed in the cache.php config + * file. Using 'default' here means to use the `default` set in cache.php. + */ + 'store' => 'default', + ], ]; diff --git a/routes/web.php b/routes/web.php index 810aa34..b24ceec 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,16 +1,4 @@ where(['page' => '^(((?=(?!admin))(?=(?!\/)).))*$', 'subs' => '.*']);