summaryrefslogtreecommitdiff
path: root/modules/node
diff options
context:
space:
mode:
Diffstat (limited to 'modules/node')
-rw-r--r--modules/node/content_types.inc8
-rw-r--r--modules/node/node.install20
-rw-r--r--modules/node/node.module6
-rw-r--r--modules/node/node.test12
4 files changed, 30 insertions, 16 deletions
diff --git a/modules/node/content_types.inc b/modules/node/content_types.inc
index e094ff3a9..aed87edf3 100644
--- a/modules/node/content_types.inc
+++ b/modules/node/content_types.inc
@@ -207,13 +207,6 @@ function node_type_form($form, &$form_state, $type = NULL) {
'#default_value' => variable_get('node_submitted_' . $type->type, TRUE),
'#description' => t('Author username and publish date will be displayed.'),
);
- $form['display']['teaser_length'] = array(
- '#type' => 'select',
- '#title' => t('Length of trimmed content'),
- '#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.")
- );
$form['old_type'] = array(
'#type' => 'value',
'#value' => $type->type,
@@ -451,7 +444,6 @@ function node_type_delete_confirm($form, &$form_state, $type) {
function node_type_delete_confirm_submit($form, &$form_state) {
node_type_delete($form_state['values']['type']);
- variable_del('teaser_length_' . $form_state['values']['type']);
variable_del('node_preview_' . $form_state['values']['type']);
$t_args = array('%name' => $form_state['values']['name']);
drupal_set_message(t('The content type %name has been deleted.', $t_args));
diff --git a/modules/node/node.install b/modules/node/node.install
index b5e10d6b0..cc3d8ee97 100644
--- a/modules/node/node.install
+++ b/modules/node/node.install
@@ -496,11 +496,29 @@ function node_update_7006(&$sandbox) {
->fields('node_type')
->execute();
+ $default_trim_length = variable_get('teaser_length', 600);
// Add body field instances for existing node types.
foreach ($result as $node_type) {
if ($node_type->has_body) {
- node_add_body_field($node_type, $node_type->body_label);
+ $instance = node_add_body_field($node_type, $node_type->body_label);
+ // Update newly created instance to convert teaser_length variable
+ // into formatter settings.
+ $trim_length = variable_get('teaser_length_' . $node_type->type, $default_trim_length);
+ $instance_changed = FALSE;
+ foreach ($instance['display'] as $view_mode => $view_mode_info) {
+ if ($view_mode_info['type'] == 'text_trimmed' || $view_mode_info['type'] == 'text_summary_or_trimmed') {
+ if (!isset($view_mode_info['settings']['trim_length'])) {
+ $instance['display'][$view_mode]['settings']['trim_length'] = $trim_length;
+ $instance_changed = TRUE;
+ }
+ }
+ }
+ if ($instance_changed) {
+ field_update_instance($instance);
+ }
+ variable_del('teaser_length_' . $node_type->type);
}
+ // Leave 'teaser_length' variable for aggregator module upgrade.
$sandbox['node_types_info'][$node_type->type] = array(
'has_body' => $node_type->has_body,
diff --git a/modules/node/node.module b/modules/node/node.module
index b0c3bb744..f32625b8e 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -555,6 +555,9 @@ function node_type_save($info) {
* A node type object.
* @param $label
* The label for the body instance.
+ *
+ * @return
+ * Body field instance.
*/
function node_add_body_field($type, $label = 'Body') {
// Add or remove the body field, as needed.
@@ -588,8 +591,9 @@ function node_add_body_field($type, $label = 'Body') {
),
),
);
- field_create_instance($instance);
+ $instance = field_create_instance($instance);
}
+ return $instance;
}
/**
diff --git a/modules/node/node.test b/modules/node/node.test
index f5d3aefe2..028275b3e 100644
--- a/modules/node/node.test
+++ b/modules/node/node.test
@@ -565,11 +565,11 @@ class SummaryLengthTestCase extends DrupalWebTestCase {
$expected = 'What is a Drupalism?';
$this->assertRaw($expected, t('Check that the summary is 600 characters in length'), 'Node');
- // Edit the teaser length for "Basic page" content type
- $edit = array (
- 'teaser_length' => 200,
- );
- $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type'));
+ // Change the teaser length for "Basic page" content type.
+ $instance = field_info_instance('node', 'body', $node->type);
+ $instance['display']['teaser']['settings']['trim_length'] = 200;
+ field_update_instance($instance);
+
// Attempt to access the front page again and check if the summary is now only 200 characters in length.
$this->drupalGet("node");
$this->assertNoRaw($expected, t('Check that the summary is not longer than 200 characters'), 'Node');
@@ -1072,7 +1072,7 @@ class NodeTypeTestCase extends DrupalWebTestCase {
$this->drupalGet('node/add/' . str_replace('_', '-', $type->name));
$this->assertResponse(200, 'The new content type can be accessed at node/add.');
-
+
// Create a content type via the user interface.
$web_user = $this->drupalCreateUser(array('bypass node access', 'administer content types'));
$this->drupalLogin($web_user);