Add a parameter named 'inreplyto' to the 'notice/new' page, so urls can inclue 'inreplyto' id's. Also add 'inreplyto' to the urls sent in emails.

This commit is contained in:
Craig Andrews 2009-09-11 22:37:37 -04:00
parent c04987018c
commit 57feeb566a
5 changed files with 17 additions and 5 deletions

View File

@ -431,13 +431,14 @@ class NewnoticeAction extends Action
$content = $this->trimmed('status_textarea'); $content = $this->trimmed('status_textarea');
if (!$content) { if (!$content) {
$replyto = $this->trimmed('replyto'); $replyto = $this->trimmed('replyto');
$inreplyto = $this->trimmed('inreplyto');
$profile = Profile::staticGet('nickname', $replyto); $profile = Profile::staticGet('nickname', $replyto);
if ($profile) { if ($profile) {
$content = '@' . $profile->nickname . ' '; $content = '@' . $profile->nickname . ' ';
} }
} }
$notice_form = new NoticeForm($this, '', $content); $notice_form = new NoticeForm($this, '', $content, null, $inreplyto);
$notice_form->show(); $notice_form->show();
} }

View File

@ -629,7 +629,7 @@ function mail_notify_attn($user, $notice)
$notice->content,//%4 $notice->content,//%4
$conversationUrl,//%5 $conversationUrl,//%5
common_local_url('newnotice', common_local_url('newnotice',
array('replyto' => $sender->nickname)),//%6 array('replyto' => $sender->nickname, 'inreplyto' => $notice->id)),//%6
common_local_url('replies', common_local_url('replies',
array('nickname' => $user->nickname)),//%7 array('nickname' => $user->nickname)),//%7
common_local_url('emailsettings'));//%8 common_local_url('emailsettings'));//%8

View File

@ -69,6 +69,12 @@ class NoticeForm extends Form
var $user = null; var $user = null;
/**
* The notice being replied to
*/
var $inreplyto = null;
/** /**
* Constructor * Constructor
* *
@ -77,12 +83,13 @@ class NoticeForm extends Form
* @param string $content content to pre-fill * @param string $content content to pre-fill
*/ */
function __construct($out=null, $action=null, $content=null, $user=null) function __construct($out=null, $action=null, $content=null, $user=null, $inreplyto)
{ {
parent::__construct($out); parent::__construct($out);
$this->action = $action; $this->action = $action;
$this->content = $content; $this->content = $content;
$this->inreplyto = $inreplyto;
if ($user) { if ($user) {
$this->user = $user; $this->user = $user;
@ -161,7 +168,7 @@ class NoticeForm extends Form
if ($this->action) { if ($this->action) {
$this->out->hidden('notice_return-to', $this->action, 'returnto'); $this->out->hidden('notice_return-to', $this->action, 'returnto');
} }
$this->out->hidden('notice_in-reply-to', $this->action, 'inreplyto'); $this->out->hidden('notice_in-reply-to', $this->inreplyto, 'inreplyto');
} }
/** /**

View File

@ -442,7 +442,7 @@ class NoticeListItem extends Widget
{ {
if (common_logged_in()) { if (common_logged_in()) {
$reply_url = common_local_url('newnotice', $reply_url = common_local_url('newnotice',
array('replyto' => $this->profile->nickname)); array('replyto' => $this->profile->nickname, 'inreplyto' => $this->notice->id));
$this->out->elementStart('a', array('href' => $reply_url, $this->out->elementStart('a', array('href' => $reply_url,
'class' => 'notice_reply', 'class' => 'notice_reply',
'title' => _('Reply to this notice'))); 'title' => _('Reply to this notice')));

View File

@ -175,6 +175,10 @@ class Router
$m->connect('notice/new?replyto=:replyto', $m->connect('notice/new?replyto=:replyto',
array('action' => 'newnotice'), array('action' => 'newnotice'),
array('replyto' => '[A-Za-z0-9_-]+')); array('replyto' => '[A-Za-z0-9_-]+'));
$m->connect('notice/new?replyto=:replyto&inreplyto=:inreplyto',
array('action' => 'newnotice'),
array('replyto' => '[A-Za-z0-9_-]+'),
array('inreplyto' => '[0-9]+'));
$m->connect('notice/:notice/file', $m->connect('notice/:notice/file',
array('action' => 'file'), array('action' => 'file'),