contextMenu.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. /**
  2. * @name contextMenu.js
  3. * @author Philipp Maurer
  4. * @author Tobias Reich
  5. * @copyright 2013 by Philipp Maurer, Tobias Reich
  6. *
  7. * ContextMenu Module
  8. * This module is used for the context menu.
  9. */
  10. contextMenu = {
  11. album: function(e) {
  12. e.preventDefault();
  13. mouse_x = e.pageX;
  14. mouse_y = e.pageY;
  15. albumID = $(this).attr("data-id");
  16. if (albumID=="0"||albumID=="f"||albumID=="s") return false;
  17. mouse_y -= $(document).scrollTop();
  18. items = [
  19. ["Rename", "albums.setTitle(" + albumID + ")"],
  20. ["Delete", "albums.deleteDialog(" + albumID + ")"]
  21. ];
  22. contextMenu.close();
  23. $("body").css("overflow", "hidden");
  24. $(".album[data-id='" + albumID + "']").addClass("active");
  25. $("body").append(build.contextMenu(items));
  26. $(".contextmenu").css({
  27. "top": mouse_y,
  28. "left": mouse_x
  29. });
  30. },
  31. photo: function(e) {
  32. e.preventDefault();
  33. mouse_x = e.pageX;
  34. mouse_y = e.pageY;
  35. photoID = $(this).attr("data-id");
  36. mouse_y -= $(document).scrollTop();
  37. items = [
  38. ["Rename", "photos.setTitle(" + photoID + ")"],
  39. ["Move to Album", "contextMenu.move(" + photoID + ", " + (mouse_x+150) + ", " + (mouse_y+$(document).scrollTop()) + ")"],
  40. ["Delete", "photos.deleteDialog(" + photoID + ")"]
  41. ];
  42. contextMenu.close();
  43. $("body").css("overflow", "hidden");
  44. $(".photo[data-id='" + photoID + "']").addClass("active");
  45. $("body").append(build.contextMenu(items));
  46. $(".contextmenu").css({
  47. "top": mouse_y,
  48. "left": mouse_x
  49. });
  50. },
  51. move: function(photoID, mouse_x, mouse_y) {
  52. mouse_y -= $(document).scrollTop();
  53. if (!mouse_x||!mouse_y) {
  54. mouse_x = "10px";
  55. mouse_y = "10px";
  56. }
  57. lychee.api("getAlbums", "json", function(data) {
  58. if (lychee.content.attr("data-id")==0) {
  59. items = [];
  60. } else {
  61. items = [
  62. ["Unsorted", "photos.setAlbum(" + photoID + ", 0)"]
  63. ];
  64. }
  65. if (!data.albums) {
  66. items = [
  67. ["New Album", "albums.add()"]
  68. ];
  69. } else {
  70. $.each(data.album, function(index) {
  71. if (this.id!=lychee.content.attr("data-id")) {
  72. if(!this.title) this.title = "Untitled";
  73. items[items.length] = new Array(this.title, "photos.setAlbum(" + photoID + ", " + this.id + ")");
  74. } else {
  75. items[items.length] = new Array("", "");
  76. }
  77. });
  78. }
  79. contextMenu.close();
  80. $("body").css("overflow", "hidden");
  81. $(".photo[data-id='" + photoID + "']").addClass("active");
  82. $("body").append(build.contextMenu(items));
  83. $(".contextmenu").css({
  84. "top": mouse_y,
  85. "left": mouse_x-$(".contextmenu").width()
  86. });
  87. });
  88. },
  89. share: function(photoID, mouse_x, mouse_y) {
  90. mouse_y -= $(document).scrollTop();
  91. if (!mouse_x||!mouse_y) {
  92. mouse_x = "10px";
  93. mouse_y = "10px";
  94. }
  95. items = [
  96. ["<a class='icon-eye-close'></a> Make Private", "photos.setPublic()"],
  97. ["separator", ""],
  98. ["<a class='icon-twitter'></a> Twitter", "photos.share(0, " + photoID + ")"],
  99. ["<a class='icon-facebook'></a> Facebook", "photos.share(1, " + photoID + ")"],
  100. ["<a class='icon-envelope'></a> Mail", "photos.share(2, " + photoID + ")"],
  101. ["<a class='icon-link'></a> Copy Link", "photos.share(3, " + photoID + ")"]
  102. ];
  103. if (lychee.bitlyUsername!="") items.push(["<a class='icon-link'></a> Copy Shortlink", "photos.share(4, " + photoID + ")"]);
  104. contextMenu.close();
  105. $("body")
  106. .css("overflow", "hidden")
  107. .append(build.contextMenu(items));
  108. $(".photo[data-id='" + photoID + "']").addClass("active");
  109. $(".contextmenu").css({
  110. "top": mouse_y,
  111. "left": mouse_x
  112. });
  113. },
  114. share_album: function(albumID, mouse_x, mouse_y) {
  115. mouse_y -= $(document).scrollTop();
  116. if (!mouse_x||!mouse_y) {
  117. mouse_x = "10px";
  118. mouse_y = "10px";
  119. }
  120. items = [
  121. ["<a class='icon-eye-close'></a> Make Private", "albums.setPublic()"],
  122. //["<a class='icon-key'></a> Set Password", "albums.setPassword()"],
  123. ["separator", ""],
  124. ["<a class='icon-twitter'></a> Twitter", "albums.share(0, " + albumID + ")"],
  125. ["<a class='icon-facebook'></a> Facebook", "albums.share(1, " + albumID + ")"],
  126. ["<a class='icon-envelope'></a> Mail", "albums.share(2, " + albumID + ")"],
  127. ["<a class='icon-link'></a> Copy Link", "albums.share(3, " + albumID + ")"]
  128. ];
  129. contextMenu.close();
  130. $("body")
  131. .css("overflow", "hidden")
  132. .append(build.contextMenu(items));
  133. $(".contextmenu").css({
  134. "top": mouse_y,
  135. "left": mouse_x
  136. });
  137. },
  138. close: function() {
  139. $(".contextmenu_bg, .contextmenu").remove();
  140. $(".photo.active, .album.active").removeClass("active");
  141. $("body").css("overflow", "scroll");
  142. }
  143. }