BLUE-18: implemented a "select all" button on the album admin page, which can also select all items in an album
This commit is contained in:
parent
5b915f911e
commit
2f65c6085d
@ -430,6 +430,18 @@ class PhotoController extends Controller
|
||||
}
|
||||
|
||||
private function applyBulkActions(Request $request, Album $album)
|
||||
{
|
||||
$selectAllInAlbum = boolval($request->get('select-all-album'));
|
||||
$photosToProcess = [];
|
||||
|
||||
if ($selectAllInAlbum)
|
||||
{
|
||||
foreach ($album->photos as $photo)
|
||||
{
|
||||
$photosToProcess[] = $photo;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$photoIds = $request->get('select-photo');
|
||||
if (is_null($photoIds) || !is_array($photoIds) || count($photoIds) == 0)
|
||||
@ -438,9 +450,6 @@ class PhotoController extends Controller
|
||||
return 0;
|
||||
}
|
||||
|
||||
$action = $request->get('bulk-action');
|
||||
$numberChanged = 0;
|
||||
|
||||
foreach ($photoIds as $photoId)
|
||||
{
|
||||
/** @var Photo $photo */
|
||||
@ -450,6 +459,15 @@ class PhotoController extends Controller
|
||||
continue;
|
||||
}
|
||||
|
||||
$photosToProcess[] = $photo;
|
||||
}
|
||||
}
|
||||
|
||||
$action = $request->get('bulk-action');
|
||||
$numberChanged = 0;
|
||||
|
||||
foreach ($photosToProcess as $photo)
|
||||
{
|
||||
$photoService = new PhotoService($photo);
|
||||
$doNotSave = false;
|
||||
switch (strtolower($action))
|
||||
|
@ -116,7 +116,9 @@ function EditPhotosViewModel(album_id, language, urls) {
|
||||
self.albums = ko.observableArray();
|
||||
self.bulkModifyMethod = ko.observable();
|
||||
self.photoIDs = ko.observableArray();
|
||||
self.photoIDsAvailable = ko.observableArray();
|
||||
self.isSubmitting = false;
|
||||
self.selectAllInAlbum = ko.observable(0);
|
||||
|
||||
/* Called when the Apply button on the "bulk apply selected actions" form is clicked */
|
||||
self.bulkModifySelected = function()
|
||||
@ -146,8 +148,8 @@ function EditPhotosViewModel(album_id, language, urls) {
|
||||
{
|
||||
// Prompt for a confirmation - are you sure?!
|
||||
bootbox.dialog({
|
||||
message: language.delete_bulk_confirm_message.replace(':number', self.photoIDs().length),
|
||||
title: language.delete_bulk_confirm_title.replace(':number', self.photoIDs().length),
|
||||
message: language.delete_bulk_confirm_message,
|
||||
title: language.delete_bulk_confirm_title,
|
||||
buttons: {
|
||||
cancel: {
|
||||
label: language.action_cancel,
|
||||
@ -385,6 +387,48 @@ function EditPhotosViewModel(album_id, language, urls) {
|
||||
return false;
|
||||
};
|
||||
|
||||
self.selectAll = function() {
|
||||
bootbox.dialog({
|
||||
title: language.select_all_choice_title,
|
||||
message: language.select_all_choice_message,
|
||||
buttons: {
|
||||
select_all: {
|
||||
label: language.select_all_choice_all_action,
|
||||
className: 'btn-default',
|
||||
callback: function()
|
||||
{
|
||||
self.selectAllInAlbum(1);
|
||||
for (i = 0; i < self.photoIDsAvailable().length; i++)
|
||||
{
|
||||
self.photoIDs.push(self.photoIDsAvailable()[i]);
|
||||
}
|
||||
}
|
||||
},
|
||||
select_visible: {
|
||||
label: language.select_all_choice_visible_action,
|
||||
className: 'btn-primary',
|
||||
callback: function()
|
||||
{
|
||||
self.selectAllInAlbum(0);
|
||||
for (i = 0; i < self.photoIDsAvailable().length; i++)
|
||||
{
|
||||
self.photoIDs.push(self.photoIDsAvailable()[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
self.selectNone = function() {
|
||||
self.photoIDs.removeAll();
|
||||
self.selectAllInAlbum(0);
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
self.selectPhotoSingle = function (link_item) {
|
||||
// Get the photo ID from the clicked link
|
||||
var parent = $(link_item).parents('.photo');
|
||||
|
@ -42,8 +42,8 @@ return [
|
||||
'delete_album' => 'Delete album :name',
|
||||
'delete_album_confirm' => 'Are you sure you want to permanently delete this album and all its contents?',
|
||||
'delete_album_warning' => 'This is a permanent action that cannot be undone!',
|
||||
'delete_bulk_photos_message' => 'Are you sure you want to delete the :number selected photos? This action cannot be undone!',
|
||||
'delete_bulk_photos_title' => 'Delete :number photos',
|
||||
'delete_bulk_photos_message' => 'Are you sure you want to delete the selected photos? This action cannot be undone!',
|
||||
'delete_bulk_photos_title' => 'Delete selected photos',
|
||||
'delete_photo_message' => 'Are you sure you want to delete this photo? This action cannot be undone!',
|
||||
'delete_photo_successful_message' => 'The photo ":name" was deleted successfully.',
|
||||
'delete_photo_title' => 'Delete photo',
|
||||
@ -90,6 +90,15 @@ return [
|
||||
],
|
||||
'save_changes_heading' => 'Save changes',
|
||||
'save_changes_intro' => 'If you have made any changes to the above fields, you\'ll need to hit the Save Changes button below.',
|
||||
'select_all_action' => 'Select all',
|
||||
'select_all_album_active' => 'Any action you select in the list below will apply to all photos in this album.',
|
||||
'select_all_choice' => [
|
||||
'all_action' => 'All in this album',
|
||||
'message' => 'Do you want to select all the photos in the album, or just those that are visible on this page?',
|
||||
'title' => 'Select all in album?',
|
||||
'visible_action' => 'Only those visible'
|
||||
],
|
||||
'select_none_action' => 'Clear selection',
|
||||
'settings_image_protection' => 'Image Protection',
|
||||
'settings_recaptcha' => 'reCAPTCHA settings',
|
||||
'settings_save_action' => 'Update Settings',
|
||||
|
@ -48,6 +48,16 @@
|
||||
@endforeach
|
||||
|
||||
<div class="pull-left" style="margin-bottom: 15px;">
|
||||
<p style="margin-bottom: 15px;">
|
||||
<button data-bind="click: selectAll" type="button" class="btn btn-default">@lang('admin.select_all_action')</button>
|
||||
<button data-bind="click: selectNone" type="button" class="btn btn-default">@lang('admin.select_none_action')</button>
|
||||
</p>
|
||||
<input data-bind="value: selectAllInAlbum" type="hidden" name="select-all-album"/>
|
||||
|
||||
<div data-bind="visible: selectAllInAlbum" class="alert alert-warning">
|
||||
<p>@lang('admin.select_all_album_active')</p>
|
||||
</div>
|
||||
|
||||
<p>{!! Form::label('bulk-action', trans('forms.bulk_edit_photos_label'), ['class' => 'control-label']) !!}</p>
|
||||
{!! Form::hidden('new-album-id', $album->id) !!}
|
||||
{!! Form::select('bulk-action', $bulk_actions, null, ['placeholder' => trans('forms.bulk_edit_photos_placeholder'), 'id' => 'bulk-action-apply', 'data-bind' => 'value: bulkModifyMethod, enable: photoIDs().length > 0']) !!}
|
||||
@ -247,6 +257,10 @@
|
||||
language.delete_bulk_confirm_title = '{!! addslashes(trans('admin.delete_bulk_photos_title')) !!}';
|
||||
language.delete_confirm_message = '{!! addslashes(trans('admin.delete_photo_message')) !!}';
|
||||
language.delete_confirm_title = '{!! addslashes(trans('admin.delete_photo_title')) !!}';
|
||||
language.select_all_choice_all_action = '{!! addslashes(trans('admin.select_all_choice.all_action')) !!}';
|
||||
language.select_all_choice_message = '{!! addslashes(trans('admin.select_all_choice.message')) !!}';
|
||||
language.select_all_choice_title = '{!! addslashes(trans('admin.select_all_choice.title')) !!}';
|
||||
language.select_all_choice_visible_action = '{!! addslashes(trans('admin.select_all_choice.visible_action')) !!}';
|
||||
language.image_failed = '{!! addslashes(trans('admin.upload_file_status_failed')) !!}';
|
||||
language.image_uploaded = '{!! addslashes(trans('admin.upload_file_status_success')) !!}';
|
||||
language.upload_status = '{!! addslashes(trans('admin.upload_file_status_progress')) !!}';
|
||||
@ -262,6 +276,10 @@
|
||||
var viewModel = new UploadPhotosViewModel('{{ $album->id }}', '{{ $queue_token }}', language, urls);
|
||||
var editViewModel = new EditPhotosViewModel('{{ $album->id }}', language, urls);
|
||||
|
||||
@foreach ($photos as $photo)
|
||||
editViewModel.photoIDsAvailable.push('{{ $photo->id }}');
|
||||
@endforeach
|
||||
|
||||
// Populate the list of albums in the view model
|
||||
@foreach ($albums as $album)
|
||||
editViewModel.albums.push({
|
||||
|
Loading…
Reference in New Issue
Block a user