From a5724cca4956e3fcfe359bd72b4d874832b31393 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 11 Dec 2009 10:10:25 -0500 Subject: do some moving around of forwarding stuff --- lib/repeatform.php | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 lib/repeatform.php (limited to 'lib/repeatform.php') diff --git a/lib/repeatform.php b/lib/repeatform.php new file mode 100644 index 000000000..2052856ae --- /dev/null +++ b/lib/repeatform.php @@ -0,0 +1,147 @@ +. + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @copyright 2009 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + exit(1); +} + +require_once INSTALLDIR.'/lib/form.php'; + +/** + * Form for forwarding a notice + * + * @category Form + * @package StatusNet + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +class ForwardForm extends Form +{ + /** + * Notice to forward + */ + + var $notice = null; + + /** + * Constructor + * + * @param HTMLOutputter $out output channel + * @param Notice $notice notice to forward + */ + + function __construct($out=null, $notice=null) + { + parent::__construct($out); + + $this->notice = $notice; + } + + /** + * ID of the form + * + * @return int ID of the form + */ + + function id() + { + return 'forward-' . $this->notice->id; + } + + /** + * Action of the form + * + * @return string URL of the action + */ + + function action() + { + return common_local_url('forward'); + } + + /** + * Include a session token for CSRF protection + * + * @return void + */ + + function sessionToken() + { + $this->out->hidden('token-' . $this->notice->id, + common_session_token()); + } + + /** + * Legend of the Form + * + * @return void + */ + function formLegend() + { + $this->out->element('legend', null, _('Forward this notice')); + } + + /** + * Data elements + * + * @return void + */ + + function formData() + { + $this->out->hidden('notice-n'.$this->notice->id, + $this->notice->id, + 'notice'); + } + + /** + * Action elements + * + * @return void + */ + + function formActions() + { + $this->out->submit('forward-submit-' . $this->notice->id, + _('Forward'), 'submit', null, _('Forward this notice')); + } + + /** + * Class of the form. + * + * @return string the form's class + */ + + function formClass() + { + return 'form_forward'; + } +} -- cgit v1.2.3-54-g00ecf From 81843f2acd5375a9072d091fd58c6a6af079295e Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 11 Dec 2009 10:49:26 -0500 Subject: show the repeat form in notice lists --- classes/Profile.php | 11 +++++++++++ lib/noticelist.php | 21 +++++++++++++++++++++ lib/repeatform.php | 26 ++++++++++++-------------- 3 files changed, 44 insertions(+), 14 deletions(-) (limited to 'lib/repeatform.php') diff --git a/classes/Profile.php b/classes/Profile.php index 4b2e09006..03196447b 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -716,4 +716,15 @@ class Profile extends Memcached_DataObject } return $result; } + + function hasRepeated($notice_id) + { + // XXX: not really a pkey, but should work + + $notice = Memcached_DataObject::pkeyGet('Notice', + array('profile_id' => $this->id, + 'repeat_of' => $notice_id)); + + return !empty($notice); + } } diff --git a/lib/noticelist.php b/lib/noticelist.php index 21cec528f..924056ece 100644 --- a/lib/noticelist.php +++ b/lib/noticelist.php @@ -212,6 +212,7 @@ class NoticeListItem extends Widget $this->out->elementStart('div', 'notice-options'); $this->showFaveForm(); $this->showReplyLink(); + $this->showRepeatForm(); $this->showDeleteLink(); $this->out->elementEnd('div'); } @@ -551,6 +552,26 @@ class NoticeListItem extends Widget } } + /** + * show the form to repeat a notice + * + * @return void + */ + + function showRepeatForm() + { + $user = common_current_user(); + if ($user && $user->id != $this->notice->profile_id) { + $profile = $user->getProfile(); + if ($profile->hasRepeated($this->notice->id)) { + $this->out->text(_('Repeated')); + } else { + $rf = new RepeatForm($this->out, $this->notice); + $rf->show(); + } + } + } + /** * finish the notice * diff --git a/lib/repeatform.php b/lib/repeatform.php index 2052856ae..50e5d6dbe 100644 --- a/lib/repeatform.php +++ b/lib/repeatform.php @@ -2,7 +2,7 @@ /** * StatusNet, the distributed open-source microblogging tool * - * Form for forwarding a notice + * Form for repeating a notice * * PHP version 5 * @@ -27,14 +27,12 @@ * @link http://status.net/ */ -if (!defined('STATUSNET') && !defined('LACONICA')) { +if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/lib/form.php'; - /** - * Form for forwarding a notice + * Form for repeating a notice * * @category Form * @package StatusNet @@ -43,10 +41,10 @@ require_once INSTALLDIR.'/lib/form.php'; * @link http://status.net/ */ -class ForwardForm extends Form +class RepeatForm extends Form { /** - * Notice to forward + * Notice to repeat */ var $notice = null; @@ -55,7 +53,7 @@ class ForwardForm extends Form * Constructor * * @param HTMLOutputter $out output channel - * @param Notice $notice notice to forward + * @param Notice $notice notice to repeat */ function __construct($out=null, $notice=null) @@ -73,7 +71,7 @@ class ForwardForm extends Form function id() { - return 'forward-' . $this->notice->id; + return 'repeat-' . $this->notice->id; } /** @@ -84,7 +82,7 @@ class ForwardForm extends Form function action() { - return common_local_url('forward'); + return common_local_url('repeat'); } /** @@ -106,7 +104,7 @@ class ForwardForm extends Form */ function formLegend() { - $this->out->element('legend', null, _('Forward this notice')); + $this->out->element('legend', null, _('Repeat this notice')); } /** @@ -130,8 +128,8 @@ class ForwardForm extends Form function formActions() { - $this->out->submit('forward-submit-' . $this->notice->id, - _('Forward'), 'submit', null, _('Forward this notice')); + $this->out->submit('repeat-submit-' . $this->notice->id, + _('Repeat'), 'submit', null, _('Repeat this notice')); } /** @@ -142,6 +140,6 @@ class ForwardForm extends Form function formClass() { - return 'form_forward'; + return 'form_repeat'; } } -- cgit v1.2.3-54-g00ecf