]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/mailbox.php
Rip out user, group and site design customization code
[quix0rs-gnu-social.git] / lib / mailbox.php
index 2b00f5ffde0538f908fd7af15d4cf7d22c0697fc..db686a255a757f8b75a845dc82a8e0f3ea8e7815 100644 (file)
@@ -31,8 +31,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
-define('MESSAGES_PER_PAGE', 20);
-
 /**
  * common superclass for direct messages inbox and outbox
  *
@@ -44,8 +42,7 @@ define('MESSAGES_PER_PAGE', 20);
  * @see      InboxAction
  * @see      OutboxAction
  */
-
-class MailboxAction extends CurrentUserDesignAction
+class MailboxAction extends Action
 {
     var $page = null;
 
@@ -73,12 +70,12 @@ class MailboxAction extends CurrentUserDesignAction
      *
      * @return void
      */
-
     function handle($args)
     {
         parent::handle($args);
 
         if (!$this->user) {
+            // TRANS: Client error displayed when trying to access a mailbox without providing a user.
             $this->clientError(_('No such user.'), 404);
             return;
         }
@@ -86,6 +83,7 @@ class MailboxAction extends CurrentUserDesignAction
         $cur = common_current_user();
 
         if (!$cur || $cur->id != $this->user->id) {
+            // TRANS: Client error displayed when trying to access a mailbox that is not of the logged in user.
             $this->clientError(_('Only the user can read their own mailboxes.'),
                 403);
             return;
@@ -94,12 +92,6 @@ class MailboxAction extends CurrentUserDesignAction
         $this->showPage();
     }
 
-    function showLocalNav()
-    {
-        $nav = new PersonalGroupNav($this);
-        $nav->show();
-    }
-
     function showNoticeForm()
     {
         $message_form = new MessageForm($this);
@@ -111,32 +103,23 @@ class MailboxAction extends CurrentUserDesignAction
         $message = $this->getMessages();
 
         if ($message) {
-            $cnt = 0;
-            $this->elementStart('div', array('id' =>'notices_primary'));
-            $this->element('h2', null, _('Notices'));
-            $this->elementStart('ul', 'notices');
-
-            while ($message->fetch() && $cnt <= MESSAGES_PER_PAGE) {
-                $cnt++;
 
-                if ($cnt > MESSAGES_PER_PAGE) {
-                    break;
-                }
+            $ml = $this->getMessageList($message);
 
-                $this->showMessage($message);
-            }
+            $cnt = $ml->show();
 
-            $this->elementEnd('ul');
-
-            $this->pagination($this->page > 1, $cnt > MESSAGES_PER_PAGE,
-                              $this->page, $this->trimmed('action'),
+            $this->pagination($this->page > 1,
+                              $cnt > MESSAGES_PER_PAGE,
+                              $this->page,
+                              $this->trimmed('action'),
                               array('nickname' => $this->user->nickname));
-            $this->elementEnd('div');
-            $message->free();
-            unset($message);
-        }
-        else {
-            $this->element('p', 'guide', _('You have no private messages. You can send private message to engage other users in conversation. People can send you messages for your eyes only.'));
+        } else {
+            $this->element('p',
+                           'guide',
+                           // TRANS: Message displayed when there are no private messages in the inbox of a user.
+                           _('You have no private messages. '.
+                             'You can send private message to engage other users in conversation. '.
+                             'People can send you messages for your eyes only.'));
         }
     }
 
@@ -145,95 +128,11 @@ class MailboxAction extends CurrentUserDesignAction
         return null;
     }
 
-    /**
-     * returns the profile we want to show with the message
-     *
-     * For inboxes, we show the sender; for outboxes, the recipient.
-     *
-     * @param Message $message The message to get the profile for
-     *
-     * @return Profile The profile that matches the message
-     */
-
-    function getMessageProfile($message)
+    function getMessageList($message)
     {
         return null;
     }
 
-    /**
-     * show a single message in the list format
-     *
-     * XXX: This needs to be extracted out into a MessageList similar
-     * to NoticeList.
-     *
-     * @param Message $message the message to show
-     *
-     * @return void
-     */
-
-    function showMessage($message)
-    {
-        $this->elementStart('li', array('class' => 'hentry notice',
-                                         'id' => 'message-' . $message->id));
-
-        $profile = $this->getMessageProfile($message);
-
-        $this->elementStart('div', 'entry-title');
-        $this->elementStart('span', 'vcard author');
-        $this->elementStart('a', array('href' => $profile->profileurl,
-                                       'class' => 'url'));
-        $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE);
-        $this->element('img', array('src' => ($avatar) ?
-                                    $avatar->displayUrl() :
-                                    Avatar::defaultImage(AVATAR_STREAM_SIZE),
-                                    'class' => 'photo avatar',
-                                    'width' => AVATAR_STREAM_SIZE,
-                                    'height' => AVATAR_STREAM_SIZE,
-                                    'alt' =>
-                                    ($profile->fullname) ? $profile->fullname :
-                                    $profile->nickname));
-        $this->element('span', array('class' => 'nickname fn'),
-                            $profile->nickname);
-        $this->elementEnd('a');
-        $this->elementEnd('span');
-
-        // FIXME: URL, image, video, audio
-        $this->elementStart('p', array('class' => 'entry-content'));
-        $this->raw($message->rendered);
-        $this->elementEnd('p');
-        $this->elementEnd('div');
-
-        $messageurl = common_local_url('showmessage',
-                                       array('message' => $message->id));
-
-        // XXX: we need to figure this out better. Is this right?
-        if (strcmp($message->uri, $messageurl) != 0 &&
-            preg_match('/^http/', $message->uri)) {
-            $messageurl = $message->uri;
-        }
-
-        $this->elementStart('div', 'entry-content');
-        $this->elementStart('a', array('rel' => 'bookmark',
-                                       'class' => 'timestamp',
-                                       'href' => $messageurl));
-        $dt = common_date_iso8601($message->created);
-        $this->element('abbr', array('class' => 'published',
-                                     'title' => $dt),
-                               common_date_string($message->created));
-        $this->elementEnd('a');
-
-        if ($message->source) {
-            $this->elementStart('span', 'source');
-            // FIXME: bad i18n. Device should be a parameter (from %s).
-            $this->text(_('from'));
-            $this->element('span', 'device', $this->showSource($message->source));
-            $this->elementEnd('span');
-        }
-        $this->elementEnd('div');
-
-        $this->elementEnd('li');
-    }
-
     /**
      * Show the page notice
      *
@@ -241,7 +140,6 @@ class MailboxAction extends CurrentUserDesignAction
      *
      * @return void
      */
-
     function showPageNotice()
     {
         $instr  = $this->getInstructions();
@@ -252,44 +150,6 @@ class MailboxAction extends CurrentUserDesignAction
         $this->elementEnd('div');
     }
 
-    /**
-     * Show the source of the message
-     *
-     * Returns either the name (and link) of the API client that posted the notice,
-     * or one of other other channels.
-     *
-     * @param string $source the source of the message
-     *
-     * @return void
-     */
-
-    function showSource($source)
-    {
-        $source_name = _($source);
-        switch ($source) {
-        case 'web':
-        case 'xmpp':
-        case 'mail':
-        case 'omb':
-        case 'api':
-            $this->element('span', 'device', $source_name);
-            break;
-        default:
-            $ns = Notice_source::staticGet($source);
-            if ($ns) {
-                $this->elementStart('span', 'device');
-                $this->element('a', array('href' => $ns->url,
-                                               'rel' => 'external'),
-                                    $ns->name);
-                $this->elementEnd('span');
-            } else {
-                $this->element('span', 'device', $source_name);
-            }
-            break;
-        }
-        return;
-    }
-
     /**
      * Mailbox actions are read only
      *
@@ -297,10 +157,14 @@ class MailboxAction extends CurrentUserDesignAction
      *
      * @return boolean
      */
-
     function isReadOnly($args)
     {
          return true;
     }
 
+    function showObjectNav()
+    {
+        $mm = new MailboxMenu($this);
+        $mm->show();
+    }
 }