Merge pull request #340 from rhurling/feature/166-merge-albums
Merge Albums feature
This commit is contained in:
commit
e2399a1794
BIN
dist/main.js
vendored
BIN
dist/main.js
vendored
Binary file not shown.
BIN
dist/view.js
vendored
BIN
dist/view.js
vendored
Binary file not shown.
@ -22,6 +22,7 @@ class Admin extends Access {
|
|||||||
case 'Album::setDescription': $this->setAlbumDescription(); break;
|
case 'Album::setDescription': $this->setAlbumDescription(); break;
|
||||||
case 'Album::setPublic': $this->setAlbumPublic(); break;
|
case 'Album::setPublic': $this->setAlbumPublic(); break;
|
||||||
case 'Album::delete': $this->deleteAlbum(); break;
|
case 'Album::delete': $this->deleteAlbum(); break;
|
||||||
|
case 'Album::merge': $this->mergeAlbums(); break;
|
||||||
|
|
||||||
# Photo functions
|
# Photo functions
|
||||||
case 'Photo::get': $this->getPhoto(); break;
|
case 'Photo::get': $this->getPhoto(); break;
|
||||||
@ -123,6 +124,12 @@ class Admin extends Access {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function mergeAlbums() {
|
||||||
|
Module::dependencies(isset($_POST['albumIDs']));
|
||||||
|
$album = new Album($this->database, $this->plugins, $this->settings, $_POST['albumIDs']);
|
||||||
|
echo $album->merge();
|
||||||
|
}
|
||||||
|
|
||||||
# Photo functions
|
# Photo functions
|
||||||
|
|
||||||
private function getPhoto() {
|
private function getPhoto() {
|
||||||
|
@ -715,6 +715,40 @@ class Album extends Module {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function merge() {
|
||||||
|
|
||||||
|
# Check dependencies
|
||||||
|
self::dependencies(isset($this->database, $this->albumIDs));
|
||||||
|
|
||||||
|
# Call plugins
|
||||||
|
$this->plugins(__METHOD__, 0, func_get_args());
|
||||||
|
|
||||||
|
$albumIDs = explode(',', $this->albumIDs);
|
||||||
|
$albumID = array_splice($albumIDs, 0, 1)[0];
|
||||||
|
|
||||||
|
$inQuery = implode(',', array_fill(0, count($albumIDs), '?'));
|
||||||
|
$data = array_merge(array(LYCHEE_TABLE_PHOTOS, $albumID), $albumIDs);
|
||||||
|
|
||||||
|
$merge_query = Database::prepare($this->database, "UPDATE ? SET album = ? WHERE album IN ($inQuery)", $data);
|
||||||
|
$merge_result = $this->database->query($merge_query);
|
||||||
|
|
||||||
|
if (!$merge_result) {
|
||||||
|
Log::error($this->database, __METHOD__, __LINE__, $this->database->error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = array_merge( array(LYCHEE_TABLE_ALBUMS), $albumIDs);
|
||||||
|
$delete_query = Database::prepare($this->database, "DELETE FROM ? WHERE id IN ($inQuery)", $data);
|
||||||
|
$delete_result = $this->database->query($delete_query);
|
||||||
|
|
||||||
|
if (!$delete_result) {
|
||||||
|
Log::error($this->database, __METHOD__, __LINE__, $this->database->error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
@ -568,3 +568,43 @@ album.getArchive = function(albumID) {
|
|||||||
location.href = link;
|
location.href = link;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
album.merge = function(albumIDs) {
|
||||||
|
var action = {}
|
||||||
|
|
||||||
|
action.fn = function() {
|
||||||
|
|
||||||
|
var params;
|
||||||
|
|
||||||
|
basicModal.close();
|
||||||
|
|
||||||
|
params = {
|
||||||
|
albumIDs: albumIDs.join()
|
||||||
|
}
|
||||||
|
|
||||||
|
api.post('Album::merge', params, function(data) {
|
||||||
|
if (data!==true) {
|
||||||
|
lychee.error(null, params, data);
|
||||||
|
} else {
|
||||||
|
albums.json = null
|
||||||
|
albums.load()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
basicModal.show({
|
||||||
|
body: '<p>Are you sure you want to merge all selected albums?</p>',
|
||||||
|
buttons: {
|
||||||
|
action: {
|
||||||
|
title: 'Merge Albums',
|
||||||
|
fn: action.fn,
|
||||||
|
class: 'red'
|
||||||
|
},
|
||||||
|
cancel: {
|
||||||
|
title: "Don't merge",
|
||||||
|
fn: basicModal.close
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
@ -61,6 +61,7 @@ contextMenu.albumMulti = function(albumIDs, e) {
|
|||||||
multiselect.stopResize();
|
multiselect.stopResize();
|
||||||
|
|
||||||
var items = [
|
var items = [
|
||||||
|
{ type: 'item', title: 'Merge All', fn: function () { album.merge(albumIDs) } },
|
||||||
{ type: 'item', title: build.iconic('pencil') + 'Rename All', fn: function() { album.setTitle(albumIDs) } },
|
{ type: 'item', title: build.iconic('pencil') + 'Rename All', fn: function() { album.setTitle(albumIDs) } },
|
||||||
{ type: 'item', title: build.iconic('trash') + 'Delete All', fn: function() { album.delete(albumIDs) } }
|
{ type: 'item', title: build.iconic('trash') + 'Delete All', fn: function() { album.delete(albumIDs) } }
|
||||||
];
|
];
|
||||||
|
Loading…
Reference in New Issue
Block a user