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); }