#2: Basic implementation of the quick-upload/quick-post feature
This commit is contained in:
parent
d9d43e9c29
commit
544d3c5153
18
app/Facade/Misc.php
Normal file
18
app/Facade/Misc.php
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Facade;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Facade;
|
||||||
|
|
||||||
|
class Misc extends Facade
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the registered name of the component.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected static function getFacadeAccessor()
|
||||||
|
{
|
||||||
|
return 'misc';
|
||||||
|
}
|
||||||
|
}
|
@ -43,7 +43,7 @@ class DbHelper
|
|||||||
return $query->paginate(UserConfig::get('items_per_page'));
|
return $query->paginate(UserConfig::get('items_per_page'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getAlbumsForCurrentUser_NonPaged()
|
public static function getAlbumsForCurrentUser_NonPaged($permission = 'list')
|
||||||
{
|
{
|
||||||
$albumsQuery = Album::query();
|
$albumsQuery = Album::query();
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
@ -60,7 +60,7 @@ class DbHelper
|
|||||||
->join('permissions', 'permissions.id', '=', 'album_anonymous_permissions.permission_id')
|
->join('permissions', 'permissions.id', '=', 'album_anonymous_permissions.permission_id')
|
||||||
->where([
|
->where([
|
||||||
['permissions.section', 'album'],
|
['permissions.section', 'album'],
|
||||||
['permissions.description', 'list']
|
['permissions.description', $permission]
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -78,12 +78,12 @@ class DbHelper
|
|||||||
->where('albums.user_id', $user->id)
|
->where('albums.user_id', $user->id)
|
||||||
->orWhere([
|
->orWhere([
|
||||||
['group_permissions.section', 'album'],
|
['group_permissions.section', 'album'],
|
||||||
['group_permissions.description', 'list'],
|
['group_permissions.description', $permission],
|
||||||
['user_groups.user_id', $user->id]
|
['user_groups.user_id', $user->id]
|
||||||
])
|
])
|
||||||
->orWhere([
|
->orWhere([
|
||||||
['user_permissions.section', 'album'],
|
['user_permissions.section', 'album'],
|
||||||
['user_permissions.description', 'list'],
|
['user_permissions.description', $permission],
|
||||||
['album_user_permissions.user_id', $user->id]
|
['album_user_permissions.user_id', $user->id]
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -63,6 +63,9 @@ class GlobalConfiguration
|
|||||||
{
|
{
|
||||||
$albums = DbHelper::getAlbumsForCurrentUser_NonPaged()->get();
|
$albums = DbHelper::getAlbumsForCurrentUser_NonPaged()->get();
|
||||||
View::share('albums', $albums);
|
View::share('albums', $albums);
|
||||||
|
|
||||||
|
$albumsToUpload = DbHelper::getAlbumsForCurrentUser_NonPaged('upload-photos')->get();
|
||||||
|
View::share('g_albums_upload', $albumsToUpload);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function addLabelsToView()
|
private function addLabelsToView()
|
||||||
|
@ -38,6 +38,10 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
{
|
{
|
||||||
return $themeHelper;
|
return $themeHelper;
|
||||||
});
|
});
|
||||||
|
$this->app->singleton('misc', function ($app)
|
||||||
|
{
|
||||||
|
return new MiscHelper();
|
||||||
|
});
|
||||||
$this->app->singleton('user_config', function ($app)
|
$this->app->singleton('user_config', function ($app)
|
||||||
{
|
{
|
||||||
return new ConfigHelper();
|
return new ConfigHelper();
|
||||||
|
@ -78,6 +78,15 @@ class AuthServiceProvider extends ServiceProvider
|
|||||||
|
|
||||||
return ($user->id == $photo->user_id);
|
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)
|
private function userHasAdminPermission(User $user, $permissionDescription)
|
||||||
|
@ -227,6 +227,7 @@ return [
|
|||||||
|
|
||||||
// Additional aliases added by AH
|
// Additional aliases added by AH
|
||||||
'Image' => \App\Facade\Image::class,
|
'Image' => \App\Facade\Image::class,
|
||||||
|
'Misc' => \App\Facade\Misc::class,
|
||||||
'Theme' => \App\Facade\Theme::class,
|
'Theme' => \App\Facade\Theme::class,
|
||||||
'UserConfig' => \App\Facade\UserConfig::class
|
'UserConfig' => \App\Facade\UserConfig::class
|
||||||
],
|
],
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
return [
|
return [
|
||||||
'activate_user_label' => 'Manually activate this account',
|
'activate_user_label' => 'Manually activate this account',
|
||||||
'admin_user_label' => 'User is an administrator',
|
'admin_user_label' => 'User is an administrator',
|
||||||
|
'album_label' => 'Album:',
|
||||||
'album_redirect_source' => 'Source address:',
|
'album_redirect_source' => 'Source address:',
|
||||||
'album_redirect_source_help' => 'The address must start with a forward-slash (/)',
|
'album_redirect_source_help' => 'The address must start with a forward-slash (/)',
|
||||||
'album_redirect_source_placeholder' => '(e.g. /my-new-album)',
|
'album_redirect_source_placeholder' => '(e.g. /my-new-album)',
|
||||||
@ -26,7 +27,9 @@ return [
|
|||||||
'parent_album_placeholder' => 'None (top-level album)',
|
'parent_album_placeholder' => 'None (top-level album)',
|
||||||
'password_label' => 'Password:',
|
'password_label' => 'Password:',
|
||||||
'password_confirm_label' => 'Confirm password:',
|
'password_confirm_label' => 'Confirm password:',
|
||||||
|
'please_select' => '- Select an Option -',
|
||||||
'private_album_label' => 'Private album (only visible to me)',
|
'private_album_label' => 'Private album (only visible to me)',
|
||||||
|
'quick_upload_file_label' => 'Photo:',
|
||||||
'realname_label' => 'Your name:',
|
'realname_label' => 'Your name:',
|
||||||
'register_action' => 'Create account',
|
'register_action' => 'Create account',
|
||||||
'remember_me_label' => 'Remember me',
|
'remember_me_label' => 'Remember me',
|
||||||
|
@ -13,6 +13,10 @@ return [
|
|||||||
'please_wait' => 'Please wait...',
|
'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.',
|
'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.',
|
'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' => [
|
'units' => [
|
||||||
'megabytes' => 'MB'
|
'megabytes' => 'MB'
|
||||||
]
|
]
|
||||||
|
@ -30,6 +30,7 @@ return [
|
|||||||
'labels' => 'Labels',
|
'labels' => 'Labels',
|
||||||
'login' => 'Login',
|
'login' => 'Login',
|
||||||
'logout' => 'Logout',
|
'logout' => 'Logout',
|
||||||
|
'quick_post' => 'Quick Upload',
|
||||||
'register' => 'Register',
|
'register' => 'Register',
|
||||||
'statistics' => 'Statistics'
|
'statistics' => 'Statistics'
|
||||||
]
|
]
|
||||||
|
@ -87,6 +87,10 @@
|
|||||||
|
|
||||||
@yield('content')
|
@yield('content')
|
||||||
|
|
||||||
|
@can('photo.quick_upload')
|
||||||
|
@include(Theme::viewName('partials.quick_upload'))
|
||||||
|
@endcan
|
||||||
|
|
||||||
@if (isset($is_admin) && $is_admin)
|
@if (isset($is_admin) && $is_admin)
|
||||||
@include(\App\Facade\Theme::viewName('partials.copyright_admin'))
|
@include(\App\Facade\Theme::viewName('partials.copyright_admin'))
|
||||||
@elseif (!\App\Facade\UserConfig::get('remove_copyright'))
|
@elseif (!\App\Facade\UserConfig::get('remove_copyright'))
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
<nav class="navbar navbar-expand-lg navbar-dark">
|
<nav class="navbar navbar-expand-lg navbar-dark">
|
||||||
<a class="navbar-brand" href="{{ route('home') }}"><i class="fa fa-fw fa-photo"></i> {{ UserConfig::get('app_name') }}</a>
|
<a class="navbar-brand" href="{{ route('home') }}"><i class="fa fa-fw fa-photo"></i> {{ UserConfig::get('app_name') }}</a>
|
||||||
|
@can('photo.quick_upload')
|
||||||
|
<ul class="navbar-nav" style="min-width: 120px;">
|
||||||
|
<li class="nav-item"><a class="nav-link" href="#" data-toggle="modal" data-target="#quick-upload-modal"><i class="fa fa-plus"></i> @lang('navigation.navbar.quick_post')</a></li>
|
||||||
|
</ul>
|
||||||
|
@endcan
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-content" aria-controls="navbar-content" aria-expanded="false" aria-label="Toggle navigation">
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-content" aria-controls="navbar-content" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
<i class="fa fa-fw fa-bars"></i>
|
<i class="fa fa-fw fa-bars"></i>
|
||||||
</button>
|
</button>
|
||||||
|
38
resources/views/themes/base/partials/quick_upload.blade.php
Normal file
38
resources/views/themes/base/partials/quick_upload.blade.php
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<form method="POST" action="{{ route('photos.store') }}" enctype="multipart/form-data">
|
||||||
|
{{ csrf_field() }}
|
||||||
|
<input type="hidden" name="queue_token" value="{{ Misc::randomString() }}"/>
|
||||||
|
<div class="modal" id="quick-upload-modal">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">@lang('global.quick_upload.title')</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<p>@lang('global.quick_upload.intro')</p>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="quick-upload-file">@lang('forms.quick_upload_file_label')</label>
|
||||||
|
<input type="file" id="quick-upload-file" name="photo[]" class="form-control" multiple="multiple">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="quick-upload-album">@lang('forms.album_label')</label>
|
||||||
|
<select id="quick-upload-album" name="album_id" class="form-control">
|
||||||
|
<option>@lang('forms.please_select')</option>
|
||||||
|
@foreach ($g_albums_upload as $album)
|
||||||
|
<option value="{{ $album->id }}">{{ $album->name }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-link" data-dismiss="modal">@lang('forms.cancel_action')</button>
|
||||||
|
<button type="submit" class="btn btn-success" onclick="this.disabled = true;"><i class="fa fa-upload"></i> @lang('forms.upload_action')</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
Loading…
Reference in New Issue
Block a user