From 06bac23e5fe7a9c11eee4f194ab0a14f07426c9d Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Mon, 11 Jan 2016 20:56:00 +0530 Subject: [PATCH] FEATURE: allow users to wikify their own posts based on trust level --- .../discourse/components/post-menu.js.es6 | 25 ++++++++++++------- .../stylesheets/desktop/topic-post.scss | 4 +++ app/assets/stylesheets/mobile/topic-post.scss | 1 + app/controllers/posts_controller.rb | 4 +-- app/serializers/post_serializer.rb | 5 ++++ config/locales/server.en.yml | 2 ++ config/site_settings.yml | 9 +++++-- lib/guardian/post_guardian.rb | 5 ++-- spec/components/guardian_spec.rb | 25 ++++++++++++++++--- spec/controllers/posts_controller_spec.rb | 6 ++--- 10 files changed, 65 insertions(+), 21 deletions(-) diff --git a/app/assets/javascripts/discourse/components/post-menu.js.es6 b/app/assets/javascripts/discourse/components/post-menu.js.es6 index 2b3e28e72a0..ef63cd9d248 100644 --- a/app/assets/javascripts/discourse/components/post-menu.js.es6 +++ b/app/assets/javascripts/discourse/components/post-menu.js.es6 @@ -349,6 +349,21 @@ const PostMenuComponent = Ember.Component.extend(StringBuffer, { this.sendAction('toggleBookmark', post); }, + // Wiki button + buttonForWiki(post) { + if (!post.get('can_wiki')) return; + + if (post.get('wiki')) { + return new Button('wiki', 'post.controls.unwiki', 'pencil-square-o', {className: 'wiki wikied'}); + } else { + return new Button('wiki', 'post.controls.wiki', 'pencil-square-o', {className: 'wiki'}); + } + }, + + clickWiki(post) { + this.sendAction('toggleWiki', post); + }, + buttonForAdmin() { if (!Discourse.User.currentProp('canManageTopic')) { return; } return new Button('admin', 'post.controls.admin', 'wrench'); @@ -357,10 +372,7 @@ const PostMenuComponent = Ember.Component.extend(StringBuffer, { renderAdminPopup(post, buffer) { if (!Discourse.User.currentProp('canManageTopic')) { return; } - const isWiki = post.get('wiki'), - wikiIcon = iconHTML('pencil-square-o'), - wikiText = isWiki ? I18n.t('post.controls.unwiki') : I18n.t('post.controls.wiki'), - isModerator = post.get('post_type') === this.site.get('post_types.moderator_action'), + const isModerator = post.get('post_type') === this.site.get('post_types.moderator_action'), postTypeIcon = iconHTML('shield'), postTypeText = isModerator ? I18n.t('post.controls.revert_to_regular') : I18n.t('post.controls.convert_to_moderator'), rebakePostIcon = iconHTML('cog'), @@ -373,7 +385,6 @@ const PostMenuComponent = Ember.Component.extend(StringBuffer, { const html = '
' + '

' + I18n.t('admin_title') + '

' + '