From e81f122a3fec501e28b42187da833d77a34a7098 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 13 May 2015 10:27:57 +1000 Subject: [PATCH] EXTENSIBILITY: allow registration of custom post menu items --- .../discourse/views/post-menu.js.es6 | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/views/post-menu.js.es6 b/app/assets/javascripts/discourse/views/post-menu.js.es6 index 29c0ee3f61e..2276e95b748 100644 --- a/app/assets/javascripts/discourse/views/post-menu.js.es6 +++ b/app/assets/javascripts/discourse/views/post-menu.js.es6 @@ -44,7 +44,7 @@ Button.prototype.render = function(buffer) { var hiddenButtons; -export default Discourse.View.extend(StringBuffer, { +var PostMenuView = Discourse.View.extend(StringBuffer, { tagName: 'section', classNames: ['post-menu-area', 'clearfix'], @@ -141,6 +141,13 @@ export default Discourse.View.extend(StringBuffer, { visibleButtons.splice(visibleButtons.length - 1, 0, this.buttonForShowMoreActions(post)); } + var callbacks = PostMenuView._registerButtonCallbacks; + if (callbacks) { + _.each(callbacks, function(callback) { + callback.apply(self, [visibleButtons]); + }); + } + buffer.push('
'); visibleButtons.forEach(function (b) { b.render(buffer); @@ -374,3 +381,12 @@ export default Discourse.View.extend(StringBuffer, { } }); + +PostMenuView.reopenClass({ + registerButton: function(callback){ + this._registerButtonCallbacks = this._registerButtonCallbacks || []; + this._registerButtonCallbacks.push(callback); + } +}); + +export default PostMenuView;