Index: restricted_content.module
===================================================================
--- restricted_content.module	(.../trunk)	(revision 2570)
+++ restricted_content.module	(.../branches/rjabelman-add-defaults)	(revision 2580)
@@ -27,20 +27,54 @@
  * Implementation of hook_form_alter().
  */
 function restricted_content_form_alter(&$form, $form_state, $form_id) {
+
   if ($form_id == 'node_type_form') {
-    //restricted_content_node_form($form);
+    # Get any previously set defaults on this content type.
+    $default = unserialize(db_result(db_query("SELECT rids FROM {restricted_content_defaults} WHERE type = '%s'", $form['#node_type']->type)));   
+    restricted_content_node_type_form($form, $default);
   }
   elseif ($form['#id'] == 'node-form') {
     $default = unserialize(db_result(db_query("SELECT rids FROM {restricted_content} WHERE nid = %d", $form['nid']['#value'])));
+ 
+    # Check if we've got any existing values set.
+    # If we don't, look up the defaults for the type.
+    if(!is_array($default) || count($default) == 0) {
+      $default = unserialize(db_result(db_query("SELECT rids FROM {restricted_content_defaults} WHERE type = '%s'", $form['type']['#value'])));
+    }
+
     restricted_content_node_form($form, $default);
-    $form['#submit'][] = 'restricted_content_node_form_submit';
   }
 }
 
+function restricted_content_get_max_weight($form) {
+  # Find the max weight so we add our element at the bottom.
+  $maxweight = -999;
+  foreach($form as $name => $element) {
+    if(!is_array($element)) {
+       continue;
+    }
+
+    # Go for just before the submit button if we can.
+    if($name == 'submit') {
+      return $element['#weight'];
+    }
+
+    # Otherwise hold out for the end.
+    if(isset($element['#weight']) && $element['#weight'] > $maxweight) {
+      $maxweight = $element['#weight'];
+    }
+  }
+  return $maxweight;
+}
+
 /**
  * Option elements to add to node forms.
  */
 function restricted_content_node_form(&$form, $default) {
+
+  # Find the max weight so we add our element at the bottom.
+  $maxweight = restricted_content_get_max_weight($form);
+
   $form['restricted_content'] = array(
     '#type' => 'fieldset',
     '#title' => t('Restricted Access'),
@@ -48,6 +82,7 @@
     '#collapsed' => TRUE,
     '#tree' => TRUE,
     '#access' => restricted_content_form_access($form['uid']['#value']),
+    '#weight' => $maxweight - 1,
   );
   $form['restricted_content']['rids'] = array(
     '#type' => 'checkboxes',
@@ -59,6 +94,30 @@
   $form['#submit'][] = 'restricted_content_node_form_submit';
 }
 
+function restricted_content_node_type_form(&$form, $default) {
+
+  # Find the max weight so we add our element at the bottom.
+  $maxweight = restricted_content_get_max_weight($form, $default);
+  $form['restricted_content'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Restricted Access'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+    '#tree' => TRUE,
+    '#access' => restricted_content_form_access($form['uid']['#value']),
+    '#description' => 'Set the defaults for this content type. These can be overridden on the individual nodes.',
+    '#weight' => $maxweight - 1,
+  );
+  $form['restricted_content']['rids'] = array(
+    '#type' => 'checkboxes',
+    '#title' => t('Restrict access to users with the following user roles'),
+    '#description' => t('If no roles are selected, the node will be viewable by all users.'),
+    '#options' => user_roles(),
+    '#default_value' => is_array($default) ? $default : array(),
+  );
+  $form['#submit'][] = 'restricted_content_node_form_type_submit';
+}
+
 function restricted_content_node_form_submit($form, $form_state) {
   $nid = $form_state['values']['nid'];
   $rids = array_keys(array_filter($form_state['values']['restricted_content']['rids']));
@@ -68,6 +127,15 @@
   }
 }
 
+function restricted_content_node_form_type_submit($form, $form_state) {
+  $type = $form_state['values']['type'];
+  $rids = array_keys(array_filter($form_state['values']['restricted_content']['rids']));
+  db_query("DELETE FROM {restricted_content_defaults} WHERE type = '%s'", $type);
+  if ($rids) {
+    db_query("INSERT INTO {restricted_content_defaults} VALUES ('%s', '%s')", $type, serialize($rids));
+  }
+}
+
 function restricted_content_form_access($uid) {
   global $user;
   return user_access('restrict content access') || ($uid == $user->uid && user_access('restrict own content access'));
@@ -187,6 +255,9 @@
   if (!isset($defaults[$name])) {
     watchdog('restricted_conte', 'Default variable for %variable not found.', array('%variable' => $name), WATCHDOG_WARNING);
   }
-
+  
   return variable_get($name, isset($defaults[$name]) ? $defaults[$name] : NULL);
 }
+
+# variable_set('restricted_content_message','');
+# variable_set('restricted_content_message_anon', "This content is only available to registered users. Please <a href=\"/user/register\">sign up for an account</a> if you'd like to see it.");
Index: restricted_content.install
===================================================================
--- restricted_content.install	(.../trunk)	(revision 2570)
+++ restricted_content.install	(.../branches/rjabelman-add-defaults)	(revision 2580)
@@ -6,6 +6,7 @@
  */
 function restricted_content_install() {
   drupal_install_schema('restricted_content');
+  drupal_install_schema('restricted_content_defaults');
 }
 
 /**
@@ -13,6 +14,7 @@
  */
 function restricted_content_uninstall() {
   drupal_uninstall_schema('restricted_content');
+  drupal_uninstall_schema('restricted_content_defaults');
 
   drupal_load('module', 'restricted_content');
   $variables = restricted_content_variables();
@@ -41,5 +43,23 @@
     ),
     'primary key' => array('nid'),
   );
+
+  $schema['restricted_content_defaults'] = array(
+    'fields' => array(
+      'type' => array(
+        'type' => 'varchar',
+        'length' => 32,
+        'not null' => TRUE,
+        'default' => '',
+
+      ),
+      'rids' => array(
+        'type' => 'text',
+        'size' => 'medium',
+        'not null' => FALSE,
+      ),
+    ),
+    'primary key' => array('type') #, 32),
+  );
   return $schema;
 }
