Index: privatemsg-view.tpl.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg-view.tpl.php,v
retrieving revision 1.1.2.5.2.3
diff -u -p -r1.1.2.5.2.3 privatemsg-view.tpl.php
--- privatemsg-view.tpl.php	22 Mar 2010 07:29:18 -0000	1.1.2.5.2.3
+++ privatemsg-view.tpl.php	3 Oct 2010 20:27:16 -0000
@@ -5,32 +5,23 @@
 drupal_add_css(drupal_get_path('module', 'privatemsg') . '/styles/privatemsg-view.css');
 ?>
 <?php print $anchors; ?>
-<div class="privatemsg-message" id="privatemsg-mid-<?php print $mid; ?>">
-  <div class="privatemsg-author-column">
-    <div class="privatemsg-author-column-left">
-      <div class="privatemsg-author-avatar">
-        <?php print $author_picture; ?>
-      </div>
-    </div>
-  </div>
-  <div class="privatemsg-author-column-right">
-    <div class="privatemsg-author-name">
-      <?php print $author_name_link; ?>
-    </div>
-    <div class="privatemsg-message-date">
-      <?php print $message_timestamp; ?>
-    </div>
+<div class="privatemsg-message<?php echo isset($new) ? ' privatemsg-message-new' : '' ?>" id="privatemsg-mid-<?php print $mid; ?>">
+  <div class="privatemsg-author-avatar">
+    <?php print $author_picture; ?>
   </div>
   <div class="privatemsg-message-column">
+    <?php if (isset($new)): ?>
+      <span class="new privatemsg-message-new"><?php print $new ?></span>
+    <?php endif ?>
+      <div class="privatemsg-message-information">
+        <span class="privatemsg-author-name"><?php print $author_name_link; ?></span> <span class="privatemsg-message-date"><?php print $message_timestamp; ?></span>
+        <?php if (isset($message_actions)): ?>
+          <?php print $message_actions ?>
+        <?php endif ?>
+      </div>
     <div class="privatemsg-message-body">
-      <?php if (isset($new)) : ?>
-        <span class="new"><?php print $new ?></span>
-      <?php endif ?>
       <?php print $message_body; ?>
     </div>
-    <?php if ( isset($message_actions)) : ?>
-       <?php print $message_actions ?>
-    <?php endif ?>
   </div>
-  <div class="clear-both privatemsg-bottom-border"></div>
+  <div class="clearfix"></div>
 </div>
Index: privatemsg.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg.module,v
retrieving revision 1.70.2.30.2.91.2.64.2.86
diff -u -p -r1.70.2.30.2.91.2.64.2.86 privatemsg.module
--- privatemsg.module	9 Sep 2010 08:27:59 -0000	1.70.2.30.2.91.2.64.2.86
+++ privatemsg.module	3 Oct 2010 20:27:17 -0000
@@ -144,7 +144,7 @@ function _privatemsg_format_participants
     }
     else { // Multipe participants..
       $participants = implode(', ', $to);
-      return t('Participants: !participants and !last', array('!participants' => $participants, '!last' => $last));
+      return t('Between !participants and !last.', array('!participants' => $participants, '!last' => $last));
     }
   }
   return '';
