Index: contributions/modules/feedapi_mapper/feedapi_mapper.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedapi_mapper/feedapi_mapper.module,v
retrieving revision 1.1.2.7.2.5
diff -u -p -r1.1.2.7.2.5 feedapi_mapper.module
--- contributions/modules/feedapi_mapper/feedapi_mapper.module	10 Oct 2008 18:14:04 -0000	1.1.2.7.2.5
+++ contributions/modules/feedapi_mapper/feedapi_mapper.module	12 Oct 2008 15:36:40 -0000
@@ -24,7 +24,7 @@ function feedapi_mapper_menu() {
     'page arguments' => array(1),
     'type' => MENU_LOCAL_TASK,
     'access callback' => 'user_access',
-    'access arguments' => array('administer feedapi'),
+    'access arguments' => array('advanced feedapi options'),
   );
   foreach (node_get_types() as $type) {
     $type_name = $type->type;
@@ -142,6 +142,10 @@ function feedapi_mapper_form($form_state
   if (!$mapping = _feedapi_mapper_load_mapping($node->nid )) {
     $mapping = _feedapi_mapper_load_mapping($node->type);
   }
+  // Show stored mapping no matter if elements aren't in the feed as retrieved at this time.
+  foreach ($mapping as $path => $path_mapping) {
+    $elements[implode('->', unserialize($path))] = $path;
+  }
 
   if ($merged_item) {
     $form['feed_item'] = array(
@@ -160,6 +164,12 @@ function feedapi_mapper_form($form_state
     '#type' => 'value',
     '#value' => ($node->nid ? $node->nid: $node->type),
   );
+  if ($node->nid) {
+    $form['type'] = array(
+      '#type' => 'value',
+      '#value' => $node->type,
+    );
+  } 
   // Pass on feed item elements.
   $form['elements'] = array('#type' => 'value', '#value' => $elements);
   // Print descriptions if there are any.
@@ -194,6 +204,14 @@ function feedapi_mapper_form($form_state
       '#default_value' => $mapping[$path],
     );
   }
+  if ($node->nid && user_access('administer feedapi')) {
+    $form['mapping_default'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Make this the default mapping for %type', array('%type' => $node->type)),
+      '#default_value' => FALSE,
+      '#description' => t('Will make this the mapping used by all nodes of the %type content type if they do not have their own mapping.', array('%type' => $node->type)),
+    );
+  }
   $form['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Update'),
@@ -206,6 +224,9 @@ function feedapi_mapper_form($form_state
  */
 function feedapi_mapper_form_submit($form, &$form_state) {
   _feedapi_mapper_store_mapping($form_state['values']['nid'], $form_state['values']['mapping'], $form_state['values']['elements']);
+  if ($form_state['values']['mapping_default'] == 1 && user_access('administer feedapi')) {
+    _feedapi_mapper_store_mapping($form_state['values']['type'], $form_state['values']['mapping'], $form_state['values']['elements']);
+  }
 }
 
 /**
@@ -555,7 +576,7 @@ function _feedapi_mapper_get_node_form($
 function _feedapi_mapper_get_field_names($node_type) {
   static $field_names;
   if (!is_array($field_names[$node_type])) {
-		$form = _feedapi_mapper_get_node_form($node_type);
+    $form = _feedapi_mapper_get_node_form($node_type);
 
     $node = (array)$form['#node'];
     $node['taxonomy'] = array();
@@ -600,4 +621,4 @@ function feedapi_mapper_theme() {
       'arguments' => array('descriptions'),
     ),
   );
-}
\ No newline at end of file
+}
