--- modr8_orig.module	2008-10-21 14:14:08.000000000 +0000
+++ modr8.module	2009-06-05 15:29:33.000000000 +0000
@@ -104,7 +104,7 @@
  * Implementation of hook_perm().
  */
 function modr8_perm() {
-  return array('moderate content');
+  return array('moderate content','bypass moderation');
 }
 
 /**
@@ -126,9 +126,19 @@
     case 'prepare':
       if (!isset($node->nid)) {//a new node
         $node_options = variable_get('node_options_'. $node->type, array('status', 'promote'));
-        $node->moderate = in_array('moderate', $node_options);
+	$node->moderate = in_array('moderate', $node_options) && !user_access('bypass moderation');
       }
       break;
+
+    case 'submit':
+      if ($node->moderate && user_access('bypass moderation')) {
+        if (!user_access('administer nodes')) { // Don't reset for admins
+          $node->status = 1; // set the node to published.
+          $node->moderate = 0;
+        }
+      }
+      break;
+
     case 'view':
       if ($node->moderate && empty($node->modr8_form_teaser) && ($node->build_mode == NODE_BUILD_NORMAL) && ($teaser || $page)) {
         $node->content['modr8_message'] = array(
@@ -286,7 +296,9 @@
         drupal_set_message(t("The post has been submitted for moderation and won't be listed publicly until it has been approved."), 'warning');
         break;
       case 'node_form':
-        drupal_set_message(t('This %type will be submitted for moderation and will not be accessible to other users until it has been approved.', array('%type' => node_get_types('name', $nodetype))));
+        if (!user_access('bypass moderation')) {
+          drupal_set_message(t('This %type will be submitted for moderation and will not be accessible to other users until it has been approved.', array('%type' => node_get_types('name', $nodetype))));
+        }
         break;
     }
     return '';
