mirror of
https://github.com/flarum/core.git
synced 2025-08-10 18:35:56 +02:00
update: forum/components/ReplyComposer
This commit is contained in:
committed by
Franz Liedke
parent
2590073a50
commit
31b2ab1b2b
@@ -14,36 +14,31 @@ function minimizeComposerIfFullScreen(e) {
|
|||||||
* The `ReplyComposer` component displays the composer content for replying to a
|
* The `ReplyComposer` component displays the composer content for replying to a
|
||||||
* discussion.
|
* discussion.
|
||||||
*
|
*
|
||||||
* ### Props
|
* ### Attrs
|
||||||
*
|
*
|
||||||
* - All of the props of ComposerBody
|
* - All of the attrs of ComposerBody
|
||||||
* - `discussion`
|
* - `discussion`
|
||||||
*/
|
*/
|
||||||
export default class ReplyComposer extends ComposerBody {
|
export default class ReplyComposer extends ComposerBody {
|
||||||
static initProps(props) {
|
initAttrs(attrs) {
|
||||||
super.initProps(props);
|
super.initAttrs(attrs);
|
||||||
|
|
||||||
props.placeholder = props.placeholder || extractText(app.translator.trans('core.forum.composer_reply.body_placeholder'));
|
attrs.placeholder = attrs.placeholder || extractText(app.translator.trans('core.forum.composer_reply.body_placeholder'));
|
||||||
props.submitLabel = props.submitLabel || app.translator.trans('core.forum.composer_reply.submit_button');
|
attrs.submitLabel = attrs.submitLabel || app.translator.trans('core.forum.composer_reply.submit_button');
|
||||||
props.confirmExit = props.confirmExit || extractText(app.translator.trans('core.forum.composer_reply.discard_confirmation'));
|
attrs.confirmExit = attrs.confirmExit || extractText(app.translator.trans('core.forum.composer_reply.discard_confirmation'));
|
||||||
}
|
}
|
||||||
|
|
||||||
headerItems() {
|
headerItems() {
|
||||||
const items = super.headerItems();
|
const items = super.headerItems();
|
||||||
const discussion = this.props.discussion;
|
const discussion = this.attrs.discussion;
|
||||||
|
|
||||||
const routeAndMinimize = function (element, isInitialized) {
|
|
||||||
if (isInitialized) return;
|
|
||||||
$(element).on('click', minimizeComposerIfFullScreen);
|
|
||||||
m.route.apply(this, arguments);
|
|
||||||
};
|
|
||||||
|
|
||||||
items.add(
|
items.add(
|
||||||
'title',
|
'title',
|
||||||
<h3>
|
<h3>
|
||||||
{icon('fas fa-reply')}{' '}
|
{icon('fas fa-reply')}{' '}
|
||||||
<a href={app.route.discussion(discussion)} config={routeAndMinimize}>
|
<a route={app.route.discussion(discussion)} onclick={minimizeComposerIfFullScreen}>
|
||||||
{discussion.title()}
|
{discussion.title()}
|
||||||
|
{''}
|
||||||
</a>
|
</a>
|
||||||
</h3>
|
</h3>
|
||||||
);
|
);
|
||||||
@@ -57,7 +52,7 @@ export default class ReplyComposer extends ComposerBody {
|
|||||||
jumpToPreview(e) {
|
jumpToPreview(e) {
|
||||||
minimizeComposerIfFullScreen(e);
|
minimizeComposerIfFullScreen(e);
|
||||||
|
|
||||||
m.route(app.route.discussion(this.props.discussion, 'reply'));
|
m.route.set(app.route.discussion(this.attrs.discussion, 'reply'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -68,12 +63,12 @@ export default class ReplyComposer extends ComposerBody {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
content: this.composer.fields.content(),
|
content: this.composer.fields.content(),
|
||||||
relationships: { discussion: this.props.discussion },
|
relationships: { discussion: this.attrs.discussion },
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
onsubmit() {
|
onsubmit() {
|
||||||
const discussion = this.props.discussion;
|
const discussion = this.attrs.discussion;
|
||||||
|
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
m.redraw();
|
m.redraw();
|
||||||
@@ -94,17 +89,18 @@ export default class ReplyComposer extends ComposerBody {
|
|||||||
// their reply has been posted, containing a button which will
|
// their reply has been posted, containing a button which will
|
||||||
// transition to their new post when clicked.
|
// transition to their new post when clicked.
|
||||||
let alert;
|
let alert;
|
||||||
const viewButton = Button.component({
|
const viewButton = Button.component(
|
||||||
className: 'Button Button--link',
|
{
|
||||||
children: app.translator.trans('core.forum.composer_reply.view_button'),
|
className: 'Button Button--link',
|
||||||
onclick: () => {
|
onclick: () => {
|
||||||
m.route(app.route.post(post));
|
m.route.set(app.route.post(post));
|
||||||
app.alerts.dismiss(alert);
|
app.alerts.dismiss(alert);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
});
|
app.translator.trans('core.forum.composer_reply.view_button')
|
||||||
alert = app.alerts.show({
|
);
|
||||||
|
alert = app.alerts.show(app.translator.trans('core.forum.composer_reply.posted_message'), {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
children: app.translator.trans('core.forum.composer_reply.posted_message'),
|
|
||||||
controls: [viewButton],
|
controls: [viewButton],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user