@@ -272,7 +272,7 @@ function privatemsg_menu() {
  */
 function privatemsg_menu_local_tasks_alter(&$data, $router_item, $root_path) {
   // Add action link to 'messages/new' on 'messages' page.
-  $add_to_array = array('messages/list', 'messages/inbox', 'messages/sent', 'messages/view');
+  $add_to_array = array('messages/list', 'messages/inbox', 'messages/sent');
   foreach ($add_to_array as $add_to) {
     if (strpos($root_path, $add_to) !== FALSE) {
     $item = menu_get_item('messages/new');
@@ -700,7 +700,7 @@ function privatemsg_preprocess_privatems
   // Render message body.
   $vars['message_body'] =  drupal_render($message->content);
   if (isset($vars['mid']) && isset($vars['thread_id']) && privatemsg_user_access('delete privatemsg')) {
-    $vars['message_actions'][] = array('title' => t('Delete message'), 'href' => 'messages/delete/' . $vars['thread_id'] . '/' . $vars['mid']);
+    $vars['message_actions'][] = array('title' => t('Delete'), 'href' => 'messages/delete/' . $vars['thread_id'] . '/' . $vars['mid']);
   }
   $vars['message_anchors'][] = 'privatemsg-mid-' . $vars['mid'];
   if (!empty($message->is_new)) {
@@ -711,7 +711,7 @@ function privatemsg_preprocess_privatems
   // call hook_privatemsg_message_view_alter
   drupal_alter('privatemsg_message_view', $vars);
 
-  $vars['message_actions'] = !empty($vars['message_actions']) ? theme('links', array('links' => $vars['message_actions'], 'attributes' => array('class' => array('privatemsg-message-actions')))) : '';
+  $vars['message_actions'] = !empty($vars['message_actions']) ? theme('links', array('links' => $vars['message_actions'], 'attributes' => array('class' => array('privatemsg-message-actions', 'links', 'inline')))) : '';
 
   $vars['anchors'] = '';
   foreach ($vars['message_anchors'] as $anchor) {
@@ -1581,7 +1581,7 @@ function privatemsg_reply($thread_id, $b
   return $validated;
 }
 
-function _privatemsg_validate_message(&$message, $form = FALSE, $display_block_messages = TRUE) {
+function _privatemsg_validate_message(&$message, $form = FALSE) {
   $messages = array('error' => array(), 'warning' => array());
   if (!(privatemsg_user_access('write privatemsg', $message->author) || (privatemsg_user_access('reply only privatemsg', $message->author) && isset($message->thread_id)))) {
     // no need to do further checks in this case...
@@ -1643,10 +1643,7 @@ function _privatemsg_validate_message(&$
     foreach(module_invoke_all('privatemsg_block_message', $message->author, $message->recipients, (array)$message) as $blocked) {
       unset($message->recipients[$blocked['recipient']]);
       if ($form) {
-        // Don't display information about blocked users when replying.
-        if ($display_block_messages) {
-          drupal_set_message($blocked['message'], 'warning');
-        }
+        drupal_set_message($blocked['message'], 'warning');
       } else {
         $messages['warning'][] = $blocked['message'];
       }
@@ -2546,7 +2543,12 @@ function privatemsg_field_extra_fields()
       'body' => array(
         'label' => t('Message body'),
         'description' => t('Message body'),
-        'weight' => -4,
+        'weight' => -3,
+      ),
+      'token' => array(
+        'label' => t('Token browser'),
+        'description' => t('Displays usable tokens in a table for those who are allowed to use tokens in private messages.'),
+        'weight' => -1,
       ),
     ),
     'display' => array(
Index: privatemsg.pages.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg.pages.inc,v
retrieving revision 1.1.2.26
diff -u -p -r1.1.2.26 privatemsg.pages.inc
--- privatemsg.pages.inc	8 Sep 2010 23:17:31 -0000	1.1.2.26
+++ privatemsg.pages.inc	3 Oct 2010 20:27:18 -0000
@@ -368,15 +368,21 @@ function privatemsg_new($form, &$form_st
     '#type'               => 'text_format',
     '#title'              => t('Message'),
     '#rows'               => 6,
-    '#weight'             => 0,
+    '#weight'             => -3,
     '#default_value'      => $body,
     '#resizable'          => TRUE,
     '#format'             => isset($format) ? $format : NULL,
   );
   if (privatemsg_user_access('use tokens in privatemsg') && module_exists('token')) {
     $form['token'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Token browser'),
+      '#weight' => -1,
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+    );
+    $form['token']['browser'] = array(
       '#theme' => 'token_tree',
-      '#weight' => 99,
       '#token_types' => array('privatemsg_message'),
     );
   }
@@ -416,9 +422,8 @@ function privatemsg_new($form, &$form_st
       '#type' => 'value',
       '#default_value' => $subject,
     );
-    $recipients_string_themed = implode(', ', $to);
-    $form['recipient_display'] = array(
-      '#markup' =>  '<p>'. t('<strong>Reply to thread</strong>:<br /> Recipients: !to', array('!to' => $recipients_string_themed)) .'</p>',
+    $form['reply'] = array(
+      '#markup' => '<h2>' . t('Reply') . '</h2>',
       '#weight' => -10,
     );
   }
@@ -459,7 +464,7 @@ function privatemsg_new_validate($form, 
     $message->recipients = _privatemsg_load_thread_participants($message->thread_id, $message->read_all ? FALSE : $message->author);
   }
 
-  $validated = _privatemsg_validate_message($message, TRUE, !isset($message->thread_id));
+  $validated = _privatemsg_validate_message($message, TRUE);
   foreach ($validated['messages'] as $type => $texts) {
     foreach ($texts as $text) {
       drupal_set_message($text, $type);
@@ -615,35 +620,33 @@ function privatemsg_user_name_autocomple
 function privatemsg_view($thread) {
   drupal_set_title($thread['subject']);
 
-  // Generate paging links.
-  $older = '';
-  if (isset($thread['older_start'])) {
-    $options = array(
-      'query' => array('start' => $thread['older_start']),
-      'title' => t('Display older messages'),
-    );
-     $older = l(t('<<'), 'messages/view/' . $thread['thread_id'], $options);
-  }
-  $newer = '';
-  if (isset($thread['newer_start'])) {
-    $options = array(
-      'query' => array('start' => $thread['newer_start']),
-      'title' => t('Display newer messages'),
+  if ($thread['to'] != $thread['message_count'] || !empty($thread['start'])) {
+    // Generate paging links.
+    $older = '';
+    if (isset($thread['older_start'])) {
+      $options = array(
+        'query' => array('start' => $thread['older_start']),
+        'title' => t('Display older messages'),
+      );
+       $older = l(t('<<'), 'messages/view/' . $thread['thread_id'], $options);
+    }
+    $newer = '';
+    if (isset($thread['newer_start'])) {
+      $options = array(
+        'query' => array('start' => $thread['newer_start']),
+        'title' => t('Display newer messages'),
+      );
+      $newer = l(t('>>'), 'messages/view/' . $thread['thread_id'], $options);
+    }
+    $substitutions = array('@from' => $thread['from'], '@to' => $thread['to'], '@total' => $thread['message_count'], '!previous_link' => $older, '!newer_link' => $newer);
+    $title = t('!previous_link Displaying messages @from - @to of @total !newer_link', $substitutions);
+    $content['pager'] = array(
+      '#markup'  => trim($title),
+      '#prefix' => '<div class="privatemsg-view-pager">',
+      '#suffix' => '</div>',
+      '#weight' => 3,
     );
-    $newer = l(t('>>'), 'messages/view/' . $thread['thread_id'], $options);
   }
-  $substitutions = array('@from' => $thread['from'], '@to' => $thread['to'], '@total' => $thread['message_count'], '!previous_link' => $older, '!newer_link' => $newer);
-  $title = t('!previous_link Displaying messages @from - @to of @total !newer_link', $substitutions);
-  $content['pager_top'] = array(
-    '#markup'  => trim($title),
-    '#prefix' => '<div class="privatemsg-view-pager">',
-    '#suffix' => '</div>',
-    '#weight' => -10,
-  );
-
-  // Display a copy at the end.
-  $content['pager_bottom'] = $content['pager_top'];
-  $content['pager_bottom']['#weight'] = 3;
 
   // Render the participants.
   $content['participants'] = array(
Index: privatemsg.test
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg.test,v
retrieving revision 1.2.2.1.2.36
diff -u -p -r1.2.2.1.2.36 privatemsg.test
--- privatemsg.test	13 Sep 2010 18:37:22 -0000	1.2.2.1.2.36
+++ privatemsg.test	3 Oct 2010 20:27:18 -0000
@@ -109,7 +109,7 @@ class PrivatemsgTestCase extends DrupalW
     $this->drupalGet('messages');
     $this->clickLink($subject_single);
 
-    $this->assertText(t('Displaying messages 1 - 1 of 1'), t('Pager is displayed'));
+    $this->assertNoText(t('Displaying messages 1 - 1 of 1'), t('Pager is displayed'));
     $this->assertNoText(t('&gt;&gt;'), t('Newer messages link not displayed.'));
     $this->assertNoText(t('&lt;&lt;'), t('Older messages link not displayed.'));
 
@@ -178,7 +178,7 @@ class PrivatemsgTestCase extends DrupalW
 
     // Load older messages and verify again.
     $this->clickLink(t('<<'));
-    $this->assertText(t('Displaying messages 1 - 23 of 23'), t('Pager is displayed'));
+    $this->assertNoText(t('Displaying messages 1 - 23 of 23'), t('Pager is displayed'));
     $this->assertText($bodies[0], t('Message is displayed.'));
     $this->assertText($bodies[22], t('Message is displayed.'));
     $this->assertNoText(t('&gt;&gt;'), t('Newer messages link not displayed.'));
@@ -189,7 +189,7 @@ class PrivatemsgTestCase extends DrupalW
 
     $this->drupalGet('messages');
     $this->clickLink($subject);
-    $this->assertText(t('Displaying messages 1 - 23 of 23'), t('Pager is displayed'));
+    $this->assertNoText(t('Displaying messages 1 - 23 of 23'), t('Pager is displayed'));
     $this->assertText($bodies[0], t('Message is displayed.'));
     $this->assertText($bodies[22], t('Message is displayed.'));
     $this->assertNoText(t('&gt;&gt;'), t('Newer messages link not displayed.'));
@@ -589,7 +589,7 @@ class PrivatemsgTestCase extends DrupalW
     $this->assertText($subject, 'Subject is displayed');
     $this->assertText($body1, 'First message is displayed');
     $this->assertText($body2, 'Second message is displayed');
-    $this->assertNoText(t('Delete message'), 'Delete message is link is not displayed for user without permission');
+    $this->assertNoLink(t('Delete'), 'Delete message is link is not displayed for user without permission');
 
     // Check if access for that user is denied.
     $this->drupalGet('messages/delete/' . $return['message']->thread_id . '/' . $return['message']->mid);
@@ -598,16 +598,16 @@ class PrivatemsgTestCase extends DrupalW
     // Check with user with delete access.
     $this->drupalLogin($recipient);
     $this->drupalGet('messages/view/' . $return['message']->thread_id);
-    $this->assertText(t('Delete message'), 'Delete message is link is displayed for user without permission');
+    $this->assertText(t('Delete'), 'Delete message is link is displayed for user without permission');
 
     // Click delete link of the second message and cancel.
-    $this->clickLink(t('Delete message'), 1);
+    $this->clickLink(t('Delete'), 1);
     $this->assertText(t('Are you sure you want to delete this message?'), 'Confirmation message displayed');
     $this->clickLink(t('Cancel'));
     $this->assertText($body2, 'Second message is still displayed');
 
     // Confirm message deletion.
-    $this->clickLink(t('Delete message'), 1);
+    $this->clickLink(t('Delete'), 1);
     $this->assertText(t('Are you sure you want to delete this message?'), 'Confirmation message displayed');
     $this->drupalPost(NULL, array(), t('Delete'));
     $this->assertText(t('Message has been deleted.'), 'Message has been deleted');
@@ -615,13 +615,13 @@ class PrivatemsgTestCase extends DrupalW
     $this->assertNoText($body2, 'Second message was deleted');
 
     // Click delete link of the first message and cancel.
-    $this->clickLink(t('Delete message'));
+    $this->clickLink(t('Delete'));
     $this->assertText(t('Are you sure you want to delete this message?'), 'Confirmation message displayed');
     $this->clickLink(t('Cancel'));
     $this->assertText($body1, 'First message is still displayed');
 
     // Confirm message deletion.
-    $this->clickLink(t('Delete message'));
+    $this->clickLink(t('Delete'));
     $this->assertText(t('Are you sure you want to delete this message?'), 'Confirmation message displayed');
     $this->drupalPost(NULL, array(), t('Delete'));
     $this->assertText(t('Message has been deleted.'), 'Message deleted has been deleted');
@@ -636,7 +636,7 @@ class PrivatemsgTestCase extends DrupalW
     // Test delete all checkbox.
     $this->drupalLogin($admin);
     $this->drupalGet('messages/view/' . $return['message']->thread_id);
-    $this->clickLink(t('Delete message'), 1);
+    $this->clickLink(t('Delete'), 1);
     $this->drupalPost(NULL, array('delete_options' => TRUE), t('Delete'));
     $this->assertText(t('Message has been deleted for all users.'), 'Message deleted has been deleted');
 
Index: pm_block_user/pm_block_user.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/pm_block_user/pm_block_user.module,v
retrieving revision 1.1.2.8.2.19
diff -u -p -r1.1.2.8.2.19 pm_block_user.module
--- pm_block_user/pm_block_user.module	18 Aug 2010 06:40:39 -0000	1.1.2.8.2.19
+++ pm_block_user/pm_block_user.module	3 Oct 2010 20:27:19 -0000
@@ -315,10 +315,10 @@ function pm_block_user_privatemsg_messag
 
   if ($user->uid <> $author->uid) {
     if ($vars['message']->is_blocked) {
-      $vars['message_actions']['unblock_author'] = array('title' => t('Unblock author'), 'href' => 'messages/block/'. $author->uid, 'query' => array('destination' => 'messages/view/' . $thread_id));
+      $vars['message_actions']['unblock_author'] = array('title' => t('Unblock'), 'href' => 'messages/block/' . $author->uid, 'query' => array('destination' => 'messages/view/' . $thread_id));
     }
     else {
-      $vars['message_actions']['block_author'] = array('title' => t('Block author'), 'href' => 'messages/block/'. $author->uid, 'query' => array('destination' => 'messages/view/' . $thread_id));
+      $vars['message_actions']['block_author'] = array('title' => t('Block'), 'href' => 'messages/block/' . $author->uid, 'query' => array('destination' => 'messages/view/' . $thread_id));
     }
   }
 }
Index: pm_block_user/pm_block_user.test
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/pm_block_user/pm_block_user.test,v
retrieving revision 1.1.2.11
diff -u -p -r1.1.2.11 pm_block_user.test
--- pm_block_user/pm_block_user.test	7 Sep 2010 13:54:11 -0000	1.1.2.11
+++ pm_block_user/pm_block_user.test	3 Oct 2010 20:27:19 -0000
@@ -43,12 +43,12 @@ class PrivatemsgBlockUserCase extends Dr
     $this->clickLink($subject);
 
     // Block user2.
-    $this->clickLink(t('Block author'));
+    $this->clickLink(t('Block'));
     $this->drupalPost(NULL, array(), t('Block @user', array('@user' => $user2->name)));
     $this->assertText(t('@user has been blocked from sending you any further messages.', array('@user' => $user2->name)), t('Confirmation message displayed'));
 
     // Block user3.
-    $this->clickLink(t('Block author'));
+    $this->clickLink(t('Block'));
     $this->drupalPost(NULL, array(), t('Block @user', array('@user' => $user3->name)));
     $this->assertText(t('@user has been blocked from sending you any further messages.', array('@user' => $user3->name)), t('Confirmation message displayed'));
 
@@ -89,7 +89,7 @@ class PrivatemsgBlockUserCase extends Dr
     $this->drupalGet('messages');
     $this->clickLink($subject);
 
-    $this->assertNoText(t('Block user'), t('No "Block user" links displayed.'));
+    $this->assertNoLink(t('Block'), t('No "Block user" links displayed.'));
 
     // Log in as user2 and try to send messages to user1.
     $this->drupalLogin($user2);
@@ -121,9 +121,9 @@ class PrivatemsgBlockUserCase extends Dr
     $this->drupalGet('messages');
     $this->clickLink($subject);
 
-    $this->assertText(t('Recipients: @user', array('@user' => $user3->name)), t('User1 is not displayed as recipient'));
     $edit = array('body[value]' => $reply = $this->randomName(50));
     $this->drupalPost(NULL, $edit, t('Send message'));
+    $this->assertText(t('@user has chosen to block messages from you.', array('@user' => $user1->name)));
     $this->assertText(t('A message has been sent to @user.', array('@user' => $user3->name)), t('Message sent to user 3'));
   
     // Login as user1 again and check that we didn't recieve the messages.
Index: styles/privatemsg-recipients.css
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/styles/privatemsg-recipients.css,v
retrieving revision 1.1.2.1.2.1
diff -u -p -r1.1.2.1.2.1 privatemsg-recipients.css
--- styles/privatemsg-recipients.css	22 Mar 2010 07:29:18 -0000	1.1.2.1.2.1
+++ styles/privatemsg-recipients.css	3 Oct 2010 20:27:19 -0000
@@ -1,5 +1,4 @@
 .privatemsg-message-participants {
-  border-bottom     : 1px solid #C5C5C5;
-  margin            : 0 0 0 250px; 
-
-}
\ No newline at end of file
+  border-bottom     : 2px solid #C5C5C5;
+  margin            : 0 0 20px 0; 
+}
Index: styles/privatemsg-view.css
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/styles/privatemsg-view.css,v
retrieving revision 1.1.2.2.2.5
diff -u -p -r1.1.2.2.2.5 privatemsg-view.css
--- styles/privatemsg-view.css	8 Sep 2010 23:17:31 -0000	1.1.2.2.2.5
+++ styles/privatemsg-view.css	3 Oct 2010 20:27:19 -0000
@@ -1,70 +1,57 @@
+/* $Id$ */
+
 .privatemsg-message {
-  text-align  : left;
+  width: 100%;
+  max-width: 1000px;
 }
-.privatemsg-author-column {
-  float       : left;
-  width       : 250px;
-}
-.privatemsg-message-column{
-  float       : left;
-  width       : 300px;
-}
-.privatemsg-author-column-left {
-  float       : left;
-  width       : 100px;
-}
-.privatemsg-author-column-right {
-  float       : left;
-  width       : 150px;
-  text-align  : right;
-}
-.privatemsg-message .privatemsg-author-avatar {
-  margin      : 5px;
-  text-align  : center;
-}
-.privatemsg-message .picture {
- float    : none; 
- padding  : 0 0 0 0;
+
+.privatemsg-author-avatar {
+  float: left;
+  width: 25%;
+  padding-top: 25px;
+  text-align: center;
 }
-.privatemsg-author-name {
-  margin      : 5px 15px 0px 0px;
-  font-size   : 11px;
-  font-weight : bold;
-} 
-.privatemsg-message-date {
-  color         : #777777;
-  font-size     : 9px;
-  margin        : 0px 15px 0pt 0pt;
-} 
-.clear-both {
-  clear       : both;
+
+.privatemsg-message-column {
+  float: right;
+  overflow: visible;
+  width: 73%;
 }
-.privatemsg-bottom-border {
+
+div.privatemsg-message-information {
   border-bottom: 1px solid #C5C5C5;
-  margin       : 0 0 10px 250px;
+  width: 100%;
+  margin-bottom: 5px;
 }
+
+.privatemsg-author-name {
+  font-weight: bold;
+  padding-right: 1em;
+  font-size: 80%;
+}
+.privatemsg-message-date {
+  color: #777777;
+  padding-right: 1em;
+  font-size: 80%;
+} 
 .privatemsg-message-body {
-  padding     : 0px;
-  margin      : 0 0 0 5px;
-  overflow    : auto;
+  padding : 0;
+  overflow : visible;
+  margin-left: 5px;
 }
 
-.privatemsg-message-actions li {
-  list-style-type:none;
-  float:left;
-  padding:5px;
-  background-image:none;
-  list-style-image: none;
+.privatemsg-view-pager {
+  margin: 20px 0 20px 0;
+  padding-left: 0;
+  max-width: 300px;
 }
 
-.privatemsg-view-pager {
-  margin: 20px 0 20px 200px;
-  padding-left: 10px;
-  width: 300px;
+div.privatemsg-message ul.privatemsg-message-actions {
+  padding: 0;
 }
 
 p.privatemsg-token-notice {
-  font-size: small;
+  font-size: 80%;
   font-style: italic;
 }
 
@@ -74,4 +61,4 @@ span.privatemsg-token-invalid {
 
 span.privatemsg-token-valid {
   font-weight: bold;
-}
\ No newline at end of file
+}
