]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
show original notice in repeat, with repeat info below
authorEvan Prodromou <evan@status.net>
Fri, 11 Dec 2009 17:10:58 +0000 (12:10 -0500)
committerEvan Prodromou <evan@status.net>
Fri, 11 Dec 2009 17:10:58 +0000 (12:10 -0500)
lib/noticelist.php

index 924056ece271ce2218c02cddb5f628390c6f93f7..7319a62ea76f7961b07f428256f8a222c7f90d6e 100644 (file)
@@ -147,6 +147,10 @@ class NoticeListItem extends Widget
 
     var $notice = null;
 
+    /** The notice that was repeated. */
+
+    var $repeat = null;
+
     /** The profile of the author of the notice, extracted once for convenience. */
 
     var $profile = null;
@@ -162,8 +166,13 @@ class NoticeListItem extends Widget
     function __construct($notice, $out=null)
     {
         parent::__construct($out);
-        $this->notice  = $notice;
-        $this->profile = $notice->getProfile();
+        if (!empty($notice->repeat_of)) {
+            $this->notice = Notice::staticGet('id', $notice->repeat_of);
+            $this->repeat = $notice;
+        } else {
+            $this->notice  = $notice;
+        }
+        $this->profile = $this->notice->getProfile();
     }
 
     /**
@@ -202,6 +211,7 @@ class NoticeListItem extends Widget
         $this->showNoticeSource();
         $this->showNoticeLocation();
         $this->showContext();
+        $this->showRepeat();
         $this->out->elementEnd('div');
     }
 
@@ -508,6 +518,52 @@ class NoticeListItem extends Widget
         }
     }
 
+    /**
+     * show a link to the author of repeat
+     *
+     * @return void
+     */
+
+    function showRepeat()
+    {
+        if (!empty($this->repeat)) {
+
+            $repeater = Profile::staticGet('id', $this->repeat->profile_id);
+
+            $attrs = array('href' => $repeater->profileurl,
+                           'class' => 'url');
+
+            if (!empty($repeater->fullname)) {
+                $attrs['title'] = $repeater->fullname . ' (' . $repeater->nickname . ')';
+            }
+
+            $this->out->elementStart('span', 'repeat');
+
+            $this->out->elementStart('a', $attrs);
+
+            $avatar = $repeater->getAvatar(AVATAR_MINI_SIZE);
+
+            $this->out->element('img', array('src' => ($avatar) ?
+                                             $avatar->displayUrl() :
+                                             Avatar::defaultImage(AVATAR_MINI_SIZE),
+                                             'class' => 'avatar photo',
+                                             'width' => AVATAR_MINI_SIZE,
+                                             'height' => AVATAR_MINI_SIZE,
+                                             'alt' =>
+                                             ($repeater->fullname) ?
+                                             $repeater->fullname :
+                                             $repeater->nickname));
+
+            $this->out->elementEnd('a');
+
+            $text_link = XMLStringer::estring('a', $attrs, $repeater->nickname);
+
+            $this->out->raw(sprintf(_('Repeated by %s'), $text_link));
+
+            $this->out->elementEnd('span');
+        }
+    }
+
     /**
      * show a link to reply to the current notice
      *