Timeline Express - Version 1.1.5.6

Version Description

  • February 5th, 2015 =
  • Fixed: Issue with the excerpt being truncated and throwing off entire timeline layout (issue occured when truncate happened mid html tag , which left a tag open)
  • Fixed: Wrapped missing text in text domain
Download this release

Release Info

Developer eherman24
Plugin Icon 128x128 Timeline Express
Version 1.1.5.6
Comparing to
See all releases

Code changes from version 1.1.5.5 to 1.1.5.6

classes/class.timeline-express.php CHANGED
@@ -658,7 +658,7 @@ if(!class_exists("timelineExpressBase"))
658
  'timeline-title-alignment' => "left",
659
  'timeline-title-size' => "h1",
660
  'default-announcement-color' => '#75CE66',
661
- 'excerpt-trim-length' => '30',
662
  'excerpt-random-length' => '0',
663
  'read-more-visibility' => '1',
664
  'date-visibility' => '1',
@@ -771,7 +771,7 @@ if(!class_exists("timelineExpressBase"))
771
  }
772
  return $custom_content;
773
  } else {
774
- $custom_content = '<strong class="timeline-express-single-page-announcement-date">Announcement Date : ' . date( 'M j , Y' , $announcement_date ) . '</strong>';
775
  $custom_content .= $content;
776
  if ( $referer != '' ) {
777
  $custom_content .= '<a href="' . $referer . '" class="return-to-timeline"><i class="fa fa-chevron-left"></i> ' . __( 'Back' , 'timeline-express' ) . '</a>';
@@ -1050,7 +1050,9 @@ if(!class_exists("timelineExpressBase"))
1050
  $read_more_button = '<a href="' . get_the_permalink() . '" class="' . apply_filters( "timeline-express-read-more-class" , $button_classes ) . '">' . __( 'Read more' , 'timeline-express' ) . '</a>';
1051
  }
1052
  ?>
1053
- <span class="the-excerpt"><?php echo apply_filters( 'the_content' , $this->te_wp_trim_words_retain_formatting( get_the_content() , $trim_array[$random_trim] , $elipses ) ); ?></span>
 
 
1054
  <?php
1055
  } else {
1056
  $trim_length = $this->timeline_express_optionVal['excerpt-trim-length'];
@@ -1062,7 +1064,10 @@ if(!class_exists("timelineExpressBase"))
1062
  $read_more_button = '<a href="' . get_the_permalink() . '" class="' . apply_filters( "timeline-express-read-more-class" , $button_classes ) . '">' . __( 'Read more' , 'timeline-express' ) . '</a>';
1063
  }
1064
  ?>
1065
- <span class="the-excerpt"><?php echo apply_filters( 'the_content' , $this->te_wp_trim_words_retain_formatting( get_the_content() , $trim_length , $elipses ) ); ?></span>
 
 
 
1066
  <?php
1067
  }
1068
  ?>
@@ -1087,40 +1092,111 @@ if(!class_exists("timelineExpressBase"))
1087
  return $shortcode;
1088
  }
1089
 
1090
- /* Adapt WordPress core wp_trim_words to retain formatting */
1091
- function te_wp_trim_words_retain_formatting( $text, $num_words = 55, $more = null ) {
1092
- if ( null === $more )
1093
- $more = __( '&hellip;' );
1094
- $original_text = $text;
1095
- /* translators: If your word count is based on single characters (East Asian characters),
1096
- enter 'characters'. Otherwise, enter 'words'. Do not translate into your own language. */
1097
- if ( 'characters' == _x( 'words', 'word count: words or characters?' ) && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) {
1098
- $text = trim( preg_replace( "/[\n\r\t ]+/", ' ', $text ), ' ' );
1099
- preg_match_all( '/./u', $text, $words_array );
1100
- $words_array = array_slice( $words_array[0], 0, $num_words + 1 );
1101
- $sep = '';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1102
  } else {
1103
- $words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
1104
- $sep = ' ';
 
 
 
1105
  }
1106
- if ( count( $words_array ) > $num_words ) {
1107
- array_pop( $words_array );
1108
- $text = implode( $sep, $words_array );
1109
- $text = $text . $more;
1110
- } else {
1111
- $text = implode( $sep, $words_array );
 
 
 
1112
  }
1113
- /**
1114
- * Filter the text content after words have been trimmed.
1115
- *
1116
- * @since 3.3.0
1117
- *
1118
- * @param string $text The trimmed text.
1119
- * @param int $num_words The number of words to trim the text to. Default 5.
1120
- * @param string $more An optional string to append to the end of the trimmed text, e.g. &hellip;.
1121
- * @param string $original_text The text before it was trimmed.
1122
- */
1123
- return apply_filters( 'wp_trim_words', $text, $num_words, $more, $original_text );
 
 
1124
  }
