%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/assets/ec177d08/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/assets/ec177d08/humhub.mail.inbox.js |
humhub.module('mail.inbox', function (module, require, $) { var Widget = require('ui.widget').Widget; var Filter = require('ui.filter').Filter; var view = require('ui.view'); var loader = require('ui.loader'); var client = require('client'); var ConversationFilter = Filter.extend(); ConversationFilter.prototype.triggerChange = function() { this.super('triggerChange'); this.updateFilterCount(); }; ConversationFilter.prototype.updateFilterCount = function () { var count = this.getActiveFilterCount(); var $filterToggle = this.$.find('#conversation-filter-link'); var $filterCount = $filterToggle.find('.filterCount'); if(count) { if(!$filterCount.length) { $filterCount = $('<small class="filterCount"></small>').insertBefore($filterToggle.find('.caret')); } $filterCount.html(' <b>('+count+')</b> '); } else if($filterCount.length) { $filterCount.remove(); } }; var ConversationList = Widget.extend(); ConversationList.prototype.init = function () { this.filter = Widget.instance('#mail-filter-root'); this.initScroll(); var that = this; this.filter.off('afterChange.inbox').on('afterChange.inbox', function () { that.reload().then(function() { that.updateActiveItem(); }); }); if(view.isLarge()) { this.$.niceScroll({ cursorwidth: "7", cursorborder: "", cursorcolor: "#555", cursoropacitymax: "0.2", nativeparentscrolling: false, railpadding: {top: 0, right: 3, left: 0, bottom: 0} }); } this.$.on('click', '.entry', function() { that.$.find('.entry').removeClass('selected'); $(this).addClass('selected'); }) }; ConversationList.prototype.updateEntries = function(ids) { var that = this; if(!ids.length) { return; } client.get(this.options.updateEntriesUrl, {data: {ids: ids}}).then(function(response) { if(!response.result) { return; } $.each(response.result, function(id, html) { var $entry = that.getEntry(id); if(!$entry.length) { $(html).prependTo(that.$) ; } else { $entry.replaceWith(html); } }); that.updateActiveItem(); }).catch(function(e) { module.log.error(e); }); }; ConversationList.prototype.getEntry = function(id) { return this.$.find('[data-message-preview="'+id+'"]'); }; ConversationList.prototype.initScroll = function() { if (window.IntersectionObserver) { var $streamEnd = $('<div class="inbox-stream-end"></div>'); this.$.append($streamEnd); var that = this; var observer = new IntersectionObserver(function (entries) { if (that.preventScrollLoading()) { return; } if (entries.length && entries[0].isIntersecting) { loader.append(that.$); that.loadMore().finally(function() { loader.reset(that.$); }); } }, {root: this.$[0], rootMargin: "50px"}); // Assure the conversation list is scrollable by loading more entries until overflow this.assureScroll().then(function() { observer.observe($streamEnd[0]); }); } }; ConversationList.prototype.assureScroll = function () { var that = this; if(this.$[0].offsetHeight >= this.$[0].scrollHeight && this.canLoadMore()) { return this.loadMore().then(function() { return that.assureScroll(); }).catch(function () { return Promise.resolve(); }) } return Promise.resolve(); }; ConversationList.prototype.loadMore = function () { var that = this; return new Promise(function(resolve, reject) { var data = that.filter.getFilterMap(); data.from = that.getLastMessageId(); client.get(that.options.loadMoreUrl, {data: data}).then(function(response) { if(response.result) { $(response.result).insertBefore('.inbox-stream-end'); that.$.find('.inbox-stream-end').append(); } that.options.isLast = !response.result || response.isLast; that.updateActiveItem(); resolve(); }).catch(function(err) { module.log.error(err, true); reject(); }).finally(function() { that.scrollLock = false; }); }); }; ConversationList.prototype.preventScrollLoading = function () { return this.scrollLock || !this.canLoadMore(); }; ConversationList.prototype.canLoadMore = function () { return !this.options.isLast; }; ConversationList.prototype.getReloadOptions = function () { return {data: this.filter.getFilterMap()}; }; ConversationList.prototype.updateActiveItem = function() { var activeMessageId = Widget.instance('#mail-conversation-root').getActiveMessageId(); this.$.find('.entry').removeClass('selected'); // Remove New badge from current selection this.$.find('.entry.selected').find('.new-message-badge').hide(); // Set new selection this.$.find('.entry').removeClass('selected'); var $selected = this.$.find('[data-message-preview="' + activeMessageId + '"]'); if($selected.length) { $selected.removeClass('unread').addClass('selected').find('.new-message-badge').hide(); } }; ConversationList.prototype.getFirstMessageId = function() { return this.$.find('.entry:first').data('messagePreview'); }; ConversationList.prototype.getLastMessageId = function() { return this.$.find('.entry:last').data('messagePreview'); }; ConversationList.prototype.hide = function() { return new Promise(function (resolve) { if(view.isSmall()) { $('.inbox-wrapper').slideUp(function() { if($('#mail-conversation-root').length) { Widget.instance('#mail-conversation-root').updateSize(); } resolve(); }); } resolve(); }); }; ConversationList.prototype.show = function() { return new Promise(function (resolve) { if(view.isSmall()) { $('.inbox-wrapper').slideDown(function() { if($('#mail-conversation-root').length) { Widget.instance('#mail-conversation-root').updateSize(); } resolve(); }); } resolve(); }); }; var toggleInbox = function() { if(view.isSmall()) { $('.inbox-wrapper').slideToggle(function() { Widget.instance('#mail-conversation-root').updateSize(); }); } }; var setTagFilter = function (evt) { Widget.instance('#inbox').show().then(function() { $('#mail-filter-menu').collapse('show'); Widget.instance('#inbox-tag-picker').setSelection([{ id: evt.$trigger.data('tagId'), text: evt.$trigger.data('tagName'), image: evt.$trigger.data('tagImage'), }]); }); }; module.export({ ConversationList: ConversationList, Filter: ConversationFilter, setTagFilter: setTagFilter, toggleInbox: toggleInbox }); });