1
0
mirror of https://github.com/flarum/core.git synced 2025-08-16 13:24:11 +02:00
See https://github.com/flarum/core/pull/1367

* Replace gulp with webpack and npm scripts for JS compilation
* Set up Travis CI to commit compiled JS
* Restructure `js` directory; only one instance of npm, forum/admin are "submodules"
* Restructure `less` directory
This commit is contained in:
Toby Zerner
2018-06-20 13:35:19 +09:30
committed by GitHub
parent d8a8c34503
commit 990cae94cb
24 changed files with 4758 additions and 302 deletions

View File

@@ -0,0 +1,13 @@
import { extend } from 'flarum/extend';
import app from 'flarum/app';
import PermissionGrid from 'flarum/components/PermissionGrid';
app.initializers.add('lock', () => {
extend(PermissionGrid.prototype, 'moderateItems', items => {
items.add('lock', {
icon: 'fas fa-lock',
label: app.translator.trans('flarum-lock.admin.permissions.lock_discussions_label'),
permission: 'discussion.lock'
}, 95);
});
});

View File

@@ -0,0 +1,15 @@
import { extend } from 'flarum/extend';
import Discussion from 'flarum/models/Discussion';
import Badge from 'flarum/components/Badge';
export default function addLockBadge() {
extend(Discussion.prototype, 'badges', function(badges) {
if (this.isLocked()) {
badges.add('locked', Badge.component({
type: 'locked',
label: app.translator.trans('flarum-lock.forum.badge.locked_tooltip'),
icon: 'fas fa-lock'
}));
}
});
}

View File

@@ -0,0 +1,26 @@
import { extend } from 'flarum/extend';
import DiscussionControls from 'flarum/utils/DiscussionControls';
import DiscussionPage from 'flarum/components/DiscussionPage';
import Button from 'flarum/components/Button';
export default function addLockControl() {
extend(DiscussionControls, 'moderationControls', function(items, discussion) {
if (discussion.canLock()) {
items.add('lock', Button.component({
children: app.translator.trans(discussion.isLocked() ? 'flarum-lock.forum.discussion_controls.unlock_button' : 'flarum-lock.forum.discussion_controls.lock_button'),
icon: 'fas fa-lock',
onclick: this.lockAction.bind(discussion)
}));
}
});
DiscussionControls.lockAction = function() {
this.save({isLocked: !this.isLocked()}).then(() => {
if (app.current instanceof DiscussionPage) {
app.current.stream.update();
}
m.redraw();
});
};
}

View File

@@ -0,0 +1,17 @@
import Notification from 'flarum/components/Notification';
export default class DiscussionLockedNotification extends Notification {
icon() {
return 'fas fa-lock';
}
href() {
const notification = this.props.notification;
return app.route.discussion(notification.subject(), notification.content().postNumber);
}
content() {
return app.translator.trans('flarum-lock.forum.notifications.discussion_locked_text', {user: this.props.notification.sender()});
}
}

View File

@@ -0,0 +1,15 @@
import EventPost from 'flarum/components/EventPost';
export default class DiscussionLockedPost extends EventPost {
icon() {
return this.props.post.content().locked
? 'fas fa-lock'
: 'fas fa-unlock';
}
descriptionKey() {
return this.props.post.content().locked
? 'flarum-lock.forum.post_stream.discussion_locked_text'
: 'flarum-lock.forum.post_stream.discussion_unlocked_text';
}
}

View File

@@ -0,0 +1,29 @@
import { extend } from 'flarum/extend';
import app from 'flarum/app';
import Model from 'flarum/Model';
import Discussion from 'flarum/models/Discussion';
import NotificationGrid from 'flarum/components/NotificationGrid';
import DiscussionLockedPost from './components/DiscussionLockedPost';
import DiscussionLockedNotification from './components/DiscussionLockedNotification';
import addLockBadge from './addLockBadge';
import addLockControl from './addLockControl';
app.initializers.add('flarum-lock', () => {
app.postComponents.discussionLocked = DiscussionLockedPost;
app.notificationComponents.discussionLocked = DiscussionLockedNotification;
Discussion.prototype.isLocked = Model.attribute('isLocked');
Discussion.prototype.canLock = Model.attribute('canLock');
addLockBadge();
addLockControl();
extend(NotificationGrid.prototype, 'notificationTypes', function (items) {
items.add('discussionLocked', {
name: 'discussionLocked',
icon: 'fas fa-lock',
label: app.translator.trans('flarum-lock.forum.settings.notify_discussion_locked_label')
});
});
});