X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/919660678bec2b94eaa84ac60d0313f5ef07dfb7..refs/pull/1756/head:/app/Providers/AppServiceProvider.php diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index ef4c657d9..3a1b4f42e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -3,13 +3,16 @@ use Blade; use BookStack\Entities\Book; use BookStack\Entities\Bookshelf; +use BookStack\Entities\BreadcrumbsViewComposer; use BookStack\Entities\Chapter; use BookStack\Entities\Page; -use BookStack\Settings\SettingService; use BookStack\Settings\Setting; +use BookStack\Settings\SettingService; use Illuminate\Database\Eloquent\Relations\Relation; +use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; use Schema; +use URL; use Validator; class AppServiceProvider extends ServiceProvider @@ -21,10 +24,23 @@ class AppServiceProvider extends ServiceProvider */ public function boot() { + // Set root URL + $appUrl = config('app.url'); + if ($appUrl) { + $isHttps = (strpos($appUrl, 'https://') === 0); + URL::forceRootUrl($appUrl); + URL::forceScheme($isHttps ? 'https' : 'http'); + } + // Custom validation methods - Validator::extend('is_image', function ($attribute, $value, $parameters, $validator) { - $imageMimes = ['image/png', 'image/bmp', 'image/gif', 'image/jpeg', 'image/jpg', 'image/tiff', 'image/webp']; - return in_array($value->getMimeType(), $imageMimes); + Validator::extend('image_extension', function ($attribute, $value, $parameters, $validator) { + $validImageExtensions = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'tiff', 'webp']; + return in_array(strtolower($value->getClientOriginalExtension()), $validImageExtensions); + }); + + Validator::extend('no_double_extension', function ($attribute, $value, $parameters, $validator) { + $uploadName = $value->getClientOriginalName(); + return substr_count($uploadName, '.') < 2; }); // Custom blade view directives @@ -32,6 +48,14 @@ class AppServiceProvider extends ServiceProvider return ""; }); + Blade::directive('exposeTranslations', function ($expression) { + return "startPush('translations'); ?>" . + "" . + '' . "\n" . + "" . + 'stopPush(); ?>'; + }); + // Allow longer string lengths after upgrade to utf8mb4 Schema::defaultStringLength(191); @@ -42,6 +66,9 @@ class AppServiceProvider extends ServiceProvider 'BookStack\\Chapter' => Chapter::class, 'BookStack\\Page' => Page::class, ]); + + // View Composers + View::composer('partials.breadcrumbs', BreadcrumbsViewComposer::class); } /**