1125
 
1126
  // retrieves the attachment ID from the file URL
@@ -1168,7 +1244,7 @@ if(!class_exists("timelineExpressBase"))
1168
  $this->timeline_express_optionVal['timeline-title-alignment'] = "left";
1169
  $this->timeline_express_optionVal['timeline-title-size'] = "h1";
1170
  $this->timeline_express_optionVal['default-announcement-color'] = '#75CE66';
1171
- $this->timeline_express_optionVal['excerpt-trim-length'] = '30';
1172
  $this->timeline_express_optionVal['excerpt-random-length'] = '0';
1173
  $this->timeline_express_optionVal['read-more-visibility'] = '1';
1174
  $this->timeline_express_optionVal['date-visibility'] = '1';
658
  'timeline-title-alignment' => "left",
659
  'timeline-title-size' => "h1",
660
  'default-announcement-color' => '#75CE66',
661
+ 'excerpt-trim-length' => '250',
662
  'excerpt-random-length' => '0',
663
  'read-more-visibility' => '1',
664
  'date-visibility' => '1',
771
  }
772
  return $custom_content;
773
  } else {
774
+ $custom_content = '<strong class="timeline-express-single-page-announcement-date">' . __( 'Announcement Date' , 'timeline-express' ) . ' : ' . date( 'M j , Y' , $announcement_date ) . '</strong>';
775
  $custom_content .= $content;
776
  if ( $referer != '' ) {
777
  $custom_content .= '<a href="' . $referer . '" class="return-to-timeline"><i class="fa fa-chevron-left"></i> ' . __( 'Back' , 'timeline-express' ) . '</a>';
1050
  $read_more_button = '<a href="' . get_the_permalink() . '" class="' . apply_filters( "timeline-express-read-more-class" , $button_classes ) . '">' . __( 'Read more' , 'timeline-express' ) . '</a>';
1051
  }
1052
  ?>
1053
+ <span class="the-excerpt">
1054
+ <?php echo apply_filters( 'the_content' , $this->timeline_express_custom_truncate( get_the_content() , $trim_array[$random_trim] , $elipses , false, true ) ); ?>
1055
+ </span>
1056
  <?php
1057
  } else {
1058
  $trim_length = $this->timeline_express_optionVal['excerpt-trim-length'];
1064
  $read_more_button = '<a href="' . get_the_permalink() . '" class="' . apply_filters( "timeline-express-read-more-class" , $button_classes ) . '">' . __( 'Read more' , 'timeline-express' ) . '</a>';
1065
  }
1066
  ?>
1067
+ <span class="the-excerpt">
1068
+ <?php // echo apply_filters( 'the_content' , $this->te_wp_trim_words_retain_formatting( get_the_content() , $trim_length , $elipses ) ); ?>
1069
+ <?php echo apply_filters( 'the_content' , $this->timeline_express_custom_truncate( get_the_content() , $trim_length , $elipses , false, true ) ); ?>
1070
+ </span>
1071
  <?php
1072
  }
1073
  ?>
1092
  return $shortcode;
1093
  }
1094
 
