Timeline Express - Version 1.1.4

Version Description

  • December 24th, 2014 =
  • Enhancement: Implemented premium support licensing. Any issues that require immediate response, or custom code should purchase a support license.
  • Enhancement: Added a new filter to customize the announcement slug (possibly for SEO purposes) (timeline-express-slug , check documentation for examples)
  • Enhancement: Moved settings/support below Timeline Express parent menu item
  • Fixed: Errors thrown when announcement images aren't set
  • Fixed: Display error where announcements displayed a different date on the backend vs frontend
Download this release

Release Info

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

Code changes from version 1.1.3.2 to 1.1.4

classes/class.timeline-express.php CHANGED
@@ -41,6 +41,7 @@ if(!class_exists("timelineExpressBase"))
41
  public function deactivate() {
42
  // clear our re-write rules on deactivate
43
  delete_option('post_type_rules_flased_te-announcements');
 
44
  }
45
 
46
  public function uninstall() {
@@ -62,6 +63,8 @@ if(!class_exists("timelineExpressBase"))
62
  // delete options on plugin uninstall
63
  // after we check the 'delete-announcement-posts-on-uninstallation' setting
64
  delete_option( TIMELINE_EXPRESS_OPTION );
 
 
65
  }
66
 
67
  /***** INITIAL SETUP
@@ -132,8 +135,165 @@ if(!class_exists("timelineExpressBase"))
132
  add_action( 'admin_head', array( &$this , 'timeline_express_add_tinymce' ) );
133
  // filter to keep our plugin auto updated :) , we want all users on the most recent version (the best we can) new @v1.0.8
134
  add_filter( 'auto_update_plugin', array( &$this , 'include_timeline_express_in_auto_updates' ), 10, 2 );
 
 
 
 
 
 
 
 
135
  }
136
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  /*
138
  * include_timeline_express_in_auto_updates();
139
  *
@@ -166,29 +326,29 @@ if(!class_exists("timelineExpressBase"))
166
  // Register our Announcement Custom Post Type
167
  // used to easily manage the announcements on the site
168
  $timeline_express_labels = array(
169
- 'name' => 'Timeline Express',
170
- 'singular_name' => 'Announcement', // menu item at the top New > Announcement
171
- 'menu_name' => 'Timeline Express', // menu name
172
- 'parent_item_colon' => 'Timeline Express:',
173
- 'all_items' => 'All Announcements',
174
- 'view_item' => 'View Announcement',
175
- 'add_new_item' => 'New Announcement',
176
- 'add_new' => 'New Announcement',
177
- 'edit_item' => 'Edit Announcement',
178
- 'update_item' => 'Update Announcement',
179
- 'search_items' => 'Search Announcements',
180
- 'not_found' => 'No Timeline Express Announcements Found',
181
- 'not_found_in_trash' => 'No Timeline Express Announcements in Trash',
182
  );
183
  $timeline_express_rewrite = array(
184
- 'slug' => 'announcement',
185
  'with_front' => false,
186
  'pages' => true,
187
  'feeds' => true,
188
  );
189
  $timeline_express_args = array(
190
  'label' => 'timeline-express-announcement',
191
- 'description' => 'Post type for adding timeline express announcements to the site',
192
  'labels' => $timeline_express_labels,
193
  'supports' => array( 'title', 'editor' ),
194
  'taxonomies' => array(),
@@ -516,8 +676,11 @@ if(!class_exists("timelineExpressBase"))
516
  $referer = $_SERVER['HTTP_REFERER'];
517
  if ( $announcement_image != '' ) {
518
  $announcement_image_id = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid='%s';", esc_url( $announcement_image) ) );
519
- $announcement_header_image = wp_get_attachment_image_src( $announcement_image_id[0] , 'timeline-express-announcement-header');
520
- $custom_content = '<img class="announcement-banner-image" src="' . esc_url ( $announcement_header_image[0] ) . '" alt="' . get_the_title( $post->ID ) . '">';
 
 
 
521
  $custom_content .= '<strong class="timeline-express-single-page-announcement-date">Announcement Date : ' . date( 'M j , Y' , $announcement_date ) . '</strong>';
522
  $custom_content .= $content;
523
  if ( $referer != '' ) {
@@ -579,7 +742,7 @@ if(!class_exists("timelineExpressBase"))
579
  public function addStyles() {
580
 
581
  $screen = get_current_screen();
582
- $print_styles_on_screen_array = array( 'settings_page_timeline-express-settings' , 'admin_page_timeline-express-welcome' );
583
 
584
  if ( in_array( $screen->base , $print_styles_on_screen_array ) || in_array( $screen->id, array( 'edit-te_announcements' ) ) ) {
585
  // Register Styles
@@ -594,7 +757,7 @@ if(!class_exists("timelineExpressBase"))
594
  public function addScripts() {
595
  $screen = get_current_screen();
596
  global $post;
597
- if ( in_array( $screen->base , array('settings_page_timeline-express-settings') ) || $screen->post_type == 'te_announcements' ) {
598
  // enqueue the admin scripts here
599
  // Add the color picker css file
600
  // used to select colors on the settings page
@@ -752,7 +915,7 @@ if(!class_exists("timelineExpressBase"))
752
  while( $announcement_query->have_posts() ) {
753
  $announcement_query->the_post();
754
  global $post;
755
- $announcement_image = esc_url( get_post_meta( $post->ID , 'announcement_image' , true ) );
756
  $button_classes = 'cd-read-more btn btn-primary ';
757
  ?>
758
  <div class="cd-timeline-block">
@@ -804,7 +967,6 @@ if(!class_exists("timelineExpressBase"))
804
  $read_more_button = '';
805
  } else {
806
  $elipses = __( '...' , 'timeline-express' );
807
- // $read_more_button = '<a href="' . get_the_permalink() . '" class="cd-read-more btn btn-primary">Read more</a>';
808
  $read_more_button = '<a href="' . get_the_permalink() . '" class="' . apply_filters( "timeline-express-read-more-class" , $button_classes ) . '">' . __( 'Read more' , 'timeline-express' ) . '</a>';
809
  }
810
  ?>
@@ -849,7 +1011,7 @@ if(!class_exists("timelineExpressBase"))
849
  function te_wp_trim_words_retain_formatting( $text, $num_words = 55, $more = null ) {
850
  if ( null === $more )
851
  $more = __( '&hellip;' );
852
- $original_text = $text;
853
  /* translators: If your word count is based on single characters (East Asian characters),
854
  enter 'characters'. Otherwise, enter 'words'. Do not translate into your own language. */
855
  if ( 'characters' == _x( 'words', 'word count: words or characters?' ) && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) {
@@ -893,9 +1055,11 @@ if(!class_exists("timelineExpressBase"))
893
  public function addAdministrationMenu() {
894
  // Sub Items
895
  // Settings Page
896
- add_submenu_page('options-general.php', __('Timeline Express Settings','timeline-express'), __('Timeline Express','timeline-express'), 'manage_options', 'timeline-express-settings', array(&$this, 'generateOptionsPage'));
897
  // Welcome Page
898
  add_submenu_page('options.php', __('Timeline Express Welcome','timeline-express'), __('Timeline Express Welcome','timeline-express'), 'manage_options', 'timeline-express-welcome', array(&$this, 'generateWelcomePage'));
 
 
899
  }
900
 
901
 
@@ -909,6 +1073,9 @@ if(!class_exists("timelineExpressBase"))
909
  }
910
  public function generateWelcomePage() {
911
  require_once TIMELINE_EXPRESS_PATH . 'pages/welcome.php'; // include our welcome page
 
 
 
912
  }
913
 
914
 
41
  public function deactivate() {
42
  // clear our re-write rules on deactivate
43
  delete_option('post_type_rules_flased_te-announcements');
44
+ wp_clear_scheduled_hook( 'timeline_express_support_license_check' );
45
  }
46
 
47
  public function uninstall() {
63
  // delete options on plugin uninstall
64
  // after we check the 'delete-announcement-posts-on-uninstallation' setting
65
  delete_option( TIMELINE_EXPRESS_OPTION );
66
+ delete_option( 'timeline_express_license_status' );
67
+ delete_option( 'timeline_express_license_key' );
68
  }
69
 
70
  /***** INITIAL SETUP
135
  add_action( 'admin_head', array( &$this , 'timeline_express_add_tinymce' ) );
136
  // filter to keep our plugin auto updated :) , we want all users on the most recent version (the best we can) new @v1.0.8
137
  add_filter( 'auto_update_plugin', array( &$this , 'include_timeline_express_in_auto_updates' ), 10, 2 );
138
+ // register timeline express license setting
139
+ add_action('admin_init', array( &$this , 'timeline_express_register_settings' ) );
140
+ // Remote activation function
141
+ add_action('admin_init', array( &$this , 'timeline_express_activate_license' ) );
142
+ // Remove deactivation function
143
+ add_action('admin_init', array( &$this , 'timeline_express_deactivate_license' ) );
144
+ // Cross check the validity of our supportl icense , twice a day
145
+ add_action('timeline_express_support_license_check', array( &$this , 'crosscheck_support_license' ) );
146
  }
147
 
148
+ /*
149
+ * schedule_timeline_express_support_cron()
150
+ * Setup our twice daily transient, to cross check the API key ( if set )
151
+ * since @v1.1.4
152
+ */
153
+ public function schedule_timeline_express_support_cron() {
154
+ wp_schedule_event( current_time( 'timestamp' ), 'twicedaily', 'timeline_express_support_license_check');
155
+ }
156
+
157
+ /*
158
+ * crosscheck_support_license()
159
+ * API Request to cross check the license, and update the option based on the result
160
+ * since @v1.1.4
161
+ */
162
+ public function crosscheck_support_license() {
163
+ // only run if the user has a valid license installed
164
+ if ( get_option( 'timeline_express_license_status' ) !== false && get_option( 'timeline_express_license_status' ) == 'valid' ) {
165
+ // api parameters, cross checking the license
166
+ $api_params = array(
167
+ 'edd_action'=> 'check_license',
168
+ 'license' => trim( get_option( 'timeline_express_license_key' ) ),
169
+ 'item_name' => urlencode( EH_DEV_SHOP_SUPPORT_PRODUCT_NAME ), // the name of our product
170
+ 'url' => home_url()
171
+ );
172
+ // Call the custom API.
173
+ $response = wp_remote_get( add_query_arg( $api_params, EH_DEV_SHOP_URL ), array( 'timeout' => 15, 'sslverify' => false ) );
174
+
175
+ // decode the license data
176
+ $license_data = json_decode( wp_remote_retrieve_body( $response ) );
177
+ // check license status
178
+ if ( $license_data->license != 'valid' ) {
179
+ update_option( 'timeline_express_license_status', $license_data->license );
180
+ update_option( 'timeline_express_license_data', $license_data );
181
+ }
182
+ }
183
+ }
184
+
185
+ /*
186
+ * timeline_express_activate_license()
187
+ * Remote Support License Activation
188
+ * since @v1.1.4
189
+ */
190
+ public function timeline_express_activate_license() {
191
+
192
+ // listen for our activate button to be clicked
193
+ if( isset( $_POST['timeline_express_license_activate'] ) ) {
194
+
195
+ // run a quick security check
196
+ if( ! check_admin_referer( 'timeline_express_nonce', 'timeline_express_nonce' ) )
197
+ return; // get out if we didn't click the Activate button
198
+
199
+ // retrieve the license from the database
200
+ $license = trim( get_option( 'timeline_express_license_key' ) );
201
+
202
+ // data to send in our API request
203
+ $api_params = array(
204
+ 'edd_action'=> 'activate_license',
205
+ 'license' => $license,
206
+ 'item_name' => urlencode( EH_DEV_SHOP_SUPPORT_PRODUCT_NAME ), // the name of our product
207
+ 'url' => home_url()
208
+ );
209
+
210
+ // Call the custom API.
211
+ $response = wp_remote_get( add_query_arg( $api_params, EH_DEV_SHOP_URL ), array( 'timeout' => 15, 'sslverify' => false ) );
212
+
213
+ // make sure the response came back okay
214
+ if ( is_wp_error( $response ) )
215
+ return false;
216
+
217
+ // decode the license data
218
+ $license_data = json_decode( wp_remote_retrieve_body( $response ) );
219
+
220
+ // $license_data->license returns "valid" or "invalid"
221
+ update_option( 'timeline_express_license_status', $license_data->license );
222
+ update_option( 'timeline_express_license_data', $license_data );
223
+
224
+ }
225
+ } // end remote activation
226
+
227
+
228
+ /*
229
+ * timeline_express_deactivate_license()
230
+ * Remote Support License De-activation
231
+ * since @v1.1.4
232
+ */
233
+ public function timeline_express_deactivate_license() {
234
+
235
+ // listen for our activate button to be clicked
236
+ if( isset( $_POST['timeline_express_license_deactivate'] ) ) {
237
+
238
+ // run a quick security check
239
+ if( ! check_admin_referer( 'timeline_express_nonce', 'timeline_express_nonce' ) )
240
+ return; // get out if we didn't click the Activate button
241
+
242
+ // retrieve the license from the database
243
+ $license = trim( get_option( 'timeline_express_license_key' ) );
244
+
245
+
246
+ // data to send in our API request
247
+ $api_params = array(
248
+ 'edd_action'=> 'deactivate_license',
249
+ 'license' => $license,
250
+ 'item_name' => urlencode( EH_DEV_SHOP_SUPPORT_PRODUCT_NAME ), // the name of our product
251
+ 'url' => home_url()
252
+ );
253
+
254
+ // Call the custom API.
255
+ $response = wp_remote_get( add_query_arg( $api_params, EH_DEV_SHOP_URL ), array( 'timeout' => 15, 'sslverify' => false ) );
256
+
257
+ // make sure the response came back okay
258
+ if ( is_wp_error( $response ) )
259
+ return false;
260
+
261
+ // decode the license data
262
+ $license_data = json_decode( wp_remote_retrieve_body( $response ) );
263
+
264
+ // $license_data->license returns either "deactivated" or "failed"
265
+ if( $license_data->license == 'deactivated' )
266
+ delete_option( 'timeline_express_license_status' );
267
+
268
+ }
269
+ } // end remove deactivation
270
+
271
+
272
+ /*
273
+ * timeline_express_register_settings()
274
+ * Register a setting for support license users
275
+ * since @v1.1.4
276
+ */
277
+ function timeline_express_register_settings() {
278
+ // creates our settings in the options table
279
+ register_setting('timeline_express_license', 'timeline_express_license_key', array( &$this , 'timeline_express_sanitize_license' ) );
280
+ }
281
+
282
+
283
+ /*
284
+ * timeline_express_sanitize_license()
285
+ * save license key function
286
+ * since @v1.1.4
287
+ */
288
+ function timeline_express_sanitize_license( $new ) {
289
+ $old = get_option( 'timeline_express_license_key' );
290
+ if( $old && $old != $new ) {
291
+ delete_option( 'timeline_express_license_status' ); // new license has been entered, so must reactivate
292
+ }
293
+ return $new;
294
+ }
295
+
296
+
297
  /*
298
  * include_timeline_express_in_auto_updates();
299
  *
326
  // Register our Announcement Custom Post Type
327
  // used to easily manage the announcements on the site
328
  $timeline_express_labels = array(
329
+ 'name' => __( 'Timeline Express Announcements' , 'timeline-express' ),
330
+ 'singular_name' => __( 'Announcement' , 'timeline-express' ), // menu item at the top New > Announcement
331
+ 'menu_name' => __( 'Timeline Express' , 'timeline-express' ), // menu name
332
+ 'parent_item_colon' => __( 'Timeline Express:' , 'timeline-express' ),
333
+ 'all_items' => __( 'All Announcements' , 'timeline-express' ),
334
+ 'view_item' => __( 'View Announcement' , 'timeline-express' ),
335
+ 'add_new_item' => __( 'New Announcement' , 'timeline-express' ),
336
+ 'add_new' => __( 'New Announcement' , 'timeline-express' ),
337
+ 'edit_item' => __( 'Edit Announcement' , 'timeline-express' ),
338
+ 'update_item' => __( 'Update Announcement' , 'timeline-express' ),
339
+ 'search_items' => __( 'Search Announcements' , 'timeline-express' ),
340
+ 'not_found' => __( 'No Timeline Express Announcements Found' , 'timeline-express' ),
341
+ 'not_found_in_trash' => __( 'No Timeline Express Announcements in Trash' , 'timeline-express' ),
342
  );
343
  $timeline_express_rewrite = array(
344
+ 'slug' => apply_filters( 'timeline-express-slug' , 'announcement' ),
345
  'with_front' => false,
346
  'pages' => true,
347
  'feeds' => true,
348
  );
349
  $timeline_express_args = array(
350
  'label' => 'timeline-express-announcement',
351
+ 'description' => __( 'Post type for adding timeline express announcements to the site' , 'timeline-express' ),
352
  'labels' => $timeline_express_labels,
353
  'supports' => array( 'title', 'editor' ),
354
  'taxonomies' => array(),
676
  $referer = $_SERVER['HTTP_REFERER'];
677
  if ( $announcement_image != '' ) {
678
  $announcement_image_id = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid='%s';", esc_url( $announcement_image) ) );
679
+ $custom_content = '';
680
+ if ( $announcement_image_id ) {
681
+ $announcement_header_image = wp_get_attachment_image_src( $announcement_image_id[0] , 'timeline-express-announcement-header');
682
+ $custom_content .= '<img class="announcement-banner-image" src="' . esc_url ( $announcement_header_image[0] ) . '" alt="' . get_the_title( $post->ID ) . '">';
683
+ }
684
  $custom_content .= '<strong class="timeline-express-single-page-announcement-date">Announcement Date : ' . date( 'M j , Y' , $announcement_date ) . '</strong>';
685
  $custom_content .= $content;
686
  if ( $referer != '' ) {
742
  public function addStyles() {
743
 
744
  $screen = get_current_screen();
745
+ $print_styles_on_screen_array = array( 'te_announcements_page_timeline-express-settings' , 'admin_page_timeline-express-welcome' , 'te_announcements_page_timeline-express-support' );
746
 
747
  if ( in_array( $screen->base , $print_styles_on_screen_array ) || in_array( $screen->id, array( 'edit-te_announcements' ) ) ) {
748
  // Register Styles
757
  public function addScripts() {
758
  $screen = get_current_screen();
759
  global $post;
760
+ if ( in_array( $screen->base , array('te_announcements_page_timeline-express-settings') ) || $screen->post_type == 'te_announcements' ) {
761
  // enqueue the admin scripts here
762
  // Add the color picker css file
763
  // used to select colors on the settings page
915
  while( $announcement_query->have_posts() ) {
916
  $announcement_query->the_post();
917
  global $post;
918
+ $announcement_image = esc_url( get_post_meta( $post->ID , 'announcement_image' , true ) );
919
  $button_classes = 'cd-read-more btn btn-primary ';
920
  ?>
921
  <div class="cd-timeline-block">
967
  $read_more_button = '';
968
  } else {
969
  $elipses = __( '...' , 'timeline-express' );
 
970
  $read_more_button = '<a href="' . get_the_permalink() . '" class="' . apply_filters( "timeline-express-read-more-class" , $button_classes ) . '">' . __( 'Read more' , 'timeline-express' ) . '</a>';
971
  }
972
  ?>
1011
  function te_wp_trim_words_retain_formatting( $text, $num_words = 55, $more = null ) {
1012
  if ( null === $more )
1013
  $more = __( '&hellip;' );
1014
+ $original_text = $text;
1015
  /* translators: If your word count is based on single characters (East Asian characters),
1016
  enter 'characters'. Otherwise, enter 'words'. Do not translate into your own language. */
