Index: modules/cck/content.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/content.install,v
retrieving revision 1.12
diff -u -r1.12 content.install
--- modules/cck/content.install	19 Aug 2006 22:56:14 -0000	1.12
+++ modules/cck/content.install	23 Aug 2006 12:46:35 -0000
@@ -242,3 +242,20 @@
 
   return $ret;
 }
+
+function content_update_9() {
+  $ret = array();
+
+  switch ($GLOBALS['db_type']) {
+    case 'pgsql':
+      db_add_column($ret, 'node_field_instance', 'default_value', 'varchar', array('not null' => TRUE, 'default' => ''));
+      break;
+
+    case 'mysql':
+    case 'mysqli':
+      $ret[] = update_sql("ALTER TABLE {node_field_instance} ADD COLUMN default_value varchar(255) NOT NULL");
+      break;
+  }
+
+  return $ret;
+}
Index: modules/cck/content.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/content.module,v
retrieving revision 1.77
diff -u -r1.77 content.module
--- modules/cck/content.module	20 Aug 2006 19:34:09 -0000	1.77
+++ modules/cck/content.module	23 Aug 2006 12:25:08 -0000
@@ -720,7 +720,7 @@
       $type_result = db_query('SELECT * FROM {node_type_content} nt ORDER BY nt.type_name ASC');
       while ($type = db_fetch_array($type_result)) {
         $type['fields'] = array();
-        $field_result = db_query("SELECT nfi.field_name, nfi.weight, nfi.label, nfi.widget_type, nfi.widget_settings, nfi.description FROM {node_field_instance} nfi WHERE nfi.type_name = '%s' ORDER BY nfi.weight ASC, nfi.label ASC", $type['type_name']);
+        $field_result = db_query("SELECT nfi.field_name, nfi.weight, nfi.label, nfi.widget_type, nfi.widget_settings, nfi.description, nfi.default_value FROM {node_field_instance} nfi WHERE nfi.type_name = '%s' ORDER BY nfi.weight ASC, nfi.label ASC", $type['type_name']);
         while ($field = db_fetch_array($field_result)) {
           // Overwrite global field information with specific information
           $field = array_merge($info['fields'][$field['field_name']], $field);
@@ -736,6 +736,8 @@
           unset($field['label']);
           $field['widget']['description'] = $field['description'];
           unset($field['description']);
+          $field['widget']['default_value'] = $field['default_value'];
+          unset($field['default_value']);
           $field['type_name'] = $type['type_name'];
           $type['fields'][$field['field_name']] = $field;
         }
Index: modules/cck/content_admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/content_admin.inc,v
retrieving revision 1.21
diff -u -r1.21 content_admin.inc
--- modules/cck/content_admin.inc	20 Aug 2006 19:34:09 -0000	1.21
+++ modules/cck/content_admin.inc	23 Aug 2006 12:23:38 -0000
@@ -176,7 +176,7 @@
 
   if (isset($form_values['original_type_name'])) {
     // Duplicate the field structure from the old content type.
-    db_query("INSERT INTO {node_field_instance} (field_name, type_name, weight, label, widget_type, widget_settings, description) SELECT field_name, '%s', weight, label, widget_type, widget_settings, description FROM {node_field_instance} WHERE type_name = '%s'", $form_values['type_name'], $form_values['original_type_name']);
+    db_query("INSERT INTO {node_field_instance} (field_name, type_name, weight, label, widget_type, widget_settings, description, default_value) SELECT field_name, '%s', weight, label, widget_type, widget_settings, description, default_value FROM {node_field_instance} WHERE type_name = '%s'", $form_values['type_name'], $form_values['original_type_name']);
   }
 
   drupal_set_message(t('Saved content type %type.', array('%type' => $form_values['label'])));
@@ -383,7 +383,7 @@
     }
   }
 
-  $prior_instance = db_fetch_array(db_query("SELECT weight, label, widget_type, widget_settings, description FROM {node_field_instance} WHERE field_name = '%s'", $form_values['field_name']));
+  $prior_instance = db_fetch_array(db_query("SELECT weight, label, widget_type, widget_settings, description, default_value FROM {node_field_instance} WHERE field_name = '%s'", $form_values['field_name']));
   if (!$prior_instance) {
     $prior_instance = array();
     $prior_instance['weight'] = 0;
@@ -391,8 +391,9 @@
     $prior_instance['widget_type'] = '';
     $prior_instance['widget_settings'] = '';
     $prior_instance['description'] = '';
+    $prior_instance['default_value'] = '';
   }
