contextMenu.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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.rename(" + 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.rename(" + 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. lychee.api("getAlbums", "json", function(data) {
  54. if (lychee.content.attr("data-id")==0) {
  55. items = [];
  56. } else {
  57. items = [
  58. ["Unsorted", "photos.move(" + photoID + ", 0)"]
  59. ];
  60. }
  61. if (!data.albums) {
  62. items = [
  63. ["Create new Album", "albums.add()"]
  64. ];
  65. } else {
  66. $.each(data.album, function(index) {
  67. if (this.id!=lychee.content.attr("data-id")) {
  68. if(!this.title) this.title = "Untitled";
  69. items[items.length] = new Array(this.title, "photos.move(" + photoID + ", " + this.id + ")");
  70. } else {
  71. items[items.length] = new Array("", "");
  72. }
  73. });
  74. }
  75. contextMenu.close();
  76. $("body").css("overflow", "hidden");
  77. $(".photo[data-id='" + photoID + "']").addClass("active");
  78. $("body").append(build.contextMenu(items));
  79. $(".contextmenu").css({
  80. "top": mouse_y,
  81. "left": mouse_x-150
  82. });
  83. });
  84. },
  85. share: function(photoID, mouse_x, mouse_y) {
  86. mouse_y -= $(document).scrollTop();
  87. items = [
  88. ["<a class='icon-eye-close'></a> Make Private", "photos.setPublic()"],
  89. ["<a class='icon-twitter'></a> Twitter", "photos.share(0, " + photoID + ")"],
  90. ["<a class='icon-facebook'></a> Facebook", "photos.share(1, " + photoID + ")"],
  91. ["<a class='icon-envelope'></a> Mail", "photos.share(2, " + photoID + ")"],
  92. ["<a class='icon-link'></a> Copy Link", "photos.share(3, " + photoID + ")"],
  93. ["<a class='icon-link'></a> Copy Shortlink", "photos.share(4, " + photoID + ")"]
  94. ];
  95. contextMenu.close();
  96. $("body").css("overflow", "hidden");
  97. $(".photo[data-id='" + photoID + "']").addClass("active");
  98. $("body").append(build.contextMenu(items));
  99. $(".contextmenu").css({
  100. "top": mouse_y,
  101. "left": mouse_x
  102. });
  103. },
  104. close: function() {
  105. $(".contextmenu_bg, .contextmenu").remove();
  106. $(".photo.active, .album.active").removeClass("active");
  107. $("body").css("overflow", "scroll");
  108. }
  109. }