/** * @description This module is used for bindings. * @copyright 2014 by Tobias Reich */ $(document).ready(function() { /* Event Name */ var event_name = (mobileBrowser()) ? 'touchend' : 'click'; /* Disable ContextMenu */ $(document).bind('contextmenu', function(e) { e.preventDefault() }); /* Multiselect */ $('#content') .on('mousedown', multiselect.show); $(document) .on('mouseup', multiselect.getSelection); /* Header */ $('#button_share').on(event_name, function(e) { if (photo.json.public==1||photo.json.public==2) contextMenu.sharePhoto(photo.getID(), e); else photo.setPublic(photo.getID(), e); }); $('#button_share_album').on(event_name, function(e) { if (album.json.public==1) contextMenu.shareAlbum(album.getID(), e); else album.setPublic(album.getID(), e); }); $('#button_signin') .on(event_name, lychee.loginDialog); $('#button_settings') .on(event_name, contextMenu.settings); $('#button_info_album') .on(event_name, view.infobox.show); $('#button_info') .on(event_name, view.infobox.show); $('.button_add') .on(event_name, contextMenu.add); $('#button_more') .on(event_name, function(e) { contextMenu.photoMore(photo.getID(), e) }); $('#button_move') .on(event_name, function(e) { contextMenu.move([photo.getID()], e) }); $('#hostedwith') .on(event_name, function() { window.open(lychee.website) }); $('#button_trash_album') .on(event_name, function() { album.delete([album.getID()]) }); $('#button_trash') .on(event_name, function() { photo.delete([photo.getID()]) }); $('#button_archive') .on(event_name, function() { album.getArchive(album.getID()) }); $('#button_star') .on(event_name, function() { photo.setStar([photo.getID()]) }); $('#button_back_home') .on(event_name, function() { lychee.goto('') }); $('#button_back') .on(event_name, function() { lychee.goto(album.getID()) }); /* Search */ $('#search').on('keyup click', function() { search.find($(this).val()) }); /* Clear Search */ $('#clearSearch').on(event_name, function () { $('#search').focus(); search.reset(); }); /* Image View */ lychee.imageview .on(event_name, '.arrow_wrapper.previous', photo.previous) .on(event_name, '.arrow_wrapper.next', photo.next); /* Infobox */ $('#infobox') .on(event_name, '.header .close', view.infobox.hide) .on(event_name, '#edit_title_album', function() { album.setTitle([album.getID()]) }) .on(event_name, '#edit_description_album', function() { album.setDescription(album.getID()) }) .on(event_name, '#edit_title', function() { photo.setTitle([photo.getID()]) }) .on(event_name, '#edit_description', function() { photo.setDescription(photo.getID()) }) .on(event_name, '#edit_tags', function() { photo.editTags([photo.getID()]) }) .on(event_name, '#tags .tag span', function() { photo.deleteTag(photo.getID(), $(this).data('index')) }); /* Keyboard */ Mousetrap .bind('left', function() { if (visible.photo()) $('#imageview a#previous').click() }) .bind('right', function() { if (visible.photo()) $('#imageview a#next').click() }) .bind(['u', 'ctrl+u'], function() { $('#upload_files').click() }) .bind(['s', 'ctrl+s', 'f', 'ctrl+f'], function(e) { if (visible.photo()) { $('#button_star').click(); } else if (visible.albums()) { e.preventDefault(); $('#search').focus(); } }) .bind(['r', 'ctrl+r'], function(e) { e.preventDefault(); if (visible.album()) album.setTitle(album.getID()); else if (visible.photo()) photo.setTitle([photo.getID()]); }) .bind(['d', 'ctrl+d'], function(e) { e.preventDefault(); if (visible.photo()) photo.setDescription(photo.getID()); else if (visible.album()) album.setDescription(album.getID()); }) .bind(['t', 'ctrl+t'], function(e) { if (visible.photo()) { e.preventDefault(); photo.editTags([photo.getID()]); } }) .bind(['i', 'ctrl+i'], function() { if (visible.infobox()) view.infobox.hide(); else if (visible.multiselect()) return false; else if (visible.infoboxbutton()) view.infobox.show(); }) .bind(['command+backspace', 'ctrl+backspace'], function() { if (visible.photo()&&!visible.message()) photo.delete([photo.getID()]); else if (visible.album()&&!visible.message()) album.delete([album.getID()]); }) .bind(['command+a', 'ctrl+a'], function() { if (visible.album()&&!visible.message()) multiselect.selectAll(); else if (visible.albums()&&!visible.message()) multiselect.selectAll(); }); Mousetrap.bindGlobal('enter', function() { if ($('.message .button.active').length) $('.message .button.active').addClass('pressed').click() }); Mousetrap.bindGlobal(['esc', 'command+up'], function(e) { e.preventDefault(); if (visible.message()&&$('.message .close').length>0) modal.close(); else if (visible.contextMenu()) contextMenu.close(); else if (visible.infobox()) view.infobox.hide(); else if (visible.photo()) lychee.goto(album.getID()); else if (visible.album()) lychee.goto(''); else if (visible.albums()&&$('#search').val().length!==0) search.reset(); }); if (mobileBrowser()) { $(document) /* Fullscreen on mobile */ .on('touchend', '#image', function(e) { if (swipe.obj===null||(swipe.offset>=-5&&swipe.offset<=5)) { if (visible.controls()) view.header.hide(e, 0); else view.header.show(); } }) /* Swipe on mobile */ .swipe().on('swipeStart', function() { if (visible.photo()) swipe.start($('#image')) }) .swipe().on('swipeMove', function(e) { if (visible.photo()) swipe.move(e.swipe) }) .swipe().on('swipeEnd', function(e) { if (visible.photo()) swipe.stop(e.swipe, photo.previous, photo.next) }); } /* Document */ $(document) /* Login */ .on('keyup', '#password', function() { if ($(this).val().length>0) $(this).removeClass('error') }) /* Header */ .on(event_name, '#title.editable', function() { if (visible.photo()) photo.setTitle([photo.getID()]); else album.setTitle([album.getID()]); }) /* Navigation */ .on('click', '.album', function() { lychee.goto($(this).attr('data-id')) }) .on('click', '.photo', function() { lychee.goto(album.getID() + '/' + $(this).attr('data-id')) }) /* Modal */ .on(event_name, '.message .close', modal.close) .on(event_name, '.message .button:first', function() { if (modal.fns!==null) modal.fns[0](); if (!visible.signin()) modal.close() }) .on(event_name, '.message .button:last', function() { if (modal.fns!==null) modal.fns[1](); if (!visible.signin()) modal.close() }) /* Context Menu */ .on('contextmenu', '.photo', function(e) { contextMenu.photo(photo.getID(), e) }) .on('contextmenu', '.album', function(e) { contextMenu.album(album.getID(), e) }) /* Infobox */ .on(event_name, '#infobox_overlay', view.infobox.hide) /* Upload */ .on('change', '#upload_files', function() { modal.close(); upload.start.local(this.files) }) .on(event_name, '.upload_message a.close', upload.close) .on('dragover', function(e) { e.preventDefault(); }, false) .on('drop', function(e) { e.stopPropagation(); e.preventDefault(); // Close open overlays or views which are correlating with the upload if (visible.photo()) lychee.goto(album.getID()); if (visible.contextMenu()) contextMenu.close(); // Detect if dropped item is a file or a link if (e.originalEvent.dataTransfer.files.length>0) upload.start.local(e.originalEvent.dataTransfer.files); else if (e.originalEvent.dataTransfer.getData('Text').length>3) upload.start.url(e.originalEvent.dataTransfer.getData('Text')); return true; }); /* Init */ lychee.init(); });