From 0a3d9f25c14c7e9f06efdff765c26149370df382 Mon Sep 17 00:00:00 2001 From: Daniel Calviño Sánchez Date: Fri, 9 Jun 2017 03:14:23 +0200 Subject: Make possible to know the registered detail views in a details view MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In some cases, an app may need to act on a detail view registered by another app or the core, for example, to add extra elements to the element of the detail view. Signed-off-by: Daniel Calviño Sánchez --- apps/files/js/detailsview.js | 10 ++++++++++ apps/files/js/filelist.js | 15 +++++++++++++++ 2 files changed, 25 insertions(+) (limited to 'apps/files/js') diff --git a/apps/files/js/detailsview.js b/apps/files/js/detailsview.js index f04adcf1292..e53922ebb69 100644 --- a/apps/files/js/detailsview.js +++ b/apps/files/js/detailsview.js @@ -300,6 +300,16 @@ addDetailView: function(detailView) { this._detailFileInfoViews.push(detailView); this._dirty = true; + }, + + /** + * Returns an array with the added DetailFileInfoViews. + * + * @return Array an array with the added + * DetailFileInfoViews. + */ + getDetailViews: function() { + return [].concat(this._detailFileInfoViews); } }); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 919b4d38f86..b1e7c3f5f8c 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -3020,6 +3020,21 @@ if (this.breadcrumb) { this.breadcrumb.addDetailView(detailView); } + }, + + /** + * Returns the registered detail views. + * + * @return null|Array an array with the + * registered DetailFileInfoViews, or null if the details view + * is not enabled. + */ + getRegisteredDetailViews: function() { + if (this._detailsView) { + return this._detailsView.getDetailViews(); + } + + return null; } }; -- cgit v1.2.3 From 599274f5096d04f63b95bd97b521963ef14a4ae1 Mon Sep 17 00:00:00 2001 From: Daniel Calviño Sánchez Date: Fri, 9 Jun 2017 07:55:27 +0200 Subject: Trigger pre and post render events in MainFileInfoDetailsView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The post-render event makes possible to modify the MainFileInfoDetailsView element once it has been rendered, which is needed by OCA.SystemTags.FilesPlugin to add the "Tags" label to the file details, while the pre-render event makes possible to detach added elements if needed before the MainFileInfoDetailsView is rendered again, as that removes the events from the child DOM elements even if they belong to other views. Signed-off-by: Daniel Calviño Sánchez --- apps/files/js/mainfileinfodetailview.js | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'apps/files/js') diff --git a/apps/files/js/mainfileinfodetailview.js b/apps/files/js/mainfileinfodetailview.js index 26472e0766d..ea3063f6176 100644 --- a/apps/files/js/mainfileinfodetailview.js +++ b/apps/files/js/mainfileinfodetailview.js @@ -171,6 +171,8 @@ * Renders this details view */ render: function() { + this.trigger('pre-render'); + if (this.model) { var isFavorite = (this.model.get('tags') || []).indexOf(OC.TAG_FAVORITE) >= 0; this.$el.html(this.template({ @@ -209,6 +211,8 @@ this.$el.empty(); } this.delegateEvents(); + + this.trigger('post-render'); } }); -- cgit v1.2.3