-  db_query("INSERT INTO {node_field_instance} (field_name, type_name, weight, label, widget_type, widget_settings, description) VALUES ('%s', '%s', %d, '%s', '%s', '%s', '%s')", $form_values['field_name'], $form_values['type_name'], $prior_instance['weight'], $prior_instance['label'], $prior_instance['widget_type'], $prior_instance['widget_settings'], $prior_instance['description']);
+  db_query("INSERT INTO {node_field_instance} (field_name, type_name, weight, label, widget_type, widget_settings, description, default_value) VALUES ('%s', '%s', %d, '%s', '%s', '%s', '%s', '%s')", $form_values['field_name'], $form_values['type_name'], $prior_instance['weight'], $prior_instance['label'], $prior_instance['widget_type'], $prior_instance['widget_settings'], $prior_instance['description'], $prior_instance['default_value']);
 
   drupal_set_message(t('Added field %label.', array('%label' => $prior_instance['label'])));
   content_clear_type_cache();
@@ -423,7 +424,7 @@
 
   $field_widget_type = explode('-', $form_values['field_widget_type']);
   db_query("INSERT INTO {node_field} (field_name, type, global_settings, required, multiple, db_storage) VALUES ('%s', '%s', '%s', %d, %d, %d)", $field_name, $field_widget_type[0], serialize(array()), 0, 0, CONTENT_DB_STORAGE_PER_CONTENT_TYPE);
-  db_query("INSERT INTO {node_field_instance} (field_name, type_name, weight, label, widget_type, widget_settings, description) VALUES ('%s', '%s', %d, '%s', '%s', '%s', '%s')", $field_name, $form_values['type_name'], 0, $form_values['label'], $field_widget_type[1], serialize(array()), '');
+  db_query("INSERT INTO {node_field_instance} (field_name, type_name, weight, label, widget_type, widget_settings, description, default_value) VALUES ('%s', '%s', %d, '%s', '%s', '%s', '%s', '%s')", $field_name, $form_values['type_name'], 0, $form_values['label'], $field_widget_type[1], serialize(array()), '');
 
   content_clear_type_cache();
 
@@ -560,6 +561,12 @@
     '#description' => t('Instructions to present to the user below this field on the editing form.'),
     '#required' => FALSE,
   );
