]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/noticelist.php
Update settingsaction.php to new framework
[quix0rs-gnu-social.git] / lib / noticelist.php
index b4ea4d41cd6858e20281cd246cf75edcbaf05765..fde93a3b668cdcb0eeaf0051d60de7eb6e58eacc 100644 (file)
@@ -31,6 +31,9 @@ if (!defined('LACONICA')) {
     exit(1);
 }
 
+require_once INSTALLDIR.'/lib/favorform.php';
+require_once INSTALLDIR.'/lib/disfavorform.php';
+
 /**
  * widget for displaying a list of notices
  *
@@ -50,7 +53,7 @@ if (!defined('LACONICA')) {
  * @see      ProfileNoticeList
  */
 
-class NoticeList
+class NoticeList extends Widget
 {
     /** the current stream of notices being displayed. */
 
@@ -62,8 +65,9 @@ class NoticeList
      * @param Notice $notice stream of notices from DB_DataObject
      */
 
-    function __construct($notice)
+    function __construct($notice, $out=null)
     {
+       parent::__construct($out);
         $this->notice = $notice;
     }
 
@@ -78,7 +82,9 @@ class NoticeList
 
     function show()
     {
-        common_element_start('ul', array('id' => 'notices'));
+        $this->out->elementStart('div', array('id' =>'notices_primary'));
+        $this->out->element('h2', null, _('Notices'));
+        $this->out->elementStart('ul', array('class' => 'notices'));
 
         $cnt = 0;
 
@@ -93,7 +99,8 @@ class NoticeList
             $item->show();
         }
 
-        common_element_end('ul');
+        $this->out->elementEnd('ul');
+        $this->out->elementEnd('div');
 
         return $cnt;
     }
@@ -111,7 +118,7 @@ class NoticeList
 
     function newListItem($notice)
     {
-        return new NoticeListItem($notice);
+        return new NoticeListItem($notice, $this->out);
     }
 }
 
@@ -133,7 +140,7 @@ class NoticeList
  * @see      ProfileNoticeListItem
  */
 
