1
0
mirror of https://github.com/flarum/core.git synced 2025-08-07 08:56:38 +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:36:00 +09:30
committed by GitHub
parent 27ea2f82f8
commit 70f2b63bf5
24 changed files with 4758 additions and 283 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('flarum-sticky', () => {
extend(PermissionGrid.prototype, 'moderateItems', items => {
items.add('sticky', {
icon: 'fas fa-thumbtack',
label: app.translator.trans('flarum-sticky.admin.permissions.sticky_discussions_label'),
permission: 'discussion.sticky'
}, 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 addStickyBadge() {
extend(Discussion.prototype, 'badges', function(badges) {
if (this.isSticky()) {
badges.add('sticky', Badge.component({
type: 'sticky',
label: app.translator.trans('flarum-sticky.forum.badge.sticky_tooltip'),
icon: 'fas fa-thumbtack'
}), 10);
}
});
}

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 addStickyControl() {
extend(DiscussionControls, 'moderationControls', function(items, discussion) {
if (discussion.canSticky()) {
items.add('sticky', Button.component({
children: app.translator.trans(discussion.isSticky() ? 'flarum-sticky.forum.discussion_controls.unsticky_button' : 'flarum-sticky.forum.discussion_controls.sticky_button'),
icon: 'fas fa-thumbtack',
onclick: this.stickyAction.bind(discussion)
}));
}
});
DiscussionControls.stickyAction = function() {
this.save({isSticky: !this.isSticky()}).then(() => {
if (app.current instanceof DiscussionPage) {
app.current.stream.update();
}
m.redraw();
});
};
}

View File

@@ -0,0 +1,24 @@
import { extend } from 'flarum/extend';
import DiscussionList from 'flarum/components/DiscussionList';
import DiscussionListItem from 'flarum/components/DiscussionListItem';
import { truncate } from 'flarum/utils/string';
export default function addStickyControl() {
extend(DiscussionList.prototype, 'requestParams', function(params) {
params.include.push('startPost');
});
extend(DiscussionListItem.prototype, 'infoItems', function(items) {
const discussion = this.props.discussion;
if (discussion.isSticky() && !this.props.params.q && !discussion.readNumber()) {
const startPost = discussion.startPost();
if (startPost) {
const excerpt = truncate(startPost.contentPlain(), 175);
items.add('excerpt', excerpt, -100);
}
}
});
}

View File

@@ -0,0 +1,13 @@
import EventPost from 'flarum/components/EventPost';
export default class DiscussionStickiedPost extends EventPost {
icon() {
return 'fas fa-thumbtack';
}
descriptionKey() {
return this.props.post.content().sticky
? 'flarum-sticky.forum.post_stream.discussion_stickied_text'
: 'flarum-sticky.forum.post_stream.discussion_unstickied_text';
}
}

View File

@@ -0,0 +1,20 @@
import app from 'flarum/app';
import Model from 'flarum/Model';
import Discussion from 'flarum/models/Discussion';
import DiscussionStickiedPost from './components/DiscussionStickiedPost';
import addStickyBadge from './addStickyBadge';
import addStickyControl from './addStickyControl';
import addStickyExcerpt from './addStickyExcerpt';
app.initializers.add('flarum-sticky', () => {
app.postComponents.discussionStickied = DiscussionStickiedPost;
Discussion.prototype.isSticky = Model.attribute('isSticky');
Discussion.prototype.canSticky = Model.attribute('canSticky');
addStickyBadge();
addStickyControl();
addStickyExcerpt();
});