header.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. /**
  2. * @description This module takes care of the header.
  3. * @copyright 2015 by Tobias Reich
  4. */
  5. header = {
  6. _dom: $('header')
  7. }
  8. header.dom = function(selector) {
  9. if (selector===undefined||selector===null||selector==='') return header._dom;
  10. return header._dom.find(selector);
  11. }
  12. header.bind = function() {
  13. // Event Name
  14. var eventName = lychee.getEventName();
  15. /* Buttons */
  16. header.dom('#title').on(eventName, function(e) {
  17. if (!$(this).hasClass('editable')) return false;
  18. if (visible.photo()) contextMenu.photoTitle(album.getID(), photo.getID(), e);
  19. else contextMenu.albumTitle(album.getID(), e);
  20. });
  21. header.dom('#button_share').on(eventName, function(e) {
  22. if (photo.json.public==='1'||photo.json.public==='2') contextMenu.sharePhoto(photo.getID(), e);
  23. else photo.setPublic(photo.getID(), e);
  24. });
  25. header.dom('#button_share_album').on(eventName, function(e) {
  26. if (album.json.public==='1') contextMenu.shareAlbum(album.getID(), e);
  27. else album.setPublic(album.getID(), true, e);
  28. });
  29. header.dom('#button_signin') .on(eventName, lychee.loginDialog);
  30. header.dom('#button_settings') .on(eventName, contextMenu.settings);
  31. header.dom('#button_info_album') .on(eventName, sidebar.toggle);
  32. header.dom('#button_info') .on(eventName, sidebar.toggle);
  33. header.dom('.button_add') .on(eventName, contextMenu.add);
  34. header.dom('#button_more') .on(eventName, function(e) { contextMenu.photoMore(photo.getID(), e) });
  35. header.dom('#button_move') .on(eventName, function(e) { contextMenu.move([photo.getID()], e) });
  36. header.dom('#hostedwith') .on(eventName, function() { window.open(lychee.website) });
  37. header.dom('#button_trash_album') .on(eventName, function() { album.delete([album.getID()]) });
  38. header.dom('#button_trash') .on(eventName, function() { photo.delete([photo.getID()]) });
  39. header.dom('#button_archive') .on(eventName, function() { album.getArchive(album.getID()) });
  40. header.dom('#button_star') .on(eventName, function() { photo.setStar([photo.getID()]) });
  41. header.dom('#button_back_home') .on(eventName, function() { lychee.goto('') });
  42. header.dom('#button_back') .on(eventName, function() { lychee.goto(album.getID()) });
  43. /* Search */
  44. header.dom('#search').on('keyup click', function() { search.find($(this).val()) });
  45. header.dom('#clearSearch').on(eventName, function () {
  46. header.dom('#search').focus();
  47. search.reset();
  48. });
  49. return true;
  50. }
  51. header.show = function() {
  52. var newMargin = -1*($('#imageview #image').height()/2)+20;
  53. clearTimeout($(window).data('timeout'));
  54. lychee.imageview.removeClass('full');
  55. header.dom().removeClass('hidden');
  56. // Adjust position or size of photo
  57. if ($('#imageview #image.small').length>0) $('#imageview #image').css('margin-top', newMargin);
  58. else $('#imageview #image').removeClass('full');
  59. return true;
  60. }
  61. header.hide = function(e, delay = 500) {
  62. if (visible.photo()&&!visible.sidebar()&&!visible.contextMenu()&&!visible.message()) {
  63. var newMargin = -1*($('#imageview #image').height()/2);
  64. clearTimeout($(window).data('timeout'));
  65. $(window).data('timeout', setTimeout(function() {
  66. lychee.imageview.addClass('full');
  67. header.dom().addClass('hidden');
  68. // Adjust position or size of photo
  69. if ($('#imageview #image.small').length>0) $('#imageview #image').css('margin-top', newMargin);
  70. else $('#imageview #image').addClass('full');
  71. }, delay));
  72. return true;
  73. }
  74. return false;
  75. }
  76. header.setTitle = function(title = 'Untitled') {
  77. var $title = header.dom('#title');
  78. $title.html(title + build.iconic('caret-bottom'));
  79. return true;
  80. }
  81. header.setMode = function(mode) {
  82. var albumID = album.getID();
  83. switch (mode) {
  84. case 'albums':
  85. header.dom().removeClass('view');
  86. $('#tools_album, #tools_photo').hide();
  87. $('#tools_albums').show();
  88. return true;
  89. break;
  90. case 'album':
  91. header.dom().removeClass('view');
  92. $('#tools_albums, #tools_photo').hide();
  93. $('#tools_album').show();
  94. // Hide download button when album empty
  95. album.json.content === false ? $('#button_archive').hide() : $('#button_archive').show();
  96. // Hide download button when not logged in and album not downloadable
  97. if (lychee.publicMode===true&&album.json.downloadable==='0') $('#button_archive').hide();
  98. if (albumID==='s'||albumID==='f'||albumID==='r') {
  99. $('#button_info_album, #button_trash_album, #button_share_album').hide();
  100. } else if (albumID==='0') {
  101. $('#button_info_album, #button_share_album').hide();
  102. $('#button_trash_album').show();
  103. } else {
  104. $('#button_info_album, #button_trash_album, #button_share_album').show();
  105. }
  106. return true;
  107. break;
  108. case 'photo':
  109. header.dom().addClass('view');
  110. $('#tools_albums, #tools_album').hide();
  111. $('#tools_photo').show();
  112. return true;
  113. break;
  114. }
  115. return false;
  116. }
  117. header.setEditable = function(editable) {
  118. var $title = header.dom('#title');
  119. // Hide editable icon when not logged in
  120. if (lychee.publicMode===true) editable = false;
  121. if (editable) $title.addClass('editable');
  122. else $title.removeClass('editable');
  123. return true;
  124. }