diff --git a/README.md b/README.md index 537b8dc0f..509e26f8c 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,6 @@ In addition to the Express install profile, Express sites add functionality by e * [![Build Status](https://travis-ci.org/CuBoulder/express_localist_bundle.svg?branch=master)](https://travis-ci.org/CuBoulder/express_localist_bundle) [Localist Bundle](https://github.com/CuBoulder/express_localist_bundle) * [![Build Status](https://travis-ci.org/CuBoulder/express_mathjax_bundle.svg?branch=master)](https://travis-ci.org/CuBoulder/express_mathjax_bundle) [Mathjax Bundle](https://github.com/CuBoulder/express_mathjax_bundle) * [![Build Status](https://travis-ci.org/CuBoulder/cu_newsletter_bundle.svg?branch=master)](https://travis-ci.org/CuBoulder/cu_newsletter_bundle) [Newsletter Bundle](https://github.com/CuBoulder/cu_newsletter_bundle) -* [![Build Status](https://travis-ci.org/CuBoulder/cu_publications_bundle.svg?branch=master)](https://travis-ci.org/CuBoulder/cu_publications_bundle) [Publications Bundle](https://github.com/CuBoulder/cu_publications_bundle) * [![Build Status](https://travis-ci.org/CuBoulder/cu_section_page_bundle.svg?branch=master)](https://travis-ci.org/CuBoulder/cu_section_page_bundle) [Section Page Bundle](https://github.com/CuBoulder/cu_section_page_bundle) * [![Build Status](https://travis-ci.org/CuBoulder/express_responsive_visibility_bundle.svg?branch=master)](https://travis-ci.org/CuBoulder/express_responsive_visibility_bundle) [Responsive_Visibility_Bundle](https://github.com/CuBoulder/express_responsive_visibility_bundle) diff --git a/modules/custom/cu_alumni_class_notes_bundle/cu_alumni_class_notes_bundle.info b/modules/custom/cu_alumni_class_notes_bundle/cu_alumni_class_notes_bundle.info new file mode 100644 index 000000000..2be3b9a07 --- /dev/null +++ b/modules/custom/cu_alumni_class_notes_bundle/cu_alumni_class_notes_bundle.info @@ -0,0 +1,15 @@ +name = Alumni Class Notes +core = 7.x +package = Alumni Class Notes +description = The Class Note Bundle allows you to create alumni profiles to make it easy for your visitors to view and search for alums by year. +dependencies[] = cu_class_notes +bundle_group = addon_bundles +version = 7.x-1.1 +project = cu_alumni_class_notes_bundle +project status url = https://github.com/CuBoulder/cu_alumni_class_notes_bundle +project_demo_url = http://www.colorado.edu/webcentral/node/1502 + +bundle_roles[] = developer +bundle_roles[] = administrator +bundle_roles[] = site_owner +bundle_roles[] = configuration_manager diff --git a/modules/custom/cu_alumni_class_notes_bundle/cu_alumni_class_notes_bundle.module b/modules/custom/cu_alumni_class_notes_bundle/cu_alumni_class_notes_bundle.module new file mode 100644 index 000000000..01844ce8e --- /dev/null +++ b/modules/custom/cu_alumni_class_notes_bundle/cu_alumni_class_notes_bundle.module @@ -0,0 +1,62 @@ + array( + ), + 'authenticated user' => array( + ), + 'administrator' => array( + 'create class_note content', + 'delete any class_note content', + 'delete own class_note content', + 'edit any class_note content', + 'edit own class_note content', + ), + 'content_editor' => array( + 'create class_note content', + 'delete any class_note content', + 'delete own class_note content', + 'edit any class_note content', + 'edit own class_note content', + ), + 'developer' => array( + 'create class_note content', + 'delete any class_note content', + 'delete own class_note content', + 'edit any class_note content', + 'edit own class_note content', + ), + 'edit_my_content' => array( + 'delete own class_note content', + 'edit own class_note content', + ), + 'edit_only' => array( + 'edit own class_note content', + ), + 'site_editor' => array( + 'create class_note content', + 'delete any class_note content', + 'delete own class_note content', + 'edit any class_note content', + 'edit own class_note content', + ), + 'site_owner' => array( + 'create class_note content', + 'delete any class_note content', + 'delete own class_note content', + 'edit any class_note content', + 'edit own class_note content', + ), + ); + + if (isset($permissions[$role])) { + return $permissions[$role]; + } +} diff --git a/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/config.rb b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/config.rb new file mode 100644 index 000000000..655458ed5 --- /dev/null +++ b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/config.rb @@ -0,0 +1,14 @@ +# Require any additional compass plugins here. + +# Set this to the root of your project when deployed: +css_dir = "css" +sass_dir = "scss" + +output_style = :compact + +relative_assets = true + +line_comments = false +color_output = false + +cache = false diff --git a/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/css/cu-class-notes.css b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/css/cu-class-notes.css new file mode 100644 index 000000000..09b21dc2e --- /dev/null +++ b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/css/cu-class-notes.css @@ -0,0 +1,17 @@ +.class-note-single p:last-child { margin-bottom: 0; } + +.class-note-year a:link, .class-note-year a:visited { font-size: 200%; font-weight: 700; color: #959595; margin-bottom: 10px; } + +.class-note-year a:hover, .class-note-year a:focus { color: #333; } + +.container-inline .classnotes-view-all { font-size: 85%; display: block; } + +.classnotes-filter label, .classnotes-sort label, .classnotes-markup { font-size: 85%; font-weight: 600; } + +.class-note-posted-date { font-size: 75%; } + +.class-note-single a.edit-link { float: right; } + +#cu-class-notes-filter-form .fieldset-wrapper { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; } +#cu-class-notes-filter-form .fieldset-wrapper > * { padding: 5px; } +@media screen and (min-width: 960px) { #cu-class-notes-filter-form .fieldset-wrapper .classnotes-view-all { flex-grow: 1; text-align: right; } } diff --git a/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.features.field_base.inc b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.features.field_base.inc new file mode 100644 index 000000000..8c5ad4c9a --- /dev/null +++ b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.features.field_base.inc @@ -0,0 +1,37 @@ + 1, + 'cardinality' => 1, + 'deleted' => 0, + 'entity_types' => array(), + 'field_name' => 'field_class_note_class_year', + 'indexes' => array( + 'value' => array( + 0 => 'value', + ), + ), + 'locked' => 0, + 'module' => 'list', + 'settings' => array( + 'allowed_values' => array(), + 'allowed_values_function' => '_cu_class_notes_class_years', + 'allowed_values_php' => '', + ), + 'translatable' => 0, + 'type' => 'list_integer', + ); + + return $field_bases; +} diff --git a/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.features.field_instance.inc b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.features.field_instance.inc new file mode 100644 index 000000000..309e31938 --- /dev/null +++ b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.features.field_instance.inc @@ -0,0 +1,103 @@ + 'class_note', + 'default_value' => NULL, + 'deleted' => 0, + 'description' => '', + 'display' => array( + 'default' => array( + 'label' => 'hidden', + 'module' => 'text', + 'settings' => array(), + 'type' => 'text_default', + 'weight' => 0, + ), + 'teaser' => array( + 'label' => 'hidden', + 'module' => 'text', + 'settings' => array( + 'trim_length' => 600, + ), + 'type' => 'text_summary_or_trimmed', + 'weight' => 0, + ), + ), + 'entity_type' => 'node', + 'field_name' => 'body', + 'label' => 'Body', + 'required' => FALSE, + 'settings' => array( + 'display_summary' => TRUE, + 'text_processing' => 1, + 'user_register_form' => FALSE, + ), + 'widget' => array( + 'module' => 'text', + 'settings' => array( + 'rows' => 20, + 'summary_rows' => 5, + ), + 'type' => 'text_textarea_with_summary', + 'weight' => 3, + ), + ); + + // Exported field_instance: 'node-class_note-field_class_note_class_year' + $field_instances['node-class_note-field_class_note_class_year'] = array( + 'bundle' => 'class_note', + 'default_value' => NULL, + 'default_value_function' => '', + 'default_value_php' => '', + 'deleted' => 0, + 'description' => '', + 'display' => array( + 'default' => array( + 'label' => 'above', + 'module' => 'list', + 'settings' => array(), + 'type' => 'list_default', + 'weight' => 1, + ), + 'teaser' => array( + 'label' => 'above', + 'settings' => array(), + 'type' => 'hidden', + 'weight' => 0, + ), + ), + 'entity_type' => 'node', + 'fences_wrapper' => 'no_wrapper', + 'field_name' => 'field_class_note_class_year', + 'label' => 'Class Year', + 'required' => 1, + 'settings' => array( + 'user_register_form' => FALSE, + ), + 'widget' => array( + 'active' => 1, + 'module' => 'options', + 'settings' => array(), + 'type' => 'options_select', + 'weight' => 4, + ), + ); + + // Translatables + // Included for use with string extractors like potx. + t('Body'); + t('Class Year'); + + return $field_instances; +} diff --git a/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.features.inc b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.features.inc new file mode 100644 index 000000000..e68c8f3bf --- /dev/null +++ b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.features.inc @@ -0,0 +1,32 @@ + "1"); + } +} + +/** + * Implements hook_node_info(). + */ +function cu_class_notes_node_info() { + $items = array( + 'class_note' => array( + 'name' => t('Class Note'), + 'base' => 'node_content', + 'description' => '', + 'has_title' => '1', + 'title_label' => t('Title'), + 'help' => '', + ), + ); + drupal_alter('node_info', $items); + return $items; +} diff --git a/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.info b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.info new file mode 100644 index 000000000..01ae24d2c --- /dev/null +++ b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.info @@ -0,0 +1,22 @@ +name = Class Notes +core = 7.x +package = Alumni Class Notes +description = Content type and displays of class note content +dependencies[] = ctools +dependencies[] = features +dependencies[] = list +dependencies[] = options +dependencies[] = strongarm +dependencies[] = text +features[ctools][] = strongarm:strongarm:1 +features[features_api][] = api:2 +features[field_base][] = field_class_note_class_year +features[field_instance][] = node-class_note-body +features[field_instance][] = node-class_note-field_class_note_class_year +features[node][] = class_note +features[variable][] = field_bundle_settings_node__class_note +features[variable][] = menu_options_class_note +features[variable][] = menu_parent_class_note +features[variable][] = node_options_class_note +features[variable][] = node_preview_class_note +features[variable][] = node_submitted_class_note diff --git a/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.module b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.module new file mode 100644 index 000000000..48b526777 --- /dev/null +++ b/modules/custom/cu_alumni_class_notes_bundle/cu_class_notes/cu_class_notes.module @@ -0,0 +1,552 @@ + TRUE, + 'title' => 'Class Notes', + 'page callback' => 'cu_class_notes_archive', + ); + // Class notes ordered descending by created date + $items['classnotes/recent'] = array( + 'access callback' => TRUE, + 'title' => 'Recent Class Notes', + 'page callback' => 'cu_class_notes_archive_recent', + ); + // Class notes filtered by created date + // classnotes/added/YYYY-MM-DD/YYYY-MM-DD + $items['classnotes/added/%/%'] = array( + 'access callback' => TRUE, + 'title' => 'Class Notes', + 'page callback' => 'cu_class_notes_archive_added', + 'page arguments' => array(2,3), + ); + // Class notes filtered by created date range and class year + // classnotes/added/YYYY-MM-DD/YYYY-MM-DD/year/YYYY + $items['classnotes/added/%/%/year/%'] = array( + 'access callback' => TRUE, + 'title' => 'Class Notes', + 'page callback' => 'cu_class_notes_archive_added_year', + 'page arguments' => array(2,3,5), + 'title callback' => 'cu_class_notes_archive_year_title', + 'title arguments' => array(5), + ); + // Class notes filteed by created date range and class year range + // classnotes/added/YYYY-MM-DD/YYYY-MM-DD/year/YYYY/YYYY + $items['classnotes/added/%/%/year/%/%'] = array( + 'access callback' => TRUE, + 'title' => 'Class Notes', + 'page callback' => 'cu_class_notes_archive_added_year', + 'page arguments' => array(2,3,5,6), + 'title callback' => 'cu_class_notes_archive_year_title', + 'title arguments' => array(5,6), + ); + // Class notes filtered by year + // classnotes/year/YYYY + $items['classnotes/year/%'] = array( + 'access callback' => TRUE, + 'title' => 'Class Notes', + 'page callback' => 'cu_class_notes_archive_year', + 'page arguments' => array(2), + 'title callback' => 'cu_class_notes_archive_year_title', + 'title arguments' => array(2), + ); + // Class notes filtered by class year range + // classnotes/years/YYYY/YYYY + $items['classnotes/years'] = array( + 'access callback' => TRUE, + 'title' => 'Class Notes', + 'page callback' => 'cu_class_notes_archive_year', + 'title callback' => 'cu_class_notes_archive_year_title', + ); + return $items; +} + +/** + * Title callback function. + */ +function cu_class_notes_archive_year_title($arg2 = NULL, $arg3 = NULL) { + if (arg(0) == 'classnotes') { + $year1 =(int) $arg2; + $year2 =(int) $arg3; + + // Make sure values are numeric + if ($year1) { + $parts = array(); + $prefix = 'Notes from the Class of '; + $parts[] = $year1; + if ($year2) { + $prefix = 'Notes from the Classes of '; + $parts[] = '-'; + $parts[] = $year2; + } + $title = $prefix . join('', $parts); + } else { + $title = 'Class Notes'; + } + drupal_set_title($title); + } +} + +/** + * Callback function for classnotes. + * Show class notes by class year. + */ +function cu_class_notes_archive() { + $output = array(); + + // Class year filter form. + $output['filter'] = drupal_get_form('cu_class_notes_filter_form', 'class'); + $output['filter']['#weight'] = -100; + + // Start query. + $query = db_select('node', 'n'); + $query = $query->extend('PagerDefault')->limit(20); + $query->condition('n.type', 'class_note', '='); + $query->condition('n.status', 1, '='); + $query->fields('n', array('nid', 'title', 'sticky', 'created')); + + // Join class year field + $query->join("field_data_field_class_note_class_year", "year", "n.nid = year.entity_id"); + $query->fields('year', array('field_class_note_class_year_value')); + + $query->orderBy('field_class_note_class_year_value', 'ASC'); + $query->orderBy('created', 'DESC'); + $nids = $query->execute()->fetchCol(); + $nodes = node_load_multiple($nids); + foreach ($nodes as $nid => $node) { + $output[] = cu_class_notes_node_output($node, $year1 = NULL, $year2 = NULL); + $output['#sorted'] = TRUE; + } + $output['pager'] = array( + '#theme' => 'pager', + '#tags' => array(), + '#weight' => 100, + ); + $output['#sorted'] = TRUE; + return $output; +} + +/** + * Callback function for classnotes/recent. + * Show class notes by recently added. + */ +function cu_class_notes_archive_recent() { + $output = array(); + + // Class year filter form. + $output['filter'] = drupal_get_form('cu_class_notes_filter_form', 'created'); + $output['filter']['#weight'] = -100; + + // Start query. + $query = db_select('node', 'n'); + $query = $query->extend('PagerDefault')->limit(20); + $query->condition('n.type', 'class_note', '='); + $query->condition('n.status', 1, '='); + $query->fields('n', array('nid', 'title', 'sticky', 'created')); + $query->orderBy('created', 'DESC'); + $nids = $query->execute()->fetchCol(); + $nodes = node_load_multiple($nids); + foreach ($nodes as $nid => $node) { + $output[] = cu_class_notes_node_output($node, $year1 = NULL, $year2 = NULL); + $output['#sorted'] = TRUE; + } + $output['pager'] = array( + '#theme' => 'pager', + '#tags' => array(), + '#weight' => 100. + ); + return $output; +} + +/** + * Callback function for classnotes/recent. + * Show class notes by recently added. + */ +function cu_class_notes_archive_added($date1, $date2) { + $output = array(); + + // Class year filter form. + $output['filter'] = drupal_get_form('cu_class_notes_filter_form', 'class'); + $output['filter']['#weight'] = -100; + + // Convert dates + $dates = array(); + $dates[] = strtotime($date1); + $dates[] = strtotime($date2); + + // Class year filter form, adding created date range arguments. + $output['filter'] = drupal_get_form('cu_class_notes_filter_range_form', array($date1, $date2)); + $output['filter']['#weight'] = -100; + + // Start query. + $query = db_select('node', 'n'); + $query = $query->extend('PagerDefault')->limit(20); + $query->condition('n.type', 'class_note', '='); + $query->condition('n.status', 1, '='); + $query->fields('n', array('nid', 'title', 'sticky', 'created')); + + // Join class year field + $query->join("field_data_field_class_note_class_year", "year", "n.nid = year.entity_id"); + $query->fields('year', array('field_class_note_class_year_value')); + // Get only notes created within date range + $query->condition('created', $dates, 'BETWEEN'); + $query->orderBy('field_class_note_class_year_value', 'ASC'); + $query->orderBy('created', 'DESC'); + $nids = $query->execute()->fetchCol(); + $nodes = node_load_multiple($nids); + foreach ($nodes as $nid => $node) { + $output[] = cu_class_notes_node_output($node, $year1 = NULL, $year2 = NULL); + $output['#sorted'] = TRUE; + } + $output['pager'] = array( + '#theme' => 'pager', + '#tags' => array(), + '#weight' => 100. + ); + return $output; +} + +/** + * Callback function for classnotes/recent. + * Show class notes by recently added. + */ +function cu_class_notes_archive_added_year($date1, $date2, $year_arg_1 = NULL, $year_arg_2 = NULL) { + $output = array(); + + // Class year filter form. + $output['filter'] = drupal_get_form('cu_class_notes_filter_form', 'class'); + $output['filter']['#weight'] = -100; + + // Convert dates + $dates = array(); + $dates[] = strtotime($date1); + $dates[] = strtotime($date2); + + $year1 =(int) $year_arg_1; + $year2 =(int) $year_arg_2; + + // Start query. + $query = db_select('node', 'n'); + $query = $query->extend('PagerDefault')->limit(20); + $query->condition('n.type', 'class_note', '='); + $query->condition('n.status', 1, '='); + $query->fields('n', array('nid', 'title', 'sticky', 'created')); + + // Join class year field + $query->join("field_data_field_class_note_class_year", "year", "n.nid = year.entity_id"); + $query->fields('year', array('field_class_note_class_year_value')); + if ($year2) { + $years = array(); + $years[] = $year1; + $years[] = $year2; + $query->condition('year.field_class_note_class_year_value', $years, 'BETWEEN'); + } else { + $query->condition('year.field_class_note_class_year_value', $year1, '='); + } + // Get only notes created within date range + $query->condition('created', $dates, 'BETWEEN'); + $query->orderBy('field_class_note_class_year_value', 'ASC'); + $query->orderBy('created', 'DESC'); + print $query; + $nids = $query->execute()->fetchCol(); + $nodes = node_load_multiple($nids); + foreach ($nodes as $nid => $node) { + $output[] = cu_class_notes_node_output($node, $year1, $year2); + $output['#sorted'] = TRUE; + } + $output['pager'] = array( + '#theme' => 'pager', + '#tags' => array(), + '#weight' => 100. + ); + return $output; +} + + +/** + * Callback function for classnotes/year/%. + * Show class notes for a given year. + */ +function cu_class_notes_archive_year($arg2 = NULL, $arg3 = NULL) { + $sort = (arg(3) == 'recent') ? TRUE : FALSE; + $year1 =(int) $arg2; + $year2 =(int) $arg3; + $output = array(); + + // Class year filter form. + $output['filter'] = drupal_get_form('cu_class_notes_filter_form', 'class'); + $output['filter']['#weight'] = -100; + + // Start query. + $query = db_select('node', 'n'); + $query = $query->extend('PagerDefault')->limit(20); + $query->condition('n.type', 'class_note', '='); + $query->condition('n.status', 1, '='); + $query->fields('n', array('nid', 'title', 'sticky', 'created')); + + // Join class year field + $query->join("field_data_field_class_note_class_year", "year", "n.nid = year.entity_id"); + $query->fields('year', array('field_class_note_class_year_value')); + if ($year2) { + $years = array(); + $years[] = $year1; + $years[] = $year2; + $query->condition('year.field_class_note_class_year_value', $years, 'BETWEEN'); + } else { + $query->condition('year.field_class_note_class_year_value', $year1, '='); + } + $query->orderBy('field_class_note_class_year_value', 'ASC'); + if ($sort) { + $query->orderBy('created', 'DESC'); + } + else { + $query->orderBy('created', 'ASC'); + } + $nids = $query->execute()->fetchCol(); + $nodes = node_load_multiple($nids); + if (!$nodes) { + $output['no_results']['#markup'] = '
There are no class notes for that year.
'; + return $output; + } + foreach ($nodes as $nid => $node) { + $output[] = cu_class_notes_node_output($node, $year1, $year2 = NULL); + $output['#sorted'] = TRUE; + } + $output['pager'] = array( + '#theme' => 'pager', + '#tags' => array(), + '#weight' => 100. + ); + return $output; +} + +/** + * Output for class note nodes. + */ +function cu_class_notes_node_output($node, $year1, $year2) { + // Get body field + $field = field_get_items('node', $node, 'body'); + $content = field_view_value('node', $node, 'body', $field[0]); + // Get class year field + $field = field_get_items('node', $node, 'field_class_note_class_year'); + $year = field_view_value('node', $node, 'field_class_note_class_year', $field[0]); + // Build note output + $nid = $node->nid; + // Don't show year if the list of notes is filtered to a single year. + if (isset($year2) || (!isset($year1) && !isset($year2))) { + $output[$nid]['year']['#markup'] = l($year['#markup'], 'classnotes/year/' . $year['#markup']); + $output[$nid]['year']['#prefix'] = '', + '#suffix' => '
', + ); + + $form['html_title_allowed_elements'] = array( + '#type' => 'checkboxes', + '#title' => t('Available tags'), + '#default_value' => variable_get('html_title_allowed_elements', array('em', 'sub', 'sup')), + '#options' => array( + 'abbr' => check_plain(''), + 'b' => check_plain(''), + 'bdi' => check_plain(''), + 'cite' => check_plain(''), + 'code' => check_plain(''),
+ 'em' => check_plain(''),
+ 'i' => check_plain(''),
+ 'strong' => check_plain(''),
+ 'sub' => check_plain(''),
+ 'sup' => check_plain(''),
+ 'wbr' => check_plain(''),
+ ),
+ );
+
+ return system_settings_form($form);
+}
diff --git a/modules/custom/cu_chemistry_titles_bundle/html_title/html_title.info b/modules/custom/cu_chemistry_titles_bundle/html_title/html_title.info
new file mode 100644
index 000000000..51fc25629
--- /dev/null
+++ b/modules/custom/cu_chemistry_titles_bundle/html_title/html_title.info
@@ -0,0 +1,13 @@
+name = HTML title
+description = Enables limited HTML markup in node titles.
+core = 7.x
+
+; Views Handlers
+files[] = views/handlers/html_title_handler_field_node_title.inc
+
+; Information added by Drupal.org packaging script on 2014-10-28
+version = "7.x-1.4"
+core = "7.x"
+project = "html_title"
+datestamp = "1414509830"
+
diff --git a/modules/custom/cu_chemistry_titles_bundle/html_title/html_title.install b/modules/custom/cu_chemistry_titles_bundle/html_title/html_title.install
new file mode 100644
index 000000000..a8cd80d1f
--- /dev/null
+++ b/modules/custom/cu_chemistry_titles_bundle/html_title/html_title.install
@@ -0,0 +1,15 @@
+ 'HTML Title settings',
+ 'description' => 'Configure HTML tags used in node titles.',
+ 'access arguments' => array('administer site configuration'),
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('html_title_admin_settings'),
+ 'type' => MENU_NORMAL_ITEM,
+ 'file' => 'html_title.admin.inc',
+ );
+ return $items;
+}
+
+/**
+ * Implementation of hook_theme_registry_alter()
+ */
+function html_title_theme_registry_alter(&$theme_registry) {
+ // Re-order search result pre-processing so ours always runs last
+ if (module_exists('search') && is_array($theme_registry['search_result']['preprocess functions'])) {
+ foreach($theme_registry['search_result']['preprocess functions'] as $value) {
+ if ($value != 'html_title_preprocess_search_result') {
+ $callbacks[] = $value;
+ }
+ }
+ $callbacks[] = 'html_title_preprocess_search_result';
+ $theme_registry['search_result']['preprocess functions'] = $callbacks;
+ }
+}
+
+/**
+ * Implementation of hook_preprocess_page()
+ */
+function html_title_preprocess_page(&$vars) {
+ if (array_key_exists('node', $vars)) {
+ $elements = variable_get('html_title_allowed_elements', array('em', 'sub', 'sup'));
+ // Reset title to allow safe HTML
+ $vars['title'] = filter_xss($vars['node']->title, $elements);
+ // Strip HTML from head title
+ $vars['head_title'] = strip_tags($vars['node']->title);
+ drupal_set_title($vars['head_title']);
+ }
+}
+
+/**
+ * Implementation of template_preprocess_node()
+ */
+function html_title_preprocess_node(&$vars) {
+ switch ($vars['view_mode']) {
+ case 'search_index':
+ case 'rss':
+ return;
+ default:
+ $elements = variable_get('html_title_allowed_elements', array('em', 'sub', 'sup'));
+ $vars['title'] = filter_xss($vars['elements']['#node']->title, $elements);
+ }
+}
+
+/**
+ * Implementation of hook_preprocess_search_result()
+ */
+function html_title_preprocess_search_result(&$vars) {
+ if (isset($vars['result']['title'])) {
+ $elements = variable_get('html_title_allowed_elements', array('em', 'sub', 'sup'));
+ $vars['title'] = filter_xss($vars['result']['title'], $elements);
+ }
+}
+
+/**
+* Implementation of hook_node_view()
+*/
+function html_title_node_view($node, $view_mode) {
+ switch ($view_mode) {
+ case 'rss':
+ $node->title = strip_tags($node->title);
+ break;
+ }
+}
+
+/**
+* Implementation hook_views_api()
+*/
+function html_title_views_api() {
+ return array(
+ 'api' => 3,
+ 'path' => drupal_get_path('module', 'html_title') .'/views',
+ );
+}
diff --git a/modules/custom/cu_chemistry_titles_bundle/html_title/views/handlers/html_title_handler_field_node_title.inc b/modules/custom/cu_chemistry_titles_bundle/html_title/views/handlers/html_title_handler_field_node_title.inc
new file mode 100644
index 000000000..6e3e12f5d
--- /dev/null
+++ b/modules/custom/cu_chemistry_titles_bundle/html_title/views/handlers/html_title_handler_field_node_title.inc
@@ -0,0 +1,49 @@
+';
+ }
+ $this->options['alter']['preserve_tags'] .= ' '. implode(' ', $tags);
+ $done = TRUE;
+ }
+
+ // Decode permitted HTML elements
+ $pattern = "/<(\/?)(". implode('|', $elements) .")>/i";
+ $output = preg_replace($pattern, '<$1$2>', $output);
+
+ // Decode HTML character entities
+ $pattern = "/&([a-z0-9#]+);/";
+ $output = preg_replace($pattern, '&$1;', $output);
+ }
+
+ return $output;
+ }
+}
diff --git a/modules/custom/cu_chemistry_titles_bundle/html_title/views/html_title.views.inc b/modules/custom/cu_chemistry_titles_bundle/html_title/views/html_title.views.inc
new file mode 100644
index 000000000..d7aecdb0b
--- /dev/null
+++ b/modules/custom/cu_chemistry_titles_bundle/html_title/views/html_title.views.inc
@@ -0,0 +1,39 @@
+plugin_name == 'rss') {
+ // Handle "content" style plugin
+ if (property_exists($view->style_plugin->row_plugin, 'nodes') && count($view->style_plugin->row_plugin->nodes)) { //$view->style_plugin->uses_row_plugin()) {
+ foreach ($view->style_plugin->row_plugin->nodes as $nid => $node) {
+ $view->style_plugin->row_plugin->nodes[$nid]->title = strip_tags($node->title);
+ }
+ }
+ // Handle "field" style plugin
+ elseif (property_exists($view, 'result') && count($view->result)) {
+ foreach ($view->result as $key => $result) {
+ if (property_exists($result, 'node_title')) {
+ $view->result[$key]->node_title = strip_tags($result->node_title);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/config.rb b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/config.rb
new file mode 100644
index 000000000..655458ed5
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/config.rb
@@ -0,0 +1,14 @@
+# Require any additional compass plugins here.
+
+# Set this to the root of your project when deployed:
+css_dir = "css"
+sass_dir = "scss"
+
+output_style = :compact
+
+relative_assets = true
+
+line_comments = false
+color_output = false
+
+cache = false
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/cu-content-sequence-simple-horizontal.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/cu-content-sequence-simple-horizontal.css
new file mode 100644
index 000000000..a560c8b7b
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/cu-content-sequence-simple-horizontal.css
@@ -0,0 +1,342 @@
+/* --------------------------------
+
+Primary style
+
+-------------------------------- */
+
+/* --------------------------------
+
+Main Components
+
+-------------------------------- */
+.cd-horizontal-timeline {
+ opacity: 0;
+ margin: 20px auto;
+ -webkit-transition: opacity 0.2s;
+ -moz-transition: opacity 0.2s;
+ transition: opacity 0.2s;
+}
+.cd-horizontal-timeline::before {
+ /* never visible - this is used in jQuery to check the current MQ */
+ content: 'mobile';
+ display: none;
+}
+.cd-horizontal-timeline.loaded {
+ /* show the timeline after events position has been set (using JavaScript) */
+ opacity: 1;
+}
+.cd-horizontal-timeline .timeline {
+ position: relative;
+ height: 100px;
+ width: 90%;
+ max-width: 920px;
+ margin: 0 auto;
+}
+.cd-horizontal-timeline .events-wrapper {
+ position: relative;
+ height: 100%;
+ margin: 0 40px;
+ overflow: hidden;
+}
+.cd-horizontal-timeline .events-wrapper::after, .cd-horizontal-timeline .events-wrapper::before {
+ /* these are used to create a shadow effect at the sides of the timeline */
+ content: '';
+ position: absolute;
+ z-index: 2;
+ top: 10px;
+ bottom:10px;
+ width: 20px;
+}
+.cd-horizontal-timeline .events-wrapper::before {
+ left: 0;
+ background-image: -webkit-linear-gradient( left , #e7e7e7, rgba(248, 248, 248, 0));
+ background-image: linear-gradient(to right, #e7e7e7, rgba(248, 248, 248, 0));
+ border-left:1px solid #d7d7d7;
+}
+.cd-horizontal-timeline .events-wrapper::after {
+ right: 0;
+ background-image: -webkit-linear-gradient( right , #e7e7e7, rgba(248, 248, 248, 0));
+ background-image: linear-gradient(to left, #e7e7e7, rgba(248, 248, 248, 0));
+ border-right:1px solid #d7d7d7;
+}
+.cd-horizontal-timeline .events {
+ /* this is the grey line/timeline */
+ position: absolute;
+ z-index: 1;
+ left: 0;
+ top: 49px;
+ height: 2px;
+ /* width will be set using JavaScript */
+ background: #dfdfdf;
+ -webkit-transition: -webkit-transform 0.4s;
+ -moz-transition: -moz-transform 0.4s;
+ transition: transform 0.4s;
+}
+.cd-horizontal-timeline .filling-line {
+ /* this is used to create the green line filling the timeline */
+ position: absolute;
+ z-index: 1;
+ left: 0;
+ top: 0;
+ height: 100%;
+ width: 100%;
+ background-color: #cfb87c;
+ -webkit-transform: scaleX(0);
+ -moz-transform: scaleX(0);
+ -ms-transform: scaleX(0);
+ -o-transform: scaleX(0);
+ transform: scaleX(0);
+ -webkit-transform-origin: left center;
+ -moz-transform-origin: left center;
+ -ms-transform-origin: left center;
+ -o-transform-origin: left center;
+ transform-origin: left center;
+ -webkit-transition: -webkit-transform 0.3s;
+ -moz-transition: -moz-transform 0.3s;
+ transition: transform 0.3s;
+ margin-left:-100px;
+}
+.cd-horizontal-timeline .events a {
+ position: absolute;
+ bottom: 0;
+ z-index: 2;
+ text-align: center;
+ padding-bottom: 15px;
+ color: #383838;
+ /* fix bug on Safari - text flickering while timeline translates */
+ -webkit-transform: translateZ(0);
+ -moz-transform: translateZ(0);
+ -ms-transform: translateZ(0);
+ -o-transform: translateZ(0);
+ transform: translateZ(0);
+ margin-left:-100px;
+}
+.cd-horizontal-timeline .events a::after {
+ /* this is used to create the event spot */
+ content: '';
+ position: absolute;
+ left: 50%;
+ right: auto;
+ -webkit-transform: translateX(-50%);
+ -moz-transform: translateX(-50%);
+ -ms-transform: translateX(-50%);
+ -o-transform: translateX(-50%);
+ transform: translateX(-50%);
+ bottom: -5px;
+ height: 12px;
+ width: 12px;
+ border-radius: 50%;
+ border: 2px solid #dfdfdf;
+ background-color: #f8f8f8;
+ -webkit-transition: background-color 0.3s, border-color 0.3s;
+ -moz-transition: background-color 0.3s, border-color 0.3s;
+ transition: background-color 0.3s, border-color 0.3s;
+}
+.no-touch .cd-horizontal-timeline .events a:hover::after {
+ background-color: #000;
+ border-color: #000;
+}
+.cd-horizontal-timeline .events a.selected {
+ pointer-events: none;
+}
+.cd-horizontal-timeline .events a.selected::after,
+.cd-horizontal-timeline .events a.older-event.selected::after {
+ background-color: #000;
+ border-color: #000;
+}
+.cd-horizontal-timeline .events a.older-event::after {
+ border-color: #cfb87c;
+ background-color: #cfb87c;
+}
+@media only screen and (min-width: 1100px) {
+ .cd-horizontal-timeline {
+ margin: 0 auto 40px;
+ }
+ .cd-horizontal-timeline::before {
+ /* never visible - this is used in jQuery to check the current MQ */
+ content: 'desktop';
+ }
+}
+
+.cd-timeline-navigation a {
+ /* these are the left/right arrows to navigate the timeline */
+ position: absolute;
+ z-index: 1;
+ top: 30%;
+ bottom: auto;
+ font-size: 21px;
+ padding:5px;
+}
+
+.cd-timeline-navigation a.prev {
+ left: 10px;
+}
+.cd-timeline-navigation a.next {
+ right: 10px;
+}
+.no-touch .cd-timeline-navigation a:hover {
+ border-color: #7b9d6f;
+}
+.cd-timeline-navigation a.inactive {
+ cursor: not-allowed;
+ color:#aaa;
+}
+.cd-timeline-navigation a.inactive::after {
+ background-position: 0 -16px;
+}
+.no-touch .cd-timeline-navigation a.inactive:hover {
+ border-color: #dfdfdf;
+}
+
+.cd-horizontal-timeline .events-content {
+ position: relative;
+ width: 100%;
+ margin: 0;
+ overflow: hidden;
+ -webkit-transition: height 0.4s;
+ -moz-transition: height 0.4s;
+ transition: height 0.4s;
+}
+.cd-horizontal-timeline .events-content > ol > li {
+ position: absolute;
+ z-index: 1;
+ width: 100%;
+ left: 0;
+ top: 0;
+ -webkit-transform: translateX(-100%);
+ -moz-transform: translateX(-100%);
+ -ms-transform: translateX(-100%);
+ -o-transform: translateX(-100%);
+ transform: translateX(-100%);
+ padding: 0 5%;
+ opacity: 0;
+ -webkit-animation-duration: 0.4s;
+ -moz-animation-duration: 0.4s;
+ animation-duration: 0.4s;
+ -webkit-animation-timing-function: ease-in-out;
+ -moz-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+}
+.cd-horizontal-timeline .events-content li.selected {
+ /* visible event content */
+ position: relative;
+ z-index: 2;
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ -moz-transform: translateX(0);
+ -ms-transform: translateX(0);
+ -o-transform: translateX(0);
+ transform: translateX(0);
+}
+.cd-horizontal-timeline .events-content li.enter-right, .cd-horizontal-timeline .events-content li.leave-right {
+ -webkit-animation-name: cd-enter-right;
+ -moz-animation-name: cd-enter-right;
+ animation-name: cd-enter-right;
+}
+.cd-horizontal-timeline .events-content li.enter-left, .cd-horizontal-timeline .events-content li.leave-left {
+ -webkit-animation-name: cd-enter-left;
+ -moz-animation-name: cd-enter-left;
+ animation-name: cd-enter-left;
+}
+.cd-horizontal-timeline .events-content li.leave-right, .cd-horizontal-timeline .events-content li.leave-left {
+ -webkit-animation-direction: reverse;
+ -moz-animation-direction: reverse;
+ animation-direction: reverse;
+}
+.cd-horizontal-timeline .events-content li > * {
+ max-width: 600px;
+ margin: 0 auto;
+}
+.cd-horizontal-timeline .events-content h2 {
+
+}
+.cd-horizontal-timeline .events-content em {
+ display: block;
+ margin: 10px auto;
+}
+.cd-horizontal-timeline .events-content em::before {
+ content: '- ';
+}
+.cd-horizontal-timeline .events-content p {
+
+}
+.cd-horizontal-timeline .events-content em, .cd-horizontal-timeline .events-content p {
+}
+
+
+@-webkit-keyframes cd-enter-right {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(100%);
+ }
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0%);
+ }
+}
+@-moz-keyframes cd-enter-right {
+ 0% {
+ opacity: 0;
+ -moz-transform: translateX(100%);
+ }
+ 100% {
+ opacity: 1;
+ -moz-transform: translateX(0%);
+ }
+}
+@keyframes cd-enter-right {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(100%);
+ -moz-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ -o-transform: translateX(100%);
+ transform: translateX(100%);
+ }
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0%);
+ -moz-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ -o-transform: translateX(0%);
+ transform: translateX(0%);
+ }
+}
+@-webkit-keyframes cd-enter-left {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(-100%);
+ }
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0%);
+ }
+}
+@-moz-keyframes cd-enter-left {
+ 0% {
+ opacity: 0;
+ -moz-transform: translateX(-100%);
+ }
+ 100% {
+ opacity: 1;
+ -moz-transform: translateX(0%);
+ }
+}
+@keyframes cd-enter-left {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(-100%);
+ -moz-transform: translateX(-100%);
+ -ms-transform: translateX(-100%);
+ -o-transform: translateX(-100%);
+ transform: translateX(-100%);
+ }
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0%);
+ -moz-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ -o-transform: translateX(0%);
+ transform: translateX(0%);
+ }
+}
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/cu-content-sequence.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/cu-content-sequence.css
new file mode 100644
index 000000000..59023cf57
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/cu-content-sequence.css
@@ -0,0 +1,134 @@
+.timeline-list-link { padding: 20px; text-align: center; }
+
+.adv-timeline-list { background: #fff; color: #202020; padding: 10px; }
+.adv-timeline-list a:link, .adv-timeline-list a:visited { color: #0277BD; }
+
+.adv-timeline-wrapper { display: flex; flex-direction: column-reverse; }
+.adv-timeline-wrapper .tl-text .tl-headline-date, .adv-timeline-wrapper .tl-text h3.tl-headline-date { color: #757575; }
+
+.timeline-item-top { display: flex; flex-direction: column-reverse; }
+
+.adv-timeline-list { margin: 0 auto; display: none; }
+.adv-timeline-list ol.timeline-event-list, .adv-timeline-list ol.timeline-event-list > li { list-style: none; list-style-image: none; }
+.adv-timeline-list .timeline-item { background-color: #fff; margin: 10px 20px 40px 50px; position: relative; clear: both; z-index: 5; -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); transition: -webkit-box-shadow 0.5s ease, background-color 0.5s ease, color 0.5s ease; transition: -moz-box-shadow 0.5s ease, background-color 0.5s ease, color 0.5s ease; transition: box-shadow 0.5s ease, background-color 0.5s ease, color 0.5s ease; }
+.adv-timeline-list .timeline-item img { width: 100%; height: auto; display: block; }
+.adv-timeline-list .timeline-item:hover { -webkit-box-shadow: 0 0 25px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 0 25px rgba(0, 0, 0, 0.3); box-shadow: 0 0 25px rgba(0, 0, 0, 0.3); }
+.adv-timeline-list .timeline-item .timeline-item-content { padding: 20px; }
+
+.timeline-item-header { padding: 20px 20px 0 20px; }
+
+.timeline-item-body { padding: 0px 20px 20px 20px; }
+
+h3.timeline-item-date, h3.tl-headline-date { font-size: 90%; text-transform: uppercase; color: #757575; margin: 0; }
+
+h3.timeline-item-title, h4.timeline-item-title { font-size: 150%; }
+
+.adv-timeline-wrapper { background-color: #fff; }
+.adv-timeline-wrapper .tl-timemarker .tl-timemarker-content-container { background-color: #fff; }
+.adv-timeline-wrapper .tl-timemarker .tl-timemarker-content-container:hover { background-color: #333; }
+.adv-timeline-wrapper .tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline { color: #333; }
+.adv-timeline-wrapper .tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline p { color: #333; }
+.adv-timeline-wrapper .tl-timemarker.tl-timemarker-active .tl-timemarker-content-container { background-color: #333; }
+.adv-timeline-wrapper .tl-timemarker.tl-timemarker-active .tl-timemarker-content-container:hover { background-color: #333; }
+.adv-timeline-wrapper .tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline { color: #fff; }
+.adv-timeline-wrapper .tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline p { color: #fff; }
+.adv-timeline-wrapper .tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container span[class*=" tl-icon-"], .adv-timeline-wrapper .tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container span[class^=tl-icon-] { color: #fff; }
+.adv-timeline-wrapper .tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major .tl-timeaxis-tick { color: #222; font-weight: bold; }
+.adv-timeline-wrapper .tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick { color: #757575; }
+.adv-timeline-wrapper .tl-slidenav-next .tl-slidenav-title, .adv-timeline-wrapper .tl-slidenav-previous .tl-slidenav-title { opacity: .8; }
+.adv-timeline-wrapper .tl-slidenav-next .tl-slidenav-description, .adv-timeline-wrapper .tl-slidenav-next .tl-previous-description { opacity: .25; }
+.adv-timeline-wrapper .tl-slidenav-next:hover .tl-slidenav-description, .adv-timeline-wrapper .tl-slidenav-previous:hover .tl-slidenav-description { opacity: .8; }
+.adv-timeline-wrapper .tl-timegroup { background-color: #e2f1f9; }
+.adv-timeline-wrapper .tl-timegroup .tl-timegroup-message { color: #656565; }
+
+body .content .adv-timeline-wrapper .tl-slide-content a:link, body .content .adv-timeline-wrapper .tl-slide-content a:visited, body .content .adv-timeline-wrapper .tl-attribution a:link, body .content .adv-timeline-wrapper .tl-attribution a:visited { color: #0277BD; }
+body .content .adv-timeline-wrapper .tl-slide-content a:hover, body .content .adv-timeline-wrapper .tl-attribution a:hover { color: #e51c23; }
+
+.tl-attribution { display: none; }
+
+.timeline-list-link { padding: 20px; text-align: center; }
+
+.adv-timeline-list { background: #fff; color: #202020; padding: 10px; }
+.adv-timeline-list a:link, .adv-timeline-list a:visited { color: #0277BD; }
+
+body .block-inner .content .simple-horizontal-timeline-wrapper a:link, body .block-inner .content .simple-horizontal-timeline-wrapper a:visited { color: #0277BD; }
+body .block-inner .content .simple-horizontal-timeline-wrapper a:hover { color: #e51c23; }
+body .block-inner .content .simple-horizontal-timeline-wrapper .cd-horizontal-timeline .events a { color: #383838; }
+body .block-inner .content .simple-horizontal-timeline-wrapper .timeline-content { color: #202020; }
+
+.simple-horizontal-timeline-wrapper { background: #fff; padding-bottom: 40px; padding-top: 10px; position: relative; }
+.simple-horizontal-timeline-wrapper .timeline-list-link { position: absolute; left: 0; right: 0; bottom: 0; }
+
+.cd-horizontal-timeline { padding-bottom: 20px; }
+.cd-horizontal-timeline .timeline ol, .cd-horizontal-timeline .timeline ul, .cd-horizontal-timeline .timeline li, .cd-horizontal-timeline .cd-timeline-item-navigation-wrapper ol, .cd-horizontal-timeline .cd-timeline-item-navigation-wrapper ul, .cd-horizontal-timeline .cd-timeline-item-navigation-wrapper li { margin: 0; padding: 0; list-style: none; list-style-image: none; }
+.cd-horizontal-timeline .events-content > ol, .cd-horizontal-timeline .events-content > ol > li, .cd-horizontal-timeline .events-content > ul, .cd-horizontal-timeline .events-content > ul > li { margin: 0; padding: 0; list-style: none; list-style-image: none; }
+.cd-horizontal-timeline .events a { width: 120px; padding-left: 5px; padding-right: 5px; }
+.cd-horizontal-timeline .short-title { display: none; }
+
+.cd-horizontal-timeline .timeline-item-wrapper:not(:first-child) { padding-top: 0; }
+
+.cd-horizontal-timeline .timeline-item { background-color: #fff; margin: 10px 0; position: relative; z-index: 5; -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); transition: -webkit-box-shadow 0.5s ease, background-color 0.5s ease, color 0.5s ease; transition: -moz-box-shadow 0.5s ease, background-color 0.5s ease, color 0.5s ease; transition: box-shadow 0.5s ease, background-color 0.5s ease, color 0.5s ease; }
+.cd-horizontal-timeline .timeline-item img { width: 100%; height: auto; display: block; }
+.cd-horizontal-timeline .timeline-item:hover { -webkit-box-shadow: 0 0 25px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 0 25px rgba(0, 0, 0, 0.3); box-shadow: 0 0 25px rgba(0, 0, 0, 0.3); }
+.cd-horizontal-timeline .timeline-item .timeline-item-content { padding: 20px; }
+
+.timeline-item img { width: 100%; height: auto; display: block; }
+.timeline-item .timeline-item-date { font-size: 85%; margin-bottom: 10px; }
+
+.events li { font-size: 14px; text-transform: uppercase; }
+
+.cd-timeline-view-all { text-align: center; font-size: 85%; position: absolute; bottom: 20px; left: 0; right: 0; }
+
+.timeline-view-all-wrapper ol, .timeline-view-all-wrapper li { list-style: none; list-style-image: none; margin: 0; padding: 0; }
+.timeline-view-all-wrapper .timeline-item { margin: 0 0 20px 0; padding-bottom: 20px; border-bottom: 1px solid #d7d7d7; }
+.timeline-view-all-wrapper .timeline-item img { display: none; }
+
+.cd-timeline-item-navigation { text-align: center; font-size: 200%; }
+.cd-timeline-item-navigation li { display: inline; }
+.cd-timeline-item-navigation a { display: inline-block; padding: 0 20px; }
+
+.no-touch .cd-timeline-item-navigation a:hover { border-color: #7b9d6f; }
+
+.cd-timeline-item-navigation a.inactive { cursor: not-allowed; color: #aaa; }
+
+.no-touch .cd-timeline-item-navigation a.inactive:hover { border-color: #dfdfdf; }
+
+.timeline-list-link { padding: 20px; text-align: center; }
+
+.adv-timeline-list { background: #fff; color: #202020; padding: 10px; }
+.adv-timeline-list a:link, .adv-timeline-list a:visited { color: #0277BD; }
+
+.cd-vertical-timeline { padding-bottom: 50px; }
+.cd-vertical-timeline ol.vertical-timeline-items, .cd-vertical-timeline ol.vertical-timeline-items > li { list-style: none; list-style-image: none; margin: 0; padding: 0; }
+
+.cd-vertical-timeline { position: relative; }
+.cd-vertical-timeline .events-content { position: relative; }
+.cd-vertical-timeline .events-content:before { content: " "; position: absolute; top: 20px; bottom: 20px; left: 20px; width: 2px; background-color: #dfdfdf; }
+.cd-vertical-timeline .events-content:after { content: " "; position: absolute; width: 10px; height: 2px; background-color: #dfdfdf; bottom: 20px; left: 16px; }
+@media screen and (min-width: 768px) { .cd-vertical-timeline .events-content:before { top: 20px; bottom: 20px; left: 50%; }
+ .cd-vertical-timeline .events-content:after { bottom: 20px; left: calc(50% - 4px); } }
+
+body .content .cd-vertical-timeline .timeline-item a:link, body .content .cd-vertical-timeline .timeline-item a:visited { color: #0277BD; }
+body .content .cd-vertical-timeline .timeline-item a:hover { color: #e51c23; }
+
+.cd-vertical-timeline .timeline-content-item { margin: 10px 20px 40px 50px; }
+.cd-vertical-timeline .timeline-item { color: #202020; background-color: #fff; margin: 10px 20px 40px 50px; position: relative; clear: both; z-index: 5; -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); transition: -webkit-box-shadow 0.5s ease, background-color 0.5s ease, color 0.5s ease; transition: -moz-box-shadow 0.5s ease, background-color 0.5s ease, color 0.5s ease; transition: box-shadow 0.5s ease, background-color 0.5s ease, color 0.5s ease; }
+.cd-vertical-timeline .timeline-item img { width: 100%; height: auto; display: block; }
+.cd-vertical-timeline .timeline-item:hover { -webkit-box-shadow: 0 0 25px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 0 25px rgba(0, 0, 0, 0.3); box-shadow: 0 0 25px rgba(0, 0, 0, 0.3); }
+.cd-vertical-timeline .timeline-item .timeline-item-content { padding: 20px; }
+.cd-vertical-timeline .timeline-single-item { position: relative; }
+.cd-vertical-timeline .timeline-single-item .short-title { font-weight: 900; margin: 0 20px 0 50px; font-size: 120%; }
+.cd-vertical-timeline .timeline-single-item:before { display: block; width: 20px; height: 20px; border-radius: 100%; background: #cfb87c; position: absolute; top: 5px; left: 11px; z-index: 1; content: " "; -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.25); box-shadow: 0 0 10px rgba(0, 0, 0, 0.25); border: 3px solid #fff; }
+@media screen and (min-width: 768px) { .cd-vertical-timeline .timeline-content-item { margin: 10px 20px 40px; }
+ .cd-vertical-timeline .timeline-item { margin: 10px 20px 40px; }
+ .cd-vertical-timeline .timeline-single-item { width: 100%; max-width: 50%; clear: both; }
+ .cd-vertical-timeline .timeline-single-item:before { top: 10px; }
+ .cd-vertical-timeline .timeline-single-item .short-title { position: absolute; width: 100%; padding: 0 20px; font-size: 180%; font-weight: 900; margin: 0; top: -5px; }
+ .cd-vertical-timeline .timeline-single-item:nth-child(odd) { float: left; }
+ .cd-vertical-timeline .timeline-single-item:nth-child(odd):before { left: auto; right: -11px; }
+ .cd-vertical-timeline .timeline-single-item:nth-child(odd) .short-title { right: -100%; }
+ .cd-vertical-timeline .timeline-single-item:nth-child(odd) .timeline-content-item { margin: 10px 20px 40px 0; }
+ .cd-vertical-timeline .timeline-single-item:nth-child(even) { float: right; }
+ .cd-vertical-timeline .timeline-single-item:nth-child(even):before { right: auto; left: -9px; }
+ .cd-vertical-timeline .timeline-single-item:nth-child(even) .short-title { left: -100%; text-align: right; }
+ .cd-vertical-timeline .timeline-single-item:nth-child(even) .timeline-content-item { margin: 10px 0 40px 20px; } }
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.abril-droidsans.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.abril-droidsans.css
new file mode 100755
index 000000000..a13c70656
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.abril-droidsans.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Droid+Sans:400,700|Abril+Fatface);.tl-timeline{font-family:'Droid Sans',sans-serif;font-weight:400;font-size:16px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Abril Fatface',cursive;text-transform:none;font-weight:700;font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'Droid Sans',sans-serif;font-size:16px;line-height:1.3em}.tl-timeline ul{font-family:'Droid Sans',sans-serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Droid Sans',sans-serif;font-weight:700;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Droid Sans',sans-serif}.tl-timeline .vcard{font-family:'Droid Sans',sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Droid Sans',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Droid Sans',sans-serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Droid Sans',sans-serif;font-weight:700}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Droid Sans',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Droid Sans',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-menubar{font-family:'Droid Sans',sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Droid Sans',sans-serif;font-style:normal;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Abril Fatface',cursive;text-transform:none;font-weight:700;font-size:46px;line-height:46px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.amatic-andika.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.amatic-andika.css
new file mode 100755
index 000000000..c0412db1a
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.amatic-andika.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Andika|Amatic+SC:700,400);.tl-timeline{font-family:'Andika',sans-serif;font-weight:400;font-size:16px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Amatic SC',cursive;text-transform:none;font-weight:700;font-size:64px;line-height:64px}.tl-timeline h2.tl-headline-title{font-size:86px;line-height:86px}.tl-timeline p{font-family:'Andika',sans-serif;font-size:16px;line-height:1.3em}.tl-timeline ul{font-family:'Andika',sans-serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Andika',sans-serif;font-weight:700;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Andika',sans-serif}.tl-timeline .vcard{font-family:'Andika',sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Andika',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Andika',sans-serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Andika',sans-serif;font-weight:700}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Andika',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Andika',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-menubar{font-family:'Andika',sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Andika',sans-serif;font-style:normal;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Amatic SC',cursive;text-transform:none;font-weight:700;font-size:64px;line-height:64px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.bevan-pontanosans.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.bevan-pontanosans.css
new file mode 100755
index 000000000..7338da3d6
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.bevan-pontanosans.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(https://fonts.googleapis.com/css?family=Pontano+Sans|Bevan);.tl-timeline{font-family:'Pontano Sans',sans-serif;font-weight:400;font-size:17px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Bevan',cursive;text-transform:none;font-weight:400;font-size:38px;line-height:38px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'Pontano Sans',sans-serif;font-size:17px;line-height:1.3em}.tl-timeline ul{font-family:'Pontano Sans',sans-serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Pontano Sans',sans-serif;font-weight:400;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Pontano Sans',sans-serif}.tl-timeline .vcard{font-family:'Pontano Sans',sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Pontano Sans',sans-serif;font-weight:400;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Pontano Sans',sans-serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Pontano Sans',sans-serif;font-weight:400}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Pontano Sans',sans-serif;font-weight:400;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Pontano Sans',sans-serif;font-weight:400;text-transform:none}.tl-timeline .tl-menubar{font-family:'Pontano Sans',sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Pontano Sans',sans-serif;font-style:italic;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Bevan',cursive;text-transform:none;font-weight:400;font-size:38px;line-height:38px}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{margin-bottom:10px !important}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.bitter-raleway.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.bitter-raleway.css
new file mode 100755
index 000000000..1e5d17c9b
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.bitter-raleway.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Bitter:700|Raleway:200,300,700);.tl-timeline{font-family:'Raleway',sans-serif;font-weight:300;font-size:16px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Bitter',serif;text-transform:none;font-weight:700;font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'Raleway',sans-serif;font-size:16px;line-height:1.3em}.tl-timeline ul{font-family:'Raleway',sans-serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Raleway',sans-serif;font-weight:700;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Raleway',sans-serif}.tl-timeline .vcard{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:700}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Bitter',serif;font-weight:700;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-menubar{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Raleway',sans-serif;font-style:italic;font-weight:200;line-height:1.3}input[type="text"].editor-headline{font-family:'Bitter',serif;text-transform:none;font-weight:700;font-size:46px;line-height:46px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.clicker-garamond.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.clicker-garamond.css
new file mode 100755
index 000000000..7af664d34
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.clicker-garamond.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Clicker+Script|EB+Garamond);.tl-timeline{font-family:'EB Garamond',serif;font-weight:400;font-size:18px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Clicker Script',cursive;text-transform:none;font-weight:400;font-size:58px;line-height:58px}.tl-timeline h2.tl-headline-title{font-size:64px;line-height:64px}.tl-timeline p{font-family:'EB Garamond',serif;font-size:18px;line-height:1.3em}.tl-timeline ul{font-family:'EB Garamond',serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'EB Garamond',serif;font-weight:400;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'EB Garamond',serif}.tl-timeline .vcard{font-family:'EB Garamond',serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'EB Garamond',serif;font-weight:400;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'EB Garamond',serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'EB Garamond',serif;font-weight:400}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'EB Garamond',serif;font-weight:400;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'EB Garamond',serif;font-weight:400;text-transform:none}.tl-timeline .tl-menubar{font-family:'EB Garamond',serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'EB Garamond',serif;font-style:italic;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Clicker Script',cursive;text-transform:none;font-weight:400;font-size:58px;line-height:58px}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{margin-bottom:10px !important}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.dancing-ledger.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.dancing-ledger.css
new file mode 100755
index 000000000..4ac6e15e3
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.dancing-ledger.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Dancing+Script:700,400|Ledger);.tl-timeline{font-family:'Ledger',serif;font-weight:400;font-size:16px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Dancing Script',cursive;text-transform:none;font-weight:700;font-size:58px;line-height:58px}.tl-timeline h2.tl-headline-title{font-size:68px;line-height:68px}.tl-timeline p{font-family:'Ledger',serif;font-size:16px;line-height:1.3em}.tl-timeline ul{font-family:'Ledger',serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Ledger',serif;font-weight:700;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Ledger',serif}.tl-timeline .vcard{font-family:'Ledger',serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Ledger',serif;font-weight:700;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Ledger',serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Ledger',serif;font-weight:700}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Dancing Script',cursive;font-weight:700;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Ledger',serif;font-weight:700;text-transform:none}.tl-timeline .tl-menubar{font-family:'Ledger',serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Ledger',serif;font-style:normal;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Dancing Script',cursive;text-transform:none;font-weight:700;font-size:58px;line-height:58px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.default.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.default.css
new file mode 100755
index 000000000..558bd53b6
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.default.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=PT+Sans|PT+Sans+Narrow:700|PT+Serif:400,400italic);.tl-timeline{font-family:'PT Serif',serif;font-weight:400;font-size:16px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'PT Sans Narrow',sans-serif;text-transform:uppercase;font-weight:700;font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'PT Serif',serif;font-size:16px;line-height:1.3em}.tl-timeline ul{font-family:'PT Serif',serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'PT Serif',serif;font-weight:700;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'PT Serif',serif}.tl-timeline .vcard{font-family:'PT Sans Narrow',sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'PT Sans Narrow',sans-serif;font-weight:700;text-transform:uppercase}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'PT Sans Narrow',sans-serif !important;font-weight:normal !important;text-transform:uppercase !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'PT Sans Narrow',sans-serif;font-weight:700}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'PT Sans',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'PT Sans Narrow',sans-serif;font-weight:700;text-transform:uppercase}.tl-timeline .tl-menubar{font-family:'PT Sans Narrow',sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'PT Serif',serif;font-style:italic;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'PT Sans Narrow',sans-serif;text-transform:uppercase;font-weight:700;font-size:46px;line-height:46px}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-weight:normal}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.fjalla-average.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.fjalla-average.css
new file mode 100755
index 000000000..defd6dfad
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.fjalla-average.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Average+Sans|Fjalla+One);.tl-timeline{font-family:'Average Sans',sans-serif;font-weight:400;font-size:17px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Fjalla One',sans-serif;text-transform:none;font-weight:400;font-size:46px;line-height:1.1em}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'Average Sans',sans-serif;font-size:17px;line-height:1.3em}.tl-timeline ul{font-family:'Average Sans',sans-serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Average Sans',sans-serif;font-weight:400;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Average Sans',sans-serif}.tl-timeline .vcard{font-family:'Average Sans',sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Average Sans',sans-serif;font-weight:400;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Average Sans',sans-serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Average Sans',sans-serif;font-weight:400}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Average Sans',sans-serif;font-weight:400;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Average Sans',sans-serif;font-weight:400;text-transform:none}.tl-timeline .tl-menubar{font-family:'Average Sans',sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Average Sans',sans-serif;font-style:normal;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Fjalla One',sans-serif;text-transform:none;font-weight:400;font-size:46px;line-height:46px}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{margin-bottom:10px !important}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.georgia-helvetica.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.georgia-helvetica.css
new file mode 100755
index 000000000..ef2e1aae0
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.georgia-helvetica.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+.tl-timeline{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400;font-size:17px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:Georgia,Times,serif;text-transform:normal;font-weight:800;font-size:42px;line-height:42px}.tl-timeline h2.tl-headline-title{font-size:46px;line-height:46px}.tl-timeline p{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-size:17px;line-height:1.3em}.tl-timeline ul{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:800;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif}.tl-timeline .vcard{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:800;text-transform:normal}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important;text-transform:normal !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:800}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:Georgia,Times,serif;font-weight:800;text-transform:normal}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:800;text-transform:normal}.tl-timeline .tl-menubar{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-style:italic;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:Georgia,Times,serif;text-transform:normal;font-weight:800;font-size:42px;line-height:42px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.knightlab.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.knightlab.css
new file mode 100755
index 000000000..3f3b45c32
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.knightlab.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//cloud.webtype.com/css/d4767ecb-457a-4677-8761-72f890add836.css);.tl-timeline{font-family:"Turnip RE",Georgia,"Times New Roman",Times,serif;font-weight:400;font-size:16px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:"Salvo Serif Cond",Georgia,"Times New Roman",Times,serif;text-transform:none;font-weight:400;font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:"Turnip RE",Georgia,"Times New Roman",Times,serif;font-size:16px;line-height:1.3em}.tl-timeline ul{font-family:"Turnip RE",Georgia,"Times New Roman",Times,serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:"Turnip RE",Georgia,"Times New Roman",Times,serif;font-weight:400;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:"Turnip RE",Georgia,"Times New Roman",Times,serif}.tl-timeline .vcard{font-family:"Apres RE","Helvetica Neue",Helvetica,Arial,sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:"Apres RE","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:"Apres RE","Helvetica Neue",Helvetica,Arial,sans-serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:"Apres RE","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:"Salvo Serif Cond",Georgia,"Times New Roman",Times,serif;font-weight:400;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:"Apres RE","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;text-transform:none}.tl-timeline .tl-menubar{font-family:"Apres RE","Helvetica Neue",Helvetica,Arial,sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:"Turnip RE",Georgia,"Times New Roman",Times,serif;font-style:italic;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:"Salvo Serif Cond",Georgia,"Times New Roman",Times,serif;text-transform:none;font-weight:400;font-size:46px;line-height:46px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.lustria-lato.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.lustria-lato.css
new file mode 100755
index 000000000..ecf788329
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.lustria-lato.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Lustria|Lato:400,400italic);.tl-timeline{font-family:'Lato',sans-serif;font-weight:400;font-size:17px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Lustria',serif;text-transform:none;font-weight:400;font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'Lato',sans-serif;font-size:17px;line-height:1.3em}.tl-timeline ul{font-family:'Lato',sans-serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Lato',sans-serif;font-weight:400;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Lato',sans-serif}.tl-timeline .vcard{font-family:'Lato',sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Lato',sans-serif;font-weight:400;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Lato',sans-serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Lato',sans-serif;font-weight:400}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Lustria',serif;font-weight:400;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Lato',sans-serif;font-weight:400;text-transform:none}.tl-timeline .tl-menubar{font-family:'Lato',sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Lato',sans-serif;font-style:italic;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Lustria',serif;text-transform:none;font-weight:400;font-size:46px;line-height:46px}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{margin-bottom:10px !important}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.medula-lato.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.medula-lato.css
new file mode 100755
index 000000000..833b6d52d
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.medula-lato.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Lato:400,700,300italic|Medula+One);.tl-timeline{font-family:'Lato',sans-serif;font-weight:400;font-size:16px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Medula One',cursive;text-transform:none;font-weight:700;font-size:58px;line-height:58px}.tl-timeline h2.tl-headline-title{font-size:72px;line-height:72px}.tl-timeline p{font-family:'Lato',sans-serif;font-size:16px;line-height:1.3em}.tl-timeline ul{font-family:'Lato',sans-serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Lato',sans-serif;font-weight:700;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Lato',sans-serif}.tl-timeline .vcard{font-family:'Lato',sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Lato',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Lato',sans-serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Lato',sans-serif;font-weight:700}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Lato',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Lato',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-menubar{font-family:'Lato',sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Lato',sans-serif;font-style:italic;font-weight:300;line-height:1.3}input[type="text"].editor-headline{font-family:'Medula One',cursive;text-transform:none;font-weight:700;font-size:58px;line-height:58px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.oldstandard.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.oldstandard.css
new file mode 100755
index 000000000..bc43611d4
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.oldstandard.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Old+Standard+TT:400,400italic);.tl-timeline{font-family:'Old Standard TT',serif;font-weight:400;font-size:16px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Old Standard TT',serif;text-transform:uppercase;font-weight:400;font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title{font-size:52px;line-height:52px}.tl-timeline p{font-family:'Old Standard TT',serif;font-size:16px;line-height:1.3em}.tl-timeline ul{font-family:'Old Standard TT',serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Old Standard TT',serif;font-weight:400;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Old Standard TT',serif}.tl-timeline .vcard{font-family:'Old Standard TT',serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Old Standard TT',serif;font-weight:400;text-transform:uppercase}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Old Standard TT',serif !important;font-weight:normal !important;text-transform:uppercase !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Old Standard TT',serif;font-weight:400}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Old Standard TT',serif;font-weight:400;text-transform:uppercase}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Old Standard TT',serif;font-weight:400;text-transform:uppercase}.tl-timeline .tl-menubar{font-family:'Old Standard TT',serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Old Standard TT',serif;font-style:italic;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Old Standard TT',serif;text-transform:uppercase;font-weight:400;font-size:46px;line-height:46px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.opensans-gentiumbook.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.opensans-gentiumbook.css
new file mode 100755
index 000000000..d94fdbb91
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.opensans-gentiumbook.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Open+Sans:800,400|Gentium+Book+Basic:400,400italic);.tl-timeline{font-family:'Gentium Book Basic',serif;font-weight:400;font-size:17px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Open Sans',sans-serif;text-transform:none;font-weight:800;font-size:40px;line-height:40px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'Gentium Book Basic',serif;font-size:17px;line-height:1.3em}.tl-timeline ul{font-family:'Gentium Book Basic',serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Gentium Book Basic',serif;font-weight:800;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Gentium Book Basic',serif}.tl-timeline .vcard{font-family:'Open Sans',sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Open Sans',sans-serif;font-weight:800;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Open Sans',sans-serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Open Sans',sans-serif;font-weight:800}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Open Sans',sans-serif;font-weight:800;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Open Sans',sans-serif;font-weight:800;text-transform:none}.tl-timeline .tl-menubar{font-family:'Open Sans',sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Gentium Book Basic',serif;font-style:italic;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Open Sans',sans-serif;text-transform:none;font-weight:800;font-size:40px;line-height:40px}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{margin-bottom:5px !important}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.playfair-faunaone.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.playfair-faunaone.css
new file mode 100755
index 000000000..9b880a0e0
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.playfair-faunaone.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Playfair+Display:400,700|Playfair+Display+SC);@import url(//fonts.googleapis.com/css?family=Fauna+One);@import url(//fonts.googleapis.com/css?family=Unica+One);.tl-timeline{font-family:'Fauna One',serif;font-weight:400;font-size:17px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Playfair Display',Georgia,serif;text-transform:uppercase;font-weight:400;font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'Fauna One',serif;font-size:17px;line-height:1.3em}.tl-timeline ul{font-family:'Fauna One',serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Fauna One',serif;font-weight:400;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Fauna One',serif}.tl-timeline .vcard{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400;text-transform:uppercase}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important;text-transform:uppercase !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Playfair Display',Georgia,serif;font-weight:400;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400;text-transform:uppercase}.tl-timeline .tl-menubar{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Fauna One',serif;font-style:italic;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Playfair Display',Georgia,serif;text-transform:uppercase;font-weight:400;font-size:46px;line-height:46px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.playfair.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.playfair.css
new file mode 100755
index 000000000..496cee849
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.playfair.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Playfair+Display:400,700|Playfair+Display+SC);.tl-timeline{font-family:'Playfair Display',serif;font-weight:400;font-size:17px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Playfair Display SC',serif;text-transform:none;font-weight:400;font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'Playfair Display',serif;font-size:17px;line-height:1.3em}.tl-timeline ul{font-family:'Playfair Display',serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Playfair Display',serif;font-weight:400;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Playfair Display',serif}.tl-timeline .vcard{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Playfair Display SC',serif;font-weight:400;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400;text-transform:none}.tl-timeline .tl-menubar{font-family:'Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Playfair Display',serif;font-style:italic;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Playfair Display SC',serif;text-transform:none;font-weight:400;font-size:46px;line-height:46px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.pt.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.pt.css
new file mode 100755
index 000000000..558bd53b6
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.pt.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=PT+Sans|PT+Sans+Narrow:700|PT+Serif:400,400italic);.tl-timeline{font-family:'PT Serif',serif;font-weight:400;font-size:16px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'PT Sans Narrow',sans-serif;text-transform:uppercase;font-weight:700;font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'PT Serif',serif;font-size:16px;line-height:1.3em}.tl-timeline ul{font-family:'PT Serif',serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'PT Serif',serif;font-weight:700;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'PT Serif',serif}.tl-timeline .vcard{font-family:'PT Sans Narrow',sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'PT Sans Narrow',sans-serif;font-weight:700;text-transform:uppercase}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'PT Sans Narrow',sans-serif !important;font-weight:normal !important;text-transform:uppercase !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'PT Sans Narrow',sans-serif;font-weight:700}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'PT Sans',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'PT Sans Narrow',sans-serif;font-weight:700;text-transform:uppercase}.tl-timeline .tl-menubar{font-family:'PT Sans Narrow',sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'PT Serif',serif;font-style:italic;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'PT Sans Narrow',sans-serif;text-transform:uppercase;font-weight:700;font-size:46px;line-height:46px}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-weight:normal}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.roboto-megrim.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.roboto-megrim.css
new file mode 100755
index 000000000..5bc859acd
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.roboto-megrim.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Megrim);@import url(//fonts.googleapis.com/css?family=Roboto+Slab:400,300);.tl-timeline{font-family:'Roboto Slab',Georgia,serif;font-weight:300;font-size:17px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Megrim','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;text-transform:normal;font-weight:400;font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'Roboto Slab',Georgia,serif;font-size:17px;line-height:1.3em}.tl-timeline ul{font-family:'Roboto Slab',Georgia,serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Roboto Slab',Georgia,serif;font-weight:400;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Roboto Slab',Georgia,serif}.tl-timeline .vcard{font-family:'Megrim','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Megrim','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400;text-transform:normal}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Roboto Slab',Georgia,serif !important;font-weight:normal !important;text-transform:normal !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Megrim','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Megrim','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400;text-transform:normal}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Megrim','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400;text-transform:normal}.tl-timeline .tl-menubar{font-family:'Megrim','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Roboto Slab',Georgia,serif;font-style:normal;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Megrim','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;text-transform:normal;font-weight:400;font-size:46px;line-height:46px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.rufina-sintony.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.rufina-sintony.css
new file mode 100755
index 000000000..a7ffa794c
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.rufina-sintony.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Rufina:400,700|Sintony:400,700);.tl-timeline{font-family:'Sintony',sans-serif;font-weight:400;font-size:15px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Rufina',serif;text-transform:none;font-weight:700;font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'Sintony',sans-serif;font-size:15px;line-height:1.3em}.tl-timeline ul{font-family:'Sintony',sans-serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Sintony',sans-serif;font-weight:700;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Sintony',sans-serif}.tl-timeline .vcard{font-family:'Sintony',sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Sintony',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Sintony',sans-serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Sintony',sans-serif;font-weight:700}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Sintony',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Sintony',sans-serif;font-weight:700;text-transform:none}.tl-timeline .tl-menubar{font-family:'Sintony',sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Sintony',sans-serif;font-style:normal;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Rufina',serif;text-transform:none;font-weight:700;font-size:46px;line-height:46px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.ubuntu.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.ubuntu.css
new file mode 100755
index 000000000..1c8924b34
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.ubuntu.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Ubuntu:300,500,300italic);.tl-timeline{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:300;font-size:17px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;text-transform:none;font-weight:500;font-size:40px;line-height:40px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-size:17px;line-height:1.3em}.tl-timeline ul{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:500;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif}.tl-timeline .vcard{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:500;text-transform:none}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important;text-transform:none !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:500}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:500;text-transform:none}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:500;text-transform:none}.tl-timeline .tl-menubar{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-style:italic;font-weight:300;line-height:1.3}input[type="text"].editor-headline{font-family:'Ubuntu','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;text-transform:none;font-weight:500;font-size:40px;line-height:40px}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{margin-bottom:5px !important}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.unicaone-vollkorn.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.unicaone-vollkorn.css
new file mode 100755
index 000000000..5bff64e71
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/fonts/font.unicaone-vollkorn.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+@import url(//fonts.googleapis.com/css?family=Vollkorn:400italic,400);@import url(//fonts.googleapis.com/css?family=Unica+One);.tl-timeline{font-family:'Vollkorn',Georgia,serif;font-weight:400;font-size:17px;line-height:1.3em}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;text-transform:uppercase;font-weight:400;font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title{font-size:58px;line-height:58px}.tl-timeline p{font-family:'Vollkorn',Georgia,serif;font-size:17px;line-height:1.3em}.tl-timeline ul{font-family:'Vollkorn',Georgia,serif}.tl-timeline .tl-media .tl-media-wikipedia h4 a,.tl-timeline .tl-media h4,.tl-timeline .tl-media h4 a{font-family:'Vollkorn',Georgia,serif;font-weight:400;font-size:24px;line-height:24px}.tl-timeline .tl-caption,.tl-timeline .tl-credit{font-family:'Vollkorn',Georgia,serif}.tl-timeline .vcard{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important}.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous,.tl-timeline .tl-message,.tl-timeline .tl-timegroup-message{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400;text-transform:uppercase}.tl-timeline .tl-slidenav-next .tl-slidenav-title,.tl-timeline .tl-slidenav-previous .tl-slidenav-title,.tl-timeline .tl-message .tl-slidenav-title,.tl-timeline .tl-timegroup-message .tl-slidenav-title{line-height:1.3em !important}.tl-timeline .tl-headline-date,.tl-timeline h3.tl-headline-date{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif !important;font-weight:normal !important;text-transform:uppercase !important}.tl-timeline .tl-headline-date small,.tl-timeline h3.tl-headline-date small{font-weight:normal !important}.tl-timeline .tl-timenav-slider{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400}.tl-timeline .tl-timenav-slider h2.tl-headline{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400;text-transform:uppercase}.tl-timeline .tl-timenav-slider .tl-timeaxis{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;font-weight:400;text-transform:uppercase}.tl-timeline .tl-menubar{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:'Vollkorn',Georgia,serif;font-style:italic;font-weight:400;line-height:1.3}input[type="text"].editor-headline{font-family:'Unica One','Helvetica Neue',Helvetica,Arial,"MS Trebuchet",sans-serif;text-transform:uppercase;font-weight:400;font-size:46px;line-height:46px}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/icons.html b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/icons.html
new file mode 100755
index 000000000..91f029970
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/icons.html
@@ -0,0 +1,1117 @@
+
+
+
+
+ IcoMoon Demo
+
+
+
+
+
+
+ Font Name: tl-icons (Glyphs: 53)
+
+
+ Grid Size: 14
+
+
+ icon-vine
+
+
+
+ liga:
+
+
+
+
+
+ icon-wikipedia
+
+
+
+ liga:
+
+
+
+
+
+ icon-chevron-right
+
+
+
+ liga:
+
+
+
+
+
+ icon-chevron-left
+
+
+
+ liga:
+
+
+
+
+
+ icon-youtube
+
+
+
+ liga:
+
+
+
+
+
+ icon-foursquare
+
+
+
+ liga:
+
+
+
+
+
+ icon-camera-retro
+
+
+
+ liga:
+
+
+
+
+
+ icon-doc
+
+
+
+ liga:
+
+
+
+
+
+ icon-weibo
+
+
+
+ liga:
+
+
+
+
+
+ icon-resize-horizontal
+
+
+
+ liga:
+
+
+
+
+
+ icon-resize-vertical
+
+
+
+ liga:
+
+
+
+
+
+ icon-resize-full
+
+
+
+ liga:
+
+
+
+
+
+ icon-resize-small
+
+
+
+ liga:
+
+
+
+
+
+ Grid Size: 16
+
+
+ icon-twitter
+
+
+
+ liga:
+
+
+
+
+
+ icon-google-plus
+
+
+
+ liga:
+
+
+
+
+
+ icon-video
+
+
+
+ liga:
+
+
+
+
+
+ icon-plaintext
+
+
+
+ liga:
+
+
+
+
+
+ icon-image-v2
+
+
+
+ liga:
+
+
+
+
+
+ icon-quote-v2
+
+
+
+ liga:
+
+
+
+
+
+ icon-zoom-in
+
+
+
+ liga:
+
+
+
+
+
+ icon-zoom-out
+
+
+
+ liga:
+
+
+
+
+
+ icon-list
+
+
+
+ liga:
+
+
+
+
+
+ icon-music
+
+
+
+ liga:
+
+
+
+
+
+ icon-location
+
+
+
+ liga:
+
+
+
+
+
+ icon-web
+
+
+
+ liga:
+
+
+
+
+
+ icon-share-v2
+
+
+
+ liga:
+
+
+
+
+
+ icon-soundcloud
+
+
+
+ liga:
+
+
+
+
+
+ icon-video-v2
+
+
+
+ liga:
+
+
+
+
+
+ icon-tumblr
+
+
+
+ liga:
+
+
+
+
+
+ icon-lastfm
+
+
+
+ liga:
+
+
+
+
+
+ icon-github
+
+
+
+ liga:
+
+
+
+
+
+ icon-goback
+
+
+
+ liga:
+
+
+
+
+
+ icon-doc-v2
+
+
+
+ liga:
+
+
+
+
+
+ icon-googledrive
+
+
+
+ liga:
+
+
+
+
+
+ icon-facebook
+
+
+
+ liga:
+
+
+
+
+
+ icon-flickr
+
+
+
+ liga:
+
+
+
+
+
+ icon-dribbble
+
+
+
+ liga:
+
+
+
+
+
+ icon-image
+
+
+
+ liga:
+
+
+
+
+
+ icon-vimeo
+
+
+
+ liga:
+
+
+
+
+
+ Grid Size: 20
+
+
+ icon-instagram
+
+
+
+ liga:
+
+
+
+
+
+ icon-pinterest
+
+
+
+ liga:
+
+
+
+
+
+ icon-arrow-left
+
+
+
+ liga:
+
+
+
+
+
+ icon-arrow-down
+
+
+
+ liga:
+
+
+
+
+
+ icon-arrow-up
+
+
+
+ liga:
+
+
+
+
+
+ icon-arrow-right
+
+
+
+ liga:
+
+
+
+
+
+ icon-share
+
+
+
+ liga:
+
+
+
+
+
+ icon-quote
+
+
+
+ liga:
+
+
+
+
+
+ icon-evernote
+
+
+
+ liga:
+
+
+
+
+
+ Grid Size: Unknown
+
+
+ icon-mappin
+
+
+
+ liga:
+
+
+
+
+
+ icon-swipe-right
+
+
+
+ liga:
+
+
+
+
+
+ icon-swipe-left
+
+
+
+ liga:
+
+
+
+
+
+ icon-touch-spread
+
+
+
+ liga:
+
+
+
+
+
+ icon-touch-pinch
+
+
+
+ liga:
+
+
+
+
+
+
+
+ Font Test Drive
+
+
+
+
+
+
+
+
+ Generated by IcoMoon
+
+
+
+
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/tl-icons.eot b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/tl-icons.eot
new file mode 100755
index 000000000..179ed2d3d
Binary files /dev/null and b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/tl-icons.eot differ
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/tl-icons.svg b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/tl-icons.svg
new file mode 100755
index 000000000..ff7e2e20b
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/tl-icons.svg
@@ -0,0 +1,63 @@
+
+
+
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/tl-icons.ttf b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/tl-icons.ttf
new file mode 100755
index 000000000..74eb8c4ab
Binary files /dev/null and b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/tl-icons.ttf differ
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/tl-icons.woff b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/tl-icons.woff
new file mode 100755
index 000000000..d065e98ec
Binary files /dev/null and b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/icons/tl-icons.woff differ
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/themes/timeline.theme.dark.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/themes/timeline.theme.dark.css
new file mode 100755
index 000000000..ac411a5b1
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/themes/timeline.theme.dark.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+.tl-storyjs div *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.tl-storyjs .active,.tl-storyjs .caption,.tl-storyjs .content-container,.tl-storyjs .credit,.tl-storyjs .date,.tl-storyjs .dot,.tl-storyjs .era,.tl-storyjs .flag,.tl-storyjs .line,.tl-storyjs .major,.tl-storyjs .map,.tl-storyjs .marker,.tl-storyjs .media,.tl-storyjs .message,.tl-storyjs .minor,.tl-storyjs .slider,.tl-storyjs .start,.tl-storyjs .text,.tl-storyjs .time,.tl-storyjs .title,.tl-storyjs .tl-container,.tl-storyjs .tl-feature,.tl-storyjs .tl-feedback,.tl-storyjs .tl-navigation,.tl-storyjs .tl-slider,.tl-storyjs .toolbar,.tl-storyjs a,.tl-storyjs abbr,.tl-storyjs acronym,.tl-storyjs address,.tl-storyjs blockquote,.tl-storyjs button,.tl-storyjs caption,.tl-storyjs cite,.tl-storyjs code,.tl-storyjs dd,.tl-storyjs del,.tl-storyjs dfn,.tl-storyjs dl,.tl-storyjs dt,.tl-storyjs em,.tl-storyjs fieldset,.tl-storyjs form,.tl-storyjs h1,.tl-storyjs h2,.tl-storyjs h3,.tl-storyjs h4,.tl-storyjs h5,.tl-storyjs h6,.tl-storyjs img,.tl-storyjs label,.tl-storyjs legend,.tl-storyjs li,.tl-storyjs ol,.tl-storyjs p,.tl-storyjs pre,.tl-storyjs q,.tl-storyjs s,.tl-storyjs samp,.tl-storyjs small,.tl-storyjs strike,.tl-storyjs strong,.tl-storyjs sub,.tl-storyjs sup,.tl-storyjs table,.tl-storyjs tbody,.tl-storyjs td,.tl-storyjs tfoot,.tl-storyjs th,.tl-storyjs thead,.tl-storyjs tr,.tl-storyjs tt,.tl-storyjs ul,.tl-storyjs var{margin:0;padding:0;border:0;font-weight:400;font-style:normal;font-size:100%;line-height:1;font-family:inherit;width:auto;float:none}.tl-storyjs h1,.tl-storyjs h2,.tl-storyjs h3,.tl-storyjs h4,.tl-storyjs h5,.tl-storyjs h6{clear:none}.tl-storyjs table{border-collapse:collapse;border-spacing:0}.tl-storyjs ol,.tl-storyjs ul{list-style:none}.tl-storyjs blockquote:after,.tl-storyjs blockquote:before,.tl-storyjs q:after,.tl-storyjs q:before{content:""}.tl-storyjs a:focus{outline:thin dotted}.tl-storyjs a:active,.tl-storyjs a:hover{outline:0}.tl-storyjs article,.tl-storyjs aside,.tl-storyjs details,.tl-storyjs figcaption,.tl-storyjs figure,.tl-storyjs footer,.tl-storyjs header,.tl-storyjs hgroup,.tl-storyjs nav,.tl-storyjs section{display:block}.tl-storyjs audio,.tl-storyjs canvas,.tl-storyjs video{display:inline-block}.tl-storyjs audio:not([controls]){display:none}.tl-storyjs div{max-width:none}.tl-storyjs sub,.tl-storyjs sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.tl-storyjs sup{top:-.5em}.tl-storyjs sub{bottom:-.25em}.tl-storyjs img{border:0;-ms-interpolation-mode:bicubic}.tl-storyjs button,.tl-storyjs input,.tl-storyjs select,.tl-storyjs textarea{font-size:100%;margin:0;vertical-align:baseline}.tl-storyjs button,.tl-storyjs input{line-height:normal}.tl-storyjs button::-moz-focus-inner,.tl-storyjs input::-moz-focus-inner{border:0;padding:0}.tl-storyjs button,.tl-storyjs input[type=button],.tl-storyjs input[type=reset],.tl-storyjs input[type=submit]{cursor:pointer;-webkit-appearance:button}.tl-storyjs input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.tl-storyjs input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.tl-storyjs textarea{overflow:auto;vertical-align:top}.tl-timeline{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{color:#FFF}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3{font-size:36px;line-height:36px}.tl-timeline h1 small,.tl-timeline h2 small,.tl-timeline h3 small{font-size:24px;line-height:24px}.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-size:24px;line-height:24px;margin-bottom:0}.tl-timeline h4 small,.tl-timeline h5 small,.tl-timeline h6 small{font-size:15px;line-height:15px}.tl-timeline h2.tl-headline-title{font-size:46px;line-height:46px}.tl-timeline h2.tl-headline-title small{display:block;margin-top:5px;font-size:24px;line-height:24px}.tl-timeline h2{margin-top:20px;margin-bottom:5px}.tl-timeline p{margin-top:5px;margin-bottom:10px;font-size:15px;line-height:1.42857143;color:#fff}.tl-timeline p.lead{font-size:24px}.tl-timeline p a{color:#fff;text-decoration:underline}.tl-timeline p a:focus,.tl-timeline p a:hover{color:#c34528}@media (-webkit-min-device-pixel-ratio:1.5),(min-resolution:144dpi){.tl-timeline p a{text-decoration:underline;background-image:none;text-shadow:none}.tl-timeline p a:focus,.tl-timeline p a:hover{color:#c34528;text-decoration:underline}}.tl-timeline b,.tl-timeline strong{font-weight:700}.tl-timeline em,.tl-timeline i{font-style:italic}.tl-timeline a{text-decoration:none;color:#c34528}.tl-timeline a:hover{text-decoration:underline;color:#6e2717}.tl-timeline .tl-caption,.tl-timeline .tl-credit,.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous{font-size:11px;line-height:11px}.tl-timeline .tl-caption a,.tl-timeline .tl-credit a,.tl-timeline .tl-slidenav-next a,.tl-timeline .tl-slidenav-previous a{color:#FFF}.tl-timeline .tl-makelink{word-break:break-all;word-break:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:Georgia,Times New Roman,Times,serif;color:#fff;font-size:24px;line-height:24px;text-align:left;background:0 0;border:0;padding:0}.tl-timeline blockquote cite,.tl-timeline blockquote p cite{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:11px;color:#fff;display:block;text-align:right;font-style:normal}.tl-timeline blockquote cite:before,.tl-timeline blockquote p cite:before{content:"\2014"}.tl-timeline blockquote p:before{content:open-quote;display:inline-block;font-size:36px;position:relative;top:8px;margin-right:5px}.tl-timeline blockquote p:after{content:close-quote;display:inline-block;font-size:36px;position:relative;top:8px;margin-left:3px}.tl-timeline blockquote{margin:10px}.tl-timeline blockquote p{margin:0}.tl-timeline .vcard{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:15px;margin-bottom:15px;margin-top:10px}.tl-timeline .vcard:after,.tl-timeline .vcard:before{display:table;content:""}.tl-timeline .vcard:after{clear:both}.tl-timeline .vcard .twitter-date{text-align:left;font-size:11px}.tl-timeline .vcard .author{float:right}.tl-timeline .vcard a{color:#fff;text-decoration:none}.tl-timeline .vcard a:hover{text-decoration:none}.tl-timeline .vcard a:hover .fn,.tl-timeline .vcard a:hover .nickname{color:#c34528}.tl-timeline .vcard .fn,.tl-timeline .vcard .nickname{padding-left:42px}.tl-timeline .vcard .fn{display:block;font-weight:700}.tl-timeline .vcard .nickname{margin-top:1px;display:block;color:#fff}.tl-timeline .vcard .avatar{float:left;display:block;width:32px;height:32px}.tl-timeline .vcard .avatar img{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.tl-timeline .tl-text ul{padding:0;padding-left:30px;margin:0}.tl-timeline .tl-text ul li{margin-bottom:5px}.tl-timeline .tl-button-calltoaction{cursor:pointer;font-weight:700;padding-top:10px;margin-bottom:10px;padding-bottom:10px}.tl-timeline .tl-button-calltoaction .tl-button-calltoaction-text{display:inline-block;background-color:#c34528;color:#fff;padding:10px 15px 10px 15px;border-radius:7px}.tl-timeline .tl-note{display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:italic;background-color:#fff;font-size:15px;line-height:17px;padding:10px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;color:#8a6d3b;background-color:#fcf8e3;border:1px solid #faebcc;text-shadow:none}@media only screen and (max-width:800px),only screen and (max-device-width:800px){.tl-timeline h1,.tl-timeline h2,.tl-timeline h3{font-size:36px;line-height:36px}}@media only screen and (max-width:500px),only screen and (max-device-width:500px){.tl-timeline h1,.tl-timeline h2,.tl-timeline h3{font-size:32px;line-height:32px}}.tl-skinny h2{margin-top:0}@font-face{font-family:tl-icons;src:url(../icons/tl-icons.eot);src:url(../icons/tl-icons.eot?#iefix) format('embedded-opentype'),url(../icons/tl-icons.ttf) format('truetype'),url(../icons/tl-icons.woff) format('woff'),url(../icons/tl-icons.svg#tl-icons) format('svg');font-weight:400;font-style:normal}[class*=" tl-icon-"],[class^=tl-icon-]{font-family:tl-icons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tl-icon-vine:after{content:"\e64d"}.tl-icon-wikipedia:after{content:"\e64e"}.tl-icon-chevron-right:after{content:"\e64f"}.tl-icon-chevron-left:after{content:"\e650"}.tl-icon-youtube-logo:after{content:"\e651"}.tl-icon-foursquare:after{content:"\e652"}.tl-icon-camera-retro:after{content:"\e653"}.tl-icon-doc:after{content:"\e654"}.tl-icon-weibo:after{content:"\e655"}.tl-icon-resize-horizontal:after{content:"\e656"}.tl-icon-resize-vertical:after{content:"\e657"}.tl-icon-resize-full:after{content:"\e658"}.tl-icon-resize-small:after{content:"\e659"}.tl-icon-twitter:after{content:"\e62b"}.tl-icon-google-plus:after{content:"\e62c"}.tl-icon-video:after{content:"\e62d"}.tl-icon-youtube:after{content:"\e62d"}.tl-icon-plaintext:after{content:"\e62e"}.tl-icon-storify:after{content:"\e62e"}.tl-icon-image-v2:after{content:"\e62f"}.tl-icon-quote-v2:after{content:"\e630"}.tl-icon-zoom-in:after{content:"\e631"}.tl-icon-zoom-out:after{content:"\e632"}.tl-icon-list:after{content:"\e633"}.tl-icon-music:after{content:"\e634"}.tl-icon-spotify:after{content:"\e634"}.tl-icon-location:after{content:"\e635"}.tl-icon-googlemaps:after{content:"\e635"}.tl-icon-web:after{content:"\e636"}.tl-icon-share-v2:after{content:"\e637"}.tl-icon-soundcloud:after{content:"\e639"}.tl-icon-video-v2:after{content:"\e63a"}.tl-icon-dailymotion:after{content:"\e63a"}.tl-icon-tumblr:after{content:"\e63b"}.tl-icon-lastfm:after{content:"\e63c"}.tl-icon-github:after{content:"\e63d"}.tl-icon-goback:after{content:"\e63e"}.tl-icon-doc-v2:after{content:"\e63f"}.tl-icon-googledrive:after{content:"\e640"}.tl-icon-facebook:after{content:"\e641"}.tl-icon-flickr:after{content:"\e642"}.tl-icon-dribbble:after{content:"\e643"}.tl-icon-image:after{content:"\e605"}.tl-icon-vimeo:after{content:"\e606"}.tl-icon-instagram:after{content:"\e644"}.tl-icon-pinterest:after{content:"\e645"}.tl-icon-arrow-left:after{content:"\e646"}.tl-icon-arrow-down:after{content:"\e647"}.tl-icon-arrow-up:after{content:"\e648"}.tl-icon-arrow-right:after{content:"\e649"}.tl-icon-share:after{content:"\e64a"}.tl-icon-blockquote:after{content:"\e64b"}.tl-icon-evernote:after{content:"\e64c"}.tl-icon-mappin:after{content:"\e600"}.tl-icon-swipe-right:after{content:"\e601"}.tl-icon-swipe-left:after{content:"\e602"}.tl-icon-touch-spread:after{content:"\e603"}.tl-icon-touch-pinch:after{content:"\e604"}.tl-dragging{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.tl-menubar{position:absolute;z-index:11;text-align:center;color:#333;overflow:hidden;border-bottom-right-radius:10px;border-top-right-radius:10px;top:100%;left:50%;left:0}@keyframes invertToBlack{from{background-color:#FFF}to{background-color:#000}}@-webkit-keyframes invertToBlack{from{background:#FFF}to{background:#000}}@keyframes invertToWhite{from{background-color:#000}to{background-color:#FFF}}@-webkit-keyframes invertToWhite{from{background:#000}to{background:#FFF}}.tl-menubar-button{font-size:18px;line-height:18px;background-color:rgba(77,77,77,.9);cursor:pointer;padding:6px 12px 6px 12px;display:inline-block;display:block;color:#000}.tl-menubar-button.tl-menubar-button-inactive{opacity:.33}.tl-menubar-button:hover{background:#CCC;color:#333}.tl-menubar-button:hover.tl-menubar-button-inactive{color:#000;background-color:rgba(77,77,77,.9)}.tl-mobile .tl-menubar-button{display:block}.tl-mobile .tl-menubar-button:hover{background-color:rgba(77,77,77,.67);color:grey}.tl-mobile .tl-menubar-button:active{background:#c34528;color:#333}@keyframes invertToBlack{from{background-color:#FFF}to{background-color:#000}}@-webkit-keyframes invertToBlack{from{background:#FFF}to{background:#000}}@keyframes invertToWhite{from{background-color:#000}to{background-color:#FFF}}@-webkit-keyframes invertToWhite{from{background:#000}to{background:#FFF}}.tl-message,.tl-message-full{width:100%;height:100%;position:absolute;display:table;overflow:hidden;top:0;left:0;z-index:99;margin:auto;text-align:center}.tl-message .tl-message-container,.tl-message-full .tl-message-container{padding:20px;margin:20px;text-align:center;vertical-align:middle;display:table-cell}.tl-message .tl-message-container .tl-message-content,.tl-message-full .tl-message-container .tl-message-content{color:#666;text-align:center;font-size:11px;line-height:13px;text-transform:uppercase;margin-top:7.5px;margin-bottom:7.5px;text-shadow:1px 1px 1px #FFF}.tl-message .tl-message-container .tl-message-content strong,.tl-message-full .tl-message-container .tl-message-content strong{text-transform:uppercase}.tl-message .tl-message-container .tl-loading-icon,.tl-message-full .tl-message-container .tl-loading-icon{width:30px;height:30px;background-color:#666;vertical-align:middle;-webkit-box-shadow:inset 0 1px 2px rgba(255,255,255,.1);-moz-box-shadow:inset 0 1px 2px rgba(255,255,255,.1);box-shadow:inset 0 1px 2px rgba(255,255,255,.1);margin-left:auto;margin-right:auto;text-align:center;-webkit-animation:rotateplane 1.2s infinite ease-in-out;animation:rotateplane 1.2s infinite ease-in-out}@-webkit-keyframes rotateplane{0%{-webkit-transform:perspective(120px)}50%{-webkit-transform:perspective(120px) rotateY(180deg)}100%{-webkit-transform:perspective(120px) rotateY(180deg) rotateX(180deg)}}@keyframes rotateplane{0%{transform:perspective(120px) rotateX(0) rotateY(0)}50%{transform:perspective(120px) rotateX(-180.1deg) rotateY(0)}100%{transform:perspective(120px) rotateX(-180deg) rotateY(-179.9deg)}}.tl-message-full{background-color:rgba(255,255,255,.8)}.tl-message-full [class*=" tl-icon-"],.tl-message-full [class^=tl-icon-]{color:#666;font-size:72px}.tl-message-full .tl-message-container .tl-message-content{font-size:22px;line-height:22px;text-shadow:none;color:#666;text-transform:none;font-weight:400}.tl-message-full .tl-message-container .tl-message-content .tl-button{display:inline-block;cursor:pointer;background-color:#FFF;color:#333;padding:10px;margin-top:10px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.tl-timenav{width:100%;background-color:#4d4d4d;position:relative;overflow:hidden;border-top:1px solid #404040}.tl-timenav .tl-attribution{cursor:pointer;z-index:9;position:absolute;bottom:2px;left:0;font-size:10px;line-height:10px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;background-color:rgba(51,51,51,.85);padding:3px}.tl-timenav .tl-attribution a{color:#737373}.tl-timenav .tl-attribution a:hover{color:#FFF;text-decoration:none}.tl-timenav .tl-attribution a:hover .tl-knightlab-logo{background-color:#c34528}.tl-timenav .tl-attribution .tl-knightlab-logo{display:inline-block;vertical-align:middle;height:8px;width:8px;margin-right:3px;background-color:#c34528;background-color:#737373;transform:rotate(45deg);-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg)}.tl-timenav .tl-timenav-line{position:absolute;top:0;left:50%;width:1px;height:100%;background-color:#333;z-index:2;display:none}.tl-timenav .tl-timenav-line:after,.tl-timenav .tl-timenav-line:before{font-family:tl-icons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#c34528;font-size:32px;line-height:32px;position:absolute;left:-14px}.tl-timenav .tl-timenav-line:before{top:-10px}.tl-timenav .tl-timenav-line:after{content:"\e648";bottom:24px}.tl-timenav .tl-timenav-slider{position:absolute;height:100%;width:100%;top:0}.tl-timenav .tl-timenav-slider.tl-timenav-slider-animate{-webkit-transition:all 1s cubic-bezier(.77,0,.175,1);-moz-transition:all 1s cubic-bezier(.77,0,.175,1);-o-transition:all 1s cubic-bezier(.77,0,.175,1);transition:all 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timenav .tl-timenav-slider .tl-timenav-slider-background{position:absolute;height:100%;width:100%;cursor:move;z-index:6}.tl-timenav .tl-timenav-slider .tl-timenav-container-mask{position:absolute;height:100%;top:0}.tl-timenav .tl-timenav-slider .tl-timenav-container-mask .tl-timenav-container{position:absolute;height:100%}.tl-timenav .tl-timenav-slider .tl-timenav-container-mask .tl-timenav-container .tl-timenav-item-container{position:absolute;height:100%}.tl-timemarker{height:100%;position:absolute;top:0;left:0;cursor:pointer;-webkit-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-moz-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-o-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timemarker.tl-timemarker-fast{-webkit-transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-moz-transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-o-transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timemarker.tl-timemarker-fast .tl-timemarker-content-container{-webkit-transition:width .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1);-moz-transition:width .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1);-o-transition:width .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1);transition:width .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1)}.tl-timemarker.tl-timemarker-fast .tl-timemarker-timespan{-webkit-transition:height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-moz-transition:height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-o-transition:height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);transition:height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1)}.tl-timemarker .tl-timemarker-timespan{pointer-events:none;position:absolute;margin:0;width:100%;height:100%;background-color:rgba(38,38,38,.15);border-top-right-radius:5px;border-top-left-radius:5px;-webkit-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-moz-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-o-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timemarker .tl-timemarker-timespan .tl-timemarker-timespan-content{display:none;position:absolute;width:100%;background-color:#262626;border-top-left-radius:5px;border-top-right-radius:5px;height:100px;box-sizing:border-box}.tl-timemarker .tl-timemarker-line-right{display:none;right:0}.tl-timemarker .tl-timemarker-line-left{width:1px;left:0}.tl-timemarker .tl-timemarker-line-left,.tl-timemarker .tl-timemarker-line-right{margin-top:7px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-left:1px solid #0d0d0d;z-index:5;content:" ";position:absolute;height:100%;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-shadow:1px 1px 1px #333}.tl-timemarker .tl-timemarker-line-left:after,.tl-timemarker .tl-timemarker-line-right:after{display:block;content:" ";position:absolute;left:-4px;bottom:0;height:6px;width:6px;background-color:#000;z-index:8;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%}.tl-timemarker .tl-timemarker-content-container{position:absolute;background-color:#262626;border:0;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;height:100%;width:100px;overflow:hidden;z-index:6;-webkit-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-moz-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-o-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1);box-sizing:border-box;border:1px solid #0d0d0d;box-shadow:1px 1px 1px #333}.tl-timemarker .tl-timemarker-content-container:hover{z-index:9}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content{position:relative;overflow:hidden;height:100%;z-index:8;padding:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text{overflow:hidden;position:relative}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline,.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline p{display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;box-orient:vertical;-webkit-box-orient:vertical;text-overflow:ellipsis;font-size:12px;line-height:12px;height:100%;overflow:hidden;font-weight:400;margin:0;color:#4d4d4d;position:relative}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline p.tl-headline-fadeout:after,.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline.tl-headline-fadeout:after{content:"";text-align:right;position:absolute;bottom:0;right:0;width:100%;height:50%;background:-moz-linear-gradient(top,rgba(38,38,38,0) 0,#262626 50%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(38,38,38,0)),color-stop(50%,#262626));background:-webkit-linear-gradient(top,rgba(38,38,38,0) 0,#262626 50%);background:-o-linear-gradient(top,rgba(38,38,38,0) 0,#262626 50%);background:-ms-linear-gradient(top,rgba(38,38,38,0) 0,#262626 50%);background:linear-gradient(to bottom,rgba(38,38,38,0) 0,#262626 50%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@thecolor', endColorstr='@thecolor', GradientType=0)}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container{float:left;max-width:24px;max-height:24px;overflow:hidden;margin-right:5px;height:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container .tl-timemarker-media{max-width:24px;max-height:100%;opacity:.25}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container [class*=" tl-icon-"],.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container [class^=tl-icon-]{display:block;font-size:24px;color:#4d4d4d;margin-top:0}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container .tl-icon-wikipedia{font-size:16px}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content.tl-timemarker-content-small .tl-timemarker-text h2.tl-headline{display:block;white-space:nowrap;text-overflow:ellipsis}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content.tl-timemarker-content-small .tl-timemarker-media-container [class*=" tl-icon-"],.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content.tl-timemarker-content-small .tl-timemarker-media-container [class^=tl-icon-]{font-size:12px}.tl-timemarker:hover .tl-timemarker-timespan{background-color:rgba(77,77,77,.15)}.tl-timemarker:hover .tl-timemarker-timespan .tl-timemarker-timespan-content{background-color:#4d4d4d}.tl-timemarker:hover .tl-timemarker-timespan .tl-timemarker-line-left,.tl-timemarker:hover .tl-timemarker-timespan .tl-timemarker-line-right{border-color:#000}.tl-timemarker:hover .tl-timemarker-timespan .tl-timemarker-line-left:after,.tl-timemarker:hover .tl-timemarker-timespan .tl-timemarker-line-right:after{background-color:#fff}.tl-timemarker:hover .tl-timemarker-content-container{background-color:#000;border-color:#000;-webkit-transition:height 250ms cubic-bezier(.77,0,.175,1),width 250ms cubic-bezier(.77,0,.175,1);-moz-transition:height 250ms cubic-bezier(.77,0,.175,1),width 250ms cubic-bezier(.77,0,.175,1);-o-transition:height 250ms cubic-bezier(.77,0,.175,1),width 250ms cubic-bezier(.77,0,.175,1);transition:height 250ms cubic-bezier(.77,0,.175,1),width 250ms cubic-bezier(.77,0,.175,1)}.tl-timemarker:hover .tl-timemarker-content-container.tl-timemarker-content-container-small{width:200px}.tl-timemarker:hover .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline{color:#FFF}.tl-timemarker:hover .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline.tl-headline-fadeout:after{background:-moz-linear-gradient(top,rgba(0,0,0,0) 0,#000 80%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(0,0,0,0)),color-stop(80%,#000));background:-webkit-linear-gradient(top,rgba(0,0,0,0) 0,#000 80%);background:-o-linear-gradient(top,rgba(0,0,0,0) 0,#000 80%);background:-ms-linear-gradient(top,rgba(0,0,0,0) 0,#000 80%);background:linear-gradient(to bottom,rgba(0,0,0,0) 0,#000 80%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@thecolor', endColorstr='@thecolor', GradientType=0)}.tl-timemarker:hover .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container .tl-timemarker-media{opacity:1}.tl-timemarker:hover .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container [class*=" tl-icon-"],.tl-timemarker:hover .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container [class^=tl-icon-]{color:#FFF}.tl-timemarker:hover.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline.tl-headline-fadeout:after{background:-moz-linear-gradient(top,rgba(51,51,51,0) 0,#333 80%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(51,51,51,0)),color-stop(80%,#333));background:-webkit-linear-gradient(top,rgba(51,51,51,0) 0,#333 80%);background:-o-linear-gradient(top,rgba(51,51,51,0) 0,#333 80%);background:-ms-linear-gradient(top,rgba(51,51,51,0) 0,#333 80%);background:linear-gradient(to bottom,rgba(51,51,51,0) 0,#333 80%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@thecolor', endColorstr='@thecolor', GradientType=0)}.tl-timemarker:hover.tl-timemarker-active .tl-timemarker-line-left,.tl-timemarker:hover.tl-timemarker-active .tl-timemarker-line-right{border-color:#FFF}.tl-timemarker:hover.tl-timemarker-active .tl-timemarker-line-left:after,.tl-timemarker:hover.tl-timemarker-active .tl-timemarker-line-right:after{background-color:#FFF}.tl-timemarker.tl-timemarker-active .tl-timemarker-timespan{background-color:rgba(51,51,51,.5);z-index:8}.tl-timemarker.tl-timemarker-active .tl-timemarker-timespan .tl-timemarker-timespan-content{background-color:#CCC}.tl-timemarker.tl-timemarker-active .tl-timemarker-line-left,.tl-timemarker.tl-timemarker-active .tl-timemarker-line-right{border-color:rgba(204,204,204,.5);border-width:1px;z-index:8;box-shadow:0 1px 3px rgba(0,0,0,.5)}.tl-timemarker.tl-timemarker-active .tl-timemarker-line-left:after,.tl-timemarker.tl-timemarker-active .tl-timemarker-line-right:after{background-color:#CCC}.tl-timemarker.tl-timemarker-active .tl-timemarker-content-container{background-color:#333;color:#CCC;z-index:9;border-color:rgba(204,204,204,.5);box-shadow:1px 1px 3px rgba(0,0,0,.5)}.tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline{color:#CCC}.tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline.tl-headline-fadeout:after{background:-moz-linear-gradient(top,rgba(51,51,51,0) 0,#333 80%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(51,51,51,0)),color-stop(80%,#333));background:-webkit-linear-gradient(top,rgba(51,51,51,0) 0,#333 80%);background:-o-linear-gradient(top,rgba(51,51,51,0) 0,#333 80%);background:-ms-linear-gradient(top,rgba(51,51,51,0) 0,#333 80%);background:linear-gradient(to bottom,rgba(51,51,51,0) 0,#333 80%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@thecolor', endColorstr='@thecolor', GradientType=0)}.tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container .tl-timemarker-media{opacity:1}.tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container [class*=" tl-icon-"],.tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container [class^=tl-icon-]{color:#CCC}.tl-timemarker.tl-timemarker-with-end .tl-timemarker-timespan .tl-timemarker-timespan-content{display:block}.tl-timemarker.tl-timemarker-with-end .tl-timemarker-timespan .tl-timemarker-line-left,.tl-timemarker.tl-timemarker-with-end .tl-timemarker-timespan .tl-timemarker-line-right{z-index:5}.tl-timemarker.tl-timemarker-with-end .tl-timemarker-timespan:after{display:block;content:" ";position:absolute;left:0;bottom:-7px;height:6px;width:100%;background-color:rgba(0,0,0,.15);z-index:6;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.tl-timemarker.tl-timemarker-with-end .tl-timemarker-content-container.tl-timemarker-content-container-long{box-shadow:none}.tl-timemarker.tl-timemarker-with-end .tl-timemarker-line-right{display:block}.tl-timemarker.tl-timemarker-with-end .tl-timemarker-line-left{box-shadow:none}.tl-timemarker.tl-timemarker-with-end:hover .tl-timemarker-timespan:after{background-color:rgba(0,0,0,.25)}.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active .tl-timemarker-timespan:after{background-color:rgba(204,204,204,.5)}.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active .tl-timemarker-line-left,.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active .tl-timemarker-line-right{border-width:1px}.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active .tl-timemarker-line-left:after,.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active .tl-timemarker-line-right:after{background-color:#CCC!important}.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active .tl-timemarker-line-left{box-shadow:none}.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active:hover .tl-timemarker-timespan:after{background-color:rgba(204,204,204,.5)}.tl-timeera{height:100%;height:40px;position:absolute;bottom:0;left:0;pointer-events:none;z-index:3;-webkit-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-moz-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-o-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timeera.tl-timeera-fast{-webkit-transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-moz-transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-o-transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timeera .tl-timeera-background{position:absolute;background-color:#28a6c3;width:100%;height:100%;opacity:1}.tl-timeera.tl-timeera-color0 .tl-timeera-background{background-color:#c34528}.tl-timeera.tl-timeera-color1 .tl-timeera-background{background-color:#28a6c3}.tl-timeera.tl-timeera-color2 .tl-timeera-background{background-color:#2832c3}.tl-timeera.tl-timeera-color3 .tl-timeera-background{background-color:#28c36c}.tl-timeera.tl-timeera-color4 .tl-timeera-background{background-color:#286dc3}.tl-timeera.tl-timeera-color5 .tl-timeera-background{background-color:#28c3a7}.tl-timeera .tl-timeera-content-container{position:absolute;border:0;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;height:100%;width:100px;overflow:hidden;-webkit-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-moz-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-o-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1);box-sizing:border-box;border:1px solid #0d0d0d}.tl-timeera .tl-timeera-content-container .tl-timeera-content{position:relative;overflow:hidden;height:100%;padding:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.tl-timeera .tl-timeera-content-container .tl-timeera-content .tl-timeera-text{overflow:hidden;position:relative;height:100%}.tl-timeera .tl-timeera-content-container .tl-timeera-content .tl-timeera-text h2.tl-headline{bottom:0;position:absolute;display:-webkit-box;line-clamp:4;-webkit-line-clamp:4;box-orient:vertical;-webkit-box-orient:vertical;text-overflow:ellipsis;font-size:10px;line-height:10px;overflow:hidden;font-weight:400;margin:0;color:#333;margin-left:10px}.tl-timeera .tl-timeera-content-container .tl-timeera-content .tl-timeera-text h2.tl-headline.tl-headline-fadeout:after{content:"";text-align:right;position:absolute;bottom:0;right:0;width:100%;height:50%;background:-moz-linear-gradient(top,rgba(38,38,38,0) 0,#262626 50%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(38,38,38,0)),color-stop(50%,#262626));background:-webkit-linear-gradient(top,rgba(38,38,38,0) 0,#262626 50%);background:-o-linear-gradient(top,rgba(38,38,38,0) 0,#262626 50%);background:-ms-linear-gradient(top,rgba(38,38,38,0) 0,#262626 50%);background:linear-gradient(to bottom,rgba(38,38,38,0) 0,#262626 50%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@thecolor', endColorstr='@thecolor', GradientType=0)}.tl-timegroup{width:100%;position:absolute;top:0;left:0;background-color:#4d4d4d;display:-ms-flexbox;display:-webkit-flex;display:flex;align-items:center;-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;-webkit-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-moz-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-o-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timegroup .tl-timegroup-message{color:#000;text-shadow:#333 0 2px 2px;margin-left:80px}.tl-timegroup.tl-timegroup-alternate{background-color:#545454}.tl-timegroup.tl-timegroup-hidden{display:none}.tl-timeaxis-background{height:38px;width:100%;position:absolute;bottom:0;left:0;background-color:#333;border-top:1px solid #404040;z-index:2}.tl-timeaxis{height:38px;width:100%;position:absolute;bottom:0;left:0;z-index:3}.tl-timeaxis .tl-timeaxis-content-container{position:relative;bottom:0;height:38px}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major,.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor{opacity:0;position:absolute}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major .tl-timeaxis-tick,.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick{position:absolute;display:block;top:0;left:0;text-align:center;font-weight:400}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major .tl-timeaxis-tick .tl-timeaxis-tick-text,.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick .tl-timeaxis-tick-text{display:inline-block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major .tl-timeaxis-tick:before,.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick:before{content:"|";display:block;color:#333;width:1px;overflow:hidden;border-left:1px solid #575757;text-align:center}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major.tl-timeaxis-animate .tl-timeaxis-tick,.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor.tl-timeaxis-animate .tl-timeaxis-tick{-webkit-transition:all 1s cubic-bezier(.77,0,.175,1);-moz-transition:all 1s cubic-bezier(.77,0,.175,1);-o-transition:all 1s cubic-bezier(.77,0,.175,1);transition:all 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major.tl-timeaxis-animate-opacity .tl-timeaxis-tick,.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor.tl-timeaxis-animate-opacity .tl-timeaxis-tick{-webkit-transition:opacity 1s cubic-bezier(.77,0,.175,1);-moz-transition:opacity 1s cubic-bezier(.77,0,.175,1);-o-transition:opacity 1s cubic-bezier(.77,0,.175,1);transition:opacity 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major{z-index:1;background-color:#333}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major .tl-timeaxis-tick{font-size:12px;line-height:14px;color:#8a8a8a;width:100px;margin-left:-50px}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major .tl-timeaxis-tick:before{border-color:#707070;font-size:18px;line-height:18px;margin-bottom:2px;margin-left:50px}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick{font-size:10px;line-height:12px;color:#575757;width:50px;margin-left:-25px}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick .tl-timeaxis-tick-text{opacity:0;white-space:normal;padding-left:2px;padding-right:2px}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick .tl-timeaxis-tick-text span{display:block;font-size:9px;line-height:9px;margin-top:-2px;color:#7d7d7d}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick:before{font-size:8px;line-height:8px;margin-left:25px}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick.tl-timeaxis-tick-hidden .tl-timeaxis-tick-text{opacity:0!important}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick.tl-timeaxis-tick-hidden:before{opacity:.33}.tlanimate{-webkit-transform:translateZ(0);-webkit-perspective:1000;-webkit-backface-visibility:hidden}.tl-animate{-webkit-transition:all 1s cubic-bezier(.77,0,.175,1);-moz-transition:all 1s cubic-bezier(.77,0,.175,1);-o-transition:all 1s cubic-bezier(.77,0,.175,1);transition:all 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-animate-opacity{-webkit-transition:opacity 1s cubic-bezier(.77,0,.175,1);-moz-transition:opacity 1s cubic-bezier(.77,0,.175,1);-o-transition:opacity 1s cubic-bezier(.77,0,.175,1);transition:opacity 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-slide{position:absolute;width:100%;height:100%;padding:0;margin:0;overflow-x:hidden;overflow-y:auto}.tl-slide .tl-slide-background{position:absolute;left:0;top:0;width:100%;height:100%;z-index:-1;overflow:hidden;display:none;filter:alpha(opacity=50);-khtml-opacity:.5;-moz-opacity:.5;opacity:.5;background:no-repeat center center;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover}.tl-slide .tl-slide-scrollable-container{display:table;table-layout:fixed;height:100%;z-index:1}.tl-slide .tl-slide-content-container{display:table-cell;vertical-align:middle;position:relative;width:100%;height:100%;z-index:3}.tl-slide .tl-slide-content-container .tl-slide-content{display:table;vertical-align:middle;padding-left:100px;padding-right:100px;position:relative;max-width:100%}.tl-slide .tl-slide-content-container .tl-slide-content .tl-media{position:relative;width:100%;min-width:50%;float:left;margin-top:auto;margin-bottom:auto}.tl-slide .tl-slide-content-container .tl-slide-content .tl-text{width:50%;max-width:50%;min-width:120px;padding:0 20px 0 20px;display:table-cell;vertical-align:middle;text-align:left}.tl-slide-media-only .tl-slide-content-container .tl-slide-content{text-align:center}.tl-slide-media-only .tl-slide-content-container .tl-slide-content .tl-media{text-align:center;position:relative;width:100%;min-width:50%;max-width:100%;float:none;margin-top:auto;margin-bottom:auto}.tl-slide-media-only .tl-slide-content-container .tl-slide-content .tl-text{width:100%;max-width:100%;display:block;margin-left:auto;margin-right:auto;text-align:center}.tl-slide-text-only .tl-slide-content-container .tl-slide-content{text-align:center}.tl-slide-text-only .tl-slide-content-container .tl-slide-content .tl-text{max-width:80%;width:80%;display:block;margin-left:auto;margin-right:auto}.tl-slide.tl-full-color-background,.tl-slide.tl-full-image-background{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-color-background h1,.tl-slide.tl-full-color-background h2,.tl-slide.tl-full-color-background h3,.tl-slide.tl-full-color-background h4,.tl-slide.tl-full-color-background h5,.tl-slide.tl-full-color-background h6,.tl-slide.tl-full-color-background p,.tl-slide.tl-full-image-background h1,.tl-slide.tl-full-image-background h2,.tl-slide.tl-full-image-background h3,.tl-slide.tl-full-image-background h4,.tl-slide.tl-full-image-background h5,.tl-slide.tl-full-image-background h6,.tl-slide.tl-full-image-background p{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-color-background a,.tl-slide.tl-full-color-background a:hover,.tl-slide.tl-full-color-background b,.tl-slide.tl-full-color-background blockquote,.tl-slide.tl-full-color-background blockquote p,.tl-slide.tl-full-color-background i,.tl-slide.tl-full-image-background a,.tl-slide.tl-full-image-background a:hover,.tl-slide.tl-full-image-background b,.tl-slide.tl-full-image-background blockquote,.tl-slide.tl-full-image-background blockquote p,.tl-slide.tl-full-image-background i{color:#FFF!important;text-shadow:1px 1px 1px #000!important;color:#fff}.tl-slide.tl-full-color-background .tl-caption,.tl-slide.tl-full-color-background .tl-credit,.tl-slide.tl-full-image-background .tl-caption,.tl-slide.tl-full-image-background .tl-credit{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-color-background .tl-media-blockquote blockquote,.tl-slide.tl-full-color-background .tl-media-twitter blockquote,.tl-slide.tl-full-image-background .tl-media-blockquote blockquote,.tl-slide.tl-full-image-background .tl-media-twitter blockquote{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-color-background .tl-media-blockquote blockquote p,.tl-slide.tl-full-color-background .tl-media-twitter blockquote p,.tl-slide.tl-full-image-background .tl-media-blockquote blockquote p,.tl-slide.tl-full-image-background .tl-media-twitter blockquote p{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-color-background .vcard .nickname,.tl-slide.tl-full-color-background .vcard a,.tl-slide.tl-full-image-background .vcard .nickname,.tl-slide.tl-full-image-background .vcard a{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-image-background{background:no-repeat center center;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;background-position:center 25%;text-shadow:1px 1px 2px #000}.tl-slide.tl-full-image-background h1,.tl-slide.tl-full-image-background h2,.tl-slide.tl-full-image-background h3,.tl-slide.tl-full-image-background h4,.tl-slide.tl-full-image-background h5,.tl-slide.tl-full-image-background h6,.tl-slide.tl-full-image-background p{text-shadow:1px 1px 2px #000}.tl-slide.tl-full-image-background .tl-caption,.tl-slide.tl-full-image-background .tl-credit{text-shadow:1px 1px 2px #000}.tl-slide.tl-full-image-background .tl-media-blockquote blockquote,.tl-slide.tl-full-image-background .tl-media-twitter blockquote{text-shadow:1px 1px 2px #000!important}.tl-slide.tl-full-image-background .tl-media-blockquote blockquote p,.tl-slide.tl-full-image-background .tl-media-twitter blockquote p{text-shadow:1px 1px 2px #000!important}.tl-slide.tl-text-background .tl-text .tl-text-content-container{padding:20px;background:#000 transparent;background:rgba(0,0,0,.6);-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.tl-slide.tl-text-background .tl-text .tl-text-content-container h2{margin-top:5px}.tl-skinny .tl-slide{display:block;padding-top:10px}.tl-skinny .tl-slide .tl-slide-content-container{display:block;position:static;height:auto;height:100%;display:-webkit-flex;display:flex;align-items:center;-webkit-align-items:center}.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content{display:block;display:-webkit-flex;display:flex;flex-direction:column-reverse;-webkit-flex-direction:column-reverse;position:static;height:auto;padding-left:50px;padding-right:50px}.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-media{position:static;width:100%;height:auto;float:none;display:block;padding-top:20px;border-top:1px solid #000}.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-text{display:block;height:auto;vertical-align:initial;position:static;width:100%;max-width:100%;min-width:0;float:none;padding:0}.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-text .tl-text-content-container{padding-left:10px;padding-right:10px;padding-bottom:10px}.tl-skinny .tl-slide.tl-full-image-background .tl-slide-content-container .tl-slide-content .tl-media,.tl-skinny .tl-slide.tl-slide.tl-full-color-background .tl-slide-content-container .tl-slide-content .tl-media{border-color:rgba(0,0,0,.25)}.tl-skinny .tl-slide.tl-slide-media-only .tl-slide-content-container .tl-slide-content{flex-direction:column;-webkit-flex-direction:column}.tl-skinny .tl-slide.tl-slide-media-only .tl-slide-content-container .tl-slide-content .tl-media{border-top:none;padding-top:0}.tl-mobile.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-media embed,.tl-mobile.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-media iframe,.tl-mobile.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-media img,.tl-mobile.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-media object,.tl-mobile.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-media video{max-height:175px}.tl-slidenav-next,.tl-slidenav-previous{position:absolute;top:45%;z-index:10;cursor:pointer}.tl-slidenav-next .tl-slidenav-content-container,.tl-slidenav-previous .tl-slidenav-content-container{height:200px;width:100px;position:absolute}.tl-slidenav-next .tl-slidenav-description,.tl-slidenav-next .tl-slidenav-title,.tl-slidenav-previous .tl-slidenav-description,.tl-slidenav-previous .tl-slidenav-title{width:80px;-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;filter:alpha(opacity=15);-khtml-opacity:.15;-moz-opacity:.15;opacity:.15}.tl-slidenav-next .tl-slidenav-description small,.tl-slidenav-next .tl-slidenav-title small,.tl-slidenav-previous .tl-slidenav-description small,.tl-slidenav-previous .tl-slidenav-title small{display:block}.tl-slidenav-next .tl-slidenav-title,.tl-slidenav-previous .tl-slidenav-title{margin-top:10px;font-size:11px;line-height:11px}.tl-slidenav-next .tl-slidenav-description,.tl-slidenav-previous .tl-slidenav-description{font-size:11px;margin-top:5px;filter:alpha(opacity=0);-khtml-opacity:0;-moz-opacity:0;opacity:0}.tl-slidenav-next .tl-slidenav-description small,.tl-slidenav-previous .tl-slidenav-description small{display:none}.tl-slidenav-next .tl-slidenav-content-container .tl-slidenav-description,.tl-slidenav-next .tl-slidenav-content-container .tl-slidenav-icon,.tl-slidenav-next .tl-slidenav-content-container .tl-slidenav-title,.tl-slidenav-previous .tl-slidenav-content-container .tl-slidenav-description,.tl-slidenav-previous .tl-slidenav-content-container .tl-slidenav-icon,.tl-slidenav-previous .tl-slidenav-content-container .tl-slidenav-title{text-shadow:1px 1px 1px #333;color:#CCC}.tl-slidenav-next .tl-slidenav-content-container.tl-slidenav-inverted .tl-slidenav-description,.tl-slidenav-next .tl-slidenav-content-container.tl-slidenav-inverted .tl-slidenav-icon,.tl-slidenav-next .tl-slidenav-content-container.tl-slidenav-inverted .tl-slidenav-title,.tl-slidenav-previous .tl-slidenav-content-container.tl-slidenav-inverted .tl-slidenav-description,.tl-slidenav-previous .tl-slidenav-content-container.tl-slidenav-inverted .tl-slidenav-icon,.tl-slidenav-previous .tl-slidenav-content-container.tl-slidenav-inverted .tl-slidenav-title{color:#bfbfbf;text-shadow:1px 1px 1px #CCC}.tl-slidenav-next .tl-slidenav-icon,.tl-slidenav-previous .tl-slidenav-icon{font-family:tl-icons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:32px;margin-bottom:5px}.tl-slidenav-next{text-align:right;margin-right:10px;right:100px}.tl-slidenav-next .tl-slidenav-description,.tl-slidenav-next .tl-slidenav-title{margin-left:20px}.tl-slidenav-next .tl-slidenav-icon{margin-left:76px}.tl-slidenav-next .tl-slidenav-icon:before{content:"\e64f"}.tl-slidenav-previous{text-align:left;margin-left:10px}.tl-slidenav-previous .tl-slidenav-icon{margin-left:0}.tl-slidenav-previous .tl-slidenav-icon:before{content:"\e650"}.tl-slidenav-next:hover .tl-slidenav-title,.tl-slidenav-previous:hover .tl-slidenav-title{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-slidenav-next:hover .tl-slidenav-description,.tl-slidenav-previous:hover .tl-slidenav-description{filter:alpha(opacity=50);-khtml-opacity:.5;-moz-opacity:.5;opacity:.5}.tl-slidenav-next:hover .tl-slidenav-icon{margin-left:80px}.tl-slidenav-previous:hover .tl-slidenav-icon{margin-left:-4px}.tl-skinny .tl-slidenav-next{right:32px}.tl-skinny .tl-slidenav-next .tl-slidenav-icon{margin-left:8px}.tl-skinny .tl-slidenav-next .tl-slidenav-content-container,.tl-skinny .tl-slidenav-previous .tl-slidenav-content-container{width:32px;height:32px}.tl-skinny .tl-slidenav-next .tl-slidenav-description,.tl-skinny .tl-slidenav-next .tl-slidenav-title,.tl-skinny .tl-slidenav-previous .tl-slidenav-description,.tl-skinny .tl-slidenav-previous .tl-slidenav-title{display:none}.tl-skinny .tl-slidenav-next .tl-slidenav-icon,.tl-skinny .tl-slidenav-previous .tl-slidenav-icon{filter:alpha(opacity=33);-khtml-opacity:.33;-moz-opacity:.33;opacity:.33}.tl-skinny .tl-slidenav-next:hover .tl-slidenav-icon{margin-left:12px;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-skinny .tl-slidenav-previous:hover .tl-slidenav-icon{margin-left:-4px;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-layout-landscape.tl-mobile .tl-slidenav-next:hover{right:70px}.tl-layout-landscape.tl-mobile .tl-slidenav-next:hover .tl-slidenav-icon{margin-left:8px;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-layout-landscape.tl-mobile .tl-slidenav-next:active .tl-slidenav-icon{margin-left:0;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-layout-landscape.tl-mobile .tl-slidenav-previous:hover .tl-slidenav-icon{margin-left:80px;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-layout-landscape.tl-mobile .tl-slidenav-previous:active .tl-slidenav-icon{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;margin-left:-4px}.tl-layout-portrait.tl-mobile .tl-slidenav-next:hover .tl-slidenav-icon{filter:alpha(opacity=33);-khtml-opacity:.33;-moz-opacity:.33;opacity:.33}.tl-layout-portrait.tl-mobile .tl-slidenav-next:active .tl-slidenav-icon{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-layout-portrait.tl-mobile .tl-slidenav-previous:hover .tl-slidenav-icon{filter:alpha(opacity=33);-khtml-opacity:.33;-moz-opacity:.33;opacity:.33}.tl-layout-portrait.tl-mobile .tl-slidenav-previous:active .tl-slidenav-icon{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-mobile .tl-slidenav-next,.tl-mobile .tl-slidenav-previous,.tl-skinny.tl-layout-landscape.tl-mobile .tl-slidenav-next,.tl-skinny.tl-layout-landscape.tl-mobile .tl-slidenav-previous,.tl-skinny.tl-layout-portrait.tl-mobile .tl-slidenav-next,.tl-skinny.tl-layout-portrait.tl-mobile .tl-slidenav-previous,.tl-skinny.tl-mobile .tl-slidenav-next,.tl-skinny.tl-mobile .tl-slidenav-previous{display:none}.tl-storyslider{width:100%;height:100%;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;position:relative;box-sizing:content-box;z-index:8}.tl-storyslider embed,.tl-storyslider iframe,.tl-storyslider img,.tl-storyslider object,.tl-storyslider video{max-width:100%;position:relative}.tl-storyslider .tl-slider-background{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.tl-storyslider .tl-slider-touch-mask{width:100%;height:100%;z-index:25;top:0;left:0;position:absolute}.tl-storyslider .tl-slider-container-mask{text-align:center;width:100%;height:100%;position:relative;z-index:5}.tl-storyslider .tl-slider-container-mask .tl-slider-container{position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}.tl-storyslider .tl-slider-container-mask .tl-slider-container .tl-slider-item-container{width:100%;height:100%;display:table-cell;vertical-align:middle}.tl-media{width:100%;min-width:50%;height:100%;float:left;margin-top:auto;margin-bottom:auto;position:relative}.tl-media .tl-media-content-container.tl-media-content-container-text{border-right:1px solid #000;padding-right:20px}.tl-media .tl-media-content-container .tl-media-content{position:relative}.tl-media .tl-media-content-container .tl-media-content:after,.tl-media .tl-media-content-container .tl-media-content:before{display:table;content:""}.tl-media .tl-media-content-container .tl-media-content:after{clear:both}.tl-media .tl-media-content-container .tl-media-content .tl-media-loaderror p{color:#4d4d4d;text-align:center}.tl-media .tl-media-content-container .tl-media-content .tl-media-loaderror p span{color:#4d4d4d}.tl-media .tl-media-content-container .tl-media-content .tl-media-loaderror [class*=" tl-icon-"],.tl-media .tl-media-content-container .tl-media-content .tl-media-loaderror [class^=tl-icon-]{font-size:36px;color:#4d4d4d;text-align:center}.tl-media .tl-media-content-container .tl-media-content embed,.tl-media .tl-media-content-container .tl-media-content img,.tl-media .tl-media-content-container .tl-media-content object,.tl-media .tl-media-content-container .tl-media-content video{max-width:100%;max-height:100%}.tl-slide-media-only .tl-media .tl-media-content-container.tl-media-content-container-text{border-right:none;padding-right:0}.tl-media-shadow{position:relative;z-index:1;-webkit-box-shadow:0 12px 10px -10px rgba(0,0,0,.6);-moz-box-shadow:0 12px 10px -10px rgba(0,0,0,.6);box-shadow:0 12px 10px -10px rgba(0,0,0,.6)}.tl-slide.tl-full-color-background .vcard a,.tl-slide.tl-full-color-background a,.tl-slide.tl-full-image-background .vcard a,.tl-slide.tl-full-image-background a{color:#FFF!important;text-shadow:1px 1px 1px #000!important;color:#fff}.tl-credit{color:#999;text-align:right;display:block;margin:0 auto;margin-top:6px;font-size:10px;line-height:13px}.tl-caption{text-align:left;margin-right:auto;margin-left:auto;margin-top:10px;color:#666;font-size:11px;line-height:14px;text-rendering:optimizeLegibility;word-wrap:break-word}.tl-full-color-background .tl-media-shadow:after,.tl-full-color-background .tl-media-shadow:before,.tl-full-image-background .tl-media-shadow:after,.tl-full-image-background .tl-media-shadow:before{background:0 0;-webkit-box-shadow:0 0 0 #000;-moz-box-shadow:0 0 0 #000;box-shadow:0 0 0 #000}.tl-skinny .tl-media{width:100%;height:auto;float:none;display:block}.tl-skinny .tl-media .tl-media-content-container.tl-media-content-container-text{border-right:0;padding-right:0}.tl-skinny .tl-media .tl-media-content-container .tl-caption,.tl-skinny .tl-media .tl-media-content-container .tl-credit{margin-top:2px;padding-left:10px;padding-right:10px;font-size:8px}.tl-skinny .tl-media .tl-media-content-container .tl-credit{margin-top:0}.tl-mobile.tl-skinny .tl-media{width:100%;height:auto;float:none;display:block}.tl-mobile.tl-skinny .tl-media .tl-media-content-container.tl-media-content-container-text{border-right:0;padding-right:0}.tl-text{width:50%;max-width:50%;min-width:120px;padding:0 20px 0 20px;display:table-cell;vertical-align:middle;text-align:left;text-shadow:none;color:grey}.tl-text p{color:grey}.tl-text h2.tl-headline,.tl-text h2.tl-headline-title{margin-top:0}.tl-text .tl-headline-date,.tl-text h3.tl-headline-date{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:15px;font-weight:400;margin:0 0 3px 0;color:#bfbfbf}.tl-text .tl-headline-date small,.tl-text h3.tl-headline-date small{font-size:15px;line-height:15px;font-weight:400;color:#bfbfbf}.tl-text .tl-text-date{display:inline-block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;margin-top:10px;font-size:12px;color:#bfbfbf}.tl-full-color-background .tl-text,.tl-full-color-background .tl-text p,.tl-full-image-background .tl-text,.tl-full-image-background .tl-text p{color:#bfbfbf!important;text-shadow:1px 1px 2px #000}.tl-full-color-background .tl-text .tl-headline-date,.tl-full-color-background .tl-text h3.tl-headline-date,.tl-full-color-background .tl-text p .tl-headline-date,.tl-full-color-background .tl-text p h3.tl-headline-date,.tl-full-image-background .tl-text .tl-headline-date,.tl-full-image-background .tl-text h3.tl-headline-date,.tl-full-image-background .tl-text p .tl-headline-date,.tl-full-image-background .tl-text p h3.tl-headline-date{color:#bfbfbf!important}.tl-full-color-background .tl-text .tl-headline-date small,.tl-full-color-background .tl-text h3.tl-headline-date small,.tl-full-color-background .tl-text p .tl-headline-date small,.tl-full-color-background .tl-text p h3.tl-headline-date small,.tl-full-image-background .tl-text .tl-headline-date small,.tl-full-image-background .tl-text h3.tl-headline-date small,.tl-full-image-background .tl-text p .tl-headline-date small,.tl-full-image-background .tl-text p h3.tl-headline-date small{color:#bfbfbf!important}.tl-skinny .tl-text{width:100%;max-width:100%;min-width:auto;float:none;margin-top:20px}.tl-skinny .tl-text h2.tl-headline,.tl-skinny .tl-text h2.tl-headline-title{font-size:32px;line-height:36px}.tl-medium .tl-text h2.tl-headline,.tl-medium .tl-text h2.tl-headline-title{font-size:32px;line-height:36px}.tl-mobile.tl-skinny .tl-media .tl-media-image{max-height:250px!important}.tl-media .tl-media-twitter{text-align:left;clear:both}.tl-media .tl-media-twitter blockquote{margin:0;margin-right:15px;font-size:15px;line-height:21px;color:#CCC}.tl-media .tl-media-twitter blockquote p{font-size:36px;line-height:39px;color:#FFF}.tl-media .tl-media-twitter blockquote p:before{display:none}.tl-media .tl-media-twitter blockquote p:after{display:none}.tl-media .tl-media-twitter .tl-icon-twitter{color:#55ACEE}.tl-media .tl-media-twitter .vcard a.tl-date:hover,.tl-media .tl-media-twitter .vcard a:hover{text-decoration:none;color:#55ACEE}.tl-media .tl-media-twitter .vcard a.tl-date:hover .fn,.tl-media .tl-media-twitter .vcard a.tl-date:hover .nickname,.tl-media .tl-media-twitter .vcard a:hover .fn,.tl-media .tl-media-twitter .vcard a:hover .nickname{color:#55ACEE}.tl-slide-media-only .tl-media .tl-media-twitter{width:80%;margin-left:auto;margin-right:auto}.tl-mobile.tl-skinny .tl-media .tl-media-twitter blockquote p{font-size:15px;line-height:21px}.tl-skinny .tl-media .tl-media-twitter{margin-left:10px;margin-right:10px}.tl-skinny .tl-media .tl-media-twitter blockquote p{font-size:24px;line-height:26px}.tl-media .tl-media-blockquote{text-align:left;clear:both}.tl-media .tl-media-blockquote blockquote{margin:0;margin-right:15px;text-align:left;font-size:36px;line-height:39px;color:#CCC}.tl-media .tl-media-blockquote blockquote p{font-size:36px;line-height:39px;color:#CCC}.tl-media .tl-media-blockquote blockquote p:after,.tl-media .tl-media-blockquote blockquote p:before{display:inline-block;font-size:46px}.tl-media .tl-media-blockquote blockquote p:before{content:open-quote;margin-right:5px}.tl-media .tl-media-blockquote blockquote p:after{content:close-quote;margin-left:3px}.tl-media .tl-media-blockquote blockquote cite{font-size:15px;line-height:21px;color:#fff;text-align:right;margin-top:15px}.tl-slide-media-only .tl-media .tl-media-blockquote{border-right:0;width:80%;margin-left:auto;margin-right:auto}@media only screen and (max-width:800px),only screen and (max-device-width:800px){.tl-media .tl-media-blockquote blockquote p{font-size:24px;line-height:26px}}@media only screen and (max-width:500px),only screen and (max-device-width:500px){.tl-media .tl-media-blockquote blockquote p{font-size:15px;line-height:21px}}.tl-mobile.tl-skinny .tl-media .tl-media-instagram{max-height:250px!important}.tl-media .tl-media-profile{border-radius:50%}.tl-media .tl-media-iframe{width:100%;height:100%}.tl-media .tl-media-iframe iframe{width:100%;height:100%}.tl-media .tl-media-wikipedia{text-align:left;margin-left:auto;margin-right:auto;clear:both}.tl-media .tl-media-wikipedia .tl-icon-wikipedia{font-size:32px;margin-right:10px;float:left;padding-top:3px}.tl-media .tl-media-wikipedia .tl-wikipedia-pageimage{float:left;margin-right:10px;margin-bottom:5px;margin-top:5px}.tl-media .tl-media-wikipedia .tl-wikipedia-title{margin-left:60px;padding-left:10px;border-left:1px solid #000;margin-bottom:10px}.tl-media .tl-media-wikipedia .tl-wikipedia-source{font-size:13px;line-height:15px;font-style:italic;margin-top:3px;display:block;color:rgba(255,255,255,.5)}.tl-media .tl-media-wikipedia h4{margin-top:0;margin-bottom:0}.tl-media .tl-media-wikipedia h4 a{color:#FFF;text-decoration:none}.tl-media .tl-media-wikipedia h4 a:hover{text-decoration:underline}.tl-media .tl-media-wikipedia p{font-size:13px;line-height:19px}.tl-slide-media-only .tl-media .tl-media-wikipedia{border-right:0;border-top:1px solid #000;width:80%;margin-left:auto;margin-right:auto;margin-top:25px;padding-top:25px}.tl-slide.tl-full-color-background .tl-media .tl-media-wikipedia,.tl-slide.tl-full-image-background .tl-media .tl-media-wikipedia{padding:20px;background:#000 transparent;background:rgba(0,0,0,.6);-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.tl-slide.tl-full-color-background .tl-media .tl-media-wikipedia h4 a,.tl-slide.tl-full-image-background .tl-media .tl-media-wikipedia h4 a{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-color-background .tl-media .tl-media-wikipedia .tl-wikipedia-title,.tl-slide.tl-full-image-background .tl-media .tl-media-wikipedia .tl-wikipedia-title{border-color:rgba(0,0,0,.25)}.tl-slide.tl-full-color-background .tl-media .tl-media-wikipedia .tl-wikipedia-source,.tl-slide.tl-full-image-background .tl-media .tl-media-wikipedia .tl-wikipedia-source{color:rgba(0,0,0,.85)}.tl-mobile.tl-skinny .tl-media .tl-media-wikipedia,.tl-skinny .tl-media .tl-media-wikipedia{margin-left:10px;margin-right:10px}.tl-media .tl-media-website{text-align:left;margin-left:auto;margin-right:auto;clear:both}.tl-media .tl-media-website .tl-media-website-description{font-size:16px;line-height:19px;font-style:italic;margin-bottom:10px;text-transform:uppercase}.tl-media .tl-media-website h4{margin-top:0;margin-bottom:0;line-height:1}.tl-media .tl-media-website h4 a{color:#FFF;text-decoration:none}.tl-media .tl-media-website h4 a:hover{text-decoration:underline}.tl-media .tl-media-website p{font-size:13px;line-height:19px}.tl-media .tl-media-content-container .tl-media-content .tl-media-website img{float:right;max-width:120px;max-height:120px;margin:4px 0 0 15px}.tl-media .tl-media-content-container .tl-media-content .tl-media-website img.tl-media-website-icon{max-width:16px;max-height:16px;float:none;margin:0;margin-right:3px}.tl-slide.tl-full-color-background .tl-media .tl-media-website,.tl-slide.tl-full-image-background .tl-media .tl-media-website{padding:20px;background:#000 transparent;background:rgba(0,0,0,.6);-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.tl-slide.tl-full-color-background .tl-media .tl-media-website h4 a,.tl-slide.tl-full-image-background .tl-media .tl-media-website h4 a{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-mobile.tl-skinny .tl-media .tl-media-website{margin-left:10px;margin-right:10px}.tl-timeline{width:100%;height:100%;font-size:16px;line-height:normal;overflow:hidden;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;background-color:#333;color:grey;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.tl-timeline.tl-timeline-embed{box-sizing:border-box;border-top:1px solid #000;border-bottom:1px solid #000;border-radius:0}.tl-timeline.tl-timeline-full-embed{box-sizing:border-box;border:1px solid #000;border-radius:8px}.tl-layout-portrait .tl-storyslider{-webkit-box-shadow:0 -3px 6px rgba(0,0,0,.2);-moz-box-shadow:0 -3px 6px rgba(0,0,0,.2);box-shadow:0 -3px 6px rgba(0,0,0,.2)}.tl-rtl .blockquote,.tl-rtl .tl-headline,.tl-rtl .tl-headline-date,.tl-rtl .tl-media .tl-media-blockquote blockquote,.tl-rtl .tl-media-blockquote,.tl-rtl .tl-media-website,.tl-rtl .tl-media-wikipedia,.tl-rtl .tl-text-content,.tl-rtl .tl-text-content p,.tl-rtl .tl-timeline blockquote p,.tl-rtl blockquote p{text-align:right}.tl-rtl .tl-slide-media-only .tl-headline,.tl-rtl .tl-slide-media-only .tl-headline-date{text-align:center}.tl-rtl .tl-timemarker-text{margin-right:35px}.tl-rtl .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container{float:right}.tl-rtl .tl-caption{text-align:right}.tl-rtl .tl-credit{text-align:left}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/timeline.css b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/timeline.css
new file mode 100755
index 000000000..436630b24
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/css/timeline.css
@@ -0,0 +1,9 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+.tl-storyjs div *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.tl-storyjs .active,.tl-storyjs .caption,.tl-storyjs .content-container,.tl-storyjs .credit,.tl-storyjs .date,.tl-storyjs .dot,.tl-storyjs .era,.tl-storyjs .flag,.tl-storyjs .line,.tl-storyjs .major,.tl-storyjs .map,.tl-storyjs .marker,.tl-storyjs .media,.tl-storyjs .message,.tl-storyjs .minor,.tl-storyjs .slider,.tl-storyjs .start,.tl-storyjs .text,.tl-storyjs .time,.tl-storyjs .title,.tl-storyjs .tl-container,.tl-storyjs .tl-feature,.tl-storyjs .tl-feedback,.tl-storyjs .tl-navigation,.tl-storyjs .tl-slider,.tl-storyjs .toolbar,.tl-storyjs a,.tl-storyjs abbr,.tl-storyjs acronym,.tl-storyjs address,.tl-storyjs blockquote,.tl-storyjs button,.tl-storyjs caption,.tl-storyjs cite,.tl-storyjs code,.tl-storyjs dd,.tl-storyjs del,.tl-storyjs dfn,.tl-storyjs dl,.tl-storyjs dt,.tl-storyjs em,.tl-storyjs fieldset,.tl-storyjs form,.tl-storyjs h1,.tl-storyjs h2,.tl-storyjs h3,.tl-storyjs h4,.tl-storyjs h5,.tl-storyjs h6,.tl-storyjs img,.tl-storyjs label,.tl-storyjs legend,.tl-storyjs li,.tl-storyjs ol,.tl-storyjs p,.tl-storyjs pre,.tl-storyjs q,.tl-storyjs s,.tl-storyjs samp,.tl-storyjs small,.tl-storyjs strike,.tl-storyjs strong,.tl-storyjs sub,.tl-storyjs sup,.tl-storyjs table,.tl-storyjs tbody,.tl-storyjs td,.tl-storyjs tfoot,.tl-storyjs th,.tl-storyjs thead,.tl-storyjs tr,.tl-storyjs tt,.tl-storyjs ul,.tl-storyjs var{margin:0;padding:0;border:0;font-weight:400;font-style:normal;font-size:100%;line-height:1;font-family:inherit;width:auto;float:none}.tl-storyjs h1,.tl-storyjs h2,.tl-storyjs h3,.tl-storyjs h4,.tl-storyjs h5,.tl-storyjs h6{clear:none}.tl-storyjs table{border-collapse:collapse;border-spacing:0}.tl-storyjs ol,.tl-storyjs ul{list-style:none}.tl-storyjs blockquote:after,.tl-storyjs blockquote:before,.tl-storyjs q:after,.tl-storyjs q:before{content:""}.tl-storyjs a:focus{outline:thin dotted}.tl-storyjs a:active,.tl-storyjs a:hover{outline:0}.tl-storyjs article,.tl-storyjs aside,.tl-storyjs details,.tl-storyjs figcaption,.tl-storyjs figure,.tl-storyjs footer,.tl-storyjs header,.tl-storyjs hgroup,.tl-storyjs nav,.tl-storyjs section{display:block}.tl-storyjs audio,.tl-storyjs canvas,.tl-storyjs video{display:inline-block}.tl-storyjs audio:not([controls]){display:none}.tl-storyjs div{max-width:none}.tl-storyjs sub,.tl-storyjs sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.tl-storyjs sup{top:-.5em}.tl-storyjs sub{bottom:-.25em}.tl-storyjs img{border:0;-ms-interpolation-mode:bicubic}.tl-storyjs button,.tl-storyjs input,.tl-storyjs select,.tl-storyjs textarea{font-size:100%;margin:0;vertical-align:baseline}.tl-storyjs button,.tl-storyjs input{line-height:normal}.tl-storyjs button::-moz-focus-inner,.tl-storyjs input::-moz-focus-inner{border:0;padding:0}.tl-storyjs button,.tl-storyjs input[type=button],.tl-storyjs input[type=reset],.tl-storyjs input[type=submit]{cursor:pointer;-webkit-appearance:button}.tl-storyjs input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.tl-storyjs input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.tl-storyjs textarea{overflow:auto;vertical-align:top}.tl-timeline{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3,.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{color:#000}.tl-timeline h1,.tl-timeline h2,.tl-timeline h3{font-size:28px;line-height:28px}.tl-timeline h1 small,.tl-timeline h2 small,.tl-timeline h3 small{font-size:24px;line-height:24px}.tl-timeline h4,.tl-timeline h5,.tl-timeline h6{font-size:24px;line-height:24px;margin-bottom:0}.tl-timeline h4 small,.tl-timeline h5 small,.tl-timeline h6 small{font-size:15px;line-height:15px}.tl-timeline h2.tl-headline-title{font-size:38px;line-height:38px}.tl-timeline h2.tl-headline-title small{display:block;margin-top:5px;font-size:24px;line-height:24px}.tl-timeline h2{margin-top:20px;margin-bottom:5px}.tl-timeline p{margin-top:5px;margin-bottom:10px;font-size:15px;line-height:1.42857143;color:#666}.tl-timeline p.lead{font-size:24px}.tl-timeline p a{color:#666;text-decoration:underline}.tl-timeline p a:focus,.tl-timeline p a:hover{color:#c34528}@media (-webkit-min-device-pixel-ratio:1.5),(min-resolution:144dpi){.tl-timeline p a{text-decoration:underline;background-image:none;text-shadow:none}.tl-timeline p a:focus,.tl-timeline p a:hover{color:#c34528;text-decoration:underline}}.tl-timeline b,.tl-timeline strong{font-weight:700}.tl-timeline em,.tl-timeline i{font-style:italic}.tl-timeline a{text-decoration:none;color:#c34528}.tl-timeline a:hover{text-decoration:underline;color:#6e2717}.tl-timeline .tl-caption,.tl-timeline .tl-credit,.tl-timeline .tl-slidenav-next,.tl-timeline .tl-slidenav-previous{font-size:11px;line-height:11px}.tl-timeline .tl-caption a,.tl-timeline .tl-credit a,.tl-timeline .tl-slidenav-next a,.tl-timeline .tl-slidenav-previous a{color:#000}.tl-timeline .tl-makelink{word-break:break-all;word-break:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto}.tl-timeline blockquote,.tl-timeline blockquote p{font-family:Georgia,Times New Roman,Times,serif;color:#999;font-size:24px;line-height:24px;text-align:left;background:0 0;border:0;padding:0}.tl-timeline blockquote cite,.tl-timeline blockquote p cite{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:11px;color:#666;display:block;text-align:right;font-style:normal}.tl-timeline blockquote cite:before,.tl-timeline blockquote p cite:before{content:"\2014"}.tl-timeline blockquote p:before{content:open-quote;display:inline-block;font-size:28px;position:relative;top:8px;margin-right:5px}.tl-timeline blockquote p:after{content:close-quote;display:inline-block;font-size:28px;position:relative;top:8px;margin-left:3px}.tl-timeline blockquote{margin:10px}.tl-timeline blockquote p{margin:0}.tl-timeline .vcard{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:15px;margin-bottom:15px;margin-top:10px}.tl-timeline .vcard:after,.tl-timeline .vcard:before{display:table;content:""}.tl-timeline .vcard:after{clear:both}.tl-timeline .vcard .twitter-date{text-align:left;font-size:11px}.tl-timeline .vcard .author{float:right}.tl-timeline .vcard a{color:#333;text-decoration:none}.tl-timeline .vcard a:hover{text-decoration:none}.tl-timeline .vcard a:hover .fn,.tl-timeline .vcard a:hover .nickname{color:#c34528}.tl-timeline .vcard .fn,.tl-timeline .vcard .nickname{padding-left:42px}.tl-timeline .vcard .fn{display:block;font-weight:700}.tl-timeline .vcard .nickname{margin-top:1px;display:block;color:#666}.tl-timeline .vcard .avatar{float:left;display:block;width:32px;height:32px}.tl-timeline .vcard .avatar img{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.tl-timeline .tl-text ul{padding:0;padding-left:30px;margin:0}.tl-timeline .tl-text ul li{margin-bottom:5px}.tl-timeline .tl-button-calltoaction{cursor:pointer;font-weight:700;padding-top:10px;margin-bottom:10px;padding-bottom:10px}.tl-timeline .tl-button-calltoaction .tl-button-calltoaction-text{display:inline-block;background-color:#c34528;color:#fff;padding:10px 15px 10px 15px;border-radius:7px}.tl-timeline .tl-note{display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:italic;background-color:#e6e6e6;font-size:15px;line-height:17px;padding:10px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;color:#8a6d3b;background-color:#fcf8e3;border:1px solid #faebcc;text-shadow:none}@media only screen and (max-width:800px),only screen and (max-device-width:800px){.tl-timeline h1,.tl-timeline h2,.tl-timeline h3{font-size:28px;line-height:28px}}@media only screen and (max-width:500px),only screen and (max-device-width:500px){.tl-timeline h1,.tl-timeline h2,.tl-timeline h3{font-size:24px;line-height:24px}}.tl-skinny h2{margin-top:0}@font-face{font-family:tl-icons;src:url(icons/tl-icons.eot);src:url(icons/tl-icons.eot?#iefix) format('embedded-opentype'),url(icons/tl-icons.ttf) format('truetype'),url(icons/tl-icons.woff) format('woff'),url(icons/tl-icons.svg#tl-icons) format('svg');font-weight:400;font-style:normal}[class*=" tl-icon-"],[class^=tl-icon-]{font-family:tl-icons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tl-icon-vine:after{content:"\e64d"}.tl-icon-wikipedia:after{content:"\e64e"}.tl-icon-chevron-right:after{content:"\e64f"}.tl-icon-chevron-left:after{content:"\e650"}.tl-icon-youtube-logo:after{content:"\e651"}.tl-icon-foursquare:after{content:"\e652"}.tl-icon-camera-retro:after{content:"\e653"}.tl-icon-doc:after{content:"\e654"}.tl-icon-weibo:after{content:"\e655"}.tl-icon-resize-horizontal:after{content:"\e656"}.tl-icon-resize-vertical:after{content:"\e657"}.tl-icon-resize-full:after{content:"\e658"}.tl-icon-resize-small:after{content:"\e659"}.tl-icon-twitter:after{content:"\e62b"}.tl-icon-google-plus:after{content:"\e62c"}.tl-icon-video:after{content:"\e62d"}.tl-icon-youtube:after{content:"\e62d"}.tl-icon-plaintext:after{content:"\e62e"}.tl-icon-storify:after{content:"\e62e"}.tl-icon-image-v2:after{content:"\e62f"}.tl-icon-quote-v2:after{content:"\e630"}.tl-icon-zoom-in:after{content:"\e631"}.tl-icon-zoom-out:after{content:"\e632"}.tl-icon-list:after{content:"\e633"}.tl-icon-music:after{content:"\e634"}.tl-icon-spotify:after{content:"\e634"}.tl-icon-location:after{content:"\e635"}.tl-icon-googlemaps:after{content:"\e635"}.tl-icon-web:after{content:"\e636"}.tl-icon-share-v2:after{content:"\e637"}.tl-icon-soundcloud:after{content:"\e639"}.tl-icon-video-v2:after{content:"\e63a"}.tl-icon-dailymotion:after{content:"\e63a"}.tl-icon-tumblr:after{content:"\e63b"}.tl-icon-lastfm:after{content:"\e63c"}.tl-icon-github:after{content:"\e63d"}.tl-icon-goback:after{content:"\e63e"}.tl-icon-doc-v2:after{content:"\e63f"}.tl-icon-googledrive:after{content:"\e640"}.tl-icon-facebook:after{content:"\e641"}.tl-icon-flickr:after{content:"\e642"}.tl-icon-dribbble:after{content:"\e643"}.tl-icon-image:after{content:"\e605"}.tl-icon-vimeo:after{content:"\e606"}.tl-icon-instagram:after{content:"\e644"}.tl-icon-pinterest:after{content:"\e645"}.tl-icon-arrow-left:after{content:"\e646"}.tl-icon-arrow-down:after{content:"\e647"}.tl-icon-arrow-up:after{content:"\e648"}.tl-icon-arrow-right:after{content:"\e649"}.tl-icon-share:after{content:"\e64a"}.tl-icon-blockquote:after{content:"\e64b"}.tl-icon-evernote:after{content:"\e64c"}.tl-icon-mappin:after{content:"\e600"}.tl-icon-swipe-right:after{content:"\e601"}.tl-icon-swipe-left:after{content:"\e602"}.tl-icon-touch-spread:after{content:"\e603"}.tl-icon-touch-pinch:after{content:"\e604"}.tl-dragging{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.tl-menubar{position:absolute;z-index:11;text-align:center;color:#333;overflow:hidden;border-bottom-right-radius:10px;border-top-right-radius:10px;top:100%;left:50%;left:0}@keyframes invertToBlack{from{background-color:#FFF}to{background-color:#000}}@-webkit-keyframes invertToBlack{from{background:#FFF}to{background:#000}}@keyframes invertToWhite{from{background-color:#000}to{background-color:#FFF}}@-webkit-keyframes invertToWhite{from{background:#000}to{background:#FFF}}.tl-menubar-button{font-size:18px;line-height:18px;background-color:rgba(242,242,242,.9);cursor:pointer;padding:6px 12px 6px 12px;display:inline-block;display:block;color:#bfbfbf}.tl-menubar-button.tl-menubar-button-inactive{opacity:.33}.tl-menubar-button:hover{background:#333;color:#FFF}.tl-menubar-button:hover.tl-menubar-button-inactive{color:#bfbfbf;background-color:rgba(242,242,242,.9)}.tl-mobile .tl-menubar-button{display:block}.tl-mobile .tl-menubar-button:hover{background-color:rgba(242,242,242,.67);color:#737373}.tl-mobile .tl-menubar-button:active{background:#c34528;color:#FFF}@keyframes invertToBlack{from{background-color:#FFF}to{background-color:#000}}@-webkit-keyframes invertToBlack{from{background:#FFF}to{background:#000}}@keyframes invertToWhite{from{background-color:#000}to{background-color:#FFF}}@-webkit-keyframes invertToWhite{from{background:#000}to{background:#FFF}}.tl-message,.tl-message-full{width:100%;height:100%;position:absolute;display:table;overflow:hidden;top:0;left:0;z-index:99;margin:auto;text-align:center}.tl-message .tl-message-container,.tl-message-full .tl-message-container{padding:20px;margin:20px;text-align:center;vertical-align:middle;display:table-cell}.tl-message .tl-message-container .tl-message-content,.tl-message-full .tl-message-container .tl-message-content{color:#666;text-align:center;font-size:11px;line-height:13px;text-transform:uppercase;margin-top:7.5px;margin-bottom:7.5px;text-shadow:1px 1px 1px #FFF}.tl-message .tl-message-container .tl-message-content strong,.tl-message-full .tl-message-container .tl-message-content strong{text-transform:uppercase}.tl-message .tl-message-container .tl-loading-icon,.tl-message-full .tl-message-container .tl-loading-icon{width:30px;height:30px;background-color:#666;vertical-align:middle;-webkit-box-shadow:inset 0 1px 2px rgba(255,255,255,.1);-moz-box-shadow:inset 0 1px 2px rgba(255,255,255,.1);box-shadow:inset 0 1px 2px rgba(255,255,255,.1);margin-left:auto;margin-right:auto;text-align:center;-webkit-animation:rotateplane 1.2s infinite ease-in-out;animation:rotateplane 1.2s infinite ease-in-out}@-webkit-keyframes rotateplane{0%{-webkit-transform:perspective(120px)}50%{-webkit-transform:perspective(120px) rotateY(180deg)}100%{-webkit-transform:perspective(120px) rotateY(180deg) rotateX(180deg)}}@keyframes rotateplane{0%{transform:perspective(120px) rotateX(0) rotateY(0)}50%{transform:perspective(120px) rotateX(-180.1deg) rotateY(0)}100%{transform:perspective(120px) rotateX(-180deg) rotateY(-179.9deg)}}.tl-message-full{background-color:rgba(255,255,255,.8)}.tl-message-full [class*=" tl-icon-"],.tl-message-full [class^=tl-icon-]{color:#666;font-size:72px}.tl-message-full .tl-message-container .tl-message-content{font-size:22px;line-height:22px;text-shadow:none;color:#666;text-transform:none;font-weight:400}.tl-message-full .tl-message-container .tl-message-content .tl-button{display:inline-block;cursor:pointer;background-color:#FFF;color:#333;padding:10px;margin-top:10px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.tl-timenav{width:100%;background-color:#f2f2f2;position:relative;overflow:hidden;border-top:1px solid #e5e5e5}.tl-timenav .tl-attribution{cursor:pointer;z-index:9;position:absolute;bottom:2px;left:0;font-size:10px;line-height:10px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;background-color:rgba(255,255,255,.85);padding:3px}.tl-timenav .tl-attribution a{color:#ccc}.tl-timenav .tl-attribution a:hover{color:#000;text-decoration:none}.tl-timenav .tl-attribution a:hover .tl-knightlab-logo{background-color:#c34528}.tl-timenav .tl-attribution .tl-knightlab-logo{display:inline-block;vertical-align:middle;height:8px;width:8px;margin-right:3px;background-color:#c34528;background-color:#ccc;transform:rotate(45deg);-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg)}.tl-timenav .tl-timenav-line{position:absolute;top:0;left:50%;width:1px;height:100%;background-color:#d9d9d9;z-index:2;display:none}.tl-timenav .tl-timenav-line:after,.tl-timenav .tl-timenav-line:before{font-family:tl-icons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#c34528;font-size:32px;line-height:32px;position:absolute;left:-14px}.tl-timenav .tl-timenav-line:before{top:-10px}.tl-timenav .tl-timenav-line:after{content:"\e648";bottom:24px}.tl-timenav .tl-timenav-slider{position:absolute;height:100%;width:100%;top:0}.tl-timenav .tl-timenav-slider.tl-timenav-slider-animate{-webkit-transition:all 1s cubic-bezier(.77,0,.175,1);-moz-transition:all 1s cubic-bezier(.77,0,.175,1);-o-transition:all 1s cubic-bezier(.77,0,.175,1);transition:all 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timenav .tl-timenav-slider .tl-timenav-slider-background{position:absolute;height:100%;width:100%;cursor:move;z-index:6}.tl-timenav .tl-timenav-slider .tl-timenav-container-mask{position:absolute;height:100%;top:0}.tl-timenav .tl-timenav-slider .tl-timenav-container-mask .tl-timenav-container{position:absolute;height:100%}.tl-timenav .tl-timenav-slider .tl-timenav-container-mask .tl-timenav-container .tl-timenav-item-container{position:absolute;height:100%}.tl-timemarker{height:100%;position:absolute;top:0;left:0;cursor:pointer;-webkit-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-moz-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-o-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timemarker.tl-timemarker-fast{-webkit-transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-moz-transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-o-transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timemarker.tl-timemarker-fast .tl-timemarker-content-container{-webkit-transition:width .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1);-moz-transition:width .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1);-o-transition:width .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1);transition:width .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1)}.tl-timemarker.tl-timemarker-fast .tl-timemarker-timespan{-webkit-transition:height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-moz-transition:height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-o-transition:height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);transition:height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1)}.tl-timemarker .tl-timemarker-timespan{pointer-events:none;position:absolute;margin:0;width:100%;height:100%;background-color:rgba(229,229,229,.15);border-top-right-radius:4px;border-top-left-radius:4px;-webkit-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-moz-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-o-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timemarker .tl-timemarker-timespan .tl-timemarker-timespan-content{display:none;position:absolute;width:100%;background-color:#e5e5e5;border-top-left-radius:4px;border-top-right-radius:4px;height:100px;box-sizing:border-box}.tl-timemarker .tl-timemarker-line-right{display:none;right:0}.tl-timemarker .tl-timemarker-line-left{width:1px;left:0}.tl-timemarker .tl-timemarker-line-left,.tl-timemarker .tl-timemarker-line-right{margin-top:7px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-left:1px solid #d9d9d9;z-index:5;content:" ";position:absolute;height:100%;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-shadow:1px 1px 1px #FFF}.tl-timemarker .tl-timemarker-line-left:after,.tl-timemarker .tl-timemarker-line-right:after{display:block;content:" ";position:absolute;left:-4px;bottom:0;height:6px;width:6px;background-color:#919191;z-index:8;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%}.tl-timemarker .tl-timemarker-content-container{position:absolute;background-color:#e5e5e5;border:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:4px;height:100%;width:100px;overflow:hidden;z-index:6;-webkit-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-moz-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-o-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1);box-sizing:border-box;border:1px solid #d9d9d9;box-shadow:1px 1px 1px #FFF}.tl-timemarker .tl-timemarker-content-container:hover{z-index:9}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content{position:relative;overflow:hidden;height:100%;z-index:8;padding:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text{overflow:hidden;position:relative}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline,.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline p{display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;box-orient:vertical;-webkit-box-orient:vertical;text-overflow:ellipsis;font-size:12px;line-height:12px;height:100%;overflow:hidden;font-weight:400;margin:0;color:#bfbfbf;position:relative}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline p.tl-headline-fadeout:after,.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline.tl-headline-fadeout:after{content:"";text-align:right;position:absolute;bottom:0;right:0;width:100%;height:50%;background:-moz-linear-gradient(top,rgba(229,229,229,0) 0,#e5e5e5 50%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(229,229,229,0)),color-stop(50%,#e5e5e5));background:-webkit-linear-gradient(top,rgba(229,229,229,0) 0,#e5e5e5 50%);background:-o-linear-gradient(top,rgba(229,229,229,0) 0,#e5e5e5 50%);background:-ms-linear-gradient(top,rgba(229,229,229,0) 0,#e5e5e5 50%);background:linear-gradient(to bottom,rgba(229,229,229,0) 0,#e5e5e5 50%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@thecolor', endColorstr='@thecolor', GradientType=0)}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container{float:left;max-width:24px;max-height:24px;overflow:hidden;margin-right:5px;height:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container .tl-timemarker-media{max-width:24px;max-height:100%;opacity:.25}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container [class*=" tl-icon-"],.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container [class^=tl-icon-]{display:block;font-size:24px;color:#bfbfbf;margin-top:0}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container .tl-icon-wikipedia{font-size:16px}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content.tl-timemarker-content-small .tl-timemarker-text h2.tl-headline{display:block;white-space:nowrap;text-overflow:ellipsis}.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content.tl-timemarker-content-small .tl-timemarker-media-container [class*=" tl-icon-"],.tl-timemarker .tl-timemarker-content-container .tl-timemarker-content.tl-timemarker-content-small .tl-timemarker-media-container [class^=tl-icon-]{font-size:12px}.tl-timemarker:hover .tl-timemarker-timespan{background-color:rgba(191,191,191,.15)}.tl-timemarker:hover .tl-timemarker-timespan .tl-timemarker-timespan-content{background-color:#bfbfbf}.tl-timemarker:hover .tl-timemarker-timespan .tl-timemarker-line-left,.tl-timemarker:hover .tl-timemarker-timespan .tl-timemarker-line-right{border-color:#a6a6a6}.tl-timemarker:hover .tl-timemarker-timespan .tl-timemarker-line-left:after,.tl-timemarker:hover .tl-timemarker-timespan .tl-timemarker-line-right:after{background-color:#3d3d3d}.tl-timemarker:hover .tl-timemarker-content-container{background-color:#bfbfbf;border-color:#a6a6a6;-webkit-transition:height 250ms cubic-bezier(.77,0,.175,1),width 250ms cubic-bezier(.77,0,.175,1);-moz-transition:height 250ms cubic-bezier(.77,0,.175,1),width 250ms cubic-bezier(.77,0,.175,1);-o-transition:height 250ms cubic-bezier(.77,0,.175,1),width 250ms cubic-bezier(.77,0,.175,1);transition:height 250ms cubic-bezier(.77,0,.175,1),width 250ms cubic-bezier(.77,0,.175,1)}.tl-timemarker:hover .tl-timemarker-content-container.tl-timemarker-content-container-small{width:200px}.tl-timemarker:hover .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline{color:#FFF}.tl-timemarker:hover .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline.tl-headline-fadeout:after{background:-moz-linear-gradient(top,rgba(191,191,191,0) 0,#bfbfbf 80%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(191,191,191,0)),color-stop(80%,#bfbfbf));background:-webkit-linear-gradient(top,rgba(191,191,191,0) 0,#bfbfbf 80%);background:-o-linear-gradient(top,rgba(191,191,191,0) 0,#bfbfbf 80%);background:-ms-linear-gradient(top,rgba(191,191,191,0) 0,#bfbfbf 80%);background:linear-gradient(to bottom,rgba(191,191,191,0) 0,#bfbfbf 80%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@thecolor', endColorstr='@thecolor', GradientType=0)}.tl-timemarker:hover .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container .tl-timemarker-media{opacity:1}.tl-timemarker:hover .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container [class*=" tl-icon-"],.tl-timemarker:hover .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container [class^=tl-icon-]{color:#FFF}.tl-timemarker:hover.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline.tl-headline-fadeout:after{background:-moz-linear-gradient(top,rgba(255,255,255,0) 0,#FFF 80%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(255,255,255,0)),color-stop(80%,#FFF));background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#FFF 80%);background:-o-linear-gradient(top,rgba(255,255,255,0) 0,#FFF 80%);background:-ms-linear-gradient(top,rgba(255,255,255,0) 0,#FFF 80%);background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#FFF 80%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@thecolor', endColorstr='@thecolor', GradientType=0)}.tl-timemarker:hover.tl-timemarker-active .tl-timemarker-line-left,.tl-timemarker:hover.tl-timemarker-active .tl-timemarker-line-right{border-color:#000}.tl-timemarker:hover.tl-timemarker-active .tl-timemarker-line-left:after,.tl-timemarker:hover.tl-timemarker-active .tl-timemarker-line-right:after{background-color:#000}.tl-timemarker.tl-timemarker-active .tl-timemarker-timespan{background-color:rgba(255,255,255,.5);z-index:8}.tl-timemarker.tl-timemarker-active .tl-timemarker-timespan .tl-timemarker-timespan-content{background-color:#333}.tl-timemarker.tl-timemarker-active .tl-timemarker-line-left,.tl-timemarker.tl-timemarker-active .tl-timemarker-line-right{border-color:rgba(51,51,51,.5);border-width:1px;z-index:8;box-shadow:0 1px 3px rgba(145,145,145,.5)}.tl-timemarker.tl-timemarker-active .tl-timemarker-line-left:after,.tl-timemarker.tl-timemarker-active .tl-timemarker-line-right:after{background-color:#333}.tl-timemarker.tl-timemarker-active .tl-timemarker-content-container{background-color:#FFF;color:#333;z-index:9;border-color:rgba(51,51,51,.5);box-shadow:1px 1px 3px rgba(145,145,145,.5)}.tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline{color:#333}.tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-text h2.tl-headline.tl-headline-fadeout:after{background:-moz-linear-gradient(top,rgba(255,255,255,0) 0,#FFF 80%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(255,255,255,0)),color-stop(80%,#FFF));background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#FFF 80%);background:-o-linear-gradient(top,rgba(255,255,255,0) 0,#FFF 80%);background:-ms-linear-gradient(top,rgba(255,255,255,0) 0,#FFF 80%);background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#FFF 80%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@thecolor', endColorstr='@thecolor', GradientType=0)}.tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container .tl-timemarker-media{opacity:1}.tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container [class*=" tl-icon-"],.tl-timemarker.tl-timemarker-active .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container [class^=tl-icon-]{color:#333}.tl-timemarker.tl-timemarker-with-end .tl-timemarker-timespan .tl-timemarker-timespan-content{display:block}.tl-timemarker.tl-timemarker-with-end .tl-timemarker-timespan .tl-timemarker-line-left,.tl-timemarker.tl-timemarker-with-end .tl-timemarker-timespan .tl-timemarker-line-right{z-index:5}.tl-timemarker.tl-timemarker-with-end .tl-timemarker-timespan:after{display:block;content:" ";position:absolute;left:0;bottom:-7px;height:6px;width:100%;background-color:rgba(115,115,115,.15);z-index:6;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.tl-timemarker.tl-timemarker-with-end .tl-timemarker-content-container.tl-timemarker-content-container-long{box-shadow:none}.tl-timemarker.tl-timemarker-with-end .tl-timemarker-line-right{display:block}.tl-timemarker.tl-timemarker-with-end .tl-timemarker-line-left{box-shadow:none}.tl-timemarker.tl-timemarker-with-end:hover .tl-timemarker-timespan:after{background-color:rgba(0,0,0,.25)}.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active .tl-timemarker-timespan:after{background-color:rgba(51,51,51,.5)}.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active .tl-timemarker-line-left,.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active .tl-timemarker-line-right{border-width:1px}.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active .tl-timemarker-line-left:after,.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active .tl-timemarker-line-right:after{background-color:#333!important}.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active .tl-timemarker-line-left{box-shadow:none}.tl-timemarker.tl-timemarker-with-end.tl-timemarker-active:hover .tl-timemarker-timespan:after{background-color:rgba(51,51,51,.5)}.tl-timeera{height:100%;height:40px;position:absolute;bottom:0;left:0;pointer-events:none;z-index:3;-webkit-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-moz-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-o-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timeera.tl-timeera-fast{-webkit-transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-moz-transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-o-transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);transition:top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width .5s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timeera .tl-timeera-background{position:absolute;background-color:#28a6c3;width:100%;height:100%;opacity:1}.tl-timeera.tl-timeera-color0 .tl-timeera-background{background-color:#c34528}.tl-timeera.tl-timeera-color1 .tl-timeera-background{background-color:#28a6c3}.tl-timeera.tl-timeera-color2 .tl-timeera-background{background-color:#2832c3}.tl-timeera.tl-timeera-color3 .tl-timeera-background{background-color:#28c36c}.tl-timeera.tl-timeera-color4 .tl-timeera-background{background-color:#286dc3}.tl-timeera.tl-timeera-color5 .tl-timeera-background{background-color:#28c3a7}.tl-timeera .tl-timeera-content-container{position:absolute;border:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:4px;height:100%;width:100px;overflow:hidden;-webkit-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-moz-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-o-transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);transition:height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1);box-sizing:border-box;border:1px solid #d9d9d9}.tl-timeera .tl-timeera-content-container .tl-timeera-content{position:relative;overflow:hidden;height:100%;padding:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.tl-timeera .tl-timeera-content-container .tl-timeera-content .tl-timeera-text{overflow:hidden;position:relative;height:100%}.tl-timeera .tl-timeera-content-container .tl-timeera-content .tl-timeera-text h2.tl-headline{bottom:0;position:absolute;display:-webkit-box;line-clamp:4;-webkit-line-clamp:4;box-orient:vertical;-webkit-box-orient:vertical;text-overflow:ellipsis;font-size:10px;line-height:10px;overflow:hidden;font-weight:400;margin:0;color:#FFF;margin-left:10px}.tl-timeera .tl-timeera-content-container .tl-timeera-content .tl-timeera-text h2.tl-headline.tl-headline-fadeout:after{content:"";text-align:right;position:absolute;bottom:0;right:0;width:100%;height:50%;background:-moz-linear-gradient(top,rgba(229,229,229,0) 0,#e5e5e5 50%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(229,229,229,0)),color-stop(50%,#e5e5e5));background:-webkit-linear-gradient(top,rgba(229,229,229,0) 0,#e5e5e5 50%);background:-o-linear-gradient(top,rgba(229,229,229,0) 0,#e5e5e5 50%);background:-ms-linear-gradient(top,rgba(229,229,229,0) 0,#e5e5e5 50%);background:linear-gradient(to bottom,rgba(229,229,229,0) 0,#e5e5e5 50%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@thecolor', endColorstr='@thecolor', GradientType=0)}.tl-timegroup{width:100%;position:absolute;top:0;left:0;background-color:#f2f2f2;display:-ms-flexbox;display:-webkit-flex;display:flex;align-items:center;-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;-webkit-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-moz-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-o-transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);transition:left 1s cubic-bezier(.77,0,.175,1),top .5s cubic-bezier(.77,0,.175,1),height .5s cubic-bezier(.77,0,.175,1),width 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timegroup .tl-timegroup-message{color:#e0e0e0;text-shadow:#FFF 0 2px 2px;margin-left:80px}.tl-timegroup.tl-timegroup-alternate{background-color:#fafafa}.tl-timegroup.tl-timegroup-hidden{display:none}.tl-timeaxis-background{height:39px;width:100%;position:absolute;bottom:0;left:0;background-color:#FFF;border-top:1px solid #e5e5e5;z-index:2}.tl-timeaxis{height:39px;width:100%;position:absolute;bottom:0;left:0;z-index:3}.tl-timeaxis .tl-timeaxis-content-container{position:relative;bottom:0;height:39px}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major,.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor{opacity:0;position:absolute}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major .tl-timeaxis-tick,.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick{position:absolute;display:block;top:0;left:0;text-align:center;font-weight:400}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major .tl-timeaxis-tick .tl-timeaxis-tick-text,.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick .tl-timeaxis-tick-text{display:inline-block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major .tl-timeaxis-tick:before,.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick:before{content:"|";display:block;color:#FFF;width:1px;overflow:hidden;border-left:1px solid #bfbfbf;text-align:center}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major.tl-timeaxis-animate .tl-timeaxis-tick,.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor.tl-timeaxis-animate .tl-timeaxis-tick{-webkit-transition:all 1s cubic-bezier(.77,0,.175,1);-moz-transition:all 1s cubic-bezier(.77,0,.175,1);-o-transition:all 1s cubic-bezier(.77,0,.175,1);transition:all 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major.tl-timeaxis-animate-opacity .tl-timeaxis-tick,.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor.tl-timeaxis-animate-opacity .tl-timeaxis-tick{-webkit-transition:opacity 1s cubic-bezier(.77,0,.175,1);-moz-transition:opacity 1s cubic-bezier(.77,0,.175,1);-o-transition:opacity 1s cubic-bezier(.77,0,.175,1);transition:opacity 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major{z-index:1;background-color:#FFF}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major .tl-timeaxis-tick{font-size:12px;line-height:14px;color:#737373;width:100px;margin-left:-50px}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major .tl-timeaxis-tick:before{border-color:#a6a6a6;font-size:18px;line-height:18px;margin-bottom:2px;margin-left:50px}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick{font-size:11px;line-height:13px;color:#bfbfbf;width:50px;margin-left:-25px}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick .tl-timeaxis-tick-text{opacity:0;white-space:normal;padding-left:2px;padding-right:2px}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick .tl-timeaxis-tick-text span{display:block;font-size:9px;line-height:9px;margin-top:-2px;color:#e6e6e6}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick:before{font-size:9px;line-height:9px;margin-left:25px}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick.tl-timeaxis-tick-hidden .tl-timeaxis-tick-text{opacity:0!important}.tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick.tl-timeaxis-tick-hidden:before{opacity:.33}.tlanimate{-webkit-transform:translateZ(0);-webkit-perspective:1000;-webkit-backface-visibility:hidden}.tl-animate{-webkit-transition:all 1s cubic-bezier(.77,0,.175,1);-moz-transition:all 1s cubic-bezier(.77,0,.175,1);-o-transition:all 1s cubic-bezier(.77,0,.175,1);transition:all 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-animate-opacity{-webkit-transition:opacity 1s cubic-bezier(.77,0,.175,1);-moz-transition:opacity 1s cubic-bezier(.77,0,.175,1);-o-transition:opacity 1s cubic-bezier(.77,0,.175,1);transition:opacity 1s cubic-bezier(.77,0,.175,1);-webkit-transition-timing-function:cubic-bezier(.77,0,.175,1);-moz-transition-timing-function:cubic-bezier(.77,0,.175,1);-o-transition-timing-function:cubic-bezier(.77,0,.175,1);transition-timing-function:cubic-bezier(.77,0,.175,1)}.tl-slide{position:absolute;width:100%;height:100%;padding:0;margin:0;overflow-x:hidden;overflow-y:auto}.tl-slide .tl-slide-background{position:absolute;left:0;top:0;width:100%;height:100%;z-index:-1;overflow:hidden;display:none;filter:alpha(opacity=50);-khtml-opacity:.5;-moz-opacity:.5;opacity:.5;background:no-repeat center center;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover}.tl-slide .tl-slide-scrollable-container{display:table;table-layout:fixed;height:100%;z-index:1}.tl-slide .tl-slide-content-container{display:table-cell;vertical-align:middle;position:relative;width:100%;height:100%;z-index:3}.tl-slide .tl-slide-content-container .tl-slide-content{display:table;vertical-align:middle;padding-left:100px;padding-right:100px;position:relative;max-width:100%}.tl-slide .tl-slide-content-container .tl-slide-content .tl-media{position:relative;width:100%;min-width:50%;float:left;margin-top:auto;margin-bottom:auto}.tl-slide .tl-slide-content-container .tl-slide-content .tl-text{width:50%;max-width:50%;min-width:120px;padding:0 20px 0 20px;display:table-cell;vertical-align:middle;text-align:left}.tl-slide-media-only .tl-slide-content-container .tl-slide-content{text-align:center}.tl-slide-media-only .tl-slide-content-container .tl-slide-content .tl-media{text-align:center;position:relative;width:100%;min-width:50%;max-width:100%;float:none;margin-top:auto;margin-bottom:auto}.tl-slide-media-only .tl-slide-content-container .tl-slide-content .tl-text{width:100%;max-width:100%;display:block;margin-left:auto;margin-right:auto;text-align:center}.tl-slide-text-only .tl-slide-content-container .tl-slide-content{text-align:center}.tl-slide-text-only .tl-slide-content-container .tl-slide-content .tl-text{max-width:80%;width:80%;display:block;margin-left:auto;margin-right:auto}.tl-slide.tl-full-color-background,.tl-slide.tl-full-image-background{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-color-background h1,.tl-slide.tl-full-color-background h2,.tl-slide.tl-full-color-background h3,.tl-slide.tl-full-color-background h4,.tl-slide.tl-full-color-background h5,.tl-slide.tl-full-color-background h6,.tl-slide.tl-full-color-background p,.tl-slide.tl-full-image-background h1,.tl-slide.tl-full-image-background h2,.tl-slide.tl-full-image-background h3,.tl-slide.tl-full-image-background h4,.tl-slide.tl-full-image-background h5,.tl-slide.tl-full-image-background h6,.tl-slide.tl-full-image-background p{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-color-background a,.tl-slide.tl-full-color-background a:hover,.tl-slide.tl-full-color-background b,.tl-slide.tl-full-color-background blockquote,.tl-slide.tl-full-color-background blockquote p,.tl-slide.tl-full-color-background i,.tl-slide.tl-full-image-background a,.tl-slide.tl-full-image-background a:hover,.tl-slide.tl-full-image-background b,.tl-slide.tl-full-image-background blockquote,.tl-slide.tl-full-image-background blockquote p,.tl-slide.tl-full-image-background i{color:#FFF!important;text-shadow:1px 1px 1px #000!important;color:#fff}.tl-slide.tl-full-color-background .tl-caption,.tl-slide.tl-full-color-background .tl-credit,.tl-slide.tl-full-image-background .tl-caption,.tl-slide.tl-full-image-background .tl-credit{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-color-background .tl-media-blockquote blockquote,.tl-slide.tl-full-color-background .tl-media-twitter blockquote,.tl-slide.tl-full-image-background .tl-media-blockquote blockquote,.tl-slide.tl-full-image-background .tl-media-twitter blockquote{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-color-background .tl-media-blockquote blockquote p,.tl-slide.tl-full-color-background .tl-media-twitter blockquote p,.tl-slide.tl-full-image-background .tl-media-blockquote blockquote p,.tl-slide.tl-full-image-background .tl-media-twitter blockquote p{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-color-background .vcard .nickname,.tl-slide.tl-full-color-background .vcard a,.tl-slide.tl-full-image-background .vcard .nickname,.tl-slide.tl-full-image-background .vcard a{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-image-background{background:no-repeat center center;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;background-position:center 25%;text-shadow:1px 1px 2px #000}.tl-slide.tl-full-image-background h1,.tl-slide.tl-full-image-background h2,.tl-slide.tl-full-image-background h3,.tl-slide.tl-full-image-background h4,.tl-slide.tl-full-image-background h5,.tl-slide.tl-full-image-background h6,.tl-slide.tl-full-image-background p{text-shadow:1px 1px 2px #000}.tl-slide.tl-full-image-background .tl-caption,.tl-slide.tl-full-image-background .tl-credit{text-shadow:1px 1px 2px #000}.tl-slide.tl-full-image-background .tl-media-blockquote blockquote,.tl-slide.tl-full-image-background .tl-media-twitter blockquote{text-shadow:1px 1px 2px #000!important}.tl-slide.tl-full-image-background .tl-media-blockquote blockquote p,.tl-slide.tl-full-image-background .tl-media-twitter blockquote p{text-shadow:1px 1px 2px #000!important}.tl-slide.tl-text-background .tl-text .tl-text-content-container{padding:20px;background:#000 transparent;background:rgba(0,0,0,.6);-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.tl-slide.tl-text-background .tl-text .tl-text-content-container h2{margin-top:5px}.tl-skinny .tl-slide{display:block;padding-top:10px}.tl-skinny .tl-slide .tl-slide-content-container{display:block;position:static;height:auto;height:100%;display:-webkit-flex;display:flex;align-items:center;-webkit-align-items:center}.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content{display:block;display:-webkit-flex;display:flex;flex-direction:column-reverse;-webkit-flex-direction:column-reverse;position:static;height:auto;padding-left:50px;padding-right:50px}.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-media{position:static;width:100%;height:auto;float:none;display:block;padding-top:20px;border-top:1px solid #e6e6e6}.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-text{display:block;height:auto;vertical-align:initial;position:static;width:100%;max-width:100%;min-width:0;float:none;padding:0}.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-text .tl-text-content-container{padding-left:10px;padding-right:10px;padding-bottom:10px}.tl-skinny .tl-slide.tl-full-image-background .tl-slide-content-container .tl-slide-content .tl-media,.tl-skinny .tl-slide.tl-slide.tl-full-color-background .tl-slide-content-container .tl-slide-content .tl-media{border-color:rgba(230,230,230,.25)}.tl-skinny .tl-slide.tl-slide-media-only .tl-slide-content-container .tl-slide-content{flex-direction:column;-webkit-flex-direction:column}.tl-skinny .tl-slide.tl-slide-media-only .tl-slide-content-container .tl-slide-content .tl-media{border-top:none;padding-top:0}.tl-mobile.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-media embed,.tl-mobile.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-media iframe,.tl-mobile.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-media img,.tl-mobile.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-media object,.tl-mobile.tl-skinny .tl-slide .tl-slide-content-container .tl-slide-content .tl-media video{max-height:175px}.tl-slidenav-next,.tl-slidenav-previous{position:absolute;top:45%;z-index:10;cursor:pointer}.tl-slidenav-next .tl-slidenav-content-container,.tl-slidenav-previous .tl-slidenav-content-container{height:200px;width:100px;position:absolute}.tl-slidenav-next .tl-slidenav-description,.tl-slidenav-next .tl-slidenav-title,.tl-slidenav-previous .tl-slidenav-description,.tl-slidenav-previous .tl-slidenav-title{width:80px;-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;filter:alpha(opacity=15);-khtml-opacity:.15;-moz-opacity:.15;opacity:.15}.tl-slidenav-next .tl-slidenav-description small,.tl-slidenav-next .tl-slidenav-title small,.tl-slidenav-previous .tl-slidenav-description small,.tl-slidenav-previous .tl-slidenav-title small{display:block}.tl-slidenav-next .tl-slidenav-title,.tl-slidenav-previous .tl-slidenav-title{margin-top:10px;font-size:11px;line-height:11px}.tl-slidenav-next .tl-slidenav-description,.tl-slidenav-previous .tl-slidenav-description{font-size:11px;margin-top:5px;filter:alpha(opacity=0);-khtml-opacity:0;-moz-opacity:0;opacity:0}.tl-slidenav-next .tl-slidenav-description small,.tl-slidenav-previous .tl-slidenav-description small{display:none}.tl-slidenav-next .tl-slidenav-content-container .tl-slidenav-description,.tl-slidenav-next .tl-slidenav-content-container .tl-slidenav-icon,.tl-slidenav-next .tl-slidenav-content-container .tl-slidenav-title,.tl-slidenav-previous .tl-slidenav-content-container .tl-slidenav-description,.tl-slidenav-previous .tl-slidenav-content-container .tl-slidenav-icon,.tl-slidenav-previous .tl-slidenav-content-container .tl-slidenav-title{text-shadow:1px 1px 1px #FFF;color:#333}.tl-slidenav-next .tl-slidenav-content-container.tl-slidenav-inverted .tl-slidenav-description,.tl-slidenav-next .tl-slidenav-content-container.tl-slidenav-inverted .tl-slidenav-icon,.tl-slidenav-next .tl-slidenav-content-container.tl-slidenav-inverted .tl-slidenav-title,.tl-slidenav-previous .tl-slidenav-content-container.tl-slidenav-inverted .tl-slidenav-description,.tl-slidenav-previous .tl-slidenav-content-container.tl-slidenav-inverted .tl-slidenav-icon,.tl-slidenav-previous .tl-slidenav-content-container.tl-slidenav-inverted .tl-slidenav-title{color:#f2f2f2;text-shadow:1px 1px 1px #333}.tl-slidenav-next .tl-slidenav-icon,.tl-slidenav-previous .tl-slidenav-icon{font-family:tl-icons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:32px;margin-bottom:5px}.tl-slidenav-next{text-align:right;margin-right:10px;right:100px}.tl-slidenav-next .tl-slidenav-description,.tl-slidenav-next .tl-slidenav-title{margin-left:20px}.tl-slidenav-next .tl-slidenav-icon{margin-left:76px}.tl-slidenav-next .tl-slidenav-icon:before{content:"\e64f"}.tl-slidenav-previous{text-align:left;margin-left:10px}.tl-slidenav-previous .tl-slidenav-icon{margin-left:0}.tl-slidenav-previous .tl-slidenav-icon:before{content:"\e650"}.tl-slidenav-next:hover .tl-slidenav-title,.tl-slidenav-previous:hover .tl-slidenav-title{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-slidenav-next:hover .tl-slidenav-description,.tl-slidenav-previous:hover .tl-slidenav-description{filter:alpha(opacity=50);-khtml-opacity:.5;-moz-opacity:.5;opacity:.5}.tl-slidenav-next:hover .tl-slidenav-icon{margin-left:80px}.tl-slidenav-previous:hover .tl-slidenav-icon{margin-left:-4px}.tl-skinny .tl-slidenav-next{right:32px}.tl-skinny .tl-slidenav-next .tl-slidenav-icon{margin-left:8px}.tl-skinny .tl-slidenav-next .tl-slidenav-content-container,.tl-skinny .tl-slidenav-previous .tl-slidenav-content-container{width:32px;height:32px}.tl-skinny .tl-slidenav-next .tl-slidenav-description,.tl-skinny .tl-slidenav-next .tl-slidenav-title,.tl-skinny .tl-slidenav-previous .tl-slidenav-description,.tl-skinny .tl-slidenav-previous .tl-slidenav-title{display:none}.tl-skinny .tl-slidenav-next .tl-slidenav-icon,.tl-skinny .tl-slidenav-previous .tl-slidenav-icon{filter:alpha(opacity=33);-khtml-opacity:.33;-moz-opacity:.33;opacity:.33}.tl-skinny .tl-slidenav-next:hover .tl-slidenav-icon{margin-left:12px;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-skinny .tl-slidenav-previous:hover .tl-slidenav-icon{margin-left:-4px;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-layout-landscape.tl-mobile .tl-slidenav-next:hover{right:70px}.tl-layout-landscape.tl-mobile .tl-slidenav-next:hover .tl-slidenav-icon{margin-left:8px;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-layout-landscape.tl-mobile .tl-slidenav-next:active .tl-slidenav-icon{margin-left:0;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-layout-landscape.tl-mobile .tl-slidenav-previous:hover .tl-slidenav-icon{margin-left:80px;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-layout-landscape.tl-mobile .tl-slidenav-previous:active .tl-slidenav-icon{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;margin-left:-4px}.tl-layout-portrait.tl-mobile .tl-slidenav-next:hover .tl-slidenav-icon{filter:alpha(opacity=33);-khtml-opacity:.33;-moz-opacity:.33;opacity:.33}.tl-layout-portrait.tl-mobile .tl-slidenav-next:active .tl-slidenav-icon{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-layout-portrait.tl-mobile .tl-slidenav-previous:hover .tl-slidenav-icon{filter:alpha(opacity=33);-khtml-opacity:.33;-moz-opacity:.33;opacity:.33}.tl-layout-portrait.tl-mobile .tl-slidenav-previous:active .tl-slidenav-icon{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1}.tl-mobile .tl-slidenav-next,.tl-mobile .tl-slidenav-previous,.tl-skinny.tl-layout-landscape.tl-mobile .tl-slidenav-next,.tl-skinny.tl-layout-landscape.tl-mobile .tl-slidenav-previous,.tl-skinny.tl-layout-portrait.tl-mobile .tl-slidenav-next,.tl-skinny.tl-layout-portrait.tl-mobile .tl-slidenav-previous,.tl-skinny.tl-mobile .tl-slidenav-next,.tl-skinny.tl-mobile .tl-slidenav-previous{display:none}.tl-storyslider{width:100%;height:100%;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;position:relative;box-sizing:content-box;z-index:8}.tl-storyslider embed,.tl-storyslider iframe,.tl-storyslider img,.tl-storyslider object,.tl-storyslider video{max-width:100%;position:relative}.tl-storyslider .tl-slider-background{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.tl-storyslider .tl-slider-touch-mask{width:100%;height:100%;z-index:25;top:0;left:0;position:absolute}.tl-storyslider .tl-slider-container-mask{text-align:center;width:100%;height:100%;position:relative;z-index:5}.tl-storyslider .tl-slider-container-mask .tl-slider-container{position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}.tl-storyslider .tl-slider-container-mask .tl-slider-container .tl-slider-item-container{width:100%;height:100%;display:table-cell;vertical-align:middle}.tl-media{width:100%;min-width:50%;height:100%;float:left;margin-top:auto;margin-bottom:auto;position:relative}.tl-media .tl-media-content-container.tl-media-content-container-text{border-right:1px solid #e6e6e6;padding-right:20px}.tl-media .tl-media-content-container .tl-media-content{position:relative}.tl-media .tl-media-content-container .tl-media-content:after,.tl-media .tl-media-content-container .tl-media-content:before{display:table;content:""}.tl-media .tl-media-content-container .tl-media-content:after{clear:both}.tl-media .tl-media-content-container .tl-media-content .tl-media-loaderror p{color:#f2f2f2;text-align:center}.tl-media .tl-media-content-container .tl-media-content .tl-media-loaderror p span{color:#f2f2f2}.tl-media .tl-media-content-container .tl-media-content .tl-media-loaderror [class*=" tl-icon-"],.tl-media .tl-media-content-container .tl-media-content .tl-media-loaderror [class^=tl-icon-]{font-size:28px;color:#f2f2f2;text-align:center}.tl-media .tl-media-content-container .tl-media-content embed,.tl-media .tl-media-content-container .tl-media-content img,.tl-media .tl-media-content-container .tl-media-content object,.tl-media .tl-media-content-container .tl-media-content video{max-width:100%;max-height:100%}.tl-slide-media-only .tl-media .tl-media-content-container.tl-media-content-container-text{border-right:none;padding-right:0}.tl-media-shadow{position:relative;z-index:1;-webkit-box-shadow:0 12px 10px -10px rgba(0,0,0,.6);-moz-box-shadow:0 12px 10px -10px rgba(0,0,0,.6);box-shadow:0 12px 10px -10px rgba(0,0,0,.6)}.tl-slide.tl-full-color-background .vcard a,.tl-slide.tl-full-color-background a,.tl-slide.tl-full-image-background .vcard a,.tl-slide.tl-full-image-background a{color:#FFF!important;text-shadow:1px 1px 1px #000!important;color:#fff}.tl-credit{color:#999;text-align:right;display:block;margin:0 auto;margin-top:6px;font-size:10px;line-height:13px}.tl-caption{text-align:left;margin-right:auto;margin-left:auto;margin-top:10px;color:#666;font-size:11px;line-height:14px;text-rendering:optimizeLegibility;word-wrap:break-word}.tl-full-color-background .tl-media-shadow:after,.tl-full-color-background .tl-media-shadow:before,.tl-full-image-background .tl-media-shadow:after,.tl-full-image-background .tl-media-shadow:before{background:0 0;-webkit-box-shadow:0 0 0 #000;-moz-box-shadow:0 0 0 #000;box-shadow:0 0 0 #000}.tl-skinny .tl-media{width:100%;height:auto;float:none;display:block}.tl-skinny .tl-media .tl-media-content-container.tl-media-content-container-text{border-right:0;padding-right:0}.tl-skinny .tl-media .tl-media-content-container .tl-caption,.tl-skinny .tl-media .tl-media-content-container .tl-credit{margin-top:2px;padding-left:10px;padding-right:10px;font-size:8px}.tl-skinny .tl-media .tl-media-content-container .tl-credit{margin-top:0}.tl-mobile.tl-skinny .tl-media{width:100%;height:auto;float:none;display:block}.tl-mobile.tl-skinny .tl-media .tl-media-content-container.tl-media-content-container-text{border-right:0;padding-right:0}.tl-text{width:50%;max-width:50%;min-width:120px;padding:0 20px 0 20px;display:table-cell;vertical-align:middle;text-align:left;text-shadow:none;color:#737373}.tl-text p{color:#737373}.tl-text h2.tl-headline,.tl-text h2.tl-headline-title{margin-top:0}.tl-text .tl-headline-date,.tl-text h3.tl-headline-date{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:15px;font-weight:400;margin:0 0 3px 0;color:#b3b3b3}.tl-text .tl-headline-date small,.tl-text h3.tl-headline-date small{font-size:15px;line-height:15px;font-weight:400;color:#b3b3b3}.tl-text .tl-text-date{display:inline-block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;margin-top:10px;font-size:12px;color:#b3b3b3}.tl-full-color-background .tl-text,.tl-full-color-background .tl-text p,.tl-full-image-background .tl-text,.tl-full-image-background .tl-text p{color:#f2f2f2!important;text-shadow:1px 1px 2px #000}.tl-full-color-background .tl-text .tl-headline-date,.tl-full-color-background .tl-text h3.tl-headline-date,.tl-full-color-background .tl-text p .tl-headline-date,.tl-full-color-background .tl-text p h3.tl-headline-date,.tl-full-image-background .tl-text .tl-headline-date,.tl-full-image-background .tl-text h3.tl-headline-date,.tl-full-image-background .tl-text p .tl-headline-date,.tl-full-image-background .tl-text p h3.tl-headline-date{color:#f2f2f2!important}.tl-full-color-background .tl-text .tl-headline-date small,.tl-full-color-background .tl-text h3.tl-headline-date small,.tl-full-color-background .tl-text p .tl-headline-date small,.tl-full-color-background .tl-text p h3.tl-headline-date small,.tl-full-image-background .tl-text .tl-headline-date small,.tl-full-image-background .tl-text h3.tl-headline-date small,.tl-full-image-background .tl-text p .tl-headline-date small,.tl-full-image-background .tl-text p h3.tl-headline-date small{color:#f2f2f2!important}.tl-skinny .tl-text{width:100%;max-width:100%;min-width:auto;float:none;margin-top:20px}.tl-skinny .tl-text h2.tl-headline,.tl-skinny .tl-text h2.tl-headline-title{font-size:32px;line-height:36px}.tl-medium .tl-text h2.tl-headline,.tl-medium .tl-text h2.tl-headline-title{font-size:32px;line-height:36px}.tl-mobile.tl-skinny .tl-media .tl-media-image{max-height:250px!important}.tl-media .tl-media-twitter{text-align:left;clear:both}.tl-media .tl-media-twitter blockquote{margin:0;margin-right:15px;font-size:15px;line-height:21px;color:#333}.tl-media .tl-media-twitter blockquote p{font-size:28px;line-height:30px;color:#000}.tl-media .tl-media-twitter blockquote p:before{display:none}.tl-media .tl-media-twitter blockquote p:after{display:none}.tl-media .tl-media-twitter .tl-icon-twitter{color:#55ACEE}.tl-media .tl-media-twitter .vcard a.tl-date:hover,.tl-media .tl-media-twitter .vcard a:hover{text-decoration:none;color:#55ACEE}.tl-media .tl-media-twitter .vcard a.tl-date:hover .fn,.tl-media .tl-media-twitter .vcard a.tl-date:hover .nickname,.tl-media .tl-media-twitter .vcard a:hover .fn,.tl-media .tl-media-twitter .vcard a:hover .nickname{color:#55ACEE}.tl-slide-media-only .tl-media .tl-media-twitter{width:80%;margin-left:auto;margin-right:auto}.tl-mobile.tl-skinny .tl-media .tl-media-twitter blockquote p{font-size:15px;line-height:21px}.tl-skinny .tl-media .tl-media-twitter{margin-left:10px;margin-right:10px}.tl-skinny .tl-media .tl-media-twitter blockquote p{font-size:24px;line-height:26px}.tl-media .tl-media-blockquote{text-align:left;clear:both}.tl-media .tl-media-blockquote blockquote{margin:0;margin-right:15px;text-align:left;font-size:28px;line-height:30px;color:#333}.tl-media .tl-media-blockquote blockquote p{font-size:28px;line-height:30px;color:#333}.tl-media .tl-media-blockquote blockquote p:after,.tl-media .tl-media-blockquote blockquote p:before{display:inline-block;font-size:36px}.tl-media .tl-media-blockquote blockquote p:before{content:open-quote;margin-right:5px}.tl-media .tl-media-blockquote blockquote p:after{content:close-quote;margin-left:3px}.tl-media .tl-media-blockquote blockquote cite{font-size:15px;line-height:21px;color:#999;text-align:right;margin-top:15px}.tl-slide-media-only .tl-media .tl-media-blockquote{border-right:0;width:80%;margin-left:auto;margin-right:auto}@media only screen and (max-width:800px),only screen and (max-device-width:800px){.tl-media .tl-media-blockquote blockquote p{font-size:24px;line-height:26px}}@media only screen and (max-width:500px),only screen and (max-device-width:500px){.tl-media .tl-media-blockquote blockquote p{font-size:15px;line-height:21px}}.tl-mobile.tl-skinny .tl-media .tl-media-instagram{max-height:250px!important}.tl-media .tl-media-profile{border-radius:50%}.tl-media .tl-media-iframe{width:100%;height:100%}.tl-media .tl-media-iframe iframe{width:100%;height:100%}.tl-media .tl-media-wikipedia{text-align:left;margin-left:auto;margin-right:auto;clear:both}.tl-media .tl-media-wikipedia .tl-icon-wikipedia{font-size:32px;margin-right:10px;float:left;padding-top:3px}.tl-media .tl-media-wikipedia .tl-wikipedia-pageimage{float:left;margin-right:10px;margin-bottom:5px;margin-top:5px}.tl-media .tl-media-wikipedia .tl-wikipedia-title{margin-left:60px;padding-left:10px;border-left:1px solid #e6e6e6;margin-bottom:10px}.tl-media .tl-media-wikipedia .tl-wikipedia-source{font-size:13px;line-height:15px;font-style:italic;margin-top:3px;display:block;color:rgba(0,0,0,.5)}.tl-media .tl-media-wikipedia h4{margin-top:0;margin-bottom:0}.tl-media .tl-media-wikipedia h4 a{color:#000;text-decoration:none}.tl-media .tl-media-wikipedia h4 a:hover{text-decoration:underline}.tl-media .tl-media-wikipedia p{font-size:13px;line-height:19px}.tl-slide-media-only .tl-media .tl-media-wikipedia{border-right:0;border-top:1px solid #e6e6e6;width:80%;margin-left:auto;margin-right:auto;margin-top:25px;padding-top:25px}.tl-slide.tl-full-color-background .tl-media .tl-media-wikipedia,.tl-slide.tl-full-image-background .tl-media .tl-media-wikipedia{padding:20px;background:#000 transparent;background:rgba(0,0,0,.6);-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.tl-slide.tl-full-color-background .tl-media .tl-media-wikipedia h4 a,.tl-slide.tl-full-image-background .tl-media .tl-media-wikipedia h4 a{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-slide.tl-full-color-background .tl-media .tl-media-wikipedia .tl-wikipedia-title,.tl-slide.tl-full-image-background .tl-media .tl-media-wikipedia .tl-wikipedia-title{border-color:rgba(230,230,230,.25)}.tl-slide.tl-full-color-background .tl-media .tl-media-wikipedia .tl-wikipedia-source,.tl-slide.tl-full-image-background .tl-media .tl-media-wikipedia .tl-wikipedia-source{color:rgba(230,230,230,.85)}.tl-mobile.tl-skinny .tl-media .tl-media-wikipedia,.tl-skinny .tl-media .tl-media-wikipedia{margin-left:10px;margin-right:10px}.tl-media .tl-media-website{text-align:left;margin-left:auto;margin-right:auto;clear:both}.tl-media .tl-media-website .tl-media-website-description{font-size:16px;line-height:19px;font-style:italic;margin-bottom:10px;text-transform:uppercase}.tl-media .tl-media-website h4{margin-top:0;margin-bottom:0;line-height:1}.tl-media .tl-media-website h4 a{color:#000;text-decoration:none}.tl-media .tl-media-website h4 a:hover{text-decoration:underline}.tl-media .tl-media-website p{font-size:13px;line-height:19px}.tl-media .tl-media-content-container .tl-media-content .tl-media-website img{float:right;max-width:120px;max-height:120px;margin:4px 0 0 15px}.tl-media .tl-media-content-container .tl-media-content .tl-media-website img.tl-media-website-icon{max-width:16px;max-height:16px;float:none;margin:0;margin-right:3px}.tl-slide.tl-full-color-background .tl-media .tl-media-website,.tl-slide.tl-full-image-background .tl-media .tl-media-website{padding:20px;background:#000 transparent;background:rgba(0,0,0,.6);-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.tl-slide.tl-full-color-background .tl-media .tl-media-website h4 a,.tl-slide.tl-full-image-background .tl-media .tl-media-website h4 a{color:#FFF!important;text-shadow:1px 1px 1px #000!important}.tl-mobile.tl-skinny .tl-media .tl-media-website{margin-left:10px;margin-right:10px}.tl-timeline{width:100%;height:100%;font-size:16px;line-height:normal;overflow:hidden;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;background-color:#FFF;color:#737373;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.tl-timeline.tl-timeline-embed{box-sizing:border-box;border-top:1px solid #ccc;border-bottom:1px solid #ccc;border-radius:0}.tl-timeline.tl-timeline-full-embed{box-sizing:border-box;border:1px solid #ccc;border-radius:8px}.tl-layout-portrait .tl-storyslider{-webkit-box-shadow:0 -3px 6px rgba(0,0,0,.2);-moz-box-shadow:0 -3px 6px rgba(0,0,0,.2);box-shadow:0 -3px 6px rgba(0,0,0,.2)}.tl-rtl .blockquote,.tl-rtl .tl-headline,.tl-rtl .tl-headline-date,.tl-rtl .tl-media .tl-media-blockquote blockquote,.tl-rtl .tl-media-blockquote,.tl-rtl .tl-media-website,.tl-rtl .tl-media-wikipedia,.tl-rtl .tl-text-content,.tl-rtl .tl-text-content p,.tl-rtl .tl-timeline blockquote p,.tl-rtl blockquote p{text-align:right}.tl-rtl .tl-slide-media-only .tl-headline,.tl-rtl .tl-slide-media-only .tl-headline-date{text-align:center}.tl-rtl .tl-timemarker-text{margin-right:35px}.tl-rtl .tl-timemarker-content-container .tl-timemarker-content .tl-timemarker-media-container{float:right}.tl-rtl .tl-caption{text-align:right}.tl-rtl .tl-credit{text-align:left}
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.bean.inc b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.bean.inc
new file mode 100644
index 000000000..5e482ec30
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.bean.inc
@@ -0,0 +1,23 @@
+disabled = FALSE; /* Edit this to true to make a default bean_type disabled initially */
+ $bean_type->api_version = 5;
+ $bean_type->name = 'content_sequence';
+ $bean_type->label = 'Content Sequence';
+ $bean_type->options = '';
+ $bean_type->description = 'Display a sequence of content, such as important dates or milestones.';
+ $export['content_sequence'] = $bean_type;
+
+ return $export;
+}
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.features.field_base.inc b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.features.field_base.inc
new file mode 100644
index 000000000..88f92151b
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.features.field_base.inc
@@ -0,0 +1,332 @@
+ 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_body',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(),
+ 'translatable' => 0,
+ 'type' => 'text_long',
+ );
+
+ // Exported field_base: 'field_cont_seq_content'.
+ $field_bases['field_cont_seq_content'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_content',
+ 'indexes' => array(
+ 'revision_id' => array(
+ 0 => 'revision_id',
+ ),
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'hide_blank_items' => 1,
+ 'hide_initial_item' => 0,
+ 'path' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'field_collection',
+ );
+
+ // Exported field_base: 'field_cont_seq_date'.
+ $field_bases['field_cont_seq_date'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_date',
+ 'indexes' => array(),
+ 'locked' => 0,
+ 'module' => 'date',
+ 'settings' => array(
+ 'cache_count' => 4,
+ 'cache_enabled' => 0,
+ 'granularity' => array(
+ 'day' => 'day',
+ 'hour' => 'hour',
+ 'minute' => 'minute',
+ 'month' => 'month',
+ 'second' => 0,
+ 'year' => 'year',
+ ),
+ 'timezone_db' => 'UTC',
+ 'todate' => '',
+ 'tz_handling' => 'site',
+ ),
+ 'translatable' => 0,
+ 'type' => 'datetime',
+ );
+
+ // Exported field_base: 'field_cont_seq_description'.
+ $field_bases['field_cont_seq_description'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_description',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(),
+ 'translatable' => 0,
+ 'type' => 'text_long',
+ );
+
+ // Exported field_base: 'field_cont_seq_display'.
+ $field_bases['field_cont_seq_display'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_display',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(),
+ 'allowed_values_function' => 'cu_content_sequence_display_options',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_text',
+ );
+
+ // Exported field_base: 'field_cont_seq_display_date'.
+ $field_bases['field_cont_seq_display_date'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_display_date',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(
+ 'max_length' => 255,
+ ),
+ 'translatable' => 0,
+ 'type' => 'text',
+ );
+
+ // Exported field_base: 'field_cont_seq_display_end_date'.
+ $field_bases['field_cont_seq_display_end_date'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_display_end_date',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(
+ 'max_length' => 255,
+ ),
+ 'translatable' => 0,
+ 'type' => 'text',
+ );
+
+ // Exported field_base: 'field_cont_seq_end_date'.
+ $field_bases['field_cont_seq_end_date'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_end_date',
+ 'indexes' => array(),
+ 'locked' => 0,
+ 'module' => 'date',
+ 'settings' => array(
+ 'cache_count' => 4,
+ 'cache_enabled' => 0,
+ 'granularity' => array(
+ 'day' => 'day',
+ 'hour' => 'hour',
+ 'minute' => 'minute',
+ 'month' => 'month',
+ 'second' => 0,
+ 'year' => 'year',
+ ),
+ 'timezone_db' => 'UTC',
+ 'todate' => '',
+ 'tz_handling' => 'site',
+ ),
+ 'translatable' => 0,
+ 'type' => 'datetime',
+ );
+
+ // Exported field_base: 'field_cont_seq_group'.
+ $field_bases['field_cont_seq_group'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_group',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(
+ 'max_length' => 255,
+ ),
+ 'translatable' => 0,
+ 'type' => 'text',
+ );
+
+ // Exported field_base: 'field_cont_seq_photos'.
+ $field_bases['field_cont_seq_photos'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_photos',
+ 'indexes' => array(
+ 'fid' => array(
+ 0 => 'fid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'image',
+ 'settings' => array(
+ 'default_image' => 0,
+ 'uri_scheme' => 'public',
+ ),
+ 'translatable' => 0,
+ 'type' => 'image',
+ );
+
+ // Exported field_base: 'field_cont_seq_scale'.
+ $field_bases['field_cont_seq_scale'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_scale',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(),
+ 'allowed_values_function' => 'cu_content_sequence_scale_options',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_text',
+ );
+
+ // Exported field_base: 'field_cont_seq_title'.
+ $field_bases['field_cont_seq_title'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_title',
+ 'indexes' => array(),
+ 'locked' => 0,
+ 'module' => 'link',
+ 'settings' => array(
+ 'attributes' => array(
+ 'class' => '',
+ 'rel' => '',
+ 'target' => 'default',
+ ),
+ 'display' => array(
+ 'url_cutoff' => 80,
+ ),
+ 'enable_tokens' => 1,
+ 'title' => 'optional',
+ 'title_maxlength' => 128,
+ 'title_value' => '',
+ 'url' => 0,
+ ),
+ 'translatable' => 0,
+ 'type' => 'link_field',
+ );
+
+ // Exported field_base: 'field_cont_seq_video'.
+ $field_bases['field_cont_seq_video'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_seq_video',
+ 'indexes' => array(),
+ 'locked' => 0,
+ 'module' => 'video_embed_field',
+ 'settings' => array(),
+ 'translatable' => 0,
+ 'type' => 'video_embed_field',
+ );
+
+ // Exported field_base: 'field_cont_sequence_title'.
+ $field_bases['field_cont_sequence_title'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_cont_sequence_title',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(
+ 'max_length' => 255,
+ ),
+ 'translatable' => 0,
+ 'type' => 'text',
+ );
+
+ return $field_bases;
+}
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.features.field_instance.inc b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.features.field_instance.inc
new file mode 100644
index 000000000..86ce13851
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.features.field_instance.inc
@@ -0,0 +1,815 @@
+ 'content_sequence',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'view_mode' => 'full',
+ ),
+ 'type' => 'field_collection_fields',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_cont_seq_content',
+ 'label' => 'Sequence Content',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(),
+ 'type' => 'field_collection_embed',
+ 'weight' => 6,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'bean-content_sequence-field_cont_seq_description'.
+ $field_instances['bean-content_sequence-field_cont_seq_description'] = array(
+ 'bundle' => 'content_sequence',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 3,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_cont_seq_description',
+ 'label' => 'Description',
+ 'required' => 0,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 1,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'rows' => 5,
+ ),
+ 'type' => 'text_textarea',
+ 'weight' => 10,
+ ),
+ );
+
+ // Exported field_instance: 'bean-content_sequence-field_cont_seq_display'.
+ $field_instances['bean-content_sequence-field_cont_seq_display'] = array(
+ 'bundle' => 'content_sequence',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 'advanced',
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => '',
+ 'deleted' => 0,
+ 'description' => '"Advanced" timelines sort the content by the Start Date field, not the order it appears when editing.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'list',
+ 'settings' => array(),
+ 'type' => 'list_default',
+ 'weight' => 2,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_cont_seq_display',
+ 'label' => 'Display',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_select',
+ 'weight' => 4,
+ ),
+ );
+
+ // Exported field_instance: 'bean-content_sequence-field_cont_seq_photos'.
+ $field_instances['bean-content_sequence-field_cont_seq_photos'] = array(
+ 'bundle' => 'content_sequence',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => '',
+ 'image_style' => '',
+ ),
+ 'type' => 'image',
+ 'weight' => 5,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_cont_seq_photos',
+ 'label' => 'Image',
+ 'required' => 0,
+ 'settings' => array(
+ 'alt_field' => 1,
+ 'default_image' => 0,
+ 'file_directory' => 'timeline',
+ 'file_extensions' => 'png gif jpg jpeg',
+ 'max_filesize' => '',
+ 'max_resolution' => '2000x2000',
+ 'min_resolution' => '',
+ 'title_field' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'image',
+ 'settings' => array(
+ 'insert' => 0,
+ 'insert_absolute' => FALSE,
+ 'insert_class' => '',
+ 'insert_default' => 'auto',
+ 'insert_styles' => array(
+ 'auto' => 'auto',
+ 'colorbox__backstretch' => 0,
+ 'colorbox__el_hero' => 0,
+ 'colorbox__email_ad' => 0,
+ 'colorbox__email_ad_large' => 0,
+ 'colorbox__email_feature_thumbnail' => 0,
+ 'colorbox__email_feature_thumbnail_large' => 0,
+ 'colorbox__email_large' => 0,
+ 'colorbox__email_medium' => 0,
+ 'colorbox__email_teaser_thumbnail' => 0,
+ 'colorbox__flexslider_full' => 0,
+ 'colorbox__flexslider_thumbnail' => 0,
+ 'colorbox__focal_point_preview' => 0,
+ 'colorbox__hero' => 0,
+ 'colorbox__large' => 0,
+ 'colorbox__large_rectangle_thumbnail' => 0,
+ 'colorbox__large_square_thumbnail' => 0,
+ 'colorbox__large_wide_thumbnail' => 0,
+ 'colorbox__linkit_thumb' => 0,
+ 'colorbox__medium' => 0,
+ 'colorbox__preview' => 0,
+ 'colorbox__slider' => 0,
+ 'colorbox__slider-large' => 0,
+ 'colorbox__small' => 0,
+ 'colorbox__small_square_thumbnail' => 0,
+ 'colorbox__small_thumbnail' => 0,
+ 'colorbox__square' => 0,
+ 'colorbox__square_thumbnail' => 0,
+ 'colorbox__thumbnail' => 0,
+ 'icon_link' => 0,
+ 'image' => 0,
+ 'image_backstretch' => 0,
+ 'image_el_hero' => 0,
+ 'image_email_ad' => 0,
+ 'image_email_ad_large' => 0,
+ 'image_email_feature_thumbnail' => 0,
+ 'image_email_feature_thumbnail_large' => 0,
+ 'image_email_large' => 0,
+ 'image_email_medium' => 0,
+ 'image_email_teaser_thumbnail' => 0,
+ 'image_flexslider_full' => 0,
+ 'image_flexslider_thumbnail' => 0,
+ 'image_focal_point_preview' => 0,
+ 'image_hero' => 0,
+ 'image_large' => 0,
+ 'image_large_rectangle_thumbnail' => 0,
+ 'image_large_square_thumbnail' => 0,
+ 'image_large_wide_thumbnail' => 0,
+ 'image_linkit_thumb' => 0,
+ 'image_medium' => 0,
+ 'image_preview' => 0,
+ 'image_slider' => 0,
+ 'image_slider-large' => 0,
+ 'image_small' => 0,
+ 'image_small_square_thumbnail' => 0,
+ 'image_small_thumbnail' => 0,
+ 'image_square' => 0,
+ 'image_square_thumbnail' => 0,
+ 'image_thumbnail' => 0,
+ 'link' => 0,
+ ),
+ 'insert_width' => '',
+ 'preview_image_style' => 'thumbnail',
+ 'progress_indicator' => 'throbber',
+ ),
+ 'type' => 'image_image',
+ 'weight' => 11,
+ ),
+ );
+
+ // Exported field_instance: 'bean-content_sequence-field_cont_seq_scale'.
+ $field_instances['bean-content_sequence-field_cont_seq_scale'] = array(
+ 'bundle' => 'content_sequence',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 2,
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => '',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'list',
+ 'settings' => array(),
+ 'type' => 'list_default',
+ 'weight' => 4,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_cont_seq_scale',
+ 'label' => 'Scale',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_select',
+ 'weight' => 9,
+ ),
+ );
+
+ // Exported field_instance: 'bean-content_sequence-field_cont_sequence_title'.
+ $field_instances['bean-content_sequence-field_cont_sequence_title'] = array(
+ 'bundle' => 'content_sequence',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 6,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_cont_sequence_title',
+ 'label' => 'Title',
+ 'required' => 0,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'size' => 60,
+ ),
+ 'type' => 'text_textfield',
+ 'weight' => 3,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_cont_seq_content-field_cont_seq_body'.
+ $field_instances['field_collection_item-field_cont_seq_content-field_cont_seq_body'] = array(
+ 'bundle' => 'field_cont_seq_content',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 4,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_cont_seq_body',
+ 'label' => 'Body',
+ 'required' => 0,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 1,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'rows' => 5,
+ ),
+ 'type' => 'text_textarea',
+ 'weight' => 5,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_cont_seq_content-field_cont_seq_date'.
+ $field_instances['field_collection_item-field_cont_seq_content-field_cont_seq_date'] = array(
+ 'bundle' => 'field_cont_seq_content',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'date',
+ 'settings' => array(
+ 'format_type' => 'long',
+ 'fromto' => 'both',
+ 'multiple_from' => '',
+ 'multiple_number' => '',
+ 'multiple_to' => '',
+ 'show_remaining_days' => FALSE,
+ ),
+ 'type' => 'date_default',
+ 'weight' => 3,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_cont_seq_date',
+ 'label' => 'Start Date',
+ 'required' => 0,
+ 'settings' => array(
+ 'default_value' => 'now',
+ 'default_value2' => 'same',
+ 'default_value_code' => '',
+ 'default_value_code2' => '',
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'date',
+ 'settings' => array(
+ 'increment' => 15,
+ 'input_format' => 'm/d/Y - H:i:s',
+ 'input_format_custom' => '',
+ 'label_position' => 'above',
+ 'no_fieldset' => 0,
+ 'text_parts' => array(),
+ 'year_range' => '-3:+3',
+ ),
+ 'type' => 'date_popup',
+ 'weight' => 1,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_cont_seq_content-field_cont_seq_display_date'.
+ $field_instances['field_collection_item-field_cont_seq_content-field_cont_seq_display_date'] = array(
+ 'bundle' => 'field_cont_seq_content',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 6,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_cont_seq_display_date',
+ 'label' => 'Display Date',
+ 'required' => 0,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'size' => 60,
+ ),
+ 'type' => 'text_textfield',
+ 'weight' => 2,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_cont_seq_content-field_cont_seq_display_end_date'.
+ $field_instances['field_collection_item-field_cont_seq_content-field_cont_seq_display_end_date'] = array(
+ 'bundle' => 'field_cont_seq_content',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 7,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_cont_seq_display_end_date',
+ 'label' => 'Display End Date',
+ 'required' => 0,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'size' => 60,
+ ),
+ 'type' => 'text_textfield',
+ 'weight' => 14,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_cont_seq_content-field_cont_seq_end_date'.
+ $field_instances['field_collection_item-field_cont_seq_content-field_cont_seq_end_date'] = array(
+ 'bundle' => 'field_cont_seq_content',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'date',
+ 'settings' => array(
+ 'format_type' => 'long',
+ 'fromto' => 'both',
+ 'multiple_from' => '',
+ 'multiple_number' => '',
+ 'multiple_to' => '',
+ 'show_remaining_days' => FALSE,
+ ),
+ 'type' => 'date_default',
+ 'weight' => 5,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_cont_seq_end_date',
+ 'label' => 'End Date',
+ 'required' => 0,
+ 'settings' => array(
+ 'default_value' => 'now',
+ 'default_value2' => 'same',
+ 'default_value_code' => '',
+ 'default_value_code2' => '',
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'date',
+ 'settings' => array(
+ 'increment' => 15,
+ 'input_format' => 'm/d/Y - H:i:s',
+ 'input_format_custom' => '',
+ 'label_position' => 'above',
+ 'no_fieldset' => 0,
+ 'text_parts' => array(),
+ 'year_range' => '-3:+3',
+ ),
+ 'type' => 'date_popup',
+ 'weight' => 13,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_cont_seq_content-field_cont_seq_group'.
+ $field_instances['field_collection_item-field_cont_seq_content-field_cont_seq_group'] = array(
+ 'bundle' => 'field_cont_seq_content',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 8,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_cont_seq_group',
+ 'label' => 'Group',
+ 'required' => 0,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'size' => 60,
+ ),
+ 'type' => 'text_textfield',
+ 'weight' => 16,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_cont_seq_content-field_cont_seq_photos'.
+ $field_instances['field_collection_item-field_cont_seq_content-field_cont_seq_photos'] = array(
+ 'bundle' => 'field_cont_seq_content',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => '',
+ 'image_style' => '',
+ ),
+ 'type' => 'image',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_cont_seq_photos',
+ 'label' => 'Image',
+ 'required' => 0,
+ 'settings' => array(
+ 'alt_field' => 1,
+ 'default_image' => 0,
+ 'file_directory' => 'timeline',
+ 'file_extensions' => 'png gif jpg jpeg',
+ 'max_filesize' => '',
+ 'max_resolution' => '2000x2000',
+ 'min_resolution' => '',
+ 'title_field' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'image',
+ 'settings' => array(
+ 'insert' => 0,
+ 'insert_absolute' => FALSE,
+ 'insert_class' => '',
+ 'insert_default' => 'auto',
+ 'insert_styles' => array(
+ 'auto' => 'auto',
+ 'colorbox__backstretch' => 0,
+ 'colorbox__el_hero' => 0,
+ 'colorbox__email_ad' => 0,
+ 'colorbox__email_ad_large' => 0,
+ 'colorbox__email_feature_thumbnail' => 0,
+ 'colorbox__email_feature_thumbnail_large' => 0,
+ 'colorbox__email_large' => 0,
+ 'colorbox__email_medium' => 0,
+ 'colorbox__email_teaser_thumbnail' => 0,
+ 'colorbox__flexslider_full' => 0,
+ 'colorbox__flexslider_thumbnail' => 0,
+ 'colorbox__focal_point_preview' => 0,
+ 'colorbox__hero' => 0,
+ 'colorbox__large' => 0,
+ 'colorbox__large_rectangle_thumbnail' => 0,
+ 'colorbox__large_square_thumbnail' => 0,
+ 'colorbox__large_wide_thumbnail' => 0,
+ 'colorbox__linkit_thumb' => 0,
+ 'colorbox__medium' => 0,
+ 'colorbox__preview' => 0,
+ 'colorbox__slider' => 0,
+ 'colorbox__slider-large' => 0,
+ 'colorbox__small' => 0,
+ 'colorbox__small_square_thumbnail' => 0,
+ 'colorbox__small_thumbnail' => 0,
+ 'colorbox__square' => 0,
+ 'colorbox__square_thumbnail' => 0,
+ 'colorbox__thumbnail' => 0,
+ 'icon_link' => 0,
+ 'image' => 0,
+ 'image_backstretch' => 0,
+ 'image_el_hero' => 0,
+ 'image_email_ad' => 0,
+ 'image_email_ad_large' => 0,
+ 'image_email_feature_thumbnail' => 0,
+ 'image_email_feature_thumbnail_large' => 0,
+ 'image_email_large' => 0,
+ 'image_email_medium' => 0,
+ 'image_email_teaser_thumbnail' => 0,
+ 'image_flexslider_full' => 0,
+ 'image_flexslider_thumbnail' => 0,
+ 'image_focal_point_preview' => 0,
+ 'image_hero' => 0,
+ 'image_large' => 0,
+ 'image_large_rectangle_thumbnail' => 0,
+ 'image_large_square_thumbnail' => 0,
+ 'image_large_wide_thumbnail' => 0,
+ 'image_linkit_thumb' => 0,
+ 'image_medium' => 0,
+ 'image_preview' => 0,
+ 'image_slider' => 0,
+ 'image_slider-large' => 0,
+ 'image_small' => 0,
+ 'image_small_square_thumbnail' => 0,
+ 'image_small_thumbnail' => 0,
+ 'image_square' => 0,
+ 'image_square_thumbnail' => 0,
+ 'image_thumbnail' => 0,
+ 'link' => 0,
+ ),
+ 'insert_width' => '',
+ 'preview_image_style' => 'thumbnail',
+ 'progress_indicator' => 'throbber',
+ ),
+ 'type' => 'image_image',
+ 'weight' => 7,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_cont_seq_content-field_cont_seq_title'.
+ $field_instances['field_collection_item-field_cont_seq_content-field_cont_seq_title'] = array(
+ 'bundle' => 'field_cont_seq_content',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'link',
+ 'settings' => array(),
+ 'type' => 'link_default',
+ 'weight' => 10,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_cont_seq_title',
+ 'label' => 'Title',
+ 'required' => 1,
+ 'settings' => array(
+ 'absolute_url' => 1,
+ 'attributes' => array(
+ 'class' => '',
+ 'configurable_class' => 0,
+ 'configurable_title' => 0,
+ 'rel' => '',
+ 'target' => 'default',
+ 'title' => '',
+ ),
+ 'display' => array(
+ 'url_cutoff' => 80,
+ ),
+ 'enable_tokens' => 1,
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 1,
+ 'profile' => 'express_linkit_field_profile',
+ ),
+ 'rel_remove' => 'default',
+ 'title' => 'required',
+ 'title_label_use_field_label' => 0,
+ 'title_maxlength' => 128,
+ 'title_value' => '',
+ 'url' => 'optional',
+ 'user_register_form' => FALSE,
+ 'validate_url' => 0,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'link',
+ 'settings' => array(),
+ 'type' => 'link_field',
+ 'weight' => 15,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_cont_seq_content-field_cont_seq_video'.
+ $field_instances['field_collection_item-field_cont_seq_content-field_cont_seq_video'] = array(
+ 'bundle' => 'field_cont_seq_content',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => 'Enter the url of a Vimeo or YouTube video.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'video_embed_field',
+ 'settings' => array(
+ 'description' => 1,
+ 'description_position' => 'bottom',
+ 'video_style' => 'normal',
+ ),
+ 'type' => 'video_embed_field',
+ 'weight' => 9,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_cont_seq_video',
+ 'label' => 'Video',
+ 'required' => 0,
+ 'settings' => array(
+ 'allowed_providers' => array(
+ 'vimeo' => 'vimeo',
+ 'youtube' => 'youtube',
+ ),
+ 'description_field' => 0,
+ 'description_length' => 128,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'video_embed_field',
+ 'settings' => array(),
+ 'type' => 'video_embed_field_video',
+ 'weight' => 8,
+ ),
+ );
+
+ // Translatables
+ // Included for use with string extractors like potx.
+ t('"Advanced" timelines sort the content by the Start Date field, not the order it appears when editing.');
+ t('Body');
+ t('Description');
+ t('Display');
+ t('Display Date');
+ t('Display End Date');
+ t('End Date');
+ t('Enter the url of a Vimeo or YouTube video.');
+ t('Group');
+ t('Image');
+ t('Scale');
+ t('Sequence Content');
+ t('Start Date');
+ t('Title');
+ t('Video');
+
+ return $field_instances;
+}
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.features.inc b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.features.inc
new file mode 100644
index 000000000..dd3a4e98f
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.features.inc
@@ -0,0 +1,17 @@
+ "5");
+ }
+ if ($module == "field_group" && $api == "field_group") {
+ return array("version" => "1");
+ }
+}
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.field_group.inc b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.field_group.inc
new file mode 100644
index 000000000..3193f08ac
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.field_group.inc
@@ -0,0 +1,282 @@
+disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_advanced|bean|content_sequence|form';
+ $field_group->group_name = 'group_advanced';
+ $field_group->entity_type = 'bean';
+ $field_group->bundle = 'content_sequence';
+ $field_group->mode = 'form';
+ $field_group->parent_name = '';
+ $field_group->data = array(
+ 'label' => 'Advanced Settings',
+ 'weight' => '5',
+ 'children' => array(
+ 0 => 'field_cont_seq_description',
+ 1 => 'field_cont_seq_scale',
+ 2 => 'field_cont_seq_photos',
+ ),
+ 'format_type' => 'fieldset',
+ 'format_settings' => array(
+ 'label' => 'Advanced Settings',
+ 'instance_settings' => array(
+ 'required_fields' => 1,
+ 'id' => '',
+ 'classes' => 'group-advanced field-group-fieldset',
+ 'description' => 'These fields only apply to advanced timelines.',
+ ),
+ 'formatter' => 'collapsed',
+ ),
+ );
+ $field_groups['group_advanced|bean|content_sequence|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_cont_seq_body|field_collection_item|field_cont_seq_content|form';
+ $field_group->group_name = 'group_cont_seq_body';
+ $field_group->entity_type = 'field_collection_item';
+ $field_group->bundle = 'field_cont_seq_content';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_cont_seq_content';
+ $field_group->data = array(
+ 'label' => 'Content',
+ 'weight' => '11',
+ 'children' => array(
+ 0 => 'field_cont_seq_photos',
+ 1 => 'field_cont_seq_body',
+ 2 => 'field_cont_seq_video',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-cont-seq-body field-group-htab',
+ 'required_fields' => 1,
+ ),
+ ),
+ );
+ $field_groups['group_cont_seq_body|field_collection_item|field_cont_seq_content|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_cont_seq_content|field_collection_item|field_cont_seq_content|form';
+ $field_group->group_name = 'group_cont_seq_content';
+ $field_group->entity_type = 'field_collection_item';
+ $field_group->bundle = 'field_cont_seq_content';
+ $field_group->mode = 'form';
+ $field_group->parent_name = '';
+ $field_group->data = array(
+ 'label' => 'Timeline Content',
+ 'weight' => '0',
+ 'children' => array(
+ 0 => 'group_cont_seq_title',
+ 1 => 'group_cont_seq_date',
+ 2 => 'group_cont_seq_body',
+ 3 => 'group_cont_seq_image',
+ 4 => 'group_group',
+ ),
+ 'format_type' => 'htabs',
+ 'format_settings' => array(
+ 'formatter' => '',
+ 'instance_settings' => array(
+ 'classes' => 'group-cont-seq-content field-group-htabs',
+ 'id' => '',
+ ),
+ ),
+ );
+ $field_groups['group_cont_seq_content|field_collection_item|field_cont_seq_content|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_cont_seq_date|field_collection_item|field_cont_seq_content|form';
+ $field_group->group_name = 'group_cont_seq_date';
+ $field_group->entity_type = 'field_collection_item';
+ $field_group->bundle = 'field_cont_seq_content';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_cont_seq_content';
+ $field_group->data = array(
+ 'label' => 'Date',
+ 'weight' => '12',
+ 'children' => array(
+ 0 => 'group_start_date',
+ 1 => 'group_end_date',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-cont-seq-date field-group-htab',
+ 'required_fields' => 1,
+ ),
+ ),
+ );
+ $field_groups['group_cont_seq_date|field_collection_item|field_cont_seq_content|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_cont_seq_image|field_collection_item|field_cont_seq_content|form';
+ $field_group->group_name = 'group_cont_seq_image';
+ $field_group->entity_type = 'field_collection_item';
+ $field_group->bundle = 'field_cont_seq_content';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_cont_seq_content';
+ $field_group->data = array(
+ 'label' => 'Image',
+ 'weight' => '13',
+ 'children' => array(),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-cont-seq-image field-group-htab',
+ 'required_fields' => 1,
+ ),
+ ),
+ );
+ $field_groups['group_cont_seq_image|field_collection_item|field_cont_seq_content|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_cont_seq_title|field_collection_item|field_cont_seq_content|form';
+ $field_group->group_name = 'group_cont_seq_title';
+ $field_group->entity_type = 'field_collection_item';
+ $field_group->bundle = 'field_cont_seq_content';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_cont_seq_content';
+ $field_group->data = array(
+ 'label' => 'Title',
+ 'weight' => '10',
+ 'children' => array(
+ 0 => 'field_cont_seq_title',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-cont-seq-title field-group-htab',
+ 'required_fields' => 1,
+ ),
+ ),
+ );
+ $field_groups['group_cont_seq_title|field_collection_item|field_cont_seq_content|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_end_date|field_collection_item|field_cont_seq_content|form';
+ $field_group->group_name = 'group_end_date';
+ $field_group->entity_type = 'field_collection_item';
+ $field_group->bundle = 'field_cont_seq_content';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_cont_seq_date';
+ $field_group->data = array(
+ 'label' => 'End Date',
+ 'weight' => '11',
+ 'children' => array(
+ 0 => 'field_cont_seq_end_date',
+ 1 => 'field_cont_seq_display_end_date',
+ ),
+ 'format_type' => 'fieldset',
+ 'format_settings' => array(
+ 'label' => 'End Date',
+ 'instance_settings' => array(
+ 'required_fields' => 1,
+ 'id' => '',
+ 'classes' => 'group-end-date field-group-fieldset',
+ 'description' => '',
+ ),
+ 'formatter' => 'collapsed',
+ ),
+ );
+ $field_groups['group_end_date|field_collection_item|field_cont_seq_content|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_group|field_collection_item|field_cont_seq_content|form';
+ $field_group->group_name = 'group_group';
+ $field_group->entity_type = 'field_collection_item';
+ $field_group->bundle = 'field_cont_seq_content';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_cont_seq_content';
+ $field_group->data = array(
+ 'label' => 'Group',
+ 'weight' => '14',
+ 'children' => array(
+ 0 => 'field_cont_seq_group',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-group field-group-htab',
+ 'required_fields' => 1,
+ ),
+ ),
+ );
+ $field_groups['group_group|field_collection_item|field_cont_seq_content|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_start_date|field_collection_item|field_cont_seq_content|form';
+ $field_group->group_name = 'group_start_date';
+ $field_group->entity_type = 'field_collection_item';
+ $field_group->bundle = 'field_cont_seq_content';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_cont_seq_date';
+ $field_group->data = array(
+ 'label' => 'Start Date',
+ 'weight' => '10',
+ 'children' => array(
+ 0 => 'field_cont_seq_date',
+ 1 => 'field_cont_seq_display_date',
+ ),
+ 'format_type' => 'fieldset',
+ 'format_settings' => array(
+ 'formatter' => 'collapsible',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-start-date field-group-fieldset',
+ 'required_fields' => 1,
+ 'id' => '',
+ ),
+ ),
+ );
+ $field_groups['group_start_date|field_collection_item|field_cont_seq_content|form'] = $field_group;
+
+ // Translatables
+ // Included for use with string extractors like potx.
+ t('Advanced Settings');
+ t('Content');
+ t('Date');
+ t('End Date');
+ t('Group');
+ t('Image');
+ t('Start Date');
+ t('Timeline Content');
+ t('Title');
+
+ return $field_groups;
+}
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.info b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.info
new file mode 100644
index 000000000..bd7506405
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.info
@@ -0,0 +1,58 @@
+name = Content Sequence
+core = 7.x
+package = CU Timeline Bundle
+version = 7.x-1.1
+dependencies[] = bean_admin_ui
+dependencies[] = ctools
+dependencies[] = date
+dependencies[] = features
+dependencies[] = field_collection
+dependencies[] = field_group
+dependencies[] = image
+dependencies[] = link
+dependencies[] = list
+dependencies[] = text
+dependencies[] = video_embed_field
+stylesheets[all][] = css/cu-content-sequence.css
+features[bean_type][] = content_sequence
+features[ctools][] = bean_admin_ui:bean:5
+features[ctools][] = field_group:field_group:1
+features[features_api][] = api:2
+features[field_base][] = field_cont_seq_body
+features[field_base][] = field_cont_seq_content
+features[field_base][] = field_cont_seq_date
+features[field_base][] = field_cont_seq_description
+features[field_base][] = field_cont_seq_display
+features[field_base][] = field_cont_seq_display_date
+features[field_base][] = field_cont_seq_display_end_date
+features[field_base][] = field_cont_seq_end_date
+features[field_base][] = field_cont_seq_group
+features[field_base][] = field_cont_seq_photos
+features[field_base][] = field_cont_seq_scale
+features[field_base][] = field_cont_seq_title
+features[field_base][] = field_cont_seq_video
+features[field_base][] = field_cont_sequence_title
+features[field_group][] = group_advanced|bean|content_sequence|form
+features[field_group][] = group_cont_seq_body|field_collection_item|field_cont_seq_content|form
+features[field_group][] = group_cont_seq_content|field_collection_item|field_cont_seq_content|form
+features[field_group][] = group_cont_seq_date|field_collection_item|field_cont_seq_content|form
+features[field_group][] = group_cont_seq_image|field_collection_item|field_cont_seq_content|form
+features[field_group][] = group_cont_seq_title|field_collection_item|field_cont_seq_content|form
+features[field_group][] = group_end_date|field_collection_item|field_cont_seq_content|form
+features[field_group][] = group_group|field_collection_item|field_cont_seq_content|form
+features[field_group][] = group_start_date|field_collection_item|field_cont_seq_content|form
+features[field_instance][] = bean-content_sequence-field_cont_seq_content
+features[field_instance][] = bean-content_sequence-field_cont_seq_description
+features[field_instance][] = bean-content_sequence-field_cont_seq_display
+features[field_instance][] = bean-content_sequence-field_cont_seq_photos
+features[field_instance][] = bean-content_sequence-field_cont_seq_scale
+features[field_instance][] = bean-content_sequence-field_cont_sequence_title
+features[field_instance][] = field_collection_item-field_cont_seq_content-field_cont_seq_body
+features[field_instance][] = field_collection_item-field_cont_seq_content-field_cont_seq_date
+features[field_instance][] = field_collection_item-field_cont_seq_content-field_cont_seq_display_date
+features[field_instance][] = field_collection_item-field_cont_seq_content-field_cont_seq_display_end_date
+features[field_instance][] = field_collection_item-field_cont_seq_content-field_cont_seq_end_date
+features[field_instance][] = field_collection_item-field_cont_seq_content-field_cont_seq_group
+features[field_instance][] = field_collection_item-field_cont_seq_content-field_cont_seq_photos
+features[field_instance][] = field_collection_item-field_cont_seq_content-field_cont_seq_title
+features[field_instance][] = field_collection_item-field_cont_seq_content-field_cont_seq_video
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.module b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.module
new file mode 100644
index 000000000..03782149b
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/cu_content_sequence.module
@@ -0,0 +1,269 @@
+ $child) {
+ $child = current($child['entity']['field_collection_item']);
+ // Prepare start date.
+ $start_date = array();
+ if (!empty($child['field_cont_seq_date'])) {
+ $date = strtotime($child['field_cont_seq_date']['#items'][0]['value']);
+ $start_date = array(
+ 'month' => date('n', $date),
+ 'day' => date('j', $date),
+ 'year' => date('Y', $date),
+ 'timestamp' => $date,
+ );
+ }
+ if (!empty($child['field_cont_seq_display_date'])){
+ $start_date['display_date'] = $child['field_cont_seq_display_date']['#items'][0]['value'];
+ }
+ // Prepare end date.
+ $end_date = array();
+ if (!empty($child['field_cont_seq_end_date'])) {
+ $date = strtotime($child['field_cont_seq_end_date']['#items'][0]['value']);
+ $end_date = array(
+ 'month' => date('n', $date),
+ 'day' => date('j', $date),
+ 'year' => date('Y', $date),
+ 'timestamp' => $date,
+ );
+ }
+ if (!empty($child['field_cont_seq_display_end_date'])){
+ $end_date['display_date'] = $child['field_cont_seq_display_end_date']['#items'][0]['value'];
+ }
+ // Initialize array for this timeline item.
+ $events[$key] = array();
+ // Add text to data.
+ $events[$key]['text'] = array(
+ 'headline' => render($child['field_cont_seq_title']),
+ 'text' => !empty($child['field_cont_seq_body']) ? $child['field_cont_seq_body'][0]['#markup'] : '',
+ );
+ // Add group to data.
+ if (!empty($child['field_cont_seq_group'])) {
+ $events[$key]['group'] = $child['field_cont_seq_group']['#items'][0]['value'];
+ }
+ // Add photo to data.
+ if (!empty($child['field_cont_seq_photos'])) {
+ $events[$key]['media'] = array(
+ 'url' => image_style_url('medium', $child['field_cont_seq_photos'][0]['#item']['uri']),
+ 'alt' => $child['field_cont_seq_photos'][0]['#item']['alt'],
+ 'type' => 'image',
+ );
+ }
+ // Add video to data
+ if (!empty($child['field_cont_seq_video'])) {
+ $events[$key]['media'] = array(
+ 'url' => $child['field_cont_seq_video'][0][0]['#url'],
+ 'type' => 'video',
+ 'rendered' => render($child['field_cont_seq_video']),
+ );
+ }
+ // Add dates to data.
+ if (!empty($start_date)) {
+ $events[$key]['start_date'] = $start_date;
+ $events[$key]['weight'] = $start_date['timestamp'];
+ }
+ else {
+ $events[$key]['weight'] = $key;
+ }
+ if (!empty($end_date)) {
+ $events[$key]['end_date'] = $end_date;
+ }
+
+ // Make label for simple h timeline
+ if (!empty($start_date)) {
+ if (!empty($start_date['display_date'])) {
+ $events[$key]['label'] = $start_date['display_date'];
+ }
+ else {
+ $events[$key]['label'] = date('n/j/Y', $start_date['timestamp']);
+ }
+ }
+ else {
+ $events[$key]['label'] = $key;
+ }
+ $events[$key]['data_index'] = str_pad($key + 1, 4, "0", STR_PAD_LEFT);
+ }
+ // Put all timeline data into array.
+ $data = array(
+ 'events' => $events,
+ );
+
+ // Add timeline title/description/photo.
+ if (!empty($vars['field_cont_sequence_title'])) {
+ $data['title']['text']['headline'] = $vars['field_cont_sequence_title'][0]['value'];
+ $vars['timeline_title'] = $vars['field_cont_sequence_title'][0]['value'];
+ }
+ if (!empty($vars['field_cont_seq_description'])) {
+ $data['title']['text']['text'] = render($vars['content']['field_cont_seq_description']);
+ }
+ if (!empty($vars['field_cont_seq_photos'])) {
+ $data['title']['media'] = array(
+ 'url' => image_style_url('medium', $vars['field_cont_seq_photos'][0]['uri']),
+ 'alt' => $vars['field_cont_seq_photos'][0]['alt'],
+ 'type' => 'image',
+ );
+ }
+
+ // Encode timeline data as json for advanced timeline.
+ $vars['json'] = json_encode($data);
+
+ // Make timeline list view.
+ $list = array();
+ if ($vars['field_cont_seq_display'][0]['value'] == 'advanced') {
+ uasort($data['events'], 'drupal_sort_weight');
+ }
+ foreach ($data['events'] as $event) {
+ $list[] = theme('content_sequence_item', array('vars' => $event));
+ }
+
+ // Add data to variables so we can use them in tpl files.
+ $vars['event_list'] = $list;
+ $vars['events_data'] = $data;
+ $vars['uid'] = $vars['bean']->bid;
+ $vars['scale'] = $vars['field_cont_seq_scale'][0]['value'];
+ }
+
+}
+
+/**
+ * Implements hook_theme().
+ */
+function cu_content_sequence_theme(&$existing, $type, $theme, $path) {
+ $registry = array();
+ $template_dir = drupal_get_path('module', 'cu_content_sequence') . '/templates';
+ $registry['content_sequence_item'] = array(
+ 'template' => 'content-sequence-item',
+ 'path' => $template_dir,
+ 'render element' => 'elements',
+ );
+ return $registry;
+}
+
+/**
+ * Implements hook_field_widget_form_alter.
+ *
+ * Make date fieds have no default value.
+ * For some reason, new data fields have a value2 key.
+ * If value2 exists, we can assume it's a new field.
+ */
+function cu_content_sequence_field_widget_form_alter(&$element, &$form_state, $context) {
+ if (!empty($element['#entity_type']) && $element['#entity_type'] == 'field_collection_item') {
+ if ($element['#field_name'] == 'field_cont_seq_date' && $element['#bundle'] == 'field_cont_seq_content') {
+ if (!empty($element['#default_value']['value2'])) {
+ $element['#default_value']['value'] = '';
+ }
+
+ }
+ if ($element['#field_name'] == 'field_cont_seq_end_date' && $element['#bundle'] == 'field_cont_seq_content') {
+ if (!empty($element['#default_value']['value2'])) {
+ $element['#default_value']['value'] = '';
+ }
+ }
+ }
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ *
+ * Add validation function.
+ */
+function cu_content_sequence_form_bean_form_alter(&$form, &$form_state, $form_id) {
+ if ($form['bean']['#value']->type == 'content_sequence') {
+ $form['title']['#access'] = FALSE;
+ $form['#validate'][] = 'cu_content_sequence_validate';
+ }
+}
+
+/**
+ * Vallidation function for cu_content_sequence_form_bean_form_alter().
+ *
+ * If timeline is set to advanced, make sure date fields are not empty.
+ */
+function cu_content_sequence_validate($form, &$form_state) {
+ unset($form_state['values']['field_cont_seq_content'][LANGUAGE_NONE]['add_more']);
+ $items = $form_state['values']['field_cont_seq_content'][LANGUAGE_NONE];
+
+ if ($form_state['values']['field_cont_seq_display'][LANGUAGE_NONE][0]['value'] == 'advanced') {
+ foreach ($items as $key => $item) {
+ if (!$item['field_cont_seq_date'][LANGUAGE_NONE][0]['value']) {
+ form_set_error('field_cont_seq_content][' . LANGUAGE_NONE . '][' . $key . '][field_cont_seq_date', 'Sequence item "' . $title . '" requires a date if the content sequence display is set to "Advanced".');
+ }
+ }
+ }
+}
+
+/**
+ * Allowed values function to return timeline display options.
+ */
+function cu_content_sequence_display_options() {
+ return array(
+ 'advanced' => 'Advanced (Timeline)',
+ 'simple_horizontal' => 'Simple Horizontal',
+ 'simple_vertical' => 'Simple Vertical',
+ );
+}
+
+/**
+ * Allowed values function to return timeline scale options.
+ */
+function cu_content_sequence_scale_options() {
+ return array(
+ '.5' => '.5',
+ '1' => '1',
+ '2' => '2',
+ );
+}
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/js/cu-content-sequence-simple-horizontal.js b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/js/cu-content-sequence-simple-horizontal.js
new file mode 100644
index 000000000..3955e8a54
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/js/cu-content-sequence-simple-horizontal.js
@@ -0,0 +1,354 @@
+(function( $ ){
+jQuery(document).ready(function($){
+ $('.cd-horizontal-timeline .events li a').first().addClass('selected');
+ $('.cd-horizontal-timeline .events-content li').first().addClass('selected');
+ var timelines = $('.cd-horizontal-timeline'),
+ eventsMinDistance = 60;
+
+ (timelines.length > 0) && initTimeline(timelines);
+
+ function initTimeline(timelines) {
+ timelines.each(function(){
+ var timeline = $(this),
+ timelineComponents = {};
+ //cache timeline components
+ timelineComponents['timelineWrapper'] = timeline.find('.events-wrapper');
+ timelineComponents['eventsWrapper'] = timelineComponents['timelineWrapper'].children('.events');
+ timelineComponents['fillingLine'] = timelineComponents['eventsWrapper'].children('.filling-line');
+ timelineComponents['timelineEvents'] = timelineComponents['eventsWrapper'].find('a');
+ timelineComponents['timelineDates'] = parseDate(timelineComponents['timelineEvents']);
+ timelineComponents['eventsMinLapse'] = minLapse(timelineComponents['timelineDates']);
+ timelineComponents['timelineNavigation'] = timeline.find('.cd-timeline-navigation');
+ timelineComponents['timelineItemNavigation'] = timeline.find('.cd-timeline-item-navigation');
+ timelineComponents['eventsContent'] = timeline.children('.events-content');
+
+ //assign a left postion to the single events along the timeline
+
+
+ //setDatePosition(timelineComponents, eventsMinDistance);
+
+ var distance=0;
+ var distanceNorm=0;
+ var distnew=0;
+ var distprev=0;
+ for (i = 0; i < timelineComponents['timelineDates'].length; i++) {
+ var distance = Math.abs(daydiff(timelineComponents['timelineDates'][0], timelineComponents['timelineDates'][i])),
+ distanceNorm = Math.round(distance / timelineComponents['eventsMinLapse']) + 2;
+
+ var spacing = timelineSpacing(timelineComponents['timelineDates'].length);
+
+ distnew = distprev + spacing;
+ timelineComponents['timelineEvents'].eq(i).css('left', distnew + 'px');
+ distprev = distnew;
+ }
+
+ //assign a width to the timeline
+ var timelineTotWidth = setTimelineWidth(timelineComponents, eventsMinDistance);
+ //the timeline has been initialize - show it
+ timeline.addClass('loaded');
+
+ //detect click on the next arrow
+ timelineComponents['timelineNavigation'].on('click', '.next', function(event){
+ event.preventDefault();
+ // showNewContent
+ updateSlide(timelineComponents, timelineTotWidth, 'next');
+
+ });
+ //detect click on the prev arrow
+ timelineComponents['timelineNavigation'].on('click', '.prev', function(event){
+ event.preventDefault();
+ updateSlide(timelineComponents, timelineTotWidth, 'prev');
+ });
+
+ // Timeline Items navigation
+ timelineComponents['timelineItemNavigation'].on('click', '.next', function(event){
+ event.preventDefault();
+ showNewContent(timelineComponents, timelineTotWidth, 'next');
+ slidePrevNext();
+ });
+ timelineComponents['timelineItemNavigation'].on('click', '.prev', function(event){
+ event.preventDefault();
+ showNewContent(timelineComponents, timelineTotWidth, 'prev');
+ slidePrevNext();
+ });
+
+ // Forward to event if hash exists
+ var hash = window.location.hash.substr(1);;
+ if ($(".cd-horizontal-timeline .events a[data-date='" + hash + "']").length) {
+ $(".cd-horizontal-timeline .events a[data-date='" + hash + "']").each(function(){
+ timelineComponents['timelineEvents'].removeClass('selected');
+ $(this).addClass('selected');
+ updateOlderEvents($(this));
+ updateFilling($(this), timelineComponents['fillingLine'], timelineTotWidth);
+ updateVisibleContent($(this), timelineComponents['eventsContent']);
+ });
+ }
+
+ //detect click on the a single event - show new event content
+ timelineComponents['eventsWrapper'].on('click', 'a', function(event){
+ event.preventDefault();
+ timelineComponents['timelineEvents'].removeClass('selected');
+ $(this).addClass('selected');
+ updateOlderEvents($(this));
+ updateFilling($(this), timelineComponents['fillingLine'], timelineTotWidth);
+ updateVisibleContent($(this), timelineComponents['eventsContent']);
+
+ timelineUpdateURL();
+
+ });
+
+ //on swipe, show next/prev event content
+ timelineComponents['eventsContent'].on('swipeleft', function(){
+ var mq = checkMQ();
+ ( mq == 'mobile' ) && showNewContent(timelineComponents, timelineTotWidth, 'next');
+ });
+ timelineComponents['eventsContent'].on('swiperight', function(){
+ var mq = checkMQ();
+ ( mq == 'mobile' ) && showNewContent(timelineComponents, timelineTotWidth, 'prev');
+ });
+
+ //keyboard navigation
+ $(document).keyup(function(event){
+ if(event.which=='37' && elementInViewport(timeline.get(0)) ) {
+ showNewContent(timelineComponents, timelineTotWidth, 'prev');
+ } else if( event.which=='39' && elementInViewport(timeline.get(0))) {
+ showNewContent(timelineComponents, timelineTotWidth, 'next');
+ }
+ });
+ });
+ }
+
+ function updateSlide(timelineComponents, timelineTotWidth, string) {
+ //retrieve translateX value of timelineComponents['eventsWrapper']
+ var translateValue = getTranslateValue(timelineComponents['eventsWrapper']),
+ wrapperWidth = Number(timelineComponents['timelineWrapper'].css('width').replace('px', ''));
+ //translate the timeline to the left('next')/right('prev')
+ (string == 'next')
+ ? translateTimeline(timelineComponents, translateValue - wrapperWidth + eventsMinDistance, wrapperWidth - timelineTotWidth)
+ : translateTimeline(timelineComponents, translateValue + wrapperWidth - eventsMinDistance);
+ }
+
+ function showNewContent(timelineComponents, timelineTotWidth, string) {
+ //go from one event to the next/previous one
+ var visibleContent = timelineComponents['eventsContent'].find('.selected'),
+ newContent = ( string == 'next' ) ? visibleContent.next() : visibleContent.prev();
+ if ( newContent.length > 0 ) { //if there's a next/prev event - show it
+ var selectedDate = timelineComponents['eventsWrapper'].find('.selected'),
+ newEvent = ( string == 'next' ) ? selectedDate.parent('li').next('li').children('a') : selectedDate.parent('li').prev('li').children('a');
+
+ updateFilling(newEvent, timelineComponents['fillingLine'], timelineTotWidth);
+ updateVisibleContent(newEvent, timelineComponents['eventsContent']);
+ newEvent.addClass('selected');
+ selectedDate.removeClass('selected');
+ updateOlderEvents(newEvent);
+ updateTimelinePosition(string, newEvent, timelineComponents);
+ }
+ }
+
+ function updateTimelinePosition(string, event, timelineComponents) {
+ //translate timeline to the left/right according to the position of the selected event
+ var eventStyle = window.getComputedStyle(event.get(0), null),
+ eventLeft = Number(eventStyle.getPropertyValue("left").replace('px', '')),
+ timelineWidth = Number(timelineComponents['timelineWrapper'].css('width').replace('px', '')),
+ timelineTotWidth = Number(timelineComponents['eventsWrapper'].css('width').replace('px', ''));
+ var timelineTranslate = getTranslateValue(timelineComponents['eventsWrapper']);
+
+ if( (string == 'next' && eventLeft > timelineWidth - timelineTranslate) || (string == 'prev' && eventLeft < - timelineTranslate) ) {
+ translateTimeline(timelineComponents, - eventLeft + timelineWidth/2, timelineWidth - timelineTotWidth);
+ }
+ }
+
+ function translateTimeline(timelineComponents, value, totWidth) {
+ var eventsWrapper = timelineComponents['eventsWrapper'].get(0);
+ value = (value > 0) ? 0 : value; //only negative translate value
+ value = ( !(typeof totWidth === 'undefined') && value < totWidth ) ? totWidth : value; //do not translate more than timeline width
+ setTransformValue(eventsWrapper, 'translateX', value+'px');
+ //update navigation arrows visibility
+ (value == 0 ) ? timelineComponents['timelineNavigation'].find('.prev').addClass('inactive') : timelineComponents['timelineNavigation'].find('.prev').removeClass('inactive');
+ (value == totWidth ) ? timelineComponents['timelineNavigation'].find('.next').addClass('inactive') : timelineComponents['timelineNavigation'].find('.next').removeClass('inactive');
+
+
+ }
+
+ function updateFilling(selectedEvent, filling, totWidth) {
+ //change .filling-line length according to the selected event
+ var eventStyle = window.getComputedStyle(selectedEvent.get(0), null),
+ eventLeft = eventStyle.getPropertyValue("left"),
+ eventWidth = eventStyle.getPropertyValue("width");
+ eventLeft = Number(eventLeft.replace('px', '')) + Number(eventWidth.replace('px', ''))/2;
+ var scaleValue = eventLeft/totWidth;
+ setTransformValue(filling.get(0), 'scaleX', scaleValue);
+ }
+
+ function setDatePosition(timelineComponents, min) {
+ for (i = 0; i < timelineComponents['timelineDates'].length; i++) {
+ var distance = daydiff(timelineComponents['timelineDates'][0], timelineComponents['timelineDates'][i]),
+ distanceNorm = Math.round(distance/timelineComponents['eventsMinLapse']) + 2;
+ timelineComponents['timelineEvents'].eq(i).css('left', distanceNorm*min+'px');
+ }
+ }
+
+ function setTimelineWidth(timelineComponents, width) {
+ var spacing = timelineSpacing(timelineComponents['timelineDates'].length);
+ var timeSpan = daydiff(timelineComponents['timelineDates'][0], timelineComponents['timelineDates'][timelineComponents['timelineDates'].length-1]),
+ timeSpanNorm = timeSpan/timelineComponents['eventsMinLapse'],
+ timeSpanNorm = Math.round(timeSpanNorm) + 4,
+ //totalWidth = timeSpanNorm*width;
+ totalWidth = (timelineComponents['timelineDates'].length * spacing) + 200;
+ timelineComponents['eventsWrapper'].css('width', totalWidth+'px');
+ updateFilling(timelineComponents['eventsWrapper'].find('a.selected'), timelineComponents['fillingLine'], totalWidth);
+ updateTimelinePosition('next', timelineComponents['eventsWrapper'].find('a.selected'), timelineComponents);
+
+ return totalWidth;
+ }
+
+ function updateVisibleContent(event, eventsContent) {
+ var eventDate = event.data('date'),
+ visibleContent = eventsContent.find('.selected'),
+ selectedContent = eventsContent.find('[data-date="'+ eventDate +'"]'),
+ selectedContentHeight = selectedContent.height();
+
+ if (selectedContent.index() > visibleContent.index()) {
+ var classEnetering = 'selected enter-right',
+ classLeaving = 'leave-left';
+ } else {
+ var classEnetering = 'selected enter-left',
+ classLeaving = 'leave-right';
+ }
+
+ selectedContent.attr('class', classEnetering);
+ visibleContent.attr('class', classLeaving).one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function(){
+ visibleContent.removeClass('leave-right leave-left');
+ selectedContent.removeClass('enter-left enter-right');
+ });
+ eventsContent.css('height', selectedContentHeight+'px');
+ }
+
+ function updateOlderEvents(event) {
+ event.parent('li').prevAll('li').children('a').addClass('older-event').end().end().nextAll('li').children('a').removeClass('older-event');
+ }
+
+ function getTranslateValue(timeline) {
+ var timelineStyle = window.getComputedStyle(timeline.get(0), null),
+ timelineTranslate = timelineStyle.getPropertyValue("-webkit-transform") ||
+ timelineStyle.getPropertyValue("-moz-transform") ||
+ timelineStyle.getPropertyValue("-ms-transform") ||
+ timelineStyle.getPropertyValue("-o-transform") ||
+ timelineStyle.getPropertyValue("transform");
+
+ if( timelineTranslate.indexOf('(') >=0 ) {
+ var timelineTranslate = timelineTranslate.split('(')[1];
+ timelineTranslate = timelineTranslate.split(')')[0];
+ timelineTranslate = timelineTranslate.split(',');
+ var translateValue = timelineTranslate[4];
+ } else {
+ var translateValue = 0;
+ }
+
+ return Number(translateValue);
+ }
+
+ function setTransformValue(element, property, value) {
+ element.style["-webkit-transform"] = property+"("+value+")";
+ element.style["-moz-transform"] = property+"("+value+")";
+ element.style["-ms-transform"] = property+"("+value+")";
+ element.style["-o-transform"] = property+"("+value+")";
+ element.style["transform"] = property+"("+value+")";
+ }
+
+ //based on http://stackoverflow.com/questions/542938/how-do-i-get-the-number-of-days-between-two-dates-in-javascript
+ function parseDate(events) {
+ var dateArrays = [];
+ events.each(function(){
+ var singleDate = $(this),
+ dateComp = singleDate.data('date').split('T');
+ if( dateComp.length > 1 ) { //both DD/MM/YEAR and time are provided
+ var dayComp = dateComp[0].split('/'),
+ timeComp = dateComp[1].split(':');
+ } else if( dateComp[0].indexOf(':') >=0 ) { //only time is provide
+ var dayComp = ["2000", "0", "0"],
+ timeComp = dateComp[0].split(':');
+ } else { //only DD/MM/YEAR
+ var dayComp = dateComp[0].split('/'),
+ timeComp = ["0", "0"];
+ }
+ var newDate = new Date(dayComp[2], dayComp[1]-1, dayComp[0], timeComp[0], timeComp[1]);
+ dateArrays.push(newDate);
+ });
+ return dateArrays;
+ }
+
+ function daydiff(first, second) {
+ return Math.round((second-first));
+ }
+
+ function minLapse(dates) {
+ //determine the minimum distance among events
+ var dateDistances = [];
+ for (i = 1; i < dates.length; i++) {
+ var distance = daydiff(dates[i-1], dates[i]);
+ dateDistances.push(distance);
+ }
+ return Math.min.apply(null, dateDistances);
+ }
+
+ /*
+ How to tell if a DOM element is visible in the current viewport?
+ http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport
+ */
+ function elementInViewport(el) {
+ var top = el.offsetTop;
+ var left = el.offsetLeft;
+ var width = el.offsetWidth;
+ var height = el.offsetHeight;
+
+ while(el.offsetParent) {
+ el = el.offsetParent;
+ top += el.offsetTop;
+ left += el.offsetLeft;
+ }
+
+ return (
+ top < (window.pageYOffset + window.innerHeight) &&
+ left < (window.pageXOffset + window.innerWidth) &&
+ (top + height) > window.pageYOffset &&
+ (left + width) > window.pageXOffset
+ );
+ }
+
+ function checkMQ() {
+ //check if mobile or desktop device
+ return window.getComputedStyle(document.querySelector('.cd-horizontal-timeline'), '::before').getPropertyValue('content').replace(/'/g, "").replace(/"/g, "");
+ }
+
+ function slidePrevNext() {
+ if(!$('.cd-horizontal-timeline .events-content li.selected').prev('li').length) {
+ $('.cd-timeline-item-navigation a.prev').addClass('inactive');
+ }
+ else {
+ $('.cd-timeline-item-navigation a.prev').removeClass('inactive');
+ }
+ if(!$('.cd-horizontal-timeline .events-content li.selected').next('li').length) {
+ $('.cd-timeline-item-navigation a.next').addClass('inactive');
+ }
+ else {
+ $('.cd-timeline-item-navigation a.next').removeClass('inactive');
+ }
+ }
+
+ function timelineUpdateURL() {
+ var fragment = $(this).attr('href');
+ var currentURL = window.location.href.split('#')[0];
+ var newHREF = currentURL + fragment;
+ //history.pushState('', document.title, newHREF);
+ }
+
+ function timelineSpacing(timelineLength) {
+ var spacing = 150;
+ if (timelineLength < 5) {
+ spacing = 250;
+ }
+ return spacing;
+ }
+});
+})( jQuery );
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/js/timeline-min.js b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/js/timeline-min.js
new file mode 100755
index 000000000..bda2fb8cc
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/js/timeline-min.js
@@ -0,0 +1,14 @@
+/*
+ TimelineJS - ver. 2017-03-31-15-29-59 - 2017-03-31
+ Copyright (c) 2012-2016 Northwestern University
+ a project of the Northwestern University Knight Lab, originally created by Zach Wise
+ https://github.com/NUKnightLab/TimelineJS3
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+ If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+function TL_Error(t,e){this.name="TL.Error",this.message=t||"error",this.message_key=this.message,this.detail=e||"";var i=new Error;i.hasOwnProperty("stack")&&(this.stack=i.stack)}!function(t){t.TL={VERSION:"0.1",_originalL:t.TL}}(this),TL.debug=!1,TL.Bind=function(t,e){return function(){return t.apply(e,arguments)}},trace=function(t){TL.debug&&(window.console?console.log(t):"undefined"!=typeof jsTrace&&jsTrace.send(t))},TL_Error.prototype=Object.create(Error.prototype),TL_Error.prototype.constructor=TL_Error,TL.Error=TL_Error,TL.Util={mergeData:function(t,e){var i;for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},extend:function(t){for(var e,i=Array.prototype.slice.call(arguments,1),n=0,a=i.length;n[\s\S]*?<\/p>/)?t:""+t+"
"},linkify:function(t,e,i){var n=function(t,e,i){i||(i="");var n=30;return e&&e.length>n&&(e=e.substring(0,n)+"…"),i+""+e+""},a=/\b(?:https?|ftp):\/\/([a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|])/gim,s=/(^|[^\/>])(www\.[\S]+(\b|$))/gim,o=/([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)/gim;return t.replace(a,function(t,e,i,a){if(i>0){var s=a[i-1];if('"'==s||"'"==s||"="==s)return t}return n(t,e)}).replace(s,function(t,e,i,a,s){return n("http://"+i,i,e)}).replace(o,function(t,e,i,a){return n("mailto:"+e,e)})},unlinkify:function(t){return t?(t=t.replace(/]*>/i,""),t=t.replace(/<\/a>/i,"")):t},getParamString:function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(i+"="+t[i]);return"?"+e.join("&")},formatNum:function(t,e){var i=Math.pow(10,e||5);return Math.round(t*i)/i},falseFn:function(){return!1},requestAnimFrame:function(){function t(t){window.setTimeout(t,1e3/60)}var e=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||t;return function(i,n,a,s){i=n?TL.Util.bind(i,n):i,a&&e===t?i():e(i,s)}}(),bind:function(t,e){return function(){return t.apply(e,arguments)}},template:function(t,e){return t.replace(/\{ *([\w_]+) *\}/g,function(t,i){var n=e[i];if(!e.hasOwnProperty(i))throw new TL.Error("template_value_err",t);return n})},hexToRgb:function(t){TL.Util.css_named_colors[t.toLowerCase()]&&(t=TL.Util.css_named_colors[t.toLowerCase()]);var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,n){return e+e+i+i+n+n});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},rgbToHex:function(t){var e,i,n;if("object"==typeof t)e=t.r,i=t.g,n=t.b;else if("function"==typeof t.match){var a=t.match(/^rgb\((\d+),(\d+),(\d+)\)$/);a&&(e=a[1],i=a[2],n=a[3])}if(isNaN(e)||isNaN(n)||isNaN(i))throw new TL.Error("invalid_rgb_err");return"#"+TL.Util.intToHexString(e)+TL.Util.intToHexString(i)+TL.Util.intToHexString(n)},colorObjToHex:function(t){var e=[t.r,t.g,t.b];return TL.Util.rgbToHex("rgb("+e.join(",")+")")},css_named_colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ratio:{square:function(t){var e={w:0,h:0};return t.w>t.h&&t.h>0?(e.h=t.h,e.w=t.h):(e.w=t.w,e.h=t.w),e},r16_9:function(t){return null!==t.w&&""!==t.w?Math.round(t.w/16*9):null!==t.h&&""!==t.h?Math.round(t.h/9*16):0},r4_3:function(t){return null!==t.w&&""!==t.w?Math.round(t.w/4*3):null!==t.h&&""!==t.h?Math.round(t.h/3*4):void 0}},getObjectAttributeByIndex:function(t,e){if("undefined"!=typeof t){var i=0;for(var n in t){if(e===i)return t[n];i++}return""}return""},getUrlVars:function(t){var e,i,n,a=[];e=t.toString(),e.match("&")?e=e.replace("&","&"):e.match("&")?e=e.replace("&","&"):e.match("&")&&(e=e.replace("&","&")),n=e.slice(e.indexOf("?")+1).split("&");for(var s=0;s1){for(var a=e[e.length-1],s=-1,o=0;o=0&&(e=e.slice(s+1))}e.length>i&&(i=e.length)}return i},pad:function(t,e){for(t=String(t),e=e||2;t.length=0;n--)if(e>t[n])return t[n];return i?i:e},isEmptyObject:function(t){var e=[];if(Object.keys)e=Object.keys(t);else for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.push(i);for(var n=0;n0?$.fn.concat.apply([],t):t}function h(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function d(t){return t in N?N[t]:N[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function c(t,e){return"number"!=typeof e||I[h(t)]?e:e+"px"}function u(t){var e,i;return C[t]||(e=S.createElement(t),S.body.appendChild(e),i=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==i&&(i="block"),C[t]=i),C[t]}function m(t){return"children"in t?M.call(t.children):$.map(t.childNodes,function(t){if(1==t.nodeType)return t})}function _(t,e,i){for(w in e)i&&(s(e[w])||X(e[w]))?(s(e[w])&&!s(t[w])&&(t[w]={}),X(e[w])&&!X(t[w])&&(t[w]=[]),_(t[w],e[w],i)):e[w]!==L&&(t[w]=e[w])}function f(t,e){return null==e?$(t):$(t).filter(e)}function p(t,i,n,a){return e(i)?i.call(t,n,a):i}function g(t,e,i){null==i?t.removeAttribute(e):t.setAttribute(e,i)}function v(t,e){var i=t.className,n=i&&i.baseVal!==L;return e===L?n?i.baseVal:i:void(n?i.baseVal=e:t.className=e)}function y(t){var e;try{return t?"true"==t||"false"!=t&&("null"==t?null:/^0/.test(t)||isNaN(e=Number(t))?/^[\[\{]/.test(t)?$.parseJSON(t):t:e):t}catch(e){return t}}function T(t,e){e(t);for(var i in t.childNodes)T(t.childNodes[i],e)}var L,w,$,b,x,k,D=[],M=D.slice,E=D.filter,S=window.document,C={},N={},I={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},U=/^\s*<(\w+|!)[^>]*>/,A=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,j=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,O=/^(?:body|html)$/i,P=/([A-Z])/g,z=["val","css","html","text","data","width","height","offset"],B=["after","prepend","before","append"],q=S.createElement("table"),R=S.createElement("tr"),H={tr:S.createElement("tbody"),tbody:q,thead:q,tfoot:q,td:R,th:R,"*":S.createElement("div")},F=/complete|loaded|interactive/,W=/^[\w-]*$/,Z={},Y=Z.toString,G={},J=S.createElement("div"),V={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},X=Array.isArray||function(t){return t instanceof Array};return G.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var i=t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(i)return i.call(t,e);var n,a=t.parentNode,s=!a;return s&&(a=J).appendChild(t),n=~G.qsa(a,e).indexOf(t),s&&J.removeChild(t),n},x=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},k=function(t){return E.call(t,function(e,i){return t.indexOf(e)==i})},G.fragment=function(t,e,i){var n,a,o;return A.test(t)&&(n=$(S.createElement(RegExp.$1))),n||(t.replace&&(t=t.replace(j,"<$1>$2>")),e===L&&(e=U.test(t)&&RegExp.$1),e in H||(e="*"),o=H[e],o.innerHTML=""+t,n=$.each(M.call(o.childNodes),function(){o.removeChild(this)})),s(i)&&(a=$(n),$.each(i,function(t,e){z.indexOf(t)>-1?a[t](e):a.attr(t,e)})),n},G.Z=function(t,e){return t=t||[],t.__proto__=$.fn,t.selector=e||"",t},G.isZ=function(t){return t instanceof G.Z},G.init=function(t,i){var n;if(!t)return G.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&U.test(t))n=G.fragment(t,RegExp.$1,i),t=null;else{if(i!==L)return $(i).find(t);n=G.qsa(S,t)}else{if(e(t))return $(S).ready(t);if(G.isZ(t))return t;if(X(t))n=r(t);else if(a(t))n=[t],t=null;else if(U.test(t))n=G.fragment(t.trim(),RegExp.$1,i),t=null;else{if(i!==L)return $(i).find(t);n=G.qsa(S,t)}}return G.Z(n,t)},$=function(t,e){return G.init(t,e)},$.extend=function(t){var e,i=M.call(arguments,1);return"boolean"==typeof t&&(e=t,t=i.shift()),i.forEach(function(i){_(t,i,e)}),t},G.qsa=function(t,e){var i,a="#"==e[0],s=!a&&"."==e[0],o=a||s?e.slice(1):e,r=W.test(o);return n(t)&&r&&a?(i=t.getElementById(o))?[i]:[]:1!==t.nodeType&&9!==t.nodeType?[]:M.call(r&&!a?s?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},$.contains=function(t,e){return t!==e&&t.contains(e)},$.type=t,$.isFunction=e,$.isWindow=i,$.isArray=X,$.isPlainObject=s,$.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},$.inArray=function(t,e,i){return D.indexOf.call(e,t,i)},$.camelCase=x,$.trim=function(t){return null==t?"":String.prototype.trim.call(t)},$.uuid=0,$.support={},$.expr={},$.map=function(t,e){var i,n,a,s=[];if(o(t))for(n=0;n=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return D.every.call(this,function(e,i){return t.call(e,i,e)!==!1}),this},filter:function(t){return e(t)?this.not(this.not(t)):$(E.call(this,function(e){return G.matches(e,t)}))},add:function(t,e){return $(k(this.concat($(t,e))))},is:function(t){return this.length>0&&G.matches(this[0],t)},not:function(t){var i=[];if(e(t)&&t.call!==L)this.each(function(e){t.call(this,e)||i.push(this)});else{var n="string"==typeof t?this.filter(t):o(t)&&e(t.item)?M.call(t):$(t);this.forEach(function(t){n.indexOf(t)<0&&i.push(t)})}return $(i)},has:function(t){return this.filter(function(){return a(t)?$.contains(this,t):$(this).find(t).size()})},eq:function(t){return t===-1?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!a(t)?t:$(t)},last:function(){var t=this[this.length-1];return t&&!a(t)?t:$(t)},find:function(t){var e,i=this;return e="object"==typeof t?$(t).filter(function(){var t=this;return D.some.call(i,function(e){return $.contains(e,t)})}):1==this.length?$(G.qsa(this[0],t)):this.map(function(){return G.qsa(this,t)})},closest:function(t,e){var i=this[0],a=!1;for("object"==typeof t&&(a=$(t));i&&!(a?a.indexOf(i)>=0:G.matches(i,t));)i=i!==e&&!n(i)&&i.parentNode;return $(i)},parents:function(t){for(var e=[],i=this;i.length>0;)i=$.map(i,function(t){if((t=t.parentNode)&&!n(t)&&e.indexOf(t)<0)return e.push(t),t});return f(e,t)},parent:function(t){return f(k(this.pluck("parentNode")),t)},children:function(t){return f(this.map(function(){return m(this)}),t)},contents:function(){return this.map(function(){return M.call(this.childNodes)})},siblings:function(t){return f(this.map(function(t,e){return E.call(m(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return $.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=u(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var i=e(t);if(this[0]&&!i)var n=$(t).get(0),a=n.parentNode||this.length>1;return this.each(function(e){$(this).wrapAll(i?t.call(this,e):a?n.cloneNode(!0):n)})},wrapAll:function(t){if(this[0]){$(this[0]).before(t=$(t));for(var e;(e=t.children()).length;)t=e.first();$(t).append(this)}return this},wrapInner:function(t){var i=e(t);return this.each(function(e){var n=$(this),a=n.contents(),s=i?t.call(this,e):t;a.length?a.wrapAll(s):n.append(s)})},unwrap:function(){return this.parent().each(function(){$(this).replaceWith($(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var e=$(this);(t===L?"none"==e.css("display"):t)?e.show():e.hide()})},prev:function(t){return $(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return $(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0===arguments.length?this.length>0?this[0].innerHTML:null:this.each(function(e){var i=this.innerHTML;$(this).empty().append(p(this,t,e,i))})},text:function(t){return 0===arguments.length?this.length>0?this[0].textContent:null:this.each(function(){this.textContent=t===L?"":""+t})},attr:function(t,e){var i;return"string"==typeof t&&e===L?0==this.length||1!==this[0].nodeType?L:"value"==t&&"INPUT"==this[0].nodeName?this.val():!(i=this[0].getAttribute(t))&&t in this[0]?this[0][t]:i:this.each(function(i){if(1===this.nodeType)if(a(t))for(w in t)g(this,w,t[w]);else g(this,t,p(this,e,i,this.getAttribute(t)))})},removeAttr:function(t){return this.each(function(){1===this.nodeType&&g(this,t)})},prop:function(t,e){return t=V[t]||t,e===L?this[0]&&this[0][t]:this.each(function(i){this[t]=p(this,e,i,this[t])})},data:function(t,e){var i=this.attr("data-"+t.replace(P,"-$1").toLowerCase(),e);return null!==i?y(i):L},val:function(t){return 0===arguments.length?this[0]&&(this[0].multiple?$(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value):this.each(function(e){this.value=p(this,t,e,this.value)})},offset:function(t){if(t)return this.each(function(e){var i=$(this),n=p(this,t,e,i.offset()),a=i.offsetParent().offset(),s={top:n.top-a.top,left:n.left-a.left};"static"==i.css("position")&&(s.position="relative"),i.css(s)});if(0==this.length)return null;var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(e,i){if(arguments.length<2){var n=this[0],a=getComputedStyle(n,"");if(!n)return;if("string"==typeof e)return n.style[x(e)]||a.getPropertyValue(e);if(X(e)){var s={};return $.each(X(e)?e:[e],function(t,e){s[e]=n.style[x(e)]||a.getPropertyValue(e)}),s}}var o="";if("string"==t(e))i||0===i?o=h(e)+":"+c(e,i):this.each(function(){this.style.removeProperty(h(e))});else for(w in e)e[w]||0===e[w]?o+=h(w)+":"+c(w,e[w])+";":this.each(function(){this.style.removeProperty(h(w))});return this.each(function(){this.style.cssText+=";"+o})},index:function(t){return t?this.indexOf($(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&D.some.call(this,function(t){return this.test(v(t))},d(t))},addClass:function(t){return t?this.each(function(e){b=[];var i=v(this),n=p(this,t,e,i);n.split(/\s+/g).forEach(function(t){$(this).hasClass(t)||b.push(t)},this),b.length&&v(this,i+(i?" ":"")+b.join(" "))}):this},removeClass:function(t){return this.each(function(e){return t===L?v(this,""):(b=v(this),p(this,t,e,b).split(/\s+/g).forEach(function(t){b=b.replace(d(t)," ")}),void v(this,b.trim()))})},toggleClass:function(t,e){return t?this.each(function(i){var n=$(this),a=p(this,t,i,v(this));a.split(/\s+/g).forEach(function(t){(e===L?!n.hasClass(t):e)?n.addClass(t):n.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var e="scrollTop"in this[0];return t===L?e?this[0].scrollTop:this[0].pageYOffset:this.each(e?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var e="scrollLeft"in this[0];return t===L?e?this[0].scrollLeft:this[0].pageXOffset:this.each(e?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),i=this.offset(),n=O.test(e[0].nodeName)?{top:0,left:0}:e.offset();return i.top-=parseFloat($(t).css("margin-top"))||0,i.left-=parseFloat($(t).css("margin-left"))||0,n.top+=parseFloat($(e[0]).css("border-top-width"))||0,n.left+=parseFloat($(e[0]).css("border-left-width"))||0,{top:i.top-n.top,left:i.left-n.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||S.body;t&&!O.test(t.nodeName)&&"static"==$(t).css("position");)t=t.offsetParent;return t})}},$.fn.detach=$.fn.remove,["width","height"].forEach(function(t){var e=t.replace(/./,function(t){return t[0].toUpperCase()});$.fn[t]=function(a){var s,o=this[0];return a===L?i(o)?o["inner"+e]:n(o)?o.documentElement["scroll"+e]:(s=this.offset())&&s[t]:this.each(function(e){o=$(this),o.css(t,p(this,a,e,o[t]()))})}}),B.forEach(function(e,i){var n=i%2;$.fn[e]=function(){var e,a,s=$.map(arguments,function(i){return e=t(i),"object"==e||"array"==e||null==i?i:G.fragment(i)}),o=this.length>1;return s.length<1?this:this.each(function(t,e){a=n?e:e.parentNode,e=0==i?e.nextSibling:1==i?e.firstChild:2==i?e:null,s.forEach(function(t){if(o)t=t.cloneNode(!0);else if(!a)return $(t).remove();T(a.insertBefore(t,e),function(t){null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src||window.eval.call(window,t.innerHTML)})})})},$.fn[n?e+"To":"insert"+(i?"Before":"After")]=function(t){return $(t)[e](this),this}}),G.Z.prototype=$.fn,G.uniq=k,G.deserializeValue=y,$.zepto=G,$}();window.Zepto=e,void 0===window.$&&(window.$=e),function($){function t(t){return t._zid||(t._zid=c++)}function e(e,a,s,o){if(a=i(a),a.ns)var r=n(a.ns);return(f[t(e)]||[]).filter(function(e){return e&&(!a.e||e.e==a.e)&&(!a.ns||r.test(e.ns))&&(!s||t(e.fn)===t(s))&&(!o||e.sel==o)})}function i(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function n(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function a(t,e){return t.del&&!g&&t.e in v||!!e}function s(t){return y[t]||g&&v[t]||t}function o(e,n,o,r,h,c,u){var m=t(e),_=f[m]||(f[m]=[]);n.split(/\s/).forEach(function(t){if("ready"==t)return $(document).ready(o);var n=i(t);n.fn=o,n.sel=h,n.e in y&&(o=function(t){var e=t.relatedTarget;if(!e||e!==this&&!$.contains(this,e))return n.fn.apply(this,arguments)}),n.del=c;var m=c||o;n.proxy=function(t){if(t=l(t),!t.isImmediatePropagationStopped()){t.data=r;var i=m.apply(e,t._args==d?[t]:[t].concat(t._args));return i===!1&&(t.preventDefault(),t.stopPropagation()),i}},n.i=_.length,_.push(n),"addEventListener"in e&&e.addEventListener(s(n.e),n.proxy,a(n,u))})}function r(i,n,o,r,l){var h=t(i);(n||"").split(/\s/).forEach(function(t){e(i,t,o,r).forEach(function(t){delete f[h][t.i],"removeEventListener"in i&&i.removeEventListener(s(t.e),t.proxy,a(t,l))})})}function l(t,e){return!e&&t.isDefaultPrevented||(e||(e=t),$.each(b,function(i,n){var a=e[i];t[i]=function(){return this[n]=T,a&&a.apply(e,arguments)},t[n]=L}),(e.defaultPrevented!==d?e.defaultPrevented:"returnValue"in e?e.returnValue===!1:e.getPreventDefault&&e.getPreventDefault())&&(t.isDefaultPrevented=T)),t}function h(t){var e,i={originalEvent:t};for(e in t)w.test(e)||t[e]===d||(i[e]=t[e]);return l(i,t)}var d,c=($.zepto.qsa,1),u=Array.prototype.slice,m=$.isFunction,_=function(t){return"string"==typeof t},f={},p={},g="onfocusin"in window,v={focus:"focusin",blur:"focusout"},y={mouseenter:"mouseover",mouseleave:"mouseout"};p.click=p.mousedown=p.mouseup=p.mousemove="MouseEvents",$.event={add:o,remove:r},$.proxy=function(e,i){if(m(e)){var n=function(){return e.apply(i,arguments)};return n._zid=t(e),n}if(_(i))return $.proxy(e[i],e);throw new TypeError("expected function")},$.fn.bind=function(t,e,i){return this.on(t,e,i)},$.fn.unbind=function(t,e){return this.off(t,e)},$.fn.one=function(t,e,i,n){return this.on(t,e,i,n,1)};var T=function(){return!0},L=function(){return!1},w=/^([A-Z]|returnValue$|layer[XY]$)/,b={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};$.fn.delegate=function(t,e,i){return this.on(e,t,i)},$.fn.undelegate=function(t,e,i){return this.off(e,t,i)},$.fn.live=function(t,e){return $(document.body).delegate(this.selector,t,e),this},$.fn.die=function(t,e){return $(document.body).undelegate(this.selector,t,e),this},$.fn.on=function(t,e,i,n,a){var s,l,c=this;return t&&!_(t)?($.each(t,function(t,n){c.on(t,e,i,n,a)}),c):(_(e)||m(n)||n===!1||(n=i,i=e,e=d),(m(i)||i===!1)&&(n=i,i=d),n===!1&&(n=L),c.each(function(d,c){a&&(s=function(t){return r(c,t.type,n),n.apply(this,arguments)}),e&&(l=function(t){var i,a=$(t.target).closest(e,c).get(0);if(a&&a!==c)return i=$.extend(h(t),{currentTarget:a,liveFired:c}),(s||n).apply(a,[i].concat(u.call(arguments,1)))}),o(c,t,n,i,e,l||s)}))},$.fn.off=function(t,e,i){var n=this;return t&&!_(t)?($.each(t,function(t,i){n.off(t,e,i)}),n):(_(e)||m(i)||i===!1||(i=e,e=d),i===!1&&(i=L),n.each(function(){r(this,t,i,e)}))},$.fn.trigger=function(t,e){return t=_(t)||$.isPlainObject(t)?$.Event(t):l(t),t._args=e,this.each(function(){"dispatchEvent"in this?this.dispatchEvent(t):$(this).triggerHandler(t,e)})},$.fn.triggerHandler=function(t,i){var n,a;return this.each(function(s,o){n=h(_(t)?$.Event(t):t),n._args=i,n.target=o,$.each(e(o,t.type||t),function(t,e){if(a=e.proxy(n),n.isImmediatePropagationStopped())return!1})}),a},"focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(t){$.fn[t]=function(e){return e?this.bind(t,e):this.trigger(t)}}),["focus","blur"].forEach(function(t){$.fn[t]=function(e){return e?this.bind(t,e):this.each(function(){try{this[t]()}catch(t){}}),this}}),$.Event=function(t,e){_(t)||(e=t,t=e.type);var i=document.createEvent(p[t]||"Events"),n=!0;if(e)for(var a in e)"bubbles"==a?n=!!e[a]:i[a]=e[a];return i.initEvent(t,n,!0),l(i)}}(e),function($){function t(t,e,i){var n=$.Event(e);return $(t).trigger(n,i),!n.isDefaultPrevented()}function e(e,i,n,a){if(e.global)return t(i||g,n,a)}function i(t){t.global&&0===$.active++&&e(t,null,"ajaxStart")}function n(t){t.global&&!--$.active&&e(t,null,"ajaxStop")}function a(t,i){var n=i.context;return i.beforeSend.call(n,t,i)!==!1&&e(i,n,"ajaxBeforeSend",[t,i])!==!1&&void e(i,n,"ajaxSend",[t,i])}function s(t,i,n,a){var s=n.context,o="success";n.success.call(s,t,o,i),a&&a.resolveWith(s,[t,o,i]),e(n,s,"ajaxSuccess",[i,n,t]),r(o,i,n)}function o(t,i,n,a,s){var o=a.context;a.error.call(o,n,i,t),s&&s.rejectWith(o,[n,i,t]),e(a,o,"ajaxError",[n,a,t||i]),r(i,n,a)}function r(t,i,a){var s=a.context;a.complete.call(s,i,t),e(a,s,"ajaxComplete",[i,a]),n(a)}function l(){}function h(t){return t&&(t=t.split(";",2)[0]),t&&(t==w?"html":t==L?"json":y.test(t)?"script":T.test(t)&&"xml")||"text"}function d(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function c(t){t.processData&&t.data&&"string"!=$.type(t.data)&&(t.data=$.param(t.data,t.traditional)),!t.data||t.type&&"GET"!=t.type.toUpperCase()||(t.url=d(t.url,t.data),t.data=void 0)}function u(t,e,i,n){var a=!$.isFunction(e);return{url:t,data:a?e:void 0,success:a?$.isFunction(i)?i:void 0:e,dataType:a?n||i:i}}function m(t,e,i,n){var a,s=$.isArray(e),o=$.isPlainObject(e);$.each(e,function(e,r){a=$.type(r),n&&(e=i?n:n+"["+(o||"object"==a||"array"==a?e:"")+"]"),!n&&s?t.add(r.name,r.value):"array"==a||!i&&"object"==a?m(t,r,i,e):t.add(e,r)})}var _,f,p=0,g=window.document,v=/",this._el.content_item.innerHTML=t,this.onLoaded()},_updateMediaDisplay:function(){this._el.content_item.style.height=this.options.height+"px"}}),TL.Media.Text=TL.Class.extend({includes:[TL.Events],_el:{container:{},content_container:{},content:{},headline:{},date:{}},data:{unique_id:"",headline:"headline",text:"text"},options:{title:!1},initialize:function(t,e,i){TL.Util.setData(this,t),TL.Util.mergeData(this.options,e),this._el.container=TL.Dom.create("div","tl-text"),this._el.container.id=this.data.unique_id,this._initLayout(),i&&i.appendChild(this._el.container)},show:function(){},hide:function(){},addTo:function(t){t.appendChild(this._el.container)},removeFrom:function(t){t.removeChild(this._el.container)},headlineHeight:function(){return this._el.headline.offsetHeight+40},addDateText:function(t){this._el.date.innerHTML=t},onLoaded:function(){this.fire("loaded",this.data)},onAdd:function(){this.fire("added",this.data)},onRemove:function(){this.fire("removed",this.data)},_initLayout:function(){if(this._el.content_container=TL.Dom.create("div","tl-text-content-container",this._el.container),this._el.date=TL.Dom.create("h3","tl-headline-date",this._el.content_container),""!=this.data.headline){var t="tl-headline";this.options.title&&(t="tl-headline tl-headline-title"),this._el.headline=TL.Dom.create("h2",t,this._el.content_container),this._el.headline.innerHTML=this.data.headline}if(""!=this.data.text){var e="";e+=TL.Util.htmlify(1==this.options.autolink?TL.Util.linkify(this.data.text):this.data.text),trace(this.data.text),this._el.content=TL.Dom.create("div","tl-text-content",this._el.content_container),this._el.content.innerHTML=e,trace(e),trace(this._el.content)}this.onLoaded()}}),TL.Media.Twitter=TL.Media.extend({includes:[TL.Events],_loadMedia:function(){var t,e=this;this._el.content_item=TL.Dom.create("div","tl-media-twitter",this._el.content),this._el.content_container.className="tl-media-content-container tl-media-content-container-text",this.data.url.match("status/")?this.media_id=this.data.url.split("status/")[1]:this.data.url.match("statuses/")?this.media_id=this.data.url.split("statuses/")[1]:this.media_id="",t="https://api.twitter.com/1/statuses/oembed.json?id="+this.media_id+"&omit_script=true&include_entities=true&callback=?",TL.ajax({type:"GET",url:t,dataType:"json",success:function(t){e.createMedia(t)},error:function(t,i){var n="";n+=e._("twitter_load_err")+"
"+e.media_id+"
"+i,e.loadErrorDisplay(n)}})},createMedia:function(t){var e="",i="",n="",a="",s="",o="";i=t.html.split("—")[0]+"",n=t.author_url.split("twitter.com/")[1],a=t.html.split("—")[1].split('')[0],o=a.split('">')[1].split("")[0],i=i.replace(/",e+=""+o+"",e+=" ",e+="",this._el.content_item.innerHTML=e,this.onLoaded()},updateMediaDisplay:function(){},_updateMediaDisplay:function(){}}),TL.Media.TwitterEmbed=TL.Media.extend({includes:[TL.Events],_loadMedia:function(){var t,e=this;this._el.content_item=TL.Dom.create("div","tl-media-twitter",this._el.content),this._el.content_container.className="tl-media-content-container tl-media-content-container-text";var i=this.data.url.match(/(status|statuses)\/(\d+)/);return i&&i.length>2?(this.media_id=i[2],t="https://api.twitter.com/1/statuses/oembed.json?id="+this.media_id+"&omit_script=true&include_entities=true&callback=?",void TL.ajax({type:"GET",url:t,dataType:"json",success:function(t){e.createMedia(t)},error:function(t,i){var n="";n+=e._("twitter_load_err")+"
"+e.media_id+"
"+i,e.loadErrorDisplay(n)}})):void e.loadErrorDisplay(e._("twitterembed_invalidurl_err"))},createMedia:function(t){trace("create_media");var e="",i="",n="",a="",s="",o="";i=t.html.split("—")[0]+"",n=t.author_url.split("twitter.com/")[1],a=t.html.split("—")[1].split('')[0],o=a.split('">')[1].split("")[0],i=i.replace(/",e+=""+o+"",e+=" ",e+="",this._el.content_item.innerHTML=e,this.onLoaded()},updateMediaDisplay:function(){},_updateMediaDisplay:function(){}}),TL.Media.Vimeo=TL.Media.extend({includes:[TL.Events],_loadMedia:function(){var t,e=this;this._el.content_item=TL.Dom.create("div","tl-media-item tl-media-iframe tl-media-vimeo tl-media-shadow",this._el.content),this.media_id=this.data.url.split(/video\/|\/\/vimeo\.com\//)[1].split(/[?&]/)[0],t="https://player.vimeo.com/video/"+this.media_id+"?api=1&title=0&byline=0&portrait=0&color=ffffff",this.player=TL.Dom.create("iframe","",this._el.content_item),this.player.addEventListener("load",function(t){e.onMediaLoaded()}),this.player.width="100%",this.player.height="100%",this.player.frameBorder="0",this.player.src=t,this.player.setAttribute("allowfullscreen",""),this.player.setAttribute("webkitallowfullscreen",""),this.player.setAttribute("mozallowfullscreen",""),this.onLoaded()},_updateMediaDisplay:function(){this._el.content_item.style.height=TL.Util.ratio.r16_9({w:this._el.content_item.offsetWidth})+"px"},_stopMedia:function(){try{this.player.contentWindow.postMessage(JSON.stringify({method:"pause"}),"https://player.vimeo.com")}catch(t){trace(t)}}}),TL.Media.Vine=TL.Media.extend({includes:[TL.Events],_loadMedia:function(){var t;this._el.content_item=TL.Dom.create("div","tl-media-item tl-media-iframe tl-media-vine tl-media-shadow",this._el.content),this.media_id=this.data.url.split("vine.co/v/")[1],t="https://vine.co/v/"+this.media_id+"/embed/simple",this._el.content_item.innerHTML="",this.onLoaded()},_updateMediaDisplay:function(){var t=TL.Util.ratio.square({w:this._el.content_item.offsetWidth,h:this.options.height});this._el.content_item.style.height=t.h+"px"},_stopMedia:function(){this._el.content_item.querySelector("iframe").contentWindow.postMessage("pause","*")}}),TL.Media.Website=TL.Media.extend({includes:[TL.Events],_loadMedia:function(){var t=this;this.media_id=this.data.url.replace(/.*?:\/\//g,""),this.options.api_key_embedly?(api_url="https://api.embed.ly/1/extract?key="+this.options.api_key_embedly+"&url="+this.media_id+"&callback=?",TL.getJSON(api_url,function(e){t.createMedia(e)})):this.createCardContent()},createCardContent:function(){!function(t,e){var i="embedly-platform",n="script";if(!e.getElementById(i)){t.embedly=t.embedly||function(){(t.embedly.q=t.embedly.q||[]).push(arguments)};var a=e.createElement(n);a.id=i,a.async=1,a.src=("https:"===document.location.protocol?"https":"http")+"://cdn.embedly.com/widgets/platform.js";var s=e.getElementsByTagName(n)[0];s.parentNode.insertBefore(a,s)}}(window,document);var t=''+this.data.url+"";this._setContent(t)},createMedia:function(t){var e="";e+=""+t.title+"
",t.images&&t.images[0]&&(trace(t.images[0].url),e+="
"),t.favicon_url&&(e+="
"),e+=""+t.provider_name+"
",e+=""+t.description+"
",this._setContent(e)},_setContent:function(t){this._el.content_item=TL.Dom.create("div","tl-media-item tl-media-website",this._el.content),this._el.content_container.className="tl-media-content-container tl-media-content-container-text",this._el.content_item.innerHTML=t,this.onLoaded()},updateMediaDisplay:function(){},_updateMediaDisplay:function(){}}),TL.Media.Wikipedia=TL.Media.extend({includes:[TL.Events],_loadMedia:function(){var t,e,i=this;this._el.content_item=TL.Dom.create("div","tl-media-item tl-media-wikipedia",this._el.content),this._el.content_container.className="tl-media-content-container tl-media-content-container-text",this.media_id=this.data.url.split("wiki/")[1].split("#")[0].replace("_"," "),this.media_id=this.media_id.replace(" ","%20"),e=this.data.url.split("//")[1].split(".wikipedia")[0],t="https://"+e+".wikipedia.org/w/api.php?action=query&prop=extracts|pageimages&redirects=&titles="+this.media_id+"&exintro=1&format=json&callback=?",TL.ajax({type:"GET",url:t,dataType:"json",success:function(t){i.createMedia(t)},error:function(t,e){var n="";n+=i._("wikipedia_load_err")+"
"+i.media_id+"
"+e,i.loadErrorDisplay(n)}})},createMedia:function(t){var e="";if(t.query){var i="",e={entry:{},title:"",text:"",extract:"",paragraphs:1,page_image:"",text_array:[]};e.entry=TL.Util.getObjectAttributeByIndex(t.query.pages,0),e.extract=e.entry.extract,e.title=e.entry.title,e.page_image=e.entry.thumbnail,e.extract.match("")?e.text_array=e.extract.split("
"):e.text_array.push(e.extract);for(var n=0;n"+e.text_array[n+1]);i+="",i+=""+e.title+"
",i+=""+this._("wikipedia")+"",e.page_image,i+=e.text,e.extract.match("REDIRECT")||(this._el.content_item.innerHTML=i,this.onLoaded())}},updateMediaDisplay:function(){},_updateMediaDisplay:function(){}}),TL.Media.YouTube=TL.Media.extend({includes:[TL.Events],_loadMedia:function(){var t,e=this;this.youtube_loaded=!1,this._el.content_item=TL.Dom.create("div","tl-media-item tl-media-youtube tl-media-shadow",this._el.content),this._el.content_item.id=TL.Util.unique_ID(7),t=TL.Util.getUrlVars(this.data.url),this.media_id={},this.data.url.match("v=")?this.media_id.id=t.v:this.data.url.match("/embed/")?this.media_id.id=this.data.url.split("embed/")[1].split(/[?&]/)[0]:this.data.url.match(/v\/|v=|youtu\.be\//)?this.media_id.id=this.data.url.split(/v\/|v=|youtu\.be\//)[1].split(/[?&]/)[0]:trace("YOUTUBE IN URL BUT NOT A VALID VIDEO"),this.media_id.start=parseInt(t.start),isNaN(this.media_id.start)&&(this.media_id.start=TL.Util.parseYouTubeTime(t.t)),this.media_id.end=parseInt(t.end),this.media_id.hd=Boolean("undefined"!=typeof t.hd),TL.Load.js("https://www.youtube.com/iframe_api",function(){e.createMedia()})},_updateMediaDisplay:function(){this._el.content_item.style.height=TL.Util.ratio.r16_9({w:this.options.width})+"px",this._el.content_item.style.width=this.options.width+"px"},_stopMedia:function(){if(this.youtube_loaded)try{this.player.getPlayerState()==YT.PlayerState.PLAYING&&this.player.pauseVideo()}catch(t){trace(t)}},createMedia:function(){var t=this;clearTimeout(this.timer),"undefined"!=typeof YT&&"undefined"!=typeof YT.Player?this.player=new YT.Player(this._el.content_item.id,{playerVars:{enablejsapi:1,color:"white",autohide:1,showinfo:0,theme:"light",start:this.media_id.start,end:this.media_id.end,
+fs:0,rel:0},videoId:this.media_id.id,events:{onReady:function(){t.onPlayerReady(),t.onLoaded()},onStateChange:t.onStateChange}}):this.timer=setTimeout(function(){t.createMedia()},1e3)},onPlayerReady:function(t){this.youtube_loaded=!0,this._el.content_item=document.getElementById(this._el.content_item.id),this.onMediaLoaded()},onStateChange:function(t){t.data==YT.PlayerState.ENDED&&(t.target.seekTo(0),t.target.pauseVideo())}}),TL.Slide=TL.Class.extend({includes:[TL.Events,TL.DomMixins,TL.I18NMixins],_el:{},initialize:function(t,e,i){this._el={container:{},scroll_container:{},background:{},content_container:{},content:{}},this._media=null,this._mediaclass={},this._text={},this._background_media=null,this._state={loaded:!1},this.has={headline:!1,text:!1,media:!1,title:!1,background:{image:!1,color:!1,color_value:""}},this.has.title=i,this.data={unique_id:null,background:null,start_date:null,end_date:null,location:null,text:null,media:null,autolink:!0},this.options={duration:1e3,slide_padding_lr:40,ease:TL.Ease.easeInSpline,width:600,height:600,skinny_size:650,media_name:""},this.active=!1,this.animator={},TL.Util.mergeData(this.options,e),TL.Util.mergeData(this.data,t),this._initLayout(),this._initEvents()},show:function(){this.animator=TL.Animate(this._el.slider_container,{left:-(this._el.container.offsetWidth*n)+"px",duration:this.options.duration,easing:this.options.ease})},hide:function(){},setActive:function(t){this.active=t,this.active?(this.data.background&&this.fire("background_change",this.has.background),this.loadMedia()):this.stopMedia()},addTo:function(t){t.appendChild(this._el.container)},removeFrom:function(t){t.removeChild(this._el.container)},updateDisplay:function(t,e,i){this._updateDisplay(t,e,i)},loadMedia:function(){var t=this;this._media&&!this._state.loaded&&(this._media.loadMedia(),this._state.loaded=!0),this._background_media&&!this._background_media._state.loaded&&(this._background_media.on("loaded",function(){t._updateBackgroundDisplay()}),this._background_media.loadMedia())},stopMedia:function(){this._media&&this._state.loaded&&this._media.stopMedia()},getBackground:function(){return this.has.background},scrollToTop:function(){this._el.container.scrollTop=0},getFormattedDate:function(){if(TL.Util.trim(this.data.display_date).length>0)return this.data.display_date;var t="";return this.has.title||(this.data.end_date&&(t=" — "+this.data.end_date.getDisplayDate(this.getLanguage())),this.data.start_date&&(t=this.data.start_date.getDisplayDate(this.getLanguage())+t)),t},_initLayout:function(){if(this._el.container=TL.Dom.create("div","tl-slide"),this.has.title&&(this._el.container.className="tl-slide tl-slide-titleslide"),this.data.unique_id&&(this._el.container.id=this.data.unique_id),this._el.scroll_container=TL.Dom.create("div","tl-slide-scrollable-container",this._el.container),this._el.content_container=TL.Dom.create("div","tl-slide-content-container",this._el.scroll_container),this._el.content=TL.Dom.create("div","tl-slide-content",this._el.content_container),this._el.background=TL.Dom.create("div","tl-slide-background",this._el.container),this.data.background){if(this.data.background.url){var t=TL.MediaType(this.data.background,!0);t&&(this._background_media=new t.cls(this.data.background,{background:1}),this.has.background.image=!0,this._el.container.className+=" tl-full-image-background",this.has.background.color_value="#000",this._el.background.style.display="block")}this.data.background.color&&(this.has.background.color=!0,this._el.container.className+=" tl-full-color-background",this.has.background.color_value=this.data.background.color),this.data.background.text_background&&(this._el.container.className+=" tl-text-background")}this.data.media&&this.data.media.url&&""!=this.data.media.url&&(this.has.media=!0),this.data.text&&this.data.text.text&&(this.has.text=!0),this.data.text&&this.data.text.headline&&(this.has.headline=!0),this.has.media&&(this.data.media.mediatype=TL.MediaType(this.data.media),this.options.media_name=this.data.media.mediatype.name,this.options.media_type=this.data.media.mediatype.type,this.options.autolink=this.data.autolink,this._media=new this.data.media.mediatype.cls(this.data.media,this.options)),(this.has.text||this.has.headline)&&(this._text=new TL.Media.Text(this.data.text,{title:this.has.title,language:this.options.language,autolink:this.data.autolink}),this._text.addDateText(this.getFormattedDate())),this.has.text||this.has.headline||!this.has.media?this.has.headline&&this.has.media&&!this.has.text?(TL.DomUtil.addClass(this._el.container,"tl-slide-media-only"),this._text.addTo(this._el.content),this._media.addTo(this._el.content)):this.has.text&&this.has.media?(this._media.addTo(this._el.content),this._text.addTo(this._el.content)):(this.has.text||this.has.headline)&&(TL.DomUtil.addClass(this._el.container,"tl-slide-text-only"),this._text.addTo(this._el.content)):(TL.DomUtil.addClass(this._el.container,"tl-slide-media-only"),this._media.addTo(this._el.content)),this.onLoaded()},_initEvents:function(){},_updateDisplay:function(t,e,i){var n,a=this.options.slide_padding_lr,s=this.options.slide_padding_lr;t?this.options.width=t:this.options.width=this._el.container.offsetWidth,n=this.options.width-2*this.options.slide_padding_lr,TL.Browser.mobile&&this.options.width<=this.options.skinny_size?(a=0,s=0,n=this.options.width):"landscape"==i||this.options.width<=this.options.skinny_size&&(a=50,s=50,n=this.options.width-a-s),this._el.content.style.paddingLeft=a+"px",this._el.content.style.paddingRight=s+"px",this._el.content.style.width=n+"px",e?this.options.height=e:this.options.height=this._el.container.offsetHeight,this._media&&(!this.has.text&&this.has.headline?this._media.updateDisplay(n,this.options.height-this._text.headlineHeight(),i):this.has.text||this.has.headline?this.options.width<=this.options.skinny_size?this._media.updateDisplay(n,this.options.height,i):this._media.updateDisplay(n/2,this.options.height,i):this._media.updateDisplay(n,this.options.height,i)),this._updateBackgroundDisplay()},_updateBackgroundDisplay:function(){this._background_media&&this._background_media._state.loaded&&(this._el.background.style.backgroundImage="url('"+this._background_media.getImageURL(this.options.width,this.options.height)+"')")}}),TL.SlideNav=TL.Class.extend({includes:[TL.Events,TL.DomMixins],_el:{},initialize:function(t,e,i){this._el={container:{},content_container:{},icon:{},title:{},description:{}},this.mediatype={},this.data={title:"Navigation",description:"Description",date:"Date"},this.options={direction:"previous"},this.animator=null,TL.Util.mergeData(this.options,e),TL.Util.mergeData(this.data,t),this._el.container=TL.Dom.create("div","tl-slidenav-"+this.options.direction),TL.Browser.mobile&&this._el.container.setAttribute("ontouchstart"," "),this._initLayout(),this._initEvents(),i&&i.appendChild(this._el.container)},update:function(t){var e={title:"",description:"",date:t.getFormattedDate()};t.data.text&&t.data.text.headline&&(e.title=t.data.text.headline),this._update(e)},setColor:function(t){t?this._el.content_container.className="tl-slidenav-content-container tl-slidenav-inverted":this._el.content_container.className="tl-slidenav-content-container"},_onMouseClick:function(){this.fire("clicked",this.options)},_update:function(t){this.data=TL.Util.mergeData(this.data,t),this._el.title.innerHTML=TL.Util.unlinkify(this.data.title),this._el.description.innerHTML=TL.Util.unlinkify(this.data.date)},_initLayout:function(){this._el.content_container=TL.Dom.create("div","tl-slidenav-content-container",this._el.container),this._el.icon=TL.Dom.create("div","tl-slidenav-icon",this._el.content_container),this._el.title=TL.Dom.create("div","tl-slidenav-title",this._el.content_container),this._el.description=TL.Dom.create("div","tl-slidenav-description",this._el.content_container),this._el.icon.innerHTML=" ",this._update()},_initEvents:function(){TL.DomEvent.addListener(this._el.container,"click",this._onMouseClick,this)}}),TL.StorySlider=TL.Class.extend({includes:[TL.Events,TL.I18NMixins],initialize:function(t,e,i,n){this._el={container:{},background:{},slider_container_mask:{},slider_container:{},slider_item_container:{}},this._nav={},this._nav.previous={},this._nav.next={},this.slide_spacing=0,this._slides=[],this._swipable,this.preloadTimer,this._message,this.current_id="",this.data={},this.options={id:"",layout:"portrait",width:600,height:600,default_bg_color:{r:255,g:255,b:255},slide_padding_lr:40,start_at_slide:1,slide_default_fade:"0%",duration:1e3,ease:TL.Ease.easeInOutQuint,dragging:!0,trackResize:!0},"object"==typeof t?(this._el.container=t,this.options.id=TL.Util.unique_ID(6,"tl")):(this.options.id=t,this._el.container=TL.Dom.get(t)),this._el.container.id||(this._el.container.id=this.options.id),this.animator=null,TL.Util.mergeData(this.options,i),TL.Util.mergeData(this.data,e),n&&this.init()},init:function(){this._initLayout(),this._initEvents(),this._initData(),this._updateDisplay(),this.goTo(this.options.start_at_slide),this._onLoaded()},_addSlide:function(t){t.addTo(this._el.slider_item_container),t.on("added",this._onSlideAdded,this),t.on("background_change",this._onBackgroundChange,this)},_createSlide:function(t,e,i){var n=new TL.Slide(t,this.options,e);this._addSlide(n),i<0?this._slides.push(n):this._slides.splice(i,0,n)},_createSlides:function(t){for(var e=0;e=0&&(this.current_id=this._slides[t].data.unique_id,this.animator&&this.animator.stop(),this._swipable&&this._swipable.stopMomentum(),e?(this._el.slider_container.style.left=-(this.slide_spacing*t)+"px",this._onSlideChange(i)):this.animator=TL.Animate(this._el.slider_container,{left:-(this.slide_spacing*t)+"px",duration:this.options.duration,easing:this.options.ease,complete:this._onSlideChange(i)}),this._slides[t].setActive(!0),this._slides[t+1]?(this.showNav(this._nav.next,!0),this._nav.next.update(this._slides[t+1])):this.showNav(this._nav.next,!1),this._slides[t-1]?(this.showNav(this._nav.previous,!0),this._nav.previous.update(this._slides[t-1])):this.showNav(this._nav.previous,!1),this.preloadTimer=setTimeout(function(){n.preloadSlides(t)},this.options.duration))},goToId:function(t,e,i){this.goTo(this._findSlideIndex(t),e,i)},preloadSlides:function(t){this._slides[t+1]&&(this._slides[t+1].loadMedia(),this._slides[t+1].scrollToTop()),this._slides[t+2]&&(this._slides[t+2].loadMedia(),this._slides[t+2].scrollToTop()),this._slides[t-1]&&(this._slides[t-1].loadMedia(),this._slides[t-1].scrollToTop()),this._slides[t-2]&&(this._slides[t-2].loadMedia(),this._slides[t-2].scrollToTop())},next:function(){var t=this._findSlideIndex(this.current_id);t+1=0?this.goTo(t-1):this.goTo(t)},showNav:function(t,e){this.options.width<=500&&TL.Browser.mobile||(e?t.show():t.hide())},changeBackground:function(t){var e,i={r:256,g:256,b:256};t.color_value&&""!=t.color_value?(i=TL.Util.hexToRgb(t.color_value),i||(trace("Invalid color value "+t.color_value),i=this.options.default_bg_color)):(i=this.options.default_bg_color,t.color_value="rgb("+i.r+" , "+i.g+", "+i.b+")"),e=i.r+","+i.g+","+i.b,this._el.background.style.backgroundImage="none",t.color_value?this._el.background.style.backgroundColor=t.color_value:this._el.background.style.backgroundColor="transparent",i.r<255||i.g<255||i.b<255||t.image?(this._nav.next.setColor(!0),this._nav.previous.setColor(!0)):(this._nav.next.setColor(!1),this._nav.previous.setColor(!1))},_updateDisplay:function(t,e,i,n){var a,s;s="undefined"==typeof n?this.options.layout:n,this.options.layout=s,this.slide_spacing=2*this.options.width,t?this.options.width=t:this.options.width=this._el.container.offsetWidth,e?this.options.height=e:this.options.height=this._el.container.offsetHeight,a=this.options.height/2,this._nav.next.setPosition({top:a}),this._nav.previous.setPosition({top:a});for(var o=0;o=this.options.zoom_sequence[this.options.zoom_sequence.length-1]?this.fire("zoomtoggle",{zoom:"in",show:!1}):this.fire("zoomtoggle",{zoom:"in",show:!0}),0==t&&(console.warn("Zoom factor must be greater than zero. Using 0.1"),t=.1),this.options.scale_factor=t,this.goToId(this.current_id,!this._updateDrawTimeline(!0),!0)},_createGroups:function(){var t=this.timescale.getGroupLabels();if(t){this.options.has_groups=!0;for(var e=0;et-this.options.marker_padding&&(s=!0),this._groups[i].setRowPosition(a,this._calculated_row_height+this.options.marker_padding/2),this._groups[i].setAlternateRowColor(TL.Util.isEven(i),s),n+=this._groups[i].data.rows}},_addMarker:function(t){t.addTo(this._el.marker_item_container),t.on("markerclick",this._onMarkerClick,this),t.on("added",this._onMarkerAdded,this)},_createMarker:function(t,e){var i=new TL.TimeMarker(t,this.options);this._addMarker(i),e<0?this._markers.push(i):this._markers.splice(e,0,i)},_createMarkers:function(t){for(var e=0;e5&&(e=0),this._eras[i].setColor(e)}},createMarker:function(t,e){this._createMarker(t,e)},createMarkers:function(t){this._createMarkers(t)},destroyMarker:function(t){this._destroyMarker(t)},destroyMarkerId:function(t){this.destroyMarker(this._findMarkerIndex(t))},goTo:function(t,e,i){var n=this.options.ease,a=this.options.duration,s=t<0?0:t;this._resetMarkersActive(),t>=0&&t=0&&tMath.abs(t.wheelDeltaY)?t.wheelDeltaX/6:0),e&&(t.preventDefault&&t.preventDefault(),t.returnValue=!1),i=parseInt(this._el.slider.style.left.replace("px",""))+e,i>n.left?i=n.left:iTimeline JS
",this.timeaxis=new TL.TimeAxis(this._el.timeaxis,this.options),this._swipable=new TL.Swipable(this._el.slider_background,this._el.slider,{enable:{x:!0,y:!1},constraint:{top:!1,bottom:!1,left:this.options.width/2,right:!1},snap:!1}),this._swipable.enable()},_initEvents:function(){this._swipable.on("dragmove",this._onDragMove,this),TL.DomEvent.addListener(this._el.container,"mousewheel",this._onMouseScroll,this),TL.DomEvent.addListener(this._el.container,"DOMMouseScroll",this._onMouseScroll,this)},_initData:function(){this._createMarkers(this.config.events),this.config.eras&&(this.has_eras=!0,this._createEras(this.config.eras)),this._drawTimeline()}}),TL.TimeMarker=TL.Class.extend({includes:[TL.Events,TL.DomMixins],_el:{},initialize:function(t,e){this._el={container:{},content_container:{},media_container:{},timespan:{},line_left:{},line_right:{},content:{},text:{},media:{}},this._text={},this._state={loaded:!1},this.data={unique_id:"",background:null,date:{year:0,month:0,day:0,hour:0,minute:0,second:0,millisecond:0,thumbnail:"",format:""},text:{headline:"",text:""},media:null},this.options={duration:1e3,ease:TL.Ease.easeInSpline,width:600,height:600,marker_width_min:100},this.active=!1,this.animator={},this.has_end_date=!1,TL.Util.mergeData(this.options,e),TL.Util.mergeData(this.data,t),this._initLayout(),this._initEvents()},show:function(){},hide:function(){},setActive:function(t){this.active=t,this.active&&this.has_end_date?this._el.container.className="tl-timemarker tl-timemarker-with-end tl-timemarker-active":this.active?this._el.container.className="tl-timemarker tl-timemarker-active":this.has_end_date?this._el.container.className="tl-timemarker tl-timemarker-with-end":this._el.container.className="tl-timemarker"},addTo:function(t){t.appendChild(this._el.container)},removeFrom:function(t){t.removeChild(this._el.container)},updateDisplay:function(t,e){this._updateDisplay(t,e)},loadMedia:function(){this._media&&!this._state.loaded&&(this._media.loadMedia(),this._state.loaded=!0)},stopMedia:function(){this._media&&this._state.loaded&&this._media.stopMedia()},getLeft:function(){return this._el.container.style.left.slice(0,-2)},getTime:function(){return this.data.start_date.getTime()},getEndTime:function(){return!!this.data.end_date&&this.data.end_date.getTime()},setHeight:function(t){var e=12,i=1;this._el.content_container.style.height=t+"px",this._el.timespan_content.style.height=t+"px",t<=30?this._el.content.className="tl-timemarker-content tl-timemarker-content-small":this._el.content.className="tl-timemarker-content",t<=56?TL.DomUtil.addClass(this._el.content_container,"tl-timemarker-content-container-small"):TL.DomUtil.removeClass(this._el.content_container,"tl-timemarker-content-container-small"),TL.Browser.webkit?(i=Math.floor(t/(e+2)),i<1&&(i=1),this._text.className="tl-headline",this._text.style.webkitLineClamp=i):(i=t/e,i>1?this._text.className="tl-headline tl-headline-fadeout":this._text.className="tl-headline",this._text.style.height=i*e+"px")},setWidth:function(t){this.data.end_date&&(this._el.container.style.width=t+"px",t>this.options.marker_width_min?(this._el.content_container.style.width=t+"px",this._el.content_container.className="tl-timemarker-content-container tl-timemarker-content-container-long"):(this._el.content_container.style.width=this.options.marker_width_min+"px",this._el.content_container.className="tl-timemarker-content-container"))},setClass:function(t){this._el.container.className=t},setRowPosition:function(t,e){this.setPosition({top:t}),this._el.timespan.style.height=e+"px"},_onMarkerClick:function(t){this.fire("markerclick",{unique_id:this.data.unique_id})},_initLayout:function(){if(this._el.container=TL.Dom.create("div","tl-timemarker"),this.data.unique_id&&(this._el.container.id=this.data.unique_id+"-marker"),this.data.end_date&&(this.has_end_date=!0,this._el.container.className="tl-timemarker tl-timemarker-with-end"),this._el.timespan=TL.Dom.create("div","tl-timemarker-timespan",this._el.container),this._el.timespan_content=TL.Dom.create("div","tl-timemarker-timespan-content",this._el.timespan),this._el.content_container=TL.Dom.create("div","tl-timemarker-content-container",this._el.container),this._el.content=TL.Dom.create("div","tl-timemarker-content",this._el.content_container),this._el.line_left=TL.Dom.create("div","tl-timemarker-line-left",this._el.timespan),this._el.line_right=TL.Dom.create("div","tl-timemarker-line-right",this._el.timespan),this.data.media){this._el.media_container=TL.Dom.create("div","tl-timemarker-media-container",this._el.content);
+var t={url:this.data.media.thumbnail},e=this.data.media.thumbnail?TL.MediaType(t,!0):null;if(e){var i=new e.cls(t);i.on("loaded",function(){this._el.media=TL.Dom.create("img","tl-timemarker-media",this._el.media_container),this._el.media.src=i.getImageURL()}.bind(this)),i.loadMedia()}else{var n=TL.MediaType(this.data.media).type;this._el.media=TL.Dom.create("span","tl-icon-"+n,this._el.media_container)}}this._el.text=TL.Dom.create("div","tl-timemarker-text",this._el.content),this._text=TL.Dom.create("h2","tl-headline",this._el.text),this.data.text.headline&&""!=this.data.text.headline?this._text.innerHTML=TL.Util.unlinkify(this.data.text.headline):this.data.text.text&&""!=this.data.text.text?this._text.innerHTML=TL.Util.unlinkify(this.data.text.text):this.data.media.caption&&""!=this.data.media.caption&&(this._text.innerHTML=TL.Util.unlinkify(this.data.media.caption)),this.onLoaded()},_initEvents:function(){TL.DomEvent.addListener(this._el.container,"click",this._onMarkerClick,this)},_updateDisplay:function(t,e,i){t&&(this.options.width=t),e&&(this.options.height=e)}}),TL.TimeEra=TL.Class.extend({includes:[TL.Events,TL.DomMixins],_el:{},initialize:function(t,e){this._el={container:{},background:{},content_container:{},content:{},text:{}},this._text={},this._state={loaded:!1},this.data={unique_id:"",date:{year:0,month:0,day:0,hour:0,minute:0,second:0,millisecond:0,thumbnail:"",format:""},text:{headline:"",text:""}},this.options={duration:1e3,ease:TL.Ease.easeInSpline,width:600,height:600,marker_width_min:100},this.active=!1,this.animator={},this.has_end_date=!1,TL.Util.mergeData(this.options,e),TL.Util.mergeData(this.data,t),this._initLayout(),this._initEvents()},show:function(){},hide:function(){},setActive:function(t){},addTo:function(t){t.appendChild(this._el.container)},removeFrom:function(t){t.removeChild(this._el.container)},updateDisplay:function(t,e){this._updateDisplay(t,e)},getLeft:function(){return this._el.container.style.left.slice(0,-2)},getTime:function(){return this.data.start_date.getTime()},getEndTime:function(){return!!this.data.end_date&&this.data.end_date.getTime()},setHeight:function(t){var e=12,i=1;this._el.content_container.style.height=t+"px",this._el.content.className="tl-timeera-content",TL.Browser.webkit?(i=Math.floor(t/(e+2)),i<1&&(i=1),this._text.className="tl-headline",this._text.style.webkitLineClamp=i):(i=t/e,i>1?this._text.className="tl-headline tl-headline-fadeout":this._text.className="tl-headline",this._text.style.height=i*e+"px")},setWidth:function(t){this.data.end_date&&(this._el.container.style.width=t+"px",t>this.options.marker_width_min?(this._el.content_container.style.width=t+"px",this._el.content_container.className="tl-timeera-content-container tl-timeera-content-container-long"):(this._el.content_container.style.width=this.options.marker_width_min+"px",this._el.content_container.className="tl-timeera-content-container"))},setClass:function(t){this._el.container.className=t},setRowPosition:function(t,e){this.setPosition({top:t})},setColor:function(t){this._el.container.className="tl-timeera tl-timeera-color"+t},_initLayout:function(){this._el.container=TL.Dom.create("div","tl-timeera"),this.data.unique_id&&(this._el.container.id=this.data.unique_id+"-era"),this.data.end_date&&(this.has_end_date=!0,this._el.container.className="tl-timeera tl-timeera-with-end"),this._el.content_container=TL.Dom.create("div","tl-timeera-content-container",this._el.container),this._el.background=TL.Dom.create("div","tl-timeera-background",this._el.content_container),this._el.content=TL.Dom.create("div","tl-timeera-content",this._el.content_container),this._el.text=TL.Dom.create("div","tl-timeera-text",this._el.content),this._text=TL.Dom.create("h2","tl-headline",this._el.text),this.data.text.headline&&""!=this.data.text.headline&&(this._text.innerHTML=TL.Util.unlinkify(this.data.text.headline)),this.onLoaded()},_initEvents:function(){},_updateDisplay:function(t,e,i){t&&(this.options.width=t),e&&(this.options.height=e)}}),TL.TimeGroup=TL.Class.extend({includes:[TL.Events,TL.DomMixins],_el:{},initialize:function(t){this._el={parent:{},container:{},message:{}},this.options={width:600,height:600},this.data={label:"",rows:1},this._el.container=TL.Dom.create("div","tl-timegroup"),TL.Util.mergeData(this.data,t),this.animator={},this._initLayout(),this._initEvents()},updateDisplay:function(t,e){},setRowPosition:function(t,e){this.options.height=e*this.data.rows,this.setPosition({top:t}),this._el.container.style.height=this.options.height+"px"},setAlternateRowColor:function(t,e){var i="tl-timegroup";t&&(i+=" tl-timegroup-alternate"),e&&(i+=" tl-timegroup-hidden"),this._el.container.className=i},_onMouseClick:function(){this.fire("clicked",this.options)},_initLayout:function(){this._el.message=TL.Dom.create("div","tl-timegroup-message",this._el.container),this._el.message.innerHTML=this.data.label},_initEvents:function(){TL.DomEvent.addListener(this._el.container,"click",this._onMouseClick,this)},_updateDisplay:function(t,e,i){}}),TL.TimeScale=TL.Class.extend({initialize:function(t,e){var i=t.events;this._scale=t.scale,e=TL.Util.mergeData({display_width:500,screen_multiplier:3,max_rows:null},e),this._display_width=e.display_width,this._screen_multiplier=e.screen_multiplier,this._pixel_width=this._screen_multiplier*this._display_width,this._group_labels=void 0,this._positions=[],this._pixels_per_milli=0,this._earliest=t.getEarliestDate().getTime(),this._latest=t.getLatestDate().getTime(),this._span_in_millis=this._latest-this._earliest,this._span_in_millis<=0&&(this._span_in_millis=this._computeDefaultSpan(t)),this._average=this._span_in_millis/i.length,this._pixels_per_milli=this.getPixelWidth()/this._span_in_millis,this._axis_helper=TL.AxisHelper.getBestHelper(this),this._scaled_padding=1/this.getPixelsPerTick()*(this._display_width/2),this._computePositionInfo(i,e.max_rows)},_computeDefaultSpan:function(t){if("human"==t.scale){for(var e={},i=0;i=0;i--)if(e.hasOwnProperty(TL.Date.SCALES[i][0])){var a=TL.Date.SCALES[TL.Date.SCALES.length-1];return TL.Date.SCALES[i+1]&&(a=TL.Date.SCALES[i+1]),a[1]}return 31536e6}return 2e5},getGroupLabels:function(){return this._group_labels||[]},getScale:function(){return this._scale},getNumberOfRows:function(){return this._number_of_rows},getPixelWidth:function(){return this._pixel_width},getPosition:function(t){return(t-this._earliest)*this._pixels_per_milli},getPositionInfo:function(t){return this._positions[t]},getPixelsPerTick:function(){return this._axis_helper.getPixelsPerTick(this._pixels_per_milli)},getTicks:function(){return{major:this._axis_helper.getMajorTicks(this),minor:this._axis_helper.getMinorTicks(this)}},getDateFromTime:function(t){if("human"==this._scale)return new TL.Date(t);if("cosmological"==this._scale)return new TL.BigDate(new TL.BigYear(t));throw new TL.Error("time_scale_scale_err",this._scale)},getMajorScale:function(){return this._axis_helper.major.name},getMinorScale:function(){return this._axis_helper.minor.name},_assessGroups:function(t){for(var e=[],i=!1,n=0;n0)s.row=i.length,i.push(s),e--;else{var l=Math.min.apply(null,o),h=o.indexOf(l);s.row=h,s.end>i[h].end&&(i[h]=s),n++}}return{n_rows:i.length,n_overlaps:n}},_computePositionInfo:function(t,e,i){i=i||100;for(var n=[],a=!1,s=0;si?o.end=o.start+o.width:o.end=o.start+i}else o.width=i,o.end=o.start+i;t[s].group?n.indexOf(t[s].group)<0&&n.push(t[s].group):a=!0}if(n.length){a&&n.push("");for(var l=[],s=0;s=0;d--)h.positions[d].end>o.start&&h.n_overlaps++;h.positions.push(o)}for(var c=n.length;;){var u=Math.max(0,e-c);if(!u)break;if(l.sort(function(t,e){return t.n_overlaps>e.n_overlaps?-1:t.n_overlaps1?s>=a?(s=1,r.tick_text.style.opacity=1,r.tick.className="tl-timeaxis-tick"):(s++,r.tick_text.style.opacity=0,r.tick.className="tl-timeaxis-tick tl-timeaxis-tick-hidden"):(r.tick_text.style.opacity=1,r.tick.className="tl-timeaxis-tick")}}},_initLayout:function(){this._el.content_container=TL.Dom.create("div","tl-timeaxis-content-container",this._el.container),this._el.major=TL.Dom.create("div","tl-timeaxis-major",this._el.content_container),this._el.minor=TL.Dom.create("div","tl-timeaxis-minor",this._el.content_container),this.onLoaded()},_initEvents:function(){},_updateDisplay:function(t,e,i){t&&(this.options.width=t),e&&(this.options.height=e)}}),TL.AxisHelper=TL.Class.extend({initialize:function(t){if(!t)throw new TL.Error("axis_helper_no_options_err");this.scale=t.scale,this.minor=t.minor,this.major=t.major},getPixelsPerTick:function(t){return t*this.minor.factor},getMajorTicks:function(t){return this._getTicks(t,this.major)},getMinorTicks:function(t){return this._getTicks(t,this.minor)},_getTicks:function(t,e){for(var i=t._scaled_padding*e.factor,n=t._earliest-i,a=t._latest+i,s=[],o=n;oi){if(null==s)return r;var h=Math.abs(i-l),d=Math.abs(i-l);return h=0&&t0&&t<=this.config.events.length)return this.config.events[t-1]}else if(t>=0&&t=0&&t"+this._("error")+": "+this._translateError(t))}else{for(var e=[],i=0,n=this.config.getErrors();i"+this._("error")+": "+e.join("
"))}},_validateOptions:function(){for(var t=["timenav_height","timenav_height_min","marker_height_min","marker_width_min","marker_padding","start_at_slide","slide_padding_lr"],e=0;ethis.config.events.length?this.goToEnd():this.goTo(this.options.start_at_slide),this.options.hash_bookmark&&this._updateHashBookmark(this.current_id)))}}),TL.Timeline.source_path=function(){var t=document.getElementsByTagName("script"),e=t[t.length-1].src;return e.substr(0,e.lastIndexOf("/"))}();
\ No newline at end of file
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/json.txt b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/json.txt
new file mode 100644
index 000000000..e5bd67b83
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/json.txt
@@ -0,0 +1,271 @@
+{
+ "title": {
+ "media": {
+ "url": "//www.flickr.com/photos/tm_10001/2310475988/",
+ "caption": "Whitney Houston performing on her My Love is Your Love Tour in Hamburg.",
+ "credit": "flickr/tm_10001"
+ },
+ "text": {
+ "headline": "Whitney Houston
1963 - 2012",
+ "text": "Houston's voice caught the imagination of the world propelling her to superstardom at an early age becoming one of the most awarded performers of our time. This is a look into the amazing heights she achieved and her personal struggles with substance abuse and a tumultuous marriage.
"
+ }
+ },
+ "events": [
+ {
+ "media": {
+ "url": "{{ static_url }}/img/examples/houston/family.jpg",
+ "caption": "Houston's mother and Gospel singer, Cissy Houston (left) and cousin Dionne Warwick.",
+ "credit": "Cissy Houston photo:Tom Marcello
Dionne Warwick: CBS Television via Wikimedia Commons"
+ },
+ "start_date": {
+ "month": "8",
+ "day": "9",
+ "year": "1963"
+ },
+ "text": {
+ "headline": "A Musical Heritage",
+ "text": "Born in New Jersey on August 9th, 1963, Houston grew up surrounded by the music business. Her mother is gospel singer Cissy Houston and her cousins are Dee Dee and Dionne Warwick.
"
+ }
+ },
+ {
+ "media": {
+ "url": "https://youtu.be/fSrO91XO1Ck",
+ "caption": "",
+ "credit": "Unidisc Music"
+ },
+ "start_date": {
+ "year": "1978"
+ },
+ "text": {
+ "headline": "First Recording",
+ "text": "At the age of 15 Houston was featured on Michael Zager's song, Life's a Party."
+ }
+ },
+ {
+ "media": {
+ "url": "https://youtu.be/_gvJCCZzmro",
+ "caption": "A young poised Whitney Houston in an interview with EbonyJet.",
+ "credit": "EbonyJet"
+ },
+ "start_date": {
+ "year": "1978"
+ },
+ "text": {
+ "headline": "The Early Years",
+ "text": "As a teen Houston's credits include background vocals for Jermaine Jackson, Lou Rawls and the Neville Brothers. She also sang on Chaka Khan's, 'I'm Every Woman,' a song which she later remade for the Bodyguard soundtrack which is the biggest selling soundtrack of all time. It sold over 42 million copies worldwide."
+ }
+ },
+ {
+ "media": {
+ "url": "https://youtu.be/H7_sqdkaAfo",
+ "caption": "I'm Every Women as performed by Whitney Houston.",
+ "credit": "Arista Records"
+ },
+ "start_date": {
+ "year": "1978"
+ },
+ "text": {
+ "headline": "Early Album Credits",
+ "text": "As a teen Houston's credits include background vocals for Jermaine Jackson, Lou Rawls and the Neville Brothers. She also sang on Chaka Khan's, 'I'm Every Woman,' a song which she later remade for the Bodyguard soundtrack which is the biggest selling soundtrack of all time. It sold over 42 million copies worldwide."
+ }
+ },
+ {
+ "media": {
+ "url": "https://youtu.be/A4jGzNm2yPI",
+ "caption": "Whitney Houston and Clive Davis discussing her discovery and her eponymous first album.",
+ "credit": "Sony Music Entertainment"
+ },
+ "start_date": {
+ "year": "1983"
+ },
+ "text": {
+ "headline": "Signed",
+ "text": "Houston is signed to Arista Records after exec Clive Davis sees her performing on stage with her mother in New York."
+ }
+ },
+ {
+ "media": {
+ "url": "https://youtu.be/m3-hY-hlhBg",
+ "caption": "The 'How Will I Know' video showcases the youthful energy that boosted Houston to stardom.",
+ "credit": "Arista Records Inc."
+ },
+ "start_date": {
+ "year": "1985"
+ },
+ "text": {
+ "headline": "Debut",
+ "text": "Whitney Houston's self titled first release sold over 12 million copies in the U.S. and included the hit singles 'How Will I Know,' 'You Give Good Love,' 'Saving All My Love For You' and 'Greatest Love of All.'"
+ }
+ },
+ {
+ "media": {
+ "url": "https://youtu.be/v0XuiMX1XHg",
+ "caption": "Dionne Warwick gleefully announces cousin, Whitney Houston, the winner of the Best Female Pop Vocal Performance for the song Saving All My Love.",
+ "credit": "The Recording Academy"
+ },
+ "start_date": {
+ "year": "1986"
+ },
+ "text": {
+ "headline": "'The Grammys'",
+ "text": "In 1986 Houston won her first Grammy for the song Saving All My Love. In total she has won six Grammys, the last of which she won in 1999 for It's Not Right But It's Okay."
+ }
+ },
+ {
+ "media": {
+ "url": "https://youtu.be/eH3giaIzONA",
+ "caption": "I Wanna Dance With Somebody",
+ "credit": "Arista Records Inc."
+ },
+ "start_date": {
+ "year": "1987"
+ },
+ "text": {
+ "headline": "'Whitney'",
+ "text": "Multiplatinum second album sells more than 20 million copies worldwide. With 'Whitney', Houston became the first female artist to produce four number 1 singles on one album including \"I Wanna Dance With Somebody,' 'Didn't We Almost Have It All,' 'So Emotional' and 'Where Do Broken Hearts Go.'"
+ }
+ },
+ {
+ "media": {
+ "url": "https://youtu.be/96aAx0kxVSA",
+ "caption": "\"One Moment In Time\" - Theme song to the 1988 Seoul Olympics",
+ "credit": "Arista Records Inc."
+ },
+ "start_date": {
+ "year": "1988"
+ },
+ "text": {
+ "headline": "\"One Moment In Time\"",
+ "text": "The artist's fame continues to skyrocket as she records the theme song for the Seoul Olympics, 'One Moment In Time.'"
+ }
+ },
+ {
+ "media": {
+ "url": "",
+ "caption": "",
+ "credit": ""
+ },
+ "start_date": {
+ "year": "1989"
+ },
+ "text": {
+ "headline": "Bobby Brown",
+ "text": "Houston and Brown first meet at the Soul Train Music Awards. In an interview with Rolling Stone Magazine, Houston admitted that it was not love at first sight. She turned down Brown's first marriage proposal but eventually fell in love with him."
+ }
+ },
+ {
+ "media": {
+ "url": "https://youtu.be/5Fa09teeaqs",
+ "caption": "CNN looks back at Houston's iconic performance of the national anthem at Superbowl XXV.",
+ "credit": "CNN"
+ },
+ "start_date": {
+ "year": "1991"
+ },
+ "text": {
+ "headline": "Super Bowl",
+ "text": "Houston's national anthem performance captures the hearts and minds of Americans ralllying behind soldiers in the Persian Guf War."
+ }
+ },
+ {
+ "media": {
+ "url": "https://youtu.be/h9rCobRl-ng",
+ "caption": "\"Run To You\" from the 1992 \"Bodyguard\" soundtrack..",
+ "credit": "Arista Records"
+ },
+ "start_date": {
+ "year": "1992"
+ },
+ "text": {
+ "headline": "\"The Bodyguard\"",
+ "text": "Houston starred opposite Kevin Costner in the box office hit, The Bodyguard. The soundtrack to the movie sold over 44 million copies worldwide garnering 3 Grammy's for the artist."
+ }
+ },
+ {
+ "media": {
+ "url": "https://youtu.be/5cDLZqe735k",
+ "caption": "Bobby Brown performing \"My Prerogrative,\" from his \"Don't be Cruel\" solo album. Bobby Brown first became famous with the R&B group, New Edition.",
+ "credit": ""
+ },
+ "start_date": {
+ "year": "1992"
+ },
+ "text": {
+ "headline": "Married Life",
+ "text": "After three years of courtship, Houston marries New Edition singer Bobby Brown. Their only child Bobbi Kristina Brown was born in 1993.
In 2003 Brown was charged with domestic violence after police responded to a domestic violence call. Houston and Brown were featured in the reality show, \"Being bobby Brown,\" and divorced in 2007.
"
+ }
+ },
+ {
+ "media": {
+ "url": "//upload.wikimedia.org/wikipedia/commons/d/dd/ABC_-_Good_Morning_America_-_Diane_Sawyer.jpg",
+ "caption": "Diane Sawyer ",
+ "credit": "flickr/Amanda Benham"
+ },
+ "start_date": {
+ "year": "2002"
+ },
+ "text": {
+ "headline": "Crack is Whack",
+ "text": "Houston first publicly admitted to drug use in an interview with Diane Sawyer. The singer coined the term \"Crack is Whack,\" saying that she only used more expensive drugs.
"
+ }
+ },
+ {
+ "media": {
+ "url": "https://youtu.be/KLk6mt8FMR0",
+ "caption": "Addiction expert, Dr. Drew, talks about Whitney's death and her struggle with addiction.",
+ "credit": "CNN"
+ },
+ "start_date": {
+ "year": "2004"
+ },
+ "text": {
+ "headline": "Rehab",
+ "text": "Houston entered rehab several times beginning in 2004. She declared herself drug free in an interview with Oprah Winfrey in 2009 but returned to rehab in 2011.
"
+ }
+ },
+ {
+ "media": {
+ "url": "",
+ "caption": "",
+ "credit": ""
+ },
+ "start_date": {
+ "year": "2005"
+ },
+ "text": {
+ "headline": "Being Bobby Brown",
+ "text": "Being Bobby Brown was a reality show starring Brown and wife Whitney Houston. Houston refused to sign for a second season. A clip of her telling Brown to \"Kiss my ass,\" became a running gag on The Soup.
"
+ }
+ },
+ {
+ "media": {
+ "url": "",
+ "caption": "",
+ "credit": ""
+ },
+ "start_date": {
+ "year": "2010"
+ },
+ "text": {
+ "headline": "A Rocky Comeback",
+ "text": "Houston's comeback tour is cut short due to a diminished voice damaged by years of smoking. She was reportedly devastated at her inability to perform like her old self.
"
+ }
+ },
+ {
+ "media": {
+ "url": "//upload.wikimedia.org/wikipedia/commons/0/0f/Flickr_Whitney_Houston_performing_on_GMA_2009_4.jpg",
+ "caption": "Houston, performing on Good Morning America in 2009.",
+ "credit": "Asterio Tecson via Wikimedia"
+ },
+ "start_date": {
+ "month": "2",
+ "day": "11",
+ "year": "2012"
+ },
+ "text": {
+ "headline": "Whitney Houston
1963-2012",
+ "text": "Houston, 48, was discovered dead at the Beverly Hilton Hotel on on Feb. 11, 2012. She is survived by her daughter, Bobbi Kristina Brown, and mother, Cissy Houston.
"
+ }
+ }
+ ]
+}
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/components/_advanced.scss b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/components/_advanced.scss
new file mode 100644
index 000000000..ebc40aabb
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/components/_advanced.scss
@@ -0,0 +1,145 @@
+@import "../modules/_global.scss";
+
+.adv-timeline-wrapper {
+ display: flex;
+ flex-direction: column-reverse;
+ .tl-text .tl-headline-date, .tl-text h3.tl-headline-date {
+ color: #757575;
+ }
+}
+.timeline-item-top {
+ display: flex;
+ flex-direction: column-reverse;
+}
+.adv-timeline-list {
+ //max-width: 800px;
+ margin: 0 auto;
+ display: none;
+ ol.timeline-event-list,
+ ol.timeline-event-list > li {
+ list-style: none;
+ list-style-image: none;
+ }
+ .timeline-item {
+
+ background-color: #fff;
+ margin:10px 20px 40px 50px;
+ position: relative;
+ clear:both;
+ z-index: 5;
+ @include rgbashadow(0,0,20px,#000,.10);
+ @include shadowtransition;
+ img {
+ width:100%;
+ height: auto;
+ display: block;
+ }
+ &:hover {
+ @include rgbashadow(0,0,25px,#000,.3);
+ }
+ .timeline-item-content {
+ padding:20px;
+ }
+ h3 {
+ //font-size: 130%;
+ }
+ }
+}
+.timeline-item-header {
+ padding: 20px 20px 0 20px;
+}
+.timeline-item-body {
+ padding:0px 20px 20px 20px;
+}
+
+h3.timeline-item-date,
+h3.tl-headline-date {
+ font-size:90%;
+ text-transform: uppercase;
+ color:#757575;
+ margin: 0;
+}
+
+h3.timeline-item-title,
+h4.timeline-item-title {
+ font-size: 150%;
+}
+
+.adv-timeline-wrapper {
+ background-color:#fff;
+ .tl-timemarker {
+ .tl-timemarker-content-container {
+ background-color:#fff;
+ &:hover {
+ background-color: #333;
+ }
+
+ .tl-timemarker-content .tl-timemarker-text h2.tl-headline {
+ color: #333;
+ & p {
+ color: #333;
+ }
+ }
+ }
+ }
+
+
+
+
+
+ .tl-timemarker.tl-timemarker-active {
+ .tl-timemarker-content-container {
+ background-color: #333;
+ &:hover {
+ background-color: #333;
+ }
+ .tl-timemarker-content .tl-timemarker-text h2.tl-headline {
+ color: #fff;
+ & p {
+ color: #fff;
+ }
+ }
+ .tl-timemarker-content .tl-timemarker-media-container span[class*=" tl-icon-"],
+ .tl-timemarker-content .tl-timemarker-media-container span[class^=tl-icon-] {
+ color:#fff;
+ }
+ }
+ }
+ .tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-major .tl-timeaxis-tick {
+ color: #222;
+ font-weight: bold;
+ }
+ .tl-timeaxis .tl-timeaxis-content-container .tl-timeaxis-minor .tl-timeaxis-tick {
+ color:#757575;
+ }
+
+ .tl-slidenav-next .tl-slidenav-title, .tl-slidenav-previous .tl-slidenav-title {
+ opacity: .8;
+ }
+ .tl-slidenav-next .tl-slidenav-description,
+ .tl-slidenav-next .tl-previous-description {
+ opacity: .25;
+ }
+ .tl-slidenav-next:hover .tl-slidenav-description, .tl-slidenav-previous:hover .tl-slidenav-description {
+ opacity: .8;
+ }
+ .tl-timegroup {
+ background-color: #e2f1f9;
+ }
+ .tl-timegroup .tl-timegroup-message {
+ color:#656565;
+ }
+}
+body .content .adv-timeline-wrapper .tl-slide-content,
+body .content .adv-timeline-wrapper .tl-attribution {
+ a:link,
+ a:visited {
+ color: $blue;
+ }
+ a:hover {
+ color:$red;
+ }
+}
+.tl-attribution {
+ display: none;
+}
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/components/_simple-horizontal.scss b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/components/_simple-horizontal.scss
new file mode 100644
index 000000000..dd6f806b3
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/components/_simple-horizontal.scss
@@ -0,0 +1,163 @@
+@import "../modules/_global.scss";
+body {
+ .block-inner .content .simple-horizontal-timeline-wrapper {
+ a:link, a:visited {
+ color: $blue;
+ }
+ a:hover {
+ color: $red;
+ }
+ .cd-horizontal-timeline .events a {
+ color:#383838;
+ }
+ .timeline-content {
+ color: #202020;
+ }
+ }
+}
+.simple-horizontal-timeline-wrapper {
+ background: #fff;
+ padding-bottom: 40px;
+ padding-top:10px;
+ position: relative;
+
+ .timeline-list-link {
+ position: absolute;
+ left:0;
+ right:0;
+ bottom:0;
+ }
+}
+
+.cd-horizontal-timeline {
+ .timeline,
+ .cd-timeline-item-navigation-wrapper {
+ ol, ul, li {
+ margin:0;
+ padding:0;
+ list-style: none;
+ list-style-image: none;
+ }
+ }
+ .events-content {
+ & > ol,
+ & > ol > li,
+ & > ul,
+ & > ul > li {
+ margin:0;
+ padding:0;
+ list-style: none;
+ list-style-image: none;
+ }
+ }
+
+ padding-bottom: 20px;
+ .events a {
+ width: 120px;
+ padding-left: 5px;
+ padding-right:5px;
+ }
+ .short-title {
+ display: none;
+ }
+}
+
+.cd-horizontal-timeline .timeline-item-wrapper {
+ //padding:20px;
+}
+.cd-horizontal-timeline .timeline-item-wrapper:not(:first-child) {
+ padding-top: 0;
+}
+.cd-horizontal-timeline .timeline-item {
+ background-color: #fff;
+ margin:10px 0;
+ position: relative;
+ z-index: 5;
+ @include rgbashadow(0,0,20px,#000,.10);
+ @include shadowtransition;
+ img {
+ width:100%;
+ height: auto;
+ display: block;
+ }
+ &:hover {
+ @include rgbashadow(0,0,25px,#000,.3);
+ }
+ .timeline-item-content {
+ padding:20px;
+ }
+ h3 {
+ //font-size: 130%;
+ }
+ @media screen and (min-width:768px) {
+ h3 {
+ //font-size: 180%;
+ }
+ }
+}
+.timeline-item {
+ img {
+ width:100%;
+ height: auto;
+ display: block;
+ }
+ .timeline-item-date {
+ font-size: 85%;
+ margin-bottom: 10px;
+ }
+}
+
+.events li {
+ font-size: 14px;
+ text-transform: uppercase;
+}
+.cd-timeline-view-all {
+ text-align: center;
+ font-size: 85%;
+ position: absolute;
+ bottom:20px;
+ left:0;
+ right:0;
+}
+
+.timeline-view-all-wrapper {
+ ol, li {
+ list-style: none;
+ list-style-image: none;
+ margin: 0;
+ padding: 0;
+ }
+ .timeline-item {
+ margin: 0 0 20px 0;
+ padding-bottom: 20px;
+ border-bottom:1px solid #d7d7d7;
+ img {
+ display: none;
+ }
+ }
+}
+
+// Timeline item navigation
+.cd-timeline-item-navigation {
+ text-align: center;
+ font-size:200%;
+ li {
+ display: inline;
+ }
+ a {
+ display: inline-block;
+ padding:0 20px;
+ }
+}
+
+.no-touch .cd-timeline-item-navigation a:hover {
+ border-color: #7b9d6f;
+}
+.cd-timeline-item-navigation a.inactive {
+ cursor: not-allowed;
+ color:#aaa;
+}
+
+.no-touch .cd-timeline-item-navigation a.inactive:hover {
+ border-color: #dfdfdf;
+}
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/components/_simple-vertical.scss b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/components/_simple-vertical.scss
new file mode 100644
index 000000000..d8c97f9a7
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/components/_simple-vertical.scss
@@ -0,0 +1,164 @@
+@import "../modules/_global.scss";
+
+// Vertical Timeline Styles
+.cd-vertical-timeline {
+ ol.vertical-timeline-items,
+ ol.vertical-timeline-items > li {
+ list-style: none;
+ list-style-image: none;
+ margin: 0;
+ padding: 0;
+ }
+ padding-bottom: 50px;
+}
+.cd-vertical-timeline {
+ position: relative;
+ .events-content {
+ position: relative;
+ }
+ .events-content:before {
+ content: " ";
+ position: absolute;
+ top:20px;
+ bottom:20px;
+ left:20px;
+ width:2px;
+ background-color: #dfdfdf;
+ }
+ .events-content:after {
+ content: " ";
+ position: absolute;
+ width:10px;
+ height:2px;
+ background-color: #dfdfdf;
+ bottom:20px;
+ left:16px;
+ }
+ @media screen and (min-width:768px) {
+ .events-content:before {
+ top:20px;
+ bottom:20px;
+ left:50%;
+ }
+ .events-content:after {
+ bottom:20px;
+ left:calc(50% - 4px);
+ }
+ }
+}
+body {
+ .content .cd-vertical-timeline .timeline-item {
+ a:link, a:visited {
+ color: $blue;
+ }
+ a:hover {
+ color:$red;
+ }
+ }
+}
+.cd-vertical-timeline {
+ .timeline-content-item {
+ margin: 10px 20px 40px 50px;
+ }
+
+ .timeline-item {
+ color:#202020;
+ background-color: #fff;
+ margin:10px 20px 40px 50px;
+ position: relative;
+ clear:both;
+ z-index: 5;
+ @include rgbashadow(0,0,20px,#000,.10);
+ @include shadowtransition;
+ img {
+ width:100%;
+ height: auto;
+ display: block;
+ }
+
+ &:hover {
+ @include rgbashadow(0,0,25px,#000,.3);
+ }
+ .timeline-item-content {
+ padding:20px;
+ }
+ h3 {
+ //font-size: 130%;
+ }
+ }
+ .timeline-single-item {
+ position: relative;
+ .short-title {
+ font-weight:900;
+ margin: 0 20px 0 50px;
+ font-size: 120%;
+ }
+ }
+ .timeline-single-item:before {
+ display: block;
+ width:20px;
+ height:20px;
+ border-radius: 100%;
+ background:#cfb87c;
+ position: absolute;
+ top:5px;
+ left:11px;
+ z-index: 1;
+ content: " ";
+ @include rgbashadow(0,0,10px,#000,.25);
+ border:3px solid #fff;
+ }
+ @media screen and (min-width:768px) {
+ .timeline-content-item {
+ margin: 10px 20px 40px;
+ }
+ & .timeline-item {
+ margin:10px 20px 40px;
+ }
+ .timeline-single-item {
+ width:100%;
+ max-width: 50%;
+ clear:both;
+ &:before {
+ top:10px;
+ }
+ .short-title {
+ position: absolute;
+ width: 100%;
+ padding: 0 20px;
+ font-size: 180%;
+ font-weight: 900;
+ margin: 0;
+ top:-5px;
+ }
+ }
+ .timeline-single-item:nth-child(odd) {
+ float:left;
+ &:before {
+ left:auto;
+ right:-11px;
+ }
+ .short-title {
+ right: -100%;
+ }
+ .timeline-content-item {
+ margin: 10px 20px 40px 0;
+ }
+ }
+ .timeline-single-item:nth-child(even) {
+ float:right;
+ &:before {
+ right:auto;
+ left:-9px;
+ }
+ .short-title {
+ left: -100%;
+ text-align: right;
+ }
+ .timeline-content-item {
+ margin: 10px 0 40px 20px;
+ }
+ }
+
+ }
+}
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/cu-content-sequence.scss b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/cu-content-sequence.scss
new file mode 100644
index 000000000..52dd9fb04
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/cu-content-sequence.scss
@@ -0,0 +1,3 @@
+@import "components/_advanced";
+@import "components/_simple-horizontal";
+@import "components/_simple-vertical";
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/modules/_global.scss b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/modules/_global.scss
new file mode 100644
index 000000000..56c6d9d93
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/scss/modules/_global.scss
@@ -0,0 +1,28 @@
+@mixin rgbashadow($x, $y, $blur, $rgb, $transparency) {
+ -webkit-box-shadow: $x $y $blur rgba($rgb, $transparency);
+ -moz-box-shadow: $x $y $blur rgba($rgb, $transparency);
+ box-shadow: $x $y $blur rgba($rgb, $transparency);
+}
+
+@mixin shadowtransition {
+ transition: -webkit-box-shadow 0.5s ease, background-color 0.5s ease, color 0.5s ease;
+ transition: -moz-box-shadow 0.5s ease, background-color 0.5s ease, color 0.5s ease;
+ transition: box-shadow 0.5s ease, background-color 0.5s ease, color 0.5s ease;
+}
+
+$blue: #0277BD;
+$red: #e51c23;
+
+.timeline-list-link {
+ padding:20px;
+ text-align: center;
+}
+.adv-timeline-list {
+ background:#fff;
+ color:#202020;
+ padding:10px;
+ a:link,
+ a:visited {
+ color:$blue;
+ }
+}
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/bean--content-sequence--advanced.tpl.php b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/bean--content-sequence--advanced.tpl.php
new file mode 100644
index 000000000..63b78aba4
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/bean--content-sequence--advanced.tpl.php
@@ -0,0 +1,46 @@
+
+
+ View as List
+
+
+
+
+
+
+
+
+
+ ' . $event . '';
+ }
+ ?>
+
+
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/bean--content-sequence--simple-horizontal.tpl.php b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/bean--content-sequence--simple-horizontal.tpl.php
new file mode 100644
index 000000000..068c49fce
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/bean--content-sequence--simple-horizontal.tpl.php
@@ -0,0 +1,81 @@
+
+
+
+
+
+ View As List
+
+
+
+
+
+
+ $event) {
+ print '- ' . $event['label'] . '
';
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ' . $event . '';
+ }
+ ?>
+
+
+
+
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/bean--content-sequence--simple-vertical.tpl.php b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/bean--content-sequence--simple-vertical.tpl.php
new file mode 100644
index 000000000..62f47f979
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/bean--content-sequence--simple-vertical.tpl.php
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/content-sequence-item.tpl.php b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/content-sequence-item.tpl.php
new file mode 100644
index 000000000..bc329ad9f
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/content-sequence-item.tpl.php
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+ ' . join(' - ', $dates) . '';
+ print '' . $vars['text']['headline'] . '
';
+ }
+ else {
+ print '' . $vars['text']['headline'] . '
';
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/timeline-item.tpl.php b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/timeline-item.tpl.php
new file mode 100644
index 000000000..1a3e3eb04
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence/templates/timeline-item.tpl.php
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence_bundle.info b/modules/custom/cu_content_sequence_bundle/cu_content_sequence_bundle.info
new file mode 100644
index 000000000..276331986
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence_bundle.info
@@ -0,0 +1,15 @@
+name = Content Sequence Bundle
+description = Enables a visual display of content covering a span or range. Example use cases are timelines, step-by-step instructions or showing progression.
+core = 7.x
+package = CU Content Sequence Bundle
+version = 7.x-1.5
+project status url = https://github.com/CuBoulder/cu_content_sequence_bundle
+bundle_group = addon_bundles
+description = Create sequences of content such as steps or timelines.
+dependencies[] = cu_content_sequence
+project_demo_url = http://www.colorado.edu/webcentral/node/1550
+
+bundle_roles[] = developer
+bundle_roles[] = administrator
+bundle_roles[] = site_owner
+bundle_roles[] = configuration_manager
diff --git a/modules/custom/cu_content_sequence_bundle/cu_content_sequence_bundle.module b/modules/custom/cu_content_sequence_bundle/cu_content_sequence_bundle.module
new file mode 100644
index 000000000..212f83a55
--- /dev/null
+++ b/modules/custom/cu_content_sequence_bundle/cu_content_sequence_bundle.module
@@ -0,0 +1,58 @@
+ array(
+ 'view any content_sequence bean',
+ ),
+ 'authenticated user' => array(
+ 'view any content_sequence bean',
+ ),
+ 'administrator' => array(
+ 'create any content_sequence bean',
+ 'delete any content_sequence bean',
+ 'edit any content_sequence bean',
+ 'view any content_sequence bean',
+ ),
+ 'content_editor' => array(
+ 'create any content_sequence bean',
+ 'delete any content_sequence bean',
+ 'edit any content_sequence bean',
+ 'view any content_sequence bean',
+ ),
+ 'developer' => array(
+ 'create any content_sequence bean',
+ 'delete any content_sequence bean',
+ 'edit any content_sequence bean',
+ 'view any content_sequence bean',
+ ),
+ 'edit_my_content' => array(
+ 'view any content_sequence bean',
+ ),
+ 'edit_only' => array(
+ 'edit any content_sequence bean',
+ 'view any content_sequence bean',
+ ),
+ 'site_editor' => array(
+ 'create any content_sequence bean',
+ 'delete any content_sequence bean',
+ 'edit any content_sequence bean',
+ 'view any content_sequence bean',
+ ),
+ 'site_owner' => array(
+ 'create any content_sequence bean',
+ 'delete any content_sequence bean',
+ 'edit any content_sequence bean',
+ 'view any content_sequence bean',
+ ),
+ );
+
+ if (isset($permissions[$role])) {
+ return $permissions[$role];
+ }
+}
diff --git a/modules/custom/cu_countdown_bundle/cu_countdown/css/cu-countdown.css b/modules/custom/cu_countdown_bundle/cu_countdown/css/cu-countdown.css
new file mode 100644
index 000000000..6abe01f0f
--- /dev/null
+++ b/modules/custom/cu_countdown_bundle/cu_countdown/css/cu-countdown.css
@@ -0,0 +1,151 @@
+.countdown {
+ display: inline-block;
+ margin-bottom: 20px;
+}
+.countdown.countdown-full {
+ display: block;
+}
+
+.countdown-stacked .countdown-days {
+ font-size: 200%;
+ display: table;
+ width:100%;
+}
+.countdown-stacked .countdown-days .countdown-value {
+ font-weight: 900;
+ display: table-cell;
+ vertical-align: middle;
+ font-size: 250%;
+ padding-right: 5px;
+ line-height: 100%;
+}
+.countdown-stacked .countdown-days .countdown-label {
+ display: table-cell;
+ vertical-align: middle;
+ padding-left: 5px;
+}
+.countdown-stacked .countdown-bottom {
+ display: table;
+ width:100%;
+ border-top:1px solid #e7e7e7;
+ padding-top: 10px;
+ margin-top: 10px;
+}
+.countdown-stacked .countdown-hours,
+.countdown-stacked .countdown-minutes,
+.countdown-stacked .countdown-seconds {
+ display: table-cell;
+ font-size: 150%;
+}
+.countdown-stacked .countdown-hours {
+ padding-right: 10px;
+}
+.countdown-stacked.countdown-days-hours-minutes .countdown-hours {
+ padding-right: 10px;
+}
+.countdown-stacked.countdown-days-hours-minutes .countdown-minutes {
+ padding-left: 10px;
+}
+.countdown-stacked.countdown-days-hours-minutes-seconds .countdown-minutes {
+ padding-left: 10px;
+ padding-right: 10px;
+}
+.countdown-stacked .countdown-seconds {
+ padding-left: 10px;
+}
+
+.countdown-stacked .countdown-hours span.countdown-value,
+.countdown-stacked .countdown-minutes span.countdown-value,
+.countdown-stacked .countdown-seconds span.countdown-value {
+ font-weight: 900;
+ display: block;
+ text-align: center;
+}
+.countdown-stacked .countdown-hours span.countdown-label,
+.countdown-stacked .countdown-minutes span.countdown-label,
+.countdown-stacked .countdown-seconds span.countdown-label {
+ display: block;
+ text-align: center;
+ font-size:11px;
+ text-transform: uppercase;
+ font-weight: 900;
+}
+.countdown-inline {
+ font-size: 150%;
+ line-height: 100%;
+}
+@media screen and (min-width: 640px) {
+ .countdown-inline {
+ font-size: 200%;
+ }
+}
+.countdown-inline .countdown-days,
+.countdown-inline .countdown-bottom,
+.countdown-inline .countdown-hours,
+.countdown-inline .countdown-minutes,
+.countdown-inline .countdown-seconds {
+ display: block;
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+@media screen and (min-width: 640px) {
+ .countdown-inline .countdown-days,
+ .countdown-inline .countdown-bottom,
+ .countdown-inline .countdown-hours,
+ .countdown-inline .countdown-minutes,
+ .countdown-inline .countdown-seconds {
+ display: inline-block;
+ padding-top: 0px;
+ padding-bottom: 0px;
+ }
+ .countdown-inline .countdown-hours,
+ .countdown-inline .countdown-minutes,
+ .countdown-inline .countdown-seconds {
+ margin-left: 10px;
+ }
+}
+
+.countdown-inline .countdown-days .countdown-value,
+.countdown-inline .countdown-hours .countdown-value,
+.countdown-inline .countdown-minutes .countdown-value,
+.countdown-inline .countdown-seconds .countdown-value {
+ font-weight: 900;
+}
+.countdown-inline .countdown-days .countdown-label,
+.countdown-inline .countdown-hours .countdown-label,
+.countdown-inline .countdown-minutes .countdown-label,
+.countdown-inline .countdown-seconds .countdown-label {
+ font-weight: 300;
+ padding-left: 5px;
+}
+
+.countdown-solid {
+ background-color:#000;
+ color:#fff;
+ padding:20px;
+}
+.countdown-solid .countdown-value {
+ color:#cfb87c;
+}
+.countdown-solid.countdown-stacked .countdown-bottom {
+ border-top:1px solid #444;
+}
+
+.countdown-left {
+ float: left;
+ margin: 0 20px 20px 0;
+}
+.countdown-right {
+ float: right;
+ margin: 0 0 20px 20px;
+}
+.countdown.countdown-inline.countdown-full,
+.countdown.countdown-stacked.countdown-full {
+ text-align: center;
+}
+.countdown.countdown-stacked.countdown-full .countdown-days,
+.countdown.countdown-stacked.countdown-full .countdown-bottom {
+ width:auto;
+ margin-left: auto;
+ margin-right: auto;
+}
diff --git a/modules/custom/cu_countdown_bundle/cu_countdown/cu_countdown.info b/modules/custom/cu_countdown_bundle/cu_countdown/cu_countdown.info
new file mode 100644
index 000000000..f49ecb38a
--- /dev/null
+++ b/modules/custom/cu_countdown_bundle/cu_countdown/cu_countdown.info
@@ -0,0 +1,6 @@
+name = CU Countdown
+description = Adds a shortcode for a countdown to a specific date
+core = 7.x
+package = cu_countdown_bundle
+version = 7.x-1.0
+dependencies[] = shortcode
diff --git a/modules/custom/cu_countdown_bundle/cu_countdown/cu_countdown.module b/modules/custom/cu_countdown_bundle/cu_countdown/cu_countdown.module
new file mode 100644
index 000000000..985f0aac9
--- /dev/null
+++ b/modules/custom/cu_countdown_bundle/cu_countdown/cu_countdown.module
@@ -0,0 +1,141 @@
+ t('Countdown'),
+ 'description' => t('A countdown to a specific date.'),
+ 'process callback' => 'cu_countdown_countdown',
+ 'tips callback' => 'cu_countdown_countdown_tips',
+ 'default settings' => array(),
+ );
+ return $shortcodes;
+}
+
+/**
+ * Countdown shortcode function.
+ */
+function cu_countdown_countdown($attrs, $content = NULL) {
+ extract(shortcode_attrs(array(
+ 'style' => 'stacked',
+ 'background' => 'transparent',
+ 'align' => 'none',
+ 'size' => 'regular',
+ ), $attrs));
+ // MM/DD/YYYY hh:mm:ss
+
+ // Accessible Markup
+ if (!$content) {
+ $accessible_content = 'Countdown until ' . date("F j, Y, g:i a");
+ $date = date('m/d/Y H:i:s');
+ } else {
+ $accessible_content = 'Countdown until ' . date("F j, Y, g:i a", strtotime($content));
+ $date = $content;
+ }
+ $output = '' . $accessible_content . '';
+
+ // Determine granularity
+ $parts = array();
+ $time_parts = array();
+ $parts = explode(' ', $date);
+ if (isset($parts[1])) {
+ $time_parts = explode(':', $parts[1]);
+ }
+
+ // Build granularity class
+ $granularity = array();
+ $granularity[] = 'countdown';
+ $granularity[] = isset($parts[0]) ? 'days' : NULL;
+ $granularity[] = isset($time_parts[0]) ? 'hours' : NULL;
+ $granularity[] = isset($time_parts[1]) ? 'minutes' : NULL;
+ $granularity[] = isset($time_parts[2]) ? 'seconds' : NULL;
+ $granularity = join('-', $granularity);
+
+ $countdown_id = mt_rand();
+ $classes = array();
+ $classes[] = 'countdown countdown-' . $style;
+ $classes[] = 'countdown-' . $background;
+ $classes[] = 'countdown-' . $align;
+ $classes[] = 'countdown-' . $size;
+ $classes[] = $granularity;
+ $classes = join(' ', $classes);
+ // Markup
+ $output .= '
+
+ days
+ ';
+ if (!empty($parts[1])) {
+ $output .='';
+
+ if (isset($time_parts[0])) {
+ $output .= '
+ hours
+ ';
+ }
+ if (isset($time_parts[1])) {
+ $output .= '
+ minutes
+ ';
+ }
+ if (isset($time_parts[2])) {
+ $output .= '
+ seconds
+ ';
+ }
+ $output .= '';
+ }
+
+ $output .= '';
+
+ // Correct time if no minutes/hours
+ if (isset($parts[1]) && isset($time_parts[0]) && !isset($time_parts[1])) {
+ $content .= ':00';
+ }
+
+ // Start script
+ $output .= '';
+ return $output;
+}
+
+/**
+ * Countdown shortcode tips.
+ */
+function cu_countdown_countdown_tips($format, $long) {
+ $output = '[countdown]MM/DD/YYYY hh:mm:ss[/countdown]';
+ return $output;
+}
+
+/**
+ * Implements hook_filter_info_alter().
+ */
+function cu_countdown_filter_info_alter(&$info) {
+ // Load the wysiwyg text format
+ $format = filter_format_load('wysiwyg');
+ // Get the filters on the wysiwyg text format
+ $filters = filter_list_format($format->format);
+ // Enable countdown shortcode
+ $filters['shortcode']->settings['countdown'] = 1;
+}
diff --git a/modules/custom/cu_countdown_bundle/cu_countdown/js/jquery.countdown.js b/modules/custom/cu_countdown_bundle/cu_countdown/js/jquery.countdown.js
new file mode 100755
index 000000000..8f7f663b1
--- /dev/null
+++ b/modules/custom/cu_countdown_bundle/cu_countdown/js/jquery.countdown.js
@@ -0,0 +1,235 @@
+/*!
+ * The Final Countdown for jQuery v2.1.0 (http://hilios.github.io/jQuery.countdown/)
+ * Copyright (c) 2015 Edson Hilios
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+(function(factory) {
+ "use strict";
+ if (typeof define === "function" && define.amd) {
+ define([ "jquery" ], factory);
+ } else {
+ factory(jQuery);
+ }
+})(function($) {
+ "use strict";
+ var instances = [], matchers = [], defaultOptions = {
+ precision: 100,
+ elapse: false
+ };
+ matchers.push(/^[0-9]*$/.source);
+ matchers.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);
+ matchers.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);
+ matchers = new RegExp(matchers.join("|"));
+ function parseDateString(dateString) {
+ if (dateString instanceof Date) {
+ return dateString;
+ }
+ if (String(dateString).match(matchers)) {
+ if (String(dateString).match(/^[0-9]*$/)) {
+ dateString = Number(dateString);
+ }
+ if (String(dateString).match(/\-/)) {
+ dateString = String(dateString).replace(/\-/g, "/");
+ }
+ return new Date(dateString);
+ } else {
+ throw new Error("Couldn't cast `" + dateString + "` to a date object.");
+ }
+ }
+ var DIRECTIVE_KEY_MAP = {
+ Y: "years",
+ m: "months",
+ n: "daysToMonth",
+ w: "weeks",
+ d: "daysToWeek",
+ D: "totalDays",
+ H: "hours",
+ M: "minutes",
+ S: "seconds"
+ };
+ function escapedRegExp(str) {
+ var sanitize = str.toString().replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
+ return new RegExp(sanitize);
+ }
+ function strftime(offsetObject) {
+ return function(format) {
+ var directives = format.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);
+ if (directives) {
+ for (var i = 0, len = directives.length; i < len; ++i) {
+ var directive = directives[i].match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/), regexp = escapedRegExp(directive[0]), modifier = directive[1] || "", plural = directive[3] || "", value = null;
+ directive = directive[2];
+ if (DIRECTIVE_KEY_MAP.hasOwnProperty(directive)) {
+ value = DIRECTIVE_KEY_MAP[directive];
+ value = Number(offsetObject[value]);
+ }
+ if (value !== null) {
+ if (modifier === "!") {
+ value = pluralize(plural, value);
+ }
+ if (modifier === "") {
+ if (value < 10) {
+ value = "0" + value.toString();
+ }
+ }
+ format = format.replace(regexp, value.toString());
+ }
+ }
+ }
+ format = format.replace(/%%/, "%");
+ return format;
+ };
+ }
+ function pluralize(format, count) {
+ var plural = "s", singular = "";
+ if (format) {
+ format = format.replace(/(:|;|\s)/gi, "").split(/\,/);
+ if (format.length === 1) {
+ plural = format[0];
+ } else {
+ singular = format[0];
+ plural = format[1];
+ }
+ }
+ if (Math.abs(count) === 1) {
+ return singular;
+ } else {
+ return plural;
+ }
+ }
+ var Countdown = function(el, finalDate, options) {
+ this.el = el;
+ this.$el = $(el);
+ this.interval = null;
+ this.offset = {};
+ this.options = $.extend({}, defaultOptions);
+ this.instanceNumber = instances.length;
+ instances.push(this);
+ this.$el.data("countdown-instance", this.instanceNumber);
+ if (options) {
+ if (typeof options === "function") {
+ this.$el.on("update.countdown", options);
+ this.$el.on("stoped.countdown", options);
+ this.$el.on("finish.countdown", options);
+ } else {
+ this.options = $.extend({}, defaultOptions, options);
+ }
+ }
+ this.setFinalDate(finalDate);
+ this.start();
+ };
+ $.extend(Countdown.prototype, {
+ start: function() {
+ if (this.interval !== null) {
+ clearInterval(this.interval);
+ }
+ var self = this;
+ this.update();
+ this.interval = setInterval(function() {
+ self.update.call(self);
+ }, this.options.precision);
+ },
+ stop: function() {
+ clearInterval(this.interval);
+ this.interval = null;
+ this.dispatchEvent("stoped");
+ },
+ toggle: function() {
+ if (this.interval) {
+ this.stop();
+ } else {
+ this.start();
+ }
+ },
+ pause: function() {
+ this.stop();
+ },
+ resume: function() {
+ this.start();
+ },
+ remove: function() {
+ this.stop.call(this);
+ instances[this.instanceNumber] = null;
+ delete this.$el.data().countdownInstance;
+ },
+ setFinalDate: function(value) {
+ this.finalDate = parseDateString(value);
+ },
+ update: function() {
+ if (this.$el.closest("html").length === 0) {
+ this.remove();
+ return;
+ }
+ var hasEventsAttached = $._data(this.el, "events") !== undefined, now = new Date(), newTotalSecsLeft;
+ newTotalSecsLeft = this.finalDate.getTime() - now.getTime();
+ newTotalSecsLeft = Math.ceil(newTotalSecsLeft / 1e3);
+ newTotalSecsLeft = !this.options.elapse && newTotalSecsLeft < 0 ? 0 : Math.abs(newTotalSecsLeft);
+ if (this.totalSecsLeft === newTotalSecsLeft || !hasEventsAttached) {
+ return;
+ } else {
+ this.totalSecsLeft = newTotalSecsLeft;
+ }
+ this.elapsed = now >= this.finalDate;
+ this.offset = {
+ seconds: this.totalSecsLeft % 60,
+ minutes: Math.floor(this.totalSecsLeft / 60) % 60,
+ hours: Math.floor(this.totalSecsLeft / 60 / 60) % 24,
+ days: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,
+ daysToWeek: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,
+ daysToMonth: Math.floor(this.totalSecsLeft / 60 / 60 / 24 % 30.4368),
+ totalDays: Math.floor(this.totalSecsLeft / 60 / 60 / 24),
+ weeks: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7),
+ months: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 30.4368),
+ years: Math.abs(this.finalDate.getFullYear() - now.getFullYear())
+ };
+ if (!this.options.elapse && this.totalSecsLeft === 0) {
+ this.stop();
+ this.dispatchEvent("finish");
+ } else {
+ this.dispatchEvent("update");
+ }
+ },
+ dispatchEvent: function(eventName) {
+ var event = $.Event(eventName + ".countdown");
+ event.finalDate = this.finalDate;
+ event.elapsed = this.elapsed;
+ event.offset = $.extend({}, this.offset);
+ event.strftime = strftime(this.offset);
+ this.$el.trigger(event);
+ }
+ });
+ $.fn.countdown = function() {
+ var argumentsArray = Array.prototype.slice.call(arguments, 0);
+ return this.each(function() {
+ var instanceNumber = $(this).data("countdown-instance");
+ if (instanceNumber !== undefined) {
+ var instance = instances[instanceNumber], method = argumentsArray[0];
+ if (Countdown.prototype.hasOwnProperty(method)) {
+ instance[method].apply(instance, argumentsArray.slice(1));
+ } else if (String(method).match(/^[$A-Z_][0-9A-Z_$]*$/i) === null) {
+ instance.setFinalDate.call(instance, method);
+ instance.start();
+ } else {
+ $.error("Method %s does not exist on jQuery.countdown".replace(/\%s/gi, method));
+ }
+ } else {
+ new Countdown(this, argumentsArray[0], argumentsArray[1]);
+ }
+ });
+ };
+});
\ No newline at end of file
diff --git a/modules/custom/cu_countdown_bundle/cu_countdown/js/jquery.countdown.min.js b/modules/custom/cu_countdown_bundle/cu_countdown/js/jquery.countdown.min.js
new file mode 100755
index 000000000..3d2c4bf45
--- /dev/null
+++ b/modules/custom/cu_countdown_bundle/cu_countdown/js/jquery.countdown.min.js
@@ -0,0 +1,22 @@
+/*!
+ * The Final Countdown for jQuery v2.1.0 (http://hilios.github.io/jQuery.countdown/)
+ * Copyright (c) 2015 Edson Hilios
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){"use strict";function b(a){if(a instanceof Date)return a;if(String(a).match(g))return String(a).match(/^[0-9]*$/)&&(a=Number(a)),String(a).match(/\-/)&&(a=String(a).replace(/\-/g,"/")),new Date(a);throw new Error("Couldn't cast `"+a+"` to a date object.")}function c(a){var b=a.toString().replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1");return new RegExp(b)}function d(a){return function(b){var d=b.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);if(d)for(var f=0,g=d.length;g>f;++f){var h=d[f].match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/),j=c(h[0]),k=h[1]||"",l=h[3]||"",m=null;h=h[2],i.hasOwnProperty(h)&&(m=i[h],m=Number(a[m])),null!==m&&("!"===k&&(m=e(l,m)),""===k&&10>m&&(m="0"+m.toString()),b=b.replace(j,m.toString()))}return b=b.replace(/%%/,"%")}}function e(a,b){var c="s",d="";return a&&(a=a.replace(/(:|;|\s)/gi,"").split(/\,/),1===a.length?c=a[0]:(d=a[0],c=a[1])),1===Math.abs(b)?d:c}var f=[],g=[],h={precision:100,elapse:!1};g.push(/^[0-9]*$/.source),g.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),g.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),g=new RegExp(g.join("|"));var i={Y:"years",m:"months",n:"daysToMonth",w:"weeks",d:"daysToWeek",D:"totalDays",H:"hours",M:"minutes",S:"seconds"},j=function(b,c,d){this.el=b,this.$el=a(b),this.interval=null,this.offset={},this.options=a.extend({},h),this.instanceNumber=f.length,f.push(this),this.$el.data("countdown-instance",this.instanceNumber),d&&("function"==typeof d?(this.$el.on("update.countdown",d),this.$el.on("stoped.countdown",d),this.$el.on("finish.countdown",d)):this.options=a.extend({},h,d)),this.setFinalDate(c),this.start()};a.extend(j.prototype,{start:function(){null!==this.interval&&clearInterval(this.interval);var a=this;this.update(),this.interval=setInterval(function(){a.update.call(a)},this.options.precision)},stop:function(){clearInterval(this.interval),this.interval=null,this.dispatchEvent("stoped")},toggle:function(){this.interval?this.stop():this.start()},pause:function(){this.stop()},resume:function(){this.start()},remove:function(){this.stop.call(this),f[this.instanceNumber]=null,delete this.$el.data().countdownInstance},setFinalDate:function(a){this.finalDate=b(a)},update:function(){if(0===this.$el.closest("html").length)return void this.remove();var b,c=void 0!==a._data(this.el,"events"),d=new Date;b=this.finalDate.getTime()-d.getTime(),b=Math.ceil(b/1e3),b=!this.options.elapse&&0>b?0:Math.abs(b),this.totalSecsLeft!==b&&c&&(this.totalSecsLeft=b,this.elapsed=d>=this.finalDate,this.offset={seconds:this.totalSecsLeft%60,minutes:Math.floor(this.totalSecsLeft/60)%60,hours:Math.floor(this.totalSecsLeft/60/60)%24,days:Math.floor(this.totalSecsLeft/60/60/24)%7,daysToWeek:Math.floor(this.totalSecsLeft/60/60/24)%7,daysToMonth:Math.floor(this.totalSecsLeft/60/60/24%30.4368),totalDays:Math.floor(this.totalSecsLeft/60/60/24),weeks:Math.floor(this.totalSecsLeft/60/60/24/7),months:Math.floor(this.totalSecsLeft/60/60/24/30.4368),years:Math.abs(this.finalDate.getFullYear()-d.getFullYear())},this.options.elapse||0!==this.totalSecsLeft?this.dispatchEvent("update"):(this.stop(),this.dispatchEvent("finish")))},dispatchEvent:function(b){var c=a.Event(b+".countdown");c.finalDate=this.finalDate,c.elapsed=this.elapsed,c.offset=a.extend({},this.offset),c.strftime=d(this.offset),this.$el.trigger(c)}}),a.fn.countdown=function(){var b=Array.prototype.slice.call(arguments,0);return this.each(function(){var c=a(this).data("countdown-instance");if(void 0!==c){var d=f[c],e=b[0];j.prototype.hasOwnProperty(e)?d[e].apply(d,b.slice(1)):null===String(e).match(/^[$A-Z_][0-9A-Z_$]*$/i)?(d.setFinalDate.call(d,e),d.start()):a.error("Method %s does not exist on jQuery.countdown".replace(/\%s/gi,e))}else new j(this,b[0],b[1])})}});
\ No newline at end of file
diff --git a/modules/custom/cu_countdown_bundle/cu_countdown_bundle.info b/modules/custom/cu_countdown_bundle/cu_countdown_bundle.info
new file mode 100644
index 000000000..adf9ac7e2
--- /dev/null
+++ b/modules/custom/cu_countdown_bundle/cu_countdown_bundle.info
@@ -0,0 +1,12 @@
+name = CU Countdown Bundle
+core = 7.x
+package = cu_countdown_bundle
+version = 7.x-1.1
+description = Provides a shortcode to countdown to a specified date and time.
+project = cu_countdown_bundle
+project status url = https://github.com/CuBoulder/cu_countdown_bundle
+
+dependencies[] = cu_countdown
+dependencies[] = shortcode
+
+bundle_roles[] = developer
diff --git a/modules/custom/cu_countdown_bundle/cu_countdown_bundle.module b/modules/custom/cu_countdown_bundle/cu_countdown_bundle.module
new file mode 100644
index 000000000..b3d9bbc7f
--- /dev/null
+++ b/modules/custom/cu_countdown_bundle/cu_countdown_bundle.module
@@ -0,0 +1 @@
+status = FILE_STATUS_PERMANENT;
+ file_save($white_file);
+ }
+ if ($black_logo = variable_get('custom_black_logo', NULL)) {
+ $black_file = file_load($black_logo);
+ $black_file->status = FILE_STATUS_PERMANENT;
+ file_save($black_file);
+ }
+}
+
+/**
+ * Delete old logos.
+ */
+function cu_custom_logo_update_7002() {
+ // Check to see if there are active custom logos.
+ $logos = array();
+ if (variable_get('custom_white_logo', NULL)) {
+ $logos[] = variable_get('custom_white_logo', NULL);
+ }
+
+ if (variable_get('custom_black_logo', NULL)) {
+ $logos[] = variable_get('custom_black_logo', NULL);
+ }
+ // Query for custom logo files that are not active.
+ $query = db_select('file_usage', 'fu');
+ $query->fields('fu', array('fid', 'module'));
+ $query->condition('fu.module', 'cu_custom_logo', '=');
+ $query->condition('fu.fid', $logos, 'NOT IN');
+ $results = $query->execute()->fetchCol();
+ // Delete inactive custom logo files.
+ if (!empty($results)) {
+ foreach ($results as $fid) {
+ $file = file_load($fid);
+ file_delete($file, TRUE);
+ watchdog('cu_custom_logo', 'Deleting inactive custom logos - file %fid', array('%fid' => $fid), WATCHDOG_NOTICE);
+ }
+ }
+}
diff --git a/modules/custom/cu_custom_logo_bundle/modules/custom/cu_custom_logo/cu_custom_logo.module b/modules/custom/cu_custom_logo_bundle/modules/custom/cu_custom_logo/cu_custom_logo.module
new file mode 100644
index 000000000..43fe5f098
--- /dev/null
+++ b/modules/custom/cu_custom_logo_bundle/modules/custom/cu_custom_logo/cu_custom_logo.module
@@ -0,0 +1,175 @@
+ 'Custom Logo',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('cu_custom_logo_upload_form'),
+ 'access arguments' => array('administer themes'),
+ 'weight' => 8,
+ 'description' => 'Upload custom logos.',
+ );
+ return $items;
+}
+
+function cu_custom_logo_upload_form($form, &$form_state) {
+ $form['custom_white_logo'] = array(
+ '#type' => 'managed_file',
+ '#name' => 'custom_white_logo',
+ '#title' => t('White logo'),
+ '#size' => 40,
+ '#description' => t('Image should be a transparent png which will be displayed on a dark background. Width should be fewer than 440 pixels. (This field will be removed in a future update).'),
+ '#upload_location' => 'public://custom_logo/',
+ '#default_value' => variable_get('custom_white_logo', ''),
+ );
+
+ $form['custom_black_logo'] = array(
+ '#type' => 'managed_file',
+ '#name' => 'custom_black_logo',
+ '#title' => t('Black logo'),
+ '#size' => 40,
+ '#description' => t('Image should be a transparent png which will be displayed on a light background. Width should be fewer than 440 pixels. (This field will be removed in a future update).'),
+ '#upload_location' => 'public://custom_logo/',
+ '#default_value' => variable_get('custom_black_logo', ''),
+ );
+
+ $form['cu_custom_white_logo'] = array(
+ '#type' => 'managed_file',
+ '#name' => 'custom_white_logo',
+ '#title' => t('White logo'),
+ '#size' => 40,
+ '#description' => t('Image should be a transparent png which will be displayed on a dark background. Width should be fewer than 440 pixels.'),
+ '#upload_location' => 'public://custom_logo/',
+ '#default_value' => variable_get('cu_custom_white_logo', ''),
+ );
+
+ $form['cu_custom_black_logo'] = array(
+ '#type' => 'managed_file',
+ '#name' => 'custom_black_logo',
+ '#title' => t('Black logo'),
+ '#size' => 40,
+ '#description' => t('Image should be a transparent png which will be displayed on a light background. Width should be fewer than 440 pixels.'),
+ '#upload_location' => 'public://custom_logo/',
+ '#default_value' => variable_get('cu_custom_black_logo', ''),
+ );
+
+ $form['custom_logo_retina'] = array(
+ '#type' => 'checkbox',
+ '#name' => 'custom_logo_retina',
+ '#title' => 'Retina Images',
+ '#description' => 'Display as retina images.',
+ '#default_value' => variable_get('custom_logo_retina', 0),
+ );
+ //$form = system_settings_form($form);
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => t('Submit'),
+ );
+ $form['#submit'][] = 'cu_custom_logo_upload_form_submit';
+ return $form;
+}
+
+function cu_custom_logo_upload_form_submit($form, &$form_state) {
+ // Original Logo Fields
+ // White logo remove.
+ if ($form_state['values']['custom_white_logo'] == 0 || $form_state['values']['custom_white_logo'] == 'remove') {
+ $white_file = variable_get('custom_white_logo', FALSE);
+ if ($white_file) {
+ $white_file = file_load($white_file);
+ file_delete($white_file, TRUE);
+ variable_del('custom_white_logo');
+ }
+ }
+ // White logo upload.
+ elseif (isset($form_state['values']['custom_white_logo'])) {
+ $white_file = file_load($form_state['values']['custom_white_logo']);
+ $white_file->status = FILE_STATUS_PERMANENT;
+ file_save($white_file);
+ file_usage_add($white_file, 'cu_custom_logo', 'white_logo', 1, 1);
+ variable_set('custom_white_logo', $form_state['values']['custom_white_logo']);
+ }
+
+ // Black logo remove.
+ if ($form_state['values']['custom_black_logo'] == 0 || $form_state['values']['custom_black_logo'] == 'remove') {
+ $black_file = variable_get('custom_black_logo', FALSE);
+ if ($black_file) {
+ $black_file = file_load($black_file);
+ file_delete($black_file, TRUE);
+ variable_del('custom_black_logo');
+ }
+ }
+ // Black logo upload.
+ elseif (isset($form_state['values']['custom_black_logo'])) {
+ $black_file = file_load($form_state['values']['custom_black_logo']);
+ $black_file->status = FILE_STATUS_PERMANENT;
+ file_save($black_file);
+ file_usage_add($black_file, 'cu_custom_logo', 'black_logo', 1, 1);
+ variable_set('custom_black_logo', $form_state['values']['custom_black_logo']);
+ }
+
+
+ // New 2019 Logo Fields
+ // White logo remove.
+ if ($form_state['values']['cu_custom_white_logo'] == 0 || $form_state['values']['cu_custom_white_logo'] == 'remove') {
+ $white_file = variable_get('cu_custom_white_logo', FALSE);
+ if ($white_file) {
+ $white_file = file_load($white_file);
+ file_delete($white_file, TRUE);
+ variable_del('cu_custom_white_logo');
+ }
+ }
+ // White logo upload.
+ elseif (isset($form_state['values']['cu_custom_white_logo'])) {
+ $white_file = file_load($form_state['values']['cu_custom_white_logo']);
+ $white_file->status = FILE_STATUS_PERMANENT;
+ file_save($white_file);
+ file_usage_add($white_file, 'cu_custom_logo', 'cu_custom_white_logo', 1, 1);
+ variable_set('cu_custom_white_logo', $form_state['values']['cu_custom_white_logo']);
+ }
+
+ // Black logo remove.
+ if ($form_state['values']['cu_custom_black_logo'] == 0 || $form_state['values']['cu_custom_black_logo'] == 'remove') {
+ $black_file = variable_get('cu_custom_black_logo', FALSE);
+ if ($black_file) {
+ $black_file = file_load($black_file);
+ file_delete($black_file, TRUE);
+ variable_del('cu_custom_black_logo');
+ }
+ }
+ // Black logo upload.
+ elseif (isset($form_state['values']['cu_custom_black_logo'])) {
+ $black_file = file_load($form_state['values']['cu_custom_black_logo']);
+ $black_file->status = FILE_STATUS_PERMANENT;
+ file_save($black_file);
+ file_usage_add($black_file, 'cu_custom_logo', 'cu_custom_black_logo', 1, 1);
+ variable_set('cu_custom_black_logo', $form_state['values']['cu_custom_black_logo']);
+ }
+
+
+ variable_set('custom_logo_retina', $form_state['values']['custom_logo_retina']);
+}
+
+function cu_custom_logo_page_alter(&$page) {
+ // Get retina settings
+ $retina = variable_get('custom_logo_retina', 0);
+ // Load logo file to get dimensions
+ if ($retina) {
+ if ($file = variable_get('custom_white_logo', NULL)) {
+ $file = variable_get('custom_white_logo', NULL);
+ $custom_logo = file_load($file);
+ $logo_info = image_get_info($custom_logo->uri);
+ $logo_width = $retina ? $logo_info['width']/2 : $logo_info['width'];
+ drupal_add_css('img.custom-logo {max-width:' . $logo_width . 'px !important; width:100%; margin-right:20px;}', array('type' => 'inline'));
+ }
+ }
+ // New logos should all be retina ready.
+ if ($file = variable_get('cu_custom_white_logo', NULL)) {
+ $custom_logo = file_load($file);
+ $logo_info = image_get_info($custom_logo->uri);
+ $logo_width = $logo_info['width']/2;
+ drupal_add_css('img.cu-custom-logo {max-width:' . $logo_width . 'px !important; width:100%; margin-right:20px;}', array('type' => 'inline'));
+ }
+}
diff --git a/modules/custom/cu_custom_logo_bundle/tests/behat/features/cu_custom_logo.access.feature b/modules/custom/cu_custom_logo_bundle/tests/behat/features/cu_custom_logo.access.feature
new file mode 100644
index 000000000..271c1fdbe
--- /dev/null
+++ b/modules/custom/cu_custom_logo_bundle/tests/behat/features/cu_custom_logo.access.feature
@@ -0,0 +1,24 @@
+@cu_custom_logo
+Feature: Add Custom Logo
+
+ When I login to a Web Express website
+ As an authenticated user with the right permission
+ I should be able to add a custom logo
+
+ Scenario Outline: An authenticated user should be able to access the form for adding a custom logo
+ Given I am logged in as a user with the role
+ When I go to "admin/config/user-interface/custom-logo"
+ Then I should see
+
+ Examples:
+ | role | message |
+ | edit_my_content | "Access Denied" |
+ | edit_only | "Access Denied" |
+ | content_editor | "Access Denied" |
+ | site_owner | "Access Denied" |
+ | administrator | "Access Denied" |
+ | developer | "Custom Logo" |
+
+ Scenario: An anonymous user should not be able to access the form for adding a custom logo
+ When I am on "admin/config/user-interface/custom-logo"
+ Then I should see "Access denied"
\ No newline at end of file
diff --git a/modules/custom/cu_livechat_bundle/cu_livechat_bundle.context.inc b/modules/custom/cu_livechat_bundle/cu_livechat_bundle.context.inc
new file mode 100644
index 000000000..1af178d69
--- /dev/null
+++ b/modules/custom/cu_livechat_bundle/cu_livechat_bundle.context.inc
@@ -0,0 +1,46 @@
+disabled = FALSE; /* Edit this to true to make a default context disabled initially */
+ $context->api_version = 3;
+ $context->name = 'livechat';
+ $context->description = 'Decide which pages LiveChat should appear on.';
+ $context->tag = 'LiveChat';
+ $context->conditions = array(
+ 'path' => array(
+ 'values' => array(
+ '*' => '*',
+ '~admin' => '~admin',
+ '~admin/*' => '~admin/*',
+ '~/user' => '~/user',
+ '~/user/*' => '~/user/*',
+ '~node/*/edit' => '~node/*/edit',
+ '~block/*/edit' => '~block/*/edit',
+ '~taxonomy/term/*/edit' => '~taxonomy/term/*/edit',
+ '~node/*/delete' => '~node/*/delete',
+ '~block/*/delete' => '~block/*/delete',
+ '~taxonomy/term/*/delete' => '~taxonomy/term/*/delete',
+ '~node/*/webform*' => '~node/*/webform*',
+ '~node/*/webform-results' => '~node/*/webform-results',
+ '~media/browser' => '~media/browser',
+ '~node/*/blocks' => '~node/*/blocks',
+ ),
+ ),
+ );
+ $context->reactions = array(
+ 'livechat' => array(
+ 'livechat' => 1,
+ ),
+ );
+ $context->condition_mode = 0;
+// Translatables
+// Included for use with string extractors like potx.
+ t('Decide which pages LiveChat should appear on');
+ $export['livechat'] = $context;
+ return $export;
+}
diff --git a/modules/custom/cu_livechat_bundle/cu_livechat_bundle.info b/modules/custom/cu_livechat_bundle/cu_livechat_bundle.info
new file mode 100644
index 000000000..dd95b79bf
--- /dev/null
+++ b/modules/custom/cu_livechat_bundle/cu_livechat_bundle.info
@@ -0,0 +1,21 @@
+name = CU Live Chat
+description = LiveChat is a paid real-time chat solution from LiveChat Inc. The department or academic unit will need to purchase a license in order to use this service.
+core = 7.x
+version = 7.x-1.2
+package = CU-LiveChat
+project = cu_livechat_bundle
+project status url = https://github.com/CuBoulder/cu_livechat_bundle
+project_demo_url = http://www.colorado.edu/webcentral/node/1532
+
+files[] = cu_livechat_bundle.context.inc
+
+bundle_cache_clear = 1
+bundle_context_clear = 1
+bundle_request = 1
+
+bundle_roles[] = developer
+bundle_roles[] = administrator
+bundle_roles[] = site_owner
+bundle_roles[] = configuration_manager
+
+bundle_group = request_bundles
diff --git a/modules/custom/cu_livechat_bundle/cu_livechat_bundle.module b/modules/custom/cu_livechat_bundle/cu_livechat_bundle.module
new file mode 100644
index 000000000..3886dc338
--- /dev/null
+++ b/modules/custom/cu_livechat_bundle/cu_livechat_bundle.module
@@ -0,0 +1,151 @@
+ 'LiveChat',
+ 'description' => 'Menu Options Related to LiveChat',
+ 'position' => 'right',
+ 'page callback' => 'system_admin_menu_block_page',
+ 'access arguments' => array('administer express settings'),
+ 'file' => 'system.admin.inc',
+ 'file path' => drupal_get_path('module', 'system'),
+ 'weight' => 1,
+ );
+ $items['admin/settings/livechat/configuration'] = array(
+ 'title' => 'Livechat',
+ 'description' => 'Configure the license for your Livechat license',
+ 'type' => MENU_NORMAL_ITEM,
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('cu_livechat_bundle_admin_form'),
+ 'access arguments' => array('administer express settings'),
+ 'weight' => -50,
+ );
+
+ return $items;
+ }
+
+/**
+ * Preprocess html.
+ */
+function cu_livechat_bundle_preprocess_html(&$vars) {
+ if ($plugin = context_get_plugin('reaction', 'livechat')) {
+ $livechat = $plugin->execute($vars);
+ if ($livechat && ($livechat_license = variable_get('livechat_license_number', NULL))) {
+ $livechat = "var __lc = {}; __lc.license = " . $livechat_license . ";
+ (function() {
+ var lc = document.createElement('script'); lc.type = 'text/javascript'; lc.async = true;
+ lc.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'cdn.livechatinc.com/tracking.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(lc, s);
+ })();";
+
+ if (!path_is_admin(current_path())) {
+ drupal_add_js($livechat, 'inline');
+ }
+
+ // Keep livechat from displaying when printing.
+ drupal_add_css(
+ '#livechat-compact-container { display: none !important;}',
+ array(
+ 'group' => CSS_THEME,
+ 'type' => 'inline',
+ 'media' => 'print',
+ 'preprocess' => FALSE,
+ 'weight' => '9999',
+ )
+ );
+ }
+ }
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ * LiveChat config onto Settings form.
+ */
+function cu_livechat_bundle_admin_form() {
+ $form = array();
+
+ $form['livechat'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Live Chat'),
+ '#description' => 'A paid real-time chat solution from LiveChat (http://www.livechatinc.com/). The department or academic unit will need to purchase a license in order to use this service. A free trial is available.',
+ );
+ $form['livechat']['livechat_license_number'] = array(
+ '#type' => 'textfield',
+ '#default_value' => variable_get('livechat_license_number', NULL),
+ '#required' => FALSE,
+ '#title' => 'LiveChatINC.com license number',
+ '#description' => 'Example: 1234567',
+ );
+
+ $form = system_settings_form($form);
+ $form['#validate'][] = '_cu_livechat_bundle_config_form_validate';
+
+ return $form;
+}
+
+/**
+ * Validation handler for _cu_livechat_config_form.
+ */
+function _cu_livechat_bundle_config_form_validate($form, &$form_state) {
+ if (!is_numeric($form_state['values']['livechat_license_number']) || empty($form_state['values']['livechat_license_number'])) {
+ $error = t('The livechat license number must only contain numbers.');
+ form_set_error('livechat_license_number', $error);
+ }
+}
+
+/**
+ * Implements hook_ctools_plugin_api().
+ *
+ * Notify CTools that we'll be using the plugin API with Context module.
+ */
+function cu_livechat_bundle_ctools_plugin_api($module, $api) {
+ if ($module == 'context' && ($api == 'plugins' || $api == 'context')) {
+ return array('version' => 3);
+ }
+}
+
+/**
+ * Implements hook_context_plugins().
+ *
+ * CTools plugin API hook for Context.
+ *
+ * @return array
+ * Config details for each reaction.
+ *
+ * @see hook_context_plugins()
+ */
+function cu_livechat_bundle_context_plugins() {
+ $plugins = array();
+
+ $plugins['context_reaction_livechat'] = array(
+ 'handler' => array(
+ 'path' => drupal_get_path('module', 'cu_livechat_bundle') . '/plugins',
+ 'file' => 'cu_livechat_bundle.inc',
+ 'class' => 'context_reaction_livechat',
+ 'parent' => 'context_reaction',
+ ),
+ );
+
+ return $plugins;
+}
+
+/**
+ * Implements hook_context_registry().
+ *
+ * Registry hook for conditions & reactions.
+ *
+ * @see hook_context_registry()
+ */
+function cu_livechat_bundle_context_registry() {
+ return array(
+ 'reactions' => array(
+ 'livechat' => array(
+ 'title' => t('LiveChat'),
+ 'plugin' => 'context_reaction_livechat',
+ ),
+ ),
+ );
+}
diff --git a/modules/custom/cu_livechat_bundle/plugins/cu_livechat_bundle.inc b/modules/custom/cu_livechat_bundle/plugins/cu_livechat_bundle.inc
new file mode 100644
index 000000000..f97bf577e
--- /dev/null
+++ b/modules/custom/cu_livechat_bundle/plugins/cu_livechat_bundle.inc
@@ -0,0 +1,30 @@
+fetch_from_context($context);
+ $default = isset($values['livechat']) ? $values['livechat'] : 0;
+
+ $form = array();
+
+ $form['livechat'] = array(
+ '#type' => 'checkbox',
+ '#title' => t('Enable LiveChat'),
+ '#default_value' => $default,
+ );
+
+ return $form;
+ }
+
+ function execute(&$page) {
+ foreach ($this->get_contexts() as $k => $v) {
+ if (isset($v->reactions[$this->plugin]['livechat'])) {
+ return TRUE;
+ }
+ }
+ }
+}
diff --git a/modules/custom/cu_livestream_bundle/cu_livestream_bundle.info b/modules/custom/cu_livestream_bundle/cu_livestream_bundle.info
new file mode 100644
index 000000000..d8678fb2b
--- /dev/null
+++ b/modules/custom/cu_livestream_bundle/cu_livestream_bundle.info
@@ -0,0 +1,16 @@
+name = Livestream Bundle
+description = Livestream is a live broadcasting service to enable organizations to share experiences through live video. This bundle requires a subscription to the Livestream service.
+core = 7.x
+version = 7.x-1.1
+project = cu_livestream_bundle
+project status url = https://github.com/CuBoulder/cu_livestream_bundle
+project_demo_url = http://www.colorado.edu/webcentral/node/1546
+
+dependencies[] = cu_livestream_embed
+bundle_request = 1
+bundle_group = 'request_bundles'
+
+bundle_roles[] = developer
+bundle_roles[] = administrator
+bundle_roles[] = site_owner
+bundle_roles[] = configuration_manager
diff --git a/modules/custom/cu_livestream_bundle/cu_livestream_bundle.module b/modules/custom/cu_livestream_bundle/cu_livestream_bundle.module
new file mode 100644
index 000000000..b3d9bbc7f
--- /dev/null
+++ b/modules/custom/cu_livestream_bundle/cu_livestream_bundle.module
@@ -0,0 +1 @@
+ t('livestream Embed'),
+ 'description' => t('Embed content from livestream.com'),
+ 'process callback' => 'cu_livestream_embed_livestream_embed',
+ 'tips callback' => 'cu_livestream_embed_livestream_tips',
+ 'default settings' => array(),
+ );
+ return $shortcodes;
+}
+/*
+ * Process callback for cu_livestream_embed_shortcode_info
+ */
+function cu_livestream_embed_livestream_embed($attrs, $content = NULL) {
+ extract(shortcode_attrs(array(
+ 'id' => '',
+ 'account' => '',
+ 'event' => '',
+ ), $attrs));
+ $output = '
+';
+ return $output;
+}
+/*
+ * Tips callback for cu_livestream_embed_shortcode_info
+ */
+function cu_livestream_embed_livestream_tips($format, $long) {
+ $output = '[livestream id="Embed code ID" account="Embed code Account" event="Embed code Event" /]';
+ return $output;
+}
+
+/**
+ * Implements hook_filter_info_alter().
+ */
+function cu_livestream_embed_filter_info_alter(&$info) {
+ // Load the wysiwyg text format
+ $format = filter_format_load('wysiwyg');
+ // Get the filters on the wysiwyg text format
+ $filters = filter_list_format($format->format);
+ // Enable livestream shortcode
+ $filters['shortcode']->settings['livestream'] = 1;
+}
diff --git a/modules/custom/cu_livestream_bundle/tests/behat/features/cu_livestream_bundle.creation.feature b/modules/custom/cu_livestream_bundle/tests/behat/features/cu_livestream_bundle.creation.feature
new file mode 100644
index 000000000..766314a68
--- /dev/null
+++ b/modules/custom/cu_livestream_bundle/tests/behat/features/cu_livestream_bundle.creation.feature
@@ -0,0 +1,17 @@
+@cu_livestream_bundle
+Feature: Embed Livestream
+In order to stream my video content
+As an authenticated user
+I should be able embed the Livestream shortcode
+
+# Create basic page and paste in College of Music shortcode
+# When the bundle is not working the shortcode text is displayed "livestream id="
+
+Scenario: Functionality - Livestream embed code displays video
+Given I am logged in as a user with the "site_owner" role
+And I am on "node/add/page"
+And fill in "edit-title" with "My LS Video"
+And fill in "Body" with "[livestream id=\"ls_embed_1524756180\" account=\"5802933\" event=\"7976259\" /]"
+And I press "edit-submit"
+Then I should see "My LS Video"
+And I should not see "livestream id="
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/assetts/social-icons.psd b/modules/custom/cu_newsletter_bundle/cu_newsletter/assetts/social-icons.psd
new file mode 100644
index 000000000..349dc1f44
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/assetts/social-icons.psd differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/config.rb b/modules/custom/cu_newsletter_bundle/cu_newsletter/config.rb
new file mode 100644
index 000000000..655458ed5
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/config.rb
@@ -0,0 +1,14 @@
+# Require any additional compass plugins here.
+
+# Set this to the root of your project when deployed:
+css_dir = "css"
+sass_dir = "scss"
+
+output_style = :compact
+
+relative_assets = true
+
+line_comments = false
+color_output = false
+
+cache = false
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/css/cu-newsletter.css b/modules/custom/cu_newsletter_bundle/cu_newsletter/css/cu-newsletter.css
new file mode 100644
index 000000000..6c255523d
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/css/cu-newsletter.css
@@ -0,0 +1,53 @@
+.newsletter-intro { border-bottom: 1px solid #e7e7e7; padding-bottom: 20px; margin-bottom: 20px; }
+
+.newsletter-hero img { max-width: 100%; height: auto; margin-bottom: 20px; }
+
+.newsletter-intro p:last-child { margin-bottom: 0; }
+
+.node-view-mode-email-feature, .node-view-mode-email-teaser { padding-bottom: 20px; margin-bottom: 20px; }
+
+.node-view-mode-email-teaser img { float: right; margin: 0 0 10px 10px; width: 80px; height: auto; }
+.node-view-mode-email-teaser h3 { font-size: 110%; }
+
+img.image-email_feature_thumbnail, img.image-email_feature_thumbnail_large { margin: 0 0 10px 0; display: block; width: 100%; height: auto; max-width: 100%; }
+
+img.image-email_teaser_thumbnail1 { float: left; margin: 0 10px 10px 0; width: 80px; height: auto; }
+
+@media (min-width: 480px) { img.image-email_teaser_thumbnail { width: 120px; height: auto; } }
+.node-view-mode-email-feature-content .article-tags a, .node-view-mode-email-teaser-content .article-tags a { background-color: #e7e7e7; color: #656565; padding: 4px; margin: 0 5px 5px 0; font-size: 10px; font-weight: bold; text-transform: uppercase; }
+
+p.field-name-field-newsletter-more-link { font-weight: 600; margin-bottom: 40px; }
+p.field-name-field-newsletter-more-link a:before { font-family: "FontAwesome"; content: "\f061"; padding-right: 8px; }
+
+.newsletter-text-block h2.field-name-field-newsletter-block-title { font-size: 130%; }
+.newsletter-text-block .field-name-field-newsletter-block-body h2 { font-size: 130%; }
+.newsletter-text-block .field-name-field-newsletter-block-body h3 { font-size: 120%; }
+.newsletter-text-block .field-name-field-newsletter-block-body h4 { font-size: 110%; }
+.newsletter-text-block .field-name-field-newsletter-block-body h5 { font-size: 105%; }
+.newsletter-text-block .field-name-field-newsletter-block-body h6 { font-size: 100%; }
+
+.newsletter-text-block { margin: 0 0 20px 0; }
+
+.newsletter-ad-promo { margin-bottom: 0; }
+
+.newsletter-ad-promo img { width: 100%; height: auto; }
+
+.newsletter-ad-promo-wrapper { margin-bottom: 20px; }
+
+.newsletter-ad-promo img { display: block; margin-bottom: 20px; }
+
+.newsletter-view-mode-teaser h2.node-title-only, .newsletter-view-mode-teaser h3.node-title-only { margin: 0; }
+.newsletter-view-mode-teaser img { width: 100%; height: auto; }
+
+/* Admin Tabs */
+ul.primary li a.email-version:before { content: "\f0e0"; }
+
+ul.tabs--primary li a.email-version:before { content: "\f0e0"; }
+
+/* Custom content */
+.view-mode-custom-content-content h2, .view-mode-custom-content-content h3 { font-size: 110%; }
+.view-mode-custom-content-content h4 { font-size: 106%; }
+.view-mode-custom-content-content h5 { font-size: 104%; }
+.view-mode-custom-content-content h6 { font-size: 100%; }
+
+.newsletter-section-wrapper .col-lg-6:nth-child(2n+1), .newsletter-section-wrapper .col-md-6:nth-child(2n+1), .newsletter-section-wrapper .col-sm-6:nth-child(2n+1), .newsletter-text-blocks .col-lg-6:nth-child(2n+1), .newsletter-text-blocks .col-md-6:nth-child(2n+1), .newsletter-text-blocks .col-sm-6:nth-child(2n+1) { clear: left; }
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/CHANGELOG.md b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/CHANGELOG.md
new file mode 100755
index 000000000..f4985b361
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/CHANGELOG.md
@@ -0,0 +1,42 @@
+# Changelog since 1.2.0
+
+* introduced a flag to remove media queries before inlining. thx to [Stof](https://github.com/stof).
+
+# Changelog since 1.1.0
+
+* require php 5.3
+
+# Changelog since 1.0.6
+
+* made the class compliant with PSR2.
+
+# Changelog since 1.0.5
+
+* made the class available through composer
+
+# Changelog since 1.0.4
+
+* beter handling of XHTML output, thx to Michele Locati.
+* preserve original styles.
+
+# Changelog since 1.0.3
+
+* fixed some code-styling issues
+* added support for multiple values
+
+# Changelog since 1.0.2
+
+* .class are matched from now on.
+* fixed issue with #id
+* new beta-feature: added a way to output valid XHTML (thx to Matt Hornsby)
+* added setEncoding() to indicate the encoding
+
+# Changelog since 1.0.1
+
+* fixed some stuff on specifity
+
+# Changelog since 1.0.0
+
+* rewrote the buildXPathQuery-method
+* fixed some stuff on specifity
+* added a way to use inline style-blocks
\ No newline at end of file
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/CssToInlineStyles.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/CssToInlineStyles.php
new file mode 100755
index 000000000..21cfe7fe0
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/CssToInlineStyles.php
@@ -0,0 +1,722 @@
+
+ * @version 1.2.1
+ * @copyright Copyright (c), Tijs Verkoyen. All rights reserved.
+ * @license BSD License
+ */
+class CssToInlineStyles
+{
+ /**
+ * The CSS to use
+ *
+ * @var string
+ */
+ private $css;
+
+ /**
+ * The processed CSS rules
+ *
+ * @var array
+ */
+ private $cssRules;
+
+ /**
+ * Should the generated HTML be cleaned
+ *
+ * @var bool
+ */
+ private $cleanup = false;
+
+ /**
+ * The encoding to use.
+ *
+ * @var string
+ */
+ private $encoding = 'UTF-8';
+
+ /**
+ * The HTML to process
+ *
+ * @var string
+ */
+ private $html;
+
+ /**
+ * Use inline-styles block as CSS
+ *
+ * @var bool
+ */
+ private $useInlineStylesBlock = false;
+
+ /**
+ * Strip original style tags
+ *
+ * @var bool
+ */
+ private $stripOriginalStyleTags = false;
+
+ /**
+ * Exclude the media queries from the inlined styles
+ *
+ * @var bool
+ */
+ private $excludeMediaQueries = false;
+
+ /**
+ * Creates an instance, you could set the HTML and CSS here, or load it
+ * later.
+ *
+ * @return void
+ * @param string[optional] $html The HTML to process.
+ * @param string[optional] $css The CSS to use.
+ */
+ public function __construct($html = null, $css = null)
+ {
+ if($html !== null) $this->setHTML($html);
+ if($css !== null) $this->setCSS($css);
+ }
+
+ /**
+ * Convert a CSS-selector into an xPath-query
+ *
+ * @return string
+ * @param string $selector The CSS-selector.
+ */
+ private function buildXPathQuery($selector)
+ {
+ // redefine
+ $selector = (string) $selector;
+
+ // the CSS selector
+ $cssSelector = array(
+ // E F, Matches any F element that is a descendant of an E element
+ '/(\w)\s+([\w\*])/',
+ // E > F, Matches any F element that is a child of an element E
+ '/(\w)\s*>\s*([\w\*])/',
+ // E:first-child, Matches element E when E is the first child of its parent
+ '/(\w):first-child/',
+ // E + F, Matches any F element immediately preceded by an element
+ '/(\w)\s*\+\s*(\w)/',
+ // E[foo], Matches any E element with the "foo" attribute set (whatever the value)
+ '/(\w)\[([\w\-]+)]/',
+ // E[foo="warning"], Matches any E element whose "foo" attribute value is exactly equal to "warning"
+ '/(\w)\[([\w\-]+)\=\"(.*)\"]/',
+ // div.warning, HTML only. The same as DIV[class~="warning"]
+ '/(\w+|\*)+\.([\w\-]+)+/',
+ // .warning, HTML only. The same as *[class~="warning"]
+ '/\.([\w\-]+)/',
+ // E#myid, Matches any E element with id-attribute equal to "myid"
+ '/(\w+)+\#([\w\-]+)/',
+ // #myid, Matches any element with id-attribute equal to "myid"
+ '/\#([\w\-]+)/'
+ );
+
+ // the xPath-equivalent
+ $xPathQuery = array(
+ // E F, Matches any F element that is a descendant of an E element
+ '\1//\2',
+ // E > F, Matches any F element that is a child of an element E
+ '\1/\2',
+ // E:first-child, Matches element E when E is the first child of its parent
+ '*[1]/self::\1',
+ // E + F, Matches any F element immediately preceded by an element
+ '\1/following-sibling::*[1]/self::\2',
+ // E[foo], Matches any E element with the "foo" attribute set (whatever the value)
+ '\1 [ @\2 ]',
+ // E[foo="warning"], Matches any E element whose "foo" attribute value is exactly equal to "warning"
+ '\1[ contains( concat( " ", @\2, " " ), concat( " ", "\3", " " ) ) ]',
+ // div.warning, HTML only. The same as DIV[class~="warning"]
+ '\1[ contains( concat( " ", @class, " " ), concat( " ", "\2", " " ) ) ]',
+ // .warning, HTML only. The same as *[class~="warning"]
+ '*[ contains( concat( " ", @class, " " ), concat( " ", "\1", " " ) ) ]',
+ // E#myid, Matches any E element with id-attribute equal to "myid"
+ '\1[ @id = "\2" ]',
+ // #myid, Matches any element with id-attribute equal to "myid"
+ '*[ @id = "\1" ]'
+ );
+
+ // return
+ $xPath = (string) '//' . preg_replace($cssSelector, $xPathQuery, $selector);
+
+ return str_replace('] *', ']//*', $xPath);
+ }
+
+ /**
+ * Calculate the specifity for the CSS-selector
+ *
+ * @return int
+ * @param string $selector The selector to calculate the specifity for.
+ */
+ private function calculateCSSSpecifity($selector)
+ {
+ // cleanup selector
+ $selector = str_replace(array('>', '+'), array(' > ', ' + '), $selector);
+
+ // init var
+ $specifity = 0;
+
+ // split the selector into chunks based on spaces
+ $chunks = explode(' ', $selector);
+
+ // loop chunks
+ foreach ($chunks as $chunk) {
+ // an ID is important, so give it a high specifity
+ if(strstr($chunk, '#') !== false) $specifity += 100;
+
+ // classes are more important than a tag, but less important then an ID
+ elseif(strstr($chunk, '.')) $specifity += 10;
+
+ // anything else isn't that important
+ else $specifity += 1;
+ }
+
+ // return
+ return $specifity;
+ }
+
+
+ /**
+ * Cleanup the generated HTML
+ *
+ * @return string
+ * @param string $html The HTML to cleanup.
+ */
+ private function cleanupHTML($html)
+ {
+ // remove classes
+ $html = preg_replace('/(\s)+class="(.*)"(\s)*/U', ' ', $html);
+
+ // remove IDs
+ $html = preg_replace('/(\s)+id="(.*)"(\s)*/U', ' ', $html);
+
+ // return
+ return $html;
+ }
+
+
+ /**
+ * Converts the loaded HTML into an HTML-string with inline styles based on the loaded CSS
+ *
+ * @return string
+ * @param bool[optional] $outputXHTML Should we output valid XHTML?
+ */
+ public function convert($outputXHTML = false)
+ {
+ // redefine
+ $outputXHTML = (bool) $outputXHTML;
+
+ // validate
+ if($this->html == null) throw new Exception('No HTML provided.');
+
+ // should we use inline style-block
+ if ($this->useInlineStylesBlock) {
+ // init var
+ $matches = array();
+
+ // match the style blocks
+ preg_match_all('||isU', $this->html, $matches);
+
+ // any style-blocks found?
+ if (!empty($matches[2])) {
+ // add
+ foreach($matches[2] as $match) $this->css .= trim($match) ."\n";
+ }
+ }
+
+ // process css
+ $this->processCSS();
+
+ // create new DOMDocument
+ $document = new \DOMDocument('1.0', $this->getEncoding());
+
+ // set error level
+ libxml_use_internal_errors(true);
+
+ // load HTML
+ $document->loadHTML($this->html);
+
+ // create new XPath
+ $xPath = new \DOMXPath($document);
+
+ // any rules?
+ if (!empty($this->cssRules)) {
+ // loop rules
+ foreach ($this->cssRules as $rule) {
+ // init var
+ $query = $this->buildXPathQuery($rule['selector']);
+
+ // validate query
+ if($query === false) continue;
+
+ // search elements
+ $elements = $xPath->query($query);
+
+ // validate elements
+ if($elements === false) continue;
+
+ // loop found elements
+ foreach ($elements as $element) {
+ // no styles stored?
+ if ($element->attributes->getNamedItem(
+ 'data-css-to-inline-styles-original-styles'
+ ) == null) {
+ // init var
+ $originalStyle = '';
+ if ($element->attributes->getNamedItem('style') !== null) {
+ $originalStyle = $element->attributes->getNamedItem('style')->value;
+ }
+
+ // store original styles
+ $element->setAttribute(
+ 'data-css-to-inline-styles-original-styles',
+ $originalStyle
+ );
+
+ // clear the styles
+ $element->setAttribute('style', '');
+ }
+
+ // init var
+ $properties = array();
+
+ // get current styles
+ $stylesAttribute = $element->attributes->getNamedItem('style');
+
+ // any styles defined before?
+ if ($stylesAttribute !== null) {
+ // get value for the styles attribute
+ $definedStyles = (string) $stylesAttribute->value;
+
+ // split into properties
+ $definedProperties = (array) explode(';', $definedStyles);
+
+ // loop properties
+ foreach ($definedProperties as $property) {
+ // validate property
+ if($property == '') continue;
+
+ // split into chunks
+ $chunks = (array) explode(':', trim($property), 2);
+
+ // validate
+ if(!isset($chunks[1])) continue;
+
+ // loop chunks
+ $properties[$chunks[0]] = trim($chunks[1]);
+ }
+ }
+
+ // add new properties into the list
+ foreach ($rule['properties'] as $key => $value) {
+ $properties[$key] = $value;
+ }
+
+ // build string
+ $propertyChunks = array();
+
+ // build chunks
+ foreach ($properties as $key => $values) {
+ foreach ((array) $values as $value) {
+ $propertyChunks[] = $key . ': ' . $value . ';';
+ }
+ }
+
+ // build properties string
+ $propertiesString = implode(' ', $propertyChunks);
+
+ // set attribute
+ if ($propertiesString != '') {
+ $element->setAttribute('style', $propertiesString);
+ }
+ }
+ }
+
+ // reapply original styles
+ $query = $this->buildXPathQuery(
+ '*[@data-css-to-inline-styles-original-styles]'
+ );
+
+ // validate query
+ if($query === false) return;
+
+ // search elements
+ $elements = $xPath->query($query);
+
+ // loop found elements
+ foreach ($elements as $element) {
+ // get the original styles
+ $originalStyle = $element->attributes->getNamedItem(
+ 'data-css-to-inline-styles-original-styles'
+ )->value;
+
+ if ($originalStyle != '') {
+ $originalProperties = array();
+ $originalStyles = (array) explode(';', $originalStyle);
+
+ foreach ($originalStyles as $property) {
+ // validate property
+ if($property == '') continue;
+
+ // split into chunks
+ $chunks = (array) explode(':', trim($property), 2);
+
+ // validate
+ if(!isset($chunks[1])) continue;
+
+ // loop chunks
+ $originalProperties[$chunks[0]] = trim($chunks[1]);
+ }
+
+ // get current styles
+ $stylesAttribute = $element->attributes->getNamedItem('style');
+ $properties = array();
+
+ // any styles defined before?
+ if ($stylesAttribute !== null) {
+ // get value for the styles attribute
+ $definedStyles = (string) $stylesAttribute->value;
+
+ // split into properties
+ $definedProperties = (array) explode(';', $definedStyles);
+
+ // loop properties
+ foreach ($definedProperties as $property) {
+ // validate property
+ if($property == '') continue;
+
+ // split into chunks
+ $chunks = (array) explode(':', trim($property), 2);
+
+ // validate
+ if(!isset($chunks[1])) continue;
+
+ // loop chunks
+ $properties[$chunks[0]] = trim($chunks[1]);
+ }
+ }
+
+ // add new properties into the list
+ foreach ($originalProperties as $key => $value) {
+ $properties[$key] = $value;
+ }
+
+ // build string
+ $propertyChunks = array();
+
+ // build chunks
+ foreach ($properties as $key => $values) {
+ foreach ((array) $values as $value) {
+ $propertyChunks[] = $key . ': ' . $value . ';';
+ }
+ }
+
+ // build properties string
+ $propertiesString = implode(' ', $propertyChunks);
+
+ // set attribute
+ if($propertiesString != '') $element->setAttribute(
+ 'style', $propertiesString
+ );
+ }
+
+ // remove placeholder
+ $element->removeAttribute(
+ 'data-css-to-inline-styles-original-styles'
+ );
+ }
+ }
+
+ // should we output XHTML?
+ if ($outputXHTML) {
+ // set formating
+ $document->formatOutput = true;
+
+ // get the HTML as XML
+ $html = $document->saveXML(null, LIBXML_NOEMPTYTAG);
+
+ // get start of the XML-declaration
+ $startPosition = strpos($html, '', $startPosition);
+
+ // remove the XML-header
+ $html = ltrim(substr($html, $endPosition + 1));
+ }
+ }
+
+ // just regular HTML 4.01 as it should be used in newsletters
+ else {
+ // get the HTML
+ $html = $document->saveHTML();
+ }
+
+ // cleanup the HTML if we need to
+ if($this->cleanup) $html = $this->cleanupHTML($html);
+
+ // strip original style tags if we need to
+ if ($this->stripOriginalStyleTags) {
+ $html = $this->stripOriginalStyleTags($html);
+ }
+
+ // return
+ return $html;
+ }
+
+
+ /**
+ * Get the encoding to use
+ *
+ * @return string
+ */
+ private function getEncoding()
+ {
+ return $this->encoding;
+ }
+
+
+ /**
+ * Process the loaded CSS
+ *
+ * @return void
+ */
+ private function processCSS()
+ {
+ // init vars
+ $css = (string) $this->css;
+
+ // remove newlines
+ $css = str_replace(array("\r", "\n"), '', $css);
+
+ // replace double quotes by single quotes
+ $css = str_replace('"', '\'', $css);
+
+ // remove comments
+ $css = preg_replace('|/\*.*?\*/|', '', $css);
+
+ // remove spaces
+ $css = preg_replace('/\s\s+/', ' ', $css);
+
+ if ($this->excludeMediaQueries) {
+ $css = preg_replace('/@media [^{]*{([^{}]|{[^{}]*})*}/', '', $css);
+ }
+
+ // rules are splitted by }
+ $rules = (array) explode('}', $css);
+
+ // init var
+ $i = 1;
+
+ // loop rules
+ foreach ($rules as $rule) {
+ // split into chunks
+ $chunks = explode('{', $rule);
+
+ // invalid rule?
+ if(!isset($chunks[1])) continue;
+
+ // set the selectors
+ $selectors = trim($chunks[0]);
+
+ // get cssProperties
+ $cssProperties = trim($chunks[1]);
+
+ // split multiple selectors
+ $selectors = (array) explode(',', $selectors);
+
+ // loop selectors
+ foreach ($selectors as $selector) {
+ // cleanup
+ $selector = trim($selector);
+
+ // build an array for each selector
+ $ruleSet = array();
+
+ // store selector
+ $ruleSet['selector'] = $selector;
+
+ // process the properties
+ $ruleSet['properties'] = $this->processCSSProperties(
+ $cssProperties
+ );
+
+ // calculate specifity
+ $ruleSet['specifity'] = $this->calculateCSSSpecifity(
+ $selector
+ ) + $i;
+
+ // add into global rules
+ $this->cssRules[] = $ruleSet;
+ }
+
+ // increment
+ $i++;
+ }
+
+ // sort based on specifity
+ if (!empty($this->cssRules)) {
+ usort($this->cssRules, array(__CLASS__, 'sortOnSpecifity'));
+ }
+ }
+
+ /**
+ * Process the CSS-properties
+ *
+ * @return array
+ * @param string $propertyString The CSS-properties.
+ */
+ private function processCSSProperties($propertyString)
+ {
+ // split into chunks
+ $properties = (array) explode(';', $propertyString);
+
+ // init var
+ $pairs = array();
+
+ // loop properties
+ foreach ($properties as $property) {
+ // split into chunks
+ $chunks = (array) explode(':', $property, 2);
+
+ // validate
+ if(!isset($chunks[1])) continue;
+
+ // cleanup
+ $chunks[0] = trim($chunks[0]);
+ $chunks[1] = trim($chunks[1]);
+
+ // add to pairs array
+ if(!isset($pairs[$chunks[0]]) ||
+ !in_array($chunks[1], $pairs[$chunks[0]])) {
+ $pairs[$chunks[0]][] = $chunks[1];
+ }
+ }
+
+ // sort the pairs
+ ksort($pairs);
+
+ // return
+ return $pairs;
+ }
+
+ /**
+ * Should the IDs and classes be removed?
+ *
+ * @return void
+ * @param bool[optional] $on Should we enable cleanup?
+ */
+ public function setCleanup($on = true)
+ {
+ $this->cleanup = (bool) $on;
+ }
+
+ /**
+ * Set CSS to use
+ *
+ * @return void
+ * @param string $css The CSS to use.
+ */
+ public function setCSS($css)
+ {
+ $this->css = (string) $css;
+ }
+
+ /**
+ * Set the encoding to use with the DOMDocument
+ *
+ * @return void
+ * @param string $encoding The encoding to use.
+ */
+ public function setEncoding($encoding)
+ {
+ $this->encoding = (string) $encoding;
+ }
+
+ /**
+ * Set HTML to process
+ *
+ * @return void
+ * @param string $html The HTML to process.
+ */
+ public function setHTML($html)
+ {
+ $this->html = (string) $html;
+ }
+
+ /**
+ * Set use of inline styles block
+ * If this is enabled the class will use the style-block in the HTML.
+ *
+ * @return void
+ * @param bool[optional] $on Should we process inline styles?
+ */
+ public function setUseInlineStylesBlock($on = true)
+ {
+ $this->useInlineStylesBlock = (bool) $on;
+ }
+
+ /**
+ * Set strip original style tags
+ * If this is enabled the class will remove all style tags in the HTML.
+ *
+ * @return void
+ * @param bool[optional] $on Should we process inline styles?
+ */
+ public function setStripOriginalStyleTags($on = true)
+ {
+ $this->stripOriginalStyleTags = (bool) $on;
+ }
+
+ /**
+ * Set exclude media queries
+ *
+ * If this is enabled the media queries will be removed before inlining the rules
+ *
+ * @return void
+ * @param bool[optional] $on
+ */
+ public function setExcludeMediaQueries($on = true)
+ {
+ $this->excludeMediaQueries = (bool) $on;
+ }
+
+ /**
+ * Strip style tags into the generated HTML
+ *
+ * @return string
+ * @param string $html The HTML to strip style tags.
+ */
+ private function stripOriginalStyleTags($html)
+ {
+ return preg_replace('||isU', '', $html);
+ }
+
+ /**
+ * Sort an array on the specifity element
+ *
+ * @return int
+ * @param array $e1 The first element.
+ * @param array $e2 The second element.
+ */
+ private static function sortOnSpecifity($e1, $e2)
+ {
+ // validate
+ if(!isset($e1['specifity']) || !isset($e2['specifity'])) return 0;
+
+ // lower
+ if($e1['specifity'] < $e2['specifity']) return -1;
+
+ // higher
+ if($e1['specifity'] > $e2['specifity']) return 1;
+
+ // fallback
+ return 0;
+ }
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/Exception.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/Exception.php
new file mode 100755
index 000000000..29ec41d7f
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/Exception.php
@@ -0,0 +1,11 @@
+
+ */
+class Exception extends \Exception
+{
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/LICENSE.md b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/LICENSE.md
new file mode 100755
index 000000000..7845368c6
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/LICENSE.md
@@ -0,0 +1,22 @@
+Copyright (c) Tijs Verkoyen. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+This software is provided by the author "as is" and any express or implied
+warranties, including, but not limited to, the implied warranties of
+merchantability and fitness for a particular purpose are disclaimed. In no event
+shall the author be liable for any direct, indirect, incidental, special,
+exemplary, or consequential damages (including, but not limited to, procurement
+of substitute goods or services; loss of use, data, or profits; or business
+interruption) however caused and on any theory of liability, whether in
+contract, strict liability, or tort (including negligence or otherwise) arising
+in any way out of the use of this software, even if advised of the possibility
+of such damage.
\ No newline at end of file
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/README.md b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/README.md
new file mode 100755
index 000000000..82adcddb4
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/README.md
@@ -0,0 +1,23 @@
+# CssToInlineStyles class
+
+> CssToInlineStyles is a class that enables you to convert HTML-pages/files into
+> HTML-pages/files with inline styles. This is very usefull when you're sending
+> emails.
+
+## About
+
+PHP CssToInlineStyles is a class to convert HTML into HTML with inline styles.
+
+## Documentation
+
+The class is well documented inline. If you use a decent IDE you'll see that
+each method is documented with PHPDoc.
+
+## Known issues
+
+* no support for pseudo selectors
+
+## Sites using this class
+
+* [Each site based on Fork CMS](http://www.fork-cms.com)
+* [Print en Bind](http://www.printenbind.nl)
\ No newline at end of file
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/composer.json b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/composer.json
new file mode 100755
index 000000000..13b8c9b3e
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/composer.json
@@ -0,0 +1,26 @@
+{
+ "name": "tijsverkoyen/css-to-inline-styles",
+ "type": "library",
+ "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
+ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
+ "license": "BSD",
+ "authors": [
+ {
+ "name": "Tijs Verkoyen",
+ "email": "css_to_inline_styles@verkoyen.eu",
+ "role": "Developer"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "target-dir": "TijsVerkoyen/CssToInlineStyles",
+ "autoload": {
+ "psr-0": {"TijsVerkoyen\\CssToInlineStyles": ""}
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ }
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/tests/.gitignore b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/tests/.gitignore
new file mode 100755
index 000000000..4e9b47a3b
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/tests/.gitignore
@@ -0,0 +1 @@
+config.php
\ No newline at end of file
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/tests/examples/sumo/index.htm b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/tests/examples/sumo/index.htm
new file mode 100755
index 000000000..4ca73239d
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/tests/examples/sumo/index.htm
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+ *|MC:SUBJECT|*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Use this area to offer a short teaser of your email's content. Text here will show in the preview area of some email clients.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Heading 1
+ Heading 2
+ Heading 3
+ Heading 4
+ Getting started: Customize your template by clicking on the style editor tabs up above. Set your fonts, colors, and styles. After setting your styling is all done you can click here in this area, delete the text, and start adding your own awesome content!
+
+
+ After you enter your content, highlight the text you want to style and select the options you set in the style editor in the "styles" drop down box. Want to get rid of styling on a bit of text, but having trouble doing it? Just use the "remove formatting" button to strip the text of any formatting and reset your style.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Copyright © *|CURRENT_YEAR|* *|LIST:COMPANY|*, All rights reserved.
+
+ *|IFNOT:ARCHIVE_PAGE|* *|LIST:DESCRIPTION|*
+
+ Our mailing address is:
+
+ *|HTML:LIST_ADDRESS_HTML|**|END:IF|*
+
+
+
+ *|IF:REWARDS|* *|HTML:REWARDS|* *|END:IF|*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/tests/examples/sumo/style.css b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/tests/examples/sumo/style.css
new file mode 100755
index 000000000..ebd740693
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/tests/examples/sumo/style.css
@@ -0,0 +1,332 @@
+/* Client-specific Styles */
+#outlook a{padding:0;} /* Force Outlook to provide a "view in browser" button. */
+body{width:100% !important;} .ReadMsgBody{width:100%;} .ExternalClass{width:100%;} /* Force Hotmail to display emails at full width */
+body{-webkit-text-size-adjust:none;} /* Prevent Webkit platforms from changing default text sizes. */
+
+/* Reset Styles */
+body{margin:0; padding:0;}
+img{border:0; outline:none; text-decoration:none;}
+table td{border-collapse:collapse;}
+#backgroundTable{height:100% !important; margin:0; padding:0; width:100% !important;}
+
+/* Template Styles */
+
+/* /\/\/\/\/\/\/\/\/\/\ STANDARD STYLING: COMMON PAGE ELEMENTS /\/\/\/\/\/\/\/\/\/\ */
+
+/**
+ * @tab Page
+ * @section background color
+ * @tip Set the background color for your email. You may want to choose one that matches your company's branding.
+ * @theme page
+ */
+body, #backgroundTable{
+ /*@editable*/ background-color:#FAFAFA;
+}
+
+/**
+ * @tab Page
+ * @section email border
+ * @tip Set the border for your email.
+ */
+#templateContainer{
+ /*@editable*/ border: 1px solid #DDDDDD;
+}
+
+/**
+ * @tab Page
+ * @section heading 1
+ * @tip Set the styling for all first-level headings in your emails. These should be the largest of your headings.
+ * @style heading 1
+ */
+h1, .h1{
+ /*@editable*/ color:#202020;
+ display:block;
+ /*@editable*/ font-family:Arial;
+ /*@editable*/ font-size:34px;
+ /*@editable*/ font-weight:bold;
+ /*@editable*/ line-height:100%;
+ margin-top:0;
+ margin-right:0;
+ margin-bottom:10px;
+ margin-left:0;
+ /*@editable*/ text-align:left;
+}
+
+/**
+ * @tab Page
+ * @section heading 2
+ * @tip Set the styling for all second-level headings in your emails.
+ * @style heading 2
+ */
+h2, .h2{
+ /*@editable*/ color:#202020;
+ display:block;
+ /*@editable*/ font-family:Arial;
+ /*@editable*/ font-size:30px;
+ /*@editable*/ font-weight:bold;
+ /*@editable*/ line-height:100%;
+ margin-top:0;
+ margin-right:0;
+ margin-bottom:10px;
+ margin-left:0;
+ /*@editable*/ text-align:left;
+}
+
+/**
+ * @tab Page
+ * @section heading 3
+ * @tip Set the styling for all third-level headings in your emails.
+ * @style heading 3
+ */
+h3, .h3{
+ /*@editable*/ color:#202020;
+ display:block;
+ /*@editable*/ font-family:Arial;
+ /*@editable*/ font-size:26px;
+ /*@editable*/ font-weight:bold;
+ /*@editable*/ line-height:100%;
+ margin-top:0;
+ margin-right:0;
+ margin-bottom:10px;
+ margin-left:0;
+ /*@editable*/ text-align:left;
+}
+
+/**
+ * @tab Page
+ * @section heading 4
+ * @tip Set the styling for all fourth-level headings in your emails. These should be the smallest of your headings.
+ * @style heading 4
+ */
+h4, .h4{
+ /*@editable*/ color:#202020;
+ display:block;
+ /*@editable*/ font-family:Arial;
+ /*@editable*/ font-size:22px;
+ /*@editable*/ font-weight:bold;
+ /*@editable*/ line-height:100%;
+ margin-top:0;
+ margin-right:0;
+ margin-bottom:10px;
+ margin-left:0;
+ /*@editable*/ text-align:left;
+}
+
+/* /\/\/\/\/\/\/\/\/\/\ STANDARD STYLING: PREHEADER /\/\/\/\/\/\/\/\/\/\ */
+
+/**
+ * @tab Header
+ * @section preheader style
+ * @tip Set the background color for your email's preheader area.
+ * @theme page
+ */
+#templatePreheader{
+ /*@editable*/ background-color:#FAFAFA;
+}
+
+/**
+ * @tab Header
+ * @section preheader text
+ * @tip Set the styling for your email's preheader text. Choose a size and color that is easy to read.
+ */
+.preheaderContent div{
+ /*@editable*/ color:#505050;
+ /*@editable*/ font-family:Arial;
+ /*@editable*/ font-size:10px;
+ /*@editable*/ line-height:100%;
+ /*@editable*/ text-align:left;
+}
+
+/**
+ * @tab Header
+ * @section preheader link
+ * @tip Set the styling for your email's preheader links. Choose a color that helps them stand out from your text.
+ */
+.preheaderContent div a:link, .preheaderContent div a:visited, /* Yahoo! Mail Override */ .preheaderContent div a .yshortcuts /* Yahoo! Mail Override */{
+ /*@editable*/ color:#336699;
+ /*@editable*/ font-weight:normal;
+ /*@editable*/ text-decoration:underline;
+}
+
+.preheaderContent img{
+ display:inline;
+ height:auto;
+ margin-bottom:10px;
+ max-width:280px;
+}
+
+/* /\/\/\/\/\/\/\/\/\/\ STANDARD STYLING: HEADER /\/\/\/\/\/\/\/\/\/\ */
+
+/**
+ * @tab Header
+ * @section header style
+ * @tip Set the background color and border for your email's header area.
+ * @theme header
+ */
+#templateHeader{
+ /*@editable*/ background-color:#FFFFFF;
+ /*@editable*/ border-bottom:0;
+}
+
+/**
+ * @tab Header
+ * @section header text
+ * @tip Set the styling for your email's header text. Choose a size and color that is easy to read.
+ */
+.headerContent{
+ /*@editable*/ color:#202020;
+ /*@editable*/ font-family:Arial;
+ /*@editable*/ font-size:34px;
+ /*@editable*/ font-weight:bold;
+ /*@editable*/ line-height:100%;
+ /*@editable*/ padding:0;
+ /*@editable*/ text-align:center;
+ /*@editable*/ vertical-align:middle;
+}
+
+/**
+ * @tab Header
+ * @section header link
+ * @tip Set the styling for your email's header links. Choose a color that helps them stand out from your text.
+ */
+.headerContent a:link, .headerContent a:visited, /* Yahoo! Mail Override */ .headerContent a .yshortcuts /* Yahoo! Mail Override */{
+ /*@editable*/ color:#336699;
+ /*@editable*/ font-weight:normal;
+ /*@editable*/ text-decoration:underline;
+}
+
+#headerImage{
+ height:auto;
+ max-width:320px !important;
+}
+
+/* /\/\/\/\/\/\/\/\/\/\ STANDARD STYLING: MAIN BODY /\/\/\/\/\/\/\/\/\/\ */
+
+/**
+ * @tab Body
+ * @section body style
+ * @tip Set the background color for your email's body area.
+ */
+#templateContainer, .bodyContent{
+ /*@editable*/ background-color:#FFFFFF;
+}
+
+/**
+ * @tab Body
+ * @section body text
+ * @tip Set the styling for your email's main content text. Choose a size and color that is easy to read.
+ * @theme main
+ */
+.bodyContent div{
+ /*@editable*/ color:#505050;
+ /*@editable*/ font-family:Arial;
+ /*@editable*/ font-size:12px;
+ /*@editable*/ line-height:150%;
+ /*@editable*/ text-align:left;
+}
+
+/**
+ * @tab Body
+ * @section body link
+ * @tip Set the styling for your email's main content links. Choose a color that helps them stand out from your text.
+ */
+.bodyContent div a:link, .bodyContent div a:visited, /* Yahoo! Mail Override */ .bodyContent div a .yshortcuts /* Yahoo! Mail Override */{
+ /*@editable*/ color:#336699;
+ /*@editable*/ font-weight:normal;
+ /*@editable*/ text-decoration:underline;
+}
+
+.bodyContent img{
+ display:inline;
+ height:auto;
+ margin-bottom:10px;
+ max-width:280px;
+}
+
+/* /\/\/\/\/\/\/\/\/\/\ STANDARD STYLING: FOOTER /\/\/\/\/\/\/\/\/\/\ */
+
+/**
+ * @tab Footer
+ * @section footer style
+ * @tip Set the background color and top border for your email's footer area.
+ * @theme footer
+ */
+#templateFooter{
+ /*@editable*/ background-color:#FFFFFF;
+ /*@editable*/ border-top:0;
+}
+
+/**
+ * @tab Footer
+ * @section footer text
+ * @tip Set the styling for your email's footer text. Choose a size and color that is easy to read.
+ * @theme footer
+ */
+.footerContent div{
+ /*@editable*/ color:#707070;
+ /*@editable*/ font-family:Arial;
+ /*@editable*/ font-size:11px;
+ /*@editable*/ line-height:150%;
+ /*@editable*/ text-align:left;
+}
+
+/**
+ * @tab Footer
+ * @section footer link
+ * @tip Set the styling for your email's footer links. Choose a color that helps them stand out from your text.
+ */
+.footerContent div a:link, .footerContent div a:visited, /* Yahoo! Mail Override */ .footerContent div a .yshortcuts /* Yahoo! Mail Override */{
+ /*@editable*/ color:#336699;
+ /*@editable*/ font-weight:normal;
+ /*@editable*/ text-decoration:underline;
+}
+
+.footerContent img{
+ display:inline;
+}
+
+/**
+ * @tab Footer
+ * @section social bar style
+ * @tip Set the background color and border for your email's footer social bar.
+ * @theme footer
+ */
+#social{
+ /*@editable*/ background-color:#FAFAFA;
+ /*@editable*/ border:0;
+}
+
+/**
+ * @tab Footer
+ * @section social bar style
+ * @tip Set the background color and border for your email's footer social bar.
+ */
+#social div{
+ /*@editable*/ text-align:left;
+}
+
+/**
+ * @tab Footer
+ * @section utility bar style
+ * @tip Set the background color and border for your email's footer utility bar.
+ * @theme footer
+ */
+#utility{
+ /*@editable*/ background-color:#FFFFFF;
+ /*@editable*/ border:0;
+}
+
+/**
+ * @tab Footer
+ * @section utility bar style
+ * @tip Set the background color and border for your email's footer utility bar.
+ */
+#utility div{
+ /*@editable*/ text-align:left;
+}
+
+#monkeyRewards img{
+ display:inline;
+ height:auto;
+ max-width:280px;
+}
\ No newline at end of file
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/tests/index.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/tests/index.php
new file mode 100755
index 000000000..cd28b5b32
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/tests/index.php
@@ -0,0 +1,19 @@
+setHTML($html);
+$cssToInlineStyles->setCSS($css);
+
+// output
+echo $cssToInlineStyles->convert();
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/vendor/autoload.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/vendor/autoload.php
new file mode 100755
index 000000000..f450bc653
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/vendor/autoload.php
@@ -0,0 +1,7 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0 class loader
+ *
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
+ *
+ * $loader = new \Composer\Autoload\ClassLoader();
+ *
+ * // register classes with namespaces
+ * $loader->add('Symfony\Component', __DIR__.'/component');
+ * $loader->add('Symfony', __DIR__.'/framework');
+ *
+ * // activate the autoloader
+ * $loader->register();
+ *
+ * // to enable searching the include path (eg. for PEAR packages)
+ * $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier
+ * @author Jordi Boggiano
+ */
+class ClassLoader
+{
+ // PSR-4
+ private $prefixLengthsPsr4 = array();
+ private $prefixDirsPsr4 = array();
+ private $fallbackDirsPsr4 = array();
+
+ // PSR-0
+ private $prefixesPsr0 = array();
+ private $fallbackDirsPsr0 = array();
+
+ private $useIncludePath = false;
+ private $classMap = array();
+
+ public function getPrefixes()
+ {
+ return call_user_func_array('array_merge', $this->prefixesPsr0);
+ }
+
+ public function getPrefixesPsr4()
+ {
+ return $this->prefixDirsPsr4;
+ }
+
+ public function getFallbackDirs()
+ {
+ return $this->fallbackDirsPsr0;
+ }
+
+ public function getFallbackDirsPsr4()
+ {
+ return $this->fallbackDirsPsr4;
+ }
+
+ public function getClassMap()
+ {
+ return $this->classMap;
+ }
+
+ /**
+ * @param array $classMap Class to filename map
+ */
+ public function addClassMap(array $classMap)
+ {
+ if ($this->classMap) {
+ $this->classMap = array_merge($this->classMap, $classMap);
+ } else {
+ $this->classMap = $classMap;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix, either
+ * appending or prepending to the ones previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param array|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ */
+ public function add($prefix, $paths, $prepend = false)
+ {
+ if (!$prefix) {
+ if ($prepend) {
+ $this->fallbackDirsPsr0 = array_merge(
+ (array) $paths,
+ $this->fallbackDirsPsr0
+ );
+ } else {
+ $this->fallbackDirsPsr0 = array_merge(
+ $this->fallbackDirsPsr0,
+ (array) $paths
+ );
+ }
+
+ return;
+ }
+
+ $first = $prefix[0];
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
+ $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+
+ return;
+ }
+ if ($prepend) {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ (array) $paths,
+ $this->prefixesPsr0[$first][$prefix]
+ );
+ } else {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $this->prefixesPsr0[$first][$prefix],
+ (array) $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace, either
+ * appending or prepending to the ones previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param array|string $paths The PSR-0 base directories
+ * @param bool $prepend Whether to prepend the directories
+ */
+ public function addPsr4($prefix, $paths, $prepend = false)
+ {
+ if (!$prefix) {
+ // Register directories for the root namespace.
+ if ($prepend) {
+ $this->fallbackDirsPsr4 = array_merge(
+ (array) $paths,
+ $this->fallbackDirsPsr4
+ );
+ } else {
+ $this->fallbackDirsPsr4 = array_merge(
+ $this->fallbackDirsPsr4,
+ (array) $paths
+ );
+ }
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+ // Register directories for a new namespace.
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ } elseif ($prepend) {
+ // Prepend directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ (array) $paths,
+ $this->prefixDirsPsr4[$prefix]
+ );
+ } else {
+ // Append directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $this->prefixDirsPsr4[$prefix],
+ (array) $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix,
+ * replacing any others previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param array|string $paths The PSR-0 base directories
+ */
+ public function set($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr0 = (array) $paths;
+ } else {
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace,
+ * replacing any others previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param array|string $paths The PSR-4 base directories
+ */
+ public function setPsr4($prefix, $paths) {
+ if (!$prefix) {
+ $this->fallbackDirsPsr4 = (array) $paths;
+ } else {
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Turns on searching the include path for class files.
+ *
+ * @param bool $useIncludePath
+ */
+ public function setUseIncludePath($useIncludePath)
+ {
+ $this->useIncludePath = $useIncludePath;
+ }
+
+ /**
+ * Can be used to check if the autoloader uses the include path to check
+ * for classes.
+ *
+ * @return bool
+ */
+ public function getUseIncludePath()
+ {
+ return $this->useIncludePath;
+ }
+
+ /**
+ * Registers this instance as an autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not
+ */
+ public function register($prepend = false)
+ {
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+ }
+
+ /**
+ * Unregisters this instance as an autoloader.
+ */
+ public function unregister()
+ {
+ spl_autoload_unregister(array($this, 'loadClass'));
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $class The name of the class
+ * @return bool|null True if loaded, null otherwise
+ */
+ public function loadClass($class)
+ {
+ if ($file = $this->findFile($class)) {
+ includeFile($file);
+
+ return true;
+ }
+ }
+
+ /**
+ * Finds the path to the file where the class is defined.
+ *
+ * @param string $class The name of the class
+ *
+ * @return string|false The path if found, false otherwise
+ */
+ public function findFile($class)
+ {
+ // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
+ if ('\\' == $class[0]) {
+ $class = substr($class, 1);
+ }
+
+ // class map lookup
+ if (isset($this->classMap[$class])) {
+ return $this->classMap[$class];
+ }
+
+ // PSR-4 lookup
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . '.php';
+
+ $first = $class[0];
+ if (isset($this->prefixLengthsPsr4[$first])) {
+ foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-4 fallback dirs
+ foreach ($this->fallbackDirsPsr4 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 lookup
+ if (false !== $pos = strrpos($class, '\\')) {
+ // namespaced class name
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+ } else {
+ // PEAR-like class name
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . '.php';
+ }
+
+ if (isset($this->prefixesPsr0[$first])) {
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($dirs as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-0 fallback dirs
+ foreach ($this->fallbackDirsPsr0 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 include paths.
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+ return $file;
+ }
+
+ // Remember that this class does not exist.
+ return $this->classMap[$class] = false;
+ }
+}
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ */
+function includeFile($file)
+{
+ include $file;
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/vendor/composer/autoload_classmap.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/vendor/composer/autoload_classmap.php
new file mode 100755
index 000000000..7a91153b0
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/vendor/composer/autoload_classmap.php
@@ -0,0 +1,9 @@
+ array($baseDir . '/'),
+);
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/vendor/composer/autoload_psr4.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/vendor/composer/autoload_psr4.php
new file mode 100755
index 000000000..b265c64a2
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/csstoinlinestyles/vendor/composer/autoload_psr4.php
@@ -0,0 +1,9 @@
+ $path) {
+ $loader->set($namespace, $path);
+ }
+
+ $map = require __DIR__ . '/autoload_psr4.php';
+ foreach ($map as $namespace => $path) {
+ $loader->setPsr4($namespace, $path);
+ }
+
+ $classMap = require __DIR__ . '/autoload_classmap.php';
+ if ($classMap) {
+ $loader->addClassMap($classMap);
+ }
+
+ spl_autoload_register(array('ComposerAutoloaderInit3dfbedc7f647bc67ae4576fd1ae34987', 'autoload'), true, true);
+
+ $loader->register(true);
+
+ return $loader;
+ }
+
+ public static function autoload($class)
+ {
+ $dir = dirname(dirname(__DIR__)) . '/';
+ $prefixes = array('TijsVerkoyen\\CssToInlineStyles');
+ foreach ($prefixes as $prefix) {
+ if (0 !== strpos($class, $prefix)) {
+ continue;
+ }
+ $path = $dir . implode('/', array_slice(explode('\\', $class), 2)).'.php';
+ if (!$path = stream_resolve_include_path($path)) {
+ return false;
+ }
+ require $path;
+
+ return true;
+ }
+ }
+}
+
+function composerRequire3dfbedc7f647bc67ae4576fd1ae34987($file)
+{
+ require $file;
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.ds.inc b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.ds.inc
new file mode 100644
index 000000000..252145a2a
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.ds.inc
@@ -0,0 +1,16 @@
+ 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_ad_image',
+ 'indexes' => array(
+ 'fid' => array(
+ 0 => 'fid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'image',
+ 'settings' => array(
+ 'default_image' => 0,
+ 'uri_scheme' => 'public',
+ ),
+ 'translatable' => 0,
+ 'type' => 'image',
+ );
+
+ // Exported field_base: 'field_newsletter_ad_link'.
+ $field_bases['field_newsletter_ad_link'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_ad_link',
+ 'indexes' => array(),
+ 'locked' => 0,
+ 'module' => 'link',
+ 'settings' => array(
+ 'attributes' => array(
+ 'class' => '',
+ 'rel' => '',
+ 'target' => 'default',
+ ),
+ 'display' => array(
+ 'url_cutoff' => 80,
+ ),
+ 'enable_tokens' => 1,
+ 'title' => 'optional',
+ 'title_maxlength' => 128,
+ 'title_value' => '',
+ 'url' => 0,
+ ),
+ 'translatable' => 0,
+ 'type' => 'link_field',
+ );
+
+ // Exported field_base: 'field_newsletter_ad_promo'.
+ $field_bases['field_newsletter_ad_promo'] = array(
+ 'active' => 1,
+ 'cardinality' => 2,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_ad_promo',
+ 'indexes' => array(
+ 'revision_id' => array(
+ 0 => 'revision_id',
+ ),
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'hide_blank_items' => 1,
+ 'hide_initial_item' => FALSE,
+ 'path' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'field_collection',
+ );
+
+ // Exported field_base: 'field_newsletter_articles'.
+ $field_bases['field_newsletter_articles'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_articles',
+ 'indexes' => array(
+ 'target_id' => array(
+ 0 => 'target_id',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'entityreference',
+ 'settings' => array(
+ 'handler' => 'base',
+ 'handler_settings' => array(
+ 'behaviors' => array(
+ 'views-select-list' => array(
+ 'status' => 0,
+ ),
+ ),
+ 'sort' => array(
+ 'type' => 'none',
+ ),
+ 'target_bundles' => array(
+ 'article' => 'article',
+ ),
+ ),
+ 'target_type' => 'node',
+ ),
+ 'translatable' => 0,
+ 'type' => 'entityreference',
+ );
+
+ // Exported field_base: 'field_newsletter_block_body'.
+ $field_bases['field_newsletter_block_body'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_block_body',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(),
+ 'translatable' => 0,
+ 'type' => 'text_long',
+ );
+
+ // Exported field_base: 'field_newsletter_block_title'.
+ $field_bases['field_newsletter_block_title'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_block_title',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(
+ 'max_length' => 255,
+ ),
+ 'translatable' => 0,
+ 'type' => 'text',
+ );
+
+ // Exported field_base: 'field_newsletter_design'.
+ $field_bases['field_newsletter_design'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_design',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(),
+ 'allowed_values_function' => 'cu_newsletter_design_options',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_text',
+ );
+
+ // Exported field_base: 'field_newsletter_display'.
+ $field_bases['field_newsletter_display'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_display',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 'email_teaser' => 'Teaser',
+ 'email_feature' => 'Feature',
+ 'title' => 'Title',
+ ),
+ 'allowed_values_function' => '_cu_newsletter_display_values',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_text',
+ );
+
+ // Exported field_base: 'field_newsletter_footer'.
+ $field_bases['field_newsletter_footer'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_footer',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(),
+ 'translatable' => 0,
+ 'type' => 'text_long',
+ );
+
+ // Exported field_base: 'field_newsletter_intro_image'.
+ $field_bases['field_newsletter_intro_image'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_intro_image',
+ 'indexes' => array(
+ 'fid' => array(
+ 0 => 'fid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'image',
+ 'settings' => array(
+ 'default_image' => 0,
+ 'uri_scheme' => 'public',
+ ),
+ 'translatable' => 0,
+ 'type' => 'image',
+ );
+
+ // Exported field_base: 'field_newsletter_more_link'.
+ $field_bases['field_newsletter_more_link'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_more_link',
+ 'indexes' => array(),
+ 'locked' => 0,
+ 'module' => 'link',
+ 'settings' => array(
+ 'attributes' => array(
+ 'class' => '',
+ 'rel' => '',
+ 'target' => 'default',
+ ),
+ 'display' => array(
+ 'url_cutoff' => 80,
+ ),
+ 'enable_tokens' => 1,
+ 'title' => 'optional',
+ 'title_maxlength' => 128,
+ 'title_value' => '',
+ 'url' => 0,
+ ),
+ 'translatable' => 0,
+ 'type' => 'link_field',
+ );
+
+ // Exported field_base: 'field_newsletter_name_image'.
+ $field_bases['field_newsletter_name_image'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_name_image',
+ 'indexes' => array(
+ 'fid' => array(
+ 0 => 'fid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'image',
+ 'settings' => array(
+ 'default_image' => 0,
+ 'uri_scheme' => 'public',
+ ),
+ 'translatable' => 0,
+ 'type' => 'image',
+ );
+
+ // Exported field_base: 'field_newsletter_path'.
+ $field_bases['field_newsletter_path'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_path',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(
+ 'max_length' => 255,
+ ),
+ 'translatable' => 0,
+ 'type' => 'text',
+ );
+
+ // Exported field_base: 'field_newsletter_section'.
+ $field_bases['field_newsletter_section'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_section',
+ 'indexes' => array(
+ 'revision_id' => array(
+ 0 => 'revision_id',
+ ),
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'hide_blank_items' => 1,
+ 'hide_initial_item' => FALSE,
+ 'path' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'field_collection',
+ );
+
+ // Exported field_base: 'field_newsletter_section_content'.
+ $field_bases['field_newsletter_section_content'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_section_content',
+ 'indexes' => array(
+ 'revision_id' => array(
+ 0 => 'revision_id',
+ ),
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'hide_blank_items' => 1,
+ 'hide_initial_item' => FALSE,
+ 'path' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'field_collection',
+ );
+
+ // Exported field_base: 'field_newsletter_section_title'.
+ $field_bases['field_newsletter_section_title'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_section_title',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(
+ 'max_length' => 255,
+ ),
+ 'translatable' => 0,
+ 'type' => 'text',
+ );
+
+ // Exported field_base: 'field_newsletter_social_links'.
+ $field_bases['field_newsletter_social_links'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_social_links',
+ 'indexes' => array(
+ 'target_id' => array(
+ 0 => 'target_id',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'entityreference',
+ 'settings' => array(
+ 'handler' => 'base',
+ 'handler_settings' => array(
+ 'behaviors' => array(
+ 'views-select-list' => array(
+ 'status' => 0,
+ ),
+ ),
+ 'sort' => array(
+ 'type' => 'none',
+ ),
+ 'target_bundles' => array(
+ 'social_links' => 'social_links',
+ ),
+ ),
+ 'target_type' => 'bean',
+ ),
+ 'translatable' => 0,
+ 'type' => 'entityreference',
+ );
+
+ // Exported field_base: 'field_newsletter_text_block'.
+ $field_bases['field_newsletter_text_block'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_text_block',
+ 'indexes' => array(
+ 'revision_id' => array(
+ 0 => 'revision_id',
+ ),
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'hide_blank_items' => 1,
+ 'hide_initial_item' => FALSE,
+ 'path' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'field_collection',
+ );
+
+ // Exported field_base: 'field_newsletter_title'.
+ $field_bases['field_newsletter_title'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_title',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(
+ 'max_length' => 255,
+ ),
+ 'translatable' => 0,
+ 'type' => 'text',
+ );
+
+ // Exported field_base: 'field_newsletter_type'.
+ $field_bases['field_newsletter_type'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_type',
+ 'indexes' => array(
+ 'tid' => array(
+ 0 => 'tid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'taxonomy',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 0 => array(
+ 'vocabulary' => 'newsletter',
+ 'parent' => 0,
+ ),
+ ),
+ ),
+ 'translatable' => 0,
+ 'type' => 'taxonomy_term_reference',
+ );
+
+ // Exported field_base: 'field_nl_section_content_body'.
+ $field_bases['field_nl_section_content_body'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_nl_section_content_body',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(),
+ 'translatable' => 0,
+ 'type' => 'text_long',
+ );
+
+ // Exported field_base: 'field_nl_section_content_image'.
+ $field_bases['field_nl_section_content_image'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_nl_section_content_image',
+ 'indexes' => array(
+ 'fid' => array(
+ 0 => 'fid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'image',
+ 'settings' => array(
+ 'default_image' => 0,
+ 'uri_scheme' => 'public',
+ ),
+ 'translatable' => 0,
+ 'type' => 'image',
+ );
+
+ // Exported field_base: 'field_nl_section_content_title'.
+ $field_bases['field_nl_section_content_title'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_nl_section_content_title',
+ 'indexes' => array(),
+ 'locked' => 0,
+ 'module' => 'link',
+ 'settings' => array(
+ 'attributes' => array(
+ 'class' => '',
+ 'rel' => '',
+ 'target' => 'default',
+ ),
+ 'display' => array(
+ 'url_cutoff' => 80,
+ ),
+ 'enable_tokens' => 1,
+ 'title' => 'optional',
+ 'title_maxlength' => 128,
+ 'title_value' => '',
+ 'url' => 0,
+ ),
+ 'translatable' => 0,
+ 'type' => 'link_field',
+ );
+
+ return $field_bases;
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.features.field_instance.inc b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.features.field_instance.inc
new file mode 100644
index 000000000..c7e8d7833
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.features.field_instance.inc
@@ -0,0 +1,1345 @@
+ 'field_newsletter_ad_promo',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => '',
+ 'image_style' => 'email_ad',
+ ),
+ 'type' => 'image',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_ad_image',
+ 'label' => 'Image',
+ 'required' => 0,
+ 'settings' => array(
+ 'alt_field' => 1,
+ 'default_image' => 0,
+ 'file_directory' => '',
+ 'file_extensions' => 'png gif jpg jpeg',
+ 'max_filesize' => '',
+ 'max_resolution' => '',
+ 'min_resolution' => '',
+ 'title_field' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'image',
+ 'settings' => array(
+ 'insert' => 0,
+ 'insert_absolute' => 0,
+ 'insert_class' => '',
+ 'insert_default' => 'auto',
+ 'insert_styles' => array(
+ 'auto' => 'auto',
+ 'colorbox__backstretch' => 0,
+ 'colorbox__flexslider_full' => 0,
+ 'colorbox__flexslider_thumbnail' => 0,
+ 'colorbox__focal_point_preview' => 0,
+ 'colorbox__grid-3' => 0,
+ 'colorbox__grid-4' => 0,
+ 'colorbox__grid-6' => 0,
+ 'colorbox__grid-9' => 0,
+ 'colorbox__grid-12' => 0,
+ 'colorbox__hero' => 0,
+ 'colorbox__large' => 0,
+ 'colorbox__large_square_thumbnail' => 0,
+ 'colorbox__large_wide_thumbnail' => 0,
+ 'colorbox__medium' => 0,
+ 'colorbox__preview' => 0,
+ 'colorbox__slider' => 0,
+ 'colorbox__slider-large' => 0,
+ 'colorbox__small' => 0,
+ 'colorbox__small_thumbnail' => 0,
+ 'colorbox__square' => 0,
+ 'colorbox__square_thumbnail' => 0,
+ 'colorbox__thumbnail' => 0,
+ 'icon_link' => 0,
+ 'image' => 0,
+ 'image_backstretch' => 0,
+ 'image_flexslider_full' => 0,
+ 'image_flexslider_thumbnail' => 0,
+ 'image_focal_point_preview' => 0,
+ 'image_grid-3' => 0,
+ 'image_grid-4' => 0,
+ 'image_grid-6' => 0,
+ 'image_grid-9' => 0,
+ 'image_grid-12' => 0,
+ 'image_hero' => 0,
+ 'image_large' => 0,
+ 'image_large_square_thumbnail' => 0,
+ 'image_large_wide_thumbnail' => 0,
+ 'image_medium' => 0,
+ 'image_preview' => 0,
+ 'image_slider' => 0,
+ 'image_slider-large' => 0,
+ 'image_small' => 0,
+ 'image_small_thumbnail' => 0,
+ 'image_square' => 0,
+ 'image_square_thumbnail' => 0,
+ 'image_thumbnail' => 0,
+ 'link' => 0,
+ ),
+ 'insert_width' => '',
+ 'preview_image_style' => 'thumbnail',
+ 'progress_indicator' => 'throbber',
+ ),
+ 'type' => 'image_image',
+ 'weight' => 1,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_newsletter_ad_promo-field_newsletter_ad_link'.
+ $field_instances['field_collection_item-field_newsletter_ad_promo-field_newsletter_ad_link'] = array(
+ 'bundle' => 'field_newsletter_ad_promo',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'link',
+ 'settings' => array(),
+ 'type' => 'link_plain',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_ad_link',
+ 'label' => 'Link',
+ 'required' => 0,
+ 'settings' => array(
+ 'absolute_url' => 1,
+ 'attributes' => array(
+ 'class' => '',
+ 'configurable_class' => 0,
+ 'configurable_title' => 0,
+ 'rel' => '',
+ 'target' => 'default',
+ 'title' => '',
+ ),
+ 'display' => array(
+ 'url_cutoff' => 80,
+ ),
+ 'enable_tokens' => 1,
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 1,
+ 'profile' => 'express_linkit_field_profile',
+ ),
+ 'rel_remove' => 'default',
+ 'title' => 'none',
+ 'title_label_use_field_label' => 0,
+ 'title_maxlength' => 128,
+ 'title_value' => '',
+ 'url' => 0,
+ 'user_register_form' => FALSE,
+ 'validate_url' => 1,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'link',
+ 'settings' => array(),
+ 'type' => 'link_field',
+ 'weight' => 2,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_newsletter_section-field_newsletter_display'.
+ $field_instances['field_collection_item-field_newsletter_section-field_newsletter_display'] = array(
+ 'bundle' => 'field_newsletter_section',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 'email_teaser',
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => '',
+ 'deleted' => 0,
+ 'description' => 'Choose how articles in this section should display.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'list',
+ 'settings' => array(),
+ 'type' => 'list_key',
+ 'weight' => 3,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_display',
+ 'label' => 'Display',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_select',
+ 'weight' => 4,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_newsletter_section-field_newsletter_more_link'.
+ $field_instances['field_collection_item-field_newsletter_section-field_newsletter_more_link'] = array(
+ 'bundle' => 'field_newsletter_section',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => 'Provide a link to read more articles.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'link',
+ 'settings' => array(),
+ 'type' => 'link_default',
+ 'weight' => 2,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'p',
+ 'field_name' => 'field_newsletter_more_link',
+ 'label' => 'More Link',
+ 'required' => 0,
+ 'settings' => array(
+ 'absolute_url' => 1,
+ 'attributes' => array(
+ 'class' => '',
+ 'configurable_class' => 0,
+ 'configurable_title' => 0,
+ 'rel' => '',
+ 'target' => 'default',
+ 'title' => '',
+ ),
+ 'display' => array(
+ 'url_cutoff' => 80,
+ ),
+ 'enable_tokens' => 1,
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 1,
+ 'profile' => 'express_linkit_field_profile',
+ ),
+ 'rel_remove' => 'default',
+ 'title' => 'optional',
+ 'title_label_use_field_label' => 0,
+ 'title_maxlength' => 128,
+ 'title_value' => '',
+ 'url' => 0,
+ 'user_register_form' => FALSE,
+ 'validate_url' => 1,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'link',
+ 'settings' => array(),
+ 'type' => 'link_field',
+ 'weight' => 3,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_newsletter_section-field_newsletter_section_content'.
+ $field_instances['field_collection_item-field_newsletter_section-field_newsletter_section_content'] = array(
+ 'bundle' => 'field_newsletter_section',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'view_mode' => 'full',
+ ),
+ 'type' => 'field_collection_fields',
+ 'weight' => 4,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_newsletter_section_content',
+ 'label' => 'Section Contents',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(),
+ 'type' => 'field_collection_embed',
+ 'weight' => 1,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_newsletter_section-field_newsletter_section_title'.
+ $field_instances['field_collection_item-field_newsletter_section-field_newsletter_section_title'] = array(
+ 'bundle' => 'field_newsletter_section',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'h2',
+ 'field_name' => 'field_newsletter_section_title',
+ 'label' => 'Section Title',
+ 'required' => 0,
+ 'settings' => array(
+ 'text_processing' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'size' => 60,
+ ),
+ 'type' => 'text_textfield',
+ 'weight' => 0,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_newsletter_section_content-field_newsletter_articles'.
+ $field_instances['field_collection_item-field_newsletter_section_content-field_newsletter_articles'] = array(
+ 'bundle' => 'field_newsletter_section_content',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'entityreference',
+ 'settings' => array(),
+ 'type' => 'entityreference_entity_id',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_newsletter_articles',
+ 'label' => 'Articles',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'entityreference',
+ 'settings' => array(
+ 'match_operator' => 'CONTAINS',
+ 'path' => '',
+ 'size' => 60,
+ ),
+ 'type' => 'entityreference_autocomplete',
+ 'weight' => 3,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_newsletter_section_content-field_nl_section_content_body'.
+ $field_instances['field_collection_item-field_newsletter_section_content-field_nl_section_content_body'] = array(
+ 'bundle' => 'field_newsletter_section_content',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 2,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_nl_section_content_body',
+ 'label' => 'Body',
+ 'required' => 0,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 1,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'rows' => 5,
+ ),
+ 'type' => 'text_textarea',
+ 'weight' => 5,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_newsletter_section_content-field_nl_section_content_image'.
+ $field_instances['field_collection_item-field_newsletter_section_content-field_nl_section_content_image'] = array(
+ 'bundle' => 'field_newsletter_section_content',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => '',
+ 'image_style' => 'email_feature_thumbnail_large',
+ ),
+ 'type' => 'image',
+ 'weight' => 3,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_nl_section_content_image',
+ 'label' => 'Image',
+ 'required' => 0,
+ 'settings' => array(
+ 'alt_field' => 1,
+ 'default_image' => 0,
+ 'file_directory' => '',
+ 'file_extensions' => 'png gif jpg jpeg',
+ 'max_filesize' => '',
+ 'max_resolution' => '',
+ 'min_resolution' => '',
+ 'title_field' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'image',
+ 'settings' => array(
+ 'insert' => 0,
+ 'insert_absolute' => FALSE,
+ 'insert_class' => '',
+ 'insert_default' => 'auto',
+ 'insert_styles' => array(
+ 'auto' => 'auto',
+ 'colorbox__backstretch' => 0,
+ 'colorbox__el_hero' => 0,
+ 'colorbox__email_ad' => 0,
+ 'colorbox__email_ad_large' => 0,
+ 'colorbox__email_feature_thumbnail' => 0,
+ 'colorbox__email_feature_thumbnail_large' => 0,
+ 'colorbox__email_large' => 0,
+ 'colorbox__email_medium' => 0,
+ 'colorbox__email_teaser_thumbnail' => 0,
+ 'colorbox__flexslider_full' => 0,
+ 'colorbox__flexslider_thumbnail' => 0,
+ 'colorbox__focal_point_preview' => 0,
+ 'colorbox__hero' => 0,
+ 'colorbox__large' => 0,
+ 'colorbox__large_square_thumbnail' => 0,
+ 'colorbox__large_wide_thumbnail' => 0,
+ 'colorbox__linkit_thumb' => 0,
+ 'colorbox__medium' => 0,
+ 'colorbox__preview' => 0,
+ 'colorbox__slider' => 0,
+ 'colorbox__slider-large' => 0,
+ 'colorbox__small' => 0,
+ 'colorbox__small_square_thumbnail' => 0,
+ 'colorbox__small_thumbnail' => 0,
+ 'colorbox__square' => 0,
+ 'colorbox__square_thumbnail' => 0,
+ 'colorbox__testing' => 0,
+ 'colorbox__thumbnail' => 0,
+ 'icon_link' => 0,
+ 'image' => 0,
+ 'image_backstretch' => 0,
+ 'image_el_hero' => 0,
+ 'image_email_ad' => 0,
+ 'image_email_ad_large' => 0,
+ 'image_email_feature_thumbnail' => 0,
+ 'image_email_feature_thumbnail_large' => 0,
+ 'image_email_large' => 0,
+ 'image_email_medium' => 0,
+ 'image_email_teaser_thumbnail' => 0,
+ 'image_flexslider_full' => 0,
+ 'image_flexslider_thumbnail' => 0,
+ 'image_focal_point_preview' => 0,
+ 'image_hero' => 0,
+ 'image_large' => 0,
+ 'image_large_square_thumbnail' => 0,
+ 'image_large_wide_thumbnail' => 0,
+ 'image_linkit_thumb' => 0,
+ 'image_medium' => 0,
+ 'image_preview' => 0,
+ 'image_slider' => 0,
+ 'image_slider-large' => 0,
+ 'image_small' => 0,
+ 'image_small_square_thumbnail' => 0,
+ 'image_small_thumbnail' => 0,
+ 'image_square' => 0,
+ 'image_square_thumbnail' => 0,
+ 'image_testing' => 0,
+ 'image_thumbnail' => 0,
+ 'link' => 0,
+ ),
+ 'insert_width' => '',
+ 'preview_image_style' => 'thumbnail',
+ 'progress_indicator' => 'throbber',
+ ),
+ 'type' => 'image_image',
+ 'weight' => 6,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_newsletter_section_content-field_nl_section_content_title'.
+ $field_instances['field_collection_item-field_newsletter_section_content-field_nl_section_content_title'] = array(
+ 'bundle' => 'field_newsletter_section_content',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'link',
+ 'settings' => array(),
+ 'type' => 'link_default',
+ 'weight' => 4,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_nl_section_content_title',
+ 'label' => 'Title',
+ 'required' => 0,
+ 'settings' => array(
+ 'absolute_url' => 1,
+ 'attributes' => array(
+ 'class' => '',
+ 'configurable_class' => 0,
+ 'configurable_title' => 0,
+ 'rel' => '',
+ 'target' => 'default',
+ 'title' => '',
+ ),
+ 'display' => array(
+ 'url_cutoff' => 80,
+ ),
+ 'enable_tokens' => 1,
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 1,
+ 'profile' => 'express_linkit_field_profile',
+ ),
+ 'rel_remove' => 'default',
+ 'title' => 'optional',
+ 'title_label_use_field_label' => 1,
+ 'title_maxlength' => 128,
+ 'title_value' => '',
+ 'url' => 'optional',
+ 'user_register_form' => FALSE,
+ 'validate_url' => 1,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'link',
+ 'settings' => array(),
+ 'type' => 'link_field',
+ 'weight' => 4,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_newsletter_text_block-field_newsletter_block_body'.
+ $field_instances['field_collection_item-field_newsletter_text_block-field_newsletter_block_body'] = array(
+ 'bundle' => 'field_newsletter_text_block',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_newsletter_block_body',
+ 'label' => 'Body',
+ 'required' => 0,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 1,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'rows' => 5,
+ ),
+ 'type' => 'text_textarea',
+ 'weight' => 2,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_newsletter_text_block-field_newsletter_block_title'.
+ $field_instances['field_collection_item-field_newsletter_text_block-field_newsletter_block_title'] = array(
+ 'bundle' => 'field_newsletter_text_block',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'h2',
+ 'field_name' => 'field_newsletter_block_title',
+ 'label' => 'Title',
+ 'required' => 0,
+ 'settings' => array(
+ 'text_processing' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'size' => 60,
+ ),
+ 'type' => 'text_textfield',
+ 'weight' => 1,
+ ),
+ );
+
+ // Exported field_instance: 'node-newsletter-body'.
+ $field_instances['node-newsletter-body'] = array(
+ 'bundle' => 'newsletter',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 2,
+ ),
+ 'teaser' => array(
+ 'label' => 'hidden',
+ 'module' => 'smart_trim',
+ 'settings' => array(
+ 'more_link' => 0,
+ 'more_text' => 'Read more',
+ 'summary_handler' => 'full',
+ 'trim_length' => 50,
+ 'trim_link' => 0,
+ 'trim_options' => array(
+ 'text' => 'text',
+ ),
+ 'trim_preserve_tags' => '',
+ 'trim_suffix' => '...',
+ 'trim_type' => 'words',
+ ),
+ 'type' => 'smart_trim_format',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'field_name' => 'body',
+ 'label' => 'Body',
+ 'required' => FALSE,
+ 'settings' => array(
+ 'display_summary' => TRUE,
+ 'text_processing' => 1,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'module' => 'text',
+ 'settings' => array(
+ 'rows' => 20,
+ 'summary_rows' => 5,
+ ),
+ 'type' => 'text_textarea_with_summary',
+ 'weight' => 17,
+ ),
+ );
+
+ // Exported field_instance: 'node-newsletter-field_newsletter_ad_promo'.
+ $field_instances['node-newsletter-field_newsletter_ad_promo'] = array(
+ 'bundle' => 'newsletter',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'view_mode' => 'full',
+ ),
+ 'type' => 'field_collection_fields',
+ 'weight' => 4,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 6,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_ad_promo',
+ 'label' => 'Ad/Promo',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(),
+ 'type' => 'field_collection_embed',
+ 'weight' => 6,
+ ),
+ );
+
+ // Exported field_instance: 'node-newsletter-field_newsletter_intro_image'.
+ $field_instances['node-newsletter-field_newsletter_intro_image'] = array(
+ 'bundle' => 'newsletter',
+ 'deleted' => 0,
+ 'description' => 'Place an image at the top/beginning of your newsletter.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => '',
+ 'image_style' => 'email_large',
+ ),
+ 'type' => 'image',
+ 'weight' => 1,
+ ),
+ 'teaser' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => 'content',
+ 'image_style' => 'large',
+ ),
+ 'type' => 'image',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_newsletter_intro_image',
+ 'label' => 'Intro Image',
+ 'required' => 0,
+ 'settings' => array(
+ 'alt_field' => 1,
+ 'default_image' => 0,
+ 'file_directory' => 'newsletter-intro',
+ 'file_extensions' => 'png gif jpg jpeg',
+ 'max_filesize' => '',
+ 'max_resolution' => '',
+ 'min_resolution' => '',
+ 'title_field' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'image',
+ 'settings' => array(
+ 'insert' => 0,
+ 'insert_absolute' => 0,
+ 'insert_class' => '',
+ 'insert_default' => 'auto',
+ 'insert_styles' => array(
+ 'auto' => 'auto',
+ 'colorbox__backstretch' => 0,
+ 'colorbox__email_ad' => 0,
+ 'colorbox__email_feature_thumbnail' => 0,
+ 'colorbox__email_feature_thumbnail_large' => 0,
+ 'colorbox__email_teaser_thumbnail' => 0,
+ 'colorbox__flexslider_full' => 0,
+ 'colorbox__flexslider_thumbnail' => 0,
+ 'colorbox__focal_point_preview' => 0,
+ 'colorbox__grid-3' => 0,
+ 'colorbox__grid-4' => 0,
+ 'colorbox__grid-6' => 0,
+ 'colorbox__grid-9' => 0,
+ 'colorbox__grid-12' => 0,
+ 'colorbox__hero' => 0,
+ 'colorbox__large' => 0,
+ 'colorbox__large_square_thumbnail' => 0,
+ 'colorbox__large_wide_thumbnail' => 0,
+ 'colorbox__medium' => 0,
+ 'colorbox__preview' => 0,
+ 'colorbox__slider' => 0,
+ 'colorbox__slider-large' => 0,
+ 'colorbox__small' => 0,
+ 'colorbox__small_thumbnail' => 0,
+ 'colorbox__square' => 0,
+ 'colorbox__square_thumbnail' => 0,
+ 'colorbox__thumbnail' => 0,
+ 'icon_link' => 0,
+ 'image' => 0,
+ 'image_backstretch' => 0,
+ 'image_email_ad' => 0,
+ 'image_email_feature_thumbnail' => 0,
+ 'image_email_feature_thumbnail_large' => 0,
+ 'image_email_teaser_thumbnail' => 0,
+ 'image_flexslider_full' => 0,
+ 'image_flexslider_thumbnail' => 0,
+ 'image_focal_point_preview' => 0,
+ 'image_grid-3' => 0,
+ 'image_grid-4' => 0,
+ 'image_grid-6' => 0,
+ 'image_grid-9' => 0,
+ 'image_grid-12' => 0,
+ 'image_hero' => 0,
+ 'image_large' => 0,
+ 'image_large_square_thumbnail' => 0,
+ 'image_large_wide_thumbnail' => 0,
+ 'image_medium' => 0,
+ 'image_preview' => 0,
+ 'image_slider' => 0,
+ 'image_slider-large' => 0,
+ 'image_small' => 0,
+ 'image_small_thumbnail' => 0,
+ 'image_square' => 0,
+ 'image_square_thumbnail' => 0,
+ 'image_thumbnail' => 0,
+ 'link' => 0,
+ ),
+ 'insert_width' => '',
+ 'preview_image_style' => 'thumbnail',
+ 'progress_indicator' => 'throbber',
+ ),
+ 'type' => 'image_image',
+ 'weight' => 16,
+ ),
+ );
+
+ // Exported field_instance: 'node-newsletter-field_newsletter_section'.
+ $field_instances['node-newsletter-field_newsletter_section'] = array(
+ 'bundle' => 'newsletter',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'view_mode' => 'full',
+ ),
+ 'type' => 'field_collection_fields',
+ 'weight' => 3,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 5,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_section',
+ 'label' => 'Section',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(),
+ 'type' => 'field_collection_embed',
+ 'weight' => 5,
+ ),
+ );
+
+ // Exported field_instance: 'node-newsletter-field_newsletter_text_block'.
+ $field_instances['node-newsletter-field_newsletter_text_block'] = array(
+ 'bundle' => 'newsletter',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'view_mode' => 'full',
+ ),
+ 'type' => 'field_collection_fields',
+ 'weight' => 5,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 4,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_text_block',
+ 'label' => 'Text Block',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(),
+ 'type' => 'field_collection_embed',
+ 'weight' => 11,
+ ),
+ );
+
+ // Exported field_instance: 'node-newsletter-field_newsletter_title'.
+ $field_instances['node-newsletter-field_newsletter_title'] = array(
+ 'bundle' => 'newsletter',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 6,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 3,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_title',
+ 'label' => 'Newsletter Title',
+ 'required' => 1,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'size' => 60,
+ ),
+ 'type' => 'text_textfield',
+ 'weight' => 3,
+ ),
+ );
+
+ // Exported field_instance: 'node-newsletter-field_newsletter_type'.
+ $field_instances['node-newsletter-field_newsletter_type'] = array(
+ 'bundle' => 'newsletter',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'taxonomy',
+ 'settings' => array(),
+ 'type' => 'taxonomy_term_reference_plain',
+ 'weight' => 0,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 2,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_type',
+ 'label' => 'Newsletter Type/Name',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_select',
+ 'weight' => 4,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'taxonomy_term-newsletter-field_newsletter_design'.
+ $field_instances['taxonomy_term-newsletter-field_newsletter_design'] = array(
+ 'bundle' => 'newsletter',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 'design-01',
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => '',
+ 'deleted' => 0,
+ 'description' => 'Choose a design for the email version of the newsletter. The web version will be displayed in the site\'s design.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'module' => 'list',
+ 'settings' => array(),
+ 'type' => 'list_default',
+ 'weight' => 3,
+ ),
+ ),
+ 'entity_type' => 'taxonomy_term',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_design',
+ 'label' => 'Design',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_select',
+ 'weight' => 2,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'taxonomy_term-newsletter-field_newsletter_footer'.
+ $field_instances['taxonomy_term-newsletter-field_newsletter_footer'] = array(
+ 'bundle' => 'newsletter',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => 'This text is displayed at the bottom of the email version of a newsletter.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 2,
+ ),
+ ),
+ 'entity_type' => 'taxonomy_term',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_footer',
+ 'label' => 'E-mail Footer',
+ 'required' => 0,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 1,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'rows' => 5,
+ ),
+ 'type' => 'text_textarea',
+ 'weight' => 4,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'taxonomy_term-newsletter-field_newsletter_name_image'.
+ $field_instances['taxonomy_term-newsletter-field_newsletter_name_image'] = array(
+ 'bundle' => 'newsletter',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'image_url_formatter',
+ 'settings' => array(
+ 'image_link' => '',
+ 'image_style' => 'medium',
+ 'url_type' => '',
+ ),
+ 'type' => 'image_url',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'taxonomy_term',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_newsletter_name_image',
+ 'label' => 'Image',
+ 'required' => 0,
+ 'settings' => array(
+ 'alt_field' => 0,
+ 'default_image' => 0,
+ 'file_directory' => 'newsletter-name-image',
+ 'file_extensions' => 'png gif jpg jpeg',
+ 'max_filesize' => '',
+ 'max_resolution' => '',
+ 'min_resolution' => '',
+ 'title_field' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'image',
+ 'settings' => array(
+ 'insert' => 0,
+ 'insert_absolute' => 0,
+ 'insert_class' => '',
+ 'insert_default' => 'auto',
+ 'insert_styles' => array(
+ 'auto' => 'auto',
+ 'colorbox__backstretch' => 0,
+ 'colorbox__el_hero' => 0,
+ 'colorbox__email_ad' => 0,
+ 'colorbox__email_feature_thumbnail' => 0,
+ 'colorbox__email_feature_thumbnail_large' => 0,
+ 'colorbox__email_large' => 0,
+ 'colorbox__email_medium' => 0,
+ 'colorbox__email_teaser_thumbnail' => 0,
+ 'colorbox__flexslider_full' => 0,
+ 'colorbox__flexslider_thumbnail' => 0,
+ 'colorbox__focal_point_preview' => 0,
+ 'colorbox__hero' => 0,
+ 'colorbox__large' => 0,
+ 'colorbox__large_square_thumbnail' => 0,
+ 'colorbox__large_wide_thumbnail' => 0,
+ 'colorbox__linkit_thumb' => 0,
+ 'colorbox__medium' => 0,
+ 'colorbox__preview' => 0,
+ 'colorbox__slider' => 0,
+ 'colorbox__slider-large' => 0,
+ 'colorbox__small' => 0,
+ 'colorbox__small_square_thumbnail' => 0,
+ 'colorbox__small_thumbnail' => 0,
+ 'colorbox__square' => 0,
+ 'colorbox__square_thumbnail' => 0,
+ 'colorbox__thumbnail' => 0,
+ 'icon_link' => 0,
+ 'image' => 0,
+ 'image_backstretch' => 0,
+ 'image_el_hero' => 0,
+ 'image_email_ad' => 0,
+ 'image_email_feature_thumbnail' => 0,
+ 'image_email_feature_thumbnail_large' => 0,
+ 'image_email_large' => 0,
+ 'image_email_medium' => 0,
+ 'image_email_teaser_thumbnail' => 0,
+ 'image_flexslider_full' => 0,
+ 'image_flexslider_thumbnail' => 0,
+ 'image_focal_point_preview' => 0,
+ 'image_hero' => 0,
+ 'image_large' => 0,
+ 'image_large_square_thumbnail' => 0,
+ 'image_large_wide_thumbnail' => 0,
+ 'image_linkit_thumb' => 0,
+ 'image_medium' => 0,
+ 'image_preview' => 0,
+ 'image_slider' => 0,
+ 'image_slider-large' => 0,
+ 'image_small' => 0,
+ 'image_small_square_thumbnail' => 0,
+ 'image_small_thumbnail' => 0,
+ 'image_square' => 0,
+ 'image_square_thumbnail' => 0,
+ 'image_thumbnail' => 0,
+ 'link' => 0,
+ ),
+ 'insert_width' => '',
+ 'preview_image_style' => 'thumbnail',
+ 'progress_indicator' => 'throbber',
+ ),
+ 'type' => 'image_image',
+ 'weight' => 3,
+ ),
+ );
+
+ // Exported field_instance: 'taxonomy_term-newsletter-field_newsletter_path'.
+ $field_instances['taxonomy_term-newsletter-field_newsletter_path'] = array(
+ 'bundle' => 'newsletter',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'taxonomy_term',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_path',
+ 'label' => 'Newsletter Path',
+ 'required' => 1,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'size' => 60,
+ ),
+ 'type' => 'text_textfield',
+ 'weight' => 1,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'taxonomy_term-newsletter-field_newsletter_social_links'.
+ $field_instances['taxonomy_term-newsletter-field_newsletter_social_links'] = array(
+ 'bundle' => 'newsletter',
+ 'deleted' => 0,
+ 'description' => 'Display a set of social icons at the bottom of your email. This will only display the icons horizontally. Other content will not display from the social links block will not display. Requires the Social Media bundle.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'module' => 'entityreference',
+ 'settings' => array(),
+ 'type' => 'entityreference_entity_id',
+ 'weight' => 4,
+ ),
+ ),
+ 'entity_type' => 'taxonomy_term',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_social_links',
+ 'label' => 'Social Links',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'inline_entity_form',
+ 'settings' => array(
+ 'fields' => array(),
+ 'type_settings' => array(
+ 'allow_clone' => 0,
+ 'allow_existing' => 1,
+ 'allow_new' => 1,
+ 'delete_references' => 0,
+ 'label_plural' => 'entities',
+ 'label_singular' => 'entity',
+ 'match_operator' => 'CONTAINS',
+ 'override_labels' => 0,
+ ),
+ ),
+ 'type' => 'inline_entity_form',
+ 'weight' => 31,
+ ),
+ );
+
+ // Translatables
+ // Included for use with string extractors like potx.
+ t('Ad/Promo');
+ t('Articles');
+ t('Body');
+ t('Choose a design for the email version of the newsletter. The web version will be displayed in the site\'s design.');
+ t('Choose how articles in this section should display.');
+ t('Design');
+ t('Display');
+ t('Display a set of social icons at the bottom of your email. This will only display the icons horizontally. Other content will not display from the social links block will not display. Requires the Social Media bundle.');
+ t('E-mail Footer');
+ t('Image');
+ t('Intro Image');
+ t('Link');
+ t('More Link');
+ t('Newsletter Path');
+ t('Newsletter Title');
+ t('Newsletter Type/Name');
+ t('Place an image at the top/beginning of your newsletter.');
+ t('Provide a link to read more articles.');
+ t('Section');
+ t('Section Contents');
+ t('Section Title');
+ t('Social Links');
+ t('Text Block');
+ t('This text is displayed at the bottom of the email version of a newsletter.');
+ t('Title');
+
+ return $field_instances;
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.features.inc b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.features.inc
new file mode 100644
index 000000000..32eb6c0d8
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.features.inc
@@ -0,0 +1,38 @@
+ "1");
+ }
+ if ($module == "field_group" && $api == "field_group") {
+ return array("version" => "1");
+ }
+ if ($module == "strongarm" && $api == "strongarm") {
+ return array("version" => "1");
+ }
+}
+
+/**
+ * Implements hook_node_info().
+ */
+function cu_newsletter_node_info() {
+ $items = array(
+ 'newsletter' => array(
+ 'name' => t('Newsletter'),
+ 'base' => 'node_content',
+ 'description' => t('Create a newsletter with a collection of articles.'),
+ 'has_title' => '1',
+ 'title_label' => t('Title'),
+ 'help' => '',
+ ),
+ );
+ drupal_alter('node_info', $items);
+ return $items;
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.features.taxonomy.inc b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.features.taxonomy.inc
new file mode 100644
index 000000000..574f5ef35
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.features.taxonomy.inc
@@ -0,0 +1,21 @@
+ array(
+ 'name' => 'Newsletter',
+ 'machine_name' => 'newsletter',
+ 'description' => 'Name/Title of Newsletter',
+ 'hierarchy' => 0,
+ 'module' => 'taxonomy',
+ 'weight' => 0,
+ ),
+ );
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.field_group.inc b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.field_group.inc
new file mode 100644
index 000000000..557372920
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.field_group.inc
@@ -0,0 +1,249 @@
+disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_newsletter_ads|node|newsletter|form';
+ $field_group->group_name = 'group_newsletter_ads';
+ $field_group->entity_type = 'node';
+ $field_group->bundle = 'newsletter';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_newsletter';
+ $field_group->data = array(
+ 'label' => 'Ads/Promos',
+ 'weight' => '22',
+ 'children' => array(
+ 0 => 'field_newsletter_ad_promo',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-newsletter-ads field-group-htab',
+ 'required_fields' => 1,
+ 'id' => '',
+ ),
+ ),
+ );
+ $field_groups['group_newsletter_ads|node|newsletter|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_newsletter_blocks|node|newsletter|form';
+ $field_group->group_name = 'group_newsletter_blocks';
+ $field_group->entity_type = 'node';
+ $field_group->bundle = 'newsletter';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_newsletter';
+ $field_group->data = array(
+ 'label' => 'Blocks',
+ 'weight' => '21',
+ 'children' => array(
+ 0 => 'field_newsletter_text_block',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-newsletter-blocks field-group-htab',
+ 'required_fields' => 1,
+ 'id' => '',
+ ),
+ ),
+ );
+ $field_groups['group_newsletter_blocks|node|newsletter|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_newsletter_intro|node|newsletter|form';
+ $field_group->group_name = 'group_newsletter_intro';
+ $field_group->entity_type = 'node';
+ $field_group->bundle = 'newsletter';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_newsletter';
+ $field_group->data = array(
+ 'label' => 'Intro',
+ 'weight' => '19',
+ 'children' => array(
+ 0 => 'body',
+ 1 => 'field_newsletter_intro_image',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-newsletter-intro field-group-htab',
+ 'required_fields' => 1,
+ 'id' => '',
+ ),
+ ),
+ );
+ $field_groups['group_newsletter_intro|node|newsletter|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_newsletter_sections|node|newsletter|form';
+ $field_group->group_name = 'group_newsletter_sections';
+ $field_group->entity_type = 'node';
+ $field_group->bundle = 'newsletter';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_newsletter';
+ $field_group->data = array(
+ 'label' => 'Sections',
+ 'weight' => '20',
+ 'children' => array(
+ 0 => 'field_newsletter_section',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-newsletter-sections field-group-htab',
+ 'required_fields' => 1,
+ 'id' => '',
+ ),
+ ),
+ );
+ $field_groups['group_newsletter_sections|node|newsletter|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_newsletter|node|newsletter|form';
+ $field_group->group_name = 'group_newsletter';
+ $field_group->entity_type = 'node';
+ $field_group->bundle = 'newsletter';
+ $field_group->mode = 'form';
+ $field_group->parent_name = '';
+ $field_group->data = array(
+ 'label' => 'Elements',
+ 'weight' => '5',
+ 'children' => array(
+ 0 => 'group_newsletter_ads',
+ 1 => 'group_newsletter_blocks',
+ 2 => 'group_newsletter_intro',
+ 3 => 'group_newsletter_sections',
+ ),
+ 'format_type' => 'htabs',
+ 'format_settings' => array(
+ 'formatter' => '',
+ 'instance_settings' => array(
+ 'classes' => 'group-newsletter field-group-htabs',
+ ),
+ ),
+ );
+ $field_groups['group_newsletter|node|newsletter|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_nl_section_articles|field_collection_item|field_newsletter_section_content|form';
+ $field_group->group_name = 'group_nl_section_articles';
+ $field_group->entity_type = 'field_collection_item';
+ $field_group->bundle = 'field_newsletter_section_content';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_nl_section_contents';
+ $field_group->data = array(
+ 'label' => 'Articles',
+ 'weight' => '1',
+ 'children' => array(
+ 0 => 'field_newsletter_articles',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-nl-section-articles field-group-htab',
+ 'required_fields' => 1,
+ ),
+ ),
+ );
+ $field_groups['group_nl_section_articles|field_collection_item|field_newsletter_section_content|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_nl_section_contents|field_collection_item|field_newsletter_section_content|form';
+ $field_group->group_name = 'group_nl_section_contents';
+ $field_group->entity_type = 'field_collection_item';
+ $field_group->bundle = 'field_newsletter_section_content';
+ $field_group->mode = 'form';
+ $field_group->parent_name = '';
+ $field_group->data = array(
+ 'label' => 'Section Contents',
+ 'weight' => '0',
+ 'children' => array(
+ 0 => 'group_nl_section_articles',
+ 1 => 'group_nl_section_custom',
+ ),
+ 'format_type' => 'htabs',
+ 'format_settings' => array(
+ 'formatter' => '',
+ 'instance_settings' => array(
+ 'classes' => 'group-nl-section-contents field-group-htabs',
+ 'id' => '',
+ ),
+ ),
+ );
+ $field_groups['group_nl_section_contents|field_collection_item|field_newsletter_section_content|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_nl_section_custom|field_collection_item|field_newsletter_section_content|form';
+ $field_group->group_name = 'group_nl_section_custom';
+ $field_group->entity_type = 'field_collection_item';
+ $field_group->bundle = 'field_newsletter_section_content';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_nl_section_contents';
+ $field_group->data = array(
+ 'label' => 'Custom',
+ 'weight' => '2',
+ 'children' => array(
+ 0 => 'field_nl_section_content_body',
+ 1 => 'field_nl_section_content_image',
+ 2 => 'field_nl_section_content_title',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-nl-section-custom field-group-htab',
+ 'required_fields' => 1,
+ ),
+ ),
+ );
+ $field_groups['group_nl_section_custom|field_collection_item|field_newsletter_section_content|form'] = $field_group;
+
+ // Translatables
+ // Included for use with string extractors like potx.
+ t('Ads/Promos');
+ t('Articles');
+ t('Blocks');
+ t('Custom');
+ t('Elements');
+ t('Intro');
+ t('Section Contents');
+ t('Sections');
+
+ return $field_groups;
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.info b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.info
new file mode 100644
index 000000000..235c2d311
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.info
@@ -0,0 +1,93 @@
+name = Newsletter
+core = 7.x
+package = CU-Newsletter
+dependencies[] = ctools
+dependencies[] = cu_newsletter_list
+dependencies[] = entityreference
+dependencies[] = express_field_bases
+dependencies[] = features
+dependencies[] = field_collection
+dependencies[] = field_group
+dependencies[] = image
+dependencies[] = image_url_formatter
+dependencies[] = inline_entity_form
+dependencies[] = link
+dependencies[] = list
+dependencies[] = options
+dependencies[] = smart_trim
+dependencies[] = strongarm
+dependencies[] = taxonomy
+dependencies[] = text
+features[ctools][] = ds:ds:1
+features[ctools][] = field_group:field_group:1
+features[ctools][] = strongarm:strongarm:1
+features[features_api][] = api:2
+features[field_base][] = field_newsletter_ad_image
+features[field_base][] = field_newsletter_ad_link
+features[field_base][] = field_newsletter_ad_promo
+features[field_base][] = field_newsletter_articles
+features[field_base][] = field_newsletter_block_body
+features[field_base][] = field_newsletter_block_title
+features[field_base][] = field_newsletter_design
+features[field_base][] = field_newsletter_display
+features[field_base][] = field_newsletter_footer
+features[field_base][] = field_newsletter_intro_image
+features[field_base][] = field_newsletter_more_link
+features[field_base][] = field_newsletter_name_image
+features[field_base][] = field_newsletter_path
+features[field_base][] = field_newsletter_section
+features[field_base][] = field_newsletter_section_content
+features[field_base][] = field_newsletter_section_title
+features[field_base][] = field_newsletter_social_links
+features[field_base][] = field_newsletter_text_block
+features[field_base][] = field_newsletter_title
+features[field_base][] = field_newsletter_type
+features[field_base][] = field_nl_section_content_body
+features[field_base][] = field_nl_section_content_image
+features[field_base][] = field_nl_section_content_title
+features[field_group][] = group_newsletter_ads|node|newsletter|form
+features[field_group][] = group_newsletter_blocks|node|newsletter|form
+features[field_group][] = group_newsletter_intro|node|newsletter|form
+features[field_group][] = group_newsletter_sections|node|newsletter|form
+features[field_group][] = group_newsletter|node|newsletter|form
+features[field_group][] = group_nl_section_articles|field_collection_item|field_newsletter_section_content|form
+features[field_group][] = group_nl_section_contents|field_collection_item|field_newsletter_section_content|form
+features[field_group][] = group_nl_section_custom|field_collection_item|field_newsletter_section_content|form
+features[field_instance][] = field_collection_item-field_newsletter_ad_promo-field_newsletter_ad_image
+features[field_instance][] = field_collection_item-field_newsletter_ad_promo-field_newsletter_ad_link
+features[field_instance][] = field_collection_item-field_newsletter_section-field_newsletter_display
+features[field_instance][] = field_collection_item-field_newsletter_section-field_newsletter_more_link
+features[field_instance][] = field_collection_item-field_newsletter_section-field_newsletter_section_content
+features[field_instance][] = field_collection_item-field_newsletter_section-field_newsletter_section_title
+features[field_instance][] = field_collection_item-field_newsletter_section_content-field_newsletter_articles
+features[field_instance][] = field_collection_item-field_newsletter_section_content-field_nl_section_content_body
+features[field_instance][] = field_collection_item-field_newsletter_section_content-field_nl_section_content_image
+features[field_instance][] = field_collection_item-field_newsletter_section_content-field_nl_section_content_title
+features[field_instance][] = field_collection_item-field_newsletter_text_block-field_newsletter_block_body
+features[field_instance][] = field_collection_item-field_newsletter_text_block-field_newsletter_block_title
+features[field_instance][] = node-newsletter-body
+features[field_instance][] = node-newsletter-field_newsletter_ad_promo
+features[field_instance][] = node-newsletter-field_newsletter_intro_image
+features[field_instance][] = node-newsletter-field_newsletter_section
+features[field_instance][] = node-newsletter-field_newsletter_text_block
+features[field_instance][] = node-newsletter-field_newsletter_title
+features[field_instance][] = node-newsletter-field_newsletter_type
+features[field_instance][] = taxonomy_term-newsletter-field_newsletter_design
+features[field_instance][] = taxonomy_term-newsletter-field_newsletter_footer
+features[field_instance][] = taxonomy_term-newsletter-field_newsletter_name_image
+features[field_instance][] = taxonomy_term-newsletter-field_newsletter_path
+features[field_instance][] = taxonomy_term-newsletter-field_newsletter_social_links
+features[node][] = newsletter
+features[taxonomy][] = newsletter
+features[variable][] = auto_entitylabel_node_newsletter
+features[variable][] = auto_entitylabel_pattern_node_newsletter
+features[variable][] = auto_entitylabel_php_node_newsletter
+features[variable][] = field_bundle_settings_node__newsletter
+features[variable][] = menu_options_newsletter
+features[variable][] = menu_parent_newsletter
+features[variable][] = node_options_newsletter
+features[variable][] = node_preview_newsletter
+features[variable][] = node_submitted_newsletter
+features[variable][] = pathauto_node_newsletter_pattern
+features[variable][] = pathauto_taxonomy_term_newsletter_pattern
+features_exclude[dependencies][ds] = ds
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.install b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.install
new file mode 100644
index 000000000..d778d9c19
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.install
@@ -0,0 +1,15 @@
+ MENU_CALLBACK,
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('cu_newsletter_publish_confirm_form', 4),
+ 'access callback' => 'user_access',
+ 'access arguments' => array('create newsletter content'),
+ 'title' => 'Publish newsletter and attached articles',
+ );
+ $items['newsletter/%'] = array(
+ 'page callback' => 'cu_newsletter_archive_page',
+ 'page arguments' => array(1),
+ 'access callback' => TRUE,
+ 'title callback' =>'cu_newsletter_archive_page_title',
+ 'title arguments' => array(1),
+ );
+
+ return $items;
+}
+
+/**
+* For editing page nodes, uses the 'some_other_theme' theme.
+*/
+function cu_newsletter_email_node_theme($node) {
+ $default_theme = variable_get('theme_default','');
+ $email_theme = variable_get('email_newsletter_theme', 'cuemail');
+ if (node_access('update', $node)) {
+ return $node->type == 'newsletter' ? $email_theme : $default_theme;
+ }
+ else {
+ return $default_theme;
+ }
+
+}
+
+/**
+* Implements hook_custom_theme().
+*/
+function mymodule_custom_theme() {
+ if ((arg(0) == 'node') && (arg(2) == 'email') && (user_access('edit any newsletter content'))) {
+ //return 'emailnewsletter';
+ }
+}
+
+/**
+ * Implements hook_page_alter().
+ * Add newsletter css
+ */
+function cu_newsletter_page_alter(&$page) {
+ drupal_add_css(drupal_get_path('module', 'cu_newsletter') . '/css/cu-newsletter.css');
+}
+
+/**
+ * Implements module_preprocess_page().
+ */
+function cu_newsletter_preprocess_page(&$vars) {
+ if(isset($vars['node']) && $vars['node']->type == "newsletter") {
+ if ((arg(0) == 'node') && (arg(2) != 'email') && (arg(2) != 'revisions')) {
+ if (user_access('edit any newsletter content')) {
+ $vars['tabs']['#primary'][] = array(
+ '#theme' => 'menu_local_task',
+ '#link' => array(
+ 'path' => 'node/%/email',
+ 'title' => t('Email Version'),
+ 'load_functions' => array(
+ 'node_load',
+ ),
+ 'access_callback' => 'user_access',
+ 'access_arguments' => array('edit any newsletter content'),
+ 'tab_root' => 'node/%',
+ 'tab_parent' => 'node/%',
+ 'href' => 'node/' . $vars['node']->nid . '/email',
+
+ ),
+ );
+ }
+
+ $newsletter_name = $vars['node']->field_newsletter_type[LANGUAGE_NONE][0]['taxonomy_term']->name;
+ $newsletter_logo = $vars['node']->field_newsletter_type[LANGUAGE_NONE][0]['taxonomy_term']->field_newsletter_name_image;
+ $newsletter_node_title = $vars['node']->title;
+ $newsletter_title = $newsletter_name . ' - ' . $newsletter_node_title;
+ //drupal_set_title($newsletter_title);
+ }
+ }
+}
+
+/**
+ * Implements module_preprocess_node().
+ */
+function cu_newsletter_preprocess_node(&$vars) {
+ global $theme;
+ if ($vars['type'] == 'newsletter' && $vars['view_mode'] == 'full') {
+ if ((arg(0) == 'node') && (arg(2) == 'email')) {
+
+ $vars['newsletter_name'] = $vars['field_newsletter_type'][0]['taxonomy_term']->name;
+ // Get newsletter design
+ $vars['design'] = $vars['field_newsletter_type'][0]['taxonomy_term']->field_newsletter_design[LANGUAGE_NONE][0]['value'];
+ // Add newsletter image
+ if (!empty($vars['field_newsletter_type'][0]['taxonomy_term']->field_newsletter_name_image)) {
+ $newsletter_logo_uri = $vars['field_newsletter_type'][0]['taxonomy_term']->field_newsletter_name_image[LANGUAGE_NONE][0]['uri'];
+ $vars['newsletter_logo_url'] = image_style_url('medium', $newsletter_logo_uri);
+ $vars['newsletter_logo_uri'] = $newsletter_logo_uri;
+ }
+ // Add newsletter footer
+ if (!empty($vars['field_newsletter_type'][0]['taxonomy_term']->field_newsletter_footer)) {
+ $vars['content']['field_newsletter_footer'] = $vars['field_newsletter_type'][0]['taxonomy_term']->field_newsletter_footer[LANGUAGE_NONE][0]['value'];
+ }
+
+ // Add teaser for email intro
+ $newsletter_node = node_load($vars['node']->nid);
+ $newsletter = node_view($newsletter_node, 'teaser');
+ $vars['content']['teaser'] = $newsletter['body'];
+ }
+ else {
+ $vars['column_classes'] = array(
+ 'main' => 'col-lg-12 col-md-12 col-sm-12 col-xs-12',
+ 'sidebar' => 'col-lg-12 col-md-12 col-sm-12 col-xs-12',
+ );
+ }
+ // Social Links
+ if (!empty($vars['field_newsletter_type'][0]['taxonomy_term']->field_newsletter_social_links)) {
+ global $base_url;
+ $social = $vars['field_newsletter_type'][0]['taxonomy_term']->field_newsletter_social_links[LANGUAGE_NONE][0]['target_id'];
+ $social = bean_load($social);
+ $links = array();
+ foreach ($social->field_social_links_collection[LANGUAGE_NONE] as $social_link) {
+ $links[] = field_collection_item_load($social_link['value']);
+ }
+ $social_links = array();
+ foreach ($links as $link) {
+ $type = $link->field_social_link_type[LANGUAGE_NONE][0]['value'];
+ $url = $link->field_social_link_url[LANGUAGE_NONE][0]['url'];
+ $img_path = $base_url . '/' . drupal_get_path('module', 'cu_newsletter') . '/images/social/' . $type . '.gif';
+ $social_links[] = l('
', $url, array('html' => TRUE));
+ }
+ $vars['social_links'] = join(' ', $social_links);
+ }
+
+ // Get sections and attached articles
+ $articles = array();
+ $sections = array_intersect_key($vars['elements']['field_newsletter_section'], element_children($vars['elements']['field_newsletter_section']));
+ foreach ($sections as $section) {
+
+ $section_item = $section['entity']['field_collection_item'];
+ $section_item = current($section_item);
+ if (!empty($section_item['field_newsletter_articles']['#items'])) {
+ foreach ($section_item['field_newsletter_articles']['#items'] as $reference) {
+
+ $nid = $reference['value'];
+ $articles[$nid] = $nid;
+ }
+
+ }
+ }
+ // Get node titles
+ if (!empty($articles)) {
+ $query = db_select('node', 'n')
+ ->fields('n', array('nid', 'title'))
+ ->condition('n.nid', $articles, 'IN');
+ $nodes = $query->execute()->fetchAll();
+ $titles = array();
+ foreach ($nodes as $node) {
+ $titles[] = $node->title;
+ }
+ $attached_articles = array(
+ '#theme' => 'item_list',
+ '#items' => $titles,
+ '#type' => 'ul',
+ '#attributes' => array('class' => 'title-list'),
+ );
+ $vars['attached_articles'] = render($attached_articles);
+ }
+ }
+}
+
+
+/**
+ * Implements module_preprocess_hook().
+ * Build article sections.
+ */
+function cu_newsletter_preprocess_entity(&$vars) {
+
+ $entity_type = $vars['elements']['#entity_type'];
+ $bundle = $vars['elements']['#bundle'];
+ // Only preprocess field_newsletter_section field collections
+ if ($entity_type == 'field_collection_item' && $bundle == 'field_newsletter_section') {
+ // Get view mode to render
+ $view_mode = $vars['content']['field_newsletter_display'][0]['#markup'];
+ // Get items
+ $items = $vars['content']['field_newsletter_section_content'];
+ // Get only the children items
+ $children = array_intersect_key($items, element_children($items));
+ // Count how many articles are in each section
+ $content_count = count($children);
+ $column_class = $content_count > 1 ? 'col-lg-6 col-md-6 col-sm-6 col-xs-12' : 'col-lg-12 col-md-12 col-sm-12 col-xs-12';
+
+ foreach ($children as $child) {
+ $item = current($child['entity']['field_collection_item']);
+ // If this contains article references, do those.
+ if (!empty($item['field_newsletter_articles'][0]['#markup'])) {
+ $nid = $item['field_newsletter_articles'][0]['#markup'];
+ $node = node_load($nid);
+ $vars['content']['newsletter_content'][$nid] = node_view($node, $view_mode);
+
+ $vars['content']['newsletter_content'][$nid]['#column_class'] = $column_class;
+ }
+ // Changes to entity reference changed the array structure.
+ // Adding an else to allow us to deploy this code separately.
+ elseif (!empty($item['field_newsletter_articles'][0]['#item']['target_id'])) {
+ $nid = $item['field_newsletter_articles'][0]['#item']['target_id'];
+ $node = node_load($nid);
+ $vars['content']['newsletter_content'][$nid] = node_view($node, $view_mode);
+
+ $vars['content']['newsletter_content'][$nid]['#column_class'] = $column_class;
+ }
+ // Otherwise do the custom text
+ elseif (!empty($item['field_nl_section_content_title']) || !empty($item['field_nl_section_content_body'])) {
+ $contents = array();
+ $contents['title'] = $item['field_nl_section_content_title'];
+ $contents['link'] = $item['field_nl_section_content_title']['#items'][0]['url'];
+ $contents['body'] = !empty($item['field_nl_section_content_body']) ? $item['field_nl_section_content_body'] : NULL;
+ $contents['image'] = !empty($item['field_nl_section_content_image']) ? $item['field_nl_section_content_image'] : NULL;
+ $contents['column_class'] = $column_class;
+ if ($view_mode == 'email_feature') {
+ $vars['content']['newsletter_content'][]['#markup'] = theme('cu_newsletter_custom_content_email_feature', array('content' => $contents));
+ }
+ if ($view_mode == 'email_teaser') {
+ $vars['content']['newsletter_content'][]['#markup'] = theme('cu_newsletter_custom_content_email_teaser', array('content' => $contents));
+ }
+ }
+ }
+
+ unset($vars['content']['field_newsletter_display']);
+ unset($vars['content']['field_newsletter_section_content']);
+ }
+ if ($entity_type == 'field_collection_item' && $bundle == 'field_newsletter_section_content') {
+ if (!empty($vars['content']['field_newsletter_articles'])) {
+ $nid = $vars['content']['field_newsletter_articles']['#items'][0]['target_id'];
+ }
+ }
+}
+
+/**
+ * Implements hook_theme().
+ */
+
+function cu_newsletter_theme(&$existing, $type, $theme, $path) {
+ $registry = array();
+ $template_dir = drupal_get_path('module', 'cu_newsletter') . '/templates';
+ $registry['cu_newsletter_block'] = array(
+ 'template' => 'cu-newsletter-block',
+ 'path' => $template_dir,
+ );
+ $registry['cu_newsletter_custom_content_email_teaser'] = array(
+ 'template' => 'cu-newsletter-custom-content-email-teaser',
+ 'path' => $template_dir,
+ );
+ $registry['cu_newsletter_custom_content_email_feature'] = array(
+ 'template' => 'cu-newsletter-custom-content-email-feature',
+ 'path' => $template_dir,
+ );
+ return $registry;
+}
+
+/**
+ * Implements hook_theme_registry_alter().
+ */
+function cu_newsletter_theme_registry_alter(&$theme_registry) {
+ $module_path = drupal_get_path('module', 'cu_newsletter');
+ $theme_registry_copy = $theme_registry;
+ _theme_process_registry($theme_registry_copy, 'phptemplate', 'theme_engine', 'field_collection', $module_path);
+ $theme_registry += array_diff_key($theme_registry_copy, $theme_registry);
+ $hooks = array('node');
+ foreach ($hooks as $h) {
+ if (isset($theme_registry[$h]['theme paths'])) {
+ $first_element = array_shift($theme_registry[$h]['theme paths']);
+ array_unshift($theme_registry[$h]['theme paths'], array_shift($theme_registry[$h]['theme paths']), $module_path);
+ }
+ }
+}
+
+/**
+ * Implements hook_image_default_styles().
+ */
+
+function cu_newsletter_image_default_styles() {
+ $styles = array();
+
+
+
+ return $styles;
+}
+
+/**
+ * Implements hook_node_update().
+ * Publish all referenced nodes.
+ */
+function cu_newsletter_node_insert($node) {
+ if ($node->type == 'newsletter' && $node->status == 1) {
+ $_GET['destination'] = 'admin/newsletter/publish/confirm/' . $node->nid;
+ }
+}
+
+/**
+ * Implements hook_node_update().
+ * Publish all referenced nodes.
+ */
+function cu_newsletter_node_update($node) {
+ if ($node->type == 'newsletter' && $node->status == 1) {
+ //$_GET['destination'] = 'admin/newsletter/publish/confirm/' . $node->nid;
+ }
+}
+
+/**
+ * Publish all referenced nodes.
+ */
+function _cu_newsletter_publish_nodes($nid) {
+ $node = node_load($nid);
+ if ($node && ($node->type == 'newsletter')) {
+ $status = $node->status;
+ $nids = array();
+ foreach ($node->field_newsletter_section[LANGUAGE_NONE] as $item) {
+ $item = entity_load('field_collection_item', array($item['value']));
+ $item = current($item);
+ foreach ($item->field_newsletter_section_content[LANGUAGE_NONE] as $content) {
+ // Load the field_newsletter_section_content field collection
+ // Look to see if there is an article reference and add to array
+ $content = entity_load('field_collection_item', array($content['value']));
+ $content = current($content);
+ if (!empty($content->field_newsletter_articles)) {
+ $nids[] = $content->field_newsletter_articles[LANGUAGE_NONE][0]['target_id'];
+ }
+ }
+ }
+ foreach ($nids as $nid) {
+ $node_reference = node_load($nid);
+ if ($node_reference->status == 0) {
+ $node_reference->status = 1;
+ node_save($node_reference);
+ $message = t('%title is now published',
+ array(
+ '%title' => $node_reference->title,
+ )
+ );
+ drupal_set_message($message);
+ }
+ }
+ $node->status = 1;
+ node_save($node);
+ $message = t('%title and all attached articles are now published',
+ array(
+ '%title' => $node->title,
+ )
+ );
+ drupal_set_message($message);
+ }
+}
+
+function _cu_newsletter_unpublish_nodes($nid) {
+ $node = node_load($nid);
+ if ($node && ($node->type == 'newsletter')) {
+ $node->status = 0;
+ node_save($node);
+ $message = t('%title has been set to published',
+ array(
+ '%title' => $node->title,
+ )
+ );
+ drupal_set_message($message);
+ }
+}
+/**
+ * Allowed values function for field_newsletter_display.
+ */
+function _cu_newsletter_display_values() {
+ return array(
+ 'email_teaser' => 'Teaser',
+ 'email_feature' => 'Feature',
+ );
+}
+
+/**
+ * Implements hook_permission().
+ *
+ * Add permission for adding a newsletter logo/flag
+ */
+
+function cu_newsletter_permission() {
+ return array(
+ 'add newsletter logo' => array(
+ 'title' => 'Add Newsletter Logo',
+ 'description' => 'Add a graphic title to the newsletter in place of text.',
+ ),
+ );
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ *
+ * Set newsletter image field access to false if user doesn't have permission.
+ */
+function cu_newsletter_form_taxonomy_form_term_alter(&$form, &$form_state, $form_id) {
+ if ($form['vocabulary_machine_name']['#value'] == 'newsletter') {
+ if (!user_access('add newsletter logo')) {
+ $form['field_newsletter_name_image']['#access'] = FALSE;
+ }
+ $form['#validate'][] = 'cu_newsletter_path_validate';
+ // Hide Description field
+ $form['description']['#access'] = FALSE;
+ }
+}
+/**
+ * Validation function to make sure that newsletters do not share the same path.
+ */
+function cu_newsletter_path_validate(&$form, &$form_state) {
+ $path = $form_state['values']['field_newsletter_path'][LANGUAGE_NONE][0]['value'];
+ $tid = $form_state['values']['tid'];
+ // Make sure entered value is converted to be path friendly
+ if (module_exists('pathauto')) {
+ module_load_include('inc', 'pathauto', 'pathauto');
+ $path = pathauto_cleanstring($path);
+ }
+
+ $query = db_select('field_data_field_newsletter_path', 'path');
+ $query->condition('path.field_newsletter_path_value', $path, '=');
+ // Make sure the term id assigned to that path is not the term being edited
+ $query->condition('path.entity_id', $tid, '!=');
+ $results = $query->countQuery()->execute()->fetchField();
+ if ($results) {
+ form_set_error('field_newsletter_path', t('A newsletter with this path already exists.'));
+ }
+ $form_state['values']['field_newsletter_path'][LANGUAGE_NONE][0]['value'] = $path;
+}
+
+function cu_newsletter_design_options() {
+ $options = array(
+ 'design-01' => 'Classic',
+ 'design-02' => 'Minimal',
+ 'design-03' => 'Light Boxed',
+ 'design-04' => 'Dark Boxed',
+ 'design-05' => 'Simple',
+ );
+ return $options;
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter.
+ */
+function cu_newsletter_form_newsletter_node_form_alter(&$form, &$form_state, $form_id) {
+ $form['#submit'][] = 'cu_newsletter_publish_confirm';
+
+}
+
+/**
+ * Submit function for cu_newsletter_form_newsletter_node_form_alter().
+ *
+ * Send user to cu_newsletter_publish_confirm_form if published.
+ */
+function cu_newsletter_publish_confirm($form, &$form_state) {
+
+ if ($form_state['values']['status'] == 1 && isset($form_state['values']['nid'])) {
+ $_GET['destination'] = 'admin/newsletter/publish/confirm/' . $form_state['values']['nid'];
+ }
+
+}
+
+/**
+ * Implements hook_form().
+ *
+ * Confirm form to check if attached articles should be published.
+ * If no, newsletter will be reverted to unpublished.
+ */
+function cu_newsletter_publish_confirm_form($form, &$form_state, $nid) {
+ $form = array();
+ $form['message'] = array(
+ '#markup' => 'Do you want to publish the newsletter and its attached articles? You cannot undo this action.',
+ '#prefix' => '',
+ '#suffix' => '
',
+
+ );
+ // Node ID of newsletter
+ $form['nid'] = array(
+ '#type' => 'hidden',
+ '#value' => $nid,
+ );
+ $form['publish'] = array(
+ '#type' => 'submit',
+ '#value' => 'Publish',
+ '#description' => 'Publish the newsletter and the attached articles',
+ '#submit' => array('cu_newsletter_publish_confirm_submit'),
+ '#attributes' => array('class' => array('btn-success')),
+ );
+ $form['unpublish'] = array(
+ '#type' => 'submit',
+ '#value' => 'Cancel and unpublish newsletter',
+ '#submit' => array('cu_newsletter_publish_confirm_unpublish'),
+ );
+ return $form;
+}
+
+function cu_newsletter_publish_confirm_submit($form, &$form_state) {
+ _cu_newsletter_publish_nodes($form_state['values']['nid']);
+ drupal_goto('node/' . $form_state['values']['nid']);
+}
+
+function cu_newsletter_publish_confirm_unpublish($form, &$form_state) {
+ _cu_newsletter_unpublish_nodes($form_state['values']['nid']);
+ drupal_goto('node/' . $form_state['values']['nid']);
+}
+
+/**
+ * Page callback function for newsletter/%.
+ */
+function cu_newsletter_archive_page($newsletter_path) {
+ $output = array();
+ $term = cu_newsletter_load_by_path($newsletter_path);
+
+ $query = db_select('node', 'n');
+ $query->orderBy('created', 'DESC');
+ $query = $query->extend('PagerDefault')->limit(10);
+ $query->condition('n.type', 'newsletter', '=');
+ $query->condition('n.status', 1, '=');
+ $query->fields('n', array('nid', 'title', 'sticky'));
+ // Add newsletter type condition
+ $query->join("field_data_field_newsletter_type", "type", "n.nid = type.entity_id");
+ $query->fields('type', array('field_newsletter_type_tid'));
+ $query->condition('type.field_newsletter_type_tid', $term->tid, '=');
+
+ $nids = $query->execute()->fetchCol();
+ $nodes = node_load_multiple($nids);
+
+ $output['newsletters'] = node_view_multiple($nodes, 'teaser');
+ $output['newsletters']['#weight'] = 99;
+ $output['pager'] = array(
+ '#theme' => 'pager',
+ '#tags' => array(),
+ '#weight' => 100.
+ );
+
+ return $output;
+}
+/**
+ * Title callback function for newsletter/%.
+ */
+function cu_newsletter_archive_page_title($newsletter_path) {
+ $term = cu_newsletter_load_by_path($newsletter_path);
+ $term = taxonomy_term_load($term->tid);
+ $output = $term->name . ' Archive';
+ return $output;
+}
+
+/**
+ * Returns term name, id, from newsletter term path.
+ */
+function cu_newsletter_load_by_path($path) {
+ $vocab = taxonomy_vocabulary_machine_name_load('newsletter');
+ $query = db_select('taxonomy_term_data', 't');
+ $query->fields('t', array('tid', 'name', 'vid'));
+ $query->condition('t.vid', $vocab->vid, '=');
+ $query->join("field_data_field_newsletter_path", "path", "t.tid = path.entity_id");
+ $query->fields('path', array('field_newsletter_path_value'));
+ $query->condition('path.field_newsletter_path_value', $path, '=');
+ $term = $query->execute()->fetch();
+ return $term;
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.strongarm.inc b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.strongarm.inc
new file mode 100644
index 000000000..16cd04f43
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/cu_newsletter.strongarm.inc
@@ -0,0 +1,163 @@
+disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'auto_entitylabel_node_newsletter';
+ $strongarm->value = '1';
+ $export['auto_entitylabel_node_newsletter'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'auto_entitylabel_pattern_node_newsletter';
+ $strongarm->value = '[node:field-newsletter-type:name] - [node:field-newsletter-title]';
+ $export['auto_entitylabel_pattern_node_newsletter'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'auto_entitylabel_php_node_newsletter';
+ $strongarm->value = 0;
+ $export['auto_entitylabel_php_node_newsletter'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'field_bundle_settings_node__newsletter';
+ $strongarm->value = array(
+ 'view_modes' => array(
+ 'teaser' => array(
+ 'custom_settings' => TRUE,
+ ),
+ 'full' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'rss' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'diff_standard' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'token' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'promo' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'sidebar' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'table' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'title' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'grid' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'revision' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'email_feature' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'email_teaser' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'embed' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'feature' => array(
+ 'custom_settings' => FALSE,
+ ),
+ ),
+ 'extra_fields' => array(
+ 'form' => array(
+ 'metatags' => array(
+ 'weight' => '5',
+ ),
+ 'title' => array(
+ 'weight' => '0',
+ ),
+ 'path' => array(
+ 'weight' => '2',
+ ),
+ 'redirect' => array(
+ 'weight' => '1',
+ ),
+ ),
+ 'display' => array(),
+ ),
+ );
+ $export['field_bundle_settings_node__newsletter'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'menu_options_newsletter';
+ $strongarm->value = array(
+ 0 => 'menu-footer-menu',
+ 1 => 'main-menu',
+ 2 => 'menu-secondary-menu',
+ );
+ $export['menu_options_newsletter'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'menu_parent_newsletter';
+ $strongarm->value = 'main-menu:0';
+ $export['menu_parent_newsletter'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'node_options_newsletter';
+ $strongarm->value = array(
+ 0 => 'status',
+ 1 => 'revision',
+ );
+ $export['node_options_newsletter'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'node_preview_newsletter';
+ $strongarm->value = '1';
+ $export['node_preview_newsletter'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'node_submitted_newsletter';
+ $strongarm->value = 0;
+ $export['node_submitted_newsletter'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'pathauto_node_newsletter_pattern';
+ $strongarm->value = 'newsletter/[node:field-newsletter-type:field-newsletter-path]/[node:field-newsletter-title]';
+ $export['pathauto_node_newsletter_pattern'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'pathauto_taxonomy_term_newsletter_pattern';
+ $strongarm->value = '';
+ $export['pathauto_taxonomy_term_newsletter_pattern'] = $strongarm;
+
+ return $export;
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/blogger.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/blogger.gif
new file mode 100644
index 000000000..73a26b25b
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/blogger.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/email.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/email.gif
new file mode 100644
index 000000000..6f50612a5
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/email.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/facebook.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/facebook.gif
new file mode 100644
index 000000000..e961cdf26
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/facebook.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/feed.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/feed.gif
new file mode 100644
index 000000000..3a0d9115a
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/feed.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/flickr.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/flickr.gif
new file mode 100644
index 000000000..6d56b6074
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/flickr.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/googleplus.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/googleplus.gif
new file mode 100644
index 000000000..6c6d72294
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/googleplus.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/instagram.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/instagram.gif
new file mode 100644
index 000000000..48d771a53
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/instagram.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/linkedin.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/linkedin.gif
new file mode 100644
index 000000000..6c27852f0
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/linkedin.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/myspace.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/myspace.gif
new file mode 100644
index 000000000..63f9ef217
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/myspace.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/pinterest.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/pinterest.gif
new file mode 100644
index 000000000..8a5f1e9e7
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/pinterest.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/snapchat.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/snapchat.gif
new file mode 100644
index 000000000..6c38927a5
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/snapchat.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/twitter.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/twitter.gif
new file mode 100644
index 000000000..c75378450
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/twitter.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/vimeo.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/vimeo.gif
new file mode 100644
index 000000000..3cb6f61fd
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/vimeo.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/vine.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/vine.gif
new file mode 100644
index 000000000..45da782e7
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/vine.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/youtube.gif b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/youtube.gif
new file mode 100644
index 000000000..9c7eb1593
Binary files /dev/null and b/modules/custom/cu_newsletter_bundle/cu_newsletter/images/social/youtube.gif differ
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/scss/cu-newsletter.scss b/modules/custom/cu_newsletter_bundle/cu_newsletter/scss/cu-newsletter.scss
new file mode 100644
index 000000000..d899efa21
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/scss/cu-newsletter.scss
@@ -0,0 +1,175 @@
+.newsletter-intro {
+ border-bottom: 1px solid #e7e7e7;
+ padding-bottom: 20px;
+ margin-bottom: 20px;
+
+}
+.newsletter-hero {
+
+ img {
+ max-width: 100%;
+ height: auto;
+ margin-bottom: 20px;
+ }
+}
+.newsletter-intro p:last-child {
+ margin-bottom: 0;
+}
+
+.node-view-mode-email-feature,
+.node-view-mode-email-teaser {
+ //border-bottom: 1px solid #e7e7e7;
+ padding-bottom: 20px;
+ margin-bottom: 20px;
+}
+.node-view-mode-email-teaser {
+ img {
+ float: right;
+ margin: 0 0 10px 10px;
+ width:80px;
+ height: auto;
+ }
+ h3 {
+ font-size: 110%;
+ }
+}
+.node-view-mode-email-feature-content,
+.node-view-mode-email-teaser-content {
+ //overflow: hidden;
+}
+.newsletter-section-wrapper > div:last-child {
+ // border: none;
+ // padding-bottom: 0;
+ //margin-bottom: 0;
+}
+
+img.image-email_feature_thumbnail,
+img.image-email_feature_thumbnail_large {
+ margin: 0 0 10px 0;
+ display: block;
+ width:100%;
+ height: auto;
+ max-width: 100%;
+
+}
+img.image-email_teaser_thumbnail1 {
+ float: left;
+ margin: 0 10px 10px 0;
+ width:80px;
+ height: auto;
+}
+@media (min-width: 480px) {
+ img.image-email_teaser_thumbnail {
+ width:120px;
+ height: auto;
+ }
+}
+.node-view-mode-email-feature-content .article-tags a,
+.node-view-mode-email-teaser-content .article-tags a {
+ background-color:#e7e7e7;
+ color:#656565;
+ padding:4px;
+ margin:0 5px 5px 0;
+ font-size:10px;
+ font-weight:bold;
+ text-transform:uppercase;
+}
+p.field-name-field-newsletter-more-link {
+ //text-align: center;
+ //padding:10px 0;
+ //border-top:1px solid #e7e7e7;
+ font-weight:600;
+ //text-align: right;
+ margin-bottom: 40px;
+
+ a:before {
+ font-family: "FontAwesome";
+ content: "\f061";
+ padding-right:8px;
+ }
+}
+.newsletter-text-block {
+ h2.field-name-field-newsletter-block-title {
+ font-size: 130%;
+ }
+ .field-name-field-newsletter-block-body {
+ h2 {
+ font-size: 130%;
+ }
+ h3 {
+ font-size: 120%;
+ }
+ h4 {
+ font-size: 110%;
+ }
+ h5 {
+ font-size: 105%;
+ }
+ h6 {
+ font-size: 100%;
+ }
+ }
+}
+.newsletter-text-block {
+ margin:0 0 20px 0;
+}
+
+.newsletter-ad-promo {
+ margin-bottom: 0;
+}
+.newsletter-ad-promo img {
+ width: 100%;
+ height: auto;
+}
+.newsletter-ad-promo-wrapper {
+
+ margin-bottom: 20px;
+}
+.newsletter-ad-promo img {
+ display: block;
+ margin-bottom: 20px;
+}
+
+.newsletter-view-mode-teaser {
+ h2.node-title-only,
+ h3.node-title-only {
+ margin: 0;
+ }
+ img {
+ width:100%;
+ height: auto;
+ }
+}
+
+/* Admin Tabs */
+ul.primary li a.email-version:before {
+ content: "\f0e0";
+}
+ul.tabs--primary li a.email-version:before {
+ content: "\f0e0";
+}
+
+/* Custom content */
+.view-mode-custom-content-content {
+ h2, h3 {
+ font-size:110%;
+ }
+ h4 {
+ font-size:106%;
+ }
+ h5 {
+ font-size:104%;
+ }
+ h6 {
+ font-size:100%;
+ }
+}
+
+.newsletter-section-wrapper,
+.newsletter-text-blocks {
+ .col-lg-6:nth-child(2n+1),
+ .col-md-6:nth-child(2n+1),
+ .col-sm-6:nth-child(2n+1) {
+ clear:left;
+ }
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/cu-newsletter-block.tpl.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/cu-newsletter-block.tpl.php
new file mode 100644
index 000000000..7eb806039
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/cu-newsletter-block.tpl.php
@@ -0,0 +1,3 @@
+
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/cu-newsletter-custom-content-email-feature.tpl.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/cu-newsletter-custom-content-email-feature.tpl.php
new file mode 100644
index 000000000..a5fc54fe0
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/cu-newsletter-custom-content-email-feature.tpl.php
@@ -0,0 +1,18 @@
+
+
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/cu-newsletter-custom-content-email-teaser.tpl.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/cu-newsletter-custom-content-email-teaser.tpl.php
new file mode 100644
index 000000000..a07b35edd
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/cu-newsletter-custom-content-email-teaser.tpl.php
@@ -0,0 +1,18 @@
+
+
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/field-collection-item--field_newsletter_ad_promo.tpl.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/field-collection-item--field_newsletter_ad_promo.tpl.php
new file mode 100644
index 000000000..9f2209c4b
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/field-collection-item--field_newsletter_ad_promo.tpl.php
@@ -0,0 +1,15 @@
+ TRUE));
+ }
+ else {
+ $ad = $img;
+ }
+?>
+
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/field-collection-item--field_newsletter_section.tpl.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/field-collection-item--field_newsletter_section.tpl.php
new file mode 100644
index 000000000..78d318ae3
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/field-collection-item--field_newsletter_section.tpl.php
@@ -0,0 +1,5 @@
+
+
+
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/field-collection-item--field_newsletter_section_content.tpl.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/field-collection-item--field_newsletter_section_content.tpl.php
new file mode 100644
index 000000000..ce6e33d82
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/field-collection-item--field_newsletter_section_content.tpl.php
@@ -0,0 +1,2 @@
+
+
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/field-collection-item--field_newsletter_text_block.tpl.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/field-collection-item--field_newsletter_text_block.tpl.php
new file mode 100644
index 000000000..2855775ce
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/field-collection-item--field_newsletter_text_block.tpl.php
@@ -0,0 +1,3 @@
+
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/node--article--email_feature.tpl.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/node--article--email_feature.tpl.php
new file mode 100644
index 000000000..bfdbf0f11
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/node--article--email_feature.tpl.php
@@ -0,0 +1,20 @@
+
+
+
+
+
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/node--article--email_teaser.tpl.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/node--article--email_teaser.tpl.php
new file mode 100644
index 000000000..69d0e6abc
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/node--article--email_teaser.tpl.php
@@ -0,0 +1,14 @@
+
+
+
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/node--newsletter--teaser.tpl.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/node--newsletter--teaser.tpl.php
new file mode 100644
index 000000000..b1948b90c
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/node--newsletter--teaser.tpl.php
@@ -0,0 +1,13 @@
+
+
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/node--newsletter.tpl.php b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/node--newsletter.tpl.php
new file mode 100644
index 000000000..97db7c227
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter/templates/node--newsletter.tpl.php
@@ -0,0 +1,65 @@
+ 'col-lg-12 col-md-12 col-sm-12 col-xs-12',
+ 'sidebar' => 'col-lg-12 col-md-12 col-sm-12 col-xs-12',
+ );
+ }
+?>
+
+
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter_bundle.info b/modules/custom/cu_newsletter_bundle/cu_newsletter_bundle.info
new file mode 100644
index 000000000..4d3e1647e
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter_bundle.info
@@ -0,0 +1,33 @@
+name = Newsletter Bundle
+description = Create email newsletters from article content on your site. Create responsive HTML code to copy and paste into Salesforce - Marketing cloud. Requires the News and Article Bundle and an Ecomm account.
+core = 7.x
+package = CU-Newsletter
+version = 7.x-1.4
+project = cu_newsletter_bundle
+project status url = https://github.com/CuBoulder/cu_newsletter_bundle
+project_demo_url = http://www.colorado.edu/webcentral/node/1534
+
+dependencies[] = ctools
+dependencies[] = entityreference
+dependencies[] = features
+dependencies[] = field_collection
+dependencies[] = field_group
+dependencies[] = image
+dependencies[] = link
+dependencies[] = list
+dependencies[] = options
+dependencies[] = smart_trim
+dependencies[] = strongarm
+dependencies[] = text
+dependencies[] = cu_newsletter
+dependencies[] = cu_newsletter_list
+dependencies[] = cu_news_bundle
+
+bundle_cache_clear = 1
+bundle_request = 1
+bundle_group = 'request_bundles'
+
+bundle_roles[] = developer
+bundle_roles[] = administrator
+bundle_roles[] = site_owner
+bundle_roles[] = configuration_manager
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter_bundle.module b/modules/custom/cu_newsletter_bundle/cu_newsletter_bundle.module
new file mode 100644
index 000000000..581b6306f
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter_bundle.module
@@ -0,0 +1,117 @@
+ array(
+ 'administer newsletter vocabulary terms',
+ 'create newsletter content',
+ 'delete any newsletter content',
+ 'delete own newsletter content',
+ 'edit any newsletter content',
+ 'edit own newsletter content',
+ 'create any newsletter_list bean',
+ 'delete any newsletter_list bean',
+ 'edit any newsletter_list bean',
+ 'view any newsletter_list bean',
+ 'administer newsletter vocabulary terms',
+ ),
+ 'content_editor' => array(
+ 'administer newsletter vocabulary terms',
+ 'create newsletter content',
+ 'delete any newsletter content',
+ 'delete own newsletter content',
+ 'edit any newsletter content',
+ 'edit own newsletter content',
+ 'create any newsletter_list bean',
+ 'delete any newsletter_list bean',
+ 'edit any newsletter_list bean',
+ 'view any newsletter_list bean',
+ ),
+ 'developer' => array(
+ 'add newsletter logo',
+ 'administer newsletter vocabulary terms',
+ 'create newsletter content',
+ 'delete any newsletter content',
+ 'delete own newsletter content',
+ 'edit any newsletter content',
+ 'edit own newsletter content',
+ 'create any newsletter_list bean',
+ 'delete any newsletter_list bean',
+ 'edit any newsletter_list bean',
+ 'view any newsletter_list bean',
+ ),
+ 'edit_my_content' => array(
+ 'edit own newsletter content',
+ 'view any newsletter_list bean',
+ ),
+ 'edit_only' => array(
+ 'edit any newsletter content',
+ 'edit any newsletter_list bean',
+ 'view any newsletter_list bean',
+ ),
+ 'site_editor' => array(
+ 'administer newsletter vocabulary terms',
+ 'create newsletter content',
+ 'delete any newsletter content',
+ 'delete own newsletter content',
+ 'edit any newsletter content',
+ 'edit own newsletter content',
+ 'create any newsletter_list bean',
+ 'delete any newsletter_list bean',
+ 'edit any newsletter_list bean',
+ 'view any newsletter_list bean',
+ 'administer newsletter vocabulary terms',
+ ),
+ 'site_owner' => array(
+ 'administer newsletter vocabulary terms',
+ 'create newsletter content',
+ 'delete any newsletter content',
+ 'delete own newsletter content',
+ 'edit any newsletter content',
+ 'edit own newsletter content',
+ 'create any newsletter_list bean',
+ 'delete any newsletter_list bean',
+ 'edit any newsletter_list bean',
+ 'view any newsletter_list bean',
+ 'administer newsletter vocabulary terms',
+ ),
+ 'anonymous user' => array(
+ 'view any newsletter_list bean',
+ ),
+ 'authenticated user' => array(
+ 'view any newsletter_list bean',
+ ),
+ );
+ if (isset($permissions[$role])) {
+ return $permissions[$role];
+ }
+}
+
+/**
+ * Implements hook_express_node_list_groups().
+ * Provided by express_add_content.api.php.
+ */
+function cu_newsletter_bundle_express_node_list_groups($bundles) {
+
+ $bundles['news']['types'][] = 'Newsletter';
+
+ return $bundles;
+}
+
+/**
+ * Implements hook_express_bean_list_groups().
+ * Provided by express_add_content.api.php.
+ */
+function cu_newsletter_bundle_express_bean_list_groups($bundles) {
+
+ $bundles['news']['types'][] = 'Newsletter List';
+
+ return $bundles;
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.bean.inc b/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.bean.inc
new file mode 100644
index 000000000..4ad938207
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.bean.inc
@@ -0,0 +1,23 @@
+disabled = FALSE; /* Edit this to true to make a default bean_type disabled initially */
+ $bean_type->api_version = 5;
+ $bean_type->name = 'newsletter_list';
+ $bean_type->label = 'Newsletter List';
+ $bean_type->options = '';
+ $bean_type->description = '';
+ $export['newsletter_list'] = $bean_type;
+
+ return $export;
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.features.field_base.inc b/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.features.field_base.inc
new file mode 100644
index 000000000..8e2896055
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.features.field_base.inc
@@ -0,0 +1,63 @@
+ 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_items_display',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(),
+ 'allowed_values_function' => 'cu_newsletter_list_items_display',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_text',
+ );
+
+ // Exported field_base: 'field_newsletter_list_type_name'.
+ $field_bases['field_newsletter_list_type_name'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_newsletter_list_type_name',
+ 'indexes' => array(
+ 'tid' => array(
+ 0 => 'tid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'taxonomy',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 0 => array(
+ 'vocabulary' => 'newsletter',
+ 'parent' => 0,
+ ),
+ ),
+ ),
+ 'translatable' => 0,
+ 'type' => 'taxonomy_term_reference',
+ );
+
+ return $field_bases;
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.features.field_instance.inc b/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.features.field_instance.inc
new file mode 100644
index 000000000..ce8a77e25
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.features.field_instance.inc
@@ -0,0 +1,90 @@
+ 'newsletter_list',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => '10_pager',
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => '',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'module' => 'list',
+ 'settings' => array(),
+ 'type' => 'list_default',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_items_display',
+ 'label' => 'Items to Display',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_select',
+ 'weight' => 3,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'bean-newsletter_list-field_newsletter_list_type_name'.
+ $field_instances['bean-newsletter_list-field_newsletter_list_type_name'] = array(
+ 'bundle' => 'newsletter_list',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_newsletter_list_type_name',
+ 'label' => 'Newsletter Type/name',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_select',
+ 'weight' => 2,
+ ),
+ );
+
+ // Translatables
+ // Included for use with string extractors like potx.
+ t('Items to Display');
+ t('Newsletter Type/name');
+
+ return $field_instances;
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.features.inc b/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.features.inc
new file mode 100644
index 000000000..49002b646
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.features.inc
@@ -0,0 +1,17 @@
+ "5");
+ }
+ if ($module == "strongarm" && $api == "strongarm") {
+ return array("version" => "1");
+ }
+}
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.info b/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.info
new file mode 100644
index 000000000..10b20304a
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.info
@@ -0,0 +1,19 @@
+name = CU Newsletter List
+core = 7.x
+package = CU-Newsletter
+dependencies[] = cu_newsletter
+dependencies[] = cu_newsletter_bundle
+dependencies[] = features
+dependencies[] = list
+dependencies[] = options
+dependencies[] = strongarm
+dependencies[] = taxonomy
+features[bean_type][] = newsletter_list
+features[ctools][] = bean_admin_ui:bean:5
+features[ctools][] = strongarm:strongarm:1
+features[features_api][] = api:2
+features[field_base][] = field_newsletter_items_display
+features[field_base][] = field_newsletter_list_type_name
+features[field_instance][] = bean-newsletter_list-field_newsletter_items_display
+features[field_instance][] = bean-newsletter_list-field_newsletter_list_type_name
+features_exclude[dependencies][bean_admin_ui] = bean_admin_ui
diff --git a/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.module b/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.module
new file mode 100644
index 000000000..ea8a2707c
--- /dev/null
+++ b/modules/custom/cu_newsletter_bundle/cu_newsletter_list/cu_newsletter_list.module
@@ -0,0 +1,69 @@
+field_newsletter_items_display[LANGUAGE_NONE][0]['value'];
+ $query->range(0, $items);
+ $query->condition('n.type', 'newsletter', '=');
+ $query->condition('n.status', 1, '=');
+ $query->fields('n', array('nid'));
+ // Filter by newsletter type
+ if (isset($vars['bean']->field_newsletter_list_type_name[LANGUAGE_NONE])) {
+ $newsletter_tid = $vars['bean']->field_newsletter_list_type_name[LANGUAGE_NONE][0]['tid'];
+ $query->join('field_data_field_newsletter_type', 'type', 'n.nid = type.entity_id');
+ $query->fields('type', array('field_newsletter_type_tid'));
+ $query->condition('type.field_newsletter_type_tid', $newsletter_tid, '=');
+ }
+
+
+ $query->distinct();
+ $query->groupBy('n.nid');
+ // Display the newest first.
+ $query->orderBy('created', 'DESC');
+ $nids = $query->execute()->fetchCol();
+ $nodes = node_load_multiple($nids);
+ $tag = 'strong';
+ foreach ($nodes as $key => $node) {
+ $nodes[$key]->heading_tag['#tag'] = $tag;
+ }
+ $output['newsletters'] = node_view_multiple($nodes, 'teaser');
+ $output['newsletters']['#weight'] = 99;
+
+ // Load newsletter term
+ $term = taxonomy_term_load($newsletter_tid);
+ $path = $term->field_newsletter_path[LANGUAGE_NONE][0]['safe_value'];
+ $output['archive_link']['#markup'] = l($term->name . ' Archive', 'newsletter/' . $path, array('attributes' => array('class' => array('more-link'))));
+ $output['archive_link']['#weight'] = 100;
+
+ $vars['content'] = $output;
+ }
+}
+
+function cu_newsletter_list_items_display() {
+ return array(
+ '1' => '1',
+ '2' => '2',
+ '3' => '3',
+ '4' => '4',
+ '5' => '5',
+ '6' => '6',
+ '7' => '7',
+ '8' => '8',
+ '9' => '9',
+ '10' => '10',
+ );
+}
diff --git a/modules/custom/cu_publications_bundle/cu_publication/Gemfile b/modules/custom/cu_publications_bundle/cu_publication/Gemfile
new file mode 100644
index 000000000..739ccce84
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/Gemfile
@@ -0,0 +1,7 @@
+# A sample Gemfile
+source "https://rubygems.org"
+
+# gem "rails"
+gem 'sass', "3.2.19"
+gem 'compass', "0.12.6"
+gem 'zen-grids', "1.4"
diff --git a/modules/custom/cu_publications_bundle/cu_publication/Gemfile.lock b/modules/custom/cu_publications_bundle/cu_publication/Gemfile.lock
new file mode 100644
index 000000000..0f883c4ac
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/Gemfile.lock
@@ -0,0 +1,23 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ chunky_png (1.3.4)
+ compass (0.12.6)
+ chunky_png (~> 1.2)
+ fssm (>= 0.2.7)
+ sass (~> 3.2.19)
+ fssm (0.2.10)
+ sass (3.2.19)
+ zen-grids (1.4)
+ sass (>= 3.1)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ compass (= 0.12.6)
+ sass (= 3.2.19)
+ zen-grids (= 1.4)
+
+BUNDLED WITH
+ 1.10.2
diff --git a/modules/custom/cu_publications_bundle/cu_publication/config.rb b/modules/custom/cu_publications_bundle/cu_publication/config.rb
new file mode 100644
index 000000000..98c9eb887
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/config.rb
@@ -0,0 +1,56 @@
+#
+# This file is only needed for Compass/Sass integration. If you are not using
+# Compass, you may safely ignore or delete this file.
+#
+# If you'd like to learn more about Sass and Compass, see the sass/README.txt
+# file for more information.
+#
+cache = false
+
+# Change this to :production when ready to deploy the CSS to the live server.
+#environment = :development
+environment = :production
+
+# In development, we can turn on the FireSass-compatible debug_info.
+firesass = false
+#firesass = true
+
+
+# Location of the theme's resources.
+css_dir = "css"
+sass_dir = "scss"
+extensions_dir = "sass-extensions"
+images_dir = "images"
+javascripts_dir = "js"
+
+
+# Require any additional compass plugins installed on your system.
+#require 'ninesixty'
+require 'zen-grids'
+
+# Assuming this theme is in sites/*/themes/THEMENAME, you can add the partials
+# included with a module by uncommenting and modifying one of the lines below:
+#add_import_path "../../../default/modules/FOO"
+#add_import_path "../../../all/modules/FOO"
+#add_import_path "../../../../modules/FOO"
+
+
+##
+## You probably don't need to edit anything below this.
+##
+
+# You can select your preferred output style here (can be overridden via the command line):
+# output_style = :expanded or :nested or :compact or :compressed
+output_style = (environment == :development) ? :expanded : :compact
+
+# To enable relative paths to assets via compass helper functions. Since Drupal
+# themes can be installed in multiple locations, we don't need to worry about
+# the absolute path to the theme from the server root.
+relative_assets = true
+
+# To disable debugging comments that display the original location of your selectors. Uncomment:
+# line_comments = false
+
+# Pass options to sass. For development, we turn on the FireSass-compatible
+# debug_info if the firesass config variable above is true.
+sass_options = (environment == :development && firesass == true) ? {:debug_info => true} : {}
diff --git a/modules/custom/cu_publications_bundle/cu_publication/css/cu-publication.css b/modules/custom/cu_publications_bundle/cu_publication/css/cu-publication.css
new file mode 100644
index 000000000..890b07141
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/css/cu-publication.css
@@ -0,0 +1,69 @@
+.magazine-section-wrapper { overflow: hidden; }
+
+h2.field-name-field-issue-section-title { margin-bottom: 20px; }
+
+.issue-contents p.date, .issue-contents .author-meta { display: none; }
+
+.issue-section-contents div.node-view-mode-feature:last-child, .issue-section-contents div.node-view-mode-teaser:last-child { border-bottom: none; }
+
+.field-name-field-article-author { margin-top: 20px; padding-top: 20px; border-top: 1px solid #e7e7e7; }
+
+.field-name-field-article-author .person-view-mode-teaser-content { border-bottom: none; }
+
+@media all and (min-width: 720px) { .issue-cover-image img { width: 100%; height: auto; max-width: 100%; } }
+@media all and (max-width: 719px) { .issue-notes { border-bottom: 1px solid #e7e7e7; padding-bottom: 20px; margin-bottom: 20px; } }
+.issue-cover-image img { display: block; margin-bottom: 10px; }
+
+.publication-name-wrapper { padding: 20px 20px; background-color: #272727; color: #fff; overflow: hidden; }
+.publication-name-wrapper img { float: right; }
+
+#zone-intro img.publication-logo, #intro-wide-wrapper img.publication-logo { width: auto; height: auto; max-width: 100% !important; }
+
+body .page-title-wrapper h1.long-title { font-size: 180%; }
+
+/* Current Issue Block */
+h3.current-issue-title { text-align: center; font-size: 100%; margin: 0; padding: 5px 0; }
+
+/* Latest Issues Block */
+.issue-view-mode-grid { margin-bottom: 20px; }
+.issue-view-mode-grid h3.issue-title { text-align: center; font-size: 100%; }
+
+.current-issue, .latest-issues, .view-issue-archive { overflow: hidden; }
+.current-issue img, .latest-issues img, .view-issue-archive img { display: block; margin-bottom: 10px; }
+
+@media all and (max-width: 719px) { .latest-issues { overflow: hidden; }
+ .latest-issues:before, .latest-issues:after { content: ""; display: table; }
+ .latest-issues:after { clear: both; }
+ .latest-issues .issue-view-mode-grid { float: left; padding-left: 20px; padding-right: 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; word-wrap: break-word; width: 50%; padding-left: 0; padding-right: 20px; margin-right: 20px; }
+ .latest-issues .issue-view-mode-grid:nth-child(2n+2) { padding-left: 20px; padding-right: 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; word-wrap: break-word; width: 50%; padding-left: 0; padding-right: 20px; margin-right: -20px; }
+ .latest-issues .issue-view-mode-grid:nth-child(2n+1) { clear: left; }
+ .view-issue-archive .view-content { overflow: hidden; }
+ .view-issue-archive .view-content:before, .view-issue-archive .view-content:after { content: ""; display: table; }
+ .view-issue-archive .view-content:after { clear: both; }
+ .view-issue-archive .view-content .archive-issue { float: left; padding-left: 20px; padding-right: 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; word-wrap: break-word; width: 50%; padding-left: 0; padding-right: 20px; margin-right: 20px; }
+ .view-issue-archive .view-content .archive-issue:nth-child(2n+2) { padding-left: 20px; padding-right: 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; word-wrap: break-word; width: 50%; padding-left: 0; padding-right: 20px; margin-right: -20px; }
+ .view-issue-archive .view-content .archive-issue:nth-child(2n+1) { clear: left; } }
+@media all and (min-width: 720px) { .latest-issues:before, .latest-issues:after { content: ""; display: table; }
+ .latest-issues:after { clear: both; }
+ .latest-issues .issue-view-mode-grid { float: left; padding-left: 20px; padding-right: 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; word-wrap: break-word; width: 25%; padding-left: 0; padding-right: 30px; margin-right: 10px; }
+ .latest-issues .issue-view-mode-grid:nth-child(4n+4) { padding-left: 20px; padding-right: 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; word-wrap: break-word; width: 25%; padding-left: 0; padding-right: 30px; margin-right: -30px; }
+ .latest-issues .issue-view-mode-grid:nth-child(4n+1) { clear: left; }
+ .view-issue-archive .view-content:before, .view-issue-archive .view-content:after { content: ""; display: table; }
+ .view-issue-archive .view-content:after { clear: both; }
+ .view-issue-archive .view-content .archive-issue { float: left; padding-left: 20px; padding-right: 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; word-wrap: break-word; width: 25%; padding-left: 0; padding-right: 30px; margin-right: 10px; }
+ .view-issue-archive .view-content .archive-issue:nth-child(4n+4) { padding-left: 20px; padding-right: 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; word-wrap: break-word; width: 25%; padding-left: 0; padding-right: 30px; margin-right: -30px; }
+ .view-issue-archive .view-content .archive-issue:nth-child(4n+1) { clear: left; } }
+.article-grid-more-link, .issue-archive-link { text-align: center; }
+.article-grid-more-link a, .issue-archive-link a { border: 1px solid #0277BD; padding: 5px; display: inline-block; }
+
+.issue-notes-content .region-content-sidebar-right, .issue-notes-content .region-content-sidebar-left { margin: 0; padding: 0; float: none; clear: both; width: auto; }
+
+.story-issue img { float: left; margin: 0 10px 10px 0; }
+.story-issue .story-issue-link { overflow: hidden; }
+
+.related-articles .related-article { margin-bottom: 20px; }
+.related-articles .related-article h3 { font-size: 100%; margin-bottom: 5px; }
+
+.issue-summary .more-link { white-space: nowrap; }
+
+.issue-summary .more-link:before { content: " "; }
diff --git a/modules/custom/cu_publications_bundle/cu_publication/cu_publication.features.field_base.inc b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.features.field_base.inc
new file mode 100644
index 000000000..27ad28c93
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.features.field_base.inc
@@ -0,0 +1,164 @@
+ 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_issue_image',
+ 'indexes' => array(
+ 'fid' => array(
+ 0 => 'fid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'image',
+ 'settings' => array(
+ 'default_image' => 0,
+ 'uri_scheme' => 'public',
+ ),
+ 'translatable' => 0,
+ 'type' => 'image',
+ );
+
+ // Exported field_base: 'field_issue_image_insert'.
+ $field_bases['field_issue_image_insert'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_issue_image_insert',
+ 'indexes' => array(
+ 'fid' => array(
+ 0 => 'fid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'image',
+ 'settings' => array(
+ 'default_image' => 0,
+ 'uri_scheme' => 'public',
+ ),
+ 'translatable' => 0,
+ 'type' => 'image',
+ );
+
+ // Exported field_base: 'field_issue_section'.
+ $field_bases['field_issue_section'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_issue_section',
+ 'indexes' => array(
+ 'revision_id' => array(
+ 0 => 'revision_id',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'hide_blank_items' => 1,
+ 'path' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'field_collection',
+ );
+
+ // Exported field_base: 'field_issue_section_articles'.
+ $field_bases['field_issue_section_articles'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_issue_section_articles',
+ 'indexes' => array(
+ 'target_id' => array(
+ 0 => 'target_id',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'entityreference',
+ 'settings' => array(
+ 'handler' => 'base',
+ 'handler_settings' => array(
+ 'behaviors' => array(
+ 'views-select-list' => array(
+ 'status' => 0,
+ ),
+ ),
+ 'sort' => array(
+ 'type' => 'none',
+ ),
+ 'target_bundles' => array(
+ 'article' => 'article',
+ ),
+ ),
+ 'target_type' => 'node',
+ ),
+ 'translatable' => 0,
+ 'type' => 'entityreference',
+ );
+
+ // Exported field_base: 'field_issue_section_display'.
+ $field_bases['field_issue_section_display'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_issue_section_display',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 'teaser' => 'Teaser',
+ 'grid' => 'Grid',
+ 'sidebar' => 'Title and Thumbnail',
+ 'title' => 'Title',
+ ),
+ 'allowed_values_function' => '_cu_publication_display_values',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_text',
+ );
+
+ // Exported field_base: 'field_issue_section_title'.
+ $field_bases['field_issue_section_title'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_issue_section_title',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(
+ 'max_length' => 255,
+ ),
+ 'translatable' => 0,
+ 'type' => 'text',
+ );
+
+ return $field_bases;
+}
diff --git a/modules/custom/cu_publications_bundle/cu_publication/cu_publication.features.field_instance.inc b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.features.field_instance.inc
new file mode 100644
index 000000000..6ade8076e
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.features.field_instance.inc
@@ -0,0 +1,583 @@
+ 'field_issue_section',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'entityreference',
+ 'settings' => array(),
+ 'type' => 'entityreference_entity_id',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'div',
+ 'field_name' => 'field_issue_section_articles',
+ 'label' => 'Articles',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'entityreference',
+ 'settings' => array(
+ 'match_operator' => 'CONTAINS',
+ 'path' => '',
+ 'size' => 60,
+ ),
+ 'type' => 'entityreference_autocomplete',
+ 'weight' => 2,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_issue_section-field_issue_section_display'.
+ $field_instances['field_collection_item-field_issue_section-field_issue_section_display'] = array(
+ 'bundle' => 'field_issue_section',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 'teaser',
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => '',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'list',
+ 'settings' => array(),
+ 'type' => 'list_key',
+ 'weight' => 2,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_issue_section_display',
+ 'label' => 'Display',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_select',
+ 'weight' => 3,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_issue_section-field_issue_section_title'.
+ $field_instances['field_collection_item-field_issue_section-field_issue_section_title'] = array(
+ 'bundle' => 'field_issue_section',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'h2',
+ 'field_name' => 'field_issue_section_title',
+ 'label' => 'Section Title',
+ 'required' => 0,
+ 'settings' => array(
+ 'text_processing' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'size' => 60,
+ ),
+ 'type' => 'text_textfield',
+ 'weight' => 1,
+ ),
+ );
+
+ // Exported field_instance: 'node-issue-body'.
+ $field_instances['node-issue-body'] = array(
+ 'bundle' => 'issue',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 1,
+ ),
+ 'embed' => array(
+ 'label' => 'hidden',
+ 'module' => 'smart_trim',
+ 'settings' => array(
+ 'more_link' => 1,
+ 'more_text' => 'Read more',
+ 'summary_handler' => 'full',
+ 'trim_length' => 100,
+ 'trim_link' => 0,
+ 'trim_options' => array(
+ 'text' => 'text',
+ ),
+ 'trim_preserve_tags' => '',
+ 'trim_suffix' => '...',
+ 'trim_type' => 'words',
+ ),
+ 'type' => 'smart_trim_format',
+ 'weight' => 1,
+ ),
+ 'grid' => array(
+ 'label' => 'hidden',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 1,
+ ),
+ 'sidebar' => array(
+ 'label' => 'hidden',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 1,
+ ),
+ 'teaser' => array(
+ 'label' => 'hidden',
+ 'module' => 'smart_trim',
+ 'settings' => array(
+ 'more_link' => 1,
+ 'more_text' => 'Read more »',
+ 'summary_handler' => 'full',
+ 'trim_length' => 50,
+ 'trim_link' => 0,
+ 'trim_options' => array(
+ 'text' => 'text',
+ ),
+ 'trim_preserve_tags' => '',
+ 'trim_suffix' => '...',
+ 'trim_type' => 'words',
+ ),
+ 'type' => 'smart_trim_format',
+ 'weight' => 1,
+ ),
+ 'title' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'field_name' => 'body',
+ 'label' => 'Body',
+ 'required' => FALSE,
+ 'settings' => array(
+ 'display_summary' => TRUE,
+ 'text_processing' => 1,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'module' => 'text',
+ 'settings' => array(
+ 'rows' => 20,
+ 'summary_rows' => 5,
+ ),
+ 'type' => 'text_textarea_with_summary',
+ 'weight' => 3,
+ ),
+ );
+
+ // Exported field_instance: 'node-issue-field_issue_image'.
+ $field_instances['node-issue-field_issue_image'] = array(
+ 'bundle' => 'issue',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => '',
+ 'image_style' => 'medium',
+ ),
+ 'type' => 'image',
+ 'weight' => 0,
+ ),
+ 'embed' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => 'content',
+ 'image_style' => 'square',
+ ),
+ 'type' => 'image',
+ 'weight' => 0,
+ ),
+ 'grid' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => 'content',
+ 'image_style' => 'medium',
+ ),
+ 'type' => 'image',
+ 'weight' => 0,
+ ),
+ 'sidebar' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => 'content',
+ 'image_style' => 'square',
+ ),
+ 'type' => 'image',
+ 'weight' => 0,
+ ),
+ 'teaser' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => 'content',
+ 'image_style' => 'square',
+ ),
+ 'type' => 'image',
+ 'weight' => 0,
+ ),
+ 'title' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => '',
+ 'image_style' => 'medium',
+ ),
+ 'type' => 'image',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_issue_image',
+ 'label' => 'Issue Cover Image',
+ 'required' => 0,
+ 'settings' => array(
+ 'alt_field' => 0,
+ 'default_image' => 0,
+ 'file_directory' => 'issue-image',
+ 'file_extensions' => 'png gif jpg jpeg',
+ 'max_filesize' => '',
+ 'max_resolution' => '',
+ 'min_resolution' => '',
+ 'title_field' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'image',
+ 'settings' => array(
+ 'insert' => 0,
+ 'insert_absolute' => 0,
+ 'insert_class' => '',
+ 'insert_default' => 'auto',
+ 'insert_styles' => array(
+ 'auto' => 'auto',
+ 'colorbox__backstretch' => 0,
+ 'colorbox__el_hero' => 0,
+ 'colorbox__flexslider_full' => 0,
+ 'colorbox__flexslider_thumbnail' => 0,
+ 'colorbox__focal_point_preview' => 0,
+ 'colorbox__grid-3' => 0,
+ 'colorbox__grid-4' => 0,
+ 'colorbox__grid-6' => 0,
+ 'colorbox__grid-9' => 0,
+ 'colorbox__grid-12' => 0,
+ 'colorbox__hero' => 0,
+ 'colorbox__large' => 0,
+ 'colorbox__large_square_thumbnail' => 0,
+ 'colorbox__large_wide_thumbnail' => 0,
+ 'colorbox__linkit_thumb' => 0,
+ 'colorbox__medium' => 0,
+ 'colorbox__preview' => 0,
+ 'colorbox__slider' => 0,
+ 'colorbox__slider-large' => 0,
+ 'colorbox__small' => 0,
+ 'colorbox__small_square_thumbnail' => 0,
+ 'colorbox__small_thumbnail' => 0,
+ 'colorbox__square' => 0,
+ 'colorbox__square_thumbnail' => 0,
+ 'colorbox__thumbnail' => 0,
+ 'icon_link' => 0,
+ 'image' => 0,
+ 'image_backstretch' => 0,
+ 'image_el_hero' => 0,
+ 'image_flexslider_full' => 0,
+ 'image_flexslider_thumbnail' => 0,
+ 'image_focal_point_preview' => 0,
+ 'image_grid-3' => 0,
+ 'image_grid-4' => 0,
+ 'image_grid-6' => 0,
+ 'image_grid-9' => 0,
+ 'image_grid-12' => 0,
+ 'image_hero' => 0,
+ 'image_large' => 0,
+ 'image_large_square_thumbnail' => 0,
+ 'image_large_wide_thumbnail' => 0,
+ 'image_linkit_thumb' => 0,
+ 'image_medium' => 0,
+ 'image_preview' => 0,
+ 'image_slider' => 0,
+ 'image_slider-large' => 0,
+ 'image_small' => 0,
+ 'image_small_square_thumbnail' => 0,
+ 'image_small_thumbnail' => 0,
+ 'image_square' => 0,
+ 'image_square_thumbnail' => 0,
+ 'image_thumbnail' => 0,
+ 'link' => 0,
+ ),
+ 'insert_width' => '',
+ 'preview_image_style' => 'thumbnail',
+ 'progress_indicator' => 'throbber',
+ ),
+ 'type' => 'image_image',
+ 'weight' => 6,
+ ),
+ );
+
+ // Exported field_instance: 'node-issue-field_issue_image_insert'.
+ $field_instances['node-issue-field_issue_image_insert'] = array(
+ 'bundle' => 'issue',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 3,
+ ),
+ 'embed' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 3,
+ ),
+ 'grid' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 0,
+ ),
+ 'sidebar' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 3,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 2,
+ ),
+ 'title' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 3,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_issue_image_insert',
+ 'label' => 'Image',
+ 'required' => 0,
+ 'settings' => array(
+ 'alt_field' => 1,
+ 'default_image' => 0,
+ 'file_directory' => 'issue-image-insert',
+ 'file_extensions' => 'png gif jpg jpeg',
+ 'max_filesize' => '',
+ 'max_resolution' => '',
+ 'min_resolution' => '',
+ 'title_field' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'image',
+ 'settings' => array(
+ 'insert' => 1,
+ 'insert_absolute' => 0,
+ 'insert_class' => '',
+ 'insert_default' => 'image_medium',
+ 'insert_styles' => array(
+ 'auto' => 0,
+ 'colorbox__backstretch' => 0,
+ 'colorbox__el_hero' => 0,
+ 'colorbox__flexslider_full' => 0,
+ 'colorbox__flexslider_thumbnail' => 0,
+ 'colorbox__focal_point_preview' => 0,
+ 'colorbox__grid-3' => 0,
+ 'colorbox__grid-4' => 0,
+ 'colorbox__grid-6' => 0,
+ 'colorbox__grid-9' => 0,
+ 'colorbox__grid-12' => 0,
+ 'colorbox__hero' => 0,
+ 'colorbox__large' => 0,
+ 'colorbox__large_square_thumbnail' => 0,
+ 'colorbox__large_wide_thumbnail' => 0,
+ 'colorbox__linkit_thumb' => 0,
+ 'colorbox__medium' => 0,
+ 'colorbox__preview' => 0,
+ 'colorbox__slider' => 0,
+ 'colorbox__slider-large' => 0,
+ 'colorbox__small' => 'colorbox__small',
+ 'colorbox__small_square_thumbnail' => 'colorbox__small_square_thumbnail',
+ 'colorbox__small_thumbnail' => 'colorbox__small_thumbnail',
+ 'colorbox__square' => 'colorbox__square',
+ 'colorbox__square_thumbnail' => 0,
+ 'colorbox__thumbnail' => 0,
+ 'icon_link' => 0,
+ 'image' => 'image',
+ 'image_backstretch' => 0,
+ 'image_el_hero' => 0,
+ 'image_flexslider_full' => 0,
+ 'image_flexslider_thumbnail' => 0,
+ 'image_focal_point_preview' => 0,
+ 'image_grid-3' => 0,
+ 'image_grid-4' => 0,
+ 'image_grid-6' => 0,
+ 'image_grid-9' => 0,
+ 'image_grid-12' => 0,
+ 'image_hero' => 0,
+ 'image_large' => 'image_large',
+ 'image_large_square_thumbnail' => 'image_large_square_thumbnail',
+ 'image_large_wide_thumbnail' => 'image_large_wide_thumbnail',
+ 'image_linkit_thumb' => 0,
+ 'image_medium' => 'image_medium',
+ 'image_preview' => 0,
+ 'image_slider' => 'image_slider',
+ 'image_slider-large' => 0,
+ 'image_small' => 'image_small',
+ 'image_small_square_thumbnail' => 0,
+ 'image_small_thumbnail' => 'image_small_thumbnail',
+ 'image_square' => 'image_square',
+ 'image_square_thumbnail' => 0,
+ 'image_thumbnail' => 0,
+ 'link' => 0,
+ ),
+ 'insert_width' => '',
+ 'preview_image_style' => 'thumbnail',
+ 'progress_indicator' => 'throbber',
+ ),
+ 'type' => 'image_image',
+ 'weight' => 4,
+ ),
+ );
+
+ // Exported field_instance: 'node-issue-field_issue_section'.
+ $field_instances['node-issue-field_issue_section'] = array(
+ 'bundle' => 'issue',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'view_mode' => 'full',
+ ),
+ 'type' => 'field_collection_fields',
+ 'weight' => 2,
+ ),
+ 'embed' => array(
+ 'label' => 'hidden',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 2,
+ ),
+ 'grid' => array(
+ 'label' => 'hidden',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 2,
+ ),
+ 'sidebar' => array(
+ 'label' => 'hidden',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 2,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 3,
+ ),
+ 'title' => array(
+ 'label' => 'hidden',
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'view_mode' => 'full',
+ ),
+ 'type' => 'field_collection_fields',
+ 'weight' => 2,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'div',
+ 'field_name' => 'field_issue_section',
+ 'label' => 'Section',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(),
+ 'type' => 'field_collection_embed',
+ 'weight' => 5,
+ ),
+ );
+
+ // Translatables
+ // Included for use with string extractors like potx.
+ t('Articles');
+ t('Body');
+ t('Display');
+ t('Image');
+ t('Issue Cover Image');
+ t('Section');
+ t('Section Title');
+
+ return $field_instances;
+}
diff --git a/modules/custom/cu_publications_bundle/cu_publication/cu_publication.features.inc b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.features.inc
new file mode 100644
index 000000000..9956854f9
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.features.inc
@@ -0,0 +1,32 @@
+ "1");
+ }
+}
+
+/**
+ * Implements hook_node_info().
+ */
+function cu_publication_node_info() {
+ $items = array(
+ 'issue' => array(
+ 'name' => t('Issue'),
+ 'base' => 'node_content',
+ 'description' => t('A collection of articles.'),
+ 'has_title' => '1',
+ 'title_label' => t('Title'),
+ 'help' => '',
+ ),
+ );
+ drupal_alter('node_info', $items);
+ return $items;
+}
diff --git a/modules/custom/cu_publications_bundle/cu_publication/cu_publication.info b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.info
new file mode 100644
index 000000000..96b3ba4a6
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.info
@@ -0,0 +1,39 @@
+name = Publication
+description = Magazine type features, like
+core = 7.x
+package = Features
+dependencies[] = ctools
+dependencies[] = entityreference
+dependencies[] = express_field_bases
+dependencies[] = features
+dependencies[] = fences
+dependencies[] = field_collection
+dependencies[] = image
+dependencies[] = list
+dependencies[] = options
+dependencies[] = pathauto
+dependencies[] = smart_trim
+dependencies[] = strongarm
+dependencies[] = text
+features[ctools][] = strongarm:strongarm:1
+features[features_api][] = api:2
+features[field_base][] = field_issue_image
+features[field_base][] = field_issue_image_insert
+features[field_base][] = field_issue_section
+features[field_base][] = field_issue_section_articles
+features[field_base][] = field_issue_section_display
+features[field_base][] = field_issue_section_title
+features[field_instance][] = field_collection_item-field_issue_section-field_issue_section_articles
+features[field_instance][] = field_collection_item-field_issue_section-field_issue_section_display
+features[field_instance][] = field_collection_item-field_issue_section-field_issue_section_title
+features[field_instance][] = node-issue-body
+features[field_instance][] = node-issue-field_issue_image
+features[field_instance][] = node-issue-field_issue_image_insert
+features[field_instance][] = node-issue-field_issue_section
+features[node][] = issue
+features[variable][] = field_bundle_settings_node__issue
+features[variable][] = menu_options_issue
+features[variable][] = menu_parent_issue
+features[variable][] = node_options_issue
+features[variable][] = node_preview_issue
+features[variable][] = node_submitted_issue
diff --git a/modules/custom/cu_publications_bundle/cu_publication/cu_publication.install b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.install
new file mode 100644
index 000000000..380273706
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.install
@@ -0,0 +1,20 @@
+ 'field_footer',
+ 'field_header' => 'field_header',
+ 'field_intro' => 'field_intro',
+ 'field_sidebar_first' => 'field_sidebar_first',
+ 'field_sidebar_second' => 'field_sidebar_second',
+ 'field_slider' => 'field_slider',
+ 'field_wide_2' => 'field_wide_2',
+ 'field_feature_title_image' => 'field_feature_title_image',
+ 'field_feature_layout_toggle' => 0,
+ 'field_inner_content_left' => 0,
+ 'field_inner_content_right' => 0,
+ );
+ variable_set('block_layout_settings_issue', $values);
+ variable_set('block_layout_type_issue', 'issue');
+}
diff --git a/modules/custom/cu_publications_bundle/cu_publication/cu_publication.module b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.module
new file mode 100644
index 000000000..2f74879de
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.module
@@ -0,0 +1,704 @@
+uri) . '" alt="' . variable_get('cu_publication_name', ' ') . '" />';
+ $logo_link = variable_get('cu_publication_path', '');
+ $custom_logo_markup = l($custom_logo_markup, $logo_link, array('html' => TRUE));
+ $pubname = array();
+ $pubname['pubname']['#markup'] = '' . $custom_logo_markup . '';
+ $pubname['pubname']['#prefix'] = '';
+ $pubname['pubname']['#suffix'] = '';
+ $pubname['pubname']['#weight'] = -1000;
+
+ if (!empty($page['intro'])) {
+ $page['intro'] = array('one' => $pubname) + $page['intro'];
+ } else {
+ $page['intro'] = $pubname;
+ }
+ }
+}
+
+/**
+ * Implements module_preprocess_hook().
+ */
+function cu_publication_preprocess_node(&$vars) {
+ if ($vars['node']->type == 'article') {
+ $nid = $vars['node']->nid;
+ // Query field collection issue_section_articles
+ $query = db_select('field_data_field_issue_section_articles', 'articles');
+ // Join to field_issue_section to get nid that field collection is attached to
+ $query->join('field_data_field_issue_section', 'section', 'articles.entity_id = section.field_issue_section_value');
+ $query->condition('field_issue_section_articles_target_id', $nid, '=');
+ $query->fields('section', array('entity_id'));
+ $results = $query->execute()->fetchCol();
+ // If there's a result, load node and construct issue meta section
+ if ($results) {
+ $links = array();
+ foreach ($results as $result) {
+ $issue_node = node_load($result);
+ $links[] = l($issue_node->title, 'node/' . $result);
+ }
+ $markup = 'Issue: ' . join(', ', $links);
+
+ $vars['content']['article_meta']['article_issue']['#markup'] = $markup;
+ $vars['content']['article_meta']['article_issue']['#prefix'] = ' ';
+ $vars['content']['article_meta']['article_issue']['#weight'] = -1000;
+ }
+ }
+}
+
+
+/**
+ * Implements module_preprocess_hook().
+ * Build article sections.
+ */
+function cu_publication_preprocess_entity(&$vars) {
+ $entity_type = $vars['elements']['#entity_type'];
+ $bundle = $vars['elements']['#bundle'];
+ // Only process newsletter sections.
+ if ($entity_type == 'field_collection_item' && $bundle == 'field_issue_section') {
+ $view_mode = $vars['content']['field_issue_section_display'][0]['#markup'];
+ $nids = array();
+ foreach ($vars['content']['field_issue_section_articles']['#items'] as $key => $value) {
+ $nids[$key] = $value['target_id'];
+ }
+ $nodes = node_load_multiple($nids);
+ foreach ($nodes as $key => $node) {
+ // Set node title markup.
+ $nodes[$key]->heading_tag['#tag'] = 'h3';
+ }
+ // Render articles.
+ $vars['content']['articles'] = node_view_multiple($nodes, $view_mode);
+ $vars['content']['articles']['#weight'] = 1;
+ $vars['content']['articles']['#prefix'] = '';
+ $vars['content']['articles']['#suffix'] = '';
+ // Remove entity references and display settings from output.
+ unset($vars['content']['field_issue_section_display']);
+ unset($vars['content']['field_issue_section_articles']);
+ }
+}
+
+/**
+ * Implements hook_theme_registry_alter().
+ */
+function cu_publication_theme_registry_alter(&$theme_registry) {
+ $module_path = drupal_get_path('module', 'cu_publication');
+ $theme_registry_copy = $theme_registry;
+ _theme_process_registry($theme_registry_copy, 'phptemplate', 'theme_engine', 'node', $module_path);
+ $theme_registry += array_diff_key($theme_registry_copy, $theme_registry);
+ $hooks = array('node');
+ foreach ($hooks as $h) {
+ if (isset($theme_registry[$h]['theme paths'])) {
+ $first_element = array_shift($theme_registry[$h]['theme paths']);
+ array_unshift($theme_registry[$h]['theme paths'], array_shift($theme_registry[$h]['theme paths']), $module_path);
+ }
+ }
+}
+
+/**
+ * Implements hook_node_update().
+ * Publish all referenced nodes.
+ */
+function cu_publication_node_insert($node) {
+ _cu_publication_publish_nodes($node);
+}
+
+/**
+ * Implements hook_node_update().
+ * Publish all referenced nodes.
+ */
+function cu_publication_node_update($node) {
+ _cu_publication_publish_nodes($node);
+}
+
+/**
+ * Publish all referenced nodes.
+ */
+function _cu_publication_publish_nodes($node) {
+ // If an issue node is published, publish all referenced articles.
+ if (($node->type == 'issue') && ($node->status == 1)) {
+ $status = $node->status;
+ $nids = array();
+ // Go through each section.
+ foreach ($node->field_issue_section[LANGUAGE_NONE] as $item) {
+ $item = entity_load('field_collection_item', array($item['value']));
+ $item = current($item);
+ // Get all node ids for each section
+ foreach ($item->field_issue_section_articles[LANGUAGE_NONE] as $article) {
+ $nids[] = $article['target_id'];
+ }
+ }
+ // Set referenced nodes to published
+ foreach ($nids as $nid) {
+ $node_reference = node_load($nid);
+ if ($node_reference->status == 0) {
+ $node_reference->status = 1;
+ node_save($node_reference);
+ $message = t('%title is now published',
+ array(
+ '%title' => $node_reference->title,
+ )
+ );
+ drupal_set_message($message);
+ }
+ }
+ }
+}
+/**
+ * Allowed values function for field_newsletter_display.
+ */
+function _cu_publication_display_values() {
+ return array(
+ 'teaser_category' => 'Teaser',
+ 'feature_category' => 'Feature',
+ 'sidebar' => 'Title and Thumbnail',
+ 'title' => 'Title',
+ );
+}
+
+/**
+ * Implements hook_menu().
+ */
+function cu_publication_menu() {
+ // Publication Configs
+ $items['admin/config/system/publication/settings'] = array(
+ 'title' => 'Publication Settings',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('cu_publication_upload_form'),
+ 'access arguments' => array('administer themes'),
+ 'weight' => 8,
+ 'description' => 'Upload publication logo.',
+ );
+ // Current issue
+ $items['issue/current'] = array(
+ 'access callback' => TRUE,
+ 'title' => 'Current Issue',
+ 'page callback' => 'cu_publication_current_issue',
+ );
+ // Issue archives
+ if ($path = variable_get('cu_publication_archive_path', NULL)) {
+ $name = variable_get('cu_publication_name', NULL) ? variable_get('cu_publication_name', NULL) . ' Archives' : 'Archives';
+
+ $items[$path] = array(
+ 'access callback' => TRUE,
+ 'title' => $name,
+ 'page callback' => 'cu_publication_issue_archive',
+ );
+ $items['issue/archive'] = array(
+ 'access callback' => TRUE,
+ 'title' => $name,
+ 'page callback' => 'drupal_goto',
+ 'page arguments' => array($path),
+ );
+ } else {
+ $items['issue/archive'] = array(
+ 'access callback' => TRUE,
+ 'title' => 'Archives',
+ 'page callback' => 'cu_publication_issue_archive',
+ );
+ }
+ return $items;
+}
+/**
+ * Implements hook_form().
+ * Upload publication logo, set publication name.
+ */
+function cu_publication_upload_form($form, &$form_state) {
+ $form['cu_publication_logo'] = array(
+ '#type' => 'managed_file',
+ '#name' => 'custom_white_logo',
+ '#title' => t('Publication Flag'),
+ '#size' => 40,
+ '#description' => t('Image should be a transparent png which will be displayed on a dark background. This flag will appear on every page of the site.'),
+ '#upload_location' => 'public://publication_logo/',
+ '#default_value' => variable_get('cu_publication_logo', ''),
+ );
+ // Show archive path if name is set
+ $path = variable_get('cu_publication_archive_path', '');
+ global $base_url;
+ if ($path) {
+ $path = l($base_url . '/' . $path, $path);
+ } else {
+ $path = l($base_url . '/issue/archive', $path . 'issue/archive');
+ }
+ $form['cu_publication_name'] = array(
+ '#type' => 'textfield',
+ '#title' => 'Publication Name',
+ '#description' => 'Enter the publication name in this field if the publication is part of a larger site. This will be used in breadcrumbs and archive pages.',
+ '#default_value' => variable_get('cu_publication_name', ''),
+ );
+ $form['cu_publication_path'] = array(
+ '#type' => 'textfield',
+ '#title' => 'Publication Landing Page',
+ '#description' => 'Enter the path of the publication landing page in this field if the publication is part of a larger site. This will be used in breadcrumbs.',
+ '#default_value' => variable_get('cu_publication_path', ''),
+ );
+ $form['cu_publication_archive_path'] = array(
+ '#type' => 'textfield',
+ '#title' => 'Publication Archive Path',
+ '#description' => 'Enter the url path for the publication archive. Leave blank for the default archive path. ' . $path,
+ '#default_value' => variable_get('cu_publication_archive_path', ''),
+ );
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => t('Save Settings'),
+ );
+ // Add validation and submit functions
+ $form['#validate'][] = 'cu_publication_upload_form_validate';
+ $form['#submit'][] = 'cu_publication_upload_form_submit';
+ return $form;
+}
+
+/**
+ * Validation function for cu_publication_upload_form.
+ * Publication name is required if logo is used.
+ */
+function cu_publication_upload_form_validate($form, &$form_state) {
+ if (isset($form_state['values']['cu_publication_logo']) && empty($form_state['values']['cu_publication_name'])) {
+ //form_set_error('cu_publication_name', t('A publication name is required if you are using a publication logo.'));
+ }
+}
+
+function cu_publication_upload_form_submit($form, &$form_state) {
+ // logo remove.
+ if ($form_state['values']['cu_publication_logo'] == 0 || $form_state['values']['cu_publication_logo'] == 'remove') {
+ $cu_publication_logo = variable_get('cu_publication_logo', FALSE);
+ if ($cu_publication_logo) {
+ $cu_publication_logo = file_load($cu_publication_logo);
+ file_delete($cu_publication_logo, TRUE);
+ variable_del('cu_publication_logo');
+ drupal_set_message(t('Publication logo has been removed.'), 'status', FALSE);
+ }
+ }
+ // logo upload.
+ elseif (isset($form_state['values']['cu_publication_logo'])) {
+ $cu_publication_logo = file_load($form_state['values']['cu_publication_logo']);
+
+ file_usage_add($cu_publication_logo, 'cu_publication', 'cu_publication_logo', 1, 1);
+ variable_set('cu_publication_logo', $form_state['values']['cu_publication_logo']);
+ drupal_set_message(t('Publication logo has been added.'), 'status', FALSE);
+ }
+ // Set/Delete publication name/archive path
+ if (!empty($form_state['values']['cu_publication_name'])) {
+ variable_set('cu_publication_name', $form_state['values']['cu_publication_name']);
+ drupal_set_message(t('Publication name has been saved.'), 'status', FALSE);
+ } else {
+ variable_del('cu_publication_name');
+ drupal_set_message(t('Publication name has been deleted.'), 'status', FALSE);
+ }
+ if (!empty($form_state['values']['cu_publication_path'])) {
+ variable_set('cu_publication_path', $form_state['values']['cu_publication_path']);
+ drupal_set_message(t('Publication path has been saved.'), 'status', FALSE);
+ } else {
+ variable_del('cu_publication_path');
+ drupal_set_message(t('Publication path has been deleted.'), 'status', FALSE);
+ }
+ // Set/Delete publication name/archive path
+ if (!empty($form_state['values']['cu_publication_archive_path'])) {
+ module_load_include('inc', 'pathauto', 'pathauto');
+ $publication_path = pathauto_cleanstring($form_state['values']['cu_publication_archive_path']);
+ variable_set('cu_publication_archive_path', $publication_path);
+ drupal_set_message(t('Publication archive path has been saved.'), 'status', FALSE);
+ } else {
+ variable_del('cu_publication_archive_path');
+ drupal_set_message(t('Publication archive path has been deleted.'), 'status', FALSE);
+ }
+ // Each time the name/path is changed, the menu needs to be rebuilt.
+ menu_rebuild();
+}
+
+/**
+ * Page callback function for issue/current.
+ * Go to latest published issue.
+ */
+function cu_publication_current_issue() {
+ $query = db_select("node", "n") // select from the node table
+ ->fields("n", array("nid", "title")) // fields nid, title
+ ->condition("type", "issue", "=") // where the node type = page
+ ->condition('n.status', 1, '=') // node is published
+ ->orderBy("created", "DESC") // order by the newest
+ ->range(0, 1) // select only 10 records
+ ->execute(); // execute the query
+
+ while($record = $query->fetchAssoc()) {
+ drupal_goto('node/' . $record['nid']);
+ }
+}
+
+/**
+ * Implements hook_block_info().
+ */
+function cu_publication_block_info() {
+ $blocks['current_issue'] = array(
+ 'info' => t('Current Issue'),
+ );
+ $blocks['latest_issues'] = array(
+ 'info' => t('Latest Issues'),
+ );
+ $blocks['story_issue'] = array(
+ 'info' => t('Story Issue'),
+ );
+ $blocks['category_cloud'] = array(
+ 'info' => t('Category Cloud'),
+ );
+ $blocks['tag_cloud'] = array(
+ 'info' => t('Tag Cloud'),
+ );
+ $blocks['related_articles'] = array(
+ 'info' => t('Related Articles'),
+ );
+ return $blocks;
+}
+
+/**
+ * Implements hook_block_view().
+ */
+function cu_publication_block_view($delta = '') {
+ switch ($delta) {
+ case 'current_issue':
+ $block['subject'] = 'Current Issue';
+ // Get current issue
+ $query = db_select('node', 'n');
+ $query->condition('n.type', 'issue', '=');
+ $query->condition('n.status', 1, '=');
+ $query->fields('n', array('nid', 'title'));
+ $query->range(0, 1);
+ $query->orderBy('created', 'DESC');
+ $nid = $query->execute()->fetchCol();
+ $nid = current($nid);
+ $node = node_load($nid);
+
+ // Render issue with grid view mode
+ $content['view_issue'] = node_view($node, 'grid');
+ $content['view_issue']['#prefix'] = '';
+ $content['view_issue']['#suffix'] = '';
+ $block['content'] = $content;
+ break;
+
+ case 'latest_issues':
+ $block['subject'] = 'Latest Issues';
+ // Get latest issues. Need 4, but ask for 5 to see if archive link is needed.
+ $query = db_select('node', 'n');
+ $query->condition('n.type', 'issue', '=');
+ $query->condition('n.status', 1, '=');
+ $query->fields('n', array('nid', 'title'));
+ $query->range(0, 5);
+ $query->orderBy('created', 'DESC');
+ $nids = $query->execute()->fetchCol();
+ // If there is more than 4, remove 5th node and show archive link.
+ if (count($nids) > 4) {
+ array_pop($nids);
+ $show_archive = TRUE;
+ }
+ $nodes = node_load_multiple($nids);
+ $issue_count = 1;
+ // Render nodes with grid view mode.
+ $content['latest_issues'] = node_view_multiple($nodes, 'grid');
+ $content['latest_issues']['#prefix'] = '';
+ $content['latest_issues']['#suffix'] = '';
+ // Archive link
+ if ($show_archive) {
+ $content['archive_link']['#markup'] = l('Issue Archive', 'issue/archive', array('attributes' => array('class' => array('button-ghost'))));
+ $content['archive_link']['#prefix'] = '';
+ $content['archive_link']['#suffix'] = '';
+ }
+ $block['content'] = $content;
+ break;
+
+ case 'story_issue':
+ $block['subject'] = '';
+ // Get nid of current article
+ if ($node = menu_get_object()) {
+ $nid = $node->nid;
+ // Query field collection to see if article is part of an issue
+ $query = db_select('field_data_field_issue_section_articles', 'articles');
+ // Join to field_issue_section to get nid that field collection is attached to
+ $query->join('field_data_field_issue_section', 'section', 'articles.entity_id = section.field_issue_section_value');
+ $query->condition('field_issue_section_articles_target_id', $nid, '=');
+ $query->fields('section', array('entity_id'));
+ $query->range(0, 1);
+ //$query->orderBy('created', 'DESC');
+ $results = $query->execute()->fetchCol();
+ // If there's a result, load node and construct issue meta section
+ if ($results) {
+ $issue_node = node_load($results[0]);
+ $cover_image = $issue_node->field_issue_image[LANGUAGE_NONE][0]['uri'];
+ $img_url = image_style_url('small_thumbnail', $cover_image);
+ $link = l('Read more from this issue ', 'node/' . $issue_node->nid, array('html' => TRUE));
+ $block['content']['story_issue']['#markup'] = '
' . $issue_node->title .'
' . $link . '';
+ $block['content']['story_issue']['#prefix'] = '';
+ $block['content']['story_issue']['#suffix'] = '';
+
+ }
+ }
+
+ break;
+ case 'tag_cloud':
+ $term_links = _cu_publication_get_term_links('tags');
+ $block['subject'] = 'Article Tags';
+ $block['content']['cloud']['#markup'] = join(' ', $term_links);
+ break;
+ case 'category_cloud':
+ $term_links = _cu_publication_get_term_links('category');
+ $block['subject'] = 'Article Categories';
+ $block['content']['cloud']['#markup'] = join(' ', $term_links);
+ break;
+ case 'related_articles':
+ $related_articles = array();
+ // Get current node
+ if (($node = menu_get_object()) && $node->type =='article') {
+ $current_nid = $node->nid;
+ // Get categories from current article
+ $category_terms = $node->field_article_categories[LANGUAGE_NONE];
+ $categories = array();
+ if (!empty($category_terms)) {
+ foreach ($category_terms as $category_term) {
+ $tid = $category_term['tid'];
+ $categories[$tid] = $tid;
+ }
+ }
+ // Get tags from current article
+ $tag_terms = array();
+ if (!empty($node->field_tags)) {
+ $tag_terms = $node->field_tags[LANGUAGE_NONE];
+ }
+ $tags = array();
+ if (!empty($tag_terms)) {
+ foreach ($tag_terms as $tag_term) {
+ $tid = $tag_term['tid'];
+ $tags[$tid] = $tid;
+ }
+ }
+ // Start queries
+ // Categories + Tags = most related
+ // Just categories = second most related
+ // Just tags = third most related
+ // Query #1 - Categories AND Tags
+ if (!empty($categories) && !empty($tags)) {
+ $query = db_select('node', 'n');
+ $query->condition('n.type', 'article', '=');
+ $query->condition('n.status', 1, '=');
+ $query->fields('n', array('nid', 'title'));
+ // Don't include current article
+ $query->condition('n.nid', $current_nid, '!=');
+ // Query for categories
+ $query->join("field_data_field_article_categories", "cats", "n.nid = cats.entity_id");
+ $query->fields('cats', array('field_article_categories_tid'));
+ $query->condition('cats.field_article_categories_tid', $categories, 'in');
+ // Query for tags
+ $query->join("field_data_field_tags", "tags", "n.nid = tags.entity_id");
+ $query->fields('tags', array('field_tags_tid'));
+ $query->condition('tags.field_tags_tid', $tags, 'in');
+ // Get results
+ $results = $query->execute()->fetchCol();
+ // Count occurances of node id - more occurances = more related
+ $occurences = array_count_values($results);
+ // Sort by occurances
+ arsort($occurences);
+ // Add node ids to related articles array
+ foreach ($occurences as $key => $occurence) {
+ $related_articles[$key] = $key;
+ }
+ }
+
+ // Query #2 - Categories
+ if (!empty($categories)) {
+ $query = db_select('node', 'n');
+ $query->condition('n.type', 'article', '=');
+ $query->condition('n.status', 1, '=');
+ $query->fields('n', array('nid', 'title'));
+ // Don't include current article
+ $query->condition('n.nid', $current_nid, '!=');
+ // Query for categories
+ $query->join("field_data_field_article_categories", "cats", "n.nid = cats.entity_id");
+ $query->fields('cats', array('field_article_categories_tid'));
+ $query->condition('cats.field_article_categories_tid', $categories, 'in');
+ // Get results
+ $results = $query->execute()->fetchCol();
+ // Count occurances of node id - more occurances = more related
+ $occurences = array_count_values($results);
+ // Sort by occurances
+ arsort($occurences);
+ // Add node ids to related articles array
+ foreach ($occurences as $key => $occurence) {
+ $related_articles[$key] = $key;
+ }
+ }
+
+ // Query #3 - Tags
+ if (!empty($tags)) {
+ $query = db_select('node', 'n');
+ $query->condition('n.type', 'article', '=');
+ $query->condition('n.status', 1, '=');
+ $query->fields('n', array('nid', 'title'));
+ // Don't include current article
+ $query->condition('n.nid', $current_nid, '!=');
+ // Query for tags
+ $query->join("field_data_field_tags", "tags", "n.nid = tags.entity_id");
+ $query->fields('tags', array('field_tags_tid'));
+ $query->condition('tags.field_tags_tid', $tags, 'in');
+ // Get results
+ $results = $query->execute()->fetchCol();
+ // Count occurances of node id - more occurances = more related
+ $occurences = array_count_values($results);
+ // Sort by occurances
+ arsort($occurences);
+ // Add node ids to related articles array
+ foreach ($occurences as $key => $occurence) {
+ $related_articles[$key] = $key;
+ }
+ }
+ // If there are related articles, show the top 3.
+ if (!empty($related_articles)) {
+ $top_related = array_slice($related_articles, 0, 3, TRUE);
+ $nodes = node_load_multiple($top_related);
+ $block['content']['articles'] = node_view_multiple($nodes, 'grid');
+ unset($block['content']['articles']['nodes']['#sorted']);
+ foreach($block['content']['articles']['nodes'] as $key => $node) {
+ $block['content']['articles']['nodes'][$key]['#prefix'] = ' ';
+ }
+ $block['content']['articles']['#prefix'] = ' ';
+ $block['subject'] = 'Related Articles';
+ }
+ }
+ }
+ return $block;
+}
+function _cu_publication_get_term_links($vocab_name) {
+ $vocab = taxonomy_vocabulary_machine_name_load($vocab_name);
+ // Get the vocabulary ID.
+ $vid = $vocab->vid;
+
+ $result = db_select('taxonomy_term_data', 'term')
+ ->fields('term', array('tid', 'vid', 'name'))
+ ->orderBy('term.name', 'ASC')
+ ->condition('term.vid', $vid, '=')
+ ->execute();
+ $tids = array();
+ // Build array for loading terms
+ foreach ($result as $row) {
+ $tids[$row->tid] = $row->tid;
+ }
+ // Load terms
+ $terms = taxonomy_term_load_multiple($tids);
+ $term_links = array();
+ foreach($terms as $term) {
+ // if terms are tags
+ if ($vocab_name == 'tags') {
+ // Hide terms that are set to hide
+ if (!empty($term->field_tag_display) && $term->field_tag_display[LANGUAGE_NONE][0]['value'] != 'hide') {
+ $term_links[] = l($term->name, 'taxonomy/term/' . $term->tid, array('attributes' => array('class' => array('button-ghost', 'button-small'))));
+ }
+ }
+ // If terms are categories
+ if ($vocab_name == 'category') {
+ // Hide terms that are set to hide
+ if (!empty($term->field_category_display) && $term->field_category_display[LANGUAGE_NONE][0]['value'] != 'hide') {
+ $term_links[] = l($term->name, 'taxonomy/term/' . $term->tid, array('attributes' => array('class' => array('button-ghost', 'button-small'))));
+ }
+ }
+ }
+ return $term_links;
+}
+/**
+ * Page callback function for issue archives
+ */
+function cu_publication_issue_archive() {
+ $query = db_select('node', 'n');
+ $query->condition('n.type', 'issue', '=');
+ $query->condition('n.status', 1, '=');
+ $query->fields('n', array('nid', 'title'));
+ $query = $query->extend('PagerDefault')->limit(12);
+ $query->orderBy('created', 'DESC');
+ $nids = $query->execute()->fetchCol();
+ $nodes = node_load_multiple($nids);
+ $output['articles'] = node_view_multiple($nodes, 'grid');
+ $output['articles']['#weight'] = 99;
+ $output['articles']['#prefix'] = '';
+ $output['articles']['#suffix'] = '';
+ $output['pager'] = array(
+ '#theme' => 'pager',
+ '#tags' => array(),
+ '#weight' => 100.
+ );
+ return $output;
+}
+
+/**
+ * Implements hook_menu_breadcrumb_alter().
+ * Add issue to breadcrumbs if article is part of an issue.
+ */
+function cu_publication_menu_breadcrumb_alter(&$active_trail, $item) {
+ if (($item['map'][0] == 'node') && ($item['map'][1]->type == 'article')) {
+ $nid = $item['map'][1]->nid;
+ // Query field collection issue_section_articles
+ $query = db_select('field_data_field_issue_section_articles', 'articles');
+ // Join to field_issue_section to get nid that field collection is attached to
+ $query->join('field_data_field_issue_section', 'section', 'articles.entity_id = section.field_issue_section_value');
+ $query->condition('field_issue_section_articles_target_id', $nid, '=');
+ $query->fields('section', array('entity_id'));
+ $query->range(0,1);
+ $results = $query->execute()->fetchCol();
+ // If there's a result, load node and build breadcrumbs
+ if ($results) {
+ // Remove current breadcrumb
+ $current_crumb = array_pop($active_trail);
+
+ if (variable_get('cu_publication_path', NULL) && variable_get('cu_publication_name', NULL)) {
+ $active_trail[] = array(
+ 'title' => variable_get('cu_publication_name', NULL),
+ 'href' => variable_get('cu_publication_path', NULL),
+ 'localized_options' => array(),
+ );
+ }
+
+ // Load issue node
+ $issue_id = current($results);
+ $issue_node = node_load($issue_id);
+ // Add issue breadcrumb
+ $active_trail[] = array(
+ 'title' => $issue_node->title,
+ 'href' => 'node/' . $issue_id,
+ 'localized_options' => array(),
+ );
+ }
+ }
+ // Add pubication landing page to issue node breadcrumbs
+ if (($item['map'][0] == 'node') && ($item['map'][1]->type == 'issue')) {
+ if (variable_get('cu_publication_path', NULL) && variable_get('cu_publication_name', NULL)) {
+ // Remove current breadcrumb
+ $current_crumb = array_pop($active_trail);
+
+ $active_trail[] = array(
+ 'title' => variable_get('cu_publication_name', NULL),
+ 'href' => variable_get('cu_publication_path', NULL),
+ 'localized_options' => array(),
+ );
+ }
+ }
+}
diff --git a/modules/custom/cu_publications_bundle/cu_publication/cu_publication.strongarm.inc b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.strongarm.inc
new file mode 100644
index 000000000..43b4fe71c
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/cu_publication.strongarm.inc
@@ -0,0 +1,127 @@
+disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'field_bundle_settings_node__issue';
+ $strongarm->value = array(
+ 'view_modes' => array(
+ 'teaser' => array(
+ 'custom_settings' => TRUE,
+ ),
+ 'full' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'rss' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'diff_standard' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'token' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'email_feature' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'email_teaser' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'promo' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'sidebar' => array(
+ 'custom_settings' => TRUE,
+ ),
+ 'table' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'title' => array(
+ 'custom_settings' => TRUE,
+ ),
+ 'grid' => array(
+ 'custom_settings' => TRUE,
+ ),
+ 'revision' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'feature' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'embed' => array(
+ 'custom_settings' => TRUE,
+ ),
+ ),
+ 'extra_fields' => array(
+ 'form' => array(
+ 'metatags' => array(
+ 'weight' => '7',
+ ),
+ 'title' => array(
+ 'weight' => '0',
+ ),
+ 'path' => array(
+ 'weight' => '1',
+ ),
+ 'redirect' => array(
+ 'weight' => '2',
+ ),
+ ),
+ 'display' => array(),
+ ),
+ );
+ $export['field_bundle_settings_node__issue'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'menu_options_issue';
+ $strongarm->value = array(
+ 0 => 'menu-footer-menu',
+ 1 => 'main-menu',
+ 2 => 'menu-secondary-menu',
+ );
+ $export['menu_options_issue'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'menu_parent_issue';
+ $strongarm->value = 'main-menu:0';
+ $export['menu_parent_issue'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'node_options_issue';
+ $strongarm->value = array(
+ 0 => 'status',
+ );
+ $export['node_options_issue'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'node_preview_issue';
+ $strongarm->value = '0';
+ $export['node_preview_issue'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'node_submitted_issue';
+ $strongarm->value = 1;
+ $export['node_submitted_issue'] = $strongarm;
+
+ return $export;
+}
diff --git a/modules/custom/cu_publications_bundle/cu_publication/flatirons-wide.jpg b/modules/custom/cu_publications_bundle/cu_publication/flatirons-wide.jpg
new file mode 100644
index 000000000..6062bf455
Binary files /dev/null and b/modules/custom/cu_publications_bundle/cu_publication/flatirons-wide.jpg differ
diff --git a/modules/custom/cu_publications_bundle/cu_publication/scss/cu-publication.scss b/modules/custom/cu_publications_bundle/cu_publication/scss/cu-publication.scss
new file mode 100644
index 000000000..46261a80a
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/scss/cu-publication.scss
@@ -0,0 +1,233 @@
+@import "zen";
+$zen-gutter-width: 40px;
+
+.magazine-section-wrapper {
+ overflow: hidden;
+}
+h2.field-name-field-issue-section-title {
+ margin-bottom: 20px;
+}
+.issue-contents p.date,
+.issue-contents .author-meta {
+ display: none;
+}
+.issue-section-contents div.node-view-mode-feature:last-child,
+.issue-section-contents div.node-view-mode-teaser:last-child {
+ border-bottom: none;
+}
+
+.field-name-field-article-author {
+ margin-top:20px;
+ padding-top: 20px;
+ border-top: 1px solid #e7e7e7;
+}
+.field-name-field-article-author .person-view-mode-teaser-content {
+ border-bottom: none;
+}
+@media all and (min-width: 720px) {
+ $zen-column-count: 3;
+ .issue-wrapper {
+ //@include zen-grid-container();
+ //margin:0 -20px;
+ }
+ .issue-cover-image {
+ //@include zen-grid-item(1,1);
+ img {
+ width:100%;
+ height: auto;
+ max-width: 100%;
+ }
+ }
+ .issue-contents {
+ //@include zen-grid-item(2,2);
+ }
+}
+
+@media all and (max-width: 719px) {
+ .issue-notes {
+ border-bottom:1px solid #e7e7e7;
+ padding-bottom: 20px;
+ margin-bottom: 20px;
+ $zen-column-count: 2;
+ //@include zen-grid-container();
+ //margin-right:-20px;
+ //margin-left:-20px;
+
+ .issue-cover-image {
+ //@include zen-grid-item(1,1);
+ }
+ .issue-notes-content {
+ //@include zen-grid-item(1,2);
+ //font-size: 85%;
+ }
+ }
+}
+.issue-cover-image img {
+ display: block;
+ margin-bottom: 10px;
+}
+
+
+
+.publication-name-wrapper {
+ padding:20px 20px;
+ background-color: #272727;
+ color:#fff;
+ overflow: hidden;
+ img {
+ float: right;
+ }
+}
+
+#zone-intro,
+#intro-wide-wrapper {
+ img.publication-logo {
+ width: auto;
+ height: auto;
+ max-width: 100% !important;
+ }
+}
+body .page-title-wrapper h1.long-title {
+ font-size: 180%;
+}
+
+/* Current Issue Block */
+h3.current-issue-title {
+ text-align: center;
+ font-size: 100%;
+ margin: 0;
+ padding:5px 0;
+}
+/* Latest Issues Block */
+.issue-view-mode-grid {
+ margin-bottom: 20px;
+ h3.issue-title {
+ text-align: center;
+ font-size: 100%;
+ }
+}
+.current-issue,
+.latest-issues,
+.view-issue-archive {
+ overflow: hidden;
+ img {
+ display: block;
+ margin-bottom: 10px;
+ }
+}
+@media all and (max-width: 719px) {
+ .latest-issues {
+ overflow: hidden;
+ $zen-column-count: 2;
+ @include zen-grid-container();
+
+ .issue-view-mode-grid {
+ @include zen-float();
+ @include zen-grid-flow-item(1,2, false, true);
+ &:nth-child(2n+2) {
+ @include zen-grid-flow-item(1, 2, false, false);
+ }
+ &:nth-child(2n+1) {
+ @include zen-clear();
+ }
+ }
+ }
+ .view-issue-archive .view-content {
+ overflow: hidden;
+ //margin-right:-20px;
+ //margin-left:-20px;
+ $zen-column-count: 2;
+ @include zen-grid-container();
+
+ .archive-issue {
+ @include zen-float();
+ @include zen-grid-flow-item(1,2, false, true);
+ &:nth-child(2n+2) {
+ @include zen-grid-flow-item(1, 2, false, false);
+ }
+ &:nth-child(2n+1) {
+ @include zen-clear();
+ }
+ }
+ }
+}
+
+@media all and (min-width: 720px) {
+ .latest-issues {
+ $zen-column-count: 4;
+ @include zen-grid-container();
+ .issue-view-mode-grid {
+ $zen-column-count: 4;
+ @include zen-float();
+ @include zen-grid-flow-item(1,4, false, true);
+ &:nth-child(4n+4) {
+ @include zen-grid-flow-item(1, 4, false, false);
+ }
+ &:nth-child(4n+1) {
+ @include zen-clear();
+ }
+ }
+ }
+ .view-issue-archive .view-content {
+ $zen-column-count: 4;
+ @include zen-grid-container();
+ .archive-issue {
+ $zen-column-count: 4;
+ @include zen-float();
+ @include zen-grid-flow-item(1,4, false, true);
+ &:nth-child(4n+4) {
+ @include zen-grid-flow-item(1, 4, false, false);
+ }
+ &:nth-child(4n+1) {
+ @include zen-clear();
+ }
+ }
+ }
+}
+.article-grid-more-link,
+.issue-archive-link {
+ text-align: center;
+ a {
+ border:1px solid #0277BD;
+ padding:5px;
+ display: inline-block;
+ }
+ //margin: 0;
+}
+
+.issue-notes-content {
+ .region-content-sidebar-right,
+ .region-content-sidebar-left {
+ margin: 0;
+ padding: 0;
+ float: none;
+ clear: both;
+ width: auto;
+ }
+}
+.story-issue {
+ img {
+ float: left;
+ margin:0 10px 10px 0;
+ }
+ .story-issue-link {
+ overflow: hidden;
+ }
+}
+
+
+.related-articles .related-article {
+ margin-bottom:20px;
+ h3 {
+ font-size: 100%;
+ margin-bottom: 5px;
+ }
+}
+
+// Issue teaser more links
+.issue-summary .more-link {
+ white-space: nowrap;
+}
+.issue-summary .more-link:before {
+ content: " ";
+}
diff --git a/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--embed.tpl.php b/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--embed.tpl.php
new file mode 100644
index 000000000..c6904992c
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--embed.tpl.php
@@ -0,0 +1,9 @@
+
diff --git a/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--grid.tpl.php b/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--grid.tpl.php
new file mode 100644
index 000000000..34574fa0e
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--grid.tpl.php
@@ -0,0 +1,8 @@
+
diff --git a/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--sidebar.tpl.php b/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--sidebar.tpl.php
new file mode 100644
index 000000000..d183d747c
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--sidebar.tpl.php
@@ -0,0 +1,8 @@
+
diff --git a/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--teaser.tpl.php b/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--teaser.tpl.php
new file mode 100644
index 000000000..550b29382
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--teaser.tpl.php
@@ -0,0 +1,9 @@
+
diff --git a/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--title.tpl.php b/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--title.tpl.php
new file mode 100644
index 000000000..ec4e41895
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue--title.tpl.php
@@ -0,0 +1,5 @@
+
diff --git a/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue.tpl.php b/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue.tpl.php
new file mode 100644
index 000000000..e5daa39ea
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publication/templates/node--issue.tpl.php
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/custom/cu_publications_bundle/cu_publications_bundle.info b/modules/custom/cu_publications_bundle/cu_publications_bundle.info
new file mode 100644
index 000000000..b5a62172c
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publications_bundle.info
@@ -0,0 +1,27 @@
+name = CU Publications
+description = Provides the ability to create magazine style issues from article content types, issue cover art, current issue and issue archive pages, and other specialty blocks.
+core = 7.x
+package = CU-Publications
+project = cu_publications_bundle
+version = 7.x-1.2
+project status url = https://github.com/CuBoulder/cu_publications_bundle
+project_demo_url = http://www.colorado.edu/webcentral/node/1212
+
+dependencies[] = cu_publication
+dependencies[] = cu_news_bundle
+dependencies[] = ctools
+dependencies[] = entityreference
+dependencies[] = field_collection
+dependencies[] = image
+dependencies[] = list
+dependencies[] = options
+dependencies[] = strongarm
+dependencies[] = text
+
+bundle_cache_clear = 1
+bundle_group = 'addon_bundles'
+
+bundle_roles[] = developer
+bundle_roles[] = administrator
+bundle_roles[] = site_owner
+bundle_roles[] = configuration_manager
diff --git a/modules/custom/cu_publications_bundle/cu_publications_bundle.module b/modules/custom/cu_publications_bundle/cu_publications_bundle.module
new file mode 100644
index 000000000..e5fcc5139
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/cu_publications_bundle.module
@@ -0,0 +1,68 @@
+ array(
+ ),
+ 'authenticated user' => array(
+ ),
+ 'administrator' => array(
+ 'create issue content',
+ 'delete any issue content',
+ 'delete own issue content',
+ 'edit any issue content',
+ 'edit own issue content',
+ 'view any issue content',
+ ),
+ 'content_editor' => array(
+ 'create issue content',
+ 'delete any issue content',
+ 'delete own issue content',
+ 'edit any issue content',
+ 'edit own issue content',
+ 'view any issue content',
+ ),
+ 'developer' => array(
+ 'create issue content',
+ 'delete any issue content',
+ 'delete own issue content',
+ 'edit any issue content',
+ 'edit own issue content',
+ 'view any issue content',
+ ),
+ 'edit_my_content' => array(
+ 'edit own issue content',
+ 'view any issue content',
+ ),
+ 'edit_only' => array(
+ 'edit any issue content',
+ 'edit own issue content',
+ 'view any issue content',
+ ),
+ 'site_editor' => array(
+ 'create issue content',
+ 'delete any issue content',
+ 'delete own issue content',
+ 'edit any issue content',
+ 'edit own issue content',
+ 'view any issue content',
+ ),
+ 'site_owner' => array(
+ 'create issue content',
+ 'delete any issue content',
+ 'delete own issue content',
+ 'edit any issue content',
+ 'edit own issue content',
+ 'view any issue content',
+ ),
+ );
+
+ if (isset($permissions[$role])) {
+ return $permissions[$role];
+ }
+}
diff --git a/modules/custom/cu_publications_bundle/term_reference_cleaner/term_reference_cleaner.info b/modules/custom/cu_publications_bundle/term_reference_cleaner/term_reference_cleaner.info
new file mode 100644
index 000000000..a2b4c3dc3
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/term_reference_cleaner/term_reference_cleaner.info
@@ -0,0 +1,3 @@
+name = Term Reference Cleaner
+description = Removes term references from terms that have been deleted.
+core = 7.x
diff --git a/modules/custom/cu_publications_bundle/term_reference_cleaner/term_reference_cleaner.module b/modules/custom/cu_publications_bundle/term_reference_cleaner/term_reference_cleaner.module
new file mode 100644
index 000000000..7b88f8261
--- /dev/null
+++ b/modules/custom/cu_publications_bundle/term_reference_cleaner/term_reference_cleaner.module
@@ -0,0 +1,114 @@
+ ' Term Reference Cleaner',
+ 'type' => MENU_NORMAL_ITEM,
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('term_reference_cleaner_form'),
+ 'access arguments' => array('administer term reference cleaner'),
+ );
+ return $items;
+}
+
+/**
+ * Implements hook_permission().
+ */
+function term_reference_cleaner_permission() {
+ $permissions = array(
+ 'administer term reference cleaner' => array(
+ 'title' => 'Use Term Reference Cleaner',
+ 'description' => 'Remove deleted terms from reference fields',
+ ),
+ );
+ return $permissions;
+}
+
+/**
+ * Implements hook_form().
+ * Admin form for using term_reference_cleaner.
+ */
+function term_reference_cleaner_form($form, &$form_state) {
+ $form = array();
+ $form['description'] = array(
+ '#markup' => 'Clicking the button below will remove any references to deleted terms.
'
+ );
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => t('Remove deleted term references'),
+ );
+ $form['#submit'][] = 'term_reference_cleaner_submit';
+ return $form;
+}
+
+/**
+ * Submit function for term_reference_cleaner_form().
+ */
+function term_reference_cleaner_submit() {
+ // Query for term reference fields
+ $query = db_select('field_config', 'fc');
+ $query->fields('fc', array('field_name','type'));
+ $query->condition('fc.type', 'taxonomy_term_reference', '=');
+ $fields = $query->execute()->fetchCol();
+ $operations = array();
+ $count = 0;
+ // Load term reference fields into a batch
+ foreach ($fields as $field) {
+ $count++;
+ $operations[] = array(
+ 'term_reference_cleaner_from_field',
+ array(
+ $field,
+ t('(Operation @operation)',
+ array('@operation' => $count)),
+ ),
+ );
+ }
+ $batch = array(
+ 'operations' => $operations,
+ 'finished' => 'term_reference_cleaner_finished',
+ 'title' => t('Removing references to deleted terms.'),
+ );
+ batch_set($batch);
+ return $batch;
+}
+/**
+ * Batch processing function for term_reference_cleaner_submit().
+ */
+function term_reference_cleaner_from_field($field) {
+ // Make varaibles for table and column names in queries
+ $field_table = 'field_data_' . $field;
+ $revision_table = 'field_revision_' . $field;
+ $term_column = $field . '_tid';
+ // Query table to get all referenced terms
+ $tids = array();
+ $query = db_select($field_table, 'f');
+ $query->fields('f', array($term_column));
+ $query->groupBy($term_column);
+ $tids = $query->execute()->fetchCol();
+ // Get existing term ids
+ $saved_terms = term_reference_cleaner_get_term_ids();
+ foreach($tids as $tid) {
+ // If the term is not in array of existing terms, delete the reference
+ if (!in_array($tid, $saved_terms)) {
+ // Delete references
+ $field_references_deleted = db_delete($field_table)->condition($term_column, $tid)->execute();
+ $revision_references_deleted = db_delete($revision_table)->condition($term_column, $tid)->execute();
+ }
+ }
+}
+
+function term_reference_cleaner_finished($success, $results, $operations) {
+ drupal_set_message('References to deleted terms have been removed.');
+}
+
+function term_reference_cleaner_get_term_ids() {
+ $query = db_select('taxonomy_term_data', 'ttd');
+ $query->fields('ttd', array('tid'));
+ $tids = $query->execute()->fetchCol();
+ return $tids;
+}
diff --git a/modules/custom/cu_section_page_bundle/config.rb b/modules/custom/cu_section_page_bundle/config.rb
new file mode 100644
index 000000000..655458ed5
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/config.rb
@@ -0,0 +1,14 @@
+# Require any additional compass plugins here.
+
+# Set this to the root of your project when deployed:
+css_dir = "css"
+sass_dir = "scss"
+
+output_style = :compact
+
+relative_assets = true
+
+line_comments = false
+color_output = false
+
+cache = false
diff --git a/modules/custom/cu_section_page_bundle/css/cu-section-page.css b/modules/custom/cu_section_page_bundle/css/cu-section-page.css
new file mode 100644
index 000000000..bace168b3
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/css/cu-section-page.css
@@ -0,0 +1,54 @@
+.node-type-section-page #main { padding-bottom: 0; }
+
+.section-page-sections { position: relative; }
+.section-page-sections .block-section { overflow: hidden; width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; display: flex; align-items: center; padding-bottom: 72px; }
+.section-page-size-full .section-page-sections .block-section { min-height: 100vh; }
+.section-page-sections .block-section .block-section-content-wrapper { width: 100%; }
+.section-page-sections .block-section .section-next-wrapper { position: absolute; bottom: 0; left: 0; right: 0; text-align: center; color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.65); z-index: 1; }
+.section-page-sections .block-section .section-next-wrapper .section-next { display: inline-block; margin: 0 auto; font-size: 48px; }
+@media screen and (min-width: 768px) { .section-page-sections .block-section .section-next-wrapper .section-next { font-size: 64px; } }
+
+.node-type-section-page .section-page-hide-title .breadcrumb-wrapper, .node-type-section-page .section-page-hide-title .main-title-wrapper, .node-type-section-page .section-page-hide-title .page-title-wrapper, .node-type-section-page .section-page-hide-title h1.page-title { border: 0; height: 1px !important; overflow: hidden; padding: 0 !important; position: absolute !important; width: 1px !important; white-space: nowrap; }
+.node-type-section-page .section-page-hide-title #main, .node-type-section-page .section-page-hide-title #main-content-wrapper { padding: 0; }
+.node-type-section-page .section-page-hide-title .section-page-body { padding: 20px 0; }
+.node-type-section-page .section-page-hide-title #main .region-content > .block:first-child { margin-top: 20px; }
+.node-type-section-page .post-title-wide-wrapper { padding-bottom: 0; }
+.node-type-section-page .content-wrapper { padding-bottom: 0; }
+
+.section-page-nav { position: fixed; top: 50%; right: -20px; font-size: 24px; transform: translateY(-50%); z-index: 10; display: flex; align-items: center; }
+@media screen and (min-width: 600px) { .section-page-nav { right: 0px; font-size: inherit; } }
+.section-page-nav ul, .section-page-nav li { margin: 0; padding: 0; list-style: none; }
+.section-page-nav a:link, .section-page-nav a:visited { padding: 10px 10px; text-align: center; display: block; color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.75); }
+.section-page-nav a:hover { color: #cfb87c; }
+
+@media screen and (max-width: 1160px) { .block-section-content-wrapper { padding-right: 30px; padding-left: 30px; } }
+.cssanimations .block-section-content.animated { opacity: 0; -webkit-animation-duration: .5s; -moz-animation-duration: .5s; animation-duration: .5s; }
+
+.section-page-trigger { padding: 1px; background: #000; width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; }
+
+.section-page-navigation-wrapper { background-color: #000; width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; min-height: 40px; }
+
+.section-page-section-navigation { background: #000; width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; color: #fff; padding: 0 20px; -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.25); box-shadow: 0 0 10px rgba(0, 0, 0, 0.25); }
+.section-page-section-navigation ul, .section-page-section-navigation li { list-style: none; margin: 0; padding: 0; }
+.section-page-section-navigation ul { display: none; }
+.section-page-section-navigation a:link, .section-page-section-navigation a:visited { display: block; padding: 10px 0; color: #fff; font-weight: bold; }
+.section-page-section-navigation a:link.active-section, .section-page-section-navigation a:visited.active-section { color: #cfb87c; }
+@media screen and (min-width: 768px) { .section-page-section-navigation.sticky { position: fixed; z-index: 10; top: 0; }
+ .section-page-section-navigation ul { display: flex !important; flex-direction: row; justify-content: center; align-items: center; }
+ .section-page-section-navigation #section-page-section-navigation-expand { display: none; }
+ .section-page-section-navigation a:link, .section-page-section-navigation a:visited { padding: 10px; } }
+
+.section-page-section-navigation:not(.sticky), .section-page-navigation-wrapper:not(.sticky) { top: auto !important; }
+
+#sticky-menu.scroll { position: static; }
+
+#sticky-menu { background: #000 !important; }
+
+.layout-boxed .section-page-section-navigation { width: 100%; position: relative; left: auto; right: auto; margin: 0; }
+.layout-boxed .section-page-navigation-wrapper { margin: 0 -20px; position: relative; left: auto; right: auto; width: auto; background: none; }
+.layout-boxed .section-page-navigation-wrapper.sticky { position: fixed; z-index: 10; top: 0; width: 100%; max-width: 1200px; }
+.layout-boxed .section-page-sections { position: relative; margin: 0 -20px; }
+.layout-boxed .section-page-sections .block-section { overflow: hidden; width: 100%; position: relative; left: auto; right: auto; margin: 0; }
+
+/* Editing */
+.section-page-sections > .contextual-links-region:hover .contextual-links-wrapper { display: block; z-index: 2; right: 20px; }
diff --git a/modules/custom/cu_section_page_bundle/cu_section_page_bundle.features.field_base.inc b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.features.field_base.inc
new file mode 100644
index 000000000..8172a9536
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.features.field_base.inc
@@ -0,0 +1,127 @@
+ 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_section_page_hide_title',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 0 => '',
+ 1 => '',
+ ),
+ 'allowed_values_function' => '',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_boolean',
+ );
+
+ // Exported field_base: 'field_section_page_navigation'.
+ $field_bases['field_section_page_navigation'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_section_page_navigation',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 0 => '',
+ 1 => '',
+ ),
+ 'allowed_values_function' => '',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_boolean',
+ );
+
+ // Exported field_base: 'field_section_page_sections'.
+ $field_bases['field_section_page_sections'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_section_page_sections',
+ 'indexes' => array(
+ 'target_id' => array(
+ 0 => 'target_id',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'entityreference',
+ 'settings' => array(
+ 'handler' => 'base',
+ 'handler_settings' => array(
+ 'behaviors' => array(
+ 'views-select-list' => array(
+ 'status' => 0,
+ ),
+ ),
+ 'sort' => array(
+ 'type' => 'none',
+ ),
+ 'target_bundles' => array(
+ 'block_section' => 'block_section',
+ ),
+ ),
+ 'target_type' => 'bean',
+ ),
+ 'translatable' => 0,
+ 'type' => 'entityreference',
+ );
+
+ // Exported field_base: 'field_section_page_size'.
+ $field_bases['field_section_page_size'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_section_page_size',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 0 => '',
+ 1 => '',
+ ),
+ 'allowed_values_function' => '',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_boolean',
+ );
+
+ return $field_bases;
+}
diff --git a/modules/custom/cu_section_page_bundle/cu_section_page_bundle.features.field_instance.inc b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.features.field_instance.inc
new file mode 100644
index 000000000..ada008bca
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.features.field_instance.inc
@@ -0,0 +1,260 @@
+ 'section_page',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 0,
+ ),
+ 'teaser' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(
+ 'trim_length' => 600,
+ ),
+ 'type' => 'text_summary_or_trimmed',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'field_name' => 'body',
+ 'label' => 'Body',
+ 'required' => FALSE,
+ 'settings' => array(
+ 'display_summary' => TRUE,
+ 'text_processing' => 1,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'module' => 'text',
+ 'settings' => array(
+ 'rows' => 20,
+ 'summary_rows' => 5,
+ ),
+ 'type' => 'text_textarea_with_summary',
+ 'weight' => 3,
+ ),
+ );
+
+ // Exported field_instance: 'node-section_page-field_section_page_hide_title'.
+ $field_instances['node-section_page-field_section_page_hide_title'] = array(
+ 'bundle' => 'section_page',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 0,
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => FALSE,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'module' => 'list',
+ 'settings' => array(),
+ 'type' => 'list_default',
+ 'weight' => 4,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_section_page_hide_title',
+ 'label' => 'Hide Page Title & Breadcrumbs',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(
+ 'display_label' => 1,
+ ),
+ 'type' => 'options_onoff',
+ 'weight' => 7,
+ ),
+ );
+
+ // Exported field_instance: 'node-section_page-field_section_page_navigation'.
+ $field_instances['node-section_page-field_section_page_navigation'] = array(
+ 'bundle' => 'section_page',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 0,
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => '',
+ 'deleted' => 0,
+ 'description' => 'Section navigation is created from the titles of the Block Sections referenced below.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'list',
+ 'settings' => array(),
+ 'type' => 'list_key',
+ 'weight' => 2,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_section_page_navigation',
+ 'label' => 'Display Section Navigation',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(
+ 'display_label' => 1,
+ ),
+ 'type' => 'options_onoff',
+ 'weight' => 8,
+ ),
+ );
+
+ // Exported field_instance: 'node-section_page-field_section_page_sections'.
+ $field_instances['node-section_page-field_section_page_sections'] = array(
+ 'bundle' => 'section_page',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'entityreference',
+ 'settings' => array(
+ 'links' => 1,
+ 'use_content_language' => 1,
+ 'view_mode' => 'default',
+ ),
+ 'type' => 'entityreference_entity_view',
+ 'weight' => 1,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_section_page_sections',
+ 'label' => 'Sections',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'inline_entity_form',
+ 'settings' => array(
+ 'fields' => array(),
+ 'type_settings' => array(
+ 'allow_clone' => 0,
+ 'allow_existing' => 1,
+ 'allow_new' => 1,
+ 'delete_references' => 0,
+ 'label_plural' => 'entities',
+ 'label_singular' => 'entity',
+ 'match_operator' => 'CONTAINS',
+ 'override_labels' => 0,
+ ),
+ ),
+ 'type' => 'inline_entity_form',
+ 'weight' => 4,
+ ),
+ );
+
+ // Exported field_instance: 'node-section_page-field_section_page_size'.
+ $field_instances['node-section_page-field_section_page_size'] = array(
+ 'bundle' => 'section_page',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 0,
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => '',
+ 'deleted' => 0,
+ 'description' => 'Set the minimum height of each section to the height of the users browser window. Recommended for more defined sections, where each section fills the screen. This will override any vertical padding settings in the sections.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'module' => 'list',
+ 'settings' => array(),
+ 'type' => 'list_default',
+ 'weight' => 3,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_section_page_size',
+ 'label' => 'Full Height Sections',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(
+ 'display_label' => 1,
+ ),
+ 'type' => 'options_onoff',
+ 'weight' => 9,
+ ),
+ );
+
+ // Translatables
+ // Included for use with string extractors like potx.
+ t('Body');
+ t('Display Section Navigation');
+ t('Full Height Sections');
+ t('Hide Page Title & Breadcrumbs');
+ t('Section navigation is created from the titles of the Block Sections referenced below.');
+ t('Sections');
+ t('Set the minimum height of each section to the height of the users browser window. Recommended for more defined sections, where each section fills the screen. This will override any vertical padding settings in the sections.');
+
+ return $field_instances;
+}
diff --git a/modules/custom/cu_section_page_bundle/cu_section_page_bundle.features.inc b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.features.inc
new file mode 100644
index 000000000..af133da28
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.features.inc
@@ -0,0 +1,35 @@
+ "1");
+ }
+ if ($module == "strongarm" && $api == "strongarm") {
+ return array("version" => "1");
+ }
+}
+
+/**
+ * Implements hook_node_info().
+ */
+function cu_section_page_bundle_node_info() {
+ $items = array(
+ 'section_page' => array(
+ 'name' => t('Section Page'),
+ 'base' => 'node_content',
+ 'description' => 'A page built with Block Sections that can include in-page navigation for each section.',
+ 'has_title' => '1',
+ 'title_label' => t('Title'),
+ 'help' => '',
+ ),
+ );
+ drupal_alter('node_info', $items);
+ return $items;
+}
diff --git a/modules/custom/cu_section_page_bundle/cu_section_page_bundle.field_group.inc b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.field_group.inc
new file mode 100644
index 000000000..414492e46
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.field_group.inc
@@ -0,0 +1,49 @@
+disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_section_page_navigation|node|section_page|form';
+ $field_group->group_name = 'group_section_page_navigation';
+ $field_group->entity_type = 'node';
+ $field_group->bundle = 'section_page';
+ $field_group->mode = 'form';
+ $field_group->parent_name = '';
+ $field_group->data = array(
+ 'label' => 'Settings',
+ 'weight' => '4',
+ 'children' => array(
+ 0 => 'field_section_page_navigation',
+ 1 => 'field_section_page_size',
+ 2 => 'field_section_page_hide_title',
+ ),
+ 'format_type' => 'fieldset',
+ 'format_settings' => array(
+ 'label' => 'Settings',
+ 'instance_settings' => array(
+ 'required_fields' => 1,
+ 'id' => '',
+ 'classes' => 'group-section-page-navigation field-group-fieldset',
+ 'description' => '',
+ ),
+ 'formatter' => 'open',
+ ),
+ );
+ $field_groups['group_section_page_navigation|node|section_page|form'] = $field_group;
+
+ // Translatables
+ // Included for use with string extractors like potx.
+ t('Settings');
+
+ return $field_groups;
+}
diff --git a/modules/custom/cu_section_page_bundle/cu_section_page_bundle.info b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.info
new file mode 100644
index 000000000..a8e240fec
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.info
@@ -0,0 +1,48 @@
+name = Section Page
+core = 7.x
+package = CU Section Page Bundle
+description = A page content type built from individually designed sections.
+version = 7.x-1.1
+project = cu_section_page_bundle
+
+dependencies[] = ctools
+dependencies[] = entityreference
+dependencies[] = express_field_bases
+dependencies[] = features
+dependencies[] = field_group
+dependencies[] = inline_entity_form
+dependencies[] = list
+dependencies[] = strongarm
+dependencies[] = text
+dependencies[] = cu_advanced_layout_bundle
+scripts[] = js/cu-section-page.js
+stylesheets[all][] = css/cu-section-page.css
+features[ctools][] = field_group:field_group:1
+features[ctools][] = strongarm:strongarm:1
+features[features_api][] = api:2
+features[field_base][] = field_section_page_hide_title
+features[field_base][] = field_section_page_navigation
+features[field_base][] = field_section_page_sections
+features[field_base][] = field_section_page_size
+features[field_group][] = group_section_page_navigation|node|section_page|form
+features[field_instance][] = node-section_page-body
+features[field_instance][] = node-section_page-field_section_page_hide_title
+features[field_instance][] = node-section_page-field_section_page_navigation
+features[field_instance][] = node-section_page-field_section_page_sections
+features[field_instance][] = node-section_page-field_section_page_size
+features[node][] = section_page
+features[variable][] = additional_settings__active_tab_section_page
+features[variable][] = attachment_links_create_alias_section_page
+features[variable][] = attachment_links_selection_section_page
+features[variable][] = field_bundle_settings_node__section_page
+features[variable][] = menu_options_section_page
+features[variable][] = menu_parent_section_page
+features[variable][] = metatag_enable_node__section_page
+features[variable][] = node_options_section_page
+features[variable][] = node_preview_section_page
+features[variable][] = node_submitted_section_page
+features[variable][] = pathauto_node_section_page_pattern
+features[variable][] = save_continue_section_page
+
+bundle_roles[] = developer
+bundle_roles[] = administrator
diff --git a/modules/custom/cu_section_page_bundle/cu_section_page_bundle.install b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.install
new file mode 100644
index 000000000..6167b76fe
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.install
@@ -0,0 +1,49 @@
+ 0,
+ 'field_feature_title_image' => 'field_feature_title_image',
+ 'field_footer' => 0,
+ 'field_header' => 'field_header',
+ 'field_intro' => 'field_intro',
+ 'field_sidebar_first' => 0,
+ 'field_sidebar_second' => 0,
+ 'field_slider' => 'field_slider',
+ 'field_wide_2' => 'field_wide_2',
+ 'field_inner_content_left' => 0,
+ 'field_inner_content_right' => 0,
+ 'field_content_bottom' => 'field_content_bottom',
+ 'field_post_title' => 'field_post_title',
+ 'field_post_title_wide' => 'field_post_title_wide',
+ );
+ foreach ($settings as $key => $setting) {
+ variable_set($key, $setting);
+ }
+ $types = array(
+ 'section_page',
+ );
+ foreach ($types as $key => $type) {
+ $var = 'express_layout_type_' . $type;
+ variable_set($var, $type);
+ }
+}
+
+/**
+ * Implements hook_enable.
+ *
+ * Set module weight.
+ */
+function cu_section_page_bundle_enable() {
+ db_update('system')
+ ->fields(array('weight' => 1))
+ ->condition('name', 'cu_section_page_bundle', '=')
+ ->execute();
+}
+
+/**
+ * Update available layout fields.
+ */
+function cu_section_page_bundle_update_7001() {
+ cu_section_page_bundle_install();
+}
diff --git a/modules/custom/cu_section_page_bundle/cu_section_page_bundle.module b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.module
new file mode 100644
index 000000000..211764413
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.module
@@ -0,0 +1,211 @@
+ t('Waypoints'),
+ 'vendor url' => 'http://imakewebthings.com/waypoints/',
+ 'download url' => 'https://github.com/imakewebthings/waypoints',
+ 'version' => '0.7.0',
+ 'files' => array(
+ 'js' => array(
+ 'waypoint.js' => array(),
+ ),
+ ),
+ );
+ $libraries['animate_css'] = array(
+ 'name' => t('Animate.CSS'),
+ 'vendor url' => 'http://daneden.github.io/animate.css',
+ 'download url' => 'http://daneden.github.io/animate.css',
+ 'version' => '0.7.0',
+ 'files' => array(
+ 'css' => array(
+ 'animate.css' => array(),
+ ),
+ ),
+ );
+
+ return $libraries;
+}
+
+function cu_section_page_bundle_page_alter(&$page) {
+ // Remove sidebars
+ $node = menu_get_object();
+ if ($node && $node->type =='section_page') {
+ unset($page['sidebar_first']);
+ unset($page['sidebar_second']);
+ }
+}
+
+function cu_section_page_bundle_preprocess_page(&$vars) {
+ if (!empty($vars['node'])) {
+ $type = $vars['node']->type;
+ }
+ else {
+ $type = '';
+ }
+ if ($type == 'section_page' && !path_is_admin(current_path())) {
+
+ $vars['theme_hook_suggestions'][] = 'page__type__' . $type;
+ // Is the library installed?
+ $path = libraries_get_path('waypoints') . '/waypoint.js';
+ $installed = file_exists($path);
+ if (!$installed) {
+ return;
+ }
+ // Add the library reference.
+ drupal_add_js($path, array(
+ 'group' => JS_LIBRARY,
+ 'every_page' => TRUE,
+ ));
+ $installed = file_exists($path);
+ if (!$installed) {
+ return;
+ }
+ $path = libraries_get_path('animate_css') . '/animate.css';
+ drupal_add_css($path);
+
+ if (!empty($vars['node']->field_section_page_size) && ($vars['node']->field_section_page_size[LANGUAGE_NONE][0]['value'] == 1)) {
+ $vars['classes_array'][] = 'section-page-size-full';
+ }
+
+ if (!empty($vars['node']->field_section_page_navigation) && ($vars['node']->field_section_page_navigation[LANGUAGE_NONE][0]['value'] == 1)) {
+ $vars['classes_array'][] = 'section-page-navigation-active';
+ }
+
+ if (!empty($vars['node']->field_section_page_hide_title) && ($vars['node']->field_section_page_hide_title[LANGUAGE_NONE][0]['value'] == 1)) {
+ $vars['classes_array'][] = 'section-page-hide-title';
+ }
+
+ }
+}
+
+function cu_section_page_bundle_secure_permissions($role) {
+ $permissions = array(
+ 'administrator' => array(
+ 'create section_page content',
+ 'delete any section_page content',
+ 'delete own section_page content',
+ 'edit any section_page content',
+ 'edit own section_page content',
+ ),
+ 'anonymous user' => array(),
+ 'authenticated user' => array(),
+ 'content_editor' => array(
+ 'create section_page content',
+ 'delete any section_page content',
+ 'delete own section_page content',
+ 'edit any section_page content',
+ 'edit own section_page content',
+ ),
+ 'edit_only_temp' => array(
+ 'edit any section_page content',
+ 'edit own section_page content',
+ ),
+ 'developer' => array(
+ 'create section_page content',
+ 'delete any section_page content',
+ 'delete own section_page content',
+ 'edit any section_page content',
+ 'edit own section_page content',
+ ),
+ 'edit_my_content' => array(
+ 'edit own section_page content',
+ ),
+ 'edit_only' => array(
+ 'edit any section_page content',
+ ),
+ 'site_editor' => array(
+ 'create section_page content',
+ 'delete any section_page content',
+ 'delete own section_page content',
+ 'edit any section_page content',
+ 'edit own section_page content',
+ ),
+ 'site_owner' => array(
+ 'create section_page content',
+ 'delete any section_page content',
+ 'delete own section_page content',
+ 'edit any section_page content',
+ 'edit own section_page content',
+ ),
+ 'site_editor' => array(
+ 'create section_page content',
+ 'delete any section_page content',
+ 'delete own section_page content',
+ 'edit any section_page content',
+ 'edit own section_page content',
+ ),
+ );
+ if (isset($permissions[$role])) {
+ return $permissions[$role];
+ }
+}
+
+function cu_section_page_bundle_theme_registry_alter(&$theme_registry) {
+ $module_path = drupal_get_path('module', 'cu_section_page_bundle');
+ $theme_registry_copy = $theme_registry;
+ _theme_process_registry($theme_registry_copy, 'phptemplate', 'theme_engine', 'theme', $module_path);
+ $theme_registry += array_diff_key($theme_registry_copy, $theme_registry);
+ $hooks = array('theme');
+ foreach ($hooks as $h) {
+ if (isset($theme_registry[$h]['theme paths'])) {
+ $first_element = array_shift($theme_registry[$h]['theme paths']);
+ array_unshift($theme_registry[$h]['theme paths'], array_shift($theme_registry[$h]['theme paths']), $module_path);
+ }
+ }
+}
+
+/*
+ * Implements hook_preprocess_entity().
+ * prepares nodes for tpl output.
+ *
+ */
+function cu_section_page_bundle_preprocess_node(&$vars) {
+ if ($vars['node']->type == 'section_page') {
+ $sections = array();
+ foreach ($vars['field_section_page_sections'] as $section) {
+ if (!empty($section['entity']->title)) {
+ $id = $section['target_id'];
+ $sections[$id] = $section['entity']->title;
+ }
+ }
+ $vars['section_page_labels'] = $sections;
+
+ }
+}
+
+/**
+ * Implements hook_block_unused_beans.
+ *
+ * Report beans that are referenced by section pages.
+ */
+function cu_section_page_bundle_block_unused_beans($vars) {
+
+ $vars['Section Page']['field_data_field_section_page_sections'] = array(
+ 'table' => 'field_data_field_section_page_sections',
+ 'column' => 'field_section_page_sections_target_id',
+ );
+ return $vars;
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter.
+ *
+ * Set create menu item to true on new nodes.
+ */
+function cu_section_page_bundle_form_section_page_node_form_alter(&$form, &$form_state, $form_id) {
+ // Only do this for new nodes
+ if ($form['nid']['#value'] == NULL) {
+ $form['menu']['enabled']['#default_value'] = TRUE;
+ }
+}
diff --git a/modules/custom/cu_section_page_bundle/cu_section_page_bundle.strongarm.inc b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.strongarm.inc
new file mode 100644
index 000000000..ba17200df
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/cu_section_page_bundle.strongarm.inc
@@ -0,0 +1,172 @@
+disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'additional_settings__active_tab_section_page';
+ $strongarm->value = 'edit-display';
+ $export['additional_settings__active_tab_section_page'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'attachment_links_create_alias_section_page';
+ $strongarm->value = 0;
+ $export['attachment_links_create_alias_section_page'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'attachment_links_selection_section_page';
+ $strongarm->value = '0';
+ $export['attachment_links_selection_section_page'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'field_bundle_settings_node__section_page';
+ $strongarm->value = array(
+ 'view_modes' => array(
+ 'teaser' => array(
+ 'custom_settings' => TRUE,
+ ),
+ 'full' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'rss' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'diff_standard' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'token' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'email_feature' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'email_teaser' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'embed' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'feature' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'promo' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'sidebar' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'table' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'title' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'teaser_large' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'grid' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'revision' => array(
+ 'custom_settings' => FALSE,
+ ),
+ ),
+ 'extra_fields' => array(
+ 'form' => array(
+ 'metatags' => array(
+ 'weight' => '6',
+ ),
+ 'title' => array(
+ 'weight' => '0',
+ ),
+ 'path' => array(
+ 'weight' => '2',
+ ),
+ 'redirect' => array(
+ 'weight' => '1',
+ ),
+ ),
+ 'display' => array(),
+ ),
+ );
+ $export['field_bundle_settings_node__section_page'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'menu_options_section_page';
+ $strongarm->value = array(
+ 0 => 'menu-footer-menu',
+ 1 => 'main-menu',
+ 2 => 'menu-secondary-menu',
+ );
+ $export['menu_options_section_page'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'menu_parent_section_page';
+ $strongarm->value = 'main-menu:0';
+ $export['menu_parent_section_page'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'metatag_enable_node__section_page';
+ $strongarm->value = TRUE;
+ $export['metatag_enable_node__section_page'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'node_options_section_page';
+ $strongarm->value = array(
+ 0 => 'status',
+ );
+ $export['node_options_section_page'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'node_preview_section_page';
+ $strongarm->value = '1';
+ $export['node_preview_section_page'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'node_submitted_section_page';
+ $strongarm->value = 0;
+ $export['node_submitted_section_page'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'pathauto_node_section_page_pattern';
+ $strongarm->value = '[node:menu-link:parents:join-path]/[node:title]';
+ $export['pathauto_node_section_page_pattern'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'save_continue_section_page';
+ $strongarm->value = 'Save and add fields';
+ $export['save_continue_section_page'] = $strongarm;
+
+ return $export;
+}
diff --git a/modules/custom/cu_section_page_bundle/js/cu-section-page.js b/modules/custom/cu_section_page_bundle/js/cu-section-page.js
new file mode 100644
index 000000000..62a655520
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/js/cu-section-page.js
@@ -0,0 +1,133 @@
+(function( $ ){
+ $(document).ready(function(){
+ var sections = $('.section-page-sections .block-section').length;
+
+ var section_nav;
+ // Add section navigation.
+ $('.section-page-navigation-active .section-page-sections').prepend('
');
+
+ // Add animation class.
+ // $('.section-page-sections .block-section:not(:first) .block-section-content').addClass('animated');
+
+ // Build section navigation.
+ $('.section-page-sections .block-section').each(function(i){
+ var item = i +1;
+ var target = $(this).attr('id');
+ var link = '' + item + ' ';
+ $('.section-page-navigation-active .section-page-nav ul').append(link);
+
+ // Add anchors for each section
+ $('').insertBefore(this);
+
+ // Add a tabindex so we can focus user to sections
+ $(this).attr('tabindex','-1');
+ // Add waypoints for highlighting what section is currently in view.
+ $(this).waypoint(function(direction) {
+ // Highlight element when related content
+ // is 100px from the bottom...
+ // remove if below
+ var id = $(this).attr('id');
+ //sectionPageActive(id);
+ $(this).toggleClass('active', direction === 'down');
+ var id = $(this).attr('id');
+ sectionPageActive(id);
+ // $('.block-section-content', this).addClass('fadeIn');
+ }, {
+ offset: 80 //
+ })
+ .waypoint(function(direction) {
+ var id = $(this).attr('id');
+ // Highlight element when bottom of related content
+ // is 100px from the top - remove if less
+ // TODO - make function for this
+ $(this).toggleClass('active', direction === 'up');
+ var id = $(this).attr('id');
+ sectionPageActive(id);
+ }, {
+ offset: function() { return -$(this).height() + 80; }
+ });
+ // $('.section-page-sections .block-section-content:first').addClass('fadeIn');
+ });
+ $('.section-page-navigation-active .section-page-sections .block-section:not(:last)').each(function(i){
+ // Next.
+ var next = '
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $title_image_width,
+ 'title_image_wrapper_class' => $title_image_wrapper_class,
+ 'title_image' => $title_image,
+ );
+ print theme('page_title_image', $vars);
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/custom/cu_section_page_bundle/templates/node--section-page.tpl.php b/modules/custom/cu_section_page_bundle/templates/node--section-page.tpl.php
new file mode 100644
index 000000000..6dbf65143
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/templates/node--section-page.tpl.php
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+ $item): ?>
+
+
+ delta;
+ $path = "block/$delta/edit";
+
+ ?>
+
+
+
+ -
+ array('destination' => current_path()))); ?>
+
+
+
+
+
+
+
+
+
diff --git a/modules/custom/express_collections_bundle/LICENSE b/modules/custom/express_collections_bundle/LICENSE
new file mode 100644
index 000000000..23cb79033
--- /dev/null
+++ b/modules/custom/express_collections_bundle/LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ {description}
+ Copyright (C) {year} {fullname}
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ {signature of Ty Coon}, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/modules/custom/express_collections_bundle/README.md b/modules/custom/express_collections_bundle/README.md
new file mode 100644
index 000000000..aeee0412d
--- /dev/null
+++ b/modules/custom/express_collections_bundle/README.md
@@ -0,0 +1,5 @@
+[![Build Status](https://travis-ci.org/CuBoulder/express_collections_bundle.svg?branch=master)](https://travis-ci.org/CuBoulder/express_collections_bundle)
+
+**NOTE: To update this repository's codebase, please follow: [Releasing Custom Bundle Code](https://github.com/CuBoulder/express_documentation/blob/master/docs/custom_bundle_releases.md#how-to-succesfully-update-a-custom-bundles-code).**
+
+The express_collections_bundle adds a content type and block display for collections of content.
diff --git a/modules/custom/express_collections_bundle/config.rb b/modules/custom/express_collections_bundle/config.rb
new file mode 100644
index 000000000..655458ed5
--- /dev/null
+++ b/modules/custom/express_collections_bundle/config.rb
@@ -0,0 +1,14 @@
+# Require any additional compass plugins here.
+
+# Set this to the root of your project when deployed:
+css_dir = "css"
+sass_dir = "scss"
+
+output_style = :compact
+
+relative_assets = true
+
+line_comments = false
+color_output = false
+
+cache = false
diff --git a/modules/custom/express_collections_bundle/css/express-collections-bundle.css b/modules/custom/express_collections_bundle/css/express-collections-bundle.css
new file mode 100644
index 000000000..617fb1141
--- /dev/null
+++ b/modules/custom/express_collections_bundle/css/express-collections-bundle.css
@@ -0,0 +1,64 @@
+.collection-view-mode-grid { margin-bottom: 20px; }
+.collection-view-mode-grid h4 { font-size: 100%; margin: 0; }
+.collection-view-mode-grid h4 a { display: block; }
+
+ul.collection-items-navigation, ul.collection-items-navigation li { list-style: none; list-style-image: none; margin: 0; padding: 0; }
+
+ul.collection-items-navigation { margin-bottom: 10px; }
+
+ul.collection-items-navigation li { display: inline; }
+
+ul.collection-items-navigation a { display: inline-block; padding: 2px 5px; border: 1px solid #d7d7d7; font-size: 75%; color: #656565; margin: 0 5px 5px 0; font-weight: 600; text-transform: uppercase; }
+ul.collection-items-navigation a.active { background-color: #d7d7d7; color: #000; }
+
+select.collection-filter { margin-bottom: 10px; }
+
+.bean-collection-grid label { display: inline; font-size: 85%; font-weight: 600; }
+
+.collection-items .row { display: flex; flex-direction: row; flex-wrap: wrap; }
+.collection-items .row .collection-item { width: 100%; padding: 0 20px; }
+.collection-items .row .collection-item img { width: 100%; height: auto; }
+@media (min-width: 1200px) { .collection-items .row .collection-item { width: 33.3333%; } }
+@media (min-width: 960px) and (max-width: 1199px) { .collection-items .row .collection-item { width: 33.3333%; } }
+@media (min-width: 768px) and (max-width: 959px) { .collection-items .row .collection-item { width: 50%; } }
+
+.collection-item { opacity: 1; -webkit-transition: opacity 0.3s linear; -moz-transition: opacity 0.3s linear; -ms-transition: opacity 0.3s linear; -o-transition: opacity 0.3s linear; transition: opacity 0.3s linear; display: flex; align-items: stretch; }
+.collection-item img { filter: grayscale(0); -webkit-transition: filter 0.3s linear; -moz-transition: filter 0.3s linear; -ms-transition: filter 0.3s linear; -o-transition: filter 0.3s linear; transition: filter 0.3s linear; }
+
+.collection-item.collection-item-disabled { opacity: .25; display: none; }
+.collection-item.collection-item-disabled img, .collection-item.collection-item-disabled a { filter: grayscale(1); }
+
+.collection-view-mode-grid-content { border: 1px solid #e7e7e7; background-color: #fff; padding: 15px; width: 100%; -webkit-transition: background-color 0.3s linear; -moz-transition: background-color 0.3s linear; -ms-transition: background-color 0.3s linear; -o-transition: background-color 0.3s linear; transition: background-color 0.3s linear; }
+.collection-view-mode-grid-content .collection-summary { font-size: 85%; padding-top: 10px; }
+.collection-view-mode-grid-content .collection-summary:empty { padding: 0; }
+.collection-view-mode-grid-content:hover { background-color: #f4f4f4; }
+
+@media screen and (min-width: 768px) { .collection-filter-effect-fade .collection-item.collection-item-disabled { display: block; } }
+.collection-filters { border: 1px solid #e7e7e7; padding: 10px; margin-bottom: 10px; }
+
+.collection-filter-links-wrapper { margin-bottom: 20px; }
+
+.collection-filter-links-single .collection-filter-links button { background: #fff; display: inline-block; padding: 4px 8px; border: 1px solid #d7d7d7; font-size: 85%; color: #656565; margin: 0 5px 5px 0; font-weight: 600; }
+.collection-filter-links-single .collection-filter-links button.active, .collection-filter-links-single .collection-filter-links button:hover { background-color: #d7d7d7; color: #000; }
+
+.collection-filter-links-multiple { background-color: #333; }
+.collection-filter-links-multiple .collection-filter-links { display: none; padding: 10px 20px; }
+.collection-filter-links-multiple .collection-filter-links .collection-links-buttons { margin: 0 -20px; display: flex; flex-direction: column; flex-wrap: wrap; }
+@media screen and (min-width: 600px) { .collection-filter-links-multiple .collection-filter-links .collection-links-buttons { flex-direction: row; } }
+.collection-filter-links-multiple .collection-filter-links button { font-size: 100%; padding: 8px 16px; margin: 0px 20px 20px; width: calc(100% - 40px); background: rgba(0, 0, 0, 0.5); display: inline-block; border: 1px solid #d7d7d7; color: #fff; font-weight: 600; -webkit-transition: background-color 0.3s linear; -moz-transition: background-color 0.3s linear; -ms-transition: background-color 0.3s linear; -o-transition: background-color 0.3s linear; transition: background-color 0.3s linear; }
+.collection-filter-links-multiple .collection-filter-links button.active, .collection-filter-links-multiple .collection-filter-links button:hover { background-color: #fff; color: #000; }
+@media screen and (min-width: 600px) { .collection-filter-links-multiple .collection-filter-links button { margin: 0px 20px 40px; width: calc(50% - 40px); } }
+@media screen and (min-width: 768px) { .collection-filter-links-multiple .collection-filter-links button { width: calc(33% - 40px); } }
+@media screen and (min-width: 960px) { .collection-filter-links-multiple .collection-filter-links button { width: calc(25% - 40px); } }
+.collection-filter-links-multiple h3.collection-filter-label { margin: 0; }
+.collection-filter-links-multiple h3.collection-filter-label a { color: #fff !important; padding: 10px; text-align: center; display: block; font-size: 115%; }
+.collection-filter-links-multiple h3.collection-filter-label a span:before { content: '\f067'; font-family: FontAwesome; margin-right: 10px; }
+.collection-filter-links-multiple h3.collection-filter-label a[aria-expanded='true'] span:before { content: '\f078'; }
+.collection-filter-links-multiple.collection-filter-links-bg { background-position: center center; background-repeat: no-repeat; background-size: cover; position: relative; }
+.collection-filter-links-multiple.collection-filter-links-bg .collection-filter-links-inner { background: rgba(0, 0, 0, 0.5); }
+.collection-filter-links-multiple.collection-filter-links-bg .collection-filter-links-inner:not(.expanded):hover { background: rgba(0, 0, 0, 0.75); }
+.collection-filter-links-multiple.collection-filter-links-bg h3.collection-filter-label a { padding: 40px; font-size: 120%; }
+@media screen and (min-width: 768px) { .collection-filter-links-multiple.collection-filter-links-bg h3.collection-filter-label a { padding: 80px; font-size: 160%; } }
+
+.collection-filter-links-single { padding: 10px; border: 1px solid #e7e7e7; }
+.collection-filter-links-single h3.collection-filter-label { font-size: 100%; display: inline; font-weight: bold; }
diff --git a/modules/custom/express_collections_bundle/cu_test_content_collections/cu_test_content_collections.info b/modules/custom/express_collections_bundle/cu_test_content_collections/cu_test_content_collections.info
new file mode 100644
index 000000000..76f50d639
--- /dev/null
+++ b/modules/custom/express_collections_bundle/cu_test_content_collections/cu_test_content_collections.info
@@ -0,0 +1,8 @@
+name = CU Test Content Collections
+description = Dummy content for dev/theming
+core = 7.x
+package = CU-Tests
+version = 7.x-1.0
+project = cu_test_content
+
+dependencies[] = express_collections_bundle
diff --git a/modules/custom/express_collections_bundle/cu_test_content_collections/cu_test_content_collections.install b/modules/custom/express_collections_bundle/cu_test_content_collections/cu_test_content_collections.install
new file mode 100644
index 000000000..1bddba5f5
--- /dev/null
+++ b/modules/custom/express_collections_bundle/cu_test_content_collections/cu_test_content_collections.install
@@ -0,0 +1,291 @@
+ array(),
+ );
+ _cu_test_content_collections_terms_create_taxonomy_terms_insert('collection_type', $terms);
+
+ $terms = array(
+ 'Major' => array(),
+ 'Minor' => array(),
+ 'Certificate' => array(),
+ );
+ _cu_test_content_collections_terms_create_taxonomy_terms_insert('collection_categories', $terms);
+
+ $nodes = array(
+ '1' => array(
+ 'title' => 'Anthropology',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '2' => array(
+ 'title' => 'Chemistry & Bio Chemistry',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '3' => array(
+ 'title' => 'Economics',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '4' => array(
+ 'title' => 'Film Studies',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '5' => array(
+ 'title' => 'Geography',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '6' => array(
+ 'title' => 'History',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '7' => array(
+ 'title' => 'Linguistics',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '8' => array(
+ 'title' => 'Neuroscience',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '9' => array(
+ 'title' => 'Philosophy',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '10' => array(
+ 'title' => 'Religious Studies',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '11' => array(
+ 'title' => 'Sociology',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '12' => array(
+ 'title' => 'Speech, Language & Hearing Sciences',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '13' => array(
+ 'title' => 'Theatre & Dance',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ '14' => array(
+ 'title' => 'Women & Gender Studies',
+ 'body' => _cu_test_content_collections_create_nodes_dummy_text(),
+ ),
+ );
+ _cu_test_content_collections_create_nodes($nodes);
+ _cu_test_content_collections_block();
+}
+
+/**
+ * Create collections terms.
+ *
+ * @param string $vocab_name
+ * Name of the vocabulary.
+ * @param array $terms
+ * Array of vocabulary terms.
+ * @param integer|null $parent
+ * Vocabulary ID of parent.
+ *
+ * @return bool
+ *
+ * @throws \Exception
+ */
+function _cu_test_content_collections_terms_create_taxonomy_terms_insert($vocab_name, $terms, $parent = NULL) {
+ $temp_terms = variable_get('cu_test_content_collections_terms_' . $vocab_name, array());
+ if (!(isset($parent))) {
+ $parent = 0;
+ }
+ $vocab = taxonomy_vocabulary_machine_name_load($vocab_name);
+ // Get the vocabulary ID.
+ $vid = $vocab->vid;
+ foreach ($terms as $parent_name => $children) {
+ // Create the parent term.
+ $term = new stdClass();
+ $term->name = $parent_name;
+ $term->vid = $vid;
+ $term->parent = $parent;
+ $status = taxonomy_term_save($term);
+ if (!$status) {
+ throw new Exception("Could not save taxonomy term $parent_name with these params -> vid: $vid parent: $parent");
+ }
+ if (isset($children)) {
+ _cu_test_content_collections_terms_create_taxonomy_terms_insert($vocab_name, $children, $term->tid);
+ }
+ $temp_term = taxonomy_get_term_by_name($term->name, $vocab_name);
+ $temp_term = current($temp_term);
+ $temp_terms[$temp_term->tid] = $term->name;
+ drupal_set_message("Term $term->name - $temp_term->tid created.");
+ }
+ variable_set('cu_test_content_collections_terms_' . $vocab_name, $temp_terms);
+ return TRUE;
+}
+
+/**
+ * Create collections nodes.
+ *
+ * @param array $nodes
+ * Nodes for which to create content.
+ */
+function _cu_test_content_collections_create_nodes($nodes) {
+ $collection_type = taxonomy_get_term_by_name('Academic Program', 'collection_type');
+ $collection_tid = key($collection_type);
+
+ $temp_collections = variable_get('cu_test_content_collections', array());
+ $vocabulary = taxonomy_vocabulary_machine_name_load('collection_categories');
+ $collection_categories = entity_load('taxonomy_term', FALSE, array('vid' => $vocabulary->vid));
+
+ $weight = 0;
+ $time = time();
+ // Set date range to 15 days.
+ $date_range = 60 * 60 * 24 * 15;
+ foreach ($nodes as $elem) {
+ $count = $weight + 1;
+ $node_title = $elem['title'];
+ $node = new StdClass();
+ $node->title = $node_title;
+ $node->language = LANGUAGE_NONE;
+ if (isset($elem['body'])) {
+ $node->field_collection_body[$node->language][0]['value'] = $elem['body'];
+ $node->field_collection_body[$node->language][0]['safe_value'] = $elem['body'];
+ }
+
+ $node->field_collection_body[$node->language][0]['format'] = 'wysiwyg';
+
+ $rand_tags = array_rand($collection_categories, 2);
+
+ $node->field_collection_category[$node->language][0]['tid'] = $rand_tags[0];
+ $node->field_collection_category[$node->language][1]['tid'] = $rand_tags[1];
+
+ $node->field_collection_type[$node->language][0]['tid'] = $collection_tid;
+
+ $file_path = system_retrieve_file('https://unsplash.it/1500/1000?random');
+ $file = (object) array(
+ 'uid' => $count,
+ 'uri' => $file_path,
+ 'filemime' => file_get_mimetype($file_path),
+ 'status' => 1,
+ );
+ // You can specify a subdirectory, e.g. "public://foo/".
+ $file = file_copy($file, 'public://');
+ $node->field_collection_thumbnail[LANGUAGE_NONE][0] = (array) $file;
+ $node->field_collection_thumbnail[LANGUAGE_NONE][0]['alt'] = 'Photo Alt Text';
+ $node->type = 'collection_item';
+ $node->uid = 1;
+
+ // Set created date.
+ $created = $time - ($date_range * $weight);
+ $node->created = $created;
+ node_save($node);
+ $temp_collections[$node->nid] = $node->title;
+ drupal_set_message("Collection Item $node->title - $node->nid created.");
+ $weight++;
+ }
+ variable_set('cu_test_content_collections', $temp_collections);
+}
+
+/**
+ * Create dummy text.
+ *
+ * @return string
+ */
+function _cu_test_content_collections_create_nodes_dummy_text() {
+ $response = drupal_http_request('http://loripsum.net/api/10/');
+ if ($response->code == '200') {
+ return $response->data;
+ }
+ else {
+ return 'No dummy text.';
+ }
+}
+
+/**
+ * Implements hook_uninstall().
+ *
+ * Remove test collections.
+ */
+function cu_test_content_collections_uninstall() {
+ $temp_colections = variable_get('cu_test_content_collections', NULL);
+ if ($temp_colections) {
+ foreach ($temp_colections as $nid => $name) {
+ node_delete($nid);
+ drupal_set_message("Node $name - $nid deleted.");
+ }
+ variable_del('cu_test_content_collections');
+ }
+
+ $temp_terms = variable_get('cu_test_content_collections_terms_collection_type', NULL);
+ if ($temp_terms) {
+
+ foreach ($temp_terms as $tid => $name) {
+ taxonomy_term_delete($tid);
+ drupal_set_message("Term $name - $tid deleted.");
+ }
+ variable_del('cu_test_content_collections_terms_collection_type');
+ }
+
+ $temp_terms = variable_get('cu_test_content_collections_terms_collection_categories', NULL);
+ if ($temp_terms) {
+
+ foreach ($temp_terms as $tid => $name) {
+ taxonomy_term_delete($tid);
+ drupal_set_message("Term $name - $tid deleted.");
+ }
+ variable_del('cu_test_content_collections_terms_collection_categories');
+ }
+
+ $temp_beans = variable_get('cu_test_content_collections_block', NULL);
+ if ($temp_beans) {
+ foreach ($temp_beans as $bid => $name) {
+ $bean = bean_load($bid);
+ bean_delete($bean);
+ drupal_set_message("Bean $name - $bid deleted.");
+ }
+ variable_del('cu_test_content_collections_block');
+ }
+}
+
+/**
+ * Install Article list block.
+ */
+function _cu_test_content_collections_block() {
+
+ $temp_beans = variable_get('cu_test_content_collections_block', array());
+
+ $collection_type = taxonomy_get_term_by_name('Academic Program', 'collection_type');
+ $collection_tid = key($collection_type);
+
+ $vocabulary = taxonomy_vocabulary_machine_name_load('collection_categories');
+ $terms = entity_load('taxonomy_term', FALSE, array('vid' => $vocabulary->vid));
+ $collection_terms = array();
+ foreach ($terms as $term) {
+ $collection_terms[] = $term->tid;
+ }
+
+ $values = array(
+ 'delta' => 'collection_grid_block_test',
+ 'label' => 'collection_grid_block_test',
+ 'title' => 'Academic Programs',
+ 'type' => 'collection_grid',
+ 'view_mode' => 'default',
+ );
+ $values['field_collection_grid_type'][LANGUAGE_NONE][0]['tid'] = $collection_tid;
+
+ foreach ($collection_terms as $key => $term) {
+ $values['field_collection_grid_categories'][LANGUAGE_NONE][$key]['tid'] = $term;
+ }
+
+ $bean = bean_create($values);
+ $bean->save();
+
+ $title = $values['title'] . '|' . $values['label'];
+ $temp_beans[$bean->bid] = $title;
+ drupal_set_message("Bean $title - $bean->bid created");
+ variable_set('cu_test_content_collections_block', $temp_beans);
+}
diff --git a/modules/custom/express_collections_bundle/cu_test_content_collections/cu_test_content_collections.module b/modules/custom/express_collections_bundle/cu_test_content_collections/cu_test_content_collections.module
new file mode 100644
index 000000000..1afba3f85
--- /dev/null
+++ b/modules/custom/express_collections_bundle/cu_test_content_collections/cu_test_content_collections.module
@@ -0,0 +1,6 @@
+disabled = FALSE; /* Edit this to true to make a default bean_type disabled initially */
+ $bean_type->api_version = 5;
+ $bean_type->name = 'collection_grid';
+ $bean_type->label = 'Collection Grid';
+ $bean_type->options = '';
+ $bean_type->description = 'A filterable grid of collection items.';
+ $export['collection_grid'] = $bean_type;
+
+ return $export;
+}
diff --git a/modules/custom/express_collections_bundle/express_collections_bundle.features.field_base.inc b/modules/custom/express_collections_bundle/express_collections_bundle.features.field_base.inc
new file mode 100644
index 000000000..197517d0a
--- /dev/null
+++ b/modules/custom/express_collections_bundle/express_collections_bundle.features.field_base.inc
@@ -0,0 +1,340 @@
+ 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_body',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(),
+ 'translatable' => 0,
+ 'type' => 'text_long',
+ );
+
+ // Exported field_base: 'field_collection_category'.
+ $field_bases['field_collection_category'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_category',
+ 'indexes' => array(
+ 'tid' => array(
+ 0 => 'tid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'taxonomy',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 0 => array(
+ 'vocabulary' => 'collection_categories',
+ 'parent' => 0,
+ ),
+ ),
+ ),
+ 'translatable' => 0,
+ 'type' => 'taxonomy_term_reference',
+ );
+
+ // Exported field_base: 'field_collection_category_bg'.
+ $field_bases['field_collection_category_bg'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_category_bg',
+ 'indexes' => array(
+ 'fid' => array(
+ 0 => 'fid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'image',
+ 'settings' => array(
+ 'default_image' => 0,
+ 'uri_scheme' => 'public',
+ ),
+ 'translatable' => 0,
+ 'type' => 'image',
+ );
+
+ // Exported field_base: 'field_collection_display_summary'.
+ $field_bases['field_collection_display_summary'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_display_summary',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 'hide' => 'Hide',
+ 'show' => 'Show',
+ ),
+ 'allowed_values_function' => '',
+ 'allowed_values_php' => FALSE,
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_text',
+ );
+
+ // Exported field_base: 'field_collection_filter_effect'.
+ $field_bases['field_collection_filter_effect'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_filter_effect',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 'fade' => 'Fade Items',
+ 'remove' => 'Remove Items',
+ ),
+ 'allowed_values_function' => '',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_text',
+ );
+
+ // Exported field_base: 'field_collection_filter_type'.
+ $field_bases['field_collection_filter_type'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_filter_type',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(),
+ 'allowed_values_function' => 'express_collections_bundle_filter_options',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_text',
+ );
+
+ // Exported field_base: 'field_collection_grid_categories'.
+ $field_bases['field_collection_grid_categories'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_grid_categories',
+ 'indexes' => array(
+ 'revision_id' => array(
+ 0 => 'revision_id',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(
+ 'hide_blank_items' => 1,
+ 'path' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'field_collection',
+ );
+
+ // Exported field_base: 'field_collection_grid_category'.
+ $field_bases['field_collection_grid_category'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_grid_category',
+ 'indexes' => array(
+ 'tid' => array(
+ 0 => 'tid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'taxonomy',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 0 => array(
+ 'vocabulary' => 'collection_categories',
+ 'parent' => 0,
+ ),
+ ),
+ ),
+ 'translatable' => 0,
+ 'type' => 'taxonomy_term_reference',
+ );
+
+ // Exported field_base: 'field_collection_grid_label'.
+ $field_bases['field_collection_grid_label'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_grid_label',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(
+ 'max_length' => 255,
+ ),
+ 'translatable' => 0,
+ 'type' => 'text',
+ );
+
+ // Exported field_base: 'field_collection_grid_type'.
+ $field_bases['field_collection_grid_type'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_grid_type',
+ 'indexes' => array(
+ 'tid' => array(
+ 0 => 'tid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'taxonomy',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 0 => array(
+ 'vocabulary' => 'collection_type',
+ 'parent' => 0,
+ ),
+ ),
+ ),
+ 'translatable' => 0,
+ 'type' => 'taxonomy_term_reference',
+ );
+
+ // Exported field_base: 'field_collection_image'.
+ $field_bases['field_collection_image'] = array(
+ 'active' => 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_image',
+ 'indexes' => array(
+ 'fid' => array(
+ 0 => 'fid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'image',
+ 'settings' => array(
+ 'default_image' => 0,
+ 'uri_scheme' => 'public',
+ ),
+ 'translatable' => 0,
+ 'type' => 'image',
+ );
+
+ // Exported field_base: 'field_collection_preview'.
+ $field_bases['field_collection_preview'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_preview',
+ 'indexes' => array(
+ 'format' => array(
+ 0 => 'format',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'text',
+ 'settings' => array(),
+ 'translatable' => 0,
+ 'type' => 'text_long',
+ );
+
+ // Exported field_base: 'field_collection_thumbnail'.
+ $field_bases['field_collection_thumbnail'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_thumbnail',
+ 'indexes' => array(
+ 'fid' => array(
+ 0 => 'fid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'image',
+ 'settings' => array(
+ 'default_image' => 0,
+ 'uri_scheme' => 'public',
+ ),
+ 'translatable' => 0,
+ 'type' => 'image',
+ );
+
+ // Exported field_base: 'field_collection_type'.
+ $field_bases['field_collection_type'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_collection_type',
+ 'indexes' => array(
+ 'tid' => array(
+ 0 => 'tid',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'taxonomy',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 0 => array(
+ 'vocabulary' => 'collection_type',
+ 'parent' => 0,
+ ),
+ ),
+ ),
+ 'translatable' => 0,
+ 'type' => 'taxonomy_term_reference',
+ );
+
+ return $field_bases;
+}
diff --git a/modules/custom/express_collections_bundle/express_collections_bundle.features.field_instance.inc b/modules/custom/express_collections_bundle/express_collections_bundle.features.field_instance.inc
new file mode 100644
index 000000000..029822795
--- /dev/null
+++ b/modules/custom/express_collections_bundle/express_collections_bundle.features.field_instance.inc
@@ -0,0 +1,1036 @@
+ 'collection_grid',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 'hide',
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => FALSE,
+ 'deleted' => 0,
+ 'description' => 'You can choose whether or no to include a truncated version of body field text of the collection items.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 2,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_collection_display_summary',
+ 'label' => 'Display Summary',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_select',
+ 'weight' => 9,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'bean-collection_grid-field_collection_filter_effect'.
+ $field_instances['bean-collection_grid-field_collection_filter_effect'] = array(
+ 'bundle' => 'collection_grid',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 'fade',
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => '',
+ 'deleted' => 0,
+ 'description' => 'Select how filtered items are displayed for desktop and tablet users. The remove option is applied for mobile users regardless of the setting.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 5,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_collection_filter_effect',
+ 'label' => 'Filter Effect',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_buttons',
+ 'weight' => 10,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'bean-collection_grid-field_collection_filter_type'.
+ $field_instances['bean-collection_grid-field_collection_filter_type'] = array(
+ 'bundle' => 'collection_grid',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 'links',
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => '',
+ 'deleted' => 0,
+ 'description' => 'Links appear in a row above the grid as clickable buttons. Select list appears as a dropdown above the grid.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_collection_filter_type',
+ 'label' => 'Filter Type',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_select',
+ 'weight' => 8,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'bean-collection_grid-field_collection_grid_categories'.
+ $field_instances['bean-collection_grid-field_collection_grid_categories'] = array(
+ 'bundle' => 'collection_grid',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 6,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_collection_grid_categories',
+ 'label' => 'Categories',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'field_collection',
+ 'settings' => array(),
+ 'type' => 'field_collection_embed',
+ 'weight' => 8,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'bean-collection_grid-field_collection_grid_category'.
+ $field_instances['bean-collection_grid-field_collection_grid_category'] = array(
+ 'bundle' => 'collection_grid',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => 'Selecting more than one category will automatically add a filter for the displayed items',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 4,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_collection_grid_category',
+ 'label' => 'Category',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_buttons',
+ 'weight' => 7,
+ ),
+ );
+
+ // Exported field_instance: 'bean-collection_grid-field_collection_grid_type'.
+ $field_instances['bean-collection_grid-field_collection_grid_type'] = array(
+ 'bundle' => 'collection_grid',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => 'You must add all types of collections you want to display in the collection grid. If you leave a type off of the list, it won\'t display in the grid even if it is tagged with a category that is included.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 3,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_collection_grid_type',
+ 'label' => 'Type',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_buttons',
+ 'weight' => 6,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_collection_grid_categories-field_collection_category_bg'.
+ $field_instances['field_collection_item-field_collection_grid_categories-field_collection_category_bg'] = array(
+ 'bundle' => 'field_collection_grid_categories',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => '',
+ 'image_style' => '',
+ ),
+ 'type' => 'image',
+ 'weight' => 2,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_collection_category_bg',
+ 'label' => 'Background Image',
+ 'required' => 0,
+ 'settings' => array(
+ 'alt_field' => 1,
+ 'default_image' => 0,
+ 'file_directory' => '',
+ 'file_extensions' => 'png gif jpg jpeg',
+ 'max_filesize' => '',
+ 'max_resolution' => '2000x2000',
+ 'min_resolution' => '',
+ 'title_field' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'image',
+ 'settings' => array(
+ 'insert' => 0,
+ 'insert_absolute' => FALSE,
+ 'insert_class' => '',
+ 'insert_default' => 'auto',
+ 'insert_styles' => array(
+ 'auto' => 'auto',
+ 'colorbox__backstretch' => 0,
+ 'colorbox__el_hero' => 0,
+ 'colorbox__email_ad' => 0,
+ 'colorbox__email_ad_large' => 0,
+ 'colorbox__email_feature_thumbnail' => 0,
+ 'colorbox__email_feature_thumbnail_large' => 0,
+ 'colorbox__email_large' => 0,
+ 'colorbox__email_medium' => 0,
+ 'colorbox__email_teaser_thumbnail' => 0,
+ 'colorbox__flexslider_full' => 0,
+ 'colorbox__flexslider_thumbnail' => 0,
+ 'colorbox__focal_point_preview' => 0,
+ 'colorbox__hero' => 0,
+ 'colorbox__large' => 0,
+ 'colorbox__large_rectangle_thumbnail' => 0,
+ 'colorbox__large_square_thumbnail' => 0,
+ 'colorbox__large_wide_thumbnail' => 0,
+ 'colorbox__linkit_thumb' => 0,
+ 'colorbox__medium' => 0,
+ 'colorbox__preview' => 0,
+ 'colorbox__slider' => 0,
+ 'colorbox__slider-large' => 0,
+ 'colorbox__small' => 0,
+ 'colorbox__small_square_thumbnail' => 0,
+ 'colorbox__small_thumbnail' => 0,
+ 'colorbox__square' => 0,
+ 'colorbox__square_thumbnail' => 0,
+ 'colorbox__thumbnail' => 0,
+ 'colorbox__widescreen' => 0,
+ 'icon_link' => 0,
+ 'image' => 0,
+ 'image_backstretch' => 0,
+ 'image_el_hero' => 0,
+ 'image_email_ad' => 0,
+ 'image_email_ad_large' => 0,
+ 'image_email_feature_thumbnail' => 0,
+ 'image_email_feature_thumbnail_large' => 0,
+ 'image_email_large' => 0,
+ 'image_email_medium' => 0,
+ 'image_email_teaser_thumbnail' => 0,
+ 'image_flexslider_full' => 0,
+ 'image_flexslider_thumbnail' => 0,
+ 'image_focal_point_preview' => 0,
+ 'image_hero' => 0,
+ 'image_large' => 0,
+ 'image_large_rectangle_thumbnail' => 0,
+ 'image_large_square_thumbnail' => 0,
+ 'image_large_wide_thumbnail' => 0,
+ 'image_linkit_thumb' => 0,
+ 'image_medium' => 0,
+ 'image_preview' => 0,
+ 'image_slider' => 0,
+ 'image_slider-large' => 0,
+ 'image_small' => 0,
+ 'image_small_square_thumbnail' => 0,
+ 'image_small_thumbnail' => 0,
+ 'image_square' => 0,
+ 'image_square_thumbnail' => 0,
+ 'image_thumbnail' => 0,
+ 'image_widescreen' => 0,
+ 'link' => 0,
+ ),
+ 'insert_width' => '',
+ 'preview_image_style' => 'thumbnail',
+ 'progress_indicator' => 'throbber',
+ ),
+ 'type' => 'image_image',
+ 'weight' => 2,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_collection_grid_categories-field_collection_grid_category'.
+ $field_instances['field_collection_item-field_collection_grid_categories-field_collection_grid_category'] = array(
+ 'bundle' => 'field_collection_grid_categories',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'taxonomy',
+ 'settings' => array(),
+ 'type' => 'taxonomy_term_reference_link',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_collection_grid_category',
+ 'label' => 'Category',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_buttons',
+ 'weight' => 1,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'field_collection_item-field_collection_grid_categories-field_collection_grid_label'.
+ $field_instances['field_collection_item-field_collection_grid_categories-field_collection_grid_label'] = array(
+ 'bundle' => 'field_collection_grid_categories',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'field_collection_item',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_collection_grid_label',
+ 'label' => 'Label',
+ 'required' => 0,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'size' => 60,
+ ),
+ 'type' => 'text_textfield',
+ 'weight' => 0,
+ ),
+ );
+
+ // Exported field_instance: 'node-collection_item-field_collection_body'.
+ $field_instances['node-collection_item-field_collection_body'] = array(
+ 'bundle' => 'collection_item',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 0,
+ ),
+ 'embed' => array(
+ 'label' => 'hidden',
+ 'module' => 'smart_trim',
+ 'settings' => array(
+ 'more_link' => 0,
+ 'more_text' => 'Read more',
+ 'summary_handler' => 'full',
+ 'trim_length' => 100,
+ 'trim_link' => 0,
+ 'trim_options' => array(
+ 'text' => 'text',
+ ),
+ 'trim_preserve_tags' => '',
+ 'trim_suffix' => '...',
+ 'trim_type' => 'words',
+ ),
+ 'type' => 'smart_trim_format',
+ 'weight' => 1,
+ ),
+ 'grid' => array(
+ 'label' => 'hidden',
+ 'module' => 'smart_trim',
+ 'settings' => array(
+ 'more_link' => 0,
+ 'more_text' => 'Read more',
+ 'summary_handler' => 'full',
+ 'trim_length' => 50,
+ 'trim_link' => 0,
+ 'trim_options' => array(
+ 'text' => 'text',
+ ),
+ 'trim_preserve_tags' => '',
+ 'trim_suffix' => '...',
+ 'trim_type' => 'words',
+ ),
+ 'type' => 'smart_trim_format',
+ 'weight' => 1,
+ ),
+ 'sidebar' => array(
+ 'label' => 'hidden',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 1,
+ ),
+ 'teaser' => array(
+ 'label' => 'hidden',
+ 'module' => 'smart_trim',
+ 'settings' => array(
+ 'more_link' => 0,
+ 'more_text' => 'Read more',
+ 'summary_handler' => 'full',
+ 'trim_length' => 50,
+ 'trim_link' => 0,
+ 'trim_options' => array(
+ 'text' => 'text',
+ ),
+ 'trim_preserve_tags' => '',
+ 'trim_suffix' => '...',
+ 'trim_type' => 'words',
+ ),
+ 'type' => 'smart_trim_format',
+ 'weight' => 0,
+ ),
+ 'title' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 0,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_collection_body',
+ 'label' => 'Body',
+ 'required' => 0,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 1,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'rows' => 5,
+ ),
+ 'type' => 'text_textarea',
+ 'weight' => 2,
+ ),
+ );
+
+ // Exported field_instance: 'node-collection_item-field_collection_category'.
+ $field_instances['node-collection_item-field_collection_category'] = array(
+ 'bundle' => 'collection_item',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => 'Categories of collection type, such as major, minor, certificate, etc. A collection item can have multiple categories.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 6,
+ ),
+ 'embed' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 5,
+ ),
+ 'grid' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 6,
+ ),
+ 'sidebar' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 5,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 5,
+ ),
+ 'title' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 6,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_collection_category',
+ 'label' => 'Category',
+ 'required' => 0,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'taxonomy',
+ 'settings' => array(
+ 'autocomplete_path' => 'taxonomy/autocomplete',
+ 'size' => 60,
+ ),
+ 'type' => 'taxonomy_autocomplete',
+ 'weight' => 7,
+ ),
+ );
+
+ // Exported field_instance: 'node-collection_item-field_collection_image'.
+ $field_instances['node-collection_item-field_collection_image'] = array(
+ 'bundle' => 'collection_item',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 3,
+ ),
+ 'embed' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => 'content',
+ 'image_style' => 'large_square_thumbnail',
+ ),
+ 'type' => 'image',
+ 'weight' => 0,
+ ),
+ 'grid' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 4,
+ ),
+ 'sidebar' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 3,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 4,
+ ),
+ 'title' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 3,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_collection_image',
+ 'label' => 'Photo',
+ 'required' => 0,
+ 'settings' => array(
+ 'alt_field' => 1,
+ 'default_image' => 0,
+ 'file_directory' => 'collection-image',
+ 'file_extensions' => 'png gif jpg jpeg',
+ 'max_filesize' => '',
+ 'max_resolution' => '2000x2000',
+ 'min_resolution' => '',
+ 'title_field' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'image',
+ 'settings' => array(
+ 'insert' => 1,
+ 'insert_absolute' => FALSE,
+ 'insert_class' => '',
+ 'insert_default' => 'auto',
+ 'insert_styles' => array(
+ 'auto' => 'auto',
+ 'colorbox__backstretch' => 0,
+ 'colorbox__el_hero' => 0,
+ 'colorbox__email_ad' => 0,
+ 'colorbox__email_ad_large' => 0,
+ 'colorbox__email_feature_thumbnail' => 0,
+ 'colorbox__email_feature_thumbnail_large' => 0,
+ 'colorbox__email_large' => 0,
+ 'colorbox__email_medium' => 0,
+ 'colorbox__email_teaser_thumbnail' => 0,
+ 'colorbox__flexslider_full' => 0,
+ 'colorbox__flexslider_thumbnail' => 0,
+ 'colorbox__focal_point_preview' => 0,
+ 'colorbox__hero' => 0,
+ 'colorbox__large' => 0,
+ 'colorbox__large_square_thumbnail' => 0,
+ 'colorbox__large_wide_thumbnail' => 0,
+ 'colorbox__linkit_thumb' => 0,
+ 'colorbox__medium' => 0,
+ 'colorbox__preview' => 0,
+ 'colorbox__slider' => 0,
+ 'colorbox__slider-large' => 0,
+ 'colorbox__slider-medium' => 0,
+ 'colorbox__small' => 'colorbox__small',
+ 'colorbox__small_square_thumbnail' => 'colorbox__small_square_thumbnail',
+ 'colorbox__small_thumbnail' => 'colorbox__small_thumbnail',
+ 'colorbox__square' => 0,
+ 'colorbox__square_thumbnail' => 'colorbox__square_thumbnail',
+ 'colorbox__thumbnail' => 0,
+ 'icon_link' => 0,
+ 'image' => 0,
+ 'image_backstretch' => 0,
+ 'image_el_hero' => 0,
+ 'image_email_ad' => 0,
+ 'image_email_ad_large' => 0,
+ 'image_email_feature_thumbnail' => 0,
+ 'image_email_feature_thumbnail_large' => 0,
+ 'image_email_large' => 0,
+ 'image_email_medium' => 0,
+ 'image_email_teaser_thumbnail' => 0,
+ 'image_flexslider_full' => 0,
+ 'image_flexslider_thumbnail' => 0,
+ 'image_focal_point_preview' => 0,
+ 'image_hero' => 'image_hero',
+ 'image_large' => 'image_large',
+ 'image_large_square_thumbnail' => 'image_large_square_thumbnail',
+ 'image_large_wide_thumbnail' => 'image_large_wide_thumbnail',
+ 'image_linkit_thumb' => 0,
+ 'image_medium' => 'image_medium',
+ 'image_preview' => 0,
+ 'image_slider' => 'image_slider',
+ 'image_slider-large' => 0,
+ 'image_slider-medium' => 0,
+ 'image_small' => 'image_small',
+ 'image_small_square_thumbnail' => 0,
+ 'image_small_thumbnail' => 0,
+ 'image_square' => 0,
+ 'image_square_thumbnail' => 'image_square_thumbnail',
+ 'image_thumbnail' => 'image_thumbnail',
+ 'link' => 0,
+ ),
+ 'insert_width' => '',
+ 'preview_image_style' => 'thumbnail',
+ 'progress_indicator' => 'throbber',
+ ),
+ 'type' => 'image_image',
+ 'weight' => 4,
+ ),
+ );
+
+ // Exported field_instance: 'node-collection_item-field_collection_preview'.
+ $field_instances['node-collection_item-field_collection_preview'] = array(
+ 'bundle' => 'collection_item',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => 'A short, preview of the collection item content. A summarized version of the body field will be used if this field is empty.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 1,
+ ),
+ 'embed' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 3,
+ ),
+ 'grid' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 0,
+ ),
+ 'sidebar' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 2,
+ ),
+ 'teaser' => array(
+ 'label' => 'hidden',
+ 'module' => 'text',
+ 'settings' => array(),
+ 'type' => 'text_default',
+ 'weight' => 1,
+ ),
+ 'title' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_collection_preview',
+ 'label' => 'Preview',
+ 'required' => 0,
+ 'settings' => array(
+ 'linkit' => array(
+ 'button_text' => 'Search',
+ 'enable' => 0,
+ 'profile' => '',
+ ),
+ 'text_processing' => 1,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'text',
+ 'settings' => array(
+ 'rows' => 5,
+ ),
+ 'type' => 'text_textarea',
+ 'weight' => 3,
+ ),
+ );
+
+ // Exported field_instance: 'node-collection_item-field_collection_thumbnail'.
+ $field_instances['node-collection_item-field_collection_thumbnail'] = array(
+ 'bundle' => 'collection_item',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 4,
+ ),
+ 'embed' => array(
+ 'label' => 'hidden',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 2,
+ ),
+ 'grid' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => 'content',
+ 'image_style' => 'large_wide_thumbnail',
+ ),
+ 'type' => 'image',
+ 'weight' => 2,
+ ),
+ 'sidebar' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => 'content',
+ 'image_style' => 'square',
+ ),
+ 'type' => 'image',
+ 'weight' => 0,
+ ),
+ 'teaser' => array(
+ 'label' => 'hidden',
+ 'module' => 'image',
+ 'settings' => array(
+ 'image_link' => 'content',
+ 'image_style' => 'square',
+ ),
+ 'type' => 'image',
+ 'weight' => 2,
+ ),
+ 'title' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 4,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'div_div_div',
+ 'field_name' => 'field_collection_thumbnail',
+ 'label' => 'Thumbnail',
+ 'required' => 0,
+ 'settings' => array(
+ 'alt_field' => 1,
+ 'default_image' => 0,
+ 'file_directory' => 'collection-thumbnail',
+ 'file_extensions' => 'png gif jpg jpeg',
+ 'max_filesize' => '',
+ 'max_resolution' => '2000x2000',
+ 'min_resolution' => '',
+ 'title_field' => 0,
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'image',
+ 'settings' => array(
+ 'insert' => 0,
+ 'insert_absolute' => FALSE,
+ 'insert_class' => '',
+ 'insert_default' => 'auto',
+ 'insert_styles' => array(
+ 'auto' => 'auto',
+ 'colorbox__backstretch' => 0,
+ 'colorbox__el_hero' => 0,
+ 'colorbox__email_ad' => 0,
+ 'colorbox__email_ad_large' => 0,
+ 'colorbox__email_feature_thumbnail' => 0,
+ 'colorbox__email_feature_thumbnail_large' => 0,
+ 'colorbox__email_large' => 0,
+ 'colorbox__email_medium' => 0,
+ 'colorbox__email_teaser_thumbnail' => 0,
+ 'colorbox__flexslider_full' => 0,
+ 'colorbox__flexslider_thumbnail' => 0,
+ 'colorbox__focal_point_preview' => 0,
+ 'colorbox__hero' => 0,
+ 'colorbox__large' => 0,
+ 'colorbox__large_square_thumbnail' => 0,
+ 'colorbox__large_wide_thumbnail' => 0,
+ 'colorbox__linkit_thumb' => 0,
+ 'colorbox__medium' => 0,
+ 'colorbox__preview' => 0,
+ 'colorbox__slider' => 0,
+ 'colorbox__slider-large' => 0,
+ 'colorbox__slider-medium' => 0,
+ 'colorbox__small' => 0,
+ 'colorbox__small_square_thumbnail' => 0,
+ 'colorbox__small_thumbnail' => 0,
+ 'colorbox__square' => 0,
+ 'colorbox__square_thumbnail' => 0,
+ 'colorbox__thumbnail' => 0,
+ 'icon_link' => 0,
+ 'image' => 0,
+ 'image_backstretch' => 0,
+ 'image_el_hero' => 0,
+ 'image_email_ad' => 0,
+ 'image_email_ad_large' => 0,
+ 'image_email_feature_thumbnail' => 0,
+ 'image_email_feature_thumbnail_large' => 0,
+ 'image_email_large' => 0,
+ 'image_email_medium' => 0,
+ 'image_email_teaser_thumbnail' => 0,
+ 'image_flexslider_full' => 0,
+ 'image_flexslider_thumbnail' => 0,
+ 'image_focal_point_preview' => 0,
+ 'image_hero' => 0,
+ 'image_large' => 0,
+ 'image_large_square_thumbnail' => 0,
+ 'image_large_wide_thumbnail' => 0,
+ 'image_linkit_thumb' => 0,
+ 'image_medium' => 0,
+ 'image_preview' => 0,
+ 'image_slider' => 0,
+ 'image_slider-large' => 0,
+ 'image_slider-medium' => 0,
+ 'image_small' => 0,
+ 'image_small_square_thumbnail' => 0,
+ 'image_small_thumbnail' => 0,
+ 'image_square' => 0,
+ 'image_square_thumbnail' => 0,
+ 'image_thumbnail' => 0,
+ 'link' => 0,
+ ),
+ 'insert_width' => '',
+ 'preview_image_style' => 'thumbnail',
+ 'progress_indicator' => 'throbber',
+ ),
+ 'type' => 'image_image',
+ 'weight' => 5,
+ ),
+ );
+
+ // Exported field_instance: 'node-collection_item-field_collection_type'.
+ $field_instances['node-collection_item-field_collection_type'] = array(
+ 'bundle' => 'collection_item',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => 'Type of collection, such as program, scholarship, resource, etc. An item can only have one type.',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 5,
+ ),
+ 'embed' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 4,
+ ),
+ 'grid' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 5,
+ ),
+ 'sidebar' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 4,
+ ),
+ 'teaser' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 6,
+ ),
+ 'title' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 5,
+ ),
+ ),
+ 'entity_type' => 'node',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_collection_type',
+ 'label' => 'Type',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 0,
+ 'module' => 'taxonomy',
+ 'settings' => array(
+ 'autocomplete_path' => 'taxonomy/autocomplete',
+ 'size' => 60,
+ ),
+ 'type' => 'taxonomy_autocomplete',
+ 'weight' => 6,
+ ),
+ );
+
+ // Translatables
+ // Included for use with string extractors like potx.
+ t('A short, preview of the collection item content. A summarized version of the body field will be used if this field is empty.');
+ t('Background Image');
+ t('Body');
+ t('Categories');
+ t('Categories of collection type, such as major, minor, certificate, etc. A collection item can have multiple categories.');
+ t('Category');
+ t('Display Summary');
+ t('Filter Effect');
+ t('Filter Type');
+ t('Label');
+ t('Links appear in a row above the grid as clickable buttons. Select list appears as a dropdown above the grid.');
+ t('Photo');
+ t('Preview');
+ t('Select how filtered items are displayed for desktop and tablet users. The remove option is applied for mobile users regardless of the setting.');
+ t('Selecting more than one category will automatically add a filter for the displayed items');
+ t('Thumbnail');
+ t('Type');
+ t('Type of collection, such as program, scholarship, resource, etc. An item can only have one type.');
+ t('You can choose whether or no to include a truncated version of body field text of the collection items.');
+ t('You must add all types of collections you want to display in the collection grid. If you leave a type off of the list, it won\'t display in the grid even if it is tagged with a category that is included.');
+
+ return $field_instances;
+}
diff --git a/modules/custom/express_collections_bundle/express_collections_bundle.features.inc b/modules/custom/express_collections_bundle/express_collections_bundle.features.inc
new file mode 100644
index 000000000..1a3e4cb19
--- /dev/null
+++ b/modules/custom/express_collections_bundle/express_collections_bundle.features.inc
@@ -0,0 +1,38 @@
+ "5");
+ }
+ if ($module == "field_group" && $api == "field_group") {
+ return array("version" => "1");
+ }
+ if ($module == "strongarm" && $api == "strongarm") {
+ return array("version" => "1");
+ }
+}
+
+/**
+ * Implements hook_node_info().
+ */
+function express_collections_bundle_node_info() {
+ $items = array(
+ 'collection_item' => array(
+ 'name' => t('Collection Item'),
+ 'base' => 'node_content',
+ 'description' => t('Create collections of items grouped by custom filters.'),
+ 'has_title' => '1',
+ 'title_label' => t('Title'),
+ 'help' => '',
+ ),
+ );
+ drupal_alter('node_info', $items);
+ return $items;
+}
diff --git a/modules/custom/express_collections_bundle/express_collections_bundle.features.taxonomy.inc b/modules/custom/express_collections_bundle/express_collections_bundle.features.taxonomy.inc
new file mode 100644
index 000000000..dc44c4861
--- /dev/null
+++ b/modules/custom/express_collections_bundle/express_collections_bundle.features.taxonomy.inc
@@ -0,0 +1,29 @@
+ array(
+ 'name' => 'Collection Categories',
+ 'machine_name' => 'collection_categories',
+ 'description' => '',
+ 'hierarchy' => 0,
+ 'module' => 'taxonomy',
+ 'weight' => 0,
+ ),
+ 'collection_type' => array(
+ 'name' => 'Collection Type',
+ 'machine_name' => 'collection_type',
+ 'description' => 'A type of collection, such as program, resource, scholarship, etc.',
+ 'hierarchy' => 1,
+ 'module' => 'taxonomy',
+ 'weight' => 0,
+ ),
+ );
+}
diff --git a/modules/custom/express_collections_bundle/express_collections_bundle.field_group.inc b/modules/custom/express_collections_bundle/express_collections_bundle.field_group.inc
new file mode 100644
index 000000000..64db7b4ec
--- /dev/null
+++ b/modules/custom/express_collections_bundle/express_collections_bundle.field_group.inc
@@ -0,0 +1,191 @@
+disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_collection_body|node|collection_item|form';
+ $field_group->group_name = 'group_collection_body';
+ $field_group->entity_type = 'node';
+ $field_group->bundle = 'collection_item';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_content';
+ $field_group->data = array(
+ 'label' => 'Body',
+ 'weight' => '12',
+ 'children' => array(
+ 0 => 'field_collection_body',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'label' => 'Body',
+ 'instance_settings' => array(
+ 'required_fields' => 1,
+ 'classes' => 'group-collection-body field-group-htab',
+ 'description' => '',
+ ),
+ 'formatter' => 'open',
+ ),
+ );
+ $field_groups['group_collection_body|node|collection_item|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_collection_grid_display|bean|collection_grid|form';
+ $field_group->group_name = 'group_collection_grid_display';
+ $field_group->entity_type = 'bean';
+ $field_group->bundle = 'collection_grid';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_collection_grid_options';
+ $field_group->data = array(
+ 'label' => 'Display',
+ 'weight' => '12',
+ 'children' => array(
+ 0 => 'field_collection_display_summary',
+ 1 => 'field_collection_filter_effect',
+ 2 => 'field_collection_filter_type',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-collection-grid-display field-group-htab',
+ 'required_fields' => 1,
+ ),
+ ),
+ );
+ $field_groups['group_collection_grid_display|bean|collection_grid|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_collection_grid_filter|bean|collection_grid|form';
+ $field_group->group_name = 'group_collection_grid_filter';
+ $field_group->entity_type = 'bean';
+ $field_group->bundle = 'collection_grid';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_collection_grid_options';
+ $field_group->data = array(
+ 'label' => 'Filter',
+ 'weight' => '11',
+ 'children' => array(
+ 0 => 'field_collection_grid_category',
+ 1 => 'field_collection_grid_type',
+ 2 => 'field_collection_grid_categories',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'label' => 'Filter',
+ 'instance_settings' => array(
+ 'required_fields' => 1,
+ 'classes' => 'group-collection-grid-filter field-group-htab',
+ 'description' => '',
+ ),
+ 'formatter' => 'open',
+ ),
+ );
+ $field_groups['group_collection_grid_filter|bean|collection_grid|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_collection_grid_options|bean|collection_grid|form';
+ $field_group->group_name = 'group_collection_grid_options';
+ $field_group->entity_type = 'bean';
+ $field_group->bundle = 'collection_grid';
+ $field_group->mode = 'form';
+ $field_group->parent_name = '';
+ $field_group->data = array(
+ 'label' => 'Settings',
+ 'weight' => '2',
+ 'children' => array(
+ 0 => 'group_collection_grid_display',
+ 1 => 'group_collection_grid_filter',
+ ),
+ 'format_type' => 'htabs',
+ 'format_settings' => array(
+ 'formatter' => '',
+ 'instance_settings' => array(
+ 'classes' => 'group-collection-grid-options field-group-htabs',
+ 'id' => '',
+ ),
+ ),
+ );
+ $field_groups['group_collection_grid_options|bean|collection_grid|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_collection_preview|node|collection_item|form';
+ $field_group->group_name = 'group_collection_preview';
+ $field_group->entity_type = 'node';
+ $field_group->bundle = 'collection_item';
+ $field_group->mode = 'form';
+ $field_group->parent_name = 'group_content';
+ $field_group->data = array(
+ 'label' => 'Preview',
+ 'weight' => '13',
+ 'children' => array(
+ 0 => 'field_collection_preview',
+ ),
+ 'format_type' => 'htab',
+ 'format_settings' => array(
+ 'formatter' => 'closed',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-collection-preview field-group-htab',
+ 'required_fields' => 1,
+ ),
+ ),
+ );
+ $field_groups['group_collection_preview|node|collection_item|form'] = $field_group;
+
+ $field_group = new stdClass();
+ $field_group->disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_content|node|collection_item|form';
+ $field_group->group_name = 'group_content';
+ $field_group->entity_type = 'node';
+ $field_group->bundle = 'collection_item';
+ $field_group->mode = 'form';
+ $field_group->parent_name = '';
+ $field_group->data = array(
+ 'label' => 'Content',
+ 'weight' => '1',
+ 'children' => array(
+ 0 => 'group_collection_body',
+ 1 => 'group_collection_preview',
+ ),
+ 'format_type' => 'htabs',
+ 'format_settings' => array(
+ 'formatter' => '',
+ 'instance_settings' => array(
+ 'classes' => 'group-content field-group-htabs',
+ 'id' => '',
+ ),
+ ),
+ );
+ $field_groups['group_content|node|collection_item|form'] = $field_group;
+
+ // Translatables
+ // Included for use with string extractors like potx.
+ t('Body');
+ t('Content');
+ t('Display');
+ t('Filter');
+ t('Preview');
+ t('Settings');
+
+ return $field_groups;
+}
diff --git a/modules/custom/express_collections_bundle/express_collections_bundle.info b/modules/custom/express_collections_bundle/express_collections_bundle.info
new file mode 100644
index 000000000..37b824906
--- /dev/null
+++ b/modules/custom/express_collections_bundle/express_collections_bundle.info
@@ -0,0 +1,96 @@
+name = Collections
+description = The ability to create filtered content based on a ‘collection’ of information (i.e. resources).
+core = 7.x
+package = Collections
+version = 7.x-1.5
+project = express_collections_bundle
+bundle_group = addon_bundles
+dependencies[] = bean_admin_ui
+dependencies[] = ctools
+dependencies[] = express_field_bases
+dependencies[] = features
+dependencies[] = field_collection
+dependencies[] = field_group
+dependencies[] = image
+dependencies[] = list
+dependencies[] = options
+dependencies[] = smart_trim
+dependencies[] = strongarm
+dependencies[] = taxonomy
+dependencies[] = text
+scripts[] = js/express-collections-bundle.js
+stylesheets[all][] = css/express-collections-bundle.css
+features[bean_type][] = collection_grid
+features[ctools][] = bean_admin_ui:bean:5
+features[ctools][] = field_group:field_group:1
+features[ctools][] = strongarm:strongarm:1
+features[features_api][] = api:2
+features[field_base][] = field_collection_body
+features[field_base][] = field_collection_category
+features[field_base][] = field_collection_category_bg
+features[field_base][] = field_collection_display_summary
+features[field_base][] = field_collection_filter_effect
+features[field_base][] = field_collection_filter_type
+features[field_base][] = field_collection_grid_categories
+features[field_base][] = field_collection_grid_category
+features[field_base][] = field_collection_grid_label
+features[field_base][] = field_collection_grid_type
+features[field_base][] = field_collection_image
+features[field_base][] = field_collection_preview
+features[field_base][] = field_collection_thumbnail
+features[field_base][] = field_collection_type
+features[field_group][] = group_collection_body|node|collection_item|form
+features[field_group][] = group_collection_grid_display|bean|collection_grid|form
+features[field_group][] = group_collection_grid_filter|bean|collection_grid|form
+features[field_group][] = group_collection_grid_options|bean|collection_grid|form
+features[field_group][] = group_collection_preview|node|collection_item|form
+features[field_group][] = group_content|node|collection_item|form
+features[field_instance][] = bean-collection_grid-field_collection_display_summary
+features[field_instance][] = bean-collection_grid-field_collection_filter_effect
+features[field_instance][] = bean-collection_grid-field_collection_filter_type
+features[field_instance][] = bean-collection_grid-field_collection_grid_categories
+features[field_instance][] = bean-collection_grid-field_collection_grid_category
+features[field_instance][] = bean-collection_grid-field_collection_grid_type
+features[field_instance][] = field_collection_item-field_collection_grid_categories-field_collection_category_bg
+features[field_instance][] = field_collection_item-field_collection_grid_categories-field_collection_grid_category
+features[field_instance][] = field_collection_item-field_collection_grid_categories-field_collection_grid_label
+features[field_instance][] = node-collection_item-field_collection_body
+features[field_instance][] = node-collection_item-field_collection_category
+features[field_instance][] = node-collection_item-field_collection_image
+features[field_instance][] = node-collection_item-field_collection_preview
+features[field_instance][] = node-collection_item-field_collection_thumbnail
+features[field_instance][] = node-collection_item-field_collection_type
+features[node][] = collection_item
+features[taxonomy][] = collection_categories
+features[taxonomy][] = collection_type
+features[variable][] = additional_settings__active_tab_collection_item
+features[variable][] = attachment_links_create_alias_collection_item
+features[variable][] = attachment_links_selection_collection_item
+features[variable][] = cache_flush_cache_entity_field_collection_item
+features[variable][] = diff_enable_revisions_page_node_collection_item
+features[variable][] = diff_show_preview_changes_node_collection_item
+features[variable][] = diff_view_mode_preview_node_collection_item
+features[variable][] = field_bundle_settings_node__collection_item
+features[variable][] = field_bundle_settings_taxonomy_term__collection_categories
+features[variable][] = menu_options_collection_item
+features[variable][] = menu_parent_collection_item
+features[variable][] = metatag_enable_field_collection_item
+features[variable][] = metatag_enable_node__collection_item
+features[variable][] = metatag_enable_taxonomy_term__collection_categories
+features[variable][] = metatag_enable_taxonomy_term__collection_type
+features[variable][] = node_options_collection_item
+features[variable][] = node_preview_collection_item
+features[variable][] = node_submitted_collection_item
+features[variable][] = pathauto_node_collection_item_pattern
+features[variable][] = pathauto_taxonomy_term_collection_categories_pattern
+features[variable][] = pathauto_taxonomy_term_collection_type_pattern
+features[variable][] = save_continue_collection_item
+
+bundle_roles[] = developer
+bundle_roles[] = administrator
+bundle_roles[] = site_owner
+bundle_roles[] = configuration_manager
+
+features[variable][] = webform_node_collection_item
+project status url = https://github.com/CuBoulder/express_collections_bundle
+project_demo_url = http://www.colorado.edu/webcentral/node/1530
diff --git a/modules/custom/express_collections_bundle/express_collections_bundle.install b/modules/custom/express_collections_bundle/express_collections_bundle.install
new file mode 100644
index 000000000..0cb659568
--- /dev/null
+++ b/modules/custom/express_collections_bundle/express_collections_bundle.install
@@ -0,0 +1,58 @@
+ 0,
+ 'field_feature_title_image' => 'field_feature_title_image',
+ 'field_footer' => 'field_footer',
+ 'field_header' => 'field_header',
+ 'field_intro' => 'field_intro',
+ 'field_sidebar_first' => 'field_sidebar_first',
+ 'field_sidebar_second' => 'field_sidebar_second',
+ 'field_slider' => 'field_slider',
+ 'field_wide_2' => 'field_wide_2',
+ 'field_inner_content_left' => 'field_inner_content_left',
+ 'field_inner_content_right' => 'field_inner_content_right',
+ 'field_content_bottom' => 0,
+ );
+ foreach ($settings as $key => $setting) {
+ variable_set($key, $setting);
+ }
+ $types = array(
+ 'collection_item',
+ );
+ foreach ($types as $key => $type) {
+ $var = 'express_layout_type_' . $type;
+ variable_set($var, $type);
+ }
+}
+
+/**
+ * Migrate Collection Grid category field into field collection category field.
+ */
+function express_collections_bundle_update_7001() {
+ $query = db_select('bean', 'bean');
+ $query->fields('bean', array('bid', 'type'));
+ $query->condition('bean.type', 'collection_grid', '=');
+ $results = $query->execute()->fetchCol();
+
+ foreach ($results as $bid) {
+ $bean = bean_load($bid);
+ $category = $bean->field_collection_grid_category;
+ $fc_item = entity_create('field_collection_item', array('field_name' => 'field_collection_grid_categories'));
+ $fc_item->setHostEntity('bean', $bean);
+ $fc_item->field_collection_grid_category = $category;
+ $fc_item->save();
+ $bean->save();
+ }
+}
+
+function express_collections_bundle_update_7002() {
+ field_delete_instance('field_collection_grid_category');
+ return t('Removed field_collection_grid_category from database');
+}
\ No newline at end of file
diff --git a/modules/custom/express_collections_bundle/express_collections_bundle.module b/modules/custom/express_collections_bundle/express_collections_bundle.module
new file mode 100644
index 000000000..2d31817f0
--- /dev/null
+++ b/modules/custom/express_collections_bundle/express_collections_bundle.module
@@ -0,0 +1,406 @@
+field_collection_display_summary[LANGUAGE_NONE][0]['value'] == 'show') ? 1 : 0;
+ $filter_effect = !empty($vars['bean']->field_collection_filter_effect) ? $vars['bean']->field_collection_filter_effect[LANGUAGE_NONE][0]['value'] : 'fade';
+ // Build anchor link prefix
+ $anchor = 'collection-' . $vars['bean']->bid . '-';
+ $vars['content'] = array();
+ $types = array();
+ $terms = array();
+
+ // Get the collection types
+ foreach ($vars['bean']->field_collection_grid_type[LANGUAGE_NONE] as $type) {
+ $terms[] = (array) taxonomy_term_load($type['tid']);
+ $types[] = $type['tid'];
+ $children = taxonomy_get_children($type['tid']);
+ foreach ($children as $child) {
+ $types[] = $child->tid;
+ }
+ }
+
+ // Get the collection categories
+
+ $categories = array();
+ $terms = array();
+ $sort = 0;
+ $vars['content']['filters'] = array();
+ $items = $vars['bean']->field_collection_grid_categories[LANGUAGE_NONE];
+
+ foreach ($items as $key => $item) {
+ $vars['content']['filters'][$key] = array();
+ $id = $item['value'];
+ $fc = field_collection_item_load($id);
+ $output = '';
+ $label = !empty($fc->field_collection_grid_label) ? $fc->field_collection_grid_label[LANGUAGE_NONE][0]['value'] : NULL;
+ $tids = array();
+ foreach ($fc->field_collection_grid_category[LANGUAGE_NONE] as $term) {
+ $tids[] = $term['tid'];
+ }
+ $terms = taxonomy_term_load_multiple($tids);
+
+ // Filter background image
+ $image = !empty($fc->field_collection_category_bg) ? image_style_url('large', $fc->field_collection_category_bg[LANGUAGE_NONE][0]['uri']) : NULL;
+ if (count($items) > 1) {
+ $vars['content']['filters'][$key]['#markup'] = theme('collection_filter_links', array('label' => $label, 'collection_filter_terms' => $terms, 'collection_id' => $vars['bean']->bid, 'image' => $image));
+ }
+ elseif (count($items) == 1 && $image) {
+ $vars['content']['filters'][$key]['#markup'] = theme('collection_filter_links', array('label' => $label, 'collection_filter_terms' => $terms, 'collection_id' => $vars['bean']->bid, 'image' => $image));
+ }
+ else {
+ $vars['content']['filters'][$key]['#markup'] = theme('collection_filter_links_single', array('label' => $label, 'collection_filter_terms' => $terms, 'collection_id' => $vars['bean']->bid, 'image' => $image));
+ }
+ }
+
+ // Add all items to output
+ $vars['content']['items']['all'] = _express_collections_bundle_category_query($types, array_keys($tids), $summary);
+ $vars['content']['items']['all']['#prefix'] = 'All
';
+ $vars['content']['items']['all']['#suffix'] = '';
+
+ // Add categories of items to output.
+ // Only do separate groups if there are more than 2 categories selected
+
+ // Add wrapper for collections to give specificity to selectors
+ $vars['collection']['filter_effect'] = $filter_effect;
+ $vars['collection']['collection_id'] = $vars['bean']->bid;
+ $vars['content']['#prefix'] = '';
+ $vars['content']['#suffix'] = '';
+ }
+}
+
+function _express_collections_bundle_clean_string($string) {
+ $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
+ //Lowercase
+ $string = strtolower($string);
+ return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
+}
+
+/**
+ * Query function for getting collection item nodes.
+ */
+function _express_collections_bundle_category_query($types, $category = NULL, $summary = FALSE) {
+ $query = db_select('node', 'n');
+ $query->condition('n.type', 'collection_item', '=');
+ $query->condition('n.status', 1, '=');
+ $query->fields('n', array('nid', 'title', 'sticky', 'created'));
+
+ // Types
+ $query->join('field_data_field_collection_type', 'type', 'n.nid = type.entity_id');
+ $query->fields('type', array('field_collection_type_tid'));
+ $query->condition('type.field_collection_type_tid', $types, 'in');
+
+ // Categories
+ $query->join('field_data_field_collection_category', 'category', 'n.nid = category.entity_id');
+ $query->fields('category', array('field_collection_category_tid'));
+
+ $query->orderBy('sticky', 'DESC');
+ $query->orderBy('title', 'ASC');
+ $query->distinct();
+ $query->groupBy('n.nid');
+ $nids = $query->execute()->fetchCol();
+ $nodes = node_load_multiple($nids);
+
+ foreach ($nodes as $key => $node) {
+ $nodes[$key]->heading_tag['#tag'] = 'h3';
+ }
+ // Set to grid view mode
+ $items = node_view_multiple($nodes, 'grid');
+
+ // Remove summary if it set to be hidden
+ if (!$summary) {
+ foreach ($items['nodes'] as $nid => $item) {
+ if (!empty($items['nodes'][$nid]['field_collection_body'])) {
+ unset($items['nodes'][$nid]['field_collection_body']);
+ }
+ if (!empty($items['nodes'][$nid]['field_collection_preview'])) {
+ unset($items['nodes'][$nid]['field_collection_preview']);
+ }
+ }
+ }
+ return $items;
+}
+
+/**
+ * Allowed values function for collection grid filter setting.
+ */
+function express_collections_bundle_filter_options() {
+ $options = array(
+ 'links' => 'Links',
+ );
+ return $options;
+}
+
+/*
+ * Implements hook_secure_permissions
+ *
+ * Adding permissions for collection grid bean
+ */
+function express_collections_bundle_secure_permissions($role) {
+ $permissions = array(
+ 'anonymous user' => array(
+ 'view any collection_grid bean',
+ ),
+ 'authenticated user' => array(
+ 'view any collection_grid bean',
+ ),
+ 'administrator' => array(
+ 'create any collection_grid bean',
+ 'delete any collection_grid bean',
+ 'edit any collection_grid bean',
+ 'view any collection_grid bean',
+ 'administer collection_categories vocabulary terms',
+ 'administer collection_type vocabulary terms',
+ 'create collection_item content',
+ 'delete any collection_item content',
+ 'delete own collection_item content',
+ 'edit any collection_item content',
+ 'edit own collection_item content',
+ 'administer collection_categories vocabulary terms',
+ 'administer collection_type vocabulary terms',
+ ),
+ 'content_editor' => array(
+ 'create any collection_grid bean',
+ 'delete any collection_grid bean',
+ 'edit any collection_grid bean',
+ 'view any collection_grid bean',
+ 'administer collection_categories vocabulary terms',
+ 'administer collection_type vocabulary terms',
+ 'create collection_item content',
+ 'delete any collection_item content',
+ 'delete own collection_item content',
+ 'edit any collection_item content',
+ 'edit own collection_item content',
+ 'administer collection_categories vocabulary terms',
+ 'administer collection_type vocabulary terms',
+ ),
+ 'developer' => array(
+ 'create any collection_grid bean',
+ 'delete any collection_grid bean',
+ 'edit any collection_grid bean',
+ 'view any collection_grid bean',
+ 'administer collection_categories vocabulary terms',
+ 'administer collection_type vocabulary terms',
+ 'create collection_item content',
+ 'delete any collection_item content',
+ 'delete own collection_item content',
+ 'edit any collection_item content',
+ 'edit own collection_item content',
+ 'administer collection_categories vocabulary terms',
+ 'administer collection_type vocabulary terms',
+ ),
+ 'edit_my_content' => array(
+ 'view any collection_grid bean',
+ 'edit own collection_item content',
+ ),
+ 'edit_only' => array(
+ 'edit any collection_grid bean',
+ 'view any collection_grid bean',
+ 'edit any collection_item content',
+ ),
+ 'site_editor' => array(
+ 'create any collection_grid bean',
+ 'delete any collection_grid bean',
+ 'edit any collection_grid bean',
+ 'view any collection_grid bean',
+ 'administer collection_categories vocabulary terms',
+ 'administer collection_type vocabulary terms',
+ 'create collection_item content',
+ 'delete any collection_item content',
+ 'delete own collection_item content',
+ 'edit any collection_item content',
+ 'edit own collection_item content',
+ 'administer collection_categories vocabulary terms',
+ 'administer collection_type vocabulary terms',
+ ),
+ 'site_owner' => array(
+ 'create any collection_grid bean',
+ 'delete any collection_grid bean',
+ 'edit any collection_grid bean',
+ 'view any collection_grid bean',
+ 'administer collection_categories vocabulary terms',
+ 'administer collection_type vocabulary terms',
+ 'create collection_item content',
+ 'delete any collection_item content',
+ 'delete own collection_item content',
+ 'edit any collection_item content',
+ 'edit own collection_item content',
+ 'administer collection_categories vocabulary terms',
+ 'administer collection_type vocabulary terms',
+ ),
+ );
+
+ if (isset($permissions[$role])) {
+ return $permissions[$role];
+ }
+}
+
+/**
+ * Implements hook_express_help()
+ *
+ * Add contextual help for the collections functionality.
+ *
+ * @param $variables
+ * Array with information about help hooks
+ * @return $variables
+ */
+function express_collections_bundle_express_help($variables) {
+
+ $variables['node/add/collection-item'][] = array(
+ 'title' => 'Collection Item tutorial',
+ 'short_title' => 'Collections tutorial',
+ 'url' => '/node/1380',
+ 'module' => 'express_collections_bundle',
+ );
+
+ $variables['block/add/collection-grid'][] = array(
+ 'title' => 'Collection Grid tutorial',
+ 'short_title' => 'Collection Grid tutorial',
+ 'url' => '/node/1382',
+ 'module' => 'express_collections_bundle',
+ );
+
+ return $variables;
+}
+/** Implements hook_form_FORM_ID_alter().
+ *
+ * Add validation function to term edit form.
+*/
+function express_collections_bundle_form_taxonomy_form_term_alter(&$form, &$form_state, $form_id) {
+ $form['relations']['#access'] = FALSE;
+}
+
+/**
+* Implements hook_form_FORM_ID_alter().
+*
+* Add validation function to terms overview form.
+*/
+function express_collections_bundle_form_taxonomy_overview_terms_alter(&$form, &$form_state, $form_id) {
+ if ($form['#vocabulary']->machine_name == 'collection_categories') {
+ $form['#validate'][] = 'express_collections_bundle_taxonomy_overview_form_validate';
+ }
+}
+
+/**
+ * Validation function for cu_article_form_taxonomy_overview_terms_alter().
+ *
+ * Prevents user from exceeding maximum depth on taxonomy terms.
+ */
+function express_collections_bundle_taxonomy_overview_form_validate($form, &$form_state) {
+ taxonomy_terms_static_reset();
+ $limit = 0;
+ foreach ($form_state['input'] as $key => $term) {
+ if (!empty($term['depth']) && $term['depth'] > $limit && (substr($key, 0, 3) == 'tid')) {
+ $error_link = l('This change', NULL, array(
+ 'external' => TRUE,
+ 'fragment' => 'edit-tid' . $term['tid'] . '0-edit'
+ ));
+ form_set_error($key . '[depth]', t('!change has caused the taxonomy to exceed its maximum depth of 1 levels.', array('!change' => $error_link)));
+
+ }
+ }
+}
+
+function express_collections_bundle_preprocess_node(&$vars) {
+ if ($vars['type'] == 'collection_item') {
+ $categories = array();
+ foreach ($vars['field_collection_category'][LANGUAGE_NONE] as $category) {
+ $term = taxonomy_term_load($category['tid']);
+ $categories[] = 'collection-category-' . _express_collections_bundle_clean_string($term->name);
+ }
+ $vars['category_classes'] = join(' ', $categories);
+ }
+}
+
+/**
+ * Implements hook_theme().
+ */
+function express_collections_bundle_theme(&$existing, $type, $theme, $path) {
+ $registry = array();
+ $template_dir = drupal_get_path('module', 'express_collections_bundle') . '/templates';
+ $registry['collection_filter_wrapper'] = array(
+ 'template' => 'collection-filter-wrapper',
+ 'path' => $template_dir,
+ 'render element' => 'elements',
+ );
+ $registry['collection_filter_links'] = array(
+ 'template' => 'collection-filter-links',
+ 'path' => $template_dir,
+ 'render element' => 'elements',
+ );
+ $registry['collection_filter_links_single'] = array(
+ 'template' => 'collection-filter-links-single',
+ 'path' => $template_dir,
+ 'render element' => 'elements',
+ );
+ $registry['collection_item_wrapper'] = array(
+ 'template' => 'collection-item-wrapper',
+ 'path' => $template_dir,
+ 'render element' => 'elements',
+ );
+
+ return $registry;
+}
+
+function express_collections_bundle_form_bean_form_alter(&$form, &$form_state, $form_id) {
+ if ($form['bean']['#value']->type == 'collection_grid') {
+ $form['#validate'][] = 'express_collections_bundle_form_validate';
+ $form['field_collection_grid_category']['#access'] = FALSE;
+ $form['field_collection_filter_type']['#access'] = FALSE;
+ }
+}
+
+function express_collections_bundle_form_validate($form, &$form_state) {
+ $category_sets = $form_state['values']['field_collection_grid_categories'][LANGUAGE_NONE];
+ unset($category_sets['add_more']);
+ if (count($category_sets) > 1) {
+ foreach ($category_sets as $key => $set) {
+ if (empty($set['field_collection_grid_label'][LANGUAGE_NONE][0]['value'])) {
+ form_set_error('field_collection_grid_categories', t('Collection Grids with more than one filter set require each set has a label.'));
+ }
+ }
+ }
+}
diff --git a/modules/custom/express_collections_bundle/express_collections_bundle.strongarm.inc b/modules/custom/express_collections_bundle/express_collections_bundle.strongarm.inc
new file mode 100644
index 000000000..646ac24b6
--- /dev/null
+++ b/modules/custom/express_collections_bundle/express_collections_bundle.strongarm.inc
@@ -0,0 +1,277 @@
+disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'additional_settings__active_tab_collection_item';
+ $strongarm->value = 'edit-menu';
+ $export['additional_settings__active_tab_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'attachment_links_create_alias_collection_item';
+ $strongarm->value = 0;
+ $export['attachment_links_create_alias_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'attachment_links_selection_collection_item';
+ $strongarm->value = '0';
+ $export['attachment_links_selection_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'cache_flush_cache_entity_field_collection_item';
+ $strongarm->value = 1487201780;
+ $export['cache_flush_cache_entity_field_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'diff_enable_revisions_page_node_collection_item';
+ $strongarm->value = 1;
+ $export['diff_enable_revisions_page_node_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'diff_show_preview_changes_node_collection_item';
+ $strongarm->value = 1;
+ $export['diff_show_preview_changes_node_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'diff_view_mode_preview_node_collection_item';
+ $strongarm->value = 'full';
+ $export['diff_view_mode_preview_node_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'field_bundle_settings_node__collection_item';
+ $strongarm->value = array(
+ 'view_modes' => array(
+ 'teaser' => array(
+ 'custom_settings' => TRUE,
+ ),
+ 'full' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'rss' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'diff_standard' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'token' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'email_feature' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'email_teaser' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'embed' => array(
+ 'custom_settings' => TRUE,
+ ),
+ 'feature' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'promo' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'sidebar' => array(
+ 'custom_settings' => TRUE,
+ ),
+ 'table' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'title' => array(
+ 'custom_settings' => TRUE,
+ ),
+ 'grid' => array(
+ 'custom_settings' => TRUE,
+ ),
+ 'sidebar_category' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'feature_category' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'revision' => array(
+ 'custom_settings' => FALSE,
+ ),
+ 'teaser_large' => array(
+ 'custom_settings' => FALSE,
+ ),
+ ),
+ 'extra_fields' => array(
+ 'form' => array(
+ 'metatags' => array(
+ 'weight' => '10',
+ ),
+ 'title' => array(
+ 'weight' => '0',
+ ),
+ 'path' => array(
+ 'weight' => '9',
+ ),
+ 'redirect' => array(
+ 'weight' => '8',
+ ),
+ ),
+ 'display' => array(),
+ ),
+ );
+ $export['field_bundle_settings_node__collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'field_bundle_settings_taxonomy_term__collection_categories';
+ $strongarm->value = array(
+ 'view_modes' => array(),
+ 'extra_fields' => array(
+ 'form' => array(
+ 'metatags' => array(
+ 'weight' => '40',
+ ),
+ 'path' => array(
+ 'weight' => '30',
+ ),
+ 'redirect' => array(
+ 'weight' => '30',
+ ),
+ 'name' => array(
+ 'weight' => '-5',
+ ),
+ 'description' => array(
+ 'weight' => '0',
+ ),
+ ),
+ 'display' => array(),
+ ),
+ );
+ $export['field_bundle_settings_taxonomy_term__collection_categories'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'menu_options_collection_item';
+ $strongarm->value = array(
+ 0 => 'menu-footer-menu',
+ 1 => 'main-menu',
+ 2 => 'menu-secondary-menu',
+ );
+ $export['menu_options_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'menu_parent_collection_item';
+ $strongarm->value = 'main-menu:0';
+ $export['menu_parent_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'metatag_enable_field_collection_item';
+ $strongarm->value = FALSE;
+ $export['metatag_enable_field_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'metatag_enable_node__collection_item';
+ $strongarm->value = TRUE;
+ $export['metatag_enable_node__collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'metatag_enable_taxonomy_term__collection_categories';
+ $strongarm->value = TRUE;
+ $export['metatag_enable_taxonomy_term__collection_categories'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'metatag_enable_taxonomy_term__collection_type';
+ $strongarm->value = TRUE;
+ $export['metatag_enable_taxonomy_term__collection_type'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'node_options_collection_item';
+ $strongarm->value = array(
+ 0 => 'status',
+ );
+ $export['node_options_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'node_preview_collection_item';
+ $strongarm->value = '1';
+ $export['node_preview_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'node_submitted_collection_item';
+ $strongarm->value = 0;
+ $export['node_submitted_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'pathauto_node_collection_item_pattern';
+ $strongarm->value = '[node:menu-link:parents:join-path]/[node:title]';
+ $export['pathauto_node_collection_item_pattern'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'pathauto_taxonomy_term_collection_categories_pattern';
+ $strongarm->value = '';
+ $export['pathauto_taxonomy_term_collection_categories_pattern'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'pathauto_taxonomy_term_collection_type_pattern';
+ $strongarm->value = '';
+ $export['pathauto_taxonomy_term_collection_type_pattern'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'save_continue_collection_item';
+ $strongarm->value = 'Save and add fields';
+ $export['save_continue_collection_item'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'webform_node_collection_item';
+ $strongarm->value = 0;
+ $export['webform_node_collection_item'] = $strongarm;
+
+ return $export;
+}
diff --git a/modules/custom/express_collections_bundle/js/express-collections-bundle.js b/modules/custom/express_collections_bundle/js/express-collections-bundle.js
new file mode 100644
index 000000000..9778e66f9
--- /dev/null
+++ b/modules/custom/express_collections_bundle/js/express-collections-bundle.js
@@ -0,0 +1,93 @@
+(function ($) {
+ $(document).ready(function(){
+ $(".bean-collection-grid .expand-trigger").each(function(i){
+ var trigger = $(this).attr('href');
+ var trigger2 = trigger + '-' + i;
+ var target = trigger2.substring(1);
+ $(this).attr('href', trigger2);
+ $(this).next('.expand-content').attr('id', target);
+ });
+ $(".collection-items-categories").hide();
+
+ $(".collection-filter-links button").click(function(){
+ // Get the collection to operate on
+ var collectionTarget = $(this).attr("data-collection");
+ // Remove disabled class, aria from all items in collection
+ $("#" + collectionTarget + " .collection-item").removeClass('collection-item-disabled').removeAttr('aria-hidden').removeAttr('role').removeClass('collection-item-active');
+ // Get the collection category
+ var target = $(this).attr("data-collection-category");
+ history.pushState(null,null,'#' + target);
+ // Apply disabled class, aria to all items not in category
+ $('#' + collectionTarget + ' .collection-item').not('.collection-category-' + target).addClass('collection-item-disabled').attr('aria-hidden', 'true').attr('role', 'presentation');
+ $('#' + collectionTarget + ' .collection-item.collection-category-' + target).addClass('collection-item-active');
+ // Remove active class from category links
+ $('#' + collectionTarget + ' .collection-filter-links button').removeClass('active');
+ // Apply active class to the clicked link
+ $(this).addClass('active');
+ updateCollectionResults(collectionTarget);
+ return false;
+ });
+
+ // Collection ALL link
+ $("button.collection-filter-clear").click(function(){
+ // Get the collection to operate on
+ var collectionTarget = $(this).attr("data-collection");
+ // Remove disabled class, aria from all items in collection
+ $("#" + collectionTarget + " .collection-item").removeClass('collection-item-disabled').removeAttr('aria-hidden').removeAttr('role').addClass('collection-item-active');
+ // Remove active class from category links
+ $("ul.collection-items-navigation a").removeClass('active');
+ // Apply active class to the clicked link
+ $(this).addClass('active');
+ updateCollectionResults(collectionTarget);
+ return false;
+ });
+
+ $('.collection-filter-links-multiple h3.collection-filter-label a').click(function(event){
+ event.preventDefault();
+ var link = $(this);
+ if ($(this).attr('aria-expanded') == 'true') {
+ $('.collection-filter-links').slideUp().parent().removeClass('expanded');
+ $('h3.collection-filter-label a').attr('aria-expanded', 'false');
+ }
+ else {
+ $('.collection-filter-links').slideUp().parent().removeClass('expanded');
+ $('h3.collection-filter-label a').attr('aria-expanded', 'false');
+ $(this).parent().next().slideDown().parent().addClass('expanded');
+ $(this).attr('aria-expanded', 'true');
+
+ setTimeout(function(){
+ $('html, body').animate({
+ scrollTop: $(link).offset().top - 100
+ }, 500);
+ }, 600);
+ }
+ });
+ $('.collection-grid').each(function(){
+ $('.collection-item', this).addClass('collection-item-active');
+ var items = $('.collection-item-active', this).length;
+ $('.collection-grid .results').text(items + ' items found.');
+ $('.collection-filter-clear').addClass('active');
+
+ // Check for hash
+ if(window.location.hash) {
+ var $hash = window.location.hash;
+ if ( $("button[data-collection-category-hash='" + $hash + "']", this).length ) {
+ $("button[data-collection-category-hash='" + $hash + "']").click();
+ }
+ }
+
+ });
+
+
+
+ // UPdate the items found in a collection grid.
+ function updateCollectionResults(collectionId) {
+ $('#' + collectionId + ' .collection-item').removeAttr('tabindex');
+ var items = $('#' + collectionId + ' .collection-item-active').length;
+ $('#' + collectionId + ' .results').text(items + ' items found.').attr('tabindex','-1').focus();
+ $('.element-item').removeAttr('tabindex');
+ $('#' + collectionId + ' .collection-item-active').attr('tabindex',0);
+
+ }
+ });
+})(jQuery);
diff --git a/modules/custom/express_collections_bundle/scss/express-collections-bundle.scss b/modules/custom/express_collections_bundle/scss/express-collections-bundle.scss
new file mode 100644
index 000000000..c8db265eb
--- /dev/null
+++ b/modules/custom/express_collections_bundle/scss/express-collections-bundle.scss
@@ -0,0 +1,274 @@
+@mixin transition($transition-property, $transition-time, $method) {
+ -webkit-transition: $transition-property $transition-time $method;
+ -moz-transition: $transition-property $transition-time $method;
+ -ms-transition: $transition-property $transition-time $method;
+ -o-transition: $transition-property $transition-time $method;
+ transition: $transition-property $transition-time $method;
+}
+
+@mixin rgbashadow($x, $y, $blur, $rgb, $transparency) {
+ -webkit-box-shadow: $x $y $blur rgba($rgb, $transparency);
+ -moz-box-shadow: $x $y $blur rgba($rgb, $transparency);
+ box-shadow: $x $y $blur rgba($rgb, $transparency);
+}
+
+.collection-view-mode-grid {
+ h4 {
+ font-size: 100%;
+ margin:0;
+ a {
+ display: block;
+ }
+ }
+ margin-bottom:20px;
+}
+
+ul.collection-items-navigation,
+ul.collection-items-navigation li {
+ list-style: none;
+ list-style-image: none;
+ margin: 0;
+ padding: 0;
+}
+ul.collection-items-navigation {
+ margin-bottom: 10px;
+}
+ul.collection-items-navigation li {
+ display: inline;
+}
+ul.collection-items-navigation a {
+ display: inline-block;
+ padding:2px 5px;
+ border:1px solid #d7d7d7;
+ font-size:75%;
+ color: #656565;
+ margin: 0 5px 5px 0;
+ font-weight: 600;
+ text-transform: uppercase;
+ &.active {
+ background-color: #d7d7d7;
+ color:#000;
+ }
+}
+
+select.collection-filter {
+ margin-bottom: 10px;
+}
+.bean-collection-grid {
+ label {
+ display: inline;
+ font-size: 85%;
+ font-weight: 600;
+ }
+}
+
+.collection-items .row {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+
+ .collection-item {
+ width: 100%;
+ padding: 0 20px;
+ img {
+ width:100%;
+ height: auto;
+ }
+ }
+ @media (min-width: 1200px) {
+ .collection-item {
+ width:33.3333%;
+ }
+ }
+ @media (min-width: 960px) and (max-width: 1199px){
+ .collection-item {
+ width:33.3333%;
+ }
+ }
+ @media (min-width: 768px) and (max-width: 959px){
+ .collection-item {
+ width:50%;
+ }
+ }
+}
+.collection-item {
+ opacity: 1;
+ @include transition(opacity, .3s, linear);
+ display: flex;
+ align-items: stretch;
+ img {
+ filter: grayscale(0);
+ @include transition(filter, .3s, linear);
+ }
+}
+.collection-item.collection-item-disabled {
+ opacity: .25;
+ display: none;
+ img,a {
+ filter: grayscale(1);
+ }
+}
+.collection-view-mode-grid-content {
+ border:1px solid #e7e7e7;
+ background-color:#fff;
+ // @include rgbashadow(0,0,10px,#000,.05);
+ padding:15px;
+ width:100%;
+ @include transition(background-color, .3s, linear);
+ .collection-summary {
+ font-size: 85%;
+ padding-top: 10px;
+ &:empty {
+ padding:0;
+ }
+ }
+ &:hover {
+ background-color: #f4f4f4;
+ }
+}
+
+@media screen and (min-width:768px) {
+ .collection-filter-effect-fade .collection-item.collection-item-disabled {
+ display: block;
+ }
+}
+
+.collection-filters {
+ border:1px solid #e7e7e7;
+ padding:10px;
+ margin-bottom: 10px;
+}
+.collection-filter-links-wrapper {
+ margin-bottom: 20px;
+}
+
+.collection-filter-links-single .collection-filter-links {
+
+ button {
+ background:#fff;
+ display: inline-block;
+ padding:4px 8px;
+ border:1px solid #d7d7d7;
+ font-size:85%;
+ color: #656565;
+ margin: 0 5px 5px 0;
+ font-weight: 600;
+ // text-transform: uppercase;
+
+ &.active,
+ &:hover {
+ background-color: #d7d7d7;
+ color:#000;
+ }
+ }
+}
+
+.collection-filter-links-multiple {
+ background-color:#333;
+
+ .collection-filter-links {
+ display: none;
+ padding:10px 20px;
+ // border:1px solid #e7e7e7;
+ // border-top:none;
+
+ .collection-links-buttons {
+ margin: 0 -20px;
+ display: flex;
+ flex-direction: column;
+ flex-wrap: wrap;
+ }
+ @media screen and (min-width:600px) {
+ .collection-links-buttons {
+ flex-direction: row;
+ }
+ }
+ button {
+ font-size: 100%;
+ padding:8px 16px;
+ margin: 0px 20px 20px;
+ width: calc( 100% - 40px);
+ background:rgba(0,0,0,.5);
+ display: inline-block;
+ border:1px solid #d7d7d7;
+ color: #fff;
+ font-weight: 600;
+ @include transition(background-color, .3s, linear);
+ // text-transform: uppercase;
+ &.active,
+ &:hover {
+ background-color: #fff;
+ color:#000;
+ }
+ }
+ @media screen and (min-width:600px) {
+ button {
+ margin: 0px 20px 40px;
+ width: calc( 50% - 40px);
+ }
+ }
+ @media screen and (min-width:768px) {
+ button {
+ width: calc( 33% - 40px);
+ }
+ }
+ @media screen and (min-width:960px) {
+ button {
+ width: calc( 25% - 40px);
+ }
+ }
+ }
+ h3.collection-filter-label {
+
+ a {
+ color:#fff !important;
+ padding:10px;
+ text-align: center;
+ display: block;
+ font-size: 115%;
+ & span:before {
+ content: '\f067';
+ font-family: FontAwesome;
+ margin-right:10px;
+ }
+ &[aria-expanded='true'] span:before {
+ content: '\f078';
+ }
+ }
+ margin:0;
+ }
+ &.collection-filter-links-bg {
+ background-position: center center;
+ background-repeat: no-repeat;
+ background-size: cover;
+ position: relative;
+ .collection-filter-links-inner {
+ background:rgba(0,0,0,.5);
+ &:not(.expanded):hover {
+ background: rgba(0,0,0,.75);
+ }
+ }
+ h3.collection-filter-label {
+
+ a {
+ padding:40px;
+ font-size: 120%;
+ }
+ @media screen and (min-width:768px) {
+ a {
+ padding:80px;
+ font-size: 160%;
+ }
+ }
+ }
+ }
+}
+.collection-filter-links-single {
+ padding:10px;
+ border:1px solid #e7e7e7;
+ h3.collection-filter-label {
+ font-size: 100%;
+ display: inline;
+ font-weight: bold;
+ }
+}
diff --git a/modules/custom/express_collections_bundle/templates/bean--collection-grid.tpl.php b/modules/custom/express_collections_bundle/templates/bean--collection-grid.tpl.php
new file mode 100644
index 000000000..f8eb3ef43
--- /dev/null
+++ b/modules/custom/express_collections_bundle/templates/bean--collection-grid.tpl.php
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/modules/custom/express_collections_bundle/templates/collection-filter-links-single.tpl.php b/modules/custom/express_collections_bundle/templates/collection-filter-links-single.tpl.php
new file mode 100644
index 000000000..125a635c9
--- /dev/null
+++ b/modules/custom/express_collections_bundle/templates/collection-filter-links-single.tpl.php
@@ -0,0 +1,13 @@
+
+
+
+
+ Filter
+
+
+
+
+
+
+
+
diff --git a/modules/custom/express_collections_bundle/templates/collection-filter-links.tpl.php b/modules/custom/express_collections_bundle/templates/collection-filter-links.tpl.php
new file mode 100644
index 000000000..915fb90f2
--- /dev/null
+++ b/modules/custom/express_collections_bundle/templates/collection-filter-links.tpl.php
@@ -0,0 +1,21 @@
+>
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/custom/express_collections_bundle/templates/collection-filter-wrapper.tpl.php b/modules/custom/express_collections_bundle/templates/collection-filter-wrapper.tpl.php
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/custom/express_collections_bundle/templates/collection-group.tpl.php b/modules/custom/express_collections_bundle/templates/collection-group.tpl.php
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/custom/express_collections_bundle/templates/collection-item-wrapper.tpl.php b/modules/custom/express_collections_bundle/templates/collection-item-wrapper.tpl.php
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/custom/express_collections_bundle/templates/node--collection-item--embed.tpl.php b/modules/custom/express_collections_bundle/templates/node--collection-item--embed.tpl.php
new file mode 100644
index 000000000..89718f025
--- /dev/null
+++ b/modules/custom/express_collections_bundle/templates/node--collection-item--embed.tpl.php
@@ -0,0 +1,19 @@
+
diff --git a/modules/custom/express_collections_bundle/templates/node--collection-item--grid.tpl.php b/modules/custom/express_collections_bundle/templates/node--collection-item--grid.tpl.php
new file mode 100644
index 000000000..b0b9c572e
--- /dev/null
+++ b/modules/custom/express_collections_bundle/templates/node--collection-item--grid.tpl.php
@@ -0,0 +1,21 @@
+
diff --git a/modules/custom/express_collections_bundle/templates/node--collection-item--sidebar.tpl.php b/modules/custom/express_collections_bundle/templates/node--collection-item--sidebar.tpl.php
new file mode 100644
index 000000000..618134e84
--- /dev/null
+++ b/modules/custom/express_collections_bundle/templates/node--collection-item--sidebar.tpl.php
@@ -0,0 +1,8 @@
+
diff --git a/modules/custom/express_collections_bundle/templates/node--collection-item--teaser.tpl.php b/modules/custom/express_collections_bundle/templates/node--collection-item--teaser.tpl.php
new file mode 100644
index 000000000..aa50c7c2c
--- /dev/null
+++ b/modules/custom/express_collections_bundle/templates/node--collection-item--teaser.tpl.php
@@ -0,0 +1,19 @@
+
diff --git a/modules/custom/express_collections_bundle/templates/node--collection-item--title.tpl.php b/modules/custom/express_collections_bundle/templates/node--collection-item--title.tpl.php
new file mode 100644
index 000000000..250838e58
--- /dev/null
+++ b/modules/custom/express_collections_bundle/templates/node--collection-item--title.tpl.php
@@ -0,0 +1,5 @@
+
diff --git a/modules/custom/express_collections_bundle/templates/node--collection-item.tpl.php b/modules/custom/express_collections_bundle/templates/node--collection-item.tpl.php
new file mode 100644
index 000000000..c5451d11a
--- /dev/null
+++ b/modules/custom/express_collections_bundle/templates/node--collection-item.tpl.php
@@ -0,0 +1,3 @@
+
+
+
diff --git a/modules/custom/express_responsive_visibility_bundle/config.rb b/modules/custom/express_responsive_visibility_bundle/config.rb
new file mode 100644
index 000000000..655458ed5
--- /dev/null
+++ b/modules/custom/express_responsive_visibility_bundle/config.rb
@@ -0,0 +1,14 @@
+# Require any additional compass plugins here.
+
+# Set this to the root of your project when deployed:
+css_dir = "css"
+sass_dir = "scss"
+
+output_style = :compact
+
+relative_assets = true
+
+line_comments = false
+color_output = false
+
+cache = false
diff --git a/modules/custom/express_responsive_visibility_bundle/css/express-responsive-visibility.css b/modules/custom/express_responsive_visibility_bundle/css/express-responsive-visibility.css
new file mode 100644
index 000000000..0fc80cc4e
--- /dev/null
+++ b/modules/custom/express_responsive_visibility_bundle/css/express-responsive-visibility.css
@@ -0,0 +1,21 @@
+@media (max-width: 767px) { .visible-xs { display: block !important; } }
+@media (min-width: 768px) and (max-width: 991px) { .visible-sm { display: block !important; } }
+@media (min-width: 992px) and (max-width: 1199px) { .visible-md { display: block !important; } }
+@media (min-width: 1200px) { .visible-lg { display: block !important; } }
+@media (max-width: 767px) { .hidden-xs { display: none !important; }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-xs { display: block !important; }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-xs .responsive-visibility-blocks { opacity: .25; }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-xs:before { display: block; padding: 10px; background: #888; color: #fff; font-weight: bold; content: 'This block is set to be hidden from this display.'; font-size: 75%; margin-bottom: 5px; } }
+@media (min-width: 768px) and (max-width: 991px) { .hidden-sm { display: none !important; }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-sm { display: block !important; }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-sm .responsive-visibility-blocks { opacity: .25; }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-sm:before { display: block; padding: 10px; background: #888; color: #fff; font-weight: bold; content: 'This block is set to be hidden from this display.'; font-size: 75%; margin-bottom: 5px; } }
+@media (min-width: 992px) and (max-width: 1199px) { .hidden-md { display: none !important; }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-md { display: block !important; }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-md .responsive-visibility-blocks { opacity: .25; }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-md:before { display: block; padding: 10px; background: #888; color: #fff; font-weight: bold; content: 'This block is set to be hidden from this display.'; font-size: 75%; margin-bottom: 5px; } }
+@media (min-width: 1200px) { .hidden-lg { display: none !important; }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-lg { display: block !important; }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-lg .responsive-visibility-blocks { opacity: .25; }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-lg:before { display: block; padding: 10px; background: #888; color: #fff; font-weight: bold; content: 'This block is set to be hidden from this display.'; font-size: 75%; margin-bottom: 5px; } }
+.bean-type-responsive_visibility > .block-inner > h2.block-title { display: none; }
diff --git a/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.bean.inc b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.bean.inc
new file mode 100644
index 000000000..0c05709c9
--- /dev/null
+++ b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.bean.inc
@@ -0,0 +1,23 @@
+disabled = FALSE; /* Edit this to true to make a default bean_type disabled initially */
+ $bean_type->api_version = 5;
+ $bean_type->name = 'responsive_visibility';
+ $bean_type->label = 'Responsive Visibility';
+ $bean_type->options = '';
+ $bean_type->description = 'Embed a block with visibility settings for mobile, tablet, and desktop displays.';
+ $export['responsive_visibility'] = $bean_type;
+
+ return $export;
+}
diff --git a/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.features.field_base.inc b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.features.field_base.inc
new file mode 100644
index 000000000..03736d829
--- /dev/null
+++ b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.features.field_base.inc
@@ -0,0 +1,126 @@
+ 1,
+ 'cardinality' => -1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_responsive_vis_block',
+ 'indexes' => array(
+ 'target_id' => array(
+ 0 => 'target_id',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'entityreference',
+ 'settings' => array(
+ 'handler' => 'views',
+ 'handler_settings' => array(
+ 'behaviors' => array(
+ 'views-select-list' => array(
+ 'status' => 0,
+ ),
+ ),
+ 'view' => array(
+ 'args' => array(),
+ 'display_name' => 'entityreference_1',
+ 'view_name' => 'express_layout_beans',
+ ),
+ ),
+ 'target_type' => 'bean',
+ ),
+ 'translatable' => 0,
+ 'type' => 'entityreference',
+ );
+
+ // Exported field_base: 'field_responsive_vis_desktop'.
+ $field_bases['field_responsive_vis_desktop'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_responsive_vis_desktop',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 'visible' => 'Visible',
+ 'hidden' => 'Hidden',
+ ),
+ 'allowed_values_function' => '',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_text',
+ );
+
+ // Exported field_base: 'field_responsive_vis_mobile'.
+ $field_bases['field_responsive_vis_mobile'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_responsive_vis_mobile',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 'visible' => 'Visible',
+ 'hidden' => 'Hidden',
+ ),
+ 'allowed_values_function' => '',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_text',
+ );
+
+ // Exported field_base: 'field_responsive_vis_tablet'.
+ $field_bases['field_responsive_vis_tablet'] = array(
+ 'active' => 1,
+ 'cardinality' => 1,
+ 'deleted' => 0,
+ 'entity_types' => array(),
+ 'field_name' => 'field_responsive_vis_tablet',
+ 'indexes' => array(
+ 'value' => array(
+ 0 => 'value',
+ ),
+ ),
+ 'locked' => 0,
+ 'module' => 'list',
+ 'settings' => array(
+ 'allowed_values' => array(
+ 'visible' => 'Visible',
+ 'hidden' => 'Hidden',
+ ),
+ 'allowed_values_function' => '',
+ 'allowed_values_php' => '',
+ ),
+ 'translatable' => 0,
+ 'type' => 'list_text',
+ );
+
+ return $field_bases;
+}
diff --git a/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.features.field_instance.inc b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.features.field_instance.inc
new file mode 100644
index 000000000..5187d26de
--- /dev/null
+++ b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.features.field_instance.inc
@@ -0,0 +1,176 @@
+ 'responsive_visibility',
+ 'default_value' => NULL,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'module' => 'entityreference',
+ 'settings' => array(
+ 'links' => TRUE,
+ 'use_content_language' => TRUE,
+ 'view_mode' => 'default',
+ ),
+ 'type' => 'entityreference_entity_view',
+ 'weight' => 1,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_responsive_vis_block',
+ 'label' => 'Block',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'entityreference',
+ 'settings' => array(
+ 'match_operator' => 'CONTAINS',
+ 'path' => '',
+ 'size' => 60,
+ ),
+ 'type' => 'entityreference_autocomplete',
+ 'weight' => 2,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'bean-responsive_visibility-field_responsive_vis_desktop'.
+ $field_instances['bean-responsive_visibility-field_responsive_vis_desktop'] = array(
+ 'bundle' => 'responsive_visibility',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 'visible',
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => FALSE,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 4,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_responsive_vis_desktop',
+ 'label' => 'Desktop Visibility',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_buttons',
+ 'weight' => 9,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'bean-responsive_visibility-field_responsive_vis_mobile'.
+ $field_instances['bean-responsive_visibility-field_responsive_vis_mobile'] = array(
+ 'bundle' => 'responsive_visibility',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 'visible',
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => FALSE,
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 2,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_responsive_vis_mobile',
+ 'label' => 'Mobile Visibility',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_buttons',
+ 'weight' => 7,
+ ),
+ );
+
+ // Exported field_instance:
+ // 'bean-responsive_visibility-field_responsive_vis_tablet'.
+ $field_instances['bean-responsive_visibility-field_responsive_vis_tablet'] = array(
+ 'bundle' => 'responsive_visibility',
+ 'default_value' => array(
+ 0 => array(
+ 'value' => 'visible',
+ ),
+ ),
+ 'default_value_function' => '',
+ 'default_value_php' => '',
+ 'deleted' => 0,
+ 'description' => '',
+ 'display' => array(
+ 'default' => array(
+ 'label' => 'above',
+ 'settings' => array(),
+ 'type' => 'hidden',
+ 'weight' => 3,
+ ),
+ ),
+ 'entity_type' => 'bean',
+ 'fences_wrapper' => 'no_wrapper',
+ 'field_name' => 'field_responsive_vis_tablet',
+ 'label' => 'Tablet Visibility',
+ 'required' => 1,
+ 'settings' => array(
+ 'user_register_form' => FALSE,
+ ),
+ 'widget' => array(
+ 'active' => 1,
+ 'module' => 'options',
+ 'settings' => array(),
+ 'type' => 'options_buttons',
+ 'weight' => 8,
+ ),
+ );
+
+ // Translatables
+ // Included for use with string extractors like potx.
+ t('Block');
+ t('Desktop Visibility');
+ t('Mobile Visibility');
+ t('Tablet Visibility');
+
+ return $field_instances;
+}
diff --git a/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.features.inc b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.features.inc
new file mode 100644
index 000000000..f2c510289
--- /dev/null
+++ b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.features.inc
@@ -0,0 +1,17 @@
+ "5");
+ }
+ if ($module == "field_group" && $api == "field_group") {
+ return array("version" => "1");
+ }
+}
diff --git a/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.field_group.inc b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.field_group.inc
new file mode 100644
index 000000000..110b76fe2
--- /dev/null
+++ b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.field_group.inc
@@ -0,0 +1,48 @@
+disabled = FALSE; /* Edit this to true to make a default field_group disabled initially */
+ $field_group->api_version = 1;
+ $field_group->identifier = 'group_responsive_vis_settings|bean|responsive_visibility|form';
+ $field_group->group_name = 'group_responsive_vis_settings';
+ $field_group->entity_type = 'bean';
+ $field_group->bundle = 'responsive_visibility';
+ $field_group->mode = 'form';
+ $field_group->parent_name = '';
+ $field_group->data = array(
+ 'label' => 'Visibility Settings',
+ 'weight' => '3',
+ 'children' => array(
+ 0 => 'field_responsive_vis_mobile',
+ 1 => 'field_responsive_vis_tablet',
+ 2 => 'field_responsive_vis_desktop',
+ ),
+ 'format_type' => 'fieldset',
+ 'format_settings' => array(
+ 'formatter' => 'collapsible',
+ 'instance_settings' => array(
+ 'description' => '',
+ 'classes' => 'group-responsive-vis-settings field-group-fieldset',
+ 'required_fields' => 1,
+ 'id' => '',
+ ),
+ ),
+ );
+ $field_groups['group_responsive_vis_settings|bean|responsive_visibility|form'] = $field_group;
+
+ // Translatables
+ // Included for use with string extractors like potx.
+ t('Visibility Settings');
+
+ return $field_groups;
+}
diff --git a/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.info b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.info
new file mode 100644
index 000000000..6292809ca
--- /dev/null
+++ b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.info
@@ -0,0 +1,41 @@
+name = Responsive Visibility Bundle
+core = 7.x
+package = Features
+version = 7.x-1.1
+project = express_responsive_visibility_bundle
+project status url = https://github.com/CuBoulder/express_responsive_visibility_bundle
+description = The Responsive Visibility bundle allows you manage the display of blocks between mobile, devices and desktop views.
+project_demo_url = http://www.colorado.edu/webcentral/node/1548
+
+features[bean_type][] = responsive_visibility
+features[ctools][] = bean_admin_ui:bean:5
+features[ctools][] = field_group:field_group:1
+features[features_api][] = api:2
+features[field_base][] = field_responsive_vis_block
+features[field_base][] = field_responsive_vis_desktop
+features[field_base][] = field_responsive_vis_mobile
+features[field_base][] = field_responsive_vis_tablet
+features[field_group][] = group_responsive_vis_settings|bean|responsive_visibility|form
+features[field_instance][] = bean-responsive_visibility-field_responsive_vis_block
+features[field_instance][] = bean-responsive_visibility-field_responsive_vis_desktop
+features[field_instance][] = bean-responsive_visibility-field_responsive_vis_mobile
+features[field_instance][] = bean-responsive_visibility-field_responsive_vis_tablet
+features_exclude[dependencies][bean_admin_ui] = bean_admin_ui
+features_exclude[dependencies][ctools] = ctools
+features_exclude[dependencies][entityreference] = entityreference
+features_exclude[dependencies][features] = features
+features_exclude[dependencies][field_group] = field_group
+features_exclude[dependencies][list] = list
+features_exclude[dependencies][options] = options
+
+dependencies[] = cu_advanced_layout_bundle
+
+stylesheets[all][] = css/express-responsive-visibility.css
+
+bundle_request = 1
+bundle_group = 'request_bundles'
+
+bundle_roles[] = developer
+bundle_roles[] = administrator
+bundle_roles[] = site_owner
+bundle_roles[] = configuration_manager
diff --git a/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.module b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.module
new file mode 100644
index 000000000..7fbc588cd
--- /dev/null
+++ b/modules/custom/express_responsive_visibility_bundle/express_responsive_visibility_bundle.module
@@ -0,0 +1,161 @@
+field_responsive_vis_block[LANGUAGE_NONE] as $bean) {
+ $bean_render = _cu_block_section_rerender($bean);
+ $output .= render($bean_render);
+ }
+ $vars['content']['blocks']['#markup'] = $output;
+
+ // Visibility settings
+ $settings = array();
+ $settings['mobile'] = $vars['bean']->field_responsive_vis_mobile[LANGUAGE_NONE][0]['value'];
+ $settings['tablet'] = $vars['bean']->field_responsive_vis_tablet[LANGUAGE_NONE][0]['value'];
+ $settings['desktop'] = $vars['bean']->field_responsive_vis_desktop[LANGUAGE_NONE][0]['value'];
+
+ // Apply visibility classes
+ $classes = array();
+ $classes[] = 'responsive-visibility';
+ foreach ($settings as $type => $setting) {
+ $classes[] = express_responsive_visibility_bundle_classes($setting, $type);
+ }
+ $classes = join(' ', $classes);
+ $vars['content']['blocks']['#prefix'] = '';
+ $vars['content']['#suffix'] = '';
+ }
+
+}
+
+/**
+ * CSS classes for responsive visibility.
+ */
+function express_responsive_visibility_bundle_classes($value, $display) {
+ $classes['mobile'] = array(
+ 'default' => '',
+ 'visible' => 'visible-xs',
+ 'hidden' => 'hidden-xs',
+ );
+ $classes['tablet'] = array(
+ 'default' => '',
+ 'visible' => 'visible-sm',
+ 'hidden' => 'hidden-sm',
+ );
+ $classes['desktop'] = array(
+ 'default' => '',
+ 'visible' => 'visible-md visible-lg',
+ 'hidden' => 'hidden-md hidden-lg',
+ );
+ return $classes[$display][$value];
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ *
+ * Remove title field from form - title field should never be used.
+ */
+function express_responsive_visibility_bundle_form_bean_form_alter(&$form, &$form_state, $form_id) {
+ if (($form['bean']['#value']->type == 'responsive_visibility')) {
+ $form['title']['#access'] = FALSE;
+ }
+}
+
+/*
+ * Implements hook_secure_permissions
+ *
+ * Adding permissions for video hero unit bean
+ */
+function express_responsive_visibility_bundle_secure_permissions($role) {
+ $permissions = array(
+ 'anonymous user' => array(
+ 'view any responsive_visibility bean',
+ ),
+ 'authenticated user' => array(
+ 'view any responsive_visibility bean',
+ ),
+ 'administrator' => array(
+ 'create any responsive_visibility bean',
+ 'delete any responsive_visibility bean',
+ 'edit any responsive_visibility bean',
+ 'view any responsive_visibility bean',
+ ),
+ 'content_editor' => array(
+ 'create any responsive_visibility bean',
+ 'delete any responsive_visibility bean',
+ 'edit any responsive_visibility bean',
+ 'view any responsive_visibility bean',
+ ),
+ 'developer' => array(
+ 'create any responsive_visibility bean',
+ 'delete any responsive_visibility bean',
+ 'edit any responsive_visibility bean',
+ 'view any responsive_visibility bean',
+ ),
+ 'edit_my_content' => array(
+ 'view any responsive_visibility bean',
+ ),
+ 'edit_only' => array(
+ 'edit any responsive_visibility bean',
+ 'view any responsive_visibility bean',
+ ),
+ 'site_editor' => array(
+ 'create any responsive_visibility bean',
+ 'delete any responsive_visibility bean',
+ 'edit any responsive_visibility bean',
+ 'view any responsive_visibility bean',
+ ),
+ 'site_owner' => array(
+ 'create any responsive_visibility bean',
+ 'delete any responsive_visibility bean',
+ 'edit any responsive_visibility bean',
+ 'view any responsive_visibility bean',
+ ),
+ );
+
+ if (isset($permissions[$role])) {
+ return $permissions[$role];
+ }
+}
+
+/**
+ * Implements hook_unused_beans().
+ *
+ */
+function express_responsive_visibility_bundle_unused_beans($vars) {
+ $vars['Responsive Visibility']['field_data_field_responsive_vis_block'] = array(
+ 'table' => 'field_data_field_responsive_vis_block',
+ 'column' => 'field_responsive_vis_block_target_id',
+ );
+ return $vars;
+}
diff --git a/modules/custom/express_responsive_visibility_bundle/scss/express-responsive-visibility.scss b/modules/custom/express_responsive_visibility_bundle/scss/express-responsive-visibility.scss
new file mode 100644
index 000000000..f272579d5
--- /dev/null
+++ b/modules/custom/express_responsive_visibility_bundle/scss/express-responsive-visibility.scss
@@ -0,0 +1,94 @@
+@mixin message {
+ display: block;
+ padding:10px;
+ background: #888;
+ color:#fff;
+ font-weight:bold;
+ content: 'This block is set to be hidden from this display.';
+ font-size: 75%;
+ margin-bottom: 5px;
+}
+
+
+@media (max-width: 767px) {
+ .visible-xs {
+ display: block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm {
+ display: block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md {
+ display: block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg {
+ display: block !important;
+ }
+}
+
+@media (max-width: 767px) {
+ .hidden-xs {
+ display: none !important;
+ }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-xs {
+ display: block !important;
+ }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-xs .responsive-visibility-blocks {
+ opacity: .25;
+ }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-xs:before {
+ @include message;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-sm {
+ display: none !important;
+ }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-sm {
+ display: block !important;
+ }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-sm .responsive-visibility-blocks {
+ opacity: .25;
+ }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-sm:before {
+ @include message;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-md {
+ display: none !important;
+ }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-md {
+ display: block !important;
+ }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-md .responsive-visibility-blocks {
+ opacity: .25;
+
+ }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-md:before {
+ @include message;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-lg {
+ display: none !important;
+ }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-lg {
+ display: block !important;
+ }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-lg .responsive-visibility-blocks {
+ opacity: .25;
+ }
+ .express-responsive-visibility-preview .responsive-visibility.hidden-lg:before {
+ @include message;
+ }
+}
+
+.bean-type-responsive_visibility > .block-inner > h2.block-title {
+ display: none;
+}
diff --git a/modules/custom/express_responsive_visibility_bundle/tests/behat/features/responsive_visibility.feature b/modules/custom/express_responsive_visibility_bundle/tests/behat/features/responsive_visibility.feature
new file mode 100644
index 000000000..ed984e60c
--- /dev/null
+++ b/modules/custom/express_responsive_visibility_bundle/tests/behat/features/responsive_visibility.feature
@@ -0,0 +1,24 @@
+@responsive_visibiity
+Feature: Responsive Visibility Block
+
+When I login to a Web Express website
+As an authenticated user with the right permission
+I should be able to create a Responsive Visibility block
+
+Scenario Outline: An authenticated user should be able to access the form for adding a class note
+ Given I am logged in as a user with the role
+ When I go to "block/add/responsive-visibility"
+ Then I should see
+
+ Examples:
+ | role | message |
+ | edit_my_content | "Access Denied" |
+ | edit_only | "Access Denied" |
+ | content_editor | "Create Responsive Visibility block" |
+ | site_owner | "Create Responsive Visibility block" |
+ | administrator | "Create Responsive Visibility block" |
+ | developer | "Create Responsive Visibility block" |
+
+Scenario: An anonymous user should not be able to access the form for adding a class note
+ When I am on "block/add/responsive-visibility"
+ Then I should see "Access denied"
diff --git a/tests/behat/behat.travis.yml b/tests/behat/behat.travis.yml
index fabb7f669..64b8ab737 100644
--- a/tests/behat/behat.travis.yml
+++ b/tests/behat/behat.travis.yml
@@ -43,12 +43,45 @@ default:
cu_video_hero_unit:
paths: [ "%paths.base%/features/cu_video_hero_unit_bundle" ]
contexts: [ FeatureContext ]
+ cu_publications_bundle:
+ paths: [ "%paths.base%/features/cu_publications_bundle" ]
+ contexts: [ FeatureContext ]
localist:
paths: [ "%paths.base%/features/express_localist_bundle" ]
contexts: [ FeatureContext ]
digital_campaign:
paths: [ "%paths.base%/features/cu_digital_campaign_bundle" ]
contexts: [ FeatureContext ]
+ classnotes:
+ paths: [ "%paths.base%/features/cu_alumni_class_notes_bundle" ]
+ contexts: [ FeatureContext ]
+ livestream:
+ paths: [ "%paths.base%/features/cu_livestream_bundle" ]
+ contexts: [ FeatureContext ]
+ content_sequence:
+ paths: [ "%paths.base%/features/cu_content_sequence_bundle" ]
+ contexts: [ FeatureContext ]
+ newsletter:
+ paths: [ "%paths.base%/features/cu_newsletter_bundle" ]
+ contexts: [ FeatureContext ]
+ livechat:
+ paths: [ "%paths.base%/features/cu_livechat_bundle" ]
+ contexts: [ FeatureContext ]
+ custom_logo:
+ paths: [ "%paths.base%/features/cu_custom_logo_bundle" ]
+ contexts: [ FeatureContext ]
+ responsive_visibility:
+ paths: [ "%paths.base%/features/express_responsive_visibility_bundle" ]
+ contexts: [ FeatureContext ]
+ cu_section_page:
+ paths: [ "%paths.base%/features/cu_section_page_bundle" ]
+ contexts: [ FeatureContext ]
+ collections:
+ paths: [ "%paths.base%/features/express_collections_bundle" ]
+ contexts: [ FeatureContext ]
+ campus_news:
+ paths: [ "%paths.base%/features/cu_campus_news_bundle" ]
+ contexts: [ FeatureContext ]
extensions:
Behat\MinkExtension:
base_url: "http://127.0.0.1:8031/"
diff --git a/tests/behat/features/cu_alumni_class_notes_bundle/class_notes.creation.feature b/tests/behat/features/cu_alumni_class_notes_bundle/class_notes.creation.feature
new file mode 100644
index 000000000..77e63af5d
--- /dev/null
+++ b/tests/behat/features/cu_alumni_class_notes_bundle/class_notes.creation.feature
@@ -0,0 +1,25 @@
+@class_notes
+Feature: Class Notes Node Type
+
+When I login to a Web Express website
+As an authenticated user with the right permission
+I should be able to create a class note node
+
+
+Scenario Outline: An authenticated user should be able to access the form for adding a class note
+ Given I am logged in as a user with the role
+ When I go to "node/add/class-note"
+ Then I should see
+
+ Examples:
+ | role | message |
+ | edit_my_content | "Access Denied" |
+ | edit_only | "Access Denied" |
+ | content_editor | "Create Class Note" |
+ | site_owner | "Create Class Note" |
+ | administrator | "Create Class Note" |
+ | developer | "Create Class Note" |
+
+Scenario: An anonymous user should not be able to access the form for adding a class note
+ When I am on "node/add/class-note"
+ Then I should see "Access denied"
diff --git a/tests/behat/features/cu_campus_news_bundle/cu_campus_news_bundle.access.feature b/tests/behat/features/cu_campus_news_bundle/cu_campus_news_bundle.access.feature
new file mode 100644
index 000000000..a67ebf840
--- /dev/null
+++ b/tests/behat/features/cu_campus_news_bundle/cu_campus_news_bundle.access.feature
@@ -0,0 +1,42 @@
+@cu_campus_news_bundle
+Feature: Campus News Block
+
+When I login to a Web Express website
+As an authenticated user with the right permission
+I should be able to create a campus news block
+
+Scenario Outline: An authenticated user should be able to access the form for adding a campus news block
+ Given I am logged in as a user with the role
+ When I go to "block/add/campus-news"
+ Then I should see
+
+ Examples:
+ | role | message |
+ | edit_my_content | "Access Denied" |
+ | edit_only | "Access Denied" |
+ | site_editor | "Create Campus News block" |
+ | site_owner | "Create Campus News block" |
+ | administrator | "Create Campus News block" |
+ | developer | "Create Campus News block" |
+
+Scenario: An anonymous user should not be able to access the form for adding a campus news feature block
+ When I am on "block/add/campus-news-feature"
+ Then I should see "Access denied"
+
+ Scenario Outline: An authenticated user should be able to access the form for adding a campus news feature block
+ Given I am logged in as a user with the role
+ When I go to "block/add/campus-news-feature"
+ Then I should see
+
+ Examples:
+ | role | message |
+ | edit_my_content | "Access Denied" |
+ | edit_only | "Access Denied" |
+ | site_editor | "Create Campus News Feature block" |
+ | site_owner | "Create Campus News Feature block" |
+ | administrator | "Create Campus News Feature block" |
+ | developer | "Create Campus News Feature block" |
+
+ Scenario: An anonymous user should not be able to access the form for adding a campus news feature block
+ When I am on "block/add/campus-news-feature"
+ Then I should see "Access denied"
diff --git a/tests/behat/features/cu_content_sequence_bundle/cu_content_sequence.access.feature b/tests/behat/features/cu_content_sequence_bundle/cu_content_sequence.access.feature
new file mode 100644
index 000000000..0f9730972
--- /dev/null
+++ b/tests/behat/features/cu_content_sequence_bundle/cu_content_sequence.access.feature
@@ -0,0 +1,24 @@
+@cu_content_sequence_bundle
+Feature: Content Sequence Block
+
+ When I login to a Web Express website
+ As an authenticated user with the right permission
+ I should be able to create a content sequence block
+
+ Scenario Outline: An authenticated user should be able to access the form for adding a content sequence block
+ Given I am logged in as a user with the role
+ When I go to "block/add/content-sequence"
+ Then I should see
+
+ Examples:
+ | role | message |
+ | edit_my_content | "Access Denied" |
+ | edit_only | "Access Denied" |
+ | content_editor | "Create Content Sequence block" |
+ | site_owner | "Create Content Sequence block" |
+ | administrator | "Create Content Sequence block" |
+ | developer | "Create Content Sequence block" |
+
+ Scenario: An anonymous user should not be able to access the form for adding a campus news block
+ When I am on "block/add/content-sequence"
+ Then I should see "Access denied"
diff --git a/tests/behat/features/cu_custom_logo_bundle/cu_custom_logo_bundle.access.feature b/tests/behat/features/cu_custom_logo_bundle/cu_custom_logo_bundle.access.feature
new file mode 100644
index 000000000..1fc1e17f2
--- /dev/null
+++ b/tests/behat/features/cu_custom_logo_bundle/cu_custom_logo_bundle.access.feature
@@ -0,0 +1,24 @@
+@cu_custom_logo
+Feature: Add Custom Logo
+
+ When I login to a Web Express website
+ As an authenticated user with the right permission
+ I should be able to add a custom logo
+
+ Scenario Outline: An authenticated user should be able to access the form for adding a custom logo
+ Given I am logged in as a user with the role
+ When I go to "admin/config/user-interface/custom-logo"
+ Then I should see
+
+ Examples:
+ | role | message |
+ | edit_my_content | "Access Denied" |
+ | edit_only | "Access Denied" |
+ | content_editor | "Access Denied" |
+ | site_owner | "Access Denied" |
+ | administrator | "Access Denied" |
+ | developer | "Custom Logo" |
+
+ Scenario: An anonymous user should not be able to access the form for adding a custom logo
+ When I am on "admin/config/user-interface/custom-logo"
+ Then I should see "Access denied"
diff --git a/tests/behat/features/cu_livechat_bundle/livechat.feature b/tests/behat/features/cu_livechat_bundle/livechat.feature
new file mode 100644
index 000000000..286487168
--- /dev/null
+++ b/tests/behat/features/cu_livechat_bundle/livechat.feature
@@ -0,0 +1,27 @@
+@livechat
+Feature: LiveChat Integration Feature
+
+Scenario: A site owner can add a LiveChat account.
+Given I am logged in as a user with the "site_owner" role
+When I go to "admin/settings/livechat/configuration"
+Then I should see "A paid real-time chat solution from LiveChat"
+When I fill in "LiveChatINC.com license number" with "dffdf"
+And I press "Save configuration"
+Then I should see "The livechat license number must only contain numbers."
+When I fill in "LiveChatINC.com license number" with ""
+And I press "Save configuration"
+Then I should see "The livechat license number must only contain numbers."
+When I fill in "LiveChatINC.com license number" with "1234567"
+And I press "Save configuration"
+Then I should see "The configuration options have been saved."
+
+# This scenario uses the LiveChat config set up in the last scenario.
+@testing_frontpage @javascript
+Scenario: The LiveChat code shows up for anonymous users.
+Given I go to "node/1"
+Then the response should contain ""
+And the response should contain "#livechat-compact-container { display: none !important;}"
+
+Scenario: An anonymous user should not be able to access the form for adding a class note
+When I am on "admin/settings/livechat/configuration"
+Then I should see "Access denied"
diff --git a/tests/behat/features/cu_livestream_bundle/cu_livestream_bundle.creation.feature b/tests/behat/features/cu_livestream_bundle/cu_livestream_bundle.creation.feature
new file mode 100644
index 000000000..766314a68
--- /dev/null
+++ b/tests/behat/features/cu_livestream_bundle/cu_livestream_bundle.creation.feature
@@ -0,0 +1,17 @@
+@cu_livestream_bundle
+Feature: Embed Livestream
+In order to stream my video content
+As an authenticated user
+I should be able embed the Livestream shortcode
+
+# Create basic page and paste in College of Music shortcode
+# When the bundle is not working the shortcode text is displayed "livestream id="
+
+Scenario: Functionality - Livestream embed code displays video
+Given I am logged in as a user with the "site_owner" role
+And I am on "node/add/page"
+And fill in "edit-title" with "My LS Video"
+And fill in "Body" with "[livestream id=\"ls_embed_1524756180\" account=\"5802933\" event=\"7976259\" /]"
+And I press "edit-submit"
+Then I should see "My LS Video"
+And I should not see "livestream id="
diff --git a/tests/behat/features/cu_newsletter_bundle/cu_newsletter_bundle.access.feature b/tests/behat/features/cu_newsletter_bundle/cu_newsletter_bundle.access.feature
new file mode 100755
index 000000000..aa9680c39
--- /dev/null
+++ b/tests/behat/features/cu_newsletter_bundle/cu_newsletter_bundle.access.feature
@@ -0,0 +1,24 @@
+@NewsletterBundle
+Feature: Newsletter Node Type
+When I login to a Web Express website
+As an authenticated user with the right permission
+I should be able to create a newsletter
+
+Scenario Outline: An authenticated user should be able to access the form for adding a newsletter
+Given I am logged in as a user with the role
+When I go to "node/add/newsletter"
+Then I should see
+
+Examples:
+ | role | message |
+ | edit_my_content | "Access Denied" |
+ | edit_only | "Access Denied" |
+ | content_editor | "Create Newsletter" |
+ | site_editor | "Create Newsletter" |
+ | site_owner | "Create Newsletter" |
+ | administrator | "Create Newsletter" |
+ | developer | "Create Newsletter" |
+
+Scenario: An anonymous user should not be able to access the form for adding a newsletter
+When I am on "node/add/newsletter"
+Then I should see "Access denied"
diff --git a/tests/behat/features/cu_newsletter_bundle/cu_newsletter_bundle.content.feature b/tests/behat/features/cu_newsletter_bundle/cu_newsletter_bundle.content.feature
new file mode 100755
index 000000000..b8643822b
--- /dev/null
+++ b/tests/behat/features/cu_newsletter_bundle/cu_newsletter_bundle.content.feature
@@ -0,0 +1,64 @@
+@NewsletterBundle
+Feature: Newsletter Content Type
+When I login to a Web Express website
+As an authenticated user
+I should be able to create, edit, and delete Newsletters
+
+# 1) CREATE NEWSLETTER TAXONOMY
+# 2) A VERY SIMPLE NEWSLETTER CAN BE CREATED
+# 3) CREATE SUPPORTING ARTICLES FOR NEWSLETTER
+# 4) FLESH OUT NEWSLETTER WITH MORE CONTENT
+
+# 1) CREATE NEWSLETTER TAXONOMY
+Scenario: Bundle functionality - Create the Newsletter Taxonomy
+Given I am logged in as a user with the "site_owner" role
+And I am on "admin/structure/taxonomy/newsletter/add"
+And I fill in "Name" with "Digital Arts Magazine"
+And I fill in "Newsletter Path" with "digitalarts"
+And I press "Save"
+Then I should see "Created new term Digital Arts Magazine"
+
+# 2) A VERY SIMPLE NEWSLETTER CAN BE CREATED
+Scenario: Node Functionality - A very simple Newsletter node can be created
+Given I am logged in as a user with the "site_owner" role
+And I go to "node/add/newsletter"
+And I fill in "edit-field-newsletter-title-und-0-value" with "Sample Newsletter"
+And I select "Digital Arts Magazine" from "edit-field-newsletter-type-und"
+And I fill in "Body" with "This is the introductory section of the newsletter."
+When I press "edit-submit"
+Then I should see "Newsletter Digital Arts Magazine - Sample Newsletter has been created."
+And I press "edit-publish"
+Then I should be on "/newsletter/digitalarts/sample-newsletter"
+And I should see "Digital Arts Magazine - Sample Newsletter and all attached articles are now published"
+
+# 3) CREATE SUPPORTING ARTICLES FOR NEWSLETTER
+Scenario: Create two articles for use in Newsletter
+Given I am logged in as a user with the "site_owner" role
+And I go to "node/add/article"
+And I fill in "Title" with "Newsletter Article One"
+And I fill in "Body" with "First article about Digital Arts"
+And I press "Save"
+Then I should see "Article Newsletter Article One has been created"
+Then I go to "node/add/article"
+And I fill in "Title" with "Newsletter Article Two"
+And I fill in "Body" with "Second article about Digital Arts"
+And I press "Save"
+Then I should see "Article Newsletter Article Two has been created"
+
+# 4) FLESH OUT NEWSLETTER WITH MORE CONTENT
+Scenario: Node functionality - Flesh out newsletter with more content
+Given I am logged in as a user with the "site_owner" role
+And I am on "newsletter/digitalarts/sample-newsletter"
+And I follow "Edit"
+And I fill in "edit-field-newsletter-section-und-0-field-newsletter-section-title-und-0-value" with "Read About Digital Arts"
+And I fill in "edit-field-newsletter-section-und-0-field-newsletter-section-content-und-0-field-newsletter-articles-und-0-target-id" with "Newsletter Article One"
+And I press "Add another item"
+And I fill in "edit-field-newsletter-section-und-0-field-newsletter-section-content-und-1-field-newsletter-articles-und-0-target-id" with "Newsletter Article Two"
+And I fill in "edit-field-newsletter-text-block-und-0-field-newsletter-block-title-und-0-value" with "A Text Block of Information"
+And I press "edit-submit"
+And I press "edit-publish"
+Then I should see "Digital Arts Magazine - Sample Newsletter and all attached articles are now published"
+And I should see "Read About Digital Arts"
+And I should see "Newsletter Article One"
+And I should see "Newsletter Article Two"
+And I should see "A Text Block of Information"
diff --git a/tests/behat/features/cu_publications_bundle/cu_publications_bundle.access.feature b/tests/behat/features/cu_publications_bundle/cu_publications_bundle.access.feature
new file mode 100644
index 000000000..aa9b860d3
--- /dev/null
+++ b/tests/behat/features/cu_publications_bundle/cu_publications_bundle.access.feature
@@ -0,0 +1,24 @@
+@cu_publications_bundle
+Feature: Issue Node Type
+
+ When I login to a Web Express website
+ As an authenticated user with the right permission
+ I should be able to create an Issue
+
+ Scenario Outline: An authenticated user should be able to access the form for adding an issue
+ Given I am logged in as a user with the role
+ When I go to "node/add/issue"
+ Then I should see
+
+ Examples:
+ | role | message |
+ | edit_my_content | "Access Denied" |
+ | edit_only | "Access Denied" |
+ | content_editor | "Create Issue" |
+ | site_owner | "Create Issue" |
+ | administrator | "Create Issue" |
+ | developer | "Create Issue" |
+
+ Scenario: An anonymous user should not be able to access the form for adding an issue
+ When I am on "node/add/issue"
+ Then I should see "Access denied"
\ No newline at end of file
diff --git a/tests/behat/features/cu_section_page_bundle/cu_section_page_bundle.access.feature b/tests/behat/features/cu_section_page_bundle/cu_section_page_bundle.access.feature
new file mode 100644
index 000000000..bfafc8eaa
--- /dev/null
+++ b/tests/behat/features/cu_section_page_bundle/cu_section_page_bundle.access.feature
@@ -0,0 +1,24 @@
+@cu_section_page_bundle
+Feature: Section Page Node Type
+
+ When I login to a Web Express website
+ As an authenticated user with the right permission
+ I should be able to create a section page
+
+ Scenario Outline: An authenticated user should be able to access the form for adding a section page
+ Given I am logged in as a user with the role
+ When I go to "node/add/section-page"
+ Then I should see
+
+ Examples:
+ | role | message |
+ | edit_my_content | "Access Denied" |
+ | edit_only | "Access Denied" |
+ | content_editor | "Create Section Page" |
+ | site_owner | "Create Section Page" |
+ | administrator | "Create Section Page" |
+ | developer | "Create Section Page" |
+
+ Scenario: An anonymous user should not be able to access the form for adding a section page
+ When I am on "node/add/section-page"
+ Then I should see "Access denied"
diff --git a/tests/behat/features/express_collections_bundle/express_collections_bundle.access.feature b/tests/behat/features/express_collections_bundle/express_collections_bundle.access.feature
new file mode 100644
index 000000000..e563cdfbd
--- /dev/null
+++ b/tests/behat/features/express_collections_bundle/express_collections_bundle.access.feature
@@ -0,0 +1,24 @@
+@express_collections_bundle
+Feature: Collection Node
+
+ When I login to a Web Express website
+ As an authenticated user with the right permission
+ I should be able to create a content sequence block
+
+ Scenario Outline: An authenticated user should be able to access the form for adding a collection
+ Given I am logged in as a user with the role
+ When I go to "node/add/collection-item"
+ Then I should see
+
+ Examples:
+ | role | message |
+ | edit_my_content | "Access Denied" |
+ | edit_only | "Access Denied" |
+ | content_editor | "Create Collection Item" |
+ | site_owner | "Create Collection Item" |
+ | administrator | "Create Collection Item" |
+ | developer | "Create Collection Item" |
+
+ Scenario: An anonymous user should not be able to access the form for adding a collection
+ When I am on "node/add/collection-item"
+ Then I should see "Access denied"
\ No newline at end of file
diff --git a/tests/behat/features/express_responsive_visibility_bundle/express_responsive_visibility_bundle.access.feature b/tests/behat/features/express_responsive_visibility_bundle/express_responsive_visibility_bundle.access.feature
new file mode 100644
index 000000000..ed984e60c
--- /dev/null
+++ b/tests/behat/features/express_responsive_visibility_bundle/express_responsive_visibility_bundle.access.feature
@@ -0,0 +1,24 @@
+@responsive_visibiity
+Feature: Responsive Visibility Block
+
+When I login to a Web Express website
+As an authenticated user with the right permission
+I should be able to create a Responsive Visibility block
+
+Scenario Outline: An authenticated user should be able to access the form for adding a class note
+ Given I am logged in as a user with the role
+ When I go to "block/add/responsive-visibility"
+ Then I should see
+
+ Examples:
+ | role | message |
+ | edit_my_content | "Access Denied" |
+ | edit_only | "Access Denied" |
+ | content_editor | "Create Responsive Visibility block" |
+ | site_owner | "Create Responsive Visibility block" |
+ | administrator | "Create Responsive Visibility block" |
+ | developer | "Create Responsive Visibility block" |
+
+Scenario: An anonymous user should not be able to access the form for adding a class note
+ When I am on "block/add/responsive-visibility"
+ Then I should see "Access denied"
diff --git a/themes/cuemail/config.rb b/themes/cuemail/config.rb
new file mode 100755
index 000000000..655458ed5
--- /dev/null
+++ b/themes/cuemail/config.rb
@@ -0,0 +1,14 @@
+# Require any additional compass plugins here.
+
+# Set this to the root of your project when deployed:
+css_dir = "css"
+sass_dir = "scss"
+
+output_style = :compact
+
+relative_assets = true
+
+line_comments = false
+color_output = false
+
+cache = false
diff --git a/themes/cuemail/css/design-01.css b/themes/cuemail/css/design-01.css
new file mode 100755
index 000000000..3c85e8d45
--- /dev/null
+++ b/themes/cuemail/css/design-01.css
@@ -0,0 +1,59 @@
+/* Colors */
+body, table.body { background-color: #f2f2f2; }
+
+.container { background-color: #FFFFFF; }
+
+/* Newsletter Title & Logo */
+.title, .title td { background-color: #000000; color: #ffffff; }
+
+.title td.newsletter-name h1 { color: #ffffff; }
+
+/* Newsletter Issue & Weblink */
+.title-bottom { background-color: #000000; }
+
+.issue { background-color: #ffffff; }
+
+td.issue-date { color: #cccccc; }
+
+td.web-link a { color: #cccccc; }
+td.web-link a:visited, td.web-link a:active { color: #cccccc !important; }
+
+td.web-link a:hover { color: #ffffff !important; }
+
+.title td h1 { color: #ffffff; }
+
+td.email-top { padding: 0 0 20px; }
+
+/* Article List */
+.article-list { background-color: #fff; }
+
+/* Articles */
+.content-top { margin-top: -20px; position: relative; }
+
+.content-top td.newsletter-sections { padding-top: 10px; background-color: #FFFFFF; }
+
+.article-section-title, .article-section-link, .article-content { background-color: #FFFFFF; }
+
+.article-content { background-color: #FFFFFF; }
+
+.article-intro, .article-intro td { background-color: #FFFFFF; }
+
+/* Ads/Promos */
+.newsletter-ad-1 { background-color: #FFFFFF; }
+
+.newsletter-ad-2 { background-color: #FFFFFF; }
+
+/* Blocks */
+.blocks { background-color: #FFFFFF; }
+
+/* Footer */
+.footer { background-color: #000000; }
+
+.footer-content { color: #FFFFFF; }
+
+.footer-content p { color: #FFFFFF; }
+
+.footer-content a { color: #cfb87c; }
+.footer-content a:link, .footer-content a:visited, .footer-content a:active { color: #cfb87c !important; }
+
+.footer-content a:hover { color: #FFFFFF !important; }
diff --git a/themes/cuemail/css/design-02.css b/themes/cuemail/css/design-02.css
new file mode 100755
index 000000000..88ef41b4c
--- /dev/null
+++ b/themes/cuemail/css/design-02.css
@@ -0,0 +1,57 @@
+/* Colors */
+body, table.body { background-color: #FFFFFF; }
+
+.container { background-color: #FFFFFF; }
+
+/* Newsletter Title & Logo */
+.title, .title td { background-color: #FFFFFF; color: #000000; }
+
+.title td.newsletter-name h1 { color: #000000; }
+
+/* Newsletter Issue & Weblink */
+.title-bottom { background-color: #000000; }
+
+.issue { background-color: #ffffff; }
+
+td.issue-date { color: #757575; }
+
+td.web-link a { color: #757575; }
+td.web-link a:link, td.web-link a:visited, td.web-link a:active { color: #757575 !important; }
+
+td.web-link a:hover { color: #000000 !important; }
+
+.title td h1 { color: #000000; }
+
+/* Article List */
+.article-list { background-color: #fff; }
+
+/* Articles */
+.content-top td.newsletter-sections { padding-top: 10px; background-color: #FFFFFF; }
+
+.article-section-title, .article-section-link, .article-content { background-color: #FFFFFF; }
+
+.article-content { background-color: #FFFFFF; }
+
+.article-intro, .article-intro td { background-color: #FFFFFF; }
+
+/* Ads/Promos */
+.newsletter-ad-1 { background-color: #FFFFFF; }
+
+.newsletter-ad-2 { background-color: #FFFFFF; }
+
+/* Blocks */
+.blocks { background-color: #FFFFFF; }
+
+/* Footer */
+.email-footer { border-top: 1px solid #e7e7e7; }
+
+.footer { background-color: #FFFFFF; }
+
+.footer-content { color: #000000; }
+
+.footer-content p { color: #000000; }
+
+.footer-content a { color: #007bc8; }
+.footer-content a:link, .footer-content a:visited, .footer-content a:active { color: #007bc8 !important; }
+
+.footer-content a:hover { color: #007bc8 !important; }
diff --git a/themes/cuemail/css/design-03.css b/themes/cuemail/css/design-03.css
new file mode 100755
index 000000000..545f447ca
--- /dev/null
+++ b/themes/cuemail/css/design-03.css
@@ -0,0 +1,15 @@
+body { background-color: #E9E9E9; }
+
+table.body { max-width: 580px !important; margin: 0 auto; background-color: #FFFFFF !important; }
+
+.email-blocks { background-color: #f2f2f2; }
+
+.blocks td { padding-top: 10px; }
+
+.hero-image .content-padding { padding: 0px; }
+.hero-image .content-padding .intro-text { padding: 0 10px; }
+
+.article-content.odd1 { background-color: #f2f2f2; }
+.article-content.odd1 .text-pad { padding-top: 10px; padding-bottom: 10px; }
+
+.article-teaser-border { border-bottom: 1px solid #e7e7e7; display: block; margin: 0 10px 20px; }
diff --git a/themes/cuemail/css/design-04.css b/themes/cuemail/css/design-04.css
new file mode 100755
index 000000000..c0d8e3e9a
--- /dev/null
+++ b/themes/cuemail/css/design-04.css
@@ -0,0 +1,62 @@
+/* Colors */
+body, table.body { background-color: #000000; }
+
+.container { background-color: #FFFFFF; }
+
+/* Newsletter Title & Logo */
+.title, .title td { background-color: #000000; color: #ffffff; }
+
+.title td.newsletter-name h1 { color: #ffffff; }
+
+/* Newsletter Issue & Weblink */
+.title-bottom { background-color: #000000; }
+
+.issue { background-color: #ffffff; }
+
+td.issue-date { color: #cccccc; }
+
+td.web-link a { color: #cccccc; }
+td.web-link a:link, td.web-link a:visited, td.web-link a:active { color: #cccccc !important; }
+
+td.web-link a:hover { color: #ffffff !important; }
+
+.title td h1 { color: #ffffff; }
+
+/* Article List */
+.article-list { background-color: #fff; }
+
+/* Articles */
+.content-top td.newsletter-sections { padding-top: 10px; background-color: #FFFFFF; }
+
+.article-section-title, .article-section-link, .article-content { background-color: #FFFFFF; }
+
+.article-content { background-color: #FFFFFF; }
+
+.article-intro, .article-intro td { background-color: #FFFFFF; }
+
+/* Ads/Promos */
+.newsletter-ad-1 { background-color: #FFFFFF; }
+
+.newsletter-ad-2 { background-color: #FFFFFF; }
+
+/* Blocks */
+.blocks { background-color: #FFFFFF; }
+
+/* Footer */
+.footer { background-color: #000000; }
+
+.footer-content { color: #FFFFFF; }
+
+.footer-content p { color: #FFFFFF; }
+
+.footer-content a { color: #cfb87c; }
+.footer-content a:link, .footer-content a:visited, .footer-content a:active { color: #cfb87c !important; }
+
+.footer-content a:hover { color: #cfb87c !important; }
+
+.hero-image .content-padding { padding: 0px; }
+.hero-image .content-padding .intro-text { padding: 0 10px; }
+
+.article-teaser-border { border-bottom: 1px solid #e7e7e7; display: block; margin: 0 10px 20px; }
+
+.article-teaser-border.last { display: none; }
diff --git a/themes/cuemail/css/design-05.css b/themes/cuemail/css/design-05.css
new file mode 100755
index 000000000..3787813a8
--- /dev/null
+++ b/themes/cuemail/css/design-05.css
@@ -0,0 +1,61 @@
+/* Colors */
+body, table.body { background-color: #FFFFFF; }
+
+.container { background-color: #FFFFFF; }
+
+/* Newsletter Title & Logo */
+.title, .title td { background-color: #000000; color: #ffffff; }
+
+.title td.newsletter-name h1 { color: #ffffff; }
+
+/* Newsletter Issue & Weblink */
+.title-bottom { background-color: #000000; }
+
+.issue { background-color: #ffffff; }
+
+td.issue-date { color: #cccccc; }
+
+td.web-link a { color: #cccccc !important; }
+
+td.web-link a:hover { color: #ffffff !important; }
+
+.title td h1 { color: #ffffff; }
+
+/* Article List */
+.article-list { background-color: #fff; }
+
+/* Articles */
+.content-top td.newsletter-sections { padding-top: 10px; background-color: #FFFFFF; }
+
+.article-section-title, .article-section-link, .article-content { background-color: #FFFFFF; }
+
+.article-content { background-color: #FFFFFF; }
+
+.article-intro, .article-intro td { background-color: #FFFFFF; }
+
+/* Ads/Promos */
+.newsletter-ad-1 { background-color: #FFFFFF; }
+
+.newsletter-ad-2 { background-color: #FFFFFF; }
+
+/* Blocks */
+.blocks { background-color: #FFFFFF; }
+
+/* Footer */
+.footer { background-color: #000000; }
+
+.footer-content { color: #FFFFFF; }
+
+.footer-content p { color: #FFFFFF; }
+
+.footer-content a { color: #cfb87c; }
+
+.footer-content a:hover { color: #cfb87c !important; }
+.footer-content a:hover:link, .footer-content a:hover:visited, .footer-content a:hover:hover, .footer-content a:hover:active { color: #cfb87c !important; }
+
+.hero-image .content-padding { padding: 20px 0px 0px; }
+.hero-image .content-padding .intro-text { padding: 0 10px; }
+
+.article-teaser-border { border-bottom: 1px solid #e7e7e7; display: block; margin: 0 10px 20px; }
+
+.article-teaser-border.last { display: none; }
diff --git a/themes/cuemail/css/ememo.css b/themes/cuemail/css/ememo.css
new file mode 100755
index 000000000..3ed3dca7b
--- /dev/null
+++ b/themes/cuemail/css/ememo.css
@@ -0,0 +1,1070 @@
+/**********************************************
+* Ink v1.0.5 - Copyright 2013 ZURB Inc *
+**********************************************/
+
+/* Client-specific Styles & Reset */
+
+/**********************************************
+ * Ink v1.0.5 - Copyright 2013 ZURB Inc *
+ **********************************************/
+
+ /* Client-specific Styles and Reset */
+
+ #outlook a {
+ padding:0;
+ }
+
+ body{
+ width:100% !important;
+ min-width: 100%;
+ -webkit-text-size-adjust:100%;
+ -ms-text-size-adjust:100%;
+ margin:0;
+ padding:0;
+ }
+
+ /* .ExternalClass applies to Outlook.com (the artist formerly known as Hotmail) */
+
+ .ExternalClass {
+ width:100%;
+ }
+
+ .ExternalClass,
+ .ExternalClass p,
+ .ExternalClass span,
+ .ExternalClass font,
+ .ExternalClass td,
+ .ExternalClass div {
+ line-height: 100%;
+ }
+
+ #backgroundTable {
+ margin:0;
+ padding:0;
+ width:100% !important;
+ line-height: 100% !important;
+ }
+
+ img {
+ outline:none;
+ text-decoration:none;
+ -ms-interpolation-mode: bicubic;
+ width: auto;
+ max-width: 100%;
+ float: left;
+ clear: both;
+ display: block;
+ height:auto;
+ }
+
+ center {
+ width: 100%;
+ min-width: 580px;
+ }
+
+ a img {
+ border: none;
+ }
+
+ p {
+ margin: 0 0 0 10px;
+ }
+
+ table {
+ border-spacing: 0;
+ border-collapse: collapse;
+ }
+
+ td {
+ word-break: break-word;
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ hyphens: none;
+ border-collapse: collapse !important;
+ }
+
+ table, tr, td {
+ padding: 0;
+ vertical-align: top;
+ text-align: left;
+ }
+
+ hr {
+ color: #d9d9d9;
+ background-color: #d9d9d9;
+ height: 1px;
+ border: none;
+ }
+
+ /* Responsive Grid */
+
+ table.body {
+ height: 100%;
+ width: 100%;
+ }
+
+ table.container {
+ width: 580px;
+ margin: 0 auto;
+ text-align: inherit;
+ }
+
+ table.row {
+ padding: 0px;
+ width: 100%;
+ position: relative;
+ }
+
+ table.container table.row {
+ display: block;
+ }
+
+ td.wrapper {
+ padding: 10px 20px 0px 0px;
+ position: relative;
+ }
+
+ table.columns,
+ table.column {
+ margin: 0 auto;
+ }
+
+ table.columns td,
+ table.column td {
+ padding: 0px 0px 10px;
+ }
+
+ table.columns td.sub-columns,
+ table.column td.sub-columns,
+ table.columns td.sub-column,
+ table.column td.sub-column {
+ padding-right: 10px;
+ }
+
+ td.sub-column, td.sub-columns {
+ min-width: 0px;
+ }
+
+ table.row td.last,
+ table.container td.last {
+ padding-right: 0px;
+ }
+
+ table.one { width: 30px; }
+ table.two { width: 80px; }
+ table.three { width: 130px; }
+ table.four { width: 180px; }
+ table.five { width: 230px; }
+ table.six { width: 280px; }
+ table.seven { width: 330px; }
+ table.eight { width: 380px; }
+ table.nine { width: 430px; }
+ table.ten { width: 480px; }
+ table.eleven { width: 530px; }
+ table.twelve { width: 580px; }
+
+ table.one center { min-width: 30px; }
+ table.two center { min-width: 80px; }
+ table.three center { min-width: 130px; }
+ table.four center { min-width: 180px; }
+ table.five center { min-width: 230px; }
+ table.six center { min-width: 280px; }
+ table.seven center { min-width: 330px; }
+ table.eight center { min-width: 380px; }
+ table.nine center { min-width: 430px; }
+ table.ten center { min-width: 480px; }
+ table.eleven center { min-width: 530px; }
+ table.twelve center { min-width: 580px; }
+
+ table.one .panel center { min-width: 10px; }
+ table.two .panel center { min-width: 60px; }
+ table.three .panel center { min-width: 110px; }
+ table.four .panel center { min-width: 160px; }
+ table.five .panel center { min-width: 210px; }
+ table.six .panel center { min-width: 260px; }
+ table.seven .panel center { min-width: 310px; }
+ table.eight .panel center { min-width: 360px; }
+ table.nine .panel center { min-width: 410px; }
+ table.ten .panel center { min-width: 460px; }
+ table.eleven .panel center { min-width: 510px; }
+ table.twelve .panel center { min-width: 560px; }
+
+ .body .columns td.one,
+ .body .column td.one { width: 8.333333%; }
+ .body .columns td.two,
+ .body .column td.two { width: 16.666666%; }
+ .body .columns td.three,
+ .body .column td.three { width: 25%; }
+ .body .columns td.four,
+ .body .column td.four { width: 33.333333%; }
+ .body .columns td.five,
+ .body .column td.five { width: 41.666666%; }
+ .body .columns td.six,
+ .body .column td.six { width: 50%; }
+ .body .columns td.seven,
+ .body .column td.seven { width: 58.333333%; }
+ .body .columns td.eight,
+ .body .column td.eight { width: 66.666666%; }
+ .body .columns td.nine,
+ .body .column td.nine { width: 75%; }
+ .body .columns td.ten,
+ .body .column td.ten { width: 83.333333%; }
+ .body .columns td.eleven,
+ .body .column td.eleven { width: 91.666666%; }
+ .body .columns td.twelve,
+ .body .column td.twelve { width: 100%; }
+
+ td.offset-by-one { padding-left: 50px; }
+ td.offset-by-two { padding-left: 100px; }
+ td.offset-by-three { padding-left: 150px; }
+ td.offset-by-four { padding-left: 200px; }
+ td.offset-by-five { padding-left: 250px; }
+ td.offset-by-six { padding-left: 300px; }
+ td.offset-by-seven { padding-left: 350px; }
+ td.offset-by-eight { padding-left: 400px; }
+ td.offset-by-nine { padding-left: 450px; }
+ td.offset-by-ten { padding-left: 500px; }
+ td.offset-by-eleven { padding-left: 550px; }
+
+ td.expander {
+ visibility: hidden;
+ width: 0px;
+ padding: 0 !important;
+ }
+
+ table.columns .text-pad,
+ table.column .text-pad {
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+
+ table.columns .left-text-pad,
+ table.columns .text-pad-left,
+ table.column .left-text-pad,
+ table.column .text-pad-left {
+ padding-left: 10px;
+ }
+
+ table.columns .right-text-pad,
+ table.columns .text-pad-right,
+ table.column .right-text-pad,
+ table.column .text-pad-right {
+ padding-right: 10px;
+ }
+
+ /* Block Grid */
+
+ .block-grid {
+ width: 100%;
+ max-width: 580px;
+ }
+
+ .block-grid td {
+ display: inline-block;
+ padding:10px;
+ }
+
+ .two-up td {
+ width:270px;
+ }
+
+ .three-up td {
+ width:173px;
+ }
+
+ .four-up td {
+ width:125px;
+ }
+
+ .five-up td {
+ width:96px;
+ }
+
+ .six-up td {
+ width:76px;
+ }
+
+ .seven-up td {
+ width:62px;
+ }
+
+ .eight-up td {
+ width:52px;
+ }
+
+ /* Alignment and Visibility Classes */
+
+ table.center, td.center {
+ text-align: center;
+ }
+
+ h1.center,
+ h2.center,
+ h3.center,
+ h4.center,
+ h5.center,
+ h6.center,
+ p.center {
+ text-align: center;
+ }
+
+ span.center {
+ display: block;
+ width: 100%;
+ text-align: center;
+ }
+
+ img.center {
+ margin: 0 auto;
+ float: none;
+ }
+
+ .show-for-small,
+ .hide-for-desktop {
+ display: none;
+ width:0;
+ mso-hide:all;
+ overflow:hidden;
+ }
+
+ .show-for-small *,
+ .hide-for-desktop * {
+ mso-hide:all;
+ }
+
+ /* Typography */
+
+ body, table.body, h1, h2, h3, h4, h5, h6, p, td {
+ color: #222222;
+ font-family: Helvetica, Arial, sans-serif;
+ font-weight: normal;
+ padding:0;
+ margin: 0;
+ text-align: left;
+ line-height: 1.3;
+ }
+
+ h1, h2, h3, h4, h5, h6 {
+ word-break: normal;
+ }
+
+ h1 {font-size: 40px;}
+ h2 {font-size: 36px;}
+ h3 {font-size: 32px;}
+ h4 {font-size: 28px;}
+ h5 {font-size: 24px;}
+ h6 {font-size: 20px;}
+ body, table.body, p, td {font-size: 14px;line-height:19px;}
+
+ p.lead, p.lede, p.leed {
+ font-size: 18px;
+ line-height:21px;
+ }
+
+ p {
+ margin-bottom: 10px;
+ }
+
+ small {
+ font-size: 10px;
+ }
+
+ a {
+ color: #2ba6cb;
+ text-decoration: none;
+ }
+
+ a:hover {
+ color: #2795b6 !important;
+ }
+
+ a:active {
+ color: #2795b6 !important;
+ }
+
+ a:visited {
+ color: #2ba6cb !important;
+ }
+
+ h1 a,
+ h2 a,
+ h3 a,
+ h4 a,
+ h5 a,
+ h6 a {
+ color: #2ba6cb;
+ }
+
+ h1 a:active,
+ h2 a:active,
+ h3 a:active,
+ h4 a:active,
+ h5 a:active,
+ h6 a:active {
+ color: #2ba6cb !important;
+ }
+
+ h1 a:visited,
+ h2 a:visited,
+ h3 a:visited,
+ h4 a:visited,
+ h5 a:visited,
+ h6 a:visited {
+ color: #2ba6cb !important;
+ }
+
+ /* Panels */
+
+ .panel {
+ background: #f2f2f2;
+ border: 1px solid #d9d9d9;
+ padding: 10px !important;
+ }
+
+ .sub-grid table {
+ width: 100%;
+ }
+
+ .sub-grid td.sub-columns {
+ padding-bottom: 0;
+ }
+
+ /* Buttons */
+
+ table.button,
+ table.tiny-button,
+ table.small-button,
+ table.medium-button,
+ table.large-button {
+ width: 100%;
+ overflow: hidden;
+ }
+
+ table.button td,
+ table.tiny-button td,
+ table.small-button td,
+ table.medium-button td,
+ table.large-button td {
+ display: block;
+ width: auto !important;
+ text-align: center;
+ background: #2ba6cb;
+ border: 1px solid #2284a1;
+ color: #ffffff;
+ padding: 8px 0;
+ line-height: initial !important;
+ }
+
+ table.tiny-button td {
+ padding: 5px 0;
+ }
+
+ table.small-button td {
+ padding: 8px 0;
+ }
+
+ table.medium-button td {
+ padding: 12px 0;
+ }
+
+ table.large-button td {
+ padding: 21px 0;
+ }
+
+ table.button td a,
+ table.tiny-button td a,
+ table.small-button td a,
+ table.medium-button td a,
+ table.large-button td a {
+ font-weight: bold;
+ text-decoration: none;
+ font-family: Helvetica, Arial, sans-serif;
+ color: #ffffff;
+ font-size: 16px;
+ display: block;
+ height: 100%;
+ width: 100%;
+ }
+
+ table.tiny-button td a {
+ font-size: 12px;
+ font-weight: normal;
+ }
+
+ table.small-button td a {
+ font-size: 16px;
+ }
+
+ table.medium-button td a {
+ font-size: 20px;
+ }
+
+ table.large-button td a {
+ font-size: 24px;
+ }
+
+ table.button:hover td,
+ table.button:visited td,
+ table.button:active td {
+ background: #2795b6 !important;
+ }
+
+ table.button:hover td a,
+ table.button:visited td a,
+ table.button:active td a {
+ color: #ffffff !important;
+ }
+
+ table.button:hover td,
+ table.tiny-button:hover td,
+ table.small-button:hover td,
+ table.medium-button:hover td,
+ table.large-button:hover td {
+ background: #2795b6 !important;
+ }
+
+ table.button:hover td a,
+ table.button:active td a,
+ table.button td a:visited,
+ table.tiny-button:hover td a,
+ table.tiny-button:active td a,
+ table.tiny-button td a:visited,
+ table.small-button:hover td a,
+ table.small-button:active td a,
+ table.small-button td a:visited,
+ table.medium-button:hover td a,
+ table.medium-button:active td a,
+ table.medium-button td a:visited,
+ table.large-button:hover td a,
+ table.large-button:active td a,
+ table.large-button td a:visited {
+ color: #ffffff !important;
+ }
+
+ table.secondary td {
+ background: #e9e9e9;
+ border-color: #d0d0d0;
+ color: #555555;
+ }
+
+ table.secondary td a {
+ color: #555555;
+ }
+
+ table.secondary:hover td {
+ background: #d0d0d0 !important;
+ color: #555555;
+ }
+
+ table.secondary:hover td a,
+ table.secondary td a:visited,
+ table.secondary:active td a {
+ color: #555555 !important;
+ }
+
+ table.success td {
+ background: #5da423;
+ border-color: #457a1a;
+ }
+
+ table.success:hover td {
+ background: #457a1a !important;
+ }
+
+ table.alert td {
+ background: #c60f13;
+ border-color: #970b0e;
+ }
+
+ table.alert:hover td {
+ background: #970b0e !important;
+ }
+
+ table.radius td {
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ }
+
+ table.round td {
+ -webkit-border-radius: 500px;
+ -moz-border-radius: 500px;
+ border-radius: 500px;
+ }
+
+ /* Outlook First */
+
+ body.outlook p {
+ display: inline !important;
+ }
+
+ /* Media Queries */
+
+ @media only screen and (max-width: 600px) {
+
+ table[class="body"] img {
+ max-width: auto !important;
+ max-height: auto !important;
+ }
+
+ table[class="body"] center {
+ min-width: 0 !important;
+ }
+
+ table[class="body"] .container {
+ width: 95% !important;
+ }
+
+ table[class="body"] .row {
+ width: 100% !important;
+ display: block !important;
+ }
+
+ table[class="body"] .wrapper {
+ display: block !important;
+ padding-right: 0 !important;
+ }
+
+ table[class="body"] .columns,
+ table[class="body"] .column {
+ table-layout: fixed !important;
+ float: none !important;
+ width: 100% !important;
+ padding-right: 0px !important;
+ padding-left: 0px !important;
+ display: block !important;
+ }
+
+ table[class="body"] .wrapper.first .columns,
+ table[class="body"] .wrapper.first .column {
+ display: table !important;
+ }
+
+ table[class="body"] table.columns td,
+ table[class="body"] table.column td {
+ width: 100% !important;
+ }
+
+ table[class="body"] .columns td.one,
+ table[class="body"] .column td.one { width: 8.333333% !important; }
+ table[class="body"] .columns td.two,
+ table[class="body"] .column td.two { width: 16.666666% !important; }
+ table[class="body"] .columns td.three,
+ table[class="body"] .column td.three { width: 25% !important; }
+ table[class="body"] .columns td.four,
+ table[class="body"] .column td.four { width: 33.333333% !important; }
+ table[class="body"] .columns td.five,
+ table[class="body"] .column td.five { width: 41.666666% !important; }
+ table[class="body"] .columns td.six,
+ table[class="body"] .column td.six { width: 50% !important; }
+ table[class="body"] .columns td.seven,
+ table[class="body"] .column td.seven { width: 58.333333% !important; }
+ table[class="body"] .columns td.eight,
+ table[class="body"] .column td.eight { width: 66.666666% !important; }
+ table[class="body"] .columns td.nine,
+ table[class="body"] .column td.nine { width: 75% !important; }
+ table[class="body"] .columns td.ten,
+ table[class="body"] .column td.ten { width: 83.333333% !important; }
+ table[class="body"] .columns td.eleven,
+ table[class="body"] .column td.eleven { width: 91.666666% !important; }
+ table[class="body"] .columns td.twelve,
+ table[class="body"] .column td.twelve { width: 100% !important; }
+
+ table[class="body"] td.offset-by-one,
+ table[class="body"] td.offset-by-two,
+ table[class="body"] td.offset-by-three,
+ table[class="body"] td.offset-by-four,
+ table[class="body"] td.offset-by-five,
+ table[class="body"] td.offset-by-six,
+ table[class="body"] td.offset-by-seven,
+ table[class="body"] td.offset-by-eight,
+ table[class="body"] td.offset-by-nine,
+ table[class="body"] td.offset-by-ten,
+ table[class="body"] td.offset-by-eleven {
+ padding-left: 0 !important;
+ }
+
+ table[class="body"] table.columns td.expander {
+ width: 1px !important;
+ }
+
+ table[class="body"] .right-text-pad,
+ table[class="body"] .text-pad-right {
+ padding-left: 10px !important;
+ }
+
+ table[class="body"] .left-text-pad,
+ table[class="body"] .text-pad-left {
+ padding-right: 10px !important;
+ }
+
+ table[class="body"] .hide-for-small,
+ table[class="body"] .show-for-desktop {
+ display: none !important;
+ }
+
+ table[class="body"] .show-for-small,
+ table[class="body"] .hide-for-desktop {
+ display : block !important;
+ width : auto !important;
+ overflow : visible !important;
+ }
+ }
+
+
+
+ table.columns .text-pad {
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+
+ table.columns . {
+ padding-left: 10px;
+ }
+
+ table.columns . {
+ padding-right: 10px;
+ }
+
+ @media only screen and (max-width: 600px) {
+
+ table[class="body"] . {
+ padding-left: 10px !important;
+ }
+
+ table[class="body"] . {
+ padding-right: 10px !important;
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+ div.emailteaser {
+ font-size: 1px;
+ color: #f2f2f2;
+ display: none !important;
+ mso-hide:all;
+ }
+ .container {
+ background-color: #FFFFFF;
+ }
+ img {
+ display: block;
+ height:auto !important;
+ max-height:auto !important;
+ width:100% !important;
+ max-width: 600px !important;
+ }
+ img.image-email_teaser_thumbnail,
+ img[class="image-email_teaser_thumbnail"] {
+ display: block;
+ height:auto !important;
+ max-height:130px !important;
+ width:100% !important;
+ max-width: 130px !important;
+ }
+
+ h1, h2, h3, h4, h5 {
+ mso-line-height-rule:exactly;
+ }
+
+ a {
+ color: #007BC8;
+ text-decoration: none;
+ }
+
+ a:hover {
+ color: #007BC8 !important;
+ }
+
+ a:active {
+ color: #007BC8 !important;
+ }
+
+ a:visited {
+ color: #007BC8 !important;
+ }
+
+ h1 a,
+ h2 a,
+ h3 a,
+ h4 a,
+ h5 a,
+ h6 a {
+ color: #007BC8;
+ }
+
+ h1 a:active,
+ h2 a:active,
+ h3 a:active,
+ h4 a:active,
+ h5 a:active,
+ h6 a:active {
+ color: #007BC8 !important;
+ }
+
+ h1 a:visited,
+ h2 a:visited,
+ h3 a:visited,
+ h4 a:visited,
+ h5 a:visited,
+ h6 a:visited {
+ color: #007BC8 !important;
+ }
+ body, table.body {
+ background-color:#f2f2f2;
+ }
+ body {
+ padding:0 0 40px;
+ }
+ .container {
+ background-color: #FFFFFF;
+ }
+
+ /* Newsletter Title & Logo */
+ .title,
+ .title td {
+ background-color:#000000;
+ color:#ffffff;
+ }
+ table.full {
+ width: 100%;
+ }
+ td.email-top {
+ padding:0 0 20px;
+ }
+ td.newsletter-logo-single {
+ padding:20px 10px 10px;
+ vertical-align: middle;
+ }
+ td.newsletter-logo-single img {
+ max-width:240px !important;
+ }
+ td.newsletter-name {
+ width:60%;
+ padding:40px 60px 20px 10px;
+ vertical-align: middle;
+ }
+ .title td.newsletter-name h1 {
+ color:#ffffff;
+ }
+ td.newsletter-logo {
+ width:40%;
+ padding:40px 10px 20px;
+ vertical-align: middle;
+ }
+ img#logo {
+ float:right;
+ }
+ /* Newsletter Issue & Weblink */
+ .title-bottom {
+ background-color: #000000;
+ height: 0px;
+ }
+ .issue-meta {
+ margin-top: -20px;
+ }
+ .issue {
+ background-color: #ffffff;
+ }
+ td.issue-date {
+ width:50%;
+ padding:10px;
+ color:#cccccc;
+ }
+ td.web-link {
+ width:50%;
+ padding:10px;
+ text-align: right;
+ }
+ td.web-link a {
+ font-size: 11px;
+ color:#cccccc !important;
+ }
+ td.web-link a:hover {
+ color:#ffffff !important;
+ }
+
+ .title td h1 {
+ color:#ffffff;
+ font-size: 20px;
+ font-weight:100;
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ hyphens: none;
+ margin:0;
+ }
+ /* Article List */
+ .article-list {
+ background-color: #fff;
+ padding: 10px;
+ }
+ /* Hero */
+ td.hero-image1 {
+ padding: 10px;
+ background-color: #FFFFFF;
+ }
+ .intro-image img {
+ float: none;
+ margin-bottom: 10px;
+ display: block;
+ }
+ /* Articles */
+ .content-top {
+ margin-top: -20px;
+ position: relative;
+ }
+ .content-top td.newsletter-sections {
+ padding-top: 10px;
+ background-color: #FFFFFF;
+ }
+ .article-section-title,
+ .article-section-link,
+ .article-content {
+ background-color: #FFFFFF;
+ }
+ .article-content {
+ background-color: #FFFFFF;
+ margin-bottom: 20px;
+ }
+ .content-padding {
+ clear: both;
+ padding: 10px 0;
+ }
+ .article-intro,
+ .article-intro td {
+ background-color: #FFFFFF;
+ }
+ .article-intro .content-padding {
+ clear:both;
+ padding: 10px;
+ }
+ h2.field-name-field-newsletter-section-title {
+ font-size:20px;
+ font-weight: bold;
+ margin-top:10px;
+ margin-bottom: 10px;
+ }
+ h3.feature-title {
+ font-size: 18px;
+ font-weight: bold;
+ }
+ h3.teaser-title {
+ font-size: 16px;
+ font-weight: bold;
+ }
+
+ /* Article Categories */
+ div.tags {
+ padding:5px 0;
+ }
+ div.tags a,
+ div.tags a:link,
+ div.tags a:visited {
+ background-color:#e7e7e7 !important;
+ color:#656565 !important;
+ padding:4px;
+ margin:0 5px 5px 0;
+ font-size:10px;
+ font-weight:bold;
+ text-transform:uppercase !important;
+ }
+ div.tags a:hover {
+ color:#cfb87c !important;
+ background-color:#000 !important;
+ }
+ /* Article More Link */
+ a.button,
+ a.button:link,
+ a.button:visited,
+ p.field-name-field-newsletter-more-link a {
+ background-color:#007BC8 !important;
+ color:#ffffff !important;
+ display:block;
+ padding:5px 10px;
+ font-weight:bold;
+ text-align:center;
+
+ }
+ a.button:hover,
+ a.button:active,
+ a.button:focus {
+ color:#fff !important;
+ background-color:#222222 !important;
+ }
+ a.button-large,
+ p.field-name-field-newsletter-more-link a.button {
+ font-size:16px !important;
+ padding:10px 10px !important;
+ }
+ p.field-name-field-newsletter-more-link a {
+
+ }
+
+ /* Ads/Promos */
+ .newsletter-ad-1 {
+ background-color: #FFFFFF;
+ margin-bottom: 20px;
+ }
+ .newsletter-ad-2 {
+ background-color: #FFFFFF;
+ }
+ .newsletter-ad-content {
+ padding: 10px;
+ }
+ .newsletter-ad td.wrapper {
+ padding: 0 !important;
+ }
+ /* Blocks */
+ .blocks {
+ background-color: #FFFFFF;
+ margin-bottom: 20px;
+ }
+ h2.field-name-field-newsletter-block-title {
+ font-size:18px;
+ font-weight: bold;
+ }
+
+ /* Footer */
+
+ .footer {
+ background-color: #000000;
+ }
+ .footer-content {
+ color:#ffffff;
+ text-align: center;
+ padding-top: 10px;
+ }
+ .footer-content p {
+ color:#ffffff;
+ text-align: center;
+ }
+ .footer-content a {
+ color:#cfb87c !important;
+ }
+ .footer-content a:hover {
+ color:#cfb87c !important;
+ }
+
+ /* Lists */
+
+ ul {
+ padding-left:17px;
+ }
+ .article-list {
+ background-color: #fcfcfc;
+ }
+ .article-list-content {
+ padding:10px;
+ }
+
+ .newsletter-footer p {
+ font-size: 12px;
+ }
diff --git a/themes/cuemail/css/framework.css b/themes/cuemail/css/framework.css
new file mode 100755
index 000000000..d2876cd85
--- /dev/null
+++ b/themes/cuemail/css/framework.css
@@ -0,0 +1,738 @@
+/**********************************************
+* Ink v1.0.5 - Copyright 2013 ZURB Inc *
+**********************************************/
+
+/* Client-specific Styles & Reset */
+
+/**********************************************
+ * Ink v1.0.5 - Copyright 2013 ZURB Inc *
+ **********************************************/
+
+/* Client-specific Styles and Reset */
+
+#outlook a {
+ padding:0;
+}
+
+body{
+ width:100% !important;
+ min-width: 100%;
+ -webkit-text-size-adjust:100%;
+ -ms-text-size-adjust:100%;
+ margin:0;
+ padding:0;
+}
+
+ /* .ExternalClass applies to Outlook.com (the artist formerly known as Hotmail) */
+
+.ExternalClass {
+ width:100%;
+}
+
+.ExternalClass,
+.ExternalClass p,
+.ExternalClass span,
+.ExternalClass font,
+.ExternalClass td,
+.ExternalClass div {
+ line-height: 100%;
+}
+
+#backgroundTable {
+ margin:0;
+ padding:0;
+ width:100% !important;
+ line-height: 100% !important;
+}
+
+img {
+ outline:none;
+ text-decoration:none;
+ -ms-interpolation-mode: bicubic;
+ width: auto;
+ max-width: 100%;
+ float: left;
+ clear: both;
+ display: block;
+ height:auto;
+}
+
+center {
+ width: 100%;
+ min-width: 580px;
+}
+
+a img {
+ border: none;
+}
+
+p {
+ margin: 0 0 0 10px;
+}
+
+table {
+ border-spacing: 0;
+ border-collapse: collapse;
+}
+
+td {
+ word-break: break-word;
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ hyphens: none;
+ border-collapse: collapse !important;
+}
+
+table, tr, td {
+ padding: 0;
+ vertical-align: top;
+ text-align: left;
+}
+
+hr {
+ color: #d9d9d9;
+ background-color: #d9d9d9;
+ height: 1px;
+ border: none;
+}
+
+/* Responsive Grid */
+
+table.body {
+ height: 100%;
+ width: 100%;
+}
+
+table.container {
+ width: 580px;
+ margin: 0 auto;
+ text-align: inherit;
+}
+
+table.row {
+ padding: 0px;
+ width: 100%;
+ position: relative;
+}
+
+table.container table.row {
+ display: block;
+}
+
+td.wrapper {
+ padding: 10px 20px 0px 0px;
+ position: relative;
+}
+
+table.columns,
+table.column {
+ margin: 0 auto;
+}
+
+table.columns td,
+table.column td {
+ padding: 0px 0px 10px;
+}
+
+table.columns td.sub-columns,
+table.column td.sub-columns,
+table.columns td.sub-column,
+table.column td.sub-column {
+ padding-right: 10px;
+}
+
+td.sub-column, td.sub-columns {
+ min-width: 0px;
+}
+
+table.row td.last,
+table.container td.last {
+ padding-right: 0px;
+}
+
+table.one { width: 30px; }
+table.two { width: 80px; }
+table.three { width: 130px; }
+table.four { width: 180px; }
+table.five { width: 230px; }
+table.six { width: 280px; }
+table.seven { width: 330px; }
+table.eight { width: 380px; }
+table.nine { width: 430px; }
+table.ten { width: 480px; }
+table.eleven { width: 530px; }
+table.twelve { width: 580px; }
+
+table.one center { min-width: 30px; }
+table.two center { min-width: 80px; }
+table.three center { min-width: 130px; }
+table.four center { min-width: 180px; }
+table.five center { min-width: 230px; }
+table.six center { min-width: 280px; }
+table.seven center { min-width: 330px; }
+table.eight center { min-width: 380px; }
+table.nine center { min-width: 430px; }
+table.ten center { min-width: 480px; }
+table.eleven center { min-width: 530px; }
+table.twelve center { min-width: 580px; }
+
+table.one .panel center { min-width: 10px; }
+table.two .panel center { min-width: 60px; }
+table.three .panel center { min-width: 110px; }
+table.four .panel center { min-width: 160px; }
+table.five .panel center { min-width: 210px; }
+table.six .panel center { min-width: 260px; }
+table.seven .panel center { min-width: 310px; }
+table.eight .panel center { min-width: 360px; }
+table.nine .panel center { min-width: 410px; }
+table.ten .panel center { min-width: 460px; }
+table.eleven .panel center { min-width: 510px; }
+table.twelve .panel center { min-width: 560px; }
+
+.body .columns td.one,
+.body .column td.one { width: 8.333333%; }
+.body .columns td.two,
+.body .column td.two { width: 16.666666%; }
+.body .columns td.three,
+.body .column td.three { width: 25%; }
+.body .columns td.four,
+.body .column td.four { width: 33.333333%; }
+.body .columns td.five,
+.body .column td.five { width: 41.666666%; }
+.body .columns td.six,
+.body .column td.six { width: 50%; }
+.body .columns td.seven,
+.body .column td.seven { width: 58.333333%; }
+.body .columns td.eight,
+.body .column td.eight { width: 66.666666%; }
+.body .columns td.nine,
+.body .column td.nine { width: 75%; }
+.body .columns td.ten,
+.body .column td.ten { width: 83.333333%; }
+.body .columns td.eleven,
+.body .column td.eleven { width: 91.666666%; }
+.body .columns td.twelve,
+.body .column td.twelve { width: 100%; }
+
+td.offset-by-one { padding-left: 50px; }
+td.offset-by-two { padding-left: 100px; }
+td.offset-by-three { padding-left: 150px; }
+td.offset-by-four { padding-left: 200px; }
+td.offset-by-five { padding-left: 250px; }
+td.offset-by-six { padding-left: 300px; }
+td.offset-by-seven { padding-left: 350px; }
+td.offset-by-eight { padding-left: 400px; }
+td.offset-by-nine { padding-left: 450px; }
+td.offset-by-ten { padding-left: 500px; }
+td.offset-by-eleven { padding-left: 550px; }
+
+td.expander {
+ visibility: hidden;
+ width: 0px;
+ padding: 0 !important;
+}
+
+table.columns .text-pad,
+table.column .text-pad {
+ padding-left: 10px;
+ padding-right: 10px;
+}
+
+table.columns .left-text-pad,
+table.columns .text-pad-left,
+table.column .left-text-pad,
+table.column .text-pad-left {
+ padding-left: 10px;
+}
+
+table.columns .right-text-pad,
+table.columns .text-pad-right,
+table.column .right-text-pad,
+table.column .text-pad-right {
+ padding-right: 10px;
+}
+
+/* Block Grid */
+
+.block-grid {
+ width: 100%;
+ max-width: 580px;
+}
+
+.block-grid td {
+ display: inline-block;
+ padding:10px;
+}
+
+.two-up td {
+ width:270px;
+}
+
+.three-up td {
+ width:173px;
+}
+
+.four-up td {
+ width:125px;
+}
+
+.five-up td {
+ width:96px;
+}
+
+.six-up td {
+ width:76px;
+}
+
+.seven-up td {
+ width:62px;
+}
+
+.eight-up td {
+ width:52px;
+}
+
+/* Alignment and Visibility Classes */
+
+table.center, td.center {
+ text-align: center;
+}
+
+h1.center,
+h2.center,
+h3.center,
+h4.center,
+h5.center,
+h6.center,
+p.center {
+ text-align: center;
+}
+
+span.center {
+ display: block;
+ width: 100%;
+ text-align: center;
+}
+
+img.center {
+ margin: 0 auto;
+ float: none;
+}
+
+.show-for-small,
+.hide-for-desktop {
+ display: none;
+ width:0;
+ mso-hide:all;
+ overflow:hidden;
+}
+
+.show-for-small *,
+.hide-for-desktop * {
+ mso-hide:all;
+}
+
+/* Typography */
+
+body, table.body, h1, h2, h3, h4, h5, h6, p, td {
+ color: #222222;
+ font-family: Helvetica, Arial, sans-serif;
+ font-weight: normal;
+ padding:0;
+ margin: 0;
+ text-align: left;
+ line-height: 1.3;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ word-break: normal;
+}
+
+h1 {font-size: 40px;}
+h2 {font-size: 36px;}
+h3 {font-size: 32px;}
+h4 {font-size: 28px;}
+h5 {font-size: 24px;}
+h6 {font-size: 20px;}
+body, table.body, p, td {font-size: 14px;line-height:19px;}
+
+p.lead, p.lede, p.leed {
+ font-size: 18px;
+ line-height:21px;
+}
+
+p {
+ margin-bottom: 10px;
+}
+
+small {
+ font-size: 10px;
+}
+
+a {
+ color: #2ba6cb;
+ text-decoration: none;
+}
+
+a:hover {
+ color: #2795b6 !important;
+}
+
+a:active {
+ color: #2795b6 !important;
+}
+
+a:visited {
+ color: #2ba6cb !important;
+}
+
+h1 a,
+h2 a,
+h3 a,
+h4 a,
+h5 a,
+h6 a {
+ color: #2ba6cb;
+}
+
+h1 a:active,
+h2 a:active,
+h3 a:active,
+h4 a:active,
+h5 a:active,
+h6 a:active {
+ color: #2ba6cb !important;
+}
+
+h1 a:visited,
+h2 a:visited,
+h3 a:visited,
+h4 a:visited,
+h5 a:visited,
+h6 a:visited {
+ color: #2ba6cb !important;
+}
+
+/* Panels */
+
+.panel {
+ background: #f2f2f2;
+ border: 1px solid #d9d9d9;
+ padding: 10px !important;
+}
+
+.sub-grid table {
+ width: 100%;
+}
+
+.sub-grid td.sub-columns {
+ padding-bottom: 0;
+}
+
+/* Buttons */
+
+table.button,
+table.tiny-button,
+table.small-button,
+table.medium-button,
+table.large-button {
+ width: 100%;
+ overflow: hidden;
+}
+
+table.button td,
+table.tiny-button td,
+table.small-button td,
+table.medium-button td,
+table.large-button td {
+ display: block;
+ width: auto !important;
+ text-align: center;
+ background: #2ba6cb;
+ border: 1px solid #2284a1;
+ color: #ffffff;
+ padding: 8px 0;
+ line-height: initial !important;
+}
+
+table.tiny-button td {
+ padding: 5px 0;
+}
+
+table.small-button td {
+ padding: 8px 0;
+}
+
+table.medium-button td {
+ padding: 12px 0;
+}
+
+table.large-button td {
+ padding: 21px 0;
+}
+
+table.button td a,
+table.tiny-button td a,
+table.small-button td a,
+table.medium-button td a,
+table.large-button td a {
+ font-weight: bold;
+ text-decoration: none;
+ font-family: Helvetica, Arial, sans-serif;
+ color: #ffffff;
+ font-size: 16px;
+ display: block;
+ height: 100%;
+ width: 100%;
+}
+
+table.tiny-button td a {
+ font-size: 12px;
+ font-weight: normal;
+}
+
+table.small-button td a {
+ font-size: 16px;
+}
+
+table.medium-button td a {
+ font-size: 20px;
+}
+
+table.large-button td a {
+ font-size: 24px;
+}
+
+table.button:hover td,
+table.button:visited td,
+table.button:active td {
+ background: #2795b6 !important;
+}
+
+table.button:hover td a,
+table.button:visited td a,
+table.button:active td a {
+ color: #ffffff !important;
+}
+
+table.button:hover td,
+table.tiny-button:hover td,
+table.small-button:hover td,
+table.medium-button:hover td,
+table.large-button:hover td {
+ background: #2795b6 !important;
+}
+
+table.button:hover td a,
+table.button:active td a,
+table.button td a:visited,
+table.tiny-button:hover td a,
+table.tiny-button:active td a,
+table.tiny-button td a:visited,
+table.small-button:hover td a,
+table.small-button:active td a,
+table.small-button td a:visited,
+table.medium-button:hover td a,
+table.medium-button:active td a,
+table.medium-button td a:visited,
+table.large-button:hover td a,
+table.large-button:active td a,
+table.large-button td a:visited {
+ color: #ffffff !important;
+}
+
+table.secondary td {
+ background: #e9e9e9;
+ border-color: #d0d0d0;
+ color: #555555;
+}
+
+table.secondary td a {
+ color: #555555;
+}
+
+table.secondary:hover td {
+ background: #d0d0d0 !important;
+ color: #555555;
+}
+
+table.secondary:hover td a,
+table.secondary td a:visited,
+table.secondary:active td a {
+ color: #555555 !important;
+}
+
+table.success td {
+ background: #5da423;
+ border-color: #457a1a;
+}
+
+table.success:hover td {
+ background: #457a1a !important;
+}
+
+table.alert td {
+ background: #c60f13;
+ border-color: #970b0e;
+}
+
+table.alert:hover td {
+ background: #970b0e !important;
+}
+
+table.radius td {
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+table.round td {
+ -webkit-border-radius: 500px;
+ -moz-border-radius: 500px;
+ border-radius: 500px;
+}
+
+/* Outlook First */
+
+body.outlook p {
+ display: inline !important;
+}
+
+/* Media Queries */
+
+@media only screen and (max-width: 600px) {
+
+ table[class="body"] img {
+ max-width: auto !important;
+ max-height: auto !important;
+ }
+
+ table[class="body"] center {
+ min-width: 0 !important;
+ }
+
+ table[class="body"] .container {
+ width: 95% !important;
+ }
+
+ table[class="body"] .row {
+ width: 100% !important;
+ display: block !important;
+ }
+
+ table[class="body"] .wrapper {
+ display: block !important;
+ padding-right: 0 !important;
+ }
+
+ table[class="body"] .columns,
+ table[class="body"] .column {
+ table-layout: fixed !important;
+ float: none !important;
+ width: 100% !important;
+ padding-right: 0px !important;
+ padding-left: 0px !important;
+ display: block !important;
+ }
+
+ table[class="body"] .wrapper.first .columns,
+ table[class="body"] .wrapper.first .column {
+ display: table !important;
+ }
+
+ table[class="body"] table.columns td,
+ table[class="body"] table.column td {
+ width: 100% !important;
+ }
+
+ table[class="body"] .columns td.one,
+ table[class="body"] .column td.one { width: 8.333333% !important; }
+ table[class="body"] .columns td.two,
+ table[class="body"] .column td.two { width: 16.666666% !important; }
+ table[class="body"] .columns td.three,
+ table[class="body"] .column td.three { width: 25% !important; }
+ table[class="body"] .columns td.four,
+ table[class="body"] .column td.four { width: 33.333333% !important; }
+ table[class="body"] .columns td.five,
+ table[class="body"] .column td.five { width: 41.666666% !important; }
+ table[class="body"] .columns td.six,
+ table[class="body"] .column td.six { width: 50% !important; }
+ table[class="body"] .columns td.seven,
+ table[class="body"] .column td.seven { width: 58.333333% !important; }
+ table[class="body"] .columns td.eight,
+ table[class="body"] .column td.eight { width: 66.666666% !important; }
+ table[class="body"] .columns td.nine,
+ table[class="body"] .column td.nine { width: 75% !important; }
+ table[class="body"] .columns td.ten,
+ table[class="body"] .column td.ten { width: 83.333333% !important; }
+ table[class="body"] .columns td.eleven,
+ table[class="body"] .column td.eleven { width: 91.666666% !important; }
+ table[class="body"] .columns td.twelve,
+ table[class="body"] .column td.twelve { width: 100% !important; }
+
+ table[class="body"] td.offset-by-one,
+ table[class="body"] td.offset-by-two,
+ table[class="body"] td.offset-by-three,
+ table[class="body"] td.offset-by-four,
+ table[class="body"] td.offset-by-five,
+ table[class="body"] td.offset-by-six,
+ table[class="body"] td.offset-by-seven,
+ table[class="body"] td.offset-by-eight,
+ table[class="body"] td.offset-by-nine,
+ table[class="body"] td.offset-by-ten,
+ table[class="body"] td.offset-by-eleven {
+ padding-left: 0 !important;
+ }
+
+ table[class="body"] table.columns td.expander {
+ width: 1px !important;
+ }
+
+ table[class="body"] .right-text-pad,
+ table[class="body"] .text-pad-right {
+ padding-left: 10px !important;
+ }
+
+ table[class="body"] .left-text-pad,
+ table[class="body"] .text-pad-left {
+ padding-right: 10px !important;
+ }
+
+ table[class="body"] .hide-for-small,
+ table[class="body"] .show-for-desktop {
+ display: none !important;
+ }
+
+ table[class="body"] .show-for-small,
+ table[class="body"] .hide-for-desktop {
+ display : block !important;
+ width : auto !important;
+ overflow : visible !important;
+ }
+}
+
+
+
+table.columns .text-pad {
+ padding-left: 10px;
+ padding-right: 10px;
+}
+
+table.columns . {
+ padding-left: 10px;
+}
+
+table.columns . {
+ padding-right: 10px;
+}
+
+@media only screen and (max-width: 600px) {
+
+ table[class="body"] . {
+ padding-left: 10px !important;
+ }
+
+ table[class="body"] . {
+ padding-right: 10px !important;
+ }
+}
diff --git a/themes/cuemail/css/global.css b/themes/cuemail/css/global.css
new file mode 100755
index 000000000..831a0f557
--- /dev/null
+++ b/themes/cuemail/css/global.css
@@ -0,0 +1,146 @@
+/* Colors */
+/* CUSTOM STYLES */
+div.emailteaser { font-size: 1px; display: none !important; mso-hide: all; height: 1px !important; overflow: hidden !important; }
+
+.container img { display: block; height: auto !important; max-height: auto !important; width: 100% !important; max-width: 600px !important; }
+
+img.image-email_teaser_thumbnail, img[class="image-email_teaser_thumbnail"] { display: block; height: auto !important; max-height: 130px !important; width: 100% !important; max-width: 130px !important; }
+
+img.image-email_feature_thumbnail, img[class="image-email_feature_thumbnail"] { display: block; }
+
+h1, h2, h3, h4, h5 { mso-line-height-rule: exactly; }
+
+a { color: #007bc8; text-decoration: none; }
+
+a:hover { color: #007bc8 !important; }
+
+a:active { color: #007bc8 !important; }
+
+a:visited { color: #007bc8 !important; }
+
+h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { color: #007bc8; }
+
+h1 a:active, h2 a:active, h3 a:active, h4 a:active, h5 a:active, h6 a:active { color: #007bc8 !important; }
+
+h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited { color: #007bc8 !important; }
+
+body { padding: 0 0 40px; }
+
+/* Newsletter Title & Logo */
+table.full { width: 100%; }
+
+td.newsletter-logo-single { padding: 20px 10px 10px; vertical-align: middle; }
+
+td.newsletter-logo-single img { max-width: 240px !important; }
+
+td.newsletter-name { width: 60%; padding: 40px 60px 20px 10px; vertical-align: middle; }
+
+td.newsletter-logo { width: 40%; padding: 40px 10px 20px; vertical-align: middle; }
+
+img#logo { float: right; }
+
+/* Newsletter Issue & Weblink */
+.title-bottom { height: 0px; }
+
+.issue-meta { margin-top: -20px; }
+
+td.issue-date { width: 50%; padding: 10px; }
+
+td.web-link { width: 50%; padding: 10px; text-align: right; }
+
+td.web-link a { font-size: 11px; }
+
+.title td h1 { font-size: 20px; font-weight: 100; -webkit-hyphens: none; -moz-hyphens: none; hyphens: none; margin: 0; }
+
+/* Article List */
+.article-list { padding: 10px; }
+
+/* Hero */
+.intro-image img { float: none; display: block; }
+
+/* Articles */
+.content-top td.newsletter-sections { padding-top: 10px; }
+
+.content-padding { clear: both; padding: 0px 0; }
+
+.cell-padding { padding: 10px; }
+
+.padding-top { padding-top: 10px; }
+
+.padding-bottom { padding-bottom: 20px; }
+
+.article-intro .content-padding { clear: both; padding: 0px; }
+
+h2, h2.field-name-field-newsletter-section-title { font-size: 20px; font-weight: bold; margin-top: 10px; margin-bottom: 10px; }
+
+h2.field-name-field-newsletter-section-title { margin-top: 0; margin-bottom: 0; }
+
+h3.feature-title { font-size: 18px; font-weight: bold; margin-bottom: 5px; }
+
+h3.teaser-title { font-size: 18px; font-weight: bold; margin-bottom: 5px; }
+
+h3 { font-size: 18px; margin-bottom: 10px; font-weight: bold; }
+
+h4 { font-size: 16px; margin-bottom: 10px; font-weight: bold; }
+
+h5 { font-size: 15px; margin-bottom: 10px; font-weight: bold; }
+
+h6 { font-size: 14px; margin-bottom: 10px; font-weight: bold; }
+
+p.supersize { font-size: 32px; font-weight: bold; margin: 10px 0; line-height: 1.3; }
+
+p.hero { font-size: 24px; font-weight: bold; margin: 10px 0; line-height: 1.3; }
+
+p.lead { font-size: 18px; font-weight: bold; margin: 10px 0; line-height: 1.3; }
+
+/* Article Categories */
+table.columns td.tags, table.column td.tags { padding: 0 0 5px 0; }
+table.columns td.tags p, table.column td.tags p { margin: 0; margin-bottom: 0; }
+
+td.tags a, td.tags a:link, td.tags a:visited { background-color: #e7e7e7 !important; color: #656565 !important; border-color: #e7e7e7; border-style: solid; border-width: 4px; margin: 0 5px 5px 0; font-size: 10px; font-weight: bold; text-transform: uppercase !important; }
+
+td.tags a:active, td.tags a:hover { color: #cfb87c !important; background-color: #000000 !important; border-color: black; }
+
+/* Article More Link */
+a.button, p.field-name-field-newsletter-more-link a { background-color: #007bc8; color: #FFFFFF; display: inline-block; font-weight: bold; text-align: center; border-color: #007bc8; border-style: solid; border-top-width: 5px; border-bottom-width: 5px; border-left-width: 10px; border-right-width: 10px; }
+a.button:visited, p.field-name-field-newsletter-more-link a:visited { color: #FFFFFF !important; background-color: #007bc8 !important; }
+
+a.button-full { display: block !important; }
+
+a.button:hover, a.button:active, a.button:focus, p.field-name-field-newsletter-more-link a:hover, p.field-name-field-newsletter-more-link a:active, p.field-name-field-newsletter-more-link a:focus { color: #FFFFFF !important; background-color: #222222 !important; border-color: #222222 !important; }
+
+a.button-large { font-size: 16px !important; border-color: #007bc8; border-style: solid; border-top-width: 10px; border-bottom-width: 10px; border-left-width: 10px; border-right-width: 10px; }
+
+/* Ads/Promos */
+.newsletter-ad-1 { margin-bottom: 20px; }
+
+.newsletter-ad-content { padding: 10px; }
+
+.newsletter-ad td.wrapper { padding: 0 !important; }
+
+/* Blocks */
+.blocks { margin-bottom: 20px; }
+
+h2.field-name-field-newsletter-block-title { font-size: 20px; font-weight: bold; }
+
+/* Footer */
+.footer-content { text-align: center; padding-top: 10px; }
+
+.footer-content p { text-align: center; }
+
+/* Lists */
+ul { padding-left: 17px; }
+
+.article-list-content { padding: 10px; }
+
+.newsletter-footer p { font-size: 12px; }
+
+.open-counter img { width: 1px !important; height: 1px !important; }
+
+p:empty, td:empty { display: none !important; }
+
+.article-teaser-border { border-bottom: 1px solid #e7e7e7; display: block; margin: 0 10px 20px; }
+
+/* Social Links */
+.social-links { text-align: center; width: 100%; padding: 10px 0; }
+.social-links img { width: 24px !important; height: 24px !important; display: inline-block !important; float: none; margin: 5px; }
diff --git a/themes/cuemail/css/responsive.css b/themes/cuemail/css/responsive.css
new file mode 100755
index 000000000..484b9858f
--- /dev/null
+++ b/themes/cuemail/css/responsive.css
@@ -0,0 +1,5 @@
+/* Responsive Styles */
+@media only screen and (max-width: 600px) { body { padding: 0px !important; }
+ .title td h1 { font-size: 21px !important; word-break: normal; }
+ .ad img { width: 100%; height: auto; }
+ a.button, a.button:link, a.button:visited, p.field-name-field-newsletter-more-link a { display: block !important; } }
diff --git a/themes/cuemail/cuemail.info b/themes/cuemail/cuemail.info
new file mode 100755
index 000000000..cad803f36
--- /dev/null
+++ b/themes/cuemail/cuemail.info
@@ -0,0 +1,7 @@
+name = CU Email Newsletter
+description = Theme for exporting content for email
+screenshot = images/screenshot.png
+core = 7.x
+engine = phptemplate
+version = 7.x-1.2
+regions[content] = Content
diff --git a/themes/cuemail/images/ad-1.jpg b/themes/cuemail/images/ad-1.jpg
new file mode 100755
index 000000000..b5111d3d2
Binary files /dev/null and b/themes/cuemail/images/ad-1.jpg differ
diff --git a/themes/cuemail/images/ad-2.jpg b/themes/cuemail/images/ad-2.jpg
new file mode 100755
index 000000000..cb7f48cda
Binary files /dev/null and b/themes/cuemail/images/ad-2.jpg differ
diff --git a/themes/cuemail/images/banner_720x300.gif b/themes/cuemail/images/banner_720x300.gif
new file mode 100755
index 000000000..20b9917b4
Binary files /dev/null and b/themes/cuemail/images/banner_720x300.gif differ
diff --git a/themes/cuemail/images/cu-black.gif b/themes/cuemail/images/cu-black.gif
new file mode 100755
index 000000000..0e4c35750
Binary files /dev/null and b/themes/cuemail/images/cu-black.gif differ
diff --git a/themes/cuemail/images/cu-header-black.gif b/themes/cuemail/images/cu-header-black.gif
new file mode 100755
index 000000000..45e593f93
Binary files /dev/null and b/themes/cuemail/images/cu-header-black.gif differ
diff --git a/themes/cuemail/images/cu-header-light.gif b/themes/cuemail/images/cu-header-light.gif
new file mode 100755
index 000000000..e806698a7
Binary files /dev/null and b/themes/cuemail/images/cu-header-light.gif differ
diff --git a/themes/cuemail/images/cu-header-light2.gif b/themes/cuemail/images/cu-header-light2.gif
new file mode 100755
index 000000000..df8d537a9
Binary files /dev/null and b/themes/cuemail/images/cu-header-light2.gif differ
diff --git a/themes/cuemail/images/cu-logo-200w.gif b/themes/cuemail/images/cu-logo-200w.gif
new file mode 100755
index 000000000..cb977bf98
Binary files /dev/null and b/themes/cuemail/images/cu-logo-200w.gif differ
diff --git a/themes/cuemail/images/cu.gif b/themes/cuemail/images/cu.gif
new file mode 100755
index 000000000..c1fa03fea
Binary files /dev/null and b/themes/cuemail/images/cu.gif differ
diff --git a/themes/cuemail/images/intro.jpg b/themes/cuemail/images/intro.jpg
new file mode 100755
index 000000000..1884b591a
Binary files /dev/null and b/themes/cuemail/images/intro.jpg differ
diff --git a/themes/cuemail/images/logo-black-2x.gif b/themes/cuemail/images/logo-black-2x.gif
new file mode 100755
index 000000000..61a74cb58
Binary files /dev/null and b/themes/cuemail/images/logo-black-2x.gif differ
diff --git a/themes/cuemail/images/logo-black.gif b/themes/cuemail/images/logo-black.gif
new file mode 100755
index 000000000..61b930337
Binary files /dev/null and b/themes/cuemail/images/logo-black.gif differ
diff --git a/themes/cuemail/images/logo-white-2x.gif b/themes/cuemail/images/logo-white-2x.gif
new file mode 100755
index 000000000..1a03e15fa
Binary files /dev/null and b/themes/cuemail/images/logo-white-2x.gif differ
diff --git a/themes/cuemail/images/logo-white.gif b/themes/cuemail/images/logo-white.gif
new file mode 100755
index 000000000..e54c4f32b
Binary files /dev/null and b/themes/cuemail/images/logo-white.gif differ
diff --git a/themes/cuemail/images/today-header.gif b/themes/cuemail/images/today-header.gif
new file mode 100755
index 000000000..e2aae26c7
Binary files /dev/null and b/themes/cuemail/images/today-header.gif differ
diff --git a/themes/cuemail/scss/design-01.scss b/themes/cuemail/scss/design-01.scss
new file mode 100755
index 000000000..7d00389b3
--- /dev/null
+++ b/themes/cuemail/scss/design-01.scss
@@ -0,0 +1,121 @@
+@import "modules/_global.scss";
+
+body, table.body {
+ background-color:#f2f2f2;
+}
+.container {
+ background-color: #FFFFFF;
+}
+/* Newsletter Title & Logo */
+.title,
+.title td {
+ // Design
+ background-color:#000000;
+ color:#ffffff;
+}
+.title td.newsletter-name h1 {
+ // Design
+ color:#ffffff;
+}
+/* Newsletter Issue & Weblink */
+.title-bottom {
+ // Design
+ background-color: #000000;
+}
+.issue {
+ // Design
+ background-color: #ffffff;
+}
+td.issue-date {
+ // Design
+ color:#cccccc;
+}
+td.web-link a {
+ // Design
+ color:#cccccc;
+ &:visited,
+ &:active {
+ color:#cccccc !important;
+ }
+}
+td.web-link a:hover {
+ // Design
+ color:#ffffff !important;
+}
+.title td h1 {
+ // Design
+ color:#ffffff;
+}
+td.email-top {
+ padding:0 0 20px;
+}
+/* Article List */
+.article-list {
+ // Design
+ background-color: #fff;
+}
+/* Articles */
+.content-top {
+ margin-top: -20px;
+ position: relative;
+}
+.content-top td.newsletter-sections {
+ padding-top: 10px;
+ // Design
+ background-color: #FFFFFF;
+}
+.article-section-title,
+.article-section-link,
+.article-content {
+ // Design
+ background-color: #FFFFFF;
+}
+.article-content {
+ // Design
+ background-color: #FFFFFF;
+}
+.article-intro,
+.article-intro td {
+ // Design
+ background-color: #FFFFFF;
+}
+/* Ads/Promos */
+.newsletter-ad-1 {
+ // Design
+ background-color: #FFFFFF;
+}
+.newsletter-ad-2 {
+ // Design
+ background-color: #FFFFFF;
+}
+/* Blocks */
+.blocks {
+ // Design
+ background-color: #FFFFFF;
+}
+/* Footer */
+.footer {
+ // Design
+ background-color: #000000;
+}
+.footer-content {
+ // Design
+ color:#FFFFFF;
+}
+.footer-content p {
+ // Design
+ color:#FFFFFF;
+}
+.footer-content a {
+ // Design
+ color:$gold;
+ &:link,
+ &:visited,
+ &:active {
+ color:$gold !important;
+ }
+}
+.footer-content a:hover {
+ // Design
+ color:#FFFFFF !important;
+}
diff --git a/themes/cuemail/scss/design-02.scss b/themes/cuemail/scss/design-02.scss
new file mode 100755
index 000000000..1ad597c42
--- /dev/null
+++ b/themes/cuemail/scss/design-02.scss
@@ -0,0 +1,119 @@
+@import "modules/_global.scss";
+
+body, table.body {
+ background-color:#FFFFFF;
+}
+.container {
+ background-color: #FFFFFF;
+}
+/* Newsletter Title & Logo */
+.title,
+.title td {
+ // Design
+ background-color:#FFFFFF;
+ color:#000000;
+}
+.title td.newsletter-name h1 {
+ // Design
+ color:#000000;
+}
+/* Newsletter Issue & Weblink */
+.title-bottom {
+ // Design
+ background-color: #000000;
+}
+.issue {
+ // Design
+ background-color: #ffffff;
+}
+td.issue-date {
+ // Design
+ color:#757575;
+}
+td.web-link a {
+ // Design
+ color:#757575;
+ &:link,
+ &:visited,
+ &:active {
+ color: #757575 !important;
+ }
+}
+td.web-link a:hover {
+ // Design
+ color:#000000 !important;
+}
+.title td h1 {
+ // Design
+ color:#000000;
+}
+/* Article List */
+.article-list {
+ // Design
+ background-color: #fff;
+}
+/* Articles */
+.content-top td.newsletter-sections {
+ padding-top: 10px;
+ // Design
+ background-color: #FFFFFF;
+}
+.article-section-title,
+.article-section-link,
+.article-content {
+ // Design
+ background-color: #FFFFFF;
+}
+.article-content {
+ // Design
+ background-color: #FFFFFF;
+}
+.article-intro,
+.article-intro td {
+ // Design
+ background-color: #FFFFFF;
+}
+/* Ads/Promos */
+.newsletter-ad-1 {
+ // Design
+ background-color: #FFFFFF;
+}
+.newsletter-ad-2 {
+ // Design
+ background-color: #FFFFFF;
+}
+/* Blocks */
+.blocks {
+ // Design
+ background-color: #FFFFFF;
+}
+
+/* Footer */
+.email-footer {
+ border-top:1px solid #e7e7e7;
+}
+.footer {
+ // Design
+ background-color: #FFFFFF;
+}
+.footer-content {
+ // Design
+ color:#000000;
+}
+.footer-content p {
+ // Design
+ color:#000000;
+}
+.footer-content a {
+ // Design
+ color:$link;
+ &:link,
+ &:visited,
+ &:active {
+ color:$link !important;
+ }
+}
+.footer-content a:hover {
+ // Design
+ color:$link !important;
+}
diff --git a/themes/cuemail/scss/design-03.scss b/themes/cuemail/scss/design-03.scss
new file mode 100755
index 000000000..0fcb19fa2
--- /dev/null
+++ b/themes/cuemail/scss/design-03.scss
@@ -0,0 +1,32 @@
+body {
+ background-color: #E9E9E9;
+}
+table.body {
+ max-width:580px !important;
+ margin:0 auto;
+ background-color: #FFFFFF !important;
+}
+.email-blocks {
+ background-color:#f2f2f2;
+}
+.blocks td {
+ padding-top:10px;
+}
+.hero-image .content-padding {
+ padding: 0px;
+ .intro-text {
+ padding: 0 10px;
+ }
+}
+.article-content.odd1 {
+ background-color:#f2f2f2;
+ .text-pad {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ }
+}
+.article-teaser-border {
+ border-bottom:1px solid #e7e7e7;
+ display:block;
+ margin:0 10px 20px;
+}
diff --git a/themes/cuemail/scss/design-04.scss b/themes/cuemail/scss/design-04.scss
new file mode 100755
index 000000000..051bb4139
--- /dev/null
+++ b/themes/cuemail/scss/design-04.scss
@@ -0,0 +1,131 @@
+@import "modules/_global.scss";
+
+body, table.body {
+ background-color:#000000;
+}
+.container {
+ background-color: #FFFFFF;
+}
+/* Newsletter Title & Logo */
+.title,
+.title td {
+ // Design
+ background-color:#000000;
+ color:#ffffff;
+}
+.title td.newsletter-name h1 {
+ // Design
+ color:#ffffff;
+}
+/* Newsletter Issue & Weblink */
+.title-bottom {
+ // Design
+ background-color: #000000;
+}
+.issue {
+ // Design
+ background-color: #ffffff;
+}
+td.issue-date {
+ // Design
+ color:#cccccc;
+}
+td.web-link a {
+ // Design
+ color:#cccccc;
+ &:link,
+ &:visited,
+ &:active {
+ color: #cccccc !important;
+ }
+}
+td.web-link a:hover {
+ // Design
+ color:#ffffff !important;
+}
+.title td h1 {
+ // Design
+ color:#ffffff;
+}
+/* Article List */
+.article-list {
+ // Design
+ background-color: #fff;
+}
+/* Articles */
+.content-top td.newsletter-sections {
+ padding-top: 10px;
+ // Design
+ background-color: #FFFFFF;
+}
+.article-section-title,
+.article-section-link,
+.article-content {
+ // Design
+ background-color: #FFFFFF;
+}
+.article-content {
+ // Design
+ background-color: #FFFFFF;
+}
+.article-intro,
+.article-intro td {
+ // Design
+ background-color: #FFFFFF;
+}
+/* Ads/Promos */
+.newsletter-ad-1 {
+ // Design
+ background-color: #FFFFFF;
+}
+.newsletter-ad-2 {
+ // Design
+ background-color: #FFFFFF;
+}
+/* Blocks */
+.blocks {
+ // Design
+ background-color: #FFFFFF;
+}
+/* Footer */
+.footer {
+ // Design
+ background-color: #000000;
+}
+.footer-content {
+ // Design
+ color:#FFFFFF;
+}
+.footer-content p {
+ // Design
+ color:#FFFFFF;
+}
+.footer-content a {
+ // Design
+ color:$gold;
+ &:link,
+ &:visited,
+ &:active {
+ color:$gold !important;
+ }
+}
+.footer-content a:hover {
+ // Design
+ color:$gold !important;
+}
+
+.hero-image .content-padding {
+ padding: 0px;
+ .intro-text {
+ padding: 0 10px;
+ }
+}
+
+.article-teaser-border {
+ border-bottom:1px solid #e7e7e7;
+ display:block;
+ margin:0 10px 20px;
+}
+.article-teaser-border.last {
+ display: none;
+}
diff --git a/themes/cuemail/scss/design-05.scss b/themes/cuemail/scss/design-05.scss
new file mode 100755
index 000000000..4d4318307
--- /dev/null
+++ b/themes/cuemail/scss/design-05.scss
@@ -0,0 +1,127 @@
+@import "modules/_global.scss";
+
+body, table.body {
+ background-color:#FFFFFF;
+}
+.container {
+ background-color: #FFFFFF;
+}
+/* Newsletter Title & Logo */
+.title,
+.title td {
+ // Design
+ background-color:#000000;
+ color:#ffffff;
+}
+.title td.newsletter-name h1 {
+ // Design
+ color:#ffffff;
+}
+/* Newsletter Issue & Weblink */
+.title-bottom {
+ // Design
+ background-color: #000000;
+}
+.issue {
+ // Design
+ background-color: #ffffff;
+}
+td.issue-date {
+ // Design
+ color:#cccccc;
+}
+td.web-link a {
+ // Design
+ color:#cccccc !important;
+}
+td.web-link a:hover {
+ // Design
+ color:#ffffff !important;
+}
+.title td h1 {
+ // Design
+ color:#ffffff;
+}
+/* Article List */
+.article-list {
+ // Design
+ background-color: #fff;
+}
+/* Articles */
+.content-top td.newsletter-sections {
+ padding-top: 10px;
+ // Design
+ background-color: #FFFFFF;
+}
+.article-section-title,
+.article-section-link,
+.article-content {
+ // Design
+ background-color: #FFFFFF;
+}
+.article-content {
+ // Design
+ background-color: #FFFFFF;
+}
+.article-intro,
+.article-intro td {
+ // Design
+ background-color: #FFFFFF;
+}
+/* Ads/Promos */
+.newsletter-ad-1 {
+ // Design
+ background-color: #FFFFFF;
+}
+.newsletter-ad-2 {
+ // Design
+ background-color: #FFFFFF;
+}
+/* Blocks */
+.blocks {
+ // Design
+ background-color: #FFFFFF;
+}
+/* Footer */
+.footer {
+ // Design
+ background-color: #000000;
+}
+.footer-content {
+ // Design
+ color:#FFFFFF;
+}
+.footer-content p {
+ // Design
+ color:#FFFFFF;
+}
+.footer-content a {
+ // Design
+ color:$gold;
+}
+.footer-content a:hover {
+ // Design
+ color:$gold !important;
+ &:link,
+ &:visited,
+ &:hover,
+ &:active {
+ color:$gold !important;
+ }
+}
+
+.hero-image .content-padding {
+ padding: 20px 0px 0px;
+ .intro-text {
+ padding: 0 10px;
+ }
+}
+
+.article-teaser-border {
+ border-bottom:1px solid #e7e7e7;
+ display:block;
+ margin:0 10px 20px;
+}
+.article-teaser-border.last {
+ display: none;
+}
diff --git a/themes/cuemail/scss/global.scss b/themes/cuemail/scss/global.scss
new file mode 100755
index 000000000..da2cd1eed
--- /dev/null
+++ b/themes/cuemail/scss/global.scss
@@ -0,0 +1,457 @@
+@import "modules/_global.scss";
+
+/* CUSTOM STYLES */
+div.emailteaser {
+ font-size: 1px;
+ display: none !important;
+ mso-hide:all;
+ height:1px !important;
+ overflow: hidden !important;
+}
+
+.container img {
+ display: block;
+ height:auto !important;
+ max-height:auto !important;
+ width:100% !important;
+ max-width: 600px !important;
+}
+
+img.image-email_teaser_thumbnail,
+img[class="image-email_teaser_thumbnail"] {
+ display: block;
+ height:auto !important;
+ max-height:130px !important;
+ width:100% !important;
+ max-width: 130px !important;
+}
+img.image-email_feature_thumbnail,
+img[class="image-email_feature_thumbnail"] {
+ //margin-bottom: 10px;
+ display:block;
+}
+h1, h2, h3, h4, h5 {
+ mso-line-height-rule:exactly;
+}
+
+a {
+ color: $link;
+ text-decoration: none;
+}
+
+a:hover {
+ color: $link !important;
+}
+
+a:active {
+ color: $link !important;
+}
+
+a:visited {
+ color: $link !important;
+}
+
+h1 a,
+h2 a,
+h3 a,
+h4 a,
+h5 a,
+h6 a {
+ color: $link;
+}
+
+h1 a:active,
+h2 a:active,
+h3 a:active,
+h4 a:active,
+h5 a:active,
+h6 a:active {
+ color: $link !important;
+}
+
+h1 a:visited,
+h2 a:visited,
+h3 a:visited,
+h4 a:visited,
+h5 a:visited,
+h6 a:visited {
+ color: $link !important;
+}
+body, table.body {
+ // Design
+ // background-color:#f2f2f2;
+}
+body {
+ padding:0 0 40px;
+}
+.container {
+ // Design
+ // background-color: #FFFFFF;
+}
+
+/* Newsletter Title & Logo */
+.title,
+.title td {
+ // Design
+ // background-color:#000000;
+ // color:#ffffff;
+}
+table.full {
+ width: 100%;
+}
+
+td.newsletter-logo-single {
+ padding:20px 10px 10px;
+ vertical-align: middle;
+}
+td.newsletter-logo-single img {
+ max-width:240px !important;
+}
+td.newsletter-name {
+ width:60%;
+ padding:40px 60px 20px 10px;
+ vertical-align: middle;
+}
+.title td.newsletter-name h1 {
+ // Design
+ // color:#ffffff;
+}
+td.newsletter-logo {
+ width:40%;
+ padding:40px 10px 20px;
+ vertical-align: middle;
+}
+img#logo {
+ float:right;
+}
+/* Newsletter Issue & Weblink */
+.title-bottom {
+ // Design
+ // background-color: #000000;
+ height: 0px;
+}
+.issue-meta {
+ margin-top: -20px;
+}
+.issue {
+ // Design
+ // background-color: #ffffff;
+}
+td.issue-date {
+ width:50%;
+ padding:10px;
+ // Design
+ // color:#cccccc;
+}
+td.web-link {
+ width:50%;
+ padding:10px;
+ text-align: right;
+}
+td.web-link a {
+ font-size: 11px;
+ // Design
+ // color:#cccccc !important;
+}
+td.web-link a:hover {
+ // Design
+ // color:#ffffff !important;
+}
+
+.title td h1 {
+ // Design
+ // color:#ffffff;
+ font-size: 20px;
+ font-weight:100;
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ hyphens: none;
+ margin:0;
+}
+/* Article List */
+.article-list {
+ // Design
+ // background-color: #fff;
+ padding: 10px;
+}
+/* Hero */
+.intro-image img {
+ float: none;
+ //margin-bottom: 10px;
+ display: block;
+}
+/* Articles */
+
+.content-top td.newsletter-sections {
+ padding-top: 10px;
+ // Design
+ // background-color: #FFFFFF;
+}
+.article-section-title,
+.article-section-link,
+.article-content {
+ // Design
+ // background-color: #FFFFFF;
+}
+.article-content {
+ // Design
+ // background-color: #FFFFFF;
+ //margin-bottom: 20px;
+}
+.content-padding {
+ clear: both;
+ padding: 0px 0;
+}
+.cell-padding {
+ padding:10px;
+}
+.padding-top {
+ padding-top:10px;
+}
+.padding-bottom {
+ padding-bottom:20px;
+}
+.article-intro,
+.article-intro td {
+ // Design
+ // background-color: #FFFFFF;
+}
+.article-intro .content-padding {
+ clear:both;
+ padding: 0px;
+}
+h2,
+h2.field-name-field-newsletter-section-title {
+ font-size:20px;
+ font-weight: bold;
+ margin-top:10px;
+ margin-bottom: 10px;
+}
+h2.field-name-field-newsletter-section-title {
+ margin-top:0;
+ margin-bottom: 0;
+}
+h3.feature-title {
+ font-size: 18px;
+ font-weight: bold;
+ margin-bottom: 5px;
+}
+h3.teaser-title {
+ font-size: 18px;
+ font-weight: bold;
+ margin-bottom: 5px;
+}
+h3 {
+ font-size:18px;
+ margin-bottom: 10px;
+ font-weight: bold;
+}
+h4 {
+ font-size:16px;
+ margin-bottom: 10px;
+ font-weight: bold;
+}
+h5 {
+ font-size:15px;
+ margin-bottom: 10px;
+ font-weight: bold;
+}
+h6 {
+ font-size:14px;
+ margin-bottom: 10px;
+ font-weight: bold;
+}
+p.supersize {
+ font-size:32px;
+ font-weight: bold;
+ margin: 10px 0;
+ line-height: 1.3;
+}
+p.hero {
+ font-size:24px;
+ font-weight: bold;
+ margin: 10px 0;
+ line-height: 1.3;
+}
+p.lead {
+ font-size:18px;
+ font-weight: bold;
+ margin: 10px 0;
+ line-height: 1.3;
+}
+
+/* Article Categories */
+table.columns,
+table.column {
+ td.tags {
+ padding:0 0 5px 0;
+ p {
+ margin:0;
+ margin-bottom:0;
+ }
+ }
+}
+td.tags a,
+td.tags a:link,
+td.tags a:visited {
+ background-color:#e7e7e7 !important;
+ color:#656565 !important;
+ // padding:4px;
+ border-color: #e7e7e7;
+ border-style: solid;
+ border-width: 4px;
+ margin:0 5px 5px 0;
+ font-size:10px;
+ font-weight:bold;
+ text-transform:uppercase !important;
+}
+td.tags a:active,
+td.tags a:hover {
+ color:$gold !important;
+ background-color:#000000 !important;
+ border-color: #000000
+}
+/* Article More Link */
+a.button,
+p.field-name-field-newsletter-more-link a {
+ background-color:$blue;
+ color:#FFFFFF;
+ display:inline-block;
+ //padding:5px 10px !important;
+ font-weight:bold;
+ text-align:center;
+ border-color: $blue;
+ border-style: solid;
+ border-top-width: 5px;
+ border-bottom-width: 5px;
+ border-left-width: 10px;
+ border-right-width: 10px;
+ &:visited {
+ color: #FFFFFF !important;
+ background-color:$blue !important;
+ }
+}
+a.button-full {
+ display:block !important;
+}
+a.button:hover,
+a.button:active,
+a.button:focus,
+p.field-name-field-newsletter-more-link a:hover,
+p.field-name-field-newsletter-more-link a:active,
+p.field-name-field-newsletter-more-link a:focus {
+ color:#FFFFFF !important;
+ background-color:#222222 !important;
+ border-color: #222222 !important;
+
+}
+a.button-large {
+ font-size:16px !important;
+ //padding:10px 10px !important;
+ border-color: $blue;
+ border-style: solid;
+ border-top-width: 10px;
+ border-bottom-width: 10px;
+ border-left-width: 10px;
+ border-right-width: 10px;
+}
+p.field-name-field-newsletter-more-link a {
+
+}
+
+/* Ads/Promos */
+.newsletter-ad-1 {
+ // Design
+ // background-color: #FFFFFF;
+ margin-bottom: 20px;
+}
+.newsletter-ad-2 {
+ // Design
+ // background-color: #FFFFFF;
+}
+.newsletter-ad-content {
+ padding: 10px;
+}
+.newsletter-ad td.wrapper {
+ padding: 0 !important;
+}
+/* Blocks */
+.blocks {
+ // Design
+ // background-color: #FFFFFF;
+ margin-bottom: 20px;
+}
+h2.field-name-field-newsletter-block-title {
+ font-size:20px;
+ font-weight: bold;
+}
+
+/* Footer */
+
+.footer {
+ // Design
+ // background-color: #000000;
+}
+.footer-content {
+ // Design
+ // color:#FFFFFF;
+ text-align: center;
+ padding-top: 10px;
+}
+.footer-content p {
+ // Design
+ // color:#FFFFFF;
+ text-align: center;
+}
+.footer-content a {
+ // Design
+ // color:$gold !important;
+}
+.footer-content a:hover {
+ // Design
+ // color:$gold !important;
+}
+
+/* Lists */
+
+ul {
+ padding-left:17px;
+}
+.article-list {
+
+}
+.article-list-content {
+ padding:10px;
+}
+
+.newsletter-footer p {
+ font-size: 12px;
+}
+.open-counter img {
+ width:1px !important;
+ height:1px !important;
+}
+
+p:empty, td:empty {
+ display: none !important;
+}
+
+.article-teaser-border {
+ border-bottom:1px solid #e7e7e7;
+ display:block;
+ margin:0 10px 20px;
+}
+
+/* Social Links */
+.social-links {
+ text-align:center;
+ width:100%;
+ padding:10px 0;
+ img {
+ width:24px !important;
+ height:24px !important;
+ display: inline-block !important;
+ float: none;
+ margin:5px;
+ }
+}
diff --git a/themes/cuemail/scss/modules/_global.scss b/themes/cuemail/scss/modules/_global.scss
new file mode 100755
index 000000000..5e2b840f4
--- /dev/null
+++ b/themes/cuemail/scss/modules/_global.scss
@@ -0,0 +1,4 @@
+/* Colors */
+$blue: #007BC8;
+$link: $blue;
+$gold: #cfb87c;
diff --git a/themes/cuemail/scss/responsive.scss b/themes/cuemail/scss/responsive.scss
new file mode 100755
index 000000000..f5e69490c
--- /dev/null
+++ b/themes/cuemail/scss/responsive.scss
@@ -0,0 +1,21 @@
+/* Responsive Styles */
+
+@media only screen and (max-width: 600px) {
+ body {
+ padding:0px !important;
+ }
+ .title td h1 {
+ font-size: 21px !important;
+ word-break: normal;
+ }
+ .ad img {
+ width:100%;
+ height:auto;
+ }
+ a.button,
+ a.button:link,
+ a.button:visited,
+ p.field-name-field-newsletter-more-link a {
+ display: block !important;
+ }
+}
diff --git a/themes/cuemail/template.php b/themes/cuemail/template.php
new file mode 100755
index 000000000..9eda3ebe0
--- /dev/null
+++ b/themes/cuemail/template.php
@@ -0,0 +1,170 @@
+ 'newsletter-section-blocks',
+ 'path' => $template_dir,
+ );
+ $registry['newsletter_section_ads'] = array(
+ 'template' => 'newsletter-section-ads',
+ 'path' => $template_dir,
+ );
+ $registry['newsletter_intro'] = array(
+ 'template' => 'newsletter-intro',
+ 'path' => $template_dir,
+ );
+ $registry['newsletter_list'] = array(
+ 'template' => 'newsletter-list',
+ 'path' => $template_dir,
+ );
+ return $registry;
+}
+
+/**
+ * Implements theme_preprocess_html().
+ */
+function cuemail_preprocess_html(&$vars) {
+ $data = array(
+ '#tag' => 'meta',
+ '#attributes' => array(
+ 'http-equiv' => 'Content-Type',
+ 'content' => 'text/html; charset=utf-8',
+ ),
+ );
+ drupal_add_html_head($data, 'utf');
+}
+
+/**
+ * Implements theme_preprocess_node().
+ */
+function cuemail_preprocess_node(&$vars) {
+
+ $vars['theme_hook_suggestions'][] = 'node__' . $vars['type'] . '__' . $vars['view_mode'];
+ $url = url('node/' . $vars['nid'], array('absolute' => TRUE, 'alias' => TRUE, 'https' => TRUE));
+ $vars['node_url'] = $url;
+ if ($vars['type'] == 'newsletter') {
+ if (!empty($vars['content']['field_newsletter_intro_image'])) {
+ $vars['content']['field_newsletter_intro_image'][0]['#image_style'] = 'email_medium';
+ }
+ $list = array();
+ foreach ($vars['content']['field_newsletter_section']['#items'] as $key => $item) {
+ $key_2 = key($vars['content']['field_newsletter_section'][$key]['entity']['field_collection_item']);
+ if (!empty($vars['content']['field_newsletter_section'][$key]['entity']['field_collection_item'][$key_2]['field_newsletter_articles'])) {
+ $articles = $vars['content']['field_newsletter_section'][$key]['entity']['field_collection_item'][$key_2]['field_newsletter_articles']['#items'];
+ foreach ($articles as $article) {
+ $node = node_load($article['target_id']);
+ $list[] = $node->title;
+ }
+ }
+ }
+ if (!empty($vars['newsletter_logo_uri'])) {
+ $newsletter_logo_image_style_uri = image_style_path('medium', $vars['newsletter_logo_uri']);
+ if (!file_exists($newsletter_logo_image_style_uri)) {
+ image_style_create_derivative(image_style_load('medium'), $vars['newsletter_logo_uri'], $newsletter_logo_image_style_uri);
+ }
+ $image_info = image_get_info($newsletter_logo_image_style_uri);
+ $vars['newsletter_logo_width'] = round($image_info['width'] * .46333);
+ $vars['newsletter_logo_height'] = round($image_info['height'] * .46333);
+ }
+ $vars['content']['list'] = theme('item_list', array(
+ 'items' => $list,
+ 'type' => 'ul',
+ 'attributes' => array(
+ 'class' => array(
+ 'bullet-list',
+ ),
+ ),
+ ));
+ }
+ if ($vars['type'] == 'article') {
+ if (!empty($vars['content']['field_article_thumbnail'][0])) {
+ $vars['content']['field_article_thumbnail'][0]['#path']['options']['absolute'] = TRUE;
+ }
+ if ($vars['view_mode'] == 'email_feature') { $vars['content']['field_article_thumbnail'][0]['#image_style'] = 'email_feature_thumbnail';
+ }
+ if (isset($vars['field_article_categories'])) {
+ foreach ($vars['field_article_categories'] as $tid) {
+ if (isset($tid['tid'])) {
+ $tids[] = $tid['tid'];
+ }
+ }
+ }
+ if (isset ($tids)) {
+ $terms = taxonomy_term_load_multiple($tids);
+ foreach ($terms as $term) {
+ if (isset($term->name)) {
+ $tag = $term->name;
+ if ($term->field_category_display[LANGUAGE_NONE][0]['value'] == 'show') {
+ if (!empty($term->field_category_term_page_link)) {
+ $new_tags[] = l($tag, $term->field_category_term_page_link[LANGUAGE_NONE][0]['url'], array('absolute' => TRUE, 'alias' => TRUE, 'https' => TRUE));
+ }
+ else {
+ $new_tags[] = $tag;
+ }
+ }
+ }
+ }
+ if (!empty($new_tags)) {
+ $markup = implode(' ', $new_tags);
+ unset($vars['content']['field_article_categories']);
+ $vars['content']['field_article_categories'][0]['#markup'] = '' . $markup . '
';
+ }
+ else {
+ $vars['content']['field_article_categories'] = array();
+ }
+ }
+ }
+}
+
+/**
+ * Implements theme_image_style().
+ */
+function cuemail_image_style(&$vars) {
+ // Determine the dimensions of the styled image.
+ $dimensions = array(
+ 'width' => $vars['width'],
+ 'height' => $vars['height'],
+ );
+
+ image_style_transform_dimensions($vars['style_name'], $dimensions);
+
+ $vars['width'] = $dimensions['width'];
+ $vars['height'] = $dimensions['height'];
+
+ if ($vars['style_name'] == 'email_medium') {
+ $vars['width'] = 560;
+ $vars['height'] = 280;
+ }
+
+ if ($vars['style_name'] == 'email_ad') {
+ $vars['width'] = 560;
+ $vars['height'] = 280;
+ }
+
+ if ($vars['style_name'] == 'email_feature_thumbnail') {
+ $vars['width'] = 560;
+ $vars['height'] = 261;
+ }
+
+ // Determine the url for the styled image.
+ $vars['path'] = image_style_url($vars['style_name'], $vars['path']);
+ $vars['attributes']['class'] = array('image-' . $vars['style_name']);
+ $vars['height'] = '';
+ return theme('image', $vars);
+}
+
+function cuemail_logo_color($design = 'design-01') {
+ $logos = array();
+ $logos['design-01'] = 'logo-black-2x.gif';
+ $logos['design-02'] = 'logo-white-2x.gif';
+ $logos['design-03'] = 'logo-white-2x.gif';
+ $logos['design-04'] = 'logo-black-2x.gif';
+ $logos['design-05'] = 'logo-black-2x.gif';
+ return $logos[$design];
+}
+
+function cuemail_html_compress($email){
+ return str_replace(array("\n","\r","\t"),'',$email);
+}
diff --git a/themes/cuemail/templates/block.tpl.php b/themes/cuemail/templates/block.tpl.php
new file mode 100755
index 000000000..ae0d3d7c8
--- /dev/null
+++ b/themes/cuemail/templates/block.tpl.php
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/themes/cuemail/templates/cu-newsletter-custom-content-email-feature.tpl.php b/themes/cuemail/templates/cu-newsletter-custom-content-email-feature.tpl.php
new file mode 100755
index 000000000..551826342
--- /dev/null
+++ b/themes/cuemail/templates/cu-newsletter-custom-content-email-feature.tpl.php
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/cuemail/templates/cu-newsletter-custom-content-email-teaser.tpl.php b/themes/cuemail/templates/cu-newsletter-custom-content-email-teaser.tpl.php
new file mode 100755
index 000000000..c4917398a
--- /dev/null
+++ b/themes/cuemail/templates/cu-newsletter-custom-content-email-teaser.tpl.php
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/cuemail/templates/field-collection-item--field_newsletter_ad_promo.tpl.php b/themes/cuemail/templates/field-collection-item--field_newsletter_ad_promo.tpl.php
new file mode 100755
index 000000000..043703d19
--- /dev/null
+++ b/themes/cuemail/templates/field-collection-item--field_newsletter_ad_promo.tpl.php
@@ -0,0 +1,12 @@
+ TRUE));
+ }
+ else {
+ $ad = $img;
+ }
+?>
+
diff --git a/themes/cuemail/templates/field-collection-item--field_newsletter_section.tpl.php b/themes/cuemail/templates/field-collection-item--field_newsletter_section.tpl.php
new file mode 100755
index 000000000..39de0412d
--- /dev/null
+++ b/themes/cuemail/templates/field-collection-item--field_newsletter_section.tpl.php
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/cuemail/templates/field-collection-item--field_newsletter_text_block.tpl.php b/themes/cuemail/templates/field-collection-item--field_newsletter_text_block.tpl.php
new file mode 100755
index 000000000..edebfb939
--- /dev/null
+++ b/themes/cuemail/templates/field-collection-item--field_newsletter_text_block.tpl.php
@@ -0,0 +1 @@
+
diff --git a/themes/cuemail/templates/html.tpl.php b/themes/cuemail/templates/html.tpl.php
new file mode 100755
index 000000000..769dbb606
--- /dev/null
+++ b/themes/cuemail/templates/html.tpl.php
@@ -0,0 +1,43 @@
+language contains its textual representation.
+ * $language->dir contains the language direction. It will either be 'ltr' or 'rtl'.
+ * - $rdf_namespaces: All the RDF namespace prefixes used in the HTML document.
+ * - $grddl_profile: A GRDDL profile allowing agents to extract the RDF data.
+ * - $head_title: A modified version of the page title, for use in the TITLE
+ * tag.
+ * - $head_title_array: (array) An associative array containing the string parts
+ * that were used to generate the $head_title variable, already prepared to be
+ * output as TITLE tag. The key/value pairs may contain one or more of the
+ * following, depending on conditions:
+ * - title: The title of the current page, if any.
+ * - name: The name of the site.
+ * - slogan: The slogan of the site, if any, and if there is no title.
+ * - $head: Markup for the HEAD section (including meta tags, keyword tags, and
+ * so on).
+ * - $styles: Style tags necessary to import all CSS files for the page.
+ * - $scripts: Script tags necessary to load the JavaScript files and settings
+ * for the page.
+ * - $page_top: Initial markup from any modules that have altered the
+ * page. This variable should always be output first, before all other dynamic
+ * content.
+ * - $page: The rendered page content.
+ * - $page_bottom: Final closing markup from any modules that have altered the
+ * page. This variable should always be output last, after all other dynamic
+ * content.
+ * - $classes String of classes that can be used to style contextually through
+ * CSS.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_html()
+ * @see template_process()
+ */
+?>
+
diff --git a/themes/cuemail/templates/newsletter-intro.tpl.php b/themes/cuemail/templates/newsletter-intro.tpl.php
new file mode 100755
index 000000000..58c101ace
--- /dev/null
+++ b/themes/cuemail/templates/newsletter-intro.tpl.php
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/cuemail/templates/newsletter-list.tpl.php b/themes/cuemail/templates/newsletter-list.tpl.php
new file mode 100755
index 000000000..9f671f650
--- /dev/null
+++ b/themes/cuemail/templates/newsletter-list.tpl.php
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+ In this issue:
+
+
+
+
+
+
+
+
+
diff --git a/themes/cuemail/templates/newsletter-section-ads.tpl.php b/themes/cuemail/templates/newsletter-section-ads.tpl.php
new file mode 100755
index 000000000..3b905e4ff
--- /dev/null
+++ b/themes/cuemail/templates/newsletter-section-ads.tpl.php
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/cuemail/templates/newsletter-section-blocks.tpl.php b/themes/cuemail/templates/newsletter-section-blocks.tpl.php
new file mode 100755
index 000000000..358c46c3f
--- /dev/null
+++ b/themes/cuemail/templates/newsletter-section-blocks.tpl.php
@@ -0,0 +1,43 @@
+
+ 1): ?>
+
+ $chunk): ?>
+
+
+ $block): ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/cuemail/templates/node--article--email_feature.tpl.php b/themes/cuemail/templates/node--article--email_feature.tpl.php
new file mode 100755
index 000000000..bee169a89
--- /dev/null
+++ b/themes/cuemail/templates/node--article--email_feature.tpl.php
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/cuemail/templates/node--article--email_teaser.tpl.php b/themes/cuemail/templates/node--article--email_teaser.tpl.php
new file mode 100755
index 000000000..eb0bb0962
--- /dev/null
+++ b/themes/cuemail/templates/node--article--email_teaser.tpl.php
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/cuemail/templates/node--newsletter.tpl.php b/themes/cuemail/templates/node--newsletter.tpl.php
new file mode 100755
index 000000000..08f44baa0
--- /dev/null
+++ b/themes/cuemail/templates/node--newsletter.tpl.php
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ![<?php print $newsletter_name; ?>](<?php print $newsletter_logo_url; ?>)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nid, array('absolute' => TRUE)); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ In this issue:
+
+
+
+
+
+
+
+
+
+
+
+
+ $content));
+ print $intro;
+
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $content['field_newsletter_ad_promo'][0], 'class' => 'ad-1'));
+ print $ad_1;
+
+ ?>
+
+
+
+
+
+
+
+
+
+
+ $content));
+ print $blocks;
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+ $content['field_newsletter_ad_promo'][1], 'class' => 'ad-2'));
+ print $ad_2;
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/cuemail/templates/page.tpl.php b/themes/cuemail/templates/page.tpl.php
new file mode 100755
index 000000000..dfa5ebd39
--- /dev/null
+++ b/themes/cuemail/templates/page.tpl.php
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+field_newsletter_type[LANGUAGE_NONE][0]['taxonomy_term']->field_newsletter_design[LANGUAGE_NONE][0]['value'];
+ // Prepare CSS
+ $css = array();
+ // Load Framework CSS
+ $css['framework'] = file_get_contents(drupal_get_path('theme', 'cuemail') . '/css/framework.css');
+ // Load Global CSS
+ $css['global'] = file_get_contents(drupal_get_path('theme', 'cuemail') . '/css/global.css');
+ // Load Design CSS
+ $css['design'] = file_get_contents(drupal_get_path('theme', 'cuemail') . '/css/' . $design . '.css');
+ // Load Responsive CSS
+ // Responsive is kept separate because it should not be inlined.
+ $responsive = file_get_contents(drupal_get_path('theme', 'cuemail') . '/css/responsive.css');
+
+ $styles = join(' ', $css);
+
+ $html = '' . '' . render($page['content']);
+ //$html = str_replace("\xc2\xa0",' ',$html);
+ $cssToInlineStyles->setHTML($html);
+ $cssToInlineStyles->setCSS($styles);
+
+?>
+
+
+convert();
+ $email = str_replace('src="//', 'src="https://', $email);
+ $email = str_replace('href="//', 'href="https://', $email);
+ }
+
+ print $email;
+
+
+
+
+
+?>
+
+
diff --git a/themes/cuemail/templates/region.tpl.php b/themes/cuemail/templates/region.tpl.php
new file mode 100755
index 000000000..ae0d3d7c8
--- /dev/null
+++ b/themes/cuemail/templates/region.tpl.php
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/themes/cuhighlight/css/highlight-styles.css b/themes/cuhighlight/css/highlight-styles.css
index d09b4c447..604695c5e 100644
--- a/themes/cuhighlight/css/highlight-styles.css
+++ b/themes/cuhighlight/css/highlight-styles.css
@@ -23,11 +23,9 @@ body { background-color: #000; border-top: 4px solid #cfb87c; }
#navigation ul#action-menu > li > a:hover, #navigation ul#action-menu > li > a.active, #navigation ul#action-menu > li > a.active-trail { color: #222; }
#navigation .home-link { margin-left: -12px; }
-.intro-wide-wrapper, .post-wide-wrapper { background: #fff; }
+.post-wide-wrapper { background: #fff; }
-.slider-wrapper { padding: 20px; color: #fff; }
-.slider-wrapper a { color: #cfb87c; }
-.slider-wrapper a:hover { color: #fff; }
+.slider-wrapper { padding: 20px; }
.page-title-image-boxed { padding-top: 20px; }
diff --git a/themes/cuhighlight/cuhighlight.info b/themes/cuhighlight/cuhighlight.info
index 267134bd9..c85d884f1 100644
--- a/themes/cuhighlight/cuhighlight.info
+++ b/themes/cuhighlight/cuhighlight.info
@@ -31,6 +31,7 @@ regions[content_sidebar_left] = 'Content Sidebar Left'
regions[content_bottom] = 'Content Bottom'
; Region background colors
+settings[intro_class] = 'background-gray-dark'
settings[slider_class] = 'background-gray-800'
settings[after_content2_class] = 'background-gray-light'
settings[footer_section_class] = 'background-gray-800'
diff --git a/themes/cuhighlight/scss/highlight-styles.scss b/themes/cuhighlight/scss/highlight-styles.scss
index e0e7c544f..d376ae47d 100644
--- a/themes/cuhighlight/scss/highlight-styles.scss
+++ b/themes/cuhighlight/scss/highlight-styles.scss
@@ -73,19 +73,11 @@ body {
margin-left: -12px;
}
}
-.intro-wide-wrapper,
.post-wide-wrapper {
background:#fff;
}
.slider-wrapper {
padding: 20px;
- color:#fff;
- a {
- color:$cugold;
- }
- a:hover {
- color:#fff;
- }
}
.page-title-image-boxed {
padding-top: 20px;
diff --git a/themes/cuivory/cuivory.info b/themes/cuivory/cuivory.info
index 477a9eebc..b6b631611 100644
--- a/themes/cuivory/cuivory.info
+++ b/themes/cuivory/cuivory.info
@@ -35,6 +35,7 @@ settings[layout_style] = 'layout-boxed'
settings[banner_color] = 'black'
; Region background colors
+settings[intro_class] = 'background-gray-dark'
settings[slider_class] = 'background-gray-800'
settings[after_content2_class] = 'background-white'
settings[footer_section_class] = 'background-gray-800'
diff --git a/themes/culayers/css/layers-styles.css b/themes/culayers/css/layers-styles.css
index 56b7ec08b..ee6f680ec 100644
--- a/themes/culayers/css/layers-styles.css
+++ b/themes/culayers/css/layers-styles.css
@@ -22,9 +22,7 @@ body { background-color: #333; }
#navigation ul#action-menu > li > a { color: #ccc; }
#navigation ul#action-menu > li > a.active, #navigation ul#action-menu > li > a.active-trail, #navigation ul#action-menu > li > a:hover, #navigation ul#action-menu > li > a:focus { color: #cfb87c; }
-.slider-wrapper { background-color: #171717; padding: 20px; color: #fff; }
-.slider-wrapper a { color: #cfb87c; }
-.slider-wrapper a:hover { color: #fff; }
+.slider-wrapper { padding: 20px; }
.top-content-wrapper { background-color: #f1f1f1; }
diff --git a/themes/culayers/scss/layers-styles.scss b/themes/culayers/scss/layers-styles.scss
index 65df93118..1deee1c59 100644
--- a/themes/culayers/scss/layers-styles.scss
+++ b/themes/culayers/scss/layers-styles.scss
@@ -80,15 +80,7 @@ body {
}
}
.slider-wrapper {
- background-color: #171717;
padding: 20px;
- color:#fff;
- a {
- color:$cugold;
- }
- a:hover {
- color:#fff;
- }
}
.top-content-wrapper {
background-color: #f1f1f1;
diff --git a/themes/cuminimal/css/minimal-styles.css b/themes/cuminimal/css/minimal-styles.css
index bdc902ae4..90d151087 100644
--- a/themes/cuminimal/css/minimal-styles.css
+++ b/themes/cuminimal/css/minimal-styles.css
@@ -25,8 +25,6 @@ body.layout-boxed { background: #e7e7e7; }
#secondary-menu a { color: #757575; display: inline-block; border-bottom: 4px solid #fff; }
#secondary-menu a:hover, #secondary-menu a:focus, #secondary-menu a.active, #secondary-menu a.active-trail { border-bottom: 4px solid rgba(128, 128, 128, 0.333); color: #363636; }
-.slider-wrapper, .intro-wide-wrapper { background-color: #fff; }
-
.slider-wrapper { padding: 20px; }
#post-title-wide-wrapper { background: #fff; padding-bottom: 20px; }
diff --git a/themes/cuminimal/cuminimal.info b/themes/cuminimal/cuminimal.info
index 3b2b1f496..4163fdea9 100644
--- a/themes/cuminimal/cuminimal.info
+++ b/themes/cuminimal/cuminimal.info
@@ -33,6 +33,7 @@ regions[content_bottom] = 'Content Bottom'
settings[layout_style] = 'layout-wide'
; Region background colors
+settings[intro_class] = 'background-gray-dark'
settings[slider_class] = 'background-white'
settings[after_content2_class] = 'background-white'
settings[footer_section_class] = 'background-white'
diff --git a/themes/cuminimal/scss/minimal-styles.scss b/themes/cuminimal/scss/minimal-styles.scss
index 39f6eebf2..cb324dc49 100644
--- a/themes/cuminimal/scss/minimal-styles.scss
+++ b/themes/cuminimal/scss/minimal-styles.scss
@@ -89,10 +89,7 @@ body.layout-boxed {
}
-.slider-wrapper,
-.intro-wide-wrapper {
- background-color: #fff;
-}
+
.slider-wrapper {
padding: 20px;
}
diff --git a/themes/cumodern/cumodern.info b/themes/cumodern/cumodern.info
index a161e5cac..5bcb5656b 100644
--- a/themes/cumodern/cumodern.info
+++ b/themes/cumodern/cumodern.info
@@ -35,6 +35,7 @@ settings[layout_style] = 'layout-wide'
settings[banner_color] = 'black'
; Region background colors
+settings[intro_class] = 'background-gray-dark'
settings[slider_class] = 'background-gray-light'
settings[after_content2_class] = 'background-gray-light'
settings[footer_section_class] = 'background-gray-dark'
diff --git a/themes/curise/css/rise-styles.css b/themes/curise/css/rise-styles.css
index 07873fe7c..fec5eda6b 100644
--- a/themes/curise/css/rise-styles.css
+++ b/themes/curise/css/rise-styles.css
@@ -38,8 +38,6 @@ body { background-color: #424242; }
.top-content-wrapper { background-color: #fff; }
-#intro-wide-wrapper, #post-wide-wrapper { background-color: #fff; }
-
.page-title-image-wide { margin-top: 0; padding-top: 0; }
.page-title-image-boxed { padding-top: 50px; }
diff --git a/themes/curise/curise.info b/themes/curise/curise.info
index 9c823e37c..2d3d527b2 100644
--- a/themes/curise/curise.info
+++ b/themes/curise/curise.info
@@ -31,6 +31,7 @@ regions[content_sidebar_left] = 'Content Sidebar Left'
regions[content_bottom] = 'Content Bottom'
; Region background colors
+settings[intro_class] = 'background-gray-dark'
settings[slider_class] = 'background-gray-light'
settings[after_content2_class] = 'background-gray-light'
settings[footer_section_class] = 'background-gray-dark'
diff --git a/themes/curise/scss/rise-styles.scss b/themes/curise/scss/rise-styles.scss
index aed722a0f..44bf381e4 100644
--- a/themes/curise/scss/rise-styles.scss
+++ b/themes/curise/scss/rise-styles.scss
@@ -150,8 +150,7 @@ body {
#intro-wide-wrapper,
#post-wide-wrapper {
- background-color: #fff;
- //@include rgbashadow(0, 3px, 1px, #000, .08);
+
}
#page-title-image-wrapper {
diff --git a/themes/cushadow/cushadow.info b/themes/cushadow/cushadow.info
index 31ad8ff17..d7f42393d 100644
--- a/themes/cushadow/cushadow.info
+++ b/themes/cushadow/cushadow.info
@@ -34,6 +34,7 @@ settings[layout_style] = 'layout-wide'
settings[banner_color] = 'black'
; Region background colors
+settings[intro_class] = 'background-gray-dark'
settings[slider_class] = 'background-gray-light'
settings[after_content2_class] = 'background-gray-light'
settings[footer_section_class] = 'background-gray-dark'
diff --git a/themes/cusimple/css/simple-styles.css b/themes/cusimple/css/simple-styles.css
index e2f86aeec..66496c140 100644
--- a/themes/cusimple/css/simple-styles.css
+++ b/themes/cusimple/css/simple-styles.css
@@ -10,7 +10,7 @@ body { background-color: #000; }
#navigation nav { background-color: #333; }
-#intro-wide-wrapper { background: #fff; padding-bottom: 20px; }
+#intro-wide-wrapper { padding-bottom: 20px; }
#main { padding-top: 0; }
@@ -49,8 +49,6 @@ h2.secondary-menu-label { margin-left: 8px; }
#main-menu-wrapper ul#action-menu > li > a { color: #fff; }
-.intro-wide-wrapper { background-color: #fff; }
-
.slider-wrapper { padding: 20px; }
.post-wide-wrapper, .after-content-wrapper { background-color: #fff; }
diff --git a/themes/cusimple/cusimple.info b/themes/cusimple/cusimple.info
index 5ecd81d9e..213dfde3e 100644
--- a/themes/cusimple/cusimple.info
+++ b/themes/cusimple/cusimple.info
@@ -31,6 +31,7 @@ regions[content_sidebar_left] = 'Content Sidebar Left'
regions[content_bottom] = 'Content Bottom'
; Region background colors
+settings[intro_class] = 'background-gray-dark'
settings[slider_class] = 'background-gray-light'
settings[after_content2_class] = 'background-gray-light'
settings[footer_section_class] = 'background-gray-dark'
diff --git a/themes/cusimple/scss/simple-styles.scss b/themes/cusimple/scss/simple-styles.scss
index 0098b3fcf..07fa82e34 100644
--- a/themes/cusimple/scss/simple-styles.scss
+++ b/themes/cusimple/scss/simple-styles.scss
@@ -29,7 +29,6 @@ body {
background-color: #333;
}
#intro-wide-wrapper {
- background: #fff;
padding-bottom: 20px;
}
#main {
@@ -128,7 +127,6 @@ h2.secondary-menu-label {
// Backgrounds
.intro-wide-wrapper {
//padding-top: 20px;
- background-color: #fff;
}
.slider-wrapper {
diff --git a/themes/cuspirit/css/spirit-styles.css b/themes/cuspirit/css/spirit-styles.css
index aab5428dd..32085b54c 100644
--- a/themes/cuspirit/css/spirit-styles.css
+++ b/themes/cuspirit/css/spirit-styles.css
@@ -18,9 +18,7 @@ a:link, a:visited { color: #0267a4; }
a:hover { color: #e51c23; }
-.slider-wrapper { background-color: #272727; padding: 20px 0; color: #fff; }
-.slider-wrapper a { color: #cfb87c; }
-.slider-wrapper a:hover { color: #fff; }
+.slider-wrapper { padding: 20px 0; }
#main-menu-wrapper { background: #fff; -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); }
#main-menu-wrapper #navigation ul#main-menu > li > a:link, #main-menu-wrapper #navigation ul#main-menu > li > a:visited { color: #333; line-height: 64px; font-weight: 600; border-right: 1px solid #d7d7d7; padding: 0 12px; }
diff --git a/themes/cuspirit/cuspirit.info b/themes/cuspirit/cuspirit.info
index 380de76d1..97b573437 100644
--- a/themes/cuspirit/cuspirit.info
+++ b/themes/cuspirit/cuspirit.info
@@ -31,6 +31,8 @@ regions[content_sidebar_left] = 'Content Sidebar Left'
regions[content_bottom] = 'Content Bottom'
; Region background colors
+settings[intro_class] = 'background-gray-dark'
+settings[slider_class] = 'background-gray-dark'
settings[after_content2_class] = 'background-gray-light'
settings[footer_section_class] = 'background-gray-800'
settings[site_info_class] = 'background-black'
diff --git a/themes/cuspirit/scss/spirit-styles.scss b/themes/cuspirit/scss/spirit-styles.scss
index 60469f0fa..66cb5ea87 100644
--- a/themes/cuspirit/scss/spirit-styles.scss
+++ b/themes/cuspirit/scss/spirit-styles.scss
@@ -41,15 +41,7 @@ a:hover {
color: $red;
}
.slider-wrapper {
- background-color: $bg_dark1;
padding: 20px 0;
- color: #fff;
- a {
- color: $cugold;
- }
- a:hover {
- color: #fff;
- }
}
#main-menu-wrapper {
background: #fff;
diff --git a/themes/cuswatch/css/swatch-styles.css b/themes/cuswatch/css/swatch-styles.css
index 98ccd24bb..1ed0b110b 100644
--- a/themes/cuswatch/css/swatch-styles.css
+++ b/themes/cuswatch/css/swatch-styles.css
@@ -25,11 +25,7 @@ ul#action-menu a { line-height: 20px; margin: 20px 0 20px 10px; }
#navigation ul.action-menu a { margin: 18px 5px; color: #ccc; }
-.intro-wide-wrapper, .slider-wrapper { background-color: #171717; }
-
-.slider-wrapper { padding: 20px; color: #fff; }
-.slider-wrapper a { color: #cfb87c; }
-.slider-wrapper a:hover { color: #fff; }
+.slider-wrapper { padding: 20px; }
#page-title-wrapper { background-color: #171717; color: #fff; padding: 20px; }
#page-title-wrapper a { color: #cfb87c; }
diff --git a/themes/cuswatch/cuswatch.info b/themes/cuswatch/cuswatch.info
index 00b46fe61..1b00093bb 100644
--- a/themes/cuswatch/cuswatch.info
+++ b/themes/cuswatch/cuswatch.info
@@ -33,7 +33,7 @@ regions[content_bottom] = 'Content Bottom'
settings[layout_style] = 'layout-wide'
; Region background colors
-settings[slider_class] = 'background-gray-light'
+settings[slider_class] = 'background-gray-dark'
settings[after_content2_class] = 'background-gray-light'
settings[footer_section_class] = 'background-gray-dark'
settings[site_info_class] = 'background-black'
diff --git a/themes/cuswatch/scss/swatch-styles.scss b/themes/cuswatch/scss/swatch-styles.scss
index 1b31d41f2..5d839920b 100644
--- a/themes/cuswatch/scss/swatch-styles.scss
+++ b/themes/cuswatch/scss/swatch-styles.scss
@@ -92,19 +92,11 @@ ul#action-menu a {
}
-.intro-wide-wrapper,
-.slider-wrapper {
- background-color: #171717;
+.intro-wide-wrapper {
}
.slider-wrapper {
padding: 20px;
- color:#fff;
- a {
- color: $cugold;
- }
- a:hover {
- color: #fff;
- }
+
}
#page-title-wrapper {
background-color: #171717;
diff --git a/themes/cutradition/cutradition.info b/themes/cutradition/cutradition.info
index f07b64f98..76ac7c385 100644
--- a/themes/cutradition/cutradition.info
+++ b/themes/cutradition/cutradition.info
@@ -31,6 +31,7 @@ regions[content_sidebar_left] = 'Content Sidebar Left'
regions[content_bottom] = 'Content Bottom'
; Region background colors
+settings[intro_class] = 'background-gray-dark'
settings[slider_class] = 'background-gray-light'
settings[after_content2_class] = 'background-gray-light'
settings[footer_section_class] = 'background-white'
diff --git a/themes/ucb/templates/page--title.tpl.php b/themes/ucb/templates/page--title.tpl.php
index 43115d795..1c4024f5d 100644
--- a/themes/ucb/templates/page--title.tpl.php
+++ b/themes/ucb/templates/page--title.tpl.php
@@ -98,7 +98,7 @@
?>
$mobile_menu, 'attributes' => array('id' => 'main-menu-mobile', 'class' => array('links', 'clearfix')), 'heading' => array('text' => t('Mobile menu'),'level' => 'h2','class' => array('element-invisible')))); ?>
- $main_menu, 'attributes' => array('id' => 'main-menu-mobile', 'class' => array('links', 'clearfix')), 'heading' => array('text' => t('Mobile menu'),'level' => 'h2','class' => array('element-invisible')))); ?>
+ $main_menu, 'attributes' => array('id' => 'main-menu-mobile', 'class' => array('links', 'clearfix')), 'heading' => array('text' => t('Mobile menu'),'level' => 'h2','class' => array('element-invisible')))); ?>
$secondary_menu, 'attributes' => array('id' => 'secondary-menu-mobile', 'class' => array('links', 'clearfix')), )); ?>
-
+
diff --git a/themes/ucb/templates/page.tpl.php b/themes/ucb/templates/page.tpl.php
index 8cb5d996b..a0b6cb44c 100644
--- a/themes/ucb/templates/page.tpl.php
+++ b/themes/ucb/templates/page.tpl.php
@@ -99,7 +99,7 @@
?>
$mobile_menu, 'attributes' => array('id' => 'main-menu-mobile', 'class' => array('links', 'clearfix')), 'heading' => array('text' => t('Mobile menu'),'level' => 'h2','class' => array('element-invisible')))); ?>
- $main_menu, 'attributes' => array('id' => 'main-menu-mobile', 'class' => array('links', 'clearfix')), 'heading' => array('text' => t('Mobile menu'),'level' => 'h2','class' => array('element-invisible')))); ?>
+ $main_menu, 'attributes' => array('id' => 'main-menu-mobile', 'class' => array('links', 'clearfix')), 'heading' => array('text' => t('Mobile menu'),'level' => 'h2','class' => array('element-invisible')))); ?>
$secondary_menu, 'attributes' => array('id' => 'secondary-menu-mobile', 'class' => array('links', 'clearfix')), )); ?>
- ';
+ $(this).append(next);
+ });
+ $('.section-next').click(function(event){
+ event.preventDefault();
+
+ var nextSection = $(this).parents('.contextual-links-region').next();
+ var target = $('.block-section:first', nextSection).attr('id');
+ // Scroll to section.
+ $('html, body').animate({
+ scrollTop: $('#' + target).offset().top
+ }, 1000, function() {
+ $(target).focus();
+ });
+
+ });
+
+ // Sticky navigation
+ $('.layout-wide .section-page-navigation-wrapper').waypoint({
+ handler: function(e, d) {
+ $('.section-page-section-navigation').toggleClass('sticky').css('top', $('#sticky-menu').outerHeight());
+ },
+ offset: function() {
+ var sticky = $('#sticky-menu');
+ return ($('#sticky-menu').outerHeight());
+ }
+ });
+
+ $('.layout-boxed .section-page-navigation-wrapper').waypoint({
+ handler: function(e, d) {
+ $('.section-page-navigation-wrapper').toggleClass('sticky').css('top', $('#sticky-menu').outerHeight());;
+ },
+ offset: function() {
+ var sticky = $('#sticky-menu');
+ return ($('#sticky-menu').outerHeight());
+ }
+ });
+
+ // Add click events to section navigation.
+ $('.section-page-nav a, .section-page-section-navigation ul a').click(function(event){
+ event.preventDefault();
+ var target = $(this).attr('href');
+ // Scroll to section.
+ $('html, body').animate({
+ scrollTop: $(target).offset().top
+ }, 2000, function() {
+ $(target).focus();
+ });
+ });
+
+
+ $('#section-page-section-navigation-expand').click(function(event){
+ event.preventDefault();
+ $('.section-page-section-navigation ul').slideToggle();
+ $('i.fa', this).toggleClass('fa-reorder').toggleClass('fa-times');
+ if ($(this).attr('aria-expanded') == 'true') {
+ $(this).attr('aria-expanded', 'false');
+ } else {
+ $(this).attr('aria-expanded', 'true');
+ }
+ });
+
+ // Set active section for section navigation
+
+ function sectionPageActive(id) {
+ $('.section-page-nav i.fa').removeClass('fa-circle-o').addClass('fa-circle');
+ $('i.fa', '#section-nav-id-' + id).removeClass('fa-circle').addClass('fa-circle-o');
+
+ $('.section-page-section-navigation a').removeClass('active-section');
+ $('a#top-section-nav-' + id).addClass('active-section');
+
+ // Update url to add which section is being viewed.
+ var section = $('#section-anchor-' + id).attr('name');
+ var url = [location.protocol, '//', location.host, location.pathname].join('')
+
+ // Removing push state because of tracking pixel issues.
+ //history.pushState('', document.title, url + '#' + section);
+ }
+
+ });
+})( jQuery );
diff --git a/modules/custom/cu_section_page_bundle/scss/cu-section-page.scss b/modules/custom/cu_section_page_bundle/scss/cu-section-page.scss
new file mode 100644
index 000000000..32f745c71
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/scss/cu-section-page.scss
@@ -0,0 +1,286 @@
+@mixin rgbashadow($x, $y, $blur, $rgb, $transparency) {
+ -webkit-box-shadow: $x $y $blur rgba($rgb, $transparency);
+ -moz-box-shadow: $x $y $blur rgba($rgb, $transparency);
+ box-shadow: $x $y $blur rgba($rgb, $transparency);
+}
+
+@mixin element-invisible {
+ border: 0;
+ height: 1px !important;
+ overflow: hidden;
+ padding: 0 !important;
+ position: absolute !important;
+ width: 1px !important;
+ white-space: nowrap;
+}
+
+$cugold: #cfb87c;
+
+.node-type-section-page #main {
+ padding-bottom: 0;
+}
+
+.section-page-sections {
+ position: relative;
+ .block-section {
+ overflow: hidden;
+ width: 100vw;
+ position: relative;
+ left: 50%;
+ right: 50%;
+ margin-left: -50vw;
+ margin-right: -50vw;
+ // min-height: 100vh;
+ .section-page-size-full & {
+ min-height: 100vh;
+ }
+ display: flex;
+ align-items: center;
+ padding-bottom: 72px;
+ .block-section-content-wrapper {
+ width: 100%;
+ }
+ .section-next-wrapper {
+ position: absolute;
+ bottom:0;
+ left:0;
+ right:0;
+ text-align: center;
+ color:#fff;
+ text-shadow: 0 1px 2px rgba(0,0,0,.65);
+ z-index:1;
+ .section-next {
+ display: inline-block;
+ margin:0 auto;
+ //padding:20px;
+ font-size:48px;
+ }
+ @media screen and (min-width: 768px) {
+ .section-next {
+ font-size: 64px;
+ }
+ }
+ }
+ }
+}
+
+.node-type-section-page {
+
+ .section-page-hide-title {
+ .breadcrumb-wrapper,
+ .main-title-wrapper,
+ .page-title-wrapper,
+ h1.page-title {
+ @include element-invisible;
+ }
+ #main,
+ #main-content-wrapper {
+ padding: 0;
+ }
+ .section-page-body {
+ padding: 20px 0;
+ }
+ #main .region-content > .block:first-child {
+ margin-top: 20px;
+ }
+ }
+ .section-page-navigation-active {
+ .section-page-body {
+ // padding-right: 20px;
+ }
+ }
+
+ .post-title-wide-wrapper {
+ padding-bottom: 0;
+ }
+ .content-wrapper {
+ padding-bottom: 0;
+ }
+}
+.section-page-nav {
+ position: fixed;
+ top:50%;
+ right:-20px;
+ font-size: 24px;
+ @media screen and (min-width:600px) {
+ right:0px;
+ font-size: inherit;
+ }
+ transform: translateY(-50%);
+ z-index: 10;
+ display: flex;
+ align-items: center;
+ ul,
+ li {
+ margin:0;
+ padding:0;
+ list-style: none;
+ }
+ a:link,
+ a:visited {
+ padding:10px 10px;
+ text-align: center;
+ display: block;
+ color:#fff;
+ text-shadow: 0 1px 2px rgba(0,0,0,.75);
+ }
+ a:hover {
+ color:$cugold;
+ }
+}
+.block-section.active {
+ //background: red !important;
+}
+
+@media screen and (max-width:1160px) {
+ .block-section-content-wrapper {
+ padding-right:30px;
+ padding-left:30px;
+ }
+}
+.cssanimations .block-section-content.animated {
+ opacity: 0;
+ -webkit-animation-duration: .5s;
+ -moz-animation-duration: .5s;
+ animation-duration: .5s;
+}
+.section-page-trigger {
+ padding:1px;
+ background:#000;
+ width: 100vw;
+ position: relative;
+ left: 50%;
+ right: 50%;
+ margin-left: -50vw;
+ margin-right: -50vw;
+}
+.section-page-navigation-wrapper {
+ background-color: #000;
+ width: 100vw;
+ position: relative;
+ left: 50%;
+ right: 50%;
+ margin-left: -50vw;
+ margin-right: -50vw;
+ min-height:40px;
+
+}
+.section-page-section-navigation {
+ background:#000;
+ width: 100vw;
+ position: relative;
+ left: 50%;
+ right: 50%;
+ margin-left: -50vw;
+ margin-right: -50vw;
+ color:#fff;
+ padding:0 20px;
+ @include rgbashadow(0,0,10px,#000,.25);
+ ul, li {
+ list-style: none;
+ margin: 0;
+ padding:0;
+ }
+ ul {
+ display: none;
+ }
+
+ a:link,
+ a:visited {
+ display: block;
+ padding:10px 0;
+ //line-height: 40px;
+ color:#fff;
+ font-weight: bold;
+ &.active-section {
+ color: $cugold;
+ }
+ }
+
+
+ @media screen and (min-width:768px) {
+ &.sticky {
+ position: fixed;
+ z-index: 10;
+ top:0;
+ }
+ ul {
+ display:flex !important;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ }
+ #section-page-section-navigation-expand {
+ display: none;
+ }
+ a:link,
+ a:visited {
+ padding:10px;
+ }
+ }
+}
+.section-page-section-navigation:not(.sticky),
+.section-page-navigation-wrapper:not(.sticky) {
+ top: auto !important;
+}
+#sticky-menu.scroll {
+ position: static;
+}
+#sticky-menu {
+ background: #000 !important;
+}
+
+.layout-boxed {
+
+ .section-page-section-navigation {
+ width: 100%;
+ position: relative;
+ left:auto;
+ right:auto;
+ margin:0;
+ &.sticky {
+
+ }
+ }
+ .section-page-navigation-wrapper {
+ margin: 0 -20px;
+ position: relative;
+ left:auto;
+ right:auto;
+ width: auto;
+ background: none;
+ &.sticky {
+ position: fixed;
+ z-index: 10;
+ top:0;
+ width:100%;
+ max-width: 1200px;
+ }
+ }
+ .section-page-sections {
+ position: relative;
+ margin: 0 -20px;
+
+ .block-section {
+ overflow: hidden;
+ width: 100%;
+ position: relative;
+ left:auto;
+ right:auto;
+ margin:0;
+ }
+ }
+}
+
+/* Editing */
+
+.section-page-sections > .contextual-links-region {
+
+ &:hover {
+ .contextual-links-wrapper {
+ display: block;
+ z-index: 2;
+ right: 20px;
+ }
+ }
+}
diff --git a/modules/custom/cu_section_page_bundle/templates/1page--type--section-page.tpl.php b/modules/custom/cu_section_page_bundle/templates/1page--type--section-page.tpl.php
new file mode 100644
index 000000000..ccaaa9e58
--- /dev/null
+++ b/modules/custom/cu_section_page_bundle/templates/1page--type--section-page.tpl.php
@@ -0,0 +1,215 @@
+