#16: Added a tab to the album admin screen to display a list of cameras used in that album

This commit is contained in:
Andy Heathershaw 2017-09-03 08:31:31 +01:00
parent dda12a47e4
commit 89d9c31ba8
6 changed files with 63 additions and 2 deletions

View File

@ -8,6 +8,7 @@ use App\Helpers\MiscHelper;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Notifications\Notifiable; use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
class Album extends Model class Album extends Model
@ -56,6 +57,19 @@ class Album extends Model
return $this->belongsToMany(Permission::class, 'album_anonymous_permissions'); return $this->belongsToMany(Permission::class, 'album_anonymous_permissions');
} }
public function cameras()
{
return DB::table('photos')
->where('album_id', $this->id)
->groupBy('camera_make', 'camera_model', 'camera_software')
->select('camera_make', 'camera_model', 'camera_software', DB::raw('count(*) as photo_count'))
->orderBy('photo_count', 'desc')
->orderBy('camera_make')
->orderBy('camera_model')
->orderBy('camera_software')
->get();
}
public function children() public function children()
{ {
return $this->hasMany(Album::class, 'parent_album_id')->withCount('photos'); return $this->hasMany(Album::class, 'parent_album_id')->withCount('photos');

View File

@ -350,6 +350,9 @@ class AlbumController extends Controller
$request->session()->flash('_old_input', $album->toArray()); $request->session()->flash('_old_input', $album->toArray());
} }
// Get the cameras used in this album
$cameras = $album->cameras();
return Theme::render('admin.show_album', [ return Theme::render('admin.show_album', [
'active_tab' => (strlen($activeTab) == 0) ? 'photos' : $activeTab, 'active_tab' => (strlen($activeTab) == 0) ? 'photos' : $activeTab,
'album' => $album, 'album' => $album,
@ -368,6 +371,7 @@ class AlbumController extends Controller
'refresh_thumbnails' => trans('admin.photo_actions.refresh_thumbnails'), 'refresh_thumbnails' => trans('admin.photo_actions.refresh_thumbnails'),
'delete' => trans('admin.photo_actions.delete') 'delete' => trans('admin.photo_actions.delete')
], ],
'cameras' => $cameras,
'error' => $request->session()->get('error'), 'error' => $request->session()->get('error'),
'existing_groups' => $existingGroups, 'existing_groups' => $existingGroups,
'existing_users' => $existingUsers, 'existing_users' => $existingUsers,

View File

@ -8,6 +8,15 @@ return [
'album_appearance_intro' => 'The settings shown below control how this album appears to visitors in the gallery.', 'album_appearance_intro' => 'The settings shown below control how this album appears to visitors in the gallery.',
'album_basic_info_heading' => 'Album information', 'album_basic_info_heading' => 'Album information',
'album_basic_info_intro' => 'The album\'s name and description are displayed to visitors in the gallery. If you wish to change them, you can do so below.', 'album_basic_info_intro' => 'The album\'s name and description are displayed to visitors in the gallery. If you wish to change them, you can do so below.',
'album_camera_make' => 'Manufacturer',
'album_camera_model' => 'Model',
'album_camera_photo_count' => 'Number of photos',
'album_camera_software' => 'Software version',
'album_cameras_heading' => 'Cameras used in this album',
'album_cameras_tab' => 'Cameras',
'album_cameras_text' => 'Blue Twilight analyses the Exif data in your photos to determine which cameras have been used. The cameras that were found are displayed below.',
'album_no_cameras_found_p1' => 'No cameras were found',
'album_no_cameras_found_p2' => 'Upload more photos to this album or ensure the cameras you use support Exif image tagging.',
'album_no_photos_p1' => 'No photos in this album', 'album_no_photos_p1' => 'No photos in this album',
'album_no_photos_p2' => 'Click the "Upload photos" button below to get started.', 'album_no_photos_p2' => 'Click the "Upload photos" button below to get started.',
'album_no_photos_p2_no_upload' => 'The album\'s owner has not uploaded any photos yet.', 'album_no_photos_p2_no_upload' => 'The album\'s owner has not uploaded any photos yet.',

View File

@ -27,6 +27,7 @@
@can('change-permissions', $album) @can('change-permissions', $album)
@include(Theme::viewName('partials.tab'), ['tab_name' => 'permissions', 'tab_icon' => 'lock', 'tab_text' => trans('admin.album_security_tab')]) @include(Theme::viewName('partials.tab'), ['tab_name' => 'permissions', 'tab_icon' => 'lock', 'tab_text' => trans('admin.album_security_tab')])
@endcan @endcan
@include(Theme::viewName('partials.tab'), ['tab_name' => 'cameras', 'tab_icon' => 'camera', 'tab_text' => trans('admin.album_cameras_tab')])
@include(Theme::viewName('partials.tab'), ['tab_name' => 'settings', 'tab_icon' => 'cog', 'tab_text' => trans('admin.album_settings_tab')]) @include(Theme::viewName('partials.tab'), ['tab_name' => 'settings', 'tab_icon' => 'cog', 'tab_text' => trans('admin.album_settings_tab')])
</ul> </ul>
@ -41,6 +42,8 @@
{{-- Permissions --}} {{-- Permissions --}}
@include(Theme::viewName('partials.album_permissions_tab')) @include(Theme::viewName('partials.album_permissions_tab'))
@endcan @endcan
{{-- Cameras --}}
@include(Theme::viewName('partials.album_cameras_tab'))
{{-- Settings --}} {{-- Settings --}}
@include(Theme::viewName('partials.album_settings_tab')) @include(Theme::viewName('partials.album_settings_tab'))
</div> </div>

View File

@ -0,0 +1,31 @@
<div role="tabpanel" class="tab-pane{{ $active_tab == 'cameras' ? ' active' : '' }}" id="cameras-tab">
@if (count($cameras) == 0)
<div class="text-center" style="margin-top: 15px;">
<h4 class="text-danger"><b>@lang('admin.album_no_cameras_found_p1')</b></h4>
<p>@lang('admin.album_no_cameras_found_p2')</p>
</div>
@else
<h4>@lang('admin.album_cameras_heading')</h4>
<p>@lang('admin.album_cameras_text')</p>
<table class="table table-striped table-responsive">
<thead>
<tr>
<th>@lang('admin.album_camera_make')</th>
<th>@lang('admin.album_camera_model')</th>
<th>@lang('admin.album_camera_software')</th>
<th>@lang('admin.album_camera_photo_count')</th>
</tr>
</thead>
<tbody>
@foreach ($cameras as $camera)
<tr>
<td>{{ $camera->camera_make }}</td>
<td>{{ $camera->camera_model }}</td>
<td>{{ $camera->camera_software }}</td>
<td>{{ $camera->photo_count }}</td>
</tr>
@endforeach
</tbody>
</table>
@endif
</div>

View File

@ -1,5 +1,4 @@
@php ($field_prefix = sprintf('photo[%d]', $photo->id)) @php ($field_prefix = sprintf('photo[%d]', $photo->id))
<hr/>
<div class="photo row" data-photo-id="{{ $photo->id }}"> <div class="photo row" data-photo-id="{{ $photo->id }}">
<div class="col-sm-2"> <div class="col-sm-2">
<div class="loading"><img src="{{ asset('ripple.svg') }}" /></div> <div class="loading"><img src="{{ asset('ripple.svg') }}" /></div>
@ -71,4 +70,5 @@
<textarea name="{{ $field_prefix }}[description]" class="form-control" rows="4" @cannot('change-metadata', $photo) disabled="disabled"@endcannot>{{ old($field_prefix . '[description]', $photo->description) }}</textarea> <textarea name="{{ $field_prefix }}[description]" class="form-control" rows="4" @cannot('change-metadata', $photo) disabled="disabled"@endcannot>{{ old($field_prefix . '[description]', $photo->description) }}</textarea>
</div> </div>
</div> </div>
</div> </div>
<hr/>