From 3936cc4e238a19b4134df23c9c5c07f211213ea2 Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Mon, 18 May 2015 13:51:58 +0930 Subject: [PATCH] Implement "move" permission --- extensions/tags/js/bootstrap.js | 3 ++- extensions/tags/src/CategoriesServiceProvider.php | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/extensions/tags/js/bootstrap.js b/extensions/tags/js/bootstrap.js index 10794dec8..4641b17fc 100644 --- a/extensions/tags/js/bootstrap.js +++ b/extensions/tags/js/bootstrap.js @@ -35,6 +35,7 @@ app.initializers.add('categories', function() { // Register models. app.store.models['categories'] = Category; Discussion.prototype.category = Model.one('category'); + Discussion.prototype.canMove = Model.prop('canMove'); // Register components. app.postComponentRegistry['discussionMoved'] = PostDiscussionMoved; @@ -140,7 +141,7 @@ app.initializers.add('categories', function() { // Add a control allowing the discussion to be moved to another category. extend(Discussion.prototype, 'controls', function(items) { - if (this.canEdit()) { + if (this.canMove()) { items.add('move', ActionButton.component({ label: 'Move', icon: 'arrow-right', diff --git a/extensions/tags/src/CategoriesServiceProvider.php b/extensions/tags/src/CategoriesServiceProvider.php index 24a571290..7988de644 100644 --- a/extensions/tags/src/CategoriesServiceProvider.php +++ b/extensions/tags/src/CategoriesServiceProvider.php @@ -9,6 +9,7 @@ use Flarum\Extend\NotificationType; use Flarum\Extend\Relationship; use Flarum\Extend\SerializeRelationship; use Flarum\Extend\ApiInclude; +use Flarum\Extend\Permission; class CategoriesServiceProvider extends ServiceProvider { @@ -41,7 +42,14 @@ class CategoriesServiceProvider extends ServiceProvider new SerializeRelationship('Flarum\Api\Serializers\DiscussionSerializer', 'hasOne', 'category', 'Flarum\Categories\CategorySerializer'), - new ApiInclude(['discussions.index', 'discussions.show'], 'category', true) + new ApiInclude(['discussions.index', 'discussions.show'], 'category', true), + + (new Permission('discussion.move')) + ->serialize() + ->grant(function ($grant, $user) { + $grant->where('start_user_id', $user->id); + // @todo add limitations to time etc. according to a config setting + }) ); }