/**
* @name contextMenu.js
* @author Philipp Maurer
* @author Tobias Reich
* @copyright 2013 by Philipp Maurer, Tobias Reich
*
* ContextMenu Module
* This module is used for the context menu.
*/
contextMenu = {
fns: null,
album: function(e) {
e.preventDefault();
var mouse_x = e.pageX,
mouse_y = e.pageY,
albumID = album.getID(),
items;
if (albumID=="0"||albumID=="f"||albumID=="s") return false;
mouse_y -= $(document).scrollTop();
contextMenu.fns = [
function() { album.setTitle(albumID) },
function() { album.delete(albumID) }
];
items = [
[" Rename", 0],
[" Delete", 1]
];
contextMenu.close();
$(".album[data-id='" + albumID + "']").addClass("active");
$("body")
.css("overflow", "hidden")
.append(build.contextMenu(items));
$(".contextmenu").css({
"top": mouse_y,
"left": mouse_x
});
},
photo: function(e) {
e.preventDefault();
var mouse_x = e.pageX,
mouse_y = e.pageY,
photoID = photo.getID(),
items;
mouse_y -= $(document).scrollTop();
contextMenu.fns = [
function() { photo.setStar(photoID) },
function() { photo.setTitle(photoID) },
function() { contextMenu.move(photoID, e) },
function() { photo.delete(photoID) }
];
items = [
[" Star", 0],
["separator", -1],
[" Rename", 1],
[" Move", 2],
[" Delete", 3]
];
contextMenu.close();
$(".photo[data-id='" + photoID + "']").addClass("active");
$("body")
.css("overflow", "hidden")
.append(build.contextMenu(items));
$(".contextmenu").css({
"top": mouse_y,
"left": mouse_x
});
},
move: function(photoID, e) {
var mouse_x = e.pageX,
mouse_y = e.pageY,
items = [],
albumID;
contextMenu.fns = [];
mouse_y -= $(document).scrollTop();
if (!mouse_x||!mouse_y) {
mouse_x = "10px";
mouse_y = "10px";
}
if (album.getID()!=0) {
items = [
["Unsorted", 0, "photo.setAlbum(0, " + photoID + ")"],
["separator", -1]
];
}
lychee.api("getAlbums", "json", function(data) {
if (!data.albums) {
items = [["New Album", 0, "album.add()"]];
} else {
$.each(data.content, function(index) {
if (this.id!=album.getID()) items.push([this.title, 0, "photo.setAlbum(" + this.id + ", " + photoID + ")"]);
});
}
contextMenu.close();
$(".photo[data-id='" + photoID + "']").addClass("active");
$("body")
.css("overflow", "hidden")
.append(build.contextMenu(items));
if (!visible.photo()) mouse_x += $(".contextmenu").width();
$(".contextmenu").css({
"top": mouse_y,
"left": mouse_x-$(".contextmenu").width()
});
});
},
sharePhoto: function(photoID, e) {
var mouse_x = e.pageX,
mouse_y = e.pageY,
items;
mouse_y -= $(document).scrollTop();
if (!mouse_x||!mouse_y) {
mouse_x = "10px";
mouse_y = "10px";
}
contextMenu.fns = [
function() { photo.setPublic(photoID) },
function() { photo.share(photoID, 0) },
function() { photo.share(photoID, 1) },
function() { photo.share(photoID, 2) },
function() { photo.share(photoID, 3) }
];
if (document.location.hostname!="localhost") {
items = [
["", -1],
["separator", -1],
[" Make Private", 0],
["separator", -1],
[" Twitter", 1],
[" Facebook", 2],
[" Mail", 3],
[" Dropbox", 4]
];
} else {
items = [
["", -1],
["separator", -1],
[" Make Private", 0],
["separator", -1],
[" Mail", 3]
];
}
contextMenu.close();
$("body")
.css("overflow", "hidden")
.append(build.contextMenu(items));
$(".contextmenu").css({
"top": mouse_y,
"left": mouse_x+20-$(".contextmenu").width()
});
$(".contextmenu input").focus();
},
shareAlbum: function(albumID, e) {
var mouse_x = e.pageX,
mouse_y = e.pageY,
items;
mouse_y -= $(document).scrollTop();
if (!mouse_x||!mouse_y) {
mouse_x = "10px";
mouse_y = "10px";
}
contextMenu.fns = [
function() { album.setPublic(albumID) },
function() { password.set(albumID) },
function() { album.share(0) },
function() { album.share(1) },
function() { album.share(2) },
function() { password.remove(albumID) }
];
if (document.location.hostname!="localhost") {
items = [
["", -1],
["separator", -1],
[" Make Private", 0],
[" Set Password", 1],
["separator", -1],
[" Twitter", 2],
[" Facebook", 3],
[" Mail", 4],
];
} else {
items = [
["", -1],
["separator", -1],
[" Make Private", 0],
[" Set Password", 1],
["separator", -1],
[" Mail", 4],
];
}
if (album.json.password==true) items[3] = [" Remove Password", 5];
contextMenu.close();
$("body")
.css("overflow", "hidden")
.append(build.contextMenu(items));
$(".contextmenu").css({
"top": mouse_y,
"left": mouse_x+20-$(".contextmenu").width()
});
$(".contextmenu input").focus();
},
close: function() {
contextMenu.js = null;
$(".contextmenu_bg, .contextmenu").remove();
$(".photo.active, .album.active").removeClass("active");
$("body").css("overflow", "scroll");
}
}