Version Description
- If upgrading, bxSlider will not be enabled by default. You must enable it in your widget and global settings. CSS customizations must be reviewed to have the
.active
and.display-none
classes removed. The main.testimonials-widget-testimonial
class also need thedisplay: none;
andclear: left;
removed.
Download this release
Release Info
Developer | comprock |
Plugin | Testimonials Widget |
Version | 2.15.0 |
Comparing to | |
See all releases |
Code changes from version 2.14.0 to 2.15.0
- API.md +4 -0
- CHANGELOG.md +29 -0
- TODO.md +4 -4
- ci/phpcs.ruleset.xml +5 -2
- ci/phpcs.travis.ruleset.xml +4 -1
- css/images/bx_loader.gif +0 -0
- css/images/controls.png +0 -0
- css/jquery.bxslider.css +197 -0
- css/testimonials-widget-2.14.0.css +120 -0
- css/testimonials-widget-ie7.css +15 -0
- js/jquery.bxslider.js +1315 -0
- js/jquery.easing.1.3.js +205 -0
- js/jquery.fitvids.js +80 -0
- languages/testimonials-widget.pot +292 -226
- lib/class-testimonials-widget-settings.php +219 -95
- lib/class-testimonials-widget-widget.php +10 -1
- readme.txt +65 -65
- testimonials-widget.css +9 -15
- testimonials-widget.php +162 -75
API.md
CHANGED
@@ -32,6 +32,10 @@ The [Testimonials Widget plugin](http://wordpress.org/plugins/testimonials-widge
|
|
32 |
|
33 |
More content ellipsis. [example](https://aihrus.zendesk.com/entries/23691577-How-do-I-change-the-more-content-ellipsis-)
|
34 |
|
|
|
|
|
|
|
|
|
35 |
* `testimonials_widget_get_testimonial_html`
|
36 |
|
37 |
Customize testimonial contents and layout within `get_testimonial_html`. Useful for moving processed parts around than regenerating everything from scratch.. [example](https://aihrus.zendesk.com/entries/23693433-How-do-I-use-filter-testimonials-widget-get-testimonial-html-)
|
32 |
|
33 |
More content ellipsis. [example](https://aihrus.zendesk.com/entries/23691577-How-do-I-change-the-more-content-ellipsis-)
|
34 |
|
35 |
+
* `testimonials_widget_get_testimonials_html`
|
36 |
+
|
37 |
+
Customize the contents and layout within `get_testimonials_html`.
|
38 |
+
|
39 |
* `testimonials_widget_get_testimonial_html`
|
40 |
|
41 |
Customize testimonial contents and layout within `get_testimonial_html`. Useful for moving processed parts around than regenerating everything from scratch.. [example](https://aihrus.zendesk.com/entries/23693433-How-do-I-use-filter-testimonials-widget-get-testimonial-html-)
|
CHANGELOG.md
CHANGED
@@ -2,6 +2,35 @@
|
|
2 |
|
3 |
## master
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
## 2.14.0
|
6 |
* Abstact schema generation
|
7 |
* Add API action testimonials_widget_styles
|
2 |
|
3 |
## master
|
4 |
|
5 |
+
## 2.15.0
|
6 |
+
* Add 2.15.0 upgrade notice
|
7 |
+
* Add filter `testimonials_widget_get_testimonials_html`
|
8 |
+
* Add option Always Load CSS?
|
9 |
+
* Add option Enable Video?
|
10 |
+
* Add option Start/Stop
|
11 |
+
* Add option Transition Mode
|
12 |
+
* BUGFIX JS slider_var not global
|
13 |
+
* BUGFIX active and display-none classes still included though using bxSlider
|
14 |
+
* Bump $2 donation request to $5
|
15 |
+
* Hide non-widget settings
|
16 |
+
* If upgrading, bxSlider will not be enabled by default. You must enable it in your widget and global settings. CSS customizations must be reviewed to have the `.active` and `.display-none` classes removed. The main `.testimonials-widget-testimonial` class also need the `display: none;` and `clear: left;` removed.
|
17 |
+
* Match transition defaults to those of current testimonials widget
|
18 |
+
* Move 2.14.0 transition options to Compatibility tab
|
19 |
+
* Move height options to Compatibility tab
|
20 |
+
* Moved testimonials-widget-2.14.0.css -> css/testimonials-widget-2.14.0.css
|
21 |
+
* Moved testimonials-widget-ie7.css -> css/testimonials-widget-ie7.css
|
22 |
+
* Reduce `empty` usage
|
23 |
+
* Require at least WordPress 3.6
|
24 |
+
* Simplify `wp_enqueue_style` handling
|
25 |
+
* Update .travis for phpmd exclusions
|
26 |
+
* Update FAQ
|
27 |
+
* Update PHPCS config
|
28 |
+
* Update TODO
|
29 |
+
* Use const JS_KEY
|
30 |
+
* [Auto-suggest category and tag options](http://wordpress.org/support/topic/feature-request-menus-in-the-widget)
|
31 |
+
* [Responsively set height](http://wordpress.org/support/topic/better-set-height?replies=3#post-4788316)
|
32 |
+
* [Use bxSlider JavaScript slider](http://bxslider.com/examples/auto-show-start-stop-controls) to make the transitions and navigation more slider like with a [pause button on testimonials](http://wordpress.org/support/topic/play-pause-icon-on-testimonial)
|
33 |
+
|
34 |
## 2.14.0
|
35 |
* Abstact schema generation
|
36 |
* Add API action testimonials_widget_styles
|
TODO.md
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
|
3 |
Is there something you want done? Write it up on the [support forums](http://wordpress.org/support/plugin/testimonials-widget) and then [donate](http://aihr.us/about-aihrus/donate/) or [write an awesome testimonial](http://aihr.us/about-aihrus/testimonials/add-testimonial/).
|
4 |
|
5 |
-
*
|
|
|
|
|
6 |
* Consolidate schema by testimonial item
|
7 |
-
* Show settings save errors
|
8 |
-
* [Auto-suggest category and tag options](http://wordpress.org/support/topic/feature-request-menus-in-the-widget)
|
9 |
* [CONFLICT](https://aihrus.zendesk.com/agent/#/tickets/562) Widgets Reloaded plugin - no longer allow me to exclude categories
|
10 |
-
* [Use bxSlider JavaScript slider](http://bxslider.com/examples/auto-show-start-stop-controls) to make the transitions and navigation more slider like with a [pause button on testimonials](http://wordpress.org/support/topic/play-pause-icon-on-testimonial)
|
2 |
|
3 |
Is there something you want done? Write it up on the [support forums](http://wordpress.org/support/plugin/testimonials-widget) and then [donate](http://aihr.us/about-aihrus/donate/) or [write an awesome testimonial](http://aihr.us/about-aihrus/testimonials/add-testimonial/).
|
4 |
|
5 |
+
* 3.X Remove prior version options
|
6 |
+
* Add easing options - http://bxslider.com/examples/easing, http://gsgd.co.uk/sandbox/jquery/easing/
|
7 |
+
* BUG Saving settings doesn't show update notice
|
8 |
* Consolidate schema by testimonial item
|
9 |
+
* Show settings save errors in error notices
|
|
|
10 |
* [CONFLICT](https://aihrus.zendesk.com/agent/#/tickets/562) Widgets Reloaded plugin - no longer allow me to exclude categories
|
|
ci/phpcs.ruleset.xml
CHANGED
@@ -4,8 +4,11 @@
|
|
4 |
Custom phpcs rules to check for Aihrus' WordPress projects
|
5 |
</description>
|
6 |
|
7 |
-
<exclude-pattern>
|
|
|
|
|
8 |
<exclude-pattern>lib/Akismet.class.php</exclude-pattern>
|
|
|
9 |
|
10 |
<rule ref="Generic">
|
11 |
<exclude name="Generic.CodeAnalysis.UnusedFunctionParameter.Found" />
|
@@ -29,6 +32,6 @@
|
|
29 |
</rule>
|
30 |
|
31 |
<rule ref="WordPress">
|
32 |
-
<
|
33 |
</rule>
|
34 |
</ruleset>
|
4 |
Custom phpcs rules to check for Aihrus' WordPress projects
|
5 |
</description>
|
6 |
|
7 |
+
<exclude-pattern>js/jquery.bxslider.js</exclude-pattern>
|
8 |
+
<exclude-pattern>js/jquery.easing.1.3.js</exclude-pattern>
|
9 |
+
<exclude-pattern>js/jquery.fitvids.js</exclude-pattern>
|
10 |
<exclude-pattern>lib/Akismet.class.php</exclude-pattern>
|
11 |
+
<exclude-pattern>lib/class-redrokk-metabox-class.php</exclude-pattern>
|
12 |
|
13 |
<rule ref="Generic">
|
14 |
<exclude name="Generic.CodeAnalysis.UnusedFunctionParameter.Found" />
|
32 |
</rule>
|
33 |
|
34 |
<rule ref="WordPress">
|
35 |
+
<exclude name="WordPress.XSS.EscapeOutput" />
|
36 |
</rule>
|
37 |
</ruleset>
|
ci/phpcs.travis.ruleset.xml
CHANGED
@@ -4,8 +4,11 @@
|
|
4 |
Custom phpcs rules to check for Aihrus' WordPress projects
|
5 |
</description>
|
6 |
|
7 |
-
<exclude-pattern>
|
|
|
|
|
8 |
<exclude-pattern>lib/Akismet.class.php</exclude-pattern>
|
|
|
9 |
|
10 |
<rule ref="Generic">
|
11 |
<exclude name="Generic.CodeAnalysis.UnusedFunctionParameter.Found" />
|
4 |
Custom phpcs rules to check for Aihrus' WordPress projects
|
5 |
</description>
|
6 |
|
7 |
+
<exclude-pattern>js/jquery.bxslider.js</exclude-pattern>
|
8 |
+
<exclude-pattern>js/jquery.easing.1.3.js</exclude-pattern>
|
9 |
+
<exclude-pattern>js/jquery.fitvids.js</exclude-pattern>
|
10 |
<exclude-pattern>lib/Akismet.class.php</exclude-pattern>
|
11 |
+
<exclude-pattern>lib/class-redrokk-metabox-class.php</exclude-pattern>
|
12 |
|
13 |
<rule ref="Generic">
|
14 |
<exclude name="Generic.CodeAnalysis.UnusedFunctionParameter.Found" />
|
css/images/bx_loader.gif
ADDED
Binary file
|
css/images/controls.png
ADDED
Binary file
|
css/jquery.bxslider.css
ADDED
@@ -0,0 +1,197 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* BxSlider v4.0 - Fully loaded, responsive content slider
|
3 |
+
* http://bxslider.com
|
4 |
+
*
|
5 |
+
* Written by: Steven Wanderski, 2012
|
6 |
+
* http://stevenwanderski.com
|
7 |
+
* (while drinking Belgian ales and listening to jazz)
|
8 |
+
*
|
9 |
+
* CEO and founder of bxCreative, LTD
|
10 |
+
* http://bxcreative.com
|
11 |
+
*/
|
12 |
+
|
13 |
+
|
14 |
+
/** RESET AND LAYOUT
|
15 |
+
===================================*/
|
16 |
+
|
17 |
+
.bx-wrapper {
|
18 |
+
position: relative;
|
19 |
+
margin: 0 auto 60px;
|
20 |
+
padding: 0;
|
21 |
+
*zoom: 1;
|
22 |
+
}
|
23 |
+
|
24 |
+
.bx-wrapper img {
|
25 |
+
max-width: 100%;
|
26 |
+
display: block;
|
27 |
+
}
|
28 |
+
|
29 |
+
/** THEME
|
30 |
+
===================================*/
|
31 |
+
|
32 |
+
.bx-wrapper .bx-viewport {
|
33 |
+
-moz-box-shadow: 0 0 5px #ccc;
|
34 |
+
-webkit-box-shadow: 0 0 5px #ccc;
|
35 |
+
box-shadow: 0 0 5px #ccc;
|
36 |
+
border: solid #fff 5px;
|
37 |
+
left: -5px;
|
38 |
+
background: #fff;
|
39 |
+
}
|
40 |
+
|
41 |
+
.bx-wrapper .bx-pager,
|
42 |
+
.bx-wrapper .bx-controls-auto {
|
43 |
+
position: absolute;
|
44 |
+
bottom: -30px;
|
45 |
+
width: 100%;
|
46 |
+
}
|
47 |
+
|
48 |
+
/* LOADER */
|
49 |
+
|
50 |
+
.bx-wrapper .bx-loading {
|
51 |
+
min-height: 50px;
|
52 |
+
background: url(images/bx_loader.gif) center center no-repeat #fff;
|
53 |
+
height: 100%;
|
54 |
+
width: 100%;
|
55 |
+
position: absolute;
|
56 |
+
top: 0;
|
57 |
+
left: 0;
|
58 |
+
z-index: 2000;
|
59 |
+
}
|
60 |
+
|
61 |
+
/* PAGER */
|
62 |
+
|
63 |
+
.bx-wrapper .bx-pager {
|
64 |
+
text-align: center;
|
65 |
+
font-size: .85em;
|
66 |
+
font-family: Arial;
|
67 |
+
font-weight: bold;
|
68 |
+
color: #666;
|
69 |
+
padding-top: 20px;
|
70 |
+
}
|
71 |
+
|
72 |
+
.bx-wrapper .bx-pager .bx-pager-item,
|
73 |
+
.bx-wrapper .bx-controls-auto .bx-controls-auto-item {
|
74 |
+
display: inline-block;
|
75 |
+
*zoom: 1;
|
76 |
+
*display: inline;
|
77 |
+
}
|
78 |
+
|
79 |
+
.bx-wrapper .bx-pager.bx-default-pager a {
|
80 |
+
background: #666;
|
81 |
+
text-indent: -9999px;
|
82 |
+
display: block;
|
83 |
+
width: 10px;
|
84 |
+
height: 10px;
|
85 |
+
margin: 0 5px;
|
86 |
+
outline: 0;
|
87 |
+
-moz-border-radius: 5px;
|
88 |
+
-webkit-border-radius: 5px;
|
89 |
+
border-radius: 5px;
|
90 |
+
}
|
91 |
+
|
92 |
+
.bx-wrapper .bx-pager.bx-default-pager a:hover,
|
93 |
+
.bx-wrapper .bx-pager.bx-default-pager a.active {
|
94 |
+
background: #000;
|
95 |
+
}
|
96 |
+
|
97 |
+
/* DIRECTION CONTROLS (NEXT / PREV) */
|
98 |
+
|
99 |
+
.bx-wrapper .bx-prev {
|
100 |
+
left: 10px;
|
101 |
+
background: url(images/controls.png) no-repeat 0 -32px;
|
102 |
+
}
|
103 |
+
|
104 |
+
.bx-wrapper .bx-next {
|
105 |
+
right: 10px;
|
106 |
+
background: url(images/controls.png) no-repeat -43px -32px;
|
107 |
+
}
|
108 |
+
|
109 |
+
.bx-wrapper .bx-prev:hover {
|
110 |
+
background-position: 0 0;
|
111 |
+
}
|
112 |
+
|
113 |
+
.bx-wrapper .bx-next:hover {
|
114 |
+
background-position: -43px 0;
|
115 |
+
}
|
116 |
+
|
117 |
+
.bx-wrapper .bx-controls-direction a {
|
118 |
+
position: absolute;
|
119 |
+
top: 50%;
|
120 |
+
margin-top: -16px;
|
121 |
+
outline: 0;
|
122 |
+
width: 32px;
|
123 |
+
height: 32px;
|
124 |
+
text-indent: -9999px;
|
125 |
+
z-index: 9999;
|
126 |
+
}
|
127 |
+
|
128 |
+
.bx-wrapper .bx-controls-direction a.disabled {
|
129 |
+
display: none;
|
130 |
+
}
|
131 |
+
|
132 |
+
/* AUTO CONTROLS (START / STOP) */
|
133 |
+
|
134 |
+
.bx-wrapper .bx-controls-auto {
|
135 |
+
text-align: center;
|
136 |
+
}
|
137 |
+
|
138 |
+
.bx-wrapper .bx-controls-auto .bx-start {
|
139 |
+
display: block;
|
140 |
+
text-indent: -9999px;
|
141 |
+
width: 10px;
|
142 |
+
height: 11px;
|
143 |
+
outline: 0;
|
144 |
+
background: url(images/controls.png) -86px -11px no-repeat;
|
145 |
+
margin: 0 3px;
|
146 |
+
}
|
147 |
+
|
148 |
+
.bx-wrapper .bx-controls-auto .bx-start:hover,
|
149 |
+
.bx-wrapper .bx-controls-auto .bx-start.active {
|
150 |
+
background-position: -86px 0;
|
151 |
+
}
|
152 |
+
|
153 |
+
.bx-wrapper .bx-controls-auto .bx-stop {
|
154 |
+
display: block;
|
155 |
+
text-indent: -9999px;
|
156 |
+
width: 9px;
|
157 |
+
height: 11px;
|
158 |
+
outline: 0;
|
159 |
+
background: url(images/controls.png) -86px -44px no-repeat;
|
160 |
+
margin: 0 3px;
|
161 |
+
}
|
162 |
+
|
163 |
+
.bx-wrapper .bx-controls-auto .bx-stop:hover,
|
164 |
+
.bx-wrapper .bx-controls-auto .bx-stop.active {
|
165 |
+
background-position: -86px -33px;
|
166 |
+
}
|
167 |
+
|
168 |
+
/* PAGER WITH AUTO-CONTROLS HYBRID LAYOUT */
|
169 |
+
|
170 |
+
.bx-wrapper .bx-controls.bx-has-controls-auto.bx-has-pager .bx-pager {
|
171 |
+
text-align: left;
|
172 |
+
width: 80%;
|
173 |
+
}
|
174 |
+
|
175 |
+
.bx-wrapper .bx-controls.bx-has-controls-auto.bx-has-pager .bx-controls-auto {
|
176 |
+
right: 0;
|
177 |
+
width: 35px;
|
178 |
+
}
|
179 |
+
|
180 |
+
/* IMAGE CAPTIONS */
|
181 |
+
|
182 |
+
.bx-wrapper .bx-caption {
|
183 |
+
position: absolute;
|
184 |
+
bottom: 0;
|
185 |
+
left: 0;
|
186 |
+
background: #666\9;
|
187 |
+
background: rgba(80, 80, 80, 0.75);
|
188 |
+
width: 100%;
|
189 |
+
}
|
190 |
+
|
191 |
+
.bx-wrapper .bx-caption span {
|
192 |
+
color: #fff;
|
193 |
+
font-family: Arial;
|
194 |
+
display: block;
|
195 |
+
font-size: .85em;
|
196 |
+
padding: 10px;
|
197 |
+
}
|
css/testimonials-widget-2.14.0.css
ADDED
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.testimonials-widget-testimonials {
|
2 |
+
/* testimonials wrapper */
|
3 |
+
}
|
4 |
+
|
5 |
+
.testimonials-widget-testimonial {
|
6 |
+
clear: left;
|
7 |
+
display: none;
|
8 |
+
margin: 0 0 1.4em;
|
9 |
+
}
|
10 |
+
|
11 |
+
.testimonials-widget-testimonials .active {
|
12 |
+
/* active testimonials */
|
13 |
+
display: block;
|
14 |
+
}
|
15 |
+
|
16 |
+
.testimonials-widget-testimonials .display-none {
|
17 |
+
/* staged testimonials */
|
18 |
+
display: none;
|
19 |
+
}
|
20 |
+
|
21 |
+
.testimonials-widget-testimonials .paging {
|
22 |
+
clear: both;
|
23 |
+
font-weight: 700;
|
24 |
+
height: 1.4em;
|
25 |
+
}
|
26 |
+
|
27 |
+
.testimonials-widget-testimonials .paging.prepend {
|
28 |
+
margin-bottom: 1em;
|
29 |
+
}
|
30 |
+
|
31 |
+
.testimonials-widget-testimonials .paging.append {
|
32 |
+
margin-top: 1em;
|
33 |
+
}
|
34 |
+
|
35 |
+
.testimonials-widget-testimonials .alignleft {
|
36 |
+
float: left;
|
37 |
+
}
|
38 |
+
|
39 |
+
.testimonials-widget-testimonials .alignright {
|
40 |
+
float: right;
|
41 |
+
}
|
42 |
+
|
43 |
+
.testimonials-widget-testimonial.list,
|
44 |
+
.testimonials-widget-testimonial.single {
|
45 |
+
display: block;
|
46 |
+
}
|
47 |
+
|
48 |
+
.testimonials-widget-testimonial .image {
|
49 |
+
float: left;
|
50 |
+
margin-bottom: .4em;
|
51 |
+
margin-right: .2em;
|
52 |
+
}
|
53 |
+
|
54 |
+
.widget .testimonials-widget-testimonial .image {
|
55 |
+
display: block;
|
56 |
+
float: none;
|
57 |
+
}
|
58 |
+
|
59 |
+
.testimonials-widget-testimonial q,
|
60 |
+
.testimonials-widget-testimonial blockquote {
|
61 |
+
/* the testimonial itself */
|
62 |
+
quotes: none;
|
63 |
+
}
|
64 |
+
|
65 |
+
.testimonials-widget-testimonial .open-quote:before {
|
66 |
+
content: '\201C';
|
67 |
+
}
|
68 |
+
|
69 |
+
.testimonials-widget-testimonial .close-quote:after {
|
70 |
+
content: '\201D';
|
71 |
+
}
|
72 |
+
|
73 |
+
.testimonials-widget-testimonial cite,
|
74 |
+
.testimonials-widget-testimonial div.credit {
|
75 |
+
/* outer wrapper for source & company */
|
76 |
+
display: block; /* To display source and company on a new line */
|
77 |
+
margin-top: .2em;
|
78 |
+
text-align: right;
|
79 |
+
}
|
80 |
+
|
81 |
+
.widget .testimonials-widget-testimonial cite,
|
82 |
+
.widget .testimonials-widget-testimonial div.credit {
|
83 |
+
margin-top: .8em;
|
84 |
+
}
|
85 |
+
|
86 |
+
.widget .testimonials-widget-testimonial .whitespace cite,
|
87 |
+
.widget .whitespace cite,
|
88 |
+
.widget .testimonials-widget-testimonial .whitespace div.credit,
|
89 |
+
.widget .whitespace div.credit {
|
90 |
+
margin-top: .2em;
|
91 |
+
}
|
92 |
+
|
93 |
+
.testimonials-widget-testimonial cite:before,
|
94 |
+
.testimonials-widget-testimonial div.credit:before {
|
95 |
+
content: "– "
|
96 |
+
}
|
97 |
+
|
98 |
+
.testimonials-widget-testimonial .join-title:before,
|
99 |
+
.testimonials-widget-testimonial .join-location:before,
|
100 |
+
.testimonials-widget-testimonial .join:before {
|
101 |
+
/* join text */
|
102 |
+
content: ", "
|
103 |
+
}
|
104 |
+
|
105 |
+
.testimonials-widget-testimonial .author,
|
106 |
+
.testimonials-widget-testimonial .email,
|
107 |
+
.testimonials-widget-testimonial .title,
|
108 |
+
.testimonials-widget-testimonial .location,
|
109 |
+
.testimonials-widget-testimonial .company,
|
110 |
+
.testimonials-widget-testimonial .url {
|
111 |
+
/* testimonial title, company and url informaiton */
|
112 |
+
}
|
113 |
+
|
114 |
+
.testimonials-widget-testimonial .extra {
|
115 |
+
margin-top: .8em;
|
116 |
+
}
|
117 |
+
|
118 |
+
.testimonials-widget-testimonial .bottom_text {
|
119 |
+
margin-top: 1.4em;
|
120 |
+
}
|
css/testimonials-widget-ie7.css
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*csslint star-property-hack: false*/
|
2 |
+
.testimonials-widget-testimonial .open-quote {
|
3 |
+
*zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '“' );
|
4 |
+
}
|
5 |
+
|
6 |
+
.testimonials-widget-testimonial .close-quote {
|
7 |
+
*zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '”' );
|
8 |
+
}
|
9 |
+
|
10 |
+
.testimonials-widget-testimonial .join-title,
|
11 |
+
.testimonials-widget-testimonial .join-location,
|
12 |
+
.testimonials-widget-testimonial .join {
|
13 |
+
/* section between source and company information */
|
14 |
+
*zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ', ' );
|
15 |
+
}
|
js/jquery.bxslider.js
ADDED
@@ -0,0 +1,1315 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* BxSlider v4.1.1 - Fully loaded, responsive content slider
|
3 |
+
* http://bxslider.com
|
4 |
+
*
|
5 |
+
* Copyright 2013, Steven Wanderski - http://stevenwanderski.com - http://bxcreative.com
|
6 |
+
* Written while drinking Belgian ales and listening to jazz
|
7 |
+
*
|
8 |
+
* Released under the MIT license - http://opensource.org/licenses/MIT
|
9 |
+
*/
|
10 |
+
|
11 |
+
;(function($){
|
12 |
+
|
13 |
+
var plugin = {};
|
14 |
+
|
15 |
+
var defaults = {
|
16 |
+
|
17 |
+
// GENERAL
|
18 |
+
mode: 'horizontal',
|
19 |
+
slideSelector: '',
|
20 |
+
infiniteLoop: true,
|
21 |
+
hideControlOnEnd: false,
|
22 |
+
speed: 500,
|
23 |
+
easing: null,
|
24 |
+
slideMargin: 0,
|
25 |
+
startSlide: 0,
|
26 |
+
randomStart: false,
|
27 |
+
captions: false,
|
28 |
+
ticker: false,
|
29 |
+
tickerHover: false,
|
30 |
+
adaptiveHeight: false,
|
31 |
+
adaptiveHeightSpeed: 500,
|
32 |
+
video: false,
|
33 |
+
useCSS: true,
|
34 |
+
preloadImages: 'visible',
|
35 |
+
responsive: true,
|
36 |
+
|
37 |
+
// TOUCH
|
38 |
+
touchEnabled: true,
|
39 |
+
swipeThreshold: 50,
|
40 |
+
oneToOneTouch: true,
|
41 |
+
preventDefaultSwipeX: true,
|
42 |
+
preventDefaultSwipeY: false,
|
43 |
+
|
44 |
+
// PAGER
|
45 |
+
pager: true,
|
46 |
+
pagerType: 'full',
|
47 |
+
pagerShortSeparator: ' / ',
|
48 |
+
pagerSelector: null,
|
49 |
+
buildPager: null,
|
50 |
+
pagerCustom: null,
|
51 |
+
|
52 |
+
// CONTROLS
|
53 |
+
controls: true,
|
54 |
+
nextText: 'Next',
|
55 |
+
prevText: 'Prev',
|
56 |
+
nextSelector: null,
|
57 |
+
prevSelector: null,
|
58 |
+
autoControls: false,
|
59 |
+
startText: 'Start',
|
60 |
+
stopText: 'Stop',
|
61 |
+
autoControlsCombine: false,
|
62 |
+
autoControlsSelector: null,
|
63 |
+
|
64 |
+
// AUTO
|
65 |
+
auto: false,
|
66 |
+
pause: 4000,
|
67 |
+
autoStart: true,
|
68 |
+
autoDirection: 'next',
|
69 |
+
autoHover: false,
|
70 |
+
autoDelay: 0,
|
71 |
+
|
72 |
+
// CAROUSEL
|
73 |
+
minSlides: 1,
|
74 |
+
maxSlides: 1,
|
75 |
+
moveSlides: 0,
|
76 |
+
slideWidth: 0,
|
77 |
+
|
78 |
+
// CALLBACKS
|
79 |
+
onSliderLoad: function() {},
|
80 |
+
onSlideBefore: function() {},
|
81 |
+
onSlideAfter: function() {},
|
82 |
+
onSlideNext: function() {},
|
83 |
+
onSlidePrev: function() {}
|
84 |
+
}
|
85 |
+
|
86 |
+
$.fn.bxSlider = function(options){
|
87 |
+
|
88 |
+
if(this.length == 0) return this;
|
89 |
+
|
90 |
+
// support mutltiple elements
|
91 |
+
if(this.length > 1){
|
92 |
+
this.each(function(){$(this).bxSlider(options)});
|
93 |
+
return this;
|
94 |
+
}
|
95 |
+
|
96 |
+
// create a namespace to be used throughout the plugin
|
97 |
+
var slider = {};
|
98 |
+
// set a reference to our slider element
|
99 |
+
var el = this;
|
100 |
+
plugin.el = this;
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Makes slideshow responsive
|
104 |
+
*/
|
105 |
+
// first get the original window dimens (thanks alot IE)
|
106 |
+
var windowWidth = $(window).width();
|
107 |
+
var windowHeight = $(window).height();
|
108 |
+
|
109 |
+
|
110 |
+
|
111 |
+
/**
|
112 |
+
* ===================================================================================
|
113 |
+
* = PRIVATE FUNCTIONS
|
114 |
+
* ===================================================================================
|
115 |
+
*/
|
116 |
+
|
117 |
+
/**
|
118 |
+
* Initializes namespace settings to be used throughout plugin
|
119 |
+
*/
|
120 |
+
var init = function(){
|
121 |
+
// merge user-supplied options with the defaults
|
122 |
+
slider.settings = $.extend({}, defaults, options);
|
123 |
+
// parse slideWidth setting
|
124 |
+
slider.settings.slideWidth = parseInt(slider.settings.slideWidth);
|
125 |
+
// store the original children
|
126 |
+
slider.children = el.children(slider.settings.slideSelector);
|
127 |
+
// check if actual number of slides is less than minSlides / maxSlides
|
128 |
+
if(slider.children.length < slider.settings.minSlides) slider.settings.minSlides = slider.children.length;
|
129 |
+
if(slider.children.length < slider.settings.maxSlides) slider.settings.maxSlides = slider.children.length;
|
130 |
+
// if random start, set the startSlide setting to random number
|
131 |
+
if(slider.settings.randomStart) slider.settings.startSlide = Math.floor(Math.random() * slider.children.length);
|
132 |
+
// store active slide information
|
133 |
+
slider.active = { index: slider.settings.startSlide }
|
134 |
+
// store if the slider is in carousel mode (displaying / moving multiple slides)
|
135 |
+
slider.carousel = slider.settings.minSlides > 1 || slider.settings.maxSlides > 1;
|
136 |
+
// if carousel, force preloadImages = 'all'
|
137 |
+
if(slider.carousel) slider.settings.preloadImages = 'all';
|
138 |
+
// calculate the min / max width thresholds based on min / max number of slides
|
139 |
+
// used to setup and update carousel slides dimensions
|
140 |
+
slider.minThreshold = (slider.settings.minSlides * slider.settings.slideWidth) + ((slider.settings.minSlides - 1) * slider.settings.slideMargin);
|
141 |
+
slider.maxThreshold = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);
|
142 |
+
// store the current state of the slider (if currently animating, working is true)
|
143 |
+
slider.working = false;
|
144 |
+
// initialize the controls object
|
145 |
+
slider.controls = {};
|
146 |
+
// initialize an auto interval
|
147 |
+
slider.interval = null;
|
148 |
+
// determine which property to use for transitions
|
149 |
+
slider.animProp = slider.settings.mode == 'vertical' ? 'top' : 'left';
|
150 |
+
// determine if hardware acceleration can be used
|
151 |
+
slider.usingCSS = slider.settings.useCSS && slider.settings.mode != 'fade' && (function(){
|
152 |
+
// create our test div element
|
153 |
+
var div = document.createElement('div');
|
154 |
+
// css transition properties
|
155 |
+
var props = ['WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];
|
156 |
+
// test for each property
|
157 |
+
for(var i in props){
|
158 |
+
if(div.style[props[i]] !== undefined){
|
159 |
+
slider.cssPrefix = props[i].replace('Perspective', '').toLowerCase();
|
160 |
+
slider.animProp = '-' + slider.cssPrefix + '-transform';
|
161 |
+
return true;
|
162 |
+
}
|
163 |
+
}
|
164 |
+
return false;
|
165 |
+
}());
|
166 |
+
// if vertical mode always make maxSlides and minSlides equal
|
167 |
+
if(slider.settings.mode == 'vertical') slider.settings.maxSlides = slider.settings.minSlides;
|
168 |
+
// save original style data
|
169 |
+
el.data("origStyle", el.attr("style"));
|
170 |
+
el.children(slider.settings.slideSelector).each(function() {
|
171 |
+
$(this).data("origStyle", $(this).attr("style"));
|
172 |
+
});
|
173 |
+
// perform all DOM / CSS modifications
|
174 |
+
setup();
|
175 |
+
}
|
176 |
+
|
177 |
+
/**
|
178 |
+
* Performs all DOM and CSS modifications
|
179 |
+
*/
|
180 |
+
var setup = function(){
|
181 |
+
// wrap el in a wrapper
|
182 |
+
el.wrap('<div class="bx-wrapper"><div class="bx-viewport"></div></div>');
|
183 |
+
// store a namspace reference to .bx-viewport
|
184 |
+
slider.viewport = el.parent();
|
185 |
+
// add a loading div to display while images are loading
|
186 |
+
slider.loader = $('<div class="bx-loading" />');
|
187 |
+
slider.viewport.prepend(slider.loader);
|
188 |
+
// set el to a massive width, to hold any needed slides
|
189 |
+
// also strip any margin and padding from el
|
190 |
+
el.css({
|
191 |
+
width: slider.settings.mode == 'horizontal' ? (slider.children.length * 100 + 215) + '%' : 'auto',
|
192 |
+
position: 'relative'
|
193 |
+
});
|
194 |
+
// if using CSS, add the easing property
|
195 |
+
if(slider.usingCSS && slider.settings.easing){
|
196 |
+
el.css('-' + slider.cssPrefix + '-transition-timing-function', slider.settings.easing);
|
197 |
+
// if not using CSS and no easing value was supplied, use the default JS animation easing (swing)
|
198 |
+
}else if(!slider.settings.easing){
|
199 |
+
slider.settings.easing = 'swing';
|
200 |
+
}
|
201 |
+
var slidesShowing = getNumberSlidesShowing();
|
202 |
+
// make modifications to the viewport (.bx-viewport)
|
203 |
+
slider.viewport.css({
|
204 |
+
width: '100%',
|
205 |
+
overflow: 'hidden',
|
206 |
+
position: 'relative'
|
207 |
+
});
|
208 |
+
slider.viewport.parent().css({
|
209 |
+
maxWidth: getViewportMaxWidth()
|
210 |
+
});
|
211 |
+
// make modification to the wrapper (.bx-wrapper)
|
212 |
+
if(!slider.settings.pager) {
|
213 |
+
slider.viewport.parent().css({
|
214 |
+
margin: '0 auto 0px'
|
215 |
+
});
|
216 |
+
}
|
217 |
+
// apply css to all slider children
|
218 |
+
slider.children.css({
|
219 |
+
'float': slider.settings.mode == 'horizontal' ? 'left' : 'none',
|
220 |
+
listStyle: 'none',
|
221 |
+
position: 'relative'
|
222 |
+
});
|
223 |
+
// apply the calculated width after the float is applied to prevent scrollbar interference
|
224 |
+
slider.children.css('width', getSlideWidth());
|
225 |
+
// if slideMargin is supplied, add the css
|
226 |
+
if(slider.settings.mode == 'horizontal' && slider.settings.slideMargin > 0) slider.children.css('marginRight', slider.settings.slideMargin);
|
227 |
+
if(slider.settings.mode == 'vertical' && slider.settings.slideMargin > 0) slider.children.css('marginBottom', slider.settings.slideMargin);
|
228 |
+
// if "fade" mode, add positioning and z-index CSS
|
229 |
+
if(slider.settings.mode == 'fade'){
|
230 |
+
slider.children.css({
|
231 |
+
position: 'absolute',
|
232 |
+
zIndex: 0,
|
233 |
+
display: 'none'
|
234 |
+
});
|
235 |
+
// prepare the z-index on the showing element
|
236 |
+
slider.children.eq(slider.settings.startSlide).css({zIndex: 50, display: 'block'});
|
237 |
+
}
|
238 |
+
// create an element to contain all slider controls (pager, start / stop, etc)
|
239 |
+
slider.controls.el = $('<div class="bx-controls" />');
|
240 |
+
// if captions are requested, add them
|
241 |
+
if(slider.settings.captions) appendCaptions();
|
242 |
+
// check if startSlide is last slide
|
243 |
+
slider.active.last = slider.settings.startSlide == getPagerQty() - 1;
|
244 |
+
// if video is true, set up the fitVids plugin
|
245 |
+
if(slider.settings.video) el.fitVids();
|
246 |
+
// set the default preload selector (visible)
|
247 |
+
var preloadSelector = slider.children.eq(slider.settings.startSlide);
|
248 |
+
if (slider.settings.preloadImages == "all") preloadSelector = slider.children;
|
249 |
+
// only check for control addition if not in "ticker" mode
|
250 |
+
if(!slider.settings.ticker){
|
251 |
+
// if pager is requested, add it
|
252 |
+
if(slider.settings.pager) appendPager();
|
253 |
+
// if controls are requested, add them
|
254 |
+
if(slider.settings.controls) appendControls();
|
255 |
+
// if auto is true, and auto controls are requested, add them
|
256 |
+
if(slider.settings.auto && slider.settings.autoControls) appendControlsAuto();
|
257 |
+
// if any control option is requested, add the controls wrapper
|
258 |
+
if(slider.settings.controls || slider.settings.autoControls || slider.settings.pager) slider.viewport.after(slider.controls.el);
|
259 |
+
// if ticker mode, do not allow a pager
|
260 |
+
}else{
|
261 |
+
slider.settings.pager = false;
|
262 |
+
}
|
263 |
+
// preload all images, then perform final DOM / CSS modifications that depend on images being loaded
|
264 |
+
loadElements(preloadSelector, start);
|
265 |
+
}
|
266 |
+
|
267 |
+
var loadElements = function(selector, callback){
|
268 |
+
var total = selector.find('img, iframe').length;
|
269 |
+
if (total == 0){
|
270 |
+
callback();
|
271 |
+
return;
|
272 |
+
}
|
273 |
+
var count = 0;
|
274 |
+
selector.find('img, iframe').each(function(){
|
275 |
+
$(this).one('load', function() {
|
276 |
+
if(++count == total) callback();
|
277 |
+
}).each(function() {
|
278 |
+
if(this.complete) $(this).load();
|
279 |
+
});
|
280 |
+
});
|
281 |
+
}
|
282 |
+
|
283 |
+
/**
|
284 |
+
* Start the slider
|
285 |
+
*/
|
286 |
+
var start = function(){
|
287 |
+
// if infinite loop, prepare additional slides
|
288 |
+
if(slider.settings.infiniteLoop && slider.settings.mode != 'fade' && !slider.settings.ticker){
|
289 |
+
var slice = slider.settings.mode == 'vertical' ? slider.settings.minSlides : slider.settings.maxSlides;
|
290 |
+
var sliceAppend = slider.children.slice(0, slice).clone().addClass('bx-clone');
|
291 |
+
var slicePrepend = slider.children.slice(-slice).clone().addClass('bx-clone');
|
292 |
+
el.append(sliceAppend).prepend(slicePrepend);
|
293 |
+
}
|
294 |
+
// remove the loading DOM element
|
295 |
+
slider.loader.remove();
|
296 |
+
// set the left / top position of "el"
|
297 |
+
setSlidePosition();
|
298 |
+
// if "vertical" mode, always use adaptiveHeight to prevent odd behavior
|
299 |
+
if (slider.settings.mode == 'vertical') slider.settings.adaptiveHeight = true;
|
300 |
+
// set the viewport height
|
301 |
+
slider.viewport.height(getViewportHeight());
|
302 |
+
// make sure everything is positioned just right (same as a window resize)
|
303 |
+
el.redrawSlider();
|
304 |
+
// onSliderLoad callback
|
305 |
+
slider.settings.onSliderLoad(slider.active.index);
|
306 |
+
// slider has been fully initialized
|
307 |
+
slider.initialized = true;
|
308 |
+
// bind the resize call to the window
|
309 |
+
if (slider.settings.responsive) $(window).bind('resize', resizeWindow);
|
310 |
+
// if auto is true, start the show
|
311 |
+
if (slider.settings.auto && slider.settings.autoStart) initAuto();
|
312 |
+
// if ticker is true, start the ticker
|
313 |
+
if (slider.settings.ticker) initTicker();
|
314 |
+
// if pager is requested, make the appropriate pager link active
|
315 |
+
if (slider.settings.pager) updatePagerActive(slider.settings.startSlide);
|
316 |
+
// check for any updates to the controls (like hideControlOnEnd updates)
|
317 |
+
if (slider.settings.controls) updateDirectionControls();
|
318 |
+
// if touchEnabled is true, setup the touch events
|
319 |
+
if (slider.settings.touchEnabled && !slider.settings.ticker) initTouch();
|
320 |
+
}
|
321 |
+
|
322 |
+
/**
|
323 |
+
* Returns the calculated height of the viewport, used to determine either adaptiveHeight or the maxHeight value
|
324 |
+
*/
|
325 |
+
var getViewportHeight = function(){
|
326 |
+
var height = 0;
|
327 |
+
// first determine which children (slides) should be used in our height calculation
|
328 |
+
var children = $();
|
329 |
+
// if mode is not "vertical" and adaptiveHeight is false, include all children
|
330 |
+
if(slider.settings.mode != 'vertical' && !slider.settings.adaptiveHeight){
|
331 |
+
children = slider.children;
|
332 |
+
}else{
|
333 |
+
// if not carousel, return the single active child
|
334 |
+
if(!slider.carousel){
|
335 |
+
children = slider.children.eq(slider.active.index);
|
336 |
+
// if carousel, return a slice of children
|
337 |
+
}else{
|
338 |
+
// get the individual slide index
|
339 |
+
var currentIndex = slider.settings.moveSlides == 1 ? slider.active.index : slider.active.index * getMoveBy();
|
340 |
+
// add the current slide to the children
|
341 |
+
children = slider.children.eq(currentIndex);
|
342 |
+
// cycle through the remaining "showing" slides
|
343 |
+
for (i = 1; i <= slider.settings.maxSlides - 1; i++){
|
344 |
+
// if looped back to the start
|
345 |
+
if(currentIndex + i >= slider.children.length){
|
346 |
+
children = children.add(slider.children.eq(i - 1));
|
347 |
+
}else{
|
348 |
+
children = children.add(slider.children.eq(currentIndex + i));
|
349 |
+
}
|
350 |
+
}
|
351 |
+
}
|
352 |
+
}
|
353 |
+
// if "vertical" mode, calculate the sum of the heights of the children
|
354 |
+
if(slider.settings.mode == 'vertical'){
|
355 |
+
children.each(function(index) {
|
356 |
+
height += $(this).outerHeight();
|
357 |
+
});
|
358 |
+
// add user-supplied margins
|
359 |
+
if(slider.settings.slideMargin > 0){
|
360 |
+
height += slider.settings.slideMargin * (slider.settings.minSlides - 1);
|
361 |
+
}
|
362 |
+
// if not "vertical" mode, calculate the max height of the children
|
363 |
+
}else{
|
364 |
+
height = Math.max.apply(Math, children.map(function(){
|
365 |
+
return $(this).outerHeight(false);
|
366 |
+
}).get());
|
367 |
+
}
|
368 |
+
return height;
|
369 |
+
}
|
370 |
+
|
371 |
+
/**
|
372 |
+
* Returns the calculated width to be used for the outer wrapper / viewport
|
373 |
+
*/
|
374 |
+
var getViewportMaxWidth = function(){
|
375 |
+
var width = '100%';
|
376 |
+
if(slider.settings.slideWidth > 0){
|
377 |
+
if(slider.settings.mode == 'horizontal'){
|
378 |
+
width = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);
|
379 |
+
}else{
|
380 |
+
width = slider.settings.slideWidth;
|
381 |
+
}
|
382 |
+
}
|
383 |
+
return width;
|
384 |
+
}
|
385 |
+
|
386 |
+
/**
|
387 |
+
* Returns the calculated width to be applied to each slide
|
388 |
+
*/
|
389 |
+
var getSlideWidth = function(){
|
390 |
+
// start with any user-supplied slide width
|
391 |
+
var newElWidth = slider.settings.slideWidth;
|
392 |
+
// get the current viewport width
|
393 |
+
var wrapWidth = slider.viewport.width();
|
394 |
+
// if slide width was not supplied, or is larger than the viewport use the viewport width
|
395 |
+
if(slider.settings.slideWidth == 0 ||
|
396 |
+
(slider.settings.slideWidth > wrapWidth && !slider.carousel) ||
|
397 |
+
slider.settings.mode == 'vertical'){
|
398 |
+
newElWidth = wrapWidth;
|
399 |
+
// if carousel, use the thresholds to determine the width
|
400 |
+
}else if(slider.settings.maxSlides > 1 && slider.settings.mode == 'horizontal'){
|
401 |
+
if(wrapWidth > slider.maxThreshold){
|
402 |
+
// newElWidth = (wrapWidth - (slider.settings.slideMargin * (slider.settings.maxSlides - 1))) / slider.settings.maxSlides;
|
403 |
+
}else if(wrapWidth < slider.minThreshold){
|
404 |
+
newElWidth = (wrapWidth - (slider.settings.slideMargin * (slider.settings.minSlides - 1))) / slider.settings.minSlides;
|
405 |
+
}
|
406 |
+
}
|
407 |
+
return newElWidth;
|
408 |
+
}
|
409 |
+
|
410 |
+
/**
|
411 |
+
* Returns the number of slides currently visible in the viewport (includes partially visible slides)
|
412 |
+
*/
|
413 |
+
var getNumberSlidesShowing = function(){
|
414 |
+
var slidesShowing = 1;
|
415 |
+
if(slider.settings.mode == 'horizontal' && slider.settings.slideWidth > 0){
|
416 |
+
// if viewport is smaller than minThreshold, return minSlides
|
417 |
+
if(slider.viewport.width() < slider.minThreshold){
|
418 |
+
slidesShowing = slider.settings.minSlides;
|
419 |
+
// if viewport is larger than minThreshold, return maxSlides
|
420 |
+
}else if(slider.viewport.width() > slider.maxThreshold){
|
421 |
+
slidesShowing = slider.settings.maxSlides;
|
422 |
+
// if viewport is between min / max thresholds, divide viewport width by first child width
|
423 |
+
}else{
|
424 |
+
var childWidth = slider.children.first().width();
|
425 |
+
slidesShowing = Math.floor(slider.viewport.width() / childWidth);
|
426 |
+
}
|
427 |
+
// if "vertical" mode, slides showing will always be minSlides
|
428 |
+
}else if(slider.settings.mode == 'vertical'){
|
429 |
+
slidesShowing = slider.settings.minSlides;
|
430 |
+
}
|
431 |
+
return slidesShowing;
|
432 |
+
}
|
433 |
+
|
434 |
+
/**
|
435 |
+
* Returns the number of pages (one full viewport of slides is one "page")
|
436 |
+
*/
|
437 |
+
var getPagerQty = function(){
|
438 |
+
var pagerQty = 0;
|
439 |
+
// if moveSlides is specified by the user
|
440 |
+
if(slider.settings.moveSlides > 0){
|
441 |
+
if(slider.settings.infiniteLoop){
|
442 |
+
pagerQty = slider.children.length / getMoveBy();
|
443 |
+
}else{
|
444 |
+
// use a while loop to determine pages
|
445 |
+
var breakPoint = 0;
|
446 |
+
var counter = 0
|
447 |
+
// when breakpoint goes above children length, counter is the number of pages
|
448 |
+
while (breakPoint < slider.children.length){
|
449 |
+
++pagerQty;
|
450 |
+
breakPoint = counter + getNumberSlidesShowing();
|
451 |
+
counter += slider.settings.moveSlides <= getNumberSlidesShowing() ? slider.settings.moveSlides : getNumberSlidesShowing();
|
452 |
+
}
|
453 |
+
}
|
454 |
+
// if moveSlides is 0 (auto) divide children length by sides showing, then round up
|
455 |
+
}else{
|
456 |
+
pagerQty = Math.ceil(slider.children.length / getNumberSlidesShowing());
|
457 |
+
}
|
458 |
+
return pagerQty;
|
459 |
+
}
|
460 |
+
|
461 |
+
/**
|
462 |
+
* Returns the number of indivual slides by which to shift the slider
|
463 |
+
*/
|
464 |
+
var getMoveBy = function(){
|
465 |
+
// if moveSlides was set by the user and moveSlides is less than number of slides showing
|
466 |
+
if(slider.settings.moveSlides > 0 && slider.settings.moveSlides <= getNumberSlidesShowing()){
|
467 |
+
return slider.settings.moveSlides;
|
468 |
+
}
|
469 |
+
// if moveSlides is 0 (auto)
|
470 |
+
return getNumberSlidesShowing();
|
471 |
+
}
|
472 |
+
|
473 |
+
/**
|
474 |
+
* Sets the slider's (el) left or top position
|
475 |
+
*/
|
476 |
+
var setSlidePosition = function(){
|
477 |
+
// if last slide, not infinite loop, and number of children is larger than specified maxSlides
|
478 |
+
if(slider.children.length > slider.settings.maxSlides && slider.active.last && !slider.settings.infiniteLoop){
|
479 |
+
if (slider.settings.mode == 'horizontal'){
|
480 |
+
// get the last child's position
|
481 |
+
var lastChild = slider.children.last();
|
482 |
+
var position = lastChild.position();
|
483 |
+
// set the left position
|
484 |
+
setPositionProperty(-(position.left - (slider.viewport.width() - lastChild.width())), 'reset', 0);
|
485 |
+
}else if(slider.settings.mode == 'vertical'){
|
486 |
+
// get the last showing index's position
|
487 |
+
var lastShowingIndex = slider.children.length - slider.settings.minSlides;
|
488 |
+
var position = slider.children.eq(lastShowingIndex).position();
|
489 |
+
// set the top position
|
490 |
+
setPositionProperty(-position.top, 'reset', 0);
|
491 |
+
}
|
492 |
+
// if not last slide
|
493 |
+
}else{
|
494 |
+
// get the position of the first showing slide
|
495 |
+
var position = slider.children.eq(slider.active.index * getMoveBy()).position();
|
496 |
+
// check for last slide
|
497 |
+
if (slider.active.index == getPagerQty() - 1) slider.active.last = true;
|
498 |
+
// set the repective position
|
499 |
+
if (position != undefined){
|
500 |
+
if (slider.settings.mode == 'horizontal') setPositionProperty(-position.left, 'reset', 0);
|
501 |
+
else if (slider.settings.mode == 'vertical') setPositionProperty(-position.top, 'reset', 0);
|
502 |
+
}
|
503 |
+
}
|
504 |
+
}
|
505 |
+
|
506 |
+
/**
|
507 |
+
* Sets the el's animating property position (which in turn will sometimes animate el).
|
508 |
+
* If using CSS, sets the transform property. If not using CSS, sets the top / left property.
|
509 |
+
*
|
510 |
+
* @param value (int)
|
511 |
+
* - the animating property's value
|
512 |
+
*
|
513 |
+
* @param type (string) 'slider', 'reset', 'ticker'
|
514 |
+
* - the type of instance for which the function is being
|
515 |
+
*
|
516 |
+
* @param duration (int)
|
517 |
+
* - the amount of time (in ms) the transition should occupy
|
518 |
+
*
|
519 |
+
* @param params (array) optional
|
520 |
+
* - an optional parameter containing any variables that need to be passed in
|
521 |
+
*/
|
522 |
+
var setPositionProperty = function(value, type, duration, params){
|
523 |
+
// use CSS transform
|
524 |
+
if(slider.usingCSS){
|
525 |
+
// determine the translate3d value
|
526 |
+
var propValue = slider.settings.mode == 'vertical' ? 'translate3d(0, ' + value + 'px, 0)' : 'translate3d(' + value + 'px, 0, 0)';
|
527 |
+
// add the CSS transition-duration
|
528 |
+
el.css('-' + slider.cssPrefix + '-transition-duration', duration / 1000 + 's');
|
529 |
+
if(type == 'slide'){
|
530 |
+
// set the property value
|
531 |
+
el.css(slider.animProp, propValue);
|
532 |
+
// bind a callback method - executes when CSS transition completes
|
533 |
+
el.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(){
|
534 |
+
// unbind the callback
|
535 |
+
el.unbind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');
|
536 |
+
updateAfterSlideTransition();
|
537 |
+
});
|
538 |
+
}else if(type == 'reset'){
|
539 |
+
el.css(slider.animProp, propValue);
|
540 |
+
}else if(type == 'ticker'){
|
541 |
+
// make the transition use 'linear'
|
542 |
+
el.css('-' + slider.cssPrefix + '-transition-timing-function', 'linear');
|
543 |
+
el.css(slider.animProp, propValue);
|
544 |
+
// bind a callback method - executes when CSS transition completes
|
545 |
+
el.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(){
|
546 |
+
// unbind the callback
|
547 |
+
el.unbind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');
|
548 |
+
// reset the position
|
549 |
+
setPositionProperty(params['resetValue'], 'reset', 0);
|
550 |
+
// start the loop again
|
551 |
+
tickerLoop();
|
552 |
+
});
|
553 |
+
}
|
554 |
+
// use JS animate
|
555 |
+
}else{
|
556 |
+
var animateObj = {};
|
557 |
+
animateObj[slider.animProp] = value;
|
558 |
+
if(type == 'slide'){
|
559 |
+
el.animate(animateObj, duration, slider.settings.easing, function(){
|
560 |
+
updateAfterSlideTransition();
|
561 |
+
});
|
562 |
+
}else if(type == 'reset'){
|
563 |
+
el.css(slider.animProp, value)
|
564 |
+
}else if(type == 'ticker'){
|
565 |
+
el.animate(animateObj, speed, 'linear', function(){
|
566 |
+
setPositionProperty(params['resetValue'], 'reset', 0);
|
567 |
+
// run the recursive loop after animation
|
568 |
+
tickerLoop();
|
569 |
+
});
|
570 |
+
}
|
571 |
+
}
|
572 |
+
}
|
573 |
+
|
574 |
+
/**
|
575 |
+
* Populates the pager with proper amount of pages
|
576 |
+
*/
|
577 |
+
var populatePager = function(){
|
578 |
+
var pagerHtml = '';
|
579 |
+
var pagerQty = getPagerQty();
|
580 |
+
// loop through each pager item
|
581 |
+
for(var i=0; i < pagerQty; i++){
|
582 |
+
var linkContent = '';
|
583 |
+
// if a buildPager function is supplied, use it to get pager link value, else use index + 1
|
584 |
+
if(slider.settings.buildPager && $.isFunction(slider.settings.buildPager)){
|
585 |
+
linkContent = slider.settings.buildPager(i);
|
586 |
+
slider.pagerEl.addClass('bx-custom-pager');
|
587 |
+
}else{
|
588 |
+
linkContent = i + 1;
|
589 |
+
slider.pagerEl.addClass('bx-default-pager');
|
590 |
+
}
|
591 |
+
// var linkContent = slider.settings.buildPager && $.isFunction(slider.settings.buildPager) ? slider.settings.buildPager(i) : i + 1;
|
592 |
+
// add the markup to the string
|
593 |
+
pagerHtml += '<div class="bx-pager-item"><a href="" data-slide-index="' + i + '" class="bx-pager-link">' + linkContent + '</a></div>';
|
594 |
+
};
|
595 |
+
// populate the pager element with pager links
|
596 |
+
slider.pagerEl.html(pagerHtml);
|
597 |
+
}
|
598 |
+
|
599 |
+
/**
|
600 |
+
* Appends the pager to the controls element
|
601 |
+
*/
|
602 |
+
var appendPager = function(){
|
603 |
+
if(!slider.settings.pagerCustom){
|
604 |
+
// create the pager DOM element
|
605 |
+
slider.pagerEl = $('<div class="bx-pager" />');
|
606 |
+
// if a pager selector was supplied, populate it with the pager
|
607 |
+
if(slider.settings.pagerSelector){
|
608 |
+
$(slider.settings.pagerSelector).html(slider.pagerEl);
|
609 |
+
// if no pager selector was supplied, add it after the wrapper
|
610 |
+
}else{
|
611 |
+
slider.controls.el.addClass('bx-has-pager').append(slider.pagerEl);
|
612 |
+
}
|
613 |
+
// populate the pager
|
614 |
+
populatePager();
|
615 |
+
}else{
|
616 |
+
slider.pagerEl = $(slider.settings.pagerCustom);
|
617 |
+
}
|
618 |
+
// assign the pager click binding
|
619 |
+
slider.pagerEl.delegate('a', 'click', clickPagerBind);
|
620 |
+
}
|
621 |
+
|
622 |
+
/**
|
623 |
+
* Appends prev / next controls to the controls element
|
624 |
+
*/
|
625 |
+
var appendControls = function(){
|
626 |
+
slider.controls.next = $('<a class="bx-next" href="">' + slider.settings.nextText + '</a>');
|
627 |
+
slider.controls.prev = $('<a class="bx-prev" href="">' + slider.settings.prevText + '</a>');
|
628 |
+
// bind click actions to the controls
|
629 |
+
slider.controls.next.bind('click', clickNextBind);
|
630 |
+
slider.controls.prev.bind('click', clickPrevBind);
|
631 |
+
// if nextSlector was supplied, populate it
|
632 |
+
if(slider.settings.nextSelector){
|
633 |
+
$(slider.settings.nextSelector).append(slider.controls.next);
|
634 |
+
}
|
635 |
+
// if prevSlector was supplied, populate it
|
636 |
+
if(slider.settings.prevSelector){
|
637 |
+
$(slider.settings.prevSelector).append(slider.controls.prev);
|
638 |
+
}
|
639 |
+
// if no custom selectors were supplied
|
640 |
+
if(!slider.settings.nextSelector && !slider.settings.prevSelector){
|
641 |
+
// add the controls to the DOM
|
642 |
+
slider.controls.directionEl = $('<div class="bx-controls-direction" />');
|
643 |
+
// add the control elements to the directionEl
|
644 |
+
slider.controls.directionEl.append(slider.controls.prev).append(slider.controls.next);
|
645 |
+
// slider.viewport.append(slider.controls.directionEl);
|
646 |
+
slider.controls.el.addClass('bx-has-controls-direction').append(slider.controls.directionEl);
|
647 |
+
}
|
648 |
+
}
|
649 |
+
|
650 |
+
/**
|
651 |
+
* Appends start / stop auto controls to the controls element
|
652 |
+
*/
|
653 |
+
var appendControlsAuto = function(){
|
654 |
+
slider.controls.start = $('<div class="bx-controls-auto-item"><a class="bx-start" href="">' + slider.settings.startText + '</a></div>');
|
655 |
+
slider.controls.stop = $('<div class="bx-controls-auto-item"><a class="bx-stop" href="">' + slider.settings.stopText + '</a></div>');
|
656 |
+
// add the controls to the DOM
|
657 |
+
slider.controls.autoEl = $('<div class="bx-controls-auto" />');
|
658 |
+
// bind click actions to the controls
|
659 |
+
slider.controls.autoEl.delegate('.bx-start', 'click', clickStartBind);
|
660 |
+
slider.controls.autoEl.delegate('.bx-stop', 'click', clickStopBind);
|
661 |
+
// if autoControlsCombine, insert only the "start" control
|
662 |
+
if(slider.settings.autoControlsCombine){
|
663 |
+
slider.controls.autoEl.append(slider.controls.start);
|
664 |
+
// if autoControlsCombine is false, insert both controls
|
665 |
+
}else{
|
666 |
+
slider.controls.autoEl.append(slider.controls.start).append(slider.controls.stop);
|
667 |
+
}
|
668 |
+
// if auto controls selector was supplied, populate it with the controls
|
669 |
+
if(slider.settings.autoControlsSelector){
|
670 |
+
$(slider.settings.autoControlsSelector).html(slider.controls.autoEl);
|
671 |
+
// if auto controls selector was not supplied, add it after the wrapper
|
672 |
+
}else{
|
673 |
+
slider.controls.el.addClass('bx-has-controls-auto').append(slider.controls.autoEl);
|
674 |
+
}
|
675 |
+
// update the auto controls
|
676 |
+
updateAutoControls(slider.settings.autoStart ? 'stop' : 'start');
|
677 |
+
}
|
678 |
+
|
679 |
+
/**
|
680 |
+
* Appends image captions to the DOM
|
681 |
+
*/
|
682 |
+
var appendCaptions = function(){
|
683 |
+
// cycle through each child
|
684 |
+
slider.children.each(function(index){
|
685 |
+
// get the image title attribute
|
686 |
+
var title = $(this).find('img:first').attr('title');
|
687 |
+
// append the caption
|
688 |
+
if (title != undefined && ('' + title).length) {
|
689 |
+
$(this).append('<div class="bx-caption"><span>' + title + '</span></div>');
|
690 |
+
}
|
691 |
+
});
|
692 |
+
}
|
693 |
+
|
694 |
+
/**
|
695 |
+
* Click next binding
|
696 |
+
*
|
697 |
+
* @param e (event)
|
698 |
+
* - DOM event object
|
699 |
+
*/
|
700 |
+
var clickNextBind = function(e){
|
701 |
+
// if auto show is running, stop it
|
702 |
+
if (slider.settings.auto) el.stopAuto();
|
703 |
+
el.goToNextSlide();
|
704 |
+
e.preventDefault();
|
705 |
+
}
|
706 |
+
|
707 |
+
/**
|
708 |
+
* Click prev binding
|
709 |
+
*
|
710 |
+
* @param e (event)
|
711 |
+
* - DOM event object
|
712 |
+
*/
|
713 |
+
var clickPrevBind = function(e){
|
714 |
+
// if auto show is running, stop it
|
715 |
+
if (slider.settings.auto) el.stopAuto();
|
716 |
+
el.goToPrevSlide();
|
717 |
+
e.preventDefault();
|
718 |
+
}
|
719 |
+
|
720 |
+
/**
|
721 |
+
* Click start binding
|
722 |
+
*
|
723 |
+
* @param e (event)
|
724 |
+
* - DOM event object
|
725 |
+
*/
|
726 |
+
var clickStartBind = function(e){
|
727 |
+
el.startAuto();
|
728 |
+
e.preventDefault();
|
729 |
+
}
|
730 |
+
|
731 |
+
/**
|
732 |
+
* Click stop binding
|
733 |
+
*
|
734 |
+
* @param e (event)
|
735 |
+
* - DOM event object
|
736 |
+
*/
|
737 |
+
var clickStopBind = function(e){
|
738 |
+
el.stopAuto();
|
739 |
+
e.preventDefault();
|
740 |
+
}
|
741 |
+
|
742 |
+
/**
|
743 |
+
* Click pager binding
|
744 |
+
*
|
745 |
+
* @param e (event)
|
746 |
+
* - DOM event object
|
747 |
+
*/
|
748 |
+
var clickPagerBind = function(e){
|
749 |
+
// if auto show is running, stop it
|
750 |
+
if (slider.settings.auto) el.stopAuto();
|
751 |
+
var pagerLink = $(e.currentTarget);
|
752 |
+
var pagerIndex = parseInt(pagerLink.attr('data-slide-index'));
|
753 |
+
// if clicked pager link is not active, continue with the goToSlide call
|
754 |
+
if(pagerIndex != slider.active.index) el.goToSlide(pagerIndex);
|
755 |
+
e.preventDefault();
|
756 |
+
}
|
757 |
+
|
758 |
+
/**
|
759 |
+
* Updates the pager links with an active class
|
760 |
+
*
|
761 |
+
* @param slideIndex (int)
|
762 |
+
* - index of slide to make active
|
763 |
+
*/
|
764 |
+
var updatePagerActive = function(slideIndex){
|
765 |
+
// if "short" pager type
|
766 |
+
var len = slider.children.length; // nb of children
|
767 |
+
if(slider.settings.pagerType == 'short'){
|
768 |
+
if(slider.settings.maxSlides > 1) {
|
769 |
+
len = Math.ceil(slider.children.length/slider.settings.maxSlides);
|
770 |
+
}
|
771 |
+
slider.pagerEl.html( (slideIndex + 1) + slider.settings.pagerShortSeparator + len);
|
772 |
+
return;
|
773 |
+
}
|
774 |
+
// remove all pager active classes
|
775 |
+
slider.pagerEl.find('a').removeClass('active');
|
776 |
+
// apply the active class for all pagers
|
777 |
+
slider.pagerEl.each(function(i, el) { $(el).find('a').eq(slideIndex).addClass('active'); });
|
778 |
+
}
|
779 |
+
|
780 |
+
/**
|
781 |
+
* Performs needed actions after a slide transition
|
782 |
+
*/
|
783 |
+
var updateAfterSlideTransition = function(){
|
784 |
+
// if infinte loop is true
|
785 |
+
if(slider.settings.infiniteLoop){
|
786 |
+
var position = '';
|
787 |
+
// first slide
|
788 |
+
if(slider.active.index == 0){
|
789 |
+
// set the new position
|
790 |
+
position = slider.children.eq(0).position();
|
791 |
+
// carousel, last slide
|
792 |
+
}else if(slider.active.index == getPagerQty() - 1 && slider.carousel){
|
793 |
+
position = slider.children.eq((getPagerQty() - 1) * getMoveBy()).position();
|
794 |
+
// last slide
|
795 |
+
}else if(slider.active.index == slider.children.length - 1){
|
796 |
+
position = slider.children.eq(slider.children.length - 1).position();
|
797 |
+
}
|
798 |
+
if (slider.settings.mode == 'horizontal') { setPositionProperty(-position.left, 'reset', 0);; }
|
799 |
+
else if (slider.settings.mode == 'vertical') { setPositionProperty(-position.top, 'reset', 0);; }
|
800 |
+
}
|
801 |
+
// declare that the transition is complete
|
802 |
+
slider.working = false;
|
803 |
+
// onSlideAfter callback
|
804 |
+
slider.settings.onSlideAfter(slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);
|
805 |
+
}
|
806 |
+
|
807 |
+
/**
|
808 |
+
* Updates the auto controls state (either active, or combined switch)
|
809 |
+
*
|
810 |
+
* @param state (string) "start", "stop"
|
811 |
+
* - the new state of the auto show
|
812 |
+
*/
|
813 |
+
var updateAutoControls = function(state){
|
814 |
+
// if autoControlsCombine is true, replace the current control with the new state
|
815 |
+
if(slider.settings.autoControlsCombine){
|
816 |
+
slider.controls.autoEl.html(slider.controls[state]);
|
817 |
+
// if autoControlsCombine is false, apply the "active" class to the appropriate control
|
818 |
+
}else{
|
819 |
+
slider.controls.autoEl.find('a').removeClass('active');
|
820 |
+
slider.controls.autoEl.find('a:not(.bx-' + state + ')').addClass('active');
|
821 |
+
}
|
822 |
+
}
|
823 |
+
|
824 |
+
/**
|
825 |
+
* Updates the direction controls (checks if either should be hidden)
|
826 |
+
*/
|
827 |
+
var updateDirectionControls = function(){
|
828 |
+
if(getPagerQty() == 1){
|
829 |
+
slider.controls.prev.addClass('disabled');
|
830 |
+
slider.controls.next.addClass('disabled');
|
831 |
+
}else if(!slider.settings.infiniteLoop && slider.settings.hideControlOnEnd){
|
832 |
+
// if first slide
|
833 |
+
if (slider.active.index == 0){
|
834 |
+
slider.controls.prev.addClass('disabled');
|
835 |
+
slider.controls.next.removeClass('disabled');
|
836 |
+
// if last slide
|
837 |
+
}else if(slider.active.index == getPagerQty() - 1){
|
838 |
+
slider.controls.next.addClass('disabled');
|
839 |
+
slider.controls.prev.removeClass('disabled');
|
840 |
+
// if any slide in the middle
|
841 |
+
}else{
|
842 |
+
slider.controls.prev.removeClass('disabled');
|
843 |
+
slider.controls.next.removeClass('disabled');
|
844 |
+
}
|
845 |
+
}
|
846 |
+
}
|
847 |
+
|
848 |
+
/**
|
849 |
+
* Initialzes the auto process
|
850 |
+
*/
|
851 |
+
var initAuto = function(){
|
852 |
+
// if autoDelay was supplied, launch the auto show using a setTimeout() call
|
853 |
+
if(slider.settings.autoDelay > 0){
|
854 |
+
var timeout = setTimeout(el.startAuto, slider.settings.autoDelay);
|
855 |
+
// if autoDelay was not supplied, start the auto show normally
|
856 |
+
}else{
|
857 |
+
el.startAuto();
|
858 |
+
}
|
859 |
+
// if autoHover is requested
|
860 |
+
if(slider.settings.autoHover){
|
861 |
+
// on el hover
|
862 |
+
el.hover(function(){
|
863 |
+
// if the auto show is currently playing (has an active interval)
|
864 |
+
if(slider.interval){
|
865 |
+
// stop the auto show and pass true agument which will prevent control update
|
866 |
+
el.stopAuto(true);
|
867 |
+
// create a new autoPaused value which will be used by the relative "mouseout" event
|
868 |
+
slider.autoPaused = true;
|
869 |
+
}
|
870 |
+
}, function(){
|
871 |
+
// if the autoPaused value was created be the prior "mouseover" event
|
872 |
+
if(slider.autoPaused){
|
873 |
+
// start the auto show and pass true agument which will prevent control update
|
874 |
+
el.startAuto(true);
|
875 |
+
// reset the autoPaused value
|
876 |
+
slider.autoPaused = null;
|
877 |
+
}
|
878 |
+
});
|
879 |
+
}
|
880 |
+
}
|
881 |
+
|
882 |
+
/**
|
883 |
+
* Initialzes the ticker process
|
884 |
+
*/
|
885 |
+
var initTicker = function(){
|
886 |
+
var startPosition = 0;
|
887 |
+
// if autoDirection is "next", append a clone of the entire slider
|
888 |
+
if(slider.settings.autoDirection == 'next'){
|
889 |
+
el.append(slider.children.clone().addClass('bx-clone'));
|
890 |
+
// if autoDirection is "prev", prepend a clone of the entire slider, and set the left position
|
891 |
+
}else{
|
892 |
+
el.prepend(slider.children.clone().addClass('bx-clone'));
|
893 |
+
var position = slider.children.first().position();
|
894 |
+
startPosition = slider.settings.mode == 'horizontal' ? -position.left : -position.top;
|
895 |
+
}
|
896 |
+
setPositionProperty(startPosition, 'reset', 0);
|
897 |
+
// do not allow controls in ticker mode
|
898 |
+
slider.settings.pager = false;
|
899 |
+
slider.settings.controls = false;
|
900 |
+
slider.settings.autoControls = false;
|
901 |
+
// if autoHover is requested
|
902 |
+
if(slider.settings.tickerHover && !slider.usingCSS){
|
903 |
+
// on el hover
|
904 |
+
slider.viewport.hover(function(){
|
905 |
+
el.stop();
|
906 |
+
}, function(){
|
907 |
+
// calculate the total width of children (used to calculate the speed ratio)
|
908 |
+
var totalDimens = 0;
|
909 |
+
slider.children.each(function(index){
|
910 |
+
totalDimens += slider.settings.mode == 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);
|
911 |
+
});
|
912 |
+
// calculate the speed ratio (used to determine the new speed to finish the paused animation)
|
913 |
+
var ratio = slider.settings.speed / totalDimens;
|
914 |
+
// determine which property to use
|
915 |
+
var property = slider.settings.mode == 'horizontal' ? 'left' : 'top';
|
916 |
+
// calculate the new speed
|
917 |
+
var newSpeed = ratio * (totalDimens - (Math.abs(parseInt(el.css(property)))));
|
918 |
+
tickerLoop(newSpeed);
|
919 |
+
});
|
920 |
+
}
|
921 |
+
// start the ticker loop
|
922 |
+
tickerLoop();
|
923 |
+
}
|
924 |
+
|
925 |
+
/**
|
926 |
+
* Runs a continuous loop, news ticker-style
|
927 |
+
*/
|
928 |
+
var tickerLoop = function(resumeSpeed){
|
929 |
+
speed = resumeSpeed ? resumeSpeed : slider.settings.speed;
|
930 |
+
var position = {left: 0, top: 0};
|
931 |
+
var reset = {left: 0, top: 0};
|
932 |
+
// if "next" animate left position to last child, then reset left to 0
|
933 |
+
if(slider.settings.autoDirection == 'next'){
|
934 |
+
position = el.find('.bx-clone').first().position();
|
935 |
+
// if "prev" animate left position to 0, then reset left to first non-clone child
|
936 |
+
}else{
|
937 |
+
reset = slider.children.first().position();
|
938 |
+
}
|
939 |
+
var animateProperty = slider.settings.mode == 'horizontal' ? -position.left : -position.top;
|
940 |
+
var resetValue = slider.settings.mode == 'horizontal' ? -reset.left : -reset.top;
|
941 |
+
var params = {resetValue: resetValue};
|
942 |
+
setPositionProperty(animateProperty, 'ticker', speed, params);
|
943 |
+
}
|
944 |
+
|
945 |
+
/**
|
946 |
+
* Initializes touch events
|
947 |
+
*/
|
948 |
+
var initTouch = function(){
|
949 |
+
// initialize object to contain all touch values
|
950 |
+
slider.touch = {
|
951 |
+
start: {x: 0, y: 0},
|
952 |
+
end: {x: 0, y: 0}
|
953 |
+
}
|
954 |
+
slider.viewport.bind('touchstart', onTouchStart);
|
955 |
+
}
|
956 |
+
|
957 |
+
/**
|
958 |
+
* Event handler for "touchstart"
|
959 |
+
*
|
960 |
+
* @param e (event)
|
961 |
+
* - DOM event object
|
962 |
+
*/
|
963 |
+
var onTouchStart = function(e){
|
964 |
+
if(slider.working){
|
965 |
+
e.preventDefault();
|
966 |
+
}else{
|
967 |
+
// record the original position when touch starts
|
968 |
+
slider.touch.originalPos = el.position();
|
969 |
+
var orig = e.originalEvent;
|
970 |
+
// record the starting touch x, y coordinates
|
971 |
+
slider.touch.start.x = orig.changedTouches[0].pageX;
|
972 |
+
slider.touch.start.y = orig.changedTouches[0].pageY;
|
973 |
+
// bind a "touchmove" event to the viewport
|
974 |
+
slider.viewport.bind('touchmove', onTouchMove);
|
975 |
+
// bind a "touchend" event to the viewport
|
976 |
+
slider.viewport.bind('touchend', onTouchEnd);
|
977 |
+
}
|
978 |
+
}
|
979 |
+
|
980 |
+
/**
|
981 |
+
* Event handler for "touchmove"
|
982 |
+
*
|
983 |
+
* @param e (event)
|
984 |
+
* - DOM event object
|
985 |
+
*/
|
986 |
+
var onTouchMove = function(e){
|
987 |
+
var orig = e.originalEvent;
|
988 |
+
// if scrolling on y axis, do not prevent default
|
989 |
+
var xMovement = Math.abs(orig.changedTouches[0].pageX - slider.touch.start.x);
|
990 |
+
var yMovement = Math.abs(orig.changedTouches[0].pageY - slider.touch.start.y);
|
991 |
+
// x axis swipe
|
992 |
+
if((xMovement * 3) > yMovement && slider.settings.preventDefaultSwipeX){
|
993 |
+
e.preventDefault();
|
994 |
+
// y axis swipe
|
995 |
+
}else if((yMovement * 3) > xMovement && slider.settings.preventDefaultSwipeY){
|
996 |
+
e.preventDefault();
|
997 |
+
}
|
998 |
+
if(slider.settings.mode != 'fade' && slider.settings.oneToOneTouch){
|
999 |
+
var value = 0;
|
1000 |
+
// if horizontal, drag along x axis
|
1001 |
+
if(slider.settings.mode == 'horizontal'){
|
1002 |
+
var change = orig.changedTouches[0].pageX - slider.touch.start.x;
|
1003 |
+
value = slider.touch.originalPos.left + change;
|
1004 |
+
// if vertical, drag along y axis
|
1005 |
+
}else{
|
1006 |
+
var change = orig.changedTouches[0].pageY - slider.touch.start.y;
|
1007 |
+
value = slider.touch.originalPos.top + change;
|
1008 |
+
}
|
1009 |
+
setPositionProperty(value, 'reset', 0);
|
1010 |
+
}
|
1011 |
+
}
|
1012 |
+
|
1013 |
+
/**
|
1014 |
+
* Event handler for "touchend"
|
1015 |
+
*
|
1016 |
+
* @param e (event)
|
1017 |
+
* - DOM event object
|
1018 |
+
*/
|
1019 |
+
var onTouchEnd = function(e){
|
1020 |
+
slider.viewport.unbind('touchmove', onTouchMove);
|
1021 |
+
var orig = e.originalEvent;
|
1022 |
+
var value = 0;
|
1023 |
+
// record end x, y positions
|
1024 |
+
slider.touch.end.x = orig.changedTouches[0].pageX;
|
1025 |
+
slider.touch.end.y = orig.changedTouches[0].pageY;
|
1026 |
+
// if fade mode, check if absolute x distance clears the threshold
|
1027 |
+
if(slider.settings.mode == 'fade'){
|
1028 |
+
var distance = Math.abs(slider.touch.start.x - slider.touch.end.x);
|
1029 |
+
if(distance >= slider.settings.swipeThreshold){
|
1030 |
+
slider.touch.start.x > slider.touch.end.x ? el.goToNextSlide() : el.goToPrevSlide();
|
1031 |
+
el.stopAuto();
|
1032 |
+
}
|
1033 |
+
// not fade mode
|
1034 |
+
}else{
|
1035 |
+
var distance = 0;
|
1036 |
+
// calculate distance and el's animate property
|
1037 |
+
if(slider.settings.mode == 'horizontal'){
|
1038 |
+
distance = slider.touch.end.x - slider.touch.start.x;
|
1039 |
+
value = slider.touch.originalPos.left;
|
1040 |
+
}else{
|
1041 |
+
distance = slider.touch.end.y - slider.touch.start.y;
|
1042 |
+
value = slider.touch.originalPos.top;
|
1043 |
+
}
|
1044 |
+
// if not infinite loop and first / last slide, do not attempt a slide transition
|
1045 |
+
if(!slider.settings.infiniteLoop && ((slider.active.index == 0 && distance > 0) || (slider.active.last && distance < 0))){
|
1046 |
+
setPositionProperty(value, 'reset', 200);
|
1047 |
+
}else{
|
1048 |
+
// check if distance clears threshold
|
1049 |
+
if(Math.abs(distance) >= slider.settings.swipeThreshold){
|
1050 |
+
distance < 0 ? el.goToNextSlide() : el.goToPrevSlide();
|
1051 |
+
el.stopAuto();
|
1052 |
+
}else{
|
1053 |
+
// el.animate(property, 200);
|
1054 |
+
setPositionProperty(value, 'reset', 200);
|
1055 |
+
}
|
1056 |
+
}
|
1057 |
+
}
|
1058 |
+
slider.viewport.unbind('touchend', onTouchEnd);
|
1059 |
+
}
|
1060 |
+
|
1061 |
+
/**
|
1062 |
+
* Window resize event callback
|
1063 |
+
*/
|
1064 |
+
var resizeWindow = function(e){
|
1065 |
+
// get the new window dimens (again, thank you IE)
|
1066 |
+
var windowWidthNew = $(window).width();
|
1067 |
+
var windowHeightNew = $(window).height();
|
1068 |
+
// make sure that it is a true window resize
|
1069 |
+
// *we must check this because our dinosaur friend IE fires a window resize event when certain DOM elements
|
1070 |
+
// are resized. Can you just die already?*
|
1071 |
+
if(windowWidth != windowWidthNew || windowHeight != windowHeightNew){
|
1072 |
+
// set the new window dimens
|
1073 |
+
windowWidth = windowWidthNew;
|
1074 |
+
windowHeight = windowHeightNew;
|
1075 |
+
// update all dynamic elements
|
1076 |
+
el.redrawSlider();
|
1077 |
+
}
|
1078 |
+
}
|
1079 |
+
|
1080 |
+
/**
|
1081 |
+
* ===================================================================================
|
1082 |
+
* = PUBLIC FUNCTIONS
|
1083 |
+
* ===================================================================================
|
1084 |
+
*/
|
1085 |
+
|
1086 |
+
/**
|
1087 |
+
* Performs slide transition to the specified slide
|
1088 |
+
*
|
1089 |
+
* @param slideIndex (int)
|
1090 |
+
* - the destination slide's index (zero-based)
|
1091 |
+
*
|
1092 |
+
* @param direction (string)
|
1093 |
+
* - INTERNAL USE ONLY - the direction of travel ("prev" / "next")
|
1094 |
+
*/
|
1095 |
+
el.goToSlide = function(slideIndex, direction){
|
1096 |
+
// if plugin is currently in motion, ignore request
|
1097 |
+
if(slider.working || slider.active.index == slideIndex) return;
|
1098 |
+
// declare that plugin is in motion
|
1099 |
+
slider.working = true;
|
1100 |
+
// store the old index
|
1101 |
+
slider.oldIndex = slider.active.index;
|
1102 |
+
// if slideIndex is less than zero, set active index to last child (this happens during infinite loop)
|
1103 |
+
if(slideIndex < 0){
|
1104 |
+
slider.active.index = getPagerQty() - 1;
|
1105 |
+
// if slideIndex is greater than children length, set active index to 0 (this happens during infinite loop)
|
1106 |
+
}else if(slideIndex >= getPagerQty()){
|
1107 |
+
slider.active.index = 0;
|
1108 |
+
// set active index to requested slide
|
1109 |
+
}else{
|
1110 |
+
slider.active.index = slideIndex;
|
1111 |
+
}
|
1112 |
+
// onSlideBefore, onSlideNext, onSlidePrev callbacks
|
1113 |
+
slider.settings.onSlideBefore(slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);
|
1114 |
+
if(direction == 'next'){
|
1115 |
+
slider.settings.onSlideNext(slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);
|
1116 |
+
}else if(direction == 'prev'){
|
1117 |
+
slider.settings.onSlidePrev(slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);
|
1118 |
+
}
|
1119 |
+
// check if last slide
|
1120 |
+
slider.active.last = slider.active.index >= getPagerQty() - 1;
|
1121 |
+
// update the pager with active class
|
1122 |
+
if(slider.settings.pager) updatePagerActive(slider.active.index);
|
1123 |
+
// // check for direction control update
|
1124 |
+
if(slider.settings.controls) updateDirectionControls();
|
1125 |
+
// if slider is set to mode: "fade"
|
1126 |
+
if(slider.settings.mode == 'fade'){
|
1127 |
+
// if adaptiveHeight is true and next height is different from current height, animate to the new height
|
1128 |
+
if(slider.settings.adaptiveHeight && slider.viewport.height() != getViewportHeight()){
|
1129 |
+
slider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);
|
1130 |
+
}
|
1131 |
+
// fade out the visible child and reset its z-index value
|
1132 |
+
slider.children.filter(':visible').fadeOut(slider.settings.speed).css({zIndex: 0});
|
1133 |
+
// fade in the newly requested slide
|
1134 |
+
slider.children.eq(slider.active.index).css('zIndex', 51).fadeIn(slider.settings.speed, function(){
|
1135 |
+
$(this).css('zIndex', 50);
|
1136 |
+
updateAfterSlideTransition();
|
1137 |
+
});
|
1138 |
+
// slider mode is not "fade"
|
1139 |
+
}else{
|
1140 |
+
// if adaptiveHeight is true and next height is different from current height, animate to the new height
|
1141 |
+
if(slider.settings.adaptiveHeight && slider.viewport.height() != getViewportHeight()){
|
1142 |
+
slider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);
|
1143 |
+
}
|
1144 |
+
var moveBy = 0;
|
1145 |
+
var position = {left: 0, top: 0};
|
1146 |
+
// if carousel and not infinite loop
|
1147 |
+
if(!slider.settings.infiniteLoop && slider.carousel && slider.active.last){
|
1148 |
+
if(slider.settings.mode == 'horizontal'){
|
1149 |
+
// get the last child position
|
1150 |
+
var lastChild = slider.children.eq(slider.children.length - 1);
|
1151 |
+
position = lastChild.position();
|
1152 |
+
// calculate the position of the last slide
|
1153 |
+
moveBy = slider.viewport.width() - lastChild.outerWidth();
|
1154 |
+
}else{
|
1155 |
+
// get last showing index position
|
1156 |
+
var lastShowingIndex = slider.children.length - slider.settings.minSlides;
|
1157 |
+
position = slider.children.eq(lastShowingIndex).position();
|
1158 |
+
}
|
1159 |
+
// horizontal carousel, going previous while on first slide (infiniteLoop mode)
|
1160 |
+
}else if(slider.carousel && slider.active.last && direction == 'prev'){
|
1161 |
+
// get the last child position
|
1162 |
+
var eq = slider.settings.moveSlides == 1 ? slider.settings.maxSlides - getMoveBy() : ((getPagerQty() - 1) * getMoveBy()) - (slider.children.length - slider.settings.maxSlides);
|
1163 |
+
var lastChild = el.children('.bx-clone').eq(eq);
|
1164 |
+
position = lastChild.position();
|
1165 |
+
// if infinite loop and "Next" is clicked on the last slide
|
1166 |
+
}else if(direction == 'next' && slider.active.index == 0){
|
1167 |
+
// get the last clone position
|
1168 |
+
position = el.find('> .bx-clone').eq(slider.settings.maxSlides).position();
|
1169 |
+
slider.active.last = false;
|
1170 |
+
// normal non-zero requests
|
1171 |
+
}else if(slideIndex >= 0){
|
1172 |
+
var requestEl = slideIndex * getMoveBy();
|
1173 |
+
position = slider.children.eq(requestEl).position();
|
1174 |
+
}
|
1175 |
+
|
1176 |
+
/* If the position doesn't exist
|
1177 |
+
* (e.g. if you destroy the slider on a next click),
|
1178 |
+
* it doesn't throw an error.
|
1179 |
+
*/
|
1180 |
+
if ("undefined" !== typeof(position)) {
|
1181 |
+
var value = slider.settings.mode == 'horizontal' ? -(position.left - moveBy) : -position.top;
|
1182 |
+
// plugin values to be animated
|
1183 |
+
setPositionProperty(value, 'slide', slider.settings.speed);
|
1184 |
+
}
|
1185 |
+
}
|
1186 |
+
}
|
1187 |
+
|
1188 |
+
/**
|
1189 |
+
* Transitions to the next slide in the show
|
1190 |
+
*/
|
1191 |
+
el.goToNextSlide = function(){
|
1192 |
+
// if infiniteLoop is false and last page is showing, disregard call
|
1193 |
+
if (!slider.settings.infiniteLoop && slider.active.last) return;
|
1194 |
+
var pagerIndex = parseInt(slider.active.index) + 1;
|
1195 |
+
el.goToSlide(pagerIndex, 'next');
|
1196 |
+
}
|
1197 |
+
|
1198 |
+
/**
|
1199 |
+
* Transitions to the prev slide in the show
|
1200 |
+
*/
|
1201 |
+
el.goToPrevSlide = function(){
|
1202 |
+
// if infiniteLoop is false and last page is showing, disregard call
|
1203 |
+
if (!slider.settings.infiniteLoop && slider.active.index == 0) return;
|
1204 |
+
var pagerIndex = parseInt(slider.active.index) - 1;
|
1205 |
+
el.goToSlide(pagerIndex, 'prev');
|
1206 |
+
}
|
1207 |
+
|
1208 |
+
/**
|
1209 |
+
* Starts the auto show
|
1210 |
+
*
|
1211 |
+
* @param preventControlUpdate (boolean)
|
1212 |
+
* - if true, auto controls state will not be updated
|
1213 |
+
*/
|
1214 |
+
el.startAuto = function(preventControlUpdate){
|
1215 |
+
// if an interval already exists, disregard call
|
1216 |
+
if(slider.interval) return;
|
1217 |
+
// create an interval
|
1218 |
+
slider.interval = setInterval(function(){
|
1219 |
+
slider.settings.autoDirection == 'next' ? el.goToNextSlide() : el.goToPrevSlide();
|
1220 |
+
}, slider.settings.pause);
|
1221 |
+
// if auto controls are displayed and preventControlUpdate is not true
|
1222 |
+
if (slider.settings.autoControls && preventControlUpdate != true) updateAutoControls('stop');
|
1223 |
+
}
|
1224 |
+
|
1225 |
+
/**
|
1226 |
+
* Stops the auto show
|
1227 |
+
*
|
1228 |
+
* @param preventControlUpdate (boolean)
|
1229 |
+
* - if true, auto controls state will not be updated
|
1230 |
+
*/
|
1231 |
+
el.stopAuto = function(preventControlUpdate){
|
1232 |
+
// if no interval exists, disregard call
|
1233 |
+
if(!slider.interval) return;
|
1234 |
+
// clear the interval
|
1235 |
+
clearInterval(slider.interval);
|
1236 |
+
slider.interval = null;
|
1237 |
+
// if auto controls are displayed and preventControlUpdate is not true
|
1238 |
+
if (slider.settings.autoControls && preventControlUpdate != true) updateAutoControls('start');
|
1239 |
+
}
|
1240 |
+
|
1241 |
+
/**
|
1242 |
+
* Returns current slide index (zero-based)
|
1243 |
+
*/
|
1244 |
+
el.getCurrentSlide = function(){
|
1245 |
+
return slider.active.index;
|
1246 |
+
}
|
1247 |
+
|
1248 |
+
/**
|
1249 |
+
* Returns number of slides in show
|
1250 |
+
*/
|
1251 |
+
el.getSlideCount = function(){
|
1252 |
+
return slider.children.length;
|
1253 |
+
}
|
1254 |
+
|
1255 |
+
/**
|
1256 |
+
* Update all dynamic slider elements
|
1257 |
+
*/
|
1258 |
+
el.redrawSlider = function(){
|
1259 |
+
// resize all children in ratio to new screen size
|
1260 |
+
slider.children.add(el.find('.bx-clone')).outerWidth(getSlideWidth());
|
1261 |
+
// adjust the height
|
1262 |
+
slider.viewport.css('height', getViewportHeight());
|
1263 |
+
// update the slide position
|
1264 |
+
if(!slider.settings.ticker) setSlidePosition();
|
1265 |
+
// if active.last was true before the screen resize, we want
|
1266 |
+
// to keep it last no matter what screen size we end on
|
1267 |
+
if (slider.active.last) slider.active.index = getPagerQty() - 1;
|
1268 |
+
// if the active index (page) no longer exists due to the resize, simply set the index as last
|
1269 |
+
if (slider.active.index >= getPagerQty()) slider.active.last = true;
|
1270 |
+
// if a pager is being displayed and a custom pager is not being used, update it
|
1271 |
+
if(slider.settings.pager && !slider.settings.pagerCustom){
|
1272 |
+
populatePager();
|
1273 |
+
updatePagerActive(slider.active.index);
|
1274 |
+
}
|
1275 |
+
}
|
1276 |
+
|
1277 |
+
/**
|
1278 |
+
* Destroy the current instance of the slider (revert everything back to original state)
|
1279 |
+
*/
|
1280 |
+
el.destroySlider = function(){
|
1281 |
+
// don't do anything if slider has already been destroyed
|
1282 |
+
if(!slider.initialized) return;
|
1283 |
+
slider.initialized = false;
|
1284 |
+
$('.bx-clone', this).remove();
|
1285 |
+
slider.children.each(function() {
|
1286 |
+
$(this).data("origStyle") != undefined ? $(this).attr("style", $(this).data("origStyle")) : $(this).removeAttr('style');
|
1287 |
+
});
|
1288 |
+
$(this).data("origStyle") != undefined ? this.attr("style", $(this).data("origStyle")) : $(this).removeAttr('style');
|
1289 |
+
$(this).unwrap().unwrap();
|
1290 |
+
if(slider.controls.el) slider.controls.el.remove();
|
1291 |
+
if(slider.controls.next) slider.controls.next.remove();
|
1292 |
+
if(slider.controls.prev) slider.controls.prev.remove();
|
1293 |
+
if(slider.pagerEl) slider.pagerEl.remove();
|
1294 |
+
$('.bx-caption', this).remove();
|
1295 |
+
if(slider.controls.autoEl) slider.controls.autoEl.remove();
|
1296 |
+
clearInterval(slider.interval);
|
1297 |
+
if(slider.settings.responsive) $(window).unbind('resize', resizeWindow);
|
1298 |
+
}
|
1299 |
+
|
1300 |
+
/**
|
1301 |
+
* Reload the slider (revert all DOM changes, and re-initialize)
|
1302 |
+
*/
|
1303 |
+
el.reloadSlider = function(settings){
|
1304 |
+
if (settings != undefined) options = settings;
|
1305 |
+
el.destroySlider();
|
1306 |
+
init();
|
1307 |
+
}
|
1308 |
+
|
1309 |
+
init();
|
1310 |
+
|
1311 |
+
// returns the current jQuery object
|
1312 |
+
return this;
|
1313 |
+
}
|
1314 |
+
|
1315 |
+
})(jQuery);
|
js/jquery.easing.1.3.js
ADDED
@@ -0,0 +1,205 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
|
3 |
+
*
|
4 |
+
* Uses the built in easing capabilities added In jQuery 1.1
|
5 |
+
* to offer multiple easing options
|
6 |
+
*
|
7 |
+
* TERMS OF USE - jQuery Easing
|
8 |
+
*
|
9 |
+
* Open source under the BSD License.
|
10 |
+
*
|
11 |
+
* Copyright © 2008 George McGinley Smith
|
12 |
+
* All rights reserved.
|
13 |
+
*
|
14 |
+
* Redistribution and use in source and binary forms, with or without modification,
|
15 |
+
* are permitted provided that the following conditions are met:
|
16 |
+
*
|
17 |
+
* Redistributions of source code must retain the above copyright notice, this list of
|
18 |
+
* conditions and the following disclaimer.
|
19 |
+
* Redistributions in binary form must reproduce the above copyright notice, this list
|
20 |
+
* of conditions and the following disclaimer in the documentation and/or other materials
|
21 |
+
* provided with the distribution.
|
22 |
+
*
|
23 |
+
* Neither the name of the author nor the names of contributors may be used to endorse
|
24 |
+
* or promote products derived from this software without specific prior written permission.
|
25 |
+
*
|
26 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
27 |
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
28 |
+
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
29 |
+
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
30 |
+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
31 |
+
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
32 |
+
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
33 |
+
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
34 |
+
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
35 |
+
*
|
36 |
+
*/
|
37 |
+
|
38 |
+
// t: current time, b: begInnIng value, c: change In value, d: duration
|
39 |
+
jQuery.easing['jswing'] = jQuery.easing['swing'];
|
40 |
+
|
41 |
+
jQuery.extend( jQuery.easing,
|
42 |
+
{
|
43 |
+
def: 'easeOutQuad',
|
44 |
+
swing: function (x, t, b, c, d) {
|
45 |
+
//alert(jQuery.easing.default);
|
46 |
+
return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
|
47 |
+
},
|
48 |
+
easeInQuad: function (x, t, b, c, d) {
|
49 |
+
return c*(t/=d)*t + b;
|
50 |
+
},
|
51 |
+
easeOutQuad: function (x, t, b, c, d) {
|
52 |
+
return -c *(t/=d)*(t-2) + b;
|
53 |
+
},
|
54 |
+
easeInOutQuad: function (x, t, b, c, d) {
|
55 |
+
if ((t/=d/2) < 1) return c/2*t*t + b;
|
56 |
+
return -c/2 * ((--t)*(t-2) - 1) + b;
|
57 |
+
},
|
58 |
+
easeInCubic: function (x, t, b, c, d) {
|
59 |
+
return c*(t/=d)*t*t + b;
|
60 |
+
},
|
61 |
+
easeOutCubic: function (x, t, b, c, d) {
|
62 |
+
return c*((t=t/d-1)*t*t + 1) + b;
|
63 |
+
},
|
64 |
+
easeInOutCubic: function (x, t, b, c, d) {
|
65 |
+
if ((t/=d/2) < 1) return c/2*t*t*t + b;
|
66 |
+
return c/2*((t-=2)*t*t + 2) + b;
|
67 |
+
},
|
68 |
+
easeInQuart: function (x, t, b, c, d) {
|
69 |
+
return c*(t/=d)*t*t*t + b;
|
70 |
+
},
|
71 |
+
easeOutQuart: function (x, t, b, c, d) {
|
72 |
+
return -c * ((t=t/d-1)*t*t*t - 1) + b;
|
73 |
+
},
|
74 |
+
easeInOutQuart: function (x, t, b, c, d) {
|
75 |
+
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
|
76 |
+
return -c/2 * ((t-=2)*t*t*t - 2) + b;
|
77 |
+
},
|
78 |
+
easeInQuint: function (x, t, b, c, d) {
|
79 |
+
return c*(t/=d)*t*t*t*t + b;
|
80 |
+
},
|
81 |
+
easeOutQuint: function (x, t, b, c, d) {
|
82 |
+
return c*((t=t/d-1)*t*t*t*t + 1) + b;
|
83 |
+
},
|
84 |
+
easeInOutQuint: function (x, t, b, c, d) {
|
85 |
+
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
|
86 |
+
return c/2*((t-=2)*t*t*t*t + 2) + b;
|
87 |
+
},
|
88 |
+
easeInSine: function (x, t, b, c, d) {
|
89 |
+
return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
|
90 |
+
},
|
91 |
+
easeOutSine: function (x, t, b, c, d) {
|
92 |
+
return c * Math.sin(t/d * (Math.PI/2)) + b;
|
93 |
+
},
|
94 |
+
easeInOutSine: function (x, t, b, c, d) {
|
95 |
+
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
|
96 |
+
},
|
97 |
+
easeInExpo: function (x, t, b, c, d) {
|
98 |
+
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
|
99 |
+
},
|
100 |
+
easeOutExpo: function (x, t, b, c, d) {
|
101 |
+
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
|
102 |
+
},
|
103 |
+
easeInOutExpo: function (x, t, b, c, d) {
|
104 |
+
if (t==0) return b;
|
105 |
+
if (t==d) return b+c;
|
106 |
+
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
|
107 |
+
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
|
108 |
+
},
|
109 |
+
easeInCirc: function (x, t, b, c, d) {
|
110 |
+
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
|
111 |
+
},
|
112 |
+
easeOutCirc: function (x, t, b, c, d) {
|
113 |
+
return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
|
114 |
+
},
|
115 |
+
easeInOutCirc: function (x, t, b, c, d) {
|
116 |
+
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
|
117 |
+
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
|
118 |
+
},
|
119 |
+
easeInElastic: function (x, t, b, c, d) {
|
120 |
+
var s=1.70158;var p=0;var a=c;
|
121 |
+
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
|
122 |
+
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
123 |
+
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
124 |
+
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
|
125 |
+
},
|
126 |
+
easeOutElastic: function (x, t, b, c, d) {
|
127 |
+
var s=1.70158;var p=0;var a=c;
|
128 |
+
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
|
129 |
+
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
130 |
+
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
131 |
+
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
|
132 |
+
},
|
133 |
+
easeInOutElastic: function (x, t, b, c, d) {
|
134 |
+
var s=1.70158;var p=0;var a=c;
|
135 |
+
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
|
136 |
+
if (a < Math.abs(c)) { a=c; var s=p/4; }
|
137 |
+
else var s = p/(2*Math.PI) * Math.asin (c/a);
|
138 |
+
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
|
139 |
+
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
|
140 |
+
},
|
141 |
+
easeInBack: function (x, t, b, c, d, s) {
|
142 |
+
if (s == undefined) s = 1.70158;
|
143 |
+
return c*(t/=d)*t*((s+1)*t - s) + b;
|
144 |
+
},
|
145 |
+
easeOutBack: function (x, t, b, c, d, s) {
|
146 |
+
if (s == undefined) s = 1.70158;
|
147 |
+
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
|
148 |
+
},
|
149 |
+
easeInOutBack: function (x, t, b, c, d, s) {
|
150 |
+
if (s == undefined) s = 1.70158;
|
151 |
+
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
|
152 |
+
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
|
153 |
+
},
|
154 |
+
easeInBounce: function (x, t, b, c, d) {
|
155 |
+
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
|
156 |
+
},
|
157 |
+
easeOutBounce: function (x, t, b, c, d) {
|
158 |
+
if ((t/=d) < (1/2.75)) {
|
159 |
+
return c*(7.5625*t*t) + b;
|
160 |
+
} else if (t < (2/2.75)) {
|
161 |
+
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
|
162 |
+
} else if (t < (2.5/2.75)) {
|
163 |
+
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
|
164 |
+
} else {
|
165 |
+
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
|
166 |
+
}
|
167 |
+
},
|
168 |
+
easeInOutBounce: function (x, t, b, c, d) {
|
169 |
+
if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
|
170 |
+
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
|
171 |
+
}
|
172 |
+
});
|
173 |
+
|
174 |
+
/*
|
175 |
+
*
|
176 |
+
* TERMS OF USE - EASING EQUATIONS
|
177 |
+
*
|
178 |
+
* Open source under the BSD License.
|
179 |
+
*
|
180 |
+
* Copyright © 2001 Robert Penner
|
181 |
+
* All rights reserved.
|
182 |
+
*
|
183 |
+
* Redistribution and use in source and binary forms, with or without modification,
|
184 |
+
* are permitted provided that the following conditions are met:
|
185 |
+
*
|
186 |
+
* Redistributions of source code must retain the above copyright notice, this list of
|
187 |
+
* conditions and the following disclaimer.
|
188 |
+
* Redistributions in binary form must reproduce the above copyright notice, this list
|
189 |
+
* of conditions and the following disclaimer in the documentation and/or other materials
|
190 |
+
* provided with the distribution.
|
191 |
+
*
|
192 |
+
* Neither the name of the author nor the names of contributors may be used to endorse
|
193 |
+
* or promote products derived from this software without specific prior written permission.
|
194 |
+
*
|
195 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
196 |
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
197 |
+
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
198 |
+
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
199 |
+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
200 |
+
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
201 |
+
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
202 |
+
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
203 |
+
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
204 |
+
*
|
205 |
+
*/
|
js/jquery.fitvids.js
ADDED
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*global jQuery */
|
2 |
+
/*jshint multistr:true browser:true */
|
3 |
+
/*!
|
4 |
+
* FitVids 1.0
|
5 |
+
*
|
6 |
+
* Copyright 2011, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
|
7 |
+
* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
|
8 |
+
* Released under the WTFPL license - http://sam.zoy.org/wtfpl/
|
9 |
+
*
|
10 |
+
* Date: Thu Sept 01 18:00:00 2011 -0500
|
11 |
+
*/
|
12 |
+
|
13 |
+
(function( $ ){
|
14 |
+
|
15 |
+
"use strict";
|
16 |
+
|
17 |
+
$.fn.fitVids = function( options ) {
|
18 |
+
var settings = {
|
19 |
+
customSelector: null
|
20 |
+
};
|
21 |
+
|
22 |
+
var div = document.createElement('div'),
|
23 |
+
ref = document.getElementsByTagName('base')[0] || document.getElementsByTagName('script')[0];
|
24 |
+
|
25 |
+
div.className = 'fit-vids-style';
|
26 |
+
div.innerHTML = '­<style> \
|
27 |
+
.fluid-width-video-wrapper { \
|
28 |
+
width: 100%; \
|
29 |
+
position: relative; \
|
30 |
+
padding: 0; \
|
31 |
+
} \
|
32 |
+
\
|
33 |
+
.fluid-width-video-wrapper iframe, \
|
34 |
+
.fluid-width-video-wrapper object, \
|
35 |
+
.fluid-width-video-wrapper embed { \
|
36 |
+
position: absolute; \
|
37 |
+
top: 0; \
|
38 |
+
left: 0; \
|
39 |
+
width: 100%; \
|
40 |
+
height: 100%; \
|
41 |
+
} \
|
42 |
+
</style>';
|
43 |
+
|
44 |
+
ref.parentNode.insertBefore(div,ref);
|
45 |
+
|
46 |
+
if ( options ) {
|
47 |
+
$.extend( settings, options );
|
48 |
+
}
|
49 |
+
|
50 |
+
return this.each(function(){
|
51 |
+
var selectors = [
|
52 |
+
"iframe[src*='player.vimeo.com']",
|
53 |
+
"iframe[src*='www.youtube.com']",
|
54 |
+
"iframe[src*='www.kickstarter.com']",
|
55 |
+
"object",
|
56 |
+
"embed"
|
57 |
+
];
|
58 |
+
|
59 |
+
if (settings.customSelector) {
|
60 |
+
selectors.push(settings.customSelector);
|
61 |
+
}
|
62 |
+
|
63 |
+
var $allVideos = $(this).find(selectors.join(','));
|
64 |
+
|
65 |
+
$allVideos.each(function(){
|
66 |
+
var $this = $(this);
|
67 |
+
if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
|
68 |
+
var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
|
69 |
+
width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
|
70 |
+
aspectRatio = height / width;
|
71 |
+
if(!$this.attr('id')){
|
72 |
+
var videoID = 'fitvid' + Math.floor(Math.random()*999999);
|
73 |
+
$this.attr('id', videoID);
|
74 |
+
}
|
75 |
+
$this.wrap('<div class="fluid-width-video-wrapper"></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%");
|
76 |
+
$this.removeAttr('height').removeAttr('width');
|
77 |
+
});
|
78 |
+
});
|
79 |
+
};
|
80 |
+
})( jQuery );
|
languages/testimonials-widget.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the Testimonials Widget package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Testimonials Widget 2.
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/testimonials-widget\n"
|
7 |
-
"POT-Creation-Date: 2013-10-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -12,543 +12,603 @@ msgstr ""
|
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
|
15 |
-
#: lib/class-testimonials-widget-settings.php:
|
16 |
-
#: lib/class-testimonials-widget-settings.php:
|
17 |
msgid "Testimonials Widget Settings"
|
18 |
msgstr ""
|
19 |
|
20 |
-
#: lib/class-testimonials-widget-settings.php:
|
21 |
msgid "Settings"
|
22 |
msgstr ""
|
23 |
|
24 |
-
#: lib/class-testimonials-widget-settings.php:
|
25 |
-
#: lib/class-testimonials-widget-settings.php:
|
26 |
msgid "General"
|
27 |
msgstr ""
|
28 |
|
29 |
-
#: lib/class-testimonials-widget-settings.php:
|
30 |
-
#: lib/class-testimonials-widget-settings.php:
|
31 |
msgid "Selection"
|
32 |
msgstr ""
|
33 |
|
34 |
-
#: lib/class-testimonials-widget-settings.php:
|
35 |
-
#: lib/class-testimonials-widget-settings.php:
|
36 |
msgid "Ordering"
|
37 |
msgstr ""
|
38 |
|
39 |
-
#: lib/class-testimonials-widget-settings.php:
|
40 |
-
#: lib/class-testimonials-widget-settings.php:
|
41 |
msgid "Widget"
|
42 |
msgstr ""
|
43 |
|
44 |
-
#: lib/class-testimonials-widget-settings.php:
|
45 |
-
#: lib/class-testimonials-widget-settings.php:
|
46 |
msgid "Post Type"
|
47 |
msgstr ""
|
48 |
|
49 |
-
#: lib/class-testimonials-widget-settings.php:
|
50 |
-
#: lib/class-testimonials-widget-settings.php:
|
51 |
msgid "Compatibility & Reset"
|
52 |
msgstr ""
|
53 |
|
54 |
-
#: lib/class-testimonials-widget-settings.php:
|
55 |
msgid "About Testimonials Widget"
|
56 |
msgstr ""
|
57 |
|
58 |
-
#: lib/class-testimonials-widget-settings.php:
|
59 |
msgid "Widget Title"
|
60 |
msgstr ""
|
61 |
|
62 |
-
#: lib/class-testimonials-widget-settings.php:
|
63 |
-
#: testimonials-widget.php:
|
64 |
msgid "Testimonials"
|
65 |
msgstr ""
|
66 |
|
67 |
-
#: lib/class-testimonials-widget-settings.php:
|
68 |
msgid "Title Link"
|
69 |
msgstr ""
|
70 |
|
71 |
-
#: lib/class-testimonials-widget-settings.php:
|
72 |
msgid ""
|
73 |
"URL, path, or post ID to link widget title to. Ex: http://example.com/"
|
74 |
"stuff, /testimonials, 123 or "
|
75 |
msgstr ""
|
76 |
|
77 |
-
#: lib/class-testimonials-widget-settings.php:
|
78 |
msgid "Character Limit"
|
79 |
msgstr ""
|
80 |
|
81 |
-
#: lib/class-testimonials-widget-settings.php:
|
82 |
msgid "Number of characters to limit non-single testimonial views to"
|
83 |
msgstr ""
|
84 |
|
85 |
-
#: lib/class-testimonials-widget-settings.php:
|
86 |
-
msgid "Height"
|
87 |
-
msgstr ""
|
88 |
-
|
89 |
-
#: lib/class-testimonials-widget-settings.php:155
|
90 |
-
msgid "Testimonials height, in pixels. Overrides minimum and maximum height"
|
91 |
-
msgstr ""
|
92 |
-
|
93 |
-
#: lib/class-testimonials-widget-settings.php:161
|
94 |
msgid "Rotation Speed"
|
95 |
msgstr ""
|
96 |
|
97 |
-
#: lib/class-testimonials-widget-settings.php:
|
98 |
msgid ""
|
99 |
"Number of seconds between testimonial rotations or 0 for no rotation at all "
|
100 |
"refresh"
|
101 |
msgstr ""
|
102 |
|
103 |
-
#: lib/class-testimonials-widget-settings.php:
|
104 |
msgid "Additional Widget Options"
|
105 |
msgstr ""
|
106 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
#: lib/class-testimonials-widget-settings.php:175
|
108 |
-
msgid "
|
109 |
msgstr ""
|
110 |
|
111 |
#: lib/class-testimonials-widget-settings.php:176
|
112 |
-
msgid "
|
113 |
msgstr ""
|
114 |
|
115 |
#: lib/class-testimonials-widget-settings.php:183
|
116 |
-
msgid "
|
117 |
msgstr ""
|
118 |
|
119 |
#: lib/class-testimonials-widget-settings.php:184
|
120 |
-
msgid ""
|
121 |
-
"Disable animation between testimonial transitions. Useful when stacking "
|
122 |
-
"widgets."
|
123 |
msgstr ""
|
124 |
|
125 |
#: lib/class-testimonials-widget-settings.php:192
|
126 |
-
msgid "
|
127 |
msgstr ""
|
128 |
|
129 |
#: lib/class-testimonials-widget-settings.php:193
|
130 |
-
|
131 |
-
msgid ""
|
132 |
-
"Transition duration in milliseconds; higher values indicate slower "
|
133 |
-
"animations, not faster ones."
|
134 |
msgstr ""
|
135 |
|
136 |
#: lib/class-testimonials-widget-settings.php:200
|
137 |
-
msgid "
|
138 |
-
msgstr ""
|
139 |
-
|
140 |
-
#: lib/class-testimonials-widget-settings.php:208
|
141 |
-
msgid "Minimum Height"
|
142 |
-
msgstr ""
|
143 |
-
|
144 |
-
#: lib/class-testimonials-widget-settings.php:209
|
145 |
-
msgid "Set for minimum display height, in pixels"
|
146 |
-
msgstr ""
|
147 |
-
|
148 |
-
#: lib/class-testimonials-widget-settings.php:215
|
149 |
-
msgid "Maximum Height"
|
150 |
msgstr ""
|
151 |
|
152 |
-
#: lib/class-testimonials-widget-settings.php:
|
153 |
-
msgid "
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: lib/class-testimonials-widget-settings.php:
|
157 |
msgid "Testimonial Bottom Text"
|
158 |
msgstr ""
|
159 |
|
160 |
-
#: lib/class-testimonials-widget-settings.php:
|
161 |
msgid "Custom text or HTML for bottom of testimonials"
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: lib/class-testimonials-widget-settings.php:
|
165 |
msgid "General Options"
|
166 |
msgstr ""
|
167 |
|
168 |
-
#: lib/class-testimonials-widget-settings.php:
|
169 |
msgid ""
|
170 |
"Adds HTML tag markup per the <a href=\"%s\">Review schema</a> to "
|
171 |
"testimonials. Search engines including Bing, Google, Yahoo! and Yandex rely "
|
172 |
"on this markup to improve the display of search results."
|
173 |
msgstr ""
|
174 |
|
175 |
-
#: lib/class-testimonials-widget-settings.php:
|
176 |
msgid "Enable Review Schema?"
|
177 |
msgstr ""
|
178 |
|
179 |
-
#: lib/class-testimonials-widget-settings.php:
|
180 |
msgid "Reviewed Item?"
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: lib/class-testimonials-widget-settings.php:
|
184 |
msgid "Name of thing being referenced in testimonials"
|
185 |
msgstr ""
|
186 |
|
187 |
-
#: lib/class-testimonials-widget-settings.php:
|
188 |
msgid "Reviewed Item URL?"
|
189 |
msgstr ""
|
190 |
|
191 |
-
#: lib/class-testimonials-widget-settings.php:
|
192 |
msgid "URL of thing being referenced in testimonials"
|
193 |
msgstr ""
|
194 |
|
195 |
-
#: lib/class-testimonials-widget-settings.php:
|
196 |
msgid "Hide built-in quotes?"
|
197 |
msgstr ""
|
198 |
|
199 |
-
#: lib/class-testimonials-widget-settings.php:
|
200 |
msgid "Remove open and close quote span tags surrounding testimonial content"
|
201 |
msgstr ""
|
202 |
|
203 |
-
#: lib/class-testimonials-widget-settings.php:
|
204 |
msgid "Hide \"Testimonials Not Found\"?"
|
205 |
msgstr ""
|
206 |
|
207 |
-
#: lib/class-testimonials-widget-settings.php:
|
208 |
msgid "Hide Gravatar Image?"
|
209 |
msgstr ""
|
210 |
|
211 |
-
#: lib/class-testimonials-widget-settings.php:
|
212 |
msgid "Hide Image?"
|
213 |
msgstr ""
|
214 |
|
215 |
-
#: lib/class-testimonials-widget-settings.php:
|
216 |
msgid "Hide Image in Single View?"
|
217 |
msgstr ""
|
218 |
|
219 |
-
#: lib/class-testimonials-widget-settings.php:
|
220 |
msgid "Hide Testimonial Content?"
|
221 |
msgstr ""
|
222 |
|
223 |
-
#: lib/class-testimonials-widget-settings.php:
|
224 |
msgid "Hide Author/Source?"
|
225 |
msgstr ""
|
226 |
|
227 |
-
#: lib/class-testimonials-widget-settings.php:
|
228 |
msgid "Don't display \"Post Title\" in cite"
|
229 |
msgstr ""
|
230 |
|
231 |
-
#: lib/class-testimonials-widget-settings.php:
|
232 |
msgid "Hide Email?"
|
233 |
msgstr ""
|
234 |
|
235 |
-
#: lib/class-testimonials-widget-settings.php:
|
236 |
msgid "Hide Job Title?"
|
237 |
msgstr ""
|
238 |
|
239 |
-
#: lib/class-testimonials-widget-settings.php:
|
240 |
msgid "Hide Location?"
|
241 |
msgstr ""
|
242 |
|
243 |
-
#: lib/class-testimonials-widget-settings.php:
|
244 |
msgid "Hide Company?"
|
245 |
msgstr ""
|
246 |
|
247 |
-
#: lib/class-testimonials-widget-settings.php:
|
248 |
msgid "Hide URL?"
|
249 |
msgstr ""
|
250 |
|
251 |
-
#: lib/class-testimonials-widget-settings.php:
|
252 |
msgid "URL Target"
|
253 |
msgstr ""
|
254 |
|
255 |
-
#: lib/class-testimonials-widget-settings.php:
|
256 |
msgid "Add target to all URLs; leave blank if none"
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: lib/class-testimonials-widget-settings.php:
|
260 |
msgid "Enable Paging?"
|
261 |
msgstr ""
|
262 |
|
263 |
-
#: lib/class-testimonials-widget-settings.php:
|
264 |
msgid "For `[testimonialswidget_list]`"
|
265 |
msgstr ""
|
266 |
|
267 |
-
#: lib/class-testimonials-widget-settings.php:
|
268 |
msgid "Disable"
|
269 |
msgstr ""
|
270 |
|
271 |
-
#: lib/class-testimonials-widget-settings.php:
|
272 |
msgid "Enable"
|
273 |
msgstr ""
|
274 |
|
275 |
-
#: lib/class-testimonials-widget-settings.php:
|
276 |
msgid "Before testimonials"
|
277 |
msgstr ""
|
278 |
|
279 |
-
#: lib/class-testimonials-widget-settings.php:
|
280 |
msgid "After testimonials"
|
281 |
msgstr ""
|
282 |
|
283 |
-
#: lib/class-testimonials-widget-settings.php:
|
284 |
msgid "Do [shortcodes]?"
|
285 |
msgstr ""
|
286 |
|
287 |
-
#: lib/class-testimonials-widget-settings.php:
|
288 |
msgid "If unchecked, shortcodes are stripped."
|
289 |
msgstr ""
|
290 |
|
291 |
-
#: lib/class-testimonials-widget-settings.php:
|
292 |
msgid "Selection Options"
|
293 |
msgstr ""
|
294 |
|
295 |
-
#: lib/class-testimonials-widget-settings.php:
|
296 |
msgid "Category Filter"
|
297 |
msgstr ""
|
298 |
|
299 |
-
#: lib/class-testimonials-widget-settings.php:
|
300 |
-
msgid "Comma separated category
|
301 |
msgstr ""
|
302 |
|
303 |
-
#: lib/class-testimonials-widget-settings.php:
|
304 |
msgid "Tags Filter"
|
305 |
msgstr ""
|
306 |
|
307 |
-
#: lib/class-testimonials-widget-settings.php:
|
308 |
-
msgid "Comma separated tag
|
309 |
msgstr ""
|
310 |
|
311 |
-
#: lib/class-testimonials-widget-settings.php:
|
312 |
msgid "Require All Tags?"
|
313 |
msgstr ""
|
314 |
|
315 |
-
#: lib/class-testimonials-widget-settings.php:
|
316 |
msgid "Select only testimonials with all of the given tags"
|
317 |
msgstr ""
|
318 |
|
319 |
-
#: lib/class-testimonials-widget-settings.php:
|
320 |
msgid "Include IDs Filter"
|
321 |
msgstr ""
|
322 |
|
323 |
-
#: lib/class-testimonials-widget-settings.php:
|
324 |
-
#: lib/class-testimonials-widget-settings.php:
|
325 |
msgid "Comma separated testimonial IDs. Ex: 3,1,2"
|
326 |
msgstr ""
|
327 |
|
328 |
-
#: lib/class-testimonials-widget-settings.php:
|
329 |
msgid "Exclude IDs Filter"
|
330 |
msgstr ""
|
331 |
|
332 |
-
#: lib/class-testimonials-widget-settings.php:
|
333 |
msgid "Limit"
|
334 |
msgstr ""
|
335 |
|
336 |
-
#: lib/class-testimonials-widget-settings.php:
|
337 |
msgid "Number of testimonials to select per instance"
|
338 |
msgstr ""
|
339 |
|
340 |
-
#: lib/class-testimonials-widget-settings.php:
|
341 |
msgid "Ordering Options"
|
342 |
msgstr ""
|
343 |
|
344 |
-
#: lib/class-testimonials-widget-settings.php:
|
345 |
msgid "Random Order?"
|
346 |
msgstr ""
|
347 |
|
348 |
-
#: lib/class-testimonials-widget-settings.php:
|
349 |
msgid ""
|
350 |
"If checked, ignores ORDER BY, ORDER BY meta_key, and ORDER BY Order. Widgets "
|
351 |
"are random by default automatically"
|
352 |
msgstr ""
|
353 |
|
354 |
-
#: lib/class-testimonials-widget-settings.php:
|
355 |
msgid "ORDER BY"
|
356 |
msgstr ""
|
357 |
|
358 |
-
#: lib/class-testimonials-widget-settings.php:
|
359 |
msgid "Used when \"Random Order\" is disabled"
|
360 |
msgstr ""
|
361 |
|
362 |
-
#: lib/class-testimonials-widget-settings.php:
|
363 |
msgid "Testimonial ID"
|
364 |
msgstr ""
|
365 |
|
366 |
-
#: lib/class-testimonials-widget-settings.php:
|
367 |
msgid "Author"
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: lib/class-testimonials-widget-settings.php:
|
371 |
msgid "Date"
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: lib/class-testimonials-widget-settings.php:
|
375 |
msgid "Menu Order"
|
376 |
msgstr ""
|
377 |
|
378 |
-
#: lib/class-testimonials-widget-settings.php:
|
379 |
msgid "Source"
|
380 |
msgstr ""
|
381 |
|
382 |
-
#: lib/class-testimonials-widget-settings.php:
|
383 |
msgid "No order"
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: lib/class-testimonials-widget-settings.php:
|
387 |
msgid "ORDER BY meta_key"
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: lib/class-testimonials-widget-settings.php:
|
391 |
msgid ""
|
392 |
"Used when \"Random Order\" is disabled and sorting by a testimonials meta "
|
393 |
"key is needed. Overrides ORDER BY"
|
394 |
msgstr ""
|
395 |
|
396 |
-
#: lib/class-testimonials-widget-settings.php:
|
397 |
msgid "None"
|
398 |
msgstr ""
|
399 |
|
400 |
-
#: lib/class-testimonials-widget-settings.php:
|
401 |
-
#: testimonials-widget.php:
|
402 |
msgid "Job Title"
|
403 |
msgstr ""
|
404 |
|
405 |
-
#: lib/class-testimonials-widget-settings.php:
|
406 |
-
#: testimonials-widget.php:
|
407 |
msgid "Email"
|
408 |
msgstr ""
|
409 |
|
410 |
-
#: lib/class-testimonials-widget-settings.php:
|
411 |
-
#: testimonials-widget.php:
|
412 |
msgid "Location"
|
413 |
msgstr ""
|
414 |
|
415 |
-
#: lib/class-testimonials-widget-settings.php:
|
416 |
-
#: testimonials-widget.php:
|
417 |
msgid "Company"
|
418 |
msgstr ""
|
419 |
|
420 |
-
#: lib/class-testimonials-widget-settings.php:
|
421 |
-
#: testimonials-widget.php:
|
422 |
msgid "URL"
|
423 |
msgstr ""
|
424 |
|
425 |
-
#: lib/class-testimonials-widget-settings.php:
|
426 |
msgid "ORDER BY Order"
|
427 |
msgstr ""
|
428 |
|
429 |
-
#: lib/class-testimonials-widget-settings.php:
|
430 |
msgid "Descending"
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: lib/class-testimonials-widget-settings.php:
|
434 |
msgid "Ascending"
|
435 |
msgstr ""
|
436 |
|
437 |
-
#: lib/class-testimonials-widget-settings.php:
|
438 |
msgid "Allow Comments?"
|
439 |
msgstr ""
|
440 |
|
441 |
-
#: lib/class-testimonials-widget-settings.php:
|
442 |
msgid ""
|
443 |
"Only affects the Testimonials Widget post edit page. Your theme controls the "
|
444 |
"front-end view."
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: lib/class-testimonials-widget-settings.php:
|
448 |
msgid "URL slug-name for <a href=\"%1s\">testimonials archive</a> page."
|
449 |
msgstr ""
|
450 |
|
451 |
-
#: lib/class-testimonials-widget-settings.php:
|
452 |
msgid "Archive Page URL"
|
453 |
msgstr ""
|
454 |
|
455 |
-
#: lib/class-testimonials-widget-settings.php:
|
456 |
msgid ""
|
457 |
"URL slug-name for testimonial view pages. Shouldn't be the same as the "
|
458 |
"Archive Page URL nor should it match a page URL slug."
|
459 |
msgstr ""
|
460 |
|
461 |
-
#: lib/class-testimonials-widget-settings.php:
|
462 |
msgid "Testimonial Page URL"
|
463 |
msgstr ""
|
464 |
|
465 |
-
#: lib/class-testimonials-widget-settings.php:
|
466 |
msgid "Compatiblity Options"
|
467 |
msgstr ""
|
468 |
|
469 |
-
#: lib/class-testimonials-widget-settings.php:
|
470 |
-
msgid "
|
471 |
msgstr ""
|
472 |
|
473 |
-
#: lib/class-testimonials-widget-settings.php:
|
474 |
-
msgid "
|
|
|
475 |
msgstr ""
|
476 |
|
477 |
-
#: lib/class-testimonials-widget-settings.php:
|
478 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
479 |
msgstr ""
|
480 |
|
481 |
#: lib/class-testimonials-widget-settings.php:548
|
|
|
|
|
|
|
|
|
482 |
msgid ""
|
483 |
-
"
|
484 |
-
"Testimonials Widgets CSS"
|
485 |
msgstr ""
|
486 |
|
487 |
-
#: lib/class-testimonials-widget-settings.php:
|
488 |
-
msgid "
|
489 |
msgstr ""
|
490 |
|
491 |
#: lib/class-testimonials-widget-settings.php:560
|
492 |
-
msgid "
|
|
|
|
|
493 |
msgstr ""
|
494 |
|
495 |
-
#: lib/class-testimonials-widget-settings.php:
|
496 |
-
msgid "
|
497 |
msgstr ""
|
498 |
|
499 |
-
#: lib/class-testimonials-widget-settings.php:
|
500 |
-
msgid ""
|
501 |
-
"If checked, use Testimonials Widget's own category and tag taxonomies instead"
|
502 |
msgstr ""
|
503 |
|
504 |
-
#: lib/class-testimonials-widget-settings.php:
|
505 |
-
msgid "
|
506 |
msgstr ""
|
507 |
|
508 |
-
#: lib/class-testimonials-widget-settings.php:
|
|
|
|
|
|
|
|
|
509 |
msgid ""
|
510 |
-
"
|
511 |
-
"make a backup of your settings."
|
512 |
msgstr ""
|
513 |
|
514 |
#: lib/class-testimonials-widget-settings.php:595
|
515 |
-
msgid "
|
516 |
msgstr ""
|
517 |
|
518 |
-
#: lib/class-testimonials-widget-settings.php:
|
519 |
msgid ""
|
520 |
-
"
|
|
|
521 |
msgstr ""
|
522 |
|
523 |
-
#: lib/class-testimonials-widget-settings.php:
|
524 |
-
msgid "
|
525 |
msgstr ""
|
526 |
|
527 |
-
#: lib/class-testimonials-widget-settings.php:
|
|
|
528 |
msgid ""
|
529 |
-
"
|
530 |
-
"
|
531 |
msgstr ""
|
532 |
|
533 |
-
#: lib/class-testimonials-widget-settings.php:
|
534 |
-
msgid "
|
535 |
msgstr ""
|
536 |
|
537 |
-
#: lib/class-testimonials-widget-settings.php:
|
538 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
539 |
msgstr ""
|
540 |
|
541 |
-
#: lib/class-testimonials-widget-settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
542 |
msgid "Save Changes"
|
543 |
msgstr ""
|
544 |
|
545 |
-
#: lib/class-testimonials-widget-settings.php:
|
546 |
msgid ""
|
547 |
"When ready, <a href=\"%1$s\">view</a> or <a href=\"%2$s\">add</a> "
|
548 |
"testimonials."
|
549 |
msgstr ""
|
550 |
|
551 |
-
#: lib/class-testimonials-widget-settings.php:
|
552 |
msgid ""
|
553 |
"If you like this plugin, please <a href=\"%1$s\" title=\"Donate for Good "
|
554 |
"Karma\"><img src=\"%2$s\" border=\"0\" alt=\"Donate for Good Karma\" /></a> "
|
@@ -557,15 +617,15 @@ msgid ""
|
|
557 |
"\"%4$s\" title=\"Support forums\">support</a>."
|
558 |
msgstr ""
|
559 |
|
560 |
-
#: lib/class-testimonials-widget-settings.php:
|
561 |
msgid "Copyright ©%1$s <a href=\"%2$s\">Aihrus</a>."
|
562 |
msgstr ""
|
563 |
|
564 |
-
#: lib/class-testimonials-widget-settings.php:
|
565 |
msgid "Required"
|
566 |
msgstr ""
|
567 |
|
568 |
-
#: lib/class-testimonials-widget-settings.php:
|
569 |
msgid ""
|
570 |
"These Testimonials Widget Settings establish the default option values for "
|
571 |
"shortcodes, theme functions, and widget instances. Widgets, once created no "
|
@@ -574,35 +634,35 @@ msgid ""
|
|
574 |
"then recreate it."
|
575 |
msgstr ""
|
576 |
|
577 |
-
#: lib/class-testimonials-widget-settings.php:
|
578 |
msgid "Shortcode option names are listed below each entry."
|
579 |
msgstr ""
|
580 |
|
581 |
-
#: lib/class-testimonials-widget-settings.php:
|
582 |
msgid "View the <a href=\"%s\">Testimonials Widget documentation</a>."
|
583 |
msgstr ""
|
584 |
|
585 |
-
#: lib/class-testimonials-widget-settings.php:
|
586 |
msgid "Show or hide optional fields."
|
587 |
msgstr ""
|
588 |
|
589 |
-
#: lib/class-testimonials-widget-settings.php:
|
590 |
msgid "Options used to select testimonials."
|
591 |
msgstr ""
|
592 |
|
593 |
-
#: lib/class-testimonials-widget-settings.php:
|
594 |
msgid "Options used to determine displayed testimonials ordering."
|
595 |
msgstr ""
|
596 |
|
597 |
-
#: lib/class-testimonials-widget-settings.php:
|
598 |
msgid "Options related to showing testimonials in widgets."
|
599 |
msgstr ""
|
600 |
|
601 |
-
#: lib/class-testimonials-widget-settings.php:
|
602 |
msgid "Archive and singular page URL related testimonials options."
|
603 |
msgstr ""
|
604 |
|
605 |
-
#: lib/class-testimonials-widget-settings.php:
|
606 |
msgid "Backwards compatibility, import/export options, and reset options."
|
607 |
msgstr ""
|
608 |
|
@@ -610,7 +670,7 @@ msgstr ""
|
|
610 |
msgid "Display testimonials with multiple selection and display options"
|
611 |
msgstr ""
|
612 |
|
613 |
-
#. #-#-#-#-# testimonials-widget.pot (Testimonials Widget 2.
|
614 |
#. Plugin Name of the plugin/theme
|
615 |
#: lib/class-testimonials-widget-widget.php:37
|
616 |
msgid "Testimonials Widget"
|
@@ -624,149 +684,155 @@ msgstr ""
|
|
624 |
msgid "This widget's unique CSS class for styling"
|
625 |
msgstr ""
|
626 |
|
627 |
-
#: lib/class-testimonials-widget-widget.php:
|
628 |
msgid "Expand/Collapse"
|
629 |
msgstr ""
|
630 |
|
631 |
-
#: testimonials-widget.php:
|
632 |
msgid ""
|
633 |
"If your Testimonials Widget display has gone to funky town, please <a href="
|
634 |
"\"%s\">read the FAQ</a> about possible CSS fixes."
|
635 |
msgstr ""
|
636 |
|
637 |
-
#: testimonials-widget.php:
|
638 |
msgid ""
|
639 |
-
"Please donate $
|
640 |
"plugin. %s"
|
641 |
msgstr ""
|
642 |
|
643 |
-
#: testimonials-widget.php:
|
644 |
msgid "ID"
|
645 |
msgstr ""
|
646 |
|
647 |
-
#: testimonials-widget.php:
|
648 |
msgid "Image"
|
649 |
msgstr ""
|
650 |
|
651 |
-
#: testimonials-widget.php:
|
652 |
msgid "Shortcodes"
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: testimonials-widget.php:
|
656 |
msgid "Published by"
|
657 |
msgstr ""
|
658 |
|
659 |
-
#: testimonials-widget.php:
|
660 |
msgid "Category"
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: testimonials-widget.php:
|
664 |
msgid "Tags"
|
665 |
msgstr ""
|
666 |
|
667 |
-
#: testimonials-widget.php:
|
668 |
msgid "Add New"
|
669 |
msgstr ""
|
670 |
|
671 |
-
#: testimonials-widget.php:
|
672 |
msgid "Add New Testimonial"
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: testimonials-widget.php:
|
676 |
msgid "Edit Testimonial"
|
677 |
msgstr ""
|
678 |
|
679 |
-
#: testimonials-widget.php:
|
680 |
msgid "No testimonials found"
|
681 |
msgstr ""
|
682 |
|
683 |
-
#: testimonials-widget.php:
|
684 |
msgid "No testimonials found in Trash"
|
685 |
msgstr ""
|
686 |
|
687 |
-
#: testimonials-widget.php:
|
688 |
msgid "Search Testimonials"
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: testimonials-widget.php:
|
692 |
msgid "Testimonial"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: testimonials-widget.php:
|
696 |
msgid "View Testimonial"
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: testimonials-widget.php:
|
700 |
msgid "…"
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: testimonials-widget.php:
|
704 |
msgid "«"
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: testimonials-widget.php:
|
708 |
msgid "»"
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: testimonials-widget.php:
|
712 |
msgid "Testimonial Data"
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: testimonials-widget.php:
|
716 |
msgid "Enter title here"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: testimonials-widget.php:
|
720 |
msgid "Enter testimonial source here"
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: testimonials-widget.php:
|
724 |
msgid "Testimonial updated. <a href=\"%s\">View testimonial</a>"
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: testimonials-widget.php:
|
728 |
msgid "Custom field updated."
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: testimonials-widget.php:
|
732 |
msgid "Custom field deleted."
|
733 |
msgstr ""
|
734 |
|
735 |
-
#: testimonials-widget.php:
|
736 |
msgid "Testimonial updated."
|
737 |
msgstr ""
|
738 |
|
739 |
#. translators: %s: date and time of the revision
|
740 |
-
#: testimonials-widget.php:
|
741 |
msgid "Testimonial restored to revision from %s"
|
742 |
msgstr ""
|
743 |
|
744 |
-
#: testimonials-widget.php:
|
745 |
msgid "Testimonial published. <a href=\"%s\">View testimonial</a>"
|
746 |
msgstr ""
|
747 |
|
748 |
-
#: testimonials-widget.php:
|
749 |
msgid "Testimonial saved."
|
750 |
msgstr ""
|
751 |
|
752 |
-
#: testimonials-widget.php:
|
753 |
msgid ""
|
754 |
"Testimonial submitted. <a target=\"_blank\" href=\"%s\">Preview testimonial</"
|
755 |
"a>"
|
756 |
msgstr ""
|
757 |
|
758 |
-
#: testimonials-widget.php:
|
759 |
msgid ""
|
760 |
"Testimonial scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href="
|
761 |
"\"%2$s\">Preview testimonial</a>"
|
762 |
msgstr ""
|
763 |
|
764 |
-
#: testimonials-widget.php:
|
765 |
msgid ""
|
766 |
"Testimonial draft updated. <a target=\"_blank\" href=\"%s\">Preview "
|
767 |
"testimonial</a>"
|
768 |
msgstr ""
|
769 |
|
|
|
|
|
|
|
|
|
|
|
|
|
770 |
#. Plugin URI of the plugin/theme
|
771 |
msgid "http://wordpress.org/extend/plugins/testimonials-widget/"
|
772 |
msgstr ""
|
2 |
# This file is distributed under the same license as the Testimonials Widget package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Testimonials Widget 2.15.0\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/testimonials-widget\n"
|
7 |
+
"POT-Creation-Date: 2013-10-28 03:42:49+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
|
15 |
+
#: lib/class-testimonials-widget-settings.php:84
|
16 |
+
#: lib/class-testimonials-widget-settings.php:768
|
17 |
msgid "Testimonials Widget Settings"
|
18 |
msgstr ""
|
19 |
|
20 |
+
#: lib/class-testimonials-widget-settings.php:84 testimonials-widget.php:111
|
21 |
msgid "Settings"
|
22 |
msgstr ""
|
23 |
|
24 |
+
#: lib/class-testimonials-widget-settings.php:114
|
25 |
+
#: lib/class-testimonials-widget-settings.php:1405
|
26 |
msgid "General"
|
27 |
msgstr ""
|
28 |
|
29 |
+
#: lib/class-testimonials-widget-settings.php:115
|
30 |
+
#: lib/class-testimonials-widget-settings.php:1413
|
31 |
msgid "Selection"
|
32 |
msgstr ""
|
33 |
|
34 |
+
#: lib/class-testimonials-widget-settings.php:116
|
35 |
+
#: lib/class-testimonials-widget-settings.php:1421
|
36 |
msgid "Ordering"
|
37 |
msgstr ""
|
38 |
|
39 |
+
#: lib/class-testimonials-widget-settings.php:117
|
40 |
+
#: lib/class-testimonials-widget-settings.php:1429
|
41 |
msgid "Widget"
|
42 |
msgstr ""
|
43 |
|
44 |
+
#: lib/class-testimonials-widget-settings.php:118
|
45 |
+
#: lib/class-testimonials-widget-settings.php:1437
|
46 |
msgid "Post Type"
|
47 |
msgstr ""
|
48 |
|
49 |
+
#: lib/class-testimonials-widget-settings.php:119
|
50 |
+
#: lib/class-testimonials-widget-settings.php:1445
|
51 |
msgid "Compatibility & Reset"
|
52 |
msgstr ""
|
53 |
|
54 |
+
#: lib/class-testimonials-widget-settings.php:120
|
55 |
msgid "About Testimonials Widget"
|
56 |
msgstr ""
|
57 |
|
58 |
+
#: lib/class-testimonials-widget-settings.php:135
|
59 |
msgid "Widget Title"
|
60 |
msgstr ""
|
61 |
|
62 |
+
#: lib/class-testimonials-widget-settings.php:136 testimonials-widget.php:568
|
63 |
+
#: testimonials-widget.php:613
|
64 |
msgid "Testimonials"
|
65 |
msgstr ""
|
66 |
|
67 |
+
#: lib/class-testimonials-widget-settings.php:142
|
68 |
msgid "Title Link"
|
69 |
msgstr ""
|
70 |
|
71 |
+
#: lib/class-testimonials-widget-settings.php:143
|
72 |
msgid ""
|
73 |
"URL, path, or post ID to link widget title to. Ex: http://example.com/"
|
74 |
"stuff, /testimonials, 123 or "
|
75 |
msgstr ""
|
76 |
|
77 |
+
#: lib/class-testimonials-widget-settings.php:149
|
78 |
msgid "Character Limit"
|
79 |
msgstr ""
|
80 |
|
81 |
+
#: lib/class-testimonials-widget-settings.php:150
|
82 |
msgid "Number of characters to limit non-single testimonial views to"
|
83 |
msgstr ""
|
84 |
|
85 |
+
#: lib/class-testimonials-widget-settings.php:156
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
msgid "Rotation Speed"
|
87 |
msgstr ""
|
88 |
|
89 |
+
#: lib/class-testimonials-widget-settings.php:157
|
90 |
msgid ""
|
91 |
"Number of seconds between testimonial rotations or 0 for no rotation at all "
|
92 |
"refresh"
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: lib/class-testimonials-widget-settings.php:164
|
96 |
msgid "Additional Widget Options"
|
97 |
msgstr ""
|
98 |
|
99 |
+
#: lib/class-testimonials-widget-settings.php:170
|
100 |
+
msgid "Transition Mode?"
|
101 |
+
msgstr ""
|
102 |
+
|
103 |
+
#: lib/class-testimonials-widget-settings.php:171
|
104 |
+
msgid "Type of transition between slides"
|
105 |
+
msgstr ""
|
106 |
+
|
107 |
+
#: lib/class-testimonials-widget-settings.php:174
|
108 |
+
msgid "Fade"
|
109 |
+
msgstr ""
|
110 |
+
|
111 |
#: lib/class-testimonials-widget-settings.php:175
|
112 |
+
msgid "Horizontal"
|
113 |
msgstr ""
|
114 |
|
115 |
#: lib/class-testimonials-widget-settings.php:176
|
116 |
+
msgid "Vertical"
|
117 |
msgstr ""
|
118 |
|
119 |
#: lib/class-testimonials-widget-settings.php:183
|
120 |
+
msgid "Show Play/Pause?"
|
121 |
msgstr ""
|
122 |
|
123 |
#: lib/class-testimonials-widget-settings.php:184
|
124 |
+
msgid "Display start and stop buttons underneath the testimonial slider."
|
|
|
|
|
125 |
msgstr ""
|
126 |
|
127 |
#: lib/class-testimonials-widget-settings.php:192
|
128 |
+
msgid "Enable Video?"
|
129 |
msgstr ""
|
130 |
|
131 |
#: lib/class-testimonials-widget-settings.php:193
|
132 |
+
msgid "Only enable when displaying video content."
|
|
|
|
|
|
|
133 |
msgstr ""
|
134 |
|
135 |
#: lib/class-testimonials-widget-settings.php:200
|
136 |
+
msgid "Keep Whitespace?"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
msgstr ""
|
138 |
|
139 |
+
#: lib/class-testimonials-widget-settings.php:201
|
140 |
+
msgid "Keeps testimonials looking as entered than sans auto-formatting"
|
141 |
msgstr ""
|
142 |
|
143 |
+
#: lib/class-testimonials-widget-settings.php:208
|
144 |
msgid "Testimonial Bottom Text"
|
145 |
msgstr ""
|
146 |
|
147 |
+
#: lib/class-testimonials-widget-settings.php:209
|
148 |
msgid "Custom text or HTML for bottom of testimonials"
|
149 |
msgstr ""
|
150 |
|
151 |
+
#: lib/class-testimonials-widget-settings.php:221
|
152 |
msgid "General Options"
|
153 |
msgstr ""
|
154 |
|
155 |
+
#: lib/class-testimonials-widget-settings.php:225
|
156 |
msgid ""
|
157 |
"Adds HTML tag markup per the <a href=\"%s\">Review schema</a> to "
|
158 |
"testimonials. Search engines including Bing, Google, Yahoo! and Yandex rely "
|
159 |
"on this markup to improve the display of search results."
|
160 |
msgstr ""
|
161 |
|
162 |
+
#: lib/class-testimonials-widget-settings.php:228
|
163 |
msgid "Enable Review Schema?"
|
164 |
msgstr ""
|
165 |
|
166 |
+
#: lib/class-testimonials-widget-settings.php:236
|
167 |
msgid "Reviewed Item?"
|
168 |
msgstr ""
|
169 |
|
170 |
+
#: lib/class-testimonials-widget-settings.php:237
|
171 |
msgid "Name of thing being referenced in testimonials"
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: lib/class-testimonials-widget-settings.php:243
|
175 |
msgid "Reviewed Item URL?"
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: lib/class-testimonials-widget-settings.php:244
|
179 |
msgid "URL of thing being referenced in testimonials"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: lib/class-testimonials-widget-settings.php:251
|
183 |
msgid "Hide built-in quotes?"
|
184 |
msgstr ""
|
185 |
|
186 |
+
#: lib/class-testimonials-widget-settings.php:252
|
187 |
msgid "Remove open and close quote span tags surrounding testimonial content"
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: lib/class-testimonials-widget-settings.php:258
|
191 |
msgid "Hide \"Testimonials Not Found\"?"
|
192 |
msgstr ""
|
193 |
|
194 |
+
#: lib/class-testimonials-widget-settings.php:264
|
195 |
msgid "Hide Gravatar Image?"
|
196 |
msgstr ""
|
197 |
|
198 |
+
#: lib/class-testimonials-widget-settings.php:270
|
199 |
msgid "Hide Image?"
|
200 |
msgstr ""
|
201 |
|
202 |
+
#: lib/class-testimonials-widget-settings.php:276
|
203 |
msgid "Hide Image in Single View?"
|
204 |
msgstr ""
|
205 |
|
206 |
+
#: lib/class-testimonials-widget-settings.php:283
|
207 |
msgid "Hide Testimonial Content?"
|
208 |
msgstr ""
|
209 |
|
210 |
+
#: lib/class-testimonials-widget-settings.php:289
|
211 |
msgid "Hide Author/Source?"
|
212 |
msgstr ""
|
213 |
|
214 |
+
#: lib/class-testimonials-widget-settings.php:292
|
215 |
msgid "Don't display \"Post Title\" in cite"
|
216 |
msgstr ""
|
217 |
|
218 |
+
#: lib/class-testimonials-widget-settings.php:296
|
219 |
msgid "Hide Email?"
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: lib/class-testimonials-widget-settings.php:303
|
223 |
msgid "Hide Job Title?"
|
224 |
msgstr ""
|
225 |
|
226 |
+
#: lib/class-testimonials-widget-settings.php:309
|
227 |
msgid "Hide Location?"
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: lib/class-testimonials-widget-settings.php:315
|
231 |
msgid "Hide Company?"
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: lib/class-testimonials-widget-settings.php:321
|
235 |
msgid "Hide URL?"
|
236 |
msgstr ""
|
237 |
|
238 |
+
#: lib/class-testimonials-widget-settings.php:327
|
239 |
msgid "URL Target"
|
240 |
msgstr ""
|
241 |
|
242 |
+
#: lib/class-testimonials-widget-settings.php:328
|
243 |
msgid "Add target to all URLs; leave blank if none"
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: lib/class-testimonials-widget-settings.php:333
|
247 |
msgid "Enable Paging?"
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: lib/class-testimonials-widget-settings.php:334
|
251 |
msgid "For `[testimonialswidget_list]`"
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: lib/class-testimonials-widget-settings.php:337
|
255 |
msgid "Disable"
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: lib/class-testimonials-widget-settings.php:338
|
259 |
msgid "Enable"
|
260 |
msgstr ""
|
261 |
|
262 |
+
#: lib/class-testimonials-widget-settings.php:339
|
263 |
msgid "Before testimonials"
|
264 |
msgstr ""
|
265 |
|
266 |
+
#: lib/class-testimonials-widget-settings.php:340
|
267 |
msgid "After testimonials"
|
268 |
msgstr ""
|
269 |
|
270 |
+
#: lib/class-testimonials-widget-settings.php:347
|
271 |
msgid "Do [shortcodes]?"
|
272 |
msgstr ""
|
273 |
|
274 |
+
#: lib/class-testimonials-widget-settings.php:348
|
275 |
msgid "If unchecked, shortcodes are stripped."
|
276 |
msgstr ""
|
277 |
|
278 |
+
#: lib/class-testimonials-widget-settings.php:361
|
279 |
msgid "Selection Options"
|
280 |
msgstr ""
|
281 |
|
282 |
+
#: lib/class-testimonials-widget-settings.php:367
|
283 |
msgid "Category Filter"
|
284 |
msgstr ""
|
285 |
|
286 |
+
#: lib/class-testimonials-widget-settings.php:368
|
287 |
+
msgid "Comma separated category names. Ex: Category A, Another category"
|
288 |
msgstr ""
|
289 |
|
290 |
+
#: lib/class-testimonials-widget-settings.php:375
|
291 |
msgid "Tags Filter"
|
292 |
msgstr ""
|
293 |
|
294 |
+
#: lib/class-testimonials-widget-settings.php:376
|
295 |
+
msgid "Comma separated tag names. Ex: Tag A, Another tag"
|
296 |
msgstr ""
|
297 |
|
298 |
+
#: lib/class-testimonials-widget-settings.php:383
|
299 |
msgid "Require All Tags?"
|
300 |
msgstr ""
|
301 |
|
302 |
+
#: lib/class-testimonials-widget-settings.php:384
|
303 |
msgid "Select only testimonials with all of the given tags"
|
304 |
msgstr ""
|
305 |
|
306 |
+
#: lib/class-testimonials-widget-settings.php:391
|
307 |
msgid "Include IDs Filter"
|
308 |
msgstr ""
|
309 |
|
310 |
+
#: lib/class-testimonials-widget-settings.php:392
|
311 |
+
#: lib/class-testimonials-widget-settings.php:399
|
312 |
msgid "Comma separated testimonial IDs. Ex: 3,1,2"
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: lib/class-testimonials-widget-settings.php:398
|
316 |
msgid "Exclude IDs Filter"
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: lib/class-testimonials-widget-settings.php:405
|
320 |
msgid "Limit"
|
321 |
msgstr ""
|
322 |
|
323 |
+
#: lib/class-testimonials-widget-settings.php:406
|
324 |
msgid "Number of testimonials to select per instance"
|
325 |
msgstr ""
|
326 |
|
327 |
+
#: lib/class-testimonials-widget-settings.php:419
|
328 |
msgid "Ordering Options"
|
329 |
msgstr ""
|
330 |
|
331 |
+
#: lib/class-testimonials-widget-settings.php:425
|
332 |
msgid "Random Order?"
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: lib/class-testimonials-widget-settings.php:426
|
336 |
msgid ""
|
337 |
"If checked, ignores ORDER BY, ORDER BY meta_key, and ORDER BY Order. Widgets "
|
338 |
"are random by default automatically"
|
339 |
msgstr ""
|
340 |
|
341 |
+
#: lib/class-testimonials-widget-settings.php:433
|
342 |
msgid "ORDER BY"
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: lib/class-testimonials-widget-settings.php:434
|
346 |
msgid "Used when \"Random Order\" is disabled"
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: lib/class-testimonials-widget-settings.php:437
|
350 |
msgid "Testimonial ID"
|
351 |
msgstr ""
|
352 |
|
353 |
+
#: lib/class-testimonials-widget-settings.php:438
|
354 |
msgid "Author"
|
355 |
msgstr ""
|
356 |
|
357 |
+
#: lib/class-testimonials-widget-settings.php:439 testimonials-widget.php:545
|
358 |
msgid "Date"
|
359 |
msgstr ""
|
360 |
|
361 |
+
#: lib/class-testimonials-widget-settings.php:440
|
362 |
msgid "Menu Order"
|
363 |
msgstr ""
|
364 |
|
365 |
+
#: lib/class-testimonials-widget-settings.php:441 testimonials-widget.php:537
|
366 |
msgid "Source"
|
367 |
msgstr ""
|
368 |
|
369 |
+
#: lib/class-testimonials-widget-settings.php:442
|
370 |
msgid "No order"
|
371 |
msgstr ""
|
372 |
|
373 |
+
#: lib/class-testimonials-widget-settings.php:450
|
374 |
msgid "ORDER BY meta_key"
|
375 |
msgstr ""
|
376 |
|
377 |
+
#: lib/class-testimonials-widget-settings.php:451
|
378 |
msgid ""
|
379 |
"Used when \"Random Order\" is disabled and sorting by a testimonials meta "
|
380 |
"key is needed. Overrides ORDER BY"
|
381 |
msgstr ""
|
382 |
|
383 |
+
#: lib/class-testimonials-widget-settings.php:454
|
384 |
msgid "None"
|
385 |
msgstr ""
|
386 |
|
387 |
+
#: lib/class-testimonials-widget-settings.php:455 testimonials-widget.php:539
|
388 |
+
#: testimonials-widget.php:1715
|
389 |
msgid "Job Title"
|
390 |
msgstr ""
|
391 |
|
392 |
+
#: lib/class-testimonials-widget-settings.php:456 testimonials-widget.php:541
|
393 |
+
#: testimonials-widget.php:1727
|
394 |
msgid "Email"
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: lib/class-testimonials-widget-settings.php:457 testimonials-widget.php:540
|
398 |
+
#: testimonials-widget.php:1721
|
399 |
msgid "Location"
|
400 |
msgstr ""
|
401 |
|
402 |
+
#: lib/class-testimonials-widget-settings.php:458 testimonials-widget.php:542
|
403 |
+
#: testimonials-widget.php:1733
|
404 |
msgid "Company"
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: lib/class-testimonials-widget-settings.php:459 testimonials-widget.php:543
|
408 |
+
#: testimonials-widget.php:1739
|
409 |
msgid "URL"
|
410 |
msgstr ""
|
411 |
|
412 |
+
#: lib/class-testimonials-widget-settings.php:466
|
413 |
msgid "ORDER BY Order"
|
414 |
msgstr ""
|
415 |
|
416 |
+
#: lib/class-testimonials-widget-settings.php:469
|
417 |
msgid "Descending"
|
418 |
msgstr ""
|
419 |
|
420 |
+
#: lib/class-testimonials-widget-settings.php:470
|
421 |
msgid "Ascending"
|
422 |
msgstr ""
|
423 |
|
424 |
+
#: lib/class-testimonials-widget-settings.php:484
|
425 |
msgid "Allow Comments?"
|
426 |
msgstr ""
|
427 |
|
428 |
+
#: lib/class-testimonials-widget-settings.php:485
|
429 |
msgid ""
|
430 |
"Only affects the Testimonials Widget post edit page. Your theme controls the "
|
431 |
"front-end view."
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: lib/class-testimonials-widget-settings.php:491
|
435 |
msgid "URL slug-name for <a href=\"%1s\">testimonials archive</a> page."
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: lib/class-testimonials-widget-settings.php:497
|
439 |
msgid "Archive Page URL"
|
440 |
msgstr ""
|
441 |
|
442 |
+
#: lib/class-testimonials-widget-settings.php:504
|
443 |
msgid ""
|
444 |
"URL slug-name for testimonial view pages. Shouldn't be the same as the "
|
445 |
"Archive Page URL nor should it match a page URL slug."
|
446 |
msgstr ""
|
447 |
|
448 |
+
#: lib/class-testimonials-widget-settings.php:508
|
449 |
msgid "Testimonial Page URL"
|
450 |
msgstr ""
|
451 |
|
452 |
+
#: lib/class-testimonials-widget-settings.php:518
|
453 |
msgid "Compatiblity Options"
|
454 |
msgstr ""
|
455 |
|
456 |
+
#: lib/class-testimonials-widget-settings.php:524
|
457 |
+
msgid "Don't Use Default Taxonomies?"
|
458 |
msgstr ""
|
459 |
|
460 |
+
#: lib/class-testimonials-widget-settings.php:527
|
461 |
+
msgid ""
|
462 |
+
"If checked, use Testimonials Widget's own category and tag taxonomies instead"
|
463 |
msgstr ""
|
464 |
|
465 |
+
#: lib/class-testimonials-widget-settings.php:538
|
466 |
+
msgid "Export Settings"
|
467 |
+
msgstr ""
|
468 |
+
|
469 |
+
#: lib/class-testimonials-widget-settings.php:540
|
470 |
+
msgid ""
|
471 |
+
"These are your current settings in a serialized format. Copy the contents to "
|
472 |
+
"make a backup of your settings."
|
473 |
msgstr ""
|
474 |
|
475 |
#: lib/class-testimonials-widget-settings.php:548
|
476 |
+
msgid "Import Settings"
|
477 |
+
msgstr ""
|
478 |
+
|
479 |
+
#: lib/class-testimonials-widget-settings.php:550
|
480 |
msgid ""
|
481 |
+
"Paste new serialized settings here to overwrite your current configuration."
|
|
|
482 |
msgstr ""
|
483 |
|
484 |
+
#: lib/class-testimonials-widget-settings.php:556
|
485 |
+
msgid "Remove Plugin Data on Deletion?"
|
486 |
msgstr ""
|
487 |
|
488 |
#: lib/class-testimonials-widget-settings.php:560
|
489 |
+
msgid ""
|
490 |
+
"Delete all Testimonials Widget data and options from database on plugin "
|
491 |
+
"deletion"
|
492 |
msgstr ""
|
493 |
|
494 |
+
#: lib/class-testimonials-widget-settings.php:566
|
495 |
+
msgid "Reset to Defaults?"
|
496 |
msgstr ""
|
497 |
|
498 |
+
#: lib/class-testimonials-widget-settings.php:570
|
499 |
+
msgid "Check this box to reset options to their defaults"
|
|
|
500 |
msgstr ""
|
501 |
|
502 |
+
#: lib/class-testimonials-widget-settings.php:576
|
503 |
+
msgid "Version Based Options"
|
504 |
msgstr ""
|
505 |
|
506 |
+
#: lib/class-testimonials-widget-settings.php:582
|
507 |
+
msgid "Use bxSlider?"
|
508 |
+
msgstr ""
|
509 |
+
|
510 |
+
#: lib/class-testimonials-widget-settings.php:583
|
511 |
msgid ""
|
512 |
+
"Pre 2.15.0, Testimonials Widgets used custom JavaScript for transitions."
|
|
|
513 |
msgstr ""
|
514 |
|
515 |
#: lib/class-testimonials-widget-settings.php:595
|
516 |
+
msgid "Disable Animation?"
|
517 |
msgstr ""
|
518 |
|
519 |
+
#: lib/class-testimonials-widget-settings.php:596
|
520 |
msgid ""
|
521 |
+
"Pre 2.15.0, Disable animation between testimonial transitions. Useful when "
|
522 |
+
"stacking widgets."
|
523 |
msgstr ""
|
524 |
|
525 |
+
#: lib/class-testimonials-widget-settings.php:604
|
526 |
+
msgid "Fade Out Speed"
|
527 |
msgstr ""
|
528 |
|
529 |
+
#: lib/class-testimonials-widget-settings.php:605
|
530 |
+
#: lib/class-testimonials-widget-settings.php:613
|
531 |
msgid ""
|
532 |
+
"Pre 2.15.0, Transition duration in milliseconds; higher values indicate "
|
533 |
+
"slower animations, not faster ones."
|
534 |
msgstr ""
|
535 |
|
536 |
+
#: lib/class-testimonials-widget-settings.php:612
|
537 |
+
msgid "Fade In Speed"
|
538 |
msgstr ""
|
539 |
|
540 |
+
#: lib/class-testimonials-widget-settings.php:620
|
541 |
+
msgid "Height"
|
542 |
+
msgstr ""
|
543 |
+
|
544 |
+
#: lib/class-testimonials-widget-settings.php:621
|
545 |
+
msgid ""
|
546 |
+
"Pre 2.15.0, Testimonials height, in pixels. Overrides minimum and maximum "
|
547 |
+
"height"
|
548 |
+
msgstr ""
|
549 |
+
|
550 |
+
#: lib/class-testimonials-widget-settings.php:627
|
551 |
+
msgid "Minimum Height"
|
552 |
+
msgstr ""
|
553 |
+
|
554 |
+
#: lib/class-testimonials-widget-settings.php:628
|
555 |
+
msgid "Pre 2.15.0, Set for minimum display height, in pixels"
|
556 |
msgstr ""
|
557 |
|
558 |
+
#: lib/class-testimonials-widget-settings.php:634
|
559 |
+
msgid "Maximum Height"
|
560 |
+
msgstr ""
|
561 |
+
|
562 |
+
#: lib/class-testimonials-widget-settings.php:635
|
563 |
+
msgid "Pre 2.15.0, Set for maximum display height, in pixels"
|
564 |
+
msgstr ""
|
565 |
+
|
566 |
+
#: lib/class-testimonials-widget-settings.php:641
|
567 |
+
msgid "Always Load CSS?"
|
568 |
+
msgstr ""
|
569 |
+
|
570 |
+
#: lib/class-testimonials-widget-settings.php:642
|
571 |
+
msgid ""
|
572 |
+
"Pre 2.14.0, Testimonials Widgets CSS was always loaded, whether needed or not"
|
573 |
+
msgstr ""
|
574 |
+
|
575 |
+
#: lib/class-testimonials-widget-settings.php:653
|
576 |
+
msgid "Include IE7 CSS?"
|
577 |
+
msgstr ""
|
578 |
+
|
579 |
+
#: lib/class-testimonials-widget-settings.php:654
|
580 |
+
msgid "IE7 specific CSS moved to separate CSS file in version 2.13.6."
|
581 |
+
msgstr ""
|
582 |
+
|
583 |
+
#: lib/class-testimonials-widget-settings.php:666
|
584 |
+
msgid "Use `<q>` tag?"
|
585 |
+
msgstr ""
|
586 |
+
|
587 |
+
#: lib/class-testimonials-widget-settings.php:667
|
588 |
+
msgid "Pre 2.11.0, not HTML5 compliant"
|
589 |
+
msgstr ""
|
590 |
+
|
591 |
+
#: lib/class-testimonials-widget-settings.php:678
|
592 |
+
msgid "Remove `.hentry` CSS?"
|
593 |
+
msgstr ""
|
594 |
+
|
595 |
+
#: lib/class-testimonials-widget-settings.php:679
|
596 |
+
msgid ""
|
597 |
+
"Pre 2.6.4, some themes use class `.hentry` in a manner that breaks "
|
598 |
+
"Testimonials Widgets CSS"
|
599 |
+
msgstr ""
|
600 |
+
|
601 |
+
#: lib/class-testimonials-widget-settings.php:785
|
602 |
msgid "Save Changes"
|
603 |
msgstr ""
|
604 |
|
605 |
+
#: lib/class-testimonials-widget-settings.php:792
|
606 |
msgid ""
|
607 |
"When ready, <a href=\"%1$s\">view</a> or <a href=\"%2$s\">add</a> "
|
608 |
"testimonials."
|
609 |
msgstr ""
|
610 |
|
611 |
+
#: lib/class-testimonials-widget-settings.php:802
|
612 |
msgid ""
|
613 |
"If you like this plugin, please <a href=\"%1$s\" title=\"Donate for Good "
|
614 |
"Karma\"><img src=\"%2$s\" border=\"0\" alt=\"Donate for Good Karma\" /></a> "
|
617 |
"\"%4$s\" title=\"Support forums\">support</a>."
|
618 |
msgstr ""
|
619 |
|
620 |
+
#: lib/class-testimonials-widget-settings.php:813
|
621 |
msgid "Copyright ©%1$s <a href=\"%2$s\">Aihrus</a>."
|
622 |
msgstr ""
|
623 |
|
624 |
+
#: lib/class-testimonials-widget-settings.php:1274
|
625 |
msgid "Required"
|
626 |
msgstr ""
|
627 |
|
628 |
+
#: lib/class-testimonials-widget-settings.php:1391
|
629 |
msgid ""
|
630 |
"These Testimonials Widget Settings establish the default option values for "
|
631 |
"shortcodes, theme functions, and widget instances. Widgets, once created no "
|
634 |
"then recreate it."
|
635 |
msgstr ""
|
636 |
|
637 |
+
#: lib/class-testimonials-widget-settings.php:1393
|
638 |
msgid "Shortcode option names are listed below each entry."
|
639 |
msgstr ""
|
640 |
|
641 |
+
#: lib/class-testimonials-widget-settings.php:1396
|
642 |
msgid "View the <a href=\"%s\">Testimonials Widget documentation</a>."
|
643 |
msgstr ""
|
644 |
|
645 |
+
#: lib/class-testimonials-widget-settings.php:1406
|
646 |
msgid "Show or hide optional fields."
|
647 |
msgstr ""
|
648 |
|
649 |
+
#: lib/class-testimonials-widget-settings.php:1414
|
650 |
msgid "Options used to select testimonials."
|
651 |
msgstr ""
|
652 |
|
653 |
+
#: lib/class-testimonials-widget-settings.php:1422
|
654 |
msgid "Options used to determine displayed testimonials ordering."
|
655 |
msgstr ""
|
656 |
|
657 |
+
#: lib/class-testimonials-widget-settings.php:1430
|
658 |
msgid "Options related to showing testimonials in widgets."
|
659 |
msgstr ""
|
660 |
|
661 |
+
#: lib/class-testimonials-widget-settings.php:1438
|
662 |
msgid "Archive and singular page URL related testimonials options."
|
663 |
msgstr ""
|
664 |
|
665 |
+
#: lib/class-testimonials-widget-settings.php:1446
|
666 |
msgid "Backwards compatibility, import/export options, and reset options."
|
667 |
msgstr ""
|
668 |
|
670 |
msgid "Display testimonials with multiple selection and display options"
|
671 |
msgstr ""
|
672 |
|
673 |
+
#. #-#-#-#-# testimonials-widget.pot (Testimonials Widget 2.15.0) #-#-#-#-#
|
674 |
#. Plugin Name of the plugin/theme
|
675 |
#: lib/class-testimonials-widget-widget.php:37
|
676 |
msgid "Testimonials Widget"
|
684 |
msgid "This widget's unique CSS class for styling"
|
685 |
msgstr ""
|
686 |
|
687 |
+
#: lib/class-testimonials-widget-widget.php:212
|
688 |
msgid "Expand/Collapse"
|
689 |
msgstr ""
|
690 |
|
691 |
+
#: testimonials-widget.php:320
|
692 |
msgid ""
|
693 |
"If your Testimonials Widget display has gone to funky town, please <a href="
|
694 |
"\"%s\">read the FAQ</a> about possible CSS fixes."
|
695 |
msgstr ""
|
696 |
|
697 |
+
#: testimonials-widget.php:329
|
698 |
msgid ""
|
699 |
+
"Please donate $5 towards development and support of this Testimonials Widget "
|
700 |
"plugin. %s"
|
701 |
msgstr ""
|
702 |
|
703 |
+
#: testimonials-widget.php:535
|
704 |
msgid "ID"
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: testimonials-widget.php:536
|
708 |
msgid "Image"
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: testimonials-widget.php:538
|
712 |
msgid "Shortcodes"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: testimonials-widget.php:544
|
716 |
msgid "Published by"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: testimonials-widget.php:550 testimonials-widget.php:553
|
720 |
msgid "Category"
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: testimonials-widget.php:551 testimonials-widget.php:554
|
724 |
msgid "Tags"
|
725 |
msgstr ""
|
726 |
|
727 |
+
#: testimonials-widget.php:565
|
728 |
msgid "Add New"
|
729 |
msgstr ""
|
730 |
|
731 |
+
#: testimonials-widget.php:566 testimonials-widget.php:569
|
732 |
msgid "Add New Testimonial"
|
733 |
msgstr ""
|
734 |
|
735 |
+
#: testimonials-widget.php:567
|
736 |
msgid "Edit Testimonial"
|
737 |
msgstr ""
|
738 |
|
739 |
+
#: testimonials-widget.php:570 testimonials-widget.php:971
|
740 |
msgid "No testimonials found"
|
741 |
msgstr ""
|
742 |
|
743 |
+
#: testimonials-widget.php:571
|
744 |
msgid "No testimonials found in Trash"
|
745 |
msgstr ""
|
746 |
|
747 |
+
#: testimonials-widget.php:573
|
748 |
msgid "Search Testimonials"
|
749 |
msgstr ""
|
750 |
|
751 |
+
#: testimonials-widget.php:574 testimonials-widget.php:1827
|
752 |
msgid "Testimonial"
|
753 |
msgstr ""
|
754 |
|
755 |
+
#: testimonials-widget.php:575
|
756 |
msgid "View Testimonial"
|
757 |
msgstr ""
|
758 |
|
759 |
+
#: testimonials-widget.php:1116
|
760 |
msgid "…"
|
761 |
msgstr ""
|
762 |
|
763 |
+
#: testimonials-widget.php:1448
|
764 |
msgid "«"
|
765 |
msgstr ""
|
766 |
|
767 |
+
#: testimonials-widget.php:1457
|
768 |
msgid "»"
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: testimonials-widget.php:1751
|
772 |
msgid "Testimonial Data"
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: testimonials-widget.php:1776
|
776 |
msgid "Enter title here"
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: testimonials-widget.php:1777
|
780 |
msgid "Enter testimonial source here"
|
781 |
msgstr ""
|
782 |
|
783 |
+
#: testimonials-widget.php:1802
|
784 |
msgid "Testimonial updated. <a href=\"%s\">View testimonial</a>"
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: testimonials-widget.php:1803
|
788 |
msgid "Custom field updated."
|
789 |
msgstr ""
|
790 |
|
791 |
+
#: testimonials-widget.php:1804
|
792 |
msgid "Custom field deleted."
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: testimonials-widget.php:1805
|
796 |
msgid "Testimonial updated."
|
797 |
msgstr ""
|
798 |
|
799 |
#. translators: %s: date and time of the revision
|
800 |
+
#: testimonials-widget.php:1807
|
801 |
msgid "Testimonial restored to revision from %s"
|
802 |
msgstr ""
|
803 |
|
804 |
+
#: testimonials-widget.php:1808
|
805 |
msgid "Testimonial published. <a href=\"%s\">View testimonial</a>"
|
806 |
msgstr ""
|
807 |
|
808 |
+
#: testimonials-widget.php:1809
|
809 |
msgid "Testimonial saved."
|
810 |
msgstr ""
|
811 |
|
812 |
+
#: testimonials-widget.php:1810
|
813 |
msgid ""
|
814 |
"Testimonial submitted. <a target=\"_blank\" href=\"%s\">Preview testimonial</"
|
815 |
"a>"
|
816 |
msgstr ""
|
817 |
|
818 |
+
#: testimonials-widget.php:1811
|
819 |
msgid ""
|
820 |
"Testimonial scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href="
|
821 |
"\"%2$s\">Preview testimonial</a>"
|
822 |
msgstr ""
|
823 |
|
824 |
+
#: testimonials-widget.php:1812
|
825 |
msgid ""
|
826 |
"Testimonial draft updated. <a target=\"_blank\" href=\"%s\">Preview "
|
827 |
"testimonial</a>"
|
828 |
msgstr ""
|
829 |
|
830 |
+
#: testimonials-widget.php:2118
|
831 |
+
msgid ""
|
832 |
+
"If your Testimonials Widget display has gone to funky town, please <a href="
|
833 |
+
"\"%s\">read the FAQ</a> about possible fixes."
|
834 |
+
msgstr ""
|
835 |
+
|
836 |
#. Plugin URI of the plugin/theme
|
837 |
msgid "http://wordpress.org/extend/plugins/testimonials-widget/"
|
838 |
msgstr ""
|
lib/class-testimonials-widget-settings.php
CHANGED
@@ -38,16 +38,18 @@ class Testimonials_Widget_Settings {
|
|
38 |
'id' => 'default_field',
|
39 |
'section' => 'general',
|
40 |
'std' => '', // default key or value
|
|
|
41 |
'title' => '',
|
42 |
'type' => 'text', // textarea, checkbox, radio, select, hidden, heading, password, expand_begin, expand_end
|
43 |
'validate' => '', // required, term, slug, slugs, ids, order, single paramater PHP functions
|
44 |
'widget' => 1, // show in widget options, 0 off
|
45 |
);
|
46 |
|
47 |
-
public static $defaults
|
48 |
-
public static $sections
|
49 |
-
public static $settings
|
50 |
-
public static $
|
|
|
51 |
|
52 |
|
53 |
public function __construct() {
|
@@ -149,13 +151,6 @@ class Testimonials_Widget_Settings {
|
|
149 |
'validate' => 'absint',
|
150 |
);
|
151 |
|
152 |
-
self::$settings['height'] = array(
|
153 |
-
'section' => 'widget',
|
154 |
-
'title' => esc_html__( 'Height', 'testimonials-widget' ),
|
155 |
-
'desc' => esc_html__( 'Testimonials height, in pixels. Overrides minimum and maximum height', 'testimonials-widget' ),
|
156 |
-
'validate' => 'min1',
|
157 |
-
);
|
158 |
-
|
159 |
self::$settings['refresh_interval'] = array(
|
160 |
'section' => 'widget',
|
161 |
'title' => esc_html__( 'Rotation Speed', 'testimonials-widget' ),
|
@@ -170,51 +165,42 @@ class Testimonials_Widget_Settings {
|
|
170 |
'type' => 'expand_begin',
|
171 |
);
|
172 |
|
173 |
-
self::$settings['
|
174 |
'section' => 'widget',
|
175 |
-
'title' => esc_html__( '
|
176 |
-
'desc' => esc_html__( '
|
177 |
-
'type' => '
|
178 |
-
'
|
|
|
|
|
|
|
|
|
|
|
179 |
);
|
180 |
|
181 |
-
self::$settings['
|
182 |
'section' => 'widget',
|
183 |
-
'title' => esc_html__( '
|
184 |
-
'desc' => esc_html__( '
|
185 |
'type' => 'checkbox',
|
186 |
'validate' => 'is_true',
|
187 |
'std' => 1,
|
188 |
);
|
189 |
|
190 |
-
self::$settings['
|
191 |
-
'section' => 'widget',
|
192 |
-
'title' => esc_html__( 'Fade Out Speed', 'testimonials-widget' ),
|
193 |
-
'desc' => esc_html__( 'Transition duration in milliseconds; higher values indicate slower animations, not faster ones.', 'testimonials-widget' ),
|
194 |
-
'std' => 1250,
|
195 |
-
'validate' => 'absint',
|
196 |
-
);
|
197 |
-
|
198 |
-
self::$settings['fade_in_speed'] = array(
|
199 |
'section' => 'widget',
|
200 |
-
'title' => esc_html__( '
|
201 |
-
'desc' => esc_html__( '
|
202 |
-
'
|
203 |
-
'validate' => '
|
204 |
-
);
|
205 |
-
|
206 |
-
self::$settings['min_height'] = array(
|
207 |
-
'section' => 'widget',
|
208 |
-
'title' => esc_html__( 'Minimum Height', 'testimonials-widget' ),
|
209 |
-
'desc' => esc_html__( 'Set for minimum display height, in pixels', 'testimonials-widget' ),
|
210 |
-
'validate' => 'min1',
|
211 |
);
|
212 |
|
213 |
-
self::$settings['
|
214 |
'section' => 'widget',
|
215 |
-
'title' => esc_html__( '
|
216 |
-
'desc' => esc_html__( '
|
217 |
-
'
|
|
|
218 |
);
|
219 |
|
220 |
self::$settings['bottom_text'] = array(
|
@@ -250,6 +236,7 @@ class Testimonials_Widget_Settings {
|
|
250 |
'title' => esc_html__( 'Reviewed Item?', 'testimonials-widget' ),
|
251 |
'desc' => esc_html__( 'Name of thing being referenced in testimonials', 'testimonials-widget' ),
|
252 |
'std' => get_option( 'blogname' ),
|
|
|
253 |
);
|
254 |
|
255 |
self::$settings['item_reviewed_url'] = array(
|
@@ -257,6 +244,7 @@ class Testimonials_Widget_Settings {
|
|
257 |
'desc' => esc_html__( 'URL of thing being referenced in testimonials', 'testimonials-widget' ),
|
258 |
'std' => network_site_url(),
|
259 |
'validate' => 'url',
|
|
|
260 |
);
|
261 |
|
262 |
self::$settings['disable_quotes'] = array(
|
@@ -377,15 +365,17 @@ class Testimonials_Widget_Settings {
|
|
377 |
self::$settings['category'] = array(
|
378 |
'section' => 'selection',
|
379 |
'title' => esc_html__( 'Category Filter', 'testimonials-widget' ),
|
380 |
-
'desc' => esc_html__( 'Comma separated category
|
381 |
-
'validate' => '
|
|
|
382 |
);
|
383 |
|
384 |
self::$settings['tags'] = array(
|
385 |
'section' => 'selection',
|
386 |
'title' => esc_html__( 'Tags Filter', 'testimonials-widget' ),
|
387 |
-
'desc' => esc_html__( 'Comma separated tag
|
388 |
-
'validate' => '
|
|
|
389 |
);
|
390 |
|
391 |
self::$settings['tags_all'] = array(
|
@@ -529,43 +519,6 @@ class Testimonials_Widget_Settings {
|
|
529 |
'type' => 'expand_begin',
|
530 |
);
|
531 |
|
532 |
-
self::$settings['include_ie7_css'] = array(
|
533 |
-
'section' => 'reset',
|
534 |
-
'title' => esc_html__( 'Include IE7 CSS?', 'testimonials-widget' ),
|
535 |
-
'desc' => esc_html__( 'IE7 specific CSS moved to separate CSS file in version 2.13.6.', 'testimonials-widget' ),
|
536 |
-
'type' => 'checkbox',
|
537 |
-
'validate' => 'is_true',
|
538 |
-
'backwards' => array(
|
539 |
-
'version' => '2.13.6',
|
540 |
-
'std' => 1,
|
541 |
-
),
|
542 |
-
'widget' => 1,
|
543 |
-
);
|
544 |
-
|
545 |
-
self::$settings['remove_hentry'] = array(
|
546 |
-
'section' => 'reset',
|
547 |
-
'title' => esc_html__( 'Remove `.hentry` CSS?', 'testimonials-widget' ),
|
548 |
-
'desc' => esc_html__( 'Pre 2.6.4. Some themes use class `.hentry` in a manner that breaks Testimonials Widgets CSS', 'testimonials-widget' ),
|
549 |
-
'type' => 'checkbox',
|
550 |
-
'validate' => 'is_true',
|
551 |
-
'backwards' => array(
|
552 |
-
'version' => '2.6.4',
|
553 |
-
'std' => 1,
|
554 |
-
),
|
555 |
-
);
|
556 |
-
|
557 |
-
self::$settings['use_quote_tag'] = array(
|
558 |
-
'section' => 'reset',
|
559 |
-
'title' => esc_html__( 'Use `<q>` tag?', 'testimonials-widget' ),
|
560 |
-
'desc' => esc_html__( 'Pre 2.11.0. Not HTML5 compliant', 'testimonials-widget' ),
|
561 |
-
'type' => 'checkbox',
|
562 |
-
'validate' => 'is_true',
|
563 |
-
'backwards' => array(
|
564 |
-
'version' => '2.11.0',
|
565 |
-
'std' => 1,
|
566 |
-
),
|
567 |
-
);
|
568 |
-
|
569 |
self::$settings['use_cpt_taxonomy'] = array(
|
570 |
'section' => 'reset',
|
571 |
'title' => esc_html__( 'Don\'t Use Default Taxonomies?', 'testimonials-widget' ),
|
@@ -618,6 +571,120 @@ class Testimonials_Widget_Settings {
|
|
618 |
'widget' => 0,
|
619 |
);
|
620 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
621 |
self::$settings['reset_expand_end'] = array(
|
622 |
'section' => 'reset',
|
623 |
'type' => 'expand_end',
|
@@ -679,13 +746,14 @@ class Testimonials_Widget_Settings {
|
|
679 |
return;
|
680 |
|
681 |
$field_args = array(
|
682 |
-
'type' => $type,
|
683 |
-
'id' => $id,
|
684 |
-
'desc' => $desc,
|
685 |
-
'std' => $std,
|
686 |
'choices' => $choices,
|
687 |
-
'label_for' => $id,
|
688 |
'class' => $class,
|
|
|
|
|
|
|
|
|
|
|
|
|
689 |
);
|
690 |
|
691 |
self::$defaults[$id] = $std;
|
@@ -804,6 +872,11 @@ class Testimonials_Widget_Settings {
|
|
804 |
}
|
805 |
|
806 |
|
|
|
|
|
|
|
|
|
|
|
807 |
public static function display_setting( $args = array(), $do_echo = true, $input = null ) {
|
808 |
$content = '';
|
809 |
|
@@ -914,7 +987,12 @@ class Testimonials_Widget_Settings {
|
|
914 |
break;
|
915 |
|
916 |
case 'text':
|
917 |
-
$
|
|
|
|
|
|
|
|
|
|
|
918 |
|
919 |
if ( ! empty( $desc ) )
|
920 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
@@ -979,10 +1057,7 @@ class Testimonials_Widget_Settings {
|
|
979 |
|
980 |
|
981 |
public function styles() {
|
982 |
-
|
983 |
-
wp_enqueue_style( 'jquery-style', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css' );
|
984 |
-
else
|
985 |
-
wp_enqueue_style( 'jquery-style', 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css' );
|
986 |
}
|
987 |
|
988 |
|
@@ -1211,7 +1286,10 @@ class Testimonials_Widget_Settings {
|
|
1211 |
|
1212 |
case 'term':
|
1213 |
$input[ $id ] = self::validate_term( $input[ $id ], $default );
|
1214 |
-
|
|
|
|
|
|
|
1215 |
break;
|
1216 |
|
1217 |
case 'url':
|
@@ -1269,6 +1347,14 @@ class Testimonials_Widget_Settings {
|
|
1269 |
}
|
1270 |
|
1271 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1272 |
public static function validate_url( $input, $default ) {
|
1273 |
if ( filter_var( $input, FILTER_VALIDATE_URL ) )
|
1274 |
return $input;
|
@@ -1365,6 +1451,44 @@ class Testimonials_Widget_Settings {
|
|
1365 |
}
|
1366 |
|
1367 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1368 |
}
|
1369 |
|
1370 |
|
38 |
'id' => 'default_field',
|
39 |
'section' => 'general',
|
40 |
'std' => '', // default key or value
|
41 |
+
'suggest' => false, // attempt for auto-suggest on inputs
|
42 |
'title' => '',
|
43 |
'type' => 'text', // textarea, checkbox, radio, select, hidden, heading, password, expand_begin, expand_end
|
44 |
'validate' => '', // required, term, slug, slugs, ids, order, single paramater PHP functions
|
45 |
'widget' => 1, // show in widget options, 0 off
|
46 |
);
|
47 |
|
48 |
+
public static $defaults = array();
|
49 |
+
public static $sections = array();
|
50 |
+
public static $settings = array();
|
51 |
+
public static $suggest_id = 0;
|
52 |
+
public static $version = null;
|
53 |
|
54 |
|
55 |
public function __construct() {
|
151 |
'validate' => 'absint',
|
152 |
);
|
153 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
self::$settings['refresh_interval'] = array(
|
155 |
'section' => 'widget',
|
156 |
'title' => esc_html__( 'Rotation Speed', 'testimonials-widget' ),
|
165 |
'type' => 'expand_begin',
|
166 |
);
|
167 |
|
168 |
+
self::$settings['transition_mode'] = array(
|
169 |
'section' => 'widget',
|
170 |
+
'title' => esc_html__( 'Transition Mode?', 'testimonials-widget' ),
|
171 |
+
'desc' => esc_html__( 'Type of transition between slides', 'testimonials-widget' ),
|
172 |
+
'type' => 'select',
|
173 |
+
'choices' => array(
|
174 |
+
'fade' => esc_html__( 'Fade', 'testimonials-widget' ),
|
175 |
+
'horizontal' => esc_html__( 'Horizontal', 'testimonials-widget' ),
|
176 |
+
'vertical' => esc_html__( 'Vertical', 'testimonials-widget' ),
|
177 |
+
),
|
178 |
+
'std' => 'fade',
|
179 |
);
|
180 |
|
181 |
+
self::$settings['show_start_stop'] = array(
|
182 |
'section' => 'widget',
|
183 |
+
'title' => esc_html__( 'Show Play/Pause?', 'testimonials-widget' ),
|
184 |
+
'desc' => esc_html__( 'Display start and stop buttons underneath the testimonial slider.', 'testimonials-widget' ),
|
185 |
'type' => 'checkbox',
|
186 |
'validate' => 'is_true',
|
187 |
'std' => 1,
|
188 |
);
|
189 |
|
190 |
+
self::$settings['enable_video'] = array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
'section' => 'widget',
|
192 |
+
'title' => esc_html__( 'Enable Video?', 'testimonials-widget' ),
|
193 |
+
'desc' => esc_html__( 'Only enable when displaying video content.', 'testimonials-widget' ),
|
194 |
+
'type' => 'checkbox',
|
195 |
+
'validate' => 'is_true',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
);
|
197 |
|
198 |
+
self::$settings['keep_whitespace'] = array(
|
199 |
'section' => 'widget',
|
200 |
+
'title' => esc_html__( 'Keep Whitespace?', 'testimonials-widget' ),
|
201 |
+
'desc' => esc_html__( 'Keeps testimonials looking as entered than sans auto-formatting', 'testimonials-widget' ),
|
202 |
+
'type' => 'checkbox',
|
203 |
+
'validate' => 'is_true',
|
204 |
);
|
205 |
|
206 |
self::$settings['bottom_text'] = array(
|
236 |
'title' => esc_html__( 'Reviewed Item?', 'testimonials-widget' ),
|
237 |
'desc' => esc_html__( 'Name of thing being referenced in testimonials', 'testimonials-widget' ),
|
238 |
'std' => get_option( 'blogname' ),
|
239 |
+
'widget' => 0,
|
240 |
);
|
241 |
|
242 |
self::$settings['item_reviewed_url'] = array(
|
244 |
'desc' => esc_html__( 'URL of thing being referenced in testimonials', 'testimonials-widget' ),
|
245 |
'std' => network_site_url(),
|
246 |
'validate' => 'url',
|
247 |
+
'widget' => 0,
|
248 |
);
|
249 |
|
250 |
self::$settings['disable_quotes'] = array(
|
365 |
self::$settings['category'] = array(
|
366 |
'section' => 'selection',
|
367 |
'title' => esc_html__( 'Category Filter', 'testimonials-widget' ),
|
368 |
+
'desc' => esc_html__( 'Comma separated category names. Ex: Category A, Another category', 'testimonials-widget' ),
|
369 |
+
'validate' => 'terms',
|
370 |
+
'suggest' => true,
|
371 |
);
|
372 |
|
373 |
self::$settings['tags'] = array(
|
374 |
'section' => 'selection',
|
375 |
'title' => esc_html__( 'Tags Filter', 'testimonials-widget' ),
|
376 |
+
'desc' => esc_html__( 'Comma separated tag names. Ex: Tag A, Another tag', 'testimonials-widget' ),
|
377 |
+
'validate' => 'terms',
|
378 |
+
'suggest' => true,
|
379 |
);
|
380 |
|
381 |
self::$settings['tags_all'] = array(
|
519 |
'type' => 'expand_begin',
|
520 |
);
|
521 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
522 |
self::$settings['use_cpt_taxonomy'] = array(
|
523 |
'section' => 'reset',
|
524 |
'title' => esc_html__( 'Don\'t Use Default Taxonomies?', 'testimonials-widget' ),
|
571 |
'widget' => 0,
|
572 |
);
|
573 |
|
574 |
+
self::$settings['version_options_heading'] = array(
|
575 |
+
'section' => 'reset',
|
576 |
+
'desc' => esc_html__( 'Version Based Options', 'testimonials-widget' ),
|
577 |
+
'type' => 'heading',
|
578 |
+
);
|
579 |
+
|
580 |
+
self::$settings['use_bxslider'] = array(
|
581 |
+
'section' => 'reset',
|
582 |
+
'title' => esc_html__( 'Use bxSlider?', 'testimonials-widget' ),
|
583 |
+
'desc' => esc_html__( 'Pre 2.15.0, Testimonials Widgets used custom JavaScript for transitions.', 'testimonials-widget' ),
|
584 |
+
'type' => 'checkbox',
|
585 |
+
'validate' => 'is_true',
|
586 |
+
'backwards' => array(
|
587 |
+
'version' => '2.15.0',
|
588 |
+
'std' => 0,
|
589 |
+
),
|
590 |
+
'std' => 1,
|
591 |
+
);
|
592 |
+
|
593 |
+
self::$settings['disable_animation'] = array(
|
594 |
+
'section' => 'reset',
|
595 |
+
'title' => esc_html__( 'Disable Animation?', 'testimonials-widget' ),
|
596 |
+
'desc' => esc_html__( 'Pre 2.15.0, Disable animation between testimonial transitions. Useful when stacking widgets.', 'testimonials-widget' ),
|
597 |
+
'type' => 'checkbox',
|
598 |
+
'validate' => 'is_true',
|
599 |
+
'std' => 1,
|
600 |
+
);
|
601 |
+
|
602 |
+
self::$settings['fade_out_speed'] = array(
|
603 |
+
'section' => 'reset',
|
604 |
+
'title' => esc_html__( 'Fade Out Speed', 'testimonials-widget' ),
|
605 |
+
'desc' => esc_html__( 'Pre 2.15.0, Transition duration in milliseconds; higher values indicate slower animations, not faster ones.', 'testimonials-widget' ),
|
606 |
+
'std' => 1250,
|
607 |
+
'validate' => 'absint',
|
608 |
+
);
|
609 |
+
|
610 |
+
self::$settings['fade_in_speed'] = array(
|
611 |
+
'section' => 'reset',
|
612 |
+
'title' => esc_html__( 'Fade In Speed', 'testimonials-widget' ),
|
613 |
+
'desc' => esc_html__( 'Pre 2.15.0, Transition duration in milliseconds; higher values indicate slower animations, not faster ones.', 'testimonials-widget' ),
|
614 |
+
'std' => 500,
|
615 |
+
'validate' => 'absint',
|
616 |
+
);
|
617 |
+
|
618 |
+
self::$settings['height'] = array(
|
619 |
+
'section' => 'reset',
|
620 |
+
'title' => esc_html__( 'Height', 'testimonials-widget' ),
|
621 |
+
'desc' => esc_html__( 'Pre 2.15.0, Testimonials height, in pixels. Overrides minimum and maximum height', 'testimonials-widget' ),
|
622 |
+
'validate' => 'min1',
|
623 |
+
);
|
624 |
+
|
625 |
+
self::$settings['min_height'] = array(
|
626 |
+
'section' => 'reset',
|
627 |
+
'title' => esc_html__( 'Minimum Height', 'testimonials-widget' ),
|
628 |
+
'desc' => esc_html__( 'Pre 2.15.0, Set for minimum display height, in pixels', 'testimonials-widget' ),
|
629 |
+
'validate' => 'min1',
|
630 |
+
);
|
631 |
+
|
632 |
+
self::$settings['max_height'] = array(
|
633 |
+
'section' => 'reset',
|
634 |
+
'title' => esc_html__( 'Maximum Height', 'testimonials-widget' ),
|
635 |
+
'desc' => esc_html__( 'Pre 2.15.0, Set for maximum display height, in pixels', 'testimonials-widget' ),
|
636 |
+
'validate' => 'min1',
|
637 |
+
);
|
638 |
+
|
639 |
+
self::$settings['force_css_loading'] = array(
|
640 |
+
'section' => 'reset',
|
641 |
+
'title' => esc_html__( 'Always Load CSS?', 'testimonials-widget' ),
|
642 |
+
'desc' => esc_html__( 'Pre 2.14.0, Testimonials Widgets CSS was always loaded, whether needed or not', 'testimonials-widget' ),
|
643 |
+
'type' => 'checkbox',
|
644 |
+
'validate' => 'is_true',
|
645 |
+
'backwards' => array(
|
646 |
+
'version' => '2.14.0',
|
647 |
+
'std' => 1,
|
648 |
+
),
|
649 |
+
);
|
650 |
+
|
651 |
+
self::$settings['include_ie7_css'] = array(
|
652 |
+
'section' => 'reset',
|
653 |
+
'title' => esc_html__( 'Include IE7 CSS?', 'testimonials-widget' ),
|
654 |
+
'desc' => esc_html__( 'IE7 specific CSS moved to separate CSS file in version 2.13.6.', 'testimonials-widget' ),
|
655 |
+
'type' => 'checkbox',
|
656 |
+
'validate' => 'is_true',
|
657 |
+
'backwards' => array(
|
658 |
+
'version' => '2.13.6',
|
659 |
+
'std' => 1,
|
660 |
+
),
|
661 |
+
'widget' => 1,
|
662 |
+
);
|
663 |
+
|
664 |
+
self::$settings['use_quote_tag'] = array(
|
665 |
+
'section' => 'reset',
|
666 |
+
'title' => esc_html__( 'Use `<q>` tag?', 'testimonials-widget' ),
|
667 |
+
'desc' => esc_html__( 'Pre 2.11.0, not HTML5 compliant', 'testimonials-widget' ),
|
668 |
+
'type' => 'checkbox',
|
669 |
+
'validate' => 'is_true',
|
670 |
+
'backwards' => array(
|
671 |
+
'version' => '2.11.0',
|
672 |
+
'std' => 1,
|
673 |
+
),
|
674 |
+
);
|
675 |
+
|
676 |
+
self::$settings['remove_hentry'] = array(
|
677 |
+
'section' => 'reset',
|
678 |
+
'title' => esc_html__( 'Remove `.hentry` CSS?', 'testimonials-widget' ),
|
679 |
+
'desc' => esc_html__( 'Pre 2.6.4, some themes use class `.hentry` in a manner that breaks Testimonials Widgets CSS', 'testimonials-widget' ),
|
680 |
+
'type' => 'checkbox',
|
681 |
+
'validate' => 'is_true',
|
682 |
+
'backwards' => array(
|
683 |
+
'version' => '2.6.4',
|
684 |
+
'std' => 1,
|
685 |
+
),
|
686 |
+
);
|
687 |
+
|
688 |
self::$settings['reset_expand_end'] = array(
|
689 |
'section' => 'reset',
|
690 |
'type' => 'expand_end',
|
746 |
return;
|
747 |
|
748 |
$field_args = array(
|
|
|
|
|
|
|
|
|
749 |
'choices' => $choices,
|
|
|
750 |
'class' => $class,
|
751 |
+
'desc' => $desc,
|
752 |
+
'id' => $id,
|
753 |
+
'label_for' => $id,
|
754 |
+
'std' => $std,
|
755 |
+
'suggest' => $suggest,
|
756 |
+
'type' => $type,
|
757 |
);
|
758 |
|
759 |
self::$defaults[$id] = $std;
|
872 |
}
|
873 |
|
874 |
|
875 |
+
/**
|
876 |
+
*
|
877 |
+
*
|
878 |
+
* @SuppressWarnings(PHPMD.UnusedLocalVariable)
|
879 |
+
*/
|
880 |
public static function display_setting( $args = array(), $do_echo = true, $input = null ) {
|
881 |
$content = '';
|
882 |
|
987 |
break;
|
988 |
|
989 |
case 'text':
|
990 |
+
$suggest_id = 'suggest_' . self::$suggest_id++;
|
991 |
+
|
992 |
+
$content .= '<input class="regular-text' . $field_class . ' ' . $suggest_id . '" type="text" id="' . $id . '" name="' . self::ID . '[' . $id . ']" placeholder="' . $std . '" value="' . $options[$id] . '" />';
|
993 |
+
|
994 |
+
if ( $suggest )
|
995 |
+
$content .= self::get_suggest( $id, $suggest_id );
|
996 |
|
997 |
if ( ! empty( $desc ) )
|
998 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
1057 |
|
1058 |
|
1059 |
public function styles() {
|
1060 |
+
wp_enqueue_style( 'jquery-style', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css' );
|
|
|
|
|
|
|
1061 |
}
|
1062 |
|
1063 |
|
1286 |
|
1287 |
case 'term':
|
1288 |
$input[ $id ] = self::validate_term( $input[ $id ], $default );
|
1289 |
+
break;
|
1290 |
+
|
1291 |
+
case 'terms':
|
1292 |
+
$input[ $id ] = self::validate_terms( $input[ $id ], $default );
|
1293 |
break;
|
1294 |
|
1295 |
case 'url':
|
1347 |
}
|
1348 |
|
1349 |
|
1350 |
+
public static function validate_terms( $input, $default ) {
|
1351 |
+
if ( preg_match( '#^(([\w- ]+)(,\s?)?)+$#', $input ) )
|
1352 |
+
return preg_replace( '#,\s*$#', '', $input );
|
1353 |
+
|
1354 |
+
return $default;
|
1355 |
+
}
|
1356 |
+
|
1357 |
+
|
1358 |
public static function validate_url( $input, $default ) {
|
1359 |
if ( filter_var( $input, FILTER_VALIDATE_URL ) )
|
1360 |
return $input;
|
1451 |
}
|
1452 |
|
1453 |
|
1454 |
+
public static function get_suggest( $id, $suggest_id ) {
|
1455 |
+
wp_enqueue_script( 'suggest' );
|
1456 |
+
|
1457 |
+
$use_cpt_taxonomy = tw_get_option( 'use_cpt_taxonomy', false );
|
1458 |
+
|
1459 |
+
switch ( $id ) {
|
1460 |
+
case 'category':
|
1461 |
+
if ( ! $use_cpt_taxonomy )
|
1462 |
+
$taxonomy = 'category';
|
1463 |
+
else
|
1464 |
+
$taxonomy = self::$cpt_category;
|
1465 |
+
|
1466 |
+
break;
|
1467 |
+
|
1468 |
+
case 'tags':
|
1469 |
+
if ( ! $use_cpt_taxonomy )
|
1470 |
+
$taxonomy = 'post_tag';
|
1471 |
+
else
|
1472 |
+
$taxonomy = self::$cpt_tags;
|
1473 |
+
|
1474 |
+
break;
|
1475 |
+
}
|
1476 |
+
|
1477 |
+
$ajax_url = site_url() . '/wp-admin/admin-ajax.php';
|
1478 |
+
$suggest_js = "suggest( '{$ajax_url}?action=ajax-tag-search&tax={$taxonomy}', { delay: 500, minchars: 2, multiple: true, multipleSep: ', ' } )";
|
1479 |
+
|
1480 |
+
$scripts = <<<EOD
|
1481 |
+
<script type="text/javascript">
|
1482 |
+
jQuery(document).ready( function() {
|
1483 |
+
jQuery( '.{$suggest_id}' ).{$suggest_js};
|
1484 |
+
});
|
1485 |
+
</script>
|
1486 |
+
EOD;
|
1487 |
+
|
1488 |
+
return $scripts;
|
1489 |
+
}
|
1490 |
+
|
1491 |
+
|
1492 |
}
|
1493 |
|
1494 |
|
lib/class-testimonials-widget-widget.php
CHANGED
@@ -188,6 +188,11 @@ class Testimonials_Widget_Widget extends WP_Widget {
|
|
188 |
}
|
189 |
|
190 |
|
|
|
|
|
|
|
|
|
|
|
191 |
public function display_setting( $args = array(), $options ) {
|
192 |
extract( $args );
|
193 |
|
@@ -286,7 +291,11 @@ class Testimonials_Widget_Widget extends WP_Widget {
|
|
286 |
case 'text':
|
287 |
echo '<label for="' . $this->get_field_id( $id ) . '">' . $title . '</label>';
|
288 |
|
289 |
-
|
|
|
|
|
|
|
|
|
290 |
break;
|
291 |
|
292 |
default:
|
188 |
}
|
189 |
|
190 |
|
191 |
+
/**
|
192 |
+
*
|
193 |
+
*
|
194 |
+
* @SuppressWarnings(PHPMD.UnusedLocalVariable)
|
195 |
+
*/
|
196 |
public function display_setting( $args = array(), $options ) {
|
197 |
extract( $args );
|
198 |
|
291 |
case 'text':
|
292 |
echo '<label for="' . $this->get_field_id( $id ) . '">' . $title . '</label>';
|
293 |
|
294 |
+
$suggest_id = 'suggest_' . Testimonials_Widget_Settings::$suggest_id++;
|
295 |
+
echo '<input class="widefat' . $field_class . ' ' . $suggest_id . '" type="text" id="' . $this->get_field_id( $id ) . '" name="' . $this->get_field_name( $id ) . '" placeholder="' . $std . '" value="' . esc_attr( $options[$id] ) . '" />';
|
296 |
+
|
297 |
+
if ( $suggest )
|
298 |
+
echo Testimonials_Widget_Settings::get_suggest( $id, $suggest_id );
|
299 |
break;
|
300 |
|
301 |
default:
|
readme.txt
CHANGED
@@ -3,9 +3,9 @@
|
|
3 |
Contributors: comprock
|
4 |
Donate link: http://aihr.us/about-aihrus/donate/
|
5 |
Tags: client, customer, portfolio, quotations, quote, quotes, random, recommendation, reference, review, reviews, testimonial, testimonials, testimony, wpml
|
6 |
-
Requires at least: 3.
|
7 |
-
Tested up to: 3.
|
8 |
-
Stable tag: 2.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -21,6 +21,19 @@ Testimonials Widget plugin allows you to display random or selected portfolio, q
|
|
21 |
|
22 |
**View a [Live Testimonials Widget Demo](http://aihr.us/good-work-deserves-good-words-testimonials-widget-examples/)**
|
23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
More than one Testimonials Widget instance can be displayed at a time pulls from the `testimonials-widget` custom post type. Additionally, with shortcodes and theme functions, you can display a short or long list or rotation of testimonials. Each Testimonial Widget has its own CSS identifier for custom styling.
|
25 |
|
26 |
Widgets display content sans `wpautop` formatting. This means no forced paragraph breaks unless the content specifically contains them. You can enable `wpautop` via the "Keep whitespace?" option.
|
@@ -43,57 +56,25 @@ The single testimonial view supports image, source, title, location, email, comp
|
|
43 |
* Single testimonial view includes image, source, title, location, email, company and URL details
|
44 |
* Testimonials archive view
|
45 |
* Use custom taxonomy or WordPress's own for categories and tags
|
|
|
|
|
|
|
46 |
|
47 |
-
|
48 |
|
49 |
-
|
50 |
|
51 |
-
*
|
52 |
-
* Admin mode only anti-spam debug help text
|
53 |
-
* Akismet anti-spam checking
|
54 |
* Alternate destinations for "Read more" links
|
55 |
-
*
|
56 |
-
* Automatically change to the next testimonial, per the sort order, whenever a user navigates to another page.
|
57 |
-
* Built-in update notification
|
58 |
* CSS or HTML table based testimonials submissions form layout
|
59 |
-
* Cache per page when you use custom testimonials instance per page
|
60 |
* Caching of testimonials queries and content to decrease server load time improve page loading speed by 1/10 to 1/2 a second
|
61 |
-
*
|
62 |
-
* Deactivates self if no active or incorrect version of Testimonials Widget plugin
|
63 |
-
* Default post author, category, and status options for user testimonial submissions
|
64 |
-
* Deletes old and related testimonial cache entries automatically
|
65 |
-
* Disable caching for widget, shortcode or theme functions
|
66 |
-
* Disable donate and purchase related text and links
|
67 |
* Displays ratings to grant testimonials more power!
|
68 |
-
* Email notification for user submitted testimonials
|
69 |
* Excerpts for widget view, with read more link to complete testimonial
|
70 |
-
* Fields for rating, item reviewed, and item URL per testimonial
|
71 |
-
* Filters for caching and more link control, text replacement, and more
|
72 |
-
* Form "Testimonial" header text is customizable to "Specials" or other terms
|
73 |
* Front-end entry form for user supplied testimonials. **[Live form demo](http://aihr.us/about-aihrus/testimonials/add-testimonial/)**
|
74 |
-
* Math-based CAPTCHA
|
75 |
-
* Multiple anti-spam traps
|
76 |
-
* Multiple user-entry forms on same page are allowed
|
77 |
-
* Override Review schema author name
|
78 |
-
* Plugin version tracking to ensure compatibility
|
79 |
-
* Premium tab on settings screen for site-wide option defaults
|
80 |
-
* Prevent duplicate testimonials when using multiple testimonial instances
|
81 |
-
* Read more links for testimonials exceeding the character limit
|
82 |
-
* Require minimumal testimonial rating for display
|
83 |
-
* Review microdata format per schema.org
|
84 |
-
* Right Now Dashboard widget displays "Pending Testimonials" counts
|
85 |
* Select only testimonials with excerpts, images or of arbitrary maximum and minimum length
|
86 |
-
*
|
87 |
-
* Settings and URL based cache clearing
|
88 |
-
* Shortcodes and theme functions for testimonials count and testimonial link list
|
89 |
-
* Shortcodes, theme functions, and widget user testimonial submission form
|
90 |
-
* Show excerpts with list and single views
|
91 |
-
* Show unique testimonials on page with multiple testimonial instances
|
92 |
-
* Simple, single rating per testimonials (more capabilities to come in future releases)
|
93 |
-
* Testimonial links listing with image, source, title, location, company, and URL fields
|
94 |
-
* Upload images by browsing or URL
|
95 |
-
* WP Admin > Testmonials > Clear Cache menu link
|
96 |
-
* WPML compatible
|
97 |
|
98 |
= Premium Shortcodes =
|
99 |
|
@@ -103,11 +84,12 @@ Testimonials Widget Premium adds onto the best WordPress testimonials plugin the
|
|
103 |
|
104 |
[Buy Testimonials Widget Premium](http://aihr.us/downloads/testimonials-widget-premium-wordpress-plugin/) plugin for WordPress.
|
105 |
|
106 |
-
= Additional
|
107 |
|
108 |
* Adjustable animation speed
|
109 |
* Archive Page URL and Testimonial Page URL are prevented from being the same or matching existing pages.
|
110 |
* Auto-migration from pre-2.0.0 custom table to new Testimonials Widget custom post type
|
|
|
111 |
* Automatic linking of email and URL fields via source or company fields
|
112 |
* Clickable widget titles
|
113 |
* Commenting on testimonial single-view pages
|
@@ -203,9 +185,9 @@ Further, global settings are the baseline for shortcodes. If you want to alter t
|
|
203 |
|
204 |
**Selection**
|
205 |
|
206 |
-
* Category Filter - Comma separated category
|
207 |
* `category` - default none; category=product or category="category-a, another-category"
|
208 |
-
* Tags Filter - Comma separated tag
|
209 |
* `tags` - default none; tags=fire or tags="tag-a, another-tag"
|
210 |
* Require All Tags - Select only testimonials with all of the given tags
|
211 |
* `tags_all` - default OR; tags_all=true
|
@@ -237,23 +219,17 @@ Further, global settings are the baseline for shortcodes. If you want to alter t
|
|
237 |
* Character Limit - Number of characters to limit testimonial views to
|
238 |
* `char_limit` - default none; char_limit=200
|
239 |
* Widget - default 500
|
240 |
-
* Height - Testimonials height, in pixels. Overrides minimum and maximum height
|
241 |
-
* `height` - default none; height=300
|
242 |
* Rotation speed - Seconds between testimonial rotations or 0 for no rotation at all
|
243 |
* `refresh_interval` - default 5; refresh_interval=0
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
* Keep Whitespace? - Keeps testimonials looking as entered than sans auto-formatting
|
245 |
* `keep_whitespace` - default none; keep_whitespace=true
|
246 |
* The citation has no whitespace adaptations. It's straight text, except for email or URL links. The presentation is handled strictly by CSS.
|
247 |
-
* Disable Animation? - Disable animation between testimonial transitions. Useful when stacking.
|
248 |
-
* `disable_animation` - default false; disable_animation=true
|
249 |
-
* Fade Out Speed - Transition duration in milliseconds; higher values indicate slower animations, not faster ones.
|
250 |
-
* `fade_out_speed` - default 1250; fade_out_speed=400
|
251 |
-
* Fade In Speed - Transition duration in milliseconds; higher values indicate slower animations, not faster ones.
|
252 |
-
* `fade_in_speed` - default 500; fade_in_speed=800
|
253 |
-
* Minimum Height - Set for minimum display height, in pixels
|
254 |
-
* `min_height` - default none; min_height=100
|
255 |
-
* Maximum Height - Set for maximum display height, in pixels
|
256 |
-
* `max_height` - default none; max_height=250
|
257 |
* Testimonial Bottom Text - Custom text or HTML for bottom of testimonials
|
258 |
* `bottom_text` - default none; bottom_text="`<h3><a href="http://example.com">All testimonials</a></h3>`"
|
259 |
|
@@ -267,17 +243,34 @@ Further, global settings are the baseline for shortcodes. If you want to alter t
|
|
267 |
|
268 |
**Compatibility & Reset**
|
269 |
|
270 |
-
* Include IE7 CSS? - IE7 specific CSS moved to separate CSS file in version 2.13.6.
|
271 |
-
* Remove `.hentry` CSS? – Some themes use class `.hentry` in a manner that breaks Testimonials Widgets CSS
|
272 |
-
* `remove_hentry` - default none; remove_hentry=true
|
273 |
-
* Use `<q>` tag? – Pre 2.11.0. Not HTML5 compliant
|
274 |
-
* `use_quote_tag` - default none; use_quote_tag=true
|
275 |
* Don't Use Default Taxonomies? – If checked, use Testimonials Widget's own category and tag taxonomies instead
|
276 |
* Export Settings – These are your current settings in a serialized format. Copy the contents to make a backup of your settings.
|
277 |
* Import Settings – Paste new serialized settings here to overwrite your current configuration.
|
278 |
* Remove Plugin Data on Deletion? - Delete all Testimonials Widget data and options from database on plugin deletion
|
279 |
* Reset to Defaults? – Check this box to reset options to their defaults
|
280 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
281 |
= Shortcode Examples =
|
282 |
|
283 |
**[testimonialswidget_list]**
|
@@ -380,9 +373,12 @@ If you want to contribute and I hope you do, visit the [Testimonials Widget Gith
|
|
380 |
|
381 |
1. [How do I change my widget's rotation speed or other options?](https://aihrus.zendesk.com/entries/27714083-How-do-I-change-my-widget-s-rotation-speed-or-other-options-)
|
382 |
1. [Debug common theme and plugin conflicts](https://aihrus.zendesk.com/entries/25119302-How-do-you-debug-common-issues-)
|
383 |
-
1. [Change or debug CSS](https://aihrus.zendesk.com/entries/24910733-How-to-Correct-Testimonials-Widget-CSS-Issues)
|
384 |
1. [Pagination is broken](https://aihrus.zendesk.com/entries/23693513-My-testimonials-list-paging-doesn-t-work)
|
385 |
1. [Test Review schema output](http://www.google.com/webmasters/tools/richsnippets)
|
|
|
|
|
|
|
386 |
|
387 |
= Still Stuck? =
|
388 |
|
@@ -419,6 +415,10 @@ See [Changelog](https://github.com/michael-cannon/testimonials-widget/blob/maste
|
|
419 |
|
420 |
== Upgrade Notice ==
|
421 |
|
|
|
|
|
|
|
|
|
422 |
= 2.14.0 =
|
423 |
|
424 |
* **60 modifications** See [Changelog](https://github.com/michael-cannon/testimonials-widget/blob/master/CHANGELOG.md)
|
3 |
Contributors: comprock
|
4 |
Donate link: http://aihr.us/about-aihrus/donate/
|
5 |
Tags: client, customer, portfolio, quotations, quote, quotes, random, recommendation, reference, review, reviews, testimonial, testimonials, testimony, wpml
|
6 |
+
Requires at least: 3.6
|
7 |
+
Tested up to: 3.8.0
|
8 |
+
Stable tag: 2.15.0
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
21 |
|
22 |
**View a [Live Testimonials Widget Demo](http://aihr.us/good-work-deserves-good-words-testimonials-widget-examples/)**
|
23 |
|
24 |
+
= Awesome Content Slider Capabilities! =
|
25 |
+
|
26 |
+
* Slide Images - responsive image slideshow
|
27 |
+
* Slide Videos - video slideshow
|
28 |
+
* Slide Text - useful for rotating testimonials
|
29 |
+
* Slide Mixed Content: slideshow having video slides, images slides, and text slides. Each individual slide can also have mixed content.
|
30 |
+
* Shortcode compatible - slide content that is rendered using shortcodes. i.e. stock Worpdress Galleries and Gravity Forms
|
31 |
+
* Widget ready
|
32 |
+
* Shortcode ready
|
33 |
+
* Random display
|
34 |
+
* Fade and slide transitions
|
35 |
+
* Filter slideshow content by WordPress' built in categories, tags, or post-ID
|
36 |
+
|
37 |
More than one Testimonials Widget instance can be displayed at a time pulls from the `testimonials-widget` custom post type. Additionally, with shortcodes and theme functions, you can display a short or long list or rotation of testimonials. Each Testimonial Widget has its own CSS identifier for custom styling.
|
38 |
|
39 |
Widgets display content sans `wpautop` formatting. This means no forced paragraph breaks unless the content specifically contains them. You can enable `wpautop` via the "Keep whitespace?" option.
|
56 |
* Single testimonial view includes image, source, title, location, email, company and URL details
|
57 |
* Testimonials archive view
|
58 |
* Use custom taxonomy or WordPress's own for categories and tags
|
59 |
+
* Use's [bxSlider](http://bxslider.com) for transitions
|
60 |
+
|
61 |
+
= Testimonials Widget Premium =
|
62 |
|
63 |
+
Testimonials Widget Premium adds onto the best WordPress testimonials plugin there is, [Testimonials Widget](http://wordpress.org/extend/plugins/testimonials-widget/). Testimonials Widget Premium offers [caching, excerpts, filters, read more links](http://aihr.us/downloads/testimonials-widget-premium-wordpress-plugin/), more selection options, and advanced capabilities like using custom post types as testimonials. Additionally, testimonials support ratings and users can submit their own testimonials via a front-end form shortcode or widget.
|
64 |
|
65 |
+
= Primary Premium Features =
|
66 |
|
67 |
+
* Akismet, math-based CAPTCHA, and more anti-spam traps
|
|
|
|
|
68 |
* Alternate destinations for "Read more" links
|
69 |
+
* Auto rotate testimonials by page
|
|
|
|
|
70 |
* CSS or HTML table based testimonials submissions form layout
|
|
|
71 |
* Caching of testimonials queries and content to decrease server load time improve page loading speed by 1/10 to 1/2 a second
|
72 |
+
* Carousel mode for rotating multiple testimonials at the same time
|
|
|
|
|
|
|
|
|
|
|
73 |
* Displays ratings to grant testimonials more power!
|
|
|
74 |
* Excerpts for widget view, with read more link to complete testimonial
|
|
|
|
|
|
|
75 |
* Front-end entry form for user supplied testimonials. **[Live form demo](http://aihr.us/about-aihrus/testimonials/add-testimonial/)**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
* Select only testimonials with excerpts, images or of arbitrary maximum and minimum length
|
77 |
+
* Show unique testimonials when displaying multiple testimonial instances
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
|
79 |
= Premium Shortcodes =
|
80 |
|
84 |
|
85 |
[Buy Testimonials Widget Premium](http://aihr.us/downloads/testimonials-widget-premium-wordpress-plugin/) plugin for WordPress.
|
86 |
|
87 |
+
= Additional Features =
|
88 |
|
89 |
* Adjustable animation speed
|
90 |
* Archive Page URL and Testimonial Page URL are prevented from being the same or matching existing pages.
|
91 |
* Auto-migration from pre-2.0.0 custom table to new Testimonials Widget custom post type
|
92 |
+
* Auto-suggest for category and tag options
|
93 |
* Automatic linking of email and URL fields via source or company fields
|
94 |
* Clickable widget titles
|
95 |
* Commenting on testimonial single-view pages
|
185 |
|
186 |
**Selection**
|
187 |
|
188 |
+
* Category Filter - Comma separated category names
|
189 |
* `category` - default none; category=product or category="category-a, another-category"
|
190 |
+
* Tags Filter - Comma separated tag names
|
191 |
* `tags` - default none; tags=fire or tags="tag-a, another-tag"
|
192 |
* Require All Tags - Select only testimonials with all of the given tags
|
193 |
* `tags_all` - default OR; tags_all=true
|
219 |
* Character Limit - Number of characters to limit testimonial views to
|
220 |
* `char_limit` - default none; char_limit=200
|
221 |
* Widget - default 500
|
|
|
|
|
222 |
* Rotation speed - Seconds between testimonial rotations or 0 for no rotation at all
|
223 |
* `refresh_interval` - default 5; refresh_interval=0
|
224 |
+
* Transition Mode? - Type of transition between slides
|
225 |
+
* `transition_mode` - default fade; transition_mode=horizontal|vertical|fade
|
226 |
+
* Show Play/Pause? - Display start and stop buttons underneath the testimonial slider.
|
227 |
+
* `show_start_stop` - default true; show_start_stop=false
|
228 |
+
* Enable Video? - Only enable when displaying video content.
|
229 |
+
* `enable_video` - default false; enable_video=true
|
230 |
* Keep Whitespace? - Keeps testimonials looking as entered than sans auto-formatting
|
231 |
* `keep_whitespace` - default none; keep_whitespace=true
|
232 |
* The citation has no whitespace adaptations. It's straight text, except for email or URL links. The presentation is handled strictly by CSS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
233 |
* Testimonial Bottom Text - Custom text or HTML for bottom of testimonials
|
234 |
* `bottom_text` - default none; bottom_text="`<h3><a href="http://example.com">All testimonials</a></h3>`"
|
235 |
|
243 |
|
244 |
**Compatibility & Reset**
|
245 |
|
|
|
|
|
|
|
|
|
|
|
246 |
* Don't Use Default Taxonomies? – If checked, use Testimonials Widget's own category and tag taxonomies instead
|
247 |
* Export Settings – These are your current settings in a serialized format. Copy the contents to make a backup of your settings.
|
248 |
* Import Settings – Paste new serialized settings here to overwrite your current configuration.
|
249 |
* Remove Plugin Data on Deletion? - Delete all Testimonials Widget data and options from database on plugin deletion
|
250 |
* Reset to Defaults? – Check this box to reset options to their defaults
|
251 |
|
252 |
+
**Version Based Options**
|
253 |
+
|
254 |
+
* Use bxSlider? - Pre 2.15.0, Testimonials Widgets used custom JavaScript for transitions.
|
255 |
+
* Disable Animation? - Disable animation between testimonial transitions. Useful when stacking.
|
256 |
+
* `disable_animation` - default false; disable_animation=true
|
257 |
+
* Fade Out Speed - Transition duration in milliseconds; higher values indicate slower animations, not faster ones.
|
258 |
+
* `fade_out_speed` - default 1250; fade_out_speed=400
|
259 |
+
* Fade In Speed - Transition duration in milliseconds; higher values indicate slower animations, not faster ones.
|
260 |
+
* `fade_in_speed` - default 500; fade_in_speed=800
|
261 |
+
* Height - Testimonials height, in pixels. Overrides minimum and maximum height
|
262 |
+
* `height` - default none; height=300
|
263 |
+
* Minimum Height - Set for minimum display height, in pixels
|
264 |
+
* `min_height` - default none; min_height=100
|
265 |
+
* Maximum Height - Set for maximum display height, in pixels
|
266 |
+
* `max_height` - default none; max_height=250
|
267 |
+
* Always Load CSS? - Pre 2.14.0. Testimonials Widgets CSS was always loaded, whether needed or not
|
268 |
+
* Include IE7 CSS? - IE7 specific CSS moved to separate CSS file in version 2.13.6.
|
269 |
+
* Use `<q>` tag? – Pre 2.11.0. Not HTML5 compliant
|
270 |
+
* `use_quote_tag` - default none; use_quote_tag=true
|
271 |
+
* Remove `.hentry` CSS? – Some themes use class `.hentry` in a manner that breaks Testimonials Widgets CSS
|
272 |
+
* `remove_hentry` - default none; remove_hentry=true
|
273 |
+
|
274 |
= Shortcode Examples =
|
275 |
|
276 |
**[testimonialswidget_list]**
|
373 |
|
374 |
1. [How do I change my widget's rotation speed or other options?](https://aihrus.zendesk.com/entries/27714083-How-do-I-change-my-widget-s-rotation-speed-or-other-options-)
|
375 |
1. [Debug common theme and plugin conflicts](https://aihrus.zendesk.com/entries/25119302-How-do-you-debug-common-issues-)
|
376 |
+
1. [Change or debug CSS](https://aihrus.zendesk.com/entries/24910733-How-to-Correct-Testimonials-Widget-CSS-Issues) AKA "What's up with these quotes?"
|
377 |
1. [Pagination is broken](https://aihrus.zendesk.com/entries/23693513-My-testimonials-list-paging-doesn-t-work)
|
378 |
1. [Test Review schema output](http://www.google.com/webmasters/tools/richsnippets)
|
379 |
+
1. [Customize bxSlider](http://bxslider.com/examples)
|
380 |
+
|
381 |
+
* [Major Change for 2.15.0](https://aihrus.zendesk.com/entries/28402246-Major-Change-for-2-15-0)
|
382 |
|
383 |
= Still Stuck? =
|
384 |
|
415 |
|
416 |
== Upgrade Notice ==
|
417 |
|
418 |
+
= 2.15.0 =
|
419 |
+
|
420 |
+
* If upgrading, bxSlider will not be enabled by default. You must enable it in your widget and global settings. CSS customizations must be reviewed to have the `.active` and `.display-none` classes removed. The main `.testimonials-widget-testimonial` class also need the `display: none;` and `clear: left;` removed.
|
421 |
+
|
422 |
= 2.14.0 =
|
423 |
|
424 |
* **60 modifications** See [Changelog](https://github.com/michael-cannon/testimonials-widget/blob/master/CHANGELOG.md)
|
testimonials-widget.css
CHANGED
@@ -1,21 +1,7 @@
|
|
1 |
.testimonials-widget-testimonials {
|
2 |
-
/* testimonials wrapper */
|
3 |
}
|
4 |
|
5 |
.testimonials-widget-testimonial {
|
6 |
-
clear: left;
|
7 |
-
display: none;
|
8 |
-
margin: 0 0 1.4em;
|
9 |
-
}
|
10 |
-
|
11 |
-
.testimonials-widget-testimonials .active {
|
12 |
-
/* active testimonials */
|
13 |
-
display: block;
|
14 |
-
}
|
15 |
-
|
16 |
-
.testimonials-widget-testimonials .display-none {
|
17 |
-
/* staged testimonials */
|
18 |
-
display: none;
|
19 |
}
|
20 |
|
21 |
.testimonials-widget-testimonials .paging {
|
@@ -42,7 +28,7 @@
|
|
42 |
|
43 |
.testimonials-widget-testimonial.list,
|
44 |
.testimonials-widget-testimonial.single {
|
45 |
-
|
46 |
}
|
47 |
|
48 |
.testimonials-widget-testimonial .image {
|
@@ -118,3 +104,11 @@
|
|
118 |
.testimonials-widget-testimonial .bottom_text {
|
119 |
margin-top: 1.4em;
|
120 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
.testimonials-widget-testimonials {
|
|
|
2 |
}
|
3 |
|
4 |
.testimonials-widget-testimonial {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
}
|
6 |
|
7 |
.testimonials-widget-testimonials .paging {
|
28 |
|
29 |
.testimonials-widget-testimonial.list,
|
30 |
.testimonials-widget-testimonial.single {
|
31 |
+
clear: left;
|
32 |
}
|
33 |
|
34 |
.testimonials-widget-testimonial .image {
|
104 |
.testimonials-widget-testimonial .bottom_text {
|
105 |
margin-top: 1.4em;
|
106 |
}
|
107 |
+
|
108 |
+
.bx-wrapper .bx-viewport {
|
109 |
+
-moz-box-shadow: none;
|
110 |
+
-webkit-box-shadow: none;
|
111 |
+
box-shadow: none;
|
112 |
+
border: none;
|
113 |
+
background: initial;
|
114 |
+
}
|
testimonials-widget.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Testimonials Widget
|
4 |
* Plugin URI: http://wordpress.org/extend/plugins/testimonials-widget/
|
5 |
* Description: Testimonials Widget plugin allows you to display random or selected portfolio, quotes, reviews, showcases, or text with images on your WordPress blog.
|
6 |
-
* Version: 2.
|
7 |
* Author: Michael Cannon
|
8 |
* Author URI: http://aihr.us/about-aihrus/michael-cannon-resume/
|
9 |
* License: GPLv2 or later
|
@@ -25,10 +25,11 @@
|
|
25 |
*/
|
26 |
class Testimonials_Widget {
|
27 |
const ID = 'testimonials-widget-testimonials';
|
|
|
28 |
const OLD_NAME = 'testimonialswidget';
|
29 |
const PLUGIN_FILE = 'testimonials-widget/testimonials-widget.php';
|
30 |
const PT = 'testimonials-widget';
|
31 |
-
const VERSION = '2.
|
32 |
|
33 |
private static $base = null;
|
34 |
private static $found_posts = 0;
|
@@ -130,6 +131,10 @@ EOD;
|
|
130 |
self::$cpt_category = self::PT . '-category';
|
131 |
self::$cpt_tags = self::PT . '-post_tag';
|
132 |
self::init_post_type();
|
|
|
|
|
|
|
|
|
133 |
}
|
134 |
|
135 |
|
@@ -321,7 +326,7 @@ EOD;
|
|
321 |
|
322 |
public function admin_notices_donate() {
|
323 |
$content = '<div class="updated fade"><p>';
|
324 |
-
$content .= sprintf( esc_html__( 'Please donate $
|
325 |
$content .= '</p></div>';
|
326 |
|
327 |
echo $content;
|
@@ -334,6 +339,9 @@ EOD;
|
|
334 |
if ( $prior_version < '2.12.0' )
|
335 |
add_action( 'admin_notices', array( $this, 'admin_notices_2_12_0' ) );
|
336 |
|
|
|
|
|
|
|
337 |
if ( $prior_version < self::VERSION )
|
338 |
do_action( 'testimonials_widget_update' );
|
339 |
|
@@ -720,6 +728,18 @@ EOD;
|
|
720 |
|
721 |
wp_enqueue_script( 'jquery' );
|
722 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
723 |
do_action( 'testimonials_widget_scripts', $atts );
|
724 |
}
|
725 |
|
@@ -728,55 +748,64 @@ EOD;
|
|
728 |
if ( is_admin() )
|
729 |
return;
|
730 |
|
731 |
-
|
732 |
-
|
|
|
|
|
733 |
|
734 |
-
|
735 |
-
|
736 |
-
wp_register_style( __CLASS__
|
737 |
-
|
|
|
|
|
|
|
|
|
|
|
738 |
}
|
739 |
|
|
|
|
|
740 |
do_action( 'testimonials_widget_styles' );
|
741 |
}
|
742 |
|
743 |
|
744 |
public static function get_testimonials_html_css( $atts, $widget_number = null ) {
|
745 |
-
$css
|
|
|
746 |
|
747 |
switch ( $atts['type'] ) {
|
748 |
case 'testimonialswidget_widget':
|
749 |
-
|
750 |
-
$
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
$css = array();
|
760 |
-
$id_base = self::ID . $widget_number;
|
761 |
|
762 |
-
|
763 |
-
|
764 |
<style>
|
765 |
.$id_base {
|
766 |
min-height: {$min_height}px;
|
767 |
}
|
768 |
</style>
|
769 |
EOF;
|
770 |
-
|
771 |
|
772 |
-
|
773 |
-
|
774 |
<style>
|
775 |
.$id_base {
|
776 |
max-height: {$max_height}px;
|
777 |
}
|
778 |
</style>
|
779 |
EOF;
|
|
|
780 |
}
|
781 |
break;
|
782 |
}
|
@@ -791,33 +820,66 @@ EOF;
|
|
791 |
$scripts = array();
|
792 |
$scripts_internal = array();
|
793 |
|
|
|
|
|
|
|
794 |
switch ( $atts['type'] ) {
|
795 |
case 'testimonialswidget_widget':
|
796 |
-
|
797 |
-
$
|
|
|
798 |
|
799 |
-
|
800 |
-
$scripts = array();
|
801 |
-
$tw_padding = 'tw_padding' . $widget_number;
|
802 |
-
$tw_wrapper = 'tw_wrapper' . $widget_number;
|
803 |
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
$min_height = $atts['min_height'];
|
810 |
|
811 |
-
|
812 |
-
|
813 |
-
|
|
|
814 |
|
815 |
-
|
816 |
-
if ( 1 < count( $testimonials ) ) {
|
817 |
-
$javascript .= '<script type="text/javascript">' . "\n";
|
818 |
|
819 |
-
|
820 |
$javascript .= <<<EOF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
821 |
function nextTestimonial{$widget_number}() {
|
822 |
if ( ! jQuery('.{$id_base}').first().hasClass('hovered') ) {
|
823 |
var active = jQuery('.{$id_base} .active');
|
@@ -849,9 +911,9 @@ jQuery(document).ready(function() {
|
|
849 |
});
|
850 |
|
851 |
EOF;
|
852 |
-
|
853 |
|
854 |
-
|
855 |
if ( {$enable_animation} ) {
|
856 |
var {$tw_wrapper} = jQuery('.{$id_base}');
|
857 |
var {$tw_padding} = 0;
|
@@ -864,9 +926,10 @@ if ( {$enable_animation} ) {
|
|
864 |
{$tw_wrapper}.height( {$tw_wrapper}.height() );
|
865 |
});
|
866 |
}
|
867 |
-
</script>
|
868 |
EOF;
|
|
|
869 |
|
|
|
870 |
$scripts[ $id_base ] = $javascript;
|
871 |
}
|
872 |
break;
|
@@ -889,19 +952,18 @@ EOF;
|
|
889 |
$paging_after = ( 'after' === strtolower( $atts['paging'] ) );
|
890 |
$target = $atts['target'];
|
891 |
|
892 |
-
$
|
893 |
-
$id = self::ID;
|
894 |
|
895 |
if ( is_null( $widget_number ) ) {
|
896 |
-
$
|
897 |
|
898 |
if ( $is_list )
|
899 |
-
$
|
900 |
|
901 |
-
$
|
902 |
} else {
|
903 |
-
$id_base
|
904 |
-
$
|
905 |
}
|
906 |
|
907 |
if ( empty( $testimonials ) && ! $hide_not_found ) {
|
@@ -910,24 +972,36 @@ EOF;
|
|
910 |
);
|
911 |
}
|
912 |
|
|
|
913 |
if ( $paging || $paging_before )
|
914 |
-
$
|
915 |
|
916 |
$is_first = true;
|
917 |
|
|
|
918 |
foreach ( $testimonials as $testimonial ) {
|
919 |
$content = self::get_testimonial_html( $testimonial, $atts, $is_list, $is_first, $widget_number );
|
920 |
if ( $target )
|
921 |
$content = links_add_target( $content, $target );
|
922 |
$content = apply_filters( 'testimonials_widget_testimonial_html', $content, $testimonial, $atts, $is_list, $is_first, $widget_number );
|
923 |
-
$html .= $content;
|
924 |
$is_first = false;
|
|
|
|
|
925 |
}
|
926 |
|
|
|
927 |
if ( $paging || $paging_after )
|
928 |
-
$
|
929 |
|
930 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
931 |
|
932 |
return $html;
|
933 |
}
|
@@ -942,16 +1016,18 @@ EOF;
|
|
942 |
$do_schema = $atts['enable_schema'];
|
943 |
$keep_whitespace = $atts['keep_whitespace'];
|
944 |
$remove_hentry = $atts['remove_hentry'];
|
|
|
945 |
|
946 |
$class = 'testimonials-widget-testimonial';
|
947 |
-
if ( is_single() && empty( $widget_number ) )
|
948 |
$class .= ' single';
|
949 |
-
|
950 |
$class .= ' list';
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
|
|
955 |
}
|
956 |
|
957 |
if ( $keep_whitespace )
|
@@ -1009,10 +1085,12 @@ EOF;
|
|
1009 |
$bottom_text .= '</div>';
|
1010 |
}
|
1011 |
|
1012 |
-
$div_close = '
|
1013 |
if ( $do_schema && $do_content )
|
1014 |
$div_close .= '</div>';
|
1015 |
|
|
|
|
|
1016 |
$html = $div_open
|
1017 |
. $image
|
1018 |
. $quote
|
@@ -1057,7 +1135,7 @@ EOF;
|
|
1057 |
$content = apply_filters( 'testimonials_widget_content', $content, $widget_number, $testimonial, $atts );
|
1058 |
$content = make_clickable( $content );
|
1059 |
|
1060 |
-
if (
|
1061 |
$quote = '<blockquote>';
|
1062 |
$quote .= $content;
|
1063 |
$quote .= '</blockquote>';
|
@@ -1155,7 +1233,7 @@ EOF;
|
|
1155 |
$cite = apply_filters( 'testimonials_widget_cite_html', $cite, $testimonial, $atts );
|
1156 |
|
1157 |
if ( ! empty( $cite ) ) {
|
1158 |
-
if (
|
1159 |
$temp = '<div class="credit">';
|
1160 |
$temp .= $cite;
|
1161 |
$temp .= '</div>';
|
@@ -1173,7 +1251,7 @@ EOF;
|
|
1173 |
// Original PHP code as myTruncate2 by Chirp Internet: www.chirp.com.au
|
1174 |
public static function testimonials_truncate( $string, $char_limit = false, $pad = '…', $force_pad = false ) {
|
1175 |
if ( empty( $force_pad ) ) {
|
1176 |
-
if (
|
1177 |
return $string;
|
1178 |
|
1179 |
// return with no change if string is shorter than $char_limit
|
@@ -1181,7 +1259,7 @@ EOF;
|
|
1181 |
return $string;
|
1182 |
}
|
1183 |
|
1184 |
-
if (
|
1185 |
return self::truncate( $string, $char_limit, $pad, $force_pad );
|
1186 |
|
1187 |
return $string . $pad;
|
@@ -1299,7 +1377,7 @@ EOF;
|
|
1299 |
$output .= $indicator;
|
1300 |
|
1301 |
// Close any open tags
|
1302 |
-
while ( !empty( $tag_stack ) )
|
1303 |
$output .= '</'.array_pop( $tag_stack ).'>';
|
1304 |
|
1305 |
return $output;
|
@@ -1358,7 +1436,7 @@ EOF;
|
|
1358 |
|
1359 |
$html .= '">';
|
1360 |
|
1361 |
-
if (
|
1362 |
$paged = $atts['paged'];
|
1363 |
else
|
1364 |
$paged = 1;
|
@@ -1448,7 +1526,7 @@ EOF;
|
|
1448 |
$args['post_status'][] = 'draft';
|
1449 |
}
|
1450 |
|
1451 |
-
if ( $paging &&
|
1452 |
$args['paged'] = $atts['paged'];
|
1453 |
|
1454 |
if ( ! $random && $meta_key ) {
|
@@ -1993,7 +2071,7 @@ EOF;
|
|
1993 |
);
|
1994 |
|
1995 |
require_once ABSPATH . 'wp-admin/includes/image.php';
|
1996 |
-
|
1997 |
$image_id = wp_insert_attachment( $attachment, $filename, $post_id );
|
1998 |
$metadata = wp_generate_attachment_metadata( $image_id, $filename );
|
1999 |
|
@@ -2035,6 +2113,15 @@ EOF;
|
|
2035 |
}
|
2036 |
|
2037 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2038 |
}
|
2039 |
|
2040 |
|
3 |
* Plugin Name: Testimonials Widget
|
4 |
* Plugin URI: http://wordpress.org/extend/plugins/testimonials-widget/
|
5 |
* Description: Testimonials Widget plugin allows you to display random or selected portfolio, quotes, reviews, showcases, or text with images on your WordPress blog.
|
6 |
+
* Version: 2.15.0
|
7 |
* Author: Michael Cannon
|
8 |
* Author URI: http://aihr.us/about-aihrus/michael-cannon-resume/
|
9 |
* License: GPLv2 or later
|
25 |
*/
|
26 |
class Testimonials_Widget {
|
27 |
const ID = 'testimonials-widget-testimonials';
|
28 |
+
const JS_KEY = 'tw_slider_';
|
29 |
const OLD_NAME = 'testimonialswidget';
|
30 |
const PLUGIN_FILE = 'testimonials-widget/testimonials-widget.php';
|
31 |
const PT = 'testimonials-widget';
|
32 |
+
const VERSION = '2.15.0';
|
33 |
|
34 |
private static $base = null;
|
35 |
private static $found_posts = 0;
|
131 |
self::$cpt_category = self::PT . '-category';
|
132 |
self::$cpt_tags = self::PT . '-post_tag';
|
133 |
self::init_post_type();
|
134 |
+
|
135 |
+
$force_css_loading = tw_get_option( 'force_css_loading' );
|
136 |
+
if ( $force_css_loading )
|
137 |
+
self::styles();
|
138 |
}
|
139 |
|
140 |
|
326 |
|
327 |
public function admin_notices_donate() {
|
328 |
$content = '<div class="updated fade"><p>';
|
329 |
+
$content .= sprintf( esc_html__( 'Please donate $5 towards development and support of this Testimonials Widget plugin. %s', 'testimonials-widget' ), self::$donate_button );
|
330 |
$content .= '</p></div>';
|
331 |
|
332 |
echo $content;
|
339 |
if ( $prior_version < '2.12.0' )
|
340 |
add_action( 'admin_notices', array( $this, 'admin_notices_2_12_0' ) );
|
341 |
|
342 |
+
if ( $prior_version < '2.15.0' )
|
343 |
+
add_action( 'admin_notices', array( $this, 'admin_notices_2_15_0' ) );
|
344 |
+
|
345 |
if ( $prior_version < self::VERSION )
|
346 |
do_action( 'testimonials_widget_update' );
|
347 |
|
728 |
|
729 |
wp_enqueue_script( 'jquery' );
|
730 |
|
731 |
+
$use_bxslider = $atts['use_bxslider'];
|
732 |
+
if ( $use_bxslider ) {
|
733 |
+
$enable_video = $atts['enable_video'];
|
734 |
+
if ( $enable_video ) {
|
735 |
+
wp_register_script( 'jquery.fitvids', plugins_url( 'js/jquery.fitvids.js', __FILE__ ), array( 'jquery' ), '1.0' );
|
736 |
+
wp_enqueue_script( 'jquery.fitvids' );
|
737 |
+
}
|
738 |
+
|
739 |
+
wp_register_script( 'jquery.bxslider', plugins_url( 'js/jquery.bxslider.js', __FILE__ ), array( 'jquery' ), '4.1.1' );
|
740 |
+
wp_enqueue_script( 'jquery.bxslider' );
|
741 |
+
}
|
742 |
+
|
743 |
do_action( 'testimonials_widget_scripts', $atts );
|
744 |
}
|
745 |
|
748 |
if ( is_admin() )
|
749 |
return;
|
750 |
|
751 |
+
$use_bxslider = tw_get_option( 'use_bxslider' );
|
752 |
+
if ( $use_bxslider ) {
|
753 |
+
wp_register_style( 'jquery.bxslider', plugins_url( 'css/jquery.bxslider.css', __FILE__ ) );
|
754 |
+
wp_enqueue_style( 'jquery.bxslider' );
|
755 |
|
756 |
+
wp_register_style( __CLASS__, plugins_url( 'testimonials-widget.css', __FILE__ ) );
|
757 |
+
} else {
|
758 |
+
wp_register_style( __CLASS__, plugins_url( 'css/testimonials-widget-2.14.0.css', __FILE__ ) );
|
759 |
+
|
760 |
+
$include_ie7_css = tw_get_option( 'include_ie7_css' );
|
761 |
+
if ( $include_ie7_css ) {
|
762 |
+
wp_register_style( __CLASS__ . '-ie7', plugins_url( 'css/testimonials-widget-ie7.css', __FILE__ ) );
|
763 |
+
wp_enqueue_style( __CLASS__ . '-ie7' );
|
764 |
+
}
|
765 |
}
|
766 |
|
767 |
+
wp_enqueue_style( __CLASS__ );
|
768 |
+
|
769 |
do_action( 'testimonials_widget_styles' );
|
770 |
}
|
771 |
|
772 |
|
773 |
public static function get_testimonials_html_css( $atts, $widget_number = null ) {
|
774 |
+
$css = array();
|
775 |
+
$id_base = self::ID . $widget_number;
|
776 |
|
777 |
switch ( $atts['type'] ) {
|
778 |
case 'testimonialswidget_widget':
|
779 |
+
$use_bxslider = $atts['use_bxslider'];
|
780 |
+
if ( ! $use_bxslider ) {
|
781 |
+
$height = $atts['height'];
|
782 |
+
$max_height = $atts['max_height'];
|
783 |
+
$min_height = $atts['min_height'];
|
784 |
+
|
785 |
+
if ( $height ) {
|
786 |
+
$max_height = $height;
|
787 |
+
$min_height = $height;
|
788 |
+
}
|
|
|
|
|
789 |
|
790 |
+
if ( $min_height ) {
|
791 |
+
$css[] = <<<EOF
|
792 |
<style>
|
793 |
.$id_base {
|
794 |
min-height: {$min_height}px;
|
795 |
}
|
796 |
</style>
|
797 |
EOF;
|
798 |
+
}
|
799 |
|
800 |
+
if ( $max_height ) {
|
801 |
+
$css[] = <<<EOF
|
802 |
<style>
|
803 |
.$id_base {
|
804 |
max-height: {$max_height}px;
|
805 |
}
|
806 |
</style>
|
807 |
EOF;
|
808 |
+
}
|
809 |
}
|
810 |
break;
|
811 |
}
|
820 |
$scripts = array();
|
821 |
$scripts_internal = array();
|
822 |
|
823 |
+
$id = self::ID;
|
824 |
+
$id_base = $id . $widget_number;
|
825 |
+
|
826 |
switch ( $atts['type'] ) {
|
827 |
case 'testimonialswidget_widget':
|
828 |
+
$javascript = '';
|
829 |
+
if ( 1 < count( $testimonials ) ) {
|
830 |
+
$refresh_interval = $atts['refresh_interval'];
|
831 |
|
832 |
+
$javascript .= '<script type="text/javascript">' . "\n";
|
|
|
|
|
|
|
833 |
|
834 |
+
$use_bxslider = $atts['use_bxslider'];
|
835 |
+
if ( $use_bxslider ) {
|
836 |
+
$enable_video = $atts['enable_video'];
|
837 |
+
$show_start_stop = $atts['show_start_stop'];
|
838 |
+
$transition_mode = $atts['transition_mode'];
|
|
|
839 |
|
840 |
+
$auto = $refresh_interval ? 'true' : 'false';
|
841 |
+
$pager = ! $refresh_interval ? 'pager: true' : 'pager: false';
|
842 |
+
$pause = $refresh_interval * 1000;
|
843 |
+
$video = $enable_video ? "video: true,\nuseCSS: false" : 'video: false';
|
844 |
|
845 |
+
$autoControls = $show_start_stop ? 'autoControls: true,' : '';
|
|
|
|
|
846 |
|
847 |
+
$slider_var = self::JS_KEY . $widget_number;
|
848 |
$javascript .= <<<EOF
|
849 |
+
var {$slider_var} = null;
|
850 |
+
|
851 |
+
jQuery(document).ready(function() {
|
852 |
+
{$slider_var} = jQuery('.{$id_base}').bxSlider({
|
853 |
+
auto: {$auto},
|
854 |
+
{$autoControls}
|
855 |
+
autoHover: true,
|
856 |
+
controls: false,
|
857 |
+
mode: '{$transition_mode}',
|
858 |
+
{$pager},
|
859 |
+
pause: {$pause},
|
860 |
+
{$video},
|
861 |
+
slideMargin: 2
|
862 |
+
});
|
863 |
+
});
|
864 |
+
|
865 |
+
EOF;
|
866 |
+
} else {
|
867 |
+
$tw_padding = 'tw_padding' . $widget_number;
|
868 |
+
$tw_wrapper = 'tw_wrapper' . $widget_number;
|
869 |
+
|
870 |
+
$disable_animation = $atts['disable_animation'];
|
871 |
+
$fade_in_speed = $atts['fade_in_speed'];
|
872 |
+
$fade_out_speed = $atts['fade_out_speed'];
|
873 |
+
$height = $atts['height'];
|
874 |
+
$max_height = $atts['max_height'];
|
875 |
+
$min_height = $atts['min_height'];
|
876 |
+
|
877 |
+
$enable_animation = 1;
|
878 |
+
if ( $disable_animation || $height || $max_height || $min_height )
|
879 |
+
$enable_animation = 0;
|
880 |
+
|
881 |
+
if ( $refresh_interval ) {
|
882 |
+
$javascript .= <<<EOF
|
883 |
function nextTestimonial{$widget_number}() {
|
884 |
if ( ! jQuery('.{$id_base}').first().hasClass('hovered') ) {
|
885 |
var active = jQuery('.{$id_base} .active');
|
911 |
});
|
912 |
|
913 |
EOF;
|
914 |
+
}
|
915 |
|
916 |
+
$javascript .= <<<EOF
|
917 |
if ( {$enable_animation} ) {
|
918 |
var {$tw_wrapper} = jQuery('.{$id_base}');
|
919 |
var {$tw_padding} = 0;
|
926 |
{$tw_wrapper}.height( {$tw_wrapper}.height() );
|
927 |
});
|
928 |
}
|
|
|
929 |
EOF;
|
930 |
+
}
|
931 |
|
932 |
+
$javascript .= "\n" . '</script>';
|
933 |
$scripts[ $id_base ] = $javascript;
|
934 |
}
|
935 |
break;
|
952 |
$paging_after = ( 'after' === strtolower( $atts['paging'] ) );
|
953 |
$target = $atts['target'];
|
954 |
|
955 |
+
$id = self::ID;
|
|
|
956 |
|
957 |
if ( is_null( $widget_number ) ) {
|
958 |
+
$div_open = '<div class="' . $id;
|
959 |
|
960 |
if ( $is_list )
|
961 |
+
$div_open .= ' listing';
|
962 |
|
963 |
+
$div_open .= '">';
|
964 |
} else {
|
965 |
+
$id_base = $id . $widget_number;
|
966 |
+
$div_open = '<div class="' . $id . ' ' . $id_base . '">';
|
967 |
}
|
968 |
|
969 |
if ( empty( $testimonials ) && ! $hide_not_found ) {
|
972 |
);
|
973 |
}
|
974 |
|
975 |
+
$pre_paging = '';
|
976 |
if ( $paging || $paging_before )
|
977 |
+
$pre_paging = self::get_testimonials_paging( $atts );
|
978 |
|
979 |
$is_first = true;
|
980 |
|
981 |
+
$testimonial_content = '';
|
982 |
foreach ( $testimonials as $testimonial ) {
|
983 |
$content = self::get_testimonial_html( $testimonial, $atts, $is_list, $is_first, $widget_number );
|
984 |
if ( $target )
|
985 |
$content = links_add_target( $content, $target );
|
986 |
$content = apply_filters( 'testimonials_widget_testimonial_html', $content, $testimonial, $atts, $is_list, $is_first, $widget_number );
|
|
|
987 |
$is_first = false;
|
988 |
+
|
989 |
+
$testimonial_content .= $content;
|
990 |
}
|
991 |
|
992 |
+
$post_paging = '';
|
993 |
if ( $paging || $paging_after )
|
994 |
+
$post_paging = self::get_testimonials_paging( $atts, false );
|
995 |
|
996 |
+
$div_close = '</div>';
|
997 |
+
|
998 |
+
$html = $div_open
|
999 |
+
. $pre_paging
|
1000 |
+
. $testimonial_content
|
1001 |
+
. $post_paging
|
1002 |
+
. $div_close;
|
1003 |
+
|
1004 |
+
$html = apply_filters( 'testimonials_widget_get_testimonials_html', $html, $testimonials, $atts, $is_list, $widget_number, $div_open, $pre_paging, $testimonial_content, $post_paging, $div_close );
|
1005 |
|
1006 |
return $html;
|
1007 |
}
|
1016 |
$do_schema = $atts['enable_schema'];
|
1017 |
$keep_whitespace = $atts['keep_whitespace'];
|
1018 |
$remove_hentry = $atts['remove_hentry'];
|
1019 |
+
$use_bxslider = $atts['use_bxslider'];
|
1020 |
|
1021 |
$class = 'testimonials-widget-testimonial';
|
1022 |
+
if ( is_single() && empty( $widget_number ) )
|
1023 |
$class .= ' single';
|
1024 |
+
elseif ( $is_list )
|
1025 |
$class .= ' list';
|
1026 |
+
elseif ( ! $use_bxslider ) {
|
1027 |
+
if ( $is_first )
|
1028 |
+
$class .= ' active';
|
1029 |
+
elseif ( ! $is_first )
|
1030 |
+
$class .= ' display-none';
|
1031 |
}
|
1032 |
|
1033 |
if ( $keep_whitespace )
|
1085 |
$bottom_text .= '</div>';
|
1086 |
}
|
1087 |
|
1088 |
+
$div_close = '';
|
1089 |
if ( $do_schema && $do_content )
|
1090 |
$div_close .= '</div>';
|
1091 |
|
1092 |
+
$div_close .= '</div>';
|
1093 |
+
|
1094 |
$html = $div_open
|
1095 |
. $image
|
1096 |
. $quote
|
1135 |
$content = apply_filters( 'testimonials_widget_content', $content, $widget_number, $testimonial, $atts );
|
1136 |
$content = make_clickable( $content );
|
1137 |
|
1138 |
+
if ( ! $use_quote_tag ) {
|
1139 |
$quote = '<blockquote>';
|
1140 |
$quote .= $content;
|
1141 |
$quote .= '</blockquote>';
|
1233 |
$cite = apply_filters( 'testimonials_widget_cite_html', $cite, $testimonial, $atts );
|
1234 |
|
1235 |
if ( ! empty( $cite ) ) {
|
1236 |
+
if ( ! $use_quote_tag ) {
|
1237 |
$temp = '<div class="credit">';
|
1238 |
$temp .= $cite;
|
1239 |
$temp .= '</div>';
|
1251 |
// Original PHP code as myTruncate2 by Chirp Internet: www.chirp.com.au
|
1252 |
public static function testimonials_truncate( $string, $char_limit = false, $pad = '…', $force_pad = false ) {
|
1253 |
if ( empty( $force_pad ) ) {
|
1254 |
+
if ( ! $char_limit )
|
1255 |
return $string;
|
1256 |
|
1257 |
// return with no change if string is shorter than $char_limit
|
1259 |
return $string;
|
1260 |
}
|
1261 |
|
1262 |
+
if ( $char_limit )
|
1263 |
return self::truncate( $string, $char_limit, $pad, $force_pad );
|
1264 |
|
1265 |
return $string . $pad;
|
1377 |
$output .= $indicator;
|
1378 |
|
1379 |
// Close any open tags
|
1380 |
+
while ( ! empty( $tag_stack ) )
|
1381 |
$output .= '</'.array_pop( $tag_stack ).'>';
|
1382 |
|
1383 |
return $output;
|
1436 |
|
1437 |
$html .= '">';
|
1438 |
|
1439 |
+
if ( $atts['paged'] )
|
1440 |
$paged = $atts['paged'];
|
1441 |
else
|
1442 |
$paged = 1;
|
1526 |
$args['post_status'][] = 'draft';
|
1527 |
}
|
1528 |
|
1529 |
+
if ( $paging && $atts['paged'] && is_singular() )
|
1530 |
$args['paged'] = $atts['paged'];
|
1531 |
|
1532 |
if ( ! $random && $meta_key ) {
|
2071 |
);
|
2072 |
|
2073 |
require_once ABSPATH . 'wp-admin/includes/image.php';
|
2074 |
+
|
2075 |
$image_id = wp_insert_attachment( $attachment, $filename, $post_id );
|
2076 |
$metadata = wp_generate_attachment_metadata( $image_id, $filename );
|
2077 |
|
2113 |
}
|
2114 |
|
2115 |
|
2116 |
+
public function admin_notices_2_15_0() {
|
2117 |
+
$content = '<div class="updated fade"><p>';
|
2118 |
+
$content .= sprintf( __( 'If your Testimonials Widget display has gone to funky town, please <a href="%s">read the FAQ</a> about possible fixes.', 'testimonials-widget' ), esc_url( 'https://aihrus.zendesk.com/entries/28402246-Major-Change-for-2-15-0' ) );
|
2119 |
+
$content .= '</p></div>';
|
2120 |
+
|
2121 |
+
echo $content;
|
2122 |
+
}
|
2123 |
+
|
2124 |
+
|
2125 |
}
|
2126 |
|
2127 |
|