diff --git a/app/Facade/Misc.php b/app/Facade/Misc.php new file mode 100644 index 0000000..27ded58 --- /dev/null +++ b/app/Facade/Misc.php @@ -0,0 +1,18 @@ +paginate(UserConfig::get('items_per_page')); } - public static function getAlbumsForCurrentUser_NonPaged() + public static function getAlbumsForCurrentUser_NonPaged($permission = 'list') { $albumsQuery = Album::query(); $user = Auth::user(); @@ -60,7 +60,7 @@ class DbHelper ->join('permissions', 'permissions.id', '=', 'album_anonymous_permissions.permission_id') ->where([ ['permissions.section', 'album'], - ['permissions.description', 'list'] + ['permissions.description', $permission] ]); } else @@ -78,12 +78,12 @@ class DbHelper ->where('albums.user_id', $user->id) ->orWhere([ ['group_permissions.section', 'album'], - ['group_permissions.description', 'list'], + ['group_permissions.description', $permission], ['user_groups.user_id', $user->id] ]) ->orWhere([ ['user_permissions.section', 'album'], - ['user_permissions.description', 'list'], + ['user_permissions.description', $permission], ['album_user_permissions.user_id', $user->id] ]); } diff --git a/app/Http/Middleware/GlobalConfiguration.php b/app/Http/Middleware/GlobalConfiguration.php index 037efc0..869863a 100644 --- a/app/Http/Middleware/GlobalConfiguration.php +++ b/app/Http/Middleware/GlobalConfiguration.php @@ -63,6 +63,9 @@ class GlobalConfiguration { $albums = DbHelper::getAlbumsForCurrentUser_NonPaged()->get(); View::share('albums', $albums); + + $albumsToUpload = DbHelper::getAlbumsForCurrentUser_NonPaged('upload-photos')->get(); + View::share('g_albums_upload', $albumsToUpload); } private function addLabelsToView() diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 1c98c7d..a253e0d 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -38,6 +38,10 @@ class AppServiceProvider extends ServiceProvider { return $themeHelper; }); + $this->app->singleton('misc', function ($app) + { + return new MiscHelper(); + }); $this->app->singleton('user_config', function ($app) { return new ConfigHelper(); diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index fc50d91..293db4f 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -78,6 +78,15 @@ class AuthServiceProvider extends ServiceProvider return ($user->id == $photo->user_id); }); + + Gate::define('photo.quick_upload', function($user) + { + $can = true; + $can &= $this->userHasAdminPermission($user, 'access'); + $can &= $this->userHasAdminPermission($user, 'manage-albums'); + + return $can; + }); } private function userHasAdminPermission(User $user, $permissionDescription) diff --git a/config/app.php b/config/app.php index d31c8ce..76ef683 100644 --- a/config/app.php +++ b/config/app.php @@ -227,6 +227,7 @@ return [ // Additional aliases added by AH 'Image' => \App\Facade\Image::class, + 'Misc' => \App\Facade\Misc::class, 'Theme' => \App\Facade\Theme::class, 'UserConfig' => \App\Facade\UserConfig::class ], diff --git a/resources/lang/en/forms.php b/resources/lang/en/forms.php index f6452f9..2399198 100644 --- a/resources/lang/en/forms.php +++ b/resources/lang/en/forms.php @@ -2,6 +2,7 @@ return [ 'activate_user_label' => 'Manually activate this account', 'admin_user_label' => 'User is an administrator', + 'album_label' => 'Album:', 'album_redirect_source' => 'Source address:', 'album_redirect_source_help' => 'The address must start with a forward-slash (/)', 'album_redirect_source_placeholder' => '(e.g. /my-new-album)', @@ -26,7 +27,9 @@ return [ 'parent_album_placeholder' => 'None (top-level album)', 'password_label' => 'Password:', 'password_confirm_label' => 'Confirm password:', + 'please_select' => '- Select an Option -', 'private_album_label' => 'Private album (only visible to me)', + 'quick_upload_file_label' => 'Photo:', 'realname_label' => 'Your name:', 'register_action' => 'Create account', 'remember_me_label' => 'Remember me', diff --git a/resources/lang/en/global.php b/resources/lang/en/global.php index c77cd77..2954fca 100644 --- a/resources/lang/en/global.php +++ b/resources/lang/en/global.php @@ -13,6 +13,10 @@ return [ 'please_wait' => 'Please wait...', 'post_max_exceeded' => 'Your upload exceeded the maximum size the web server is configured to allow. Please check the value of the "post_max_size" parameter in php.ini.', 'powered_by' => 'Powered by :link_startBlue Twilight:link_end - the self-hosted PHP photo gallery software.', + 'quick_upload' => [ + 'intro' => 'Use the quick upload feature to quickly add a new photo to an album.', + 'title' => 'Quick Upload' + ], 'units' => [ 'megabytes' => 'MB' ] diff --git a/resources/lang/en/navigation.php b/resources/lang/en/navigation.php index 101a800..e338620 100644 --- a/resources/lang/en/navigation.php +++ b/resources/lang/en/navigation.php @@ -30,6 +30,7 @@ return [ 'labels' => 'Labels', 'login' => 'Login', 'logout' => 'Logout', + 'quick_post' => 'Quick Upload', 'register' => 'Register', 'statistics' => 'Statistics' ] diff --git a/resources/views/themes/base/layout.blade.php b/resources/views/themes/base/layout.blade.php index 6e2be77..8aadbfc 100644 --- a/resources/views/themes/base/layout.blade.php +++ b/resources/views/themes/base/layout.blade.php @@ -87,6 +87,10 @@ @yield('content') + @can('photo.quick_upload') + @include(Theme::viewName('partials.quick_upload')) + @endcan + @if (isset($is_admin) && $is_admin) @include(\App\Facade\Theme::viewName('partials.copyright_admin')) @elseif (!\App\Facade\UserConfig::get('remove_copyright')) diff --git a/resources/views/themes/base/partials/navbar.blade.php b/resources/views/themes/base/partials/navbar.blade.php index 0bc8b6a..d2b3c26 100644 --- a/resources/views/themes/base/partials/navbar.blade.php +++ b/resources/views/themes/base/partials/navbar.blade.php @@ -1,5 +1,10 @@