1017
  if ( 'characters' == _x( 'words', 'word count: words or characters?' ) && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) {
1055
  public function addAdministrationMenu() {
1056
  // Sub Items
1057
  // Settings Page
1058
+ add_submenu_page('edit.php?post_type=te_announcements', __('Timeline Express Settings','timeline-express'), __('Settings','timeline-express'), 'manage_options', 'timeline-express-settings', array(&$this, 'generateOptionsPage'));
1059
  // Welcome Page
1060
  add_submenu_page('options.php', __('Timeline Express Welcome','timeline-express'), __('Timeline Express Welcome','timeline-express'), 'manage_options', 'timeline-express-welcome', array(&$this, 'generateWelcomePage'));
1061
+ // Support Page
1062
+ add_submenu_page('edit.php?post_type=te_announcements', __('Support','timeline-express'), __('Support','timeline-express'), 'manage_options', 'timeline-express-support', array(&$this, 'generateSupportPage'));
1063
  }
1064
 
1065
 
1073
  }
1074
  public function generateWelcomePage() {
1075
  require_once TIMELINE_EXPRESS_PATH . 'pages/welcome.php'; // include our welcome page
1076
+ }
1077
+ public function generateSupportPage() {
1078
+ require_once TIMELINE_EXPRESS_PATH . 'pages/support.php'; // include our welcome page
1079
  }
1080
 
1081
 
css/timeline-express-css3-slideshow.css ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #slides {
2
+ display: none
3
+ }
4
+
5
+ #slides .slidesjs-navigation {
6
+ margin-top:5px;
7
+ }
8
+
9
+ a.slidesjs-next,
10
+ a.slidesjs-previous,
11
+ a.slidesjs-play,
12
+ a.slidesjs-stop {
13
+ display: none !important;
14
+ }
15
+
16
+ a.slidesjs-next {
17
+ margin-right:10px;
18
+ background-position: -12px 0;
19
+ }
20
+
21
+ a:hover.slidesjs-next {
22
+ background-position: -12px -18px;
23
+ }
24
+
25
+ a.slidesjs-previous {
26
+ background-position: 0 0;
27
+ }
28
+
29
+ a:hover.slidesjs-previous {
30
+ background-position: 0 -18px;
31
+ }
32
+
33
+ a.slidesjs-play {
34
+ width:15px;
35
+ background-position: -25px 0;
36
+ }
37
+
38
+ a:hover.slidesjs-play {
39
+ background-position: -25px -18px;
40
+ }
41
+
42
+ a.slidesjs-stop {
43
+ width:18px;
44
+ background-position: -41px 0;
45
+ }
46
+
47
+ a:hover.slidesjs-stop {
48
+ background-position: -41px -18px;
49
+ }
50
+
51
+ .slidesjs-pagination {
52
+ margin: 7px 0 0;
53
+ float: right;
54
+ list-style: none;
55
+ }
56
+
57
+ .slidesjs-pagination li {
58
+ float: left;
59
+ margin: 0 1px;
60
+ }
61
+
62
+ .slidesjs-pagination li a {
63
+ display: block;
64
+ width: 13px;
65
+ height: 0;
66
+ padding-top: 13px;
67
+ background-image: url(../images/support/pagination.png);
68
+ background-position: 0 0;
69
+ float: left;
70
+ overflow: hidden;
71
+ }
72
+
73
+ .slidesjs-pagination li a.active,
74
+ .slidesjs-pagination li a:hover.active {
75
+ background-position: 0 -13px
76
+ }
77
+
78
+ .slidesjs-pagination li a:hover {
79
+ background-position: 0 -26px
80
+ }
81
+
82
+ #slides a:link,
83
+ #slides a:visited {
84
+ color: #333
85
+ }
86
+
87
+ #slides a:hover,
88
+ #slides a:active {
89
+ color: #9e2020
90
+ }
91
+
92
+ .navbar {
93
+ overflow: hidden
94
+ }
95
+ #slides {
96
+ display: none
97
+ }
98
+
99
+ .te-slider-container {
100
+ margin: 0 auto
101
+ }
102
+
103
+ /* For tablets & smart phones */
104
+ @media (max-width: 767px) {
105
+ .te-slider-container {
106
+ width: auto;
107
+ left: 0;
108
+ }
109
+ }
110
+
111
+ /* For smartphones */
112
+ @media (max-width: 480px) {
113
+ .te-slider-container {
114
+ width: auto;
115
+ }
116
+ }
117
+
118
+ /* For smaller displays like laptops */
119
+ @media (min-width: 768px) and (max-width: 979px) {
120
+ .te-slider-container {
121
+ width: 724px;
122
+ }
123
+ }
124
+
125
+ /* For larger displays */
126
+ @media (min-width: 1200px) {
127
+ .te-slider-container {
128
+ position: absolute;
129
+ right: 0;
130
+ top: 0;
131
+ margin: 1.3em 2em 0 0;
132
+ width: 650px;
133
+ height: 165px;
134
+ }
135
+ }
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
css/timeline-express-settings.css CHANGED
@@ -80,14 +80,13 @@
80
 
81
  /* Icon */
82
  #timeline-express-icon {
83
- background: transparent url('../images/timeline-express-icon.png') no-repeat 0 0;
84
  display:block;
85
  float:left;
86
  padding: 0 0 0 .5em;
87
- height: 75px;
88
- width: 75px;
89
  background-size: contain;
90
- margin-bottom: .5em;
91
  }
92
 
93
  /* Settings Page Header */
@@ -266,10 +265,6 @@
266
 
267
  /** Admin Break Points **/
268
 
269
- @media only screen and (max-width: 1175px) {
270
-
271
- }
272
-
273
  .dashicons-star-filled {color:#FEBE12;}
274
 
275
  #timeline_express_reset_plugin_settings .dashicons-dismiss {
@@ -513,4 +508,124 @@ body.admin_page_timeline-express-welcome .slides ul li h2.promo-text {
513
  -webkit-text-fill-color: transparent;
514
  }
515
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
516
  /** End Timeline Express Admin Styles */
80
 
81
  /* Icon */
82
  #timeline-express-icon {
83
+ background: transparent url('../images/timeline-express-logo-128.png') no-repeat 0 0;
84
  display:block;
85
  float:left;
86
  padding: 0 0 0 .5em;
87
+ height: 128px;
88
+ width: 128px;
89
  background-size: contain;
 
90
  }
91
 
92
  /* Settings Page Header */
265
 
266
  /** Admin Break Points **/
267
 
 
 
 
 
268
  .dashicons-star-filled {color:#FEBE12;}
269
 
270
  #timeline_express_reset_plugin_settings .dashicons-dismiss {
508
  -webkit-text-fill-color: transparent;
509
  }
510
 
511
+
512
+ /* Version 1.1.4 , support page styles */
513
+ #timeline-express-support-page-wrap {
514
+ padding: 2em;
515
+ }
516
+
517
+ .te_announcements_page_timeline-express-settings .wrap {
518
+ padding: 0 2em;
519
+ }
520
+
521
+ #timeline-express-support-page-wrap hr {
522
+ margin: 1.5em 0;
523
+ }
524
+
525
+ #timeline-express-support-page-header {
526
+ display: inline-block;
527
+ width: 100%;
528
+ }
529
+
530
+ #timeline-express-support-page-header img.te-logo {
531
+ max-width: 128px;
532
+ min-width: 90px;
533
+ width: 20%;
534
+ float: left;
535
+ }
536
+
537
+ #timeline-express-support-page-header .support-subhead {
538
+ display: block;
539
+ margin: 2em 0 0 1em;
540
+ float: left;
541
+ width: 44%;
542
+ }
543
+
544
+ #timeline-express-support-page-wrap #timeline_express_license_key {
545
+ width: 25%;
546
+ min-width: 400px;
547
+ }
548
+
549
+ /* Valid license Check mark */
550
+ .timeline-express-valid-license {
551
+ color: rgba(144, 214, 125, 0.68);
552
+ font-size: 28px;
553
+ }
554
+
555
+ /* Purchase support license button */
556
+ .purchase-support-license {
557
+ margin-left: -.5em !important;
558
+ }
559
+
560
+ /* Timeline Express Support License Forms Page */
561
+ .timeline-express-license-buttons {
562
+ display: block;
563
+ width: 100%;
564
+ margin-top: 2em;
565
+ }
566
+
567
+ /* Invalid License Error */
568
+ .timeline-express-invalid-license-error {
569
+ color: rgba(225, 47, 47, 0.73);
570
+ }
571
+
572
+ /* Premium Support Contact Form */
573
+ #premium-support-contact-form {
574
+ float: left;
575
+ width: 33%;
576
+ min-width: 300px;
577
+ }
578
+ #premium-support-contact-form form {
579
+ width: 100%;
580
+ }
581
+ #premium-support-contact-form form input, #premium-support-contact-form form textarea, #premium-support-contact-form form label {
582
+ width: 100%;
583
+ }
584
+ #premium-support-contact-form form textarea {
585
+ resize: vertical;
586
+ }
587
+ #premium-support-contact-form form input[type="submit"], #premium-support-contact-form form label {
588
+ margin-top: 1em;
589
+ display: block;
590
+ }
591
+
592
+ /* License Expiring Soon Message */
593
+ .license-expiring-soon {
594
+ font-size: 11px;
595
+ color: rgb(243, 75, 75);
596
+ display: block;
597
+ }
598
+
599
+
600
+ /* Break Points */
601
+ @media only screen and (max-width: 1081px) {
602
+ #timeline_express_license_key {
603
+ min-width: 90% !important;
604
+ width: 90% !important;
605
+ }
606
+ #premium-support-contact-form form input, #premium-support-contact-form form textarea, #premium-support-contact-form form label {
607
+ width: 100%;
608
+ }
609
+ #premium-support-contact-form {
610
+ margin: 2em 0 0 0;
611
+ float: left;
612
+ width: 100%;
613
+ }
614
+ #timeline-express-support-page-wrap table.widefat.fixed {
615
+ max-width: 100% !important;
616
+ }
617
+ #timeline-express-support-page-header .support-subhead {
618
+ width: auto;
619
+ }
620
+ #timeline-express-support-page-header .te-logo {
621
+ min-width: 140px !important;
622
+ float: none !important;
623
+ display: block;
624
+ margin: 0 auto;
625
+ }
626
+ #timeline-express-support-page-header .support-subhead h1 {
627
+ line-height: 1.2;
628
+ }
629
+ }
630
+
631
  /** End Timeline Express Admin Styles */
