From 9ed3c31fc99fbd33576363a79d51f5be66dc2969 Mon Sep 17 00:00:00 2001 From: Bartek Przybylski Date: Sun, 8 Jan 2012 00:14:34 +0100 Subject: [PATCH] automatic adding of photo to album, feedback for user while scanning, general cleanup --- apps/gallery/ajax/galleryOp.php | 4 +- apps/gallery/ajax/scanForAlbums.php | 2 +- apps/gallery/appinfo/app.php | 3 ++ apps/gallery/appinfo/database.xml | 6 +++ apps/gallery/css/styles.css | 69 +++++------------------------ apps/gallery/js/album_cover.js | 4 ++ apps/gallery/lib/album.php | 17 ++++--- apps/gallery/lib/hooks_handlers.php | 36 +++++++++++++++ apps/gallery/lib/photo.php | 2 + apps/gallery/lib/scanner.php | 6 +-- apps/gallery/templates/index.php | 5 ++- 11 files changed, 82 insertions(+), 72 deletions(-) create mode 100644 apps/gallery/lib/hooks_handlers.php diff --git a/apps/gallery/ajax/galleryOp.php b/apps/gallery/ajax/galleryOp.php index cd7cab202b..8a006dda63 100644 --- a/apps/gallery/ajax/galleryOp.php +++ b/apps/gallery/ajax/galleryOp.php @@ -1,6 +1,6 @@ "Unknown operation")); } } -?> \ No newline at end of file +?> diff --git a/apps/gallery/ajax/scanForAlbums.php b/apps/gallery/ajax/scanForAlbums.php index f603cbb497..b1f0a433a4 100644 --- a/apps/gallery/ajax/scanForAlbums.php +++ b/apps/gallery/ajax/scanForAlbums.php @@ -5,6 +5,6 @@ OC_JSON::checkLoggedIn(); OC_JSON::checkAppEnabled('gallery'); OC_Gallery_Scanner::cleanUp(); -OC_JSON::success(array('albums' => OC_Gallery_Scanner::scan(''))); +OC_JSON::success(array('albums' => OC_Gallery_Scanner::scan('/'))); ?> diff --git a/apps/gallery/appinfo/app.php b/apps/gallery/appinfo/app.php index 2b1ab857af..3a2dbcb43a 100644 --- a/apps/gallery/appinfo/app.php +++ b/apps/gallery/appinfo/app.php @@ -2,6 +2,7 @@ OC::$CLASSPATH['OC_Gallery_Album'] = 'apps/gallery/lib/album.php'; OC::$CLASSPATH['OC_Gallery_Photo'] = 'apps/gallery/lib/photo.php'; OC::$CLASSPATH['OC_Gallery_Scanner'] = 'apps/gallery/lib/scanner.php'; +OC::$CLASSPATH['OC_Gallery_Hooks_Handlers'] = 'apps/gallery/lib/hooks_handlers.php'; OC_App::register(array( 'order' => 20, @@ -28,4 +29,6 @@ OC_App::addNavigationEntry( array( } new OC_GallerySearchProvider(); + +require_once('apps/gallery/lib/hooks_handlers.php'); ?> diff --git a/apps/gallery/appinfo/database.xml b/apps/gallery/appinfo/database.xml index fd55b3a6fb..db88e4c1b5 100644 --- a/apps/gallery/appinfo/database.xml +++ b/apps/gallery/appinfo/database.xml @@ -27,6 +27,12 @@ true 100 + + album_path + text + true + 100 + diff --git a/apps/gallery/css/styles.css b/apps/gallery/css/styles.css index 53c3c0901d..cc343ba0d0 100644 --- a/apps/gallery/css/styles.css +++ b/apps/gallery/css/styles.css @@ -1,60 +1,11 @@ -div#gallery_list { - margin: 90pt 20pt; -} -div#gallery_list.leftcontent { - padding-top: 15px; - margin: 0; - text-align: center; -} +div#gallery_list { margin: 90pt 20pt; } +div#gallery_list.leftcontent { padding-top: 15px; margin: 0; text-align: center; } +div#gallery_album_box { width: 200px; text-align: center; border: 0; display: inline-block; margin: 5pt; vertical-align: top; padding: 10px; border: solid 1px black; position: relative; overflow: hidden; color: #999; } +div#gallery_album_box:hover { color: black; } +.leftcontent div#gallery_album_box { margin: 5px; } +div#gallery_album_box h1 { font-size: 12pt; font-family: Verdana; } +div#gallery_album_cover { width: 199px; height: 199px; border: solid 1pt #999; padding: 0; } +div#gallery_control_overlay { 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 { padding:10px 5px; } -div#gallery_album_box { - width: 200px; - text-align: center; - border: 0; - display: inline-block; - margin: 5pt; - vertical-align: top; - padding: 10px; - border: solid 1px black; - position: relative; - overflow: hidden; - color: #999; -} - -div#gallery_album_box:hover { - color: black; -} - -.leftcontent div#gallery_album_box { - margin: 5px; -} - -div#gallery_album_box h1 { - font-size: 12pt; - font-family: Verdana; -} - -div#gallery_album_cover { - width: 199px; - height: 199px; - border: solid 1pt #999; - padding: 0; -} - -div#gallery_control_overlay { - 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 { -padding:10px 5px; -} diff --git a/apps/gallery/js/album_cover.js b/apps/gallery/js/album_cover.js index 619aa391c5..f6cb2da310 100644 --- a/apps/gallery/js/album_cover.js +++ b/apps/gallery/js/album_cover.js @@ -31,7 +31,11 @@ function createNewAlbum() { } function scanForAlbums() { + $("#notification").fadeIn(); + $("#notification").slideDown(); $.getJSON('ajax/scanForAlbums.php', function(r) { + $("#notification").fadeOut(); + $("#notification").slideUp(); if (r.status == 'success') { window.location.reload(true); } else { diff --git a/apps/gallery/lib/album.php b/apps/gallery/lib/album.php index 0999429c5d..98876b891c 100644 --- a/apps/gallery/lib/album.php +++ b/apps/gallery/lib/album.php @@ -1,9 +1,9 @@ execute(array($owner, $name)); + public static function create($owner, $name, $path){ + $stmt = OC_DB::prepare('INSERT INTO *PREFIX*gallery_albums (uid_owner, album_name, album_path) VALUES (?, ?, ?)'); + $stmt->execute(array($owner, $name, $path)); } public static function rename($oldname, $newname, $owner) { @@ -22,14 +22,21 @@ class OC_Gallery_Album { return $stmt->execute($args); } - public static function find($owner, $name=null){ + public static function find($owner, $name=null, $path=null){ $sql = 'SELECT * FROM *PREFIX*gallery_albums WHERE uid_owner = ?'; $args = array($owner); if (!is_null($name)){ $sql .= ' AND album_name = ?'; $args[] = $name; - } + } + if (!is_null($path)){ + $sql .= ' AND album_path = ?'; + $args[] = $path; + } $stmt = OC_DB::prepare($sql); return $stmt->execute($args); } + } + +?> diff --git a/apps/gallery/lib/hooks_handlers.php b/apps/gallery/lib/hooks_handlers.php new file mode 100644 index 0000000000..5d1e7502aa --- /dev/null +++ b/apps/gallery/lib/hooks_handlers.php @@ -0,0 +1,36 @@ +numRows() == 0) { + $new_album_name = trim(str_replace('/', '.', $fullpath)); + if ($new_album_name == '.') $new_album_name = 'main'; + OC_Gallery_Album::create(OC_User::getUser(), $new_album_name, $path); + $album = OC_Gallery_Album::find(OC_User::getUser(), null, $path); + } + $album = $album->fetchRow(); + $albumId = $album['album_id']; + OC_Gallery_Photo::create($albumId, $fullpath); + + } +} + +?> diff --git a/apps/gallery/lib/photo.php b/apps/gallery/lib/photo.php index 97d159935f..a89a56981f 100644 --- a/apps/gallery/lib/photo.php +++ b/apps/gallery/lib/photo.php @@ -25,4 +25,6 @@ class OC_Gallery_Photo{ .' AND photos.album_id = albums.album_id'); return $stmt->execute(array($owner, $album_name)); } + } + diff --git a/apps/gallery/lib/scanner.php b/apps/gallery/lib/scanner.php index 59c34b8e69..f754f91300 100644 --- a/apps/gallery/lib/scanner.php +++ b/apps/gallery/lib/scanner.php @@ -21,13 +21,13 @@ class OC_Gallery_Scanner { public static function scanDir($path, &$albums) { $current_album = array('name'=> $path, 'imagesCount' => 0, 'images' => array()); $current_album['name'] = str_replace('/', '.', str_replace(OC::$CONFIG_DATADIRECTORY, '', $current_album['name'])); - $current_album['name'] = ($current_album['name']==='') ? + $current_album['name'] = ($current_album['name']==='.') ? 'main' : trim($current_album['name'],'.'); if ($dh = OC_Filesystem::opendir($path)) { while (($filename = readdir($dh)) !== false) { - $filepath = $path.'/'.$filename; + $filepath = ($path[strlen($path)-1]=='/'?$path:$path.'/').$filename; if (substr($filename, 0, 1) == '.') continue; if (OC_Filesystem::is_dir($filepath)) { self::scanDir($filepath, $albums); @@ -41,7 +41,7 @@ class OC_Gallery_Scanner { $result = OC_Gallery_Album::find(OC_User::getUser(), $current_album['name']); if ($result->numRows() == 0 && count($current_album['images'])) { - OC_Gallery_Album::create(OC_User::getUser(), $current_album['name']); + OC_Gallery_Album::create(OC_User::getUser(), $current_album['name'], $path); $result = OC_Gallery_Album::find(OC_User::getUser(), $current_album['name']); } $albumId = $result->fetchRow(); diff --git a/apps/gallery/templates/index.php b/apps/gallery/templates/index.php index 0e89e44876..7c6e91a468 100644 --- a/apps/gallery/templates/index.php +++ b/apps/gallery/templates/index.php @@ -4,9 +4,10 @@ OC_Util::addScript('gallery', 'albums'); OC_Util::addScript('gallery', 'album_cover'); ?> +
- -
+ +