From 9e767b46ec24cf9ff559339950fdfd2f7f6bd1bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Fri, 9 Jun 2017 08:57:34 +0200 Subject: [PATCH] Fix toggle element being removed when MainFileInfoView is rendered again MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The toggle element was added to the MainFileInfoView element when SystemTagsInfoView was rendered. However, if the MainFileInfoView was rendered again after that the toggle element was removed. Therefore, instead of adding it when SystemTagsInfoView is rendered, the toggle element has to be added when MainFileInfoView triggers its "post-render" event. Note, however, that when MainFileInfoView is rendered all the events are removed from its child elements. As the toggle uses a "click" event either the event has to be added back or the element has to be detached before the MainFileInfoView is rendered. Fixes #4944 Signed-off-by: Daniel Calviño Sánchez --- apps/systemtags/js/filesplugin.js | 11 ++++++++++- apps/systemtags/js/systemtagsinfoview.js | 25 +++++++++++++++--------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/apps/systemtags/js/filesplugin.js b/apps/systemtags/js/filesplugin.js index db97b91a072..229d64da9d5 100644 --- a/apps/systemtags/js/filesplugin.js +++ b/apps/systemtags/js/filesplugin.js @@ -31,7 +31,16 @@ return; } - fileList.registerDetailView(new OCA.SystemTags.SystemTagsInfoView()); + var systemTagsInfoView = new OCA.SystemTags.SystemTagsInfoView(); + fileList.registerDetailView(systemTagsInfoView); + + _.each(fileList.getRegisteredDetailViews(), function(detailView) { + if (detailView instanceof OCA.Files.MainFileInfoDetailView) { + systemTagsInfoView.setMainFileInfoView(detailView); + + return; + } + }); } }; diff --git a/apps/systemtags/js/systemtagsinfoview.js b/apps/systemtags/js/systemtagsinfoview.js index f98c4b046e4..ce5de2048ab 100644 --- a/apps/systemtags/js/systemtagsinfoview.js +++ b/apps/systemtags/js/systemtagsinfoview.js @@ -63,6 +63,13 @@ this._toggleHandle = $('').addClass('tag-label').text(t('systemtags', 'Tags')); this._toggleHandle.prepend($('').addClass('icon icon-tag')); + + this._toggleHandle.on('click', function () { + self.$el.toggleClass('hidden'); + if (!self.$el.hasClass('hidden')) { + self.$el.find('.systemTagsInputField').select2('open'); + } + }); }, /** @@ -112,6 +119,15 @@ this.selectedTagsCollection.remove(tagId); }, + setMainFileInfoView: function(mainFileInfoView) { + this.listenTo(mainFileInfoView, 'pre-render', function() { + this._toggleHandle.detach(); + }); + this.listenTo(mainFileInfoView, 'post-render', function() { + mainFileInfoView.$el.find('.file-details').append(this._toggleHandle); + }); + }, + setFileInfo: function(fileInfo) { var self = this; if (!this._rendered) { @@ -147,15 +163,6 @@ this.$el.append(this._inputView.$el); this._inputView.render(); - - $('#app-sidebar').find('.mainFileInfoView .file-details').append(this._toggleHandle); - this._toggleHandle.off('click'); - this._toggleHandle.on('click', function () { - self.$el.toggleClass('hidden'); - if (!self.$el.hasClass('hidden')) { - self.$el.find('.systemTagsInputField').select2('open'); - } - }); }, remove: function() {