From 1383cb51e7672b422732a1d20379baaa4f3f7b62 Mon Sep 17 00:00:00 2001 From: Bartek Przybylski Date: Wed, 21 Dec 2011 21:55:52 +0100 Subject: [PATCH] removing and renaming albums --- apps/gallery/ajax/galleryOp.php | 29 ++++++++++++++++++++++++++++ apps/gallery/css/styles.css | 19 +++++++++++++----- apps/gallery/js/album_cover.js | 34 +++++++++++++++++++++++++++++++++ apps/gallery/js/albums.js | 10 ++++++++-- apps/gallery/lib/album.php | 19 +++++++++++++++++- 5 files changed, 103 insertions(+), 8 deletions(-) create mode 100644 apps/gallery/ajax/galleryOp.php diff --git a/apps/gallery/ajax/galleryOp.php b/apps/gallery/ajax/galleryOp.php new file mode 100644 index 00000000000..cd7cab202b1 --- /dev/null +++ b/apps/gallery/ajax/galleryOp.php @@ -0,0 +1,29 @@ + $_GET['newname'])); + break; + case "remove": + handleRemove($_GET['name']); + OC_JSON::success(); + break; + default: + OC_JSON::error(array('cause' => "Unknown operation")); + } +} +?> \ No newline at end of file diff --git a/apps/gallery/css/styles.css b/apps/gallery/css/styles.css index 2178a4224d1..09f9daeb6b1 100644 --- a/apps/gallery/css/styles.css +++ b/apps/gallery/css/styles.css @@ -16,6 +16,7 @@ div#gallery_album_box { vertical-align: top; padding: 10px; border: solid 1px black; + position: relative; } .leftcontent div#gallery_album_box { margin: 5px; @@ -23,20 +24,28 @@ div#gallery_album_box { div#gallery_album_box h1 { font-size: 12pt; - font-family: Arial; + font-family: Verdana; } div#gallery_album_cover { width: 199px; height: 199px; - border: solid 1px #999; + border: solid 1pt #999; padding: 0; } div#gallery_control_overlay { - width:199px; - height:199px; - position:relative; + border: 0; + position:absolute; + right: 10pt; + background-color: #333; + opacity: 0.5; + visibility:hidden; + padding: 0 5pt; +} + +div#gallery_control_overlay a { + color:white; } #gallery_images { diff --git a/apps/gallery/js/album_cover.js b/apps/gallery/js/album_cover.js index c475c60d5da..619aa391c56 100644 --- a/apps/gallery/js/album_cover.js +++ b/apps/gallery/js/album_cover.js @@ -39,3 +39,37 @@ function scanForAlbums() { } }); } + +function galleryRemove(albumName) { + if (confirm("Do you wan't to remove album " + albumName + "?")) { + $.getJSON("ajax/galleryOp.php", {operation: "remove", name: albumName}, function(r) { + if (r.status == "success") { + $("#gallery_album_box[title='"+albumName+"']").remove(); + Albums.remove(albumName); + } else { + alert("Error: " + r.cause); + } + }); + } +} + +function galleryRename(name) { + var result = window.prompt("Input new gallery name", ""); + if (result) { + if (Albums.find(result)) { + alert("Album named '" + result + "' already exists"); + return; + } + $.getJSON("ajax/galleryOp.php", {operation: "rename", oldname: name, newname: result}, function(r) { + if (r.status == "success") { + Albums.rename($("#gallery_album_box[title='"+name+"']"), result); + } else { + alert("Error: " + r.cause); + } + }); + + } else { + alert("Album name can't be empty") + } +} + diff --git a/apps/gallery/js/albums.js b/apps/gallery/js/albums.js index 7ffa2cf891d..ae7d1fac500 100644 --- a/apps/gallery/js/albums.js +++ b/apps/gallery/js/albums.js @@ -57,13 +57,19 @@ Albums={ // displays gallery in linear representation // on given element, and apply default styles for gallery display: function(element) { - var displayTemplate = ''; + var displayTemplate = ''; for (var i in Albums.albums) { var a = Albums.albums[i]; var local = $(displayTemplate.replace(/\*NAME\*/g, a.name)); $("#gallery_album_cover", local).css('background-repeat', 'no-repeat'); $("#gallery_album_cover", local).css('background-position', '0'); $("#gallery_album_cover", local).css('background-image','url("ajax/getCovers.php?album_name='+a.name+'")'); + local.mouseover(function(e) { + $("#gallery_control_overlay", this).css('visibility','visible'); + }); + local.mouseout(function(e) { + $("#gallery_control_overlay", this).css('visibility','hidden'); + }); $("#gallery_album_cover", local).mousemove(function(e) { var albumMetadata = Albums.find(this.title); @@ -71,7 +77,7 @@ Albums={ return; } var x = Math.min(Math.floor((e.layerX - this.offsetLeft)/(this.offsetWidth/albumMetadata.numOfCovers)), albumMetadata.numOfCovers-1); - x *= this.offsetWidth; + x *= this.offsetWidth-1; $(this).css('background-position', -x+'px 0'); }); $(element).append(local); diff --git a/apps/gallery/lib/album.php b/apps/gallery/lib/album.php index 6ddfe46de3d..0999429c5d5 100644 --- a/apps/gallery/lib/album.php +++ b/apps/gallery/lib/album.php @@ -1,10 +1,27 @@ execute(array($owner, $name)); } + + public static function rename($oldname, $newname, $owner) { + $stmt = OC_DB::prepare('UPDATE OR IGNORE *PREFIX*gallery_albums SET album_name=? WHERE uid_owner=? AND album_name=?'); + $stmt->execute(array($newname, $owner, $oldname)); + } + + public static function remove($owner, $name=null) { + $sql = 'DELETE FROM *PREFIX*gallery_albums WHERE uid_owner = ?'; + $args = array($owner); + if (!is_null($name)){ + $sql .= ' AND album_name = ?'; + $args[] = $name; + } + $stmt = OC_DB::prepare($sql); + return $stmt->execute($args); + } + public static function find($owner, $name=null){ $sql = 'SELECT * FROM *PREFIX*gallery_albums WHERE uid_owner = ?'; $args = array($owner); -- 2.39.5