1095
+ /*
1096
+ * Re-Write of the custom excerpt function
1097
+ * - trims at the set char. count (inside of timeline express settings)
1098
+ * - counts by character not by word
1099
+ * @since v1.1.5.6
1100
+ */
1101
+ public function timeline_express_custom_truncate( $text, $length = 100, $ending = '&hellip;', $exact = false, $considerHtml = true ) {
1102
+ if ($considerHtml) {
1103
+
1104
+ // if the plain text is shorter than the maximum length, return the whole text
1105
+ if (strlen(utf8_decode(preg_replace( array( '/<.*?>/', '/\n/', '/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i' ), array( '', '', ' ' ), $text))) <= $length) {
1106
+ return $text;
1107
+ }
1108
+
1109
+ // splits all html-tags to scanable lines
1110
+ preg_match_all('/(<.+?>)?([^<>]*)/s', $text, $lines, PREG_SET_ORDER);
1111
+
1112
+ $total_length = ( $ending === '&hellip;' ) ? 2 : strlen( utf8_decode($ending) );
1113
+ $open_tags = array();
1114
+ $truncate = '';
1115
+
1116
+ foreach ($lines as $line_matchings) {
1117
+ // if there is any html-tag in this line, handle it and add it (uncounted) to the output
1118
+ if (!empty($line_matchings[1])) {
1119
+ // if it's an "empty element" with or without xhtml-conform closing slash (f.e. <br/>)
1120
+ if (preg_match('/^<(\s*.+?\/\s*|\s*(img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param)(\s.+?)?)>$/is', $line_matchings[1])) {
1121
+ // do nothing
1122
+ // if tag is a closing tag (f.e. </b>)
1123
+ } else if (preg_match('/^<\s*\/([^\s]+?)\s*>$/s', $line_matchings[1], $tag_matchings)) {
1124
+ // delete tag from $open_tags list
1125
+ $pos = array_search($tag_matchings[1], $open_tags);
1126
+ if ($pos !== false) {
1127
+ unset($open_tags[$pos]);
1128
+ }
1129
+ // if tag is an opening tag (f.e. <b>)
1130
+ } else if (preg_match('/^<\s*([^\s>!]+).*?>$/s', $line_matchings[1], $tag_matchings)) {
1131
+ // add tag to the beginning of $open_tags list
1132
+ array_unshift($open_tags, strtolower($tag_matchings[1]));
1133
+ }
1134
+ // add html-tag to $truncate'd text
1135
+ $truncate .= $line_matchings[1];
1136
+ }
1137
+
1138
+ // calculate the length of the plain text part of the line; handle entities as one character
1139
+ $content_length = strlen(utf8_decode(preg_replace('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', ' ', $line_matchings[2])));
1140
+ if ($total_length+$content_length> $length) {
1141
+ // the number of characters which are left
1142
+ $left = $length - $total_length;
1143
+ $entities_length = 0;
1144
+ // search for html entities
1145
+ if (preg_match_all('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', $line_matchings[2], $entities, PREG_OFFSET_CAPTURE)) {
1146
+ // calculate the real length of all entities in the legal range
1147
+ foreach ($entities[0] as $entity) {
1148
+ if ($entity[1]+1-$entities_length <= $left) {
1149
+ $left--;
1150
+ $entities_length += strlen(utf8_decode($entity[0]));
1151
+ } else {
1152
+ // no more characters left
1153
+ break;
1154
+ }
1155
+ }
1156
+ }
1157
+ $truncate .= substr($line_matchings[2], 0, $left+$entities_length);
1158
+ // maximum lenght is reached, so get off the loop
1159
+ break;
1160
+ } else {
1161
+ $truncate .= $line_matchings[2];
1162
+ $total_length += $content_length;
1163
+ }
1164
+
1165
+ // if the maximum length is reached, get off the loop
1166
+ if($total_length >= $length) {
1167
+ break;
1168
+ }
1169
+ }
1170
  } else {
1171
+ if (strlen(utf8_decode($text)) <= $length) {
1172
+ return $text;
1173
+ } else {
1174
+ $truncate = substr($text, 0, $length - strlen(utf8_decode($ending)));
1175
+ }
1176
  }
1177
+
1178
+ // if the words shouldn't be cut in the middle...
1179
+ if (!$exact) {
1180
+ // ...search the last occurance of a space...
1181
+ $spacepos = strrpos($truncate, ' ');
1182
+ if (isset($spacepos)) {
1183
+ // ...and cut the text in this position
1184
+ $truncate = substr($truncate, 0, $spacepos);
1185
+ }
1186
  }
1187
+
1188
+ // add the defined ending to the text
1189
+ $truncate .= $ending;
1190
+
1191
+ if($considerHtml) {
1192
+ // close all unclosed html-tags
1193
+ foreach ($open_tags as $tag) {
1194
+ $truncate .= '</' . $tag . '>';
1195
+ }
1196
+ }
1197
+
1198
+ return $truncate;
1199
+
1200
  }
1201
 
1202
  // retrieves the attachment ID from the file URL
