www.gusucode.com > Flarum中文优化论坛PHP源码程序 > FlarumChina-master/vendor/flarum/flarum-ext-approval/js/forum/src/main.js

    import { extend, override } from 'flarum/extend';
import app from 'flarum/app';
import Discussion from 'flarum/models/Discussion';
import Post from 'flarum/models/Post';
import DiscussionListItem from 'flarum/components/DiscussionListItem';
import CommentPost from 'flarum/components/CommentPost';
import Button from 'flarum/components/Button';
import PostControls from 'flarum/utils/PostControls';

app.initializers.add('flarum-approval', () => {
  Discussion.prototype.isApproved = Discussion.attribute('isApproved');

  Post.prototype.isApproved = Post.attribute('isApproved');
  Post.prototype.canApprove = Post.attribute('canApprove');

  extend(DiscussionListItem.prototype, 'attrs', function(attrs) {
    if (!this.props.discussion.isApproved()) {
      attrs.className += ' DiscussionListItem--unapproved';
    }
  });

  extend(CommentPost.prototype, 'attrs', function(attrs) {
    if (!this.props.post.isApproved() && !this.props.post.isHidden()) {
      attrs.className += ' CommentPost--unapproved';
    }
  });

  extend(CommentPost.prototype, 'headerItems', function(items) {
    if (!this.props.post.isApproved() && !this.props.post.isHidden()) {
      items.add('unapproved', app.translator.trans('flarum-approval.forum.post.awaiting_approval_text'));
    }
  });

  override(CommentPost.prototype, 'flagReason', function(original, flag) {
    if (flag.type() === 'approval') {
      return app.translator.trans('flarum-approval.forum.post.awaiting_approval_text');
    }

    return original(flag);
  });

  extend(PostControls, 'destructiveControls', function(items, post) {
    if (!post.isApproved() && post.canApprove()) {
      items.add('approve',
        <Button icon="check" onclick={PostControls.approveAction.bind(post)}>
          {app.translator.trans('flarum-approval.forum.post_controls.approve_button')}
        </Button>,
        10
      );
    }
  });

  PostControls.approveAction = function() {
    this.save({isApproved: true});
  };
}, -10); // set initializer priority to run after reports