diff --git a/dist/main.js b/dist/main.js
index 1fe7260..31e0f35 100644
Binary files a/dist/main.js and b/dist/main.js differ
diff --git a/src/scripts/album.js b/src/scripts/album.js
index 490a500..b7cc08a 100644
--- a/src/scripts/album.js
+++ b/src/scripts/album.js
@@ -3,402 +3,403 @@
* @copyright 2014 by Tobias Reich
*/
-album = {
+album = {}
- json: null,
+album.json = null;
- getID: function() {
+album.getID = function() {
- var id;
+ var id;
- if (photo.json) id = photo.json.album;
- else if (album.json) id = album.json.id;
- else id = $(".album:hover, .album.active").attr("data-id");
+ if (photo.json) id = photo.json.album;
+ else if (album.json) id = album.json.id;
+ else id = $('.album:hover, .album.active').attr('data-id');
- // Search
- if (!id) id = $(".album:hover, .album.active").attr("data-id");
- if (!id) id = $(".photo:hover, .photo.active").attr("data-album-id");
+ // Search
+ if (!id) id = $('.album:hover, .album.active').attr('data-id');
+ if (!id) id = $('.photo:hover, .photo.active').attr('data-album-id');
- if (id) return id;
- else return false;
+ if (id) return id;
+ else return false;
- },
+}
- load: function(albumID, refresh) {
+album.load = function(albumID, refresh) {
- var startTime,
- params,
- durationTime,
- waitTime;
+ var startTime,
+ params,
+ durationTime,
+ waitTime;
- password.get(albumID, function() {
-
- if (!refresh) {
- loadingBar.show();
- lychee.animate(".album:nth-child(-n+50), .photo:nth-child(-n+50)", "contentZoomOut");
- lychee.animate(".divider", "fadeOut");
- }
-
- startTime = new Date().getTime();
-
- params = "getAlbum&albumID=" + albumID + "&password=" + password.value;
- lychee.api(params, function(data) {
-
- if (data==="Warning: Album private!") {
- if (document.location.hash.replace("#", "").split("/")[1]!=undefined) {
- // Display photo only
- lychee.setMode("view");
- } else {
- // Album not public
- lychee.content.show();
- lychee.goto("");
- }
- return false;
- }
-
- if (data==="Warning: Wrong password!") {
- album.load(albumID, refresh);
- return false;
- }
-
- album.json = data;
-
- // Calculate delay
- durationTime = (new Date().getTime() - startTime);
- if (durationTime>300) waitTime = 0;
- else waitTime = 300 - durationTime;
-
- // Skip delay when refresh is true
- // Skip delay when opening a blank Lychee
- if (refresh===true) waitTime = 0;
- if (!visible.albums()&&!visible.photo()&&!visible.album()) waitTime = 0;
-
- setTimeout(function() {
-
- view.album.init();
-
- if (!refresh) {
- lychee.animate(".album:nth-child(-n+50), .photo:nth-child(-n+50)", "contentZoomIn");
- view.header.mode("album");
- }
-
- }, waitTime);
-
- });
-
- });
-
- },
-
- parse: function() {
-
- if (!album.json.title) album.json.title = "Untitled";
-
- },
-
- add: function() {
-
- var title,
- params,
- buttons,
- isNumber = function(n) { return !isNaN(parseFloat(n)) && isFinite(n) };
-
- buttons = [
- ["Create Album", function() {
-
- title = $(".message input.text").val();
-
- if (title.length===0) title = "Untitled";
-
- modal.close();
-
- params = "addAlbum&title=" + escape(encodeURI(title));
- lychee.api(params, function(data) {
-
- if (data===true) data = 1; // Avoid first album to be true
-
- if (data!==false&&isNumber(data)) {
- albums.refresh();
- lychee.goto(data);
- } else {
- lychee.error(null, params, data);
- }
-
- });
-
- }],
- ["Cancel", function() {}]
- ];
-
- modal.show("New Album", "Enter a title for this album: ", buttons);
-
- },
-
- delete: function(albumIDs) {
-
- var params,
- buttons,
- albumTitle;
-
- if (!albumIDs) return false;
- if (albumIDs instanceof Array===false) albumIDs = [albumIDs];
-
- buttons = [
- ["", function() {
-
- params = "deleteAlbum&albumIDs=" + albumIDs;
- lychee.api(params, function(data) {
-
- if (visible.albums()) {
-
- albumIDs.forEach(function(id) {
- albums.json.num--;
- view.albums.content.delete(id);
- delete albums.json.content[id];
- });
-
- } else {
-
- albums.refresh();
- lychee.goto("");
-
- }
-
- if (data!==true) lychee.error(null, params, data);
-
- });
-
- }],
- ["", function() {}]
- ];
-
- if (albumIDs.toString()==="0") {
-
- buttons[0][0] = "Clear Unsorted";
- buttons[1][0] = "Keep Unsorted";
-
- modal.show("Clear Unsorted", "Are you sure you want to delete all photos from 'Unsorted'?
This action can't be undone!", buttons);
-
- } else if (albumIDs.length===1) {
-
- buttons[0][0] = "Delete Album and Photos";
- buttons[1][0] = "Keep Album";
-
- // Get title
- if (album.json) albumTitle = album.json.title;
- else if (albums.json) albumTitle = albums.json.content[albumIDs].title;
-
- modal.show("Delete Album", "Are you sure you want to delete the album '" + albumTitle + "' and all of the photos it contains? This action can't be undone!", buttons);
-
- } else {
-
- buttons[0][0] = "Delete Albums and Photos";
- buttons[1][0] = "Keep Albums";
-
- modal.show("Delete Albums", "Are you sure you want to delete all " + albumIDs.length + " selected albums and all of the photos they contain? This action can't be undone!", buttons);
+ password.get(albumID, function() {
+ if (!refresh) {
+ lychee.animate('.album:nth-child(-n+50), .photo:nth-child(-n+50)', 'contentZoomOut');
+ lychee.animate('.divider', 'fadeOut');
}
- },
-
- setTitle: function(albumIDs) {
-
- var oldTitle = "",
- newTitle,
- params,
- buttons;
-
- if (!albumIDs) return false;
- if (albumIDs instanceof Array===false) albumIDs = [albumIDs];
-
- if (albumIDs.length===1) {
- // Get old title if only one album is selected
- if (album.json) oldTitle = album.json.title;
- else if (albums.json) oldTitle = albums.json.content[albumIDs].title;
- if (!oldTitle) oldTitle = "";
- oldTitle = oldTitle.replace("'", "'");
- }
-
- buttons = [
- ["Set Title", function() {
-
- // Get input
- newTitle = $(".message input.text").val();
-
- // Remove html from input
- newTitle = lychee.removeHTML(newTitle);
-
- // Set to Untitled when empty
- newTitle = (newTitle==="") ? "Untitled" : newTitle;
-
- if (visible.album()) {
-
- album.json.title = newTitle;
- view.album.title();
-
- if (albums.json) {
- var id = albumIDs[0];
- albums.json.content[id].title = newTitle;
- }
-
- } else if (visible.albums()) {
-
- albumIDs.forEach(function(id) {
- albums.json.content[id].title = newTitle;
- view.albums.content.title(id);
- });
-
- }
-
- params = "setAlbumTitle&albumIDs=" + albumIDs + "&title=" + escape(encodeURI(newTitle));
- lychee.api(params, function(data) {
-
- if (data!==true) lychee.error(null, params, data);
-
- });
-
- }],
- ["Cancel", function() {}]
- ];
-
- if (albumIDs.length===1) modal.show("Set Title", "Enter a new title for this album: ", buttons);
- else modal.show("Set Titles", "Enter a title for all " + albumIDs.length + " selected album: ", buttons);
-
- },
-
- setDescription: function(photoID) {
-
- var oldDescription = album.json.description.replace("'", "'"),
- description,
- params,
- buttons;
-
- buttons = [
- ["Set Description", function() {
-
- // Get input
- description = $(".message input.text").val();
-
- // Remove html from input
- description = lychee.removeHTML(description);
-
- if (visible.album()) {
- album.json.description = description;
- view.album.description();
- }
-
- params = "setAlbumDescription&albumID=" + photoID + "&description=" + escape(encodeURI(description));
- lychee.api(params, function(data) {
-
- if (data!==true) lychee.error(null, params, data);
-
- });
-
- }],
- ["Cancel", function() {}]
- ];
-
- modal.show("Set Description", "Please enter a description for this album: ", buttons);
-
- },
-
- setPublic: function(albumID, e) {
-
- var params,
- password = "",
- listed = false,
- downloadable = false;
-
- albums.refresh();
-
- if (!visible.message()&&album.json.public==0) {
-
- modal.show("Share Album", "This album will be shared with the following properties:
", [["Share Album", function() { album.setPublic(album.getID(), e) }], ["Cancel", function() {}]], -170);
-
- $(".message .choice input[name='password']").on("change", function() {
-
- if ($(this).prop('checked')===true) $(".message .choice input.text").show();
- else $(".message .choice input.text").hide();
-
- });
-
- return true;
-
- }
-
- if (visible.message()) {
-
- if ($(".message .choice input[name='password']:checked").val()==="password") {
- password = md5($(".message input.text").val());
- album.json.password = 1;
- } else {
- password = "";
- album.json.password = 0;
- }
-
- if ($(".message .choice input[name='listed']:checked").val()==="listed") listed = true;
- if ($(".message .choice input[name='downloadable']:checked").val()==="downloadable") downloadable = true;
-
- }
-
- params = "setAlbumPublic&albumID=" + albumID + "&password=" + password + "&visible=" + listed + "&downloadable=" + downloadable;
-
- if (visible.album()) {
-
- album.json.public = (album.json.public==0) ? 1 : 0;
- album.json.password = (album.json.public==0) ? 0 : album.json.password;
-
- view.album.public();
- view.album.password();
-
- if (album.json.public==1) contextMenu.shareAlbum(albumID, e);
-
- }
+ startTime = new Date().getTime();
+ params = 'getAlbum&albumID=' + albumID + '&password=' + password.value;
lychee.api(params, function(data) {
- if (data!==true) lychee.error(null, params, data);
+ if (data==='Warning: Album private!') {
+ if (document.location.hash.replace('#', '').split('/')[1]!=undefined) {
+ // Display photo only
+ lychee.setMode('view');
+ } else {
+ // Album not public
+ lychee.content.show();
+ lychee.goto('');
+ }
+ return false;
+ }
+
+ if (data==='Warning: Wrong password!') {
+ album.load(albumID, refresh);
+ return false;
+ }
+
+ album.json = data;
+
+ // Calculate delay
+ durationTime = (new Date().getTime() - startTime);
+ if (durationTime>300) waitTime = 0;
+ else waitTime = 300 - durationTime;
+
+ // Skip delay when refresh is true
+ // Skip delay when opening a blank Lychee
+ if (refresh===true) waitTime = 0;
+ if (!visible.albums()&&!visible.photo()&&!visible.album()) waitTime = 0;
+
+ setTimeout(function() {
+
+ view.album.init();
+
+ if (!refresh) {
+ lychee.animate('.album:nth-child(-n+50), .photo:nth-child(-n+50)', 'contentZoomIn');
+ view.header.mode('album');
+ }
+
+ }, waitTime);
});
- },
+ });
- share: function(service) {
+}
- var link = "",
- url = location.href;
+album.parse = function() {
- switch (service) {
- case 0:
- link = "https://twitter.com/share?url=" + encodeURI(url);
- break;
- case 1:
- link = "http://www.facebook.com/sharer.php?u=" + encodeURI(url) + "&t=" + encodeURI(album.json.title);
- break;
- case 2:
- link = "mailto:?subject=" + encodeURI(album.json.title) + "&body=" + encodeURI(url);
- break;
- default:
- link = "";
- break;
- }
+ if (!album.json.title) album.json.title = 'Untitled';
- if (link.length>5) location.href = link;
+}
- },
+album.add = function() {
- getArchive: function(albumID) {
+ var title,
+ params,
+ buttons,
+ isNumber = function(n) { return !isNaN(parseFloat(n)) && isFinite(n) };
- var link,
- url = "php/api.php?function=getAlbumArchive&albumID=" + albumID;
+ buttons = [
+ ['Create Album', function() {
- if (location.href.indexOf("index.html")>0) link = location.href.replace(location.hash, "").replace("index.html", url);
- else link = location.href.replace(location.hash, "") + url;
+ title = $('.message input.text').val();
- if (lychee.publicMode) link += "&password=" + password.value;
+ if (title.length===0) title = 'Untitled';
- location.href = link;
+ modal.close();
+
+ params = 'addAlbum&title=' + escape(encodeURI(title));
+ lychee.api(params, function(data) {
+
+ // Avoid first album to be true
+ if (data===true) data = 1;
+
+ if (data!==false&&isNumber(data)) {
+ albums.refresh();
+ lychee.goto(data);
+ } else {
+ lychee.error(null, params, data);
+ }
+
+ });
+
+ }],
+ ['Cancel', function() {}]
+ ];
+
+ modal.show('New Album', "Enter a title for this album: ", buttons);
+
+}
+
+album.delete = function(albumIDs) {
+
+ var params,
+ buttons,
+ albumTitle;
+
+ if (!albumIDs) return false;
+ if (albumIDs instanceof Array===false) albumIDs = [albumIDs];
+
+ buttons = [
+ ['', function() {
+
+ params = 'deleteAlbum&albumIDs=' + albumIDs;
+ lychee.api(params, function(data) {
+
+ if (visible.albums()) {
+
+ albumIDs.forEach(function(id) {
+ albums.json.num--;
+ view.albums.content.delete(id);
+ delete albums.json.content[id];
+ });
+
+ } else {
+
+ albums.refresh();
+ lychee.goto('');
+
+ }
+
+ if (data!==true) lychee.error(null, params, data);
+
+ });
+
+ }],
+ ['', function() {}]
+ ];
+
+ if (albumIDs.toString()==='0') {
+
+ buttons[0][0] = 'Clear Unsorted';
+ buttons[1][0] = 'Keep Unsorted';
+
+ modal.show('Clear Unsorted', "Are you sure you want to delete all photos from 'Unsorted'?
This action can't be undone!", buttons);
+
+ } else if (albumIDs.length===1) {
+
+ buttons[0][0] = 'Delete Album and Photos';
+ buttons[1][0] = 'Keep Album';
+
+ // Get title
+ if (album.json) albumTitle = album.json.title;
+ else if (albums.json) albumTitle = albums.json.content[albumIDs].title;
+
+ modal.show('Delete Album', "Are you sure you want to delete the album '" + albumTitle + "' and all of the photos it contains? This action can't be undone!", buttons);
+
+ } else {
+
+ buttons[0][0] = 'Delete Albums and Photos';
+ buttons[1][0] = 'Keep Albums';
+
+ modal.show('Delete Albums', "Are you sure you want to delete all " + albumIDs.length + " selected albums and all of the photos they contain? This action can't be undone!", buttons);
}
-};
\ No newline at end of file
+}
+
+album.setTitle = function(albumIDs) {
+
+ var oldTitle = '',
+ newTitle,
+ params,
+ buttons;
+
+ if (!albumIDs) return false;
+ if (albumIDs instanceof Array===false) albumIDs = [albumIDs];
+
+ if (albumIDs.length===1) {
+
+ // Get old title if only one album is selected
+ if (album.json) oldTitle = album.json.title;
+ else if (albums.json) oldTitle = albums.json.content[albumIDs].title;
+
+ if (!oldTitle) oldTitle = '';
+ oldTitle = oldTitle.replace("'", ''');
+
+ }
+
+ buttons = [
+ ['Set Title', function() {
+
+ // Get input
+ newTitle = $('.message input.text').val();
+
+ // Remove html from input
+ newTitle = lychee.removeHTML(newTitle);
+
+ // Set to Untitled when empty
+ newTitle = (newTitle==='') ? 'Untitled' : newTitle;
+
+ if (visible.album()) {
+
+ album.json.title = newTitle;
+ view.album.title();
+
+ if (albums.json) {
+ var id = albumIDs[0];
+ albums.json.content[id].title = newTitle;
+ }
+
+ } else if (visible.albums()) {
+
+ albumIDs.forEach(function(id) {
+ albums.json.content[id].title = newTitle;
+ view.albums.content.title(id);
+ });
+
+ }
+
+ params = 'setAlbumTitle&albumIDs=' + albumIDs + '&title=' + escape(encodeURI(newTitle));
+ lychee.api(params, function(data) {
+
+ if (data!==true) lychee.error(null, params, data);
+
+ });
+
+ }],
+ ['Cancel', function() {}]
+ ];
+
+ if (albumIDs.length===1) modal.show('Set Title', "Enter a new title for this album: ", buttons);
+ else modal.show('Set Titles', "Enter a title for all " + albumIDs.length + " selected album: ", buttons);
+
+}
+
+album.setDescription = function(photoID) {
+
+ var oldDescription = album.json.description.replace("'", '''),
+ description,
+ params,
+ buttons;
+
+ buttons = [
+ ['Set Description', function() {
+
+ // Get input
+ description = $('.message input.text').val();
+
+ // Remove html from input
+ description = lychee.removeHTML(description);
+
+ if (visible.album()) {
+ album.json.description = description;
+ view.album.description();
+ }
+
+ params = 'setAlbumDescription&albumID=' + photoID + '&description=' + escape(encodeURI(description));
+ lychee.api(params, function(data) {
+
+ if (data!==true) lychee.error(null, params, data);
+
+ });
+
+ }],
+ ['Cancel', function() {}]
+ ];
+
+ modal.show('Set Description', "Please enter a description for this album: ", buttons);
+
+}
+
+album.setPublic = function(albumID, e) {
+
+ var params,
+ password = '',
+ listed = false,
+ downloadable = false;
+
+ albums.refresh();
+
+ if (!visible.message()&&album.json.public==0) {
+
+ modal.show('Share Album', "This album will be shared with the following properties:
", [['Share Album', function() { album.setPublic(album.getID(), e) }], ['Cancel', function() {}]], -170);
+
+ $('.message .choice input[name="password"]').on('change', function() {
+
+ if ($(this).prop('checked')===true) $('.message .choice input.text').show();
+ else $('.message .choice input.text').hide();
+
+ });
+
+ return true;
+
+ }
+
+ if (visible.message()) {
+
+ if ($('.message .choice input[name="password"]:checked').val()==='password') {
+ password = md5($('.message input.text').val());
+ album.json.password = 1;
+ } else {
+ password = '';
+ album.json.password = 0;
+ }
+
+ if ($('.message .choice input[name="listed"]:checked').val()==='listed') listed = true;
+ if ($('.message .choice input[name="downloadable"]:checked').val()==='downloadable') downloadable = true;
+
+ }
+
+ params = 'setAlbumPublic&albumID=' + albumID + '&password=' + password + '&visible=' + listed + '&downloadable=' + downloadable;
+
+ if (visible.album()) {
+
+ album.json.public = (album.json.public==0) ? 1 : 0;
+ album.json.password = (album.json.public==0) ? 0 : album.json.password;
+
+ view.album.public();
+ view.album.password();
+
+ if (album.json.public==1) contextMenu.shareAlbum(albumID, e);
+
+ }
+
+ lychee.api(params, function(data) {
+
+ if (data!==true) lychee.error(null, params, data);
+
+ });
+
+}
+
+album.share = function(service) {
+
+ var link = '',
+ url = location.href;
+
+ switch (service) {
+ case 0:
+ link = 'https://twitter.com/share?url=' + encodeURI(url);
+ break;
+ case 1:
+ link = 'http://www.facebook.com/sharer.php?u=' + encodeURI(url) + '&t=' + encodeURI(album.json.title);
+ break;
+ case 2:
+ link = 'mailto:?subject=' + encodeURI(album.json.title) + '&body=' + encodeURI(url);
+ break;
+ default:
+ link = '';
+ break;
+ }
+
+ if (link.length>5) location.href = link;
+
+}
+
+album.getArchive = function(albumID) {
+
+ var link,
+ url = 'php/api.php?function=getAlbumArchive&albumID=' + albumID;
+
+ if (location.href.indexOf('index.html')>0) link = location.href.replace(location.hash, '').replace('index.html', url);
+ else link = location.href.replace(location.hash, '') + url;
+
+ if (lychee.publicMode) link += '&password=' + password.value;
+
+ location.href = link;
+
+}
\ No newline at end of file
diff --git a/src/scripts/loadingBar.js b/src/scripts/loadingBar.js
index fd39da7..a00c50f 100755
--- a/src/scripts/loadingBar.js
+++ b/src/scripts/loadingBar.js
@@ -3,87 +3,85 @@
* @copyright 2014 by Tobias Reich
*/
-loadingBar = {
+loadingBar = {}
- status: null,
+loadingBar.status = null;
- show: function(status, errorText) {
+loadingBar.show = function(status, errorText) {
- if (status==='error') {
+ if (status==='error') {
- // Set status
- loadingBar.status = 'error';
+ // Set status
+ loadingBar.status = 'error';
- // Parse text
- if (errorText) errorText = errorText.replace('
', '');
- if (!errorText) errorText = 'Whoops, it looks like something went wrong. Please reload the site and try again!';
+ // Parse text
+ if (errorText) errorText = errorText.replace('
', '');
+ if (!errorText) errorText = 'Whoops, it looks like something went wrong. Please reload the site and try again!';
+
+ // Move header down
+ if (visible.controls()) lychee.header.addClass('error');
+
+ // Modify loading
+ lychee.loadingBar
+ .removeClass('loading uploading error')
+ .addClass(status)
+ .html('
Error: ' + errorText + '
')
+ .show()
+ .css('height', '40px');
+
+ // Set timeout
+ clearTimeout(lychee.loadingBar.data('timeout'));
+ lychee.loadingBar.data('timeout', setTimeout(function() { loadingBar.hide(true) }, 3000));
+
+ return true;
+
+ }
+
+ if (loadingBar.status===null) {
+
+ // Set status
+ loadingBar.status = 'loading';
+
+ // Set timeout
+ clearTimeout(lychee.loadingBar.data('timeout'));
+ lychee.loadingBar.data('timeout', setTimeout(function() {
// Move header down
- if (visible.controls()) lychee.header.addClass('error');
+ if (visible.controls()) lychee.header.addClass('loading');
// Modify loading
lychee.loadingBar
.removeClass('loading uploading error')
- .addClass(status)
- .html('Error: ' + errorText + '
')
- .show()
- .css('height', '40px');
+ .addClass('loading')
+ .show();
- // Set timeout
- clearTimeout(lychee.loadingBar.data('timeout'));
- lychee.loadingBar.data('timeout', setTimeout(function() { loadingBar.hide(true) }, 3000));
+ }, 1000));
- return true;
-
- }
-
- if (loadingBar.status===null) {
-
- // Set status
- loadingBar.status = 'loading';
-
- // Set timeout
- clearTimeout(lychee.loadingBar.data('timeout'));
- lychee.loadingBar.data('timeout', setTimeout(function() {
-
- // Move header down
- if (visible.controls()) lychee.header.addClass('loading');
-
- // Modify loading
- lychee.loadingBar
- .removeClass('loading uploading error')
- .addClass('loading')
- .show();
-
- }, 1000));
-
- return true;
-
- }
-
- },
-
- hide: function(force) {
-
- if ((loadingBar.status!=='error'&&loadingBar.status!==null)||force) {
-
- // Remove status
- loadingBar.status = null;
-
- // Move header up
- if (visible.controls()) lychee.header.removeClass('error loading');
-
- // Modify loading
- lychee.loadingBar
- .html('')
- .css('height', '3px');
-
- // Set timeout
- clearTimeout(lychee.loadingBar.data('timeout'));
- setTimeout(function() { lychee.loadingBar.hide() }, 300);
-
- }
+ return true;
}
-};
\ No newline at end of file
+}
+
+loadingBar.hide = function(force) {
+
+ if ((loadingBar.status!=='error'&&loadingBar.status!==null)||force) {
+
+ // Remove status
+ loadingBar.status = null;
+
+ // Move header up
+ if (visible.controls()) lychee.header.removeClass('error loading');
+
+ // Modify loading
+ lychee.loadingBar
+ .html('')
+ .css('height', '3px');
+
+ // Set timeout
+ clearTimeout(lychee.loadingBar.data('timeout'));
+ setTimeout(function() { lychee.loadingBar.hide() }, 300);
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/scripts/password.js b/src/scripts/password.js
index 7e41343..f3adf7e 100644
--- a/src/scripts/password.js
+++ b/src/scripts/password.js
@@ -54,6 +54,6 @@ password.getDialog = function(albumID, callback) {
['Enter', function() { password.get(albumID, callback) }],
['Cancel', lychee.goto]
];
- modal.show(' Enter Password', 'This album is protected by a password. Enter the password below to view the photos of this album: ', buttons, -110, false);
+ modal.show(" Enter Password", "This album is protected by a password. Enter the password below to view the photos of this album: ", buttons, -110, false);
}
\ No newline at end of file
diff --git a/src/scripts/photo.js b/src/scripts/photo.js
index e60991c..22bcc3e 100644
--- a/src/scripts/photo.js
+++ b/src/scripts/photo.js
@@ -174,10 +174,14 @@ photo.delete = function(photoIDs) {
if (photoIDs instanceof Array===false) photoIDs = [photoIDs];
if (photoIDs.length===1) {
+
// Get title if only one photo is selected
if (visible.photo()) photoTitle = photo.json.title;
else photoTitle = album.json.content[photoIDs].title;
+
+ // Fallback for photos without a title
if (photoTitle==='') photoTitle = 'Untitled';
+
}
buttons = [
@@ -552,7 +556,7 @@ photo.getSize = function() {
scaled = false,
hasMedium = photo.json.medium!=='',
pixelRatio = window.devicePixelRatio,
- view = {
+ view = {
width: $(window).width()-60,
height: $(window).height()-100
};
@@ -613,7 +617,7 @@ photo.getViewLink = function(photoID) {
var url = 'view.php?p=' + photoID;
- if (location.href.indexOf('index.html')>0) return location.href.replace('index.html' + location.hash, url);
- else return location.href.replace(location.hash, url);
+ if (location.href.indexOf('index.html')>0) return location.href.replace('index.html' + location.hash, url);
+ else return location.href.replace(location.hash, url);
}
\ No newline at end of file