Small code adjustments #232

This commit is contained in:
Tobias Reich 2014-09-17 23:11:02 +02:00
parent a0d11ca6b2
commit 582a8a3f93
14 changed files with 92 additions and 4508 deletions

9
README
View File

@ -1,9 +0,0 @@
Experimental fork of Lychee, a photo management system, that features a number of improvements, including:
* Faster photo browsing thanks to caching.
* Default sort order of albums is changed from new to old.
* Preserves scroll position when changing from albums to album and vice versa
* Better Unicode support for values read from the database
See http://github.com/electerious/Lychee for more details on Lychee

View File

@ -116,8 +116,9 @@ album = {
if (data!==false&&isNumber(data)) { if (data!==false&&isNumber(data)) {
albums.refresh(); albums.refresh();
lychee.goto(data); lychee.goto(data);
} else {
lychee.error(null, params, data);
} }
else lychee.error(null, params, data);
}); });
@ -149,7 +150,7 @@ album = {
albumIDs.forEach(function(id) { albumIDs.forEach(function(id) {
albums.json.num--; albums.json.num--;
view.albums.content.delete(id); view.albums.content.delete(id);
delete albums.json.content[id] delete albums.json.content[id];
}); });
} else lychee.goto(""); } else lychee.goto("");
@ -298,7 +299,7 @@ album = {
password = "", password = "",
listed = false, listed = false,
downloadable = false; downloadable = false;
albums.refresh(); albums.refresh();
if (!visible.message()&&album.json.public==0) { if (!visible.message()&&album.json.public==0) {
@ -311,7 +312,7 @@ album = {
else $(".message .choice input.text").hide(); else $(".message .choice input.text").hide();
}); });
return true; return true;
} }

View File

@ -17,13 +17,13 @@ albums = {
lychee.animate(".album:nth-child(-n+50), .photo:nth-child(-n+50)", "contentZoomOut"); lychee.animate(".album:nth-child(-n+50), .photo:nth-child(-n+50)", "contentZoomOut");
lychee.animate(".divider", "fadeOut"); lychee.animate(".divider", "fadeOut");
startTime = new Date().getTime(); startTime = new Date().getTime();
if(albums.json===null) {
if(albums.json == null) {
lychee.api("getAlbums", function(data) { lychee.api("getAlbums", function(data) {
/* Smart Albums */ /* Smart Albums */
data.unsortedAlbum = { data.unsortedAlbum = {
id: 0, id: 0,
@ -34,7 +34,7 @@ albums = {
thumb1: data.unsortedThumb1, thumb1: data.unsortedThumb1,
thumb2: data.unsortedThumb2 thumb2: data.unsortedThumb2
}; };
data.starredAlbum = { data.starredAlbum = {
id: "f", id: "f",
title: "Starred", title: "Starred",
@ -44,7 +44,7 @@ albums = {
thumb1: data.starredThumb1, thumb1: data.starredThumb1,
thumb2: data.starredThumb2 thumb2: data.starredThumb2
}; };
data.publicAlbum = { data.publicAlbum = {
id: "s", id: "s",
title: "Public", title: "Public",
@ -54,7 +54,7 @@ albums = {
thumb1: data.publicThumb1, thumb1: data.publicThumb1,
thumb2: data.publicThumb2 thumb2: data.publicThumb2
}; };
data.recentAlbum = { data.recentAlbum = {
id: "r", id: "r",
title: "Recent", title: "Recent",
@ -64,26 +64,30 @@ albums = {
thumb1: data.recentThumb1, thumb1: data.recentThumb1,
thumb2: data.recentThumb2 thumb2: data.recentThumb2
}; };
albums.json = data; albums.json = data;
durationTime = (new Date().getTime() - startTime); durationTime = (new Date().getTime() - startTime);
if (durationTime>300) waitTime = 0; else waitTime = 300 - durationTime; if (durationTime>300) waitTime = 0; else waitTime = 300 - durationTime;
if (!visible.albums()&&!visible.photo()&&!visible.album()) waitTime = 0; if (!visible.albums()&&!visible.photo()&&!visible.album()) waitTime = 0;
if (visible.album()&&lychee.content.html()==="") waitTime = 0; if (visible.album()&&lychee.content.html()==="") waitTime = 0;
setTimeout(function() { setTimeout(function() {
view.header.mode("albums"); view.header.mode("albums");
view.albums.init(); view.albums.init();
lychee.animate(".album:nth-child(-n+50), .photo:nth-child(-n+50)", "contentZoomIn"); lychee.animate(".album:nth-child(-n+50), .photo:nth-child(-n+50)", "contentZoomIn");
}, waitTime);
}, waitTime); });
});
} else { } else {
setTimeout(function() {
view.header.mode("albums"); view.header.mode("albums");
view.albums.init(); view.albums.init();
lychee.animate(".album:nth-child(-n+50), .photo:nth-child(-n+50)", "contentZoomIn"); lychee.animate(".album:nth-child(-n+50), .photo:nth-child(-n+50)", "contentZoomIn");
} }, 300);
}
}, },
parse: function(album) { parse: function(album) {
@ -99,9 +103,11 @@ albums = {
} }
}, },
refresh: function() { refresh: function() {
albums.json = null; albums.json = null;
} }
}; };

