Index: feedapi_mapper.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedapi_mapper/feedapi_mapper.module,v
retrieving revision 1.1.2.7.2.14
diff -u -r1.1.2.7.2.14 feedapi_mapper.module
--- feedapi_mapper.module	7 Jan 2009 14:41:21 -0000	1.1.2.7.2.14
+++ feedapi_mapper.module	26 Jan 2009 14:29:31 -0000
@@ -197,6 +197,10 @@
   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(
@@ -213,8 +217,13 @@
   }
   $form['nid'] = array(
     '#type' => 'value',
-    '#value' => ($node->nid ? $node->nid: $node->type),
+    '#value' => $node->nid,
+  );
+  $form['content_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.
@@ -241,6 +250,14 @@
     '#collapsed' => FALSE,
     '#tree' => TRUE,
   );
+  if ($node->nid && user_access('administer feedapi')) {
+    $form['mapping']['mapping_default'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Make this the default mapping for %type', array('%type' => $node->type)),
+      '#default_value' => FALSE,
+      '#description' => t('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)),
+    );
+  }
   foreach ($elements as $element_name => $path) {
     $form['mapping'][$element_name] = array(
       '#type' => 'select',
@@ -260,7 +277,16 @@
  * Submit hook.
  */
 function feedapi_mapper_form_submit($form, &$form_state) {
-  _feedapi_mapper_store_mapping($form_state['values']['nid'], $form_state['values']['mapping'], $form_state['values']['elements']);
+  // Unset $form_state['values']['mapping']['mapping_default'] - otherwise it 
+  // will be mistaken as a mapping.
+  if (empty($form_state['values']['nid']) || $form_state['values']['mapping']['mapping_default'] == 1) {
+    unset($form_state['values']['mapping']['mapping_default']);
+    _feedapi_mapper_store_mapping($form_state['values']['content_type'], $form_state['values']['mapping'], $form_state['values']['elements']);
+  }
+  else {
+    unset($form_state['values']['mapping']['mapping_default']);
+    _feedapi_mapper_store_mapping($form_state['values']['nid'], $form_state['values']['mapping'], $form_state['values']['elements']);
+  }
 }
 
 /**
