Index: twitter.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/twitter/twitter.install,v
retrieving revision 1.3.2.4
diff -u -p -r1.3.2.4 twitter.install
--- twitter.install	13 Feb 2010 20:32:26 -0000	1.3.2.4
+++ twitter.install	20 Jul 2010 19:42:41 -0000
@@ -689,6 +689,16 @@ function twitter_update_6300() {
 }
 
 
+/**
+ * Update new default_state variable to preserve existing settings.
+ */
+function twitter_update_6301() {
+  $default_seting = variable_get('twitter_default_state', NULL);
+  if ($default_setting === NULL) {
+    variable_set('twitter_post_default_state', 'create');
+  }
+}
+
 function twitter_uninstall() {
   // Remove tables.
   drupal_uninstall_schema('twitter');
Index: twitter_post/twitter_post.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/twitter/twitter_post/twitter_post.module,v
retrieving revision 1.1.2.1
diff -u -p -r1.1.2.1 twitter_post.module
--- twitter_post/twitter_post.module	25 Jan 2010 05:09:05 -0000	1.1.2.1
+++ twitter_post/twitter_post.module	20 Jul 2010 19:42:41 -0000
@@ -28,12 +28,50 @@ function twitter_post_menu() {
  * Implementation of hook_form_alter().
  */
 function twitter_post_form_alter(&$form, $form_state, $form_id) {
+  $allowed_types = variable_get('twitter_post_types', array('story' => 'story', 'blog' => 'blog'));
+
+  // Add per-content type settings to node type forms
+  if ($form_id == 'node_type_form') {
+    $type = $form['#node_type']->type;
+    if (empty($allowed_types[$type])) {
+      return;
+    }
+    $form['twitter'] = array(
+      '#type' => 'fieldset',
+      '#description' => t('Users with proper permissions will be given the option to post announcements to their Twitter accounts when they create new content. Editing the following fields will override the !twitter_admin.', array('!twitter_admin' => l('site defaults', 'admin/settings/twitter'))),
+      '#title' => 'Twitter settings',
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+      );
+
+    $form['twitter']['twitter_post_default_state'] = array(
+      '#type' => 'radios',
+      '#title' => t('Default post announcements'),
+      '#maxlength' => 140,
+      '#options' => array(
+        'default' => t('Use site default'),
+        FALSE => t('Disabled by default'),
+        'all' => t('Enabled by default'),
+        'create' => t('Enabled by default on create only'),
+        'update' => t('Enabled by default on update only'),
+        ),
+      '#default_value' => variable_get('twitter_post_default_state_' . $type, 'default'),
+    );
+
+    $form['twitter']['twitter_post_default_format'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Default format string'),
+      '#maxlength' => 140,
+      '#description' => t('The given text will be posted to twitter.com. You can use !url, !url-alias, !shorturl, !title and !author-name as placeholders. Leave blank to use the site default.'),
+      '#default_value' => variable_get('twitter_post_default_format_' . $type, ''),
+    );
+  }
+
   // Alter any node forms.
   if (isset($form['#node']) && $form['#node']->type .'_node_form' == $form_id) {
     // If we haven't enabled Twitter posting on this node type, nothing to do
     // here.
     $type = $form['#node']->type;
-    $allowed_types = variable_get('twitter_post_types', array('story' => 'story', 'blog' => 'blog'));
     if (empty($allowed_types[$type])) {
       return;
     }
@@ -51,14 +89,37 @@ function twitter_post_form_alter(&$form,
       '#collapsed' => FALSE,
       '#tree' => TRUE,
     );
+
+    $type_default = variable_get('twitter_post_default_state_' . $type, 'default');
+    $type_default = $type_default != 'default' ? $type_default
+      : variable_get('twitter_post_default_state', FALSE);
+    switch ($type_default) {
+      case 'all':
+        $post_default = TRUE;
+        break;
+      case 'create':
+        $post_default = empty($form['nid']['#value']);
+        break;
+      case 'update':
+        $post_default = !empty($form['nid']['#value']);
+        break;
+      case FALSE:
+      default:
+        $post_default = FALSE;
+        break;
+    }
+
     $form['twitter']['post'] = array(
       '#type' => 'checkbox',
       '#title' => t('Announce this post on Twitter'),
-      '#default_value' => (empty($form['nid']['#value'])),
+      '#default_value' => $post_default,
       '#id' => 'twitter-toggle',
     );
     $form['twitter'] += $twitter_form;
-    $form['twitter']['status']['#default_value'] = variable_get('twitter_post_default_format', 'New post: !title !tinyurl');
+    $default_format = variable_get('twitter_post_default_format_' . $type, FALSE);
+    $default_format = !empty($default_format) ? $default_format 
+      : variable_get('twitter_post_default_format', 'New post: !title !tinyurl');
+    $form['twitter']['status']['#default_value'] = $default_format;
     $form['twitter']['status']['#description'] = t('The given text will be posted to twitter.com. You can use !url, !url-alias, !tinyurl, !title and !user as replacement text.');
   }
 }
Index: twitter_post/twitter_post.pages.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/twitter/twitter_post/twitter_post.pages.inc,v
retrieving revision 1.1.2.1
diff -u -p -r1.1.2.1 twitter_post.pages.inc
--- twitter_post/twitter_post.pages.inc	25 Jan 2010 05:09:05 -0000	1.1.2.1
+++ twitter_post/twitter_post.pages.inc	20 Jul 2010 19:42:41 -0000
@@ -20,5 +20,19 @@ function twitter_post_admin_settings() {
     '#default_value' => variable_get('twitter_post_default_format', 'New post: !title !tinyurl'),
   );
 
+  $form['posting']['twitter_post_default_state'] = array(
+    '#type' => 'radios',
+    '#title' => t('Post announcement default'),
+    '#maxlength' => 140,
+    '#description' => t('Choose the default state for post announcements.'),
+    '#options' => array(
+      FALSE => t('Disabled by default'),
+      'all' => t('Enabled by default'),
+      'create' => t('Enabled by default on create only'),
+      'update' => t('Enabled by default on update only'),
+      ),
+    '#default_value' => variable_get('twitter_post_default_state', FALSE),
+  );
+
   return system_settings_form($form);  
 }
