Testimonials Widget - Version 2.11.2

Version Description

= 2.11.0 =

  • CSS class names are simplified. For the most part, other than testimonialswidget_testimonial remove testimonialswidget_ from the CSS class name in your CSS customizations.
    • Ex: .testimonialswidget_join becomes .join
    • Ex: .testimonialswidget_author becomes .author
  • Testimonials are now formatted using blockquote than q for HTML5 compliance. If you need q tag formatting, enable it at WP Admin > Testimonials > Settings, Compatibility & Reset tab
    • cite is now div.credit

= 2.8.0 =

  • Deprecated
    • hide_author now hide_source
  • Removed filters testimonials_widget_options_update, testimonials_widget_options_form
    • Use testimonials_widget_validate_settings and testimonials_widget_settings instead
  • Renamed variable and related class widget_text to bottom_text

= 2.7.3 =

  • Quotes are no longer handled via q, p:before, or p:after CSS. It's handled via .testimonialswidget_testimonial .testimonialswidget_open_quote:before and .testimonialswidget_testimonial .testimonialswidget_close_quote:after
  • This change was made to keep consistency in how quotes were managed and to reduce the number of exception cases. In the end, this is simpler.

= 2.7.0 =

  • Quotes with keep_whitespace=true aren't applied via CSS .testimonialswidget_testimonial q tag anymore, but .testimonialswidget_testimonial q p:first-child:before and .testimonialswidget_testimonial q p:last-child:after
  • Widget testimonial p tags are no longer CSS display: inline, display: block as expected

= 2.4.1 =

  • Paging is on by default, except for widgets

= 2.0.0 =

  • CSS
    • Class testimonialswidget_company replaces testimonialswidget_source
    • Class testimonialswidget_source replaces testimonialswidget_author
    • The tighten widget display up, p tags within q are displayed inline.
  • JavaScript
    • The JavaScript for rotating testimonials is moved to the footer. As such, your theme requires wp_footer() in the footer.
  • Shortcode options
    • hide_source replaced by hide_url
    • hide_author replaced by hide_source
  • Testimonials
    • Migration from the old custom table to new custom post type is automatically done. Import might take a few moments to complete.
    • Company, URL and email details are attempted to be identified and placed properly based upon the original author and source fields. The company is "guessed" from the author field when there's a ", " or " of " context. If the source is an email, it's saved as such. Otherwise, it's assumed to be a URL.
    • Public testimonials are saved as Published. Non-public testimonials are marked as Private.
  • Widget options
    • "Show author" and "Show source" options are replaced by "Hide source" and "Hide URL" respectively. There's no backwards compatibility for these changes.
    • Default min-height is now 250px than 150px.
Download this release

Release Info

Developer comprock
Plugin Icon wp plugin Testimonials Widget
Version 2.11.2
Comparing to
See all releases

Code changes from version 2.9.1 to 2.11.2

changelog.txt ADDED
@@ -0,0 +1,841 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Testimonials Widget ===
2
+
3
+ == Changelog ==
4
+
5
+ = trunk =
6
+
7
+ = 2.11.2 =
8
+ * Add `min1` and `nozero` validation
9
+ * Always include settings class
10
+ * BUGFIX Don't prepend http to email addresses
11
+ * Move lesser used widget options to expandable Additional Widget Options section
12
+ * Move settings setup to `init`
13
+ * Revise `absint` and `intval` validation to default on blank entry
14
+ * Update POT
15
+ * Update TODO
16
+ * Update text domain for localization and POT
17
+ * Use `links_add_target` for widget title link
18
+
19
+ = 2.11.1 =
20
+ * BUGFIX [Fatal error: Testimonials_Widget_Settings](http://wordpress.org/support/topic/fatal-error-testimonials_widget_settings)
21
+
22
+ = 2.11.0 =
23
+ * Add Option "Hide Image in Single View?" `hide_image_single`
24
+ * Add `.author` and `.email` to CSS
25
+ * Add `.single` to single view testimonials
26
+ * Add location to meta_key ordering options
27
+ * BUGFIX [Convert q tags to blockquote](http://wordpress.org/support/topic/open-link-in-new-tab-html-validation) [Why?](http://www.w3schools.com/tags/tag_blockquote.asp)
28
+ * BUGFIX [Fix cite tag usage - it's title, not source](http://www.w3.org/html/wg/drafts/html/master/text-level-semantics.html#the-cite-element) using [T](http://html5doctor.com/blockquote-q-cite/) [BD](http://oli.jp/2011/blockquote/)
29
+ * Beta testers needed section added
30
+ * Disable self-generated quotation marks
31
+ * Enable backwards compatibility for default options
32
+ * Ignore init() during AJAX and autosave operations
33
+ * Optimize DB after uninstall
34
+ * Rename CSS attributes to credit
35
+ * Revise README verbiage in general
36
+ * Simplify CSS naming
37
+ * Update Allow Comments verbiage
38
+ * Update TODOs
39
+ * Update features listing
40
+ * Update options listing
41
+ * Update premium features
42
+ * Update readme formatting
43
+
44
+ = 2.10.3 =
45
+ * Add "Menu Order" to Order By options
46
+ * Add Height option to automatically set min and max height
47
+ * BUGFIX [Only one testimonial displaying](http://wordpress.org/support/topic/only-one-testimonial-displaying)
48
+ * BUGFIX [Post Types Order](http://wordpress.org/support/topic/random-order-doesnt-work) - sorting conflict
49
+ * Delete data on uninstall
50
+ * Enable quotes and join for IE7 - Thank you [SFMichael](http://wordpress.org/support/topic/ie-7-quotes-fix)
51
+ * Flush URLs on deactivation
52
+ * Revise self::$base usage
53
+ * Revise settings_link handling
54
+ * Screenshot 16 Testimonials Widget Settings > Widget tab
55
+ * Update Premium link
56
+ * Update TODOs
57
+
58
+ = 2.10.2 =
59
+ * BUGFIX Settings initialization overwrote previous settings
60
+
61
+ = 2.10.1 =
62
+ * Moved [FAQ](http://aihr.us/testimonials-widget/faq/)
63
+ * Removed premium screenshots
64
+ * Rename screenshot-3.png screenshot-2.png
65
+ * Rename screenshot-4.png screenshot-3.png
66
+ * Rename screenshot-5.png screenshot-4.png
67
+ * Rename screenshot-6.png screenshot-5.png
68
+ * Rename screenshot-7.png screenshot-6.png
69
+ * Rename screenshot-8.png screenshot-7.png
70
+ * Rename screenshot-13.png screenshot-8.png
71
+ * Rename screenshot-14.png screenshot-9.png
72
+ * Rename screenshot-21.png screenshot-10.png
73
+ * Rename screenshot-22.png screenshot-11.png
74
+ * Rename screenshot-23.png screenshot-12.png
75
+ * Rename screenshot-24.png screenshot-13.png
76
+ * Rename screenshot-25.png screenshot-14.png
77
+ * Rename screenshot-26.png screenshot-15.png
78
+ * Screenshot 2 removed
79
+ * Screenshot 9 removed
80
+ * Screenshot 10 removed
81
+ * Screenshot 11 removed
82
+ * Screenshot 12 removed
83
+ * Screenshot 15 removed
84
+ * Screenshot 16 removed
85
+ * Screenshot 17 removed
86
+ * Screenshot 18 removed
87
+ * Screenshot 19 removed
88
+ * Screenshot 20 removed
89
+ * Screenshot 27 removed
90
+ * Screenshot 28 removed
91
+
92
+ = 2.10.0 =
93
+ * Add `hide_content` option verbiage
94
+ * Add screenshot 27 `[[testimonialswidgetpremium_form]]` – Add a Testimonial
95
+ * Add screenshot 28 Testimonials Widget Settings > Entry Form tab
96
+ * Added rel="nofollow" to URL - Thank you Nicholas Corrieri for the suggestion
97
+ * Convert validation to configuration
98
+ * Correct breakline on radio settings display
99
+ * Correct checkbox checking
100
+ * Correct paging handling
101
+ * Correct post_status selection for single view
102
+ * Describe settings defaults
103
+ * Dutch translation by Bjorn Robijns
104
+ * Enable echo/return for display_setting
105
+ * Enable file input for settings
106
+ * Enable widget options no-show
107
+ * Finish validation configuration move
108
+ * Form demo link
109
+ * Move Changelog to changelog.txt
110
+ * Rename load_sections > _sections
111
+ * Rename load_settings > settings
112
+ * Save option defaults
113
+ * Set missing checkbox values to 0 on validate
114
+ * TODO Delete data option on deactivation
115
+ * Update Premium description
116
+ * Update WPML configuration
117
+
118
+ = 2.9.1 =
119
+ * BUGFIX Assigning the return value of new by reference is deprecated in metabox.class.php
120
+
121
+ = 2.9.0 =
122
+ * Add location meta field after title
123
+ * Add location related options
124
+ * FAQ 18, 34, 35 update
125
+ * Screenshot 2, 4, 5 updated
126
+ * Update POT
127
+
128
+ = 2.8.4 =
129
+ * BUGFIX [Title link does not allow a relative link](http://wordpress.org/support/topic/title-link-does-not-allow-a-relative-link)
130
+
131
+ = 2.8.3 =
132
+ * BUGFIX [Selection > Category Filter doesn't remember >1 category](http://wordpress.org/support/topic/selection-category-filter-doesnt-remember-1-category)
133
+ * FAQ 67 testimonials paging doesn't work
134
+ * FAQ 68 feature XYZ
135
+
136
+ = 2.8.2 =
137
+ * Add filter `testimonials_widget_version`
138
+ * Screenshot 11/16 updated
139
+ * Update POT
140
+ * Update Premium features
141
+ * Version tracking for default settings
142
+
143
+ = 2.8.1 =
144
+ * Customizable archive and testimonial URLs
145
+ * FAQ 66 Change the testimonials archive or single view URL
146
+ * Optional commenting on testimonial single-view pages
147
+ * Screenshot 26 Testimonials Widget Settings > Post Type tab
148
+ * Update POT
149
+
150
+ = 2.8.0 =
151
+ * Merge in settings branch
152
+ * Add `tw_get_options`
153
+ * Add filter `testimonials_widget_sections` – Alter section options
154
+ * Add filter `testimonials_widget_settings` – Alter setting options
155
+ * Add settings page 'Selection', 'Ordering', and 'Widget' tabs
156
+ * BUG with "Post Types Order"
157
+ * BUGFIX paging when not in singular view
158
+ * Configure settings within Testimonials_Widget_Settings class
159
+ * Enable 'Expand/Collapse' view in Widget options
160
+ * FAQ 65 Disable the stylesheet
161
+ * FEATURE Remove `.hentry` CSS?
162
+ * FEATURE Testimonials Widget Settings screen
163
+ * Removed filters `testimonials_widget_options_update`, `testimonials_widget_options_form`
164
+ * Rename `widget_text` to `bottom_text`
165
+ * Revise About page content
166
+ * Revise Settings page footer
167
+ * Revise widget options update and validation
168
+ * Screenshot 11 updated
169
+ * Screenshot 16 updated
170
+ * Screenshot 2 updated
171
+ * Screenshot 22 Testimonials Widget Settings > General tab
172
+ * Screenshot 23 Expanded 'Selection Options' Testimonials Widget
173
+ * Screenshot 24 Expanded 'Ordering Options' Testimonials Widget
174
+ * Screenshot 25 Testimonials Widget Settings > Selection tab
175
+ * Screenshot 3 updated
176
+ * Screenshot 4 updated, Expanded 'General Options' Testimonials Widget
177
+ * Update "Shortcode and Widget Options" verbiage
178
+ * Update POT file
179
+ * Use defaults via Testimonials_Widget_Settings class
180
+ * Validate shortcode and widget options via Testimonials_Widget_Settings::validate_settings
181
+ * Verbiage updates
182
+
183
+ = 2.7.17 =
184
+ * Add purchase Testimonials Widget Premium plugin meta link
185
+ * Begin settings screen work
186
+ * FAQ 20 Update
187
+ * FAQ 31 Update
188
+ * FAQ 63 Remove the cite –
189
+ * FAQ 64 Plugin conflict
190
+ * Screenshot 21 Poedit Catalog properties
191
+ * TODO class removal
192
+ * Update localization verbiage
193
+
194
+ = 2.7.16 =
195
+ * Add comments panel to edit screen - [Thank you BarrieSpence](http://wordpress.org/support/topic/disable-comments-10?replies=1)
196
+ * TODO Admin panel
197
+
198
+ = 2.7.15 =
199
+ * Add "CSS class" to widget options window
200
+ * FAQ 31/34/35/50/53/55 updates
201
+ * FAQ 61 Determine .testimonialswidget_testimonialsNNN
202
+ * FAQ 62 Category and tag selection
203
+ * Feature updates
204
+ * Localization, Hebrew
205
+ * Screenshot 3 updated
206
+
207
+ = 2.7.14 =
208
+ * BUGFIX [Testimonials archive view URL conflicts with Page slug](http://wordpress.org/support/topic/testimonials-archive-view-url-conflicts-with-page-slug)
209
+ * FAQ 1 Update - Thank you [aaaronscat](http://wordpress.org/support/topic/writing-php-to-display-rotating-widget-in-a-template) for the inspiration
210
+ * FAQ 60 Download older versions of Testimonials Widget
211
+ * Premium feature update
212
+ * Screenshot 20 added
213
+
214
+ = 2.7.13 =
215
+ * Adapt for `mb_strcut` and `mb_strlen` alternatives
216
+ * BUGFIX [Widget doesn't appear](http://wordpress.org/support/topic/widget-doesnt-appear-1)
217
+ * Update POT
218
+
219
+ = 2.7.12 =
220
+ * Change Aihrus support email to contact form
221
+ * FAQ 1 Update - Thank you [aaaronscat](http://wordpress.org/support/topic/writing-php-to-display-rotating-widget-in-a-template) for the inspiration
222
+ * Update Testimonials Widget Premium URL
223
+
224
+ = 2.7.11 =
225
+ * Citation styling note
226
+ * Removed sub-category shortcode example
227
+ * Thanks to Joe Weber for asset header
228
+ * Update premium URL
229
+ * Update premium features
230
+ * Update premium purchase URL
231
+
232
+ = 2.7.10 =
233
+ * BUGFIX extra excerpt in single view
234
+ * Screenshot 11 updated
235
+ * Update premium features
236
+
237
+ = 2.7.9 =
238
+ * Revise content truncation to respect HTML tags
239
+ * Update premium description
240
+ * Update premium features
241
+
242
+ = 2.7.8 =
243
+ * Add `before` and `after` options to `paging`
244
+ * FAQ 58 Specify testimonials per page or section
245
+ * FAQ 59 Rotating widget show all testimonials than only one at a time
246
+ * Revert on-demand CSS to always included
247
+ * Support process and donation update
248
+ * Thank you to [mkearns](http://wordpress.org/support/topic/just-excellent-3) for specifying a sub-category shortcode example
249
+ * Update premium URL
250
+ * Update premium features
251
+
252
+ = 2.7.7 =
253
+ * FAQ 13 Update
254
+ * FAQ 31 Update
255
+ * Shortcode examples "[[" to "["
256
+
257
+ = 2.7.6 =
258
+ * Add `[[testimonialswidget_widget]]` to Shortcodes column
259
+ * CSS cite `margin-top` adjustment
260
+ * Enable testimonials archive view
261
+ * FAQ 1 Update
262
+ * FAQ 52 Update
263
+ * FAQ 53 Update
264
+ * FAQ 55 Style page and instance testimonials
265
+ * FAQ 56 Testimonials archive view URL
266
+ * FAQ 57 Testimonial single view URL
267
+ * Only include CSS if testimonials instance called
268
+ * Screenshot 19 `[[testimonialswidget_widget unique=true]]` Show multiple testimonials in rotation
269
+ * Set arg defaults via `defaults`
270
+
271
+ = 2.7.5 =
272
+ * BUGFIX PHP Warning for new fields in widget when widget already exists
273
+ * Exclude IDs option
274
+ * Implement instance tracking
275
+ * Protect shortcode examples
276
+ * Update asset header size
277
+ * Update premium features
278
+
279
+ = 2.7.4 =
280
+ * Asset header help request
281
+ * Premium feature updates
282
+ * Screenshot 9 updated
283
+ * Screenshot 10 replaced
284
+ * Screenshot 11 updated
285
+ * Screenshot 15 updated
286
+ * Screenshot 17 Single `[[testimonialswidget_list]]` entry with and without 'Read more' link
287
+ * Screenshot 18 `[[testimonialswidgetpremium_count]]` Examples
288
+
289
+ = 2.7.3 =
290
+ * Apply quotes only around testimonial content
291
+ * FAQ 13 update
292
+ * FAQ 34 update
293
+ * FAQ 35 update
294
+ * Screenshot 8 replaced
295
+ * Simplified quotes handling
296
+ * Upgrade notification
297
+
298
+ = 2.7.2 =
299
+ * FAQ 54 update
300
+ * Screenshot 12 update
301
+ * Screenshot 16 Edit testimonial with "Excerpt" and "Read More Link" fields - Testimonials Widget Premium plugin
302
+
303
+ = 2.7.1 =
304
+ * Description update
305
+ * FAQ 1 update
306
+ * FAQ 2 update
307
+ * FAQ 4 update
308
+ * FAQ 5 update
309
+ * FAQ 6 update
310
+ * FAQ 7 update
311
+ * FAQ 8 update
312
+ * FAQ 9 update
313
+ * FAQ 12 update
314
+ * FAQ 14 update
315
+ * FAQ 15 update
316
+ * FAQ 17 update
317
+ * FAQ 22 update
318
+ * FAQ 25 update
319
+ * FAQ 26 update
320
+ * FAQ 30 update
321
+ * FAQ 32 update
322
+ * FAQ 34 update
323
+ * FAQ 35 update
324
+ * FAQ 37 update
325
+ * FAQ 53 update
326
+ * Feature update
327
+ * Installation update
328
+ * Screenshot 1 update
329
+ * Screenshot 2 update
330
+ * Screenshot 3 update
331
+ * Screenshot 4 update
332
+ * Screenshot 5 update
333
+ * Screenshot 6 update
334
+ * Screenshot 7 update
335
+ * Screenshot 8 replaced
336
+ * Screenshot 9 replaced
337
+ * Screenshot 12 update
338
+ * Screenshot 15 update
339
+ * Screenshot 16 removed
340
+ * Screenshot 17 removed
341
+ * Screenshot 18 removed
342
+
343
+ = 2.7.0 =
344
+ * FAQ 13 Update
345
+ * FAQ 54 Release early. Release often.
346
+ * Redo content opening and closing quotes display
347
+ * Upgrade notification for 2.7.0
348
+
349
+ = 2.6.6 =
350
+ * Remove CSS `overflow: auto` - too many complaints
351
+ * FAQ 53 Scroll widget based testimonial content
352
+
353
+ = 2.6.5 =
354
+ * BUGFIX: overflow auto than scroll
355
+ * Correct screenshot 11 & 18
356
+
357
+ = 2.6.4 =
358
+ * Add filters `testimonials_widget_posts_custom_column`, `testimonials_widget_columns`, `testimonials_widget_meta_box`
359
+ * BUGFIX Testimonial posts page column URL now correctly clickable
360
+ * Code spacing cleanup
361
+ * Enabled [scrolling text](http://wordpress.org/support/topic/plugin-testimonials-widget-scroll-for-a-single-but-long-testimonial) for maximum height restricted testimonial widgets
362
+ * FAQ 34/35 CSS styling update
363
+ * Scrolling testimonials for maximum height restricted widgets
364
+ * Testimonials have `get_post_class` applied
365
+ * Update premium features
366
+
367
+ = 2.6.3 =
368
+ * Add filter `testimonials_widget_query_args`
369
+ * Add filters `testimonials_widget_testimonials_css`, `testimonials_widget_testimonials_js`
370
+ * Allow `limit=-1`
371
+ * BUGFIX Repeated footer CSS and JavaScript
372
+ * CSS - block disply widget image
373
+ * FAQ 52 Include testimonies in archive view
374
+ * Refactor `get_query_args` out of `get_testimonials`
375
+ * Revise JavaScript handling
376
+ * Screenshot 17 `require_image`, `minimum_length` and `maximum_length` shortcode option examples
377
+ * Screenshot 18 Widget with 'Next testimonial…' link
378
+ * Update POT
379
+ * Update premium features
380
+ * Update premium screenshots
381
+
382
+ = 2.6.2 =
383
+ * Compatible with WordPress 3.6
384
+ * Fix single view PHP warning
385
+
386
+ = 2.6.1 =
387
+ * Add filter `testimonials_widget_testimonial_html_single_content`
388
+ * Add `force_pad` option to `testimonials_truncate`
389
+ * Copyright year update
390
+ * Update Premium features
391
+
392
+ = 2.6.0 =
393
+ * Add FAQ 51 filter `testimonials_widget_get_testimonial_html` usage
394
+ * FAQ 50 Revise
395
+ * Reorganize `get_testimonial_html`
396
+
397
+ = 2.5.6 =
398
+ * Add FAQ 50 Example to set widget gradient background color
399
+ * FAQ 13 Update
400
+ * FAQ 20 Add PHP tags
401
+ * FAQ 48 Code correction
402
+ * FAQ 49 Code correction
403
+
404
+ = 2.5.5 =
405
+ * Enable widget caching
406
+ * Refactor `get_testimonials_html` to break out CSS/JS generation
407
+ * Respect [meta capabilities](http://wordpress.org/support/topic/plugin-testimonials-widget-version-20-rewrite-suggestions-request?replies=18#post-3359157)
408
+ * Revise TODO text
409
+ * TODO remove Template engine - see `testimonials_widget_testimonial_html*` filters
410
+
411
+ = 2.5.4 =
412
+ * Add filter `testimonials_widget_testimonial_html_single`
413
+ * Add filter `testimonials_widget_testimonial_html`
414
+ * Aihrus testimonial URL correction
415
+ * FAQ 34 Find `testimonialswidget_testimonialsNNN` instance naming
416
+ * FAQ 48 Customize testimonial list/widget output
417
+ * FAQ 49 Customize testimonial single output
418
+
419
+ = 2.5.3 =
420
+ * Add donate link in plugin section
421
+ * Donate links
422
+
423
+ = 2.5.2 =
424
+ * Aihrus branding
425
+
426
+ = 2.5.1 =
427
+ * Update POT file
428
+
429
+ = 2.5.0 =
430
+ * Add option Keep whitespace? - Thank you [kangchenjunga](http://wordpress.org/support/topic/optional-wpautop-functionality-for-better-formatting?replies=2) for the suggestion
431
+ * Revise FAQ 47
432
+ * Screenshot 16 - Widget whitespace kept
433
+ * Update Author URL
434
+
435
+ = 2.4.8 =
436
+ * Donate to purchase verbiage change - One bad experience ruins it for all
437
+ * FAQ 47 testimonials list in a widget
438
+ * TODO Add location field
439
+ * TODO Add plugin donate link
440
+ * [CleanCSS](http://cleancss.com/) the CSS
441
+
442
+ = 2.4.7 =
443
+ * Add filter `testimonials_widget_defaults_single`
444
+ * TODO clean up for premium version
445
+ * TODO Optional wpautop functionality for better formatting
446
+
447
+ = 2.4.6 =
448
+ * Add 'No order' as an Order By widget option
449
+ * Add FAQ 45 testimonial character limit
450
+ * Add Recommendation heading
451
+ * FAQ 23 mention 404
452
+ * FAQ 46 testimonial ordering by given IDs
453
+ * Update filters listing
454
+ * Use `posts_results` filter to put posts in same orders as post__in when orderby=none
455
+
456
+ = 2.4.5 =
457
+ * BUGFIX Missing CSS for testimonialswidget_join_title
458
+ * FAQ 44 Refresh interval - Thank you [biztips](http://wordpress.org/support/topic/fatal-error-558?replies=6#post-3475595)
459
+
460
+ = 2.4.4 =
461
+ * Add screenshot 15
462
+ * FAQ 34 Update CSS
463
+ * FAQ 35 Update CSS
464
+ * FAQ 42 Exclude testimonial categories from Category widget
465
+ * FAQ 43 Exclude testimonial categories from my sitemap
466
+ * Update premium features
467
+
468
+ = 2.4.3 =
469
+ * Adjust default `limit` to 10 from 25
470
+ * Add CSS `margin-top` to `cite`, `.testimonialswidget_extra` and `.testimonialswidget_text`
471
+ * BUGFIX [Keep `widget_text` with each testimonial](http://wordpress.org/support/topic/images-not-showin?replies=10)
472
+ * Donate link update
473
+ * FAQ 41 Widget height consistency
474
+
475
+ = 2.4.2 =
476
+ * BUGFIX [No image](http://wordpress.org/support/topic/update-17?replies=4) in [widget](http://wordpress.org/support/topic/plugin-testimonials-widget-short-rotating-testimonial-link-to-the-full-testimonial?replies=16)
477
+ * TODO Add refactor `get_testimonials_html`
478
+
479
+ = 2.4.1 =
480
+ * BUGFIX `testimonialswidget_widget` always random
481
+ * Comment and verbiage cleanups
482
+ * Minor refactor of `get_testimonial_html`
483
+ * TODO Added Template engine
484
+
485
+ = 2.4.0 =
486
+ * FAQ 39 Style the custom widget text
487
+ * FAQ 40 Page number pagination
488
+ * FEATURE Custom widget text
489
+ * FEATURE Make the widget title clickable
490
+ * FEATURE Page numbers via WP-PageNavi
491
+ * Refactor paging to use WordPress functions
492
+ * SCREENSHOT 12 recrop
493
+ * SCREENSHOT 13 Widget with clickable title and custom text/HTML on bottom
494
+ * SCREENSHOT 14 WP-PageNavi compatible for page numbers than default arrows
495
+ * SCREENSHOT 3 update
496
+ * SCREENSHOT 4 update
497
+ * TODO Remove Custom widget text - added
498
+ * TODO Remove Make the widget title clickable - added
499
+ * TODO Remove Page numbers - added
500
+ * TODO Remove fields to show - done via theme
501
+
502
+ = 2.3.4 =
503
+ * BUGFIX [Testimonial plugin means Set Feature Image Not Displaying](http://wordpress.org/support/topic/testimonial-plugin-means-set-feature-image-not-displaying)
504
+ * Test with WordPress 3.5.0 RC1
505
+ * TODO remove Publish & New - just click 'New Testimonial' after Publishing
506
+ * Update donate link
507
+
508
+ = 2.3.3 =
509
+ * FEATURE Improved single page view
510
+ * SCREENSHOT Single testimonial view
511
+ * TODO Meta capabilities
512
+
513
+ = 2.3.2 =
514
+ * Add filters `testimonials_widget_options_update`, `testimonials_widget_options_form`
515
+ * BUGFIX ["featured image" module disappeared](http://wordpress.org/support/topic/no-image-upload?replies=12#post-3423001)
516
+ * Clean up tags per [plugin guidelines](http://wordpress.org/extend/plugins/about/guidelines/)
517
+ * Combine source and url display when no email or company
518
+ * FAQ renumber second 36 to 37
519
+ * FAQ 38 Use filter `testimonials_widget_defaults`
520
+ * FEATURE Centralized defaults via filter `testimonials_widget_defaults`
521
+ * Only grab `paged` information once
522
+ * Prepend HTTP protocol if missing in URL
523
+ * SCREENSHOT Widget Premium Options
524
+ * Simplify filter `testimonials_widget_content`
525
+ * Simplify read more ellipsis
526
+ * Trim content after formatting
527
+
528
+ = 2.3.1 =
529
+ * BUGFIX [No image upload](http://wordpress.org/support/topic/no-image-upload)
530
+ * FAQ 36 Why donate?
531
+
532
+ = 2.3.0 =
533
+ * BUGFIX No paging when cached
534
+ * FAQ 3 Check for empty $data
535
+ * FAQ 33 Change more content ellipsis
536
+ * FAQ 34/35 Clarify CSS classes
537
+ * FAQ 36 Configure Next and Previous page indicators
538
+ * FEATURE (Premium) [Read More links](http://wordpress.org/support/topic/plugin-testimonials-widget-short-rotating-testimonial-link-to-the-full-testimonial) to [full testimonial page](http://wordpress.org/support/topic/very-easy-to-use-moderately-easy-to-style)
539
+ * FEATURE Easier to configure Next and Previous page indicators
540
+ * Refactor `get_testimonial_html`
541
+ * Refactor testimonial HTML creation methods
542
+ * Remove "Read more…" preparations
543
+ * Replace `testimonials_truncate` with WordPress's `wp_trim_words`
544
+ * SCREENSHOTS 'Read more' links
545
+ * Sanitize names
546
+ * TEMP Prevent widget caching
547
+ * TODO Clarify 'Read more'
548
+ * TODO Remove - CSV Export
549
+ * TODO Updates
550
+ * Update POT file
551
+
552
+ = 2.2.9 =
553
+ * BUGFIX [Testimonial List Loading 2nd Blank Box](http://wordpress.org/support/topic/testimonial-list-loading-2nd-blank-box)
554
+
555
+ = 2.2.8 =
556
+ * Begin "Read more…" preparations
557
+ * Correct content display processing
558
+ * FAQ 32 Min-height usage
559
+ * FAQ 4 Custom code placement clarification
560
+ * TODO Updates
561
+ * Widgets display content sans `wpautop` formatting
562
+
563
+ = 2.2.7 =
564
+ * Catch widget number in cache
565
+ * FAQ Custom query code. Thank you [tcwebguru](http://wordpress.org/support/topic/display-on-page-without-widget)
566
+ * FAQ Change Testimonials Widget text labels
567
+ * Language verbiage correction
568
+ * PHP notice fix - esc_attr
569
+ * Remove premium code include
570
+
571
+ = 2.2.6 =
572
+ * BUGFIX Widget config not saving correctly
573
+ * FAQ Export/import
574
+ * TODO Updates
575
+
576
+ = 2.2.5 =
577
+ * Adapt for [Testimonials Widget Premium plugin](http://aihr.us/testimonials-widget-premium/)
578
+ * Add support text
579
+ * Correct verbiage spacing
580
+ * Explain `limit`
581
+ * TODO revisions
582
+
583
+ = 2.2.4 =
584
+ * BUGFIX [Tags - no more than 2?](http://wordpress.org/support/topic/tags-no-more-than-2)
585
+ * Clean up PHP notices
586
+ * Fix Changelog link
587
+ * PREMIUM Implement testimonials query and content caching
588
+ * TODO update
589
+
590
+ = 2.2.3 =
591
+ * Begin premium plugin adaptions
592
+ * BUGFIX [Tags - no more than 2?](http://wordpress.org/support/topic/tags-no-more-than-2)
593
+ * BUGFIX [Updated - Now getting fatal error when using testimonialswidget_list()](http://wordpress.org/support/topic/updated-now-getting-fatal-error-when-using-testimonialswidget_list)
594
+ * Clean up links in readme.txt
595
+ * Correct company and URL link usage
596
+ * [Correct readme.txt to standard](http://wordpress.org/extend/plugins/about/readme.txt)
597
+ * Don't rotate testimonial if only 1
598
+ * TODO updates
599
+
600
+ = 2.2.2 =
601
+ * BUGFIX [Now getting fatal error when using testimonialswidget_list()](http://wordpress.org/support/topic/updated-now-getting-fatal-error-when-using-testimonialswidget_list)
602
+ * Theme function defaults
603
+ * TODO updates
604
+ * URL pointing update
605
+
606
+ = 2.2.1 =
607
+ * Number FAQ Entries
608
+ * Revise Installation Usage text
609
+ * Revise Shortcode and Widget Options text
610
+
611
+ = 2.2.0 =
612
+ * FAQ `testimonialswidget_widget()` example
613
+ * Multisite compatible
614
+ * Reversion as 2.1.10 was a minor release than only bug fixes
615
+
616
+ = 2.1.10 =
617
+ * [Add title field ](http://wordpress.org/support/topic/plugin-testimonials-widget-just-tried-216-thoughts-suggestions)
618
+ * Consolidate defaults to simplify code maintenance
619
+ * Correct CSS testimonial list spacing
620
+ * Debug true - clear out PHP notices and such
621
+ * Default minimum height removed for widgets, now optional
622
+ * Maximum height setting
623
+ * [Remove CSS `position` attributes `.testimonialswidget_testimonial { position: absolute; }`](http://wordpress.org/support/topic/testimonials-widget-not-showing-correctly-on-sub-pages)
624
+ * TODO cleanup
625
+ * Update language POT
626
+ * Update screenshots
627
+ * Update WPML
628
+ * Widget options dropdown for ORDER BY entries
629
+
630
+ = 2.1.9 =
631
+ * Allow min_height 0
632
+ * FAQ - How do I use the theme function `testimonialswidget_list()`?
633
+ * Move CSS include to header
634
+
635
+ = 2.1.8 =
636
+ * Remove testimonialswidget_widget char_limit default
637
+ * TODO - debug true
638
+
639
+ = 2.1.7 =
640
+ * [0 disables char_limit](http://wordpress.org/support/topic/plugin-testimonials-widget-more-than-one-testimonial-appears-overlaps-content-below-the-widget)
641
+ * [Set link target](http://wordpress.org/support/topic/plugin-testimonials-widget-just-tried-216-thoughts-suggestions)
642
+ * Update widget option top screenshot
643
+
644
+ = 2.1.6 =
645
+ * FAQ: `ORDER BY` explanation
646
+ * FAQ: `testimonial_extra` explanation
647
+ * [Moved CSS to footer](http://wordpress.org/support/topic/plugin-testimonials-widget-html-validation)
648
+ * Next testimonial link idea
649
+ * Option: Add `hide_not_found` to prevent showing "No testimonials found"
650
+ * Revise theme methods as functions
651
+ * Screenshot: Update upper widget options
652
+ * Staged widget testimonials are initially `display: none` via CSS `.testimonialswidget_display_none`
653
+ * TODO updates
654
+ * Verbiage: Refresh Interval to Rotation Speed
655
+ * Widget option explanations
656
+
657
+ = 2.1.5 =
658
+ * Always apply min-height
659
+
660
+ = 2.1.4 =
661
+ * Enable WPML
662
+ * Idea - Maximum height setting
663
+ * Revise description
664
+ * Revise TODO
665
+
666
+ = 2.1.3 =
667
+ * Allow commas in meta_key
668
+ * FAQ on page not found
669
+ * Fix widget Random order always true condition
670
+ * Increase bottom margin spacing for listed testimonials
671
+ * TODO vote casting note
672
+ * Update localization pot file
673
+
674
+ = 2.1.2 =
675
+ * Add `hide_gravatar` option
676
+ * Add apply_filters( 'testimonials_widget_data', $testimonial_data ) to process data before display
677
+ * Add right margin to gravatar image
678
+ * Added empty testimonial data field `testimonial_extra` for customization in testimonials
679
+ * Allow widget and shortcode sorting by post meta values via `meta_key`
680
+ * Correct PHP static accessors
681
+ * Update FAQ
682
+ * Update widget options screenshots
683
+ * Working full testimonial URLs
684
+
685
+ = 2.1.1 =
686
+ * Add [[testimonialswidget_list]] paging screenshot
687
+
688
+ = 2.1.0 =
689
+ * Enable paging for [[testimonialswidget_list]] shortcode
690
+ * Flush rewrite rules on activation
691
+ * Disallow paging in widget and [[testimonialswidget_widget]] shortcode
692
+
693
+ = 2.0.6 =
694
+ * Update shortcode option directions
695
+
696
+ = 2.0.5 =
697
+ * Ignore already imported
698
+ * Mark `testimonialswidget_widget() $number` argument as optional
699
+
700
+ = 2.0.4 =
701
+ * Allow for 0 refresh_interval in get_testimonials_html
702
+
703
+ = 2.0.3 =
704
+ * Allow for 0 refresh_interval in widget
705
+
706
+ = 2.0.2 =
707
+ * BUGFIX [Warning: call_user_func_array() ??](http://wordpress.org/support/topic/plugin-testimonials-widget-warning-call_user_func_array)
708
+ * Added Testimonials_Widget_Widget::get_testimonials_scripts for use with add_filter for wp_footer
709
+
710
+ = 2.0.1 =
711
+ * Verbiage updates
712
+ * Readme.txt validation
713
+ * widget q p tag display inline
714
+ * GPL2 licensing
715
+ * Move upgrade notice text towards installation
716
+ * Reorder screenshots
717
+ * Apply 'the_content' filters directly to prevent plugin baggage
718
+ * Update screenshot-7.png
719
+
720
+ = 2.0.0 =
721
+ * Major rewrite
722
+ * Add filters for image & gravatar sizes
723
+ * Admin bar New > Testimonial
724
+ * Authors and lower can manage their own testimonials
725
+ * Auto-migration from old to new format upon install
726
+ * Public > Published
727
+ * Not public > Private
728
+ * Categories - product, project, service
729
+ * Clean up verbiage
730
+ * Cleaner widget class
731
+ * Custom columns list view
732
+ * Image
733
+ * Source
734
+ * Shortcode
735
+ * Email
736
+ * Company
737
+ * URL
738
+ * Published by
739
+ * Category
740
+ * Tags
741
+ * Date
742
+ * Custom fields metabox
743
+ * Email
744
+ * Company
745
+ * URL
746
+ * Custom post-type
747
+ * Default fields - source, email, company, URL
748
+ * Editors and higher can manage all testimonials and edit testimonial publisher
749
+ * Enable categories and tags
750
+ * Enable full shortcode options in widget
751
+ * Gravatar
752
+ * HTML content allowed
753
+ * Images
754
+ * JavaScript in footer
755
+ * Localization
756
+ * Reference shortcode column
757
+ * Reorganize widget options panel
758
+ * Rotation JavaScript in footer than body
759
+ * Shortcode options validation
760
+ * WP_Query for get_testimonials()
761
+ * Widget image on own line
762
+ * Widget options
763
+ * Title
764
+ * Category filter
765
+ * Tags filter
766
+ * Require all tags
767
+ * Advanced options
768
+ * Hide image?
769
+ * Hide source?
770
+ * Hide email?
771
+ * Hide company?
772
+ * Hide URL?
773
+ * Character limit
774
+ * IDs filter
775
+ * Limit
776
+ * Maximum Height
777
+ * Minimum Height
778
+ * ORDER BY
779
+ * ORDER BY Order
780
+ * Random order
781
+ * Rotation Speed
782
+ * Move caching to ideas
783
+ * Add theme function `testimonialswidget_widget()` doc
784
+ * Update POT
785
+ * [[testimonialswidget_widget]] shortcode
786
+ * Match [[testimonialswidget_widget]] shortcode option defaults to widget
787
+ * Update screenshots
788
+ * Readd Minimum Height - need help getting around this
789
+
790
+ = 0.2.13 =
791
+ * Clean up CSS
792
+ * Remove q & cite p wrapper
793
+
794
+ = 0.2.12 =
795
+ * the_title filter fix
796
+
797
+ = 0.2.11 =
798
+ * Enable character limit for shortcode
799
+
800
+ = 0.2.10 =
801
+ * Character limit nows forces text truncation than preventing of testimonial to show
802
+ * Add option - Limit number of testimonials to pull at a time
803
+ * Sanitize widget variables
804
+ * Fix random_order issue on testimonials widget
805
+
806
+ = 0.2.9 =
807
+ * Require Editor role for managing Testimonials
808
+
809
+ = 0.2.8 =
810
+ * CSS testimonialswidget_testimonial_list fix #2
811
+
812
+ = 0.2.7 =
813
+ * CSS testimonialswidget_testimonial_list fix
814
+
815
+ = 0.2.6 =
816
+ * CSS updates for widgets and lists
817
+
818
+ = 0.2.5 =
819
+ * Add span.testimonialswidget_join for author , join text
820
+ * Add nl2br for testimonials display on a page
821
+
822
+ = 0.2.4 =
823
+ * Shortcode added - Thank you Hal Gatewood
824
+
825
+ = 0.2.3 =
826
+ * Allow testimonials to have multiple tags
827
+ * Show only quotes with all tags
828
+
829
+ = 0.2.2 =
830
+ * Show newest testimonials first in admin list by default
831
+ * Quick locallization
832
+ * Quotes Collection recommendation
833
+
834
+ = 2011-10-03: Version 0.2 =
835
+ * Multi-widget enabled
836
+ * Testimonial, author & source text are clickable automatically
837
+ * Allow 0 refresh to make widget static
838
+ * Allow pressing return when editing testimonial to save record
839
+
840
+ = 2011-08-12: Version 0.1 =
841
+ * initial release
languages/testimonials-widget-nl_NL.mo ADDED
Binary file
languages/testimonials-widget-nl_NL.po ADDED
@@ -0,0 +1,631 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2013 Testimonials Widget
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.9.0\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/testimonials-widget\n"
7
+ "POT-Creation-Date: 2013-03-13 13:55:03+00:00\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2013-03-16 16:22+0100\n"
12
+ "Last-Translator: \n"
13
+ "Language-Team: \n"
14
+ "X-Generator: Poedit 1.5.5\n"
15
+ "Language: Dutch/Nederlands\n"
16
+
17
+ #: lib/settings.testimonials-widget.php:38
18
+ msgid "General"
19
+ msgstr "Algemeen"
20
+
21
+ #: lib/settings.testimonials-widget.php:39
22
+ msgid "Selection"
23
+ msgstr "Selectie"
24
+
25
+ #: lib/settings.testimonials-widget.php:40
26
+ msgid "Ordering"
27
+ msgstr "Volgorde"
28
+
29
+ #: lib/settings.testimonials-widget.php:41
30
+ msgid "Widget"
31
+ msgstr "Widget"
32
+
33
+ #: lib/settings.testimonials-widget.php:43
34
+ msgid "Post Type"
35
+ msgstr "Post Type"
36
+
37
+ #: lib/settings.testimonials-widget.php:44
38
+ msgid "Reset"
39
+ msgstr "Herstellen"
40
+
41
+ #: lib/settings.testimonials-widget.php:45
42
+ msgid "About Testimonials Widget"
43
+ msgstr "Over Testimonials Widget"
44
+
45
+ #: lib/settings.testimonials-widget.php:55
46
+ msgid "Widget Title"
47
+ msgstr "Widget Titel"
48
+
49
+ #: lib/settings.testimonials-widget.php:56 testimonials-widget.php:354
50
+ #: testimonials-widget.php:382
51
+ msgid "Testimonials"
52
+ msgstr "Testimonials"
53
+
54
+ #: lib/settings.testimonials-widget.php:61
55
+ msgid "Title Link"
56
+ msgstr "Titel Link"
57
+
58
+ #: lib/settings.testimonials-widget.php:62
59
+ msgid "URL or Post ID to link widget title to. Ex: 123 or http://example.com"
60
+ msgstr ""
61
+ "URL of Post ID om de widget titel naar te linken. Vb.: 123 of http://"
62
+ "voorbeeld.com"
63
+
64
+ #: lib/settings.testimonials-widget.php:67
65
+ msgid "Keep Whitespace?"
66
+ msgstr "Witruimte behouden?"
67
+
68
+ #: lib/settings.testimonials-widget.php:68
69
+ msgid "Keeps testimonials looking as entered than sans auto-formatting"
70
+ msgstr "Behoud testimonials zoals ingegeven ipv auto-opmaak"
71
+
72
+ #: lib/settings.testimonials-widget.php:74
73
+ msgid "Minimum Height"
74
+ msgstr "Minimum Hoogte"
75
+
76
+ #: lib/settings.testimonials-widget.php:75
77
+ msgid "Set for minimum display height, in pixels"
78
+ msgstr "Geef de minimum weer te geven hoogte, in pixels"
79
+
80
+ #: lib/settings.testimonials-widget.php:80
81
+ msgid "Maximum Height"
82
+ msgstr "Maximum Hoogte"
83
+
84
+ #: lib/settings.testimonials-widget.php:81
85
+ msgid "Set for maximum display height, in pixels"
86
+ msgstr "Geef de maximum weer te geven hoogte, in pixels"
87
+
88
+ #: lib/settings.testimonials-widget.php:86
89
+ msgid "Rotation Speed"
90
+ msgstr "Rotatiesnelheid"
91
+
92
+ #: lib/settings.testimonials-widget.php:87
93
+ msgid ""
94
+ "Number of seconds between testimonial rotations or 0 for no rotation at all "
95
+ "refresh"
96
+ msgstr "Aantal seconden tussen testimonial rotaties of 0 voor geen rotatie"
97
+
98
+ #: lib/settings.testimonials-widget.php:93
99
+ msgid "General Options"
100
+ msgstr "Algemene Opties"
101
+
102
+ #: lib/settings.testimonials-widget.php:98
103
+ msgid "Character Limit"
104
+ msgstr "Teken limiet"
105
+
106
+ #: lib/settings.testimonials-widget.php:99
107
+ msgid "Number of characters to limit non-single testimonial views to"
108
+ msgstr "Aantal karakters om enkelvoudige testimonials tot te beperken"
109
+
110
+ #: lib/settings.testimonials-widget.php:103
111
+ msgid "Hide \"Testimonials Not Found\"?"
112
+ msgstr "Verberg \"Testimonials Niet gevonden\"?"
113
+
114
+ #: lib/settings.testimonials-widget.php:108
115
+ msgid "Hide Gravatar Image?"
116
+ msgstr "Verberg Gravatar afbeelding?"
117
+
118
+ #: lib/settings.testimonials-widget.php:113
119
+ msgid "Hide Image?"
120
+ msgstr "Verberg Afbeelding?"
121
+
122
+ #: lib/settings.testimonials-widget.php:118
123
+ msgid "Hide Testimonial Content?"
124
+ msgstr "Verberg Testimonial inhoud?"
125
+
126
+ #: lib/settings.testimonials-widget.php:123
127
+ msgid "Hide Author/Source?"
128
+ msgstr "Verberg Auteur/Bron?"
129
+
130
+ #: lib/settings.testimonials-widget.php:125
131
+ msgid "Don't display \"Post Title\" in cite"
132
+ msgstr "Verberg \"Post Titel\" in citaat"
133
+
134
+ #: lib/settings.testimonials-widget.php:129
135
+ msgid "Hide Email?"
136
+ msgstr "Verberg Email?"
137
+
138
+ #: lib/settings.testimonials-widget.php:135
139
+ msgid "Hide Title?"
140
+ msgstr "Verberg Titel?"
141
+
142
+ #: lib/settings.testimonials-widget.php:140
143
+ msgid "Hide Location?"
144
+ msgstr "Verberg Locatie?"
145
+
146
+ #: lib/settings.testimonials-widget.php:145
147
+ msgid "Hide Company?"
148
+ msgstr "Verberg Bedrijf?"
149
+
150
+ #: lib/settings.testimonials-widget.php:150
151
+ msgid "Hide URL?"
152
+ msgstr "Verberg URL?"
153
+
154
+ #: lib/settings.testimonials-widget.php:155
155
+ msgid "URL Target"
156
+ msgstr "URL doel"
157
+
158
+ #: lib/settings.testimonials-widget.php:156
159
+ msgid "Adds target to all URLs; leave blank if none"
160
+ msgstr "Voeg doel aan alle URLs toe; Laat leeg voor geen toe te voegen"
161
+
162
+ #: lib/settings.testimonials-widget.php:160
163
+ msgid "Testimonial Bottom Text"
164
+ msgstr "Testimonial Bottom Text"
165
+
166
+ #: lib/settings.testimonials-widget.php:161
167
+ msgid "Custom text or HTML for bottom of testimonials"
168
+ msgstr "Aangepaste text of HTML for onder de testimonials"
169
+
170
+ #: lib/settings.testimonials-widget.php:166
171
+ msgid "Enable Paging?"
172
+ msgstr "Activeer Pagina nummering?"
173
+
174
+ #: lib/settings.testimonials-widget.php:167
175
+ msgid "For `[testimonialswidget_list]`"
176
+ msgstr "Voor `[testimonialswidget_list]`"
177
+
178
+ #: lib/settings.testimonials-widget.php:170
179
+ msgid "Disable"
180
+ msgstr "Uitschakelen"
181
+
182
+ #: lib/settings.testimonials-widget.php:171
183
+ msgid "Enable"
184
+ msgstr "Inschakelen"
185
+
186
+ #: lib/settings.testimonials-widget.php:172
187
+ msgid "Before testimonials"
188
+ msgstr "Voor testimonials"
189
+
190
+ #: lib/settings.testimonials-widget.php:173
191
+ msgid "After testimonials"
192
+ msgstr "Na testimonials"
193
+
194
+ #: lib/settings.testimonials-widget.php:179
195
+ msgid "Remove `.hentry` CSS?"
196
+ msgstr "Verwijder '.hentry' CSS?"
197
+
198
+ #: lib/settings.testimonials-widget.php:180
199
+ msgid ""
200
+ "Some themes use class `.hentry` in a manner that breaks Testimonials Widgets "
201
+ "CSS"
202
+ msgstr ""
203
+ "Sommige thema's gebruiken class '.hentry' dat de functies van Testimonials "
204
+ "Widgets CSS schaadt."
205
+
206
+ #: lib/settings.testimonials-widget.php:191
207
+ msgid "Selection Options"
208
+ msgstr "Selectie Opties"
209
+
210
+ #: lib/settings.testimonials-widget.php:197
211
+ msgid "Category Filter"
212
+ msgstr "Categorie Filter"
213
+
214
+ #: lib/settings.testimonials-widget.php:198
215
+ msgid "Comma separated category slug-names. Ex: category-a, another-category"
216
+ msgstr ""
217
+ "Komma gescheiden categorie slug-namen. Vb.: categorie-a, andere-categorie"
218
+
219
+ #: lib/settings.testimonials-widget.php:203
220
+ msgid "Tags Filter"
221
+ msgstr "Tags Filter"
222
+
223
+ #: lib/settings.testimonials-widget.php:204
224
+ msgid "Comma separated tag slug-names. Ex: tag-a, another-tag"
225
+ msgstr "Komma gescheiden tag slug-namen. Vb.: tag-a, andere-tag"
226
+
227
+ #: lib/settings.testimonials-widget.php:209
228
+ msgid "Require All Tags?"
229
+ msgstr "Vereist alle tags?"
230
+
231
+ #: lib/settings.testimonials-widget.php:210
232
+ msgid "Select only testimonials with all of the given tags"
233
+ msgstr "Selecteer alleen testimonials met alle opgegeven tags"
234
+
235
+ #: lib/settings.testimonials-widget.php:216
236
+ msgid "Include IDs Filter"
237
+ msgstr "Ingesloten IDs filter"
238
+
239
+ #: lib/settings.testimonials-widget.php:217
240
+ #: lib/settings.testimonials-widget.php:223
241
+ msgid "Comma separated testimonial IDs. Ex: 3,1,2"
242
+ msgstr "Komma gescheiden testimonial IDs. Vb.: 3,1,2"
243
+
244
+ #: lib/settings.testimonials-widget.php:222
245
+ msgid "Exclude IDs Filter"
246
+ msgstr "Uitgesloten IDs filter"
247
+
248
+ #: lib/settings.testimonials-widget.php:228
249
+ msgid "Limit"
250
+ msgstr "Limiet"
251
+
252
+ #: lib/settings.testimonials-widget.php:229
253
+ msgid "Number of testimonials to select per instance"
254
+ msgstr "Aantal testimonials om te selecteren per exemplaar"
255
+
256
+ #: lib/settings.testimonials-widget.php:241
257
+ msgid "Ordering Options"
258
+ msgstr "Volgorde Opties"
259
+
260
+ #: lib/settings.testimonials-widget.php:247
261
+ msgid "Random Order?"
262
+ msgstr "Willekeurige Volgorde?"
263
+
264
+ #: lib/settings.testimonials-widget.php:248
265
+ msgid ""
266
+ "If checked, ignores ORDER BY, ORDER BY meta_key, and ORDER BY Order. Widgets "
267
+ "are random by default automatically"
268
+ msgstr ""
269
+ "Wanneer aangevinkt, negeer ORDER BY, ORDER BY meta_key, and ORDER BY Order. "
270
+ "Widgets worden automatisch willekeurig ingesteld"
271
+
272
+ #: lib/settings.testimonials-widget.php:254
273
+ msgid "ORDER BY"
274
+ msgstr "ORDER BY"
275
+
276
+ #: lib/settings.testimonials-widget.php:255
277
+ msgid "Used when \"Random Order\" is disabled"
278
+ msgstr "Gebruikt wanneer \"Willekeurige Volgorde\" is uitgeschakeld"
279
+
280
+ #: lib/settings.testimonials-widget.php:258
281
+ msgid "Testimonial ID"
282
+ msgstr "Testimonial ID"
283
+
284
+ #: lib/settings.testimonials-widget.php:259
285
+ msgid "Author"
286
+ msgstr "Auteur"
287
+
288
+ #: lib/settings.testimonials-widget.php:260 testimonials-widget.php:330
289
+ msgid "Source"
290
+ msgstr "Bron"
291
+
292
+ #: lib/settings.testimonials-widget.php:261 testimonials-widget.php:340
293
+ msgid "Date"
294
+ msgstr "Datum"
295
+
296
+ #: lib/settings.testimonials-widget.php:262
297
+ msgid "No order"
298
+ msgstr "Geen volgorde"
299
+
300
+ #: lib/settings.testimonials-widget.php:269
301
+ msgid "ORDER BY meta_key"
302
+ msgstr "ORDER BY meta_key"
303
+
304
+ #: lib/settings.testimonials-widget.php:270
305
+ msgid ""
306
+ "Used when \"Random Order\" is disabled and sorting by a testimonials meta "
307
+ "key is needed. Overrides ORDER BY"
308
+ msgstr ""
309
+ "Gebruikt wanneer \"Willekeurige Volgorde\" uitgeschakeld is en de volgorde "
310
+ "bepaald moet worden door meta key. Overheerst ORDER BY"
311
+
312
+ #: lib/settings.testimonials-widget.php:273
313
+ msgid "None"
314
+ msgstr "Geen"
315
+
316
+ #: lib/settings.testimonials-widget.php:274 testimonials-widget.php:332
317
+ #: testimonials-widget.php:1224
318
+ msgid "Title"
319
+ msgstr "Titel"
320
+
321
+ #: lib/settings.testimonials-widget.php:275 testimonials-widget.php:334
322
+ #: testimonials-widget.php:1236
323
+ msgid "Email"
324
+ msgstr "Email"
325
+
326
+ #: lib/settings.testimonials-widget.php:276 testimonials-widget.php:335
327
+ #: testimonials-widget.php:1242
328
+ msgid "Company"
329
+ msgstr "Bedrijf"
330
+
331
+ #: lib/settings.testimonials-widget.php:277 testimonials-widget.php:336
332
+ #: testimonials-widget.php:1248
333
+ msgid "URL"
334
+ msgstr "URL"
335
+
336
+ #: lib/settings.testimonials-widget.php:283
337
+ msgid "ORDER BY Order"
338
+ msgstr "ORDER BY Order"
339
+
340
+ #: lib/settings.testimonials-widget.php:286
341
+ msgid "Descending"
342
+ msgstr "Aflopend"
343
+
344
+ #: lib/settings.testimonials-widget.php:287
345
+ msgid "Ascending"
346
+ msgstr "Oplopend"
347
+
348
+ #: lib/settings.testimonials-widget.php:300
349
+ msgid "Debug Mode?"
350
+ msgstr "Foutopsporingsmodus?"
351
+
352
+ #: lib/settings.testimonials-widget.php:301
353
+ msgid "Not implemented yet"
354
+ msgstr "Nog niet geïmplementeerd"
355
+
356
+ #: lib/settings.testimonials-widget.php:308
357
+ msgid "Allow Comments?"
358
+ msgstr "Commentaren toestaan?"
359
+
360
+ #: lib/settings.testimonials-widget.php:309
361
+ msgid "If checked, allows commenting on testimonial single-view pages"
362
+ msgstr ""
363
+ "Wanneer aangevinkt, staat commentaren toe op enkelvoudig testimonial pagina's"
364
+
365
+ #: lib/settings.testimonials-widget.php:313
366
+ msgid ""
367
+ "URL slug-name for <a href=\"%1s\">testimonials archive</a> page. After "
368
+ "changing, you must click \"Save Changes\" on <a href=\"%2s\">Permalink "
369
+ "Settings</a> to update them."
370
+ msgstr ""
371
+ "URL slug-naam voor <a href=\"%1s\">testimonials archief</a> pagina. Na "
372
+ "wijzigingen, klik op \"Wijzigingen opslaan\" om <a href=\"%2s\">Permalink "
373
+ "instellingen</a> bij te werken."
374
+
375
+ #: lib/settings.testimonials-widget.php:319
376
+ msgid "Archive Page URL"
377
+ msgstr "Archief pagina URL"
378
+
379
+ #: lib/settings.testimonials-widget.php:324
380
+ msgid ""
381
+ "URL slug-name for testimonial view pages. After changing, you must click "
382
+ "\"Save Changes\" on <a href=\"%1s\">Permalink Settings</a> to update them."
383
+ msgstr ""
384
+ "URL slug-naam voor testimonial pagina's. Na wijzigingen, klik \"Wijzigingen "
385
+ "opslaan\" op <a href=\"%1s\">Permalink instellingen</a> om deze bij te "
386
+ "werken."
387
+
388
+ #: lib/settings.testimonials-widget.php:327
389
+ msgid "Testimonial Page URL"
390
+ msgstr "Testimonial Pagina URL"
391
+
392
+ #: lib/settings.testimonials-widget.php:335
393
+ msgid "Reset to Defaults?"
394
+ msgstr "Herstellen naar standaard?"
395
+
396
+ #: lib/settings.testimonials-widget.php:338
397
+ msgid "Check this box to reset options to their defaults"
398
+ msgstr "Vink aan om de opties te herstellen naar standaard opties"
399
+
400
+ #: lib/settings.testimonials-widget.php:344
401
+ msgid "Example Text Input"
402
+ msgstr "Voorbeeld tekst invoer"
403
+
404
+ #: lib/settings.testimonials-widget.php:345
405
+ msgid "This is a description for the text input."
406
+ msgstr "Dit is een beschrijving voor tekst invoer."
407
+
408
+ #: lib/settings.testimonials-widget.php:350
409
+ msgid "Example Textarea Input"
410
+ msgstr "Voorbeeld tekstveld"
411
+
412
+ #: lib/settings.testimonials-widget.php:351
413
+ msgid "This is a description for the textarea input."
414
+ msgstr "Dit is een beschrijving voor het tekstveld."
415
+
416
+ #: lib/settings.testimonials-widget.php:357
417
+ msgid "Example Checkbox"
418
+ msgstr "Voorbeeld keuzevakje"
419
+
420
+ #: lib/settings.testimonials-widget.php:358
421
+ msgid "This is a description for the checkbox."
422
+ msgstr "Dit is een beschrijving voor het keuzevakje."
423
+
424
+ #: lib/settings.testimonials-widget.php:370
425
+ msgid "Example Radio"
426
+ msgstr "Voorbeeld keuzerondje"
427
+
428
+ #: lib/settings.testimonials-widget.php:371
429
+ msgid "This is a description for the radio buttons."
430
+ msgstr "Dit is een beschrijving voor het keuzerondje."
431
+
432
+ #: lib/settings.testimonials-widget.php:381
433
+ msgid "Example Select"
434
+ msgstr "Voorbeeld selectie"
435
+
436
+ #: lib/settings.testimonials-widget.php:382
437
+ msgid "This is a description for the drop-down."
438
+ msgstr "Dit is een beschrijving voor de selectie."
439
+
440
+ #: lib/settings.testimonials-widget.php:433
441
+ #: lib/settings.testimonials-widget.php:465
442
+ msgid "Testimonials Widget Settings"
443
+ msgstr "Testimonials Widget Settings"
444
+
445
+ #: lib/settings.testimonials-widget.php:433 testimonials-widget.php:90
446
+ msgid "Settings"
447
+ msgstr "Instellingen"
448
+
449
+ #: lib/settings.testimonials-widget.php:484
450
+ msgid "Save Changes"
451
+ msgstr "Wijzigingen Opslaan"
452
+
453
+ #: lib/settings.testimonials-widget.php:495
454
+ msgid "Copyright &copy;%1$s %2$s."
455
+ msgstr "Copyright &copy;%1$s %2$s."
456
+
457
+ #: lib/testimonials-widget-widget.php:8
458
+ msgid "Display testimonials with multiple selection and display options"
459
+ msgstr "Geef testimonials weer met meerdere selectie en weergave mogelijkheden"
460
+
461
+ #. #-#-#-#-# testimonials-widget.pot (Testimonials Widget 2.9.0) #-#-#-#-#
462
+ #. Plugin Name of the plugin/theme
463
+ #: lib/testimonials-widget-widget.php:19
464
+ msgid "Testimonials Widget"
465
+ msgstr "Testimonials Widget"
466
+
467
+ #: lib/testimonials-widget-widget.php:138
468
+ msgid "CSS Class"
469
+ msgstr "CSS Class"
470
+
471
+ #: lib/testimonials-widget-widget.php:139
472
+ msgid "This widget's unique CSS class for styling"
473
+ msgstr "Deze widget uniele CSS class voor stijlopmaak"
474
+
475
+ #: lib/testimonials-widget-widget.php:177
476
+ msgid "Expand/Collapse"
477
+ msgstr "Uitvouwen/Samenvouwen"
478
+
479
+ #: testimonials-widget.php:329
480
+ msgid "Image"
481
+ msgstr "Afbeelding"
482
+
483
+ #: testimonials-widget.php:331
484
+ msgid "Shortcodes"
485
+ msgstr "Shortcodes"
486
+
487
+ #: testimonials-widget.php:333 testimonials-widget.php:1230
488
+ msgid "Location"
489
+ msgstr "Locatie"
490
+
491
+ #: testimonials-widget.php:337
492
+ msgid "Published by"
493
+ msgstr "Gepubliceerd door"
494
+
495
+ #: testimonials-widget.php:338
496
+ msgid "Category"
497
+ msgstr "Categorie"
498
+
499
+ #: testimonials-widget.php:339
500
+ msgid "Tags"
501
+ msgstr "Tags"
502
+
503
+ #: testimonials-widget.php:351
504
+ msgid "Add New"
505
+ msgstr "Nieuw Toevoegen"
506
+
507
+ #: testimonials-widget.php:352 testimonials-widget.php:355
508
+ msgid "Add New Testimonial"
509
+ msgstr "Nieuwe testimonial toevoegen"
510
+
511
+ #: testimonials-widget.php:353
512
+ msgid "Edit Testimonial"
513
+ msgstr "Testimonial bewerken"
514
+
515
+ #: testimonials-widget.php:356 testimonials-widget.php:617
516
+ msgid "No testimonials found"
517
+ msgstr "Geen testimonials gevonden"
518
+
519
+ #: testimonials-widget.php:357
520
+ msgid "No testimonials found in Trash"
521
+ msgstr "Geen testimonials gevonden in prullenbak"
522
+
523
+ #: testimonials-widget.php:359
524
+ msgid "Search Testimonials"
525
+ msgstr "Zoek testimonials"
526
+
527
+ #: testimonials-widget.php:360
528
+ msgid "Testimonial"
529
+ msgstr "Testimonial"
530
+
531
+ #: testimonials-widget.php:361
532
+ msgid "View Testimonial"
533
+ msgstr "Bekijk testimonial"
534
+
535
+ #: testimonials-widget.php:650
536
+ msgid "…"
537
+ msgstr "..."
538
+
539
+ #: testimonials-widget.php:996
540
+ msgid "&laquo;"
541
+ msgstr "&laquo;"
542
+
543
+ #: testimonials-widget.php:1005
544
+ msgid "&raquo;"
545
+ msgstr "&raquo;"
546
+
547
+ #: testimonials-widget.php:1260
548
+ msgid "Testimonial Data"
549
+ msgstr "Testimonial Data"
550
+
551
+ #: testimonials-widget.php:1285
552
+ msgid "Enter title here"
553
+ msgstr "Geef titel op"
554
+
555
+ #: testimonials-widget.php:1286
556
+ msgid "Enter testimonial source here"
557
+ msgstr "Geef testimonial bron op"
558
+
559
+ #: testimonials-widget.php:1310
560
+ msgid "Testimonial updated. <a href=\"%s\">View testimonial</a>"
561
+ msgstr "Testimonial bijgewerkt. <a href=\"%s\">Bekijk testimonial</a>"
562
+
563
+ #: testimonials-widget.php:1311
564
+ msgid "Custom field updated."
565
+ msgstr "Aangepast veld bijgewerkt."
566
+
567
+ #: testimonials-widget.php:1312
568
+ msgid "Custom field deleted."
569
+ msgstr "Aangepast veld verwijderd."
570
+
571
+ #: testimonials-widget.php:1313
572
+ msgid "Testimonial updated."
573
+ msgstr "Testimonial bijgewerkt."
574
+
575
+ #. translators: %s: date and time of the revision
576
+ #: testimonials-widget.php:1315
577
+ msgid "Testimonial restored to revision from %s"
578
+ msgstr "Testimonial herstelt naar revisie van %s"
579
+
580
+ #: testimonials-widget.php:1316
581
+ msgid "Testimonial published. <a href=\"%s\">View testimonial</a>"
582
+ msgstr "Testimonial gepubliceerd. <a href=\"%s\">Bekijk testimonial</a>"
583
+
584
+ #: testimonials-widget.php:1317
585
+ msgid "Testimonial saved."
586
+ msgstr "Testimonial opgeslaan."
587
+
588
+ #: testimonials-widget.php:1318
589
+ msgid ""
590
+ "Testimonial submitted. <a target=\"_blank\" href=\"%s\">Preview testimonial</"
591
+ "a>"
592
+ msgstr ""
593
+ "Testimonial toegevoegd. <a target=\"_blank\" href=\"%s\">Bekijk voorbeeld "
594
+ "testimonial</a>"
595
+
596
+ #: testimonials-widget.php:1319
597
+ msgid ""
598
+ "Testimonial scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href="
599
+ "\"%2$s\">Preview testimonial</a>"
600
+ msgstr ""
601
+ "Testimonial gepland voor: <strong>%1$s</strong>. <a target=\"_blank\" href="
602
+ "\"%2$s\">Bekijk voorbeeld testimonial</a>"
603
+
604
+ #: testimonials-widget.php:1320
605
+ msgid ""
606
+ "Testimonial draft updated. <a target=\"_blank\" href=\"%s\">Preview "
607
+ "testimonial</a>"
608
+ msgstr ""
609
+ "Testimonial concept bijgewerkt. <a target=\"_blank\" href=\"%s\">Bekijk "
610
+ "voorbeeld</a>"
611
+
612
+ #. Plugin URI of the plugin/theme
613
+ msgid "http://wordpress.org/extend/plugins/testimonials-widget/"
614
+ msgstr "http://wordpress.org/extend/plugins/testimonials-widget/"
615
+
616
+ #. Description of the plugin/theme
617
+ msgid ""
618
+ "Testimonials Widget plugin allows you to display random or rotating "
619
+ "portfolio, quotes, reviews, showcases, or text with images on your WordPress "
620
+ "blog."
621
+ msgstr ""
622
+ "Testimonials Widget plugin laat je toe om willekeurig of roterend portfolio, "
623
+ "quotes, recensies, showcases, of tekst met afbeeldingen op uw WordPress blog."
624
+
625
+ #. Author of the plugin/theme
626
+ msgid "Michael Cannon"
627
+ msgstr "Michael Cannon"
628
+
629
+ #. Author URI of the plugin/theme
630
+ msgid "http://aihr.us/about-aihrus/michael-cannon-resume/"
631
+ msgstr "http://aihr.us/about-aihrus/michael-cannon-resume/"
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.9.0\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/testimonials-widget\n"
7
- "POT-Creation-Date: 2013-03-13 13:55:03+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,574 +12,625 @@ msgstr ""
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
- #: lib/settings.testimonials-widget.php:38
16
  msgid "General"
17
  msgstr ""
18
 
19
- #: lib/settings.testimonials-widget.php:39
20
  msgid "Selection"
21
  msgstr ""
22
 
23
- #: lib/settings.testimonials-widget.php:40
24
  msgid "Ordering"
25
  msgstr ""
26
 
27
- #: lib/settings.testimonials-widget.php:41
28
  msgid "Widget"
29
  msgstr ""
30
 
31
- #: lib/settings.testimonials-widget.php:43
32
  msgid "Post Type"
33
  msgstr ""
34
 
35
- #: lib/settings.testimonials-widget.php:44
36
- msgid "Reset"
37
  msgstr ""
38
 
39
- #: lib/settings.testimonials-widget.php:45
40
  msgid "About Testimonials Widget"
41
  msgstr ""
42
 
43
- #: lib/settings.testimonials-widget.php:55
44
  msgid "Widget Title"
45
  msgstr ""
46
 
47
- #: lib/settings.testimonials-widget.php:56 testimonials-widget.php:354
48
- #: testimonials-widget.php:382
49
  msgid "Testimonials"
50
  msgstr ""
51
 
52
- #: lib/settings.testimonials-widget.php:61
53
  msgid "Title Link"
54
  msgstr ""
55
 
56
- #: lib/settings.testimonials-widget.php:62
57
  msgid "URL or Post ID to link widget title to. Ex: 123 or http://example.com"
58
  msgstr ""
59
 
60
- #: lib/settings.testimonials-widget.php:67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  msgid "Keep Whitespace?"
62
  msgstr ""
63
 
64
- #: lib/settings.testimonials-widget.php:68
65
  msgid "Keeps testimonials looking as entered than sans auto-formatting"
66
  msgstr ""
67
 
68
- #: lib/settings.testimonials-widget.php:74
69
  msgid "Minimum Height"
70
  msgstr ""
71
 
72
- #: lib/settings.testimonials-widget.php:75
73
  msgid "Set for minimum display height, in pixels"
74
  msgstr ""
75
 
76
- #: lib/settings.testimonials-widget.php:80
77
  msgid "Maximum Height"
78
  msgstr ""
79
 
80
- #: lib/settings.testimonials-widget.php:81
81
  msgid "Set for maximum display height, in pixels"
82
  msgstr ""
83
 
84
- #: lib/settings.testimonials-widget.php:86
85
- msgid "Rotation Speed"
86
  msgstr ""
87
 
88
- #: lib/settings.testimonials-widget.php:87
89
- msgid ""
90
- "Number of seconds between testimonial rotations or 0 for no rotation at all "
91
- "refresh"
92
  msgstr ""
93
 
94
- #: lib/settings.testimonials-widget.php:93
95
  msgid "General Options"
96
  msgstr ""
97
 
98
- #: lib/settings.testimonials-widget.php:98
99
- msgid "Character Limit"
100
  msgstr ""
101
 
102
- #: lib/settings.testimonials-widget.php:99
103
- msgid "Number of characters to limit non-single testimonial views to"
104
  msgstr ""
105
 
106
- #: lib/settings.testimonials-widget.php:103
107
  msgid "Hide \"Testimonials Not Found\"?"
108
  msgstr ""
109
 
110
- #: lib/settings.testimonials-widget.php:108
111
  msgid "Hide Gravatar Image?"
112
  msgstr ""
113
 
114
- #: lib/settings.testimonials-widget.php:113
115
  msgid "Hide Image?"
116
  msgstr ""
117
 
118
- #: lib/settings.testimonials-widget.php:118
 
 
 
 
119
  msgid "Hide Testimonial Content?"
120
  msgstr ""
121
 
122
- #: lib/settings.testimonials-widget.php:123
123
  msgid "Hide Author/Source?"
124
  msgstr ""
125
 
126
- #: lib/settings.testimonials-widget.php:125
127
  msgid "Don't display \"Post Title\" in cite"
128
  msgstr ""
129
 
130
- #: lib/settings.testimonials-widget.php:129
131
  msgid "Hide Email?"
132
  msgstr ""
133
 
134
- #: lib/settings.testimonials-widget.php:135
135
  msgid "Hide Title?"
136
  msgstr ""
137
 
138
- #: lib/settings.testimonials-widget.php:140
139
  msgid "Hide Location?"
140
  msgstr ""
141
 
142
- #: lib/settings.testimonials-widget.php:145
143
  msgid "Hide Company?"
144
  msgstr ""
145
 
146
- #: lib/settings.testimonials-widget.php:150
147
  msgid "Hide URL?"
148
  msgstr ""
149
 
150
- #: lib/settings.testimonials-widget.php:155
151
  msgid "URL Target"
152
  msgstr ""
153
 
154
- #: lib/settings.testimonials-widget.php:156
155
  msgid "Adds target to all URLs; leave blank if none"
156
  msgstr ""
157
 
158
- #: lib/settings.testimonials-widget.php:160
159
- msgid "Testimonial Bottom Text"
160
- msgstr ""
161
-
162
- #: lib/settings.testimonials-widget.php:161
163
- msgid "Custom text or HTML for bottom of testimonials"
164
- msgstr ""
165
-
166
- #: lib/settings.testimonials-widget.php:166
167
  msgid "Enable Paging?"
168
  msgstr ""
169
 
170
- #: lib/settings.testimonials-widget.php:167
171
  msgid "For `[testimonialswidget_list]`"
172
  msgstr ""
173
 
174
- #: lib/settings.testimonials-widget.php:170
175
  msgid "Disable"
176
  msgstr ""
177
 
178
- #: lib/settings.testimonials-widget.php:171
179
  msgid "Enable"
180
  msgstr ""
181
 
182
- #: lib/settings.testimonials-widget.php:172
183
  msgid "Before testimonials"
184
  msgstr ""
185
 
186
- #: lib/settings.testimonials-widget.php:173
187
  msgid "After testimonials"
188
  msgstr ""
189
 
190
- #: lib/settings.testimonials-widget.php:179
191
- msgid "Remove `.hentry` CSS?"
192
- msgstr ""
193
-
194
- #: lib/settings.testimonials-widget.php:180
195
- msgid ""
196
- "Some themes use class `.hentry` in a manner that breaks Testimonials Widgets "
197
- "CSS"
198
- msgstr ""
199
-
200
- #: lib/settings.testimonials-widget.php:191
201
  msgid "Selection Options"
202
  msgstr ""
203
 
204
- #: lib/settings.testimonials-widget.php:197
205
  msgid "Category Filter"
206
  msgstr ""
207
 
208
- #: lib/settings.testimonials-widget.php:198
209
  msgid "Comma separated category slug-names. Ex: category-a, another-category"
210
  msgstr ""
211
 
212
- #: lib/settings.testimonials-widget.php:203
213
  msgid "Tags Filter"
214
  msgstr ""
215
 
216
- #: lib/settings.testimonials-widget.php:204
217
  msgid "Comma separated tag slug-names. Ex: tag-a, another-tag"
218
  msgstr ""
219
 
220
- #: lib/settings.testimonials-widget.php:209
221
  msgid "Require All Tags?"
222
  msgstr ""
223
 
224
- #: lib/settings.testimonials-widget.php:210
225
  msgid "Select only testimonials with all of the given tags"
226
  msgstr ""
227
 
228
- #: lib/settings.testimonials-widget.php:216
229
  msgid "Include IDs Filter"
230
  msgstr ""
231
 
232
- #: lib/settings.testimonials-widget.php:217
233
- #: lib/settings.testimonials-widget.php:223
234
  msgid "Comma separated testimonial IDs. Ex: 3,1,2"
235
  msgstr ""
236
 
237
- #: lib/settings.testimonials-widget.php:222
238
  msgid "Exclude IDs Filter"
239
  msgstr ""
240
 
241
- #: lib/settings.testimonials-widget.php:228
242
  msgid "Limit"
243
  msgstr ""
244
 
245
- #: lib/settings.testimonials-widget.php:229
246
  msgid "Number of testimonials to select per instance"
247
  msgstr ""
248
 
249
- #: lib/settings.testimonials-widget.php:241
250
  msgid "Ordering Options"
251
  msgstr ""
252
 
253
- #: lib/settings.testimonials-widget.php:247
254
  msgid "Random Order?"
255
  msgstr ""
256
 
257
- #: lib/settings.testimonials-widget.php:248
258
  msgid ""
259
  "If checked, ignores ORDER BY, ORDER BY meta_key, and ORDER BY Order. Widgets "
260
  "are random by default automatically"
261
  msgstr ""
262
 
263
- #: lib/settings.testimonials-widget.php:254
264
  msgid "ORDER BY"
265
  msgstr ""
266
 
267
- #: lib/settings.testimonials-widget.php:255
268
  msgid "Used when \"Random Order\" is disabled"
269
  msgstr ""
270
 
271
- #: lib/settings.testimonials-widget.php:258
272
  msgid "Testimonial ID"
273
  msgstr ""
274
 
275
- #: lib/settings.testimonials-widget.php:259
276
  msgid "Author"
277
  msgstr ""
278
 
279
- #: lib/settings.testimonials-widget.php:260 testimonials-widget.php:330
280
- msgid "Source"
281
  msgstr ""
282
 
283
- #: lib/settings.testimonials-widget.php:261 testimonials-widget.php:340
284
- msgid "Date"
285
  msgstr ""
286
 
287
- #: lib/settings.testimonials-widget.php:262
 
 
 
 
288
  msgid "No order"
289
  msgstr ""
290
 
291
- #: lib/settings.testimonials-widget.php:269
292
  msgid "ORDER BY meta_key"
293
  msgstr ""
294
 
295
- #: lib/settings.testimonials-widget.php:270
296
  msgid ""
297
  "Used when \"Random Order\" is disabled and sorting by a testimonials meta "
298
  "key is needed. Overrides ORDER BY"
299
  msgstr ""
300
 
301
- #: lib/settings.testimonials-widget.php:273
302
  msgid "None"
303
  msgstr ""
304
 
305
- #: lib/settings.testimonials-widget.php:274 testimonials-widget.php:332
306
- #: testimonials-widget.php:1224
307
  msgid "Title"
308
  msgstr ""
309
 
310
- #: lib/settings.testimonials-widget.php:275 testimonials-widget.php:334
311
- #: testimonials-widget.php:1236
312
  msgid "Email"
313
  msgstr ""
314
 
315
- #: lib/settings.testimonials-widget.php:276 testimonials-widget.php:335
316
- #: testimonials-widget.php:1242
 
 
 
 
 
317
  msgid "Company"
318
  msgstr ""
319
 
320
- #: lib/settings.testimonials-widget.php:277 testimonials-widget.php:336
321
- #: testimonials-widget.php:1248
322
  msgid "URL"
323
  msgstr ""
324
 
325
- #: lib/settings.testimonials-widget.php:283
326
  msgid "ORDER BY Order"
327
  msgstr ""
328
 
329
- #: lib/settings.testimonials-widget.php:286
330
  msgid "Descending"
331
  msgstr ""
332
 
333
- #: lib/settings.testimonials-widget.php:287
334
  msgid "Ascending"
335
  msgstr ""
336
 
337
- #: lib/settings.testimonials-widget.php:300
338
  msgid "Debug Mode?"
339
  msgstr ""
340
 
341
- #: lib/settings.testimonials-widget.php:301
342
  msgid "Not implemented yet"
343
  msgstr ""
344
 
345
- #: lib/settings.testimonials-widget.php:308
346
  msgid "Allow Comments?"
347
  msgstr ""
348
 
349
- #: lib/settings.testimonials-widget.php:309
350
- msgid "If checked, allows commenting on testimonial single-view pages"
 
 
351
  msgstr ""
352
 
353
- #: lib/settings.testimonials-widget.php:313
354
  msgid ""
355
  "URL slug-name for <a href=\"%1s\">testimonials archive</a> page. After "
356
  "changing, you must click \"Save Changes\" on <a href=\"%2s\">Permalink "
357
  "Settings</a> to update them."
358
  msgstr ""
359
 
360
- #: lib/settings.testimonials-widget.php:319
361
  msgid "Archive Page URL"
362
  msgstr ""
363
 
364
- #: lib/settings.testimonials-widget.php:324
365
  msgid ""
366
  "URL slug-name for testimonial view pages. After changing, you must click "
367
  "\"Save Changes\" on <a href=\"%1s\">Permalink Settings</a> to update them."
368
  msgstr ""
369
 
370
- #: lib/settings.testimonials-widget.php:327
371
  msgid "Testimonial Page URL"
372
  msgstr ""
373
 
374
- #: lib/settings.testimonials-widget.php:335
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
375
  msgid "Reset to Defaults?"
376
  msgstr ""
377
 
378
- #: lib/settings.testimonials-widget.php:338
379
  msgid "Check this box to reset options to their defaults"
380
  msgstr ""
381
 
382
- #: lib/settings.testimonials-widget.php:344
383
  msgid "Example Text Input"
384
  msgstr ""
385
 
386
- #: lib/settings.testimonials-widget.php:345
387
  msgid "This is a description for the text input."
388
  msgstr ""
389
 
390
- #: lib/settings.testimonials-widget.php:350
391
  msgid "Example Textarea Input"
392
  msgstr ""
393
 
394
- #: lib/settings.testimonials-widget.php:351
395
  msgid "This is a description for the textarea input."
396
  msgstr ""
397
 
398
- #: lib/settings.testimonials-widget.php:357
399
  msgid "Example Checkbox"
400
  msgstr ""
401
 
402
- #: lib/settings.testimonials-widget.php:358
403
  msgid "This is a description for the checkbox."
404
  msgstr ""
405
 
406
- #: lib/settings.testimonials-widget.php:370
407
  msgid "Example Radio"
408
  msgstr ""
409
 
410
- #: lib/settings.testimonials-widget.php:371
411
  msgid "This is a description for the radio buttons."
412
  msgstr ""
413
 
414
- #: lib/settings.testimonials-widget.php:381
415
  msgid "Example Select"
416
  msgstr ""
417
 
418
- #: lib/settings.testimonials-widget.php:382
419
  msgid "This is a description for the drop-down."
420
  msgstr ""
421
 
422
- #: lib/settings.testimonials-widget.php:433
423
- #: lib/settings.testimonials-widget.php:465
424
  msgid "Testimonials Widget Settings"
425
  msgstr ""
426
 
427
- #: lib/settings.testimonials-widget.php:433 testimonials-widget.php:90
428
  msgid "Settings"
429
  msgstr ""
430
 
431
- #: lib/settings.testimonials-widget.php:484
432
  msgid "Save Changes"
433
  msgstr ""
434
 
435
- #: lib/settings.testimonials-widget.php:495
436
  msgid "Copyright &copy;%1$s %2$s."
437
  msgstr ""
438
 
 
 
 
 
439
  #: lib/testimonials-widget-widget.php:8
440
  msgid "Display testimonials with multiple selection and display options"
441
  msgstr ""
442
 
443
- #. #-#-#-#-# testimonials-widget.pot (Testimonials Widget 2.9.0) #-#-#-#-#
444
  #. Plugin Name of the plugin/theme
445
  #: lib/testimonials-widget-widget.php:19
446
  msgid "Testimonials Widget"
447
  msgstr ""
448
 
449
- #: lib/testimonials-widget-widget.php:138
450
  msgid "CSS Class"
451
  msgstr ""
452
 
453
- #: lib/testimonials-widget-widget.php:139
454
  msgid "This widget's unique CSS class for styling"
455
  msgstr ""
456
 
457
- #: lib/testimonials-widget-widget.php:177
458
  msgid "Expand/Collapse"
459
  msgstr ""
460
 
461
- #: testimonials-widget.php:329
462
- msgid "Image"
463
  msgstr ""
464
 
465
- #: testimonials-widget.php:331
466
- msgid "Shortcodes"
467
  msgstr ""
468
 
469
- #: testimonials-widget.php:333 testimonials-widget.php:1230
470
- msgid "Location"
471
  msgstr ""
472
 
473
- #: testimonials-widget.php:337
474
  msgid "Published by"
475
  msgstr ""
476
 
477
- #: testimonials-widget.php:338
478
  msgid "Category"
479
  msgstr ""
480
 
481
- #: testimonials-widget.php:339
482
  msgid "Tags"
483
  msgstr ""
484
 
485
- #: testimonials-widget.php:351
486
  msgid "Add New"
487
  msgstr ""
488
 
489
- #: testimonials-widget.php:352 testimonials-widget.php:355
490
  msgid "Add New Testimonial"
491
  msgstr ""
492
 
493
- #: testimonials-widget.php:353
494
  msgid "Edit Testimonial"
495
  msgstr ""
496
 
497
- #: testimonials-widget.php:356 testimonials-widget.php:617
498
  msgid "No testimonials found"
499
  msgstr ""
500
 
501
- #: testimonials-widget.php:357
502
  msgid "No testimonials found in Trash"
503
  msgstr ""
504
 
505
- #: testimonials-widget.php:359
506
  msgid "Search Testimonials"
507
  msgstr ""
508
 
509
- #: testimonials-widget.php:360
510
  msgid "Testimonial"
511
  msgstr ""
512
 
513
- #: testimonials-widget.php:361
514
  msgid "View Testimonial"
515
  msgstr ""
516
 
517
- #: testimonials-widget.php:650
518
  msgid "…"
519
  msgstr ""
520
 
521
- #: testimonials-widget.php:996
522
  msgid "&laquo;"
523
  msgstr ""
524
 
525
- #: testimonials-widget.php:1005
526
  msgid "&raquo;"
527
  msgstr ""
528
 
529
- #: testimonials-widget.php:1260
530
  msgid "Testimonial Data"
531
  msgstr ""
532
 
533
- #: testimonials-widget.php:1285
534
  msgid "Enter title here"
535
  msgstr ""
536
 
537
- #: testimonials-widget.php:1286
538
  msgid "Enter testimonial source here"
539
  msgstr ""
540
 
541
- #: testimonials-widget.php:1310
542
  msgid "Testimonial updated. <a href=\"%s\">View testimonial</a>"
543
  msgstr ""
544
 
545
- #: testimonials-widget.php:1311
546
  msgid "Custom field updated."
547
  msgstr ""
548
 
549
- #: testimonials-widget.php:1312
550
  msgid "Custom field deleted."
551
  msgstr ""
552
 
553
- #: testimonials-widget.php:1313
554
  msgid "Testimonial updated."
555
  msgstr ""
556
 
557
  #. translators: %s: date and time of the revision
558
- #: testimonials-widget.php:1315
559
  msgid "Testimonial restored to revision from %s"
560
  msgstr ""
561
 
562
- #: testimonials-widget.php:1316
563
  msgid "Testimonial published. <a href=\"%s\">View testimonial</a>"
564
  msgstr ""
565
 
566
- #: testimonials-widget.php:1317
567
  msgid "Testimonial saved."
568
  msgstr ""
569
 
570
- #: testimonials-widget.php:1318
571
  msgid ""
572
  "Testimonial submitted. <a target=\"_blank\" href=\"%s\">Preview testimonial</"
573
  "a>"
574
  msgstr ""
575
 
576
- #: testimonials-widget.php:1319
577
  msgid ""
578
  "Testimonial scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href="
579
  "\"%2$s\">Preview testimonial</a>"
580
  msgstr ""
581
 
582
- #: testimonials-widget.php:1320
583
  msgid ""
584
  "Testimonial draft updated. <a target=\"_blank\" href=\"%s\">Preview "
585
  "testimonial</a>"
@@ -591,7 +642,7 @@ msgstr ""
591
 
592
  #. Description of the plugin/theme
593
  msgid ""
594
- "Testimonials Widget plugin allows you to display random or rotating "
595
  "portfolio, quotes, reviews, showcases, or text with images on your WordPress "
596
  "blog."
597
  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.11.2\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/testimonials-widget\n"
7
+ "POT-Creation-Date: 2013-04-09 04:09:20+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/settings.testimonials-widget.php:48
16
  msgid "General"
17
  msgstr ""
18
 
19
+ #: lib/settings.testimonials-widget.php:49
20
  msgid "Selection"
21
  msgstr ""
22
 
23
+ #: lib/settings.testimonials-widget.php:50
24
  msgid "Ordering"
25
  msgstr ""
26
 
27
+ #: lib/settings.testimonials-widget.php:51
28
  msgid "Widget"
29
  msgstr ""
30
 
31
+ #: lib/settings.testimonials-widget.php:53
32
  msgid "Post Type"
33
  msgstr ""
34
 
35
+ #: lib/settings.testimonials-widget.php:54
36
+ msgid "Compatibility & Reset"
37
  msgstr ""
38
 
39
+ #: lib/settings.testimonials-widget.php:55
40
  msgid "About Testimonials Widget"
41
  msgstr ""
42
 
43
+ #: lib/settings.testimonials-widget.php:65
44
  msgid "Widget Title"
45
  msgstr ""
46
 
47
+ #: lib/settings.testimonials-widget.php:66 testimonials-widget.php:419
48
+ #: testimonials-widget.php:447
49
  msgid "Testimonials"
50
  msgstr ""
51
 
52
+ #: lib/settings.testimonials-widget.php:72
53
  msgid "Title Link"
54
  msgstr ""
55
 
56
+ #: lib/settings.testimonials-widget.php:73
57
  msgid "URL or Post ID to link widget title to. Ex: 123 or http://example.com"
58
  msgstr ""
59
 
60
+ #: lib/settings.testimonials-widget.php:79
61
+ msgid "Character Limit"
62
+ msgstr ""
63
+
64
+ #: lib/settings.testimonials-widget.php:80
65
+ msgid "Number of characters to limit non-single testimonial views to"
66
+ msgstr ""
67
+
68
+ #: lib/settings.testimonials-widget.php:86
69
+ msgid "Height"
70
+ msgstr ""
71
+
72
+ #: lib/settings.testimonials-widget.php:87
73
+ msgid "Testimonials height, in pixels. Overrides minimum and maximum height"
74
+ msgstr ""
75
+
76
+ #: lib/settings.testimonials-widget.php:93
77
+ msgid "Rotation Speed"
78
+ msgstr ""
79
+
80
+ #: lib/settings.testimonials-widget.php:94
81
+ msgid ""
82
+ "Number of seconds between testimonial rotations or 0 for no rotation at all "
83
+ "refresh"
84
+ msgstr ""
85
+
86
+ #: lib/settings.testimonials-widget.php:101
87
+ msgid "Additional Widget Options"
88
+ msgstr ""
89
+
90
+ #: lib/settings.testimonials-widget.php:107
91
  msgid "Keep Whitespace?"
92
  msgstr ""
93
 
94
+ #: lib/settings.testimonials-widget.php:108
95
  msgid "Keeps testimonials looking as entered than sans auto-formatting"
96
  msgstr ""
97
 
98
+ #: lib/settings.testimonials-widget.php:114
99
  msgid "Minimum Height"
100
  msgstr ""
101
 
102
+ #: lib/settings.testimonials-widget.php:115
103
  msgid "Set for minimum display height, in pixels"
104
  msgstr ""
105
 
106
+ #: lib/settings.testimonials-widget.php:121
107
  msgid "Maximum Height"
108
  msgstr ""
109
 
110
+ #: lib/settings.testimonials-widget.php:122
111
  msgid "Set for maximum display height, in pixels"
112
  msgstr ""
113
 
114
+ #: lib/settings.testimonials-widget.php:128
115
+ msgid "Testimonial Bottom Text"
116
  msgstr ""
117
 
118
+ #: lib/settings.testimonials-widget.php:129
119
+ msgid "Custom text or HTML for bottom of testimonials"
 
 
120
  msgstr ""
121
 
122
+ #: lib/settings.testimonials-widget.php:141
123
  msgid "General Options"
124
  msgstr ""
125
 
126
+ #: lib/settings.testimonials-widget.php:146
127
+ msgid "Hide built-in quotes?"
128
  msgstr ""
129
 
130
+ #: lib/settings.testimonials-widget.php:147
131
+ msgid "Remove open and close quote span tags surrounding testimonial content"
132
  msgstr ""
133
 
134
+ #: lib/settings.testimonials-widget.php:152
135
  msgid "Hide \"Testimonials Not Found\"?"
136
  msgstr ""
137
 
138
+ #: lib/settings.testimonials-widget.php:157
139
  msgid "Hide Gravatar Image?"
140
  msgstr ""
141
 
142
+ #: lib/settings.testimonials-widget.php:162
143
  msgid "Hide Image?"
144
  msgstr ""
145
 
146
+ #: lib/settings.testimonials-widget.php:167
147
+ msgid "Hide Image in Single View?"
148
+ msgstr ""
149
+
150
+ #: lib/settings.testimonials-widget.php:173
151
  msgid "Hide Testimonial Content?"
152
  msgstr ""
153
 
154
+ #: lib/settings.testimonials-widget.php:178
155
  msgid "Hide Author/Source?"
156
  msgstr ""
157
 
158
+ #: lib/settings.testimonials-widget.php:180
159
  msgid "Don't display \"Post Title\" in cite"
160
  msgstr ""
161
 
162
+ #: lib/settings.testimonials-widget.php:184
163
  msgid "Hide Email?"
164
  msgstr ""
165
 
166
+ #: lib/settings.testimonials-widget.php:190
167
  msgid "Hide Title?"
168
  msgstr ""
169
 
170
+ #: lib/settings.testimonials-widget.php:195
171
  msgid "Hide Location?"
172
  msgstr ""
173
 
174
+ #: lib/settings.testimonials-widget.php:200
175
  msgid "Hide Company?"
176
  msgstr ""
177
 
178
+ #: lib/settings.testimonials-widget.php:205
179
  msgid "Hide URL?"
180
  msgstr ""
181
 
182
+ #: lib/settings.testimonials-widget.php:210
183
  msgid "URL Target"
184
  msgstr ""
185
 
186
+ #: lib/settings.testimonials-widget.php:211
187
  msgid "Adds target to all URLs; leave blank if none"
188
  msgstr ""
189
 
190
+ #: lib/settings.testimonials-widget.php:216
 
 
 
 
 
 
 
 
191
  msgid "Enable Paging?"
192
  msgstr ""
193
 
194
+ #: lib/settings.testimonials-widget.php:217
195
  msgid "For `[testimonialswidget_list]`"
196
  msgstr ""
197
 
198
+ #: lib/settings.testimonials-widget.php:220
199
  msgid "Disable"
200
  msgstr ""
201
 
202
+ #: lib/settings.testimonials-widget.php:221
203
  msgid "Enable"
204
  msgstr ""
205
 
206
+ #: lib/settings.testimonials-widget.php:222
207
  msgid "Before testimonials"
208
  msgstr ""
209
 
210
+ #: lib/settings.testimonials-widget.php:223
211
  msgid "After testimonials"
212
  msgstr ""
213
 
214
+ #: lib/settings.testimonials-widget.php:236
 
 
 
 
 
 
 
 
 
 
215
  msgid "Selection Options"
216
  msgstr ""
217
 
218
+ #: lib/settings.testimonials-widget.php:242
219
  msgid "Category Filter"
220
  msgstr ""
221
 
222
+ #: lib/settings.testimonials-widget.php:243
223
  msgid "Comma separated category slug-names. Ex: category-a, another-category"
224
  msgstr ""
225
 
226
+ #: lib/settings.testimonials-widget.php:249
227
  msgid "Tags Filter"
228
  msgstr ""
229
 
230
+ #: lib/settings.testimonials-widget.php:250
231
  msgid "Comma separated tag slug-names. Ex: tag-a, another-tag"
232
  msgstr ""
233
 
234
+ #: lib/settings.testimonials-widget.php:256
235
  msgid "Require All Tags?"
236
  msgstr ""
237
 
238
+ #: lib/settings.testimonials-widget.php:257
239
  msgid "Select only testimonials with all of the given tags"
240
  msgstr ""
241
 
242
+ #: lib/settings.testimonials-widget.php:263
243
  msgid "Include IDs Filter"
244
  msgstr ""
245
 
246
+ #: lib/settings.testimonials-widget.php:264
247
+ #: lib/settings.testimonials-widget.php:271
248
  msgid "Comma separated testimonial IDs. Ex: 3,1,2"
249
  msgstr ""
250
 
251
+ #: lib/settings.testimonials-widget.php:270
252
  msgid "Exclude IDs Filter"
253
  msgstr ""
254
 
255
+ #: lib/settings.testimonials-widget.php:277
256
  msgid "Limit"
257
  msgstr ""
258
 
259
+ #: lib/settings.testimonials-widget.php:278
260
  msgid "Number of testimonials to select per instance"
261
  msgstr ""
262
 
263
+ #: lib/settings.testimonials-widget.php:291
264
  msgid "Ordering Options"
265
  msgstr ""
266
 
267
+ #: lib/settings.testimonials-widget.php:297
268
  msgid "Random Order?"
269
  msgstr ""
270
 
271
+ #: lib/settings.testimonials-widget.php:298
272
  msgid ""
273
  "If checked, ignores ORDER BY, ORDER BY meta_key, and ORDER BY Order. Widgets "
274
  "are random by default automatically"
275
  msgstr ""
276
 
277
+ #: lib/settings.testimonials-widget.php:304
278
  msgid "ORDER BY"
279
  msgstr ""
280
 
281
+ #: lib/settings.testimonials-widget.php:305
282
  msgid "Used when \"Random Order\" is disabled"
283
  msgstr ""
284
 
285
+ #: lib/settings.testimonials-widget.php:308
286
  msgid "Testimonial ID"
287
  msgstr ""
288
 
289
+ #: lib/settings.testimonials-widget.php:309
290
  msgid "Author"
291
  msgstr ""
292
 
293
+ #: lib/settings.testimonials-widget.php:310 testimonials-widget.php:405
294
+ msgid "Date"
295
  msgstr ""
296
 
297
+ #: lib/settings.testimonials-widget.php:311
298
+ msgid "Menu Order"
299
  msgstr ""
300
 
301
+ #: lib/settings.testimonials-widget.php:312 testimonials-widget.php:395
302
+ msgid "Source"
303
+ msgstr ""
304
+
305
+ #: lib/settings.testimonials-widget.php:313
306
  msgid "No order"
307
  msgstr ""
308
 
309
+ #: lib/settings.testimonials-widget.php:321
310
  msgid "ORDER BY meta_key"
311
  msgstr ""
312
 
313
+ #: lib/settings.testimonials-widget.php:322
314
  msgid ""
315
  "Used when \"Random Order\" is disabled and sorting by a testimonials meta "
316
  "key is needed. Overrides ORDER BY"
317
  msgstr ""
318
 
319
+ #: lib/settings.testimonials-widget.php:325
320
  msgid "None"
321
  msgstr ""
322
 
323
+ #: lib/settings.testimonials-widget.php:326 testimonials-widget.php:397
324
+ #: testimonials-widget.php:1328
325
  msgid "Title"
326
  msgstr ""
327
 
328
+ #: lib/settings.testimonials-widget.php:327 testimonials-widget.php:399
329
+ #: testimonials-widget.php:1340
330
  msgid "Email"
331
  msgstr ""
332
 
333
+ #: lib/settings.testimonials-widget.php:328 testimonials-widget.php:398
334
+ #: testimonials-widget.php:1334
335
+ msgid "Location"
336
+ msgstr ""
337
+
338
+ #: lib/settings.testimonials-widget.php:329 testimonials-widget.php:400
339
+ #: testimonials-widget.php:1346
340
  msgid "Company"
341
  msgstr ""
342
 
343
+ #: lib/settings.testimonials-widget.php:330 testimonials-widget.php:401
344
+ #: testimonials-widget.php:1352
345
  msgid "URL"
346
  msgstr ""
347
 
348
+ #: lib/settings.testimonials-widget.php:337
349
  msgid "ORDER BY Order"
350
  msgstr ""
351
 
352
+ #: lib/settings.testimonials-widget.php:340
353
  msgid "Descending"
354
  msgstr ""
355
 
356
+ #: lib/settings.testimonials-widget.php:341
357
  msgid "Ascending"
358
  msgstr ""
359
 
360
+ #: lib/settings.testimonials-widget.php:355
361
  msgid "Debug Mode?"
362
  msgstr ""
363
 
364
+ #: lib/settings.testimonials-widget.php:356
365
  msgid "Not implemented yet"
366
  msgstr ""
367
 
368
+ #: lib/settings.testimonials-widget.php:364
369
  msgid "Allow Comments?"
370
  msgstr ""
371
 
372
+ #: lib/settings.testimonials-widget.php:365
373
+ msgid ""
374
+ "Only affects the Testimonials Widget post edit page. Your theme controls the "
375
+ "front-end view."
376
  msgstr ""
377
 
378
+ #: lib/settings.testimonials-widget.php:370
379
  msgid ""
380
  "URL slug-name for <a href=\"%1s\">testimonials archive</a> page. After "
381
  "changing, you must click \"Save Changes\" on <a href=\"%2s\">Permalink "
382
  "Settings</a> to update them."
383
  msgstr ""
384
 
385
+ #: lib/settings.testimonials-widget.php:376
386
  msgid "Archive Page URL"
387
  msgstr ""
388
 
389
+ #: lib/settings.testimonials-widget.php:383
390
  msgid ""
391
  "URL slug-name for testimonial view pages. After changing, you must click "
392
  "\"Save Changes\" on <a href=\"%1s\">Permalink Settings</a> to update them."
393
  msgstr ""
394
 
395
+ #: lib/settings.testimonials-widget.php:386
396
  msgid "Testimonial Page URL"
397
  msgstr ""
398
 
399
+ #: lib/settings.testimonials-widget.php:396
400
+ msgid "Compatiblity Options"
401
+ msgstr ""
402
+
403
+ #: lib/settings.testimonials-widget.php:402
404
+ msgid "Remove `.hentry` CSS?"
405
+ msgstr ""
406
+
407
+ #: lib/settings.testimonials-widget.php:403
408
+ msgid ""
409
+ "Pre 2.6.4. Some themes use class `.hentry` in a manner that breaks "
410
+ "Testimonials Widgets CSS"
411
+ msgstr ""
412
+
413
+ #: lib/settings.testimonials-widget.php:413
414
+ msgid "Use `&lt;q&gt;` tag?"
415
+ msgstr ""
416
+
417
+ #: lib/settings.testimonials-widget.php:414
418
+ msgid "Pre 2.11.0. Not HTML5 compliant"
419
+ msgstr ""
420
+
421
+ #: lib/settings.testimonials-widget.php:424
422
  msgid "Reset to Defaults?"
423
  msgstr ""
424
 
425
+ #: lib/settings.testimonials-widget.php:427
426
  msgid "Check this box to reset options to their defaults"
427
  msgstr ""
428
 
429
+ #: lib/settings.testimonials-widget.php:439
430
  msgid "Example Text Input"
431
  msgstr ""
432
 
433
+ #: lib/settings.testimonials-widget.php:440
434
  msgid "This is a description for the text input."
435
  msgstr ""
436
 
437
+ #: lib/settings.testimonials-widget.php:445
438
  msgid "Example Textarea Input"
439
  msgstr ""
440
 
441
+ #: lib/settings.testimonials-widget.php:446
442
  msgid "This is a description for the textarea input."
443
  msgstr ""
444
 
445
+ #: lib/settings.testimonials-widget.php:452
446
  msgid "Example Checkbox"
447
  msgstr ""
448
 
449
+ #: lib/settings.testimonials-widget.php:453
450
  msgid "This is a description for the checkbox."
451
  msgstr ""
452
 
453
+ #: lib/settings.testimonials-widget.php:465
454
  msgid "Example Radio"
455
  msgstr ""
456
 
457
+ #: lib/settings.testimonials-widget.php:466
458
  msgid "This is a description for the radio buttons."
459
  msgstr ""
460
 
461
+ #: lib/settings.testimonials-widget.php:476
462
  msgid "Example Select"
463
  msgstr ""
464
 
465
+ #: lib/settings.testimonials-widget.php:477
466
  msgid "This is a description for the drop-down."
467
  msgstr ""
468
 
469
+ #: lib/settings.testimonials-widget.php:544
470
+ #: lib/settings.testimonials-widget.php:576
471
  msgid "Testimonials Widget Settings"
472
  msgstr ""
473
 
474
+ #: lib/settings.testimonials-widget.php:544 testimonials-widget.php:69
475
  msgid "Settings"
476
  msgstr ""
477
 
478
+ #: lib/settings.testimonials-widget.php:595
479
  msgid "Save Changes"
480
  msgstr ""
481
 
482
+ #: lib/settings.testimonials-widget.php:606
483
  msgid "Copyright &copy;%1$s %2$s."
484
  msgstr ""
485
 
486
+ #: lib/settings.testimonials-widget.php:936
487
+ msgid "Required"
488
+ msgstr ""
489
+
490
  #: lib/testimonials-widget-widget.php:8
491
  msgid "Display testimonials with multiple selection and display options"
492
  msgstr ""
493
 
494
+ #. #-#-#-#-# testimonials-widget.pot (Testimonials Widget 2.11.2) #-#-#-#-#
495
  #. Plugin Name of the plugin/theme
496
  #: lib/testimonials-widget-widget.php:19
497
  msgid "Testimonials Widget"
498
  msgstr ""
499
 
500
+ #: lib/testimonials-widget-widget.php:135
501
  msgid "CSS Class"
502
  msgstr ""
503
 
504
+ #: lib/testimonials-widget-widget.php:136
505
  msgid "This widget's unique CSS class for styling"
506
  msgstr ""
507
 
508
+ #: lib/testimonials-widget-widget.php:178
509
  msgid "Expand/Collapse"
510
  msgstr ""
511
 
512
+ #: testimonials-widget.php:172
513
+ msgid "Deleting Testimonials Widget plugin will remove all data and settings."
514
  msgstr ""
515
 
516
+ #: testimonials-widget.php:394
517
+ msgid "Image"
518
  msgstr ""
519
 
520
+ #: testimonials-widget.php:396
521
+ msgid "Shortcodes"
522
  msgstr ""
523
 
524
+ #: testimonials-widget.php:402
525
  msgid "Published by"
526
  msgstr ""
527
 
528
+ #: testimonials-widget.php:403
529
  msgid "Category"
530
  msgstr ""
531
 
532
+ #: testimonials-widget.php:404
533
  msgid "Tags"
534
  msgstr ""
535
 
536
+ #: testimonials-widget.php:416
537
  msgid "Add New"
538
  msgstr ""
539
 
540
+ #: testimonials-widget.php:417 testimonials-widget.php:420
541
  msgid "Add New Testimonial"
542
  msgstr ""
543
 
544
+ #: testimonials-widget.php:418
545
  msgid "Edit Testimonial"
546
  msgstr ""
547
 
548
+ #: testimonials-widget.php:421 testimonials-widget.php:687
549
  msgid "No testimonials found"
550
  msgstr ""
551
 
552
+ #: testimonials-widget.php:422
553
  msgid "No testimonials found in Trash"
554
  msgstr ""
555
 
556
+ #: testimonials-widget.php:424
557
  msgid "Search Testimonials"
558
  msgstr ""
559
 
560
+ #: testimonials-widget.php:425
561
  msgid "Testimonial"
562
  msgstr ""
563
 
564
+ #: testimonials-widget.php:426
565
  msgid "View Testimonial"
566
  msgstr ""
567
 
568
+ #: testimonials-widget.php:720
569
  msgid "…"
570
  msgstr ""
571
 
572
+ #: testimonials-widget.php:1098
573
  msgid "&laquo;"
574
  msgstr ""
575
 
576
+ #: testimonials-widget.php:1107
577
  msgid "&raquo;"
578
  msgstr ""
579
 
580
+ #: testimonials-widget.php:1364
581
  msgid "Testimonial Data"
582
  msgstr ""
583
 
584
+ #: testimonials-widget.php:1389
585
  msgid "Enter title here"
586
  msgstr ""
587
 
588
+ #: testimonials-widget.php:1390
589
  msgid "Enter testimonial source here"
590
  msgstr ""
591
 
592
+ #: testimonials-widget.php:1414
593
  msgid "Testimonial updated. <a href=\"%s\">View testimonial</a>"
594
  msgstr ""
595
 
596
+ #: testimonials-widget.php:1415
597
  msgid "Custom field updated."
598
  msgstr ""
599
 
600
+ #: testimonials-widget.php:1416
601
  msgid "Custom field deleted."
602
  msgstr ""
603
 
604
+ #: testimonials-widget.php:1417
605
  msgid "Testimonial updated."
606
  msgstr ""
607
 
608
  #. translators: %s: date and time of the revision
609
+ #: testimonials-widget.php:1419
610
  msgid "Testimonial restored to revision from %s"
611
  msgstr ""
612
 
613
+ #: testimonials-widget.php:1420
614
  msgid "Testimonial published. <a href=\"%s\">View testimonial</a>"
615
  msgstr ""
616
 
617
+ #: testimonials-widget.php:1421
618
  msgid "Testimonial saved."
619
  msgstr ""
620
 
621
+ #: testimonials-widget.php:1422
622
  msgid ""
623
  "Testimonial submitted. <a target=\"_blank\" href=\"%s\">Preview testimonial</"
624
  "a>"
625
  msgstr ""
626
 
627
+ #: testimonials-widget.php:1423
628
  msgid ""
629
  "Testimonial scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href="
630
  "\"%2$s\">Preview testimonial</a>"
631
  msgstr ""
632
 
633
+ #: testimonials-widget.php:1424
634
  msgid ""
635
  "Testimonial draft updated. <a target=\"_blank\" href=\"%s\">Preview "
636
  "testimonial</a>"
642
 
643
  #. Description of the plugin/theme
644
  msgid ""
645
+ "Testimonials Widget plugin allows you to display random or selected "
646
  "portfolio, quotes, reviews, showcases, or text with images on your WordPress "
647
  "blog."
648
  msgstr ""
lib/settings.testimonials-widget.php CHANGED
@@ -9,14 +9,20 @@ class Testimonials_Widget_Settings {
9
  const id = 'testimonialswidget_settings';
10
 
11
  public static $default = array(
12
- 'id' => 'default_field',
13
- 'section' => 'general',
14
- 'title' => '',
15
- 'desc' => '',
16
- 'type' => 'text',
17
- 'choices' => array(),
18
- 'std' => '',
19
- 'class' => ''
 
 
 
 
 
 
20
  );
21
  public static $defaults = array();
22
  public static $sections = array();
@@ -25,41 +31,75 @@ class Testimonials_Widget_Settings {
25
 
26
 
27
  public function __construct() {
28
- self::load_sections();
29
- self::load_settings();
30
-
31
  add_action( 'admin_init', array( &$this, 'admin_init' ) );
32
  add_action( 'admin_menu', array( &$this, 'admin_menu' ) );
 
33
  load_plugin_textdomain( 'testimonials-widget', false, '/testimonials-widget/languages/' );
34
  }
35
 
36
 
37
- public static function load_sections() {
38
- self::$sections['general'] = __( 'General' , 'testimonials-widget');
39
- self::$sections['selection'] = __( 'Selection' , 'testimonials-widget');
40
- self::$sections['ordering'] = __( 'Ordering' , 'testimonials-widget');
41
- self::$sections['widget'] = __( 'Widget' , 'testimonials-widget');
42
- // self::$sections['testing'] = __( 'Testing' , 'testimonials-widget');
43
- self::$sections['post_type'] = __( 'Post Type' , 'testimonials-widget');
44
- self::$sections['reset'] = __( 'Reset' , 'testimonials-widget');
45
- self::$sections['about'] = __( 'About Testimonials Widget' , 'testimonials-widget');
 
 
 
 
 
 
46
 
47
  self::$sections = apply_filters( 'testimonials_widget_sections', self::$sections );
48
  }
49
 
50
 
51
- public static function load_settings() {
52
  // Widget
53
  self::$settings['title'] = array(
54
  'section' => 'widget',
55
  'title' => __( 'Widget Title', 'testimonials-widget' ),
56
  'std' => __( 'Testimonials', 'testimonials-widget' ),
 
57
  );
58
 
59
  self::$settings['title_link'] = array(
60
  'section' => 'widget',
61
  'title' => __( 'Title Link', 'testimonials-widget' ),
62
  'desc' => __( 'URL or Post ID to link widget title to. Ex: 123 or http://example.com', 'testimonials-widget' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  );
64
 
65
  self::$settings['keep_whitespace'] = array(
@@ -73,19 +113,27 @@ class Testimonials_Widget_Settings {
73
  'section' => 'widget',
74
  'title' => __( 'Minimum Height', 'testimonials-widget' ),
75
  'desc' => __( 'Set for minimum display height, in pixels', 'testimonials-widget' ),
 
76
  );
77
 
78
  self::$settings['max_height'] = array(
79
  'section' => 'widget',
80
  'title' => __( 'Maximum Height', 'testimonials-widget' ),
81
  'desc' => __( 'Set for maximum display height, in pixels', 'testimonials-widget' ),
 
82
  );
83
 
84
- self::$settings['refresh_interval'] = array(
85
  'section' => 'widget',
86
- 'title' => __( 'Rotation Speed', 'testimonials-widget' ),
87
- 'desc' => __( 'Number of seconds between testimonial rotations or 0 for no rotation at all refresh', 'testimonials-widget' ),
88
- 'std' => 5,
 
 
 
 
 
 
89
  );
90
 
91
  // General
@@ -94,9 +142,10 @@ class Testimonials_Widget_Settings {
94
  'type' => 'expand_begin',
95
  );
96
 
97
- self::$settings['char_limit'] = array(
98
- 'title' => __( 'Character Limit', 'testimonials-widget' ),
99
- 'desc' => __( 'Number of characters to limit non-single testimonial views to', 'testimonials-widget' ),
 
100
  );
101
 
102
  self::$settings['hide_not_found'] = array(
@@ -114,6 +163,12 @@ class Testimonials_Widget_Settings {
114
  'type' => 'checkbox',
115
  );
116
 
 
 
 
 
 
 
117
  self::$settings['hide_content'] = array(
118
  'title' => __( 'Hide Testimonial Content?', 'testimonials-widget' ),
119
  'type' => 'checkbox',
@@ -154,12 +209,7 @@ class Testimonials_Widget_Settings {
154
  self::$settings['target'] = array(
155
  'title' => __( 'URL Target', 'testimonials-widget' ),
156
  'desc' => __( 'Adds target to all URLs; leave blank if none', 'testimonials-widget' ),
157
- );
158
-
159
- self::$settings['bottom_text'] = array(
160
- 'title' => __( 'Testimonial Bottom Text', 'testimonials-widget' ),
161
- 'desc' => __( 'Custom text or HTML for bottom of testimonials', 'testimonials-widget' ),
162
- 'type' => 'textarea',
163
  );
164
 
165
  self::$settings['paging'] = array(
@@ -173,12 +223,7 @@ class Testimonials_Widget_Settings {
173
  'after' => __( 'After testimonials', 'testimonials-widget' ),
174
  ),
175
  'std' => 1,
176
- );
177
-
178
- self::$settings['remove_hentry'] = array(
179
- 'title' => __( 'Remove `.hentry` CSS?', 'testimonials-widget' ),
180
- 'desc' => __( 'Some themes use class `.hentry` in a manner that breaks Testimonials Widgets CSS', 'testimonials-widget' ),
181
- 'type' => 'checkbox',
182
  );
183
 
184
  self::$settings['general_expand_end'] = array(
@@ -196,12 +241,14 @@ class Testimonials_Widget_Settings {
196
  'section' => 'selection',
197
  'title' => __( 'Category Filter', 'testimonials-widget' ),
198
  'desc' => __( 'Comma separated category slug-names. Ex: category-a, another-category', 'testimonials-widget' ),
 
199
  );
200
 
201
  self::$settings['tags'] = array(
202
  'section' => 'selection',
203
  'title' => __( 'Tags Filter', 'testimonials-widget' ),
204
  'desc' => __( 'Comma separated tag slug-names. Ex: tag-a, another-tag', 'testimonials-widget' ),
 
205
  );
206
 
207
  self::$settings['tags_all'] = array(
@@ -215,12 +262,14 @@ class Testimonials_Widget_Settings {
215
  'section' => 'selection',
216
  'title' => __( 'Include IDs Filter', 'testimonials-widget' ),
217
  'desc' => __( 'Comma separated testimonial IDs. Ex: 3,1,2', 'testimonials-widget' ),
 
218
  );
219
 
220
  self::$settings['exclude'] = array(
221
  'section' => 'selection',
222
  'title' => __( 'Exclude IDs Filter', 'testimonials-widget' ),
223
  'desc' => __( 'Comma separated testimonial IDs. Ex: 3,1,2', 'testimonials-widget' ),
 
224
  );
225
 
226
  self::$settings['limit'] = array(
@@ -228,6 +277,7 @@ class Testimonials_Widget_Settings {
228
  'title' => __( 'Limit', 'testimonials-widget' ),
229
  'desc' => __( 'Number of testimonials to select per instance', 'testimonials-widget' ),
230
  'std' => 10,
 
231
  );
232
 
233
  self::$settings['selection_expand_end'] = array(
@@ -257,11 +307,13 @@ class Testimonials_Widget_Settings {
257
  'choices' => array(
258
  'ID' => __( 'Testimonial ID', 'testimonials-widget' ),
259
  'author' => __( 'Author', 'testimonials-widget' ),
260
- 'title' => __( 'Source', 'testimonials-widget' ),
261
  'date' => __( 'Date', 'testimonials-widget' ),
 
 
262
  'none' => __( 'No order', 'testimonials-widget' ),
263
  ),
264
  'std' => 'ID',
 
265
  );
266
 
267
  self::$settings['meta_key'] = array(
@@ -270,12 +322,14 @@ class Testimonials_Widget_Settings {
270
  'desc' => __( 'Used when "Random Order" is disabled and sorting by a testimonials meta key is needed. Overrides ORDER BY', 'testimonials-widget' ),
271
  'type' => 'select',
272
  'choices' => array(
273
- '' => __( 'None' , 'testimonials-widget'),
274
- 'testimonials-widget-title' => __( 'Title' , 'testimonials-widget'),
275
- 'testimonials-widget-email' => __( 'Email' , 'testimonials-widget'),
276
- 'testimonials-widget-company' => __( 'Company' , 'testimonials-widget'),
277
- 'testimonials-widget-url' => __( 'URL' , 'testimonials-widget'),
 
278
  ),
 
279
  );
280
 
281
  self::$settings['order'] = array(
@@ -287,6 +341,7 @@ class Testimonials_Widget_Settings {
287
  'ASC' => __( 'Ascending', 'testimonials-widget' ),
288
  ),
289
  'std' => 'DESC',
 
290
  );
291
 
292
  self::$settings['ordering_expand_end'] = array(
@@ -296,18 +351,20 @@ class Testimonials_Widget_Settings {
296
 
297
  // Debug
298
  self::$settings['debug_mode'] = array(
299
- 'section' => 'testing',
300
- 'title' => __( 'Debug Mode?' , 'testimonials-widget'),
301
- 'desc' => __( 'Not implemented yet', 'testimonials-widget' ),
302
- 'type' => 'checkbox',
 
303
  );
304
 
305
  // Post Type
306
  self::$settings['allow_comments'] = array(
307
  'section' => 'post_type',
308
- 'title' => __( 'Allow Comments?' , 'testimonials-widget'),
309
- 'desc' => __( 'If checked, allows commenting on testimonial single-view pages', 'testimonials-widget' ),
310
  'type' => 'checkbox',
 
311
  );
312
 
313
  $desc = __( 'URL slug-name for <a href="%1s">testimonials archive</a> page. After changing, you must click "Save Changes" on <a href="%2s">Permalink Settings</a> to update them.', 'testimonials-widget' );
@@ -316,75 +373,113 @@ class Testimonials_Widget_Settings {
316
  $url = admin_url( 'options-permalink.php' );
317
  self::$settings['has_archive'] = array(
318
  'section' => 'post_type',
319
- 'title' => __( 'Archive Page URL' , 'testimonials-widget'),
320
  'desc' => sprintf( $desc, $site_url, $url ),
321
  'std' => 'testimonials',
 
 
322
  );
323
 
324
  $desc = __( 'URL slug-name for testimonial view pages. After changing, you must click "Save Changes" on <a href="%1s">Permalink Settings</a> to update them.', 'testimonials-widget' );
325
  self::$settings['rewrite_slug'] = array(
326
  'section' => 'post_type',
327
- 'title' => __( 'Testimonial Page URL' , 'testimonials-widget'),
328
  'desc' => sprintf( $desc, $url ),
329
  'std' => 'testimonial',
 
 
330
  );
331
 
332
  // Reset
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
333
  self::$settings['reset_defaults'] = array(
334
- 'section' => 'reset',
335
- 'title' => __( 'Reset to Defaults?' , 'testimonials-widget'),
336
- 'type' => 'checkbox',
337
- 'class' => 'warning', // Custom class for CSS
338
- 'desc' => __( 'Check this box to reset options to their defaults' , 'testimonials-widget')
 
 
 
 
 
 
339
  );
340
 
341
  // Reference
342
  if ( false ) {
343
  self::$settings['example_text'] = array(
344
- 'title' => __( 'Example Text Input' , 'testimonials-widget'),
345
- 'desc' => __( 'This is a description for the text input.' , 'testimonials-widget'),
346
- 'std' => 'Default value',
347
  );
348
 
349
  self::$settings['example_textarea'] = array(
350
- 'title' => __( 'Example Textarea Input' , 'testimonials-widget'),
351
- 'desc' => __( 'This is a description for the textarea input.' , 'testimonials-widget'),
352
- 'std' => 'Default value',
353
- 'type' => 'textarea',
354
  );
355
 
356
  self::$settings['example_checkbox'] = array(
357
- 'title' => __( 'Example Checkbox' , 'testimonials-widget'),
358
- 'desc' => __( 'This is a description for the checkbox.' , 'testimonials-widget'),
359
- 'type' => 'checkbox',
360
- 'std' => 1 // Set to 1 to be checked by default, 0 to be unchecked by default.
361
  );
362
 
363
  self::$settings['example_heading'] = array(
364
- 'title' => '', // Not used for headings.
365
- 'desc' => 'Example Heading',
366
- 'type' => 'heading'
367
  );
368
 
369
  self::$settings['example_radio'] = array(
370
- 'title' => __( 'Example Radio' , 'testimonials-widget'),
371
- 'desc' => __( 'This is a description for the radio buttons.' , 'testimonials-widget'),
372
- 'type' => 'radio',
373
- 'choices' => array(
374
- 'choice1' => 'Choice 1',
375
- 'choice2' => 'Choice 2',
376
- 'choice3' => 'Choice 3'
377
  )
378
  );
379
 
380
  self::$settings['example_select'] = array(
381
- 'title' => __( 'Example Select' , 'testimonials-widget'),
382
- 'desc' => __( 'This is a description for the drop-down.' , 'testimonials-widget'),
383
- 'type' => 'select',
384
- 'choices' => array(
385
- 'choice1' => 'Other Choice 1',
386
- 'choice2' => 'Other Choice 2',
387
- 'choice3' => 'Other Choice 3'
388
  )
389
  );
390
  }
@@ -397,12 +492,28 @@ class Testimonials_Widget_Settings {
397
  }
398
 
399
 
400
- public static function get_defaults() {
401
  if ( empty( self::$defaults ) )
402
- self::load_settings();
 
 
 
 
 
 
 
403
 
404
  foreach ( self::$settings as $id => $parts ) {
405
- self::$defaults[$id] = isset( $parts[ 'std' ] ) ? $parts[ 'std' ] : '';
 
 
 
 
 
 
 
 
 
406
  }
407
 
408
  return self::$defaults;
@@ -411,7 +522,7 @@ class Testimonials_Widget_Settings {
411
 
412
  public static function get_settings() {
413
  if ( empty( self::$settings ) )
414
- self::load_settings();
415
 
416
  return self::$settings;
417
  }
@@ -462,7 +573,7 @@ class Testimonials_Widget_Settings {
462
  public function display_page() {
463
  echo '<div class="wrap">
464
  <div class="icon32" id="icon-options-general"></div>
465
- <h2>' . __( 'Testimonials Widget Settings' , 'testimonials-widget') . '</h2>';
466
 
467
  echo '<form action="options.php" method="post">';
468
 
@@ -481,7 +592,7 @@ class Testimonials_Widget_Settings {
481
  echo '</div>';
482
 
483
  echo '
484
- <p class="submit"><input name="Submit" type="submit" class="button-primary" value="' . __( 'Save Changes' , 'testimonials-widget') . '" /></p>
485
  </form>
486
  ';
487
 
@@ -489,10 +600,10 @@ class Testimonials_Widget_Settings {
489
  <p>When ready, <a href="'.get_admin_url().'edit.php?post_type=testimonials-widget">view</a>
490
  or <a href="'.get_admin_url().'post-new.php?post_type=testimonials-widget">add</a> testimonials.</p>
491
 
492
- <p>If you like this plugin, <a href="http://aihr.us/about-aihrus/donate/" title="Donate for Good Karma">please donate</a> or <a href="http://aihr.us/wordpress/testimonials-widget-premium/" title="purchase Testimonials Widget Premium">purchase Testimonials Widget Premium</a> to help fund further development and <a href="http://wordpress.org/support/plugin/testimonials-widget" title="Support forums">support</a>.</p>
493
  ';
494
 
495
- $text = __( 'Copyright &copy;%1$s %2$s.' , 'testimonials-widget');
496
  $link = '<a href="http://aihr.us">Aihrus</a>';
497
  $copyright = '<div class="copyright">' . sprintf( $text, date( 'Y' ), $link ) . '</div>';
498
  echo $copyright;
@@ -576,15 +687,23 @@ EOD;
576
  }
577
 
578
 
579
- public static function display_setting( $args = array() ) {
 
 
580
  extract( $args );
581
 
582
- $options = get_option( self::id );
 
 
 
 
 
583
 
584
- if ( ! isset( $options[$id] ) && $type != 'checkbox' )
585
  $options[$id] = $std;
586
- elseif ( ! isset( $options[$id] ) )
587
  $options[$id] = 0;
 
588
 
589
  $field_class = '';
590
  if ( ! empty( $class ) )
@@ -592,89 +711,112 @@ EOD;
592
 
593
  switch ( $type ) {
594
 
595
- case 'heading':
596
- echo '</td></tr><tr valign="top"><td colspan="2"><h4>' . $desc . '</h4>';
 
 
 
 
597
  break;
598
 
599
- case 'checkbox':
600
- echo '<input class="checkbox' . $field_class . '" type="checkbox" id="' . $id . '" name="' . self::id . '[' . $id . ']" value="1" ' . checked( $options[$id], 1, false ) . ' /> ';
601
 
602
  if ( ! empty( $desc ) )
603
- echo '<label for="' . $id . '"><span class="description">' . $desc . '</span></label>';
604
 
 
 
 
 
605
  break;
606
 
607
- case 'select':
608
- echo '<select class="select' . $field_class . '" name="' . self::id . '[' . $id . ']">';
609
 
610
- foreach ( $choices as $value => $label )
611
- echo '<option value="' . esc_attr( $value ) . '"' . selected( $options[$id], $value, false ) . '>' . $label . '</option>';
612
 
613
- echo '</select>';
 
614
 
615
  if ( ! empty( $desc ) )
616
- echo '<br /><span class="description">' . $desc . '</span>';
617
 
618
  break;
619
 
620
  case 'radio':
621
- $i = 0;
622
- $count_options = count( $options ) - 1;
623
  foreach ( $choices as $value => $label ) {
624
- echo '<input class="radio' . $field_class . '" type="radio" name="' . self::id . '[' . $id . ']" id="' . $id . $i . '" value="' . esc_attr( $value ) . '" ' . checked( $options[$id], $value, false ) . '> <label for="' . $id . $i . '">' . $label . '</label>';
625
- if ( $i < $count_options )
626
- echo '<br />';
 
 
627
  $i++;
628
  }
629
 
630
  if ( ! empty( $desc ) )
631
- echo '<br /><span class="description">' . $desc . '</span>';
632
 
633
  break;
634
 
635
- case 'textarea':
636
- echo '<textarea class="' . $field_class . '" id="' . $id . '" name="' . self::id . '[' . $id . ']" placeholder="' . $std . '" rows="5" cols="30">' . wp_htmledit_pre( $options[$id] ) . '</textarea>';
637
 
638
  if ( ! empty( $desc ) )
639
- echo '<br /><span class="description">' . $desc . '</span>';
640
 
641
  break;
642
 
643
- case 'password':
644
- echo '<input class="regular-text' . $field_class . '" type="password" id="' . $id . '" name="' . self::id . '[' . $id . ']" value="' . esc_attr( $options[$id] ) . '" />';
645
-
646
- if ( ! empty( $desc ) )
647
- echo '<br /><span class="description">' . $desc . '</span>';
648
 
649
- break;
 
650
 
651
- case 'readonly':
652
- echo '<input class="regular-text' . $field_class . '" type="text" id="' . $id . '" name="' . self::id . '[' . $id . ']" value="' . esc_attr( $options[$id] ) . '" readonly="readonly" />';
653
 
654
  if ( ! empty( $desc ) )
655
- echo '<br /><span class="description">' . $desc . '</span>';
656
 
657
  break;
658
 
659
  case 'text':
660
- echo '<input class="regular-text' . $field_class . '" type="text" id="' . $id . '" name="' . self::id . '[' . $id . ']" placeholder="' . $std . '" value="' . esc_attr( $options[$id] ) . '" />';
661
 
662
  if ( ! empty( $desc ) )
663
- echo '<br /><span class="description">' . $desc . '</span>';
664
 
665
  break;
666
 
 
 
 
 
 
 
 
 
667
  default:
668
  break;
669
  }
 
 
 
 
 
 
670
  }
671
 
672
 
673
  public function initialize_settings() {
674
- $defaults = self::get_defaults();
675
- $defaults['version'] = self::$version;
 
 
676
 
677
- update_option( self::id, $defaults );
678
  }
679
 
680
 
@@ -706,58 +848,170 @@ EOD;
706
  }
707
 
708
 
709
- public static function validate_settings( $input ) {
710
- if ( ! empty( $input['reset_defaults'] ) ) {
711
- foreach ( self::$defaults as $id => $std ) {
712
- $input[$id] = $std;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
713
  }
714
 
715
- unset( $input['reset_defaults'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
716
  }
717
 
718
- $input['allow_comments'] = empty( $input['allow_comments'] ) ? 0 : self::is_true_int( $input['allow_comments'] );
719
- $input['bottom_text'] = wp_kses_post( $input['bottom_text'] );
720
- $input['category'] = ( empty( $input['category'] ) || preg_match( '#^[\w-]+(,\s?[\w-]+)*$#', $input['category'] ) ) ? preg_replace( "#\s#", '', $input['category'] ) : self::$defaults['category'];
721
- $input['char_limit'] = ( empty( $input['char_limit'] ) || ( is_numeric( $input['char_limit'] ) && 0 <= $input['char_limit'] ) ) ? $input['char_limit'] : self::$defaults['char_limit'];
722
- $input['exclude'] = ( empty( $input['exclude'] ) || preg_match( '#^\d+(,\d+)*$#', $input['exclude'] ) ) ? $input['exclude'] : self::$defaults['exclude'];
723
- $input['has_archive'] = sanitize_title( $input['has_archive'] );
724
- $input['hide_company'] = empty( $input['hide_company'] ) ? 0 : self::is_true_int( $input['hide_company'] );
725
- $input['hide_content'] = empty( $input['hide_content'] ) ? 0 : self::is_true_int( $input['hide_content'] );
726
- $input['hide_email'] = empty( $input['hide_email'] ) ? 0 : self::is_true_int( $input['hide_email'] );
727
- $input['hide_gravatar'] = empty( $input['hide_gravatar'] ) ? 0 : self::is_true_int( $input['hide_gravatar'] );
728
- $input['hide_image'] = empty( $input['hide_image'] ) ? 0 : self::is_true_int( $input['hide_image'] );
729
- $input['hide_location'] = empty( $input['hide_location'] ) ? 0 : self::is_true_int( $input['hide_location'] );
730
- $input['hide_not_found'] = empty( $input['hide_not_found'] ) ? 0 : self::is_true_int( $input['hide_not_found'] );
731
- $input['hide_source'] = empty( $input['hide_source'] ) ? 0 : self::is_true_int( $input['hide_source'] );
732
- $input['hide_title'] = empty( $input['hide_title'] ) ? 0 : self::is_true_int( $input['hide_title'] );
733
- $input['hide_url'] = empty( $input['hide_url'] ) ? 0 : self::is_true_int( $input['hide_url'] );
734
- $input['ids'] = ( empty( $input['ids'] ) || preg_match( '#^\d+(,\d+)*$#', $input['ids'] ) ) ? $input['ids'] : self::$defaults['ids'];
735
- $input['keep_whitespace'] = empty( $input['keep_whitespace'] ) ? 0 : self::is_true_int( $input['keep_whitespace'] );
736
- $input['limit'] = ( empty( $input['limit'] ) || ( is_numeric( $input['limit'] ) && 0 < $input['limit'] ) ) ? $input['limit'] : self::$defaults['limit'];
737
- $input['max_height'] = ( empty( $input['max_height'] ) || ( is_numeric( $input['max_height'] ) && 0 <= $input['max_height'] ) ) ? $input['max_height'] : self::$defaults['max_height'];
738
- $input['meta_key'] = ( empty( $input['meta_key'] ) || preg_match( '#^[\w-,]+$#', $input['meta_key'] ) ) ? $input['meta_key'] : self::$defaults['meta_key'];
739
- $input['min_height'] = ( empty( $input['min_height'] ) || ( is_numeric( $input['min_height'] ) && 0 <= $input['min_height'] ) ) ? $input['min_height'] : self::$defaults['min_height'];
740
- $input['order'] = ( empty( $input['order'] ) || preg_match( '#^desc|asc$#i', $input['order'] ) ) ? $input['order'] : self::$defaults['order'];
741
- $input['orderby'] = ( empty( $input['orderby'] ) || preg_match( '#^\w+$#', $input['orderby'] ) ) ? $input['orderby'] : self::$defaults['orderby'];
742
- $input['random'] = empty( $input['random'] ) ? 0 : self::is_true_int( $input['random'] );
743
- $input['refresh_interval'] = ( empty( $input['refresh_interval'] ) || ( is_numeric( $input['refresh_interval'] ) && 0 <= $input['refresh_interval'] ) ) ? $input['refresh_interval'] : self::$defaults['refresh_interval'];
744
- $input['remove_hentry'] = empty( $input['remove_hentry'] ) ? 0 : self::is_true_int( $input['remove_hentry'] );
745
- $input['rewrite_slug'] = sanitize_title( $input['rewrite_slug'] );
746
- $input['tags'] = ( empty( $input['tags'] ) || preg_match( '#^[\w-]+(,\s?[\w-]+)*$#', $input['tags'] ) ) ? preg_replace( "#\s#", '', $input['tags'] ) : self::$defaults['tags'];
747
- $input['tags_all'] = empty( $input['tags_all'] ) ? 0 : self::is_true_int( $input['tags_all'] );
748
- $input['target'] = ( empty( $input['target'] ) || preg_match( '#^\w+$#', $input['target'] ) ) ? $input['target'] : self::$defaults['target'];
749
- $input['title'] = wp_kses_post( $input['title'] );
750
- $input['title_link'] = wp_kses_data( trim( $input['title_link'] ) );
751
  $input['version'] = self::$version;
752
 
753
- $input = apply_filters( 'testimonials_widget_validate_settings', $input );
 
 
 
 
 
 
 
 
 
754
 
755
- return $input;
756
  }
757
 
758
 
759
- public static function is_true_int( $value = null ) {
760
- return self::is_true( $value, false );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
761
  }
762
 
763
 
@@ -781,10 +1035,12 @@ $Testimonials_Widget_Settings = new Testimonials_Widget_Settings();
781
 
782
 
783
  function tw_get_options() {
784
- $options = get_option( Testimonials_Widget_Settings::id, false );
785
 
786
- if ( false === $options )
787
- return Testimonials_Widget_Settings::get_defaults();
 
 
788
 
789
  return $options;
790
  }
9
  const id = 'testimonialswidget_settings';
10
 
11
  public static $default = array(
12
+ 'backwards' => array(
13
+ 'version' => '', // below this version number, use std
14
+ 'std' => ''
15
+ ),
16
+ 'choices' => array(), // key => value
17
+ 'class' => '',
18
+ 'desc' => '',
19
+ 'id' => 'default_field',
20
+ 'section' => 'general',
21
+ 'std' => '', // default key or value
22
+ 'title' => '',
23
+ 'type' => 'text', // textarea, checkbox, radio, select, hidden, heading, password, expand_begin, expand_end
24
+ 'validate' => '', // required, term, slug, slugs, ids, order, single paramater PHP functions
25
+ 'widget' => 1, // show in widget options, 0 off
26
  );
27
  public static $defaults = array();
28
  public static $sections = array();
31
 
32
 
33
  public function __construct() {
 
 
 
34
  add_action( 'admin_init', array( &$this, 'admin_init' ) );
35
  add_action( 'admin_menu', array( &$this, 'admin_menu' ) );
36
+ add_action( 'init', array( &$this, 'init' ) );
37
  load_plugin_textdomain( 'testimonials-widget', false, '/testimonials-widget/languages/' );
38
  }
39
 
40
 
41
+ public function init() {
42
+ self::sections();
43
+ self::settings();
44
+ }
45
+
46
+
47
+ public static function sections() {
48
+ self::$sections['general'] = __( 'General', 'testimonials-widget' );
49
+ self::$sections['selection'] = __( 'Selection', 'testimonials-widget' );
50
+ self::$sections['ordering'] = __( 'Ordering', 'testimonials-widget' );
51
+ self::$sections['widget'] = __( 'Widget', 'testimonials-widget' );
52
+ // self::$sections['testing'] = __( 'Testing', 'testimonials-widget' );
53
+ self::$sections['post_type'] = __( 'Post Type', 'testimonials-widget' );
54
+ self::$sections['reset'] = __( 'Compatibility & Reset', 'testimonials-widget' );
55
+ self::$sections['about'] = __( 'About Testimonials Widget', 'testimonials-widget' );
56
 
57
  self::$sections = apply_filters( 'testimonials_widget_sections', self::$sections );
58
  }
59
 
60
 
61
+ public static function settings() {
62
  // Widget
63
  self::$settings['title'] = array(
64
  'section' => 'widget',
65
  'title' => __( 'Widget Title', 'testimonials-widget' ),
66
  'std' => __( 'Testimonials', 'testimonials-widget' ),
67
+ 'validate' => 'wp_kses_post',
68
  );
69
 
70
  self::$settings['title_link'] = array(
71
  'section' => 'widget',
72
  'title' => __( 'Title Link', 'testimonials-widget' ),
73
  'desc' => __( 'URL or Post ID to link widget title to. Ex: 123 or http://example.com', 'testimonials-widget' ),
74
+ 'validate' => 'wp_kses_data',
75
+ );
76
+
77
+ self::$settings['char_limit'] = array(
78
+ 'section' => 'widget',
79
+ 'title' => __( 'Character Limit', 'testimonials-widget' ),
80
+ 'desc' => __( 'Number of characters to limit non-single testimonial views to', 'testimonials-widget' ),
81
+ 'validate' => 'absint',
82
+ );
83
+
84
+ self::$settings['height'] = array(
85
+ 'section' => 'widget',
86
+ 'title' => __( 'Height', 'testimonials-widget' ),
87
+ 'desc' => __( 'Testimonials height, in pixels. Overrides minimum and maximum height', 'testimonials-widget' ),
88
+ 'validate' => 'min1',
89
+ );
90
+
91
+ self::$settings['refresh_interval'] = array(
92
+ 'section' => 'widget',
93
+ 'title' => __( 'Rotation Speed', 'testimonials-widget' ),
94
+ 'desc' => __( 'Number of seconds between testimonial rotations or 0 for no rotation at all refresh', 'testimonials-widget' ),
95
+ 'std' => 5,
96
+ 'validate' => 'absint',
97
+ );
98
+
99
+ self::$settings['widget_expand_begin'] = array(
100
+ 'section' => 'widget',
101
+ 'desc' => __( 'Additional Widget Options', 'testimonials-widget' ),
102
+ 'type' => 'expand_begin',
103
  );
104
 
105
  self::$settings['keep_whitespace'] = array(
113
  'section' => 'widget',
114
  'title' => __( 'Minimum Height', 'testimonials-widget' ),
115
  'desc' => __( 'Set for minimum display height, in pixels', 'testimonials-widget' ),
116
+ 'validate' => 'min1',
117
  );
118
 
119
  self::$settings['max_height'] = array(
120
  'section' => 'widget',
121
  'title' => __( 'Maximum Height', 'testimonials-widget' ),
122
  'desc' => __( 'Set for maximum display height, in pixels', 'testimonials-widget' ),
123
+ 'validate' => 'min1',
124
  );
125
 
126
+ self::$settings['bottom_text'] = array(
127
  'section' => 'widget',
128
+ 'title' => __( 'Testimonial Bottom Text', 'testimonials-widget' ),
129
+ 'desc' => __( 'Custom text or HTML for bottom of testimonials', 'testimonials-widget' ),
130
+ 'type' => 'textarea',
131
+ 'validate' => 'wp_kses_post',
132
+ );
133
+
134
+ self::$settings['widget_expand_end'] = array(
135
+ 'section' => 'widget',
136
+ 'type' => 'expand_end',
137
  );
138
 
139
  // General
142
  'type' => 'expand_begin',
143
  );
144
 
145
+ self::$settings['disable_quotes'] = array(
146
+ 'title' => __( 'Hide built-in quotes?', 'testimonials-widget' ),
147
+ 'desc' => __( 'Remove open and close quote span tags surrounding testimonial content', 'testimonials-widget' ),
148
+ 'type' => 'checkbox',
149
  );
150
 
151
  self::$settings['hide_not_found'] = array(
163
  'type' => 'checkbox',
164
  );
165
 
166
+ self::$settings['hide_image_single'] = array(
167
+ 'title' => __( 'Hide Image in Single View?', 'testimonials-widget' ),
168
+ 'type' => 'checkbox',
169
+ 'widget' => 0,
170
+ );
171
+
172
  self::$settings['hide_content'] = array(
173
  'title' => __( 'Hide Testimonial Content?', 'testimonials-widget' ),
174
  'type' => 'checkbox',
209
  self::$settings['target'] = array(
210
  'title' => __( 'URL Target', 'testimonials-widget' ),
211
  'desc' => __( 'Adds target to all URLs; leave blank if none', 'testimonials-widget' ),
212
+ 'validate' => 'term',
 
 
 
 
 
213
  );
214
 
215
  self::$settings['paging'] = array(
223
  'after' => __( 'After testimonials', 'testimonials-widget' ),
224
  ),
225
  'std' => 1,
226
+ 'widget' => 0,
 
 
 
 
 
227
  );
228
 
229
  self::$settings['general_expand_end'] = array(
241
  'section' => 'selection',
242
  'title' => __( 'Category Filter', 'testimonials-widget' ),
243
  'desc' => __( 'Comma separated category slug-names. Ex: category-a, another-category', 'testimonials-widget' ),
244
+ 'validate' => 'slugs',
245
  );
246
 
247
  self::$settings['tags'] = array(
248
  'section' => 'selection',
249
  'title' => __( 'Tags Filter', 'testimonials-widget' ),
250
  'desc' => __( 'Comma separated tag slug-names. Ex: tag-a, another-tag', 'testimonials-widget' ),
251
+ 'validate' => 'slugs',
252
  );
253
 
254
  self::$settings['tags_all'] = array(
262
  'section' => 'selection',
263
  'title' => __( 'Include IDs Filter', 'testimonials-widget' ),
264
  'desc' => __( 'Comma separated testimonial IDs. Ex: 3,1,2', 'testimonials-widget' ),
265
+ 'validate' => 'ids',
266
  );
267
 
268
  self::$settings['exclude'] = array(
269
  'section' => 'selection',
270
  'title' => __( 'Exclude IDs Filter', 'testimonials-widget' ),
271
  'desc' => __( 'Comma separated testimonial IDs. Ex: 3,1,2', 'testimonials-widget' ),
272
+ 'validate' => 'ids',
273
  );
274
 
275
  self::$settings['limit'] = array(
277
  'title' => __( 'Limit', 'testimonials-widget' ),
278
  'desc' => __( 'Number of testimonials to select per instance', 'testimonials-widget' ),
279
  'std' => 10,
280
+ 'validate' => 'nozero',
281
  );
282
 
283
  self::$settings['selection_expand_end'] = array(
307
  'choices' => array(
308
  'ID' => __( 'Testimonial ID', 'testimonials-widget' ),
309
  'author' => __( 'Author', 'testimonials-widget' ),
 
310
  'date' => __( 'Date', 'testimonials-widget' ),
311
+ 'menu_order' => __( 'Menu Order', 'testimonials-widget' ),
312
+ 'title' => __( 'Source', 'testimonials-widget' ),
313
  'none' => __( 'No order', 'testimonials-widget' ),
314
  ),
315
  'std' => 'ID',
316
+ 'validate' => 'term',
317
  );
318
 
319
  self::$settings['meta_key'] = array(
322
  'desc' => __( 'Used when "Random Order" is disabled and sorting by a testimonials meta key is needed. Overrides ORDER BY', 'testimonials-widget' ),
323
  'type' => 'select',
324
  'choices' => array(
325
+ '' => __( 'None', 'testimonials-widget' ),
326
+ 'testimonials-widget-title' => __( 'Title', 'testimonials-widget' ),
327
+ 'testimonials-widget-email' => __( 'Email', 'testimonials-widget' ),
328
+ 'testimonials-widget-location' => __( 'Location', 'testimonials-widget' ),
329
+ 'testimonials-widget-company' => __( 'Company', 'testimonials-widget' ),
330
+ 'testimonials-widget-url' => __( 'URL', 'testimonials-widget' ),
331
  ),
332
+ 'validate' => 'slug',
333
  );
334
 
335
  self::$settings['order'] = array(
341
  'ASC' => __( 'Ascending', 'testimonials-widget' ),
342
  ),
343
  'std' => 'DESC',
344
+ 'validate' => 'order',
345
  );
346
 
347
  self::$settings['ordering_expand_end'] = array(
351
 
352
  // Debug
353
  self::$settings['debug_mode'] = array(
354
+ 'section' => 'testing',
355
+ 'title' => __( 'Debug Mode?', 'testimonials-widget' ),
356
+ 'desc' => __( 'Not implemented yet', 'testimonials-widget' ),
357
+ 'type' => 'checkbox',
358
+ 'widget' => 0,
359
  );
360
 
361
  // Post Type
362
  self::$settings['allow_comments'] = array(
363
  'section' => 'post_type',
364
+ 'title' => __( 'Allow Comments?', 'testimonials-widget' ),
365
+ 'desc' => __( 'Only affects the Testimonials Widget post edit page. Your theme controls the front-end view.', 'testimonials-widget' ),
366
  'type' => 'checkbox',
367
+ 'widget' => 0,
368
  );
369
 
370
  $desc = __( 'URL slug-name for <a href="%1s">testimonials archive</a> page. After changing, you must click "Save Changes" on <a href="%2s">Permalink Settings</a> to update them.', 'testimonials-widget' );
373
  $url = admin_url( 'options-permalink.php' );
374
  self::$settings['has_archive'] = array(
375
  'section' => 'post_type',
376
+ 'title' => __( 'Archive Page URL', 'testimonials-widget' ),
377
  'desc' => sprintf( $desc, $site_url, $url ),
378
  'std' => 'testimonials',
379
+ 'validate' => 'sanitize_title',
380
+ 'widget' => 0,
381
  );
382
 
383
  $desc = __( 'URL slug-name for testimonial view pages. After changing, you must click "Save Changes" on <a href="%1s">Permalink Settings</a> to update them.', 'testimonials-widget' );
384
  self::$settings['rewrite_slug'] = array(
385
  'section' => 'post_type',
386
+ 'title' => __( 'Testimonial Page URL', 'testimonials-widget' ),
387
  'desc' => sprintf( $desc, $url ),
388
  'std' => 'testimonial',
389
+ 'validate' => 'sanitize_title',
390
+ 'widget' => 0,
391
  );
392
 
393
  // Reset
394
+ self::$settings['reset_expand_begin'] = array(
395
+ 'section' => 'reset',
396
+ 'desc' => __( 'Compatiblity Options', 'testimonials-widget' ),
397
+ 'type' => 'expand_begin',
398
+ );
399
+
400
+ self::$settings['remove_hentry'] = array(
401
+ 'section' => 'reset',
402
+ 'title' => __( 'Remove `.hentry` CSS?', 'testimonials-widget' ),
403
+ 'desc' => __( 'Pre 2.6.4. Some themes use class `.hentry` in a manner that breaks Testimonials Widgets CSS', 'testimonials-widget' ),
404
+ 'type' => 'checkbox',
405
+ 'backwards' => array(
406
+ 'version' => '2.6.4',
407
+ 'std' => 1
408
+ ),
409
+ );
410
+
411
+ self::$settings['use_quote_tag'] = array(
412
+ 'section' => 'reset',
413
+ 'title' => __( 'Use `&lt;q&gt;` tag?', 'testimonials-widget' ),
414
+ 'desc' => __( 'Pre 2.11.0. Not HTML5 compliant', 'testimonials-widget' ),
415
+ 'type' => 'checkbox',
416
+ 'backwards' => array(
417
+ 'version' => '2.11.0',
418
+ 'std' => 1
419
+ ),
420
+ );
421
+
422
  self::$settings['reset_defaults'] = array(
423
+ 'section' => 'reset',
424
+ 'title' => __( 'Reset to Defaults?', 'testimonials-widget' ),
425
+ 'type' => 'checkbox',
426
+ 'class' => 'warning', // Custom class for CSS
427
+ 'desc' => __( 'Check this box to reset options to their defaults', 'testimonials-widget' ),
428
+ 'widget' => 0,
429
+ );
430
+
431
+ self::$settings['reset_expand_end'] = array(
432
+ 'section' => 'reset',
433
+ 'type' => 'expand_end',
434
  );
435
 
436
  // Reference
437
  if ( false ) {
438
  self::$settings['example_text'] = array(
439
+ 'title' => __( 'Example Text Input', 'testimonials-widget' ),
440
+ 'desc' => __( 'This is a description for the text input.', 'testimonials-widget' ),
441
+ 'std' => 'Default value',
442
  );
443
 
444
  self::$settings['example_textarea'] = array(
445
+ 'title' => __( 'Example Textarea Input', 'testimonials-widget' ),
446
+ 'desc' => __( 'This is a description for the textarea input.', 'testimonials-widget' ),
447
+ 'std' => 'Default value',
448
+ 'type' => 'textarea',
449
  );
450
 
451
  self::$settings['example_checkbox'] = array(
452
+ 'title' => __( 'Example Checkbox', 'testimonials-widget' ),
453
+ 'desc' => __( 'This is a description for the checkbox.', 'testimonials-widget' ),
454
+ 'type' => 'checkbox',
455
+ 'std' => 1 // Set to 1 to be checked by default, 0 to be unchecked by default.
456
  );
457
 
458
  self::$settings['example_heading'] = array(
459
+ 'title' => '', // Not used for headings.
460
+ 'desc' => 'Example Heading',
461
+ 'type' => 'heading'
462
  );
463
 
464
  self::$settings['example_radio'] = array(
465
+ 'title' => __( 'Example Radio', 'testimonials-widget' ),
466
+ 'desc' => __( 'This is a description for the radio buttons.', 'testimonials-widget' ),
467
+ 'type' => 'radio',
468
+ 'choices' => array(
469
+ 'choice1' => 'Choice 1',
470
+ 'choice2' => 'Choice 2',
471
+ 'choice3' => 'Choice 3'
472
  )
473
  );
474
 
475
  self::$settings['example_select'] = array(
476
+ 'title' => __( 'Example Select', 'testimonials-widget' ),
477
+ 'desc' => __( 'This is a description for the drop-down.', 'testimonials-widget' ),
478
+ 'type' => 'select',
479
+ 'choices' => array(
480
+ 'choice1' => 'Other Choice 1',
481
+ 'choice2' => 'Other Choice 2',
482
+ 'choice3' => 'Other Choice 3'
483
  )
484
  );
485
  }
492
  }
493
 
494
 
495
+ public static function get_defaults( $mode = null ) {
496
  if ( empty( self::$defaults ) )
497
+ self::settings();
498
+
499
+ $do_backwards = false;
500
+ if ( 'backwards' == $mode ) {
501
+ $old_version = tw_get_option( 'version' );
502
+ if ( ! empty( $old_version ) )
503
+ $do_backwards = true;
504
+ }
505
 
506
  foreach ( self::$settings as $id => $parts ) {
507
+ $std = isset( $parts['std'] ) ? $parts['std'] : '';
508
+ if ( $do_backwards ) {
509
+ $version = ! empty( $parts['backwards']['version'] ) ? $parts['backwards']['version'] : false;
510
+ if ( ! empty( $version ) ) {
511
+ if ( $old_version < $version )
512
+ $std = $parts['backwards']['std'];
513
+ }
514
+ }
515
+
516
+ self::$defaults[ $id ] = $std;
517
  }
518
 
519
  return self::$defaults;
522
 
523
  public static function get_settings() {
524
  if ( empty( self::$settings ) )
525
+ self::settings();
526
 
527
  return self::$settings;
528
  }
573
  public function display_page() {
574
  echo '<div class="wrap">
575
  <div class="icon32" id="icon-options-general"></div>
576
+ <h2>' . __( 'Testimonials Widget Settings', 'testimonials-widget' ) . '</h2>';
577
 
578
  echo '<form action="options.php" method="post">';
579
 
592
  echo '</div>';
593
 
594
  echo '
595
+ <p class="submit"><input name="Submit" type="submit" class="button-primary" value="' . __( 'Save Changes', 'testimonials-widget' ) . '" /></p>
596
  </form>
597
  ';
598
 
600
  <p>When ready, <a href="'.get_admin_url().'edit.php?post_type=testimonials-widget">view</a>
601
  or <a href="'.get_admin_url().'post-new.php?post_type=testimonials-widget">add</a> testimonials.</p>
602
 
603
+ <p>If you like this plugin, <a href="http://aihr.us/about-aihrus/donate/" title="Donate for Good Karma">please donate</a> or <a href="http://aihr.us/testimonials-widget-premium/" title="purchase Testimonials Widget Premium">purchase Testimonials Widget Premium</a> to help fund further development and <a href="http://wordpress.org/support/plugin/testimonials-widget" title="Support forums">support</a>.</p>
604
  ';
605
 
606
+ $text = __( 'Copyright &copy;%1$s %2$s.', 'testimonials-widget' );
607
  $link = '<a href="http://aihr.us">Aihrus</a>';
608
  $copyright = '<div class="copyright">' . sprintf( $text, date( 'Y' ), $link ) . '</div>';
609
  echo $copyright;
687
  }
688
 
689
 
690
+ public static function display_setting( $args = array(), $do_echo = true, $input = null ) {
691
+ $content = '';
692
+
693
  extract( $args );
694
 
695
+ if ( is_null( $input ) ) {
696
+ $options = get_option( self::id );
697
+ } else {
698
+ $options = array();
699
+ $options[$id] = $input;
700
+ }
701
 
702
+ if ( ! isset( $options[$id] ) && $type != 'checkbox' ) {
703
  $options[$id] = $std;
704
+ } elseif ( ! isset( $options[$id] ) ) {
705
  $options[$id] = 0;
706
+ }
707
 
708
  $field_class = '';
709
  if ( ! empty( $class ) )
711
 
712
  switch ( $type ) {
713
 
714
+ case 'checkbox':
715
+ $content .= '<input class="checkbox' . $field_class . '" type="checkbox" id="' . $id . '" name="' . self::id . '[' . $id . ']" value="1" ' . checked( $options[$id], 1, false ) . ' /> ';
716
+
717
+ if ( ! empty( $desc ) )
718
+ $content .= '<label for="' . $id . '"><span class="description">' . $desc . '</span></label>';
719
+
720
  break;
721
 
722
+ case 'file':
723
+ $content .= '<input class="regular-text' . $field_class . '" type="file" id="' . $id . '" name="' . self::id . '[' . $id . ']" />';
724
 
725
  if ( ! empty( $desc ) )
726
+ $content .= '<br /><span class="description">' . $desc . '</span>';
727
 
728
+ break;
729
+
730
+ case 'heading':
731
+ $content .= '</td></tr><tr valign="top"><td colspan="2"><h4>' . $desc . '</h4>';
732
  break;
733
 
734
+ case 'hidden':
735
+ $content .= '<input type="hidden" id="' . $id . '" name="' . self::id . '[' . $id . ']" value="' . esc_attr( $options[$id] ) . '" />';
736
 
737
+ break;
 
738
 
739
+ case 'password':
740
+ $content .= '<input class="regular-text' . $field_class . '" type="password" id="' . $id . '" name="' . self::id . '[' . $id . ']" value="' . esc_attr( $options[$id] ) . '" />';
741
 
742
  if ( ! empty( $desc ) )
743
+ $content .= '<br /><span class="description">' . $desc . '</span>';
744
 
745
  break;
746
 
747
  case 'radio':
748
+ $i = 1;
749
+ $count_choices = count( $choices );
750
  foreach ( $choices as $value => $label ) {
751
+ $content .= '<input class="radio' . $field_class . '" type="radio" name="' . self::id . '[' . $id . ']" id="' . $id . $i . '" value="' . esc_attr( $value ) . '" ' . checked( $options[$id], $value, false ) . '> <label for="' . $id . $i . '">' . $label . '</label>';
752
+
753
+ if ( $i < $count_choices )
754
+ $content .= '<br />';
755
+
756
  $i++;
757
  }
758
 
759
  if ( ! empty( $desc ) )
760
+ $content .= '<br /><span class="description">' . $desc . '</span>';
761
 
762
  break;
763
 
764
+ case 'readonly':
765
+ $content .= '<input class="regular-text' . $field_class . '" type="text" id="' . $id . '" name="' . self::id . '[' . $id . ']" value="' . esc_attr( $options[$id] ) . '" readonly="readonly" />';
766
 
767
  if ( ! empty( $desc ) )
768
+ $content .= '<br /><span class="description">' . $desc . '</span>';
769
 
770
  break;
771
 
772
+ case 'select':
773
+ $content .= '<select class="select' . $field_class . '" name="' . self::id . '[' . $id . ']">';
 
 
 
774
 
775
+ foreach ( $choices as $value => $label )
776
+ $content .= '<option value="' . esc_attr( $value ) . '"' . selected( $options[$id], $value, false ) . '>' . $label . '</option>';
777
 
778
+ $content .= '</select>';
 
779
 
780
  if ( ! empty( $desc ) )
781
+ $content .= '<br /><span class="description">' . $desc . '</span>';
782
 
783
  break;
784
 
785
  case 'text':
786
+ $content .= '<input class="regular-text' . $field_class . '" type="text" id="' . $id . '" name="' . self::id . '[' . $id . ']" placeholder="' . $std . '" value="' . esc_attr( $options[$id] ) . '" />';
787
 
788
  if ( ! empty( $desc ) )
789
+ $content .= '<br /><span class="description">' . $desc . '</span>';
790
 
791
  break;
792
 
793
+ case 'textarea':
794
+ $content .= '<textarea class="' . $field_class . '" id="' . $id . '" name="' . self::id . '[' . $id . ']" placeholder="' . $std . '" rows="5" cols="30">' . wp_htmledit_pre( $options[$id] ) . '</textarea>';
795
+
796
+ if ( ! empty( $desc ) )
797
+ $content .= '<br /><span class="description">' . $desc . '</span>';
798
+
799
+ break;
800
+
801
  default:
802
  break;
803
  }
804
+
805
+ if ( $do_echo ) {
806
+ echo $content;
807
+ } else {
808
+ return $content;
809
+ }
810
  }
811
 
812
 
813
  public function initialize_settings() {
814
+ $defaults = self::get_defaults( 'backwards' );
815
+ $current = get_option( self::id );
816
+ $current = wp_parse_args( $current, $defaults );
817
+ $current['version'] = self::$version;
818
 
819
+ update_option( self::id, $current );
820
  }
821
 
822
 
848
  }
849
 
850
 
851
+ public static function validate_settings( $input, $options = null, $do_errors = false ) {
852
+ $errors = array();
853
+
854
+ if ( is_null( $options ) ) {
855
+ $options = self::get_settings();
856
+ $defaults = self::get_defaults();
857
+
858
+ if ( ! empty( $input['reset_defaults'] ) ) {
859
+ foreach ( $defaults as $id => $std ) {
860
+ $input[$id] = $std;
861
+ }
862
+
863
+ unset( $input['reset_defaults'] );
864
+ }
865
+ }
866
+
867
+ foreach( $options as $id => $parts ) {
868
+ $default = $parts['std'];
869
+ $type = $parts['type'];
870
+ $validations = ! empty( $parts['validate'] ) ? $parts['validate'] : array();
871
+ if ( ! empty( $validations ) )
872
+ $validations = explode( ',', $validations );
873
+
874
+ if ( ! isset( $input[ $id ] ) ) {
875
+ if ( 'checkbox' != $type ) {
876
+ $input[ $id ] = $default;
877
+ } else {
878
+ $input[ $id ] = 0;
879
+ }
880
+ }
881
+
882
+ if ( $default == $input[ $id ] && ! in_array( 'required', $validations ) )
883
+ continue;
884
+
885
+ if ( 'checkbox' == $type ) {
886
+ // is_true allows for true, 'true', 1, 'yes' to be true
887
+ if ( self::is_true( $input[ $id ] ) )
888
+ $input[ $id ] = 1;
889
+ else
890
+ $input[ $id ] = 0;
891
+ } elseif ( in_array( $type, array( 'radio', 'select' ) ) ) {
892
+ // single choices only
893
+ $keys = array_keys( $parts['choices'] );
894
+
895
+ if ( ! in_array( $input[ $id ], $keys ) ) {
896
+ if ( self::is_true( $input[ $id ] ) )
897
+ $input[ $id ] = 1;
898
+ else
899
+ $input[ $id ] = 0;
900
+ }
901
  }
902
 
903
+ if ( ! empty( $validations ) ) {
904
+ foreach ( $validations as $validate ) {
905
+ switch( $validate ) {
906
+ case 'absint':
907
+ case 'intval':
908
+ if ( '' != $input[ $id ] )
909
+ $input[ $id ] = $validate( $input[ $id ] );
910
+ else
911
+ $input[ $id ] = $default;
912
+ break;
913
+
914
+ case 'ids':
915
+ $input[ $id ] = self::validate_ids( $input[ $id ], $default );
916
+ break;
917
+
918
+ case 'min1':
919
+ $input[ $id ] = intval( $input[ $id ] );
920
+ if ( 0 >= $input[ $id ] )
921
+ $input[ $id ] = $default;
922
+ break;
923
+
924
+ case 'nozero':
925
+ $input[ $id ] = intval( $input[ $id ] );
926
+ if ( 0 === $input[ $id ] )
927
+ $input[ $id ] = $default;
928
+ break;
929
+
930
+ case 'order':
931
+ $input[ $id ] = self::validate_order( $input[ $id ], $default );
932
+ break;
933
+
934
+ case 'required':
935
+ if ( empty( $input[ $id ] ) ) {
936
+ $errors[ $id ] = __( 'Required', 'testimonials-widget' );
937
+ break 2;
938
+ }
939
+ break;
940
+
941
+ case 'slug':
942
+ $input[ $id ] = self::validate_slug( $input[ $id ], $default );
943
+ break;
944
+
945
+ case 'slugs':
946
+ $input[ $id ] = self::validate_slugs( $input[ $id ], $default );
947
+ break;
948
+
949
+ case 'term':
950
+ $input[ $id ] = self::validate_term( $input[ $id ], $default );
951
+ break;
952
+
953
+ default:
954
+ $input[ $id ] = $validate( $input[ $id ] );
955
+ break;
956
+ }
957
+ }
958
+ }
959
  }
960
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
961
  $input['version'] = self::$version;
962
 
963
+ $input = apply_filters( 'testimonials_widget_validate_settings', $input, $errors );
964
+
965
+ if ( empty( $do_errors ) ) {
966
+ $validated = $input;
967
+ } else {
968
+ $validated = array(
969
+ 'input' => $input,
970
+ 'errors' => $errors,
971
+ );
972
+ }
973
 
974
+ return $validated;
975
  }
976
 
977
 
978
+ public static function validate_ids( $input, $default ) {
979
+ if ( preg_match( '#^\d+(,\s?\d+)*$#', $input['exclude'] ) )
980
+ return preg_replace( "#\s#", '', $input );
981
+
982
+ return $default;
983
+ }
984
+
985
+
986
+ public static function validate_order( $input, $default ) {
987
+ if ( preg_match( '#^desc|asc$#i', $input ) )
988
+ return $input;
989
+
990
+ return $default;
991
+ }
992
+
993
+
994
+ public static function validate_slugs( $input, $default ) {
995
+ if ( preg_match( '#^[\w-]+(,\s?[\w-]+)*$#', $input ) )
996
+ return preg_replace( "#\s#", '', $input );
997
+
998
+ return $default;
999
+ }
1000
+
1001
+
1002
+ public static function validate_slug( $input, $default ) {
1003
+ if ( preg_match( '#^[\w-]+$#', $input ) )
1004
+ return $input;
1005
+
1006
+ return $default;
1007
+ }
1008
+
1009
+
1010
+ public static function validate_term( $input, $default ) {
1011
+ if ( preg_match( '#^\w+$#', $input ) )
1012
+ return $input;
1013
+
1014
+ return $default;
1015
  }
1016
 
1017
 
1035
 
1036
 
1037
  function tw_get_options() {
1038
+ $options = get_option( Testimonials_Widget_Settings::id );
1039
 
1040
+ if ( false === $options ) {
1041
+ $options = Testimonials_Widget_Settings::get_defaults();
1042
+ update_option( Testimonials_Widget_Settings::id, $options );
1043
+ }
1044
 
1045
  return $options;
1046
  }
lib/testimonials-widget-widget.php CHANGED
@@ -79,17 +79,14 @@ class Testimonials_Widget_Widget extends WP_Widget {
79
  $new_title .= $title;
80
  $new_title .= '"';
81
 
82
- if ( ! empty( $instance['target'] ) ) {
83
- $new_title .= ' target="';
84
- $new_title .= $instance['target'];
85
- $new_title .= '" ';
86
- }
87
-
88
  $new_title .= '>';
89
  $new_title .= $title;
90
  $new_title .= '</a>';
91
 
92
  $title = $new_title;
 
 
 
93
  }
94
  }
95
 
@@ -142,14 +139,7 @@ class Testimonials_Widget_Widget extends WP_Widget {
142
  }
143
 
144
  // remove non-widget parts
145
- unset( $form_parts['paging'] );
146
- unset( $form_parts['debug_mode'] );
147
- unset( $form_parts['allow_comments'] );
148
- unset( $form_parts['has_archive'] );
149
- unset( $form_parts['rewrite_slug'] );
150
-
151
- // fixme make reset work
152
- unset( $form_parts['reset_defaults'] );
153
 
154
  foreach ( $form_parts as $key => $part ) {
155
  $part[ 'id' ] = $key;
@@ -158,6 +148,17 @@ class Testimonials_Widget_Widget extends WP_Widget {
158
  }
159
 
160
 
 
 
 
 
 
 
 
 
 
 
 
161
  public function display_setting( $args = array(), $options ) {
162
  extract( $args );
163
 
79
  $new_title .= $title;
80
  $new_title .= '"';
81
 
 
 
 
 
 
 
82
  $new_title .= '>';
83
  $new_title .= $title;
84
  $new_title .= '</a>';
85
 
86
  $title = $new_title;
87
+
88
+ if ( ! empty( $instance['target'] ) )
89
+ $title = links_add_target( $title, $instance['target'] );
90
  }
91
  }
92
 
139
  }
140
 
141
  // remove non-widget parts
142
+ $form_parts = self::widget_options( $form_parts );
 
 
 
 
 
 
 
143
 
144
  foreach ( $form_parts as $key => $part ) {
145
  $part[ 'id' ] = $key;
148
  }
149
 
150
 
151
+ public function widget_options( $options ) {
152
+ $settings = Testimonials_Widget_Settings::get_settings();
153
+ foreach ( $settings as $id => $parts ) {
154
+ if ( empty( $parts['widget'] ) )
155
+ unset( $options[ $id ] );
156
+ }
157
+
158
+ return $options;
159
+ }
160
+
161
+
162
  public function display_setting( $args = array(), $options ) {
163
  extract( $args );
164
 
readme.txt CHANGED
@@ -1,89 +1,106 @@
1
  === Testimonials Widget ===
 
2
  Contributors: comprock
3
  Donate link: http://aihr.us/about-aihrus/donate/
4
  Tags: client, customer, quotations, quote, quotes, random, review, quote, recommendation, reference, testimonial, testimonials, testimony, widget, wpml
5
  Requires at least: 3.4
6
  Tested up to: 3.6.0
7
- Stable tag: 2.9.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
- Testimonials Widget plugin allows you to display random or rotating portfolio, quotes, reviews, showcases, or text with images on your WordPress blog.
12
 
13
 
14
  == Description ==
15
- Testimonials Widget plugin allows you to display random or rotating portfolio, quotes, reviews, showcases, or text with images on your WordPress blog. You can insert Testimonials Widget content via shortcode, theme functions, or widgets with category and tag selections and having multiple display options such as random or specific ordering.
16
 
17
- More than one Testimonials Widget section can be displayed at a time. Each Testimonials Widget separately 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 Testimonal Widget has its own CSS identifier for custom styling.
 
 
18
 
19
  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.
20
 
21
  Through categories and tagging, you can create organizational structures based upon products, projects and services via categories and then apply tagging for further classificaton. As an example, you might create a Portfolio category and then use tags to identify web, magazine, media, public, enterprise niches. You can then configure the Testimonial Widget to show only Portfolio testimonials with the public and enterprise tags. In another Testimonial Widget, you can also select only Portfolio testimonials, but then allow web and media tags.
22
 
23
- Single testimonial view supports image, source, title, location, email, company and URL details.
24
 
25
  = Primary Features =
26
 
27
  * Admin interface to add, edit and manage testimonials
28
- * Filters to manipulate testimonial layout and presentation
29
- * Has fields for source, title, location, testimonial, email, company and URL details
30
- * Multiple widgets on a single page capable
 
31
  * Settings screen for site-wide option defaults
32
  * Shortcodes and theme functions for listings and rotation
33
- * Single testimonial view includes image, source, title, location,, email, company and URL details
34
  * Testimonials archive view
35
 
36
  = Testimonials Widget Premium Plugin Features =
37
 
38
- Testimonials Widget Premium plugin extends the best [Testimonials Widget](http://wordpress.org/extend/plugins/testimonials-widget/) plugin for WordPress with [caching, excerpts, filters, read more links](http://aihr.us/wordpress/testimonials-widget-premium/), more selection options, and advanced capabilities like selecting posts, pages and other custom post types as testimonials. The Testimonials Widget plugin allows you to display rotating content, portfolio, quotes, showcase, or other text with images on your WordPress blog.
39
 
40
  In using Testimonials Widget Premium, you'll not be sorry.
41
 
 
42
  * Alternate destinations for "Read more" links
 
43
  * Built-in update notification
44
  * Caching of testimonials queries and content to decrease server load time improve page loading speed by 1/10 to 1/2 a second
 
 
45
  * Deletes old and related testimonial cache entries automatically
46
  * Disable caching for widget, shortcode or theme functions
47
- * Ensure unique testimonial display per page
48
  * Excerpts for widget view, with read more link to complete testimonial
49
  * Filters for caching and more link control, text replacement, and more
 
 
 
50
  * Prevent duplicate testimonials when using multiple testimonial instances
51
  * Read more links for testimonials exceeding the character limit
52
- * Select post, page and other custom post types for rotations
53
  * Select only testimonials with excerpts, images or of arbitrary maximum and minimum length
54
- * Settings screen for site-wide option defaults
55
- * Shortcodes and theme functions for testimonials count and testimonial link list
 
56
  * Show excerpts with list and single views
57
- * Testimonial list entries have alternating `.even` and `.odd` CSS classes for backgrounds and other styling
 
58
  * WPML compatible
59
 
60
- [Buy Testimonials Widget Premium](http://aihr.us/wordpress/testimonials-widget-premium/) plugin for WordPress.
61
 
62
  = Additional Features =
63
 
64
- * Auto-migration from pre-2.0.0 custom table to new custom post type
65
- * Company, URL and email details are attempted to be identified and placed properly
66
- * Public testimonials are saved as Published. Non-public, are marked as Private.
67
- * Ignores already imported
68
  * Commenting on testimonial single-view pages
69
  * Compatible with WordPress multi-site
70
- * Content truncation to respect HTML tags
 
71
  * Custom CSS in footer for HTML validation
72
  * Custom text or HTML for bottom of widgets
 
73
  * Customizable archive and testimonial URLs
74
  * Customizeable testimonial data field `testimonial_extra`
 
 
 
75
  * Editors and admins can edit testimonial publisher
76
- * Image, Gravatar, category and tag enabled
77
- * Localizable - see `languages/testimonials-widget.pot`
 
 
 
 
78
  * Respects meta capabilities
79
  * Rotation JavaScript in footer than body
80
- * Scrolling testimonials for maximum height restricted widgets
81
  * Supports [WP-PageNavi](http://wordpress.org/extend/plugins/wp-pagenavi/)
82
- * Testimonial content and layout completely customizable via filters
83
  * Testimonial content supports HTML
84
- * Testimonial, email, and URL fields are clickable
85
- * The URL requires a protocol like `http://` or `https://`
86
  * Testimonials Widget widget displays static and rotating testimonials
 
87
  * Testimonials support styling based upon CSS classes for category, tags and post id
88
  * URLs can be opened in new windows
89
  * Unique CSS class per widget
@@ -96,97 +113,130 @@ In using Testimonials Widget Premium, you'll not be sorry.
96
 
97
  = Shortcode and Widget Options =
98
 
99
- * Widget Title
100
- * `title1 - default "Testimonials"
101
- * Title Link - URL or Post ID to link widget title to
102
- * `title_link` - default none; title_link=123, title_link=http://example.com
103
- * Category Filter - Comma separated category slug-names
104
- * `category` - default none; category=product or category="category-a, another-category"
105
  * Character Limit - Number of characters to limit testimonial views to
106
  * `char_limit` - default none; char_limit=200
107
  * Widget - default 500
108
- * Exclude IDs Filter - Comma separated IDs
109
- * `exclude` - default none; exclude=2 or exclude="2,4,6"
110
- * Hide Company?
111
- * `hide_company` - default show; hide_company=true
112
- * Hide Email?
113
- * `hide_email` - default show; hide_email=true
114
  * Hide Gravatar Image?
115
  * `hide_gravatar` - default show; hide_gravatar=true
116
  * Hide Image?
117
  * `hide_image` - default show; hide_image=true
118
- * Hide "Testimonials Not Found"?
119
- * `hide_not_found` - default show; hide_not_found=true
 
 
120
  * Hide Author/Source? - Don't display "Post Title" in cite
121
  * `hide_source` - default show; hide_source=true
 
 
122
  * Hide Title?
123
  * `hide_title` - default show; hide_title=true
124
  * Hide Location?
125
  * `hide_location` - default show; hide_location=true
 
 
126
  * Hide URL?
127
  * `hide_url` - default show; hide_url=true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  * Include IDs Filter - Comma separated IDs
129
  * `ids` - default none; ids=2 or ids="2,4,6"
130
- * Remove `.hentry` CSS? – Some themes use class `.hentry` in a manner that breaks Testimonials Widgets CSS
131
- * `remove_hentry` - default none; remove_hentry=true
132
- * Keep Whitespace? - Keeps testimonials looking as entered than sans auto-formatting
133
- * `keep_whitespace` - default none; keep_whitespace=true
134
- * The citation has no whitespace adaptions. It's straight text, except for email or URL links. The presentation is handled strictly by CSS.
135
  * Limit - Number of testimonials to rotate through via widget or show at a time when listing
136
  * `limit` - default 10; limit=25
 
 
 
 
 
 
 
 
137
  * ORDER BY meta_key - Used when "Random Order" is disabled and sorting by a testimonials meta key is needed
138
  * `meta_key` - default none [testimonials-widget-company|testimonials-widget-email|testimonials-widget-title|testimonials-widget-location|testimonials-widget-url]; meta_key=testimonials-widget-company
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  * Minimum Height - Set for minimum display height, in pixels
140
  * `min_height` - default none; min_height=100
141
  * Maximum Height - Set for maximum display height, in pixels
142
  * `max_height` - default none; max_height=250
143
- * ORDER BY Order - DESC or ASC
144
- * `order` - [default DESC](http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters); order=ASC
145
- * ORDER BY - Used when Random order is disabled
146
- * `orderby` - [default ID](http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters); orderby=title
147
- * Enable Paging - for [testimonialswidget_list]
148
- * `paging` - default true [true|before|after|false]; paging=false
149
- * `true` – display paging before and after testimonial entries
150
- * `before` – display paging only before testimonial entries
151
- * `after` – display paging only after testimonial entries
152
- * Widget - Not functional
153
- * Random Order? - Unchecking this will rotate testimonials per ORDER BY and ORDER BY Order. Widgets are random by default automatically
154
- * `random` - default none; random=true (overrides `order` and `orderby`)
155
- * Widget = default true
156
  * Rotation speed - Seconds between testimonial rotations or 0 for no rotation at all
157
  * `refresh_interval` - default 5; refresh_interval=0
158
- * Require All Tags - Select only testimonials with all of the given tags
159
- * `tags_all` - default OR; tags_all=true
160
- * Tags Filter - Comma separated tag slug-names
161
- * `tags` - default none; tags=fire or tags="tag-a, another-tag"
162
- * URL Target - Adds target to all URLs; leave blank if none
163
- * `target` - default none; target=_new
164
- * Testimonial Bottom Text - Custom text or HTML for bottom of testimonials
165
- * `bottom_text` - default none; bottom_text="`<h3><a href="http://example.com">All testimonials</a></h3>`"
 
 
 
 
 
 
 
 
166
 
167
  = Shortcode Examples =
168
 
169
- * [testimonialswidget_list]
170
- * [testimonialswidget_list]
171
- * [testimonialswidget_list category=product hide_not_found=true]
172
- * [testimonialswidget_list category=product tags=widget limit=5]
173
- * [testimonialswidget_list char_limit=0 target=_new]
174
- * [testimonialswidget_list hide_source=true hide_url=true]
175
- * [testimonialswidget_list ids="1,11,111"]
176
- * [testimonialswidget_list meta_key=testimonials-widget-company order=asc limit=15]
177
- * [testimonialswidget_list order=ASC orderby=title]
178
- * [testimonialswidget_list paging=true limit=25]
179
- * [testimonialswidget_list tags="test,fun" random=true exclude="2,22,333"]
180
- * [testimonialswidget_widget]
181
- * [testimonialswidget_widget]
182
- * [testimonialswidget_widget category=product order=asc]
183
- * [testimonialswidget_widget min_height=250 max_height=500]
184
- * [testimonialswidget_widget tags=sometag random=true]
185
 
186
  = Theme Functions =
187
 
188
- * `testimonialswidget_list()` - Listings with paging
189
- * `testimonialswidget_widget()` - Rotating
190
 
191
  = Filters =
192
 
@@ -219,13 +269,21 @@ In using Testimonials Widget Premium, you'll not be sorry.
219
 
220
  = Notes =
221
 
 
 
 
 
222
  * Default image size is based upon Thumbnail size in Media Settings
223
  * Gravatar image is configured in the Avatar section of Discussion Settings
 
224
 
225
  = Languages =
226
 
227
  You can translate this plugin into your own language if it's not done so already. The localization file `testimonials-widget.pot` can be found in the `languages` folder of this plugin. After translation, please [send the localized file](http://aihr.us/contact-aihrus/) to the plugin author.
228
 
 
 
 
229
  * [Hebrew by Ahrale](http://atar4u.com/)
230
 
231
  = Recommendation =
@@ -246,7 +304,7 @@ Prior to version 2.0.0, this plugin was a fork of [Quotes Collection](http://sri
246
 
247
  So that others can share in the answer, please submit your support requests through the [WordPress forums for Testimonials Widget](http://wordpress.org/support/plugin/testimonials-widget).
248
 
249
- If you want private or priority support, [please donate](http://aihr.us/about-aihrus/donate/) $ 125 USD to cover my time. Then send your [support request](http://aihr.us/contact-aihrus/).
250
 
251
  Thank you for your understanding.
252
 
@@ -255,1611 +313,63 @@ Thank you for your understanding.
255
 
256
  1. Via WordPress Admin > Plugins > Add New, Upload the `testimonials-widget.zip` file
257
  1. Alternately, via FTP, upload `testimonials-widget` directory to the `/wp-content/plugins/` directory
258
- 1. Activate the 'Testimonials Widget' plugin through WordPress Admin > Plugins
259
 
260
  = Usage =
 
261
  1. Add and manage the quotes through the 'Testimonials' menu in the WordPress admin area
262
  1. To display testimonials in the sidebar, go to 'Widgets' menu and drag the 'Testimonials Widget' into the desired widget area
263
  1. Configure the 'Testimonials Widget' to select quotes and display as needed
264
- 1. Alternately, use the `[testimonialswidget_list]` or `[testimonialswidget_widget]` shortcodes to display testimonials on a page or in a post
265
- 1. Alternately, read FAQ 1 for `testimonialswidget_list()` and `testimonialswidget_widget()` theme functions usage
266
 
267
 
268
  == Frequently Asked Questions ==
269
 
270
- = 1. How do I use the theme functions `testimonialswidget_list()` and `testimonialswidget_widget()`? =
271
-
272
- In your theme's `functions.php` file, place code similar to the following for the configuration you need.
273
-
274
- A basic testimonial list or widget with no options.
275
- `
276
- <?php echo testimonialswidget_list(); ?>
277
- <?php echo testimonialswidget_widget(); ?>
278
- `
279
-
280
- Testimonial list or widget with options.
281
- `
282
- <?php
283
-
284
- // The following argument configuration selects 5 testimonials of the "product" category, having the "widget" tag.
285
- // $args is an optional array of desired shortcode options
286
- $args = array(
287
- 'category' => 'product',
288
- 'tags' => 'widget',
289
- 'limit' => 5,
290
- );
291
-
292
- // Displays the testimonials as a list into your theme directly
293
- echo testimonialswidget_list( $args );
294
-
295
-
296
- // The following argument configuration selects testimonials of the "review" tag and sets a slower rotation speed for the display widget
297
- $args = array(
298
- 'tags' => 'review',
299
- 'refresh_interval' => 15,
300
- );
301
-
302
- // Displays the testimonials as a rotating widget into your theme directly
303
- echo testimonialswidget_widget( $args );
304
-
305
-
306
- // $widget_number is an optional, arbitrarily number (probably safe between 1,000 and 9,999) that helps create a uniquely identifiable testimonials widget display instance.
307
- $widget_number = 1234;
308
- // Displays the testimonials as a rotating widget into your theme directly with specific class .testimonialswidget_testimonials1234
309
- echo testimonialswidget_widget( $args, $widget_number );
310
-
311
- ?>
312
- `
313
-
314
- In case of `Fatal error: Call to undefined function testimonialswidget_widget() in…`, please try including `testimonials-widget.php` like the following.
315
-
316
- `
317
- <?php
318
- include_once( WP_PLUGIN_DIR . '/testimonials-widget/testimonials-widget.php' );
319
- echo testimonialswidget_widget();
320
- ?>
321
- `
322
-
323
- = 2. How do you include the actual testimonials for the widget? Where do I quote my customers? I mean, where do I enter the actual text? =
324
-
325
- In WordPress Admin > Testimonials. See [screenshot 1](http://s.wordpress.org/extend/plugins/testimonials-widget/screenshot-1.png).
326
-
327
- Basically, look down the left side of your WordPress admin area for the Testimonials section. Click on that section link, then click "Add new testimonial" at top to add quotes.
328
-
329
- = 3. How do I filter the testimonials data before display processing? =
330
-
331
- `
332
- function my_testimonials_widget_data( $data ) {
333
- if ( empty( $data ) )
334
- return $data;
335
-
336
- foreach( $data as $key => $testimonial ) {
337
- // do something with the $testimonial entry
338
- // the keys below are those that are currently available
339
- // 'testimonial_extra' is the key in which you can put in your own custom content for display
340
- $testimonial = array(
341
- 'post_id' => …,
342
- 'testimonial_source' => …,
343
- 'testimonial_company' => …,
344
- 'testimonial_content' => …,
345
- 'testimonial_email' => …,
346
- 'testimonial_image' => …,
347
- 'testimonial_url' => …,
348
- 'testimonial_extra' => …,
349
- );
350
-
351
- $data[ $key ] = $testimonial;
352
- }
353
-
354
- return $data;
355
- }
356
-
357
- add_filter( 'testimonials_widget_data', 'my_testimonials_widget_data' );
358
- `
359
-
360
- Do note that content truncation might still remove your appended content if you're using `char_limit`.
361
-
362
- Content of `testimonial_extra` is appended after the closing `cite` tag within the testimonial with CSS class `testimonialswidget_extra`.
363
-
364
- = 4. How do I change the image size? =
365
-
366
- The default image size is based upon Thumbnail size in Media Settings. If changing that doesn't work for you, then use `add_filter` in your theme's `functions.php` file to adjust the image size.
367
-
368
- `
369
- add_filter( 'testimonials_widget_image_size', 'my_testimonials_widget_image_size' );
370
-
371
- function my_testimonials_widget_image_size( $size ) {
372
- $size = array( 120, 90 );
373
-
374
- return $size;
375
- }
376
- `
377
-
378
- You can use either a string keyword (thumbnail, medium, large or full) or a 2-item array representing width and height in pixels, e.g. array(32,32).
379
-
380
- I recommend putting your theme customizations into a `custom-functions.php` file and then include that in your theme's `functions.php` file via `include 'custom-functions.php';`.
381
-
382
- = 5. How do I change the Gravatar size? =
383
-
384
- Use an `add_filter` in your theme's `functions.php` file to adjust the Gravatar size.
385
-
386
- `
387
- add_filter( 'testimonials_widget_gravatar_size', 'my_testimonials_widget_gravatar_size' );
388
-
389
- function my_testimonials_widget_gravatar_size( $size ) {
390
- $size = 120;
391
-
392
- return $size;
393
- }
394
- `
395
-
396
- Default Gravatar size is 96, maximum 512.
397
-
398
- = 6. What CSS applies to testimonials container? =
399
-
400
- See FAQ 34/35 for more specific HTML layout and CSS presentation information.
401
-
402
- CSS class `testimonialswidget_testimonials` wraps all testimonials. Additionally, shortcode lists are wrapped by `testimonialswidget_testimonials testimonialswidget_testimonials_list`.
403
-
404
- = 7. What CSS applies to single testimonial container? =
405
-
406
- See FAQ 34/35 for more specific HTML layout and CSS presentation information.
407
-
408
- CSS class `testimonialswidget_testimonial` wraps a single testimonial. Additionally, single shortcode list tems are wrapped by `testimonialswidget_testimonial testimonialswidget_testimonial_list`.
409
-
410
- = 8. How can I add the testimonials plugin to any where on the site? ie. somewhere other than the side bar like the contact page etc.? =
411
-
412
- See the "Shortcode Examples", "Theme Function `testimonialswidget_list()`" and "Theme Function `testimonialswidget_widget()`" on http://wordpress.org/extend/plugins/testimonials-widget/.
413
-
414
- = 9. How do I hide the comma after the source? =
415
-
416
- Use CSS.
417
-
418
- `
419
- .testimonialswidget_testimonial .testimonialswidget_join_location,
420
- .testimonialswidget_testimonial .testimonialswidget_join_title,
421
- .testimonialswidget_testimonial .testimonialswidget_join {
422
- display: none;
423
- }
424
- `
425
-
426
- = 10. Testimonials widget is not showing or rotating =
427
-
428
- The usual problem is that jQuery is included twice. Once by WordPress and again by a theme. Remove the jQuery version included by your theme and you should be fine.
429
-
430
- = 11. I'm not seeing any testimonials but the title =
431
-
432
- If you're not seeing any testimonials, even when not using tags filter, you might try increasing the Character limit or setting it to '0' or 'none' in the widget box.
433
-
434
- = 12. How do I apply custom CSS to a specific testimonial widget? =
435
-
436
- The easiest thing is to check the source code of your page with the widget and look for the testimonial widgets div container id tag. It'll be something like `id="testimonials_widget-3"`.
437
-
438
- Then, in your theme's `custom.css` or `styles.css` file write CSS like the following.
439
-
440
- `
441
- #testimonials_widget-3 {
442
- color: red;
443
- }
444
-
445
- #testimonials_widget-3 cite {
446
- color: black;
447
- }
448
- `
449
-
450
- = 13. How to get rid of the quotation marks that surround the random quote? =
451
-
452
- In your theme's `custom.css` or `styles.css` file write the following CSS.
453
-
454
- `
455
- .testimonialswidget_testimonial .testimonialswidget_open_quote:before,
456
- .testimonialswidget_testimonial .testimonialswidget_close_quote:after {
457
- display: none;
458
- }
459
- `
460
-
461
- = 14. How to change the random quote text color? =
462
-
463
- Styling such as text color, font size, background color, etc., of the random quote can be customized by editing your theme's `styles.css` file to apply CSS like the following.
464
-
465
- `
466
- .testimonialswidget_testimonial q {
467
- color: blue;
468
- }
469
- `
470
-
471
- = 15. How can I style the shortcode testimonials? =
472
-
473
- See FAQ 34/35 for more specific HTML layout and CSS presentation information.
474
-
475
- Each shortcode testimonial is wrapped by a `div` using classes `testimonialswidget_testimonial testimonialswidget_testimonial_list`. As such, to increase spacing between testimonials, try…
476
-
477
- `
478
- .testimonialswidget_testimonial_list {
479
- padding-bottom: 1em;
480
- }
481
- `
482
-
483
- Making the citation line a different color is a little trickier. The reason being is that applying a color to `.testimonialswidget_testimonial cite` will change the entire citation line in the widget display as well. To only change the shortcode testimonial citation color, try…
484
-
485
- `
486
- .testimonialswidget_testimonial_list cite {
487
- color: blue;
488
- }
489
- `
490
-
491
- If you're wanting to change only the company or URL color, then try.
492
-
493
- `
494
- .testimonialswidget_testimonial_list cite .testimonialswidget_company {
495
- color: purple;
496
- }
497
- `
498
-
499
- Like wise, the source uses class `testimonialswidget_source`.
500
-
501
- = 16. How do I change the join ", " text? =
502
-
503
- In CSS, revise the join content like the following.
504
-
505
- `
506
- .testimonialswidget_testimonial .testimonialswidget_join:before {
507
- content: " | "
508
- }
509
- `
510
-
511
- = 17. Who can edit testimonials? =
512
-
513
- All users can see and use the testimonials system. However, only users with `edit_others_posts` ability get to set author or edit other author's testimonials.
514
-
515
- = 18. How do I put the title or location on a separate line? =
516
-
517
- In CSS put the following.
518
-
519
- `
520
- .testimonialswidget_testimonial .testimonialswidget_join_location,
521
- .testimonialswidget_testimonial .testimonialswidget_join_title {
522
- display: none;
523
- }
524
-
525
- .testimonialswidget_testimonial .testimonialswidget_location,
526
- .testimonialswidget_testimonial .testimonialswidget_title {
527
- display: block;
528
- }
529
- `
530
-
531
- = 19. How do I put company details on a separate line? =
532
-
533
- In CSS put the following.
534
-
535
- `
536
- .testimonialswidget_testimonial .testimonialswidget_join {
537
- display: none;
538
- }
539
-
540
- .testimonialswidget_testimonial .testimonialswidget_company,
541
- .testimonialswidget_testimonial .testimonialswidget_url {
542
- display: block;
543
- }
544
- `
545
-
546
- = 20. After upgrading, testimonial rotations have stopped =
547
-
548
- The JavaScript for rotating testimonials is moved to the footer. As such, your theme requires `wp_footer()` in the footer. Check to make sure your theme has the `<?php wp_footer(); ?>` call in footer.php or the equivalent file.
549
-
550
- Alternately, enable Developer Mode in your browser, right-click on a testimonial, select "Inspect Element", and then click on the Console tab to review and resolve the JavaScript errors.
551
-
552
- = 21. How can I justify testimonials text? =
553
-
554
-
555
- To justify all testimonials try…
556
- `
557
- .testimonialswidget_testimonial {
558
- text-align: justify;
559
- }
560
- `
561
- To justify only the testimonials list try…
562
- `
563
- .testimonialswidget_testimonial_list {
564
- text-align: justify;
565
- }
566
- `
567
-
568
- = 22. Do testimonials have there own URL? =
569
-
570
- Testimonial Widgets records are a custom post type and therefore can be viewed via a URL like http://www.example.com/testimonial/michael-cannon-senior-developer/.
571
-
572
- When you look at the WP > Admin > Testimonials post list, you can click on the View link to see the testimonial in full.
573
-
574
- The filters `testimonials_widget_testimonial_html_single` and `testimonials_widget_testimonial_html_single_content` are related to the single view.
575
-
576
- Please purchase [Testimonials Widget Premium](http://aihr.us/wordpress/testimonials-widget-premium/) to get "Read more" link capability or use the filters to create your own.
577
-
578
- = 23. My testimonial URL says "Page not found" or 404 =
579
-
580
- Go to WordPress > Plugins to Deactivate and then Activate Testimonials Widget. The `flush_rewrite_rules` function needs to run.
581
-
582
- If that still doesn't work, go to WordPress > Settings > Permalinks and click "Save Changes".
583
-
584
- = 24. Does this plug in use admin-ajax.php to refresh? =
585
-
586
- No, it doesn't call admin-ajax.php at all.
587
-
588
- = 25. Is there a way to reorder testimonials? =
589
-
590
- Look for ORDER BY under Advanced Options of the Testimonials Widget. In ORDER BY, put post_date. Then you use dates to put your testimonials into the order you want.
591
-
592
- Alternately, use the `orderby` shortcode option.
593
-
594
- = 26. How do I create a next link? =
595
-
596
- Either purchase [Testimonials Widget Premium](http://aihr.us/wordpress/testimonials-widget-premium/) or see http://wordpress.org/support/topic/plugin-testimonials-widget-next-testimonial-not-pagination for tips.
597
-
598
- = 27. How do I hide the "No testimonials found" text? =
599
-
600
- In Widget options, check "Hide testimonials not found?" or in shortcode options use `hide_not_found=true`.
601
-
602
- `[testimonialswidget_list hide_not_found=true]`
603
-
604
- = 28. How do I export testimonials? =
605
-
606
-
607
- Use the WordPress Admin > Tools > Export option to do so. Besure to select 'All content' or 'Testimonials'.
608
-
609
- = 29. How do I import testimonials from WordPress export? =
610
-
611
-
612
- Go WordPress Admin > Tools > Import > WordPress, install and activate that WordPress importer. Then repeat the WordPress Admin > Tools > Import > WordPress sequence to actually import up your export.
613
-
614
- = 30. What's one way to programmatically query testimonials on a page without using shortcodes or widgets? =
615
-
616
-
617
- `
618
- <?php
619
- $paged = get_query_var('paged') ? get_query_var('paged') : 1;
620
- $args = array( 'paged' => $paged, 'posts_per_page' => 10, 'orderby' => DESC, 'post_type' => Testimonials_Widget::pt );
621
- // The Query
622
- query_posts( $args );
623
- // The Loop
624
- while ( have_posts() ) : the_post();
625
- // do your thing…
626
- endwhile;
627
- ?>
628
- `
629
-
630
- Cheers to [tcwebguru](http://wordpress.org/support/topic/display-on-page-without-widget) for this suggestion.
631
-
632
- = 31. How do I change Testimonials Widget text labels? =
633
-
634
- 1. The default `WPLANG` is `en_US`.
635
- * Use `en_US.mo` and `en_US.po` as the filenames of your localization changes if you're sticking with US English.
636
- * `de_DE` – German
637
- * `en_UK` – UK English
638
- * `es_ES` – Spanish
639
- * `fr_FR` – French
640
- * `ja_JP.EUC-JP.mo` – Japanese in EUC-JP encoding
641
- * `zh-TW` – Traditional Chinese
642
- * `zh_CN` – Simplified Chinese
643
- 1. Create localized `YOUR_WPLANG.mo` and `YOUR_WPLANG.po` files from `languages/testimonials-widget.pot`.
644
- * See [Translation Tools](http://codex.wordpress.org/Translating_WordPress#Translation_Tools) of [Translating WordPress](http://codex.wordpress.org/Translating_WordPress) for help.
645
- * Ensure that `YOUR_WPLANG.mo` and `YOUR_WPLANG.po` files contain the correct `Language:` tag like `Language: es_ES` and `"Language: es_ES\n"` respectively.
646
- * Example: See screenshot 21. "Poedit Catalog properties"
647
- 1. Create a directory named `languages` inside of `wp-content`.
648
- 1. Put your `YOUR_WPLANG.mo` and `YOUR_WPLANG.po` files into your `wp-content/languages` directory.
649
- 1. Set `WPLANG` in `wp-config.php` to your chosen language.
650
- * See [Using Localizations](http://codex.wordpress.org/Translating_WordPress#Using_Localizations) of [Translating WordPress](http://codex.wordpress.org/Translating_WordPress) for help.
651
- * Ex: `<?php define('WPLANG', 'de_DE'); ?>`
652
-
653
- *Sometimes the above doesn't work, so…*
654
-
655
- 1. Create localized `testimonials-widget-YOUR_WPLANG.mo` and `testimonials-widget-YOUR_WPLANG.po` files from `languages/testimonials-widget.pot`.
656
- 1. Put your localized `testimonials-widget-YOUR_WPLANG.mo` and `testimonials-widget-YOUR_WPLANG.po` files into directory `wp-content/plugins/testimonials-widget/languages/`.
657
- 1. Set `WPLANG` in `wp-config.php` to your chosen language.
658
-
659
- When done translating, please [send your translation](http://aihr.us/contact-aihrus/) for inclusion with the Testimonials Widget plugin release.
660
-
661
- Check out [Translating WordPress Plugins & Themes](http://urbangiraffe.com/articles/translating-wordpress-themes-and-plugins/) for fuller explanations.
662
-
663
- = 32. How do I prevent testimonials in my footer from changing the page height? =
664
-
665
-
666
- Use the shortcode `max-height` or widget "Maximum Height" option to keep the testimonial widget height consistent.
667
-
668
- = 33. How do I change the more content ellipsis? =
669
-
670
- In your theme's `functions.php` file, add similar code as follows.
671
- `
672
- add_filter( 'testimonials_widget_content_more', function() { return ' Continue reading &rarr;'; } );
673
- `
674
- or
675
- `
676
- function my_content_more() {
677
- return ' Continue reading &rarr;';
678
- }
679
-
680
- add_filter( 'testimonials_widget_content_more', 'my_content_more' );
681
- `
682
-
683
- = 34. How is an active testimonial widget formatted with CSS? =
684
-
685
- `
686
- <!-- testimonials outer wrapper begin -->
687
- <!-- The NNN of testimonialswidget_testimonialsNNN represents the widget number for specific widget styling -->
688
- <div class="testimonialswidget_testimonials testimonialswidget_testimonialsNNN">
689
- <!-- individual testimonial wrapper begin -->
690
- <div class="post-NNN testimonials-widget type-testimonials-widget status-publish hentry category-slug_name tag-slug_name testimonialswidget_testimonial testimonialswidget_active">
691
- <span class="testimonialswidget_image">
692
- <img width="150" height="150" src="http://example.com/example.jpg" class="attachment-thumbnail wp-post-image" alt="Example" title="Example">
693
- </span>
694
- <q>
695
- <span class="testimonialswidget_open_quote"></span>Testimonial AKA post content<span class="testimonialswidget_close_quote"></span>
696
- </q>
697
- <cite>
698
- <span class="testimonialswidget_author">
699
- <a href="mailto:email@example.com">Source AKA post title</a>
700
- </span>
701
- <span class="testimonialswidget_join_title"></span>
702
- <span class="testimonialswidget_title">Title</span>
703
- <span class="testimonialswidget_join_location"></span>
704
- <span class="testimonialswidget_location">Location</span>
705
- <span class="testimonialswidget_join"></span>
706
- <span class="testimonialswidget_company">
707
- <a href="http://example.com">Company, LLC</a>
708
- </span>
709
- </cite>
710
- <div class="testimonialswidget_extra">Custom extra text</div>
711
- <div class="testimonialswidget_bottom_text">Custom widget text</div>
712
- </div>
713
- <!-- individual testimonial wrapper end -->
714
- </div>
715
- <!-- testimonials outer wrapper end -->
716
- `
717
-
718
- Please view the `testimonials-widget.css` file for CSS customizations.
719
-
720
- See FAQ 61 for NNN identification.
721
-
722
- = 35. How is a testimonial list formatted with CSS? =
723
-
724
- `
725
- <!-- testimonials outer wrapper begin -->
726
- <div class="testimonialswidget_testimonials testimonialswidget_testimonials_list">
727
- <!-- individual testimonial wrapper begin -->
728
- <div class="post-NNN testimonials-widget type-testimonials-widget status-publish hentry category-slug_name tag-slug_name testimonialswidget_testimonial testimonialswidget_testimonial_list">
729
- <span class="testimonialswidget_image">
730
- <img width="150" height="150" src="http://example.com/example.jpg" class="attachment-thumbnail wp-post-image" alt="Example" title="Example">
731
- </span>
732
- <q>
733
- <span class="testimonialswidget_open_quote"></span>Testimonial AKA post content<span class="testimonialswidget_close_quote"></span>
734
- </q>
735
- <cite>
736
- <span class="testimonialswidget_author">
737
- <a href="mailto:email@example.com">Source AKA post title</a>
738
- </span>
739
- <span class="testimonialswidget_join_title"></span>
740
- <span class="testimonialswidget_title">Title</span>
741
- <span class="testimonialswidget_join_location"></span>
742
- <span class="testimonialswidget_location">Location</span>
743
- <span class="testimonialswidget_join"></span>
744
- <span class="testimonialswidget_company">
745
- <a href="http://example.com">Company, LLC</a>
746
- </span>
747
- </cite>
748
- <div class="testimonialswidget_extra">Custom extra text</div>
749
- <div class="testimonialswidget_bottom_text">Custom widget text</div>
750
- </div>
751
- <!-- individual testimonial wrapper end -->
752
- </div>
753
- <!-- testimonials outer wrapper end -->
754
- `
755
-
756
- Please view the `testimonials-widget.css` file for CSS customizations.
757
-
758
- See FAQ 61 for NNN identification.
759
-
760
- = 36. How do I configure Next and Previous page indicators? =
761
-
762
- For previous page links, in your theme's `functions.php` file, add similar code as follows.
763
- `
764
- add_filter( 'testimonials_widget_previous_posts_link_text', function() { return 'Previous'; } );
765
- `
766
- or
767
- `
768
- function my_testimonials_widget_previous_posts_link_text() {
769
- return 'Previous';
770
- }
771
-
772
- add_filter( 'testimonials_widget_previous_posts_link_text', 'my_testimonials_widget_previous_posts_link_text' );
773
- `
774
-
775
- For next page links, use `testimonials_widget_next_posts_link` instead of `testimonials_widget_previous_posts_link_text` in above.
776
-
777
- = 37. Why should I purchase the Testimonials Widget Premium? =
778
-
779
- Simply said, to demonstrate on-going support for the development of Testimonials Widget.
780
-
781
- Further, you and other developers are very welcome to code your own version of [Testimonials Widget Premium](http://aihr.us/wordpress/testimonials-widget-premium/) plugin's caching and 'read more' link capabilities without purchase. Since version 2.3.0, the free Testimonials Widget plugin provides several new filters or hooks which provides for easily incorporating the premium features.
782
-
783
- It was a hard choice making the 'Read more' link feature a premium option. I knew that there were going to be people not happy with me for doing so. However, I feel that asking for you to purchase [Testimonials Widget Premium](http://aihr.us/wordpress/testimonials-widget-premium/) is an acceptable request to help pay for the free, quick support and development like Testimonials Widget's [17 high-level changes](http://plugins.trac.wordpress.org/changeset?reponame=&old=627496%40testimonials-widget&new=628068%40testimonials-widget) to go from version 2.2.9 to 2.3.0.
784
-
785
- = 38. How do I use filter `testimonials_widget_defaults`? =
786
-
787
- To create a global or central Testimonials Widget configuration, in your theme's `functions.php` file, add similar code as follows.
788
-
789
- `
790
- function my_testimonials_widget_defaults( $array ) {
791
- $array['category'] = 'testimony';
792
- $array['char_limit'] = 250;
793
- $array['paging'] = 'true';
794
- $array['refresh_interval'] = 10;
795
-
796
- return $array;
797
- }
798
-
799
- add_filter( 'testimonials_widget_defaults', 'my_testimonials_widget_defaults' );
800
- `
801
-
802
- = 39. How do I style the custom widget text? =
803
-
804
- In your theme's `styles.css` file use the CSS class `.testimonialswidget_bottom_text` to style the custom widget text.
805
-
806
- = 40. How do I get page numbers for pagination? =
807
-
808
- Install and activate [WP-PageNavi](http://wordpress.org/extend/plugins/wp-pagenavi/) to get page numbers for pagination of testimonials via the shortcode `[testimonialswidget_list]`.
809
-
810
- Additionally, you can use filter `testimonials_widget_wp_pagenavi` to configure WP-PageNavi specifically for Testimonial Widgets. Read WP-PageNavi's [core.php](http://plugins.svn.wordpress.org/wp-pagenavi/trunk/core.php) `wp_pagenavi` function declaration for available options.
811
-
812
- = 41. How do I make my widget height consistent and not overlapping? =
813
-
814
- In short, set `min-height` and `max-height` options to be the same.
815
-
816
- Why? Because testimonial lengths differ and there might be an image or not, the normal CSS `height` property fails for our dynamic rotations.
817
-
818
- = 42. How do I exclude testimonial categories from Category widget? =
819
-
820
- Add the following to your theme's `functions.php` file:
821
-
822
- `
823
- function exclude_widget_categories( $args ) {
824
- // Make sure to replace the category IDs 8,10 with yours.
825
- $exclude = '8,10';
826
- $args['exclude'] = $exclude;
827
- return $args;
828
- }
829
- add_filter( 'widget_categories_args', 'exclude_widget_categories' );
830
- `
831
-
832
- Thank you [katiewp](http://wordpress.org/support/topic/plugin-testimonials-widget-categories-tags-best-practices?replies=7#post-3460607) for the answer.
833
-
834
- = 43. How do I exclude testimonial categories from my sitemap? =
835
-
836
- Change the following in your theme's `functions.php` or `sitemap.php` file:
837
-
838
- Before:
839
- `
840
- <?php wp_list_categories('sort_column=name&optioncount=1&hierarchical=0&title_li='); ?>
841
- `
842
-
843
- After:
844
- `
845
- <?php wp_list_categories('sort_column=name&optioncount=1&hierarchical=0&title_li=&exclude=8,10'); ?>
846
- `
847
-
848
- Make sure to replace the category IDs 8,10 with yours.
849
-
850
- Thank you [katiewp](http://wordpress.org/support/topic/plugin-testimonials-widget-categories-tags-best-practices?replies=7#post-3460607) for the answer.
851
-
852
- = 44. Can I change how quickly the testimonials change? =
853
-
854
- Yes. Look for the "Rotation Speed" on the widget options panel or use the `refresh_interval` option in shortcode to adjust the number of seconds between testimonial rotations.
855
-
856
- = 45. Why don't I see all of my testimonial? =
857
-
858
- The widget option by default has a 500 character limit. To view more characters, increase the limit or set it to 0. See bottom of [screenshot 3](http://s.wordpress.org/extend/plugins/testimonials-widget/screenshot-3.png).
859
-
860
- = 46. How do you order testimonials by given IDs? =
861
-
862
- To display the testimonials with IDs 538, 451, 442, 449, and 565 in that same order; you need to use the `ids` and `orderby` shortcode or widget options.
863
-
864
- `
865
- [testimonialswidget_list ids="538,451,442,449,565" orderby=none]
866
- `
867
-
868
- Thank you [Ionrot](http://wordpress.org/support/topic/order-by-id-list?replies=5#post-3517737) for inspiring this FAQ and code feature.
869
-
870
- = 47. How to make a testimonials listing in a widget than a rotating testimonial? =
871
-
872
- First, you'll need to enable shortcodes in widget by adding `add_filter('widget_text', 'do_shortcode');` to the bottom of your themes `functions.php` file, before the closing `?>`.
873
-
874
- Then for the testimonials listing in a widget, use a Text widget with a shortcode like `[testimonialswidget_list limit=5]`.
875
-
876
- If you have formatting issues, you can check out [Enabling shortcodes in widgets, quick WordPress tip.](http://dannyvankooten.com/630/enabling-shortcodes-in-widgets-quick-wordpress-tip/) for further help.
877
-
878
- Thank you [davidnjacoby](http://wordpress.org/support/topic/make-testimonials-widget-a-list-not-rotating-individual-testimonials?replies=2#post-3548911) for recommending this FAQ.
879
-
880
- = 48. How do I customize my testimonial list and widget output? =
881
-
882
- If you want to change the layout of the testimonials, then you can use the `testimonials_widget_testimonial_html` filter. This filter follows the `get_testimonials_html` method which is how the testimonial HTML is normally generated. The `testimonials_widget_testimonial_html` filter works for widgets and lists.
883
-
884
- `
885
- add_filter( 'testimonials_widget_testimonial_html', 'my_testimonials_widget_testimonial_html', 10, 5 );
886
-
887
- function my_testimonials_widget_testimonial_html( $content, $testimonial, $atts, $is_list = true, $is_first = false, $widget_number = null ) {
888
- // do stuff… see Testimonials_Widget::get_testimonial_html for default processing
889
- return $content;
890
- }
891
- `
892
-
893
- = 49. How do I customize my testimonial single output? =
894
-
895
- See FAQ 48 for more details.
896
-
897
- `
898
- add_filter( 'testimonials_widget_testimonial_html_single', 'my_testimonials_widget_testimonial_html_single', 10, 3 );
899
-
900
- function my_testimonials_widget_testimonial_html_single( $content, $testimonial, $atts ) {
901
- // do stuff… see Testimonials_Widget::get_testimonials_html for default processing
902
- return $content;
903
- }
904
- `
905
-
906
- = 50. Example to set widget gradient background color =
907
-
908
- See FAQ 61 for NNN identification. Then write CSS like the following change the color behind the widget to a light gradient gold.
909
-
910
- `
911
- .testimonialswidget_testimonials3 {
912
- background-image: linear-gradient(to bottom right, #FFEF87 0%, #EFEFEF 100%);
913
- }
914
- `
915
-
916
- A special thanks to [inode86](http://wordpress.org/support/topic/gradient-background-color?replies=2) for this suggestion.
917
-
918
- = 51. How do I use filter `testimonials_widget_get_testimonial_html`? =
919
-
920
- Also see FAQ 48.
921
-
922
- `
923
- add_filter( 'testimonials_widget_get_testimonial_html', 'my_testimonials_widget_get_testimonial_html', 10, 13 );
924
-
925
- function my_testimonials_widget_get_testimonial_html( $html, $testimonial, $atts, $is_list, $is_first, $widget_number, $div_open, $image, $quote, $cite, $extra, $bottom_text, $div_close ) {
926
- // do stuff… see Testimonials_Widget::get_testimonials_html for default processing
927
- if ( is_page( 437 ) ) {
928
- $source = '';
929
- if ( ! empty( $testimonial['testimonial_source'] ) )
930
- $source = '<h3>' . $testimonial['testimonial_source'] . '</h3>';
931
-
932
- $html = $div_open
933
- . $source
934
- . $image
935
- . $quote
936
- // . $cite
937
- // . $extra
938
- // . $bottom_text
939
- . $div_close;
940
- return $html;
941
- } elseif ( false && $is_list ) {
942
- return '<li>' . $image . $testimonial['testimonial_title'] . '</li>';
943
- } else {
944
- return $html;
945
- }
946
- }
947
- `
948
-
949
- Thank you to [Georgia Gibbs Design](http://georgia-gibbs.com/) for suggesting this capability.
950
-
951
- = 52. How do I include testimonies in my archive view? =
952
- In your theme's `functions.php` file, place code similar to the following for the configuration you need.
953
-
954
- `
955
- add_filter( 'pre_get_posts', 'pre_get_posts_allow_testimonials' );
956
- function pre_get_posts_allow_testimonials( $query ) {
957
- if ( $query->is_admin ) {
958
- return $query;
959
- } elseif ( ( $query->is_main_query() || is_feed() )
960
- && ! is_page()
961
- && ( ( ! empty( $query->query_vars['post_type'] ) && 'post' == $query->query_vars['post_type'] )
962
- || is_archive() )
963
- ) {
964
- $query->set( 'post_type', array( 'post', Testimonials_Widget::pt ) );
965
- }
966
-
967
- return $query;
968
- }
969
- `
970
-
971
- = 53. How do I scroll my widget based testimonial content? =
972
-
973
- See FAQ 61 for NNN identification. Then in your theme's `styles.css` file add CSS like the following.
974
-
975
- `
976
- .testimonialswidget_testimonialsNNN {
977
- overflow: auto;
978
- }
979
- `
980
-
981
- = 54. Why is that there is an update like every other day? =
982
-
983
- I believe as Eric S. Raymond, author of "The Cathedral and the Bazaar" wrote
984
-
985
- > Release early. Release often. And listen to your customers.
986
-
987
- Through 20 years of software development experience, I've found that Wikipedia's definition and reasoning for frequent releases is true.
988
-
989
- > Release early, release often is a software development philosophy that emphasizes the importance of early and frequent releases in creating a tight feedback loop between developers and testers or users, contrary to a feature-based release strategy. Advocates argue that this allows the software development to progress faster, enables the user to help define what the software will become, better conforms to the users' requirements for the software, and ultimately results in higher quality software.
990
-
991
- References
992
-
993
- * [Release Early, Release Often](http://haacked.com/archive/2011/04/20/release-early-and-often.aspx)
994
- * [Rules for Entrepreneurs: Release Early and Often](http://technosailor.com/2011/09/28/rules-for-entrepreneurs-release-early-and-often/)
995
- * [Wikipedia](http://en.wikipedia.org/wiki/Release_early,_release_often)
996
-
997
- Thank you [gingalley](http://wordpress.org/support/profile/gingalley) for the explanation request.
998
-
999
- = 55. How do I style about page testimonials while leaving other testimonials alone or vice versa? =
1000
- To style a page's testimonials or a particular testimonial widget instance, you need to style it with a page or testimonial wrapper class. Each page and testimonial has `body` or `div` class tags to support such.
1001
-
1002
- See FAQ 61 for NNN identification. Then in your theme's `styles.css` file add CSS like the following.
1003
-
1004
- `
1005
- .testimonialswidget_testimonialsNNN .testimonialswidget_testimonial {
1006
-
1007
- }
1008
- `
1009
-
1010
- To style for a particular page, we use that page's CSS class. As an example, [Aihrus' about page](http://aihr.us/about-aihrus/), has the `body` tag `<body class="custom about-aihrus single-page content-sidebar default">`. Therefore, I would do something like the following to style my testimonials.
1011
-
1012
- `
1013
- .about-aihrus .testimonialswidget_testimonial {
1014
-
1015
- }
1016
- `
1017
-
1018
- = 56. What's the testimonials archive view URL? =
1019
-
1020
- **Disabled for now**
1021
-
1022
- It's your URL with `/testimonials/` appended. Like `http://example.com/testimonials/`.
1023
-
1024
- = 57. What's the testimonial single view URL? =
1025
-
1026
- It's your URL with `/testimonial/post-title-slug/` appended. Like `http://example.com/testimonials/your-work-is-awesome/`.
1027
-
1028
- = 58. How do you specify testimonials per page or section? =
1029
-
1030
- Please view [Make Specific testimonial appear in only one page](http://wordpress.org/support/topic/make-specific-testimonial-appear-in-only-one-page).
1031
-
1032
- = 59. Why does my rotating widget show all testimonials than only one at a time? =
1033
-
1034
- Please view [Widget Displaying Whole List Of Testimonials](http://wordpress.org/support/topic/widget-displaying-whole-list-of-testimonials).
1035
-
1036
- = 60. How do I download older versions of Testimonials Widget? =
1037
-
1038
- You can browse code and download current and other versions of Testimonials Widget via its [Developers](http://wordpress.org/extend/plugins/testimonials-widget/developers/) page.
1039
-
1040
- = 61. What's NNN of ".testimonialswidget_testimonialsNNN"? =
1041
-
1042
- As the CSS class `.testimonialswidget_testimonialsNNN` is dynamically generated, you're not going to find it in the Testimonials Widget CSS file. The reason being is that each Testimonials Widget instance is unique so that many can be used and styled on a page.
1043
-
1044
- You may find your NNN value by looking at…
1045
- * "CSS class" from your widget's option panel - screenshot 3
1046
- * Your webpage's HTML source code for the unique testimonial widget class identifier
1047
- * Ex: `<div class="testimonialswidget_testimonials testimonialswidget_testimonials20">` means you use CSS class `.testimonialswidget_testimonials20`
1048
-
1049
- *When writing testimonials CSS, don't forget to change `NNN` to the number found above*
1050
-
1051
- = 62. Why do I get "No testimonials found" when using category and tags? =
1052
-
1053
- Because, there's no testimonials having that category with those tags.
1054
-
1055
- When using tags only, it's possible to select from many testimonials unless you check the "Require all tags" option. Then only testimonials with all of those tags are selected.
1056
-
1057
- = 63. How do I remove the cite –? =
1058
-
1059
- In your theme's `custom.css` or `styles.css` file write the following CSS.
1060
-
1061
- .testimonialswidget_testimonial cite::before {
1062
- display: none;
1063
- }
1064
-
1065
- = 64. What plugins potentially conflict with Testimonials Widget? =
1066
-
1067
- * JetPack shortcodes
1068
- * FancyBox for WordPress
1069
-
1070
- = 65. How do I disable the stylesheet? =
1071
-
1072
- In your theme's `functions.php` file, add the following.
1073
-
1074
- `
1075
- add_action( 'init', 'my_init' );
1076
-
1077
- function my_init() {
1078
- wp_dequeue_style( 'testimonials-widget' );
1079
- }
1080
- `
1081
-
1082
- Thank you [sazanetti](http://wordpress.org/support/topic/css-tweaks?replies=4#post-3893996) for the suggestion.
1083
-
1084
- = 66. How do I change the testimonials archive or single view URL? =
1085
-
1086
- Visit WordPress Admin > Testimonials > Settings > Post Type tab and adjust the "Archive Page URL" and "Testimonial Page URL" as desired. Don't forget to update your Permalink Settings via WordPress Admin > Settings > Permalinks and clicking "Save Changes".
1087
-
1088
- = 67. My testimonials paging doesn't work =
1089
-
1090
- Follow resolution in FAQ 23.
1091
-
1092
- = 68. Where's feature XYZ? =
1093
-
1094
- See this [forum entry](http://wordpress.org/support/topic/customers-input-page?replies=2#post-3950825).
1095
-
1096
 
1097
  = I'm still stuck, how can I get help? =
1098
- Visit the [support forum](http://wordpress.org/support/plugin/testimonials-widget) and ask your question.
 
1099
 
1100
 
1101
  == Screenshots ==
1102
 
1103
  1. Testimonials admin interface
1104
- 2. Edit testimonial with "Excerpt" and "Read More Link" fields - [Testimonials Widget Premium plugin](http://aihr.us/wordpress/testimonials-widget-premium/)
1105
- 3. Collasped Testimonials Widget options
1106
- 4. Expanded 'General Options' in Testimonials Widget options
1107
- 5. Testimonial widget in the sidebar
1108
- 6. [testimonialswidget_list] in post
1109
- 7. [testimonialswidget_list] results with paging
1110
- 8. Widget whitespace kept
1111
- 9. `require_image`, `minimum_length` and `maximum_length` shortcode option examples - [Testimonials Widget Premium plugin](http://aihr.us/wordpress/testimonials-widget-premium/)
1112
- 10. Widget with "Read more" and "Next testimonial…" links - [Testimonials Widget Premium plugin](http://aihr.us/wordpress/testimonials-widget-premium/)
1113
- 11. Widget with Premium Options - [Testimonials Widget Premium plugin](http://aihr.us/wordpress/testimonials-widget-premium/)
1114
- 12. Single view with and without excerpt - Excerpt is feature of [Testimonials Widget Premium plugin](http://aihr.us/wordpress/testimonials-widget-premium/)
1115
- 13. Widget with clickable title and custom text/HTML on bottom
1116
- 14. [WP-PageNavi compatible](http://wordpress.org/extend/plugins/wp-pagenavi/) for page numbers than default arrows
1117
- 15. `[testimonialswidgetpremium_link_list]` Shortcode examples, unstyled - [Testimonials Widget Premium plugin](http://aihr.us/wordpress/testimonials-widget-premium/)
1118
- 16. Testimonials Widget Settings > Premium tab - [Testimonials Widget Premium plugin](http://aihr.us/wordpress/testimonials-widget-premium/)
1119
- 17. Single `[testimonialswidget_list]` entry with and without 'Read more' link - [Testimonials Widget Premium plugin](http://aihr.us/wordpress/testimonials-widget-premium/)
1120
- 18. `[testimonialswidgetpremium_count]` Examples - [Testimonials Widget Premium plugin](http://aihr.us/wordpress/testimonials-widget-premium/)
1121
- 19. `[testimonialswidget_widget unique=true]` Show multiple testimonials in rotation - [Testimonials Widget Premium plugin](http://aihr.us/wordpress/testimonials-widget-premium/)
1122
- 20. Alternating background colors – Courtesy of [placeofstillness](http://www.heartattune.com/clients-say/) - [Testimonials Widget Premium plugin](http://aihr.us/wordpress/testimonials-widget-premium/)
1123
- 21. Poedit Catalog properties
1124
- 22. Testimonials Widget Settings > General tab
1125
- 23. Expanded 'Selection Options' in Testimonials Widget options
1126
- 24. Expanded 'Ordering Options' in Testimonials Widget options
1127
- 25. Testimonials Widget Settings > Selection tab
1128
- 26. Testimonials Widget Settings > Post Type tab
1129
 
1130
 
1131
  == Changelog ==
1132
- = trunk =
1133
-
1134
- = 2.9.1 =
1135
- * BUGFIX Assigning the return value of new by reference is deprecated in metabox.class.php
1136
-
1137
- = 2.9.0 =
1138
- * Add location meta field after title
1139
- * Add location related options
1140
- * FAQ 18, 34, 35 update
1141
- * Screenshot 2, 4, 5 updated
1142
- * Update POT
1143
-
1144
- = 2.8.4 =
1145
- * BUGFIX [Title link does not allow a relative link](http://wordpress.org/support/topic/title-link-does-not-allow-a-relative-link)
1146
-
1147
- = 2.8.3 =
1148
- * BUGFIX [Selection > Category Filter doesn't remember >1 category](http://wordpress.org/support/topic/selection-category-filter-doesnt-remember-1-category)
1149
- * FAQ 67 testimonials paging doesn't work
1150
- * FAQ 68 feature XYZ
1151
-
1152
- = 2.8.2 =
1153
- * Add filter `testimonials_widget_version`
1154
- * Screenshot 11/16 updated
1155
- * Update POT
1156
- * Update Premium features
1157
- * Version tracking for default settings
1158
-
1159
- = 2.8.1 =
1160
- * Customizable archive and testimonial URLs
1161
- * FAQ 66 Change the testimonials archive or single view URL
1162
- * Optional commenting on testimonial single-view pages
1163
- * Screenshot 26 Testimonials Widget Settings > Post Type tab
1164
- * Update POT
1165
-
1166
- = 2.8.0 =
1167
- * Merge in settings branch
1168
- * Add `tw_get_options`
1169
- * Add filter `testimonials_widget_sections` – Alter section options
1170
- * Add filter `testimonials_widget_settings` – Alter setting options
1171
- * Add settings page 'Selection', 'Ordering', and 'Widget' tabs
1172
- * BUG with "Post Types Order"
1173
- * BUGFIX paging when not in singular view
1174
- * Configure settings within Testimonials_Widget_Settings class
1175
- * Enable 'Expand/Collapse' view in Widget options
1176
- * FAQ 65 Disable the stylesheet
1177
- * FEATURE Remove `.hentry` CSS?
1178
- * FEATURE Testimonials Widget Settings screen
1179
- * Removed filters `testimonials_widget_options_update`, `testimonials_widget_options_form`
1180
- * Rename `widget_text` to `bottom_text`
1181
- * Revise About page content
1182
- * Revise Settings page footer
1183
- * Revise widget options update and validation
1184
- * Screenshot 11 updated
1185
- * Screenshot 16 updated
1186
- * Screenshot 2 updated
1187
- * Screenshot 22 Testimonials Widget Settings > General tab
1188
- * Screenshot 23 Expanded 'Selection Options' Testimonials Widget
1189
- * Screenshot 24 Expanded 'Ordering Options' Testimonials Widget
1190
- * Screenshot 25 Testimonials Widget Settings > Selection tab
1191
- * Screenshot 3 updated
1192
- * Screenshot 4 updated, Expanded 'General Options' Testimonials Widget
1193
- * Update "Shortcode and Widget Options" verbiage
1194
- * Update POT file
1195
- * Use defaults via Testimonials_Widget_Settings class
1196
- * Validate shortcode and widget options via Testimonials_Widget_Settings::validate_settings
1197
- * Verbiage updates
1198
-
1199
- = 2.7.17 =
1200
- * Add purchase Testimonials Widget Premium plugin meta link
1201
- * Begin settings screen work
1202
- * FAQ 20 Update
1203
- * FAQ 31 Update
1204
- * FAQ 63 Remove the cite –
1205
- * FAQ 64 Plugin conflict
1206
- * Screenshot 21 Poedit Catalog properties
1207
- * TODO class removal
1208
- * Update localization verbiage
1209
-
1210
- = 2.7.16 =
1211
- * Add comments panel to edit screen - [Thank you BarrieSpence](http://wordpress.org/support/topic/disable-comments-10?replies=1)
1212
- * TODO Admin panel
1213
-
1214
- = 2.7.15 =
1215
- * Add "CSS class" to widget options window
1216
- * FAQ 31/34/35/50/53/55 updates
1217
- * FAQ 61 Determine .testimonialswidget_testimonialsNNN
1218
- * FAQ 62 Category and tag selection
1219
- * Feature updates
1220
- * Localization, Hebrew
1221
- * Screenshot 3 updated
1222
-
1223
- = 2.7.14 =
1224
- * BUGFIX [Testimonials archive view URL conflicts with Page slug](http://wordpress.org/support/topic/testimonials-archive-view-url-conflicts-with-page-slug)
1225
- * FAQ 1 Update - Thank you [aaaronscat](http://wordpress.org/support/topic/writing-php-to-display-rotating-widget-in-a-template) for the inspiration
1226
- * FAQ 60 Download older versions of Testimonials Widget
1227
- * Premium feature update
1228
- * Screenshot 20 added
1229
-
1230
- = 2.7.13 =
1231
- * Adapt for `mb_strcut` and `mb_strlen` alternatives
1232
- * BUGFIX [Widget doesn't appear](http://wordpress.org/support/topic/widget-doesnt-appear-1)
1233
- * Update POT
1234
-
1235
- = 2.7.12 =
1236
- * Change Aihrus support email to contact form
1237
- * FAQ 1 Update - Thank you [aaaronscat](http://wordpress.org/support/topic/writing-php-to-display-rotating-widget-in-a-template) for the inspiration
1238
- * Update Testimonials Widget Premium URL
1239
-
1240
- = 2.7.11 =
1241
- * Citation styling note
1242
- * Removed sub-category shortcode example
1243
- * Thanks to Joe Weber for asset header
1244
- * Update premium URL
1245
- * Update premium features
1246
- * Update premium purchase URL
1247
-
1248
- = 2.7.10 =
1249
- * BUGFIX extra excerpt in single view
1250
- * Screenshot 11 updated
1251
- * Update premium features
1252
-
1253
- = 2.7.9 =
1254
- * Revise content truncation to respect HTML tags
1255
- * Update premium description
1256
- * Update premium features
1257
-
1258
- = 2.7.8 =
1259
- * Add `before` and `after` options to `paging`
1260
- * FAQ 58 Specify testimonials per page or section
1261
- * FAQ 59 Rotating widget show all testimonials than only one at a time
1262
- * Revert on-demand CSS to always included
1263
- * Support process and donation update
1264
- * Thank you to [mkearns](http://wordpress.org/support/topic/just-excellent-3) for specifying a sub-category shortcode example
1265
- * Update premium URL
1266
- * Update premium features
1267
-
1268
- = 2.7.7 =
1269
- * FAQ 13 Update
1270
- * FAQ 31 Update
1271
- * Shortcode examples "[[" to "["
1272
-
1273
- = 2.7.6 =
1274
- * Add `[testimonialswidget_widget]` to Shortcodes column
1275
- * CSS cite `margin-top` adjustment
1276
- * Enable testimonials archive view
1277
- * FAQ 1 Update
1278
- * FAQ 52 Update
1279
- * FAQ 53 Update
1280
- * FAQ 55 Style page and instance testimonials
1281
- * FAQ 56 Testimonials archive view URL
1282
- * FAQ 57 Testimonial single view URL
1283
- * Only include CSS if testimonials instance called
1284
- * Screenshot 19 `[testimonialswidget_widget unique=true]` Show multiple testimonials in rotation
1285
- * Set arg defaults via `defaults`
1286
-
1287
- = 2.7.5 =
1288
- * BUGFIX PHP Warning for new fields in widget when widget already exists
1289
- * Exclude IDs option
1290
- * Implement instance tracking
1291
- * Protect shortcode examples
1292
- * Update asset header size
1293
- * Update premium features
1294
-
1295
- = 2.7.4 =
1296
- * Asset header help request
1297
- * Premium feature updates
1298
- * Screenshot 9 updated
1299
- * Screenshot 10 replaced
1300
- * Screenshot 11 updated
1301
- * Screenshot 15 updated
1302
- * Screenshot 17 Single `[testimonialswidget_list]` entry with and without 'Read more' link
1303
- * Screenshot 18 `[testimonialswidgetpremium_count]` Examples
1304
 
1305
- = 2.7.3 =
1306
- * Apply quotes only around testimonial content
1307
- * FAQ 13 update
1308
- * FAQ 34 update
1309
- * FAQ 35 update
1310
- * Screenshot 8 replaced
1311
- * Simplified quotes handling
1312
- * Upgrade notification
1313
-
1314
- = 2.7.2 =
1315
- * FAQ 54 update
1316
- * Screenshot 12 update
1317
- * Screenshot 16 Edit testimonial with "Excerpt" and "Read More Link" fields - Testimonials Widget Premium plugin
1318
-
1319
- = 2.7.1 =
1320
- * Description update
1321
- * FAQ 1 update
1322
- * FAQ 2 update
1323
- * FAQ 4 update
1324
- * FAQ 5 update
1325
- * FAQ 6 update
1326
- * FAQ 7 update
1327
- * FAQ 8 update
1328
- * FAQ 9 update
1329
- * FAQ 12 update
1330
- * FAQ 14 update
1331
- * FAQ 15 update
1332
- * FAQ 17 update
1333
- * FAQ 22 update
1334
- * FAQ 25 update
1335
- * FAQ 26 update
1336
- * FAQ 30 update
1337
- * FAQ 32 update
1338
- * FAQ 34 update
1339
- * FAQ 35 update
1340
- * FAQ 37 update
1341
- * FAQ 53 update
1342
- * Feature update
1343
- * Installation update
1344
- * Screenshot 1 update
1345
- * Screenshot 2 update
1346
- * Screenshot 3 update
1347
- * Screenshot 4 update
1348
- * Screenshot 5 update
1349
- * Screenshot 6 update
1350
- * Screenshot 7 update
1351
- * Screenshot 8 replaced
1352
- * Screenshot 9 replaced
1353
- * Screenshot 12 update
1354
- * Screenshot 15 update
1355
- * Screenshot 16 removed
1356
- * Screenshot 17 removed
1357
- * Screenshot 18 removed
1358
 
1359
- = 2.7.0 =
1360
- * FAQ 13 Update
1361
- * FAQ 54 Release early. Release often.
1362
- * Redo content opening and closing quotes display
1363
- * Upgrade notification for 2.7.0
1364
-
1365
- = 2.6.6 =
1366
- * Remove CSS `overflow: auto` - too many complaints
1367
- * FAQ 53 Scroll widget based testimonial content
1368
-
1369
- = 2.6.5 =
1370
- * BUGFIX: overflow auto than scroll
1371
- * Correct screenshot 11 & 18
1372
-
1373
- = 2.6.4 =
1374
- * Add filters `testimonials_widget_posts_custom_column`, `testimonials_widget_columns`, `testimonials_widget_meta_box`
1375
- * BUGFIX Testimonial posts page column URL now correctly clickable
1376
- * Code spacing cleanup
1377
- * Enabled [scrolling text](http://wordpress.org/support/topic/plugin-testimonials-widget-scroll-for-a-single-but-long-testimonial) for maximum height restricted testimonial widgets
1378
- * FAQ 34/35 CSS styling update
1379
- * Scrolling testimonials for maximum height restricted widgets
1380
- * Testimonials have `get_post_class` applied
1381
- * Update premium features
1382
-
1383
- = 2.6.3 =
1384
- * Add filter `testimonials_widget_query_args`
1385
- * Add filters `testimonials_widget_testimonials_css`, `testimonials_widget_testimonials_js`
1386
- * Allow `limit=-1`
1387
- * BUGFIX Repeated footer CSS and JavaScript
1388
- * CSS - block disply widget image
1389
- * FAQ 52 Include testimonies in archive view
1390
- * Refactor `get_query_args` out of `get_testimonials`
1391
- * Revise JavaScript handling
1392
- * Screenshot 17 `require_image`, `minimum_length` and `maximum_length` shortcode option examples
1393
- * Screenshot 18 Widget with 'Next testimonial…' link
1394
- * Update POT
1395
- * Update premium features
1396
- * Update premium screenshots
1397
-
1398
- = 2.6.2 =
1399
- * Compatible with WordPress 3.6
1400
- * Fix single view PHP warning
1401
-
1402
- = 2.6.1 =
1403
- * Add filter `testimonials_widget_testimonial_html_single_content`
1404
- * Add `force_pad` option to `testimonials_truncate`
1405
- * Copyright year update
1406
- * Update Premium features
1407
-
1408
- = 2.6.0 =
1409
- * Add FAQ 51 filter `testimonials_widget_get_testimonial_html` usage
1410
- * FAQ 50 Revise
1411
- * Reorganize `get_testimonial_html`
1412
-
1413
- = 2.5.6 =
1414
- * Add FAQ 50 Example to set widget gradient background color
1415
- * FAQ 13 Update
1416
- * FAQ 20 Add PHP tags
1417
- * FAQ 48 Code correction
1418
- * FAQ 49 Code correction
1419
-
1420
- = 2.5.5 =
1421
- * Enable widget caching
1422
- * Refactor `get_testimonials_html` to break out CSS/JS generation
1423
- * Respect [meta capabilities](http://wordpress.org/support/topic/plugin-testimonials-widget-version-20-rewrite-suggestions-request?replies=18#post-3359157)
1424
- * Revise TODO text
1425
- * TODO remove Template engine - see `testimonials_widget_testimonial_html*` filters
1426
-
1427
- = 2.5.4 =
1428
- * Add filter `testimonials_widget_testimonial_html_single`
1429
- * Add filter `testimonials_widget_testimonial_html`
1430
- * Aihrus testimonial URL correction
1431
- * FAQ 34 Find `testimonialswidget_testimonialsNNN` instance naming
1432
- * FAQ 48 Customize testimonial list/widget output
1433
- * FAQ 49 Customize testimonial single output
1434
-
1435
- = 2.5.3 =
1436
- * Add donate link in plugin section
1437
- * Donate links
1438
-
1439
- = 2.5.2 =
1440
- * Aihrus branding
1441
-
1442
- = 2.5.1 =
1443
- * Update POT file
1444
-
1445
- = 2.5.0 =
1446
- * Add option Keep whitespace? - Thank you [kangchenjunga](http://wordpress.org/support/topic/optional-wpautop-functionality-for-better-formatting?replies=2) for the suggestion
1447
- * Revise FAQ 47
1448
- * Screenshot 16 - Widget whitespace kept
1449
- * Update Author URL
1450
-
1451
- = 2.4.8 =
1452
- * Donate to purchase verbiage change - One bad experience ruins it for all
1453
- * FAQ 47 testimonials list in a widget
1454
- * TODO Add location field
1455
- * TODO Add plugin donate link
1456
- * [CleanCSS](http://cleancss.com/) the CSS
1457
-
1458
- = 2.4.7 =
1459
- * Add filter `testimonials_widget_defaults_single`
1460
- * TODO clean up for premium version
1461
- * TODO Optional wpautop functionality for better formatting
1462
-
1463
- = 2.4.6 =
1464
- * Add 'No order' as an Order By widget option
1465
- * Add FAQ 45 testimonial character limit
1466
- * Add Recommendation heading
1467
- * FAQ 23 mention 404
1468
- * FAQ 46 testimonial ordering by given IDs
1469
- * Update filters listing
1470
- * Use `posts_results` filter to put posts in same orders as post__in when orderby=none
1471
-
1472
- = 2.4.5 =
1473
- * BUGFIX Missing CSS for testimonialswidget_join_title
1474
- * FAQ 44 Refresh interval - Thank you [biztips](http://wordpress.org/support/topic/fatal-error-558?replies=6#post-3475595)
1475
-
1476
- = 2.4.4 =
1477
- * Add screenshot 15
1478
- * FAQ 34 Update CSS
1479
- * FAQ 35 Update CSS
1480
- * FAQ 42 Exclude testimonial categories from Category widget
1481
- * FAQ 43 Exclude testimonial categories from my sitemap
1482
- * Update premium features
1483
-
1484
- = 2.4.3 =
1485
- * Adjust default `limit` to 10 from 25
1486
- * Add CSS `margin-top` to `cite`, `.testimonialswidget_extra` and `.testimonialswidget_text`
1487
- * BUGFIX [Keep `widget_text` with each testimonial](http://wordpress.org/support/topic/images-not-showin?replies=10)
1488
- * Donate link update
1489
- * FAQ 41 Widget height consistency
1490
-
1491
- = 2.4.2 =
1492
- * BUGFIX [No image](http://wordpress.org/support/topic/update-17?replies=4) in [widget](http://wordpress.org/support/topic/plugin-testimonials-widget-short-rotating-testimonial-link-to-the-full-testimonial?replies=16)
1493
- * TODO Add refactor `get_testimonials_html`
1494
 
1495
- = 2.4.1 =
1496
- * BUGFIX `testimonialswidget_widget` always random
1497
- * Comment and verbiage cleanups
1498
- * Minor refactor of `get_testimonial_html`
1499
- * TODO Added Template engine
1500
-
1501
- = 2.4.0 =
1502
- * FAQ 39 Style the custom widget text
1503
- * FAQ 40 Page number pagination
1504
- * FEATURE Custom widget text
1505
- * FEATURE Make the widget title clickable
1506
- * FEATURE Page numbers via WP-PageNavi
1507
- * Refactor paging to use WordPress functions
1508
- * SCREENSHOT 12 recrop
1509
- * SCREENSHOT 13 Widget with clickable title and custom text/HTML on bottom
1510
- * SCREENSHOT 14 WP-PageNavi compatible for page numbers than default arrows
1511
- * SCREENSHOT 3 update
1512
- * SCREENSHOT 4 update
1513
- * TODO Remove Custom widget text - added
1514
- * TODO Remove Make the widget title clickable - added
1515
- * TODO Remove Page numbers - added
1516
- * TODO Remove fields to show - done via theme
1517
-
1518
- = 2.3.4 =
1519
- * BUGFIX [Testimonial plugin means Set Feature Image Not Displaying](http://wordpress.org/support/topic/testimonial-plugin-means-set-feature-image-not-displaying)
1520
- * Test with WordPress 3.5.0 RC1
1521
- * TODO remove Publish & New - just click 'New Testimonial' after Publishing
1522
- * Update donate link
1523
-
1524
- = 2.3.3 =
1525
- * FEATURE Improved single page view
1526
- * SCREENSHOT Single testimonial view
1527
- * TODO Meta capabilities
1528
-
1529
- = 2.3.2 =
1530
- * Add filters `testimonials_widget_options_update`, `testimonials_widget_options_form`
1531
- * BUGFIX ["featured image" module disappeared](http://wordpress.org/support/topic/no-image-upload?replies=12#post-3423001)
1532
- * Clean up tags per [plugin guidelines](http://wordpress.org/extend/plugins/about/guidelines/)
1533
- * Combine source and url display when no email or company
1534
- * FAQ renumber second 36 to 37
1535
- * FAQ 38 Use filter `testimonials_widget_defaults`
1536
- * FEATURE Centralized defaults via filter `testimonials_widget_defaults`
1537
- * Only grab `paged` information once
1538
- * Prepend HTTP protocol if missing in URL
1539
- * SCREENSHOT Widget Premium Options
1540
- * Simplify filter `testimonials_widget_content`
1541
- * Simplify read more ellipsis
1542
- * Trim content after formatting
1543
-
1544
- = 2.3.1 =
1545
- * BUGFIX [No image upload](http://wordpress.org/support/topic/no-image-upload)
1546
- * FAQ 36 Why donate?
1547
-
1548
- = 2.3.0 =
1549
- * BUGFIX No paging when cached
1550
- * FAQ 3 Check for empty $data
1551
- * FAQ 33 Change more content ellipsis
1552
- * FAQ 34/35 Clarify CSS classes
1553
- * FAQ 36 Configure Next and Previous page indicators
1554
- * FEATURE (Premium) [Read More links](http://wordpress.org/support/topic/plugin-testimonials-widget-short-rotating-testimonial-link-to-the-full-testimonial) to [full testimonial page](http://wordpress.org/support/topic/very-easy-to-use-moderately-easy-to-style)
1555
- * FEATURE Easier to configure Next and Previous page indicators
1556
- * Refactor `get_testimonial_html`
1557
- * Refactor testimonial HTML creation methods
1558
- * Remove "Read more…" preparations
1559
- * Replace `testimonials_truncate` with WordPress's `wp_trim_words`
1560
- * SCREENSHOTS 'Read more' links
1561
- * Sanitize names
1562
- * TEMP Prevent widget caching
1563
- * TODO Clarify 'Read more'
1564
- * TODO Remove - CSV Export
1565
- * TODO Updates
1566
- * Update POT file
1567
-
1568
- = 2.2.9 =
1569
- * BUGFIX [Testimonial List Loading 2nd Blank Box](http://wordpress.org/support/topic/testimonial-list-loading-2nd-blank-box)
1570
-
1571
- = 2.2.8 =
1572
- * Begin "Read more…" preparations
1573
- * Correct content display processing
1574
- * FAQ 32 Min-height usage
1575
- * FAQ 4 Custom code placement clarification
1576
- * TODO Updates
1577
- * Widgets display content sans `wpautop` formatting
1578
-
1579
- = 2.2.7 =
1580
- * Catch widget number in cache
1581
- * FAQ Custom query code. Thank you [tcwebguru](http://wordpress.org/support/topic/display-on-page-without-widget)
1582
- * FAQ Change Testimonials Widget text labels
1583
- * Language verbiage correction
1584
- * PHP notice fix - esc_attr
1585
- * Remove premium code include
1586
-
1587
- = 2.2.6 =
1588
- * BUGFIX Widget config not saving correctly
1589
- * FAQ Export/import
1590
- * TODO Updates
1591
-
1592
- = 2.2.5 =
1593
- * Adapt for [Testimonials Widget Premium plugin](http://aihr.us/wordpress/testimonials-widget-premium/)
1594
- * Add support text
1595
- * Correct verbiage spacing
1596
- * Explain `limit`
1597
- * TODO revisions
1598
-
1599
- = 2.2.4 =
1600
- * BUGFIX [Tags - no more than 2?](http://wordpress.org/support/topic/tags-no-more-than-2)
1601
- * Clean up PHP notices
1602
- * Fix Changelog link
1603
- * PREMIUM Implement testimonials query and content caching
1604
- * TODO update
1605
-
1606
- = 2.2.3 =
1607
- * Begin premium plugin adaptions
1608
- * BUGFIX [Tags - no more than 2?](http://wordpress.org/support/topic/tags-no-more-than-2)
1609
- * BUGFIX [Updated - Now getting fatal error when using testimonialswidget_list()](http://wordpress.org/support/topic/updated-now-getting-fatal-error-when-using-testimonialswidget_list)
1610
- * Clean up links in readme.txt
1611
- * Correct company and URL link usage
1612
- * [Correct readme.txt to standard](http://wordpress.org/extend/plugins/about/readme.txt)
1613
- * Don't rotate testimonial if only 1
1614
- * TODO updates
1615
-
1616
- = 2.2.2 =
1617
- * BUGFIX [Now getting fatal error when using testimonialswidget_list()](http://wordpress.org/support/topic/updated-now-getting-fatal-error-when-using-testimonialswidget_list)
1618
- * Theme function defaults
1619
- * TODO updates
1620
- * URL pointing update
1621
-
1622
- = 2.2.1 =
1623
- * Number FAQ Entries
1624
- * Revise Installation Usage text
1625
- * Revise Shortcode and Widget Options text
1626
-
1627
- = 2.2.0 =
1628
- * FAQ `testimonialswidget_widget()` example
1629
- * Multisite compatible
1630
- * Reversion as 2.1.10 was a minor release than only bug fixes
1631
-
1632
- = 2.1.10 =
1633
- * [Add title field ](http://wordpress.org/support/topic/plugin-testimonials-widget-just-tried-216-thoughts-suggestions)
1634
- * Consolidate defaults to simplify code maintenance
1635
- * Correct CSS testimonial list spacing
1636
- * Debug true - clear out PHP notices and such
1637
- * Default minimum height removed for widgets, now optional
1638
- * Maximum height setting
1639
- * [Remove CSS `position` attributes `.testimonialswidget_testimonial { position: absolute; }`](http://wordpress.org/support/topic/testimonials-widget-not-showing-correctly-on-sub-pages)
1640
- * TODO cleanup
1641
- * Update language POT
1642
- * Update screenshots
1643
- * Update WPML
1644
- * Widget options dropdown for ORDER BY entries
1645
-
1646
- = 2.1.9 =
1647
- * Allow min_height 0
1648
- * FAQ - How do I use the theme function `testimonialswidget_list()`?
1649
- * Move CSS include to header
1650
-
1651
- = 2.1.8 =
1652
- * Remove testimonialswidget_widget char_limit default
1653
- * TODO - debug true
1654
-
1655
- = 2.1.7 =
1656
- * [0 disables char_limit](http://wordpress.org/support/topic/plugin-testimonials-widget-more-than-one-testimonial-appears-overlaps-content-below-the-widget)
1657
- * [Set link target](http://wordpress.org/support/topic/plugin-testimonials-widget-just-tried-216-thoughts-suggestions)
1658
- * Update widget option top screenshot
1659
-
1660
- = 2.1.6 =
1661
- * FAQ: `ORDER BY` explanation
1662
- * FAQ: `testimonial_extra` explanation
1663
- * [Moved CSS to footer](http://wordpress.org/support/topic/plugin-testimonials-widget-html-validation)
1664
- * Next testimonial link idea
1665
- * Option: Add `hide_not_found` to prevent showing "No testimonials found"
1666
- * Revise theme methods as functions
1667
- * Screenshot: Update upper widget options
1668
- * Staged widget testimonials are initially `display: none` via CSS `.testimonialswidget_display_none`
1669
- * TODO updates
1670
- * Verbiage: Refresh Interval to Rotation Speed
1671
- * Widget option explanations
1672
-
1673
- = 2.1.5 =
1674
- * Always apply min-height
1675
-
1676
- = 2.1.4 =
1677
- * Enable WPML
1678
- * Idea - Maximum height setting
1679
- * Revise description
1680
- * Revise TODO
1681
-
1682
- = 2.1.3 =
1683
- * Allow commas in meta_key
1684
- * FAQ on page not found
1685
- * Fix widget Random order always true condition
1686
- * Increase bottom margin spacing for listed testimonials
1687
- * TODO vote casting note
1688
- * Update localization pot file
1689
-
1690
- = 2.1.2 =
1691
- * Add `hide_gravatar` option
1692
- * Add apply_filters( 'testimonials_widget_data', $testimonial_data ) to process data before display
1693
- * Add right margin to gravatar image
1694
- * Added empty testimonial data field `testimonial_extra` for customization in testimonials
1695
- * Allow widget and shortcode sorting by post meta values via `meta_key`
1696
- * Correct PHP static accessors
1697
- * Update FAQ
1698
- * Update widget options screenshots
1699
- * Working full testimonial URLs
1700
-
1701
- = 2.1.1 =
1702
- * Add [testimonialswidget_list] paging screenshot
1703
-
1704
- = 2.1.0 =
1705
- * Enable paging for [testimonialswidget_list] shortcode
1706
- * Flush rewrite rules on activation
1707
- * Disallow paging in widget and [testimonialswidget_widget] shortcode
1708
-
1709
- = 2.0.6 =
1710
- * Update shortcode option directions
1711
-
1712
- = 2.0.5 =
1713
- * Ignore already imported
1714
- * Mark `testimonialswidget_widget() $number` argument as optional
1715
-
1716
- = 2.0.4 =
1717
- * Allow for 0 refresh_interval in get_testimonials_html
1718
-
1719
- = 2.0.3 =
1720
- * Allow for 0 refresh_interval in widget
1721
-
1722
- = 2.0.2 =
1723
- * BUGFIX [Warning: call_user_func_array() ??](http://wordpress.org/support/topic/plugin-testimonials-widget-warning-call_user_func_array)
1724
- * Added Testimonials_Widget_Widget::get_testimonials_scripts for use with add_filter for wp_footer
1725
-
1726
- = 2.0.1 =
1727
- * Verbiage updates
1728
- * Readme.txt validation
1729
- * widget q p tag display inline
1730
- * GPL2 licensing
1731
- * Move upgrade notice text towards installation
1732
- * Reorder screenshots
1733
- * Apply 'the_content' filters directly to prevent plugin baggage
1734
- * Update screenshot-7.png
1735
-
1736
- = 2.0.0 =
1737
- * Major rewrite
1738
- * Add filters for image & gravatar sizes
1739
- * Admin bar New > Testimonial
1740
- * Authors and lower can manage their own testimonials
1741
- * Auto-migration from old to new format upon install
1742
- * Public > Published
1743
- * Not public > Private
1744
- * Categories - product, project, service
1745
- * Clean up verbiage
1746
- * Cleaner widget class
1747
- * Custom columns list view
1748
- * Image
1749
- * Source
1750
- * Shortcode
1751
- * Email
1752
- * Company
1753
- * URL
1754
- * Published by
1755
- * Category
1756
- * Tags
1757
- * Date
1758
- * Custom fields metabox
1759
- * Email
1760
- * Company
1761
- * URL
1762
- * Custom post-type
1763
- * Default fields - source, email, company, URL
1764
- * Editors and higher can manage all testimonials and edit testimonial publisher
1765
- * Enable categories and tags
1766
- * Enable full shortcode options in widget
1767
- * Gravatar
1768
- * HTML content allowed
1769
- * Images
1770
- * JavaScript in footer
1771
- * Localization
1772
- * Reference shortcode column
1773
- * Reorganize widget options panel
1774
- * Rotation JavaScript in footer than body
1775
- * Shortcode options validation
1776
- * WP_Query for get_testimonials()
1777
- * Widget image on own line
1778
- * Widget options
1779
- * Title
1780
- * Category filter
1781
- * Tags filter
1782
- * Require all tags
1783
- * Advanced options
1784
- * Hide image?
1785
- * Hide source?
1786
- * Hide email?
1787
- * Hide company?
1788
- * Hide URL?
1789
- * Character limit
1790
- * IDs filter
1791
- * Limit
1792
- * Maximum Height
1793
- * Minimum Height
1794
- * ORDER BY
1795
- * ORDER BY Order
1796
- * Random order
1797
- * Rotation Speed
1798
- * Move caching to ideas
1799
- * Add theme function `testimonialswidget_widget()` doc
1800
- * Update POT
1801
- * [testimonialswidget_widget] shortcode
1802
- * Match [testimonialswidget_widget] shortcode option defaults to widget
1803
- * Update screenshots
1804
- * Readd Minimum Height - need help getting around this
1805
-
1806
- = 0.2.13 =
1807
- * Clean up CSS
1808
- * Remove q & cite p wrapper
1809
-
1810
- = 0.2.12 =
1811
- * the_title filter fix
1812
-
1813
- = 0.2.11 =
1814
- * Enable character limit for shortcode
1815
-
1816
- = 0.2.10 =
1817
- * Character limit nows forces text truncation than preventing of testimonial to show
1818
- * Add option - Limit number of testimonials to pull at a time
1819
- * Sanitize widget variables
1820
- * Fix random_order issue on testimonials widget
1821
-
1822
- = 0.2.9 =
1823
- * Require Editor role for managing Testimonials
1824
-
1825
- = 0.2.8 =
1826
- * CSS testimonialswidget_testimonial_list fix #2
1827
-
1828
- = 0.2.7 =
1829
- * CSS testimonialswidget_testimonial_list fix
1830
-
1831
- = 0.2.6 =
1832
- * CSS updates for widgets and lists
1833
-
1834
- = 0.2.5 =
1835
- * Add span.testimonialswidget_join for author , join text
1836
- * Add nl2br for testimonials display on a page
1837
-
1838
- = 0.2.4 =
1839
- * Shortcode added - Thank you Hal Gatewood
1840
-
1841
- = 0.2.3 =
1842
- * Allow testimonials to have multiple tags
1843
- * Show only quotes with all tags
1844
-
1845
- = 0.2.2 =
1846
- * Show newest testimonials first in admin list by default
1847
- * Quick locallization
1848
- * Quotes Collection recommendation
1849
-
1850
- = 2011-10-03: Version 0.2 =
1851
- * Multi-widget enabled
1852
- * Testimonial, author & source text are clickable automatically
1853
- * Allow 0 refresh to make widget static
1854
- * Allow pressing return when editing testimonial to save record
1855
-
1856
- = 2011-08-12: Version 0.1 =
1857
- * initial release
1858
 
 
1859
 
1860
- == Upgrade Notice ==
 
 
 
 
1861
 
1862
  = 2.8.0 =
 
1863
  * Deprecated
1864
  * `hide_author` now `hide_source`
1865
  * Removed filters `testimonials_widget_options_update`, `testimonials_widget_options_form`
@@ -1867,17 +377,21 @@ Visit the [support forum](http://wordpress.org/support/plugin/testimonials-widge
1867
  * Renamed variable and related class `widget_text` to `bottom_text`
1868
 
1869
  = 2.7.3 =
 
1870
  * Quotes are no longer handled via `q`, `p:before`, or `p:after` CSS. It's handled via `.testimonialswidget_testimonial .testimonialswidget_open_quote:before` and `.testimonialswidget_testimonial .testimonialswidget_close_quote:after`
1871
  * This change was made to keep consistency in how quotes were managed and to reduce the number of exception cases. In the end, this is simpler.
1872
 
1873
  = 2.7.0 =
 
1874
  * Quotes with `keep_whitespace=true` aren't applied via CSS `.testimonialswidget_testimonial q` tag anymore, but `.testimonialswidget_testimonial q p:first-child:before` and `.testimonialswidget_testimonial q p:last-child:after`
1875
  * Widget testimonial `p` tags are no longer CSS `display: inline`, `display: block` as expected
1876
 
1877
  = 2.4.1 =
 
1878
  * Paging is on by default, except for widgets
1879
 
1880
  = 2.0.0 =
 
1881
  * CSS
1882
  * Class `testimonialswidget_company` replaces `testimonialswidget_source`
1883
  * Class `testimonialswidget_source` replaces `testimonialswidget_author`
@@ -1895,9 +409,22 @@ Visit the [support forum](http://wordpress.org/support/plugin/testimonials-widge
1895
  * "Show author" and "Show source" options are replaced by "Hide source" and "Hide URL" respectively. There's no backwards compatibility for these changes.
1896
  * Default `min-height` is now 250px than 150px.
1897
 
 
 
 
 
 
 
 
 
 
1898
 
1899
  == TODO ==
1900
 
1901
- 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 [send along](http://aihr.us/contact-aihrus/) an [awesome testimonial](http://aihr.us/about-aihrus/testimonials/).
1902
 
1903
- * BUG [Post Types Order](http://wordpress.org/support/topic/random-order-doesnt-work) - sorting conflict
 
 
 
 
1
  === Testimonials Widget ===
2
+
3
  Contributors: comprock
4
  Donate link: http://aihr.us/about-aihrus/donate/
5
  Tags: client, customer, quotations, quote, quotes, random, review, quote, recommendation, reference, testimonial, testimonials, testimony, widget, wpml
6
  Requires at least: 3.4
7
  Tested up to: 3.6.0
8
+ Stable tag: 2.11.2
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
12
+ Testimonials Widget plugin allows you to display random or selected portfolio, quotes, reviews, showcases, or text with images on your WordPress blog.
13
 
14
 
15
  == Description ==
 
16
 
17
+ Testimonials Widget plugin allows you to display random or selected portfolio, quotes, reviews, showcases, or text with images on your WordPress blog. You can insert Testimonials Widget content via shortcode, theme functions, or widgets with category and tag selections and having multiple display options such as random or specific ordering.
18
+
19
+ 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 Testimonal Widget has its own CSS identifier for custom styling.
20
 
21
  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.
22
 
23
  Through categories and tagging, you can create organizational structures based upon products, projects and services via categories and then apply tagging for further classificaton. As an example, you might create a Portfolio category and then use tags to identify web, magazine, media, public, enterprise niches. You can then configure the Testimonial Widget to show only Portfolio testimonials with the public and enterprise tags. In another Testimonial Widget, you can also select only Portfolio testimonials, but then allow web and media tags.
24
 
25
+ The single testimonial view supports image, source, title, location, email, company and URL details.
26
 
27
  = Primary Features =
28
 
29
  * Admin interface to add, edit and manage testimonials
30
+ * Capable of handling multiple widgets per page or post
31
+ * Fields for source, testimonial, image, title, location, email, company and URL details
32
+ * Filters to manipulate testimonials output
33
+ * Multiple paging options for testimonials listings
34
  * Settings screen for site-wide option defaults
35
  * Shortcodes and theme functions for listings and rotation
36
+ * Single testimonial view includes image, source, title, location, email, company and URL details
37
  * Testimonials archive view
38
 
39
  = Testimonials Widget Premium Plugin Features =
40
 
41
+ Testimonials Widget Premium plugin extends the best [Testimonials Widget](http://wordpress.org/extend/plugins/testimonials-widget/) plugin for WordPress with [caching, excerpts, filters, read more links](http://aihr.us/testimonials-widget-premium/), more selection options, and advanced capabilities like selecting posts, pages and other custom post types as testimonials. Additionally, users can add testimonials via a front-end form.
42
 
43
  In using Testimonials Widget Premium, you'll not be sorry.
44
 
45
+ * "Read more" link column on testimonial posts admin page
46
  * Alternate destinations for "Read more" links
47
+ * Alternating `.even` and `.odd` CSS classes for styling testimonial list entries
48
  * Built-in update notification
49
  * Caching of testimonials queries and content to decrease server load time improve page loading speed by 1/10 to 1/2 a second
50
+ * Deactivates self if no active or incorrect version of Testimonials Widget plugin
51
+ * Default post author, category, and status options for user testimonial submissions
52
  * Deletes old and related testimonial cache entries automatically
53
  * Disable caching for widget, shortcode or theme functions
54
+ * Email notification for user submitted testimonials
55
  * Excerpts for widget view, with read more link to complete testimonial
56
  * Filters for caching and more link control, text replacement, and more
57
+ * Front-end entry form for user supplied testimonials. [Live demo](http://aihr.us/about-aihrus/testimonials/add-testimonial/)
58
+ * Plugin version tracking to ensure compatibility
59
+ * Premium tab on settings screen for site-wide option defaults
60
  * Prevent duplicate testimonials when using multiple testimonial instances
61
  * Read more links for testimonials exceeding the character limit
 
62
  * Select only testimonials with excerpts, images or of arbitrary maximum and minimum length
63
+ * Select post, page and other custom post types for content rotations
64
+ * Settings and URL based cache clearing
65
+ * Shortcodes and theme functions for testimonials count, testimonial link list, and user testimonial submission form
66
  * Show excerpts with list and single views
67
+ * Show unique testmimonials on page with multiple testimonial instances
68
+ * Testimonial links listing with image, source, title, location, company, and URL fields
69
  * WPML compatible
70
 
71
+ [Buy Testimonials Widget Premium](http://aihr.us/testimonials-widget-premium/) plugin for WordPress.
72
 
73
  = Additional Features =
74
 
75
+ * Auto-migration from pre-2.0.0 custom table to new Testimonials Widget custom post type
76
+ * Automatic linking of email and URL fields via source or company fields
77
+ * Clickable widget titles
 
78
  * Commenting on testimonial single-view pages
79
  * Compatible with WordPress multi-site
80
+ * Configuration based validation for easy extending or overriding
81
+ * Content truncation respects HTML tags
82
  * Custom CSS in footer for HTML validation
83
  * Custom text or HTML for bottom of widgets
84
+ * Custom widget bottom text
85
  * Customizable archive and testimonial URLs
86
  * Customizeable testimonial data field `testimonial_extra`
87
+ * Deletes testiomonials-widget custom post type entriess and settings on uninstall
88
+ * Disable self-generated quotation marks
89
+ * Easy to configure Next and Previous page indicators
90
  * Editors and admins can edit testimonial publisher
91
+ * Flush URLs on deactivation
92
+ * IE7 CSS hacks for quotes and join parts
93
+ * Image, email based Gravatar, category and tag enabled
94
+ * Internal version tracking for compatiblity checks and automatic settings update
95
+ * Localizable via `languages/testimonials-widget.pot`
96
+ * Optional commenting on testimonial single-view pages
97
  * Respects meta capabilities
98
  * Rotation JavaScript in footer than body
 
99
  * Supports [WP-PageNavi](http://wordpress.org/extend/plugins/wp-pagenavi/)
 
100
  * Testimonial content supports HTML
101
+ * Testimonial, email, and URL fields are clickable – URL requires `http://` or `https://` prefix
 
102
  * Testimonials Widget widget displays static and rotating testimonials
103
+ * Testimonials output is completely customizable via filters
104
  * Testimonials support styling based upon CSS classes for category, tags and post id
105
  * URLs can be opened in new windows
106
  * Unique CSS class per widget
113
 
114
  = Shortcode and Widget Options =
115
 
116
+ General
117
+
 
 
 
 
118
  * Character Limit - Number of characters to limit testimonial views to
119
  * `char_limit` - default none; char_limit=200
120
  * Widget - default 500
121
+ * Hide built-in quotes? - Remove open and close quote span tags surrounding testimonial content
122
+ * `disable_quotes` - default false; disable_quotes=true
123
+ * Hide "Testimonials Not Found"?
124
+ * `hide_not_found` - default show; hide_not_found=true
 
 
125
  * Hide Gravatar Image?
126
  * `hide_gravatar` - default show; hide_gravatar=true
127
  * Hide Image?
128
  * `hide_image` - default show; hide_image=true
129
+ * Hide Image in Single View?
130
+ * `hide_image_single` - default show; hide_image_single=true
131
+ * Hide Content?
132
+ * `hide_content` - default show; hide_content=true
133
  * Hide Author/Source? - Don't display "Post Title" in cite
134
  * `hide_source` - default show; hide_source=true
135
+ * Hide Email?
136
+ * `hide_email` - default show; hide_email=true
137
  * Hide Title?
138
  * `hide_title` - default show; hide_title=true
139
  * Hide Location?
140
  * `hide_location` - default show; hide_location=true
141
+ * Hide Company?
142
+ * `hide_company` - default show; hide_company=true
143
  * Hide URL?
144
  * `hide_url` - default show; hide_url=true
145
+ * URL Target - Adds target to all URLs; leave blank if none
146
+ * `target` - default none; target=_new
147
+ * Testimonial Bottom Text - Custom text or HTML for bottom of testimonials
148
+ * `bottom_text` - default none; bottom_text="`&lt;h3&gt;&lt;a href="http://example.com"&gt;All testimonials&lt;/a&gt;&lt;/h3&gt;`"
149
+ * Enable Paging - for [testimonialswidget_list]
150
+ * `paging` - default true [true|before|after|false]; paging=false
151
+ * `true` – display paging before and after testimonial entries
152
+ * `before` – display paging only before testimonial entries
153
+ * `after` – display paging only after testimonial entries
154
+ * Widget - Not functional
155
+
156
+ Selection
157
+
158
+ * Category Filter - Comma separated category slug-names
159
+ * `category` - default none; category=product or category="category-a, another-category"
160
+ * Require All Tags - Select only testimonials with all of the given tags
161
+ * `tags_all` - default OR; tags_all=true
162
+ * Tags Filter - Comma separated tag slug-names
163
+ * `tags` - default none; tags=fire or tags="tag-a, another-tag"
164
  * Include IDs Filter - Comma separated IDs
165
  * `ids` - default none; ids=2 or ids="2,4,6"
166
+ * Exclude IDs Filter - Comma separated IDs
167
+ * `exclude` - default none; exclude=2 or exclude="2,4,6"
 
 
 
168
  * Limit - Number of testimonials to rotate through via widget or show at a time when listing
169
  * `limit` - default 10; limit=25
170
+
171
+ Ordering
172
+
173
+ * Random Order? - Unchecking this will rotate testimonials per ORDER BY and ORDER BY Order. Widgets are random by default automatically
174
+ * `random` - default none; random=true (overrides `order` and `orderby`)
175
+ * Widget = default true
176
+ * ORDER BY - Used when Random order is disabled
177
+ * `orderby` - [default ID](http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters); orderby=title
178
  * ORDER BY meta_key - Used when "Random Order" is disabled and sorting by a testimonials meta key is needed
179
  * `meta_key` - default none [testimonials-widget-company|testimonials-widget-email|testimonials-widget-title|testimonials-widget-location|testimonials-widget-url]; meta_key=testimonials-widget-company
180
+ * ORDER BY Order - DESC or ASC
181
+ * `order` - [default DESC](http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters); order=ASC
182
+
183
+ Widget
184
+
185
+ * Widget Title
186
+ * `title` - default "Testimonials"
187
+ * Title Link - URL or Post ID to link widget title to
188
+ * `title_link` - default none; title_link=123, title_link=http://example.com
189
+ * Keep Whitespace? - Keeps testimonials looking as entered than sans auto-formatting
190
+ * `keep_whitespace` - default none; keep_whitespace=true
191
+ * The citation has no whitespace adaptions. It's straight text, except for email or URL links. The presentation is handled strictly by CSS.
192
+ * Height - Testimonials height, in pixels. Overrides minimum and maximum height
193
+ * `height` - default none; height=300
194
  * Minimum Height - Set for minimum display height, in pixels
195
  * `min_height` - default none; min_height=100
196
  * Maximum Height - Set for maximum display height, in pixels
197
  * `max_height` - default none; max_height=250
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  * Rotation speed - Seconds between testimonial rotations or 0 for no rotation at all
199
  * `refresh_interval` - default 5; refresh_interval=0
200
+
201
+ = Other Options =
202
+
203
+ Post Type
204
+
205
+ * Allow Comments? Only affects the Testimonials Widget post edit page. Your theme controls the front-end view.
206
+ * Archive Page URL – URL slug-name for testimonials archive page. After changing, you must click "Save Changes" on Permalink Settings to update them.
207
+ * Testimonial Page URL – URL slug-name for testimonial view pages. After changing, you must click "Save Changes" on Permalink Settings to update them.
208
+
209
+ Compatibility & Reset
210
+
211
+ * Remove `.hentry` CSS? – Some themes use class `.hentry` in a manner that breaks Testimonials Widgets CSS
212
+ * `remove_hentry` - default none; remove_hentry=true
213
+ * Use `<q>` tag? – Pre 2.11.0. Not HTML5 compliant
214
+ * `use_quote_tag` - default none; use_quote_tag=true
215
+ * Reset to Defaults? – Check this box to reset options to their defaults
216
 
217
  = Shortcode Examples =
218
 
219
+ [testimonialswidget_list]
220
+
221
+ * [testimonialswidget_list category=product hide_not_found=true]
222
+ * [testimonialswidget_list category=product tags=widget limit=5]
223
+ * [testimonialswidget_list char_limit=0 target=_new limit=3 disable_quotes=true]
224
+ * [testimonialswidget_list hide_source=true hide_url=true]
225
+ * [testimonialswidget_list ids="1,11,111" paging=false]
226
+ * [testimonialswidget_list meta_key=testimonials-widget-company order=asc limit=15]
227
+ * [testimonialswidget_list order=ASC orderby=title]
228
+ * [testimonialswidget_list tags="test,fun" random=true exclude="2,22,333"]
229
+
230
+ [testimonialswidget_widget]
231
+
232
+ * [testimonialswidget_widget category=product order=asc height=300]
233
+ * [testimonialswidget_widget min_height=250 max_height=500]
234
+ * [testimonialswidget_widget tags=sometag random=true]
235
 
236
  = Theme Functions =
237
 
238
+ * `testimonialswidget_list()` - Testimonials listing with paging
239
+ * `testimonialswidget_widget()` - Rotating testimonials
240
 
241
  = Filters =
242
 
269
 
270
  = Notes =
271
 
272
+ * Auto-migration from pre-2.0.0 custom table to new custom post type
273
+ * Company, URL and email details are attempted to be identified and placed properly
274
+ * Public testimonials are saved as Published. Non-public, are marked as Private.
275
+ * Ignores already imported
276
  * Default image size is based upon Thumbnail size in Media Settings
277
  * Gravatar image is configured in the Avatar section of Discussion Settings
278
+ * When plugin is uninstalled, all data and settings are deleted
279
 
280
  = Languages =
281
 
282
  You can translate this plugin into your own language if it's not done so already. The localization file `testimonials-widget.pot` can be found in the `languages` folder of this plugin. After translation, please [send the localized file](http://aihr.us/contact-aihrus/) to the plugin author.
283
 
284
+ See the FAQ for further localization tips.
285
+
286
+ * Dutch by Bjorn Robijns
287
  * [Hebrew by Ahrale](http://atar4u.com/)
288
 
289
  = Recommendation =
304
 
305
  So that others can share in the answer, please submit your support requests through the [WordPress forums for Testimonials Widget](http://wordpress.org/support/plugin/testimonials-widget).
306
 
307
+ If you want private or priority support, [please donate](http://aihr.us/about-aihrus/donate/) at least $ 65 USD to cover my time. Then send your [support request](http://aihr.us/contact-aihrus/).
308
 
309
  Thank you for your understanding.
310
 
313
 
314
  1. Via WordPress Admin > Plugins > Add New, Upload the `testimonials-widget.zip` file
315
  1. Alternately, via FTP, upload `testimonials-widget` directory to the `/wp-content/plugins/` directory
316
+ 1. Activate the 'Testimonials Widget' plugin after uploading or through WordPress Admin > Plugins
317
 
318
  = Usage =
319
+
320
  1. Add and manage the quotes through the 'Testimonials' menu in the WordPress admin area
321
  1. To display testimonials in the sidebar, go to 'Widgets' menu and drag the 'Testimonials Widget' into the desired widget area
322
  1. Configure the 'Testimonials Widget' to select quotes and display as needed
323
+ 1. Use the `[testimonialswidget_list]` or `[testimonialswidget_widget]` shortcodes to display testimonials on a page or in a post
324
+ 1. Read FAQ 1 for `testimonialswidget_list()` and `testimonialswidget_widget()` theme functions usage
325
 
326
 
327
  == Frequently Asked Questions ==
328
 
329
+ See [FAQ](http://aihr.us/testimonials-widget/faq/)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
330
 
331
  = I'm still stuck, how can I get help? =
332
+
333
+ Visit the [support forum](http://wordpress.org/support/plugin/testimonials-widget) and ask your question. Don't forget to include the URL of where to see the problem.
334
 
335
 
336
  == Screenshots ==
337
 
338
  1. Testimonials admin interface
339
+ 2. Collasped Testimonials Widget options
340
+ 3. Expanded 'General Options' in Testimonials Widget options
341
+ 4. Testimonial widget in the sidebar
342
+ 5. [testimonialswidget_list] in post
343
+ 6. [testimonialswidget_list] results with paging
344
+ 7. Widget whitespace kept
345
+ 8. Widget with clickable title and custom text/HTML on bottom
346
+ 9. [WP-PageNavi compatible](http://wordpress.org/extend/plugins/wp-pagenavi/) for page numbers than default arrows
347
+ 10. Poedit Catalog properties
348
+ 11. Testimonials Widget Settings > General tab
349
+ 12. Expanded 'Selection Options' in Testimonials Widget options
350
+ 13. Expanded 'Ordering Options' in Testimonials Widget options
351
+ 14. Testimonials Widget Settings > Selection tab
352
+ 15. Testimonials Widget Settings > Post Type tab
353
+ 16. Testimonials Widget Settings > Widget tab
 
 
 
 
 
 
 
 
 
 
354
 
355
 
356
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
357
 
358
+ See [Changelog](http://aihr.us/testimonials-widget/changelog/)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
359
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
 
361
+ == Upgrade Notice ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
362
 
363
+ = 2.11.0 =
364
 
365
+ * CSS class names are simplified. For the most part, other than `testimonialswidget_testimonial` remove `testimonialswidget_` from the CSS class name in your CSS customizations.
366
+ * Ex: `.testimonialswidget_join` becomes `.join`
367
+ * Ex: `.testimonialswidget_author` becomes `.author`
368
+ * Testimonials are now formatted using `blockquote` than `q` for HTML5 compliance. If you need `q` tag formatting, enable it at WP Admin > Testimonials > Settings, Compatibility & Reset tab
369
+ * `cite` is now `div.credit`
370
 
371
  = 2.8.0 =
372
+
373
  * Deprecated
374
  * `hide_author` now `hide_source`
375
  * Removed filters `testimonials_widget_options_update`, `testimonials_widget_options_form`
377
  * Renamed variable and related class `widget_text` to `bottom_text`
378
 
379
  = 2.7.3 =
380
+
381
  * Quotes are no longer handled via `q`, `p:before`, or `p:after` CSS. It's handled via `.testimonialswidget_testimonial .testimonialswidget_open_quote:before` and `.testimonialswidget_testimonial .testimonialswidget_close_quote:after`
382
  * This change was made to keep consistency in how quotes were managed and to reduce the number of exception cases. In the end, this is simpler.
383
 
384
  = 2.7.0 =
385
+
386
  * Quotes with `keep_whitespace=true` aren't applied via CSS `.testimonialswidget_testimonial q` tag anymore, but `.testimonialswidget_testimonial q p:first-child:before` and `.testimonialswidget_testimonial q p:last-child:after`
387
  * Widget testimonial `p` tags are no longer CSS `display: inline`, `display: block` as expected
388
 
389
  = 2.4.1 =
390
+
391
  * Paging is on by default, except for widgets
392
 
393
  = 2.0.0 =
394
+
395
  * CSS
396
  * Class `testimonialswidget_company` replaces `testimonialswidget_source`
397
  * Class `testimonialswidget_source` replaces `testimonialswidget_author`
409
  * "Show author" and "Show source" options are replaced by "Hide source" and "Hide URL" respectively. There's no backwards compatibility for these changes.
410
  * Default `min-height` is now 250px than 150px.
411
 
412
+ == Beta Testers Needed ==
413
+
414
+ I really want Testimonials Widget and Testimonials Widget Premium to be the best WordPress plugins of their type. However, it's getting beyond me to do it alone.
415
+
416
+ I need beta testers to help with ensuring pending releases of Testimonials Widget and Testimonials Widget Premium are solid. This would benefit us all by helping reduce the number of releases and raise code quality.
417
+
418
+ [Please contact me directly](http://aihr.us/contact-aihrus/).
419
+
420
+ Beta testers benefit directly with latest versions, free access to Testimonials Widget Premium, and personal support assistance by me.
421
 
422
  == TODO ==
423
 
424
+ 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/).
425
 
426
+ * Add http protocol to URLs on validation
427
+ * Add notice about deleting data and settings on uninstall
428
+ * Settings export/import
429
+ * Show changelog on update
430
+ * Update to WordPress Coding standards
screenshot-1.png DELETED
Binary file
screenshot-10.png DELETED
Binary file
screenshot-11.png DELETED
Binary file
screenshot-12.png DELETED
Binary file
screenshot-13.png DELETED
Binary file
screenshot-14.png DELETED
Binary file
screenshot-15.png DELETED
Binary file
screenshot-16.png DELETED
Binary file
screenshot-17.png DELETED
Binary file
screenshot-18.png DELETED
Binary file
screenshot-19.png DELETED
Binary file
screenshot-2.png DELETED
Binary file
screenshot-20.png DELETED
Binary file
screenshot-21.png DELETED
Binary file
screenshot-22.png DELETED
Binary file
screenshot-23.png DELETED
Binary file
screenshot-24.png DELETED
Binary file
screenshot-25.png DELETED
Binary file
screenshot-26.png DELETED
Binary file
screenshot-3.png DELETED
Binary file
screenshot-4.png DELETED
Binary file
screenshot-5.png DELETED
Binary file
screenshot-6.png DELETED
Binary file
screenshot-7.png DELETED
Binary file
screenshot-8.png DELETED
Binary file
screenshot-9.png DELETED
Binary file
testimonials-widget.css CHANGED
@@ -2,109 +2,118 @@
2
  /* testimonials wrapper */
3
  }
4
 
5
- .testimonialswidget_testimonials .testimonialswidget_active {
 
 
 
 
 
 
6
  /* active testimonials */
7
  display: block;
8
  }
9
 
10
- .testimonialswidget_testimonials .testimonialswidget_display_none {
11
  /* staged testimonials */
12
  display: none;
13
  }
14
 
15
- .testimonialswidget_paging {
16
  clear: both;
17
  font-weight: 700;
18
  height: 1.4em;
19
  }
20
 
21
- .testimonialswidget_testimonial {
22
- clear: left;
23
- display: none;
24
- margin: 0 0 1.4em;
25
  }
26
 
27
- .testimonialswidget_testimonial .testimonialswidget_image {
28
  float: left;
29
  margin-bottom: .4em;
30
  margin-right: .2em;
31
  }
32
 
33
- .widget .testimonialswidget_testimonial .testimonialswidget_image {
34
  display: block;
35
  float: initial;
36
  }
37
 
38
- .testimonialswidget_testimonial q {
 
39
  /* the testimonial itself */
40
  quotes: none;
41
  }
42
 
43
- .testimonialswidget_testimonial .testimonialswidget_open_quote:before {
 
 
 
 
44
  content: '\201C';
45
  }
46
 
47
- .testimonialswidget_testimonial .testimonialswidget_close_quote:after {
 
 
 
 
48
  content: '\201D';
49
  }
50
 
51
- .testimonialswidget_testimonial cite {
 
52
  /* outer wrapper for source & company */
53
  display: block; /* To display source and company on a new line */
54
  margin-top: .2em;
55
  text-align: right;
56
  }
57
 
58
- .widget .testimonialswidget_testimonial cite {
 
59
  margin-top: .8em;
60
  }
61
 
62
- .widget .testimonialswidget_testimonial .testimonialswidget_whitespace cite,
63
- .widget .testimonialswidget_whitespace cite {
 
 
64
  margin-top: .2em;
65
  }
66
 
67
- .testimonialswidget_testimonial cite:before {
 
68
  content: "– "
69
  }
70
 
71
- .testimonialswidget_testimonial .testimonialswidget_source {
72
- /* testimonial source */
73
- }
74
-
75
- .testimonialswidget_testimonial .testimonialswidget_join_title,
76
- .testimonialswidget_testimonial .testimonialswidget_join_location,
77
- .testimonialswidget_testimonial .testimonialswidget_join {
78
  /* section between source and company information */
 
79
  }
80
 
81
- .testimonialswidget_testimonial .testimonialswidget_join_title:before,
82
- .testimonialswidget_testimonial .testimonialswidget_join_location:before,
83
- .testimonialswidget_testimonial .testimonialswidget_join:before {
84
  /* join text */
85
  content: ", "
86
  }
87
 
88
- .testimonialswidget_testimonial .testimonialswidget_title,
89
- .testimonialswidget_testimonial .testimonialswidget_location,
90
- .testimonialswidget_testimonial .testimonialswidget_company,
91
- .testimonialswidget_testimonial .testimonialswidget_url {
 
 
92
  /* testimonial title, company and url informaiton */
93
  }
94
 
95
- .testimonialswidget_testimonial .testimonialswidget_extra {
96
  margin-top: .8em;
97
  }
98
 
99
- .testimonialswidget_testimonial .testimonialswidget_bottom_text {
100
  margin-top: 1.4em;
101
  }
102
-
103
- .testimonialswidget_testimonials_list {
104
- /* testimonials list wrapper */
105
- }
106
-
107
- .testimonialswidget_testimonial_list {
108
- display: block;
109
- margin-bottom: 1.4em;
110
- }
2
  /* testimonials wrapper */
3
  }
4
 
5
+ .testimonialswidget_testimonial {
6
+ clear: left;
7
+ display: none;
8
+ margin: 0 0 1.4em;
9
+ }
10
+
11
+ .testimonialswidget_testimonials .active {
12
  /* active testimonials */
13
  display: block;
14
  }
15
 
16
+ .testimonialswidget_testimonials .display_none {
17
  /* staged testimonials */
18
  display: none;
19
  }
20
 
21
+ .testimonialswidget_testimonials .paging {
22
  clear: both;
23
  font-weight: 700;
24
  height: 1.4em;
25
  }
26
 
27
+ .testimonialswidget_testimonial.list,
28
+ .testimonialswidget_testimonial.single {
29
+ display: block;
 
30
  }
31
 
32
+ .testimonialswidget_testimonial .image {
33
  float: left;
34
  margin-bottom: .4em;
35
  margin-right: .2em;
36
  }
37
 
38
+ .widget .testimonialswidget_testimonial .image {
39
  display: block;
40
  float: initial;
41
  }
42
 
43
+ .testimonialswidget_testimonial q,
44
+ .testimonialswidget_testimonial blockquote {
45
  /* the testimonial itself */
46
  quotes: none;
47
  }
48
 
49
+ .testimonialswidget_testimonial .open_quote {
50
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '“' );
51
+ }
52
+
53
+ .testimonialswidget_testimonial .open_quote:before {
54
  content: '\201C';
55
  }
56
 
57
+ .testimonialswidget_testimonial .close_quote {
58
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '”' );
59
+ }
60
+
61
+ .testimonialswidget_testimonial .close_quote:after {
62
  content: '\201D';
63
  }
64
 
65
+ .testimonialswidget_testimonial cite,
66
+ .testimonialswidget_testimonial div.credit {
67
  /* outer wrapper for source & company */
68
  display: block; /* To display source and company on a new line */
69
  margin-top: .2em;
70
  text-align: right;
71
  }
72
 
73
+ .widget .testimonialswidget_testimonial cite,
74
+ .widget .testimonialswidget_testimonial div.credit {
75
  margin-top: .8em;
76
  }
77
 
78
+ .widget .testimonialswidget_testimonial .whitespace cite,
79
+ .widget .whitespace cite,
80
+ .widget .testimonialswidget_testimonial .whitespace div.credit,
81
+ .widget .whitespace div.credit {
82
  margin-top: .2em;
83
  }
84
 
85
+ .testimonialswidget_testimonial cite:before,
86
+ .testimonialswidget_testimonial div.credit:before {
87
  content: "– "
88
  }
89
 
90
+ .testimonialswidget_testimonial .join_title,
91
+ .testimonialswidget_testimonial .join_location,
92
+ .testimonialswidget_testimonial .join {
 
 
 
 
93
  /* section between source and company information */
94
+ *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ', ' );
95
  }
96
 
97
+ .testimonialswidget_testimonial .join_title:before,
98
+ .testimonialswidget_testimonial .join_location:before,
99
+ .testimonialswidget_testimonial .join:before {
100
  /* join text */
101
  content: ", "
102
  }
103
 
104
+ .testimonialswidget_testimonial .author,
105
+ .testimonialswidget_testimonial .email,
106
+ .testimonialswidget_testimonial .title,
107
+ .testimonialswidget_testimonial .location,
108
+ .testimonialswidget_testimonial .company,
109
+ .testimonialswidget_testimonial .url {
110
  /* testimonial title, company and url informaiton */
111
  }
112
 
113
+ .testimonialswidget_testimonial .extra {
114
  margin-top: .8em;
115
  }
116
 
117
+ .testimonialswidget_testimonial .bottom_text {
118
  margin-top: 1.4em;
119
  }
 
 
 
 
 
 
 
 
 
testimonials-widget.php CHANGED
@@ -1,15 +1,14 @@
1
  <?php
2
- /*
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 rotating portfolio, quotes, reviews, showcases, or text with images on your WordPress blog.
6
- Version: 2.9.1
7
  Author: Michael Cannon
8
  Author URI: http://aihr.us/about-aihrus/michael-cannon-resume/
9
  License: GPLv2 or later
10
  */
11
-
12
- /*
13
  Copyright 2013 Michael Cannon (email: mc@aihr.us)
14
 
15
  This program is free software; you can redistribute it and/or modify
@@ -27,46 +26,54 @@
27
  */
28
 
29
 
 
 
 
30
  class Testimonials_Widget {
31
  const id = 'testimonialswidget_testimonials';
32
  const old_name = 'testimonialswidget';
33
  const pt = 'testimonials-widget';
34
- const version = '2.8.2';
35
 
36
  private $max_num_pages = 0;
37
  private $post_count = 0;
38
- private $settings_link = '';
39
  private $wp_query = null;
40
 
41
- private static $base;
42
 
43
- public static $css = array();
44
- public static $css_called = false;
45
  public static $instance_number = 0;
46
  public static $scripts = array();
47
  public static $scripts_called = false;
48
- public static $tag_close_quote = '<span class="testimonialswidget_close_quote"></span>';
49
- public static $tag_open_quote = '<span class="testimonialswidget_open_quote"></span>';
 
50
  public static $widget_number = 100000;
51
 
52
 
53
  public function __construct() {
54
  add_action( 'admin_init', array( &$this, 'admin_init' ) );
55
  add_action( 'init', array( &$this, 'init' ) );
56
- add_action( 'widgets_init', array( &$this, 'init_widgets' ) );
57
  add_shortcode( 'testimonialswidget_list', array( &$this, 'testimonialswidget_list' ) );
58
  add_shortcode( 'testimonialswidget_widget', array( &$this, 'testimonialswidget_widget' ) );
59
  load_plugin_textdomain( self::pt, false, 'testimonials-widget/languages' );
60
  register_activation_hook( __FILE__, array( &$this, 'activation' ) );
 
 
61
  }
62
 
63
 
64
  public function admin_init() {
 
 
65
  $this->add_meta_box_testimonials_widget();
66
  $this->update();
67
  add_action( 'gettext', array( &$this, 'gettext_testimonials' ) );
68
  add_action( 'manage_' . self::pt . '_posts_custom_column', array( &$this, 'manage_testimonialswidget_posts_custom_column' ), 10, 2 );
69
  add_filter( 'manage_' . self::pt . '_posts_columns', array( &$this, 'manage_edit_testimonialswidget_columns' ) );
 
70
  add_filter( 'plugin_row_meta', array( &$this, 'plugin_row_meta'), 10, 2 );
71
  add_filter( 'post_updated_messages', array( &$this, 'post_updated_messages' ) );
72
  add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts_author' ) );
@@ -74,27 +81,24 @@ class Testimonials_Widget {
74
  }
75
 
76
 
77
- public function plugin_action_links( $links, $file ) {
78
- if ( $file == plugin_basename( __FILE__ ) ) {
79
- array_unshift( $links, $this->settings_link );
80
  }
81
 
82
- return $links;
 
 
 
83
  }
84
 
85
 
86
- public function init() {
87
- if ( function_exists( 'admin_url' ) ) {
88
- require_once( 'lib/settings.testimonials-widget.php' );
89
-
90
- $this->settings_link = '<a href="' . get_admin_url() . 'edit.php?post_type=' . Testimonials_Widget::pt . '&page=' . Testimonials_Widget_Settings::id . '">' . __('Settings', 'testimonials-widget') . '</a>';
91
- add_filter( 'plugin_action_links', array( &$this, 'plugin_action_links' ), 10, 2 );
92
  }
93
 
94
- add_filter( 'the_content', array( &$this, 'get_single' ) );
95
- self::$base = plugin_basename(__FILE__);
96
- self::init_post_type();
97
- self::styles();
98
  }
99
 
100
 
@@ -149,11 +153,72 @@ class Testimonials_Widget {
149
 
150
 
151
  public function activation() {
 
 
152
  self::init();
 
153
  flush_rewrite_rules();
154
  }
155
 
156
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  public static function plugin_row_meta( $input, $file ) {
158
  if ( $file != self::$base ) {
159
  return $input;
@@ -161,7 +226,7 @@ class Testimonials_Widget {
161
 
162
  $links = array(
163
  '<a href="http://aihr.us/about-aihrus/donate/">Donate</a>',
164
- '<a href="http://aihr.us/wordpress/testimonials-widget-premium/">Purchase Testimonials Widget Premium</a>'
165
  );
166
 
167
  $input = array_merge( $input, $links );
@@ -295,7 +360,7 @@ class Testimonials_Widget {
295
  case 'testimonials-widget-email':
296
  case 'testimonials-widget-url':
297
  $url = get_post_meta( $post_id, $column, true );
298
- if ( ! empty( $url ) && 0 === preg_match( "#https?://#", $url ) ) {
299
  $url = 'http://' . $url;
300
  }
301
 
@@ -451,7 +516,6 @@ class Testimonials_Widget {
451
  if ( empty( $atts['random'] ) )
452
  $atts['random'] = 1;
453
  }
454
-
455
  $atts = wp_parse_args( $atts, self::get_defaults() );
456
  $atts = Testimonials_Widget_Settings::validate_settings( $atts );
457
 
@@ -513,9 +577,15 @@ class Testimonials_Widget {
513
 
514
  public function get_testimonials_html_css( $atts, $widget_number = null ) {
515
  // display attributes
 
516
  $max_height = $atts['max_height'];
517
  $min_height = $atts['min_height'];
518
 
 
 
 
 
 
519
  $css = array();
520
  $id_base = self::id . $widget_number;
521
 
@@ -557,13 +627,13 @@ EOF;
557
  <script type="text/javascript">
558
  function nextTestimonial{$widget_number}() {
559
  if ( ! jQuery('.{$id_base}').first().hasClass('hovered') ) {
560
- var active = jQuery('.{$id_base} .testimonialswidget_active');
561
- var next = (jQuery('.{$id_base} .testimonialswidget_active').next().length > 0) ? jQuery('.{$id_base} .testimonialswidget_active').next() : jQuery('.{$id_base} .testimonialswidget_testimonial:first');
562
  active.fadeOut(1250, function(){
563
- active.removeClass('testimonialswidget_active');
564
  next.fadeIn(500);
565
- next.removeClass('testimonialswidget_display_none');
566
- next.addClass('testimonialswidget_active');
567
  });
568
  }
569
  }
@@ -592,8 +662,8 @@ EOF;
592
  // display attributes
593
  $hide_not_found = $atts['hide_not_found'];
594
  $paging = Testimonials_Widget_Settings::is_true( $atts['paging'] );
595
- $paging_before = ( 'before' == $atts['paging'] );
596
- $paging_after = ( 'after' == $atts['paging'] );
597
  $refresh_interval = $atts['refresh_interval'];
598
  $target = $atts['target'];
599
 
@@ -604,7 +674,7 @@ EOF;
604
  $html .= '<div class="' . $id;
605
 
606
  if ( $is_list )
607
- $html .= ' ' . $id . '_list';
608
 
609
  $html .= '">';
610
  } else {
@@ -649,30 +719,34 @@ EOF;
649
  $char_limit = $atts['char_limit'];
650
  $content_more = apply_filters( 'testimonials_widget_content_more', __( '…', 'testimonials-widget' ) );
651
  $content_more .= self::$tag_close_quote;
 
652
  $do_company = ! $atts['hide_company'] && ! empty( $testimonial['testimonial_company'] );
653
  $do_content = ! $atts['hide_content'] && ! empty( $testimonial['testimonial_content'] );
654
  $do_email = ! $atts['hide_email'] && ! empty( $testimonial['testimonial_email'] ) && is_email( $testimonial['testimonial_email'] );
655
  $do_image = ! $atts['hide_image'] && ! empty( $testimonial['testimonial_image'] );
 
656
  $do_location = ! $atts['hide_location'] && ! empty( $testimonial['testimonial_location'] );
657
  $do_source = ! $atts['hide_source'] && ! empty( $testimonial['testimonial_source'] );
658
  $do_title = ! $atts['hide_title'] && ! empty( $testimonial['testimonial_title'] );
659
  $do_url = ! $atts['hide_url'] && ! empty( $testimonial['testimonial_url'] );
660
  $keep_whitespace = $atts['keep_whitespace'];
661
  $remove_hentry = $atts['remove_hentry'];
 
662
 
663
  $class = 'testimonialswidget_testimonial';
664
 
665
- if ( $is_list ) {
666
- $class .= ' testimonialswidget_testimonial_list';
 
 
667
  } elseif ( $is_first ) {
668
- $class .= ' testimonialswidget_active';
669
  } elseif ( ! $is_first ) {
670
- $class .= ' testimonialswidget_display_none';
671
  }
672
 
673
- if ( $keep_whitespace ) {
674
- $class .= ' testimonialswidget_whitespace';
675
- }
676
 
677
  $div_open = '<div class="';
678
 
@@ -688,15 +762,19 @@ EOF;
688
 
689
  $image = '';
690
  if ( $do_image ) {
691
- $image .= '<span class="testimonialswidget_image">';
692
  $image .= $testimonial['testimonial_image'];
693
  $image .= '</span>';
694
  }
695
 
 
 
 
 
696
  $quote = '';
697
  if ( $do_content ) {
698
  $content = $testimonial['testimonial_content'];
699
- $content = self::format_content( $content, $widget_number, $keep_whitespace );
700
 
701
  if ( $char_limit ) {
702
  $content = self::testimonials_truncate( $content, $char_limit, ' ', $content_more );
@@ -706,91 +784,106 @@ EOF;
706
  $content = apply_filters( 'testimonials_widget_content', $content, $widget_number, $testimonial, $atts );
707
  $content = make_clickable( $content );
708
 
709
- $quote = '<q>';
710
- $quote .= $content;
711
- $quote .= '</q>';
 
 
 
 
 
 
712
  }
713
 
714
  $cite = '';
715
  $done_url = false;
716
  if ( $do_source && $do_email ) {
717
- $cite .= '<span class="testimonialswidget_author">';
718
  $cite .= '<a href="mailto:' . $testimonial['testimonial_email'] . '">';
719
  $cite .= $testimonial['testimonial_source'];
720
  $cite .= '</a>';
721
  $cite .= '</span>';
722
  } elseif ( $do_source && ! $do_company && $do_url ) {
723
- $cite .= '<span class="testimonialswidget_author">';
724
- $cite .= '<a href="' . $testimonial['testimonial_url'] . '">';
725
  $cite .= $testimonial['testimonial_source'];
726
  $cite .= '</a>';
727
  $cite .= '</span>';
728
  $done_url = true;
729
  } elseif ( $do_source ) {
730
- $cite .= '<span class="testimonialswidget_author">';
731
  $cite .= $testimonial['testimonial_source'];
732
  $cite .= '</span>';
733
  } elseif ( $do_email ) {
734
- $cite .= '<span class="testimonialswidget_email">';
735
  $cite .= make_clickable( $testimonial['testimonial_email'] );
736
  $cite .= '</span>';
737
  }
738
 
739
  if ( $do_title && $cite )
740
- $cite .= '<span class="testimonialswidget_join_title"></span>';
741
 
742
  if ( $do_title ) {
743
- $cite .= '<span class="testimonialswidget_title">';
744
  $cite .= $testimonial['testimonial_title'];
745
  $cite .= '</span>';
746
  }
747
 
748
  if ( $do_location && $cite )
749
- $cite .= '<span class="testimonialswidget_join_location"></span>';
750
 
751
  if ( $do_location ) {
752
- $cite .= '<span class="testimonialswidget_location">';
753
  $cite .= $testimonial['testimonial_location'];
754
  $cite .= '</span>';
755
  }
756
 
757
  if ( ( $do_company || ( $do_url && ! $done_url ) ) && $cite )
758
- $cite .= '<span class="testimonialswidget_join"></span>';
759
 
760
  if ( $do_company && $do_url ) {
761
- $cite .= '<span class="testimonialswidget_company">';
762
- $cite .= '<a href="' . $testimonial['testimonial_url'] . '">';
763
  $cite .= $testimonial['testimonial_company'];
764
  $cite .= '</a>';
765
  $cite .= '</span>';
766
  } elseif ( $do_company ) {
767
- $cite .= '<span class="testimonialswidget_company">';
768
  $cite .= $testimonial['testimonial_company'];
769
  $cite .= '</span>';
770
  } elseif ( $do_url && ! $done_url ) {
771
- $cite .= '<span class="testimonialswidget_url">';
772
  $cite .= make_clickable( $testimonial['testimonial_url'] );
773
  $cite .= '</span>';
774
  }
775
 
776
- if ( ! empty( $cite ) )
777
- $cite = '<cite>' . $cite . '</cite>';
 
 
 
 
 
 
 
 
778
 
779
  $extra = '';
780
  if ( ! empty( $testimonial['testimonial_extra'] ) ) {
781
- $extra .= '<div class="testimonialswidget_extra">';
782
  $extra .= $testimonial['testimonial_extra'];
783
  $extra .= '</div>';
784
  }
785
 
786
  $bottom_text = '';
787
  if ( ! empty( $atts['bottom_text'] ) ) {
788
- $bottom_text = '<div class="testimonialswidget_bottom_text">';
789
  $bottom_text .= $atts['bottom_text'];
790
  $bottom_text .= '</div>';
791
  }
792
 
793
  $div_close = '</div>';
 
794
  $html = $div_open
795
  . $image
796
  . $quote
@@ -801,6 +894,12 @@ EOF;
801
 
802
  $html = apply_filters( 'testimonials_widget_get_testimonial_html', $html, $testimonial, $atts, $is_list, $is_first, $widget_number, $div_open, $image, $quote, $cite, $extra, $bottom_text, $div_close );
803
 
 
 
 
 
 
 
804
  return $html;
805
  }
806
 
@@ -828,8 +927,8 @@ EOF;
828
  * Truncate HTML, close opened tags. UTF-8 aware, and aware of unpaired tags
829
  * (which don't need a matching closing tag)
830
  *
831
- * @param int $max_length Maximum length of the characters of the string
832
  * @param string $html
 
833
  * @param string $indicator Suffix to use if string was truncated.
834
  * @param boolean $force_indicator Suffix to use if string was truncated.
835
  * @return string
@@ -934,12 +1033,15 @@ EOF;
934
  }
935
 
936
 
937
- public function format_content( $content, $widget_number, $keep_whitespace = false ) {
938
  if ( empty ( $content ) )
939
  return $content;
940
 
 
 
941
  // wrap our own quote class around the content before any formatting
942
  // happens
 
943
  $temp_content = self::$tag_open_quote;
944
  $temp_content .= $content;
945
  $temp_content .= self::$tag_close_quote;
@@ -973,7 +1075,7 @@ EOF;
973
  return $html;
974
  }
975
 
976
- $html .= '<div class="testimonialswidget_paging';
977
 
978
  if ( $prepend ) {
979
  $html .= ' prepend';
@@ -1045,17 +1147,11 @@ EOF;
1045
 
1046
 
1047
  public function get_query_args( $atts ) {
1048
- $category = $atts['category'];
1049
- $exclude = $atts['exclude'];
1050
- $ids = $atts['ids'];
1051
- $limit = $atts['limit'];
1052
- $meta_key = $atts['meta_key'];
1053
- $order = $atts['order'];
1054
- $orderby = $atts['orderby'];
1055
- $paging = $atts['paging'];
1056
- $random = $atts['random'];
1057
- $tags = $atts['tags'];
1058
- $tags_all = $atts['tags_all'];
1059
 
1060
  if ( $random ) {
1061
  $orderby = 'rand';
@@ -1064,11 +1160,19 @@ EOF;
1064
 
1065
  $args = array(
1066
  'orderby' => $orderby,
1067
- 'post_status' => 'publish',
 
 
 
1068
  'post_type' => Testimonials_Widget::pt,
1069
  'posts_per_page' => $limit,
1070
  );
1071
 
 
 
 
 
 
1072
  if ( $paging && ! empty( $atts['paged'] ) && is_singular() ) {
1073
  $args['paged'] = $atts['paged'];
1074
  }
@@ -1209,7 +1313,7 @@ EOF;
1209
  }
1210
 
1211
 
1212
- public function init_widgets() {
1213
  require_once 'lib/testimonials-widget-widget.php';
1214
 
1215
  register_widget( 'Testimonials_Widget_Widget' );
@@ -1339,9 +1443,6 @@ function testimonialswidget_list( $atts = array() ) {
1339
  function testimonialswidget_widget( $atts = array(), $widget_number = null ) {
1340
  global $Testimonials_Widget;
1341
 
1342
- if ( empty( $atts['random'] ) )
1343
- $atts['random'] = 1;
1344
-
1345
  return $Testimonials_Widget->testimonialswidget_widget( $atts, $widget_number );
1346
  }
1347
 
1
  <?php
2
+ /**
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.11.2
7
  Author: Michael Cannon
8
  Author URI: http://aihr.us/about-aihrus/michael-cannon-resume/
9
  License: GPLv2 or later
10
  */
11
+ /**
 
12
  Copyright 2013 Michael Cannon (email: mc@aihr.us)
13
 
14
  This program is free software; you can redistribute it and/or modify
26
  */
27
 
28
 
29
+ require_once( 'lib/settings.testimonials-widget.php' );
30
+
31
+
32
  class Testimonials_Widget {
33
  const id = 'testimonialswidget_testimonials';
34
  const old_name = 'testimonialswidget';
35
  const pt = 'testimonials-widget';
36
+ const version = '2.11.2';
37
 
38
  private $max_num_pages = 0;
39
  private $post_count = 0;
 
40
  private $wp_query = null;
41
 
42
+ private static $base = null;
43
 
44
+ public static $css = array();
45
+ public static $css_called = false;
46
  public static $instance_number = 0;
47
  public static $scripts = array();
48
  public static $scripts_called = false;
49
+ public static $settings_link = '';
50
+ public static $tag_close_quote = '<span class="close_quote"></span>';
51
+ public static $tag_open_quote = '<span class="open_quote"></span>';
52
  public static $widget_number = 100000;
53
 
54
 
55
  public function __construct() {
56
  add_action( 'admin_init', array( &$this, 'admin_init' ) );
57
  add_action( 'init', array( &$this, 'init' ) );
58
+ add_action( 'widgets_init', array( &$this, 'widgets_init' ) );
59
  add_shortcode( 'testimonialswidget_list', array( &$this, 'testimonialswidget_list' ) );
60
  add_shortcode( 'testimonialswidget_widget', array( &$this, 'testimonialswidget_widget' ) );
61
  load_plugin_textdomain( self::pt, false, 'testimonials-widget/languages' );
62
  register_activation_hook( __FILE__, array( &$this, 'activation' ) );
63
+ register_deactivation_hook( __FILE__, array( &$this, 'deactivation' ) );
64
+ register_uninstall_hook( __FILE__, array( 'Testimonials_Widget', 'uninstall' ) );
65
  }
66
 
67
 
68
  public function admin_init() {
69
+ self::$settings_link = '<a href="' . get_admin_url() . 'edit.php?post_type=' . Testimonials_Widget::pt . '&page=' . Testimonials_Widget_Settings::id . '">' . __('Settings', 'testimonials-widget') . '</a>';
70
+
71
  $this->add_meta_box_testimonials_widget();
72
  $this->update();
73
  add_action( 'gettext', array( &$this, 'gettext_testimonials' ) );
74
  add_action( 'manage_' . self::pt . '_posts_custom_column', array( &$this, 'manage_testimonialswidget_posts_custom_column' ), 10, 2 );
75
  add_filter( 'manage_' . self::pt . '_posts_columns', array( &$this, 'manage_edit_testimonialswidget_columns' ) );
76
+ add_filter( 'plugin_action_links', array( &$this, 'plugin_action_links' ), 10, 2 );
77
  add_filter( 'plugin_row_meta', array( &$this, 'plugin_row_meta'), 10, 2 );
78
  add_filter( 'post_updated_messages', array( &$this, 'post_updated_messages' ) );
79
  add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts_author' ) );
81
  }
82
 
83
 
84
+ public function init() {
85
+ if ( ( defined('DOING_AJAX') && DOING_AJAX ) || ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) ) {
86
+ return;
87
  }
88
 
89
+ add_filter( 'the_content', array( &$this, 'get_single' ) );
90
+ self::$base = plugin_basename( __FILE__ );
91
+ self::init_post_type();
92
+ self::styles();
93
  }
94
 
95
 
96
+ public function plugin_action_links( $links, $file ) {
97
+ if ( $file == self::$base ) {
98
+ array_unshift( $links, self::$settings_link );
 
 
 
99
  }
100
 
101
+ return $links;
 
 
 
102
  }
103
 
104
 
153
 
154
 
155
  public function activation() {
156
+ // fixme
157
+ // add_action( 'admin_notices', array( 'Testimonials_Widget', 'notice_uninstall' ) );
158
  self::init();
159
+
160
  flush_rewrite_rules();
161
  }
162
 
163
 
164
+ public function deactivation() {
165
+ flush_rewrite_rules();
166
+ }
167
+
168
+
169
+ function notice_uninstall() {
170
+ $content = '';
171
+ $content .= '<div class="error"><p>';
172
+ $content .= __( 'Deleting Testimonials Widget plugin will remove all data and settings.', 'testimonials-widget' );
173
+ $content .= '</p></div>';
174
+
175
+ echo $content;
176
+ }
177
+
178
+
179
+ public function uninstall() {
180
+ global $wpdb;
181
+
182
+ delete_option( Testimonials_Widget_Settings::id );
183
+ self::delete_testimonials();
184
+
185
+ $wpdb->query( "OPTIMIZE TABLE `" . $wpdb->options . "`" );
186
+ $wpdb->query( "OPTIMIZE TABLE `" . $wpdb->postmeta . "`" );
187
+ $wpdb->query( "OPTIMIZE TABLE `" . $wpdb->posts . "`" );
188
+ }
189
+
190
+
191
+ public static function delete_testimonials() {
192
+ global $wpdb;
193
+
194
+ $query = "SELECT ID FROM {$wpdb->posts} WHERE post_type = '" . self::pt . "'";
195
+ $posts = $wpdb->get_results( $query );
196
+
197
+ foreach( $posts as $post ) {
198
+ $post_id = $post->ID;
199
+ self::delete_attachments( $post_id );
200
+
201
+ // dels post, meta & comments
202
+ // true is force delete
203
+ wp_delete_post( $post_id, true );
204
+ }
205
+ }
206
+
207
+
208
+ public static function delete_attachments( $post_id = false ) {
209
+ global $wpdb;
210
+
211
+ $post_id = $post_id ? $post_id : 0;
212
+ $query = "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND post_parent = {$post_id}";
213
+ $attachments = $wpdb->get_results( $query );
214
+
215
+ foreach( $attachments as $attachment ) {
216
+ // true is force delete
217
+ wp_delete_attachment( $attachment->ID, true );
218
+ }
219
+ }
220
+
221
+
222
  public static function plugin_row_meta( $input, $file ) {
223
  if ( $file != self::$base ) {
224
  return $input;
226
 
227
  $links = array(
228
  '<a href="http://aihr.us/about-aihrus/donate/">Donate</a>',
229
+ '<a href="http://aihr.us/testimonials-widget-premium/">Purchase Testimonials Widget Premium</a>'
230
  );
231
 
232
  $input = array_merge( $input, $links );
360
  case 'testimonials-widget-email':
361
  case 'testimonials-widget-url':
362
  $url = get_post_meta( $post_id, $column, true );
363
+ if ( ! empty( $url ) && ! is_email( $url ) && 0 === preg_match( "#https?://#", $url ) ) {
364
  $url = 'http://' . $url;
365
  }
366
 
516
  if ( empty( $atts['random'] ) )
517
  $atts['random'] = 1;
518
  }
 
519
  $atts = wp_parse_args( $atts, self::get_defaults() );
520
  $atts = Testimonials_Widget_Settings::validate_settings( $atts );
521
 
577
 
578
  public function get_testimonials_html_css( $atts, $widget_number = null ) {
579
  // display attributes
580
+ $height = $atts['height'];
581
  $max_height = $atts['max_height'];
582
  $min_height = $atts['min_height'];
583
 
584
+ if ( $height ) {
585
+ $max_height = $height;
586
+ $min_height = $height;
587
+ }
588
+
589
  $css = array();
590
  $id_base = self::id . $widget_number;
591
 
627
  <script type="text/javascript">
628
  function nextTestimonial{$widget_number}() {
629
  if ( ! jQuery('.{$id_base}').first().hasClass('hovered') ) {
630
+ var active = jQuery('.{$id_base} .active');
631
+ var next = (jQuery('.{$id_base} .active').next().length > 0) ? jQuery('.{$id_base} .active').next() : jQuery('.{$id_base} .testimonialswidget_testimonial:first');
632
  active.fadeOut(1250, function(){
633
+ active.removeClass('active');
634
  next.fadeIn(500);
635
+ next.removeClass('display_none');
636
+ next.addClass('active');
637
  });
638
  }
639
  }
662
  // display attributes
663
  $hide_not_found = $atts['hide_not_found'];
664
  $paging = Testimonials_Widget_Settings::is_true( $atts['paging'] );
665
+ $paging_before = ( 'before' === strtolower( $atts['paging'] ) );
666
+ $paging_after = ( 'after' === strtolower( $atts['paging'] ) );
667
  $refresh_interval = $atts['refresh_interval'];
668
  $target = $atts['target'];
669
 
674
  $html .= '<div class="' . $id;
675
 
676
  if ( $is_list )
677
+ $html .= ' listing';
678
 
679
  $html .= '">';
680
  } else {
719
  $char_limit = $atts['char_limit'];
720
  $content_more = apply_filters( 'testimonials_widget_content_more', __( '…', 'testimonials-widget' ) );
721
  $content_more .= self::$tag_close_quote;
722
+ $disable_quotes = $atts['disable_quotes'];
723
  $do_company = ! $atts['hide_company'] && ! empty( $testimonial['testimonial_company'] );
724
  $do_content = ! $atts['hide_content'] && ! empty( $testimonial['testimonial_content'] );
725
  $do_email = ! $atts['hide_email'] && ! empty( $testimonial['testimonial_email'] ) && is_email( $testimonial['testimonial_email'] );
726
  $do_image = ! $atts['hide_image'] && ! empty( $testimonial['testimonial_image'] );
727
+ $do_image_single = ! $atts['hide_image_single'];
728
  $do_location = ! $atts['hide_location'] && ! empty( $testimonial['testimonial_location'] );
729
  $do_source = ! $atts['hide_source'] && ! empty( $testimonial['testimonial_source'] );
730
  $do_title = ! $atts['hide_title'] && ! empty( $testimonial['testimonial_title'] );
731
  $do_url = ! $atts['hide_url'] && ! empty( $testimonial['testimonial_url'] );
732
  $keep_whitespace = $atts['keep_whitespace'];
733
  $remove_hentry = $atts['remove_hentry'];
734
+ $use_quote_tag = $atts['use_quote_tag'];
735
 
736
  $class = 'testimonialswidget_testimonial';
737
 
738
+ if ( is_single() && empty( $widget_number ) ) {
739
+ $class .= ' single';
740
+ } elseif ( $is_list ) {
741
+ $class .= ' list';
742
  } elseif ( $is_first ) {
743
+ $class .= ' active';
744
  } elseif ( ! $is_first ) {
745
+ $class .= ' display_none';
746
  }
747
 
748
+ if ( $keep_whitespace )
749
+ $class .= ' whitespace';
 
750
 
751
  $div_open = '<div class="';
752
 
762
 
763
  $image = '';
764
  if ( $do_image ) {
765
+ $image .= '<span class="image">';
766
  $image .= $testimonial['testimonial_image'];
767
  $image .= '</span>';
768
  }
769
 
770
+ if ( ! $do_image_single && 'get_single' == $atts['type'] ) {
771
+ $image = '';
772
+ }
773
+
774
  $quote = '';
775
  if ( $do_content ) {
776
  $content = $testimonial['testimonial_content'];
777
+ $content = self::format_content( $content, $widget_number, $atts );
778
 
779
  if ( $char_limit ) {
780
  $content = self::testimonials_truncate( $content, $char_limit, ' ', $content_more );
784
  $content = apply_filters( 'testimonials_widget_content', $content, $widget_number, $testimonial, $atts );
785
  $content = make_clickable( $content );
786
 
787
+ if ( empty( $use_quote_tag ) ) {
788
+ $quote = '<blockquote>';
789
+ $quote .= $content;
790
+ $quote .= '</blockquote>';
791
+ } else {
792
+ $quote = '<q>';
793
+ $quote .= $content;
794
+ $quote .= '</q>';
795
+ }
796
  }
797
 
798
  $cite = '';
799
  $done_url = false;
800
  if ( $do_source && $do_email ) {
801
+ $cite .= '<span class="author">';
802
  $cite .= '<a href="mailto:' . $testimonial['testimonial_email'] . '">';
803
  $cite .= $testimonial['testimonial_source'];
804
  $cite .= '</a>';
805
  $cite .= '</span>';
806
  } elseif ( $do_source && ! $do_company && $do_url ) {
807
+ $cite .= '<span class="author">';
808
+ $cite .= '<a href="' . $testimonial['testimonial_url'] . '" rel="nofollow">';
809
  $cite .= $testimonial['testimonial_source'];
810
  $cite .= '</a>';
811
  $cite .= '</span>';
812
  $done_url = true;
813
  } elseif ( $do_source ) {
814
+ $cite .= '<span class="author">';
815
  $cite .= $testimonial['testimonial_source'];
816
  $cite .= '</span>';
817
  } elseif ( $do_email ) {
818
+ $cite .= '<span class="email">';
819
  $cite .= make_clickable( $testimonial['testimonial_email'] );
820
  $cite .= '</span>';
821
  }
822
 
823
  if ( $do_title && $cite )
824
+ $cite .= '<span class="join_title"></span>';
825
 
826
  if ( $do_title ) {
827
+ $cite .= '<span class="title">';
828
  $cite .= $testimonial['testimonial_title'];
829
  $cite .= '</span>';
830
  }
831
 
832
  if ( $do_location && $cite )
833
+ $cite .= '<span class="join_location"></span>';
834
 
835
  if ( $do_location ) {
836
+ $cite .= '<span class="location">';
837
  $cite .= $testimonial['testimonial_location'];
838
  $cite .= '</span>';
839
  }
840
 
841
  if ( ( $do_company || ( $do_url && ! $done_url ) ) && $cite )
842
+ $cite .= '<span class="join"></span>';
843
 
844
  if ( $do_company && $do_url ) {
845
+ $cite .= '<span class="company">';
846
+ $cite .= '<a href="' . $testimonial['testimonial_url'] . '" rel="nofollow">';
847
  $cite .= $testimonial['testimonial_company'];
848
  $cite .= '</a>';
849
  $cite .= '</span>';
850
  } elseif ( $do_company ) {
851
+ $cite .= '<span class="company">';
852
  $cite .= $testimonial['testimonial_company'];
853
  $cite .= '</span>';
854
  } elseif ( $do_url && ! $done_url ) {
855
+ $cite .= '<span class="url">';
856
  $cite .= make_clickable( $testimonial['testimonial_url'] );
857
  $cite .= '</span>';
858
  }
859
 
860
+ if ( ! empty( $cite ) ) {
861
+ if ( empty( $use_quote_tag ) ) {
862
+ $temp = '<div class="credit">';
863
+ $temp .= $cite;
864
+ $temp .= '</div>';
865
+ $cite = $temp;
866
+ } else {
867
+ $cite = '<cite>' . $cite . '</cite>';
868
+ }
869
+ }
870
 
871
  $extra = '';
872
  if ( ! empty( $testimonial['testimonial_extra'] ) ) {
873
+ $extra .= '<div class="extra">';
874
  $extra .= $testimonial['testimonial_extra'];
875
  $extra .= '</div>';
876
  }
877
 
878
  $bottom_text = '';
879
  if ( ! empty( $atts['bottom_text'] ) ) {
880
+ $bottom_text = '<div class="bottom_text">';
881
  $bottom_text .= $atts['bottom_text'];
882
  $bottom_text .= '</div>';
883
  }
884
 
885
  $div_close = '</div>';
886
+
887
  $html = $div_open
888
  . $image
889
  . $quote
894
 
895
  $html = apply_filters( 'testimonials_widget_get_testimonial_html', $html, $testimonial, $atts, $is_list, $is_first, $widget_number, $div_open, $image, $quote, $cite, $extra, $bottom_text, $div_close );
896
 
897
+ // not done sooner as tag_close_quote is used for Premium
898
+ if ( $disable_quotes ) {
899
+ $html = str_replace( self::$tag_open_quote, '', $html );
900
+ $html = str_replace( self::$tag_close_quote, '', $html );
901
+ }
902
+
903
  return $html;
904
  }
905
 
927
  * Truncate HTML, close opened tags. UTF-8 aware, and aware of unpaired tags
928
  * (which don't need a matching closing tag)
929
  *
 
930
  * @param string $html
931
+ * @param int $max_length Maximum length of the characters of the string
932
  * @param string $indicator Suffix to use if string was truncated.
933
  * @param boolean $force_indicator Suffix to use if string was truncated.
934
  * @return string
1033
  }
1034
 
1035
 
1036
+ public function format_content( $content, $widget_number, $atts ) {
1037
  if ( empty ( $content ) )
1038
  return $content;
1039
 
1040
+ $keep_whitespace = $atts['keep_whitespace'];
1041
+
1042
  // wrap our own quote class around the content before any formatting
1043
  // happens
1044
+
1045
  $temp_content = self::$tag_open_quote;
1046
  $temp_content .= $content;
1047
  $temp_content .= self::$tag_close_quote;
1075
  return $html;
1076
  }
1077
 
1078
+ $html .= '<div class="paging';
1079
 
1080
  if ( $prepend ) {
1081
  $html .= ' prepend';
1147
 
1148
 
1149
  public function get_query_args( $atts ) {
1150
+ extract( $atts );
1151
+
1152
+ if ( has_filter( 'posts_orderby', 'CPTOrderPosts' ) ) {
1153
+ remove_filter( 'posts_orderby', 'CPTOrderPosts', 99, 2 );
1154
+ }
 
 
 
 
 
 
1155
 
1156
  if ( $random ) {
1157
  $orderby = 'rand';
1160
 
1161
  $args = array(
1162
  'orderby' => $orderby,
1163
+ 'post_status' => array(
1164
+ 'publish',
1165
+ 'private',
1166
+ ),
1167
  'post_type' => Testimonials_Widget::pt,
1168
  'posts_per_page' => $limit,
1169
  );
1170
 
1171
+ if ( is_single() ) {
1172
+ $args['post_status'][] = 'pending';
1173
+ $args['post_status'][] = 'draft';
1174
+ }
1175
+
1176
  if ( $paging && ! empty( $atts['paged'] ) && is_singular() ) {
1177
  $args['paged'] = $atts['paged'];
1178
  }
1313
  }
1314
 
1315
 
1316
+ public function widgets_init() {
1317
  require_once 'lib/testimonials-widget-widget.php';
1318
 
1319
  register_widget( 'Testimonials_Widget_Widget' );
1443
  function testimonialswidget_widget( $atts = array(), $widget_number = null ) {
1444
  global $Testimonials_Widget;
1445
 
 
 
 
1446
  return $Testimonials_Widget->testimonialswidget_widget( $atts, $widget_number );
1447
  }
1448
 
wpml-config.xml CHANGED
@@ -3,6 +3,7 @@
3
  <custom-field action="copy">testimonials-widget-url</custom-field>
4
  <custom-field action="copy">testimonials-widget-email</custom-field>
5
  <custom-field action="translate">testimonials-widget-company</custom-field>
 
6
  <custom-field action="translate">testimonials-widget-title</custom-field>
7
  <custom-field action="ignore">_testimonials-widget:testimonial_id</custom-field>
8
  </custom-fields>
3
  <custom-field action="copy">testimonials-widget-url</custom-field>
4
  <custom-field action="copy">testimonials-widget-email</custom-field>
5
  <custom-field action="translate">testimonials-widget-company</custom-field>
6
+ <custom-field action="translate">testimonials-widget-location</custom-field>
7
  <custom-field action="translate">testimonials-widget-title</custom-field>
8
  <custom-field action="ignore">_testimonials-widget:testimonial_id</custom-field>
9
  </custom-fields>