Version Description
= 2.19.0 =
- CSS class
.title
is now.job-title
. Thank you Mark - Please resave your WordPress Admin > Testimonials > Settings so that missing aoptions are included again.
- Shortcode and theme function
testimonialswidget_list
being deprecated bytestimonials
- Shortcode and theme function
testimonialswidget_widget
being deprecated bytestimonials_slider
= 2.18.3 =
- CSS class
.hide
renamed.display-none
- This is the last version supporting pre-bxSlider options
= 2.18.2 =
- CSS class
.display-none
renamed.hide
= 2.18.1 =
- CSS is back to being always loaded in the header
- Removed "Use bxSlider?" and "Include IE7 CSS" from widget options
= 2.18.0 =
-
remove_hentry
is now true by default
= 2.16.0 =
- Requires PHP 5.3+
= 2.15.0 =
- If upgrading, bxSlider will not be enabled by default. You must enable it in your widget and global settings. CSS customizations must be reviewed to have the
.active
and.display-none
classes removed. The main.testimonials-widget-testimonial
class also need thedisplay: none;
andclear: left;
removed.
= 2.14.0 =
- 60 modifications See Changelog
- CSS wp_register_style and wp_enqueue_style slug changed from 'testimonials-widget' to 'Testimonials_Widget'
- Gravatar image size now based upon Thumbnail size in Media Settings
- Scripts
ksort
removed. Usearray_unshift
in yourtestimonials_widget_testimonials_js
filters instead. - Testimonials > Settings, General tab, option Enable Review Schema? is enabled by default.
= 2.13.6 =
- IE 7 CSS moved to separate file. Include via Testimonials > Settings if needed
= 2.12.0 =
- CSS and JavaScript renaming
-
bottom_text
renamed tobottom-text
-
close_quote
renamed toclose-quote
-
display_none
renamed todisplay-none
-
join_location
renamed tojoin-location
-
join_title
renamed tojoin-title
-
open_quote
renamed toopen-quote
-
testimonialswidget_testimonial
renamed totestimonials-widget-testimonial
-
testimonialswidget_testimonials
renamed totestimonials-widget-testimonials
-
= 2.11.3 =
- Correct filter name
testimonials_widget_next_posts_link
totestimonials_widget_next_posts_link_text
= 2.11.0 =
- CSS class names are simplified. For the most part, other than
testimonialswidget_testimonial
removetestimonialswidget_
from the CSS class name in your CSS customizations.- Ex:
.testimonialswidget_join
becomes.join
- Ex:
.testimonialswidget_author
becomes.author
- Ex:
- Testimonials are now formatted using
blockquote
thanq
for HTML5 compliance. If you needq
tag formatting, enable it at WP Admin > Testimonials > Settings, Compatibility & Reset tab-
cite
is nowdiv.credit
-
= 2.8.0 =
- Deprecated
-
hide_author
nowhide_source
-
- Removed filters
testimonials_widget_options_update
,testimonials_widget_options_form
- Use
testimonials_widget_validate_settings
andtestimonials_widget_settings
instead
- Use
- Renamed variable and related class
widget_text
tobottom_text
= 2.7.3 =
- Quotes are no longer handled via
q
,p:before
, orp: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 CSSdisplay: inline
,display: block
as expected
= 2.4.1 =
- Paging is on by default, except for widgets
= 2.0.0 =
- CSS
- Class
testimonialswidget_company
replacestestimonialswidget_source
- Class
testimonialswidget_source
replacestestimonialswidget_author
- The tighten widget display up, p tags within q are displayed inline.
- Class
- JavaScript
- The JavaScript for rotating testimonials is moved to the footer. As such, your theme requires
wp_footer()
in the footer.
- The JavaScript for rotating testimonials is moved to the footer. As such, your theme requires
- Shortcode options
-
hide_source
replaced byhide_url
-
hide_author
replaced byhide_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 thesource
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 | Testimonials Widget |
Version | 2.19.3 |
Comparing to | |
See all releases |
Code changes from version 2.19.2 to 2.19.3
- CHANGELOG.md +8 -1
- includes/class-testimonials-widget.php +15 -6
- includes/libraries/aihrus-framework/CHANGELOG.md +9 -0
- includes/libraries/aihrus-framework/aihrus-framework.php +1 -1
- includes/libraries/aihrus-framework/includes/class-aihrus-licensing.php +48 -18
- includes/libraries/aihrus-framework/includes/class-aihrus-settings.php +120 -64
- includes/libraries/aihrus-framework/includes/libraries/class-redrokk-metabox-class.php +1 -1
- includes/libraries/aihrus-framework/includes/libraries/wp_custom_post_status.php +4 -0
- languages/testimonials-widget.pot +57 -45
- readme.txt +12 -12
- testimonials-widget.php +3 -3
CHANGELOG.md
CHANGED
@@ -2,8 +2,15 @@
|
|
2 |
|
3 |
## master
|
4 |
|
5 |
-
## 2.19.
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
7 |
* Force WordPress to update files
|
8 |
|
9 |
## 2.19.1
|
2 |
|
3 |
## master
|
4 |
|
5 |
+
## 2.19.3
|
6 |
+
* Refactor get_defaults
|
7 |
+
* Replace [[/]] with [/]
|
8 |
+
* Require Aihrus 1.1.2
|
9 |
+
* RESOLVE #80 DB Performance Issues
|
10 |
+
* Revise FAQ section
|
11 |
+
* Update settings page detection
|
12 |
|
13 |
+
## 2.19.2
|
14 |
* Force WordPress to update files
|
15 |
|
16 |
## 2.19.1
|
includes/class-testimonials-widget.php
CHANGED
@@ -696,10 +696,14 @@ class Testimonials_Widget extends Aihrus_Common {
|
|
696 |
|
697 |
|
698 |
public static function get_defaults( $single_view = false ) {
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
|
|
|
|
|
|
|
|
703 |
}
|
704 |
|
705 |
|
@@ -1473,12 +1477,17 @@ EOF;
|
|
1473 |
if ( has_filter( 'posts_orderby', 'CPTOrderPosts' ) )
|
1474 |
remove_filter( 'posts_orderby', 'CPTOrderPosts', 99, 2 );
|
1475 |
|
|
|
|
|
|
|
|
|
1476 |
if ( $random ) {
|
1477 |
$orderby = 'rand';
|
1478 |
$order = false;
|
1479 |
}
|
1480 |
|
1481 |
$args = array(
|
|
|
1482 |
'orderby' => $orderby,
|
1483 |
'post_status' => array(
|
1484 |
'publish',
|
@@ -2109,12 +2118,12 @@ EOD;
|
|
2109 |
*/
|
2110 |
public static function do_load() {
|
2111 |
$do_load = false;
|
2112 |
-
if ( ! empty( $GLOBALS['pagenow'] ) && in_array( $GLOBALS['pagenow'], array( 'options.php' ) ) ) {
|
2113 |
$do_load = true;
|
2114 |
} elseif ( ! empty( $_REQUEST['post_type'] ) && self::PT == $_REQUEST['post_type'] ) {
|
2115 |
if ( ! empty( $GLOBALS['pagenow'] ) && in_array( $GLOBALS['pagenow'], array( 'edit.php', 'edit-tags.php' ) ) ) {
|
2116 |
$do_load = true;
|
2117 |
-
} elseif ( ! empty( $_REQUEST['
|
2118 |
$do_load = true;
|
2119 |
}
|
2120 |
}
|
696 |
|
697 |
|
698 |
public static function get_defaults( $single_view = false ) {
|
699 |
+
$options = tw_get_options();
|
700 |
+
if ( empty( $single_view ) ) {
|
701 |
+
$defaults = apply_filters( 'testimonials_widget_defaults', $options );
|
702 |
+
} else {
|
703 |
+
$defaults = apply_filters( 'testimonials_widget_defaults_single', $options );
|
704 |
+
}
|
705 |
+
|
706 |
+
return $defaults;
|
707 |
}
|
708 |
|
709 |
|
1477 |
if ( has_filter( 'posts_orderby', 'CPTOrderPosts' ) )
|
1478 |
remove_filter( 'posts_orderby', 'CPTOrderPosts', 99, 2 );
|
1479 |
|
1480 |
+
if ( empty( $fields ) ) {
|
1481 |
+
$fields = false;
|
1482 |
+
}
|
1483 |
+
|
1484 |
if ( $random ) {
|
1485 |
$orderby = 'rand';
|
1486 |
$order = false;
|
1487 |
}
|
1488 |
|
1489 |
$args = array(
|
1490 |
+
'fields' => $fields,
|
1491 |
'orderby' => $orderby,
|
1492 |
'post_status' => array(
|
1493 |
'publish',
|
2118 |
*/
|
2119 |
public static function do_load() {
|
2120 |
$do_load = false;
|
2121 |
+
if ( ! empty( $GLOBALS['pagenow'] ) && in_array( $GLOBALS['pagenow'], array( 'options.php', 'widgets.php' ) ) ) {
|
2122 |
$do_load = true;
|
2123 |
} elseif ( ! empty( $_REQUEST['post_type'] ) && self::PT == $_REQUEST['post_type'] ) {
|
2124 |
if ( ! empty( $GLOBALS['pagenow'] ) && in_array( $GLOBALS['pagenow'], array( 'edit.php', 'edit-tags.php' ) ) ) {
|
2125 |
$do_load = true;
|
2126 |
+
} elseif ( ! empty( $_REQUEST['option_page'] ) && Testimonials_Widget_Settings::ID == $_REQUEST['option_page'] ) {
|
2127 |
$do_load = true;
|
2128 |
}
|
2129 |
}
|
includes/libraries/aihrus-framework/CHANGELOG.md
CHANGED
@@ -2,6 +2,15 @@
|
|
2 |
|
3 |
## master
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
## 1.1.1
|
6 |
* Remove unused `widget_options`
|
7 |
* RESOLVE michael-cannon/testimonials-widget#65 Widget blank options aren't saving correctly
|
2 |
|
3 |
## master
|
4 |
|
5 |
+
## 1.1.2
|
6 |
+
* Add licensing status notices
|
7 |
+
* Code formatting
|
8 |
+
* Don't remove license from settings
|
9 |
+
* RESOLVE Undefined index
|
10 |
+
* Restore default wp_remote_get timeout
|
11 |
+
* Return if library class exists already
|
12 |
+
* Update settings page detection
|
13 |
+
|
14 |
## 1.1.1
|
15 |
* Remove unused `widget_options`
|
16 |
* RESOLVE michael-cannon/testimonials-widget#65 Widget blank options aren't saving correctly
|
includes/libraries/aihrus-framework/aihrus-framework.php
CHANGED
@@ -29,7 +29,7 @@ if ( ! defined( 'AIHR_DIR_LIB' ) )
|
|
29 |
define( 'AIHR_DIR_LIB', AIHR_DIR_INC . 'libraries/' );
|
30 |
|
31 |
if ( ! defined( 'AIHR_VERSION' ) )
|
32 |
-
define( 'AIHR_VERSION', '1.1.
|
33 |
|
34 |
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
35 |
|
29 |
define( 'AIHR_DIR_LIB', AIHR_DIR_INC . 'libraries/' );
|
30 |
|
31 |
if ( ! defined( 'AIHR_VERSION' ) )
|
32 |
+
define( 'AIHR_VERSION', '1.1.2' );
|
33 |
|
34 |
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
35 |
|
includes/libraries/aihrus-framework/includes/class-aihrus-licensing.php
CHANGED
@@ -16,8 +16,9 @@
|
|
16 |
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
*/
|
18 |
|
19 |
-
if ( class_exists( 'Aihrus_Licensing' ) )
|
20 |
return;
|
|
|
21 |
|
22 |
require_once 'interface-aihrus-licensing.php';
|
23 |
|
@@ -25,15 +26,19 @@ require_once 'interface-aihrus-licensing.php';
|
|
25 |
abstract class Aihrus_Licensing implements Aihrus_Licensing_Interface {
|
26 |
public $author;
|
27 |
public $item_name;
|
|
|
28 |
public $slug;
|
29 |
public $store_url;
|
30 |
|
|
|
|
|
31 |
|
32 |
public function __construct( $slug, $item_name, $author = 'Michael Cannon', $store_url = 'http://aihr.us' ) {
|
33 |
-
$this->author
|
34 |
-
$this->
|
35 |
-
$this->
|
36 |
-
$this->
|
|
|
37 |
}
|
38 |
|
39 |
|
@@ -54,40 +59,59 @@ abstract class Aihrus_Licensing implements Aihrus_Licensing_Interface {
|
|
54 |
|
55 |
public function update_license( $value = null ) {
|
56 |
$license = $this->get_license();
|
57 |
-
if ( $license === $value )
|
58 |
return $value;
|
|
|
59 |
|
|
|
60 |
if ( $this->valid_hash( $value ) ) {
|
61 |
$this->set_license( $value );
|
62 |
$value = $this->activate_license();
|
63 |
$this->set_license( $value );
|
64 |
-
|
65 |
-
return $value;
|
66 |
} else {
|
67 |
$this->deactivate_license();
|
68 |
$this->delete_license();
|
69 |
|
70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
}
|
|
|
|
|
72 |
}
|
73 |
|
74 |
|
75 |
public function set_license( $value = null ) {
|
76 |
$key = $this->license_key();
|
77 |
-
|
78 |
delete_transient( $key );
|
79 |
|
80 |
-
if ( ! is_null( $value ) )
|
81 |
set_transient( $key, $value, 2 * YEAR_IN_SECONDS );
|
|
|
82 |
}
|
83 |
|
84 |
|
85 |
public function valid_license() {
|
86 |
$license = $this->get_license();
|
87 |
-
if ( $this->valid_hash( $license ) )
|
88 |
return true;
|
89 |
-
else
|
90 |
return false;
|
|
|
91 |
}
|
92 |
|
93 |
|
@@ -95,7 +119,7 @@ abstract class Aihrus_Licensing implements Aihrus_Licensing_Interface {
|
|
95 |
$license = $this->get_license();
|
96 |
$api_params = array(
|
97 |
'edd_action' => $action,
|
98 |
-
'item_name' => $this->
|
99 |
'license' => $license,
|
100 |
);
|
101 |
|
@@ -112,7 +136,6 @@ abstract class Aihrus_Licensing implements Aihrus_Licensing_Interface {
|
|
112 |
$response = wp_remote_get(
|
113 |
$api_call,
|
114 |
array(
|
115 |
-
'timeout' => 10,
|
116 |
'sslverify' => false,
|
117 |
)
|
118 |
);
|
@@ -140,8 +163,9 @@ abstract class Aihrus_Licensing implements Aihrus_Licensing_Interface {
|
|
140 |
public function get_license_data( $action = 'check_license' ) {
|
141 |
$api_call = $this->get_api_call( $action );
|
142 |
$response = $this->get_remote_get( $api_call );
|
143 |
-
if ( is_wp_error( $response ) )
|
144 |
return false;
|
|
|
145 |
|
146 |
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
|
147 |
|
@@ -152,8 +176,13 @@ abstract class Aihrus_Licensing implements Aihrus_Licensing_Interface {
|
|
152 |
public function deactivate_license() {
|
153 |
$license_data = $this->get_license_data( 'deactivate_license' );
|
154 |
if ( false !== $license_data ) {
|
155 |
-
if ( 'deactivated' == $license_data->license )
|
|
|
|
|
|
|
|
|
156 |
return true;
|
|
|
157 |
|
158 |
return $license_data->license;
|
159 |
}
|
@@ -175,8 +204,9 @@ abstract class Aihrus_Licensing implements Aihrus_Licensing_Interface {
|
|
175 |
|
176 |
|
177 |
public function valid_hash( $value = null ) {
|
178 |
-
if ( is_string( $value ) && preg_match( '#^[0-9a-f]{32}$#i', $value ) )
|
179 |
return true;
|
|
|
180 |
|
181 |
return false;
|
182 |
}
|
16 |
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
*/
|
18 |
|
19 |
+
if ( class_exists( 'Aihrus_Licensing' ) ) {
|
20 |
return;
|
21 |
+
}
|
22 |
|
23 |
require_once 'interface-aihrus-licensing.php';
|
24 |
|
26 |
abstract class Aihrus_Licensing implements Aihrus_Licensing_Interface {
|
27 |
public $author;
|
28 |
public $item_name;
|
29 |
+
public $item_name_encoded;
|
30 |
public $slug;
|
31 |
public $store_url;
|
32 |
|
33 |
+
public static $settings_saved = false;
|
34 |
+
|
35 |
|
36 |
public function __construct( $slug, $item_name, $author = 'Michael Cannon', $store_url = 'http://aihr.us' ) {
|
37 |
+
$this->author = $author;
|
38 |
+
$this->item_name_encoded = urlencode( $item_name );
|
39 |
+
$this->item_name = $item_name;
|
40 |
+
$this->slug = $slug;
|
41 |
+
$this->store_url = $store_url;
|
42 |
}
|
43 |
|
44 |
|
59 |
|
60 |
public function update_license( $value = null ) {
|
61 |
$license = $this->get_license();
|
62 |
+
if ( $license === $value ) {
|
63 |
return $value;
|
64 |
+
}
|
65 |
|
66 |
+
$deactivate_license = false;
|
67 |
if ( $this->valid_hash( $value ) ) {
|
68 |
$this->set_license( $value );
|
69 |
$value = $this->activate_license();
|
70 |
$this->set_license( $value );
|
|
|
|
|
71 |
} else {
|
72 |
$this->deactivate_license();
|
73 |
$this->delete_license();
|
74 |
|
75 |
+
$deactivate_license = true;
|
76 |
+
$value = '';
|
77 |
+
}
|
78 |
+
|
79 |
+
if ( $this->valid_license() ) {
|
80 |
+
$text = esc_html__( '%s license saved.' );
|
81 |
+
$text = sprintf( $text, $this->item_name );
|
82 |
+
add_settings_error( static::$settings_id, 'license_saved', $text, 'updated' );
|
83 |
+
} elseif ( empty( $deactivate_license ) ) {
|
84 |
+
$text = esc_html__( '%s license not saved.' );
|
85 |
+
$text = sprintf( $text, $this->item_name );
|
86 |
+
add_settings_error( static::$settings_id, 'license_not_saved', $text, 'error' );
|
87 |
+
}
|
88 |
+
|
89 |
+
if ( empty( self::$settings_saved ) ) {
|
90 |
+
self::$settings_saved = true;
|
91 |
+
set_transient( 'settings_errors', get_settings_errors(), 30 );
|
92 |
}
|
93 |
+
|
94 |
+
return $value;
|
95 |
}
|
96 |
|
97 |
|
98 |
public function set_license( $value = null ) {
|
99 |
$key = $this->license_key();
|
|
|
100 |
delete_transient( $key );
|
101 |
|
102 |
+
if ( ! is_null( $value ) ) {
|
103 |
set_transient( $key, $value, 2 * YEAR_IN_SECONDS );
|
104 |
+
}
|
105 |
}
|
106 |
|
107 |
|
108 |
public function valid_license() {
|
109 |
$license = $this->get_license();
|
110 |
+
if ( $this->valid_hash( $license ) ) {
|
111 |
return true;
|
112 |
+
} else {
|
113 |
return false;
|
114 |
+
}
|
115 |
}
|
116 |
|
117 |
|
119 |
$license = $this->get_license();
|
120 |
$api_params = array(
|
121 |
'edd_action' => $action,
|
122 |
+
'item_name' => $this->item_name_encoded,
|
123 |
'license' => $license,
|
124 |
);
|
125 |
|
136 |
$response = wp_remote_get(
|
137 |
$api_call,
|
138 |
array(
|
|
|
139 |
'sslverify' => false,
|
140 |
)
|
141 |
);
|
163 |
public function get_license_data( $action = 'check_license' ) {
|
164 |
$api_call = $this->get_api_call( $action );
|
165 |
$response = $this->get_remote_get( $api_call );
|
166 |
+
if ( is_wp_error( $response ) ) {
|
167 |
return false;
|
168 |
+
}
|
169 |
|
170 |
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
|
171 |
|
176 |
public function deactivate_license() {
|
177 |
$license_data = $this->get_license_data( 'deactivate_license' );
|
178 |
if ( false !== $license_data ) {
|
179 |
+
if ( 'deactivated' == $license_data->license ) {
|
180 |
+
$text = esc_html__( '%s license deactivated.' );
|
181 |
+
$text = sprintf( $text, $this->item_name );
|
182 |
+
add_settings_error( static::$settings_id, 'license_deactivated', $text, 'updated' );
|
183 |
+
|
184 |
return true;
|
185 |
+
}
|
186 |
|
187 |
return $license_data->license;
|
188 |
}
|
204 |
|
205 |
|
206 |
public function valid_hash( $value = null ) {
|
207 |
+
if ( is_string( $value ) && preg_match( '#^[0-9a-f]{32}$#i', $value ) ) {
|
208 |
return true;
|
209 |
+
}
|
210 |
|
211 |
return false;
|
212 |
}
|
includes/libraries/aihrus-framework/includes/class-aihrus-settings.php
CHANGED
@@ -24,8 +24,9 @@
|
|
24 |
|
25 |
require_once ABSPATH . 'wp-admin/includes/template.php';
|
26 |
|
27 |
-
if ( class_exists( 'Aihrus_Settings' ) )
|
28 |
return;
|
|
|
29 |
|
30 |
|
31 |
abstract class Aihrus_Settings {
|
@@ -48,6 +49,7 @@ abstract class Aihrus_Settings {
|
|
48 |
'widget' => 1, // show in widget options, 0 off
|
49 |
);
|
50 |
|
|
|
51 |
|
52 |
public function __construct() {}
|
53 |
|
@@ -116,8 +118,9 @@ abstract class Aihrus_Settings {
|
|
116 |
|
117 |
|
118 |
public static function get_defaults( $mode = null, $old_version = null ) {
|
119 |
-
if ( empty( static::$defaults ) )
|
120 |
static::settings();
|
|
|
121 |
|
122 |
$do_backwards = false;
|
123 |
if ( 'backwards' == $mode ) {
|
@@ -143,8 +146,9 @@ abstract class Aihrus_Settings {
|
|
143 |
|
144 |
|
145 |
public static function get_settings() {
|
146 |
-
if ( empty( static::$settings ) )
|
147 |
static::settings();
|
|
|
148 |
|
149 |
return static::$settings;
|
150 |
}
|
@@ -170,8 +174,9 @@ abstract class Aihrus_Settings {
|
|
170 |
public static function create_setting( $args = array() ) {
|
171 |
extract( $args );
|
172 |
|
173 |
-
if ( preg_match( '#(_expand_begin|_expand_end)#', $id ) )
|
174 |
return;
|
|
|
175 |
|
176 |
$field_args = array(
|
177 |
'choices' => $choices,
|
@@ -212,15 +217,18 @@ abstract class Aihrus_Settings {
|
|
212 |
public static function do_settings_sections( $page ) {
|
213 |
global $wp_settings_sections, $wp_settings_fields;
|
214 |
|
215 |
-
if ( ! isset( $wp_settings_sections ) || ! isset( $wp_settings_sections[$page] ) )
|
216 |
return;
|
|
|
217 |
|
218 |
foreach ( (array) $wp_settings_sections[$page] as $section ) {
|
219 |
-
if ( $section['callback'] )
|
220 |
call_user_func( $section['callback'], $section );
|
|
|
221 |
|
222 |
-
if ( ! isset( $wp_settings_fields ) || ! isset( $wp_settings_fields[$page] ) || ! isset( $wp_settings_fields[$page][$section['id']] ) )
|
223 |
continue;
|
|
|
224 |
|
225 |
echo '<table id=' . $section['id'] . ' class="form-table">';
|
226 |
do_settings_fields( $page, $section['id'] );
|
@@ -269,8 +277,9 @@ abstract class Aihrus_Settings {
|
|
269 |
echo '<div id="' . static::ID . '">
|
270 |
<ul>';
|
271 |
|
272 |
-
foreach ( static::$sections as $section_slug => $section )
|
273 |
echo '<li><a href="#' . $section_slug . '">' . $section . '</a></li>';
|
|
|
274 |
|
275 |
echo '</ul>';
|
276 |
|
@@ -313,21 +322,23 @@ abstract class Aihrus_Settings {
|
|
313 |
|
314 |
extract( $args );
|
315 |
|
316 |
-
if ( is_null( $input ) )
|
317 |
$options = get_option( static::ID );
|
318 |
-
else {
|
319 |
$options = array();
|
320 |
$options[$id] = $input;
|
321 |
}
|
322 |
|
323 |
-
if ( ! isset( $options[$id] ) && $type != 'checkbox' )
|
324 |
$options[$id] = $std;
|
325 |
-
elseif ( ! isset( $options[$id] ) )
|
326 |
$options[$id] = 0;
|
|
|
327 |
|
328 |
$field_class = '';
|
329 |
-
if ( ! empty( $class ) )
|
330 |
$field_class = ' ' . $class;
|
|
|
331 |
|
332 |
// desc isn't escaped because it's might contain allowed html
|
333 |
$choices = array_map( 'esc_attr', $choices );
|
@@ -340,18 +351,21 @@ abstract class Aihrus_Settings {
|
|
340 |
case 'checkbox':
|
341 |
$content .= '<input class="checkbox' . $field_class . '" type="checkbox" id="' . $id . '" name="' . static::ID . '[' . $id . ']" value="1" ' . checked( $field_value, 1, false ) . ' /> ';
|
342 |
|
343 |
-
if ( ! empty( $desc ) )
|
344 |
$content .= '<label for="' . $id . '"><span class="description">' . $desc . '</span></label>';
|
|
|
345 |
|
346 |
-
if ( $show_code )
|
347 |
$content .= '<br /><code>' . $id . '</code>';
|
|
|
348 |
break;
|
349 |
|
350 |
case 'file':
|
351 |
$content .= '<input class="regular-text' . $field_class . '" type="file" id="' . $id . '" name="' . static::ID . '[' . $id . ']" />';
|
352 |
|
353 |
-
if ( ! empty( $desc ) )
|
354 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
|
|
355 |
|
356 |
break;
|
357 |
|
@@ -367,8 +381,9 @@ abstract class Aihrus_Settings {
|
|
367 |
case 'password':
|
368 |
$content .= '<input class="regular-text' . $field_class . '" type="password" id="' . $id . '" name="' . static::ID . '[' . $id . ']" value="' . $field_value . '" />';
|
369 |
|
370 |
-
if ( ! empty( $desc ) )
|
371 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
|
|
372 |
|
373 |
break;
|
374 |
|
@@ -378,24 +393,28 @@ abstract class Aihrus_Settings {
|
|
378 |
foreach ( $choices as $value => $label ) {
|
379 |
$content .= '<input class="radio' . $field_class . '" type="radio" name="' . static::ID . '[' . $id . ']" id="' . $id . $i . '" value="' . $value . '" ' . checked( $field_value, $value, false ) . '> <label for="' . $id . $i . '">' . $label . '</label>';
|
380 |
|
381 |
-
if ( $i < $count_choices )
|
382 |
$content .= '<br />';
|
|
|
383 |
|
384 |
$i++;
|
385 |
}
|
386 |
|
387 |
-
if ( ! empty( $desc ) )
|
388 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
|
|
389 |
|
390 |
-
if ( $show_code )
|
391 |
$content .= '<br /><code>' . $id . '</code>';
|
|
|
392 |
break;
|
393 |
|
394 |
case 'readonly':
|
395 |
$content .= '<input class="regular-text' . $field_class . '" type="text" id="' . $id . '" name="' . static::ID . '[' . $id . ']" value="' . $field_value . '" readonly="readonly" />';
|
396 |
|
397 |
-
if ( ! empty( $desc ) )
|
398 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
|
|
399 |
break;
|
400 |
|
401 |
case 'rich_editor':
|
@@ -411,46 +430,55 @@ abstract class Aihrus_Settings {
|
|
411 |
$content = '<textarea class="large-text" rows="10" id="' . static::ID . '[' . $id . ']" name="' . static::ID . '[' . $id . ']">' . esc_textarea( $field_value ) . '</textarea>';
|
412 |
}
|
413 |
|
414 |
-
if ( ! empty( $desc ) )
|
415 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
|
|
416 |
|
417 |
-
if ( $show_code )
|
418 |
$content .= '<br /><code>' . $id . '</code>';
|
|
|
419 |
break;
|
420 |
|
421 |
case 'select':
|
422 |
$content .= '<select class="select' . $field_class . '" id="' . $id . '" name="' . static::ID . '[' . $id . ']">';
|
423 |
|
424 |
-
foreach ( $choices as $value => $label )
|
425 |
$content .= '<option value="' . $value . '"' . selected( $field_value, $value, false ) . '>' . $label . '</option>';
|
|
|
426 |
|
427 |
$content .= '</select>';
|
428 |
|
429 |
-
if ( ! empty( $desc ) )
|
430 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
|
|
431 |
|
432 |
-
if ( $show_code )
|
433 |
$content .= '<br /><code>' . $id . '</code>';
|
|
|
434 |
break;
|
435 |
|
436 |
case 'text':
|
437 |
$content .= '<input class="regular-text' . $field_class . '" type="text" id="' . $id . '" name="' . static::ID . '[' . $id . ']" placeholder="' . $std . '" value="' . $field_value . '" />';
|
438 |
|
439 |
-
if ( ! empty( $desc ) )
|
440 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
|
|
441 |
|
442 |
-
if ( $show_code )
|
443 |
$content .= '<br /><code>' . $id . '</code>';
|
|
|
444 |
break;
|
445 |
|
446 |
case 'textarea':
|
447 |
$content .= '<textarea class="' . $field_class . '" id="' . $id . '" name="' . static::ID . '[' . $id . ']" placeholder="' . $std . '" rows="5" cols="30">' . $field_value . '</textarea>';
|
448 |
|
449 |
-
if ( ! empty( $desc ) )
|
450 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
|
|
451 |
|
452 |
-
if ( $show_code )
|
453 |
$content .= '<br /><code>' . $id . '</code>';
|
|
|
454 |
break;
|
455 |
|
456 |
default:
|
@@ -468,10 +496,11 @@ abstract class Aihrus_Settings {
|
|
468 |
register_setting( static::ID, static::ID, array( static::$class, 'validate_settings' ) );
|
469 |
|
470 |
foreach ( static::$sections as $slug => $title ) {
|
471 |
-
if ( $slug == 'about' )
|
472 |
add_settings_section( $slug, $title, array( static::$class, 'display_about' ), static::ID );
|
473 |
-
else
|
474 |
add_settings_section( $slug, $title, array( static::$class, 'display_section' ), static::ID );
|
|
|
475 |
}
|
476 |
|
477 |
foreach ( static::$settings as $id => $setting ) {
|
@@ -509,8 +538,9 @@ abstract class Aihrus_Settings {
|
|
509 |
|
510 |
if ( is_admin() ) {
|
511 |
if ( ! empty( $input['reset_defaults'] ) ) {
|
512 |
-
foreach ( $defaults as $id => $std )
|
513 |
-
$input[$id] = $std;
|
|
|
514 |
|
515 |
unset( $input['reset_defaults'] );
|
516 |
|
@@ -521,8 +551,9 @@ abstract class Aihrus_Settings {
|
|
521 |
$import = $input['import'];
|
522 |
$unserialized = unserialize( $import );
|
523 |
if ( is_array( $unserialized ) ) {
|
524 |
-
foreach ( $unserialized as $id => $std )
|
525 |
-
$input[$id] = $std;
|
|
|
526 |
}
|
527 |
}
|
528 |
}
|
@@ -532,8 +563,9 @@ abstract class Aihrus_Settings {
|
|
532 |
$default = $parts['std'];
|
533 |
$type = $parts['type'];
|
534 |
$validations = ! empty( $parts['validate'] ) ? $parts['validate'] : array();
|
535 |
-
if ( ! empty( $validations ) )
|
536 |
$validations = explode( ',', $validations );
|
|
|
537 |
|
538 |
if ( ! isset( $input[ $id ] ) ) {
|
539 |
if ( 'checkbox' != $type ) {
|
@@ -543,29 +575,33 @@ abstract class Aihrus_Settings {
|
|
543 |
}
|
544 |
}
|
545 |
|
546 |
-
if ( $default == $input[ $id ] && ! in_array( 'required', $validations ) )
|
547 |
continue;
|
|
|
548 |
|
549 |
if ( 'checkbox' == $type ) {
|
550 |
-
if ( self::is_true( $input[ $id ] ) )
|
551 |
$input[ $id ] = 1;
|
552 |
-
else
|
553 |
$input[ $id ] = 0;
|
|
|
554 |
} elseif ( in_array( $type, array( 'radio', 'select' ) ) ) {
|
555 |
// single choices only
|
556 |
$keys = array_keys( $parts['choices'] );
|
557 |
|
558 |
if ( ! in_array( $input[ $id ], $keys ) ) {
|
559 |
-
if ( self::is_true( $input[ $id ] ) )
|
560 |
$input[ $id ] = 1;
|
561 |
-
else
|
562 |
$input[ $id ] = 0;
|
|
|
563 |
}
|
564 |
}
|
565 |
|
566 |
if ( ! empty( $validations ) ) {
|
567 |
-
foreach ( $validations as $validate )
|
568 |
self::validators( $validate, $id, $input, $default, $errors );
|
|
|
569 |
}
|
570 |
}
|
571 |
|
@@ -577,9 +613,13 @@ abstract class Aihrus_Settings {
|
|
577 |
$hide_update_notice = true;
|
578 |
}
|
579 |
|
580 |
-
if ( $null_options && empty( $errors ) && ! $hide_update_notice ) {
|
581 |
add_settings_error( static::ID, 'settings_updated', esc_html__( 'Settings saved.' ), 'updated' );
|
582 |
-
|
|
|
|
|
|
|
|
|
583 |
}
|
584 |
|
585 |
if ( empty( $do_errors ) ) {
|
@@ -599,10 +639,11 @@ abstract class Aihrus_Settings {
|
|
599 |
switch ( $validate ) {
|
600 |
case 'absint':
|
601 |
case 'intval':
|
602 |
-
if ( '' !== $input[ $id ] )
|
603 |
$input[ $id ] = $validate( $input[ $id ] );
|
604 |
-
else
|
605 |
$input[ $id ] = $default;
|
|
|
606 |
break;
|
607 |
|
608 |
case 'email':
|
@@ -619,14 +660,16 @@ abstract class Aihrus_Settings {
|
|
619 |
|
620 |
case 'min1':
|
621 |
$input[ $id ] = intval( $input[ $id ] );
|
622 |
-
if ( 0 >= $input[ $id ] )
|
623 |
$input[ $id ] = $default;
|
|
|
624 |
break;
|
625 |
|
626 |
case 'nozero':
|
627 |
$input[ $id ] = intval( $input[ $id ] );
|
628 |
-
if ( 0 === $input[ $id ] )
|
629 |
$input[ $id ] = $default;
|
|
|
630 |
break;
|
631 |
|
632 |
case 'order':
|
@@ -634,8 +677,9 @@ abstract class Aihrus_Settings {
|
|
634 |
break;
|
635 |
|
636 |
case 'required':
|
637 |
-
if ( empty( $input[ $id ] ) )
|
638 |
$errors[ $id ] = esc_html__( 'Required' );
|
|
|
639 |
break;
|
640 |
|
641 |
case 'slash_sanitize_title':
|
@@ -685,40 +729,45 @@ abstract class Aihrus_Settings {
|
|
685 |
|
686 |
|
687 |
public static function validate_ids( $input, $default = false ) {
|
688 |
-
if ( preg_match( '#^\d+(,\s?\d+)*$#', $input ) )
|
689 |
return preg_replace( '#\s#', '', $input );
|
|
|
690 |
|
691 |
return $default;
|
692 |
}
|
693 |
|
694 |
|
695 |
public static function validate_order( $input, $default = false ) {
|
696 |
-
if ( preg_match( '#^desc|asc$#i', $input ) )
|
697 |
return $input;
|
|
|
698 |
|
699 |
return $default;
|
700 |
}
|
701 |
|
702 |
|
703 |
public static function validate_slugs( $input, $default = false ) {
|
704 |
-
if ( preg_match( '#^[\w-]+(,\s?[\w-]+)*$#', $input ) )
|
705 |
return preg_replace( '#\s#', '', $input );
|
|
|
706 |
|
707 |
return $default;
|
708 |
}
|
709 |
|
710 |
|
711 |
public static function validate_slug( $input, $default = false ) {
|
712 |
-
if ( preg_match( '#^[\w-]+$#', $input ) )
|
713 |
return $input;
|
|
|
714 |
|
715 |
return $default;
|
716 |
}
|
717 |
|
718 |
|
719 |
public static function validate_term( $input, $default = false ) {
|
720 |
-
if ( preg_match( '#^\w+$#', $input ) )
|
721 |
return $input;
|
|
|
722 |
|
723 |
return $default;
|
724 |
}
|
@@ -729,52 +778,59 @@ abstract class Aihrus_Settings {
|
|
729 |
*/
|
730 |
public static function is_true( $value = null, $return_boolean = true ) {
|
731 |
if ( true === $value || 'true' == strtolower( $value ) || 1 == $value || 'on' == strtolower( $value ) || 'yes' == strtolower( $value ) ) {
|
732 |
-
if ( $return_boolean )
|
733 |
return true;
|
734 |
-
else
|
735 |
return 1;
|
|
|
736 |
} else {
|
737 |
-
if ( $return_boolean )
|
738 |
return false;
|
739 |
-
else
|
740 |
return 0;
|
|
|
741 |
}
|
742 |
}
|
743 |
|
744 |
|
745 |
public static function validate_email( $input, $default = false ) {
|
746 |
-
if ( filter_var( $input, FILTER_VALIDATE_EMAIL ) )
|
747 |
return $input;
|
|
|
748 |
|
749 |
return $default;
|
750 |
}
|
751 |
|
752 |
|
753 |
public static function validate_terms( $input, $default = false ) {
|
754 |
-
if ( preg_match( '#^(([\w- ]+)(,\s?)?)+$#', $input ) )
|
755 |
return preg_replace( '#,\s*$#', '', $input );
|
|
|
756 |
|
757 |
return $default;
|
758 |
}
|
759 |
|
760 |
|
761 |
public static function validate_url( $input, $default = false ) {
|
762 |
-
if ( filter_var( $input, FILTER_VALIDATE_URL ) )
|
763 |
return $input;
|
|
|
764 |
|
765 |
return $default;
|
766 |
}
|
767 |
|
768 |
|
769 |
public static function get_scripts() {
|
770 |
-
foreach ( static::$scripts as $script )
|
771 |
echo $script;
|
|
|
772 |
}
|
773 |
|
774 |
|
775 |
public static function get_styles() {
|
776 |
-
foreach ( static::$styles as $style )
|
777 |
echo $style;
|
|
|
778 |
}
|
779 |
|
780 |
|
24 |
|
25 |
require_once ABSPATH . 'wp-admin/includes/template.php';
|
26 |
|
27 |
+
if ( class_exists( 'Aihrus_Settings' ) ) {
|
28 |
return;
|
29 |
+
}
|
30 |
|
31 |
|
32 |
abstract class Aihrus_Settings {
|
49 |
'widget' => 1, // show in widget options, 0 off
|
50 |
);
|
51 |
|
52 |
+
private static $settings_saved = false;
|
53 |
|
54 |
public function __construct() {}
|
55 |
|
118 |
|
119 |
|
120 |
public static function get_defaults( $mode = null, $old_version = null ) {
|
121 |
+
if ( empty( static::$defaults ) ) {
|
122 |
static::settings();
|
123 |
+
}
|
124 |
|
125 |
$do_backwards = false;
|
126 |
if ( 'backwards' == $mode ) {
|
146 |
|
147 |
|
148 |
public static function get_settings() {
|
149 |
+
if ( empty( static::$settings ) ) {
|
150 |
static::settings();
|
151 |
+
}
|
152 |
|
153 |
return static::$settings;
|
154 |
}
|
174 |
public static function create_setting( $args = array() ) {
|
175 |
extract( $args );
|
176 |
|
177 |
+
if ( preg_match( '#(_expand_begin|_expand_end)#', $id ) ) {
|
178 |
return;
|
179 |
+
}
|
180 |
|
181 |
$field_args = array(
|
182 |
'choices' => $choices,
|
217 |
public static function do_settings_sections( $page ) {
|
218 |
global $wp_settings_sections, $wp_settings_fields;
|
219 |
|
220 |
+
if ( ! isset( $wp_settings_sections ) || ! isset( $wp_settings_sections[$page] ) ) {
|
221 |
return;
|
222 |
+
}
|
223 |
|
224 |
foreach ( (array) $wp_settings_sections[$page] as $section ) {
|
225 |
+
if ( $section['callback'] ) {
|
226 |
call_user_func( $section['callback'], $section );
|
227 |
+
}
|
228 |
|
229 |
+
if ( ! isset( $wp_settings_fields ) || ! isset( $wp_settings_fields[$page] ) || ! isset( $wp_settings_fields[$page][$section['id']] ) ) {
|
230 |
continue;
|
231 |
+
}
|
232 |
|
233 |
echo '<table id=' . $section['id'] . ' class="form-table">';
|
234 |
do_settings_fields( $page, $section['id'] );
|
277 |
echo '<div id="' . static::ID . '">
|
278 |
<ul>';
|
279 |
|
280 |
+
foreach ( static::$sections as $section_slug => $section ) {
|
281 |
echo '<li><a href="#' . $section_slug . '">' . $section . '</a></li>';
|
282 |
+
}
|
283 |
|
284 |
echo '</ul>';
|
285 |
|
322 |
|
323 |
extract( $args );
|
324 |
|
325 |
+
if ( is_null( $input ) ) {
|
326 |
$options = get_option( static::ID );
|
327 |
+
} else {
|
328 |
$options = array();
|
329 |
$options[$id] = $input;
|
330 |
}
|
331 |
|
332 |
+
if ( ! isset( $options[$id] ) && $type != 'checkbox' ) {
|
333 |
$options[$id] = $std;
|
334 |
+
} elseif ( ! isset( $options[$id] ) ) {
|
335 |
$options[$id] = 0;
|
336 |
+
}
|
337 |
|
338 |
$field_class = '';
|
339 |
+
if ( ! empty( $class ) ) {
|
340 |
$field_class = ' ' . $class;
|
341 |
+
}
|
342 |
|
343 |
// desc isn't escaped because it's might contain allowed html
|
344 |
$choices = array_map( 'esc_attr', $choices );
|
351 |
case 'checkbox':
|
352 |
$content .= '<input class="checkbox' . $field_class . '" type="checkbox" id="' . $id . '" name="' . static::ID . '[' . $id . ']" value="1" ' . checked( $field_value, 1, false ) . ' /> ';
|
353 |
|
354 |
+
if ( ! empty( $desc ) ) {
|
355 |
$content .= '<label for="' . $id . '"><span class="description">' . $desc . '</span></label>';
|
356 |
+
}
|
357 |
|
358 |
+
if ( $show_code ) {
|
359 |
$content .= '<br /><code>' . $id . '</code>';
|
360 |
+
}
|
361 |
break;
|
362 |
|
363 |
case 'file':
|
364 |
$content .= '<input class="regular-text' . $field_class . '" type="file" id="' . $id . '" name="' . static::ID . '[' . $id . ']" />';
|
365 |
|
366 |
+
if ( ! empty( $desc ) ) {
|
367 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
368 |
+
}
|
369 |
|
370 |
break;
|
371 |
|
381 |
case 'password':
|
382 |
$content .= '<input class="regular-text' . $field_class . '" type="password" id="' . $id . '" name="' . static::ID . '[' . $id . ']" value="' . $field_value . '" />';
|
383 |
|
384 |
+
if ( ! empty( $desc ) ) {
|
385 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
386 |
+
}
|
387 |
|
388 |
break;
|
389 |
|
393 |
foreach ( $choices as $value => $label ) {
|
394 |
$content .= '<input class="radio' . $field_class . '" type="radio" name="' . static::ID . '[' . $id . ']" id="' . $id . $i . '" value="' . $value . '" ' . checked( $field_value, $value, false ) . '> <label for="' . $id . $i . '">' . $label . '</label>';
|
395 |
|
396 |
+
if ( $i < $count_choices ) {
|
397 |
$content .= '<br />';
|
398 |
+
}
|
399 |
|
400 |
$i++;
|
401 |
}
|
402 |
|
403 |
+
if ( ! empty( $desc ) ) {
|
404 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
405 |
+
}
|
406 |
|
407 |
+
if ( $show_code ) {
|
408 |
$content .= '<br /><code>' . $id . '</code>';
|
409 |
+
}
|
410 |
break;
|
411 |
|
412 |
case 'readonly':
|
413 |
$content .= '<input class="regular-text' . $field_class . '" type="text" id="' . $id . '" name="' . static::ID . '[' . $id . ']" value="' . $field_value . '" readonly="readonly" />';
|
414 |
|
415 |
+
if ( ! empty( $desc ) ) {
|
416 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
417 |
+
}
|
418 |
break;
|
419 |
|
420 |
case 'rich_editor':
|
430 |
$content = '<textarea class="large-text" rows="10" id="' . static::ID . '[' . $id . ']" name="' . static::ID . '[' . $id . ']">' . esc_textarea( $field_value ) . '</textarea>';
|
431 |
}
|
432 |
|
433 |
+
if ( ! empty( $desc ) ) {
|
434 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
435 |
+
}
|
436 |
|
437 |
+
if ( $show_code ) {
|
438 |
$content .= '<br /><code>' . $id . '</code>';
|
439 |
+
}
|
440 |
break;
|
441 |
|
442 |
case 'select':
|
443 |
$content .= '<select class="select' . $field_class . '" id="' . $id . '" name="' . static::ID . '[' . $id . ']">';
|
444 |
|
445 |
+
foreach ( $choices as $value => $label ) {
|
446 |
$content .= '<option value="' . $value . '"' . selected( $field_value, $value, false ) . '>' . $label . '</option>';
|
447 |
+
}
|
448 |
|
449 |
$content .= '</select>';
|
450 |
|
451 |
+
if ( ! empty( $desc ) ) {
|
452 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
453 |
+
}
|
454 |
|
455 |
+
if ( $show_code ) {
|
456 |
$content .= '<br /><code>' . $id . '</code>';
|
457 |
+
}
|
458 |
break;
|
459 |
|
460 |
case 'text':
|
461 |
$content .= '<input class="regular-text' . $field_class . '" type="text" id="' . $id . '" name="' . static::ID . '[' . $id . ']" placeholder="' . $std . '" value="' . $field_value . '" />';
|
462 |
|
463 |
+
if ( ! empty( $desc ) ) {
|
464 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
465 |
+
}
|
466 |
|
467 |
+
if ( $show_code ) {
|
468 |
$content .= '<br /><code>' . $id . '</code>';
|
469 |
+
}
|
470 |
break;
|
471 |
|
472 |
case 'textarea':
|
473 |
$content .= '<textarea class="' . $field_class . '" id="' . $id . '" name="' . static::ID . '[' . $id . ']" placeholder="' . $std . '" rows="5" cols="30">' . $field_value . '</textarea>';
|
474 |
|
475 |
+
if ( ! empty( $desc ) ) {
|
476 |
$content .= '<br /><span class="description">' . $desc . '</span>';
|
477 |
+
}
|
478 |
|
479 |
+
if ( $show_code ) {
|
480 |
$content .= '<br /><code>' . $id . '</code>';
|
481 |
+
}
|
482 |
break;
|
483 |
|
484 |
default:
|
496 |
register_setting( static::ID, static::ID, array( static::$class, 'validate_settings' ) );
|
497 |
|
498 |
foreach ( static::$sections as $slug => $title ) {
|
499 |
+
if ( $slug == 'about' ) {
|
500 |
add_settings_section( $slug, $title, array( static::$class, 'display_about' ), static::ID );
|
501 |
+
} else {
|
502 |
add_settings_section( $slug, $title, array( static::$class, 'display_section' ), static::ID );
|
503 |
+
}
|
504 |
}
|
505 |
|
506 |
foreach ( static::$settings as $id => $setting ) {
|
538 |
|
539 |
if ( is_admin() ) {
|
540 |
if ( ! empty( $input['reset_defaults'] ) ) {
|
541 |
+
foreach ( $defaults as $id => $std ) {
|
542 |
+
$input[ $id ] = $std;
|
543 |
+
}
|
544 |
|
545 |
unset( $input['reset_defaults'] );
|
546 |
|
551 |
$import = $input['import'];
|
552 |
$unserialized = unserialize( $import );
|
553 |
if ( is_array( $unserialized ) ) {
|
554 |
+
foreach ( $unserialized as $id => $std ) {
|
555 |
+
$input[ $id ] = $std;
|
556 |
+
}
|
557 |
}
|
558 |
}
|
559 |
}
|
563 |
$default = $parts['std'];
|
564 |
$type = $parts['type'];
|
565 |
$validations = ! empty( $parts['validate'] ) ? $parts['validate'] : array();
|
566 |
+
if ( ! empty( $validations ) ) {
|
567 |
$validations = explode( ',', $validations );
|
568 |
+
}
|
569 |
|
570 |
if ( ! isset( $input[ $id ] ) ) {
|
571 |
if ( 'checkbox' != $type ) {
|
575 |
}
|
576 |
}
|
577 |
|
578 |
+
if ( $default == $input[ $id ] && ! in_array( 'required', $validations ) ) {
|
579 |
continue;
|
580 |
+
}
|
581 |
|
582 |
if ( 'checkbox' == $type ) {
|
583 |
+
if ( self::is_true( $input[ $id ] ) ) {
|
584 |
$input[ $id ] = 1;
|
585 |
+
} else {
|
586 |
$input[ $id ] = 0;
|
587 |
+
}
|
588 |
} elseif ( in_array( $type, array( 'radio', 'select' ) ) ) {
|
589 |
// single choices only
|
590 |
$keys = array_keys( $parts['choices'] );
|
591 |
|
592 |
if ( ! in_array( $input[ $id ], $keys ) ) {
|
593 |
+
if ( self::is_true( $input[ $id ] ) ) {
|
594 |
$input[ $id ] = 1;
|
595 |
+
} else {
|
596 |
$input[ $id ] = 0;
|
597 |
+
}
|
598 |
}
|
599 |
}
|
600 |
|
601 |
if ( ! empty( $validations ) ) {
|
602 |
+
foreach ( $validations as $validate ) {
|
603 |
self::validators( $validate, $id, $input, $default, $errors );
|
604 |
+
}
|
605 |
}
|
606 |
}
|
607 |
|
613 |
$hide_update_notice = true;
|
614 |
}
|
615 |
|
616 |
+
if ( $null_options && empty( $errors ) && ! $hide_update_notice && ! empty( $_REQUEST['option_page'] ) ) {
|
617 |
add_settings_error( static::ID, 'settings_updated', esc_html__( 'Settings saved.' ), 'updated' );
|
618 |
+
|
619 |
+
if ( empty( self::$settings_saved ) ) {
|
620 |
+
self::$settings_saved = true;
|
621 |
+
set_transient( 'settings_errors', get_settings_errors(), 30 );
|
622 |
+
}
|
623 |
}
|
624 |
|
625 |
if ( empty( $do_errors ) ) {
|
639 |
switch ( $validate ) {
|
640 |
case 'absint':
|
641 |
case 'intval':
|
642 |
+
if ( '' !== $input[ $id ] ) {
|
643 |
$input[ $id ] = $validate( $input[ $id ] );
|
644 |
+
} else {
|
645 |
$input[ $id ] = $default;
|
646 |
+
}
|
647 |
break;
|
648 |
|
649 |
case 'email':
|
660 |
|
661 |
case 'min1':
|
662 |
$input[ $id ] = intval( $input[ $id ] );
|
663 |
+
if ( 0 >= $input[ $id ] ) {
|
664 |
$input[ $id ] = $default;
|
665 |
+
}
|
666 |
break;
|
667 |
|
668 |
case 'nozero':
|
669 |
$input[ $id ] = intval( $input[ $id ] );
|
670 |
+
if ( 0 === $input[ $id ] ) {
|
671 |
$input[ $id ] = $default;
|
672 |
+
}
|
673 |
break;
|
674 |
|
675 |
case 'order':
|
677 |
break;
|
678 |
|
679 |
case 'required':
|
680 |
+
if ( empty( $input[ $id ] ) ) {
|
681 |
$errors[ $id ] = esc_html__( 'Required' );
|
682 |
+
}
|
683 |
break;
|
684 |
|
685 |
case 'slash_sanitize_title':
|
729 |
|
730 |
|
731 |
public static function validate_ids( $input, $default = false ) {
|
732 |
+
if ( preg_match( '#^\d+(,\s?\d+)*$#', $input ) ) {
|
733 |
return preg_replace( '#\s#', '', $input );
|
734 |
+
}
|
735 |
|
736 |
return $default;
|
737 |
}
|
738 |
|
739 |
|
740 |
public static function validate_order( $input, $default = false ) {
|
741 |
+
if ( preg_match( '#^desc|asc$#i', $input ) ) {
|
742 |
return $input;
|
743 |
+
}
|
744 |
|
745 |
return $default;
|
746 |
}
|
747 |
|
748 |
|
749 |
public static function validate_slugs( $input, $default = false ) {
|
750 |
+
if ( preg_match( '#^[\w-]+(,\s?[\w-]+)*$#', $input ) ) {
|
751 |
return preg_replace( '#\s#', '', $input );
|
752 |
+
}
|
753 |
|
754 |
return $default;
|
755 |
}
|
756 |
|
757 |
|
758 |
public static function validate_slug( $input, $default = false ) {
|
759 |
+
if ( preg_match( '#^[\w-]+$#', $input ) ) {
|
760 |
return $input;
|
761 |
+
}
|
762 |
|
763 |
return $default;
|
764 |
}
|
765 |
|
766 |
|
767 |
public static function validate_term( $input, $default = false ) {
|
768 |
+
if ( preg_match( '#^\w+$#', $input ) ) {
|
769 |
return $input;
|
770 |
+
}
|
771 |
|
772 |
return $default;
|
773 |
}
|
778 |
*/
|
779 |
public static function is_true( $value = null, $return_boolean = true ) {
|
780 |
if ( true === $value || 'true' == strtolower( $value ) || 1 == $value || 'on' == strtolower( $value ) || 'yes' == strtolower( $value ) ) {
|
781 |
+
if ( $return_boolean ) {
|
782 |
return true;
|
783 |
+
} else {
|
784 |
return 1;
|
785 |
+
}
|
786 |
} else {
|
787 |
+
if ( $return_boolean ) {
|
788 |
return false;
|
789 |
+
} else {
|
790 |
return 0;
|
791 |
+
}
|
792 |
}
|
793 |
}
|
794 |
|
795 |
|
796 |
public static function validate_email( $input, $default = false ) {
|
797 |
+
if ( filter_var( $input, FILTER_VALIDATE_EMAIL ) ) {
|
798 |
return $input;
|
799 |
+
}
|
800 |
|
801 |
return $default;
|
802 |
}
|
803 |
|
804 |
|
805 |
public static function validate_terms( $input, $default = false ) {
|
806 |
+
if ( preg_match( '#^(([\w- ]+)(,\s?)?)+$#', $input ) ) {
|
807 |
return preg_replace( '#,\s*$#', '', $input );
|
808 |
+
}
|
809 |
|
810 |
return $default;
|
811 |
}
|
812 |
|
813 |
|
814 |
public static function validate_url( $input, $default = false ) {
|
815 |
+
if ( filter_var( $input, FILTER_VALIDATE_URL ) ) {
|
816 |
return $input;
|
817 |
+
}
|
818 |
|
819 |
return $default;
|
820 |
}
|
821 |
|
822 |
|
823 |
public static function get_scripts() {
|
824 |
+
foreach ( static::$scripts as $script ) {
|
825 |
echo $script;
|
826 |
+
}
|
827 |
}
|
828 |
|
829 |
|
830 |
public static function get_styles() {
|
831 |
+
foreach ( static::$styles as $style ) {
|
832 |
echo $style;
|
833 |
+
}
|
834 |
}
|
835 |
|
836 |
|
includes/libraries/aihrus-framework/includes/libraries/class-redrokk-metabox-class.php
CHANGED
@@ -909,7 +909,7 @@ jQuery('#edit_<?php echo $this->_category_name; ?>_<?php echo $meta_id; ?>').cli
|
|
909 |
}
|
910 |
?>
|
911 |
<?php switch ( $type ) { default: ?>
|
912 |
-
<?php if ( is_callable( $type ) && function_exists( $type ) ) : ?>
|
913 |
<tr>
|
914 |
<th scope="row" style="width: 140px">
|
915 |
<label for="<?php echo $id; ?>"><?php echo $name; ?></label>
|
909 |
}
|
910 |
?>
|
911 |
<?php switch ( $type ) { default: ?>
|
912 |
+
<?php if ( is_callable( $type ) && function_exists( $type ) && ! empty( $custom[ $id ] ) ) : ?>
|
913 |
<tr>
|
914 |
<th scope="row" style="width: 140px">
|
915 |
<label for="<?php echo $id; ?>"><?php echo $name; ?></label>
|
includes/libraries/aihrus-framework/includes/libraries/wp_custom_post_status.php
CHANGED
@@ -1,4 +1,8 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
// No, Thanks. Direct file access forbidden.
|
3 |
! defined( 'ABSPATH' ) AND exit;
|
4 |
/*
|
1 |
<?php
|
2 |
+
if ( class_exists ( 'wp_custom_post_status' ) ) {
|
3 |
+
return;
|
4 |
+
}
|
5 |
+
|
6 |
// No, Thanks. Direct file access forbidden.
|
7 |
! defined( 'ABSPATH' ) AND exit;
|
8 |
/*
|
languages/testimonials-widget.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the Testimonials by Aihrus package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Testimonials by Aihrus 2.19.
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/testimonials-widget\n"
|
7 |
-
"POT-Creation-Date: 2014-04-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -417,31 +417,31 @@ msgstr ""
|
|
417 |
|
418 |
#: includes/class-testimonials-widget-settings.php:494
|
419 |
#: includes/class-testimonials-widget.php:578
|
420 |
-
#: includes/class-testimonials-widget.php:
|
421 |
msgid "Job Title"
|
422 |
msgstr ""
|
423 |
|
424 |
#: includes/class-testimonials-widget-settings.php:495
|
425 |
#: includes/class-testimonials-widget.php:588
|
426 |
-
#: includes/class-testimonials-widget.php:
|
427 |
msgid "Email"
|
428 |
msgstr ""
|
429 |
|
430 |
#: includes/class-testimonials-widget-settings.php:496
|
431 |
#: includes/class-testimonials-widget.php:583
|
432 |
-
#: includes/class-testimonials-widget.php:
|
433 |
msgid "Location"
|
434 |
msgstr ""
|
435 |
|
436 |
#: includes/class-testimonials-widget-settings.php:497
|
437 |
#: includes/class-testimonials-widget.php:593
|
438 |
-
#: includes/class-testimonials-widget.php:
|
439 |
msgid "Company"
|
440 |
msgstr ""
|
441 |
|
442 |
#: includes/class-testimonials-widget-settings.php:498
|
443 |
#: includes/class-testimonials-widget.php:598
|
444 |
-
#: includes/class-testimonials-widget.php:
|
445 |
msgid "URL"
|
446 |
msgstr ""
|
447 |
|
@@ -615,7 +615,7 @@ msgid "This widget's unique CSS class for styling"
|
|
615 |
msgstr ""
|
616 |
|
617 |
#: includes/class-testimonials-widget.php:143
|
618 |
-
#: includes/class-testimonials-widget.php:
|
619 |
msgid "Testimonials Shortcode Examples"
|
620 |
msgstr ""
|
621 |
|
@@ -667,7 +667,7 @@ msgid "Edit Testimonial"
|
|
667 |
msgstr ""
|
668 |
|
669 |
#: includes/class-testimonials-widget.php:614
|
670 |
-
#: includes/class-testimonials-widget.php:
|
671 |
msgid "No testimonials found"
|
672 |
msgstr ""
|
673 |
|
@@ -680,7 +680,7 @@ msgid "Search Testimonials"
|
|
680 |
msgstr ""
|
681 |
|
682 |
#: includes/class-testimonials-widget.php:618
|
683 |
-
#: includes/class-testimonials-widget.php:
|
684 |
msgid "Testimonial"
|
685 |
msgstr ""
|
686 |
|
@@ -688,81 +688,81 @@ msgstr ""
|
|
688 |
msgid "View Testimonial"
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: includes/class-testimonials-widget.php:
|
692 |
msgid "…"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: includes/class-testimonials-widget.php:
|
696 |
msgid "«"
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: includes/class-testimonials-widget.php:
|
700 |
msgid "»"
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: includes/class-testimonials-widget.php:
|
704 |
msgid "Testimonial Data"
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: includes/class-testimonials-widget.php:
|
708 |
msgid "Enter title here"
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: includes/class-testimonials-widget.php:
|
712 |
msgid "Enter testimonial source here"
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: includes/class-testimonials-widget.php:
|
716 |
msgid "Testimonial updated. <a href=\"%s\">View testimonial</a>"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: includes/class-testimonials-widget.php:
|
720 |
msgid "Custom field updated."
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: includes/class-testimonials-widget.php:
|
724 |
msgid "Custom field deleted."
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: includes/class-testimonials-widget.php:
|
728 |
msgid "Testimonial updated."
|
729 |
msgstr ""
|
730 |
|
731 |
#. translators: %s: date and time of the revision
|
732 |
|
733 |
-
#: includes/class-testimonials-widget.php:
|
734 |
msgid "Testimonial restored to revision from %s"
|
735 |
msgstr ""
|
736 |
|
737 |
-
#: includes/class-testimonials-widget.php:
|
738 |
msgid "Testimonial published. <a href=\"%s\">View testimonial</a>"
|
739 |
msgstr ""
|
740 |
|
741 |
-
#: includes/class-testimonials-widget.php:
|
742 |
msgid "Testimonial saved."
|
743 |
msgstr ""
|
744 |
|
745 |
-
#: includes/class-testimonials-widget.php:
|
746 |
msgid "Testimonial submitted. <a target=\"_blank\" href=\"%s\">Preview testimonial</a>"
|
747 |
msgstr ""
|
748 |
|
749 |
-
#: includes/class-testimonials-widget.php:
|
750 |
msgid "Testimonial scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s\">Preview testimonial</a>"
|
751 |
msgstr ""
|
752 |
|
753 |
-
#: includes/class-testimonials-widget.php:
|
754 |
msgid "Testimonial draft updated. <a target=\"_blank\" href=\"%s\">Preview testimonial</a>"
|
755 |
msgstr ""
|
756 |
|
757 |
-
#: includes/class-testimonials-widget.php:
|
758 |
msgid "If your Testimonials display has gone to funky town, please <a href=\"%s\">read the FAQ</a> about possible fixes."
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: includes/class-testimonials-widget.php:
|
762 |
msgid "Failed version check"
|
763 |
msgstr ""
|
764 |
|
765 |
-
#: includes/class-testimonials-widget.php:
|
766 |
msgid "Shortcode"
|
767 |
msgstr ""
|
768 |
|
@@ -851,67 +851,79 @@ msgstr ""
|
|
851 |
msgid "Please donate $5 towards ongoing free support and development of the \"%1$s\" plugin. %2$s"
|
852 |
msgstr ""
|
853 |
|
854 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
855 |
msgid "Reset"
|
856 |
msgstr ""
|
857 |
|
858 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
859 |
msgid "About"
|
860 |
msgstr ""
|
861 |
|
862 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
863 |
msgid "Export Settings"
|
864 |
msgstr ""
|
865 |
|
866 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
867 |
msgid "These are your current settings in a serialized format. Copy the contents to make a backup of your settings."
|
868 |
msgstr ""
|
869 |
|
870 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
871 |
msgid "Import Settings"
|
872 |
msgstr ""
|
873 |
|
874 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
875 |
msgid "Paste new serialized settings here to overwrite your current configuration."
|
876 |
msgstr ""
|
877 |
|
878 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
879 |
msgid "Delete all %s data and options from database on plugin deletion. Even if this option isn't checked, WordPress will still give a data deletion warning."
|
880 |
msgstr ""
|
881 |
|
882 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
883 |
msgid "Remove Plugin Data on Deletion?"
|
884 |
msgstr ""
|
885 |
|
886 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
887 |
msgid "Reset to Defaults?"
|
888 |
msgstr ""
|
889 |
|
890 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
891 |
msgid "Check this box to reset options to their defaults"
|
892 |
msgstr ""
|
893 |
|
894 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
895 |
msgid "<img class=\"alignright size-medium\" src=\"%1$simages/michael-cannon-red-square-300x2251.jpg\" alt=\"Michael in Red Square, Moscow, Russia\" width=\"300\" height=\"225\" /><a href=\"%2$s\">%3$s</a> is by <a href=\"%4$s\">Michael Cannon</a>. He's <a href=\"%5$s\">Peichi’s</a> smiling man, an adventurous <a href=\"%6$s\" target=\"_blank\">water-rat</a>, <a href=\"%7$s\">chief people officer</a>, <a href=\"%8$s\">cyclist</a>, <a href=\"%9$s\">full stack developer</a>, <a href=\"%10$s\">poet</a>, <a href=\"%11$s\">WWOOF’er</a> and <a href=\"%12$s\">world traveler</a>."
|
896 |
msgstr ""
|
897 |
|
898 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
899 |
msgid "Save Changes"
|
900 |
msgstr ""
|
901 |
|
902 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
903 |
msgid "If you like this plugin, please <a href=\"%1$s\" title=\"Donate for Good Karma\"><img src=\"%2$s\" border=\"0\" alt=\"Donate for Good Karma\" /></a> or <a href=\"%3$s\" title=\"purchase premium WordPress plugins from Aihrus \">purchase the Premium version</a> to help fund further development and <a href=\"%4$s\" title=\"Support forums\">support</a>."
|
904 |
msgstr ""
|
905 |
|
906 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
907 |
msgid "Copyright ©%1$s <a href=\"%2$s\">Aihrus</a>."
|
908 |
msgstr ""
|
909 |
|
910 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
911 |
msgid "Settings saved."
|
912 |
msgstr ""
|
913 |
|
914 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:
|
915 |
msgid "Required"
|
916 |
msgstr ""
|
917 |
|
2 |
# This file is distributed under the same license as the Testimonials by Aihrus package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Testimonials by Aihrus 2.19.3\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/testimonials-widget\n"
|
7 |
+
"POT-Creation-Date: 2014-04-21 07:24:16+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
417 |
|
418 |
#: includes/class-testimonials-widget-settings.php:494
|
419 |
#: includes/class-testimonials-widget.php:578
|
420 |
+
#: includes/class-testimonials-widget.php:1692
|
421 |
msgid "Job Title"
|
422 |
msgstr ""
|
423 |
|
424 |
#: includes/class-testimonials-widget-settings.php:495
|
425 |
#: includes/class-testimonials-widget.php:588
|
426 |
+
#: includes/class-testimonials-widget.php:1704
|
427 |
msgid "Email"
|
428 |
msgstr ""
|
429 |
|
430 |
#: includes/class-testimonials-widget-settings.php:496
|
431 |
#: includes/class-testimonials-widget.php:583
|
432 |
+
#: includes/class-testimonials-widget.php:1698
|
433 |
msgid "Location"
|
434 |
msgstr ""
|
435 |
|
436 |
#: includes/class-testimonials-widget-settings.php:497
|
437 |
#: includes/class-testimonials-widget.php:593
|
438 |
+
#: includes/class-testimonials-widget.php:1710
|
439 |
msgid "Company"
|
440 |
msgstr ""
|
441 |
|
442 |
#: includes/class-testimonials-widget-settings.php:498
|
443 |
#: includes/class-testimonials-widget.php:598
|
444 |
+
#: includes/class-testimonials-widget.php:1716
|
445 |
msgid "URL"
|
446 |
msgstr ""
|
447 |
|
615 |
msgstr ""
|
616 |
|
617 |
#: includes/class-testimonials-widget.php:143
|
618 |
+
#: includes/class-testimonials-widget.php:2059
|
619 |
msgid "Testimonials Shortcode Examples"
|
620 |
msgstr ""
|
621 |
|
667 |
msgstr ""
|
668 |
|
669 |
#: includes/class-testimonials-widget.php:614
|
670 |
+
#: includes/class-testimonials-widget.php:1044
|
671 |
msgid "No testimonials found"
|
672 |
msgstr ""
|
673 |
|
680 |
msgstr ""
|
681 |
|
682 |
#: includes/class-testimonials-widget.php:618
|
683 |
+
#: includes/class-testimonials-widget.php:1804
|
684 |
msgid "Testimonial"
|
685 |
msgstr ""
|
686 |
|
688 |
msgid "View Testimonial"
|
689 |
msgstr ""
|
690 |
|
691 |
+
#: includes/class-testimonials-widget.php:1210
|
692 |
msgid "…"
|
693 |
msgstr ""
|
694 |
|
695 |
+
#: includes/class-testimonials-widget.php:1417
|
696 |
msgid "«"
|
697 |
msgstr ""
|
698 |
|
699 |
+
#: includes/class-testimonials-widget.php:1425
|
700 |
msgid "»"
|
701 |
msgstr ""
|
702 |
|
703 |
+
#: includes/class-testimonials-widget.php:1728
|
704 |
msgid "Testimonial Data"
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: includes/class-testimonials-widget.php:1753
|
708 |
msgid "Enter title here"
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: includes/class-testimonials-widget.php:1754
|
712 |
msgid "Enter testimonial source here"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: includes/class-testimonials-widget.php:1779
|
716 |
msgid "Testimonial updated. <a href=\"%s\">View testimonial</a>"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: includes/class-testimonials-widget.php:1780
|
720 |
msgid "Custom field updated."
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: includes/class-testimonials-widget.php:1781
|
724 |
msgid "Custom field deleted."
|
725 |
msgstr ""
|
726 |
|
727 |
+
#: includes/class-testimonials-widget.php:1782
|
728 |
msgid "Testimonial updated."
|
729 |
msgstr ""
|
730 |
|
731 |
#. translators: %s: date and time of the revision
|
732 |
|
733 |
+
#: includes/class-testimonials-widget.php:1784
|
734 |
msgid "Testimonial restored to revision from %s"
|
735 |
msgstr ""
|
736 |
|
737 |
+
#: includes/class-testimonials-widget.php:1785
|
738 |
msgid "Testimonial published. <a href=\"%s\">View testimonial</a>"
|
739 |
msgstr ""
|
740 |
|
741 |
+
#: includes/class-testimonials-widget.php:1786
|
742 |
msgid "Testimonial saved."
|
743 |
msgstr ""
|
744 |
|
745 |
+
#: includes/class-testimonials-widget.php:1787
|
746 |
msgid "Testimonial submitted. <a target=\"_blank\" href=\"%s\">Preview testimonial</a>"
|
747 |
msgstr ""
|
748 |
|
749 |
+
#: includes/class-testimonials-widget.php:1788
|
750 |
msgid "Testimonial scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s\">Preview testimonial</a>"
|
751 |
msgstr ""
|
752 |
|
753 |
+
#: includes/class-testimonials-widget.php:1789
|
754 |
msgid "Testimonial draft updated. <a target=\"_blank\" href=\"%s\">Preview testimonial</a>"
|
755 |
msgstr ""
|
756 |
|
757 |
+
#: includes/class-testimonials-widget.php:2050
|
758 |
msgid "If your Testimonials display has gone to funky town, please <a href=\"%s\">read the FAQ</a> about possible fixes."
|
759 |
msgstr ""
|
760 |
|
761 |
+
#: includes/class-testimonials-widget.php:2105
|
762 |
msgid "Failed version check"
|
763 |
msgstr ""
|
764 |
|
765 |
+
#: includes/class-testimonials-widget.php:2136
|
766 |
msgid "Shortcode"
|
767 |
msgstr ""
|
768 |
|
851 |
msgid "Please donate $5 towards ongoing free support and development of the \"%1$s\" plugin. %2$s"
|
852 |
msgstr ""
|
853 |
|
854 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-licensing.php:80
|
855 |
+
msgid "%s license saved."
|
856 |
+
msgstr ""
|
857 |
+
|
858 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-licensing.php:84
|
859 |
+
msgid "%s license not saved."
|
860 |
+
msgstr ""
|
861 |
+
|
862 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-licensing.php:180
|
863 |
+
msgid "%s license deactivated."
|
864 |
+
msgstr ""
|
865 |
+
|
866 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:64
|
867 |
msgid "Reset"
|
868 |
msgstr ""
|
869 |
|
870 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:65
|
871 |
msgid "About"
|
872 |
msgstr ""
|
873 |
|
874 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:83
|
875 |
msgid "Export Settings"
|
876 |
msgstr ""
|
877 |
|
878 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:85
|
879 |
msgid "These are your current settings in a serialized format. Copy the contents to make a backup of your settings."
|
880 |
msgstr ""
|
881 |
|
882 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:93
|
883 |
msgid "Import Settings"
|
884 |
msgstr ""
|
885 |
|
886 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:95
|
887 |
msgid "Paste new serialized settings here to overwrite your current configuration."
|
888 |
msgstr ""
|
889 |
|
890 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:99
|
891 |
msgid "Delete all %s data and options from database on plugin deletion. Even if this option isn't checked, WordPress will still give a data deletion warning."
|
892 |
msgstr ""
|
893 |
|
894 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:103
|
895 |
msgid "Remove Plugin Data on Deletion?"
|
896 |
msgstr ""
|
897 |
|
898 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:112
|
899 |
msgid "Reset to Defaults?"
|
900 |
msgstr ""
|
901 |
|
902 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:115
|
903 |
msgid "Check this box to reset options to their defaults"
|
904 |
msgstr ""
|
905 |
|
906 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:245
|
907 |
msgid "<img class=\"alignright size-medium\" src=\"%1$simages/michael-cannon-red-square-300x2251.jpg\" alt=\"Michael in Red Square, Moscow, Russia\" width=\"300\" height=\"225\" /><a href=\"%2$s\">%3$s</a> is by <a href=\"%4$s\">Michael Cannon</a>. He's <a href=\"%5$s\">Peichi’s</a> smiling man, an adventurous <a href=\"%6$s\" target=\"_blank\">water-rat</a>, <a href=\"%7$s\">chief people officer</a>, <a href=\"%8$s\">cyclist</a>, <a href=\"%9$s\">full stack developer</a>, <a href=\"%10$s\">poet</a>, <a href=\"%11$s\">WWOOF’er</a> and <a href=\"%12$s\">world traveler</a>."
|
908 |
msgstr ""
|
909 |
|
910 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:289
|
911 |
msgid "Save Changes"
|
912 |
msgstr ""
|
913 |
|
914 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:297
|
915 |
msgid "If you like this plugin, please <a href=\"%1$s\" title=\"Donate for Good Karma\"><img src=\"%2$s\" border=\"0\" alt=\"Donate for Good Karma\" /></a> or <a href=\"%3$s\" title=\"purchase premium WordPress plugins from Aihrus \">purchase the Premium version</a> to help fund further development and <a href=\"%4$s\" title=\"Support forums\">support</a>."
|
916 |
msgstr ""
|
917 |
|
918 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:308
|
919 |
msgid "Copyright ©%1$s <a href=\"%2$s\">Aihrus</a>."
|
920 |
msgstr ""
|
921 |
|
922 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:617
|
923 |
msgid "Settings saved."
|
924 |
msgstr ""
|
925 |
|
926 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:681
|
927 |
msgid "Required"
|
928 |
msgstr ""
|
929 |
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Donate link: http://aihr.us/about-aihrus/donate/
|
|
5 |
Tags: client, customer, portfolio, quotations, quote, quotes, random, recommendation, reference, review, reviews, testimonial, testimonials, testimony, wpml
|
6 |
Requires at least: 3.6
|
7 |
Tested up to: 3.9.0
|
8 |
-
Stable tag: 2.19.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -360,26 +360,26 @@ Further, global settings are the baseline for shortcodes. If you want to alter t
|
|
360 |
|
361 |
= Most Common Issues =
|
362 |
|
363 |
-
* Got `Parse error: syntax error, unexpected T_STATIC
|
364 |
* [404 - Page not found](https://aihrus.zendesk.com/entries/23679301)
|
365 |
-
* [Change or debug CSS](https://aihrus.zendesk.com/entries/24910733)
|
366 |
* [Customize bxSlider](http://bxslider.com/examples)
|
367 |
-
* [Debug
|
368 |
-
* [How do I change my widget's rotation speed or other options?](https://aihrus.zendesk.com/entries/27714083)
|
369 |
* [How do I create a testimonial record?](https://aihrus.zendesk.com/entries/30602506)
|
|
|
370 |
* [How to change testimonials layout](https://aihrus.zendesk.com/entries/38055707)
|
371 |
-
* [My options don't work
|
372 |
* [Pagination is broken](https://aihrus.zendesk.com/entries/23693513)
|
373 |
* [Test Review schema output](http://www.google.com/webmasters/tools/richsnippets)
|
374 |
-
* [
|
375 |
|
376 |
= Still Stuck or Want Something Done? Get Support! =
|
377 |
|
378 |
-
1. [
|
379 |
-
1. [Open
|
380 |
-
1. [
|
381 |
-
1. [Contribute Code
|
382 |
-
1. [Beta Testers Needed](http://aihr.us/become-beta-tester/) -
|
383 |
|
384 |
|
385 |
== Screenshots ==
|
5 |
Tags: client, customer, portfolio, quotations, quote, quotes, random, recommendation, reference, review, reviews, testimonial, testimonials, testimony, wpml
|
6 |
Requires at least: 3.6
|
7 |
Tested up to: 3.9.0
|
8 |
+
Stable tag: 2.19.3
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
360 |
|
361 |
= Most Common Issues =
|
362 |
|
363 |
+
* Got `Parse error: syntax error, unexpected T_STATIC…`? See [Most Aihrus Plugins Require PHP 5.3+](https://aihrus.zendesk.com/entries/30678006)
|
364 |
* [404 - Page not found](https://aihrus.zendesk.com/entries/23679301)
|
365 |
+
* [Change styling or debug CSS](https://aihrus.zendesk.com/entries/24910733)
|
366 |
* [Customize bxSlider](http://bxslider.com/examples)
|
367 |
+
* [Debug theme and plugin conflicts](https://aihrus.zendesk.com/entries/25119302)
|
|
|
368 |
* [How do I create a testimonial record?](https://aihrus.zendesk.com/entries/30602506)
|
369 |
+
* [How do I reset testimonials?](https://aihrus.zendesk.com/entries/30746533)
|
370 |
* [How to change testimonials layout](https://aihrus.zendesk.com/entries/38055707)
|
371 |
+
* [My options don't work](https://aihrus.zendesk.com/entries/30746533)
|
372 |
* [Pagination is broken](https://aihrus.zendesk.com/entries/23693513)
|
373 |
* [Test Review schema output](http://www.google.com/webmasters/tools/richsnippets)
|
374 |
+
* [Testimonials don't rotate](https://aihrus.zendesk.com/entries/23693363)
|
375 |
|
376 |
= Still Stuck or Want Something Done? Get Support! =
|
377 |
|
378 |
+
1. [Knowledge Base](https://aihrus.zendesk.com/categories/20104507) - read and comment upon 125+ frequently asked questions
|
379 |
+
1. [Open Issues](https://github.com/michael-cannon/testimonials-widget/issues) - review and submit bug reports and enhancement requests
|
380 |
+
1. [Support on WordPress](http://wordpress.org/support/plugin/testimonials-widget) - ask questions and review responses
|
381 |
+
1. [Contribute Code](https://github.com/michael-cannon/testimonials-widget/blob/master/CONTRIBUTING.md)
|
382 |
+
1. [Beta Testers Needed](http://aihr.us/become-beta-tester/) - provide feedback and direction to plugin development
|
383 |
|
384 |
|
385 |
== Screenshots ==
|
testimonials-widget.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Testimonials by Aihrus
|
4 |
* Plugin URI: http://wordpress.org/plugins/testimonials-widget/
|
5 |
* Description: Testimonials by Aihrus lets you randomly slide or list selected portfolios, quotes, reviews, or text with images or videos on your WordPress site.
|
6 |
-
* Version: 2.19.
|
7 |
* Author: Michael Cannon
|
8 |
* Author URI: http://aihr.us/resume/
|
9 |
* License: GPLv2 or later
|
@@ -31,7 +31,7 @@ if ( ! defined( 'ABSPATH' ) )
|
|
31 |
exit;
|
32 |
|
33 |
if ( ! defined( 'TW_AIHR_VERSION' ) )
|
34 |
-
define( 'TW_AIHR_VERSION', '1.1.
|
35 |
|
36 |
if ( ! defined( 'TW_BASE' ) )
|
37 |
define( 'TW_BASE', plugin_basename( __FILE__ ) );
|
@@ -52,7 +52,7 @@ if ( ! defined( 'TW_PREMIUM_LINK' ) )
|
|
52 |
define( 'TW_PREMIUM_LINK', '<a href="http://aihr.us/downloads/testimonials-widget-premium-wordpress-plugin/">Buy Premium</a>' );
|
53 |
|
54 |
if ( ! defined( 'TW_VERSION' ) )
|
55 |
-
define( 'TW_VERSION', '2.19.
|
56 |
|
57 |
require_once TW_DIR_INC . 'requirements.php';
|
58 |
|
3 |
* Plugin Name: Testimonials by Aihrus
|
4 |
* Plugin URI: http://wordpress.org/plugins/testimonials-widget/
|
5 |
* Description: Testimonials by Aihrus lets you randomly slide or list selected portfolios, quotes, reviews, or text with images or videos on your WordPress site.
|
6 |
+
* Version: 2.19.3
|
7 |
* Author: Michael Cannon
|
8 |
* Author URI: http://aihr.us/resume/
|
9 |
* License: GPLv2 or later
|
31 |
exit;
|
32 |
|
33 |
if ( ! defined( 'TW_AIHR_VERSION' ) )
|
34 |
+
define( 'TW_AIHR_VERSION', '1.1.2' );
|
35 |
|
36 |
if ( ! defined( 'TW_BASE' ) )
|
37 |
define( 'TW_BASE', plugin_basename( __FILE__ ) );
|
52 |
define( 'TW_PREMIUM_LINK', '<a href="http://aihr.us/downloads/testimonials-widget-premium-wordpress-plugin/">Buy Premium</a>' );
|
53 |
|
54 |
if ( ! defined( 'TW_VERSION' ) )
|
55 |
+
define( 'TW_VERSION', '2.19.3' );
|
56 |
|
57 |
require_once TW_DIR_INC . 'requirements.php';
|
58 |
|