Index: twitter/twitter.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/twitter/twitter.install,v retrieving revision 1.2.2.11 diff -u -p -r1.2.2.11 twitter.install --- twitter/twitter.install 23 Feb 2010 18:47:06 -0000 1.2.2.11 +++ twitter/twitter.install 24 Mar 2010 18:42:24 -0000 @@ -447,6 +447,16 @@ function twitter_update_6208() { return $ret; } +/** + * Update new default_state variable to preserve existing settings. + */ +function twitter_update_6209() { + $default_seting = variable_get('twitter_default_state', NULL); + if ($default_setting === NULL) { + variable_set('twitter_default_state', 'create'); + } +} + function twitter_uninstall() { // Remove tables. drupal_uninstall_schema('twitter'); Index: twitter/twitter.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/twitter/twitter.module,v retrieving revision 1.3.2.16 diff -u -p -r1.3.2.16 twitter.module --- twitter/twitter.module 23 Feb 2010 20:13:16 -0000 1.3.2.16 +++ twitter/twitter.module 24 Mar 2010 18:42:25 -0000 @@ -65,12 +65,50 @@ function twitter_theme() { * Implementation of hook_form_alter(). */ function twitter_form_alter(&$form, $form_state, $form_id) { + $allowed_types = variable_get('twitter_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_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_default_state_' . $type, 'default'), + ); + + $form['twitter']['twitter_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_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_types', array('story' => 'story', 'blog' => 'blog')); if (empty($allowed_types[$type])) { return; } @@ -88,14 +126,38 @@ function twitter_form_alter(&$form, $for '#collapsed' => FALSE, '#tree' => TRUE, ); + + $type_default = variable_get('twitter_default_state_' . $type, 'default'); + $type_default = $type_default != 'default' ? $type_default + : variable_get('twitter_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_default_format', 'New post: [title] [shorturl]'); + $default_format = variable_get('twitter_default_format_' . $type, FALSE); + $default_format = !empty($default_format) ? $default_format + : variable_get('twitter_default_format', 'New post: [title] [shorturl]'); + $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], [shorturl], [title] and [author-name] (as well as other tokens supplied by Token module) as placeholders.'); } } Index: twitter/twitter.pages.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/twitter/twitter.pages.inc,v retrieving revision 1.2.2.11 diff -u -p -r1.2.2.11 twitter.pages.inc --- twitter/twitter.pages.inc 23 Feb 2010 18:47:06 -0000 1.2.2.11 +++ twitter/twitter.pages.inc 24 Mar 2010 18:42:25 -0000 @@ -53,6 +53,20 @@ function twitter_admin_form() { '#description' => t('Users with proper permissions will be given the option to post announcements to their Twitter accounts when they create new content.'), ); + $form['posting']['twitter_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_default_state', FALSE), + ); + $form['posting']['twitter_types'] = array( '#type' => 'checkboxes', '#title' => t('Node types'),