1244
  $this->timeline_express_optionVal['timeline-title-alignment'] = "left";
1245
  $this->timeline_express_optionVal['timeline-title-size'] = "h1";
1246
  $this->timeline_express_optionVal['default-announcement-color'] = '#75CE66';
1247
+ $this->timeline_express_optionVal['excerpt-trim-length'] = '250';
1248
  $this->timeline_express_optionVal['excerpt-random-length'] = '0';
1249
  $this->timeline_express_optionVal['read-more-visibility'] = '1';
1250
  $this->timeline_express_optionVal['date-visibility'] = '1';
pages/options.php CHANGED
@@ -250,14 +250,14 @@ function toggle_delete_checkbox() {
250
  <tr valign="top">
251
  <th scope="row"><label for="excerpt-trim-length"><?php _e('Announcement Excerpt Length','timeline-express'); ?></label></th>
252
  <td>
253
- <input <?php if( $this->timeline_express_optionVal['excerpt-random-length'] == '1' ) { ?> style="display:none;" <?php } ?> type="number" name="excerpt-trim-length" min="25" max="200" value="<?php echo $this->timeline_express_optionVal['excerpt-trim-length']; ?>"><label for="excerpt-random-length"><input type="checkbox" id="excerpt-random-length" name="excerpt-random-length" onclick="changeRandomTrimLengthCheckbox();" value="1" <?php checked( $this->timeline_express_optionVal['excerpt-random-length'] , '1' ); ?> <?php if( $this->timeline_express_optionVal['excerpt-random-length'] == '0' ) { ?> style="margin-left:.5em;" <?php } ?>><span id="random-lenth-text-container"<?php if( $this->timeline_express_optionVal['excerpt-random-length'] == '0' ) { ?> class="random-length-text" <?php } ?>>random length</label></span>
254
  </td>
255
  </tr>
256
  <tr>
257
  <td></td>
258
  <!-- Excerpt Trim Length Description -->
259
  <td class="timeline-express-settings-description">
260
- <?php _e('set the length of the excerpt for each announcement. ( min=25;max=200 eg: 50 = 50 characters )','timeline-express'); ?>
261
  </td>
262
  </tr>
263
  <!-- Toggle Date Visibility -->
@@ -389,7 +389,7 @@ function toggle_delete_checkbox() {
389
  <td></td>
390
  <!-- Background Line Color Description -->
391
  <td class="timeline-express-settings-description">
392
- <?php _e('select this to delete all announcement posts from the data base on plugin uninstallation. this can not be undone, once they are deleted they are gone forever. If you want to keep them, export your announcements before uninstalling.','timeline-express'); ?>
393
  </td>
394
  </tr>
395
  <tr>
250
  <tr valign="top">
251
  <th scope="row"><label for="excerpt-trim-length"><?php _e('Announcement Excerpt Length','timeline-express'); ?></label></th>
252
  <td>
253
+ <input <?php if( $this->timeline_express_optionVal['excerpt-random-length'] == '1' ) { ?> style="display:none;" <?php } ?> type="number" name="excerpt-trim-length" min="25" max="500" value="<?php echo $this->timeline_express_optionVal['excerpt-trim-length']; ?>"><label for="excerpt-random-length"><input type="checkbox" id="excerpt-random-length" name="excerpt-random-length" onclick="changeRandomTrimLengthCheckbox();" value="1" <?php checked( $this->timeline_express_optionVal['excerpt-random-length'] , '1' ); ?> <?php if( $this->timeline_express_optionVal['excerpt-random-length'] == '0' ) { ?> style="margin-left:.5em;" <?php } ?>><span id="random-lenth-text-container"<?php if( $this->timeline_express_optionVal['excerpt-random-length'] == '0' ) { ?> class="random-length-text" <?php } ?>>random length</label></span>
254
  </td>
255
  </tr>
256
  <tr>
257
  <td></td>
258
  <!-- Excerpt Trim Length Description -->
259
  <td class="timeline-express-settings-description">
260
+ <?php _e('Set the length of the excerpt for each announcement. ( min=25;max=500 eg: 50 = 50 characters )','timeline-express'); ?>
261
  </td>
262
  </tr>
263
  <!-- Toggle Date Visibility -->
389
  <td></td>
390
  <!-- Background Line Color Description -->
391
  <td class="timeline-express-settings-description">
392
+ <?php _e('Select this to delete all announcement posts from the data base on plugin uninstallation. this can not be undone, once they are deleted they are gone forever. If you want to keep them, export your announcements before uninstalling.','timeline-express'); ?>
393
  </td>
394
  </tr>
395
  <tr>
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://www.evan-herman.com/contact/?contact-reason=I%20want%20to%20
4
  Tags: vertical, timeline, animated, css3, animations, evan, herman, evan herman, easy, time, line, font awesome, font, awesome, announcements, notifications, simple, events, calendar, scroll, triggered, scrolling, animated, fade, in, fade in
5
  Requires at least: 3.9
6
  Tested up to: 4.1
7
- Stable tag: 1.1.5.5
8
  License: GPLv2 or later
9
 
10
  Timeline express allows you to create a beautiful vertical animated and responsive timeline of posts , without writing a single line of code. Sweet!
@@ -301,6 +301,10 @@ add_filter( 'timeline_express_custom_template' , 'custom_timeline_express_templa
301
 
302
  == Changelog ==
303
 
 
 
 
 
304
  = 1.1.5.5 - February 1st, 2015 =
305
  * Fixed: Wrapped admin column headers in get text filter
306
  * Fixed: Sort orders by announcement date
@@ -406,32 +410,36 @@ add_filter( 'timeline_express_custom_template' , 'custom_timeline_express_templa
406
 
407
  == Upgrade Notice ==
408
 
 
 
 
 
409
  = 1.1.5.5 - February 1st, 2015 =
410
- Fixed: Wrapped admin column headers in get text filter
411
- Fixed: Sort orders by announcement date
412
- Enhancement: Added filter to define custom image size for announcement image (see <a href="https://wordpress.org/plugins/timeline-express/other_notes/">documentation</a>)
413
 
414
  = 1.1.5.4 - January 19th, 2015 =
415
- Fixed: Remove unecessary filter in the main class file
416
 
417
  = 1.1.5.3 - January 16th, 2015 =
418
- Fixed: Fixed incorrect date save format
419
 
420
  = 1.1.5.2 - January 10th, 2015 =
421
- Fixed: Errors thrown from new user fields hook, when no custom fields are defined by the user
422
- Fixed: Incorrect date format for new announcements
423
 
424
  = 1.1.5.1 - January 10th, 2015 =
425
- Fixed: Data saving incorrectly to the database, causing errors to be thrown on front and back end
426
 
427
  = 1.1.5 - January 10th, 2015 =
428
- Enhancement: Added new filter ( `timeline_express_custom_fields` ) which allows users to define their own custom fields to use on Timeline Announcement posts (see readme for example).
429
- Fixed: CMB class file causing conflicts with other plugins, and removed the old version
430
- Fixed: Adjusted a few styles on the announcement post page
431
 
432
  = 1.1.4.1 - January 2nd, 2015 =
433
- Fixed: Issue with date storing different on backend vs front end
434
- Fixed: Settings link on the Timeline Express welcome page
435
 
436
  = 1.1.4 - December 24th, 2014 =
437
  * Enhancement: Implemented premium support licensing. Any issues that require immediate response, or custom code should purchase a support license.
4
  Tags: vertical, timeline, animated, css3, animations, evan, herman, evan herman, easy, time, line, font awesome, font, awesome, announcements, notifications, simple, events, calendar, scroll, triggered, scrolling, animated, fade, in, fade in
5
  Requires at least: 3.9
6
  Tested up to: 4.1
7
+ Stable tag: 1.1.5.6
8
  License: GPLv2 or later
9
 
10
  Timeline express allows you to create a beautiful vertical animated and responsive timeline of posts , without writing a single line of code. Sweet!
301
 
302
  == Changelog ==
303
 
304
+ = 1.1.5.6 - February 5th, 2015 =
305
+ * Fixed: Issue with the excerpt being truncated and throwing off entire timeline layout (issue occured when truncate happened mid html tag , which left a tag open)
306
+ * Fixed: Wrapped missing text in text domain
307
+
308
  = 1.1.5.5 - February 1st, 2015 =
309
  * Fixed: Wrapped admin column headers in get text filter
310
  * Fixed: Sort orders by announcement date
410
 
411
  == Upgrade Notice ==
412
 
413
+ = 1.1.5.6 - February 5th, 2015 =
414
+ * Fixed: Issue with the excerpt being truncated and throwing off entire timeline layout (issue occured when truncate happened mid html tag , which left a tag open)
415
+ * Fixed: Wrapped missing text in text domain
416
+
417
  = 1.1.5.5 - February 1st, 2015 =
418
+ * Fixed: Wrapped admin column headers in get text filter
419
+ * Fixed: Sort orders by announcement date
420
+ * Enhancement: Added filter to define custom image size for announcement image (see <a href="https://wordpress.org/plugins/timeline-express/other_notes/">documentation</a>)
421
 
422
  = 1.1.5.4 - January 19th, 2015 =
423
+ * Fixed: Remove unecessary filter in the main class file
424
 
425
  = 1.1.5.3 - January 16th, 2015 =
426
+ * Fixed: Fixed incorrect date save format
427
 
428
  = 1.1.5.2 - January 10th, 2015 =
429
+ * Fixed: Errors thrown from new user fields hook, when no custom fields are defined by the user
430
+ * Fixed: Incorrect date format for new announcements
431
 
432
  = 1.1.5.1 - January 10th, 2015 =
433
+ * Fixed: Data saving incorrectly to the database, causing errors to be thrown on front and back end
434
 
435
  = 1.1.5 - January 10th, 2015 =
436
+ * Enhancement: Added new filter ( `timeline_express_custom_fields` ) which allows users to define their own custom fields to use on Timeline Announcement posts (see readme for example).
437
+ * Fixed: CMB class file causing conflicts with other plugins, and removed the old version
438
+ * Fixed: Adjusted a few styles on the announcement post page
439
 
440
  = 1.1.4.1 - January 2nd, 2015 =
441
+ * Fixed: Issue with date storing different on backend vs front end
442
+ * Fixed: Settings link on the Timeline Express welcome page
443
 
444
  = 1.1.4 - December 24th, 2014 =
445
  * Enhancement: Implemented premium support licensing. Any issues that require immediate response, or custom code should purchase a support license.
timeline-express.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: Timeline Express
5
  Plugin URI: http://www.evan-herman.com
6
  Description: Create a beautiful vertical, CSS3 animated and responsive timeline in minutes flat without writing code.
7
- Version: 1.1.5.5
8
  Author: Evan Herman
9
  Author URI: http://www.evan-herman.com
10
  License: GPL2
@@ -28,7 +28,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28
  #_________________________________________________ CONSTANTS
29
 
30
  /** Configuration **/
31
- if(!defined('TIMELINE_EXPRESS_VERSION_CURRENT')) define('TIMELINE_EXPRESS_VERSION_CURRENT', '1.1.5.5');
32
  if(!defined('TIMELINE_EXPRESS_PATH')) define('TIMELINE_EXPRESS_PATH', plugin_dir_path( __FILE__ ));
33
  if(!defined('TIMELINE_EXPRESS_URL')) define('TIMELINE_EXPRESS_URL', plugins_url('timeline-express/'));
34
  if(!defined('TIMELINE_EXPRESS_URL_WP')) define('TIMELINE_EXPRESS_URL_WP', get_bloginfo('url'));
4
  Plugin Name: Timeline Express
5
  Plugin URI: http://www.evan-herman.com
6
  Description: Create a beautiful vertical, CSS3 animated and responsive timeline in minutes flat without writing code.
7
+ Version: 1.1.5.6
8
  Author: Evan Herman
9
  Author URI: http://www.evan-herman.com
10
  License: GPL2
28
  #_________________________________________________ CONSTANTS
29
 
30
  /** Configuration **/
31
+ if(!defined('TIMELINE_EXPRESS_VERSION_CURRENT')) define('TIMELINE_EXPRESS_VERSION_CURRENT', '1.1.5.6');
32
  if(!defined('TIMELINE_EXPRESS_PATH')) define('TIMELINE_EXPRESS_PATH', plugin_dir_path( __FILE__ ));
33
  if(!defined('TIMELINE_EXPRESS_URL')) define('TIMELINE_EXPRESS_URL', plugins_url('timeline-express/'));
34
  if(!defined('TIMELINE_EXPRESS_URL_WP')) define('TIMELINE_EXPRESS_URL_WP', get_bloginfo('url'));