1
0
mirror of https://github.com/flarum/core.git synced 2025-07-31 21:50:50 +02:00

Initial commit

This commit is contained in:
Toby Zerner
2015-09-22 18:14:56 +09:30
commit 937b70bdf8
27 changed files with 740 additions and 0 deletions

3
extensions/approval/js/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
bower_components
node_modules
dist

View File

@@ -0,0 +1,7 @@
var gulp = require('flarum-gulp');
gulp({
modules: {
'approval': 'src/**/*.js'
}
});

View File

@@ -0,0 +1,7 @@
{
"private": true,
"devDependencies": {
"gulp": "^3.8.11",
"flarum-gulp": "^0.1.0"
}
}

View File

@@ -0,0 +1,21 @@
import { extend } from 'flarum/extend';
import app from 'flarum/app';
import PermissionGrid from 'flarum/components/PermissionGrid';
app.initializers.add('approval', () => {
extend(PermissionGrid.prototype, 'replyItems', items => {
items.add('replyWithoutApproval', {
icon: 'check',
label: 'Reply without approval',
permission: 'discussion.replyWithoutApproval'
}, 95);
});
extend(PermissionGrid.prototype, 'moderateItems', items => {
items.add('approvePosts', {
icon: 'check',
label: 'Approve posts',
permission: 'discussion.approvePosts'
}, 65);
});
});

View File

@@ -0,0 +1,7 @@
var gulp = require('flarum-gulp');
gulp({
modules: {
'approval': 'src/**/*.js'
}
});

View File

@@ -0,0 +1,7 @@
{
"private": true,
"devDependencies": {
"gulp": "^3.8.11",
"flarum-gulp": "^0.1.0"
}
}

View File

@@ -0,0 +1,56 @@
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('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', 'Awaiting Approval');
}
});
override(CommentPost.prototype, 'flagReason', function(original, flag) {
if (flag.type() === 'approval') {
return 'Awaiting approval';
}
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)}>
Approve
</Button>,
10
);
}
});
PostControls.approveAction = function() {
this.save({isApproved: true});
};
}, -10); // set initializer priority to run after reports