Index: privatemsg.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg.admin.inc,v
retrieving revision 1.4.2.8
diff -u -p -r1.4.2.8 privatemsg.admin.inc
--- privatemsg.admin.inc	24 Jul 2010 09:20:45 -0000	1.4.2.8
+++ privatemsg.admin.inc	4 Oct 2010 19:14:32 -0000
@@ -21,6 +21,7 @@ function privatemsg_admin_settings() {
     '#title'         => t('Private message display template'),
     '#default_value' => variable_get('private_message_view_template', 'privatemsg-view'),
     '#options'       => privatemsg_view_options(),
+    '#weight'        => -10,
   );
   $form['display_settings']['privatemsg_display_loginmessage'] = array(
     '#type' => 'checkbox',
@@ -50,6 +51,13 @@ function privatemsg_admin_settings() {
     '#description' => t('Also redirect to the defined page when replying.'),
     '#weight'      => 1,
   );
+  $form['display_settings']['privatemsg_display_preview_button'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Show preview button on compose form'),
+    '#description' => t('If checked, displays a preview button when sending new messages.'),
+    '#default_value' => variable_get('privatemsg_display_preview_button', FALSE),
+    '#weight' => 5,
+  );
 
   $form['flush_deleted'] = array(
     '#type'        => 'fieldset',
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	4 Oct 2010 19:14:42 -0000
@@ -56,6 +56,10 @@ function privatemsg_permission() {
       'title' => t('Use tokens in private messages'),
       'description' => t("Allows user to use available tokens when sending private messages.")
     ),
+    'select text format for privatemsg' => array(
+      'title' => t('Select text format for private messages'),
+      'description' => t('Allows to choose the text format when sending private messages. Otherwise, the default is used.'),
+    ),
   );
 }
 
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	4 Oct 2010 19:14:44 -0000
@@ -372,6 +372,7 @@ function privatemsg_new($form, &$form_st
     '#default_value'      => $body,
     '#resizable'          => TRUE,
     '#format'             => isset($format) ? $format : NULL,
+    '#after_build'        => array('privatemsg_check_format_access'),
   );
   if (privatemsg_user_access('use tokens in privatemsg') && module_exists('token')) {
     $form['token'] = array(
@@ -381,12 +382,14 @@ function privatemsg_new($form, &$form_st
     );
   }
   $form['actions'] = array('#type' => 'actions');
-  $form['actions']['preview'] = array(
-    '#type'               => 'submit',
-    '#value'              => t('Preview message'),
-    '#submit'             => array('privatemsg_new_preview'),
-    '#weight'             => 48,
-  );
+  if (variable_get('privatemsg_display_preview_button', FALSE)) {
+    $form['actions']['preview'] = array(
+      '#type'               => 'submit',
+      '#value'              => t('Preview message'),
+      '#submit'             => array('privatemsg_new_preview'),
+      '#weight'             => 48,
+    );
+  }
   $form['actions']['submit'] = array(
     '#type'               => 'submit',
     '#value'              => t('Send message'),
@@ -437,6 +440,16 @@ function privatemsg_new($form, &$form_st
   return $form;
 }
 
+/**
+ * After build callback; Hide format widget if user doesn't have permission.
+ */
+function privatemsg_check_format_access($element) {
+  if (isset($element['format'])) {
+    $element['format']['#access'] = privatemsg_user_access('select text format for privatemsg');
+  }
+  return $element;
+}
+
 function privatemsg_new_validate($form, &$form_state) {
   // The actual message that is being sent, we create this during validation and
   // pass to submit to send out.
@@ -719,4 +732,4 @@ function privatemsg_load_recipients($mid
       ->condition('type', $recipient->type)
       ->execute();
   }
-}
\ No newline at end of file
+}
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	4 Oct 2010 19:14:48 -0000
@@ -201,7 +201,7 @@ class PrivatemsgTestCase extends DrupalW
    */
   function testWriteReplyPrivatemsg() {
     // Create a author and two recipients.
-    $author     = $this->drupalCreateUser(array('write privatemsg', filter_permission_name(filter_format_load(3))));
+    $author     = $this->drupalCreateUser(array('write privatemsg', 'select text format for privatemsg', filter_permission_name(filter_format_load(3))));
     $recipient  = $this->drupalCreateUser(array('read privatemsg'));
     $recipient2  = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
 
@@ -728,6 +728,9 @@ class PrivatemsgTestCase extends DrupalW
   function testPreview() {
     $user = $this->drupalCreateUser(array('read privatemsg', 'write privatemsg'));
 
+    // Enable preview button.
+    variable_set('privatemsg_display_preview_button', TRUE);
+
     $message = array(
       'recipient' => $user->name,
       'subject' => $this->randomName(),
@@ -826,6 +829,9 @@ class PrivatemsgFieldsTestCase extends D
     $this->drupalPost(NULL, array(), t('Save field settings'));
     $this->drupalPost(NULL, array(), t('Save settings'));
 
+    // Enable preview button.
+    variable_set('privatemsg_display_preview_button', TRUE);
+
     // Preview message.
     $message = array(
       'recipient' => $user->name,
@@ -882,6 +888,9 @@ class PrivatemsgFieldsTestCase extends D
     $this->drupalPost(NULL, array(), t('Save field settings'));
     $this->drupalPost(NULL, array(), t('Save settings'));
 
+    // Enable preview button.
+    variable_set('privatemsg_display_preview_button', TRUE);
+
     // Preview message.
     $message = array(
       'recipient' => $user->name,
@@ -1089,6 +1098,9 @@ class PrivatemsgTokenTestCase extends Dr
 
     $this->drupalLogin($author);
 
+    // Enable preview button.
+    variable_set('privatemsg_display_preview_button', TRUE);
+
     // Create message with tokens and preview it.
     $edit = array(
       'recipient'   => $recipient1->name . ', ' . $recipient2->name,
