Extensibility: data when starting a new discussion

This commit is contained in:
Toby Zerner 2015-05-02 08:39:44 +09:30
parent 50e4dbf3b4
commit ce0c8903a5
3 changed files with 16 additions and 19 deletions

View File

@ -50,14 +50,18 @@ export default class ComposerDiscussion extends ComposerBody {
return (this.title() || this.content()) && !confirm(this.props.confirmExit);
}
onsubmit(content) {
data() {
return {
title: this.title(),
content: this.content()
};
}
onsubmit() {
this.loading(true);
m.redraw();
var data = {
title: this.title(),
content: content
};
var data = this.data();
app.store.createRecord('discussions').save(data).then(discussion => {
app.composer.hide();

View File

@ -2,19 +2,16 @@
class StartDiscussionCommand
{
public $title;
public $content;
public $user;
public $forum;
public function __construct($title, $content, $user, $forum)
public $data;
public function __construct($user, $forum, $data)
{
$this->title = $title;
$this->content = $content;
$this->user = $user;
$this->forum = $forum;
$this->data = $data;
}
}

View File

@ -26,7 +26,7 @@ class StartDiscussionCommandHandler
// an opportunity to alter the discussion entity based on data in the
// command they may have passed through in the controller.
$discussion = Discussion::start(
$command->title,
array_get($command->data, 'title'),
$command->user
);
@ -41,13 +41,9 @@ class StartDiscussionCommandHandler
// will trigger a domain event that is slightly semantically incorrect
// in this situation (PostWasPosted), we may need to reconsider someday.
$post = $this->bus->dispatch(
new PostReplyCommand($discussion->id, $command->content, $command->user)
new PostReplyCommand($discussion->id, array_get($command->data, 'content'), $command->user)
);
// The discussion may have been updated by the PostReplyCommand; we need
// to refresh its data.
$discussion = $post->discussion;
return $discussion;
return $post->discussion;
}
}