css/timeline-express-settings.min.css CHANGED
@@ -1,3 +1,3 @@
1
- /* Timeline Express by Evan Herman */
2
  /* Settings Stylesheet Minified */
3
- .wp-core-ui .timeline-express-red-button{background-color:#9B2124;background-image:-webkit-gradient(linear,left top,left bottom,from(#C5292E),to(#9B2124));background-image:-webkit-linear-gradient(top,#C5292E,#9B2124);background-image:-moz-linear-gradient(top,#C5292E,#9B2124);background-image:-ms-linear-gradient(top,#C5292E,#9B2124);background-image:-o-linear-gradient(top,#C5292E,#9B2124);background-image:linear-gradient(to bottom,#C5292E,#9B2124);border-color:#9B2124 #9B2124 #8D1F21;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5);box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1);margin-left:2em;width:150px;text-align:center}.wp-core-ui .timeline-express-red-button.focus,.wp-core-ui .timeline-express-red-button.hover,.wp-core-ui .timeline-express-red-button:focus,.wp-core-ui .timeline-express-red-button:hover{background-color:#B72629;background-image:-webkit-gradient(linear,left top,left bottom,from(#D22E30),to(#9B2124));background-image:-webkit-linear-gradient(top,#D22E30,#9B2124);background-image:-moz-linear-gradient(top,#D22E30,#9B2124);background-image:-ms-linear-gradient(top,#D22E30,#9B2124);background-image:-o-linear-gradient(top,#D22E30,#9B2124);background-image:linear-gradient(to bottom,#D22E30,#9B2124);border-color:#7F1C1F;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.wp-core-ui .timeline-express-red-button.focus,.wp-core-ui .timeline-express-red-button:focus{border-color:#500F0E;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4)}.wp-core-ui .timeline-express-red-button.active,.wp-core-ui .timeline-express-red-button.active:focus,.wp-core-ui .timeline-express-red-button.active:hover,.wp-core-ui .timeline-express-red-button:active{background:#7F1C1F;background-image:-webkit-gradient(linear,left top,left bottom,from(#9B2124),to(#B72629));background-image:-webkit-linear-gradient(top,#9B2124,#B72629);background-image:-moz-linear-gradient(top,#9B2124,#B72629);background-image:-ms-linear-gradient(top,#9B2124,#B72629);background-image:-o-linear-gradient(top,#9B2124,#B72629);background-image:linear-gradient(to bottom,#9B2124,#B72629);border-color:#601312 #AE2426 #AE2426;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .timeline-express-red-button-disabled,.wp-core-ui .timeline-express-red-button:disabled,.wp-core-ui .timeline-express-red-button[disabled]{color:#E79496!important;background:#BA292B!important;border-color:#7F1C1F!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}#timeline-express-icon{background:url(../images/timeline-express-icon.png) no-repeat;display:block;float:left;padding:0 0 0 .5em;height:75px;width:75px;background-size:contain;margin-bottom:.5em}.wrap #timeline-express-page-header{padding-top:0;margin:1em 0 0;font-size:25px;line-height:3}.wrap .nav-tab-wrapper{padding-top:2.5em}.wrap .account-nav-tab{padding-top:0}.random-length-text{opacity:.5}#timeline_express_review_this_plugin_container .fa-paypal{display:block;width:100%;font-size:16px;padding-top:4px;margin:0 auto!important;color:#253b80}.wrap #timeline_express_review_this_plugin_container{padding:.5em;float:right;margin-top:.75em}#timeline_express_review_this_plugin_container{display:inline-block}#timeline_express_review_this_plugin_container a,#timeline_express_review_this_plugin_container a:hover{color:#333}#timeline_express_review_this_plugin_container .timeline_express_header_logo,#timeline_express_review_this_plugin_container div,#timeline_express_review_this_plugin_container span{float:left;margin:0 .5em;text-align:center}#timeline_express_review_this_plugin_container div.dashicons{margin:0 5px}#timeline_express_review_this_plugin_container div.dashicons-plus-alt{display:block;width:100%;margin:0 auto;color:#a3c3b8}.timeline-express-form{margin-bottom:3em}.timeline-express-form th{font-weight:700}.timeline-express-settings-description{padding-bottom:2em!important;color:#A7A7A7;font-style:italic;font-size:10px}.wp-admin .active-parent-button,.wp-admin .active-parent-button:hover{color:red}.delete-no:after{content:" no, save my announcements from being deleted. I'll need them again!"}.delete-no:hover{cursor:pointer}.delete-yes:after{content:" yes, delete all of the announcement posts. they are dead to me."}.delete-yes:hover{cursor:pointer}.wp-picker-holder{position:absolute;z-index:99999999}#no-events-message_ifr{max-height:100px}.wp-list-table .no-items .colspanchange{text-align:center;height:115px;line-height:8;font-style:italic}.wp-list-table #color,.wp-list-table #icon{width:65px;text-align:center;padding-left:1em}.wp-list-table #announcement_date{width:215px}.wp-list-table #image,.wp-list-table .column-image{width:250px;text-align:center}.no-image-used-text{line-height:4.7}.wp-list-table #past_announcement,.wp-list-table .past_announcement{width:150px;text-align:center}.wp-list-table .announcement_color_box{display:block;width:15px;height:15px;border:1px solid rgba(128,128,128,.22);padding:.5em;text-align:center;margin:11px auto 0;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%}.wp-list-table .edit-announcement-icon{font-size:25px!important;line-height:2.5!important;display:block;text-align:center}.wp-list-table #announcement_date{line-height:1.5;padding-left:2.5em}.wp-list-table .announcement_date{line-height:4.5!important;text-align:center}.wp-list-table .dashicon-past-announcement{font-size:30px!important;line-height:2.1!important}.dashicons-star-filled{color:#FEBE12}#timeline_express_reset_plugin_settings .dashicons-dismiss{float:left;margin-top:.5em;padding:.5em 1em 1em .5em;color:#f15353}body.admin_page_timeline-express-welcome .timeline-express-image{background:url('../images/welcome/background.png')}body.admin_page_timeline-express-welcome .timeline-screenshot{padding:1.5em 1.5em 0}body.admin_page_timeline-express-welcome .font-awesome-background{padding-top:3em;margin-top:1.5em;background-image:url('../images/welcome/Font-Awesome-Cheatsheet.png');background-size:cover;height:250px;text-align:center;line-height:8}body.admin_page_timeline-express-welcome .intuitive-post-creation{padding-top:3em;margin-top:1.5em;background-image:url('../images/welcome/intuitive-creation-screen.jpg');background-size:contain;height:665px;background-position:bottom center;background-repeat:no-repeat}body.admin_page_timeline-express-welcome .admin-manage-announcements{padding-top:3em;margin-top:1.5em;background-image:url('../images/welcome/Manage-Announcements.jpg');background-size:contain;height:665px;background-position:bottom center;background-repeat:no-repeat}body.admin_page_timeline-express-welcome .customize-your-timeline{padding-top:4%;margin-top:1.5em;background-image:url('../images/welcome/customize-your-timeline.jpg');background-size:contain;height:665px;background-position:bottom center;background-repeat:no-repeat}body.admin_page_timeline-express-welcome .slides{height:665px;overflow:hidden;position:relative;width:100%;padding:4% 0}body.admin_page_timeline-express-welcome .slides ul{list-style:none;position:relative}@-webkit-keyframes anim_slides{0%{opacity:0}24%,6%{opacity:1}100%,30%{opacity:0}}@-moz-keyframes anim_slides{0%{opacity:0}24%,6%{opacity:1}100%,30%{opacity:0}}body.admin_page_timeline-express-welcome .slides ul li{width:100%;opacity:0;position:absolute;top:0;-webkit-animation-name:anim_slides;-webkit-animation-duration:18s;-webkit-animation-timing-function:linear;-webkit-animation-iteration-count:infinite;-webkit-animation-direction:normal;-webkit-animation-delay:0;-webkit-animation-play-state:running;-webkit-animation-fill-mode:forwards;-moz-animation-name:anim_slides;-moz-animation-duration:18s;-moz-animation-timing-function:linear;-moz-animation-iteration-count:infinite;-moz-animation-direction:normal;-moz-animation-delay:0;-moz-animation-play-state:running;-moz-animation-fill-mode:forwards}body.admin_page_timeline-express-welcome .slides ul li:nth-child(2),body.admin_page_timeline-express-welcome .slides ul li:nth-child(2) h2.promo-text{-webkit-animation-delay:6s;-moz-animation-delay:6s}body.admin_page_timeline-express-welcome .slides ul li:nth-child(3),body.admin_page_timeline-express-welcome .slides ul li:nth-child(3) h2.promo-text{-webkit-animation-delay:12s;-moz-animation-delay:12s}body.admin_page_timeline-express-welcome .slides ul li img{display:block}@-webkit-keyframes anim_titles{0%{left:5%;opacity:0}20%,5%{left:5%;opacity:1}100%,25%{left:5%;opacity:0}}@-moz-keyframes anim_titles{0%{left:5%;opacity:0}20%,5%{left:5%;opacity:1}100%,25%{left:5%;opacity:0}}body.admin_page_timeline-express-welcome .slides ul li h2.promo-text{background-color:#000;border-radius:10px;box-shadow:0 0 3px #FFF inset;color:#FFF;font-size:18px;margin:0 auto;padding:10px;position:absolute;top:-35px;width:350px;text-align:center;-webkit-animation-name:anim_titles;-webkit-animation-duration:18s;-webkit-animation-timing-function:linear;-webkit-animation-iteration-count:infinite;-webkit-animation-direction:normal;-webkit-animation-delay:0;-webkit-animation-play-state:running;-webkit-animation-fill-mode:forwards;-moz-animation-name:anim_titles;-moz-animation-duration:18s;-moz-animation-timing-function:linear;-moz-animation-iteration-count:infinite;-moz-animation-direction:normal;-moz-animation-delay:0;-moz-animation-play-state:running;-moz-animation-fill-mode:forwards}.dashicons-heart{background:-webkit-linear-gradient(top,#ff8cf7,#e2a5e0);background:linear-gradient(top,#ff8cf7,#e2a5e0);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
1
+ /* Timeline Express by Evan Herman v1.1.4 */
2
  /* Settings Stylesheet Minified */
3
+ .wp-core-ui .timeline-express-red-button{background-color:#9B2124;background-image:-webkit-gradient(linear,left top,left bottom,from(#C5292E),to(#9B2124));background-image:-webkit-linear-gradient(top,#C5292E,#9B2124);background-image:-moz-linear-gradient(top,#C5292E,#9B2124);background-image:-ms-linear-gradient(top,#C5292E,#9B2124);background-image:-o-linear-gradient(top,#C5292E,#9B2124);background-image:linear-gradient(to bottom,#C5292E,#9B2124);border-color:#9B2124 #9B2124 #8D1F21;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5);box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1);margin-left:2em;width:150px;text-align:center}.wp-core-ui .timeline-express-red-button.focus,.wp-core-ui .timeline-express-red-button.hover,.wp-core-ui .timeline-express-red-button:focus,.wp-core-ui .timeline-express-red-button:hover{background-color:#B72629;background-image:-webkit-gradient(linear,left top,left bottom,from(#D22E30),to(#9B2124));background-image:-webkit-linear-gradient(top,#D22E30,#9B2124);background-image:-moz-linear-gradient(top,#D22E30,#9B2124);background-image:-ms-linear-gradient(top,#D22E30,#9B2124);background-image:-o-linear-gradient(top,#D22E30,#9B2124);background-image:linear-gradient(to bottom,#D22E30,#9B2124);border-color:#7F1C1F;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.wp-core-ui .timeline-express-red-button.focus,.wp-core-ui .timeline-express-red-button:focus{border-color:#500F0E;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4)}.wp-core-ui .timeline-express-red-button.active,.wp-core-ui .timeline-express-red-button.active:focus,.wp-core-ui .timeline-express-red-button.active:hover,.wp-core-ui .timeline-express-red-button:active{background:#7F1C1F;background-image:-webkit-gradient(linear,left top,left bottom,from(#9B2124),to(#B72629));background-image:-webkit-linear-gradient(top,#9B2124,#B72629);background-image:-moz-linear-gradient(top,#9B2124,#B72629);background-image:-ms-linear-gradient(top,#9B2124,#B72629);background-image:-o-linear-gradient(top,#9B2124,#B72629);background-image:linear-gradient(to bottom,#9B2124,#B72629);border-color:#601312 #AE2426 #AE2426;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .timeline-express-red-button-disabled,.wp-core-ui .timeline-express-red-button:disabled,.wp-core-ui .timeline-express-red-button[disabled]{color:#E79496!important;background:#BA292B!important;border-color:#7F1C1F!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}#timeline-express-icon{background:url(../images/timeline-express-logo-128.png) 0 0/contain no-repeat;display:block;float:left;padding:0 0 0 .5em;height:128px;width:128px}.wrap #timeline-express-page-header{padding-top:0;margin:1em 0 0;font-size:25px;line-height:3}.wrap .nav-tab-wrapper{padding-top:2.5em}.wrap .account-nav-tab{padding-top:0}.random-length-text{opacity:.5}#timeline_express_review_this_plugin_container .fa-paypal{display:block;width:100%;font-size:16px;padding-top:4px;margin:0 auto!important;color:#253b80}.wrap #timeline_express_review_this_plugin_container{padding:.5em;float:right;margin-top:.75em}#timeline_express_review_this_plugin_container{display:inline-block}#timeline_express_review_this_plugin_container a,#timeline_express_review_this_plugin_container a:hover{color:#333}#timeline_express_review_this_plugin_container .timeline_express_header_logo,#timeline_express_review_this_plugin_container div,#timeline_express_review_this_plugin_container span{float:left;margin:0 .5em;text-align:center}#timeline_express_review_this_plugin_container div.dashicons{margin:0 5px}#timeline_express_review_this_plugin_container div.dashicons-plus-alt{display:block;width:100%;margin:0 auto;color:#a3c3b8}.timeline-express-form{margin-bottom:3em}.timeline-express-form th{font-weight:700}.timeline-express-settings-description{padding-bottom:2em!important;color:#A7A7A7;font-style:italic;font-size:10px}.wp-admin .active-parent-button,.wp-admin .active-parent-button:hover{color:red}.delete-no:after{content:" no, save my announcements from being deleted. I'll need them again!"}.delete-no:hover{cursor:pointer}.delete-yes:after{content:" yes, delete all of the announcement posts. they are dead to me."}.delete-yes:hover{cursor:pointer}.wp-picker-holder{position:absolute;z-index:99999999}#no-events-message_ifr{max-height:100px}.wp-list-table .no-items .colspanchange{text-align:center;height:115px;line-height:8;font-style:italic}.wp-list-table #color,.wp-list-table #icon{width:65px;text-align:center;padding-left:1em}.wp-list-table #announcement_date{width:215px}.wp-list-table #image,.wp-list-table .column-image{width:250px;text-align:center}.no-image-used-text{line-height:4.7}.wp-list-table #past_announcement,.wp-list-table .past_announcement{width:150px;text-align:center}.wp-list-table .announcement_color_box{display:block;width:15px;height:15px;border:1px solid rgba(128,128,128,.22);padding:.5em;text-align:center;margin:11px auto 0;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%}.wp-list-table .edit-announcement-icon{font-size:25px!important;line-height:2.5!important;display:block;text-align:center}.wp-list-table #announcement_date{line-height:1.5;padding-left:2.5em}.wp-list-table .announcement_date{line-height:4.5!important;text-align:center}.wp-list-table .dashicon-past-announcement{font-size:30px!important;line-height:2.1!important}.dashicons-star-filled{color:#FEBE12}#timeline_express_reset_plugin_settings .dashicons-dismiss{float:left;margin-top:.5em;padding:.5em 1em 1em .5em;color:#f15353}body.admin_page_timeline-express-welcome .timeline-express-image{background:url('../images/welcome/background.png')}body.admin_page_timeline-express-welcome .timeline-screenshot{padding:1.5em 1.5em 0}body.admin_page_timeline-express-welcome .font-awesome-background{padding-top:3em;margin-top:1.5em;background-image:url('../images/welcome/Font-Awesome-Cheatsheet.png');background-size:cover;height:250px;text-align:center;line-height:8}body.admin_page_timeline-express-welcome .intuitive-post-creation{padding-top:3em;margin-top:1.5em;background-image:url('../images/welcome/intuitive-creation-screen.jpg');background-size:contain;height:665px;background-position:bottom center;background-repeat:no-repeat}body.admin_page_timeline-express-welcome .admin-manage-announcements{padding-top:3em;margin-top:1.5em;background-image:url('../images/welcome/Manage-Announcements.jpg');background-size:contain;height:665px;background-position:bottom center;background-repeat:no-repeat}body.admin_page_timeline-express-welcome .customize-your-timeline{padding-top:4%;margin-top:1.5em;background-image:url('../images/welcome/customize-your-timeline.jpg');background-size:contain;height:665px;background-position:bottom center;background-repeat:no-repeat}body.admin_page_timeline-express-welcome .slides{height:665px;overflow:hidden;position:relative;width:100%;padding:4% 0}body.admin_page_timeline-express-welcome .slides ul{list-style:none;position:relative}@-webkit-keyframes anim_slides{0%{opacity:0}24%,6%{opacity:1}100%,30%{opacity:0}}@-moz-keyframes anim_slides{0%{opacity:0}24%,6%{opacity:1}100%,30%{opacity:0}}body.admin_page_timeline-express-welcome .slides ul li{width:100%;opacity:0;position:absolute;top:0;-webkit-animation-name:anim_slides;-webkit-animation-duration:18s;-webkit-animation-timing-function:linear;-webkit-animation-iteration-count:infinite;-webkit-animation-direction:normal;-webkit-animation-delay:0;-webkit-animation-play-state:running;-webkit-animation-fill-mode:forwards;-moz-animation-name:anim_slides;-moz-animation-duration:18s;-moz-animation-timing-function:linear;-moz-animation-iteration-count:infinite;-moz-animation-direction:normal;-moz-animation-delay:0;-moz-animation-play-state:running;-moz-animation-fill-mode:forwards}body.admin_page_timeline-express-welcome .slides ul li:nth-child(2),body.admin_page_timeline-express-welcome .slides ul li:nth-child(2) h2.promo-text{-webkit-animation-delay:6s;-moz-animation-delay:6s}body.admin_page_timeline-express-welcome .slides ul li:nth-child(3),body.admin_page_timeline-express-welcome .slides ul li:nth-child(3) h2.promo-text{-webkit-animation-delay:12s;-moz-animation-delay:12s}body.admin_page_timeline-express-welcome .slides ul li img{display:block}@-webkit-keyframes anim_titles{0%{left:5%;opacity:0}20%,5%{left:5%;opacity:1}100%,25%{left:5%;opacity:0}}@-moz-keyframes anim_titles{0%{left:5%;opacity:0}20%,5%{left:5%;opacity:1}100%,25%{left:5%;opacity:0}}body.admin_page_timeline-express-welcome .slides ul li h2.promo-text{background-color:#000;border-radius:10px;box-shadow:0 0 3px #FFF inset;color:#FFF;font-size:18px;margin:0 auto;padding:10px;position:absolute;top:-35px;width:350px;text-align:center;-webkit-animation-name:anim_titles;-webkit-animation-duration:18s;-webkit-animation-timing-function:linear;-webkit-animation-iteration-count:infinite;-webkit-animation-direction:normal;-webkit-animation-delay:0;-webkit-animation-play-state:running;-webkit-animation-fill-mode:forwards;-moz-animation-name:anim_titles;-moz-animation-duration:18s;-moz-animation-timing-function:linear;-moz-animation-iteration-count:infinite;-moz-animation-direction:normal;-moz-animation-delay:0;-moz-animation-play-state:running;-moz-animation-fill-mode:forwards}.dashicons-heart{background:-webkit-linear-gradient(top,#ff8cf7,#e2a5e0);background:linear-gradient(top,#ff8cf7,#e2a5e0);-webkit-background-clip:text;-webkit-text-fill-color:transparent}#timeline-express-support-page-wrap{padding:2em}.te_announcements_page_timeline-express-settings .wrap{padding:0 2em}#timeline-express-support-page-wrap hr{margin:1.5em 0}#timeline-express-support-page-header{display:inline-block;width:100%}#timeline-express-support-page-header img.te-logo{max-width:128px;min-width:90px;width:20%;float:left}#timeline-express-support-page-header .support-subhead{display:block;margin:2em 0 0 1em;float:left;width:44%}#timeline-express-support-page-wrap #timeline_express_license_key{width:25%;min-width:400px}.timeline-express-valid-license{color:rgba(144,214,125,.68);font-size:28px}.purchase-support-license{margin-left:-.5em!important}.timeline-express-license-buttons{display:block;width:100%;margin-top:2em}.timeline-express-invalid-license-error{color:rgba(225,47,47,.73)}#premium-support-contact-form{float:left;width:33%;min-width:300px}#premium-support-contact-form form,#premium-support-contact-form form input,#premium-support-contact-form form label,#premium-support-contact-form form textarea{width:100%}#premium-support-contact-form form textarea{resize:vertical}#premium-support-contact-form form input[type=submit],#premium-support-contact-form form label{margin-top:1em;display:block}.license-expiring-soon{font-size:11px;color:#f34b4b;display:block}@media only screen and (max-width:1081px){#timeline_express_license_key{min-width:90%!important;width:90%!important}#premium-support-contact-form form input,#premium-support-contact-form form label,#premium-support-contact-form form textarea{width:100%}#premium-support-contact-form{margin:2em 0 0;float:left;width:100%}#timeline-express-support-page-wrap table.widefat.fixed{max-width:100%!important}#timeline-express-support-page-header .support-subhead{width:auto}#timeline-express-support-page-header .te-logo{min-width:140px!important;float:none!important;display:block;margin:0 auto}#timeline-express-support-page-header .support-subhead h1{line-height:1.2}}
css/timeline-express.css CHANGED
@@ -1,4 +1,4 @@
1
- /* Timeline Express Minified Styles 1.0 */
2
  /* By Evan Herman (http://www.evan-herman.com */
3
  /* -------------------------------------------------- */
4
  .cd-container {
1
+ /* Timeline Express Minified Styles 1.1.4 */
2
  /* By Evan Herman (http://www.evan-herman.com */
3
  /* -------------------------------------------------- */
4
  .cd-container {
css/timeline-express.min.css CHANGED
@@ -1,4 +1,4 @@
1
- /* Timeline Express Minified Styles 1.0 */
2
  /* By Evan Herman (http://www.evan-herman.com */
3
  /* -------------------------------------------------- */
4
  .cd-container{width:100%;max-width:822px;margin:0 auto}.cd-container::after{content:'';display:table;clear:both}.cd-timeline-announcement-image{box-shadow:none!important;max-width:100%;display:block;margin:1em auto}#cd-timeline{position:relative;padding:2em 0;margin-top:2em;margin-bottom:3em}#cd-timeline::before{content:'';position:absolute;top:0;left:18px;height:100%;width:4px;background:#d7e4ed}.announcement-banner-image{max-width:100%}.timeline-express-single-page-announcement-date{display:block;margin-bottom:1em}@media only screen and (min-width:822px){#cd-timeline{margin-top:3em;margin-bottom:5.5em}#cd-timeline::before{left:50%;margin-left:-2px}}.cd-timeline-block{margin:25px 0}.cd-timeline-block:after{content:"";display:table;clear:both}.cd-timeline-block:first-child{margin-top:0}.cd-timeline-block:last-child{margin-bottom:0}@media only screen and (min-width:822px){.cd-timeline-block{width:100%;margin:-3.5em 0}.cd-timeline-block:first-child{margin-top:0}.cd-timeline-block:last-child{margin-bottom:0}}.cd-timeline-img{position:absolute;top:0;left:0;width:40px;height:40px;border-radius:50%;box-shadow:0 0 0 4px white,inset 0 2px 0 rgba(0,0,0,.08),0 3px 0 4px rgba(0,0,0,.05)}.cd-timeline-img img{display:block;width:24px;height:24px;position:relative;left:50%;top:50%;margin-left:-12px;margin-top:-12px}.cd-timeline-img.cd-picture{background:#75ce66}.cd-timeline-img.cd-movie{background:#c03b44}.cd-timeline-img.cd-location{background:#f0ca45}@media only screen and (min-width:822px){.cd-timeline-img{width:60px;height:60px;left:50%;margin-left:-30px;-webkit-transform:translateZ(0);-webkit-backface-visibility:hidden}.cssanimations .cd-timeline-img.is-hidden{visibility:hidden}.cssanimations .cd-timeline-img.bounce-in{visibility:visible;-webkit-animation:cd-bounce-1 .6s;-moz-animation:cd-bounce-1 .6s;animation:cd-bounce-1 .6s}}@-webkit-keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(0.5)}60%{opacity:1;-webkit-transform:scale(1.2)}100%{-webkit-transform:scale(1)}}@-moz-keyframes cd-bounce-1{0%{opacity:0;-moz-transform:scale(0.5)}60%{opacity:1;-moz-transform:scale(1.2)}100%{-moz-transform:scale(1)}}@keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(0.5);-moz-transform:scale(0.5);-ms-transform:scale(0.5);-o-transform:scale(0.5);transform:scale(0.5)}60%{opacity:1;-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}100%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.cd-timeline-content{position:relative;margin-left:60px;background:#fff;border-radius:.25em;padding:1em;box-shadow:0 3px 0 #B9C5CD}.cd-timeline-content:after{content:"";display:table;clear:both}.cd-timeline-content .cd-date,.cd-timeline-content .cd-read-more{display:inline-block}.cd-timeline-content .cd-read-more{padding:.8em 1em;position:relative;z-index:9999}.cd-timeline-content .cd-date{float:left;padding:.8em 0;opacity:.7;font-size:12px}.cd-timeline-title-container{display:inline-block;width:100%;float:left;margin:.55em 0}.cd-timeline-title-container h2{float:left}.cd-timeline-content .timeline-date{opacity:.7;font-size:.857143rem;float:right;margin-top:.5em}.cd-timeline-content::before{content:'';position:absolute;top:16px;right:100%;height:0;width:0;border:7px solid transparent;border-right:7px solid #fff}@media only screen and (min-width:768px){.cd-timeline-content h2{margin-top:0;margin-bottom:0}.cd-timeline-content .the-excerpt{display:block;float:left;width:100%;margin:1em 0;position:relative;z-index:999}.cd-timeline-content .cd-date,.cd-timeline-content .cd-read-more{font-size:14px;font-size:.875rem;position:relative;z-index:999}}@media only screen and (min-width:822px){.cd-timeline-content{margin-left:0;padding:1.6em;width:39%;background:#EFEFEF}.cd-timeline-content::before{top:24px;left:100%;border-color:transparent transparent transparent #EFEFEF}.cd-timeline-content .cd-read-more{float:left;color:#333}.cd-timeline-content .cd-date{position:absolute;width:100%;left:125%;top:15px}.cd-timeline-block:nth-child(even) .cd-timeline-content{float:right}.cd-timeline-block:nth-child(even) .cd-timeline-content::before{top:24px;left:auto;right:100%;border-color:transparent #EFEFEF transparent transparent}.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-read-more{float:right;color:#333;padding-right:0}.cd-timeline-block:nth-child(odd) .cd-timeline-content .cd-read-more{position:relative;z-index:99999;padding-left:0}.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-date{left:auto;right:125%;text-align:right}.cssanimations .cd-timeline-content.is-hidden{visibility:hidden}.cssanimations .cd-timeline-content.bounce-in{visibility:visible;-webkit-animation:cd-bounce-2 .6s;-moz-animation:cd-bounce-2 .6s;animation:cd-bounce-2 .6s}}@media only screen and (min-width:822px){.cssanimations .cd-timeline-block:nth-child(even) .cd-timeline-content.bounce-in{-webkit-animation:cd-bounce-2-inverse .6s;-moz-animation:cd-bounce-2-inverse .6s;animation:cd-bounce-2-inverse .6s}}@-webkit-keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(20px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes cd-bounce-2{0%{opacity:0;-moz-transform:translateX(-100px)}60%{opacity:1;-moz-transform:translateX(20px)}100%{-moz-transform:translateX(0)}}@keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px);-moz-transform:translateX(-100px);-ms-transform:translateX(-100px);-o-transform:translateX(-100px);transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(20px);-moz-transform:translateX(20px);-ms-transform:translateX(20px);-o-transform:translateX(20px);transform:translateX(20px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);-o-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-20px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes cd-bounce-2-inverse{0%{opacity:0;-moz-transform:translateX(100px)}60%{opacity:1;-moz-transform:translateX(-20px)}100%{-moz-transform:translateX(0)}}@keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px);-moz-transform:translateX(100px);-ms-transform:translateX(100px);-o-transform:translateX(100px);transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-20px);-moz-transform:translateX(-20px);-ms-transform:translateX(-20px);-o-transform:translateX(-20px);transform:translateX(-20px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);-o-transform:translateX(0);transform:translateX(0)}}.more-to-come-container{position:relative;background:#EFEFEF;display:block;width:100%;text-align:center}.more-to-come{margin:10em 0 0;padding:1em 0;font-weight:200;color:rgba(100,100,100,.46)}.page article.page{background:0 0!important;box-shadow:none;border:none;-webkit-box-shadow:none}#cd-timeline span.fa{color:#fff;font-size:28px;display:block;text-align:center;margin-top:17px}.cd-timeline-icon-link{color:#fff!important}@media only screen and (max-width:821px){#cd-timeline span.fa{color:#fff;font-size:18px;display:block;text-align:center;margin-top:12px}.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-read-more,.cd-timeline-block:nth-child(odd) .cd-timeline-content .cd-read-more{padding-left:0!important;position:relative;z-index:99999}}.timeline-width100{width:100%}.timeline-width34{width:34%}.timeline-width30{width:30%}.timeline-date-left{width:100%;float:left!important}.single-post .announcement-banner-image,.single-post .return-to-timeline,.single-post .timeline-express-single-page-announcement-date{display:none}
1
+ /* Timeline Express Minified Styles 1.1.4 */
2
  /* By Evan Herman (http://www.evan-herman.com */
3
  /* -------------------------------------------------- */
4
  .cd-container{width:100%;max-width:822px;margin:0 auto}.cd-container::after{content:'';display:table;clear:both}.cd-timeline-announcement-image{box-shadow:none!important;max-width:100%;display:block;margin:1em auto}#cd-timeline{position:relative;padding:2em 0;margin-top:2em;margin-bottom:3em}#cd-timeline::before{content:'';position:absolute;top:0;left:18px;height:100%;width:4px;background:#d7e4ed}.announcement-banner-image{max-width:100%}.timeline-express-single-page-announcement-date{display:block;margin-bottom:1em}@media only screen and (min-width:822px){#cd-timeline{margin-top:3em;margin-bottom:5.5em}#cd-timeline::before{left:50%;margin-left:-2px}}.cd-timeline-block{margin:25px 0}.cd-timeline-block:after{content:"";display:table;clear:both}.cd-timeline-block:first-child{margin-top:0}.cd-timeline-block:last-child{margin-bottom:0}@media only screen and (min-width:822px){.cd-timeline-block{width:100%;margin:-3.5em 0}.cd-timeline-block:first-child{margin-top:0}.cd-timeline-block:last-child{margin-bottom:0}}.cd-timeline-img{position:absolute;top:0;left:0;width:40px;height:40px;border-radius:50%;box-shadow:0 0 0 4px white,inset 0 2px 0 rgba(0,0,0,.08),0 3px 0 4px rgba(0,0,0,.05)}.cd-timeline-img img{display:block;width:24px;height:24px;position:relative;left:50%;top:50%;margin-left:-12px;margin-top:-12px}.cd-timeline-img.cd-picture{background:#75ce66}.cd-timeline-img.cd-movie{background:#c03b44}.cd-timeline-img.cd-location{background:#f0ca45}@media only screen and (min-width:822px){.cd-timeline-img{width:60px;height:60px;left:50%;margin-left:-30px;-webkit-transform:translateZ(0);-webkit-backface-visibility:hidden}.cssanimations .cd-timeline-img.is-hidden{visibility:hidden}.cssanimations .cd-timeline-img.bounce-in{visibility:visible;-webkit-animation:cd-bounce-1 .6s;-moz-animation:cd-bounce-1 .6s;animation:cd-bounce-1 .6s}}@-webkit-keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(0.5)}60%{opacity:1;-webkit-transform:scale(1.2)}100%{-webkit-transform:scale(1)}}@-moz-keyframes cd-bounce-1{0%{opacity:0;-moz-transform:scale(0.5)}60%{opacity:1;-moz-transform:scale(1.2)}100%{-moz-transform:scale(1)}}@keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(0.5);-moz-transform:scale(0.5);-ms-transform:scale(0.5);-o-transform:scale(0.5);transform:scale(0.5)}60%{opacity:1;-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}100%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.cd-timeline-content{position:relative;margin-left:60px;background:#fff;border-radius:.25em;padding:1em;box-shadow:0 3px 0 #B9C5CD}.cd-timeline-content:after{content:"";display:table;clear:both}.cd-timeline-content .cd-date,.cd-timeline-content .cd-read-more{display:inline-block}.cd-timeline-content .cd-read-more{padding:.8em 1em;position:relative;z-index:9999}.cd-timeline-content .cd-date{float:left;padding:.8em 0;opacity:.7;font-size:12px}.cd-timeline-title-container{display:inline-block;width:100%;float:left;margin:.55em 0}.cd-timeline-title-container h2{float:left}.cd-timeline-content .timeline-date{opacity:.7;font-size:.857143rem;float:right;margin-top:.5em}.cd-timeline-content::before{content:'';position:absolute;top:16px;right:100%;height:0;width:0;border:7px solid transparent;border-right:7px solid #fff}@media only screen and (min-width:768px){.cd-timeline-content h2{margin-top:0;margin-bottom:0}.cd-timeline-content .the-excerpt{display:block;float:left;width:100%;margin:1em 0;position:relative;z-index:999}.cd-timeline-content .cd-date,.cd-timeline-content .cd-read-more{font-size:14px;font-size:.875rem;position:relative;z-index:999}}@media only screen and (min-width:822px){.cd-timeline-content{margin-left:0;padding:1.6em;width:39%;background:#EFEFEF}.cd-timeline-content::before{top:24px;left:100%;border-color:transparent transparent transparent #EFEFEF}.cd-timeline-content .cd-read-more{float:left;color:#333}.cd-timeline-content .cd-date{position:absolute;width:100%;left:125%;top:15px}.cd-timeline-block:nth-child(even) .cd-timeline-content{float:right}.cd-timeline-block:nth-child(even) .cd-timeline-content::before{top:24px;left:auto;right:100%;border-color:transparent #EFEFEF transparent transparent}.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-read-more{float:right;color:#333;padding-right:0}.cd-timeline-block:nth-child(odd) .cd-timeline-content .cd-read-more{position:relative;z-index:99999;padding-left:0}.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-date{left:auto;right:125%;text-align:right}.cssanimations .cd-timeline-content.is-hidden{visibility:hidden}.cssanimations .cd-timeline-content.bounce-in{visibility:visible;-webkit-animation:cd-bounce-2 .6s;-moz-animation:cd-bounce-2 .6s;animation:cd-bounce-2 .6s}}@media only screen and (min-width:822px){.cssanimations .cd-timeline-block:nth-child(even) .cd-timeline-content.bounce-in{-webkit-animation:cd-bounce-2-inverse .6s;-moz-animation:cd-bounce-2-inverse .6s;animation:cd-bounce-2-inverse .6s}}@-webkit-keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(20px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes cd-bounce-2{0%{opacity:0;-moz-transform:translateX(-100px)}60%{opacity:1;-moz-transform:translateX(20px)}100%{-moz-transform:translateX(0)}}@keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px);-moz-transform:translateX(-100px);-ms-transform:translateX(-100px);-o-transform:translateX(-100px);transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(20px);-moz-transform:translateX(20px);-ms-transform:translateX(20px);-o-transform:translateX(20px);transform:translateX(20px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);-o-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-20px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes cd-bounce-2-inverse{0%{opacity:0;-moz-transform:translateX(100px)}60%{opacity:1;-moz-transform:translateX(-20px)}100%{-moz-transform:translateX(0)}}@keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px);-moz-transform:translateX(100px);-ms-transform:translateX(100px);-o-transform:translateX(100px);transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-20px);-moz-transform:translateX(-20px);-ms-transform:translateX(-20px);-o-transform:translateX(-20px);transform:translateX(-20px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);-o-transform:translateX(0);transform:translateX(0)}}.more-to-come-container{position:relative;background:#EFEFEF;display:block;width:100%;text-align:center}.more-to-come{margin:10em 0 0;padding:1em 0;font-weight:200;color:rgba(100,100,100,.46)}.page article.page{background:0 0!important;box-shadow:none;border:none;-webkit-box-shadow:none}#cd-timeline span.fa{color:#fff;font-size:28px;display:block;text-align:center;margin-top:17px}.cd-timeline-icon-link{color:#fff!important}@media only screen and (max-width:821px){#cd-timeline span.fa{color:#fff;font-size:18px;display:block;text-align:center;margin-top:12px}.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-read-more,.cd-timeline-block:nth-child(odd) .cd-timeline-content .cd-read-more{padding-left:0!important;position:relative;z-index:99999}}.timeline-width100{width:100%}.timeline-width34{width:34%}.timeline-width30{width:30%}.timeline-date-left{width:100%;float:left!important}.single-post .announcement-banner-image,.single-post .return-to-timeline,.single-post .timeline-express-single-page-announcement-date{display:none}
images/evan-herman-mascot.png ADDED
Binary file
images/support/btns-next-prev.png ADDED
Binary file
images/support/pagination.png ADDED
Binary file
images/support/reviews/support-review-1.jpg ADDED
Binary file
images/support/reviews/support-review-2.jpg ADDED
Binary file
images/support/reviews/support-review-3.jpg ADDED
Binary file
images/support/reviews/support-review-4.jpg ADDED
Binary file
images/support/reviews/support-review-5.jpg ADDED
Binary file
images/support/reviews/support-review-6.jpg ADDED
Binary file
images/support/reviews/support-review-7.jpg ADDED
Binary file
images/support/timeline-express-logo-256.png ADDED
Binary file
images/timeline-express-logo-128.png ADDED
Binary file
js/support/jquery.slides.min.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ /*
2
+ SlidesJS 3.0.4 http://slidesjs.com
3
+ (c) 2013 by Nathan Searles http://nathansearles.com
4
+ Updated: June 26th, 2013
5
+ Apache License: http://www.apache.org/licenses/LICENSE-2.0
6
+ */
7
+ (function(){(function(e,t,n){var r,i,s;s="slidesjs";i={width:940,height:528,start:1,navigation:{active:!0,effect:"slide"},pagination:{active:!0,effect:"slide"},play:{active:!1,effect:"slide",interval:5e3,auto:!1,swap:!0,pauseOnHover:!1,restartDelay:2500},effect:{slide:{speed:500},fade:{speed:300,crossfade:!0}},callback:{loaded:function(){},start:function(){},complete:function(){}}};r=function(){function t(t,n){this.element=t;this.options=e.extend(!0,{},i,n);this._defaults=i;this._name=s;this.init()}return t}();r.prototype.init=function(){var n,r,i,s,o,u,a=this;n=e(this.element);this.data=e.data(this);e.data(this,"animating",!1);e.data(this,"total",n.children().not(".slidesjs-navigation",n).length);e.data(this,"current",this.options.start-1);e.data(this,"vendorPrefix",this._getVendorPrefix());if(typeof TouchEvent!="undefined"){e.data(this,"touch",!0);this.options.effect.slide.speed=this.options.effect.slide.speed/2}n.css({overflow:"hidden"});n.slidesContainer=n.children().not(".slidesjs-navigation",n).wrapAll("<div class='slidesjs-container'>",n).parent().css({overflow:"hidden",position:"relative"});e(".slidesjs-container",n).wrapInner("<div class='slidesjs-control'>",n).children();e(".slidesjs-control",n).css({position:"relative",left:0});e(".slidesjs-control",n).children().addClass("slidesjs-slide").css({position:"absolute",top:0,left:0,width:"100%",zIndex:0,display:"none",webkitBackfaceVisibility:"hidden"});e.each(e(".slidesjs-control",n).children(),function(t){var n;n=e(this);return n.attr("slidesjs-index",t)});if(this.data.touch){e(".slidesjs-control",n).on("touchstart",function(e){return a._touchstart(e)});e(".slidesjs-control",n).on("touchmove",function(e){return a._touchmove(e)});e(".slidesjs-control",n).on("touchend",function(e){return a._touchend(e)})}n.fadeIn(0);this.update();this.data.touch&&this._setuptouch();e(".slidesjs-control",n).children(":eq("+this.data.current+")").eq(0).fadeIn(0,function(){return e(this).css({zIndex:10})});if(this.options.navigation.active){o=e("<a>",{"class":"slidesjs-previous slidesjs-navigation",href:"#",title:"Previous",text:"Previous"}).appendTo(n);r=e("<a>",{"class":"slidesjs-next slidesjs-navigation",href:"#",title:"Next",text:"Next"}).appendTo(n)}e(".slidesjs-next",n).click(function(e){e.preventDefault();a.stop(!0);return a.next(a.options.navigation.effect)});e(".slidesjs-previous",n).click(function(e){e.preventDefault();a.stop(!0);return a.previous(a.options.navigation.effect)});if(this.options.play.active){s=e("<a>",{"class":"slidesjs-play slidesjs-navigation",href:"#",title:"Play",text:"Play"}).appendTo(n);u=e("<a>",{"class":"slidesjs-stop slidesjs-navigation",href:"#",title:"Stop",text:"Stop"}).appendTo(n);s.click(function(e){e.preventDefault();return a.play(!0)});u.click(function(e){e.preventDefault();return a.stop(!0)});this.options.play.swap&&u.css({display:"none"})}if(this.options.pagination.active){i=e("<ul>",{"class":"slidesjs-pagination"}).appendTo(n);e.each(new Array(this.data.total),function(t){var n,r;n=e("<li>",{"class":"slidesjs-pagination-item"}).appendTo(i);r=e("<a>",{href:"#","data-slidesjs-item":t,html:t+1}).appendTo(n);return r.click(function(t){t.preventDefault();a.stop(!0);return a.goto(e(t.currentTarget).attr("data-slidesjs-item")*1+1)})})}e(t).bind("resize",function(){return a.update()});this._setActive();this.options.play.auto&&this.play();return this.options.callback.loaded(this.options.start)};r.prototype._setActive=function(t){var n,r;n=e(this.element);this.data=e.data(this);r=t>-1?t:this.data.current;e(".active",n).removeClass("active");return e(".slidesjs-pagination li:eq("+r+") a",n).addClass("active")};r.prototype.update=function(){var t,n,r;t=e(this.element);this.data=e.data(this);e(".slidesjs-control",t).children(":not(:eq("+this.data.current+"))").css({display:"none",left:0,zIndex:0});r=t.width();n=this.options.height/this.options.width*r;this.options.width=r;this.options.height=n;return e(".slidesjs-control, .slidesjs-container",t).css({width:r,height:n})};r.prototype.next=function(t){var n;n=e(this.element);this.data=e.data(this);e.data(this,"direction","next");t===void 0&&(t=this.options.navigation.effect);return t==="fade"?this._fade():this._slide()};r.prototype.previous=function(t){var n;n=e(this.element);this.data=e.data(this);e.data(this,"direction","previous");t===void 0&&(t=this.options.navigation.effect);return t==="fade"?this._fade():this._slide()};r.prototype.goto=function(t){var n,r;n=e(this.element);this.data=e.data(this);r===void 0&&(r=this.options.pagination.effect);t>this.data.total?t=this.data.total:t<1&&(t=1);if(typeof t=="number")return r==="fade"?this._fade(t):this._slide(t);if(typeof t=="string"){if(t==="first")return r==="fade"?this._fade(0):this._slide(0);if(t==="last")return r==="fade"?this._fade(this.data.total):this._slide(this.data.total)}};r.prototype._setuptouch=function(){var t,n,r,i;t=e(this.element);this.data=e.data(this);i=e(".slidesjs-control",t);n=this.data.current+1;r=this.data.current-1;r<0&&(r=this.data.total-1);n>this.data.total-1&&(n=0);i.children(":eq("+n+")").css({display:"block",left:this.options.width});return i.children(":eq("+r+")").css({display:"block",left:-this.options.width})};r.prototype._touchstart=function(t){var n,r;n=e(this.element);this.data=e.data(this);r=t.originalEvent.touches[0];this._setuptouch();e.data(this,"touchtimer",Number(new Date));e.data(this,"touchstartx",r.pageX);e.data(this,"touchstarty",r.pageY);return t.stopPropagation()};r.prototype._touchend=function(t){var n,r,i,s,o,u,a,f=this;n=e(this.element);this.data=e.data(this);u=t.originalEvent.touches[0];s=e(".slidesjs-control",n);if(s.position().left>this.options.width*.5||s.position().left>this.options.width*.1&&Number(new Date)-this.data.touchtimer<250){e.data(this,"direction","previous");this._slide()}else if(s.position().left<-(this.options.width*.5)||s.position().left<-(this.options.width*.1)&&Number(new Date)-this.data.touchtimer<250){e.data(this,"direction","next");this._slide()}else{i=this.data.vendorPrefix;a=i+"Transform";r=i+"TransitionDuration";o=i+"TransitionTimingFunction";s[0].style[a]="translateX(0px)";s[0].style[r]=this.options.effect.slide.speed*.85+"ms"}s.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",function(){i=f.data.vendorPrefix;a=i+"Transform";r=i+"TransitionDuration";o=i+"TransitionTimingFunction";s[0].style[a]="";s[0].style[r]="";return s[0].style[o]=""});return t.stopPropagation()};r.prototype._touchmove=function(t){var n,r,i,s,o;n=e(this.element);this.data=e.data(this);s=t.originalEvent.touches[0];r=this.data.vendorPrefix;i=e(".slidesjs-control",n);o=r+"Transform";e.data(this,"scrolling",Math.abs(s.pageX-this.data.touchstartx)<Math.abs(s.pageY-this.data.touchstarty));if(!this.data.animating&&!this.data.scrolling){t.preventDefault();this._setuptouch();i[0].style[o]="translateX("+(s.pageX-this.data.touchstartx)+"px)"}return t.stopPropagation()};r.prototype.play=function(t){var n,r,i,s=this;n=e(this.element);this.data=e.data(this);if(!this.data.playInterval){if(t){r=this.data.current;this.data.direction="next";this.options.play.effect==="fade"?this._fade():this._slide()}e.data(this,"playInterval",setInterval(function(){r=s.data.current;s.data.direction="next";return s.options.play.effect==="fade"?s._fade():s._slide()},this.options.play.interval));i=e(".slidesjs-container",n);if(this.options.play.pauseOnHover){i.unbind();i.bind("mouseenter",function(){return s.stop()});i.bind("mouseleave",function(){return s.options.play.restartDelay?e.data(s,"restartDelay",setTimeout(function(){return s.play(!0)},s.options.play.restartDelay)):s.play()})}e.data(this,"playing",!0);e(".slidesjs-play",n).addClass("slidesjs-playing");if(this.options.play.swap){e(".slidesjs-play",n).hide();return e(".slidesjs-stop",n).show()}}};r.prototype.stop=function(t){var n;n=e(this.element);this.data=e.data(this);clearInterval(this.data.playInterval);this.options.play.pauseOnHover&&t&&e(".slidesjs-container",n).unbind();e.data(this,"playInterval",null);e.data(this,"playing",!1);e(".slidesjs-play",n).removeClass("slidesjs-playing");if(this.options.play.swap){e(".slidesjs-stop",n).hide();return e(".slidesjs-play",n).show()}};r.prototype._slide=function(t){var n,r,i,s,o,u,a,f,l,c,h=this;n=e(this.element);this.data=e.data(this);if(!this.data.animating&&t!==this.data.current+1){e.data(this,"animating",!0);r=this.data.current;if(t>-1){t-=1;c=t>r?1:-1;i=t>r?-this.options.width:this.options.width;o=t}else{c=this.data.direction==="next"?1:-1;i=this.data.direction==="next"?-this.options.width:this.options.width;o=r+c}o===-1&&(o=this.data.total-1);o===this.data.total&&(o=0);this._setActive(o);a=e(".slidesjs-control",n);t>-1&&a.children(":not(:eq("+r+"))").css({display:"none",left:0,zIndex:0});a.children(":eq("+o+")").css({display:"block",left:c*this.options.width,zIndex:10});this.options.callback.start(r+1);if(this.data.vendorPrefix){u=this.data.vendorPrefix;l=u+"Transform";s=u+"TransitionDuration";f=u+"TransitionTimingFunction";a[0].style[l]="translateX("+i+"px)";a[0].style[s]=this.options.effect.slide.speed+"ms";return a.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",function(){a[0].style[l]="";a[0].style[s]="";a.children(":eq("+o+")").css({left:0});a.children(":eq("+r+")").css({display:"none",left:0,zIndex:0});e.data(h,"current",o);e.data(h,"animating",!1);a.unbind("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd");a.children(":not(:eq("+o+"))").css({display:"none",left:0,zIndex:0});h.data.touch&&h._setuptouch();return h.options.callback.complete(o+1)})}return a.stop().animate({left:i},this.options.effect.slide.speed,function(){a.css({left:0});a.children(":eq("+o+")").css({left:0});return a.children(":eq("+r+")").css({display:"none",left:0,zIndex:0},e.data(h,"current",o),e.data(h,"animating",!1),h.options.callback.complete(o+1))})}};r.prototype._fade=function(t){var n,r,i,s,o,u=this;n=e(this.element);this.data=e.data(this);if(!this.data.animating&&t!==this.data.current+1){e.data(this,"animating",!0);r=this.data.current;if(t){t-=1;o=t>r?1:-1;i=t}else{o=this.data.direction==="next"?1:-1;i=r+o}i===-1&&(i=this.data.total-1);i===this.data.total&&(i=0);this._setActive(i);s=e(".slidesjs-control",n);s.children(":eq("+i+")").css({display:"none",left:0,zIndex:10});this.options.callback.start(r+1);if(this.options.effect.fade.crossfade){s.children(":eq("+this.data.current+")").stop().fadeOut(this.options.effect.fade.speed);return s.children(":eq("+i+")").stop().fadeIn(this.options.effect.fade.speed,function(){s.children(":eq("+i+")").css({zIndex:0});e.data(u,"animating",!1);e.data(u,"current",i);return u.options.callback.complete(i+1)})}return s.children(":eq("+r+")").stop().fadeOut(this.options.effect.fade.speed,function(){s.children(":eq("+i+")").stop().fadeIn(u.options.effect.fade.speed,function(){return s.children(":eq("+i+")").css({zIndex:10})});e.data(u,"animating",!1);e.data(u,"current",i);return u.options.callback.complete(i+1)})}};r.prototype._getVendorPrefix=function(){var e,t,r,i,s;e=n.body||n.documentElement;r=e.style;i="transition";s=["Moz","Webkit","Khtml","O","ms"];i=i.charAt(0).toUpperCase()+i.substr(1);t=0;while(t<s.length){if(typeof r[s[t]+i]=="string")return s[t];t++}return!1};return e.fn[s]=function(t){return this.each(function(){if(!e.data(this,"plugin_"+s))return e.data(this,"plugin_"+s,new r(this,t))})}})(jQuery,window,document)}).call(this);
lib/metabox/about-template.php CHANGED
@@ -35,13 +35,13 @@
35
  </style>
36
 
37
  <section class="te-button-container">
38
- <a class="button-secondary" href="https://wordpress.org/support/plugin/timeline-express" target="_blank"><?php _e( 'Help!' , 'timeline-express' ); ?></a>
39
  <a class="button-secondary" href="https://wordpress.org/support/view/plugin-reviews/timeline-express" target="_blank"><?php _e( 'Review' , 'timeline-express' ); ?></a>
40
  <a class="button-secondary" href="http://www.evan-herman.com/contact/?contact-name=<?php echo $current_user_name; ?>&contact-reason=I want to make a donation for all your hard work" target="_blank"><?php _e( 'Donate' , 'timeline-express' ); ?></a>
41
  <br />
42
  <br />
43
  <!-- social media buttons -->
44
- <a href="http://facebook.com/yikesinc" title="WordPress" target="_blank" class="evan_herman_about_icon"><img src="<?php echo TIMELINE_EXPRESS_URL; ?>/images/wordpress-icon.png" style="border: 0px none;" alt="Evan Herman - WordPress Profile" height="24" width="24"></a>
45
  <a href="http://twitter.com/evanmherman" title="Twitter" target="_blank" class="evan_herman_about_icon"><img src="<?php echo TIMELINE_EXPRESS_URL; ?>/images/twitter.png" style="border: 0px none;" alt="Evan Herman - Twitter Profile" height="24" width="24"></a>
46
  <a href="https://www.linkedin.com/profile/view?id=46246110" title="Linkedin" target="_blank" class="evan_herman_about_icon"><img src="<?php echo TIMELINE_EXPRESS_URL; ?>/images/linkedin.png" alt="Evan Herman - LinkedIn Profile" border="0" height="24" width="24"></a>
47
  <a href="http://www.evan-herman.com/feed/" title="RSS Feed" target="_blank" class="evan_herman_about_icon"><img src="<?php echo TIMELINE_EXPRESS_URL; ?>/images/rss_icon.png" alt="Evan Herman - RSS Feed" border="0" height="24" width="24"></a>
35
  </style>
36
 
37
  <section class="te-button-container">
38
+ <a class="button-secondary" href="<?php echo admin_url() . 'edit.php?post_type=te_announcements&page=timeline-express-support'; ?>" target="_blank"><?php _e( 'Help!' , 'timeline-express' ); ?></a>
39
  <a class="button-secondary" href="https://wordpress.org/support/view/plugin-reviews/timeline-express" target="_blank"><?php _e( 'Review' , 'timeline-express' ); ?></a>
40
  <a class="button-secondary" href="http://www.evan-herman.com/contact/?contact-name=<?php echo $current_user_name; ?>&contact-reason=I want to make a donation for all your hard work" target="_blank"><?php _e( 'Donate' , 'timeline-express' ); ?></a>
41
  <br />
42
  <br />
43
  <!-- social media buttons -->
44
+ <a href="https://profiles.wordpress.org/eherman24#content-plugins" title="WordPress" class="evan_herman_about_icon"><img src="<?php echo TIMELINE_EXPRESS_URL; ?>/images/wordpress-icon.png" style="border: 0px none;" alt="Evan Herman - WordPress Profile" height="24" width="24"></a>
45
  <a href="http://twitter.com/evanmherman" title="Twitter" target="_blank" class="evan_herman_about_icon"><img src="<?php echo TIMELINE_EXPRESS_URL; ?>/images/twitter.png" style="border: 0px none;" alt="Evan Herman - Twitter Profile" height="24" width="24"></a>
46
  <a href="https://www.linkedin.com/profile/view?id=46246110" title="Linkedin" target="_blank" class="evan_herman_about_icon"><img src="<?php echo TIMELINE_EXPRESS_URL; ?>/images/linkedin.png" alt="Evan Herman - LinkedIn Profile" border="0" height="24" width="24"></a>
47
  <a href="http://www.evan-herman.com/feed/" title="RSS Feed" target="_blank" class="evan_herman_about_icon"><img src="<?php echo TIMELINE_EXPRESS_URL; ?>/images/rss_icon.png" alt="Evan Herman - RSS Feed" border="0" height="24" width="24"></a>
lib/support-contact-form.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( isset( $_REQUEST['action'] ) ) {
4
+ $action=$_REQUEST['action'];
5
+ }
6
+
7
+ if ( !isset( $action ) ) /* display the contact form */ {
8
+ ?>
9
+ <p><?php _e( 'If you need support, please fill out the following form. I will get back to you with some support as soon as possible.' , 'timeline-express' ); ?></p>
10
+ <p><em><?php _e( 'note: support requests are limitd to one per hour, to help reduce spam.' , 'timeline-express' ); ?></em></p>
11
+ <form action="" method="POST" enctype="multipart/form-data">
12
+ <input type="hidden" name="action" value="submit">
13
+ <label for="name"><?php _e( 'Your name' , 'timeline-express' ); ?>: <br />
14
+ <input name="name" type="text" value="<?php echo $license_data->customer_name; ?>" size="30"/></label>
15
+ <label for="message"><?php _e( 'Your message' , 'timeline-express' ); ?>:<br>
16
+ <textarea name="message" rows="7" cols="30" placeholder="<?php _e( 'please describe your issue in as much detail as possible' , 'timeline-express' ); ?>"></textarea></label>
17
+ <input type="submit" class="button-primary" value="Get Spport"/>
18
+ </form>
19
+ <?php
20
+ } else /* send the submitted data */ {
21
+ $name = trim( $_REQUEST['name'] );
22
+ $email = $license_data->customer_email;
23
+ // append the users license key, and other data
24
+ $message = '<strong>License Key :</strong> ' . $license . '<br /><strong>Expires :</strong> ' . date( 'F jS, Y' , strtotime( $license_data->expires ) ) . ' <br /><br /> <strong>Support Issue :</strong><br />' . $_REQUEST['message'];
25
+
26
+ if ( ( $name=="" ) || ( $email=="" ) || ( $_REQUEST['message']=="" ) ) {
27
+ echo "All fields are required, please fill <a href=\"\">the form</a> again.";
28
+ } else {
29
+ $from="From: $name <$email>";
30
+ $content_type='Content-type: text/html';
31
+ $subject="Premium Support Request: Timeline Express";
32
+ $headers = array( $from , $content_type );
33
+
34
+ $email = wp_mail("evan.m.herman@gmail.com", $subject, $message, $headers);
35
+
36
+ if ( is_wp_error( $email ) ) {
37
+ echo '<p>' . __( 'There was an error sending your request' , 'timeline-express' ) . ' : ' . $email->get_error_message() . '</p>';
38
+ echo '<p>' . __( 'If the error persists, please contact me directly for support at' , 'timeline-express' ) . '<a href="mailto:Evan.M.Herman@gmail.com" title="Email Support">Evan.M.Herman@Gmail.com</a></p>';
39
+ } else {
40
+ if ( $email ) {
41
+ set_transient( 'timeline_express_support_request_sent', '1', 1 * HOUR_IN_SECONDS );
42
+ echo '<p>' . __( "Support request successfully sent. I will be in touch regarding your issue shortly." , "timeline-express" ) . '</p>';
43
+ }
44
+ }
45
+
46
+
47
+ }
48
+ }
49
+ ?>
pages/options.php CHANGED
@@ -147,7 +147,7 @@ function toggle_delete_checkbox() {
147
  </strong>
148
  </span>
149
  </a>
150
- <a href="https://wordpress.org/support/plugin/timeline-express" target="_blank" title="Timeline Express Support">
151
  <span class="timeline_express_need_support">
152
  <strong>
153
  <?php _e( 'Need Help?', 'timeline-express' ); ?> <br />
@@ -170,14 +170,12 @@ function toggle_delete_checkbox() {
170
  </a>
171
  </div>
172
 
173
- <!-- tabs -->
174
- <h2 class="nav-tab-wrapper">
175
- <a href="#" onclick="return false;" class="nav-tab <?php echo $active_tab == 'settings' ? 'nav-tab-active' : ''; ?>"><?php _e('Timeline Express','timeline-express'); ?></a>
176
- </h2>
177
-
178
- <h2 id="timeline-express-page-header">
179
  <div id="timeline-express-icon" class="icon32"></div><?php _e('Timeline Express Settings','timeline-express'); ?>
180
- </h2>
 
 
 
181
 
182
  <div class="timeline-express-status" id="timeline-express-status"></div>
183
 
@@ -250,7 +248,7 @@ function toggle_delete_checkbox() {
250
  </tr>
251
  <!-- Excerpt Trim Length -->
252
  <tr valign="top">
253
- <th scope="row"><label for="excerpt-trim-length"><?php _e('Announcement Exceprt Length','timeline-express'); ?></label></th>
254
  <td>
255
  <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>
256
  </td>
@@ -276,7 +274,7 @@ function toggle_delete_checkbox() {
276
  <td></td>
277
  <!-- Toggle Date Visibility Description -->
278
  <td class="timeline-express-settings-description">
279
- <?php _e('toggle the visibility of the date next to the icon.','timeline-express'); ?>
280
  </td>
281
  </tr>
282
  <!-- Toggle Read Visibility More -->
@@ -293,7 +291,7 @@ function toggle_delete_checkbox() {
293
  <td></td>
294
  <!-- Toggle Read More Visibility Description -->
295
  <td class="timeline-express-settings-description">
296
- <?php _e('toggle the visibility of the read more button. hide to prevent users from viewing the full announcement.','timeline-express'); ?>
297
  </td>
298
  </tr>
299
  <tr valign="top">
@@ -367,8 +365,8 @@ function toggle_delete_checkbox() {
367
  </td>
368
  </tr>
369
  <tr valign="top">
370
- <!-- No Events Message -->
371
- <th scope="row"><label for="no-events-message"><?php _e('No Events Message','timeline-express'); ?></label></th>
372
  <td>
373
  <?php wp_editor( stripslashes( $this->timeline_express_optionVal['no-events-message'] ) , 'no-events-message', $no_event_messages_parameters); ?>
374
  </td>
147
  </strong>
148
  </span>
149
  </a>
150
+ <a href="<?php echo admin_url() . 'edit.php?post_type=te_announcements&page=timeline-express-support'; ?>" title="Timeline Express Premium Support">
151
  <span class="timeline_express_need_support">
152
  <strong>
153
  <?php _e( 'Need Help?', 'timeline-express' ); ?> <br />
170
  </a>
171
  </div>
172
 
173
+ <h1 id="timeline-express-page-header">
 
 
 
 
 
174
  <div id="timeline-express-icon" class="icon32"></div><?php _e('Timeline Express Settings','timeline-express'); ?>
175
+ <p style="margin-top:0;font-weight:200;"><?php _e( 'make adjustments to your timeline here, ranging from style to display options' , 'timeline-express' ); ?><p>
176
+ </h1>
177
+
178
+ <hr style="margin-top:4em;"/>
179
 
180
  <div class="timeline-express-status" id="timeline-express-status"></div>
181
 
248
  </tr>
249
  <!-- Excerpt Trim Length -->
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>
274
  <td></td>
275
  <!-- Toggle Date Visibility Description -->
276
  <td class="timeline-express-settings-description">
277
+ <?php _e('Toggle the visibility of the date next to the icon.','timeline-express'); ?>
278
  </td>
279
  </tr>
280
  <!-- Toggle Read Visibility More -->
291
  <td></td>
292
  <!-- Toggle Read More Visibility Description -->
293
  <td class="timeline-express-settings-description">
294
+ <?php _e('Toggle the visibility of the read more button. Hide to prevent users from viewing the full announcement.','timeline-express'); ?>
295
  </td>
296
  </tr>
297
  <tr valign="top">
365
  </td>
366
  </tr>
367
  <tr valign="top">
368
+ <!-- No Announcements Message -->
369
+ <th scope="row"><label for="no-events-message"><?php _e('No Announcements Message','timeline-express'); ?></label></th>
370
  <td>
371
  <?php wp_editor( stripslashes( $this->timeline_express_optionVal['no-events-message'] ) , 'no-events-message', $no_event_messages_parameters); ?>
372
  </td>
pages/support.php ADDED
@@ -0,0 +1,208 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Premium support template
4
+ // to do - setup chron to check license status once a day
5
+ // double check if we can't move this all into it's own support class file
6
+ //
7
+ */
8
+ wp_enqueue_style( 'slideshow-css' , TIMELINE_EXPRESS_URL . 'css/timeline-express-css3-slideshow.css' );
9
+ wp_register_script( 'slideshow-js' , TIMELINE_EXPRESS_URL . 'js/support/jquery.slides.min.js' , array( 'jquery' ) , 'all' );
10
+ wp_enqueue_script( 'slideshow-js' );
11
+
12
+ $review_images = scandir( TIMELINE_EXPRESS_PATH . 'images/support/reviews' );
13
+ $license = get_option( 'timeline_express_license_key' );
14
+ $status = get_option( 'timeline_express_license_status' );
15
+ $license_data = get_option( 'timeline_express_license_data' );
16
+ ?>
17
+
18
+ <div id="timeline-express-support-page-wrap">
19
+
20
+
21
+ <section id="timeline-express-support-page-header">
22
+
23
+ <img src="<?php echo TIMELINE_EXPRESS_URL . 'images/support/timeline-express-logo-256.png'; ?>" title="Timeline Express Logo" class="te-logo" >
24
+
25
+ <section class="support-subhead">
26
+ <h1 style="margin:0 0 1.2em 0;font-size:25px;"><?php _e( 'Timeline Express Support' , 'timeline-express' ); ?></h1>
27
+ <?php if( false !== $license ) {
28
+ if( $status !== false && $status == 'valid' ) { ?>
29
+ <p style="font-weight:200;"><?php _e( 'Thank you for purchasing a support license!' , 'timeline-express' ); ?></p>
30
+ <p style="font-weight:200;"><?php _e( 'If you run into any issues, or need support, feel free to submit a support ticket via the contact form below.' , 'timeline-express' ); ?></p>
31
+ <?php } else { ?>
32
+ <p style="font-weight:200;">
33
+ <?php _e( 'Have a support request? Please consider ' , 'timeline-express' ); ?>
34
+ <a href="http://www.evan-herman.com/wordpress-plugin/timeline-express/" title="Purchase a Support License Now" target="_blank"><?php _e( 'purchasing ' , 'timeline-express' ); ?></a>
35
+ <?php _e( 'a support license.' , 'timeline-express' ); ?>
36
+ </p>
37
+ <p style="font-weight:200;"><?php _e( 'Your purchase will go towards the continued development and support of Timeline Express, so the plugin will continue to thrive and improve.' , 'timeline-express' ); ?></p>
38
+ <?php }
39
+ } ?>
40
+
41
+ <!-- if the user doesn't have a license key, lets display the slider -->
42
+ <?php if( false !== $license ) {
43
+
44
+ if( $status !== false && $status != 'valid' || $status == false ) { ?>
45
+
46
+ <div class="te-slider-container">
47
+ <div id="slides">
48
+ <?php
49
+ foreach( $review_images as $review ) {
50
+ if ( $review != '.' && $review != '..' ) {
51
+ echo '<img src="' . TIMELINE_EXPRESS_URL .'images/support/reviews/' . $review . '" alt="review" >';
52
+ }
53
+ }
54
+ ?>
55
+ </div>
56
+ </div>
57
+
58
+ <?php
59
+ }
60
+ } ?>
61
+
62
+ </section>
63
+
64
+ </section>
65
+
66
+ <hr />
67
+
68
+ <form id="support-license-form" method="post" action="options.php">
69
+
70
+ <?php settings_fields('timeline_express_license'); ?>
71
+
72
+ <label for="timeline_express_license_key">
73
+ <strong><?php _e( 'Support License Key' , 'timeline-express' ); ?></strong>
74
+
75
+ <p style="display:inline-block;width:100%;">
76
+
77
+ <input id="timeline_express_license_key" type="text" placeholder="<?php _e( 'Support license key' , 'timeline-express' ); ?>" name="timeline_express_license_key" value="<?php esc_attr_e( $license ); ?>">
78
+ <?php if( false !== $license ) {
79
+ if( $status !== false && $status == 'valid' ) { $license_data = get_option( 'timeline_express_license_data' ); ?>
80
+ <span class="dashicons dashicons-yes timeline-express-valid-license" title="<?php _e( 'Valid and Active License' , 'timeline-express' ); ?>"></span>
81
+ <?php } else if ( $status !== false && $status == 'invalid' && $license_data->error == 'revoked' ) { // invalid status returned ?>
82
+ <a href="http://www.evan-herman.com/wordpress-plugin/timeline-express/" title="Purchase a Support License Now" target="_blank">
83
+ <input type="button" class="button-secondary purchase-support-license" value="<?php _e( 'Purchase a License' , 'timeline-express' ); ?>">
84
+ </a>
85
+ <section class="timeline-express-invalid-license-error"><span class="dashicons dashicons-no-alt"></span><?php echo __( 'There was an error with your license. It appears that your license key has been ' , 'timeline-express' ) . '<strong>' . $license_data->error . '</strong>' . '. ' . __( 'Please get in contact with support at ' , 'timeline-express' ); ?><a href="http://www.evan-herman.com/contact/" title="Evan Herman Plugin Development"><?php _e( 'EH Dev. Shop' , 'timeline-express' ); ?></a> <?php _e( ' to resolve the issue' , 'timeline-express' ); ?>.</section>
86
+ <?php } else if ( $status !== false && $status == 'invalid' && $license_data->error == 'missing' ) { // invalid api key...doesn't exist in the database, was never purchased. ?>
87
+ <a href="http://www.evan-herman.com/wordpress-plugin/timeline-express/" title="Purchase a Support License Now" target="_blank">
88
+ <input type="button" class="button-secondary purchase-support-license" value="<?php _e( 'Purchase a License' , 'timeline-express' ); ?>">
89
+ </a>
90
+ <section class="timeline-express-invalid-license-error"><span class="dashicons dashicons-no-alt"></span><?php echo __( 'Sorry this license key appears to be invalid. Please purchase a valid license key.' , 'timeline-express' ); ?></section>
91
+ <?php } else if ( $status !== false && $status == 'invalid' && $license_data->error == 'expired' || $status !== false && $status == 'expired' ) { // invalid api key...doesn't exist in the database, was never purchased. ?>
92
+ <a href="http://www.evan-herman.com/wordpress-plugin/timeline-express/" class="button-secondary purchase-support-license" alt="<?php esc_attr_e( $license ); ?>" title="<?php _e( 'Renew your Timeline Express license' , 'timeline-express' ); ?>" target="_blank">
93
+ <?php _e( 'Renew Your License' , 'timeline-express' ); ?>
94
+ </a>
95
+ <section class="timeline-express-invalid-license-error"><span class="dashicons dashicons-no-alt"></span><?php echo __( 'Oops, it looks like your license has expired. Please consider renewing your license for another year to continue receiving support.' , 'timeline-express' ); ?></section>
96
+ <?php } else { ?>
97
+ <a href="http://www.evan-herman.com/wordpress-plugin/timeline-express/" title="Purchase a Support License Now" target="_blank">
98
+ <input type="button" class="button-secondary purchase-support-license" value="<?php _e( 'Purchase a License' , 'timeline-express' ); ?>">
99
+ </a>
100
+ <?php
101
+ }
102
+ }
103
+ ?>
104
+ </p>
105
+
106
+ </label>
107
+
108
+ <section class="timeline-express-license-buttons">
109
+
110
+ <input type="submit" class="button-primary" value="Save Changes" style="float:left; margin-right: 1em;">
111
+
112
+ <!-- when active key, display a support ticketing form -->
113
+ <?php if( false !== $license ) { ?>
114
+ <?php if( $status !== false && $status == 'valid' ) { $license_data = get_option( 'timeline_express_license_data' ); ?>
115
+ <?php wp_nonce_field( 'timeline_express_nonce', 'timeline_express_nonce' ); ?>
116
+ <input type="submit" class="button-secondary" name="timeline_express_license_deactivate" value="<?php _e('Deactivate License'); ?>"/>
117
+ <?php } else {
118
+ if ( $license != '' ) {
119
+ wp_nonce_field( 'timeline_express_nonce', 'timeline_express_nonce' ); ?>
120
+ <input type="submit" class="button-secondary" name="timeline_express_license_activate" value="<?php _e('Activate License'); ?>"/>
121
+ <?php } } ?>
122
+ <?php } ?>
123
+
124
+ </section>
125
+
126
+ </form>
127
+
128
+ <?php if( false !== $license ) {
129
+
130
+ if( $status !== false && $status == 'valid' ) {
131
+
132
+ $license_data = get_option( 'timeline_express_license_data' ); ?>
133
+
134
+ <hr style="margin-bottom:2.5em;" />
135
+
136
+ <div style="width:100%; display:inline-block;">
137
+
138
+ <table class="widefat fixed" cellspacing="0" style="width:100%;max-width:500px; float:right;">
139
+ <thead>
140
+ <tr>
141
+ <th id="columnname" class="manage-column column-columnname" scope="col"><?php _e( 'License Info.' , 'timeline-express' ); ?></th>
142
+ <th id="columnname" class="manage-column column-columnname num" scope="col"></th>
143
+ </tr>
144
+ </thead>
145
+
146
+ <tbody>
147
+
148
+ <tr class="alternate">
149
+ <td class="column-columnname"><b><?php _e( 'License Holder' , 'timeline-express' ); ?></b></td>
150
+ <td class="column-columnname" style="text-align:center;"><?php echo $license_data->customer_name; ?></td>
151
+ </tr>
152
+
153
+ <tr class="alternate">
154
+ <td class="column-columnname"><b><?php _e( 'Sites Active/Limit' , 'timeline-express' ); ?></b></td>
155
+ <td class="column-columnname" style="text-align:center;"><?php echo $license_data->site_count . '/' . $license_data->license_limit; ?></td>
156
+ </tr>
157
+
158
+ <tr>
159
+ <td class="column-columnname"><b><?php _e( 'License Expires' , 'timeline-express' ); ?></b></td>
160
+ <td class="column-columnname" style="text-align:center;"><?php echo date( 'F jS, Y' , strtotime( $license_data->expires ) ); $days_remaining = (strtotime( $license_data->expires ) - strtotime('now')) / (60 * 60 * 24); if ( round( $days_remaining ) < 30 ) { echo '<span class="license-expiring-soon">expiring soon</span>'; } ?></td>
161
+ </tr>
162
+
163
+ </tbody>
164
+ </table>
165
+
166
+
167
+ <section id="premium-support-contact-form">
168
+ <h2 style="margin-bottom:.5em;margin-top:0;"><?php _e( 'Premium Support Ticketing' , 'timeline-express' ); ?></h2>
169
+ <?php
170
+ // check if the user has sent a request in the past hour
171
+ if ( false === get_transient( 'timeline_express_support_request_sent' ) ) {
172
+ require_once TIMELINE_EXPRESS_PATH . 'lib/support-contact-form.php';
173
+ } else {
174
+ _e( "It looks like you have recently sent us a support request. We limit the number of support requests to 1 per hour, to avoid spam. Sorry for the inconvinience, and thank you for understanding." , "timeline-express" );
175
+ }
176
+ ?>
177
+ </section>
178
+
179
+ </div>
180
+
181
+ <?php
182
+ }
183
+ }
184
+ ?>
185
+
186
+ <section id="eh-logos" style="display:block;width:100%;text-align:right;">
187
+ <a href="http://www.evan-herman.com" target="_blank" title="Evan Herman Professional WordPress Development">
188
+ <img src="<?php echo TIMELINE_EXPRESS_URL; ?>images/evan_herman_logo.png" alt="Evan Herman Logo" style="margin-right:4.5em;"><br />
189
+ <img src="<?php echo TIMELINE_EXPRESS_URL; ?>images/evan-herman-mascot.png" alt="Evan Herman Mascot" style="width:300px;margin-top:1em;" >
190
+ </a>
191
+ </section>
192
+
193
+ </div>
194
+
195
+ <!-- initialize the slider :) -->
196
+ <script>
197
+ jQuery(function() {
198
+ jQuery('#slides').slidesjs({
199
+ height: 200,
200
+ play: {
201
+ active: true,
202
+ auto: true,
203
+ interval: 6000,
204
+ swap: true
205
+ }
206
+ });
207
+ });
208
+ </script>
pages/welcome.php CHANGED
@@ -71,7 +71,7 @@ jQuery(document).ready(function() {
71
  </li>
72
  <li>
73
  <div class="admin-manage-announcements"></div>
74
- <h2 class="promo-text"><?php _e( 'Manange Announcements Easily' , 'timeline-express' ); ?></h2>
75
  </li>
76
  <li>
77
  <div class="customize-your-timeline"></div>
71
  </li>
72
  <li>
73
  <div class="admin-manage-announcements"></div>
74
+ <h2 class="promo-text"><?php _e( 'Manage Announcements Easily' , 'timeline-express' ); ?></h2>
75
  </li>
76
  <li>
77
  <div class="customize-your-timeline"></div>
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: eherman24
3
  Donate link: http://www.evan-herman.com/contact/?contact-reason=I%20want%20to%20make%20a%20donation%20for%20all%20your%20hard%20work
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.0.1
7
- Stable tag: 1.1.3.2
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!
@@ -39,12 +39,29 @@ Timeline express comes ready for translation. I would love to get things transla
39
  * Chinese (zh_CN) - thanks goes to <a href="http://www.vahichen.com" target="_blank">Vahi Chen</a>
40
  * Portuguese (pt_BR) - thanks goes to <a href="http://toborino.com" target="_blank">Gustavo Magalhães</a>
41
  * Polish (pl_PL) - thanks goes to Kanios
42
- * Dutch (nl_NL) - thanks goes to <a href="http://www.kasteelschaesberg.info/wpress/" target="_blank">Kees Hessels</a>
43
 
44
  <em>We're always looking for polyglots to help with the translations. If you enjoy this plugin, speak multiple languages and want to contribute please <a href="http://www.evan-herman.com/contact/" target="_blank">contact me</a> about how you can help translate things so users around the world can benefit from this plugin.</em>
45
 
46
  **Hooks + Filters**
47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  **Alter the 'Read More' button text (New v1.1.3.1)**
49
 
50
  Users can now alter the 'Read More' button text using the provided gettext filter and the 'timeline-express' text domain.
@@ -228,6 +245,13 @@ Have an idea for a future release feature? I love hearing about new ideas! You c
228
 
229
  == Changelog ==
230
 
 
 
 
 
 
 
 
231
  = 1.1.3.2 - December 11th, 2014 =
232
  * Enhancement: Added Dutch language translation (nl_NL) - thanks goes to <a href="http://www.kasteelschaesberg.info/wpress/" target="_blank">Kees Hessels</a>
233
  * Fixed: A few typos throughout the plugin
@@ -299,6 +323,13 @@ Have an idea for a future release feature? I love hearing about new ideas! You c
299
 
300
  == Upgrade Notice ==
301
 
 
 
 
 
 
 
 
302
  = 1.1.3.2 - December 11th, 2014 =
303
  * Enhancement: Added Dutch language translation (nl_NL) - thanks goes to <a href="http://www.kasteelschaesberg.info/wpress/" target="_blank">Kees Hessels</a>
304
  * Fixed: A few typos throughout the plugin
3
  Donate link: http://www.evan-herman.com/contact/?contact-reason=I%20want%20to%20make%20a%20donation%20for%20all%20your%20hard%20work
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.4
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!
39
  * Chinese (zh_CN) - thanks goes to <a href="http://www.vahichen.com" target="_blank">Vahi Chen</a>
40
  * Portuguese (pt_BR) - thanks goes to <a href="http://toborino.com" target="_blank">Gustavo Magalhães</a>
41
  * Polish (pl_PL) - thanks goes to Kanios
 
42
 
43
  <em>We're always looking for polyglots to help with the translations. If you enjoy this plugin, speak multiple languages and want to contribute please <a href="http://www.evan-herman.com/contact/" target="_blank">contact me</a> about how you can help translate things so users around the world can benefit from this plugin.</em>
44
 
45
  **Hooks + Filters**
46
 
47
+ **Customize the 'announcement' slug (New v1.1.4)**
48
+
49
+ Users can now define their own slug for announcement posts using the provided filter `'timeline-express-slug'`. This alters the URL structure of the announcement, possibly for SEO purposes. You would enter the following code into your active themes functions.php file.
50
+
51
+ After you enter the code into the functions.php file, you'll want to refresh your permalinks. You can do so by going to 'Settings > Permalinks' and simply clicking save. That will prevent the 404 page you may see upon altering the slug.
52
+
53
+ Example:
54
+ <code>
55
+ // alter '/announcement/' to be '/event/'
56
+ function timeline_express_change_announcement_slug( $slug ) {
57
+ $slug = 'event';
58
+ return $slug;
59
+ }
60
+ add_filter('timeline-express-slug', 'timeline_express_change_announcement_slug' );
61
+ </code>
62
+
63
+ This example would change the default `/announcement/` slug, to `/event/`.
64
+
65
  **Alter the 'Read More' button text (New v1.1.3.1)**
66
 
67
  Users can now alter the 'Read More' button text using the provided gettext filter and the 'timeline-express' text domain.
245
 
246
  == Changelog ==
247
 
248
+ = 1.1.4 - December 24th, 2014 =
249
+ * Enhancement: Implemented premium support licensing. Any issues that require immediate response, or custom code should purchase a support license.
250
+ * Enhancement: Added a new filter to customize the announcement slug (possibly for SEO purposes) (timeline-express-slug , check documentation for examples)
251
+ * Enhancement: Moved settings/support below Timeline Express parent menu item
252
+ * Fixed: Errors thrown when announcement images aren't set
253
+ * Fixed: Display error where announcements displayed a different date on the backend vs frontend
254
+
255
  = 1.1.3.2 - December 11th, 2014 =
256
  * Enhancement: Added Dutch language translation (nl_NL) - thanks goes to <a href="http://www.kasteelschaesberg.info/wpress/" target="_blank">Kees Hessels</a>
257
  * Fixed: A few typos throughout the plugin
323
 
324
  == Upgrade Notice ==
325
 
326
+ = 1.1.4 - December 24th, 2014 =
327
+ * Enhancement: Implemented premium support licensing. Any issues that require immediate response, or custom code should purchase a support license.
328
+ * Enhancement: Added a new filter to customize the announcement slug (possibly for SEO purposes) (timeline-express-slug , check documentation for examples)
329
+ * Enhancement: Moved settings/support below Timeline Express parent menu item
330
+ * Fixed: Errors thrown when announcement images aren't set
331
+ * Fixed: Display error where announcements displayed a different date on the backend vs frontend
332
+
333
  = 1.1.3.2 - December 11th, 2014 =
334
  * Enhancement: Added Dutch language translation (nl_NL) - thanks goes to <a href="http://www.kasteelschaesberg.info/wpress/" target="_blank">Kees Hessels</a>
335
  * Fixed: A few typos throughout the plugin
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.3.2
8
  Author: Evan Herman
9
  Author URI: http://www.evan-herman.com
10
  License: GPL2
@@ -28,12 +28,16 @@ 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.3.2');
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'));
35
  if(!defined('TIMELINE_EXPRESS_URL_WP_ADM')) define('TIMELINE_EXPRESS_URL_WP_ADM', TIMELINE_EXPRESS_URL_WP.'/wp-admin/');
36
 
 
 
 
 
37
  /** Database Tables **/
38
  if(!defined('TIMELINE_EXPRESS_OPTION')) define('TIMELINE_EXPRESS_OPTION', 'timeline_express_storage');
39
 
@@ -63,6 +67,10 @@ require_once TIMELINE_EXPRESS_PATH.'lib/lib.ajax.php';
63
  $timelineExpressBase = new timelineExpressBase();
64
 
65
  /** Activation Hooks **/
66
- register_activation_hook(__FILE__, array(&$timelineExpressBase, 'activate'));
67
- register_deactivation_hook(__FILE__, array(&$timelineExpressBase, 'deactivate'));
68
- register_uninstall_hook(__FILE__, array('timelineExpressBase', 'uninstall'));
 
 
 
 
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.4
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.4');
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'));
35
  if(!defined('TIMELINE_EXPRESS_URL_WP_ADM')) define('TIMELINE_EXPRESS_URL_WP_ADM', TIMELINE_EXPRESS_URL_WP.'/wp-admin/');
36
 
37
+ /* Define Support Constants */
38
+ if(!defined('EH_DEV_SHOP_URL')) define( 'EH_DEV_SHOP_URL', 'http://www.evan-herman.com' );
39
+ if(!defined('EH_DEV_SHOP_SUPPORT_PRODUCT_NAME')) define( 'EH_DEV_SHOP_SUPPORT_PRODUCT_NAME', 'timeline-express' );
40
+
41
  /** Database Tables **/
42
  if(!defined('TIMELINE_EXPRESS_OPTION')) define('TIMELINE_EXPRESS_OPTION', 'timeline_express_storage');
43
 
67
  $timelineExpressBase = new timelineExpressBase();
68
 
69
  /** Activation Hooks **/
70
+ register_activation_hook( __FILE__ , array( &$timelineExpressBase, 'activate') );
71
+ register_deactivation_hook( __FILE__ , array( &$timelineExpressBase, 'deactivate') );
72
+ // register_uninstall_hook( __FILE__ , array( &$timelineExpressBase, 'uninstall') );
73
+
74
+ /* Daily Cron Job to check license */
75
+ register_activation_hook( __FILE__ , array( &$timelineExpressBase , 'schedule_timeline_express_support_cron' ) );
76
+