mirror of
https://github.com/discourse/discourse.git
synced 2025-06-04 20:04:42 +08:00
Support for custom messages and redirects when creating posts (#8434)
* Support for custom messages and redirects when creating posts When a post/topic is created Discourse serializes a `NewPostResult` object. Normally this contains a status like `created_post` or errors describing why the post could not be created. There are times when a plugin might want to take the inputted post and do something in the background. In this case, the plugin can return a custom `message` and `route_to` attribute in the `NewPostResult`. If present, the message will be displayed in an alert, and when "Ok" is clicked the user will be routed to the new URL. * Destroy the draft in parallel
This commit is contained in:
@ -234,6 +234,26 @@ QUnit.test("Create an enqueued Topic", async assert => {
|
||||
assert.ok(invisible(".d-modal"), "the modal can be dismissed");
|
||||
});
|
||||
|
||||
QUnit.test("Can display a message and route to a URL", async assert => {
|
||||
await visit("/");
|
||||
await click("#create-topic");
|
||||
await fillIn("#reply-title", "This title doesn't matter");
|
||||
await fillIn(".d-editor-input", "custom message");
|
||||
await click("#reply-control button.create");
|
||||
assert.equal(
|
||||
find(".bootbox .modal-body").text(),
|
||||
"This is a custom response"
|
||||
);
|
||||
assert.equal(currentURL(), "/", "it doesn't change routes");
|
||||
|
||||
await click(".bootbox .btn-primary");
|
||||
assert.equal(
|
||||
currentURL(),
|
||||
"/faq",
|
||||
"can navigate to a `route_to` destination"
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test("Create a Reply", async assert => {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
|
||||
|
@ -497,6 +497,15 @@ export default function() {
|
||||
});
|
||||
}
|
||||
|
||||
if (data.raw === "custom message") {
|
||||
return response(200, {
|
||||
success: true,
|
||||
action: "custom",
|
||||
message: "This is a custom response",
|
||||
route_to: "/faq"
|
||||
});
|
||||
}
|
||||
|
||||
return response(200, {
|
||||
success: true,
|
||||
action: "create_post",
|
||||
|
Reference in New Issue
Block a user