mirror of
https://github.com/flarum/core.git
synced 2025-08-04 23:47:32 +02:00
committed by
GitHub
parent
73579883f6
commit
6bdbee70db
@@ -17,10 +17,9 @@ export default function addSubscriptionControls() {
|
||||
const subscription = discussion.subscription() || 'none';
|
||||
|
||||
items.add('subscription', Button.component({
|
||||
children: states[subscription].label,
|
||||
icon: states[subscription].icon,
|
||||
onclick: discussion.save.bind(discussion, {subscription: states[subscription].save})
|
||||
}));
|
||||
}, states[subscription].label));
|
||||
}
|
||||
});
|
||||
|
||||
|
@@ -8,24 +8,21 @@ export default function addSubscriptionFilter() {
|
||||
if (app.session.user) {
|
||||
const params = app.search.stickyParams();
|
||||
|
||||
params.filter = 'following';
|
||||
|
||||
items.add('following', LinkButton.component({
|
||||
href: app.route('index.filter', params),
|
||||
children: app.translator.trans('flarum-subscriptions.forum.index.following_link'),
|
||||
href: app.route('following', params),
|
||||
icon: 'fas fa-star'
|
||||
}), 50);
|
||||
}, app.translator.trans('flarum-subscriptions.forum.index.following_link')), 50);
|
||||
}
|
||||
});
|
||||
|
||||
extend(IndexPage.prototype, 'config', function () {
|
||||
if (m.route() == "/following") {
|
||||
extend(IndexPage.prototype, 'setTitle', function () {
|
||||
if (app.current.get('routeName') === 'following') {
|
||||
app.setTitle(app.translator.trans('flarum-subscriptions.forum.following.meta_title_text'));
|
||||
}
|
||||
});
|
||||
|
||||
extend(DiscussionListState.prototype, 'requestParams', function(params) {
|
||||
if (this.params.filter === 'following') {
|
||||
if (app.current.get('routeName') === 'following') {
|
||||
params.filter.q = (params.filter.q || '') + ' is:following';
|
||||
}
|
||||
});
|
||||
|
@@ -6,10 +6,17 @@ export default function() {
|
||||
extend(SettingsPage.prototype, 'notificationsItems', function (items) {
|
||||
items.add('followAfterReply',
|
||||
Switch.component({
|
||||
children: app.translator.trans('flarum-subscriptions.forum.settings.follow_after_reply_label'),
|
||||
state: this.user.preferences().followAfterReply,
|
||||
onchange: this.preferenceSaver('followAfterReply')
|
||||
})
|
||||
onchange: (value) => {
|
||||
this.followAfterReplyLoading = true;
|
||||
|
||||
this.user.savePreferences({ followAfterReply: value }).then(() => {
|
||||
this.followAfterReplyLoading = false;
|
||||
m.redraw();
|
||||
});
|
||||
},
|
||||
loading: this.followAfterReplyLoading
|
||||
}, app.translator.trans('flarum-subscriptions.forum.settings.follow_after_reply_label'))
|
||||
);
|
||||
});
|
||||
}
|
||||
|
@@ -7,7 +7,7 @@ export default class NewPostNotification extends Notification {
|
||||
}
|
||||
|
||||
href() {
|
||||
const notification = this.props.notification;
|
||||
const notification = this.attrs.notification;
|
||||
const discussion = notification.subject();
|
||||
const content = notification.content() || {};
|
||||
|
||||
@@ -15,6 +15,6 @@ export default class NewPostNotification extends Notification {
|
||||
}
|
||||
|
||||
content() {
|
||||
return app.translator.trans('flarum-subscriptions.forum.notifications.new_post_text', {user: this.props.notification.fromUser()});
|
||||
return app.translator.trans('flarum-subscriptions.forum.notifications.new_post_text', {user: this.attrs.notification.fromUser()});
|
||||
}
|
||||
}
|
||||
|
@@ -6,7 +6,9 @@ import extractText from 'flarum/utils/extractText';
|
||||
import SubscriptionMenuItem from './SubscriptionMenuItem';
|
||||
|
||||
export default class SubscriptionMenu extends Dropdown {
|
||||
init() {
|
||||
oninit(vnode) {
|
||||
super.oninit(vnode);
|
||||
|
||||
this.options = [
|
||||
{
|
||||
subscription: false,
|
||||
@@ -30,7 +32,7 @@ export default class SubscriptionMenu extends Dropdown {
|
||||
}
|
||||
|
||||
view() {
|
||||
const discussion = this.props.discussion;
|
||||
const discussion = this.attrs.discussion;
|
||||
const subscription = discussion.subscription();
|
||||
|
||||
let buttonLabel = app.translator.trans('flarum-subscriptions.forum.sub_controls.follow_button');
|
||||
@@ -59,17 +61,16 @@ export default class SubscriptionMenu extends Dropdown {
|
||||
? 'flarum-subscriptions.forum.sub_controls.notify_email_tooltip'
|
||||
: 'flarum-subscriptions.forum.sub_controls.notify_alert_tooltip'));
|
||||
|
||||
const buttonProps = {
|
||||
const buttonAttrs = {
|
||||
className: 'Button SubscriptionMenu-button ' + buttonClass,
|
||||
icon: buttonIcon,
|
||||
children: buttonLabel,
|
||||
onclick: this.saveSubscription.bind(this, discussion, ['follow', 'ignore'].indexOf(subscription) !== -1 ? false : 'follow'),
|
||||
title: title
|
||||
};
|
||||
|
||||
if ((notifyEmail || notifyAlert) && subscription === false) {
|
||||
buttonProps.config = element => {
|
||||
$(element).tooltip({
|
||||
buttonAttrs.oncreate = buttonAttrs.onupdate = vnode => {
|
||||
$(vnode.dom).tooltip({
|
||||
container: '.SubscriptionMenu',
|
||||
placement: 'bottom',
|
||||
delay: 250,
|
||||
@@ -77,24 +78,24 @@ export default class SubscriptionMenu extends Dropdown {
|
||||
});
|
||||
}
|
||||
} else {
|
||||
buttonProps.config = element => $(element).tooltip('destroy');
|
||||
buttonAttrs.onupdate = vnode => $(vnode.dom).tooltip('destroy');
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="Dropdown ButtonGroup SubscriptionMenu">
|
||||
{Button.component(buttonProps)}
|
||||
{Button.component(buttonAttrs, buttonLabel)}
|
||||
|
||||
<button className={'Dropdown-toggle Button Button--icon ' + buttonClass} data-toggle="dropdown">
|
||||
{icon('fas fa-caret-down', {className: 'Button-icon'})}
|
||||
</button>
|
||||
|
||||
<ul className="Dropdown-menu dropdown-menu Dropdown-menu--right">
|
||||
{this.options.map(props => {
|
||||
props.onclick = this.saveSubscription.bind(this, discussion, props.subscription);
|
||||
props.active = subscription === props.subscription;
|
||||
|
||||
return <li>{SubscriptionMenuItem.component(props)}</li>;
|
||||
})}
|
||||
{this.options.map(attrs => <li>{SubscriptionMenuItem.component({
|
||||
...attrs,
|
||||
onclick: this.saveSubscription.bind(this, discussion, attrs.subscription),
|
||||
active: subscription === attrs.subscription
|
||||
})}</li>
|
||||
)}
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
|
@@ -4,12 +4,12 @@ import icon from 'flarum/helpers/icon';
|
||||
export default class SubscriptionMenuItem extends Component {
|
||||
view() {
|
||||
return (
|
||||
<button className="SubscriptionMenuItem hasIcon" onclick={this.props.onclick}>
|
||||
{this.props.active ? icon('fas fa-check', {className: 'Button-icon'}) : ''}
|
||||
<button className="SubscriptionMenuItem hasIcon" onclick={this.attrs.onclick}>
|
||||
{this.attrs.active ? icon('fas fa-check', {className: 'Button-icon'}) : ''}
|
||||
<span className="SubscriptionMenuItem-label">
|
||||
{icon(this.props.icon, {className: 'Button-icon'})}
|
||||
<strong>{this.props.label}</strong>
|
||||
<span className="SubscriptionMenuItem-description">{this.props.description}</span>
|
||||
{icon(this.attrs.icon, {className: 'Button-icon'})}
|
||||
<strong>{this.attrs.label}</strong>
|
||||
<span className="SubscriptionMenuItem-description">{this.attrs.description}</span>
|
||||
</span>
|
||||
</button>
|
||||
);
|
||||
|
@@ -2,6 +2,7 @@ import { extend } from 'flarum/extend';
|
||||
import app from 'flarum/app';
|
||||
import Model from 'flarum/Model';
|
||||
import Discussion from 'flarum/models/Discussion';
|
||||
import IndexPage from 'flarum/components/IndexPage';
|
||||
import NotificationGrid from 'flarum/components/NotificationGrid';
|
||||
|
||||
import addSubscriptionBadge from './addSubscriptionBadge';
|
||||
@@ -12,6 +13,7 @@ import addSubscriptionSettings from './addSubscriptionSettings';
|
||||
import NewPostNotification from './components/NewPostNotification';
|
||||
|
||||
app.initializers.add('subscriptions', function () {
|
||||
app.routes.following = { path: '/following', component: IndexPage };
|
||||
app.notificationComponents.newPost = NewPostNotification;
|
||||
|
||||
Discussion.prototype.subscription = Model.attribute('subscription');
|
||||
|
Reference in New Issue
Block a user