Index: linkweights.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/linkweights/linkweights.admin.inc,v
retrieving revision 1.3
diff -u -r1.3 linkweights.admin.inc
--- linkweights.admin.inc	6 Dec 2010 04:16:16 -0000	1.3
+++ linkweights.admin.inc	14 Feb 2011 01:26:07 -0000
@@ -17,6 +17,14 @@
    * function node_get_types() used in ths case. It returns absolutly all.
    * Also added some usefull info columns in overview table:)
    */
+
+    $rows[] = array(
+      'linkweights_default',
+      'Linkweights',
+      'Set default link weights to apply to all node types that you have not configured individually',
+      l(t('edit'), 'admin/settings/linkweights/linkweights_default'),
+    );
+
   $node_types_info = node_get_types();
   foreach ($node_types_info as $node_type) {
     $rows[] = array(
@@ -36,8 +44,18 @@
  * @see drupal_get_form()
  */
 function linkweights_settings_form($form_state, $linkweights_nodetype) {
-  $sample = db_fetch_object(db_query_range("SELECT nid FROM {node} WHERE type='%s'", $linkweights_nodetype, 0, 1));
-  $links = module_invoke_all('link', 'node', node_load($sample->nid));
+  if ($linkweights_nodetype == 'linkweights_default') {
+    $links = array();
+    $node_types_info = node_get_types();
+    foreach ($node_types_info as $node_type) {
+      $sample = db_fetch_object(db_query_range("SELECT nid FROM {node} WHERE type='%s'", $node_type->type, 0, 1));
+      $links = array_merge($links, module_invoke_all('link', 'node', node_load($sample->nid)));
+    }
+  }
+  else {
+    $sample = db_fetch_object(db_query_range("SELECT nid FROM {node} WHERE type='%s'", $linkweights_nodetype, 0, 1));
+    $links = module_invoke_all('link', 'node', node_load($sample->nid));
+  }
   $form['nodetype'] = array('#type' => 'hidden', '#value' => $linkweights_nodetype);
   $form['#tree'] = TRUE;
   $form['links'] = array(
@@ -50,16 +68,29 @@
   while ($row = db_fetch_array($results)) {
     $stored_weight[$row['link']] = $row['weight'];
   }
+  $default_results = db_query("SELECT * FROM {linkweights} WHERE nodetype='%s'", 'linkweights_default');
+  while ($row = db_fetch_array($default_results)) {
+    $default_weight[$row['link']] = $row['weight'];
+  }
+
+
   foreach ($links as $linkname => $link) {
     $form['links'][$linkname]['weight']  = array(
       '#type' => 'weight',
       '#delta' => 50,
-      '#default_value' => (isset($stored_weight[$linkname])) ? $stored_weight[$linkname] : 0,
+      '#default_value' => isset($stored_weight[$linkname]) ? $stored_weight[$linkname] : (isset($default_weight[$linkname]) ? $default_weight[$linkname] : 0),
       '#title' => strip_tags($link['title']),
     );
     $form['links'][$linkname]['weight']['#attributes']['class'] = 'linkweights-weight';
   }
   uasort($form['links'], '_linkweights_link_cmp');
+
+  if ($linkweights_nodetype == 'linkweights_default') {
+    $form['delete_default'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Delete default weights.'),
+    );
+  }
   $form['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save configuration'),
@@ -84,8 +115,10 @@
  */
 function linkweights_settings_form_submit($form, &$form_state) {
   db_query("DELETE FROM {linkweights} WHERE nodetype='%s'", $form_state['values']['nodetype']);
-  foreach (element_children($form_state['values']['links']) as $val) {
-    db_query("INSERT INTO {linkweights} (nodetype, link, weight) VALUES('%s', '%s', %d)", $form_state['values']['nodetype'], $val, $form_state['values']['links'][$val]['weight']);
+  if ($form_state['values']['nodetype'] == 'linkweights_default' && !$form_state['values']['delete_default']) {
+    foreach (element_children($form_state['values']['links']) as $val) {
+      db_query("INSERT INTO {linkweights} (nodetype, link, weight) VALUES('%s', '%s', %d)", $form_state['values']['nodetype'], $val, $form_state['values']['links'][$val]['weight']);
+    }
   }
   // Built-in widely used string
   drupal_set_message(t('Configuration saved.'));
Index: linkweights.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/linkweights/linkweights.module,v
retrieving revision 1.4
diff -u -r1.4 linkweights.module
--- linkweights.module	6 Dec 2010 04:16:16 -0000	1.4
+++ linkweights.module	14 Feb 2011 01:17:29 -0000
@@ -67,7 +67,7 @@
  *
  */
 function linkweights_link_alter(&$links, $node) {
-  $lweights = db_query("SELECT * FROM {linkweights} WHERE nodetype='%s'", $node->type);
+  $lweights = linkweights_load_weights($node->type);
   //set default to 0
   foreach ($links as $link) {
     $links[$key]['weight'] = 0;
@@ -92,4 +92,17 @@
 
 function linkweights_nodetype_load($nodetype) {
   return $nodetype;
+}
+
+/*
+ * Helper function to load node type weights or default weights.
+ */
+function linkweights_load_weights($type) {
+  if ($count = db_result(db_query("SELECT nodetype FROM {linkweights} WHERE nodetype='%s' LIMIT 1", $type))) {
+    $result = db_query("SELECT * FROM {linkweights} WHERE nodetype='%s'", $type);
+  }
+  else {
+    $result = db_query("SELECT * FROM {linkweights} WHERE nodetype='%s'", 'linkweights_default');
+  }
+  return $result;
 }
\ No newline at end of file

