Index: modules/node/content_types.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/node/content_types.inc,v retrieving revision 1.88 diff -u -r1.88 content_types.inc --- modules/node/content_types.inc 21 Aug 2009 00:21:48 -0000 1.88 +++ modules/node/content_types.inc 21 Aug 2009 06:09:27 -0000 @@ -186,13 +186,17 @@ '#default_value' => variable_get('node_submitted_' . $type->type, TRUE), '#description' => t('Enable the submitted by Username on date text.'), ); - $form['display']['teaser_length'] = array( - '#type' => 'select', - '#title' => t('Length of trimmed posts'), - '#default_value' => variable_get('teaser_length_' . $type->type, 600), - '#options' => drupal_map_assoc(array(0, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000), '_node_characters'), - '#description' => t("The maximum number of characters used in the trimmed version of content.") - ); + if ($type->has_body) { + $instance = field_info_instance('body', $type->type); + $summary_length = isset($instance['display']['teaser']['settings']['summary_length']) ? $instance['display']['teaser']['settings']['summary_length'] : 600; + $form['display']['teaser_length'] = array( + '#type' => 'select', + '#title' => t('Length of trimmed posts'), + '#default_value' => $summary_length, + '#options' => drupal_map_assoc(array(0, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000), '_node_characters'), + '#description' => t("The maximum number of characters used in the trimmed version of content.") + ); + } $form['old_type'] = array( '#type' => 'value', '#value' => $type->type, @@ -305,6 +309,7 @@ $type->custom = $form_state['values']['custom']; $type->modified = TRUE; $type->locked = $form_state['values']['locked']; + $type->summary_length = $form_state['values']['teaser_length']; if ($op == t('Delete content type')) { $form_state['redirect'] = 'admin/structure/node-type/' . str_replace('_', '-', $type->old_type) . '/delete'; Index: modules/node/node.module =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.module,v retrieving revision 1.1102 diff -u -r1.1102 node.module --- modules/node/node.module 20 Aug 2009 09:47:04 -0000 1.1102 +++ modules/node/node.module 21 Aug 2009 06:09:29 -0000 @@ -525,7 +525,7 @@ 'settings' => array('display_summary' => TRUE), // With no UI in core, we have to define default - // formatters for the teaser and full view. + // formatters for RSS, teaser and full view. // This may change if the method of handling displays // is changed or if a UI gets into core. 'display' => array( @@ -536,6 +536,12 @@ 'teaser' => array( 'label' => 'hidden', 'type' => 'text_summary_or_trimmed', + 'settings' => array('summary_length' => $type->summary_length), + ), + 'rss' => array( + 'label' => 'hidden', + 'type' => 'text_summary_or_trimmed', + 'settings' => array('summary_length' => $type->summary_length), ), ), ); @@ -544,6 +550,8 @@ else { $instance['label'] = $type->body_label; $instance['settings']['display_summary'] = TRUE; + $instance['display']['teaser']['settings']['summary_length'] = $type->summary_length; + $instance['display']['rss']['settings']['summary_length'] = $type->summary_length; field_update_instance($instance); } } @@ -665,6 +673,7 @@ $type->modified = 0; $type->locked = 1; $type->is_new = 1; + $type->summary_length = 600; } $new_type = clone $type; Index: modules/node/node.install =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.install,v retrieving revision 1.27 diff -u -r1.27 node.install --- modules/node/node.install 19 Aug 2009 22:46:05 -0000 1.27 +++ modules/node/node.install 21 Aug 2009 06:09:28 -0000 @@ -576,6 +576,26 @@ } /** + * Move summary length from variable table to the body field data. + */ +function node_update_7008() { + + // Get node type info for every invocation. + node_type_clear(); + $node_types = node_type_get_types(); + $body_types = array(); + $teaser_length = variable_get('teaser_length', 600); + foreach ($node_types as $type => $info) { + if ($info->has_body) { + $info->summary_length = variable_get('teaser_length_' . $info->type, $teaser_length); + node_type_save($info); + } + } + + return array(); +} + +/** * @} End of "defgroup updates-6.x-to-7.x" * The next series of updates should start at 8000. */ Index: modules/field/modules/text/text.module =================================================================== RCS file: /cvs/drupal/drupal/modules/field/modules/text/text.module,v retrieving revision 1.19 diff -u -r1.19 text.module --- modules/field/modules/text/text.module 20 Aug 2009 10:56:33 -0000 1.19 +++ modules/field/modules/text/text.module 21 Aug 2009 06:09:27 -0000 @@ -300,6 +300,7 @@ 'text_trimmed' => array( 'label' => t('Trimmed'), 'field types' => array('text', 'text_long', 'text_with_summary'), + 'settings' => array('summary_length' => 600), ), // The 'summary or trimmed' field formatter for text_with_summary @@ -309,6 +310,7 @@ 'text_summary_or_trimmed' => array( 'label' => t('Summary or trimmed'), 'field types' => array('text_with_summary'), + 'settings' => array('summary_length' => 600), ), ); } @@ -333,7 +335,8 @@ function theme_field_formatter_text_trimmed($element) { $field = field_info_field($element['#field_name']); $instance = field_info_instance($element['#field_name'], $element['#bundle']); - return text_summary($element['#item']['safe'], $instance['settings']['text_processing'] ? $element['#item']['format'] : NULL); + $size = $element['#settings']['summary_length']; + return text_summary($element['#item']['safe'], $instance['settings']['text_processing'] ? $element['#item']['format'] : NULL, $size); } /** @@ -350,7 +353,7 @@ return $element['#item']['safe_summary']; } else { - $size = variable_get('teaser_length_' . $element['#bundle'], 600); + $size = $element['#settings']['summary_length']; return text_summary($element['#item']['safe'], $instance['settings']['text_processing'] ? $element['#item']['format'] : NULL, $size); } }