View File

@ -34,7 +34,7 @@ build = {
title = albumJSON.title, title = albumJSON.title,
typeThumb = ""; typeThumb = "";
if (title != null && title.length>18) { if (title!==null&&title.length>18) {
title = albumJSON.title.substr(0, 18) + "..."; title = albumJSON.title.substr(0, 18) + "...";
longTitle = albumJSON.title; longTitle = albumJSON.title;
} }
@ -76,7 +76,7 @@ build = {
longTitle = "", longTitle = "",
title = photoJSON.title; title = photoJSON.title;
if (title != null && title.length>18) { if (title!==null&&title.length>18) {
title = photoJSON.title.substr(0, 18) + "..."; title = photoJSON.title.substr(0, 18) + "...";
longTitle = photoJSON.title; longTitle = photoJSON.title;
} }

View File

@ -181,7 +181,6 @@ var lychee = {
if (albumID&&photoID) { if (albumID&&photoID) {
// Trash data // Trash data
//albums.json = null;
photo.json = null; photo.json = null;
// Show Photo // Show Photo
@ -195,7 +194,6 @@ var lychee = {
} else if (albumID) { } else if (albumID) {
// Trash data // Trash data
//albums.json = null;
photo.json = null; photo.json = null;
// Show Album // Show Album
@ -206,7 +204,6 @@ var lychee = {
} else { } else {
// Trash data // Trash data
//albums.json = null;
album.json = null; album.json = null;
photo.json = null; photo.json = null;
search.code = ""; search.code = "";

View File

@ -5,10 +5,10 @@
* @copyright 2014 by Tobias Reich * @copyright 2014 by Tobias Reich
*/ */
cache = null;
photo = { photo = {
json: null, json: null,
cache: null,
getID: function() { getID: function() {
@ -49,19 +49,26 @@ photo = {
}); });
}, },
//preload the next photo for better response time //preload the next photo for better response time
preloadNext: function(photoID) { preloadNext: function(photoID) {
if(album.json &&
album.json.content && var nextPhoto,
url;
if (album.json &&
album.json.content &&
album.json.content[photoID] && album.json.content[photoID] &&
album.json.content[photoID].nextPhoto!="") { album.json.content[photoID].nextPhoto!="") {
var nextPhoto = album.json.content[photoID].nextPhoto; nextPhoto = album.json.content[photoID].nextPhoto;
var url = album.json.content[nextPhoto].url; url = album.json.content[nextPhoto].url;
cache = new Image();
cache.src = url; photo.cache = new Image();
photo.cache.src = url;
} }
}, },
parse: function() { parse: function() {
@ -331,7 +338,7 @@ photo = {
if (data!==true) lychee.error(null, params, data); if (data!==true) lychee.error(null, params, data);
}); });
albums.refresh(); albums.refresh();
}, },
@ -339,15 +346,13 @@ photo = {
setPublic: function(photoID, e) { setPublic: function(photoID, e) {
var params; var params;
if (photo.json.public==2) { if (photo.json.public==2) {
modal.show("Public Album", "This photo is located in a public album. To make this photo private or public, edit the visibility of the associated album.", [["Show Album", function() { lychee.goto(photo.json.original_album) }], ["Close", function() {}]]); modal.show("Public Album", "This photo is located in a public album. To make this photo private or public, edit the visibility of the associated album.", [["Show Album", function() { lychee.goto(photo.json.original_album) }], ["Close", function() {}]]);
return false; return false;
} }
albums.refresh();
if (visible.photo()) { if (visible.photo()) {
@ -367,6 +372,8 @@ photo = {
}); });
albums.refresh();
}, },
setDescription: function(photoID) { setDescription: function(photoID) {

View File

@ -10,7 +10,7 @@ view = {
header: { header: {
show: function() { show: function() {
var newMargin = -1*($("#imageview #image").height()/2)+20; var newMargin = -1*($("#imageview #image").height()/2)+20;
clearTimeout($(window).data("timeout")); clearTimeout($(window).data("timeout"));
@ -121,32 +121,33 @@ view = {
}, },
content: { content: {
scroll_pos: 0, scrollPosition: 0,
init: function() { init: function() {
var smartData = "", var smartData = "",
albumsData = ""; albumsData = "";
/* Smart Albums */ /* Smart Albums */
albums.parse(albums.json.unsortedAlbum); albums.parse(albums.json.unsortedAlbum);
albums.parse(albums.json.publicAlbum); albums.parse(albums.json.publicAlbum);
albums.parse(albums.json.starredAlbum); albums.parse(albums.json.starredAlbum);
albums.parse(albums.json.recentAlbum); albums.parse(albums.json.recentAlbum);
if (!lychee.publicMode) smartData = build.divider("Smart Albums") + build.album(albums.json.unsortedAlbum) + build.album(albums.json.starredAlbum) + build.album(albums.json.publicAlbum) + build.album(albums.json.recentAlbum); if (!lychee.publicMode) smartData = build.divider("Smart Albums") + build.album(albums.json.unsortedAlbum) + build.album(albums.json.starredAlbum) + build.album(albums.json.publicAlbum) + build.album(albums.json.recentAlbum);
/* Albums */ /* Albums */
if (albums.json.content) { if (albums.json.content) {
$.each(albums.json.content, function() { $.each(albums.json.content, function() {
albums.parse(this); albums.parse(this);
//display albums in reverse order //display albums in reverse order
albumsData = build.album(this) + albumsData; albumsData = build.album(this) + albumsData;
}); });
if (!lychee.publicMode) albumsData = build.divider("Albums") + albumsData; if (!lychee.publicMode) albumsData = build.divider("Albums") + albumsData;
} }
if (smartData===""&&albumsData==="") { if (smartData===""&&albumsData==="") {
@ -157,10 +158,10 @@ view = {
} }
$("img[data-type!='nonretina']").retina(); $("img[data-type!='nonretina']").retina();
//restore scroll /* Restore scroll position */
if (view.albums.content.scroll_pos != null) { if (view.albums.content.scrollPosition!==null) {
$("html, body").scrollTop(view.albums.content.scroll_pos); $("html, body").scrollTop(view.albums.content.scrollPosition);
} }
}, },
@ -172,7 +173,7 @@ view = {
title = albums.json.content[albumID].title; title = albums.json.content[albumID].title;
if (albums.json.content[albumID].password) prefix = "<span class='icon-lock'></span> "; if (albums.json.content[albumID].password) prefix = "<span class='icon-lock'></span> ";
if (title != null && title.length>18) { if (title!==null&&title.length>18) {
longTitle = title; longTitle = title;
title = title.substr(0, 18) + "..."; title = title.substr(0, 18) + "...";
} }
@ -259,10 +260,11 @@ view = {
lychee.content.html(photosData); lychee.content.html(photosData);
$("img[data-type!='svg']").retina(); $("img[data-type!='svg']").retina();
view.albums.content.scroll_pos = $(document).scrollTop(); /* Save and reset scroll position */
//scroll to top view.albums.content.scrollPosition = $(document).scrollTop();
$("html, body").scrollTop(0); $("html, body").scrollTop(0);
}, },
title: function(photoID) { title: function(photoID) {
@ -270,7 +272,7 @@ view = {
var longTitle = "", var longTitle = "",
title = album.json.content[photoID].title; title = album.json.content[photoID].title;
if (title != null && title.length>18) { if (title!==null&&title.length>18) {
longTitle = title; longTitle = title;
title = title.substr(0, 18) + "..."; title = title.substr(0, 18) + "...";
} }
@ -468,7 +470,7 @@ view = {
photo: function() { photo: function() {
lychee.imageview.html(build.imageview(photo.json, photo.isSmall(), visible.controls())); lychee.imageview.html(build.imageview(photo.json, photo.isSmall(), visible.controls()));
if ((album.json&&album.json.content&&album.json.content[photo.getID()]&&album.json.content[photo.getID()].nextPhoto==="")||lychee.viewMode) $("a#next").hide(); if ((album.json&&album.json.content&&album.json.content[photo.getID()]&&album.json.content[photo.getID()].nextPhoto==="")||lychee.viewMode) $("a#next").hide();
if ((album.json&&album.json.content&&album.json.content[photo.getID()]&&album.json.content[photo.getID()].previousPhoto==="")||lychee.viewMode) $("a#previous").hide(); if ((album.json&&album.json.content&&album.json.content[photo.getID()]&&album.json.content[photo.getID()].previousPhoto==="")||lychee.viewMode) $("a#previous").hide();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -31,7 +31,7 @@ gulp.task('view', function () {
.pipe(gulp.dest('../assets/min/')); .pipe(gulp.dest('../assets/min/'));
}); });
/*
gulp.task('js', function () { gulp.task('js', function () {
gulp.src(paths.js) gulp.src(paths.js)
@ -39,15 +39,6 @@ gulp.task('js', function () {
.pipe(plugins.uglify()) .pipe(plugins.uglify())
.pipe(gulp.dest('../assets/min/')); .pipe(gulp.dest('../assets/min/'));
});
*/
gulp.task('js', function () {
gulp.src(paths.js)
.pipe(plugins.concat('main.js', {newLine: "\n"}))
.pipe(gulp.dest('../assets/min/'));
}); });
gulp.task('css', function () { gulp.task('css', function () {

View File

@ -11,7 +11,7 @@
"devDependencies": { "devDependencies": {
"gulp": "^3.8.8", "gulp": "^3.8.8",
"gulp-autoprefixer": "1.0.0", "gulp-autoprefixer": "1.0.0",
"gulp-concat": "^2.4.0", "gulp-concat": "^2.4.1",
"gulp-load-plugins": "^0.6.0", "gulp-load-plugins": "^0.6.0",
"gulp-minify-css": "^0.3.8", "gulp-minify-css": "^0.3.8",
"gulp-sass": "^0.7.3", "gulp-sass": "^0.7.3",

View File

@ -9,7 +9,6 @@
if (!defined('LYCHEE')) exit('Error: Direct access is not allowed!'); if (!defined('LYCHEE')) exit('Error: Direct access is not allowed!');
if (!defined('LYCHEE_ACCESS_ADMIN')) exit('Error: You are not allowed to access this area!'); if (!defined('LYCHEE_ACCESS_ADMIN')) exit('Error: You are not allowed to access this area!');
class Admin extends Access { class Admin extends Access {
public function check($fn) { public function check($fn) {
@ -74,6 +73,7 @@ class Admin extends Access {
$album = new Album($this->database, $this->plugins, $this->settings, null); $album = new Album($this->database, $this->plugins, $this->settings, null);
echo json_encode($album->getAll(false)); echo json_encode($album->getAll(false));
} }
private function getAlbum() { private function getAlbum() {

View File

@ -8,17 +8,6 @@
if (!defined('LYCHEE')) exit('Error: Direct access is not allowed!'); if (!defined('LYCHEE')) exit('Error: Direct access is not allowed!');
function debug_to_console( $data ) {
if ( is_array( $data ) )
$output = "<script>console.log( 'Debug Objects: " . implode( ',', $data) . "' );</script>";
else
$output = "<script>console.log( 'Debug Objects: " . $data . "' );</script>";
echo $output;
}
class Album extends Module { class Album extends Module {
private $database = null; private $database = null;
@ -94,10 +83,9 @@ class Album extends Module {
default: $query = Database::prepare($this->database, "SELECT * FROM ? WHERE id = '?' LIMIT 1", array(LYCHEE_TABLE_ALBUMS, $this->albumIDs)); default: $query = Database::prepare($this->database, "SELECT * FROM ? WHERE id = '?' LIMIT 1", array(LYCHEE_TABLE_ALBUMS, $this->albumIDs));
$albums = $this->database->query($query); $albums = $this->database->query($query);
$return = $albums->fetch_assoc(); $return = $albums->fetch_assoc();
$return['sysdate'] = date('d M. Y', $return['sysstamp']); $return['sysdate'] = date('d M. Y', $return['sysstamp']);
$return['password'] = ($return['password']=='' ? false : true); $return['password'] = ($return['password']=='' ? false : true);
$query = Database::prepare($this->database, "SELECT id, title, tags, public, star, album, thumbUrl, takestamp, url FROM ? WHERE album = '?' " . $this->settings['sorting'], array(LYCHEE_TABLE_PHOTOS, $this->albumIDs));
$query = Database::prepare($this->database, "SELECT id, title, tags, public, star, album, thumbUrl, takestamp, url FROM ? WHERE album = '?' " . $this->settings['sorting'], array(LYCHEE_TABLE_PHOTOS, $this->albumIDs));
break; break;
} }
@ -112,7 +100,7 @@ class Album extends Module {
$photo['previousPhoto'] = $previousPhotoID; $photo['previousPhoto'] = $previousPhotoID;
$photo['nextPhoto'] = ''; $photo['nextPhoto'] = '';
$photo['thumbUrl'] = LYCHEE_URL_UPLOADS_THUMB . $photo['thumbUrl']; $photo['thumbUrl'] = LYCHEE_URL_UPLOADS_THUMB . $photo['thumbUrl'];
# Parse url # Parse url
$photo['url'] = LYCHEE_URL_UPLOADS_BIG . $photo['url']; $photo['url'] = LYCHEE_URL_UPLOADS_BIG . $photo['url'];
@ -214,7 +202,7 @@ class Album extends Module {
# Call plugins # Call plugins
$this->plugins(__METHOD__, 1, func_get_args()); $this->plugins(__METHOD__, 1, func_get_args());
return $return; return $return;
} }
@ -407,7 +395,7 @@ class Album extends Module {
# Parse # Parse
if (strlen($title)>50) $title = substr($title, 0, 50); if (strlen($title)>50) $title = substr($title, 0, 50);
# Execute query # Execute query
$query = Database::prepare($this->database, "UPDATE ? SET title = '?' WHERE id IN (?)", array(LYCHEE_TABLE_ALBUMS, $title, $this->albumIDs)); $query = Database::prepare($this->database, "UPDATE ? SET title = '?' WHERE id IN (?)", array(LYCHEE_TABLE_ALBUMS, $title, $this->albumIDs));
$result = $this->database->query($query); $result = $this->database->query($query);