From fea53f2516be9795b163fb6e5543ab3df2fad943 Mon Sep 17 00:00:00 2001
From: thewilkybarkid <chriswilkinson84@gmail.com>
Date: Fri, 2 May 2014 16:05:05 +0100
Subject: [PATCH] Use Smart Trim in teasers

---
 src/cambridge/cambridge.info    |  1 +
 src/cambridge/cambridge.install | 88 +++++++++++++++++++++++++++++++++
 src/cambridge/cambridge.make    |  3 ++
 3 files changed, 92 insertions(+)

diff --git a/src/cambridge/cambridge.info b/src/cambridge/cambridge.info
index 1d3eb5e..dbaba55 100644
--- a/src/cambridge/cambridge.info
+++ b/src/cambridge/cambridge.info
@@ -47,6 +47,7 @@ dependencies[] = pathauto
 dependencies[] = raven
 dependencies[] = realname
 dependencies[] = redirect
+dependencies[] = smart_trim
 dependencies[] = token
 dependencies[] = transliteration
 dependencies[] = views
diff --git a/src/cambridge/cambridge.install b/src/cambridge/cambridge.install
index 0f5a62f..58f440e 100644
--- a/src/cambridge/cambridge.install
+++ b/src/cambridge/cambridge.install
@@ -57,6 +57,36 @@ function cambridge_install() {
     field_create_instance($instance);
   }
 
+  // Use the Smart Trim module for teasers.
+
+  $smart_trimmed = array(
+    'label' => 'hidden',
+    'module' => 'smart_trim',
+    'settings' => array(
+      'more_link' => 0,
+      'more_text' => 'Read more',
+      'summary_handler' => 'full',
+      'trim_length' => 325,
+      'trim_options' => array(
+        'text' => 'text',
+      ),
+      'trim_suffix' => '...',
+      'trim_type' => 'chars',
+    ),
+    'type' => 'smart_trim_format',
+    'weight' => 0,
+  );
+
+  foreach (array('page', 'link') as $type) {
+    $instance = field_info_instance('node', 'body', $type);
+
+    foreach (array('teaser', 'news_listing_item', 'vertical_teaser', 'sidebar_teaser') as $mode) {
+      $instance['display'][$mode] = $smart_trimmed;
+    }
+
+    field_update_instance($instance);
+  }
+
   // Force a main-menu link on Basic Pages.
   variable_set('menu_force_page', TRUE);
 
@@ -291,3 +321,61 @@ function cambridge_update_7102() {
     throw new DrupalUpdateException('Failed to enabled Metatag modules');
   }
 }
+
+/**
+ * Use the Smart Trim module for teasers rather than Drupal's native trimming.
+ */
+function cambridge_update_7103() {
+  if (module_exists('smart_trim')) {
+    return;
+  }
+
+  if (FALSE === module_enable(array('smart_trim'))) {
+    throw new DrupalUpdateException('Failed to install Smart Trim module');
+  }
+
+  $smart_trimmed = array(
+    'label' => 'hidden',
+    'module' => 'smart_trim',
+    'settings' => array(
+      'more_link' => 0,
+      'more_text' => 'Read more',
+      'summary_handler' => 'full',
+      'trim_length' => 325,
+      'trim_options' => array(
+        'text' => 'text',
+      ),
+      'trim_suffix' => '...',
+      'trim_type' => 'chars',
+    ),
+    'type' => 'smart_trim_format',
+  );
+
+  foreach (array('page', 'link') as $type) {
+    // Make sure the body appears trimmed in teasers.
+
+    if (FALSE === node_type_get_name($type)) {
+      // Content type no longer exists.
+      continue;
+    }
+
+    $instance = field_info_instance('node', 'body', $type);
+
+    foreach (array('teaser', 'news_listing_item', 'vertical_teaser', 'sidebar_teaser') as $mode) {
+      if (
+        $instance['display'][$mode]['label'] !== 'hidden'
+        ||
+        $instance['display'][$mode]['type'] !== 'text_summary_or_trimmed'
+        ||
+        $instance['display'][$mode]['settings']['trim_length'] !== 600
+      ) {
+        // Display has been changed, so don't touch it.
+        continue;
+      }
+
+      $instance['display'][$mode] = array_merge($instance['display'][$mode], $smart_trimmed);
+    }
+
+    field_update_instance($instance);
+  }
+}
diff --git a/src/cambridge/cambridge.make b/src/cambridge/cambridge.make
index 9f59794..606bcf8 100644
--- a/src/cambridge/cambridge.make
+++ b/src/cambridge/cambridge.make
@@ -55,6 +55,9 @@ projects[redirect][subdir] = "patched"
 projects[redirect][patch][] = "http://drupal.org/files/redirect-prevent_circular_redirects-1817976-42.patch"
 projects[rules] = "2.6"
 projects[scheduler] = "1.2"
+projects[smart_trim][version] = "1.4"
+projects[smart_trim][subdir] = "patched"
+projects[smart_trim][patch][] = "http://drupal.org/files/issues/smart_trim_remove_punctuation_from_end_of_truncated_output-2169583-3.patch"
 projects[tac_lite] = "1.2"
 projects[transliteration] = "3.2"
 projects[varnish][version] = "1.0-beta2"
-- 
GitLab