diff options
author | Daniel Calviño Sánchez <danxuliu@gmail.com> | 2017-06-09 08:57:34 +0200 |
---|---|---|
committer | Daniel Calviño Sánchez <danxuliu@gmail.com> | 2017-06-09 09:02:14 +0200 |
commit | 9e767b46ec24cf9ff559339950fdfd2f7f6bd1bf (patch) | |
tree | 8effe97f9ecff13e2e206b885a709552f9f04c4b | |
parent | 599274f5096d04f63b95bd97b521963ef14a4ae1 (diff) | |
download | nextcloud-server-9e767b46ec24cf9ff559339950fdfd2f7f6bd1bf.tar.gz nextcloud-server-9e767b46ec24cf9ff559339950fdfd2f7f6bd1bf.zip |
Fix toggle element being removed when MainFileInfoView is rendered again
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 <danxuliu@gmail.com>
-rw-r--r-- | apps/systemtags/js/filesplugin.js | 11 | ||||
-rw-r--r-- | 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 = $('<span>').addClass('tag-label').text(t('systemtags', 'Tags')); this._toggleHandle.prepend($('<span>').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() { |