summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/Profile.php11
-rw-r--r--lib/noticelist.php21
-rw-r--r--lib/repeatform.php26
3 files changed, 44 insertions, 14 deletions
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');
}
@@ -552,6 +553,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
*
* Close the last elements in the notice list item
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';
}
}