+  
+  $form['widget']['default_value'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Default value'),
+    '#default_value' => $field['widget']['default_value'],
+  );
 
   $form['field'] = array(
     '#type' => 'fieldset',
@@ -642,7 +649,7 @@
   $prev_field = $field;
   $prev_columns = module_invoke($field_type['module'], 'field_settings', 'database columns', $field);
 
-  db_query("UPDATE {node_field_instance} SET weight = %d, label = '%s', widget_type = '%s', widget_settings = '%s', description = '%s' WHERE type_name = '%s' AND field_name = '%s'", $form_values['weight'], $form_values['label'], $form_values['widget_type'], serialize($widget_settings), $form_values['description'], $form_values['type_name'], $form_values['field_name']);
+  db_query("UPDATE {node_field_instance} SET weight = %d, label = '%s', widget_type = '%s', widget_settings = '%s', description = '%s', default_value = '%s' WHERE type_name = '%s' AND field_name = '%s'", $form_values['weight'], $form_values['label'], $form_values['widget_type'], serialize($widget_settings), $form_values['description'], $field['default_value'], $form_values['type_name'], $form_values['field_name']);
 
   if ($form_values['multiple']) {
     $field['db_storage'] = CONTENT_DB_STORAGE_PER_FIELD;
Index: modules/cck/nodereference.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/nodereference.module,v
retrieving revision 1.33
diff -u -r1.33 nodereference.module
--- modules/cck/nodereference.module	19 Aug 2006 23:10:19 -0000	1.33
+++ modules/cck/nodereference.module	23 Aug 2006 12:39:19 -0000
@@ -127,7 +127,7 @@
         $form[$field['field_name']]['nids'] = array(
           '#type' => 'select',
           '#title' => t($field['widget']['label']),
-          '#default_value' => $node_field['default nids'],
+          '#default_value' => $node_field['default nids']isset($node_field['default nids']) ? $node_field['default nids'] : $field['widget']['default_value'],
           '#multiple' => $field['multiple'],
           '#options' => _nodereference_potential_references($field),
           '#required' => $field['required'],
@@ -170,7 +170,7 @@
                 '#type' => 'textfield',
                 '#title' => '',
                 '#autocomplete_path' => 'nodereference/autocomplete/'. $field['field_name'],
-                '#default_value' => $item['default node_name'],
+                '#default_value' => isset($item['default node_name']) ? $item['default node_name'] : $field['widget']['default_value'],
                 '#required' => ($delta == 0) ? $field['required'] : FALSE,
               );
               $delta++;
@@ -191,7 +191,7 @@
             '#type' => 'textfield',
             '#title' => t($field['widget']['label']),
             '#autocomplete_path' => 'nodereference/autocomplete/'. $field['field_name'],
-            '#default_value' => $node_field[0]['default node_name'],
+            '#default_value' => isset($node_field[0]['default node_name']) ? $node_field[0]['default node_name'] : $field['widget']['default_value'],
             '#required' => $field['required'],
             '#description' => $field['widget']['description'],
           );
Index: modules/cck/number.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/number.module,v
retrieving revision 1.32
diff -u -r1.32 number.module
--- modules/cck/number.module	13 Aug 2006 15:24:41 -0000	1.32
+++ modules/cck/number.module	23 Aug 2006 12:40:30 -0000
@@ -176,7 +176,7 @@
             $form[$field['field_name']][$delta]['value'] = array(
               '#type' => 'textfield',
               '#title' => '',
-              '#default_value' => $data['value'],
+              '#default_value' => isset($data['value']) ? $data['value'] : $field['widget']['default_value'],
               '#required' => ($delta == 0) ? $field['required'] : FALSE,
               '#maxlength' => 11,
             );
@@ -197,7 +197,7 @@
         $form[$field['field_name']][0]['value'] = array(
           '#type' => 'textfield',
           '#title' => t($field['widget']['label']),
-          '#default_value' => isset($node_field[0]['value']) ? $node_field[0]['value'] : '',
+          '#default_value' => isset($node_field[0]['value']) ? $node_field[0]['value'] : $field['widget']['default_value'],
           '#required' => $field['required'],
           '#description' => $field['widget']['description'],
           '#maxlength' => 11,
Index: modules/cck/optionwidgets.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/optionwidgets.module,v
retrieving revision 1.9
diff -u -r1.9 optionwidgets.module
--- modules/cck/optionwidgets.module	1 Aug 2006 01:16:58 -0000	1.9
+++ modules/cck/optionwidgets.module	23 Aug 2006 12:41:44 -0000
@@ -72,7 +72,7 @@
             $form[$field['field_name']]['keys'] = array(
               '#type' => 'select',
               '#title' => t($field['widget']['label']),
-              '#default_value' => $node_field['default keys'],
+              '#default_value' => isset($node_field['default keys']) ? $node_field['default keys'] : $field['widget']['default_value'],
               '#multiple' => TRUE,
               '#options' => $options,
               '#required' => $field['required'],
@@ -83,7 +83,7 @@
             $form[$field['field_name']]['key'] = array(
               '#type' => 'select',
               '#title' => t($field['widget']['label']),
-              '#default_value' => $node_field['default key'],
+              '#default_value' => isset($node_field['default key']) ? $node_field['default key'] : $field['widget']['default_value'],,
               '#multiple' => FALSE,
               '#options' => $options,
               '#required' => $field['required'],
@@ -97,7 +97,7 @@
             $form[$field['field_name']]['keys'] = array(
               '#type' => 'checkboxes',
               '#title' => t($field['widget']['label']),
-              '#default_value' => $node_field['default keys'],
+              '#default_value' => isset($node_field['default keys']) ? $node_field['default keys'] : $field['widget']['default_value'],,
               '#options' => $options,
               '#required' => $field['required'],
               '#description' => $field['widget']['description'],
@@ -107,7 +107,7 @@
             $form[$field['field_name']]['key'] = array(
               '#type' => 'radios',
               '#title' => t($field['widget']['label']),
-              '#default_value' => $node_field['default key'],
+              '#default_value' => isset($node_field['default key']) ? $node_field['default key'] : $field['widget']['default_value'],,
               '#options' => $options,
               '#required' => $field['required'],
               '#description' => $field['widget']['description'],
Index: modules/cck/text.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/text.module,v
retrieving revision 1.38
diff -u -r1.38 text.module
--- modules/cck/text.module	13 Aug 2006 15:24:41 -0000	1.38
+++ modules/cck/text.module	23 Aug 2006 12:43:07 -0000
@@ -211,7 +211,7 @@
               $form[$field['field_name']][$delta]['value'] = array(
                 '#type' => 'textfield',
                 '#title' => '',
-                '#default_value' => $data['value'],
+                '#default_value' => isset($data['value']) ? $data['value'] : $field['widget']['default_value'],
                 '#required' => ($delta == 0) ? $field['required'] : FALSE,
                 '#maxlength' => $field['max_length'] ? $field['max_length'] : '',
                 '#weight' => $field['widget']['weight'],
@@ -221,7 +221,7 @@
               $form[$field['field_name']][$delta]['value'] = array(
                 '#type' => 'textarea',
                 '#title' => '',
-                '#default_value' => $data['value'],
+                '#default_value' => isset($data['value']) ? $data['value'] : $field['widget']['default_value'],
                 '#required' => ($delta == 0) ? $field['required'] : FALSE,
                 '#rows' => $field['widget']['rows'],
                 '#weight' => $field['widget']['weight'],
@@ -264,7 +264,7 @@
           $form[$field['field_name']][0]['value'] = array(
             '#type' => 'textfield',
             '#title' => t($field['widget']['label']),
-            '#default_value' => isset($node_field[0]['value']) ? $node_field[0]['value'] : '',
+            '#default_value' => isset($node_field[0]['value']) ? $node_field[0]['value'] : $field['widget']['default_value'],
             '#required' => $field['required'],
             '#description' => $field['widget']['description'],
             '#maxlength' => $field['max_length'] ? $field['max_length'] : '',
@@ -275,7 +275,7 @@
           $form[$field['field_name']][0]['value'] = array(
             '#type' => 'textarea',
             '#title' => t($field['widget']['label']),
-            '#default_value' => $node_field[0]['value'],
+            '#default_value' => isset($node_field[0]['value']) ? $node_field[0]['value'] : $field['widget']['default_value'],
             '#required' => $field['required'],
             '#rows' => $field['widget']['rows'],
             '#description' => $field['widget']['description'],
Index: modules/cck/userreference.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/userreference.module,v
retrieving revision 1.28
diff -u -r1.28 userreference.module
--- modules/cck/userreference.module	19 Aug 2006 22:04:48 -0000	1.28
+++ modules/cck/userreference.module	23 Aug 2006 12:45:01 -0000
@@ -124,7 +124,7 @@
         $form[$field['field_name']]['uids'] = array(
           '#type' => 'select',
           '#title' => t($field['widget']['label']),
-          '#default_value' => $node_field['default uids'],
+          '#default_value' => isset($node_field['default uids']) ? $node_field['default uids'] : $field['widget']['field'],
           '#multiple' => $field['multiple'],
           '#options' => _userreference_potential_references($field),
           '#required' => $field['required'],
@@ -167,7 +167,7 @@
                 '#type' => 'textfield',
                 '#title' => '',
                 '#autocomplete_path' => 'user/autocomplete',
-                '#default_value' => $item['default user_name'],
+                '#default_value' => isset($item['default user_name']) ? $item['default user_name'] : $field['widget']['default_value'],
                 '#required' => ($delta == 0) ? $field['required'] : FALSE,
               );
               $delta++;
@@ -188,7 +188,7 @@
             '#type' => 'textfield',
             '#title' => t($field['widget']['label']),
             '#autocomplete_path' => 'user/autocomplete',
-            '#default_value' => $node_field[0]['default user_name'],
+            '#default_value' => isset($node_field[0]['default user_name']) ? $node_field[0]['default user_name'] : $field['widget']['default_value'],
             '#required' => $field['required'],
             '#description' => $field['widget']['description'],
           );
