Version Description
Download this release
Release Info
Developer | machothemes |
Plugin | Strong Testimonials |
Version | 2.33 |
Comparing to | |
See all releases |
Code changes from version 2.32.4 to 2.33
- admin/about/about.php +0 -11
- admin/about/addons.php +2 -11
- admin/about/class-strong-testimonials-about.php +2 -16
- admin/about/how-to.php +0 -19
- admin/about/links.php +1 -8
- admin/admin.php +1 -1
- admin/class-strong-testimonials-defaults.php +3 -0
- admin/class-strong-testimonials-list-table.php +0 -3
- admin/class-strong-testimonials-page-shortcodes.php +0 -2
- admin/class-walker-strong-category-checklist.php +0 -1
- admin/class-walker-strong-form-category-checklist.php +0 -1
- admin/css/views.css +4 -7
- admin/css/views.css.map +0 -7
- admin/custom-fields.php +2 -2
- admin/edd/EDD_SL_Plugin_Updater.php +0 -500
- admin/edd/Strong_Plugin_Updater.php +0 -234
- admin/js/views.js +33 -0
- admin/partials/views/option-content.php +87 -55
- admin/scss/_partials/_misc.scss +4 -9
- admin/settings/class-strong-testimonials-settings-compat.php +0 -2
- admin/settings/partials/form.php +0 -1
- admin/settings/partials/general.php +0 -1
- admin/views-validate.php +90 -59
- admin/views.php +1 -2
- includes/class-strong-view-display.php +35 -0
- includes/class-strong-view-slideshow.php +2 -1
- includes/class-strong-view.php +165 -29
- includes/class-walker-strong-category-checklist-front.php +0 -1
- includes/filters.php +30 -1
- includes/functions-activation.php +0 -1
- includes/functions-content.php +106 -94
- includes/functions-image.php +0 -2
- includes/functions-template.php +28 -34
- includes/functions-views.php +0 -3
- includes/functions.php +1 -3
- includes/l10n-polylang.php +3 -0
- includes/l10n-wpml.php +6 -0
- includes/scripts.php +16 -1
- public/css/animate.min.css +11 -0
- public/css/custom.css +0 -5
- public/js/controller.js +13 -1
- public/js/controller.min.js +1 -1
- public/js/lib/form-validation/form-validation.js +0 -2
- public/js/lib/readmore/readmore.js +122 -0
- public/js/lib/readmore/readmore.min.js +1 -0
- public/js/lib/strongslider/jquery.strongslider.js +1 -0
- public/js/lib/strongslider/jquery.strongslider.min.js +1 -1
- readme.txt +13 -55
- strong-testimonials.php +22 -22
- templates-scss/_partials/_base.scss +12 -0
- templates/bold/content.css +8 -0
- templates/default/content.css +8 -0
- templates/modern/content.css +8 -0
- templates/simple/content.css +8 -0
- templates/small-widget/content.css +8 -0
admin/about/about.php
DELETED
@@ -1,11 +0,0 @@
|
|
1 |
-
<h2><?php _e( 'Flexible Features. Strong Support.', 'strong-testimonials' ); ?></h2>
|
2 |
-
<?php /* translators: %s is a formatted number */ ?>
|
3 |
-
<p class="lead-description"><?php printf( __( 'The highest-rated free testimonials plugin trusted by more than %s people.', 'strong-testimonials' ), number_format_i18n( 60000 ) ); ?></p>
|
4 |
-
<div class="feature-section one-col">
|
5 |
-
<div class="col">
|
6 |
-
<p><?php _e( 'Designed from the ground up to simplify the process of customizing your testimonials or reviews.', 'strong-testimonials' ); ?></p>
|
7 |
-
<p><?php _e( '<strong>Custom fields</strong> are deeply integrated into Strong Testimonials. It even includes a default set of custom fields so you can get started quickly.', 'strong-testimonials' ); ?></p>
|
8 |
-
<p><?php _e( 'Forget about complicated shortcodes. Use <strong>views</strong> to construct unlimited testimonial displays including grids and slideshows with features like excerpts and pagination in a variety of templates.', 'strong-testimonials' ); ?></p>
|
9 |
-
<p><?php _e( 'Integrate with plugins like Popup Maker or Google Captcha. For developers, actions and filters allow further customization.', 'strong-testimonials' ); ?></p>
|
10 |
-
</div>
|
11 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/about/addons.php
CHANGED
@@ -1,17 +1,8 @@
|
|
1 |
<hr />
|
2 |
|
3 |
-
<h2><?php _e( 'Get More Features With
|
4 |
|
5 |
<div id="addons" class="feature-section three-col">
|
6 |
-
<div class="col sidebar-block sidebar-news addon review-markup">
|
7 |
-
<h3>Review Markup</h3>
|
8 |
-
<p>Improve your search engine results and get rich snippets by adding review markup to your testimonials. </p>
|
9 |
-
<div class="actions">
|
10 |
-
<a href="https://strongplugins.com/plugins/strong-testimonials-review-markup/?utm_source=plugin&utm_medium=about" target="_blank">Learn more</a>
|
11 |
-
•
|
12 |
-
<a href="https://strongdemos.com/strong-testimonials-review-markup/?utm_source=plugin&utm_medium=about" target="_blank">Go demo</a>
|
13 |
-
</div>
|
14 |
-
</div>
|
15 |
<div class="col sidebar-block sidebar-news addon multiple-forms">
|
16 |
<h3>Multiple Forms</h3>
|
17 |
<p>Need more forms for different products or services? No problem. Create unlimited forms.</p>
|
@@ -30,7 +21,7 @@
|
|
30 |
</div>
|
31 |
<div class="col sidebar-block sidebar-news addon assignment">
|
32 |
<h3>Assignment</h3>
|
33 |
-
<p>Assign testimonials to any
|
34 |
<div class="actions">
|
35 |
<a href="https://strongplugins.com/plugins/strong-testimonials-assignment?utm_source=plugin&utm_medium=about" target="_blank">Learn more</a>
|
36 |
•
|
1 |
<hr />
|
2 |
|
3 |
+
<h2><?php _e( 'Get More Features With Free Add-ons', 'strong-testimonials' ); ?></h2>
|
4 |
|
5 |
<div id="addons" class="feature-section three-col">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
<div class="col sidebar-block sidebar-news addon multiple-forms">
|
7 |
<h3>Multiple Forms</h3>
|
8 |
<p>Need more forms for different products or services? No problem. Create unlimited forms.</p>
|
21 |
</div>
|
22 |
<div class="col sidebar-block sidebar-news addon assignment">
|
23 |
<h3>Assignment</h3>
|
24 |
+
<p>Assign testimonials to any content type with features designed to simplify your workflow. Works well with portfolio, directory and service business themes.</p>
|
25 |
<div class="actions">
|
26 |
<a href="https://strongplugins.com/plugins/strong-testimonials-assignment?utm_source=plugin&utm_medium=about" target="_blank">Learn more</a>
|
27 |
•
|
admin/about/class-strong-testimonials-about.php
CHANGED
@@ -52,7 +52,7 @@ class Strong_Testimonials_About {
|
|
52 |
*/
|
53 |
public function about_page() {
|
54 |
$major_minor = strtok( WPMTST_VERSION, '.' ) . '.' . strtok( '.' );
|
55 |
-
$active_tab = isset( $_GET['tab'] ) ? $_GET['tab'] : '
|
56 |
$url = admin_url( 'edit.php?post_type=wpm-testimonial&page=about-strong-testimonials' );
|
57 |
?>
|
58 |
<div class="wrap about-wrap">
|
@@ -63,41 +63,27 @@ class Strong_Testimonials_About {
|
|
63 |
<p class="about-text">
|
64 |
<?php _e( 'Thank you for updating to the latest version!' ); ?>
|
65 |
<?php /* translators: %s is the plugin version number */ ?>
|
66 |
-
<?php printf( 'Strong Testimonials %s adds a slider carousel option.', $major_minor ); ?>
|
67 |
</p>
|
68 |
|
69 |
<div class="wp-badge strong-testimonials"><?php printf( __( 'Version %s' ), $major_minor ); ?></div>
|
70 |
|
71 |
<h2 class="nav-tab-wrapper wp-clearfix">
|
72 |
|
73 |
-
<a href="<?php echo $url; ?>" class="nav-tab <?php echo $active_tab == 'about' ? 'nav-tab-active' : ''; ?>"><?php _e( 'About' ); ?></a>
|
74 |
-
|
75 |
-
<a href="<?php echo add_query_arg( 'tab', 'whats-new', $url ); ?>" class="nav-tab <?php echo $active_tab == 'whats-new' ? 'nav-tab-active' : ''; ?>"><?php _e( 'What’s New' ); ?></a>
|
76 |
-
|
77 |
<a href="<?php echo add_query_arg( 'tab', 'how-to', $url ); ?>" class="nav-tab <?php echo $active_tab == 'how-to' ? 'nav-tab-active' : ''; ?>"><?php _e( 'How To', 'strong-testimonials' ); ?></a>
|
78 |
|
79 |
<a href="<?php echo add_query_arg( 'tab', 'privacy', $url ); ?>" class="nav-tab <?php echo $active_tab == 'privacy' ? 'nav-tab-active' : ''; ?>"><?php _e( 'Privacy' ); ?></a>
|
80 |
|
81 |
</h2>
|
82 |
|
83 |
-
<!--
|
84 |
-
<div class="changelog point-releases">
|
85 |
-
</div>
|
86 |
-
-->
|
87 |
|
88 |
<?php
|
89 |
switch( $active_tab ) {
|
90 |
case 'privacy':
|
91 |
include WPMTST_ADMIN . 'about/privacy.php';
|
92 |
break;
|
93 |
-
|
94 |
include WPMTST_ADMIN . 'about/how-to.php';
|
95 |
break;
|
96 |
-
case 'whats-new':
|
97 |
-
include WPMTST_ADMIN . 'about/whats-new.php';
|
98 |
-
break;
|
99 |
-
default:
|
100 |
-
include WPMTST_ADMIN. 'about/about.php';
|
101 |
}
|
102 |
|
103 |
include WPMTST_ADMIN. 'about/links.php';
|
52 |
*/
|
53 |
public function about_page() {
|
54 |
$major_minor = strtok( WPMTST_VERSION, '.' ) . '.' . strtok( '.' );
|
55 |
+
$active_tab = isset( $_GET['tab'] ) ? $_GET['tab'] : 'how-to';
|
56 |
$url = admin_url( 'edit.php?post_type=wpm-testimonial&page=about-strong-testimonials' );
|
57 |
?>
|
58 |
<div class="wrap about-wrap">
|
63 |
<p class="about-text">
|
64 |
<?php _e( 'Thank you for updating to the latest version!' ); ?>
|
65 |
<?php /* translators: %s is the plugin version number */ ?>
|
|
|
66 |
</p>
|
67 |
|
68 |
<div class="wp-badge strong-testimonials"><?php printf( __( 'Version %s' ), $major_minor ); ?></div>
|
69 |
|
70 |
<h2 class="nav-tab-wrapper wp-clearfix">
|
71 |
|
|
|
|
|
|
|
|
|
72 |
<a href="<?php echo add_query_arg( 'tab', 'how-to', $url ); ?>" class="nav-tab <?php echo $active_tab == 'how-to' ? 'nav-tab-active' : ''; ?>"><?php _e( 'How To', 'strong-testimonials' ); ?></a>
|
73 |
|
74 |
<a href="<?php echo add_query_arg( 'tab', 'privacy', $url ); ?>" class="nav-tab <?php echo $active_tab == 'privacy' ? 'nav-tab-active' : ''; ?>"><?php _e( 'Privacy' ); ?></a>
|
75 |
|
76 |
</h2>
|
77 |
|
|
|
|
|
|
|
|
|
78 |
|
79 |
<?php
|
80 |
switch( $active_tab ) {
|
81 |
case 'privacy':
|
82 |
include WPMTST_ADMIN . 'about/privacy.php';
|
83 |
break;
|
84 |
+
default:
|
85 |
include WPMTST_ADMIN . 'about/how-to.php';
|
86 |
break;
|
|
|
|
|
|
|
|
|
|
|
87 |
}
|
88 |
|
89 |
include WPMTST_ADMIN. 'about/links.php';
|
admin/about/how-to.php
CHANGED
@@ -4,25 +4,6 @@ $add_the_view = __( 'Add the view to a page or sidebar using its unique shortcod
|
|
4 |
<h2><?php _e( 'Let\'s Get Started', 'strong-testimonials' ); ?></h2>
|
5 |
<p class="lead-description"><?php _e( 'This plugin is different than others you may have tried.', 'strong-testimonials' ); ?></p>
|
6 |
|
7 |
-
<div class="feature-section one-col">
|
8 |
-
<p><?php printf( __( 'Testimonials are like posts. They can be viewed individually. For example, a testimonial with the title "Highly recommended!" is viewable at <a href="#" class="nogo">%1$s</a>.', 'strong-testimonials' ), home_url( 'testimonial/highly-recommended' ) ); ?></p>
|
9 |
-
|
10 |
-
<script>
|
11 |
-
document.querySelector(".nogo").addEventListener("click", function (e) {
|
12 |
-
e.preventDefault();
|
13 |
-
this.blur();
|
14 |
-
});
|
15 |
-
</script>
|
16 |
-
|
17 |
-
<p><?php _e( 'The more common approach is to display a group of testimonials. Among the many options, you can select which testimonials to include, what fields to show, and the layout.', 'strong-testimonials' ); ?></p>
|
18 |
-
|
19 |
-
<p><?php _e( 'The plugin provides a tool for configuring those displays: <strong>Views</strong>.', 'strong-testimonials' ); ?>
|
20 |
-
<?php _e( 'A view is simply a group of settings with an easy-to-use editor.', 'strong-testimonials' ); ?>
|
21 |
-
<?php _e( 'You can create <em>unlimited</em> views.', 'strong-testimonials' ); ?>
|
22 |
-
<?php _e( 'Each view has its own simple shortcode.', 'strong-testimonials' ); ?>
|
23 |
-
</p>
|
24 |
-
</div>
|
25 |
-
|
26 |
<div class="feature-section two-col">
|
27 |
<div class="col">
|
28 |
<h3><?php _e('How to Add the Form', 'strong-testimonials' ); ?></h3>
|
4 |
<h2><?php _e( 'Let\'s Get Started', 'strong-testimonials' ); ?></h2>
|
5 |
<p class="lead-description"><?php _e( 'This plugin is different than others you may have tried.', 'strong-testimonials' ); ?></p>
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
<div class="feature-section two-col">
|
8 |
<div class="col">
|
9 |
<h3><?php _e('How to Add the Form', 'strong-testimonials' ); ?></h3>
|
admin/about/links.php
CHANGED
@@ -8,15 +8,8 @@ $links = array();
|
|
8 |
|
9 |
$links[] = sprintf( '<a href="%s" target="_blank">%s</a>',
|
10 |
esc_url( 'http://wordpress.org/support/plugin/strong-testimonials' ),
|
11 |
-
__( 'Use the
|
12 |
|
13 |
-
$links[] = __( 'or', 'strong-testimonials' ) . ' ' . sprintf( '<a href="%s" target="_blank">%s</a>',
|
14 |
-
esc_url( 'https://support.strongplugins.com' ),
|
15 |
-
__( 'submit a private support ticket', 'strong-testimonials' ) );
|
16 |
-
|
17 |
-
$links[] = __( 'or', 'strong-testimonials' ) . ' ' . sprintf( '<a href="%s" target="_blank">%s</a>',
|
18 |
-
esc_url( 'https://strongplugins.com/contact/' ),
|
19 |
-
__( 'contact the developer', 'strong-testimonials' ) );
|
20 |
?>
|
21 |
<ul>
|
22 |
<?php foreach ( $links as $link ) : ?>
|
8 |
|
9 |
$links[] = sprintf( '<a href="%s" target="_blank">%s</a>',
|
10 |
esc_url( 'http://wordpress.org/support/plugin/strong-testimonials' ),
|
11 |
+
__( 'Use the community support forum', 'strong-testimonials' ) );
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
?>
|
14 |
<ul>
|
15 |
<?php foreach ( $links as $link ) : ?>
|
admin/admin.php
CHANGED
@@ -204,7 +204,7 @@ function wpmtst_plugin_row_meta( $plugin_meta, $plugin_file, $plugin_data = arra
|
|
204 |
|
205 |
return $plugin_meta;
|
206 |
}
|
207 |
-
add_filter( 'plugin_row_meta', 'wpmtst_plugin_row_meta' , 10, 4 );
|
208 |
|
209 |
|
210 |
/**
|
204 |
|
205 |
return $plugin_meta;
|
206 |
}
|
207 |
+
//add_filter( 'plugin_row_meta', 'wpmtst_plugin_row_meta' , 10, 4 );
|
208 |
|
209 |
|
210 |
/**
|
admin/class-strong-testimonials-defaults.php
CHANGED
@@ -705,6 +705,9 @@ class Strong_Testimonials_Defaults {
|
|
705 |
'more_post' => true,
|
706 |
'more_post_ellipsis' => true,
|
707 |
'more_post_text' => _x( 'Read more', 'link', 'strong-testimonials' ),
|
|
|
|
|
|
|
708 |
'more_page' => false,
|
709 |
'more_page_hook' => 'wpmtst_view_footer',
|
710 |
'more_page_id' => 0,
|
705 |
'more_post' => true,
|
706 |
'more_post_ellipsis' => true,
|
707 |
'more_post_text' => _x( 'Read more', 'link', 'strong-testimonials' ),
|
708 |
+
'more_post_in_place' => false,
|
709 |
+
'less_post' => false,
|
710 |
+
'less_post_text' => __( 'Show less', 'strong-testimonials' ),
|
711 |
'more_page' => false,
|
712 |
'more_page_hook' => 'wpmtst_view_footer',
|
713 |
'more_page_id' => 0,
|
admin/class-strong-testimonials-list-table.php
CHANGED
@@ -8,9 +8,6 @@
|
|
8 |
*
|
9 |
* @since 3.1.0
|
10 |
* @access private
|
11 |
-
*
|
12 |
-
* @package
|
13 |
-
* @subpackage
|
14 |
*/
|
15 |
|
16 |
if ( !class_exists( 'Strong_Testimonials_List_Table' ) ) :
|
8 |
*
|
9 |
* @since 3.1.0
|
10 |
* @access private
|
|
|
|
|
|
|
11 |
*/
|
12 |
|
13 |
if ( !class_exists( 'Strong_Testimonials_List_Table' ) ) :
|
admin/class-strong-testimonials-page-shortcodes.php
CHANGED
@@ -31,8 +31,6 @@ class Strong_Testimonials_Page_Shortcodes {
|
|
31 |
|
32 |
<h1><?php _e( 'Shortcodes', 'strong-testimonials' ); ?></h1>
|
33 |
|
34 |
-
<p><?php printf( wp_kses( __( 'Open a <a href="%s" target="_blank">support ticket</a> if you need help.', 'strong-testimonials' ), $tags ), wpmtst_support_url() ); ?></p>
|
35 |
-
|
36 |
<h2><?php _e( 'Testimonial Views', 'strong-testimonials' ); ?></h2>
|
37 |
|
38 |
<p>
|
31 |
|
32 |
<h1><?php _e( 'Shortcodes', 'strong-testimonials' ); ?></h1>
|
33 |
|
|
|
|
|
34 |
<h2><?php _e( 'Testimonial Views', 'strong-testimonials' ); ?></h2>
|
35 |
|
36 |
<p>
|
admin/class-walker-strong-category-checklist.php
CHANGED
@@ -2,7 +2,6 @@
|
|
2 |
/**
|
3 |
* Taxonomy API: Walker_Strong_Category_Checklist class
|
4 |
*
|
5 |
-
* @package Strong_Testimonials
|
6 |
* @since 2.2.0
|
7 |
*/
|
8 |
|
2 |
/**
|
3 |
* Taxonomy API: Walker_Strong_Category_Checklist class
|
4 |
*
|
|
|
5 |
* @since 2.2.0
|
6 |
*/
|
7 |
|
admin/class-walker-strong-form-category-checklist.php
CHANGED
@@ -2,7 +2,6 @@
|
|
2 |
/**
|
3 |
* Taxonomy API: Walker_Strong_Form_Category_Checklist class
|
4 |
*
|
5 |
-
* @package Strong_Testimonials
|
6 |
* @since 2.2.0
|
7 |
*/
|
8 |
|
2 |
/**
|
3 |
* Taxonomy API: Walker_Strong_Form_Category_Checklist class
|
4 |
*
|
|
|
5 |
* @since 2.2.0
|
6 |
*/
|
7 |
|
admin/css/views.css
CHANGED
@@ -251,14 +251,11 @@ td.column-name strong {
|
|
251 |
td.rowspan {
|
252 |
border-left: 1px solid #DDD; }
|
253 |
|
254 |
-
.highlight-on {
|
255 |
-
background: rgba(0, 164, 243, 0.05);
|
256 |
-
border: 1px solid rgba(0, 164, 243, 0.1);
|
257 |
-
padding: 0 0.5em; }
|
258 |
-
|
259 |
.subgroup {
|
260 |
-
|
261 |
-
|
|
|
|
|
262 |
|
263 |
.subgroup-heading {
|
264 |
font-weight: 600; }
|
251 |
td.rowspan {
|
252 |
border-left: 1px solid #DDD; }
|
253 |
|
|
|
|
|
|
|
|
|
|
|
254 |
.subgroup {
|
255 |
+
background: #f8f8f8;
|
256 |
+
border: 1px solid #f1f1f1;
|
257 |
+
padding: 0.25em 1em;
|
258 |
+
margin-right: 1em; }
|
259 |
|
260 |
.subgroup-heading {
|
261 |
font-weight: 600; }
|
admin/css/views.css.map
DELETED
@@ -1,7 +0,0 @@
|
|
1 |
-
{
|
2 |
-
"version": 3,
|
3 |
-
"mappings": "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",
|
4 |
-
"sources": ["../scss/views.scss","../scss/_partials/_structure.scss","../scss/_partials/_view-info.scss","../scss/_partials/_category-filter.scss","../scss/_partials/_checkbox-icons.scss","../scss/_partials/_misc.scss","../scss/_partials/_screenshots.scss","../scss/_partials/_inputs.scss","../scss/_partials/_elements.scss","../scss/_partials/_form-table.scss","../scss/_partials/_category-checkboxes.scss","../scss/_partials/_list-radio-buttons.scss","../scss/_partials/_template.scss","../scss/_partials/_layout.scss","../scss/_partials/_layout-examples.scss","../scss/_partials/_layout-example-columns.scss","../scss/_partials/_layout-example-grid.scss","../scss/_partials/_layout-example-masonry.scss","../scss/_partials/_background.scss","../scss/_partials/_custom-fields.scss","../scss/_partials/_help-tab.scss","../scss/_partials/_sticky-views.scss"],
|
5 |
-
"names": [],
|
6 |
-
"file": "views.css"
|
7 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/custom-fields.php
CHANGED
@@ -156,8 +156,8 @@ function wpmtst_settings_custom_fields( $form_id = 1 ) {
|
|
156 |
$fields = $forms[$form_id]['fields'];
|
157 |
?>
|
158 |
<div class="wrap wpmtst">
|
159 |
-
<h1><?php _e( 'Fields', 'strong-testimonials' ); ?></h1>
|
160 |
-
|
161 |
<?php do_action( 'wpmtst_fields_editor_before_fields_intro' ); ?>
|
162 |
|
163 |
<div id="left-col">
|
156 |
$fields = $forms[$form_id]['fields'];
|
157 |
?>
|
158 |
<div class="wrap wpmtst">
|
159 |
+
<h1 class="wp-heading-inline"><?php _e( 'Fields', 'strong-testimonials' ); ?></h1>
|
160 |
+
<hr class="wp-header-end">
|
161 |
<?php do_action( 'wpmtst_fields_editor_before_fields_intro' ); ?>
|
162 |
|
163 |
<div id="left-col">
|
admin/edd/EDD_SL_Plugin_Updater.php
DELETED
@@ -1,500 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// Exit if accessed directly
|
4 |
-
if ( ! defined( 'ABSPATH' ) ) exit;
|
5 |
-
|
6 |
-
/**
|
7 |
-
* Allows plugins to use their own update API.
|
8 |
-
*
|
9 |
-
* @author Easy Digital Downloads
|
10 |
-
* @version 1.6.16
|
11 |
-
*/
|
12 |
-
class EDD_SL_Plugin_Updater {
|
13 |
-
|
14 |
-
private $api_url = '';
|
15 |
-
private $api_data = array();
|
16 |
-
private $name = '';
|
17 |
-
private $slug = '';
|
18 |
-
private $version = '';
|
19 |
-
private $wp_override = false;
|
20 |
-
private $cache_key = '';
|
21 |
-
|
22 |
-
/**
|
23 |
-
* Class constructor.
|
24 |
-
*
|
25 |
-
* @uses plugin_basename()
|
26 |
-
* @uses hook()
|
27 |
-
*
|
28 |
-
* @param string $_api_url The URL pointing to the custom API endpoint.
|
29 |
-
* @param string $_plugin_file Path to the plugin file.
|
30 |
-
* @param array $_api_data Optional data to send with API calls.
|
31 |
-
*/
|
32 |
-
public function __construct( $_api_url, $_plugin_file, $_api_data = null ) {
|
33 |
-
|
34 |
-
global $edd_plugin_data;
|
35 |
-
|
36 |
-
$this->api_url = trailingslashit( $_api_url );
|
37 |
-
$this->api_data = $_api_data;
|
38 |
-
$this->name = plugin_basename( $_plugin_file );
|
39 |
-
$this->slug = basename( $_plugin_file, '.php' );
|
40 |
-
$this->version = $_api_data['version'];
|
41 |
-
$this->wp_override = isset( $_api_data['wp_override'] ) ? (bool) $_api_data['wp_override'] : false;
|
42 |
-
$this->beta = ! empty( $this->api_data['beta'] ) ? true : false;
|
43 |
-
$this->cache_key = 'edd_sl_' . md5( serialize( $this->slug . $this->api_data['license'] . $this->beta ) );
|
44 |
-
|
45 |
-
$edd_plugin_data[ $this->slug ] = $this->api_data;
|
46 |
-
|
47 |
-
/**
|
48 |
-
* Fires after the $edd_plugin_data is setup.
|
49 |
-
*
|
50 |
-
* @since x.x.x
|
51 |
-
*
|
52 |
-
* @param array $edd_plugin_data Array of EDD SL plugin data.
|
53 |
-
*/
|
54 |
-
do_action( 'post_edd_sl_plugin_updater_setup', $edd_plugin_data );
|
55 |
-
|
56 |
-
// Set up hooks.
|
57 |
-
$this->init();
|
58 |
-
|
59 |
-
}
|
60 |
-
|
61 |
-
/**
|
62 |
-
* Set up WordPress filters to hook into WP's update process.
|
63 |
-
*
|
64 |
-
* @uses add_filter()
|
65 |
-
*
|
66 |
-
* @return void
|
67 |
-
*/
|
68 |
-
public function init() {
|
69 |
-
|
70 |
-
add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) );
|
71 |
-
add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 );
|
72 |
-
remove_action( 'after_plugin_row_' . $this->name, 'wp_plugin_update_row', 10 );
|
73 |
-
add_action( 'after_plugin_row_' . $this->name, array( $this, 'show_update_notification' ), 10, 2 );
|
74 |
-
add_action( 'admin_init', array( $this, 'show_changelog' ) );
|
75 |
-
|
76 |
-
}
|
77 |
-
|
78 |
-
/**
|
79 |
-
* Check for Updates at the defined API endpoint and modify the update array.
|
80 |
-
*
|
81 |
-
* This function dives into the update API just when WordPress creates its update array,
|
82 |
-
* then adds a custom API call and injects the custom plugin data retrieved from the API.
|
83 |
-
* It is reassembled from parts of the native WordPress plugin update code.
|
84 |
-
* See wp-includes/update.php line 121 for the original wp_update_plugins() function.
|
85 |
-
*
|
86 |
-
* @uses api_request()
|
87 |
-
*
|
88 |
-
* @param array $_transient_data Update array build by WordPress.
|
89 |
-
* @return array Modified update array with custom plugin data.
|
90 |
-
*/
|
91 |
-
public function check_update( $_transient_data ) {
|
92 |
-
|
93 |
-
global $pagenow;
|
94 |
-
|
95 |
-
if ( ! is_object( $_transient_data ) ) {
|
96 |
-
$_transient_data = new stdClass;
|
97 |
-
}
|
98 |
-
|
99 |
-
if ( 'plugins.php' == $pagenow && is_multisite() ) {
|
100 |
-
return $_transient_data;
|
101 |
-
}
|
102 |
-
|
103 |
-
if ( ! empty( $_transient_data->response ) && ! empty( $_transient_data->response[ $this->name ] ) && false === $this->wp_override ) {
|
104 |
-
return $_transient_data;
|
105 |
-
}
|
106 |
-
|
107 |
-
$version_info = $this->get_cached_version_info();
|
108 |
-
|
109 |
-
if ( false === $version_info ) {
|
110 |
-
$version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug, 'beta' => $this->beta ) );
|
111 |
-
|
112 |
-
$this->set_version_info_cache( $version_info );
|
113 |
-
|
114 |
-
}
|
115 |
-
|
116 |
-
if ( false !== $version_info && is_object( $version_info ) && isset( $version_info->new_version ) ) {
|
117 |
-
|
118 |
-
if ( version_compare( $this->version, $version_info->new_version, '<' ) ) {
|
119 |
-
|
120 |
-
$_transient_data->response[ $this->name ] = $version_info;
|
121 |
-
|
122 |
-
}
|
123 |
-
|
124 |
-
$_transient_data->last_checked = time();
|
125 |
-
$_transient_data->checked[ $this->name ] = $this->version;
|
126 |
-
|
127 |
-
}
|
128 |
-
|
129 |
-
return $_transient_data;
|
130 |
-
}
|
131 |
-
|
132 |
-
/**
|
133 |
-
* show update nofication row -- needed for multisite subsites, because WP won't tell you otherwise!
|
134 |
-
*
|
135 |
-
* @param string $file
|
136 |
-
* @param array $plugin
|
137 |
-
*/
|
138 |
-
public function show_update_notification( $file, $plugin ) {
|
139 |
-
|
140 |
-
if ( is_network_admin() ) {
|
141 |
-
return;
|
142 |
-
}
|
143 |
-
|
144 |
-
if( ! current_user_can( 'update_plugins' ) ) {
|
145 |
-
return;
|
146 |
-
}
|
147 |
-
|
148 |
-
if( ! is_multisite() ) {
|
149 |
-
return;
|
150 |
-
}
|
151 |
-
|
152 |
-
if ( $this->name != $file ) {
|
153 |
-
return;
|
154 |
-
}
|
155 |
-
|
156 |
-
// Remove our filter on the site transient
|
157 |
-
remove_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ), 10 );
|
158 |
-
|
159 |
-
$update_cache = get_site_transient( 'update_plugins' );
|
160 |
-
|
161 |
-
$update_cache = is_object( $update_cache ) ? $update_cache : new stdClass();
|
162 |
-
|
163 |
-
if ( empty( $update_cache->response ) || empty( $update_cache->response[ $this->name ] ) ) {
|
164 |
-
|
165 |
-
$version_info = $this->get_cached_version_info();
|
166 |
-
|
167 |
-
if ( false === $version_info ) {
|
168 |
-
$version_info = $this->api_request( 'plugin_latest_version', array( 'slug' => $this->slug, 'beta' => $this->beta ) );
|
169 |
-
|
170 |
-
$this->set_version_info_cache( $version_info );
|
171 |
-
}
|
172 |
-
|
173 |
-
if ( ! is_object( $version_info ) ) {
|
174 |
-
return;
|
175 |
-
}
|
176 |
-
|
177 |
-
if ( version_compare( $this->version, $version_info->new_version, '<' ) ) {
|
178 |
-
|
179 |
-
$update_cache->response[ $this->name ] = $version_info;
|
180 |
-
|
181 |
-
}
|
182 |
-
|
183 |
-
$update_cache->last_checked = time();
|
184 |
-
$update_cache->checked[ $this->name ] = $this->version;
|
185 |
-
|
186 |
-
set_site_transient( 'update_plugins', $update_cache );
|
187 |
-
|
188 |
-
} else {
|
189 |
-
|
190 |
-
$version_info = $update_cache->response[ $this->name ];
|
191 |
-
|
192 |
-
}
|
193 |
-
|
194 |
-
// Restore our filter
|
195 |
-
add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) );
|
196 |
-
|
197 |
-
if ( ! empty( $update_cache->response[ $this->name ] ) && version_compare( $this->version, $version_info->new_version, '<' ) ) {
|
198 |
-
|
199 |
-
// build a plugin list row, with update notification
|
200 |
-
$wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
|
201 |
-
# <tr class="plugin-update-tr"><td colspan="' . $wp_list_table->get_column_count() . '" class="plugin-update colspanchange">
|
202 |
-
echo '<tr class="plugin-update-tr" id="' . $this->slug . '-update" data-slug="' . $this->slug . '" data-plugin="' . $this->slug . '/' . $file . '">';
|
203 |
-
echo '<td colspan="3" class="plugin-update colspanchange">';
|
204 |
-
echo '<div class="update-message notice inline notice-warning notice-alt">';
|
205 |
-
|
206 |
-
$changelog_link = self_admin_url( 'index.php?edd_sl_action=view_plugin_changelog&plugin=' . $this->name . '&slug=' . $this->slug . '&TB_iframe=true&width=772&height=911' );
|
207 |
-
|
208 |
-
if ( empty( $version_info->download_link ) ) {
|
209 |
-
printf(
|
210 |
-
__( 'There is a new version of %1$s available. %2$sView version %3$s details%4$s.', 'easy-digital-downloads' ),
|
211 |
-
esc_html( $version_info->name ),
|
212 |
-
'<a target="_blank" class="thickbox" href="' . esc_url( $changelog_link ) . '">',
|
213 |
-
esc_html( $version_info->new_version ),
|
214 |
-
'</a>'
|
215 |
-
);
|
216 |
-
} else {
|
217 |
-
printf(
|
218 |
-
__( 'There is a new version of %1$s available. %2$sView version %3$s details%4$s or %5$supdate now%6$s.', 'easy-digital-downloads' ),
|
219 |
-
esc_html( $version_info->name ),
|
220 |
-
'<a target="_blank" class="thickbox" href="' . esc_url( $changelog_link ) . '">',
|
221 |
-
esc_html( $version_info->new_version ),
|
222 |
-
'</a>',
|
223 |
-
'<a href="' . esc_url( wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $this->name, 'upgrade-plugin_' . $this->name ) ) .'">',
|
224 |
-
'</a>'
|
225 |
-
);
|
226 |
-
}
|
227 |
-
|
228 |
-
do_action( "in_plugin_update_message-{$file}", $plugin, $version_info );
|
229 |
-
|
230 |
-
echo '</div></td></tr>';
|
231 |
-
}
|
232 |
-
}
|
233 |
-
|
234 |
-
/**
|
235 |
-
* Updates information on the "View version x.x details" page with custom data.
|
236 |
-
*
|
237 |
-
* @uses api_request()
|
238 |
-
*
|
239 |
-
* @param mixed $_data
|
240 |
-
* @param string $_action
|
241 |
-
* @param object $_args
|
242 |
-
* @return object $_data
|
243 |
-
*/
|
244 |
-
public function plugins_api_filter( $_data, $_action = '', $_args = null ) {
|
245 |
-
|
246 |
-
if ( $_action != 'plugin_information' ) {
|
247 |
-
|
248 |
-
return $_data;
|
249 |
-
|
250 |
-
}
|
251 |
-
|
252 |
-
if ( ! isset( $_args->slug ) || ( $_args->slug != $this->slug ) ) {
|
253 |
-
|
254 |
-
return $_data;
|
255 |
-
|
256 |
-
}
|
257 |
-
|
258 |
-
$to_send = array(
|
259 |
-
'slug' => $this->slug,
|
260 |
-
'is_ssl' => is_ssl(),
|
261 |
-
'fields' => array(
|
262 |
-
'banners' => array(),
|
263 |
-
'reviews' => false
|
264 |
-
)
|
265 |
-
);
|
266 |
-
|
267 |
-
$cache_key = 'edd_api_request_' . md5( serialize( $this->slug . $this->api_data['license'] . $this->beta ) );
|
268 |
-
|
269 |
-
// Get the transient where we store the api request for this plugin for 24 hours
|
270 |
-
$edd_api_request_transient = $this->get_cached_version_info( $cache_key );
|
271 |
-
|
272 |
-
//If we have no transient-saved value, run the API, set a fresh transient with the API value, and return that value too right now.
|
273 |
-
if ( empty( $edd_api_request_transient ) ) {
|
274 |
-
|
275 |
-
$api_response = $this->api_request( 'plugin_information', $to_send );
|
276 |
-
|
277 |
-
// Expires in 3 hours
|
278 |
-
$this->set_version_info_cache( $api_response, $cache_key );
|
279 |
-
|
280 |
-
if ( false !== $api_response ) {
|
281 |
-
$_data = $api_response;
|
282 |
-
}
|
283 |
-
|
284 |
-
} else {
|
285 |
-
$_data = $edd_api_request_transient;
|
286 |
-
}
|
287 |
-
|
288 |
-
// Convert sections into an associative array, since we're getting an object, but Core expects an array.
|
289 |
-
if ( isset( $_data->sections ) && ! is_array( $_data->sections ) ) {
|
290 |
-
$new_sections = array();
|
291 |
-
foreach ( $_data->sections as $key => $value ) {
|
292 |
-
$new_sections[ $key ] = $value;
|
293 |
-
}
|
294 |
-
|
295 |
-
$_data->sections = $new_sections;
|
296 |
-
}
|
297 |
-
|
298 |
-
// Convert banners into an associative array, since we're getting an object, but Core expects an array.
|
299 |
-
if ( isset( $_data->banners ) && ! is_array( $_data->banners ) ) {
|
300 |
-
$new_banners = array();
|
301 |
-
foreach ( $_data->banners as $key => $value ) {
|
302 |
-
$new_banners[ $key ] = $value;
|
303 |
-
}
|
304 |
-
|
305 |
-
$_data->banners = $new_banners;
|
306 |
-
}
|
307 |
-
|
308 |
-
return $_data;
|
309 |
-
}
|
310 |
-
|
311 |
-
/**
|
312 |
-
* Disable SSL verification in order to prevent download update failures
|
313 |
-
*
|
314 |
-
* @param array $args
|
315 |
-
* @param string $url
|
316 |
-
* @return object $array
|
317 |
-
*/
|
318 |
-
public function http_request_args( $args, $url ) {
|
319 |
-
|
320 |
-
$verify_ssl = $this->verify_ssl();
|
321 |
-
if ( strpos( $url, 'https://' ) !== false && strpos( $url, 'edd_action=package_download' ) ) {
|
322 |
-
$args['sslverify'] = $verify_ssl;
|
323 |
-
}
|
324 |
-
return $args;
|
325 |
-
|
326 |
-
}
|
327 |
-
|
328 |
-
/**
|
329 |
-
* Calls the API and, if successfull, returns the object delivered by the API.
|
330 |
-
*
|
331 |
-
* @uses get_bloginfo()
|
332 |
-
* @uses wp_remote_post()
|
333 |
-
* @uses is_wp_error()
|
334 |
-
*
|
335 |
-
* @param string $_action The requested action.
|
336 |
-
* @param array $_data Parameters for the API action.
|
337 |
-
* @return false|object
|
338 |
-
*/
|
339 |
-
private function api_request( $_action, $_data ) {
|
340 |
-
|
341 |
-
global $wp_version;
|
342 |
-
|
343 |
-
$data = array_merge( $this->api_data, $_data );
|
344 |
-
|
345 |
-
if ( $data['slug'] != $this->slug ) {
|
346 |
-
return;
|
347 |
-
}
|
348 |
-
|
349 |
-
if( $this->api_url == trailingslashit (home_url() ) ) {
|
350 |
-
return false; // Don't allow a plugin to ping itself
|
351 |
-
}
|
352 |
-
|
353 |
-
$api_params = array(
|
354 |
-
'edd_action' => 'get_version',
|
355 |
-
'license' => ! empty( $data['license'] ) ? $data['license'] : '',
|
356 |
-
'item_name' => isset( $data['item_name'] ) ? $data['item_name'] : false,
|
357 |
-
'item_id' => isset( $data['item_id'] ) ? $data['item_id'] : false,
|
358 |
-
'version' => isset( $data['version'] ) ? $data['version'] : false,
|
359 |
-
'slug' => $data['slug'],
|
360 |
-
'author' => $data['author'],
|
361 |
-
'url' => home_url(),
|
362 |
-
'beta' => ! empty( $data['beta'] ),
|
363 |
-
);
|
364 |
-
|
365 |
-
$verify_ssl = $this->verify_ssl();
|
366 |
-
$request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => $verify_ssl, 'body' => $api_params ) );
|
367 |
-
|
368 |
-
if ( ! is_wp_error( $request ) ) {
|
369 |
-
$request = json_decode( wp_remote_retrieve_body( $request ) );
|
370 |
-
}
|
371 |
-
|
372 |
-
if ( $request && isset( $request->sections ) ) {
|
373 |
-
$request->sections = maybe_unserialize( $request->sections );
|
374 |
-
} else {
|
375 |
-
$request = false;
|
376 |
-
}
|
377 |
-
|
378 |
-
if ( $request && isset( $request->banners ) ) {
|
379 |
-
$request->banners = maybe_unserialize( $request->banners );
|
380 |
-
}
|
381 |
-
|
382 |
-
if( ! empty( $request->sections ) ) {
|
383 |
-
foreach( $request->sections as $key => $section ) {
|
384 |
-
$request->$key = (array) $section;
|
385 |
-
}
|
386 |
-
}
|
387 |
-
|
388 |
-
return $request;
|
389 |
-
}
|
390 |
-
|
391 |
-
public function show_changelog() {
|
392 |
-
|
393 |
-
global $edd_plugin_data;
|
394 |
-
|
395 |
-
if( empty( $_REQUEST['edd_sl_action'] ) || 'view_plugin_changelog' != $_REQUEST['edd_sl_action'] ) {
|
396 |
-
return;
|
397 |
-
}
|
398 |
-
|
399 |
-
if( empty( $_REQUEST['plugin'] ) ) {
|
400 |
-
return;
|
401 |
-
}
|
402 |
-
|
403 |
-
if( empty( $_REQUEST['slug'] ) ) {
|
404 |
-
return;
|
405 |
-
}
|
406 |
-
|
407 |
-
if( ! current_user_can( 'update_plugins' ) ) {
|
408 |
-
wp_die( __( 'You do not have permission to install plugin updates', 'easy-digital-downloads' ), __( 'Error', 'easy-digital-downloads' ), array( 'response' => 403 ) );
|
409 |
-
}
|
410 |
-
|
411 |
-
$data = $edd_plugin_data[ $_REQUEST['slug'] ];
|
412 |
-
$beta = ! empty( $data['beta'] ) ? true : false;
|
413 |
-
$cache_key = md5( 'edd_plugin_' . sanitize_key( $_REQUEST['plugin'] ) . '_' . $beta . '_version_info' );
|
414 |
-
$version_info = $this->get_cached_version_info( $cache_key );
|
415 |
-
|
416 |
-
if( false === $version_info ) {
|
417 |
-
|
418 |
-
$api_params = array(
|
419 |
-
'edd_action' => 'get_version',
|
420 |
-
'item_name' => isset( $data['item_name'] ) ? $data['item_name'] : false,
|
421 |
-
'item_id' => isset( $data['item_id'] ) ? $data['item_id'] : false,
|
422 |
-
'slug' => $_REQUEST['slug'],
|
423 |
-
'author' => $data['author'],
|
424 |
-
'url' => home_url(),
|
425 |
-
'beta' => ! empty( $data['beta'] )
|
426 |
-
);
|
427 |
-
|
428 |
-
$verify_ssl = $this->verify_ssl();
|
429 |
-
$request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => $verify_ssl, 'body' => $api_params ) );
|
430 |
-
|
431 |
-
if ( ! is_wp_error( $request ) ) {
|
432 |
-
$version_info = json_decode( wp_remote_retrieve_body( $request ) );
|
433 |
-
}
|
434 |
-
|
435 |
-
|
436 |
-
if ( ! empty( $version_info ) && isset( $version_info->sections ) ) {
|
437 |
-
$version_info->sections = maybe_unserialize( $version_info->sections );
|
438 |
-
} else {
|
439 |
-
$version_info = false;
|
440 |
-
}
|
441 |
-
|
442 |
-
if( ! empty( $version_info ) ) {
|
443 |
-
foreach( $version_info->sections as $key => $section ) {
|
444 |
-
$version_info->$key = (array) $section;
|
445 |
-
}
|
446 |
-
}
|
447 |
-
|
448 |
-
$this->set_version_info_cache( $version_info, $cache_key );
|
449 |
-
|
450 |
-
}
|
451 |
-
|
452 |
-
if( ! empty( $version_info ) && isset( $version_info->sections['changelog'] ) ) {
|
453 |
-
echo '<div style="background:#fff;padding:10px;">' . $version_info->sections['changelog'] . '</div>';
|
454 |
-
}
|
455 |
-
|
456 |
-
exit;
|
457 |
-
}
|
458 |
-
|
459 |
-
public function get_cached_version_info( $cache_key = '' ) {
|
460 |
-
|
461 |
-
if( empty( $cache_key ) ) {
|
462 |
-
$cache_key = $this->cache_key;
|
463 |
-
}
|
464 |
-
|
465 |
-
$cache = get_option( $cache_key );
|
466 |
-
|
467 |
-
if( empty( $cache['timeout'] ) || time() > $cache['timeout'] ) {
|
468 |
-
return false; // Cache is expired
|
469 |
-
}
|
470 |
-
|
471 |
-
return json_decode( $cache['value'] );
|
472 |
-
|
473 |
-
}
|
474 |
-
|
475 |
-
public function set_version_info_cache( $value = '', $cache_key = '' ) {
|
476 |
-
|
477 |
-
if( empty( $cache_key ) ) {
|
478 |
-
$cache_key = $this->cache_key;
|
479 |
-
}
|
480 |
-
|
481 |
-
$data = array(
|
482 |
-
'timeout' => strtotime( '+3 hours', time() ),
|
483 |
-
'value' => json_encode( $value )
|
484 |
-
);
|
485 |
-
|
486 |
-
update_option( $cache_key, $data, 'no' );
|
487 |
-
|
488 |
-
}
|
489 |
-
|
490 |
-
/**
|
491 |
-
* Returns if the SSL of the store should be verified.
|
492 |
-
*
|
493 |
-
* @since 1.6.13
|
494 |
-
* @return bool
|
495 |
-
*/
|
496 |
-
private function verify_ssl() {
|
497 |
-
return (bool) apply_filters( 'edd_sl_api_request_verify_ssl', true, $this );
|
498 |
-
}
|
499 |
-
|
500 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/edd/Strong_Plugin_Updater.php
DELETED
@@ -1,234 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
// Exit if accessed directly
|
3 |
-
if ( ! defined( 'ABSPATH' ) ) exit;
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Class Strong_Plugin_Updater
|
7 |
-
*/
|
8 |
-
class Strong_Plugin_Updater {
|
9 |
-
|
10 |
-
public function __construct() {
|
11 |
-
|
12 |
-
add_action( 'admin_init', array( $this, 'plugin_updater' ), 0 ); // Don't change this priority
|
13 |
-
|
14 |
-
add_action( 'wp_ajax_wpmtst_activate_license', array( $this, 'activate_license' ) );
|
15 |
-
|
16 |
-
add_action( 'wp_ajax_wpmtst_deactivate_license', array( $this, 'deactivate_license' ) );
|
17 |
-
|
18 |
-
}
|
19 |
-
|
20 |
-
function plugin_updater() {
|
21 |
-
|
22 |
-
// retrieve our license key from the DB
|
23 |
-
$addons = get_option( 'wpmtst_addons' );
|
24 |
-
if ( !$addons ) return;
|
25 |
-
|
26 |
-
foreach ( $addons as $addon => $addon_info ) {
|
27 |
-
|
28 |
-
/**
|
29 |
-
* Repair missing file name due to bug in license activation process.
|
30 |
-
*
|
31 |
-
* @since 2.21.2
|
32 |
-
*/
|
33 |
-
if ( ! isset( $addon_info['file'] ) ) {
|
34 |
-
$addon_info['file'] = "strong-testimonials-{$addon}/strong-testimonials-{$addon}.php";
|
35 |
-
$addons[ $addon ] = $addon_info;
|
36 |
-
update_option( 'wpmtst_addons', $addons );
|
37 |
-
}
|
38 |
-
|
39 |
-
$license_key = '';
|
40 |
-
$version = '';
|
41 |
-
|
42 |
-
if ( isset( $addon_info['license']['key'] ) ) {
|
43 |
-
$license_key = trim( $addon_info['license']['key'] );
|
44 |
-
}
|
45 |
-
|
46 |
-
if ( isset( $addon_info['version'] ) ) {
|
47 |
-
$version = $addon_info['version'];
|
48 |
-
}
|
49 |
-
|
50 |
-
if ( ! $license_key || ! $version ) {
|
51 |
-
return;
|
52 |
-
}
|
53 |
-
|
54 |
-
// setup the updater
|
55 |
-
$args = array(
|
56 |
-
'version' => $version, // current installed version number
|
57 |
-
'license' => $license_key, // license key
|
58 |
-
'item_name' => $addon_info['name'], // name of this plugin
|
59 |
-
'author' => 'Chris Dillon', // author of this plugin
|
60 |
-
'url' => home_url()
|
61 |
-
);
|
62 |
-
$edd_updater = new EDD_SL_Plugin_Updater( STRONGPLUGINS_STORE_URL, $addon_info['file'], $args );
|
63 |
-
}
|
64 |
-
|
65 |
-
}
|
66 |
-
|
67 |
-
/**
|
68 |
-
* Activate a license key.
|
69 |
-
*/
|
70 |
-
function activate_license() {
|
71 |
-
|
72 |
-
if ( !check_ajax_referer( 'wpmtst-admin', 'security', false ) ) {
|
73 |
-
wp_send_json_error();
|
74 |
-
}
|
75 |
-
|
76 |
-
if ( isset( $_GET['action'] ) && 'wpmtst_activate_license' == $_GET['action'] ) {
|
77 |
-
|
78 |
-
$plugin = $_GET['plugin'];
|
79 |
-
|
80 |
-
// retrieve the license from the database
|
81 |
-
$addons = get_option( 'wpmtst_addons' );
|
82 |
-
$addon = $addons[ $plugin ];
|
83 |
-
$license = trim( $addon['license']['key'] );
|
84 |
-
|
85 |
-
// data to send in our API request
|
86 |
-
$api_params = array(
|
87 |
-
'edd_action' => 'activate_license',
|
88 |
-
'license' => $license,
|
89 |
-
'item_name' => $addon['name'], // the name of our product in EDD
|
90 |
-
'url' => home_url()
|
91 |
-
);
|
92 |
-
|
93 |
-
$license_data = new stdClass();
|
94 |
-
$license_data->license = '';
|
95 |
-
|
96 |
-
// Call the custom API.
|
97 |
-
$response = wp_remote_post( STRONGPLUGINS_STORE_URL, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
|
98 |
-
|
99 |
-
// make sure the response came back okay
|
100 |
-
if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
|
101 |
-
|
102 |
-
if ( is_wp_error( $response ) ) {
|
103 |
-
$message = $response->get_error_message();
|
104 |
-
} else {
|
105 |
-
$message = __( 'An error occurred, please try again.' );
|
106 |
-
}
|
107 |
-
|
108 |
-
} else {
|
109 |
-
|
110 |
-
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
|
111 |
-
|
112 |
-
if ( !isset( $license_data->success ) ) {
|
113 |
-
|
114 |
-
$message = __( 'An error occurred, please contact support.' );
|
115 |
-
|
116 |
-
} elseif ( false === $license_data->success ) {
|
117 |
-
|
118 |
-
switch( $license_data->error ) {
|
119 |
-
|
120 |
-
case 'expired' :
|
121 |
-
|
122 |
-
$message = sprintf(
|
123 |
-
__( 'Your license key expired on %s.' ),
|
124 |
-
date_i18n( get_option( 'date_format' ), strtotime( $license_data->expires, current_time( 'timestamp' ) ) )
|
125 |
-
);
|
126 |
-
break;
|
127 |
-
|
128 |
-
case 'revoked' :
|
129 |
-
|
130 |
-
$message = __( 'Your license key has been disabled.' );
|
131 |
-
break;
|
132 |
-
|
133 |
-
case 'missing' :
|
134 |
-
|
135 |
-
$message = __( 'Invalid license.' );
|
136 |
-
break;
|
137 |
-
|
138 |
-
case 'invalid' :
|
139 |
-
case 'site_inactive' :
|
140 |
-
|
141 |
-
$message = __( 'Your license is not active for this URL.' );
|
142 |
-
break;
|
143 |
-
|
144 |
-
case 'item_name_mismatch' :
|
145 |
-
|
146 |
-
$message = sprintf( __( 'This appears to be an invalid license key for %s.' ), $addon['name'] );
|
147 |
-
break;
|
148 |
-
|
149 |
-
case 'no_activations_left':
|
150 |
-
|
151 |
-
$message = __( 'Your license key has reached its activation limit.' );
|
152 |
-
break;
|
153 |
-
|
154 |
-
default :
|
155 |
-
|
156 |
-
$message = __( 'An error occurred, please try again.' );
|
157 |
-
break;
|
158 |
-
}
|
159 |
-
|
160 |
-
}
|
161 |
-
|
162 |
-
}
|
163 |
-
|
164 |
-
// Check if anything passed on a message constituting a failure
|
165 |
-
if ( !empty( $message ) ) {
|
166 |
-
wp_send_json_error( $message );
|
167 |
-
}
|
168 |
-
|
169 |
-
// $license_data->license will be either "valid" or "invalid"
|
170 |
-
$addon['license']['status'] = $license_data->license;
|
171 |
-
$addons[ $plugin ] = $addon;
|
172 |
-
update_option( 'wpmtst_addons', $addons );
|
173 |
-
wp_send_json_success( $license_data->license );
|
174 |
-
}
|
175 |
-
}
|
176 |
-
|
177 |
-
/**
|
178 |
-
* Deactivate a license key. This will also decrease the site count.
|
179 |
-
*/
|
180 |
-
function deactivate_license() {
|
181 |
-
|
182 |
-
if ( ! check_ajax_referer( 'wpmtst-admin', 'security', false ) ) {
|
183 |
-
wp_send_json_error();
|
184 |
-
}
|
185 |
-
|
186 |
-
if ( isset( $_GET['action'] ) && 'wpmtst_deactivate_license' == $_GET['action'] ) {
|
187 |
-
|
188 |
-
$plugin = $_GET['plugin'];
|
189 |
-
|
190 |
-
// retrieve the license from the database
|
191 |
-
$addons = get_option( 'wpmtst_addons' );
|
192 |
-
$addon = $addons[ $plugin ];
|
193 |
-
$license = trim( $addon['license']['key'] );
|
194 |
-
|
195 |
-
// data to send in our API request
|
196 |
-
$api_params = array(
|
197 |
-
'edd_action' => 'deactivate_license',
|
198 |
-
'license' => $license,
|
199 |
-
'item_name' => $addon['name'], // the name of our product in EDD
|
200 |
-
'url' => home_url()
|
201 |
-
);
|
202 |
-
|
203 |
-
// Call the custom API.
|
204 |
-
$response = wp_remote_post( STRONGPLUGINS_STORE_URL, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
|
205 |
-
|
206 |
-
// make sure the response came back okay
|
207 |
-
if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
|
208 |
-
|
209 |
-
if ( is_wp_error( $response ) ) {
|
210 |
-
$message = $response->get_error_message();
|
211 |
-
} else {
|
212 |
-
$message = __( 'An error occurred, please try again.' );
|
213 |
-
}
|
214 |
-
|
215 |
-
wp_send_json_error( $message );
|
216 |
-
}
|
217 |
-
|
218 |
-
// decode the license data
|
219 |
-
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
|
220 |
-
|
221 |
-
// $license_data->license will be either "deactivated" or "failed"
|
222 |
-
if( $license_data->license == 'deactivated' ) {
|
223 |
-
unset( $addons[ $plugin ]['license']['status'] );
|
224 |
-
update_option( 'wpmtst_addons', $addons );
|
225 |
-
wp_send_json_success( $license_data->license );
|
226 |
-
}
|
227 |
-
|
228 |
-
wp_send_json_error( $license_data->license );
|
229 |
-
}
|
230 |
-
}
|
231 |
-
|
232 |
-
}
|
233 |
-
|
234 |
-
new Strong_Plugin_Updater();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/js/views.js
CHANGED
@@ -228,6 +228,7 @@ jQuery(document).ready(function ($) {
|
|
228 |
* TODO Use a technique similar to if-then for adding/removing classes
|
229 |
*/
|
230 |
|
|
|
231 |
var viewContent = $('#view-content');
|
232 |
var viewContentChange = function () {
|
233 |
var thisValue = viewContent.val();
|
@@ -241,6 +242,38 @@ jQuery(document).ready(function ($) {
|
|
241 |
};
|
242 |
viewContentChange();
|
243 |
viewContent.on('change', viewContentChange);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
|
245 |
/**
|
246 |
* Plugin: Show/Hide parts based on current Mode
|
228 |
* TODO Use a technique similar to if-then for adding/removing classes
|
229 |
*/
|
230 |
|
231 |
+
/*
|
232 |
var viewContent = $('#view-content');
|
233 |
var viewContentChange = function () {
|
234 |
var thisValue = viewContent.val();
|
242 |
};
|
243 |
viewContentChange();
|
244 |
viewContent.on('change', viewContentChange);
|
245 |
+
*/
|
246 |
+
|
247 |
+
/**
|
248 |
+
* Update option for [adding read-more to excerpts] based on setting
|
249 |
+
* for [read-more type] (link to post or expand in place).
|
250 |
+
*/
|
251 |
+
var viewHybrid = $('#view-more_post_in_place');
|
252 |
+
|
253 |
+
var viewHybridChange = function () {
|
254 |
+
|
255 |
+
var thisValue = viewHybrid.val();
|
256 |
+
|
257 |
+
// var viewMoreFullPost = $('#view-more_full_post');
|
258 |
+
// if ('1' === thisValue) {
|
259 |
+
// viewMoreFullPost.prop('disabled', true).find('option[value=\'1\']').prop('selected', true);
|
260 |
+
// } else {
|
261 |
+
// viewMoreFullPost.removeProp('disabled');
|
262 |
+
// }
|
263 |
+
|
264 |
+
var viewDefaultMore = $('#view-use_default_more');
|
265 |
+
if ('1' === thisValue) {
|
266 |
+
viewDefaultMore.prop('disabled', true).find('option[value=\'0\']').prop('selected', true);
|
267 |
+
} else {
|
268 |
+
viewDefaultMore.removeProp('disabled');
|
269 |
+
}
|
270 |
+
viewDefaultMore.change();
|
271 |
+
|
272 |
+
};
|
273 |
+
|
274 |
+
viewHybridChange();
|
275 |
+
|
276 |
+
viewHybrid.on('change', viewHybridChange);
|
277 |
|
278 |
/**
|
279 |
* Plugin: Show/Hide parts based on current Mode
|
admin/partials/views/option-content.php
CHANGED
@@ -8,7 +8,6 @@
|
|
8 |
|
9 |
<!-- Content type -->
|
10 |
<div id="option-content" class="row">
|
11 |
-
|
12 |
<div class="row-inner">
|
13 |
|
14 |
<!-- select -->
|
@@ -27,13 +26,11 @@
|
|
27 |
</div>
|
28 |
|
29 |
<!-- info & screenshot -->
|
30 |
-
|
31 |
<div class="inline then fast then_truncated then_not_entire then_not_excerpt" style="display: none;">
|
32 |
<p class="description">
|
33 |
<?php _e( 'This will strip tags like <em> and <strong>.', 'strong-testimonials' ); ?>
|
34 |
</p>
|
35 |
</div>
|
36 |
-
|
37 |
<div class="inline then fast then_not_truncated then_not_entire then_excerpt" style="display: none;">
|
38 |
<p class="description">
|
39 |
<?php printf( __( 'To create manual excerpts, you may need to enable them in the post editor like in this <a href="%s" class="thickbox">screenshot</a>.', 'strong-testimonials' ), esc_url( '#TB_inline?width=&height=210&inlineId=screenshot-screen-options' ) ); ?>
|
@@ -43,14 +40,13 @@
|
|
43 |
</p>
|
44 |
</div>
|
45 |
|
46 |
-
</div
|
47 |
-
|
48 |
-
</div><!-- #option-content -->
|
49 |
|
50 |
<!-- Excerpt length -->
|
51 |
<div id="option-content-length" class="row then then_not_entire then_excerpt then_truncated" style="display: none;">
|
52 |
|
53 |
-
<div class="row-inner
|
54 |
|
55 |
<!-- info -->
|
56 |
<div class="inline tight then then_excerpt then_not_truncated" style="display: none;">
|
@@ -87,7 +83,7 @@
|
|
87 |
</label>
|
88 |
</div>
|
89 |
|
90 |
-
</div
|
91 |
|
92 |
</div><!-- #option-content-length -->
|
93 |
|
@@ -96,28 +92,77 @@
|
|
96 |
|
97 |
<div class="row-inner subgroup">
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
<div class="row-inner">
|
105 |
-
|
106 |
-
|
|
|
|
|
107 |
<label>
|
108 |
-
<select id="view-use_default_more"
|
|
|
|
|
109 |
<option value="1" <?php selected( $view['use_default_more'] ); ?>>
|
110 |
-
<?php _ex( 'default link text', 'display setting', 'strong-testimonials' ); ?>
|
111 |
</option>
|
112 |
<option value="0" <?php selected( ! $view['use_default_more'] ); ?>>
|
113 |
-
<?php _ex( 'custom link text
|
114 |
</option>
|
115 |
</select>
|
116 |
</label>
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
|
|
|
|
121 |
<span id="option-link-text" class="inline-span">
|
122 |
<label for="view-more_post_text">
|
123 |
<input type="text" id="view-more_post_text" name="view[data][more_post_text]"
|
@@ -125,38 +170,28 @@
|
|
125 |
placeholder="<?php _e( 'enter a phrase', 'strong-testimonials' ); ?>">
|
126 |
</label>
|
127 |
</span>
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
<
|
140 |
-
|
141 |
-
|
142 |
-
</div>
|
143 |
-
</div>
|
144 |
-
|
145 |
</label>
|
146 |
-
|
147 |
</span>
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
<div class="inline tight then fast then_use_default_more then_1 then_not_0" style="display: none;">
|
152 |
-
<p class="description short"><?php _e( 'If you only see […] without a link then your theme<br> does not provide this. Use the custom link text instead.', 'strong-testimonials' ); ?></p>
|
153 |
-
</div>
|
154 |
-
|
155 |
-
</div><!-- .row-inner -->
|
156 |
|
157 |
<!-- automatic or both -->
|
158 |
<div class="row-inner then then_excerpt then_not_truncated" style="display: none;">
|
159 |
-
|
160 |
<div class="inline">
|
161 |
<label>
|
162 |
<select id="view-more_full_post" class="if selectgroup" name="view[data][more_full_post]">
|
@@ -169,12 +204,9 @@
|
|
169 |
</select>
|
170 |
</label>
|
171 |
</div>
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
</div><!-- .row-inner.subgroup -->
|
176 |
-
|
177 |
-
</div><!-- #option-content-read-more -->
|
178 |
|
179 |
<div class="row links then then_not_entire then_truncated then_excerpt" style="display: none;">
|
180 |
<p class="description tall solo">
|
8 |
|
9 |
<!-- Content type -->
|
10 |
<div id="option-content" class="row">
|
|
|
11 |
<div class="row-inner">
|
12 |
|
13 |
<!-- select -->
|
26 |
</div>
|
27 |
|
28 |
<!-- info & screenshot -->
|
|
|
29 |
<div class="inline then fast then_truncated then_not_entire then_not_excerpt" style="display: none;">
|
30 |
<p class="description">
|
31 |
<?php _e( 'This will strip tags like <em> and <strong>.', 'strong-testimonials' ); ?>
|
32 |
</p>
|
33 |
</div>
|
|
|
34 |
<div class="inline then fast then_not_truncated then_not_entire then_excerpt" style="display: none;">
|
35 |
<p class="description">
|
36 |
<?php printf( __( 'To create manual excerpts, you may need to enable them in the post editor like in this <a href="%s" class="thickbox">screenshot</a>.', 'strong-testimonials' ), esc_url( '#TB_inline?width=&height=210&inlineId=screenshot-screen-options' ) ); ?>
|
40 |
</p>
|
41 |
</div>
|
42 |
|
43 |
+
</div>
|
44 |
+
</div>
|
|
|
45 |
|
46 |
<!-- Excerpt length -->
|
47 |
<div id="option-content-length" class="row then then_not_entire then_excerpt then_truncated" style="display: none;">
|
48 |
|
49 |
+
<div class="row-inner">
|
50 |
|
51 |
<!-- info -->
|
52 |
<div class="inline tight then then_excerpt then_not_truncated" style="display: none;">
|
83 |
</label>
|
84 |
</div>
|
85 |
|
86 |
+
</div>
|
87 |
|
88 |
</div><!-- #option-content-length -->
|
89 |
|
92 |
|
93 |
<div class="row-inner subgroup">
|
94 |
|
95 |
+
<!-- action: full post or in place -->
|
96 |
+
<div class="row-inner">
|
97 |
+
<div class="inline">
|
98 |
+
<?php _e( 'Add a <strong>Read more</strong> link to', 'strong-testimonials' ); ?>
|
99 |
+
</div>
|
100 |
+
<div class="inline tight">
|
101 |
+
<label>
|
102 |
+
<select id="view-more_post_in_place"
|
103 |
+
class="if selectgroup"
|
104 |
+
name="view[data][more_post_in_place]">
|
105 |
+
<option value="0" <?php selected( ! $view['more_post_in_place'] ); ?>>
|
106 |
+
<?php // TODO Get label from Properties ?>
|
107 |
+
<?php _e( 'the full testimonial', 'strong-testimonials' ); ?>
|
108 |
+
</option>
|
109 |
+
<option value="1" <?php selected( $view['more_post_in_place'] ); ?>>
|
110 |
+
<?php _e( 'expand content in place', 'strong-testimonials' ); ?>
|
111 |
+
</option>
|
112 |
+
</select>
|
113 |
+
</label>
|
114 |
+
</div>
|
115 |
+
</div>
|
116 |
+
|
117 |
+
<!-- ellipsis -->
|
118 |
+
<div class="row-inner">
|
119 |
+
<div class="then then_use_default_more then_0 then_not_1" style="display: none;">
|
120 |
+
<div class="inline">
|
121 |
+
<label>
|
122 |
+
<select id="view-more_post_ellipsis"
|
123 |
+
class="if selectgroup"
|
124 |
+
name="view[data][more_post_ellipsis]">
|
125 |
+
<option value="1" <?php selected( $view['more_post_ellipsis'] ); ?>>
|
126 |
+
<?php _e( 'with an ellipsis', 'strong-testimonials' ); ?>
|
127 |
+
</option>
|
128 |
+
<option value="0" <?php selected( ! $view['more_post_ellipsis'] ); ?>>
|
129 |
+
<?php _e( 'without an ellipsis', 'strong-testimonials' ); ?>
|
130 |
+
</option>
|
131 |
+
</select>
|
132 |
+
</label>
|
133 |
+
</div>
|
134 |
+
<div class="inline then then_excerpt then_not_truncated" style="display: none;">
|
135 |
+
<p class="description">
|
136 |
+
<?php _e( 'Automatic excerpt only.', 'strong-testimonials' ); ?>
|
137 |
+
</p>
|
138 |
+
</div>
|
139 |
+
</div>
|
140 |
+
</div>
|
141 |
+
|
142 |
+
<!-- default or custom -->
|
143 |
<div class="row-inner">
|
144 |
+
<div class="inline tight then fast then_more_post_in_place then_1 then_not_0" style="display: none;">
|
145 |
+
<?php _e( 'with link text to read more', 'strong-testimonials' ); ?>
|
146 |
+
</div>
|
147 |
+
<div class="inline then fast then_more_post_in_place then_0 then_not_1" style="display: none;">
|
148 |
<label>
|
149 |
+
<select id="view-use_default_more"
|
150 |
+
class="if selectgroup min-width-1"
|
151 |
+
name="view[data][use_default_more]">
|
152 |
<option value="1" <?php selected( $view['use_default_more'] ); ?>>
|
153 |
+
<?php _ex( 'with default link text', 'display setting', 'strong-testimonials' ); ?>
|
154 |
</option>
|
155 |
<option value="0" <?php selected( ! $view['use_default_more'] ); ?>>
|
156 |
+
<?php _ex( 'with custom link text', 'display setting', 'strong-testimonials' ); ?>
|
157 |
</option>
|
158 |
</select>
|
159 |
</label>
|
160 |
+
</div>
|
161 |
+
<div class="inline then fast then_use_default_more then_1 then_not_0" style="display: none;">
|
162 |
+
<p class="description"><?php _e( 'If you only see […] without a link then use the custom link text instead.', 'strong-testimonials' ); ?></p>
|
163 |
+
</div>
|
164 |
+
<!-- read more -->
|
165 |
+
<div class="inline then fast then_use_default_more then_0 then_not_1" style="display: none;">
|
166 |
<span id="option-link-text" class="inline-span">
|
167 |
<label for="view-more_post_text">
|
168 |
<input type="text" id="view-more_post_text" name="view[data][more_post_text]"
|
170 |
placeholder="<?php _e( 'enter a phrase', 'strong-testimonials' ); ?>">
|
171 |
</label>
|
172 |
</span>
|
173 |
+
</div>
|
174 |
+
</div>
|
175 |
+
|
176 |
+
<!-- read less -->
|
177 |
+
<div class="row-inner then fast then_more_post_in_place then_1 then_not_0" style="display: none;">
|
178 |
+
<div class="inline tight">
|
179 |
+
<?php _e( 'and link text to read less', 'strong-testimonials' ); ?>
|
180 |
+
</div>
|
181 |
+
<div class="inline tight">
|
182 |
+
<span id="option-link-text-less" class="inline-span">
|
183 |
+
<label for="view-less_post_text">
|
184 |
+
<input type="text" id="view-less_post_text" name="view[data][less_post_text]"
|
185 |
+
value="<?php echo $view['less_post_text']; ?>" size="22"
|
186 |
+
placeholder="<?php _e( 'enter a phrase', 'strong-testimonials' ); ?>">
|
|
|
|
|
|
|
187 |
</label>
|
|
|
188 |
</span>
|
189 |
+
<p class="inline description"><?php _e( 'Leave blank to leave content expanded without a link.', 'strong-testimonials' ); ?></p>
|
190 |
+
</div>
|
191 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
192 |
|
193 |
<!-- automatic or both -->
|
194 |
<div class="row-inner then then_excerpt then_not_truncated" style="display: none;">
|
|
|
195 |
<div class="inline">
|
196 |
<label>
|
197 |
<select id="view-more_full_post" class="if selectgroup" name="view[data][more_full_post]">
|
204 |
</select>
|
205 |
</label>
|
206 |
</div>
|
207 |
+
</div>
|
208 |
+
</div>
|
209 |
+
</div>
|
|
|
|
|
|
|
210 |
|
211 |
<div class="row links then then_not_entire then_truncated then_excerpt" style="display: none;">
|
212 |
<p class="description tall solo">
|
admin/scss/_partials/_misc.scss
CHANGED
@@ -16,16 +16,11 @@ td.rowspan {
|
|
16 |
border-left: 1px solid #DDD;
|
17 |
}
|
18 |
|
19 |
-
// Highlight the manual excerpt creation option in Content group.
|
20 |
-
.highlight-on {
|
21 |
-
background: rgba($blue, 0.05);
|
22 |
-
border: 1px solid rgba($blue, 0.1);
|
23 |
-
padding: 0 0.5em;
|
24 |
-
}
|
25 |
-
|
26 |
.subgroup {
|
27 |
-
|
28 |
-
|
|
|
|
|
29 |
}
|
30 |
|
31 |
.subgroup-heading {
|
16 |
border-left: 1px solid #DDD;
|
17 |
}
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
.subgroup {
|
20 |
+
background: #f8f8f8;
|
21 |
+
border: 1px solid #f1f1f1;
|
22 |
+
padding: 0.25em 1em;
|
23 |
+
margin-right: 1em;
|
24 |
}
|
25 |
|
26 |
.subgroup-heading {
|
admin/settings/class-strong-testimonials-settings-compat.php
CHANGED
@@ -245,8 +245,6 @@ class Strong_Testimonials_Settings_Compat {
|
|
245 |
|
246 |
<h2><?php _e( 'Compatibility Settings', 'strong-testimonials' ); ?></h2>
|
247 |
|
248 |
-
<p class="about"><?php printf( __( '<a href="%s" target="_blank">Start a support ticket</a> if you need help with these options.', 'strong-testimonials' ), wpmtst_support_url() ); ?></p>
|
249 |
-
|
250 |
<?php
|
251 |
}
|
252 |
|
245 |
|
246 |
<h2><?php _e( 'Compatibility Settings', 'strong-testimonials' ); ?></h2>
|
247 |
|
|
|
|
|
248 |
<?php
|
249 |
}
|
250 |
|
admin/settings/partials/form.php
CHANGED
@@ -2,7 +2,6 @@
|
|
2 |
/**
|
3 |
* Form Settings
|
4 |
*
|
5 |
-
* @package Strong_Testimonials
|
6 |
* @since 1.13
|
7 |
*/
|
8 |
$pages_list = wpmtst_get_pages();
|
2 |
/**
|
3 |
* Form Settings
|
4 |
*
|
|
|
5 |
* @since 1.13
|
6 |
*/
|
7 |
$pages_list = wpmtst_get_pages();
|
admin/settings/partials/general.php
CHANGED
@@ -2,7 +2,6 @@
|
|
2 |
/**
|
3 |
* Settings
|
4 |
*
|
5 |
-
* @package Strong_Testimonials
|
6 |
* @since 1.13
|
7 |
*/
|
8 |
|
2 |
/**
|
3 |
* Settings
|
4 |
*
|
|
|
5 |
* @since 1.13
|
6 |
*/
|
7 |
|
admin/views-validate.php
CHANGED
@@ -90,65 +90,7 @@ function wpmtst_sanitize_view( $input ) {
|
|
90 |
$data['excerpt_length'] = (int) sanitize_text_field( $input['excerpt_length'] );
|
91 |
$data['use_default_length'] = sanitize_text_field( $input['use_default_length'] );
|
92 |
|
93 |
-
|
94 |
-
$data['more_full_post'] = $input['more_full_post'];
|
95 |
-
if ( 'truncated' == $data['content'] || 'excerpt' == $data['content'] ) {
|
96 |
-
$data['more_post'] = 1;
|
97 |
-
} else {
|
98 |
-
$data['more_post'] = 0;
|
99 |
-
}
|
100 |
-
$data['more_post_ellipsis'] = isset( $input['more_post_ellipsis'] ) ? 1 : 0;
|
101 |
-
$data['more_post_text'] = sanitize_text_field( $input['more_post_text'] );
|
102 |
-
$data['use_default_more'] = $input['use_default_more'];
|
103 |
-
|
104 |
-
// Read more --> page
|
105 |
-
if ( isset( $input['more_page'] ) && $input['more_page'] ) {
|
106 |
-
|
107 |
-
// Check the "ID or slug" field first
|
108 |
-
if ( $input['more_page_id2'] ) {
|
109 |
-
|
110 |
-
// is post ID?
|
111 |
-
$id = sanitize_text_field( $input['more_page_id2'] );
|
112 |
-
if ( is_numeric( $id ) ) {
|
113 |
-
if ( ! get_posts( array( 'p' => $id, 'post_type' => array( 'page', 'post' ), 'post_status' => 'publish' ) ) ) {
|
114 |
-
$id = null;
|
115 |
-
}
|
116 |
-
} else {
|
117 |
-
// is post slug?
|
118 |
-
$target = get_posts( array( 'name' => $id, 'post_type' => array( 'page', 'post' ), 'post_status' => 'publish' ) );
|
119 |
-
if ( $target ) {
|
120 |
-
$id = $target[0]->ID;
|
121 |
-
}
|
122 |
-
}
|
123 |
-
|
124 |
-
if ( $id ) {
|
125 |
-
$data['more_page_id'] = $id;
|
126 |
-
unset( $data['more_page_id2'] );
|
127 |
-
}
|
128 |
-
|
129 |
-
} else {
|
130 |
-
|
131 |
-
if ( $input['more_page_id'] ) {
|
132 |
-
if ( is_numeric( $input['more_page_id'] ) ) {
|
133 |
-
$data['more_page_id'] = (int) sanitize_text_field( $input['more_page_id'] );
|
134 |
-
} else {
|
135 |
-
$data['more_page_id'] = sanitize_text_field( $input['more_page_id'] );
|
136 |
-
}
|
137 |
-
}
|
138 |
-
|
139 |
-
}
|
140 |
-
|
141 |
-
// Only enable more_page if a page was selected by either method.
|
142 |
-
if ( isset( $data['more_page_id'] ) && $data['more_page_id'] ) {
|
143 |
-
$data['more_page'] = 1;
|
144 |
-
}
|
145 |
-
}
|
146 |
-
if ( ! $input['more_page_text'] ) {
|
147 |
-
$data['more_page_text'] = $default_view['more_page_text'];
|
148 |
-
} else {
|
149 |
-
$data['more_page_text'] = sanitize_text_field( $input['more_page_text'] );
|
150 |
-
}
|
151 |
-
$data['more_page_hook'] = sanitize_text_field( $input['more_page_hook'] );
|
152 |
|
153 |
// Thumbnail
|
154 |
$data['thumbnail'] = isset( $input['thumbnail'] ) ? 1 : 0;
|
@@ -228,6 +170,95 @@ function wpmtst_sanitize_view( $input ) {
|
|
228 |
return $data;
|
229 |
}
|
230 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
231 |
/**
|
232 |
* Single testimonial
|
233 |
*
|
90 |
$data['excerpt_length'] = (int) sanitize_text_field( $input['excerpt_length'] );
|
91 |
$data['use_default_length'] = sanitize_text_field( $input['use_default_length'] );
|
92 |
|
93 |
+
$data = wpmtst_sanitize_view_readmore( $data, $input, $default_view );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
|
95 |
// Thumbnail
|
96 |
$data['thumbnail'] = isset( $input['thumbnail'] ) ? 1 : 0;
|
170 |
return $data;
|
171 |
}
|
172 |
|
173 |
+
/**
|
174 |
+
* Read-more options.
|
175 |
+
*
|
176 |
+
* @param $data
|
177 |
+
* @param $input
|
178 |
+
* @param $default_view
|
179 |
+
*
|
180 |
+
* @since 2.33.0 As separate function.
|
181 |
+
*
|
182 |
+
* @return array
|
183 |
+
*/
|
184 |
+
function wpmtst_sanitize_view_readmore( $data, $input, $default_view ) {
|
185 |
+
if ( 'truncated' == $data['content'] || 'excerpt' == $data['content'] ) {
|
186 |
+
$data['more_post'] = 1;
|
187 |
+
} else {
|
188 |
+
$data['more_post'] = 0;
|
189 |
+
}
|
190 |
+
$data['more_post_ellipsis'] = sanitize_text_field( $input['more_post_ellipsis'] );
|
191 |
+
$data['use_default_more'] = $input['use_default_more'];
|
192 |
+
$data['more_post_text'] = sanitize_text_field( $input['more_post_text'] );
|
193 |
+
$data['less_post_text'] = sanitize_text_field( $input['less_post_text'] );
|
194 |
+
|
195 |
+
/**
|
196 |
+
* Read more in place
|
197 |
+
*
|
198 |
+
* @since 2.33.0
|
199 |
+
*/
|
200 |
+
$data['more_post_in_place'] = isset( $input['more_post_in_place'] ) ? $input['more_post_in_place'] : 0;
|
201 |
+
|
202 |
+
/**
|
203 |
+
* Read more --> post (dependent on more-post-in-place)
|
204 |
+
*/
|
205 |
+
$data['more_full_post'] = sanitize_text_field( $input['more_full_post'] );
|
206 |
+
|
207 |
+
/**
|
208 |
+
* Read more --> page
|
209 |
+
*/
|
210 |
+
if ( isset( $input['more_page'] ) && $input['more_page'] ) {
|
211 |
+
|
212 |
+
// Check the "ID or slug" field first
|
213 |
+
if ( $input['more_page_id2'] ) {
|
214 |
+
|
215 |
+
// is post ID?
|
216 |
+
$id = sanitize_text_field( $input['more_page_id2'] );
|
217 |
+
if ( is_numeric( $id ) ) {
|
218 |
+
if ( ! get_posts( array( 'p' => $id, 'post_type' => array( 'page', 'post' ), 'post_status' => 'publish' ) ) ) {
|
219 |
+
$id = null;
|
220 |
+
}
|
221 |
+
} else {
|
222 |
+
// is post slug?
|
223 |
+
$target = get_posts( array( 'name' => $id, 'post_type' => array( 'page', 'post' ), 'post_status' => 'publish' ) );
|
224 |
+
if ( $target ) {
|
225 |
+
$id = $target[0]->ID;
|
226 |
+
}
|
227 |
+
}
|
228 |
+
|
229 |
+
if ( $id ) {
|
230 |
+
$data['more_page_id'] = $id;
|
231 |
+
unset( $data['more_page_id2'] );
|
232 |
+
}
|
233 |
+
|
234 |
+
} else {
|
235 |
+
|
236 |
+
if ( $input['more_page_id'] ) {
|
237 |
+
if ( is_numeric( $input['more_page_id'] ) ) {
|
238 |
+
$data['more_page_id'] = (int) sanitize_text_field( $input['more_page_id'] );
|
239 |
+
} else {
|
240 |
+
$data['more_page_id'] = sanitize_text_field( $input['more_page_id'] );
|
241 |
+
}
|
242 |
+
}
|
243 |
+
|
244 |
+
}
|
245 |
+
|
246 |
+
// Only enable more_page if a page was selected by either method.
|
247 |
+
if ( isset( $data['more_page_id'] ) && $data['more_page_id'] ) {
|
248 |
+
$data['more_page'] = 1;
|
249 |
+
}
|
250 |
+
}
|
251 |
+
|
252 |
+
if ( ! $input['more_page_text'] ) {
|
253 |
+
$data['more_page_text'] = $default_view['more_page_text'];
|
254 |
+
} else {
|
255 |
+
$data['more_page_text'] = sanitize_text_field( $input['more_page_text'] );
|
256 |
+
}
|
257 |
+
$data['more_page_hook'] = sanitize_text_field( $input['more_page_hook'] );
|
258 |
+
|
259 |
+
return $data;
|
260 |
+
}
|
261 |
+
|
262 |
/**
|
263 |
* Single testimonial
|
264 |
*
|
admin/views.php
CHANGED
@@ -3,7 +3,6 @@
|
|
3 |
* View admin functions.
|
4 |
*
|
5 |
* @since 1.21.0
|
6 |
-
* @package Strong_Testimonials
|
7 |
*/
|
8 |
|
9 |
|
@@ -48,7 +47,7 @@ function wpmtst_views_admin() {
|
|
48 |
|
49 |
echo '<h1>' . __( 'Edit View', 'strong-testimonials' ) . '</h1>';
|
50 |
|
51 |
-
$message = __( 'An error occurred.', 'strong-testimonials' )
|
52 |
|
53 |
wp_die( sprintf( '<div class="notice notice-error"><p>%s</p></div>', $message ) );
|
54 |
|
3 |
* View admin functions.
|
4 |
*
|
5 |
* @since 1.21.0
|
|
|
6 |
*/
|
7 |
|
8 |
|
47 |
|
48 |
echo '<h1>' . __( 'Edit View', 'strong-testimonials' ) . '</h1>';
|
49 |
|
50 |
+
$message = __( 'An error occurred.', 'strong-testimonials' );
|
51 |
|
52 |
wp_die( sprintf( '<div class="notice notice-error"><p>%s</p></div>', $message ) );
|
53 |
|
includes/class-strong-view-display.php
CHANGED
@@ -79,6 +79,7 @@ class Strong_View_Display extends Strong_View {
|
|
79 |
$this->has_stars();
|
80 |
$this->has_pagination();
|
81 |
$this->has_layouts();
|
|
|
82 |
|
83 |
$this->load_extra_stylesheets();
|
84 |
|
@@ -322,6 +323,10 @@ class Strong_View_Display extends Strong_View {
|
|
322 |
$container_data_list['state'] = 'idle';
|
323 |
}
|
324 |
|
|
|
|
|
|
|
|
|
325 |
// layouts
|
326 |
$content_class_list[] = 'strong-' . ( $this->atts['layout'] ? $this->atts['layout'] : 'normal' );
|
327 |
$content_class_list[] = 'columns-' . ( $this->atts['layout'] ? $this->atts['column_count'] : '1' );
|
@@ -351,10 +356,28 @@ class Strong_View_Display extends Strong_View {
|
|
351 |
return ( $this->atts['pagination'] && 'simple' == $this->atts['pagination_settings']['type'] );
|
352 |
}
|
353 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
354 |
public function is_masonry() {
|
355 |
return ( 'masonry' == $this->atts['layout'] );
|
356 |
}
|
357 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
358 |
/**
|
359 |
* Pagination
|
360 |
*
|
@@ -442,6 +465,18 @@ class Strong_View_Display extends Strong_View {
|
|
442 |
WPMST()->render->add_script( 'wpmtst-controller' );
|
443 |
}
|
444 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
445 |
}
|
446 |
|
447 |
endif;
|
79 |
$this->has_stars();
|
80 |
$this->has_pagination();
|
81 |
$this->has_layouts();
|
82 |
+
$this->has_readmore();
|
83 |
|
84 |
$this->load_extra_stylesheets();
|
85 |
|
323 |
$container_data_list['state'] = 'idle';
|
324 |
}
|
325 |
|
326 |
+
if ( $this->is_hybrid() ) {
|
327 |
+
$container_class_list[] = 'more-in-place';
|
328 |
+
}
|
329 |
+
|
330 |
// layouts
|
331 |
$content_class_list[] = 'strong-' . ( $this->atts['layout'] ? $this->atts['layout'] : 'normal' );
|
332 |
$content_class_list[] = 'columns-' . ( $this->atts['layout'] ? $this->atts['column_count'] : '1' );
|
356 |
return ( $this->atts['pagination'] && 'simple' == $this->atts['pagination_settings']['type'] );
|
357 |
}
|
358 |
|
359 |
+
/**
|
360 |
+
* Return true if using Masonry.
|
361 |
+
*
|
362 |
+
* @since 2.28.0
|
363 |
+
*
|
364 |
+
* @return bool
|
365 |
+
*/
|
366 |
public function is_masonry() {
|
367 |
return ( 'masonry' == $this->atts['layout'] );
|
368 |
}
|
369 |
|
370 |
+
/**
|
371 |
+
* Return true if read-more in place.
|
372 |
+
*
|
373 |
+
* @since 2.33.0
|
374 |
+
*
|
375 |
+
* @return bool
|
376 |
+
*/
|
377 |
+
public function is_hybrid() {
|
378 |
+
return ( isset( $this->atts['more_post_in_place'] ) && $this->atts['more_post_in_place'] );
|
379 |
+
}
|
380 |
+
|
381 |
/**
|
382 |
* Pagination
|
383 |
*
|
465 |
WPMST()->render->add_script( 'wpmtst-controller' );
|
466 |
}
|
467 |
|
468 |
+
/**
|
469 |
+
* Read more in place
|
470 |
+
*
|
471 |
+
* @since 2.33.0
|
472 |
+
*/
|
473 |
+
public function has_readmore() {
|
474 |
+
if ( $this->is_hybrid() ) {
|
475 |
+
WPMST()->render->add_style( 'wpmtst-animate' );
|
476 |
+
WPMST()->render->add_script( 'wpmtst-readmore' );
|
477 |
+
}
|
478 |
+
}
|
479 |
+
|
480 |
}
|
481 |
|
482 |
endif;
|
includes/class-strong-view-slideshow.php
CHANGED
@@ -33,6 +33,7 @@ class Strong_View_Slideshow extends Strong_View_Display {
|
|
33 |
$this->find_stylesheet();
|
34 |
$this->has_slideshow();
|
35 |
$this->has_stars();
|
|
|
36 |
|
37 |
$this->load_extra_stylesheets();
|
38 |
|
@@ -396,7 +397,7 @@ class Strong_View_Slideshow extends Strong_View_Display {
|
|
396 |
'autoControls' => 0,
|
397 |
'pager' => 0,
|
398 |
'slideCount' => $this->post_count,
|
399 |
-
'debug' => defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG,
|
400 |
'compat' => $compat,
|
401 |
'touchEnabled' => $options['touch_enabled'],
|
402 |
'type' => $this->atts['slideshow_settings']['type'],
|
33 |
$this->find_stylesheet();
|
34 |
$this->has_slideshow();
|
35 |
$this->has_stars();
|
36 |
+
$this->has_readmore();
|
37 |
|
38 |
$this->load_extra_stylesheets();
|
39 |
|
397 |
'autoControls' => 0,
|
398 |
'pager' => 0,
|
399 |
'slideCount' => $this->post_count,
|
400 |
+
'debug' => defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG && apply_filters( 'debug_strong_slider', true ),
|
401 |
'compat' => $compat,
|
402 |
'touchEnabled' => $options['touch_enabled'],
|
403 |
'type' => $this->atts['slideshow_settings']['type'],
|
includes/class-strong-view.php
CHANGED
@@ -61,6 +61,18 @@ class Strong_View {
|
|
61 |
$this->plugin_version = get_option( 'wpmtst_plugin_version' );
|
62 |
}
|
63 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
/**
|
65 |
* Return our rendered template.
|
66 |
*
|
@@ -70,6 +82,11 @@ class Strong_View {
|
|
70 |
return $this->html;
|
71 |
}
|
72 |
|
|
|
|
|
|
|
|
|
|
|
73 |
public function nothing_found() {
|
74 |
ob_start();
|
75 |
?>
|
@@ -98,34 +115,153 @@ class Strong_View {
|
|
98 |
* Add content filters.
|
99 |
*/
|
100 |
public function add_content_filters() {
|
101 |
-
if ( isset( $this->atts['content'] ) && 'truncated' == $this->atts['content'] ) {
|
102 |
|
103 |
-
|
104 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
|
106 |
-
|
107 |
|
108 |
-
|
109 |
-
|
|
|
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
}
|
112 |
-
// else no filters
|
113 |
}
|
114 |
|
115 |
/**
|
116 |
-
* Add content filters.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
*/
|
118 |
public function remove_content_filters() {
|
119 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
|
121 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
|
123 |
-
|
|
|
124 |
|
125 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
}
|
128 |
-
|
|
|
129 |
}
|
130 |
|
131 |
/**
|
@@ -171,11 +307,10 @@ class Strong_View {
|
|
171 |
$script = WPMST()->templates->get_template_config( $this->atts, 'script', false );
|
172 |
|
173 |
if ( $script ) {
|
174 |
-
$handle = 'testimonials-' . $this->
|
175 |
wp_register_script( $handle, $script, $deps_array );
|
176 |
WPMST()->render->add_script( $handle );
|
177 |
-
}
|
178 |
-
else {
|
179 |
foreach ( $deps_array as $handle ) {
|
180 |
WPMST()->render->add_script( $handle );
|
181 |
}
|
@@ -194,13 +329,13 @@ class Strong_View {
|
|
194 |
*/
|
195 |
public function find_stylesheet( $enqueue = true ) {
|
196 |
// In case of deactivated widgets still referencing deleted Views
|
197 |
-
if ( !
|
198 |
return false;
|
199 |
}
|
200 |
|
201 |
$stylesheet = WPMST()->templates->get_template_attr( $this->atts, 'stylesheet', false );
|
202 |
if ( $stylesheet ) {
|
203 |
-
$handle = 'testimonials-' . str_replace( ':', '-', $this->
|
204 |
$this->set_stylesheet( $handle );
|
205 |
wp_register_style( $handle, $stylesheet, array(), $this->plugin_version );
|
206 |
if ( $enqueue ) {
|
@@ -222,7 +357,8 @@ class Strong_View {
|
|
222 |
* @return array
|
223 |
*/
|
224 |
public function get_template_css_class() {
|
225 |
-
$template_name
|
|
|
226 |
|
227 |
// Maintain back-compat with template format version 1.0.
|
228 |
$class = str_replace( ':content', '', $template_name );
|
@@ -236,10 +372,10 @@ class Strong_View {
|
|
236 |
|
237 |
foreach ( $template_object['config']['options'] as $option ) {
|
238 |
|
239 |
-
if ( isset( $
|
240 |
|
241 |
foreach ( $option->values as $value ) {
|
242 |
-
if ( $value->value == $
|
243 |
if ( isset( $value->class_name ) ) {
|
244 |
$class_list[] = $value->class_name;
|
245 |
}
|
@@ -280,7 +416,7 @@ class Strong_View {
|
|
280 |
* @return bool
|
281 |
*/
|
282 |
public function is_form() {
|
283 |
-
return (
|
284 |
}
|
285 |
|
286 |
/**
|
@@ -289,7 +425,7 @@ class Strong_View {
|
|
289 |
* @since 2.30.0
|
290 |
*/
|
291 |
public function custom_font_color() {
|
292 |
-
$font_color = $this->
|
293 |
if ( ! isset( $font_color['type'] ) || 'custom' != $font_color['type'] ) {
|
294 |
return;
|
295 |
}
|
@@ -297,7 +433,7 @@ class Strong_View {
|
|
297 |
$c1 = isset( $font_color['color'] ) ? $font_color['color'] : '';
|
298 |
|
299 |
if ( $c1 ) {
|
300 |
-
$view_el = ".strong-view-id-{$this->
|
301 |
$handle = $this->get_stylesheet();
|
302 |
|
303 |
if ( $this->is_form() ) {
|
@@ -319,7 +455,7 @@ class Strong_View {
|
|
319 |
* Build CSS for custom background.
|
320 |
*/
|
321 |
public function custom_background() {
|
322 |
-
$background = $this->
|
323 |
if ( ! isset( $background['type'] ) ) {
|
324 |
return;
|
325 |
}
|
@@ -348,11 +484,11 @@ class Strong_View {
|
|
348 |
|
349 |
// Special handling for Divi Builder
|
350 |
$prefix = '';
|
351 |
-
if (
|
352 |
$prefix = '#et_builder_outer_content ';
|
353 |
}
|
354 |
|
355 |
-
$view_el = "$prefix.strong-view-id-{$this->
|
356 |
|
357 |
// Includes special handling for Bold template.
|
358 |
if ( $c1 && $c2 ) {
|
@@ -417,8 +553,8 @@ class Strong_View {
|
|
417 |
* @since 2.16.0 In Strong_View class.
|
418 |
*/
|
419 |
public function has_stars() {
|
420 |
-
if (
|
421 |
-
foreach ( $this->
|
422 |
if ( 'rating' == $field['type'] ) {
|
423 |
WPMST()->render->add_style( 'wpmtst-rating-display' );
|
424 |
break;
|
61 |
$this->plugin_version = get_option( 'wpmtst_plugin_version' );
|
62 |
}
|
63 |
|
64 |
+
/**
|
65 |
+
* Return a specific view attribute.
|
66 |
+
*
|
67 |
+
* @param $att
|
68 |
+
* @since 2.33.0
|
69 |
+
*
|
70 |
+
* @return mixed|null
|
71 |
+
*/
|
72 |
+
public function get_att( $att ) {
|
73 |
+
return isset( $this->atts[ $att ] ) ? $this->atts[ $att ] : null;
|
74 |
+
}
|
75 |
+
|
76 |
/**
|
77 |
* Return our rendered template.
|
78 |
*
|
82 |
return $this->html;
|
83 |
}
|
84 |
|
85 |
+
/**
|
86 |
+
* Warning message of view not found.
|
87 |
+
*
|
88 |
+
* @return string
|
89 |
+
*/
|
90 |
public function nothing_found() {
|
91 |
ob_start();
|
92 |
?>
|
115 |
* Add content filters.
|
116 |
*/
|
117 |
public function add_content_filters() {
|
|
|
118 |
|
119 |
+
if ( 'truncated' == $this->get_att( 'content' ) ) {
|
120 |
+
|
121 |
+
// automatic excerpt
|
122 |
+
|
123 |
+
$this->excerpt_filters();
|
124 |
+
|
125 |
+
$this->hybrid_content();
|
126 |
+
|
127 |
+
add_filter( 'wpmtst_get_the_excerpt', 'wpmtst_bypass_excerpt', 1 );
|
128 |
+
|
129 |
+
if ( $this->get_att( 'more_post_ellipsis' ) ) {
|
130 |
+
add_filter( 'wpmtst_use_ellipsis', '__return_true' );
|
131 |
+
}
|
132 |
+
|
133 |
+
} elseif ( 'excerpt' == $this->get_att( 'content' ) ) {
|
134 |
+
|
135 |
+
// manual excerpt (if no excerpt then use automatic excerpt)
|
136 |
+
|
137 |
+
$this->excerpt_filters();
|
138 |
|
139 |
+
$this->hybrid_content();
|
140 |
|
141 |
+
if ( $this->get_att( 'more_full_post' ) ) {
|
142 |
+
add_filter( 'wpmtst_get_the_excerpt', array( $this, 'manual_excerpt_more' ), 20 );
|
143 |
+
}
|
144 |
|
145 |
+
if ( $this->get_att( 'more_post_ellipsis' ) ) {
|
146 |
+
add_filter( 'wpmtst_use_ellipsis', array( $this, 'has_no_excerpt' ) );
|
147 |
+
} else {
|
148 |
+
add_filter( 'wpmtst_use_ellipsis', '__return_false' );
|
149 |
+
}
|
150 |
+
|
151 |
+
} else {
|
152 |
+
|
153 |
+
// full content
|
154 |
+
add_filter( 'wpmtst_get_the_content', 'wpmtst_the_content_filtered' );
|
155 |
+
|
156 |
+
}
|
157 |
+
|
158 |
+
}
|
159 |
+
|
160 |
+
/**
|
161 |
+
* Add excerpt filters.
|
162 |
+
*
|
163 |
+
* @since 2.33.0
|
164 |
+
*/
|
165 |
+
public function excerpt_filters() {
|
166 |
+
add_filter( 'wpmtst_get_the_content', 'wpmtst_the_excerpt_filtered' );
|
167 |
+
add_filter( 'wpmtst_get_the_excerpt', 'wpmtst_trim_excerpt' );
|
168 |
+
|
169 |
+
if ( ! $this->get_att( 'use_default_length' ) ) {
|
170 |
+
add_filter( 'excerpt_length', array( $this, 'excerpt_length' ) );
|
171 |
+
}
|
172 |
+
|
173 |
+
if ( ! $this->get_att( 'use_default_more' ) ) {
|
174 |
+
add_filter( 'excerpt_more', array( $this, 'excerpt_more' ) );
|
175 |
}
|
|
|
176 |
}
|
177 |
|
178 |
/**
|
179 |
+
* Add hybrid content filters.
|
180 |
+
*
|
181 |
+
* @since 2.33.0
|
182 |
+
*/
|
183 |
+
public function hybrid_content() {
|
184 |
+
if ( $this->get_att( 'more_post_in_place' ) ) {
|
185 |
+
add_filter( 'wpmtst_is_hybrid_content', '__return_true' );
|
186 |
+
} else {
|
187 |
+
add_filter( 'wpmtst_read_more_post_link', 'wpmtst_prepend_ellipsis' );
|
188 |
+
}
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* Remove content filters.
|
193 |
+
*
|
194 |
+
* @since 2.33.0
|
195 |
*/
|
196 |
public function remove_content_filters() {
|
197 |
+
remove_filter( 'wpmtst_get_the_content', 'wpmtst_the_content_filtered' );
|
198 |
+
remove_filter( 'wpmtst_get_the_content', 'wpmtst_the_excerpt_filtered' );
|
199 |
+
|
200 |
+
remove_filter( 'excerpt_length', array( $this, 'excerpt_length' ) );
|
201 |
+
remove_filter( 'excerpt_more', array( $this, 'excerpt_more' ) );
|
202 |
+
remove_filter( 'wpmtst_read_more_post_link', 'wpmtst_prepend_ellipsis' );
|
203 |
+
|
204 |
+
remove_filter( 'wpmtst_get_the_excerpt', 'wpmtst_bypass_excerpt', 1 );
|
205 |
+
remove_filter( 'wpmtst_get_the_excerpt', 'wpmtst_hybrid_excerpt' );
|
206 |
+
remove_filter( 'wpmtst_get_the_excerpt', 'wpmtst_trim_excerpt' );
|
207 |
+
remove_filter( 'wpmtst_get_the_excerpt', array( $this, 'manual_excerpt_more' ), 20 );
|
208 |
+
|
209 |
+
remove_filter( 'wpmtst_is_hybrid_content', '__return_true' );
|
210 |
+
remove_filter( 'wpmtst_use_ellipsis', '__return_true' );
|
211 |
+
remove_filter( 'wpmtst_use_ellipsis', array( $this, 'has_no_excerpt' ) );
|
212 |
+
}
|
213 |
|
214 |
+
/**
|
215 |
+
* Return true if post has no manual excerpt.
|
216 |
+
*
|
217 |
+
* @since 2.33.0
|
218 |
+
*
|
219 |
+
* @return bool
|
220 |
+
*/
|
221 |
+
public function has_no_excerpt() {
|
222 |
+
return ! has_excerpt();
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Set custom excerpt length.
|
227 |
+
*
|
228 |
+
* @param $words
|
229 |
+
* @since 2.33.0
|
230 |
+
*
|
231 |
+
* @return mixed|null
|
232 |
+
*/
|
233 |
+
public function excerpt_length( $words ) {
|
234 |
+
$excerpt_length = $this->get_att( 'excerpt_length' );
|
235 |
|
236 |
+
return $excerpt_length ? $excerpt_length : $words;
|
237 |
+
}
|
238 |
|
239 |
+
/**
|
240 |
+
* The read-more link, maybe prepended with an ellipsis.
|
241 |
+
*
|
242 |
+
* @param $more
|
243 |
+
* @since 2.33.0
|
244 |
+
*
|
245 |
+
* @return string
|
246 |
+
*/
|
247 |
+
public function excerpt_more( $more ) {
|
248 |
+
return wpmtst_get_excerpt_more_link();
|
249 |
+
}
|
250 |
|
251 |
+
/**
|
252 |
+
* Maybe add read-more to manual excerpt.
|
253 |
+
*
|
254 |
+
* @since 2.26.0
|
255 |
+
* @param $excerpt
|
256 |
+
*
|
257 |
+
* @return string
|
258 |
+
*/
|
259 |
+
public function manual_excerpt_more( $excerpt ) {
|
260 |
+
if ( has_excerpt() ) {
|
261 |
+
$excerpt .= apply_filters( 'excerpt_more', ' […]' );
|
262 |
}
|
263 |
+
|
264 |
+
return $excerpt;
|
265 |
}
|
266 |
|
267 |
/**
|
307 |
$script = WPMST()->templates->get_template_config( $this->atts, 'script', false );
|
308 |
|
309 |
if ( $script ) {
|
310 |
+
$handle = 'testimonials-' . $this->get_att( 'template' );
|
311 |
wp_register_script( $handle, $script, $deps_array );
|
312 |
WPMST()->render->add_script( $handle );
|
313 |
+
} else {
|
|
|
314 |
foreach ( $deps_array as $handle ) {
|
315 |
WPMST()->render->add_script( $handle );
|
316 |
}
|
329 |
*/
|
330 |
public function find_stylesheet( $enqueue = true ) {
|
331 |
// In case of deactivated widgets still referencing deleted Views
|
332 |
+
if ( ! $this->get_att( 'template' ) ) {
|
333 |
return false;
|
334 |
}
|
335 |
|
336 |
$stylesheet = WPMST()->templates->get_template_attr( $this->atts, 'stylesheet', false );
|
337 |
if ( $stylesheet ) {
|
338 |
+
$handle = 'testimonials-' . str_replace( ':', '-', $this->get_att( 'template' ) );
|
339 |
$this->set_stylesheet( $handle );
|
340 |
wp_register_style( $handle, $stylesheet, array(), $this->plugin_version );
|
341 |
if ( $enqueue ) {
|
357 |
* @return array
|
358 |
*/
|
359 |
public function get_template_css_class() {
|
360 |
+
$template_name = $this->get_att( 'template' );
|
361 |
+
$template_settings = $this->get_att( 'template_settings' );
|
362 |
|
363 |
// Maintain back-compat with template format version 1.0.
|
364 |
$class = str_replace( ':content', '', $template_name );
|
372 |
|
373 |
foreach ( $template_object['config']['options'] as $option ) {
|
374 |
|
375 |
+
if ( isset( $template_settings[ $template_name ][ $option->name ] ) ) {
|
376 |
|
377 |
foreach ( $option->values as $value ) {
|
378 |
+
if ( $value->value == $template_settings[ $template_name ][ $option->name ] ) {
|
379 |
if ( isset( $value->class_name ) ) {
|
380 |
$class_list[] = $value->class_name;
|
381 |
}
|
416 |
* @return bool
|
417 |
*/
|
418 |
public function is_form() {
|
419 |
+
return ( 'form' == $this->get_att( 'mode' ) );
|
420 |
}
|
421 |
|
422 |
/**
|
425 |
* @since 2.30.0
|
426 |
*/
|
427 |
public function custom_font_color() {
|
428 |
+
$font_color = $this->get_att( 'font-color' );
|
429 |
if ( ! isset( $font_color['type'] ) || 'custom' != $font_color['type'] ) {
|
430 |
return;
|
431 |
}
|
433 |
$c1 = isset( $font_color['color'] ) ? $font_color['color'] : '';
|
434 |
|
435 |
if ( $c1 ) {
|
436 |
+
$view_el = ".strong-view-id-{$this->get_att( 'view' )}";
|
437 |
$handle = $this->get_stylesheet();
|
438 |
|
439 |
if ( $this->is_form() ) {
|
455 |
* Build CSS for custom background.
|
456 |
*/
|
457 |
public function custom_background() {
|
458 |
+
$background = $this->get_att( 'background' );
|
459 |
if ( ! isset( $background['type'] ) ) {
|
460 |
return;
|
461 |
}
|
484 |
|
485 |
// Special handling for Divi Builder
|
486 |
$prefix = '';
|
487 |
+
if ( $this->get_att( 'divi_builder' ) && wpmtst_divi_builder_active() ) {
|
488 |
$prefix = '#et_builder_outer_content ';
|
489 |
}
|
490 |
|
491 |
+
$view_el = "$prefix.strong-view-id-{$this->get_att( 'view' )}";
|
492 |
|
493 |
// Includes special handling for Bold template.
|
494 |
if ( $c1 && $c2 ) {
|
553 |
* @since 2.16.0 In Strong_View class.
|
554 |
*/
|
555 |
public function has_stars() {
|
556 |
+
if ( $this->get_att( 'client_section' ) ) {
|
557 |
+
foreach ( $this->get_att( 'client_section' ) as $field ) {
|
558 |
if ( 'rating' == $field['type'] ) {
|
559 |
WPMST()->render->add_style( 'wpmtst-rating-display' );
|
560 |
break;
|
includes/class-walker-strong-category-checklist-front.php
CHANGED
@@ -2,7 +2,6 @@
|
|
2 |
/**
|
3 |
* Taxonomy API: Walker_Strong_Category_Checklist_Front class
|
4 |
*
|
5 |
-
* @package Strong_Testimonials
|
6 |
* @since 2.17.0
|
7 |
*/
|
8 |
|
2 |
/**
|
3 |
* Taxonomy API: Walker_Strong_Category_Checklist_Front class
|
4 |
*
|
|
|
5 |
* @since 2.17.0
|
6 |
*/
|
7 |
|
includes/filters.php
CHANGED
@@ -1,4 +1,7 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
2 |
|
3 |
/**
|
4 |
* Remove whitespace between tags. Helps prevent double wpautop in plugins
|
@@ -18,6 +21,32 @@ function wpmtst_remove_whitespace( $html ) {
|
|
18 |
|
19 |
return $html;
|
20 |
}
|
21 |
-
|
22 |
add_filter( 'strong_view_html', 'wpmtst_remove_whitespace' );
|
23 |
add_filter( 'strong_view_form_html', 'wpmtst_remove_whitespace' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Filters
|
4 |
+
*/
|
5 |
|
6 |
/**
|
7 |
* Remove whitespace between tags. Helps prevent double wpautop in plugins
|
21 |
|
22 |
return $html;
|
23 |
}
|
|
|
24 |
add_filter( 'strong_view_html', 'wpmtst_remove_whitespace' );
|
25 |
add_filter( 'strong_view_form_html', 'wpmtst_remove_whitespace' );
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Content filters.
|
30 |
+
*
|
31 |
+
* @since 2.33.0 Moved to `init` action.
|
32 |
+
*/
|
33 |
+
function wpmtst_content_filters() {
|
34 |
+
add_filter( 'wpmtst_the_content', array( $GLOBALS['wp_embed'], 'run_shortcode' ), 8 );
|
35 |
+
add_filter( 'wpmtst_the_content', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 );
|
36 |
+
add_filter( 'wpmtst_the_content', 'wptexturize' );
|
37 |
+
add_filter( 'wpmtst_the_content', 'wpautop' );
|
38 |
+
add_filter( 'wpmtst_the_content', 'shortcode_unautop' );
|
39 |
+
add_filter( 'wpmtst_the_content', 'prepend_attachment' );
|
40 |
+
add_filter( 'wpmtst_the_content', 'wp_make_content_images_responsive' );
|
41 |
+
add_filter( 'wpmtst_the_content', 'do_shortcode', 11 );
|
42 |
+
add_filter( 'wpmtst_the_content', 'convert_smilies', 20 );
|
43 |
+
|
44 |
+
add_filter( 'wpmtst_the_excerpt', 'wptexturize' );
|
45 |
+
add_filter( 'wpmtst_the_excerpt', 'convert_smilies' );
|
46 |
+
add_filter( 'wpmtst_the_excerpt', 'convert_chars' );
|
47 |
+
add_filter( 'wpmtst_the_excerpt', 'wpautop' );
|
48 |
+
add_filter( 'wpmtst_the_excerpt', 'shortcode_unautop' );
|
49 |
+
add_filter( 'wpmtst_the_excerpt', 'do_shortcode', 11 );
|
50 |
+
add_filter( 'wpmtst_the_excerpt', 'convert_smilies', 20 );
|
51 |
+
}
|
52 |
+
add_action( 'init', 'wpmtst_content_filters' );
|
includes/functions-activation.php
CHANGED
@@ -31,7 +31,6 @@ function wpmtst_update_tables() {
|
|
31 |
$message .= __( 'The plugin has been deactivated.', 'strong-testimonials' );
|
32 |
$message .= '</p>';
|
33 |
$message .= '<p><code>' . $wpdb->last_error . '</code></p>';
|
34 |
-
$message .= '<p>' . sprintf( __( 'Please <a href="%s" target="_blank">open a support ticket</a>.', 'strong-testimonials' ), wpmtst_support_url() ) . '</p>';
|
35 |
$message .= '<p>' . sprintf( __( '<a href="%s">Go back to Dashboard</a>', 'strong-testimonials' ), esc_url( admin_url() ) ) . '</p>';
|
36 |
|
37 |
wp_die( sprintf( '<div class="error strong-view-error">%s</div>', $message ) );
|
31 |
$message .= __( 'The plugin has been deactivated.', 'strong-testimonials' );
|
32 |
$message .= '</p>';
|
33 |
$message .= '<p><code>' . $wpdb->last_error . '</code></p>';
|
|
|
34 |
$message .= '<p>' . sprintf( __( '<a href="%s">Go back to Dashboard</a>', 'strong-testimonials' ), esc_url( admin_url() ) ) . '</p>';
|
35 |
|
36 |
wp_die( sprintf( '<div class="error strong-view-error">%s</div>', $message ) );
|
includes/functions-content.php
CHANGED
@@ -1,8 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* Content functions.
|
4 |
-
*
|
5 |
-
* @package Strong_Testimonials
|
6 |
*/
|
7 |
|
8 |
/**
|
@@ -69,113 +67,65 @@ function wpmtst_bypass_excerpt( $text ) {
|
|
69 |
}
|
70 |
|
71 |
/**
|
72 |
-
* Based on wp_trim_excerpt().
|
73 |
*
|
74 |
* @since 2.26.0
|
75 |
-
* @param string $
|
76 |
*
|
77 |
* @return string
|
78 |
*/
|
79 |
-
function wpmtst_trim_excerpt( $
|
80 |
-
$raw_excerpt = $
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
$excerpt_more = apply_filters( 'excerpt_more', ' ' . '[…]' );
|
104 |
-
} else {
|
105 |
-
$excerpt_more = apply_filters( 'wpmtst_excerpt_more', ' ' . '[…]' );
|
106 |
-
}
|
107 |
-
$text = wpmtst_trim_words( $text, $excerpt_length, $excerpt_more );
|
108 |
}
|
|
|
109 |
/**
|
110 |
* Filters the trimmed excerpt string.
|
111 |
*
|
112 |
* @param string $text The trimmed text.
|
113 |
* @param string $raw_excerpt The text prior to trimming.
|
114 |
*/
|
115 |
-
return apply_filters( 'wpmtst_trim_excerpt', $
|
116 |
}
|
117 |
|
118 |
/**
|
119 |
-
*
|
120 |
*
|
121 |
-
* @
|
122 |
-
* @
|
123 |
*
|
124 |
* @return string
|
125 |
*/
|
126 |
-
function
|
127 |
-
$
|
128 |
-
if (
|
129 |
-
|
130 |
-
if ( WPMST()->atts( 'use_default_more' ) ) {
|
131 |
-
$excerpt_more = apply_filters( 'excerpt_more', ' ' . '[…]' );
|
132 |
-
} else {
|
133 |
-
$excerpt_more = apply_filters( 'wpmtst_excerpt_more', ' ' . '[…]' );
|
134 |
-
}
|
135 |
-
}
|
136 |
-
}
|
137 |
-
|
138 |
-
return $excerpt . $excerpt_more;
|
139 |
-
}
|
140 |
-
|
141 |
-
/**
|
142 |
-
* Modify the excerpt length.
|
143 |
-
*
|
144 |
-
* @since 2.10.0
|
145 |
-
* @param $words
|
146 |
-
*
|
147 |
-
* @return int
|
148 |
-
*/
|
149 |
-
function wpmtst_excerpt_length( $words ) {
|
150 |
-
$excerpt_length = WPMST()->atts( 'excerpt_length' );
|
151 |
-
if ( $excerpt_length ) {
|
152 |
-
$words = $excerpt_length;
|
153 |
}
|
|
|
|
|
154 |
|
155 |
-
return $
|
156 |
-
}
|
157 |
-
|
158 |
-
/**
|
159 |
-
* Modify the automatic excerpt "Read more" link (via WP filter).
|
160 |
-
*
|
161 |
-
* @since 2.10.0
|
162 |
-
* @param $more
|
163 |
-
*
|
164 |
-
* @return string
|
165 |
-
*/
|
166 |
-
function wpmtst_excerpt_more( $more ) {
|
167 |
-
$ellipsis = WPMST()->atts( 'more_post_ellipsis' ) ? __( '…' ) : '';
|
168 |
-
|
169 |
-
return $ellipsis . ' ' . wpmtst_get_excerpt_more_link();
|
170 |
-
}
|
171 |
-
|
172 |
-
/**
|
173 |
-
* Return "Read more" for manual excerpts.
|
174 |
-
*
|
175 |
-
* @return string
|
176 |
-
*/
|
177 |
-
function wpmtst_excerpt_more_full_post() {
|
178 |
-
return ' ' . wpmtst_get_excerpt_more_link();
|
179 |
}
|
180 |
|
181 |
/**
|
@@ -192,7 +142,20 @@ function wpmtst_get_excerpt_more_link() {
|
|
192 |
apply_filters( 'wpmtst_read_more_post_link_text', WPMST()->atts( 'more_post_text' ), WPMST()->atts() ), get_the_title()
|
193 |
);
|
194 |
|
195 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
|
197 |
return apply_filters( 'wpmtst_read_more_post_link', $link );
|
198 |
}
|
@@ -203,10 +166,11 @@ function wpmtst_get_excerpt_more_link() {
|
|
203 |
* @param $text
|
204 |
* @param int $num_words
|
205 |
* @param null $more
|
|
|
206 |
*
|
207 |
* @return string
|
208 |
*/
|
209 |
-
function wpmtst_trim_words( $text, $num_words = 55, $more = null ) {
|
210 |
if ( null === $more ) {
|
211 |
$more = __( '…' );
|
212 |
}
|
@@ -224,17 +188,65 @@ function wpmtst_trim_words( $text, $num_words = 55, $more = null ) {
|
|
224 |
$words_array = array_slice( $words_array[0], 0, $num_words + 1 );
|
225 |
$sep = '';
|
226 |
} else {
|
227 |
-
$
|
|
|
228 |
$sep = ' ';
|
229 |
}
|
230 |
|
231 |
if ( count( $words_array ) > $num_words ) {
|
232 |
-
|
233 |
-
|
234 |
-
|
|
|
|
|
235 |
} else {
|
236 |
$text = implode( $sep, $words_array );
|
237 |
}
|
238 |
|
239 |
return $text;
|
240 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
/**
|
3 |
* Content functions.
|
|
|
|
|
4 |
*/
|
5 |
|
6 |
/**
|
67 |
}
|
68 |
|
69 |
/**
|
70 |
+
* Based on wp_trim_excerpt(). On wpmtst_get_the_excerpt hook.
|
71 |
*
|
72 |
* @since 2.26.0
|
73 |
+
* @param string $excerpt The manual excerpt.
|
74 |
*
|
75 |
* @return string
|
76 |
*/
|
77 |
+
function wpmtst_trim_excerpt( $excerpt = '' ) {
|
78 |
+
$raw_excerpt = $excerpt;
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Filter hybrid value here to allow individual overrides.
|
82 |
+
*/
|
83 |
+
$hybrid = apply_filters( 'wpmtst_is_hybrid_content', false );
|
84 |
+
|
85 |
+
if ( '' == $excerpt ) {
|
86 |
+
|
87 |
+
$text = wpmtst_get_the_prepared_text();
|
88 |
+
|
89 |
+
// Create excerpt if post has no manual excerpt.
|
90 |
+
$excerpt_length = apply_filters( 'excerpt_length', 55 );
|
91 |
+
$excerpt_more = apply_filters( 'excerpt_more', ' […]' );
|
92 |
+
$excerpt = wpmtst_trim_words( $text, $excerpt_length, $excerpt_more, $hybrid );
|
93 |
+
|
94 |
+
} elseif ( $hybrid ) {
|
95 |
+
|
96 |
+
$text = wpmtst_get_the_prepared_text( true );
|
97 |
+
|
98 |
+
// Append hybrid content as hidden span to the manual excerpt.
|
99 |
+
$excerpt .= wpmtst_trim_words( $text, 0, '', true );
|
100 |
+
|
|
|
|
|
|
|
|
|
|
|
101 |
}
|
102 |
+
|
103 |
/**
|
104 |
* Filters the trimmed excerpt string.
|
105 |
*
|
106 |
* @param string $text The trimmed text.
|
107 |
* @param string $raw_excerpt The text prior to trimming.
|
108 |
*/
|
109 |
+
return apply_filters( 'wpmtst_trim_excerpt', $excerpt, $raw_excerpt );
|
110 |
}
|
111 |
|
112 |
/**
|
113 |
+
* Prepare the post content.
|
114 |
*
|
115 |
+
* @param bool $hybrid
|
116 |
+
* @since 2.33.0
|
117 |
*
|
118 |
* @return string
|
119 |
*/
|
120 |
+
function wpmtst_get_the_prepared_text( $hybrid = false ) {
|
121 |
+
$text = get_the_content( '' );
|
122 |
+
if ( ! $hybrid ) {
|
123 |
+
$text = strip_shortcodes( $text );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
}
|
125 |
+
$text = apply_filters( 'wpmtst_the_content', $text );
|
126 |
+
$text = str_replace( ']]>', ']]>', $text );
|
127 |
|
128 |
+
return $text;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
}
|
130 |
|
131 |
/**
|
142 |
apply_filters( 'wpmtst_read_more_post_link_text', WPMST()->atts( 'more_post_text' ), WPMST()->atts() ), get_the_title()
|
143 |
);
|
144 |
|
145 |
+
$link_class = apply_filters( 'wpmtst_read_more_post_link_class', 'readmore' );
|
146 |
+
|
147 |
+
if ( apply_filters( 'wpmtst_is_hybrid_content', false ) ) {
|
148 |
+
// no href
|
149 |
+
$link = sprintf( '<a aria-expanded="false" aria-controls="more-%1$d" class="%2s readmore-toggle"><span class="readmore-text" data-more-text="%4$s" data-less-text="%5$s">%3$s</span></a>',
|
150 |
+
get_the_ID(), // 1
|
151 |
+
$link_class, // 2
|
152 |
+
$link_text, // 3
|
153 |
+
WPMST()->atts( 'more_post_text' ), // 4
|
154 |
+
WPMST()->atts( 'less_post_text' ) // 5
|
155 |
+
);
|
156 |
+
} else {
|
157 |
+
$link = sprintf( '<a href="%s" class="%s">%s</a>', esc_url( $url ), $link_class, $link_text );
|
158 |
+
}
|
159 |
|
160 |
return apply_filters( 'wpmtst_read_more_post_link', $link );
|
161 |
}
|
166 |
* @param $text
|
167 |
* @param int $num_words
|
168 |
* @param null $more
|
169 |
+
* @param bool $hybrid
|
170 |
*
|
171 |
* @return string
|
172 |
*/
|
173 |
+
function wpmtst_trim_words( $text, $num_words = 55, $more = null, $hybrid = false ) {
|
174 |
if ( null === $more ) {
|
175 |
$more = __( '…' );
|
176 |
}
|
188 |
$words_array = array_slice( $words_array[0], 0, $num_words + 1 );
|
189 |
$sep = '';
|
190 |
} else {
|
191 |
+
$offset = $hybrid ? 0 : $num_words + 1;
|
192 |
+
$words_array = preg_split( "/[\n\r\t ]+/", $text, $offset, PREG_SPLIT_NO_EMPTY );
|
193 |
$sep = ' ';
|
194 |
}
|
195 |
|
196 |
if ( count( $words_array ) > $num_words ) {
|
197 |
+
if ( $hybrid ) {
|
198 |
+
$text = wpmtst_assemble_hybrid( $words_array, $num_words, $sep, $more );
|
199 |
+
} else {
|
200 |
+
$text = wpmtst_assemble_excerpt( $words_array, $sep, $more );
|
201 |
+
}
|
202 |
} else {
|
203 |
$text = implode( $sep, $words_array );
|
204 |
}
|
205 |
|
206 |
return $text;
|
207 |
}
|
208 |
+
|
209 |
+
/**
|
210 |
+
* Assemble excerpt from trimmed array.
|
211 |
+
*
|
212 |
+
* @param $words_array
|
213 |
+
* @param $sep
|
214 |
+
* @param $more
|
215 |
+
* @since 2.33.0
|
216 |
+
*
|
217 |
+
* @return string
|
218 |
+
*/
|
219 |
+
function wpmtst_assemble_excerpt( $words_array, $sep, $more ) {
|
220 |
+
array_pop( $words_array );
|
221 |
+
$text = implode( $sep, $words_array );
|
222 |
+
|
223 |
+
return $text . $more;
|
224 |
+
}
|
225 |
+
|
226 |
+
/**
|
227 |
+
* Assemble excerpt + rest of content in hidden span.
|
228 |
+
*
|
229 |
+
* @param $words_array
|
230 |
+
* @param $num_words
|
231 |
+
* @param $sep
|
232 |
+
* @param $more
|
233 |
+
* @since 2.33.0
|
234 |
+
*
|
235 |
+
* @return string
|
236 |
+
*/
|
237 |
+
function wpmtst_assemble_hybrid( $words_array, $num_words, $sep, $more ) {
|
238 |
+
$ellipsis = wpmtst_ellipsis();
|
239 |
+
if ( $ellipsis ) {
|
240 |
+
$ellipsis = '<span class="ellipsis">' . $ellipsis . ' </span>';
|
241 |
+
/* ! This space is important: ^ */
|
242 |
+
}
|
243 |
+
|
244 |
+
$first_half = implode( $sep, array_slice( $words_array, 0, $num_words ) );
|
245 |
+
$second_half = implode( $sep, array_slice( $words_array, $num_words ) );
|
246 |
+
|
247 |
+
$wrap_open = '<span class="readmore-content animated" id="more-' . get_the_ID() . '" hidden> ';
|
248 |
+
$wrap_close = ' </span>';
|
249 |
+
|
250 |
+
return $first_half . $ellipsis . ' ' . $wrap_open . $second_half . $wrap_close . $more;
|
251 |
+
/* ! This space is important: ^ */
|
252 |
+
}
|
includes/functions-image.php
CHANGED
@@ -1,8 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* Featured image functions.
|
4 |
-
*
|
5 |
-
* @package Strong_Testimonials
|
6 |
*/
|
7 |
|
8 |
/**
|
1 |
<?php
|
2 |
/**
|
3 |
* Featured image functions.
|
|
|
|
|
4 |
*/
|
5 |
|
6 |
/**
|
includes/functions-template.php
CHANGED
@@ -1,34 +1,8 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* Template Functions
|
4 |
-
*
|
5 |
-
* @package Strong_Testimonials
|
6 |
*/
|
7 |
|
8 |
-
// Display filters
|
9 |
-
|
10 |
-
add_filter( 'wpmtst_the_content', array( $GLOBALS['wp_embed'], 'run_shortcode' ), 8 );
|
11 |
-
add_filter( 'wpmtst_the_content', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 );
|
12 |
-
add_filter( 'wpmtst_the_content', 'wptexturize' );
|
13 |
-
add_filter( 'wpmtst_the_content', 'wpautop' );
|
14 |
-
add_filter( 'wpmtst_the_content', 'shortcode_unautop' );
|
15 |
-
add_filter( 'wpmtst_the_content', 'prepend_attachment' );
|
16 |
-
add_filter( 'wpmtst_the_content', 'wp_make_content_images_responsive' );
|
17 |
-
add_filter( 'wpmtst_the_content', 'do_shortcode', 11 );
|
18 |
-
add_filter( 'wpmtst_the_content', 'convert_smilies', 20 );
|
19 |
-
|
20 |
-
add_filter( 'wpmtst_the_excerpt', 'wptexturize' );
|
21 |
-
add_filter( 'wpmtst_the_excerpt', 'convert_smilies' );
|
22 |
-
add_filter( 'wpmtst_the_excerpt', 'convert_chars' );
|
23 |
-
add_filter( 'wpmtst_the_excerpt', 'wpautop' );
|
24 |
-
add_filter( 'wpmtst_the_excerpt', 'shortcode_unautop' );
|
25 |
-
add_filter( 'wpmtst_the_excerpt', 'do_shortcode', 11 );
|
26 |
-
add_filter( 'wpmtst_the_excerpt', 'convert_smilies', 20 );
|
27 |
-
|
28 |
-
add_filter( 'wpmtst_excerpt_length', 'wpmtst_excerpt_length' );
|
29 |
-
add_filter( 'wpmtst_excerpt_more', 'wpmtst_excerpt_more' );
|
30 |
-
add_filter( 'wpmtst_get_the_excerpt', 'wpmtst_trim_excerpt' );
|
31 |
-
|
32 |
/**
|
33 |
* Template function for showing a View.
|
34 |
*
|
@@ -92,19 +66,13 @@ function wpmtst_the_title( $before = '', $after = '' ) {
|
|
92 |
*/
|
93 |
function wpmtst_the_content() {
|
94 |
/**
|
95 |
-
* Use this hook to remove specific
|
96 |
*
|
97 |
* @since 2.26.0
|
98 |
*/
|
99 |
do_action( 'wpmtst_before_content_filters' );
|
100 |
|
101 |
-
|
102 |
-
if ( 'truncated' == $att || 'excerpt' == $att ) {
|
103 |
-
// Excerpt filters added in view class.
|
104 |
-
echo wpmtst_the_excerpt_filtered();
|
105 |
-
} else {
|
106 |
-
echo wpmtst_the_content_filtered();
|
107 |
-
}
|
108 |
|
109 |
/**
|
110 |
* Restore content filters that were removed.
|
@@ -114,6 +82,32 @@ function wpmtst_the_content() {
|
|
114 |
do_action( 'wpmtst_after_content_filters' );
|
115 |
}
|
116 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
/**
|
118 |
* Assemble link to secondary "Read more" page.
|
119 |
*
|
1 |
<?php
|
2 |
/**
|
3 |
* Template Functions
|
|
|
|
|
4 |
*/
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
/**
|
7 |
* Template function for showing a View.
|
8 |
*
|
66 |
*/
|
67 |
function wpmtst_the_content() {
|
68 |
/**
|
69 |
+
* Use this hook to remove specific content filters.
|
70 |
*
|
71 |
* @since 2.26.0
|
72 |
*/
|
73 |
do_action( 'wpmtst_before_content_filters' );
|
74 |
|
75 |
+
echo apply_filters( 'wpmtst_get_the_content', '' );
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
|
77 |
/**
|
78 |
* Restore content filters that were removed.
|
82 |
do_action( 'wpmtst_after_content_filters' );
|
83 |
}
|
84 |
|
85 |
+
/**
|
86 |
+
* Like the_excerpt().
|
87 |
+
*
|
88 |
+
* @since 2.33.0
|
89 |
+
*/
|
90 |
+
function wpmtst_the_excerpt() {
|
91 |
+
echo wpmtst_the_excerpt_filtered();
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* The ellipsis on read-more's.
|
96 |
+
*
|
97 |
+
* @since 2.33.0
|
98 |
+
*/
|
99 |
+
function wpmtst_ellipsis() {
|
100 |
+
if ( apply_filters( 'wpmtst_use_ellipsis', true ) ) {
|
101 |
+
return apply_filters( 'wpmtst_ellipsis', __( '…' ) );
|
102 |
+
}
|
103 |
+
|
104 |
+
return '';
|
105 |
+
}
|
106 |
+
|
107 |
+
function wpmtst_prepend_ellipsis( $more ) {
|
108 |
+
return wpmtst_ellipsis() . ' ' . $more;
|
109 |
+
}
|
110 |
+
|
111 |
/**
|
112 |
* Assemble link to secondary "Read more" page.
|
113 |
*
|
includes/functions-views.php
CHANGED
@@ -1,8 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* View Functions
|
4 |
-
*
|
5 |
-
* @package Strong_Testimonials
|
6 |
*/
|
7 |
|
8 |
/**
|
@@ -37,7 +35,6 @@ function wpmtst_get_views() {
|
|
37 |
$message = '<p><span style="color: #CD0000;">';
|
38 |
$message .= __( 'An error occurred.', 'strong-testimonials' ) . '</span> ';
|
39 |
$message .= __( 'The plugin has been deactivated.', 'strong-testimonials' ) . ' ';
|
40 |
-
$message .= sprintf( __( 'Please <a href="%s" target="_blank">open a support ticket</a>.', 'strong-testimonials' ), wpmtst_support_url() ) . '</p>';
|
41 |
$message .= '<p>' . sprintf( __( '<a href="%s">Go back to Dashboard</a>', 'strong-testimonials' ), esc_url( admin_url() ) ) . '</p>';
|
42 |
wp_die( sprintf( '<div class="error strong-view-error">%s</div>', $message ) );
|
43 |
}
|
1 |
<?php
|
2 |
/**
|
3 |
* View Functions
|
|
|
|
|
4 |
*/
|
5 |
|
6 |
/**
|
35 |
$message = '<p><span style="color: #CD0000;">';
|
36 |
$message .= __( 'An error occurred.', 'strong-testimonials' ) . '</span> ';
|
37 |
$message .= __( 'The plugin has been deactivated.', 'strong-testimonials' ) . ' ';
|
|
|
38 |
$message .= '<p>' . sprintf( __( '<a href="%s">Go back to Dashboard</a>', 'strong-testimonials' ), esc_url( admin_url() ) ) . '</p>';
|
39 |
wp_die( sprintf( '<div class="error strong-view-error">%s</div>', $message ) );
|
40 |
}
|
includes/functions.php
CHANGED
@@ -1,12 +1,10 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* Functions
|
4 |
-
*
|
5 |
-
* @package Strong_Testimonials
|
6 |
*/
|
7 |
|
8 |
function wpmtst_support_url() {
|
9 |
-
return esc_url( 'https://strongplugins.com/
|
10 |
}
|
11 |
|
12 |
/**
|
1 |
<?php
|
2 |
/**
|
3 |
* Functions
|
|
|
|
|
4 |
*/
|
5 |
|
6 |
function wpmtst_support_url() {
|
7 |
+
return esc_url( 'https://strongplugins.com/' );
|
8 |
}
|
9 |
|
10 |
/**
|
includes/l10n-polylang.php
CHANGED
@@ -120,6 +120,9 @@ function wpmtst_readmore_polylang() {
|
|
120 |
pll_register_string( sprintf( __( 'View %s : Read more (testimonial)', 'strong-testimonials', false ),
|
121 |
$view['id'] ), $view_data['more_post_text'], $context );
|
122 |
|
|
|
|
|
|
|
123 |
pll_register_string( sprintf( __( 'View %s : Read more (page or post)', 'strong-testimonials', false ),
|
124 |
$view['id'] ), $view_data['more_page_text'], $context );
|
125 |
}
|
120 |
pll_register_string( sprintf( __( 'View %s : Read more (testimonial)', 'strong-testimonials', false ),
|
121 |
$view['id'] ), $view_data['more_post_text'], $context );
|
122 |
|
123 |
+
pll_register_string( sprintf( __( 'View %s : Read less (testimonial)', 'strong-testimonials', false ),
|
124 |
+
$view['id'] ), $view_data['less_post_text'], $context );
|
125 |
+
|
126 |
pll_register_string( sprintf( __( 'View %s : Read more (page or post)', 'strong-testimonials', false ),
|
127 |
$view['id'] ), $view_data['more_page_text'], $context );
|
128 |
}
|
includes/l10n-wpml.php
CHANGED
@@ -199,6 +199,11 @@ function wpmtst_readmore_wpml( $options ) {
|
|
199 |
$string = sprintf( __( 'View %s : Read more (testimonial)', 'strong-testimonials' ), $options['id'] );
|
200 |
do_action( 'wpml_register_single_string', $context, $string, $options['more_post_text'] );
|
201 |
|
|
|
|
|
|
|
|
|
|
|
202 |
$string = sprintf( __( 'View %s : Read more (page or post)', 'strong-testimonials' ), $options['id'] );
|
203 |
do_action( 'wpml_register_single_string', $context, $string, $options['more_page_text'] );
|
204 |
}
|
@@ -215,6 +220,7 @@ function wpmtst_update_view_wpml( $view ) {
|
|
215 |
array(
|
216 |
'id' => $view['id'],
|
217 |
'more_post_text' => $view['data']['more_post_text'],
|
|
|
218 |
'more_page_text' => $view['data']['more_page_text'],
|
219 |
)
|
220 |
);
|
199 |
$string = sprintf( __( 'View %s : Read more (testimonial)', 'strong-testimonials' ), $options['id'] );
|
200 |
do_action( 'wpml_register_single_string', $context, $string, $options['more_post_text'] );
|
201 |
|
202 |
+
/* Translators: %s is the View ID. */
|
203 |
+
$string = sprintf( __( 'View %s : Read less (testimonial)', 'strong-testimonials' ), $options['id'] );
|
204 |
+
do_action( 'wpml_register_single_string', $context, $string, $options['less_post_text'] );
|
205 |
+
|
206 |
+
/* Translators: %s is the View ID. */
|
207 |
$string = sprintf( __( 'View %s : Read more (page or post)', 'strong-testimonials' ), $options['id'] );
|
208 |
do_action( 'wpml_register_single_string', $context, $string, $options['more_page_text'] );
|
209 |
}
|
220 |
array(
|
221 |
'id' => $view['id'],
|
222 |
'more_post_text' => $view['data']['more_post_text'],
|
223 |
+
'less_post_text' => $view['data']['less_post_text'],
|
224 |
'more_page_text' => $view['data']['more_page_text'],
|
225 |
)
|
226 |
);
|
includes/scripts.php
CHANGED
@@ -48,7 +48,7 @@ function wpmtst_scripts() {
|
|
48 |
'script' => isset( $ajax['script'] ) ? $ajax['script'] : '',
|
49 |
'containerId' => isset( $ajax['container_id'] ) ? $ajax['container_id'] : '',
|
50 |
'addedNodeId' => isset( $ajax['addednode_id'] ) ? $ajax['addednode_id'] : '',
|
51 |
-
'debug' => defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG,
|
52 |
);
|
53 |
wp_localize_script( 'wpmtst-controller', 'strongControllerParms', $parms );
|
54 |
|
@@ -184,6 +184,20 @@ function wpmtst_scripts() {
|
|
184 |
$plugin_version,
|
185 |
true );
|
186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
}
|
188 |
add_action( 'wp_enqueue_scripts', 'wpmtst_scripts' );
|
189 |
|
@@ -205,6 +219,7 @@ function wpmtst_defer_scripts( $tag, $handle ) {
|
|
205 |
'jquery-actual',
|
206 |
'verge',
|
207 |
'wpmtst-slider',
|
|
|
208 |
);
|
209 |
|
210 |
if ( in_array( $handle, $scripts_to_defer ) ) {
|
48 |
'script' => isset( $ajax['script'] ) ? $ajax['script'] : '',
|
49 |
'containerId' => isset( $ajax['container_id'] ) ? $ajax['container_id'] : '',
|
50 |
'addedNodeId' => isset( $ajax['addednode_id'] ) ? $ajax['addednode_id'] : '',
|
51 |
+
'debug' => defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG && apply_filters( 'debug_strong_controller', true ),
|
52 |
);
|
53 |
wp_localize_script( 'wpmtst-controller', 'strongControllerParms', $parms );
|
54 |
|
184 |
$plugin_version,
|
185 |
true );
|
186 |
|
187 |
+
/**
|
188 |
+
* Read more in place
|
189 |
+
*/
|
190 |
+
wp_register_script( 'wpmtst-readmore',
|
191 |
+
WPMTST_PUBLIC_URL . "js/lib/readmore/readmore{$min}.js",
|
192 |
+
array(),
|
193 |
+
$plugin_version,
|
194 |
+
true );
|
195 |
+
|
196 |
+
wp_register_style( 'wpmtst-animate',
|
197 |
+
WPMTST_PUBLIC_URL . 'css/animate.min.css',
|
198 |
+
array(),
|
199 |
+
'' );
|
200 |
+
|
201 |
}
|
202 |
add_action( 'wp_enqueue_scripts', 'wpmtst_scripts' );
|
203 |
|
219 |
'jquery-actual',
|
220 |
'verge',
|
221 |
'wpmtst-slider',
|
222 |
+
'wpmtst-readmore',
|
223 |
);
|
224 |
|
225 |
if ( in_array( $handle, $scripts_to_defer ) ) {
|
public/css/animate.min.css
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@charset "UTF-8";
|
2 |
+
|
3 |
+
/*!
|
4 |
+
* animate.css -http://daneden.me/animate
|
5 |
+
* Version - 3.7.0
|
6 |
+
* Licensed under the MIT license - http://opensource.org/licenses/MIT
|
7 |
+
*
|
8 |
+
* Copyright (c) 2018 Daniel Eden
|
9 |
+
*/
|
10 |
+
|
11 |
+
@-webkit-keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;-webkit-transform-origin:center bottom;animation-name:bounce;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.headShake{-webkit-animation-name:headShake;-webkit-animation-timing-function:ease-in-out;animation-name:headShake;animation-timing-function:ease-in-out}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.swing{-webkit-animation-name:swing;-webkit-transform-origin:top center;animation-name:swing;transform-origin:top center}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;-webkit-transform-origin:center;animation-name:jello;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.heartBeat{-webkit-animation-duration:1.3s;-webkit-animation-name:heartBeat;-webkit-animation-timing-function:ease-in-out;animation-duration:1.3s;animation-name:heartBeat;animation-timing-function:ease-in-out}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.3,.3,.3);opacity:0;transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{-webkit-transform:scale3d(1.03,1.03,1.03);opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{-webkit-transform:scaleX(1);opacity:1;transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.3,.3,.3);opacity:0;transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{-webkit-transform:scale3d(1.03,1.03,1.03);opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{-webkit-transform:scaleX(1);opacity:1;transform:scaleX(1)}}.bounceIn{-webkit-animation-duration:.75s;-webkit-animation-name:bounceIn;animation-duration:.75s;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:translate3d(0,-3000px,0);opacity:0;transform:translate3d(0,-3000px,0)}60%{-webkit-transform:translate3d(0,25px,0);opacity:1;transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:translate3d(0,-3000px,0);opacity:0;transform:translate3d(0,-3000px,0)}60%{-webkit-transform:translate3d(0,25px,0);opacity:1;transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:translate3d(-3000px,0,0);opacity:0;transform:translate3d(-3000px,0,0)}60%{-webkit-transform:translate3d(25px,0,0);opacity:1;transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:translate3d(-3000px,0,0);opacity:0;transform:translate3d(-3000px,0,0)}60%{-webkit-transform:translate3d(25px,0,0);opacity:1;transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:translate3d(3000px,0,0);opacity:0;transform:translate3d(3000px,0,0)}60%{-webkit-transform:translate3d(-25px,0,0);opacity:1;transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:translate3d(3000px,0,0);opacity:0;transform:translate3d(3000px,0,0)}60%{-webkit-transform:translate3d(-25px,0,0);opacity:1;transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:translate3d(0,3000px,0);opacity:0;transform:translate3d(0,3000px,0)}60%{-webkit-transform:translate3d(0,-20px,0);opacity:1;transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:translate3d(0,3000px,0);opacity:0;transform:translate3d(0,3000px,0)}60%{-webkit-transform:translate3d(0,-20px,0);opacity:1;transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{-webkit-transform:scale3d(1.1,1.1,1.1);opacity:1;transform:scale3d(1.1,1.1,1.1)}to{-webkit-transform:scale3d(.3,.3,.3);opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{-webkit-transform:scale3d(1.1,1.1,1.1);opacity:1;transform:scale3d(1.1,1.1,1.1)}to{-webkit-transform:scale3d(.3,.3,.3);opacity:0;transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-duration:.75s;-webkit-animation-name:bounceOut;animation-duration:.75s;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{-webkit-transform:translate3d(0,-20px,0);opacity:1;transform:translate3d(0,-20px,0)}to{-webkit-transform:translate3d(0,2000px,0);opacity:0;transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{-webkit-transform:translate3d(0,-20px,0);opacity:1;transform:translate3d(0,-20px,0)}to{-webkit-transform:translate3d(0,2000px,0);opacity:0;transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{-webkit-transform:translate3d(20px,0,0);opacity:1;transform:translate3d(20px,0,0)}to{-webkit-transform:translate3d(-2000px,0,0);opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{-webkit-transform:translate3d(20px,0,0);opacity:1;transform:translate3d(20px,0,0)}to{-webkit-transform:translate3d(-2000px,0,0);opacity:0;transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{-webkit-transform:translate3d(-20px,0,0);opacity:1;transform:translate3d(-20px,0,0)}to{-webkit-transform:translate3d(2000px,0,0);opacity:0;transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{-webkit-transform:translate3d(-20px,0,0);opacity:1;transform:translate3d(-20px,0,0)}to{-webkit-transform:translate3d(2000px,0,0);opacity:0;transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{-webkit-transform:translate3d(0,20px,0);opacity:1;transform:translate3d(0,20px,0)}to{-webkit-transform:translate3d(0,-2000px,0);opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{-webkit-transform:translate3d(0,20px,0);opacity:1;transform:translate3d(0,20px,0)}to{-webkit-transform:translate3d(0,-2000px,0);opacity:0;transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{-webkit-transform:translate3d(0,-100%,0);opacity:0;transform:translate3d(0,-100%,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}@keyframes fadeInDown{0%{-webkit-transform:translate3d(0,-100%,0);opacity:0;transform:translate3d(0,-100%,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{-webkit-transform:translate3d(0,-2000px,0);opacity:0;transform:translate3d(0,-2000px,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}@keyframes fadeInDownBig{0%{-webkit-transform:translate3d(0,-2000px,0);opacity:0;transform:translate3d(0,-2000px,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{-webkit-transform:translate3d(-100%,0,0);opacity:0;transform:translate3d(-100%,0,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}@keyframes fadeInLeft{0%{-webkit-transform:translate3d(-100%,0,0);opacity:0;transform:translate3d(-100%,0,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{-webkit-transform:translate3d(-2000px,0,0);opacity:0;transform:translate3d(-2000px,0,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{-webkit-transform:translate3d(-2000px,0,0);opacity:0;transform:translate3d(-2000px,0,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{-webkit-transform:translate3d(100%,0,0);opacity:0;transform:translate3d(100%,0,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}@keyframes fadeInRight{0%{-webkit-transform:translate3d(100%,0,0);opacity:0;transform:translate3d(100%,0,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{-webkit-transform:translate3d(2000px,0,0);opacity:0;transform:translate3d(2000px,0,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}@keyframes fadeInRightBig{0%{-webkit-transform:translate3d(2000px,0,0);opacity:0;transform:translate3d(2000px,0,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{-webkit-transform:translate3d(0,100%,0);opacity:0;transform:translate3d(0,100%,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}@keyframes fadeInUp{0%{-webkit-transform:translate3d(0,100%,0);opacity:0;transform:translate3d(0,100%,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{-webkit-transform:translate3d(0,2000px,0);opacity:0;transform:translate3d(0,2000px,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}@keyframes fadeInUpBig{0%{-webkit-transform:translate3d(0,2000px,0);opacity:0;transform:translate3d(0,2000px,0)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{-webkit-transform:translate3d(0,100%,0);opacity:0;transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{-webkit-transform:translate3d(0,100%,0);opacity:0;transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{-webkit-transform:translate3d(0,2000px,0);opacity:0;transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{-webkit-transform:translate3d(0,2000px,0);opacity:0;transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0);opacity:0;transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0);opacity:0;transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{-webkit-transform:translate3d(-2000px,0,0);opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{-webkit-transform:translate3d(-2000px,0,0);opacity:0;transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0);opacity:0;transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0);opacity:0;transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{-webkit-transform:translate3d(2000px,0,0);opacity:0;transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{-webkit-transform:translate3d(2000px,0,0);opacity:0;transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{-webkit-transform:translate3d(0,-100%,0);opacity:0;transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{-webkit-transform:translate3d(0,-100%,0);opacity:0;transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{-webkit-transform:translate3d(0,-2000px,0);opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{-webkit-transform:translate3d(0,-2000px,0);opacity:0;transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-animation-timing-function:ease-out;-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);animation-timing-function:ease-out;transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn)}40%{-webkit-animation-timing-function:ease-out;-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);animation-timing-function:ease-out;transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg)}50%{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);animation-timing-function:ease-in;transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg)}80%{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);animation-timing-function:ease-in;transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg)}to{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);animation-timing-function:ease-in;transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg)}}@keyframes flip{0%{-webkit-animation-timing-function:ease-out;-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);animation-timing-function:ease-out;transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn)}40%{-webkit-animation-timing-function:ease-out;-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);animation-timing-function:ease-out;transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg)}50%{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);animation-timing-function:ease-in;transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg)}80%{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);animation-timing-function:ease-in;transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg)}to{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);animation-timing-function:ease-in;transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg)}}.animated.flip{-webkit-animation-name:flip;-webkit-backface-visibility:visible;animation-name:flip;backface-visibility:visible}@-webkit-keyframes flipInX{0%{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0;transform:perspective(400px) rotateX(90deg)}40%{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in;transform:perspective(400px) rotateX(-20deg)}60%{-webkit-transform:perspective(400px) rotateX(10deg);opacity:1;transform:perspective(400px) rotateX(10deg)}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0;transform:perspective(400px) rotateX(90deg)}40%{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in;transform:perspective(400px) rotateX(-20deg)}60%{-webkit-transform:perspective(400px) rotateX(10deg);opacity:1;transform:perspective(400px) rotateX(10deg)}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-animation-name:flipInX;-webkit-backface-visibility:visible!important;animation-name:flipInX;backface-visibility:visible!important}@-webkit-keyframes flipInY{0%{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) rotateY(90deg);animation-timing-function:ease-in;opacity:0;transform:perspective(400px) rotateY(90deg)}40%{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) rotateY(-20deg);animation-timing-function:ease-in;transform:perspective(400px) rotateY(-20deg)}60%{-webkit-transform:perspective(400px) rotateY(10deg);opacity:1;transform:perspective(400px) rotateY(10deg)}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) rotateY(90deg);animation-timing-function:ease-in;opacity:0;transform:perspective(400px) rotateY(90deg)}40%{-webkit-animation-timing-function:ease-in;-webkit-transform:perspective(400px) rotateY(-20deg);animation-timing-function:ease-in;transform:perspective(400px) rotateY(-20deg)}60%{-webkit-transform:perspective(400px) rotateY(10deg);opacity:1;transform:perspective(400px) rotateY(10deg)}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-animation-name:flipInY;-webkit-backface-visibility:visible!important;animation-name:flipInY;backface-visibility:visible!important}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);opacity:1;transform:perspective(400px) rotateX(-20deg)}to{-webkit-transform:perspective(400px) rotateX(90deg);opacity:0;transform:perspective(400px) rotateX(90deg)}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);opacity:1;transform:perspective(400px) rotateX(-20deg)}to{-webkit-transform:perspective(400px) rotateX(90deg);opacity:0;transform:perspective(400px) rotateX(90deg)}}.flipOutX{-webkit-animation-duration:.75s;-webkit-animation-name:flipOutX;-webkit-backface-visibility:visible!important;animation-duration:.75s;animation-name:flipOutX;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);opacity:1;transform:perspective(400px) rotateY(-15deg)}to{-webkit-transform:perspective(400px) rotateY(90deg);opacity:0;transform:perspective(400px) rotateY(90deg)}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);opacity:1;transform:perspective(400px) rotateY(-15deg)}to{-webkit-transform:perspective(400px) rotateY(90deg);opacity:0;transform:perspective(400px) rotateY(90deg)}}.flipOutY{-webkit-animation-duration:.75s;-webkit-animation-name:flipOutY;-webkit-backface-visibility:visible!important;animation-duration:.75s;animation-name:flipOutY;backface-visibility:visible!important}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);opacity:0;transform:translate3d(100%,0,0) skewX(-30deg)}60%{-webkit-transform:skewX(20deg);opacity:1;transform:skewX(20deg)}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);opacity:0;transform:translate3d(100%,0,0) skewX(-30deg)}60%{-webkit-transform:skewX(20deg);opacity:1;transform:skewX(20deg)}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-name:lightSpeedIn;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);opacity:0;transform:translate3d(100%,0,0) skewX(30deg)}}@keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);opacity:0;transform:translate3d(100%,0,0) skewX(30deg)}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-name:lightSpeedOut;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);-webkit-transform-origin:center;opacity:0;transform:rotate(-200deg);transform-origin:center}to{-webkit-transform:translateZ(0);-webkit-transform-origin:center;opacity:1;transform:translateZ(0);transform-origin:center}}@keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);-webkit-transform-origin:center;opacity:0;transform:rotate(-200deg);transform-origin:center}to{-webkit-transform:translateZ(0);-webkit-transform-origin:center;opacity:1;transform:translateZ(0);transform-origin:center}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);-webkit-transform-origin:left bottom;opacity:0;transform:rotate(-45deg);transform-origin:left bottom}to{-webkit-transform:translateZ(0);-webkit-transform-origin:left bottom;opacity:1;transform:translateZ(0);transform-origin:left bottom}}@keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);-webkit-transform-origin:left bottom;opacity:0;transform:rotate(-45deg);transform-origin:left bottom}to{-webkit-transform:translateZ(0);-webkit-transform-origin:left bottom;opacity:1;transform:translateZ(0);transform-origin:left bottom}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);-webkit-transform-origin:right bottom;opacity:0;transform:rotate(45deg);transform-origin:right bottom}to{-webkit-transform:translateZ(0);-webkit-transform-origin:right bottom;opacity:1;transform:translateZ(0);transform-origin:right bottom}}@keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);-webkit-transform-origin:right bottom;opacity:0;transform:rotate(45deg);transform-origin:right bottom}to{-webkit-transform:translateZ(0);-webkit-transform-origin:right bottom;opacity:1;transform:translateZ(0);transform-origin:right bottom}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);-webkit-transform-origin:left bottom;opacity:0;transform:rotate(45deg);transform-origin:left bottom}to{-webkit-transform:translateZ(0);-webkit-transform-origin:left bottom;opacity:1;transform:translateZ(0);transform-origin:left bottom}}@keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);-webkit-transform-origin:left bottom;opacity:0;transform:rotate(45deg);transform-origin:left bottom}to{-webkit-transform:translateZ(0);-webkit-transform-origin:left bottom;opacity:1;transform:translateZ(0);transform-origin:left bottom}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);-webkit-transform-origin:right bottom;opacity:0;transform:rotate(-90deg);transform-origin:right bottom}to{-webkit-transform:translateZ(0);-webkit-transform-origin:right bottom;opacity:1;transform:translateZ(0);transform-origin:right bottom}}@keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);-webkit-transform-origin:right bottom;opacity:0;transform:rotate(-90deg);transform-origin:right bottom}to{-webkit-transform:translateZ(0);-webkit-transform-origin:right bottom;opacity:1;transform:translateZ(0);transform-origin:right bottom}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;opacity:1;transform-origin:center}to{-webkit-transform:rotate(200deg);-webkit-transform-origin:center;opacity:0;transform:rotate(200deg);transform-origin:center}}@keyframes rotateOut{0%{-webkit-transform-origin:center;opacity:1;transform-origin:center}to{-webkit-transform:rotate(200deg);-webkit-transform-origin:center;opacity:0;transform:rotate(200deg);transform-origin:center}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;opacity:1;transform-origin:left bottom}to{-webkit-transform:rotate(45deg);-webkit-transform-origin:left bottom;opacity:0;transform:rotate(45deg);transform-origin:left bottom}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;opacity:1;transform-origin:left bottom}to{-webkit-transform:rotate(45deg);-webkit-transform-origin:left bottom;opacity:0;transform:rotate(45deg);transform-origin:left bottom}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;opacity:1;transform-origin:right bottom}to{-webkit-transform:rotate(-45deg);-webkit-transform-origin:right bottom;opacity:0;transform:rotate(-45deg);transform-origin:right bottom}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;opacity:1;transform-origin:right bottom}to{-webkit-transform:rotate(-45deg);-webkit-transform-origin:right bottom;opacity:0;transform:rotate(-45deg);transform-origin:right bottom}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;opacity:1;transform-origin:left bottom}to{-webkit-transform:rotate(-45deg);-webkit-transform-origin:left bottom;opacity:0;transform:rotate(-45deg);transform-origin:left bottom}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;opacity:1;transform-origin:left bottom}to{-webkit-transform:rotate(-45deg);-webkit-transform-origin:left bottom;opacity:0;transform:rotate(-45deg);transform-origin:left bottom}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;opacity:1;transform-origin:right bottom}to{-webkit-transform:rotate(90deg);-webkit-transform-origin:right bottom;opacity:0;transform:rotate(90deg);transform-origin:right bottom}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;opacity:1;transform-origin:right bottom}to{-webkit-transform:rotate(90deg);-webkit-transform-origin:right bottom;opacity:0;transform:rotate(90deg);transform-origin:right bottom}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;-webkit-transform-origin:top left;animation-timing-function:ease-in-out;transform-origin:top left}20%,60%{-webkit-animation-timing-function:ease-in-out;-webkit-transform:rotate(80deg);-webkit-transform-origin:top left;animation-timing-function:ease-in-out;transform:rotate(80deg);transform-origin:top left}40%,80%{-webkit-animation-timing-function:ease-in-out;-webkit-transform:rotate(60deg);-webkit-transform-origin:top left;animation-timing-function:ease-in-out;opacity:1;transform:rotate(60deg);transform-origin:top left}to{-webkit-transform:translate3d(0,700px,0);opacity:0;transform:translate3d(0,700px,0)}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;-webkit-transform-origin:top left;animation-timing-function:ease-in-out;transform-origin:top left}20%,60%{-webkit-animation-timing-function:ease-in-out;-webkit-transform:rotate(80deg);-webkit-transform-origin:top left;animation-timing-function:ease-in-out;transform:rotate(80deg);transform-origin:top left}40%,80%{-webkit-animation-timing-function:ease-in-out;-webkit-transform:rotate(60deg);-webkit-transform-origin:top left;animation-timing-function:ease-in-out;opacity:1;transform:rotate(60deg);transform-origin:top left}to{-webkit-transform:translate3d(0,700px,0);opacity:0;transform:translate3d(0,700px,0)}}.hinge{-webkit-animation-duration:2s;-webkit-animation-name:hinge;animation-duration:2s;animation-name:hinge}@-webkit-keyframes jackInTheBox{0%{-webkit-transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;opacity:0;transform:scale(.1) rotate(30deg);transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{-webkit-transform:scale(1);opacity:1;transform:scale(1)}}@keyframes jackInTheBox{0%{-webkit-transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;opacity:0;transform:scale(.1) rotate(30deg);transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{-webkit-transform:scale(1);opacity:1;transform:scale(1)}}.jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);opacity:0;transform:translate3d(-100%,0,0) rotate(-120deg)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}@keyframes rollIn{0%{-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);opacity:0;transform:translate3d(-100%,0,0) rotate(-120deg)}to{-webkit-transform:translateZ(0);opacity:1;transform:translateZ(0)}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) rotate(120deg);opacity:0;transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) rotate(120deg);opacity:0;transform:translate3d(100%,0,0) rotate(120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{-webkit-transform:scale3d(.3,.3,.3);opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{-webkit-transform:scale3d(.3,.3,.3);opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0)}60%{-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0)}}@keyframes zoomInDown{0%{-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0)}60%{-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:0;transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0)}60%{-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:1;transform:scale3d(.475,.475,.475) translate3d(10px,0,0)}}@keyframes zoomInLeft{0%{-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:0;transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0)}60%{-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:1;transform:scale3d(.475,.475,.475) translate3d(10px,0,0)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:0;transform:scale3d(.1,.1,.1) translate3d(1000px,0,0)}60%{-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:1;transform:scale3d(.475,.475,.475) translate3d(-10px,0,0)}}@keyframes zoomInRight{0%{-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:0;transform:scale3d(.1,.1,.1) translate3d(1000px,0,0)}60%{-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:1;transform:scale3d(.475,.475,.475) translate3d(-10px,0,0)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,1000px,0)}60%{-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0)}}@keyframes zoomInUp{0%{-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,1000px,0)}60%{-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{-webkit-transform:scale3d(.3,.3,.3);opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{-webkit-transform:scale3d(.3,.3,.3);opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0)}to{-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform-origin:center bottom}}@keyframes zoomOutDown{40%{-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0)}to{-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform-origin:center bottom}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);opacity:1;transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{-webkit-transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;opacity:0;transform:scale(.1) translate3d(-2000px,0,0);transform-origin:left center}}@keyframes zoomOutLeft{40%{-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);opacity:1;transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{-webkit-transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;opacity:0;transform:scale(.1) translate3d(-2000px,0,0);transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);opacity:1;transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{-webkit-transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;opacity:0;transform:scale(.1) translate3d(2000px,0,0);transform-origin:right center}}@keyframes zoomOutRight{40%{-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);opacity:1;transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{-webkit-transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;opacity:0;transform:scale(.1) translate3d(2000px,0,0);transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0)}to{-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform-origin:center bottom}}@keyframes zoomOutUp{40%{-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0)}to{-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform-origin:center bottom}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:hidden}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:hidden}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:hidden}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:hidden}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:hidden}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:hidden}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:hidden}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:hidden}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.animated{-webkit-animation-duration:1s;-webkit-animation-fill-mode:both;animation-duration:1s;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.delay-1s{-webkit-animation-delay:1s;animation-delay:1s}.animated.delay-2s{-webkit-animation-delay:2s;animation-delay:2s}.animated.delay-3s{-webkit-animation-delay:3s;animation-delay:3s}.animated.delay-4s{-webkit-animation-delay:4s;animation-delay:4s}.animated.delay-5s{-webkit-animation-delay:5s;animation-delay:5s}.animated.fast{-webkit-animation-duration:.8s;animation-duration:.8s}.animated.faster{-webkit-animation-duration:.5s;animation-duration:.5s}.animated.slow{-webkit-animation-duration:2s;animation-duration:2s}.animated.slower{-webkit-animation-duration:3s;animation-duration:3s}@media (prefers-reduced-motion){.animated{-webkit-animation:unset!important;-webkit-transition:none!important;animation:unset!important;transition:none!important}}
|
public/css/custom.css
DELETED
@@ -1,5 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Strong Testimonials custom stylesheet
|
3 |
-
*
|
4 |
-
* Just a placeholder to allow use of wp_add_inline_style()
|
5 |
-
*/
|
|
|
|
|
|
|
|
|
|
public/js/controller.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
/**
|
2 |
* Component Controller
|
3 |
*
|
4 |
-
* Version 1.
|
5 |
* For Strong Testimonials version 2.31
|
6 |
*
|
7 |
* @namespace window.strongControllerParms
|
@@ -125,6 +125,17 @@ var strongController = {
|
|
125 |
this.iframes = jQuery('iframe');
|
126 |
},
|
127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
/**
|
129 |
* Create observer that reacts to nodes added or removed.
|
130 |
*
|
@@ -260,6 +271,7 @@ var strongController = {
|
|
260 |
strongController.initLayouts();
|
261 |
strongController.initForm();
|
262 |
strongController.initIframes();
|
|
|
263 |
},
|
264 |
|
265 |
/**
|
1 |
/**
|
2 |
* Component Controller
|
3 |
*
|
4 |
+
* Version 1.2
|
5 |
* For Strong Testimonials version 2.31
|
6 |
*
|
7 |
* @namespace window.strongControllerParms
|
125 |
this.iframes = jQuery('iframe');
|
126 |
},
|
127 |
|
128 |
+
/**
|
129 |
+
* Listen for custom events from other scripts.
|
130 |
+
*/
|
131 |
+
customEvents: function () {
|
132 |
+
addEventListener( 'toggleFullContent', function (event) {
|
133 |
+
if (strongController.grids.length) {
|
134 |
+
strongController.grids.masonry();
|
135 |
+
}
|
136 |
+
});
|
137 |
+
},
|
138 |
+
|
139 |
/**
|
140 |
* Create observer that reacts to nodes added or removed.
|
141 |
*
|
271 |
strongController.initLayouts();
|
272 |
strongController.initForm();
|
273 |
strongController.initIframes();
|
274 |
+
strongController.customEvents();
|
275 |
},
|
276 |
|
277 |
/**
|
public/js/controller.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
"use strict";var debugit=false;var strongController={grids:{},iframes:{},defaults:{initializeOn:"windowLoad",method:"",universalTimer:500,observerTimer:500,containerId:"page",addedNodeId:"content",event:"",script:"",debug:false},config:{},setup:function(settings){settings.universalTimer=parseInt(settings.universalTimer);settings.observerTimer=parseInt(settings.observerTimer);settings.debug=!!settings.debug;debugit=settings.debug;this.config=jQuery.extend({},this.defaults,settings)},mutationObserver:window.MutationObserver||window.WebKitMutationObserver,eventListenerSupported:window.addEventListener,checkInit:function(){return jQuery('.strong-view[data-state="idle"]').length},initSliders:function(){var sliders=jQuery('.strong-view.slider-container[data-state="idle"]');if(debugit)console.log("sliders found:",sliders.length);if(sliders.length){sliders.each(function(){jQuery(this).strongSlider()})}},initPagers:function(){var pagers=jQuery('.strong-pager[data-state="idle"]');if(debugit)console.log("pagers found:",pagers.length);if(pagers.length){pagers.each(function(){jQuery(this).strongPager()})}},initLayouts:function(){this.grids=jQuery('.strong-view[data-state="idle"] .strong-masonry');if(debugit)console.log("Masonry found:",this.grids.length);if(this.grids.length){this.grids.prepend('<div class="grid-sizer"></div><div class="gutter-sizer"></div>');this.grids.imagesLoaded(function(){strongController.grids.masonry({columnWidth:".grid-sizer",gutter:".gutter-sizer",itemSelector:".testimonial",percentPosition:true});strongController.grids.closest(".strong-view").attr("data-state","init")})}},initForm:function(){var forms=jQuery('.strong-form[data-state="idle"]');var messages=jQuery(".testimonial-success");if(debugit)console.log("forms found:",forms.length);if(debugit)console.log("messages found:",messages.length);if(forms.length||messages.length){strongValidation.init()}},initIframes:function(){this.iframes=jQuery("iframe")},observer:function(obj,callback){if(this.mutationObserver){var obs=new this.mutationObserver(function(mutations){for(var i=0;i<mutations.length;i++){if(mutations[i].addedNodes.length){if(debugit)console.log("mutation observed",mutations);for(var j=0;j<mutations[i].addedNodes.length;j++){if(mutations[i].addedNodes[j].id===strongController.config.containerId){if(debugit)console.log("+",strongController.config.containerId);callback();return}}}}});obs.observe(obj,{childList:true,subtree:true})}else if(this.eventListenerSupported){obj.addEventListener("DOMNodeInserted",function(e){if(e.currentTarget.id===obj.id){if(debugit)console.log("DOMNodeInserted:",e.currentTarget.id);callback()}},false)}},intervalId:null,timeoutId:null,newInterval:function(){strongController.intervalId=setInterval(function tick(){if(debugit)console.log("tick > checkInit",strongController.checkInit());if(strongController.checkInit()){strongController.start()}},strongController.config.universalTimer)},newTimeout:function(){strongController.timeoutId=setTimeout(function tick(){if(debugit)console.log("tick > checkInit",strongController.checkInit());if(strongController.checkInit()){strongController.start()}},strongController.config.observerTimer)},init:function(){if(debugit)console.log("strongController init");var settings={};if(typeof window.strongControllerParms!=="undefined"){settings=window.strongControllerParms}else{if(debugit)console.log("settings not found")}this.setup(settings);if(debugit)console.log("config",this.config);if("documentReady"===this.config.initializeOn){jQuery(document).ready(function(){if(debugit)console.log("document ready");strongController.start();strongController.listen()})}else{jQuery(window).on("load",function(){if(debugit)console.log("window load");strongController.start();strongController.listen()})}jQuery(window).on("load",function(){strongController.listenForIframeReady()})},start:function(){if(debugit)console.log("start");strongController.initSliders();strongController.initPagers();strongController.initLayouts();strongController.initForm();strongController.initIframes()},listen:function(){if(debugit)console.log("listen");switch(this.config.method){case"universal":this.newInterval();break;case"observer":this.observer(document.getElementById(this.config.containerId),this.newTimeout);break;case"event":document.addEventListener(this.config.event,this.start);break;case"script":switch(this.config.script){case"barba":if(typeof Barba==="object"&&Barba.hasOwnProperty("Dispatcher")){Barba.Dispatcher.on("transitionCompleted",this.start)}break;default:}break;default:}},listenForIframeReady:function(){if(debugit)console.log("listenForIframeReady");if(strongController.iframes.length&&strongController.grids.length){strongController.iframes.ready(function(){setTimeout(function(){strongController.grids.masonry();if(debugit)console.log("listenForIframeReady","timeout 1")},1e3);setTimeout(function(){strongController.grids.masonry();if(debugit)console.log("listenForIframeReady","timeout 2")},2e3)})}else{if(debugit)console.log("listenForIframeReady","no iframes or Masonry found")}}};strongController.init();
|
1 |
+
"use strict";var debugit=false;var strongController={grids:{},iframes:{},defaults:{initializeOn:"windowLoad",method:"",universalTimer:500,observerTimer:500,containerId:"page",addedNodeId:"content",event:"",script:"",debug:false},config:{},setup:function(settings){settings.universalTimer=parseInt(settings.universalTimer);settings.observerTimer=parseInt(settings.observerTimer);settings.debug=!!settings.debug;debugit=settings.debug;this.config=jQuery.extend({},this.defaults,settings)},mutationObserver:window.MutationObserver||window.WebKitMutationObserver,eventListenerSupported:window.addEventListener,checkInit:function(){return jQuery('.strong-view[data-state="idle"]').length},initSliders:function(){var sliders=jQuery('.strong-view.slider-container[data-state="idle"]');if(debugit)console.log("sliders found:",sliders.length);if(sliders.length){sliders.each(function(){jQuery(this).strongSlider()})}},initPagers:function(){var pagers=jQuery('.strong-pager[data-state="idle"]');if(debugit)console.log("pagers found:",pagers.length);if(pagers.length){pagers.each(function(){jQuery(this).strongPager()})}},initLayouts:function(){this.grids=jQuery('.strong-view[data-state="idle"] .strong-masonry');if(debugit)console.log("Masonry found:",this.grids.length);if(this.grids.length){this.grids.prepend('<div class="grid-sizer"></div><div class="gutter-sizer"></div>');this.grids.imagesLoaded(function(){strongController.grids.masonry({columnWidth:".grid-sizer",gutter:".gutter-sizer",itemSelector:".testimonial",percentPosition:true});strongController.grids.closest(".strong-view").attr("data-state","init")})}},initForm:function(){var forms=jQuery('.strong-form[data-state="idle"]');var messages=jQuery(".testimonial-success");if(debugit)console.log("forms found:",forms.length);if(debugit)console.log("messages found:",messages.length);if(forms.length||messages.length){strongValidation.init()}},initIframes:function(){this.iframes=jQuery("iframe")},customEvents:function(){addEventListener("toggleFullContent",function(event){if(strongController.grids.length){strongController.grids.masonry()}})},observer:function(obj,callback){if(this.mutationObserver){var obs=new this.mutationObserver(function(mutations){for(var i=0;i<mutations.length;i++){if(mutations[i].addedNodes.length){if(debugit)console.log("mutation observed",mutations);for(var j=0;j<mutations[i].addedNodes.length;j++){if(mutations[i].addedNodes[j].id===strongController.config.containerId){if(debugit)console.log("+",strongController.config.containerId);callback();return}}}}});obs.observe(obj,{childList:true,subtree:true})}else if(this.eventListenerSupported){obj.addEventListener("DOMNodeInserted",function(e){if(e.currentTarget.id===obj.id){if(debugit)console.log("DOMNodeInserted:",e.currentTarget.id);callback()}},false)}},intervalId:null,timeoutId:null,newInterval:function(){strongController.intervalId=setInterval(function tick(){if(debugit)console.log("tick > checkInit",strongController.checkInit());if(strongController.checkInit()){strongController.start()}},strongController.config.universalTimer)},newTimeout:function(){strongController.timeoutId=setTimeout(function tick(){if(debugit)console.log("tick > checkInit",strongController.checkInit());if(strongController.checkInit()){strongController.start()}},strongController.config.observerTimer)},init:function(){if(debugit)console.log("strongController init");var settings={};if(typeof window.strongControllerParms!=="undefined"){settings=window.strongControllerParms}else{if(debugit)console.log("settings not found")}this.setup(settings);if(debugit)console.log("config",this.config);if("documentReady"===this.config.initializeOn){jQuery(document).ready(function(){if(debugit)console.log("document ready");strongController.start();strongController.listen()})}else{jQuery(window).on("load",function(){if(debugit)console.log("window load");strongController.start();strongController.listen()})}jQuery(window).on("load",function(){strongController.listenForIframeReady()})},start:function(){if(debugit)console.log("start");strongController.initSliders();strongController.initPagers();strongController.initLayouts();strongController.initForm();strongController.initIframes();strongController.customEvents()},listen:function(){if(debugit)console.log("listen");switch(this.config.method){case"universal":this.newInterval();break;case"observer":this.observer(document.getElementById(this.config.containerId),this.newTimeout);break;case"event":document.addEventListener(this.config.event,this.start);break;case"script":switch(this.config.script){case"barba":if(typeof Barba==="object"&&Barba.hasOwnProperty("Dispatcher")){Barba.Dispatcher.on("transitionCompleted",this.start)}break;default:}break;default:}},listenForIframeReady:function(){if(debugit)console.log("listenForIframeReady");if(strongController.iframes.length&&strongController.grids.length){strongController.iframes.ready(function(){setTimeout(function(){strongController.grids.masonry();if(debugit)console.log("listenForIframeReady","timeout 1")},1e3);setTimeout(function(){strongController.grids.masonry();if(debugit)console.log("listenForIframeReady","timeout 2")},2e3)})}else{if(debugit)console.log("listenForIframeReady","no iframes or Masonry found")}}};strongController.init();
|
public/js/lib/form-validation/form-validation.js
CHANGED
@@ -1,7 +1,5 @@
|
|
1 |
/**
|
2 |
* Submission form validation
|
3 |
-
*
|
4 |
-
* @package Strong_Testimonials
|
5 |
*/
|
6 |
|
7 |
var strongValidation = {
|
1 |
/**
|
2 |
* Submission form validation
|
|
|
|
|
3 |
*/
|
4 |
|
5 |
var strongValidation = {
|
public/js/lib/readmore/readmore.js
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* readmore.js
|
3 |
+
*
|
4 |
+
* @param toggleButtonText
|
5 |
+
* @param toggleButtonText.dataset
|
6 |
+
* @param toggleButtonText.dataset.moreText
|
7 |
+
* @param toggleButtonText.dataset.lessText
|
8 |
+
*/
|
9 |
+
|
10 |
+
(function () {
|
11 |
+
|
12 |
+
/*
|
13 |
+
* forEach method
|
14 |
+
* thanks https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/
|
15 |
+
*/
|
16 |
+
var forEach = function (array, callback, scope) {
|
17 |
+
for (var i = 0; i < array.length; i++) {
|
18 |
+
callback.call(scope, i, array[i]); // passes back stuff we need
|
19 |
+
}
|
20 |
+
};
|
21 |
+
|
22 |
+
/*
|
23 |
+
* Do stuff at the end of animation.
|
24 |
+
*/
|
25 |
+
var onAnimationEnd = function (event) {
|
26 |
+
if (event.type === 'animationend' && event.animationName === 'fadeOutUp') {
|
27 |
+
// Add `hidden` attribute
|
28 |
+
event.target.setAttribute('hidden', 'true');
|
29 |
+
|
30 |
+
// Show read-more link
|
31 |
+
event.target.parentElement.querySelector('.readmore-toggle').style.display = 'inline';
|
32 |
+
|
33 |
+
// Show ellipsis
|
34 |
+
var ellipsis = event.target.parentElement.querySelector('.ellipsis');
|
35 |
+
if (ellipsis) {
|
36 |
+
ellipsis.style.display = 'inline';
|
37 |
+
}
|
38 |
+
|
39 |
+
fireCustomEvent();
|
40 |
+
}
|
41 |
+
};
|
42 |
+
|
43 |
+
var fireCustomEvent = function () {
|
44 |
+
window.dispatchEvent(new Event('toggleFullContent'));
|
45 |
+
};
|
46 |
+
|
47 |
+
// Only in modern browsers.
|
48 |
+
if ('querySelector' in document && 'addEventListener' in window) {
|
49 |
+
|
50 |
+
// Listen for an animation.
|
51 |
+
var fullTextWrappers = document.querySelectorAll('.readmore-content');
|
52 |
+
|
53 |
+
forEach(fullTextWrappers, function (index, fullTextWrapper) {
|
54 |
+
fullTextWrapper.addEventListener('transitionend', onAnimationEnd);
|
55 |
+
fullTextWrapper.addEventListener('animationend', onAnimationEnd);
|
56 |
+
});
|
57 |
+
|
58 |
+
// Listen to each button.
|
59 |
+
var toggleButtons = document.querySelectorAll('.readmore-toggle');
|
60 |
+
|
61 |
+
forEach(toggleButtons, function (index, toggleButton) {
|
62 |
+
|
63 |
+
toggleButton.addEventListener('click', function () {
|
64 |
+
|
65 |
+
var fullTextWrapper = this.parentElement.querySelector('.readmore-content');
|
66 |
+
if (!fullTextWrapper) {
|
67 |
+
return;
|
68 |
+
}
|
69 |
+
|
70 |
+
var ellipsis = this.parentElement.querySelector('.ellipsis');
|
71 |
+
var toggleButtonText = this.querySelector('.readmore-text');
|
72 |
+
|
73 |
+
// change attributes and text if full text is shown/hidden
|
74 |
+
if (fullTextWrapper.hasAttribute('hidden')) {
|
75 |
+
|
76 |
+
// show
|
77 |
+
|
78 |
+
// 1. remove hidden attribute so we can animate it
|
79 |
+
fullTextWrapper.removeAttribute('hidden');
|
80 |
+
|
81 |
+
// 2. update toggle link
|
82 |
+
// change text (may be blank)
|
83 |
+
toggleButtonText.innerText = toggleButtonText.dataset.lessText;
|
84 |
+
toggleButton.setAttribute('aria-expanded', true);
|
85 |
+
if( ellipsis ) {
|
86 |
+
ellipsis.style.display = 'none';
|
87 |
+
}
|
88 |
+
|
89 |
+
// 3. animate it
|
90 |
+
fullTextWrapper.classList.add('fadeInDown');
|
91 |
+
fullTextWrapper.classList.remove('fadeOutUp');
|
92 |
+
fullTextWrapper.classList.remove('faster');
|
93 |
+
|
94 |
+
fireCustomEvent();
|
95 |
+
|
96 |
+
} else {
|
97 |
+
|
98 |
+
// hide
|
99 |
+
|
100 |
+
// 1. update toggle link
|
101 |
+
// hide link during transition
|
102 |
+
toggleButton.style.display = 'none'
|
103 |
+
toggleButton.setAttribute('aria-expanded', false);
|
104 |
+
// change link text (may be blank)
|
105 |
+
toggleButtonText.innerText = toggleButtonText.dataset.moreText;
|
106 |
+
|
107 |
+
// 2. animate it
|
108 |
+
fullTextWrapper.classList.add('fadeOutUp');
|
109 |
+
fullTextWrapper.classList.add('faster');
|
110 |
+
fullTextWrapper.classList.remove('fadeInDown');
|
111 |
+
|
112 |
+
// 3. do stuff at end of animation (the event listener above)
|
113 |
+
|
114 |
+
}
|
115 |
+
|
116 |
+
});
|
117 |
+
|
118 |
+
});
|
119 |
+
|
120 |
+
}
|
121 |
+
|
122 |
+
})();
|
public/js/lib/readmore/readmore.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
(function(){var forEach=function(array,callback,scope){for(var i=0;i<array.length;i++){callback.call(scope,i,array[i])}};var onAnimationEnd=function(event){if(event.type==="animationend"&&event.animationName==="fadeOutUp"){event.target.setAttribute("hidden","true");event.target.parentElement.querySelector(".readmore-toggle").style.display="inline";var ellipsis=event.target.parentElement.querySelector(".ellipsis");if(ellipsis){ellipsis.style.display="inline"}fireCustomEvent()}};var fireCustomEvent=function(){window.dispatchEvent(new Event("toggleFullContent"))};if("querySelector"in document&&"addEventListener"in window){var fullTextWrappers=document.querySelectorAll(".readmore-content");forEach(fullTextWrappers,function(index,fullTextWrapper){fullTextWrapper.addEventListener("transitionend",onAnimationEnd);fullTextWrapper.addEventListener("animationend",onAnimationEnd)});var toggleButtons=document.querySelectorAll(".readmore-toggle");forEach(toggleButtons,function(index,toggleButton){toggleButton.addEventListener("click",function(){var fullTextWrapper=this.parentElement.querySelector(".readmore-content");if(!fullTextWrapper){return}var ellipsis=this.parentElement.querySelector(".ellipsis");var toggleButtonText=this.querySelector(".readmore-text");if(fullTextWrapper.hasAttribute("hidden")){fullTextWrapper.removeAttribute("hidden");toggleButtonText.innerText=toggleButtonText.dataset.lessText;toggleButton.setAttribute("aria-expanded",true);if(ellipsis){ellipsis.style.display="none"}fullTextWrapper.classList.add("fadeInDown");fullTextWrapper.classList.remove("fadeOutUp");fullTextWrapper.classList.remove("faster");fireCustomEvent()}else{toggleButton.style.display="none";toggleButton.setAttribute("aria-expanded",false);toggleButtonText.innerText=toggleButtonText.dataset.moreText;fullTextWrapper.classList.add("fadeOutUp");fullTextWrapper.classList.add("faster");fullTextWrapper.classList.remove("fadeInDown")}})})}})();
|
public/js/lib/strongslider/jquery.strongslider.js
CHANGED
@@ -588,6 +588,7 @@
|
|
588 |
|
589 |
window.addEventListener('resize', updateLayout, false);
|
590 |
window.addEventListener('orientationchange', updateLayout, false);
|
|
|
591 |
|
592 |
// Test this with dev console closed
|
593 |
// (or click in the document once to establish focus).
|
588 |
|
589 |
window.addEventListener('resize', updateLayout, false);
|
590 |
window.addEventListener('orientationchange', updateLayout, false);
|
591 |
+
window.addEventListener('toggleFullContent', updateLayout, false);
|
592 |
|
593 |
// Test this with dev console closed
|
594 |
// (or click in the document once to establish focus).
|
public/js/lib/strongslider/jquery.strongslider.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
(function($){var defaults={debug:false,logAs:"strongSlider",compat:{lazyload:{active:false,classes:{}}},mode:"horizontal",slideSelector:"div.t-slide",infiniteLoop:true,hideControlOnEnd:false,speed:500,easing:null,slideMargin:10,startSlide:0,randomStart:false,captions:false,adaptiveHeight:false,adaptiveHeightSpeed:500,video:false,useCSS:true,preloadImages:"visible",responsive:true,slideZIndex:50,wrapperClass:"wpmslider-wrapper",stretch:false,imagesLoaded:true,touchEnabled:true,swipeThreshold:50,oneToOneTouch:true,preventDefaultSwipeX:true,preventDefaultSwipeY:false,ariaLive:true,ariaHidden:true,keyboardEnabled:false,pager:true,pagerType:"full",pagerShortSeparator:" / ",pagerSelector:null,buildPager:null,pagerCustom:null,controls:true,nextText:"Next",prevText:"Prev",nextSelector:null,prevSelector:null,autoControls:false,startText:"Start",stopText:"Stop",autoControlsCombine:false,autoControlsSelector:null,auto:true,pause:4e3,autoStart:true,autoDirection:"next",stopAutoOnClick:false,autoHover:false,autoDelay:0,autoSlideForOnePage:false,minSlides:1,maxSlides:1,moveSlides:0,onSliderLoad:function(){return true},onSlideBefore:function(){return true},onSlideAfter:function(){return true},onSlideNext:function(){return true},onSlidePrev:function(){return true},onSliderResize:function(){return true},onAutoChange:function(){return true}};$.fn.strongSlider=function(options){if(this.length===0){return this}var slider={},viewEl=this,el=this.find(".wpmslider-content");if($(el).data("strongSlider")){return}var init=function(){if($(el).data("strongSlider")){return}slider.visibilityInterval=0;slider.hidden=false;var sliderVar=viewEl.data("slider-var");var config={};if(typeof window[sliderVar]!=="undefined"){config=window[sliderVar].config}slider.settings=$.extend({},defaults,config,options);slider.debug=slider.settings.debug;slider.logAs=slider.settings.logAs;if(slider.debug)console.log(slider.logAs,"slider.settings",slider.settings);slider.children=el.children(slider.settings.slideSelector);if(slider.children.length<slider.settings.minSlides){slider.settings.minSlides=slider.children.length}if(slider.children.length<slider.settings.maxSlides){slider.settings.maxSlides=slider.children.length}if(slider.settings.randomStart){slider.settings.startSlide=Math.floor(Math.random()*slider.children.length)}slider.active={index:slider.settings.startSlide};setBreakpoint();if(slider.carousel){slider.settings.preloadImages="all"}slider.working=false;slider.controls={};slider.interval=null;slider.animProp=slider.settings.mode==="vertical"?"top":"left";slider.usingCSS=slider.settings.useCSS&&slider.settings.mode!=="fade"&&function(){var div=document.createElement("div"),props=["WebkitPerspective","MozPerspective","OPerspective","msPerspective"];for(var i=0;i<props.length;i++){if(div.style[props[i]]!==undefined){slider.cssPrefix=props[i].replace("Perspective","").toLowerCase();slider.animProp="-"+slider.cssPrefix+"-transform";return true}}return false}();if(slider.settings.mode==="vertical"){slider.settings.maxSlides=slider.settings.minSlides}el.data("origStyle",el.attr("style"));el.children(slider.settings.slideSelector).each(function(){$(this).data("origStyle",$(this).attr("style"))});if(!el.getSlideCount()){return}if(slider.settings.imagesLoaded){viewEl.imagesLoaded(function(){initVisibilityCheck()})}else{initVisibilityCheck()}};var reallyVisible=function(){return viewEl.is(":visible")&&viewEl.css("visibility")!=="hidden"};var compatCheck=function(){if(slider.settings.compat.lazyload){var inProgress=false;for(var i=0,len=slider.settings.compat.lazyload.classes.length;i<len;i++){var startClass=slider.settings.compat.lazyload.classes[i].start;var finishClass=slider.settings.compat.lazyload.classes[i].finish;if(startClass&&finishClass){if(viewEl.find("img."+startClass).length&&!viewEl.find("img."+finishClass).length){inProgress=true}}else if(startClass){if(viewEl.find("img."+startClass).length){inProgress=true}}else if(finishClass){if(!viewEl.find("img."+finishClass).length){inProgress=true}}}if(inProgress){if(slider.debug)console.log(slider.logAs,"lazy loading...");return false}}if(slider.debug)console.log(slider.logAs,"compat check complete");return true};var initVisibilityCheck=function(){if(reallyVisible()&&compatCheck()){clearInterval(slider.visibilityInterval);setup()}else{if(slider.visibilityInterval===0){slider.visibilityInterval=setInterval(initVisibilityCheck,1e3*4)}}};var setup=function(){var preloadSelector=slider.children.eq(slider.settings.startSlide);el.wrap('<div class="'+slider.settings.wrapperClass+'"><div class="wpmslider-viewport"></div></div>');slider.viewport=el.parent();if(slider.settings.ariaLive){slider.viewport.attr("aria-live","polite")}slider.loader=$('<div class="wpmslider-loading" />');slider.viewport.prepend(slider.loader);el.css({width:slider.settings.mode==="horizontal"?slider.children.length*1e3+215+"%":"auto",position:"relative"});if(slider.usingCSS&&slider.settings.easing){el.css("-"+slider.cssPrefix+"-transition-timing-function",slider.settings.easing)}else if(!slider.settings.easing){slider.settings.easing="swing"}slider.viewport.css({width:"100%",overflow:"hidden",position:"relative"});slider.viewport.parent().css({maxWidth:getViewportMaxWidth2()});if(!slider.settings.pager&&!slider.settings.controls){slider.viewport.parent().css({margin:"0 auto"})}slider.children.css({float:slider.settings.mode==="horizontal"?"left":"none",listStyle:"none",position:"relative"});updateWidth();if(slider.settings.mode==="horizontal"&&slider.settings.slideMargin>0){slider.children.css("marginRight",slider.settings.slideMargin)}if(slider.settings.mode==="vertical"&&slider.settings.slideMargin>0){slider.children.css("marginBottom",slider.settings.slideMargin)}if(slider.settings.mode==="fade"){slider.children.css({position:"absolute",zIndex:0,display:"none"});slider.children.eq(slider.settings.startSlide).css({zIndex:slider.settings.slideZIndex,display:"block"})}else{slider.children.css({display:"block"})}slider.controls.el=$('<div class="wpmslider-controls" />');if(slider.settings.captions){appendCaptions()}slider.active.last=slider.settings.startSlide===getPagerQty()-1;if(slider.settings.video){el.fitVids()}if(slider.settings.preloadImages==="none"){preloadSelector=null}else if(slider.settings.preloadImages==="all"){preloadSelector=slider.children}if(slider.settings.controls){appendControlPrev()}if(slider.settings.auto&&slider.settings.autoControls){appendControlsAuto()}if(slider.settings.pager){appendPager()}if(slider.settings.controls){appendControlNext()}if(slider.settings.controls||slider.settings.autoControls||slider.settings.pager){slider.viewport.after(slider.controls.el)}if(preloadSelector===null){start()}else{loadElements(preloadSelector,start)}};var setBreakpoint=function(){if(slider.debug)console.log(slider.logAs,"setBreakpoint");var currentBreakpoint=slider.settings.breakpoints.single;var breakpoints=slider.settings.breakpoints.multiple;if(slider.settings.type==="show_multiple"){for(var key in breakpoints){if(breakpoints.hasOwnProperty(key)){if(verge.viewportW()>=breakpoints[key].width){currentBreakpoint=breakpoints[key];break}}}}if(slider.debug)console.log("current breakpoint",currentBreakpoint);slider.settings.maxSlides=currentBreakpoint.maxSlides;slider.settings.moveSlides=currentBreakpoint.moveSlides;slider.settings.slideMargin=currentBreakpoint.slideMargin;slider.carousel=slider.settings.minSlides>1||slider.settings.maxSlides>1};var updateWidth=function(){setBreakpoint();slider.children.css("width",getSlideWidth2())};var loadElements=function(selector,callback){var total=selector.find('img:not([src=""]), iframe').length,count=0;if(total===0){callback();return}selector.find('img:not([src=""]), iframe').each(function(){$(this).one("load error",function(){if(++count===total){callback()}}).each(function(){if(this.complete||this.src===""){$(this).trigger("load")}})})};var start=function(){if(slider.settings.infiniteLoop&&slider.settings.mode!=="fade"){var slice=slider.settings.mode==="vertical"?slider.settings.minSlides:slider.settings.maxSlides,sliceAppend=slider.children.slice(0,slice).clone(true).addClass("wpmslider-clone"),slicePrepend=slider.children.slice(-slice).clone(true).addClass("wpmslider-clone");if(slider.settings.ariaHidden){sliceAppend.attr("aria-hidden",true);slicePrepend.attr("aria-hidden",true)}el.append(sliceAppend).prepend(slicePrepend)}slider.loader.remove();if(slider.settings.mode==="vertical"){slider.settings.adaptiveHeight=true}el.redrawSlider();slider.settings.onSliderLoad.call(el,slider.active.index);slider.initialized=true;slider.visibilityInterval=setInterval(visibilityCheck,500);if(slider.settings.responsive){attachListeners()}if(slider.settings.auto&&slider.settings.autoStart&&(getPagerQty()>1||slider.settings.autoSlideForOnePage)){initAuto()}if(slider.settings.pager){updatePagerActive(slider.settings.startSlide)}if(slider.settings.controls){updateDirectionControls()}if(slider.settings.touchEnabled){initTouch()}if(slider.settings.keyboardEnabled){$(document).keydown(keyPress)}};var attachListeners=function(){window.addEventListener("resize",updateLayout,false);window.addEventListener("orientationchange",updateLayout,false);window.addEventListener("blur",function(){pauseEvent("blur")});window.addEventListener("focus",function(){playEvent("blur")})};var updateLayout=_.debounce(function(){if(slider.debug)console.log(slider.logAs,"updateLayout");resizeWindow()},250);var visibilityCheck=function(){if(!slider.settings.auto){return}if(!reallyVisible()){pauseEvent("hide")}else{playEvent("hide")}if(!verge.inViewport(el)){pauseEvent("scroll")}else{playEvent("scroll")}};var pauseEvent=function(action){if(slider.interval){el.stopAuto(true);slider.autoPaused=action;if(slider.debug)console.log(slider.logAs,"pause",action)}};var playEvent=function(action){if(slider.autoPaused===action){el.startAuto(true);slider.autoPaused=null;if(slider.debug)console.log(slider.logAs,"play",action)}};var setSlideHeight=function(){var heights=slider.children.map(function(){return jQuery(this).actual("outerHeight")}).get();var maxHeight=arrayMax(heights);slider.children.height(maxHeight)};var unsetSlideHeight=function(){slider.children.height("auto")};var arrayMax=function(array){return Math.max.apply(Math,array)};var getViewportHeight=function(){var height=0;var children=$();if(slider.settings.mode!=="vertical"&&!slider.settings.adaptiveHeight){children=slider.children}else{if(!slider.carousel){children=slider.children.eq(slider.active.index)}else{var currentIndex=slider.settings.moveSlides===1?slider.active.index:slider.active.index*getMoveBy();children=slider.children.eq(currentIndex);for(var i=1;i<=slider.settings.maxSlides-1;i++){if(currentIndex+i>=slider.children.length){children=children.add(slider.children.eq(i-1))}else{children=children.add(slider.children.eq(currentIndex+i))}}}}if(slider.settings.mode==="vertical"){children.each(function(index){height+=$(this).outerHeight()});if(slider.settings.slideMargin>0){height+=slider.settings.slideMargin*(slider.settings.minSlides-1)}}else{height=Math.max.apply(Math,children.map(function(){return $(this).outerHeight(false)}).get())}if(slider.viewport.css("box-sizing")==="border-box"){height+=parseFloat(slider.viewport.css("padding-top"))+parseFloat(slider.viewport.css("padding-bottom"))+parseFloat(slider.viewport.css("border-top-width"))+parseFloat(slider.viewport.css("border-bottom-width"))}else if(slider.viewport.css("box-sizing")==="padding-box"){height+=parseFloat(slider.viewport.css("padding-top"))+parseFloat(slider.viewport.css("padding-bottom"))}return height};var setViewportHeight=function(){slider.viewport.height(getViewportHeight()+2)};var getViewportMaxWidth2=function(){return"100%"};var getSlideWidth2=function(){var wrapWidth=slider.viewport.width();var margins=slider.settings.slideMargin*(slider.settings.maxSlides-1);return Math.floor((wrapWidth-margins)/slider.settings.maxSlides)};var getNumberSlidesShowing2=function(){return slider.settings.maxSlides};var getPagerQty=function(){var pagerQty=0,breakPoint=0,counter=0;if(slider.settings.moveSlides>0){if(slider.settings.infiniteLoop){pagerQty=Math.ceil(slider.children.length/getMoveBy())}else{while(breakPoint<slider.children.length){++pagerQty;breakPoint=counter+getNumberSlidesShowing2();counter+=slider.settings.moveSlides<=getNumberSlidesShowing2()?slider.settings.moveSlides:getNumberSlidesShowing2()}return counter}}else{pagerQty=Math.ceil(slider.children.length/getNumberSlidesShowing2())}return pagerQty};var getMoveBy=function(){if(slider.settings.moveSlides>0&&slider.settings.moveSlides<=getNumberSlidesShowing2()){return slider.settings.moveSlides}return getNumberSlidesShowing2()};var setSlidePosition=function(){var position,lastChild,lastShowingIndex;if(slider.children.length>slider.settings.maxSlides&&slider.active.last&&!slider.settings.infiniteLoop){if(slider.settings.mode==="horizontal"){lastChild=slider.children.last();position=lastChild.position();setPositionProperty(-(position.left-(slider.viewport.width()-lastChild.outerWidth())),"reset",0)}else if(slider.settings.mode==="vertical"){lastShowingIndex=slider.children.length-slider.settings.minSlides;position=slider.children.eq(lastShowingIndex).position();setPositionProperty(-position.top,"reset",0)}}else{position=slider.children.eq(slider.active.index*getMoveBy()).position();if(slider.active.index===getPagerQty()-1){slider.active.last=true}if(position!==undefined){if(slider.settings.mode==="horizontal"){setPositionProperty(-position.left,"reset",0)}else if(slider.settings.mode==="vertical"){setPositionProperty(-position.top,"reset",0)}else if(slider.settings.mode==="none"){setPositionProperty(-position.top,"reset",0)}}}};var setPositionProperty=function(value,type,duration,params){var animateObj,propValue;if(slider.usingCSS){if(slider.settings.mode==="vertical"){propValue="translateY("+value+"px)"}else if(slider.settings.mode==="horizontal"){propValue="translateX("+value+"px"}else if(slider.settings.mode==="none"){propValue="translateY("+value+"px)";duration=0}el.css("-"+slider.cssPrefix+"-transition-duration",duration/1e3+"s");if(type==="slide"){el.css(slider.animProp,propValue);if(duration!==0){el.on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",function(e){if(!$(e.target).is(el)){return}el.off("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd");updateAfterSlideTransition()})}else{updateAfterSlideTransition()}}else if(type==="reset"){el.css(slider.animProp,propValue)}}else{animateObj={};animateObj[slider.animProp]=value;if(type==="slide"){el.animate(animateObj,duration,slider.settings.easing,function(){updateAfterSlideTransition()})}else if(type==="reset"){el.css(slider.animProp,value)}}};var populatePager=function(){var pagerHtml="",linkContent="",pagerQty=getPagerQty();for(var i=0;i<pagerQty;i++){linkContent="";if(slider.settings.buildPager){if(slider.settings.buildPager==="icons"){linkContent=""}if($.isFunction(slider.settings.buildPager)||slider.settings.pagerCustom){linkContent=slider.settings.buildPager(i)}slider.pagerEl.addClass("wpmslider-custom-pager")}else{linkContent=i+1;slider.pagerEl.addClass("wpmslider-default-pager")}pagerHtml+='<div class="wpmslider-pager-item"><a href="" data-slide-index="'+i+'" class="wpmslider-pager-link">'+linkContent+"</a></div>"}slider.pagerEl.html(pagerHtml)};var appendPager=function(){if(!slider.settings.pagerCustom){slider.pagerEl=$('<div class="wpmslider-pager" />');if(slider.settings.pagerSelector){$(slider.settings.pagerSelector).html(slider.pagerEl)}else{slider.controls.el.addClass("wpmslider-has-pager").append(slider.pagerEl)}populatePager()}else{slider.pagerEl=$(slider.settings.pagerCustom)}slider.pagerEl.on("click touchend","a",clickPagerBind)};var appendControlPrev=function(){slider.controls.prev=$('<a class="wpmslider-prev" href="">'+slider.settings.prevText+"</a>");slider.controls.prev.on("click touchend",clickPrevBind);if(slider.settings.prevSelector){$(slider.settings.prevSelector).append(slider.controls.prev)}if(!slider.settings.prevSelector){slider.controls.directionEl=$('<div class="wpmslider-controls-direction" />');slider.controls.directionEl.append(slider.controls.prev);slider.controls.el.addClass("wpmslider-has-controls-direction").append(slider.controls.directionEl)}};var appendControlNext=function(){slider.controls.next=$('<a class="wpmslider-next" href="">'+slider.settings.nextText+"</a>");slider.controls.next.on("click touchend",clickNextBind);if(slider.settings.nextSelector){$(slider.settings.nextSelector).append(slider.controls.next)}if(!slider.settings.nextSelector){slider.controls.directionEl=$('<div class="wpmslider-controls-direction" />');slider.controls.directionEl.append(slider.controls.next);slider.controls.el.addClass("wpmslider-has-controls-direction").append(slider.controls.directionEl)}};var appendControlsAuto=function(){slider.controls.start=$('<div class="wpmslider-controls-auto-item"><a class="wpmslider-start" href="">'+slider.settings.startText+"</a></div>");slider.controls.stop=$('<div class="wpmslider-controls-auto-item"><a class="wpmslider-stop" href="">'+slider.settings.stopText+"</a></div>");slider.controls.autoEl=$('<div class="wpmslider-controls-auto" />');slider.controls.autoEl.on("click",".wpmslider-start",clickStartBind);slider.controls.autoEl.on("click",".wpmslider-stop",clickStopBind);if(slider.settings.autoControlsCombine){slider.controls.autoEl.append(slider.controls.start)}else{slider.controls.autoEl.append(slider.controls.start).append(slider.controls.stop)}if(slider.settings.autoControlsSelector){$(slider.settings.autoControlsSelector).html(slider.controls.autoEl)}else{slider.controls.el.addClass("wpmslider-has-controls-auto").append(slider.controls.autoEl)}updateAutoControls(slider.settings.autoStart?"stop":"start")};var appendCaptions=function(){slider.children.each(function(index){var title=$(this).find("img:first").attr("title");if(title!==undefined&&(""+title).length){$(this).append('<div class="wpmslider-caption"><span>'+title+"</span></div>")}})};var clickNextBind=function(e){e.preventDefault();e.stopPropagation();if(slider.controls.el.hasClass("disabled")){return}if(slider.settings.auto&&slider.settings.stopAutoOnClick){if(slider.debug)console.log(slider.logAs,"stop on navigation");el.stopAuto()}el.goToNextSlide()};var clickPrevBind=function(e){e.preventDefault();e.stopPropagation();if(slider.controls.el.hasClass("disabled")){return}if(slider.settings.auto&&slider.settings.stopAutoOnClick){if(slider.debug)console.log(slider.logAs,"stop on navigation");el.stopAuto()}el.goToPrevSlide()};var clickStartBind=function(e){el.startAuto();e.preventDefault();e.stopPropagation()};var clickStopBind=function(e){el.stopAuto();e.preventDefault();e.stopPropagation()};var clickPagerBind=function(e){var pagerLink,pagerIndex;e.preventDefault();e.stopPropagation();if(slider.controls.el.hasClass("disabled")){return}if(slider.settings.auto&&slider.settings.stopAutoOnClick){if(slider.debug)console.log(slider.logAs,"stop on navigation");el.stopAuto()}pagerLink=$(e.currentTarget);if(pagerLink.attr("data-slide-index")!==undefined){pagerIndex=parseInt(pagerLink.attr("data-slide-index"));if(pagerIndex!==slider.active.index){el.goToSlide(pagerIndex)}}};var updatePagerActive=function(slideIndex){var len=slider.children.length;if(slider.settings.pagerType==="short"){if(slider.settings.maxSlides>1){len=Math.ceil(slider.children.length/slider.settings.maxSlides)}slider.pagerEl.html(slideIndex+1+slider.settings.pagerShortSeparator+len);return}slider.pagerEl.find("a").removeClass("active");slider.pagerEl.each(function(i,el){$(el).find("a").eq(slideIndex).addClass("active")})};var updateAfterSlideTransition=function(){if(slider.settings.infiniteLoop){var position="";if(slider.active.index===0){position=slider.children.eq(0).position()}else if(slider.active.index===getPagerQty()-1&&slider.carousel){position=slider.children.eq((getPagerQty()-1)*getMoveBy()).position()}else if(slider.active.index===slider.children.length-1){position=slider.children.eq(slider.children.length-1).position()}if(position){if(slider.settings.mode==="horizontal"){setPositionProperty(-position.left,"reset",0)}else if(slider.settings.mode==="vertical"){setPositionProperty(-position.top,"reset",0)}}}slider.working=false;slider.settings.onSlideAfter.call(el,slider.children.eq(slider.active.index),slider.oldIndex,slider.active.index)};var updateAutoControls=function(state){if(slider.settings.autoControlsCombine){slider.controls.autoEl.html(slider.controls[state])}else{slider.controls.autoEl.find("a").removeClass("active");slider.controls.autoEl.find("a:not(.wpmslider-"+state+")").addClass("active")}};var updateDirectionControls=function(){if(getPagerQty()===1){slider.controls.prev.addClass("disabled");slider.controls.next.addClass("disabled")}else if(!slider.settings.infiniteLoop&&slider.settings.hideControlOnEnd){if(slider.active.index===0){slider.controls.prev.addClass("disabled");slider.controls.next.removeClass("disabled")}else if(slider.active.index===getPagerQty()-1){slider.controls.next.addClass("disabled");slider.controls.prev.removeClass("disabled")}else{slider.controls.prev.removeClass("disabled");slider.controls.next.removeClass("disabled")}}};var initAuto=function(){if(slider.settings.autoDelay>0){setTimeout(el.startAuto,slider.settings.autoDelay)}else{el.startAuto()}if(slider.settings.autoHover){el.hover(function(){pauseEvent("hover")},function(){playEvent("hover")})}};var keyPress=function(e){var activeElementTag=document.activeElement.tagName.toLowerCase(),tagFilters="input|textarea",p=new RegExp(activeElementTag,["i"]),result=p.exec(tagFilters);if(result===null&&verge.inViewport(el)){if(e.keyCode===39){clickNextBind(e);return false}else if(e.keyCode===37){clickPrevBind(e);return false}}};var initTouch=function(){slider.touch={start:{x:0,y:0},end:{x:0,y:0}};slider.viewport.on("touchstart MSPointerDown pointerdown",onTouchStart);slider.viewport.on("click",".wpmslider a",function(e){if(slider.viewport.hasClass("click-disabled")){e.preventDefault();e.stopPropagation();slider.viewport.removeClass("click-disabled")}})};var onTouchStart=function(e){if(e.type!=="touchstart"&&e.button!==0){return}slider.controls.el.addClass("disabled");if(slider.working){e.preventDefault();e.stopPropagation();slider.controls.el.removeClass("disabled")}else{slider.touch.originalPos=el.position();var orig=e.originalEvent,touchPoints=typeof orig.changedTouches!=="undefined"?orig.changedTouches:[orig];var chromePointerEvents=typeof PointerEvent==="function";if(chromePointerEvents){if(orig.pointerId===undefined){return}}slider.touch.start.x=touchPoints[0].pageX;slider.touch.start.y=touchPoints[0].pageY;if(slider.viewport.get(0).setPointerCapture){slider.pointerId=orig.pointerId;slider.viewport.get(0).setPointerCapture(slider.pointerId)}slider.originalClickTarget=orig.originalTarget||orig.target;slider.originalClickButton=orig.button;slider.originalClickButtons=orig.buttons;slider.originalEventType=orig.type;slider.hasMove=false;slider.viewport.on("touchmove MSPointerMove pointermove",onTouchMove);slider.viewport.on("touchend MSPointerUp pointerup",onTouchEnd);slider.viewport.on("MSPointerCancel pointercancel",onPointerCancel)}};var onPointerCancel=function(e){e.preventDefault();setPositionProperty(slider.touch.originalPos.left,"reset",0);slider.controls.el.removeClass("disabled");slider.viewport.off("MSPointerCancel pointercancel",onPointerCancel);slider.viewport.off("touchmove MSPointerMove pointermove",onTouchMove);slider.viewport.off("touchend MSPointerUp pointerup",onTouchEnd);if(slider.viewport.get(0).releasePointerCapture){slider.viewport.get(0).releasePointerCapture(slider.pointerId)}};var onTouchMove=function(e){var orig=e.originalEvent,touchPoints=typeof orig.changedTouches!=="undefined"?orig.changedTouches:[orig],xMovement=Math.abs(touchPoints[0].pageX-slider.touch.start.x),yMovement=Math.abs(touchPoints[0].pageY-slider.touch.start.y),value=0,change=0;slider.hasMove=true;if(xMovement*3>yMovement&&slider.settings.preventDefaultSwipeX){e.preventDefault();e.stopPropagation()}else if(yMovement*3>xMovement&&slider.settings.preventDefaultSwipeY){e.preventDefault();e.stopPropagation()}if(e.type!=="touchmove"){e.preventDefault()}if(slider.settings.mode!=="fade"&&slider.settings.oneToOneTouch){if(slider.settings.mode==="horizontal"){change=touchPoints[0].pageX-slider.touch.start.x;value=slider.touch.originalPos.left+change}else{change=touchPoints[0].pageY-slider.touch.start.y;value=slider.touch.originalPos.top+change}setPositionProperty(value,"reset",0)}};var onTouchEnd=function(e){e.preventDefault();slider.viewport.off("touchmove MSPointerMove pointermove",onTouchMove);slider.controls.el.removeClass("disabled");var orig=e.originalEvent,touchPoints=typeof orig.changedTouches!=="undefined"?orig.changedTouches:[orig],value=0,distance=0;slider.touch.end.x=touchPoints[0].pageX;slider.touch.end.y=touchPoints[0].pageY;if(slider.settings.mode==="fade"){distance=Math.abs(slider.touch.start.x-slider.touch.end.x);if(distance>=slider.settings.swipeThreshold){if(slider.touch.start.x>slider.touch.end.x){el.goToNextSlide()}else{el.goToPrevSlide()}el.stopAuto()}}else{if(slider.settings.mode==="horizontal"){distance=slider.touch.end.x-slider.touch.start.x;value=slider.touch.originalPos.left}else{distance=slider.touch.end.y-slider.touch.start.y;value=slider.touch.originalPos.top}if(!slider.settings.infiniteLoop&&(slider.active.index===0&&distance>0||slider.active.last&&distance<0)){setPositionProperty(value,"reset",200)}else{if(Math.abs(distance)>=slider.settings.swipeThreshold){if(distance<0){el.goToNextSlide()}else{el.goToPrevSlide()}el.stopAuto()}else{setPositionProperty(value,"reset",200)}}}slider.viewport.off("touchend MSPointerUp pointerup",onTouchEnd);if(slider.viewport.get(0).releasePointerCapture){slider.viewport.get(0).releasePointerCapture(slider.pointerId)}if(slider.hasMove===false&&(slider.originalClickButton===0||slider.originalEventType==="touchstart")){$(slider.originalClickTarget).trigger({type:"click",button:slider.originalClickButton,buttons:slider.originalClickButtons})}};var resizeWindow=function(e){if(!slider.initialized){if(slider.debug)console.log(slider.logAs,"slider not initialized");return}if(slider.working){if(slider.debug)console.log(slider.logAs,"slider working");window.setTimeout(resizeWindow,10)}else{el.redrawSlider();slider.settings.onSliderResize.call(el,slider.active.index)}};var applyAriaHiddenAttributes=function(startVisibleIndex){var numberOfSlidesShowing=getNumberSlidesShowing2();if(slider.settings.ariaHidden){slider.children.attr("aria-hidden","true");slider.children.slice(startVisibleIndex,startVisibleIndex+numberOfSlidesShowing).attr("aria-hidden","false")}};var setSlideIndex=function(slideIndex){if(slideIndex<0){if(slider.settings.infiniteLoop){return getPagerQty()-1}else{return slider.active.index}}else if(slideIndex>=getPagerQty()){if(slider.settings.infiniteLoop){return 0}else{return slider.active.index}}else{return slideIndex}};el.goToSlide=function(slideIndex,direction){var performTransition=true,moveBy=0,position={left:0,top:0},lastChild=null,lastShowingIndex,eq,value,requestEl;slider.oldIndex=slider.active.index;slider.active.index=setSlideIndex(slideIndex);if(slider.working||slider.active.index===slider.oldIndex){return}slider.working=true;performTransition=slider.settings.onSlideBefore.call(el,slider.children.eq(slider.active.index),slider.oldIndex,slider.active.index);if(typeof performTransition!=="undefined"&&!performTransition){slider.active.index=slider.oldIndex;slider.working=false;return}if(direction==="next"){if(!slider.settings.onSlideNext.call(el,slider.children.eq(slider.active.index),slider.oldIndex,slider.active.index)){performTransition=false}}else if(direction==="prev"){if(!slider.settings.onSlidePrev.call(el,slider.children.eq(slider.active.index),slider.oldIndex,slider.active.index)){performTransition=false}}slider.active.last=slider.active.index>=getPagerQty()-1;if(slider.settings.pager||slider.settings.pagerCustom){updatePagerActive(slider.active.index)}if(slider.settings.controls){updateDirectionControls()}if(slider.settings.mode==="fade"){if(slider.settings.adaptiveHeight&&slider.viewport.height()!==getViewportHeight()){slider.viewport.animate({height:getViewportHeight()},slider.settings.adaptiveHeightSpeed)}slider.children.filter(":visible").fadeOut(slider.settings.speed).css({zIndex:0});slider.children.eq(slider.active.index).css("zIndex",slider.settings.slideZIndex+1).fadeIn(slider.settings.speed,function(){$(this).css("zIndex",slider.settings.slideZIndex);updateAfterSlideTransition()})}else{if(slider.settings.adaptiveHeight&&slider.viewport.height()!==getViewportHeight()){slider.viewport.animate({height:getViewportHeight()},slider.settings.adaptiveHeightSpeed)}if(!slider.settings.infiniteLoop&&slider.carousel&&slider.active.last){if(slider.settings.mode==="horizontal"){lastChild=slider.children.eq(slider.children.length-1);position=lastChild.position();moveBy=slider.viewport.width()-lastChild.outerWidth()}else{lastShowingIndex=slider.children.length-slider.settings.minSlides;position=slider.children.eq(lastShowingIndex).position()}}else if(slider.carousel&&slider.active.last&&direction==="prev"){eq=slider.settings.moveSlides===1?slider.settings.maxSlides-getMoveBy():(getPagerQty()-1)*getMoveBy()-(slider.children.length-slider.settings.maxSlides);lastChild=el.children(".wpmslider-clone").eq(eq);position=lastChild.position()}else if(direction==="next"&&slider.active.index===0){position=el.find("> .wpmslider-clone").eq(slider.settings.maxSlides).position();slider.active.last=false}else if(slideIndex>=0){requestEl=slideIndex*parseInt(getMoveBy());position=slider.children.eq(requestEl).position()}if(typeof position!=="undefined"){value=slider.settings.mode==="horizontal"?-(position.left-moveBy):-position.top;setPositionProperty(value,"slide",slider.settings.speed)}slider.working=false}if(slider.settings.ariaHidden){applyAriaHiddenAttributes(slider.active.index*getMoveBy())}};el.goToNextSlide=function(){if(!slider.settings.infiniteLoop&&slider.active.last){return}if(slider.working===true){return}var pagerIndex=parseInt(slider.active.index)+1;el.goToSlide(pagerIndex,"next")};el.goToPrevSlide=function(){if(!slider.settings.infiniteLoop&&slider.active.index===0){return}if(slider.working===true){return}var pagerIndex=parseInt(slider.active.index)-1;el.goToSlide(pagerIndex,"prev")};el.startAuto=function(preventControlUpdate){if(slider.interval){return}slider.interval=setInterval(function(){if(slider.settings.autoDirection==="next"){el.goToNextSlide()}else{el.goToPrevSlide()}},slider.settings.pause);slider.settings.onAutoChange.call(el,true);if(slider.settings.autoControls&&preventControlUpdate!==true){updateAutoControls("stop")}};el.stopAuto=function(preventControlUpdate){if(slider.autoPaused)slider.autoPaused=false;if(!slider.interval){return}clearInterval(slider.interval);slider.interval=null;slider.settings.onAutoChange.call(el,false);if(slider.settings.autoControls&&preventControlUpdate!==true){updateAutoControls("start")}};el.getCurrentSlide=function(){return slider.active.index};el.getCurrentSlideElement=function(){return slider.children.eq(slider.active.index)};el.getSlideElement=function(index){return slider.children.eq(index)};el.getSlideCount=function(){return slider.children.length};el.isWorking=function(){return slider.working};el.redrawSlider=function(){if(slider.debug)console.log(slider.logAs,"redrawSlider");updateWidth();unsetSlideHeight();setViewportHeight();if(slider.settings.stretch){setSlideHeight()}slider.children.add(el.find(".wpmslider-clone")).outerWidth(getSlideWidth2());setSlidePosition();if(slider.active.last){slider.active.index=getPagerQty()-1}if(slider.active.index>=getPagerQty()){slider.active.last=true}if(slider.settings.pager&&!slider.settings.pagerCustom){populatePager();updatePagerActive(slider.active.index)}if(slider.settings.ariaHidden){applyAriaHiddenAttributes(slider.active.index*getMoveBy())}};el.destroySlider=function(){if(!slider.initialized){return}slider.initialized=false;$(".wpmslider-clone",this).remove();slider.children.each(function(){if($(this).data("origStyle")!==undefined){$(this).attr("style",$(this).data("origStyle"))}else{$(this).removeAttr("style")}});if($(this).data("origStyle")!==undefined){this.attr("style",$(this).data("origStyle"))}else{$(this).removeAttr("style")}$(this).unwrap().unwrap();if(slider.controls.el){slider.controls.el.remove()}if(slider.controls.next){slider.controls.next.remove()}if(slider.controls.prev){slider.controls.prev.remove()}if(slider.pagerEl&&slider.settings.controls&&!slider.settings.pagerCustom){slider.pagerEl.remove()}$(".wpmslider-caption",this).remove();if(slider.controls.autoEl){slider.controls.autoEl.remove()}clearInterval(slider.interval);clearInterval(slider.visibilityInterval);if(slider.settings.responsive){$(window).off("resize",resizeWindow)}if(slider.settings.keyboardEnabled){$(document).off("keydown",keyPress)}$(this).removeData("strongSlider")};el.reloadSlider=function(settings){if(settings!==undefined){options=settings}el.destroySlider();init();$(el).data("strongSlider",this)};init();$(el).data("strongSlider",this);viewEl.attr("data-state","init");if(slider.debug)console.log(slider.logAs,"viewport",verge.viewportW(),"x",verge.viewportH());return this}})(jQuery);
|
1 |
+
(function($){var defaults={debug:false,logAs:"strongSlider",compat:{lazyload:{active:false,classes:{}}},mode:"horizontal",slideSelector:"div.t-slide",infiniteLoop:true,hideControlOnEnd:false,speed:500,easing:null,slideMargin:10,startSlide:0,randomStart:false,captions:false,adaptiveHeight:false,adaptiveHeightSpeed:500,video:false,useCSS:true,preloadImages:"visible",responsive:true,slideZIndex:50,wrapperClass:"wpmslider-wrapper",stretch:false,imagesLoaded:true,touchEnabled:true,swipeThreshold:50,oneToOneTouch:true,preventDefaultSwipeX:true,preventDefaultSwipeY:false,ariaLive:true,ariaHidden:true,keyboardEnabled:false,pager:true,pagerType:"full",pagerShortSeparator:" / ",pagerSelector:null,buildPager:null,pagerCustom:null,controls:true,nextText:"Next",prevText:"Prev",nextSelector:null,prevSelector:null,autoControls:false,startText:"Start",stopText:"Stop",autoControlsCombine:false,autoControlsSelector:null,auto:true,pause:4e3,autoStart:true,autoDirection:"next",stopAutoOnClick:false,autoHover:false,autoDelay:0,autoSlideForOnePage:false,minSlides:1,maxSlides:1,moveSlides:0,onSliderLoad:function(){return true},onSlideBefore:function(){return true},onSlideAfter:function(){return true},onSlideNext:function(){return true},onSlidePrev:function(){return true},onSliderResize:function(){return true},onAutoChange:function(){return true}};$.fn.strongSlider=function(options){if(this.length===0){return this}var slider={},viewEl=this,el=this.find(".wpmslider-content");if($(el).data("strongSlider")){return}var init=function(){if($(el).data("strongSlider")){return}slider.visibilityInterval=0;slider.hidden=false;var sliderVar=viewEl.data("slider-var");var config={};if(typeof window[sliderVar]!=="undefined"){config=window[sliderVar].config}slider.settings=$.extend({},defaults,config,options);slider.debug=slider.settings.debug;slider.logAs=slider.settings.logAs;if(slider.debug)console.log(slider.logAs,"slider.settings",slider.settings);slider.children=el.children(slider.settings.slideSelector);if(slider.children.length<slider.settings.minSlides){slider.settings.minSlides=slider.children.length}if(slider.children.length<slider.settings.maxSlides){slider.settings.maxSlides=slider.children.length}if(slider.settings.randomStart){slider.settings.startSlide=Math.floor(Math.random()*slider.children.length)}slider.active={index:slider.settings.startSlide};setBreakpoint();if(slider.carousel){slider.settings.preloadImages="all"}slider.working=false;slider.controls={};slider.interval=null;slider.animProp=slider.settings.mode==="vertical"?"top":"left";slider.usingCSS=slider.settings.useCSS&&slider.settings.mode!=="fade"&&function(){var div=document.createElement("div"),props=["WebkitPerspective","MozPerspective","OPerspective","msPerspective"];for(var i=0;i<props.length;i++){if(div.style[props[i]]!==undefined){slider.cssPrefix=props[i].replace("Perspective","").toLowerCase();slider.animProp="-"+slider.cssPrefix+"-transform";return true}}return false}();if(slider.settings.mode==="vertical"){slider.settings.maxSlides=slider.settings.minSlides}el.data("origStyle",el.attr("style"));el.children(slider.settings.slideSelector).each(function(){$(this).data("origStyle",$(this).attr("style"))});if(!el.getSlideCount()){return}if(slider.settings.imagesLoaded){viewEl.imagesLoaded(function(){initVisibilityCheck()})}else{initVisibilityCheck()}};var reallyVisible=function(){return viewEl.is(":visible")&&viewEl.css("visibility")!=="hidden"};var compatCheck=function(){if(slider.settings.compat.lazyload){var inProgress=false;for(var i=0,len=slider.settings.compat.lazyload.classes.length;i<len;i++){var startClass=slider.settings.compat.lazyload.classes[i].start;var finishClass=slider.settings.compat.lazyload.classes[i].finish;if(startClass&&finishClass){if(viewEl.find("img."+startClass).length&&!viewEl.find("img."+finishClass).length){inProgress=true}}else if(startClass){if(viewEl.find("img."+startClass).length){inProgress=true}}else if(finishClass){if(!viewEl.find("img."+finishClass).length){inProgress=true}}}if(inProgress){if(slider.debug)console.log(slider.logAs,"lazy loading...");return false}}if(slider.debug)console.log(slider.logAs,"compat check complete");return true};var initVisibilityCheck=function(){if(reallyVisible()&&compatCheck()){clearInterval(slider.visibilityInterval);setup()}else{if(slider.visibilityInterval===0){slider.visibilityInterval=setInterval(initVisibilityCheck,1e3*4)}}};var setup=function(){var preloadSelector=slider.children.eq(slider.settings.startSlide);el.wrap('<div class="'+slider.settings.wrapperClass+'"><div class="wpmslider-viewport"></div></div>');slider.viewport=el.parent();if(slider.settings.ariaLive){slider.viewport.attr("aria-live","polite")}slider.loader=$('<div class="wpmslider-loading" />');slider.viewport.prepend(slider.loader);el.css({width:slider.settings.mode==="horizontal"?slider.children.length*1e3+215+"%":"auto",position:"relative"});if(slider.usingCSS&&slider.settings.easing){el.css("-"+slider.cssPrefix+"-transition-timing-function",slider.settings.easing)}else if(!slider.settings.easing){slider.settings.easing="swing"}slider.viewport.css({width:"100%",overflow:"hidden",position:"relative"});slider.viewport.parent().css({maxWidth:getViewportMaxWidth2()});if(!slider.settings.pager&&!slider.settings.controls){slider.viewport.parent().css({margin:"0 auto"})}slider.children.css({float:slider.settings.mode==="horizontal"?"left":"none",listStyle:"none",position:"relative"});updateWidth();if(slider.settings.mode==="horizontal"&&slider.settings.slideMargin>0){slider.children.css("marginRight",slider.settings.slideMargin)}if(slider.settings.mode==="vertical"&&slider.settings.slideMargin>0){slider.children.css("marginBottom",slider.settings.slideMargin)}if(slider.settings.mode==="fade"){slider.children.css({position:"absolute",zIndex:0,display:"none"});slider.children.eq(slider.settings.startSlide).css({zIndex:slider.settings.slideZIndex,display:"block"})}else{slider.children.css({display:"block"})}slider.controls.el=$('<div class="wpmslider-controls" />');if(slider.settings.captions){appendCaptions()}slider.active.last=slider.settings.startSlide===getPagerQty()-1;if(slider.settings.video){el.fitVids()}if(slider.settings.preloadImages==="none"){preloadSelector=null}else if(slider.settings.preloadImages==="all"){preloadSelector=slider.children}if(slider.settings.controls){appendControlPrev()}if(slider.settings.auto&&slider.settings.autoControls){appendControlsAuto()}if(slider.settings.pager){appendPager()}if(slider.settings.controls){appendControlNext()}if(slider.settings.controls||slider.settings.autoControls||slider.settings.pager){slider.viewport.after(slider.controls.el)}if(preloadSelector===null){start()}else{loadElements(preloadSelector,start)}};var setBreakpoint=function(){if(slider.debug)console.log(slider.logAs,"setBreakpoint");var currentBreakpoint=slider.settings.breakpoints.single;var breakpoints=slider.settings.breakpoints.multiple;if(slider.settings.type==="show_multiple"){for(var key in breakpoints){if(breakpoints.hasOwnProperty(key)){if(verge.viewportW()>=breakpoints[key].width){currentBreakpoint=breakpoints[key];break}}}}if(slider.debug)console.log("current breakpoint",currentBreakpoint);slider.settings.maxSlides=currentBreakpoint.maxSlides;slider.settings.moveSlides=currentBreakpoint.moveSlides;slider.settings.slideMargin=currentBreakpoint.slideMargin;slider.carousel=slider.settings.minSlides>1||slider.settings.maxSlides>1};var updateWidth=function(){setBreakpoint();slider.children.css("width",getSlideWidth2())};var loadElements=function(selector,callback){var total=selector.find('img:not([src=""]), iframe').length,count=0;if(total===0){callback();return}selector.find('img:not([src=""]), iframe').each(function(){$(this).one("load error",function(){if(++count===total){callback()}}).each(function(){if(this.complete||this.src===""){$(this).trigger("load")}})})};var start=function(){if(slider.settings.infiniteLoop&&slider.settings.mode!=="fade"){var slice=slider.settings.mode==="vertical"?slider.settings.minSlides:slider.settings.maxSlides,sliceAppend=slider.children.slice(0,slice).clone(true).addClass("wpmslider-clone"),slicePrepend=slider.children.slice(-slice).clone(true).addClass("wpmslider-clone");if(slider.settings.ariaHidden){sliceAppend.attr("aria-hidden",true);slicePrepend.attr("aria-hidden",true)}el.append(sliceAppend).prepend(slicePrepend)}slider.loader.remove();if(slider.settings.mode==="vertical"){slider.settings.adaptiveHeight=true}el.redrawSlider();slider.settings.onSliderLoad.call(el,slider.active.index);slider.initialized=true;slider.visibilityInterval=setInterval(visibilityCheck,500);if(slider.settings.responsive){attachListeners()}if(slider.settings.auto&&slider.settings.autoStart&&(getPagerQty()>1||slider.settings.autoSlideForOnePage)){initAuto()}if(slider.settings.pager){updatePagerActive(slider.settings.startSlide)}if(slider.settings.controls){updateDirectionControls()}if(slider.settings.touchEnabled){initTouch()}if(slider.settings.keyboardEnabled){$(document).keydown(keyPress)}};var attachListeners=function(){window.addEventListener("resize",updateLayout,false);window.addEventListener("orientationchange",updateLayout,false);window.addEventListener("toggleFullContent",updateLayout,false);window.addEventListener("blur",function(){pauseEvent("blur")});window.addEventListener("focus",function(){playEvent("blur")})};var updateLayout=_.debounce(function(){if(slider.debug)console.log(slider.logAs,"updateLayout");resizeWindow()},250);var visibilityCheck=function(){if(!slider.settings.auto){return}if(!reallyVisible()){pauseEvent("hide")}else{playEvent("hide")}if(!verge.inViewport(el)){pauseEvent("scroll")}else{playEvent("scroll")}};var pauseEvent=function(action){if(slider.interval){el.stopAuto(true);slider.autoPaused=action;if(slider.debug)console.log(slider.logAs,"pause",action)}};var playEvent=function(action){if(slider.autoPaused===action){el.startAuto(true);slider.autoPaused=null;if(slider.debug)console.log(slider.logAs,"play",action)}};var setSlideHeight=function(){var heights=slider.children.map(function(){return jQuery(this).actual("outerHeight")}).get();var maxHeight=arrayMax(heights);slider.children.height(maxHeight)};var unsetSlideHeight=function(){slider.children.height("auto")};var arrayMax=function(array){return Math.max.apply(Math,array)};var getViewportHeight=function(){var height=0;var children=$();if(slider.settings.mode!=="vertical"&&!slider.settings.adaptiveHeight){children=slider.children}else{if(!slider.carousel){children=slider.children.eq(slider.active.index)}else{var currentIndex=slider.settings.moveSlides===1?slider.active.index:slider.active.index*getMoveBy();children=slider.children.eq(currentIndex);for(var i=1;i<=slider.settings.maxSlides-1;i++){if(currentIndex+i>=slider.children.length){children=children.add(slider.children.eq(i-1))}else{children=children.add(slider.children.eq(currentIndex+i))}}}}if(slider.settings.mode==="vertical"){children.each(function(index){height+=$(this).outerHeight()});if(slider.settings.slideMargin>0){height+=slider.settings.slideMargin*(slider.settings.minSlides-1)}}else{height=Math.max.apply(Math,children.map(function(){return $(this).outerHeight(false)}).get())}if(slider.viewport.css("box-sizing")==="border-box"){height+=parseFloat(slider.viewport.css("padding-top"))+parseFloat(slider.viewport.css("padding-bottom"))+parseFloat(slider.viewport.css("border-top-width"))+parseFloat(slider.viewport.css("border-bottom-width"))}else if(slider.viewport.css("box-sizing")==="padding-box"){height+=parseFloat(slider.viewport.css("padding-top"))+parseFloat(slider.viewport.css("padding-bottom"))}return height};var setViewportHeight=function(){slider.viewport.height(getViewportHeight()+2)};var getViewportMaxWidth2=function(){return"100%"};var getSlideWidth2=function(){var wrapWidth=slider.viewport.width();var margins=slider.settings.slideMargin*(slider.settings.maxSlides-1);return Math.floor((wrapWidth-margins)/slider.settings.maxSlides)};var getNumberSlidesShowing2=function(){return slider.settings.maxSlides};var getPagerQty=function(){var pagerQty=0,breakPoint=0,counter=0;if(slider.settings.moveSlides>0){if(slider.settings.infiniteLoop){pagerQty=Math.ceil(slider.children.length/getMoveBy())}else{while(breakPoint<slider.children.length){++pagerQty;breakPoint=counter+getNumberSlidesShowing2();counter+=slider.settings.moveSlides<=getNumberSlidesShowing2()?slider.settings.moveSlides:getNumberSlidesShowing2()}return counter}}else{pagerQty=Math.ceil(slider.children.length/getNumberSlidesShowing2())}return pagerQty};var getMoveBy=function(){if(slider.settings.moveSlides>0&&slider.settings.moveSlides<=getNumberSlidesShowing2()){return slider.settings.moveSlides}return getNumberSlidesShowing2()};var setSlidePosition=function(){var position,lastChild,lastShowingIndex;if(slider.children.length>slider.settings.maxSlides&&slider.active.last&&!slider.settings.infiniteLoop){if(slider.settings.mode==="horizontal"){lastChild=slider.children.last();position=lastChild.position();setPositionProperty(-(position.left-(slider.viewport.width()-lastChild.outerWidth())),"reset",0)}else if(slider.settings.mode==="vertical"){lastShowingIndex=slider.children.length-slider.settings.minSlides;position=slider.children.eq(lastShowingIndex).position();setPositionProperty(-position.top,"reset",0)}}else{position=slider.children.eq(slider.active.index*getMoveBy()).position();if(slider.active.index===getPagerQty()-1){slider.active.last=true}if(position!==undefined){if(slider.settings.mode==="horizontal"){setPositionProperty(-position.left,"reset",0)}else if(slider.settings.mode==="vertical"){setPositionProperty(-position.top,"reset",0)}else if(slider.settings.mode==="none"){setPositionProperty(-position.top,"reset",0)}}}};var setPositionProperty=function(value,type,duration,params){var animateObj,propValue;if(slider.usingCSS){if(slider.settings.mode==="vertical"){propValue="translateY("+value+"px)"}else if(slider.settings.mode==="horizontal"){propValue="translateX("+value+"px"}else if(slider.settings.mode==="none"){propValue="translateY("+value+"px)";duration=0}el.css("-"+slider.cssPrefix+"-transition-duration",duration/1e3+"s");if(type==="slide"){el.css(slider.animProp,propValue);if(duration!==0){el.on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",function(e){if(!$(e.target).is(el)){return}el.off("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd");updateAfterSlideTransition()})}else{updateAfterSlideTransition()}}else if(type==="reset"){el.css(slider.animProp,propValue)}}else{animateObj={};animateObj[slider.animProp]=value;if(type==="slide"){el.animate(animateObj,duration,slider.settings.easing,function(){updateAfterSlideTransition()})}else if(type==="reset"){el.css(slider.animProp,value)}}};var populatePager=function(){var pagerHtml="",linkContent="",pagerQty=getPagerQty();for(var i=0;i<pagerQty;i++){linkContent="";if(slider.settings.buildPager){if(slider.settings.buildPager==="icons"){linkContent=""}if($.isFunction(slider.settings.buildPager)||slider.settings.pagerCustom){linkContent=slider.settings.buildPager(i)}slider.pagerEl.addClass("wpmslider-custom-pager")}else{linkContent=i+1;slider.pagerEl.addClass("wpmslider-default-pager")}pagerHtml+='<div class="wpmslider-pager-item"><a href="" data-slide-index="'+i+'" class="wpmslider-pager-link">'+linkContent+"</a></div>"}slider.pagerEl.html(pagerHtml)};var appendPager=function(){if(!slider.settings.pagerCustom){slider.pagerEl=$('<div class="wpmslider-pager" />');if(slider.settings.pagerSelector){$(slider.settings.pagerSelector).html(slider.pagerEl)}else{slider.controls.el.addClass("wpmslider-has-pager").append(slider.pagerEl)}populatePager()}else{slider.pagerEl=$(slider.settings.pagerCustom)}slider.pagerEl.on("click touchend","a",clickPagerBind)};var appendControlPrev=function(){slider.controls.prev=$('<a class="wpmslider-prev" href="">'+slider.settings.prevText+"</a>");slider.controls.prev.on("click touchend",clickPrevBind);if(slider.settings.prevSelector){$(slider.settings.prevSelector).append(slider.controls.prev)}if(!slider.settings.prevSelector){slider.controls.directionEl=$('<div class="wpmslider-controls-direction" />');slider.controls.directionEl.append(slider.controls.prev);slider.controls.el.addClass("wpmslider-has-controls-direction").append(slider.controls.directionEl)}};var appendControlNext=function(){slider.controls.next=$('<a class="wpmslider-next" href="">'+slider.settings.nextText+"</a>");slider.controls.next.on("click touchend",clickNextBind);if(slider.settings.nextSelector){$(slider.settings.nextSelector).append(slider.controls.next)}if(!slider.settings.nextSelector){slider.controls.directionEl=$('<div class="wpmslider-controls-direction" />');slider.controls.directionEl.append(slider.controls.next);slider.controls.el.addClass("wpmslider-has-controls-direction").append(slider.controls.directionEl)}};var appendControlsAuto=function(){slider.controls.start=$('<div class="wpmslider-controls-auto-item"><a class="wpmslider-start" href="">'+slider.settings.startText+"</a></div>");slider.controls.stop=$('<div class="wpmslider-controls-auto-item"><a class="wpmslider-stop" href="">'+slider.settings.stopText+"</a></div>");slider.controls.autoEl=$('<div class="wpmslider-controls-auto" />');slider.controls.autoEl.on("click",".wpmslider-start",clickStartBind);slider.controls.autoEl.on("click",".wpmslider-stop",clickStopBind);if(slider.settings.autoControlsCombine){slider.controls.autoEl.append(slider.controls.start)}else{slider.controls.autoEl.append(slider.controls.start).append(slider.controls.stop)}if(slider.settings.autoControlsSelector){$(slider.settings.autoControlsSelector).html(slider.controls.autoEl)}else{slider.controls.el.addClass("wpmslider-has-controls-auto").append(slider.controls.autoEl)}updateAutoControls(slider.settings.autoStart?"stop":"start")};var appendCaptions=function(){slider.children.each(function(index){var title=$(this).find("img:first").attr("title");if(title!==undefined&&(""+title).length){$(this).append('<div class="wpmslider-caption"><span>'+title+"</span></div>")}})};var clickNextBind=function(e){e.preventDefault();e.stopPropagation();if(slider.controls.el.hasClass("disabled")){return}if(slider.settings.auto&&slider.settings.stopAutoOnClick){if(slider.debug)console.log(slider.logAs,"stop on navigation");el.stopAuto()}el.goToNextSlide()};var clickPrevBind=function(e){e.preventDefault();e.stopPropagation();if(slider.controls.el.hasClass("disabled")){return}if(slider.settings.auto&&slider.settings.stopAutoOnClick){if(slider.debug)console.log(slider.logAs,"stop on navigation");el.stopAuto()}el.goToPrevSlide()};var clickStartBind=function(e){el.startAuto();e.preventDefault();e.stopPropagation()};var clickStopBind=function(e){el.stopAuto();e.preventDefault();e.stopPropagation()};var clickPagerBind=function(e){var pagerLink,pagerIndex;e.preventDefault();e.stopPropagation();if(slider.controls.el.hasClass("disabled")){return}if(slider.settings.auto&&slider.settings.stopAutoOnClick){if(slider.debug)console.log(slider.logAs,"stop on navigation");el.stopAuto()}pagerLink=$(e.currentTarget);if(pagerLink.attr("data-slide-index")!==undefined){pagerIndex=parseInt(pagerLink.attr("data-slide-index"));if(pagerIndex!==slider.active.index){el.goToSlide(pagerIndex)}}};var updatePagerActive=function(slideIndex){var len=slider.children.length;if(slider.settings.pagerType==="short"){if(slider.settings.maxSlides>1){len=Math.ceil(slider.children.length/slider.settings.maxSlides)}slider.pagerEl.html(slideIndex+1+slider.settings.pagerShortSeparator+len);return}slider.pagerEl.find("a").removeClass("active");slider.pagerEl.each(function(i,el){$(el).find("a").eq(slideIndex).addClass("active")})};var updateAfterSlideTransition=function(){if(slider.settings.infiniteLoop){var position="";if(slider.active.index===0){position=slider.children.eq(0).position()}else if(slider.active.index===getPagerQty()-1&&slider.carousel){position=slider.children.eq((getPagerQty()-1)*getMoveBy()).position()}else if(slider.active.index===slider.children.length-1){position=slider.children.eq(slider.children.length-1).position()}if(position){if(slider.settings.mode==="horizontal"){setPositionProperty(-position.left,"reset",0)}else if(slider.settings.mode==="vertical"){setPositionProperty(-position.top,"reset",0)}}}slider.working=false;slider.settings.onSlideAfter.call(el,slider.children.eq(slider.active.index),slider.oldIndex,slider.active.index)};var updateAutoControls=function(state){if(slider.settings.autoControlsCombine){slider.controls.autoEl.html(slider.controls[state])}else{slider.controls.autoEl.find("a").removeClass("active");slider.controls.autoEl.find("a:not(.wpmslider-"+state+")").addClass("active")}};var updateDirectionControls=function(){if(getPagerQty()===1){slider.controls.prev.addClass("disabled");slider.controls.next.addClass("disabled")}else if(!slider.settings.infiniteLoop&&slider.settings.hideControlOnEnd){if(slider.active.index===0){slider.controls.prev.addClass("disabled");slider.controls.next.removeClass("disabled")}else if(slider.active.index===getPagerQty()-1){slider.controls.next.addClass("disabled");slider.controls.prev.removeClass("disabled")}else{slider.controls.prev.removeClass("disabled");slider.controls.next.removeClass("disabled")}}};var initAuto=function(){if(slider.settings.autoDelay>0){setTimeout(el.startAuto,slider.settings.autoDelay)}else{el.startAuto()}if(slider.settings.autoHover){el.hover(function(){pauseEvent("hover")},function(){playEvent("hover")})}};var keyPress=function(e){var activeElementTag=document.activeElement.tagName.toLowerCase(),tagFilters="input|textarea",p=new RegExp(activeElementTag,["i"]),result=p.exec(tagFilters);if(result===null&&verge.inViewport(el)){if(e.keyCode===39){clickNextBind(e);return false}else if(e.keyCode===37){clickPrevBind(e);return false}}};var initTouch=function(){slider.touch={start:{x:0,y:0},end:{x:0,y:0}};slider.viewport.on("touchstart MSPointerDown pointerdown",onTouchStart);slider.viewport.on("click",".wpmslider a",function(e){if(slider.viewport.hasClass("click-disabled")){e.preventDefault();e.stopPropagation();slider.viewport.removeClass("click-disabled")}})};var onTouchStart=function(e){if(e.type!=="touchstart"&&e.button!==0){return}slider.controls.el.addClass("disabled");if(slider.working){e.preventDefault();e.stopPropagation();slider.controls.el.removeClass("disabled")}else{slider.touch.originalPos=el.position();var orig=e.originalEvent,touchPoints=typeof orig.changedTouches!=="undefined"?orig.changedTouches:[orig];var chromePointerEvents=typeof PointerEvent==="function";if(chromePointerEvents){if(orig.pointerId===undefined){return}}slider.touch.start.x=touchPoints[0].pageX;slider.touch.start.y=touchPoints[0].pageY;if(slider.viewport.get(0).setPointerCapture){slider.pointerId=orig.pointerId;slider.viewport.get(0).setPointerCapture(slider.pointerId)}slider.originalClickTarget=orig.originalTarget||orig.target;slider.originalClickButton=orig.button;slider.originalClickButtons=orig.buttons;slider.originalEventType=orig.type;slider.hasMove=false;slider.viewport.on("touchmove MSPointerMove pointermove",onTouchMove);slider.viewport.on("touchend MSPointerUp pointerup",onTouchEnd);slider.viewport.on("MSPointerCancel pointercancel",onPointerCancel)}};var onPointerCancel=function(e){e.preventDefault();setPositionProperty(slider.touch.originalPos.left,"reset",0);slider.controls.el.removeClass("disabled");slider.viewport.off("MSPointerCancel pointercancel",onPointerCancel);slider.viewport.off("touchmove MSPointerMove pointermove",onTouchMove);slider.viewport.off("touchend MSPointerUp pointerup",onTouchEnd);if(slider.viewport.get(0).releasePointerCapture){slider.viewport.get(0).releasePointerCapture(slider.pointerId)}};var onTouchMove=function(e){var orig=e.originalEvent,touchPoints=typeof orig.changedTouches!=="undefined"?orig.changedTouches:[orig],xMovement=Math.abs(touchPoints[0].pageX-slider.touch.start.x),yMovement=Math.abs(touchPoints[0].pageY-slider.touch.start.y),value=0,change=0;slider.hasMove=true;if(xMovement*3>yMovement&&slider.settings.preventDefaultSwipeX){e.preventDefault();e.stopPropagation()}else if(yMovement*3>xMovement&&slider.settings.preventDefaultSwipeY){e.preventDefault();e.stopPropagation()}if(e.type!=="touchmove"){e.preventDefault()}if(slider.settings.mode!=="fade"&&slider.settings.oneToOneTouch){if(slider.settings.mode==="horizontal"){change=touchPoints[0].pageX-slider.touch.start.x;value=slider.touch.originalPos.left+change}else{change=touchPoints[0].pageY-slider.touch.start.y;value=slider.touch.originalPos.top+change}setPositionProperty(value,"reset",0)}};var onTouchEnd=function(e){e.preventDefault();slider.viewport.off("touchmove MSPointerMove pointermove",onTouchMove);slider.controls.el.removeClass("disabled");var orig=e.originalEvent,touchPoints=typeof orig.changedTouches!=="undefined"?orig.changedTouches:[orig],value=0,distance=0;slider.touch.end.x=touchPoints[0].pageX;slider.touch.end.y=touchPoints[0].pageY;if(slider.settings.mode==="fade"){distance=Math.abs(slider.touch.start.x-slider.touch.end.x);if(distance>=slider.settings.swipeThreshold){if(slider.touch.start.x>slider.touch.end.x){el.goToNextSlide()}else{el.goToPrevSlide()}el.stopAuto()}}else{if(slider.settings.mode==="horizontal"){distance=slider.touch.end.x-slider.touch.start.x;value=slider.touch.originalPos.left}else{distance=slider.touch.end.y-slider.touch.start.y;value=slider.touch.originalPos.top}if(!slider.settings.infiniteLoop&&(slider.active.index===0&&distance>0||slider.active.last&&distance<0)){setPositionProperty(value,"reset",200)}else{if(Math.abs(distance)>=slider.settings.swipeThreshold){if(distance<0){el.goToNextSlide()}else{el.goToPrevSlide()}el.stopAuto()}else{setPositionProperty(value,"reset",200)}}}slider.viewport.off("touchend MSPointerUp pointerup",onTouchEnd);if(slider.viewport.get(0).releasePointerCapture){slider.viewport.get(0).releasePointerCapture(slider.pointerId)}if(slider.hasMove===false&&(slider.originalClickButton===0||slider.originalEventType==="touchstart")){$(slider.originalClickTarget).trigger({type:"click",button:slider.originalClickButton,buttons:slider.originalClickButtons})}};var resizeWindow=function(e){if(!slider.initialized){if(slider.debug)console.log(slider.logAs,"slider not initialized");return}if(slider.working){if(slider.debug)console.log(slider.logAs,"slider working");window.setTimeout(resizeWindow,10)}else{el.redrawSlider();slider.settings.onSliderResize.call(el,slider.active.index)}};var applyAriaHiddenAttributes=function(startVisibleIndex){var numberOfSlidesShowing=getNumberSlidesShowing2();if(slider.settings.ariaHidden){slider.children.attr("aria-hidden","true");slider.children.slice(startVisibleIndex,startVisibleIndex+numberOfSlidesShowing).attr("aria-hidden","false")}};var setSlideIndex=function(slideIndex){if(slideIndex<0){if(slider.settings.infiniteLoop){return getPagerQty()-1}else{return slider.active.index}}else if(slideIndex>=getPagerQty()){if(slider.settings.infiniteLoop){return 0}else{return slider.active.index}}else{return slideIndex}};el.goToSlide=function(slideIndex,direction){var performTransition=true,moveBy=0,position={left:0,top:0},lastChild=null,lastShowingIndex,eq,value,requestEl;slider.oldIndex=slider.active.index;slider.active.index=setSlideIndex(slideIndex);if(slider.working||slider.active.index===slider.oldIndex){return}slider.working=true;performTransition=slider.settings.onSlideBefore.call(el,slider.children.eq(slider.active.index),slider.oldIndex,slider.active.index);if(typeof performTransition!=="undefined"&&!performTransition){slider.active.index=slider.oldIndex;slider.working=false;return}if(direction==="next"){if(!slider.settings.onSlideNext.call(el,slider.children.eq(slider.active.index),slider.oldIndex,slider.active.index)){performTransition=false}}else if(direction==="prev"){if(!slider.settings.onSlidePrev.call(el,slider.children.eq(slider.active.index),slider.oldIndex,slider.active.index)){performTransition=false}}slider.active.last=slider.active.index>=getPagerQty()-1;if(slider.settings.pager||slider.settings.pagerCustom){updatePagerActive(slider.active.index)}if(slider.settings.controls){updateDirectionControls()}if(slider.settings.mode==="fade"){if(slider.settings.adaptiveHeight&&slider.viewport.height()!==getViewportHeight()){slider.viewport.animate({height:getViewportHeight()},slider.settings.adaptiveHeightSpeed)}slider.children.filter(":visible").fadeOut(slider.settings.speed).css({zIndex:0});slider.children.eq(slider.active.index).css("zIndex",slider.settings.slideZIndex+1).fadeIn(slider.settings.speed,function(){$(this).css("zIndex",slider.settings.slideZIndex);updateAfterSlideTransition()})}else{if(slider.settings.adaptiveHeight&&slider.viewport.height()!==getViewportHeight()){slider.viewport.animate({height:getViewportHeight()},slider.settings.adaptiveHeightSpeed)}if(!slider.settings.infiniteLoop&&slider.carousel&&slider.active.last){if(slider.settings.mode==="horizontal"){lastChild=slider.children.eq(slider.children.length-1);position=lastChild.position();moveBy=slider.viewport.width()-lastChild.outerWidth()}else{lastShowingIndex=slider.children.length-slider.settings.minSlides;position=slider.children.eq(lastShowingIndex).position()}}else if(slider.carousel&&slider.active.last&&direction==="prev"){eq=slider.settings.moveSlides===1?slider.settings.maxSlides-getMoveBy():(getPagerQty()-1)*getMoveBy()-(slider.children.length-slider.settings.maxSlides);lastChild=el.children(".wpmslider-clone").eq(eq);position=lastChild.position()}else if(direction==="next"&&slider.active.index===0){position=el.find("> .wpmslider-clone").eq(slider.settings.maxSlides).position();slider.active.last=false}else if(slideIndex>=0){requestEl=slideIndex*parseInt(getMoveBy());position=slider.children.eq(requestEl).position()}if(typeof position!=="undefined"){value=slider.settings.mode==="horizontal"?-(position.left-moveBy):-position.top;setPositionProperty(value,"slide",slider.settings.speed)}slider.working=false}if(slider.settings.ariaHidden){applyAriaHiddenAttributes(slider.active.index*getMoveBy())}};el.goToNextSlide=function(){if(!slider.settings.infiniteLoop&&slider.active.last){return}if(slider.working===true){return}var pagerIndex=parseInt(slider.active.index)+1;el.goToSlide(pagerIndex,"next")};el.goToPrevSlide=function(){if(!slider.settings.infiniteLoop&&slider.active.index===0){return}if(slider.working===true){return}var pagerIndex=parseInt(slider.active.index)-1;el.goToSlide(pagerIndex,"prev")};el.startAuto=function(preventControlUpdate){if(slider.interval){return}slider.interval=setInterval(function(){if(slider.settings.autoDirection==="next"){el.goToNextSlide()}else{el.goToPrevSlide()}},slider.settings.pause);slider.settings.onAutoChange.call(el,true);if(slider.settings.autoControls&&preventControlUpdate!==true){updateAutoControls("stop")}};el.stopAuto=function(preventControlUpdate){if(slider.autoPaused)slider.autoPaused=false;if(!slider.interval){return}clearInterval(slider.interval);slider.interval=null;slider.settings.onAutoChange.call(el,false);if(slider.settings.autoControls&&preventControlUpdate!==true){updateAutoControls("start")}};el.getCurrentSlide=function(){return slider.active.index};el.getCurrentSlideElement=function(){return slider.children.eq(slider.active.index)};el.getSlideElement=function(index){return slider.children.eq(index)};el.getSlideCount=function(){return slider.children.length};el.isWorking=function(){return slider.working};el.redrawSlider=function(){if(slider.debug)console.log(slider.logAs,"redrawSlider");updateWidth();unsetSlideHeight();setViewportHeight();if(slider.settings.stretch){setSlideHeight()}slider.children.add(el.find(".wpmslider-clone")).outerWidth(getSlideWidth2());setSlidePosition();if(slider.active.last){slider.active.index=getPagerQty()-1}if(slider.active.index>=getPagerQty()){slider.active.last=true}if(slider.settings.pager&&!slider.settings.pagerCustom){populatePager();updatePagerActive(slider.active.index)}if(slider.settings.ariaHidden){applyAriaHiddenAttributes(slider.active.index*getMoveBy())}};el.destroySlider=function(){if(!slider.initialized){return}slider.initialized=false;$(".wpmslider-clone",this).remove();slider.children.each(function(){if($(this).data("origStyle")!==undefined){$(this).attr("style",$(this).data("origStyle"))}else{$(this).removeAttr("style")}});if($(this).data("origStyle")!==undefined){this.attr("style",$(this).data("origStyle"))}else{$(this).removeAttr("style")}$(this).unwrap().unwrap();if(slider.controls.el){slider.controls.el.remove()}if(slider.controls.next){slider.controls.next.remove()}if(slider.controls.prev){slider.controls.prev.remove()}if(slider.pagerEl&&slider.settings.controls&&!slider.settings.pagerCustom){slider.pagerEl.remove()}$(".wpmslider-caption",this).remove();if(slider.controls.autoEl){slider.controls.autoEl.remove()}clearInterval(slider.interval);clearInterval(slider.visibilityInterval);if(slider.settings.responsive){$(window).off("resize",resizeWindow)}if(slider.settings.keyboardEnabled){$(document).off("keydown",keyPress)}$(this).removeData("strongSlider")};el.reloadSlider=function(settings){if(settings!==undefined){options=settings}el.destroySlider();init();$(el).data("strongSlider",this)};init();$(el).data("strongSlider",this);viewEl.attr("data-state","init");if(slider.debug)console.log(slider.logAs,"viewport",verge.viewportW(),"x",verge.viewportH());return this}})(jQuery);
|
readme.txt
CHANGED
@@ -1,20 +1,20 @@
|
|
1 |
=== Strong Testimonials ===
|
2 |
-
Contributors: cdillon27
|
3 |
-
Tags: testimonials, testimonial slider, testimonial form,
|
4 |
-
Requires at least:
|
5 |
-
Requires PHP: 5.
|
6 |
Tested up to: 5.0
|
7 |
-
Stable tag: 2.
|
8 |
-
License:
|
9 |
-
License URI: http://www.gnu.org/licenses/gpl-
|
10 |
|
11 |
-
Simple yet powerful. Very customizable. Developer-friendly.
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
-
|
16 |
|
17 |
-
|
18 |
|
19 |
### Primary Features
|
20 |
|
@@ -39,11 +39,9 @@ In just a few steps, you will be collecting and publishing your testimonials or
|
|
39 |
|
40 |
### Style
|
41 |
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
>
|
46 |
-
> I will help with theme conflicts and a few tweaks. Otherwise, consider learning enough CSS to be dangerous or hiring a developer for a couple hours.
|
47 |
|
48 |
### Testimonial Submission Form
|
49 |
|
@@ -59,10 +57,6 @@ Send custom notification emails to multiple admins.
|
|
59 |
|
60 |
Submit the form via Ajax for use with plugins like [Popup Maker](https://wordpress.org/plugins/popup-maker/).
|
61 |
|
62 |
-
#### Free Add-on
|
63 |
-
|
64 |
-
Use the [Country Selector](https://wordpress.org/plugins/strong-testimonials-country-selector/) plugin to add a country selector to your form. [See the demo](https://strongdemos.com/strong-testimonials/form-examples/with-country-selector/).
|
65 |
-
|
66 |
### Displaying Testimonials
|
67 |
|
68 |
**Everything happens in a View**. Instead of learning multiple shortcodes with dozens of options, a View contains all the options in a simple, intuitive editor that no other testimonial plugin has.
|
@@ -98,35 +92,9 @@ However, this plugin provides features that may involve private data.
|
|
98 |
* If you enable comments on testimonials, the plugin will use your theme's single post template and comment form.
|
99 |
* If you embed third-party posts such as Twitter, YouTube and FaceBook in your testimonials, you will be agreeing to the Terms of Use of those third-party sites.
|
100 |
|
101 |
-
### Pro Add-ons
|
102 |
-
|
103 |
-
#### Assignment
|
104 |
-
|
105 |
-
Assign testimonials to any object (posts, pages, media or custom content types) with features designed to simplify your workflow. Works well with portfolio, directory and service business themes. [Learn more](https://strongplugins.com/plugins/strong-testimonials-assignment/?utm_source=wordpressorg&utm_medium=readme)
|
106 |
-
|
107 |
-
#### Review Markup
|
108 |
-
|
109 |
-
Testimonials are essentially five-star reviews. Adding review markup will improve search results and encourage search engines to display rich snippets (the stars). [Learn more](https://strongplugins.com/plugins/strong-testimonials-review-markup/?utm_source=wordpressorg&utm_medium=readme)
|
110 |
-
|
111 |
-
#### Multiple Forms
|
112 |
-
|
113 |
-
Create unlimited forms, each with their own custom fields, to tailor testimonials for different products, services and markets. [Learn more](https://strongplugins.com/plugins/strong-testimonials-multiple-forms/?utm_source=wordpressorg&utm_medium=readme)
|
114 |
-
|
115 |
-
#### Properties
|
116 |
-
|
117 |
-
Want to rebrand "testimonials" as "reviews", "customer stories" or something else? Want to change the permalink structure? Control every aspect front and back. [Learn more](https://strongplugins.com/plugins/strong-testimonials-properties/?utm_source=wordpressorg&utm_medium=readme)
|
118 |
-
|
119 |
-
### Documentation
|
120 |
-
|
121 |
-
* [Getting started](https://strongplugins.com/document/strong-testimonials/getting-started/?utm_source=wordpressorg&utm_medium=readme)
|
122 |
-
* [Star ratings](https://strongplugins.com/document/strong-testimonials/star-ratings/?utm_source=wordpressorg&utm_medium=readme)
|
123 |
-
* [Customizing the form](https://strongplugins.com/document/strong-testimonials/complete-example-customizing-form/?utm_source=wordpressorg&utm_medium=readme)
|
124 |
-
* and [more…](https://strongplugins.com/documents/?utm_source=wordpressorg&utm_medium=readme)
|
125 |
|
126 |
### Try these plugins too
|
127 |
|
128 |
-
* [FooBox Image Lightbox](https://wordpress.org/plugins/foobox-image-lightbox/) to view thumbnails as full-size images.
|
129 |
-
* [Simple CSS](https://wordpress.org/plugins/simple-css/) works great for quick CSS tweaks.
|
130 |
* [Wider Admin Menu](https://wordpress.org/plugins/wider-admin-menu/) lets your admin menu b r e a t h e.
|
131 |
|
132 |
== Installation ==
|
@@ -192,16 +160,6 @@ Yes. This requires a lightbox so if your theme does not include one, you will ne
|
|
192 |
|
193 |
No. If you already have testimonials in another plugin or theme, you will have to re-enter them. Why? Because every theme and plugin stores data differently.
|
194 |
|
195 |
-
= Is it true that including a link to my site in my support requests really helps you troubleshoot problems? =
|
196 |
-
|
197 |
-
Undeniably, yes.
|
198 |
-
|
199 |
-
This [screenshot](http://www.screencast.com/t/TPMRWM0yug) shows where I immediately start looking for clues before asking for more information and potentially waiting hours or days for a response (it happens).
|
200 |
-
|
201 |
-
I can usually determine what theme you're using, what plugins are active, whether you're using any caching/minification/optimization (do you need to clear your cache?), if there are any JavaScript errors in your theme or another plugin (more common than you may think), and somewhat how the testimonial view is configured.
|
202 |
-
|
203 |
-
If you prefer, start a private support ticket at [support.strongplugins.com](https://support.strongplugins.com).
|
204 |
-
|
205 |
== Screenshots ==
|
206 |
|
207 |
1. Slideshow
|
1 |
=== Strong Testimonials ===
|
2 |
+
Contributors: cdillon27, machothemes,silkalns
|
3 |
+
Tags: testimonials, testimonial slider, testimonial form, star ratings
|
4 |
+
Requires at least: 4.0
|
5 |
+
Requires PHP: 5.6
|
6 |
Tested up to: 5.0
|
7 |
+
Stable tag: 2.33
|
8 |
+
License: GPLv3 or later
|
9 |
+
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
11 |
+
Simple yet powerful. Very customizable. Developer-friendly.
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
+
**Strong Testimonials** is a standalone plugin built, maintained & operated by the friendly folks over at [MachoThemes](https://www.machothemes.com/)
|
16 |
|
17 |
+
In just a few steps, you will be collecting and publishing your testimonials or reviews. Beginners and pros alike will appreciate the wealth of flexible features refined over 4 years from user feedback and requests.
|
18 |
|
19 |
### Primary Features
|
20 |
|
39 |
|
40 |
### Style
|
41 |
|
42 |
+
This plugin provides a few designs with only basic style options for background color and font color. Everything else will be inherited from your theme.
|
43 |
+
|
44 |
+
Some templates have light & dark versions and other options. If you want to customize things like fonts, margins and borders, you will need custom CSS.
|
|
|
|
|
45 |
|
46 |
### Testimonial Submission Form
|
47 |
|
57 |
|
58 |
Submit the form via Ajax for use with plugins like [Popup Maker](https://wordpress.org/plugins/popup-maker/).
|
59 |
|
|
|
|
|
|
|
|
|
60 |
### Displaying Testimonials
|
61 |
|
62 |
**Everything happens in a View**. Instead of learning multiple shortcodes with dozens of options, a View contains all the options in a simple, intuitive editor that no other testimonial plugin has.
|
92 |
* If you enable comments on testimonials, the plugin will use your theme's single post template and comment form.
|
93 |
* If you embed third-party posts such as Twitter, YouTube and FaceBook in your testimonials, you will be agreeing to the Terms of Use of those third-party sites.
|
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
|
96 |
### Try these plugins too
|
97 |
|
|
|
|
|
98 |
* [Wider Admin Menu](https://wordpress.org/plugins/wider-admin-menu/) lets your admin menu b r e a t h e.
|
99 |
|
100 |
== Installation ==
|
160 |
|
161 |
No. If you already have testimonials in another plugin or theme, you will have to re-enter them. Why? Because every theme and plugin stores data differently.
|
162 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
== Screenshots ==
|
164 |
|
165 |
1. Slideshow
|
strong-testimonials.php
CHANGED
@@ -1,22 +1,31 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Plugin Name:
|
4 |
-
*
|
5 |
-
*
|
6 |
-
*
|
7 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
*
|
9 |
-
*
|
10 |
-
*
|
11 |
-
* Domain Path: /languages
|
12 |
-
* Requires: 3.7 or higher
|
13 |
-
* License: GPLv2 or later
|
14 |
*
|
15 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
*
|
17 |
* This program is free software; you can redistribute it and/or modify
|
18 |
* it under the terms of the GNU General Public License as published by
|
19 |
-
* the Free Software Foundation; either version
|
20 |
* (at your option) any later version.
|
21 |
*
|
22 |
* This program is distributed in the hope that it will be useful,
|
@@ -34,7 +43,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
34 |
exit;
|
35 |
}
|
36 |
|
37 |
-
define( 'WPMTST_VERSION', '2.
|
38 |
define( 'WPMTST_PLUGIN', plugin_basename( __FILE__ ) ); // strong-testimonials/strong-testimonials.php
|
39 |
define( 'WPMTST', dirname( WPMTST_PLUGIN ) ); // strong-testimonials
|
40 |
define( 'STRONGPLUGINS_STORE_URL', 'https://strongplugins.com' );
|
@@ -281,15 +290,6 @@ final class Strong_Testimonials {
|
|
281 |
require_once WPMTST_ADMIN . 'view-list-order.php';
|
282 |
require_once WPMTST_ADMIN . 'views-validate.php';
|
283 |
|
284 |
-
/**
|
285 |
-
* Add-on plugin updater.
|
286 |
-
*
|
287 |
-
* @since 2.1
|
288 |
-
*/
|
289 |
-
if ( ! class_exists( 'EDD_SL_Plugin_Updater' ) ) {
|
290 |
-
include WPMTST_ADMIN . 'edd/EDD_SL_Plugin_Updater.php';
|
291 |
-
}
|
292 |
-
include WPMTST_ADMIN . 'edd/Strong_Plugin_Updater.php';
|
293 |
}
|
294 |
}
|
295 |
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Plugin Name: Strong Testimonials
|
4 |
+
* Description: Collect and display your testimonials or reviews.
|
5 |
+
* Author: MachoThemes
|
6 |
+
* Version: 2.33
|
7 |
+
* Author URI: https://www.machothemes.com/
|
8 |
+
* Text Domain: strong-testimonials
|
9 |
+
* Domain Path: /languages
|
10 |
+
* Requires: 4.0 or higher
|
11 |
+
* License: GPLv3 or later
|
12 |
+
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
13 |
+
* Requires PHP: 5.6
|
14 |
*
|
15 |
+
* Copyright 2014-2019 Chris Dillon chris@strongwp.com
|
16 |
+
* Copyright 2019 MachoThemes office@machothemes.com
|
|
|
|
|
|
|
17 |
*
|
18 |
+
* Original Plugin URI: https://strongplugins.com/plugins/strong-testimonials
|
19 |
+
* Original Author URI: https://strongplugins.com
|
20 |
+
* Original Author: https://profiles.wordpress.org/cdillon27/
|
21 |
+
*
|
22 |
+
* NOTE:
|
23 |
+
* Chris Dillon ownership rights were ceased on: 01/20/2019 06:52:23 PM when ownership was turned over to MachoThemes
|
24 |
+
* MachoThemes ownership started on: 01/20/2019 06:52:24 PM
|
25 |
*
|
26 |
* This program is free software; you can redistribute it and/or modify
|
27 |
* it under the terms of the GNU General Public License as published by
|
28 |
+
* the Free Software Foundation; either version 3 of the License, or
|
29 |
* (at your option) any later version.
|
30 |
*
|
31 |
* This program is distributed in the hope that it will be useful,
|
43 |
exit;
|
44 |
}
|
45 |
|
46 |
+
define( 'WPMTST_VERSION', '2.33' );
|
47 |
define( 'WPMTST_PLUGIN', plugin_basename( __FILE__ ) ); // strong-testimonials/strong-testimonials.php
|
48 |
define( 'WPMTST', dirname( WPMTST_PLUGIN ) ); // strong-testimonials
|
49 |
define( 'STRONGPLUGINS_STORE_URL', 'https://strongplugins.com' );
|
290 |
require_once WPMTST_ADMIN . 'view-list-order.php';
|
291 |
require_once WPMTST_ADMIN . 'views-validate.php';
|
292 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
}
|
294 |
}
|
295 |
|
templates-scss/_partials/_base.scss
CHANGED
@@ -33,6 +33,18 @@
|
|
33 |
.testimonial-field-before {
|
34 |
margin-right: 0.5em;
|
35 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
}
|
37 |
|
38 |
.strong-view {
|
33 |
.testimonial-field-before {
|
34 |
margin-right: 0.5em;
|
35 |
}
|
36 |
+
|
37 |
+
a.readmore,
|
38 |
+
a.readmore-toggle {
|
39 |
+
white-space: nowrap;
|
40 |
+
z-index: 100;
|
41 |
+
}
|
42 |
+
|
43 |
+
a.readmore-toggle {
|
44 |
+
&:hover {
|
45 |
+
cursor: pointer;
|
46 |
+
}
|
47 |
+
}
|
48 |
}
|
49 |
|
50 |
.strong-view {
|
templates/bold/content.css
CHANGED
@@ -54,6 +54,14 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
|
|
54 |
.strong-view.bold .testimonial-field-before {
|
55 |
margin-right: 0.5em;
|
56 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
.strong-view.slider-container {
|
59 |
opacity: 1;
|
54 |
.strong-view.bold .testimonial-field-before {
|
55 |
margin-right: 0.5em;
|
56 |
}
|
57 |
+
.strong-view.bold a.readmore,
|
58 |
+
.strong-view.bold a.readmore-toggle {
|
59 |
+
white-space: nowrap;
|
60 |
+
z-index: 100;
|
61 |
+
}
|
62 |
+
.strong-view.bold a.readmore-toggle:hover {
|
63 |
+
cursor: pointer;
|
64 |
+
}
|
65 |
|
66 |
.strong-view.slider-container {
|
67 |
opacity: 1;
|
templates/default/content.css
CHANGED
@@ -54,6 +54,14 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
|
|
54 |
.strong-view.default .testimonial-field-before {
|
55 |
margin-right: 0.5em;
|
56 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
.strong-view.slider-container {
|
59 |
opacity: 1;
|
54 |
.strong-view.default .testimonial-field-before {
|
55 |
margin-right: 0.5em;
|
56 |
}
|
57 |
+
.strong-view.default a.readmore,
|
58 |
+
.strong-view.default a.readmore-toggle {
|
59 |
+
white-space: nowrap;
|
60 |
+
z-index: 100;
|
61 |
+
}
|
62 |
+
.strong-view.default a.readmore-toggle:hover {
|
63 |
+
cursor: pointer;
|
64 |
+
}
|
65 |
|
66 |
.strong-view.slider-container {
|
67 |
opacity: 1;
|
templates/modern/content.css
CHANGED
@@ -54,6 +54,14 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
|
|
54 |
.strong-view.modern .testimonial-field-before {
|
55 |
margin-right: 0.5em;
|
56 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
.strong-view.slider-container {
|
59 |
opacity: 1;
|
54 |
.strong-view.modern .testimonial-field-before {
|
55 |
margin-right: 0.5em;
|
56 |
}
|
57 |
+
.strong-view.modern a.readmore,
|
58 |
+
.strong-view.modern a.readmore-toggle {
|
59 |
+
white-space: nowrap;
|
60 |
+
z-index: 100;
|
61 |
+
}
|
62 |
+
.strong-view.modern a.readmore-toggle:hover {
|
63 |
+
cursor: pointer;
|
64 |
+
}
|
65 |
|
66 |
.strong-view.slider-container {
|
67 |
opacity: 1;
|
templates/simple/content.css
CHANGED
@@ -54,6 +54,14 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
|
|
54 |
.strong-view.simple .testimonial-field-before {
|
55 |
margin-right: 0.5em;
|
56 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
.strong-view.slider-container {
|
59 |
opacity: 1;
|
54 |
.strong-view.simple .testimonial-field-before {
|
55 |
margin-right: 0.5em;
|
56 |
}
|
57 |
+
.strong-view.simple a.readmore,
|
58 |
+
.strong-view.simple a.readmore-toggle {
|
59 |
+
white-space: nowrap;
|
60 |
+
z-index: 100;
|
61 |
+
}
|
62 |
+
.strong-view.simple a.readmore-toggle:hover {
|
63 |
+
cursor: pointer;
|
64 |
+
}
|
65 |
|
66 |
.strong-view.slider-container {
|
67 |
opacity: 1;
|
templates/small-widget/content.css
CHANGED
@@ -54,6 +54,14 @@ Thanks https://css-tricks.com/minimum-paragraph-widths/
|
|
54 |
.strong-view.small-widget .testimonial-field-before {
|
55 |
margin-right: 0.5em;
|
56 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
.strong-view.slider-container {
|
59 |
opacity: 1;
|
54 |
.strong-view.small-widget .testimonial-field-before {
|
55 |
margin-right: 0.5em;
|
56 |
}
|
57 |
+
.strong-view.small-widget a.readmore,
|
58 |
+
.strong-view.small-widget a.readmore-toggle {
|
59 |
+
white-space: nowrap;
|
60 |
+
z-index: 100;
|
61 |
+
}
|
62 |
+
.strong-view.small-widget a.readmore-toggle:hover {
|
63 |
+
cursor: pointer;
|
64 |
+
}
|
65 |
|
66 |
.strong-view.slider-container {
|
67 |
opacity: 1;
|