-class NoticeListItem
+class NoticeListItem extends Widget
 {
     /** The notice this item will show. */
 
@@ -151,8 +158,9 @@ class NoticeListItem
      * @param Notice $notice The notice we'll display
      */
 
-    function __construct($notice)
+    function __construct($notice, $out=null)
     {
+       parent::__construct($out);
         $this->notice  = $notice;
         $this->profile = $notice->getProfile();
     }
@@ -169,19 +177,39 @@ class NoticeListItem
     function show()
     {
         $this->showStart();
-        $this->showFaveForm();
+        $this->showNotice();
+        $this->showNoticeInfo();
+        $this->showNoticeOptions();
+        $this->showEnd();
+    }
+
+    function showNotice()
+    {
+        $this->out->elementStart('div', 'entry-title');
         $this->showAuthor();
         $this->showContent();
-        $this->startTimeSection();
+        $this->out->elementEnd('div');
+    }
+
+    function showNoticeInfo()
+    {
+        $this->out->elementStart('div', 'entry-content');
         $this->showNoticeLink();
         $this->showNoticeSource();
         $this->showReplyTo();
+        $this->out->elementEnd('div');
+    }
+
+    function showNoticeOptions()
+    {
+        $this->out->elementStart('div', 'notice-options');
+        $this->showFaveForm();
         $this->showReplyLink();
         $this->showDeleteLink();
-        $this->endTimeSection();
-        $this->showEnd();
+        $this->out->elementEnd('div');
     }
 
+
     /**
      * start a single notice.
      *
@@ -192,7 +220,7 @@ class NoticeListItem
     {
         // XXX: RDFa
         // TODO: add notice_type class e.g., notice_video, notice_image
-        common_element_start('li', array('class' => 'hentry notice',
+        $this->out->elementStart('li', array('class' => 'hentry notice',
                                          'id' => 'notice-' . $this->notice->id));
     }
 
@@ -207,9 +235,11 @@ class NoticeListItem
         $user = common_current_user();
         if ($user) {
             if ($user->hasFave($this->notice)) {
-                common_disfavor_form($this->notice);
+               $disfavor = new DisfavorForm($this->out, $this->notice);
+               $disfavor->show();
             } else {
-                common_favor_form($this->notice);
+               $favor = new FavorForm($this->out, $this->notice);
+               $favor->show();
             }
         }
     }
@@ -224,13 +254,13 @@ class NoticeListItem
 
     function showAuthor()
     {
-        common_element_start('span', 'vcard author');
-        common_element_start('a', array('href' => $this->profile->profileurl,
+        $this->out->elementStart('span', 'vcard author');
+        $this->out->elementStart('a', array('href' => $this->profile->profileurl,
                                         'class' => 'url'));
         $this->showAvatar();
         $this->showNickname();
-        common_element_end('a');
-        common_element_end('span');
+        $this->out->elementEnd('a');
+        $this->out->elementEnd('span');
     }
 
     /**
@@ -246,7 +276,7 @@ class NoticeListItem
     {
         $avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE);
 
-        common_element('img', array('src' => ($avatar) ?
+        $this->out->element('img', array('src' => ($avatar) ?
                                     common_avatar_display_url($avatar) :
                                     common_default_avatar(AVATAR_STREAM_SIZE),
                                     'class' => 'avatar photo',
@@ -268,7 +298,7 @@ class NoticeListItem
 
     function showNickname()
     {
-        common_element('span', array('class' => 'nickname fn'),
+        $this->out->element('span', array('class' => 'nickname fn'),
                        $this->profile->nickname);
     }
 
@@ -285,31 +315,16 @@ class NoticeListItem
     function showContent()
     {
         // FIXME: URL, image, video, audio
-        common_element_start('p', array('class' => 'content entry-title'));
+        $this->out->elementStart('p', array('class' => 'entry-content'));
         if ($this->notice->rendered) {
-            common_raw($this->notice->rendered);
+            $this->out->raw($this->notice->rendered);
         } else {
             // XXX: may be some uncooked notices in the DB,
             // we cook them right now. This should probably disappear in future
             // versions (>> 0.4.x)
-            common_raw(common_render_content($this->notice->content, $this->notice));
+            $this->out->raw(common_render_content($this->notice->content, $this->notice));
         }
-        common_element_end('p');
-    }
-
-    /**
-     * show the "time" section of a notice
-     *
-     * This is the greyed-out section that appears beneath the content, including
-     * links to delete or reply to the notice. Probably should be called something
-     * else.
-     *
-     * @return void
-     */
-
-    function startTimeSection()
-    {
-        common_element_start('p', 'time');
+        $this->out->elementEnd('p');
     }
 
     /**
@@ -330,14 +345,18 @@ class NoticeListItem
             preg_match('/^http/', $this->notice->uri)) {
             $noticeurl = $this->notice->uri;
         }
-        common_element_start('a', array('class' => 'permalink',
-                                        'rel' => 'bookmark',
+        $this->out->elementStart('dl', 'timestamp');
+        $this->out->element('dt', null, _('Published')); 
+        $this->out->elementStart('dd', null);
+        $this->out->elementStart('a', array('rel' => 'bookmark',
                                         'href' => $noticeurl));
         $dt = common_date_iso8601($this->notice->created);
-        common_element('abbr', array('class' => 'published',
+        $this->out->element('abbr', array('class' => 'published',
                                      'title' => $dt),
                        common_date_string($this->notice->created));
-        common_element_end('a');
+        $this->out->elementEnd('a');
+        $this->out->elementEnd('dd');
+        $this->out->elementEnd('dl');
     }
 
     /**
@@ -352,8 +371,8 @@ class NoticeListItem
     function showNoticeSource()
     {
         if ($this->notice->source) {
-            $this->elementStart('dl', 'device');
-            $this->element('dt', null, _('From'));
+            $this->out->elementStart('dl', 'device');
+            $this->out->element('dt', null, _('From'));
             $source_name = _($this->notice->source);
             switch ($this->notice->source) {
             case 'web':
@@ -361,22 +380,22 @@ class NoticeListItem
             case 'mail':
             case 'omb':
             case 'api':
-                $this->element('dd', 'noticesource', $source_name);
+                $this->out->element('dd', 'noticesource', $source_name);
                 break;
             default:
                 $ns = Notice_source::staticGet($this->notice->source);
                 if ($ns) {
-                    $this->elementStart('dd', null);
-                    $this->element('a', array('href' => $ns->url,
+                    $this->out->elementStart('dd', null);
+                    $this->out->element('a', array('href' => $ns->url,
                                               'rel' => 'external'),
                                    $ns->name);
-                    $this->elementEnd('dd');
+                    $this->out->elementEnd('dd');
                 } else {
-                    $this->element('dd', 'noticesource', $source_name);
+                    $this->out->element('dd', 'noticesource', $source_name);
                 }
                 break;
             }
-            $this->elementEnd('dl');
+            $this->out->elementEnd('dl');
         }
     }
 
@@ -394,15 +413,14 @@ class NoticeListItem
         if ($this->notice->reply_to) {
             $replyurl = common_local_url('shownotice',
                                          array('notice' => $this->notice->reply_to));
-            $this->elementStart('dl', 'response');
-            $this->element('dt', null, _('To'));
-            $this->elementStart('dd');
-            $this->element('a', array('class' => 'inreplyto',
-                                      'href' => $replyurl,
+            $this->out->elementStart('dl', 'response');
+            $this->out->element('dt', null, _('To'));
+            $this->out->elementStart('dd');
+            $this->out->element('a', array('href' => $replyurl,
                                       'rel' => 'in-reply-to'),
                            _('in reply to'));
-            $this->elementEnd('dd');
-            $this->elementEnd('dl');
+            $this->out->elementEnd('dd');
+            $this->out->elementEnd('dl');
         }
     }
 
@@ -420,16 +438,13 @@ class NoticeListItem
         $reply_url = common_local_url('newnotice',
                                       array('replyto' => $this->profile->nickname));
 
-        $reply_js =
-          'return doreply("'.$this->profile->nickname.'",'.$this->notice->id.');';
-
-        common_element_start('a',
-                             array('href' => $reply_url,
-                                   'onclick' => $reply_js,
-                                   'title' => _('reply'),
-                                   'class' => 'replybutton'));
-        common_raw(' →');
-        common_element_end('a');
+        $this->out->elementStart('dl', 'reply');
+        $this->out->element('dt', null, _('Reply to this notice'));
+        $this->out->elementStart('dd');
+        $this->out->element('a', array('href' => $reply_url,
+                                       'title' => _('reply')), _('Reply'));
+        $this->out->elementEnd('dd');
+        $this->out->elementEnd('dl');
     }
 
     /**
@@ -444,25 +459,14 @@ class NoticeListItem
         if ($user && $this->notice->profile_id == $user->id) {
             $deleteurl = common_local_url('deletenotice',
                                           array('notice' => $this->notice->id));
-            common_element_start('a', array('class' => 'deletenotice',
+            $this->out->elementStart('a', array('class' => 'deletenotice',
                                             'href' => $deleteurl,
                                             'title' => _('delete')));
-            common_raw(' ×');
-            common_element_end('a');
+            $this->out->raw(' ×');
+            $this->out->elementEnd('a');
         }
     }
 
-    /**
-     * end the time section
-     *
-     * @return void
-     */
-
-    function endTimeSection()
-    {
-        common_element_end('p');
-    }
-
     /**
      * finish the notice
      *
@@ -473,6 +477,6 @@ class NoticeListItem
 
     function showEnd()
     {
-        common_element_end('li');
+        $this->out->elementEnd('li');
     }
 }