Version Description
- 21 June 2016 =
- Added builder field.
- Added new multi checkboxes field.
- Added Layout Slider widget.
- Added taxonomy widget.
- Added slider wrapper attributes and filter.
- Fix for measurement field inside a repeater.
- Modified base folder to work independently of Widgets Bundle.
- Added custom icon families callback argument to icon field.
- Properly handle attachments in post selector
- Contact Form: Refactored form fields.
- Hero Image: Added image type to Hero Image widget.
- Button: Handle empty width.
- Image: Added filter for SiteOrigin image attributes.
- Image: Add dimensions to sizes dropdown.
- Maps: Ensure maps widget works with API key.
- Hero Image: Added setting to disable swipe on mobile Hero Image Widget.
- Fixed title syntax in Image widget.
- Video: Correctly get video file mime-types.
- Video Widget: Allow specifying multiple self-hosted video sources to support various formats.
Download this release
Release Info
Developer | gpriday |
Plugin | ![]() |
Version | 1.6 |
Comparing to | |
See all releases |
Code changes from version 1.5.11 to 1.6
- base/{inc.php → base.php} +0 -1
- base/css/admin.css +8 -2
- base/inc/fields/builder.class.php +60 -0
- base/inc/fields/checkbox.class.php +2 -2
- base/inc/fields/checkboxes.class.php +52 -0
- base/inc/fields/css/measurement-field.css +7 -0
- base/inc/fields/css/tinymce-field.css +3 -0
- base/inc/fields/icon.class.php +24 -9
- base/inc/fields/image-size.class.php +56 -0
- base/inc/fields/js/tinymce-field.js +132 -0
- base/inc/fields/js/tinymce-field.min.js +1 -0
- base/inc/fields/measurement.class.php +2 -2
- base/inc/fields/siteorigin-widget-field-class-loader.class.php +43 -16
- base/inc/fields/tinymce.class.php +2 -2
- base/inc/meta-box-manager.php +1 -1
- base/inc/post-selector.php +10 -23
- base/inc/widget-manager.class.php +8 -2
- base/inc/widgets/base-slider.class.php +46 -17
- base/js/admin.js +16 -0
- base/js/admin.min.js +1 -1
- base/js/posts-selector.js +2 -2
- base/js/posts-selector.min.js +1 -1
- base/siteorigin-widget.class.php +8 -2
- js/slider/jquery.slider.js +5 -1
- js/slider/jquery.slider.min.js +1 -1
- readme.txt +24 -3
- so-widgets-bundle.php +9 -5
- widgets/button/button.php +24 -20
- widgets/button/styles/atom.less +9 -1
- widgets/button/styles/flat.less +9 -1
- widgets/button/styles/wire.less +9 -1
- widgets/button/tpl/{base.php → default.php} +1 -2
- widgets/contact/contact.php +53 -51
- widgets/contact/fields/base.class.php +29 -0
- widgets/contact/fields/checkboxes.class.php +23 -0
- widgets/contact/fields/email.class.php +5 -0
- widgets/contact/fields/name.class.php +11 -0
- widgets/contact/fields/select.class.php +18 -0
- widgets/contact/fields/subject.class.php +11 -0
- widgets/contact/fields/text.class.php +11 -0
- widgets/contact/fields/textarea.class.php +11 -0
- widgets/cta/cta.php +0 -8
- widgets/cta/styles/{basic.less → default.less} +0 -0
- widgets/cta/tpl/{base.php → default.php} +0 -0
- widgets/editor/editor.php +0 -4
- widgets/editor/tpl/{editor.php → default.php} +0 -0
- widgets/features/features.php +1 -45
- widgets/features/styles/{features.less → default.less} +0 -0
- widgets/features/tpl/{base.php → default.php} +0 -0
- widgets/google-map/google-map.php +2 -1
- widgets/google-map/js/js-map.js +1 -1
- widgets/google-map/js/js-map.min.js +1 -1
- widgets/headline/headline.php +1 -16
- widgets/headline/styles/{sow-headline.less → default.less} +0 -0
- widgets/headline/tpl/{headline.php → default.php} +0 -0
- widgets/hero/hero.php +14 -3
- widgets/icon/icon.php +0 -16
- widgets/icon/styles/{sow-icon.less → default.less} +0 -0
- widgets/icon/tpl/{icon.php → default.php} +0 -0
- widgets/image-grid/image-grid.php +1 -8
- widgets/image/image.php +2 -24
- widgets/image/styles/{sow-image.less → default.less} +0 -0
- widgets/image/tpl/{base.php → default.php} +4 -7
- widgets/layout-slider/assets/banner.svg +40 -0
- widgets/layout-slider/layout-slider.php +300 -0
- widgets/layout-slider/styles/default.less +59 -0
- widgets/layout-slider/tpl/default.php +3 -0
- widgets/post-carousel/js/carousel.js +58 -52
- widgets/post-carousel/js/carousel.min.js +1 -1
- widgets/post-carousel/tpl/base.php +1 -1
- widgets/simple-masonry/simple-masonry.php +0 -8
- widgets/simple-masonry/styles/{simple-masonry.less → default.less} +0 -0
- widgets/simple-masonry/tpl/{simple-masonry.php → default.php} +0 -0
- widgets/slider/slider.php +3 -1
- widgets/social-media-buttons/social-media-buttons.php +0 -4
- widgets/social-media-buttons/tpl/{social-media-buttons.php → default.php} +0 -0
- widgets/taxonomy/styles/default.less +42 -0
- widgets/taxonomy/taxonomy.php +94 -0
- widgets/taxonomy/tpl/default.php +24 -0
- widgets/video/tpl/default.php +35 -11
- widgets/video/video.php +143 -93
base/{inc.php → base.php}
RENAMED
@@ -6,7 +6,6 @@ include plugin_dir_path(__FILE__).'siteorigin-widget.class.php';
|
|
6 |
include plugin_dir_path(__FILE__).'inc/widget-manager.class.php';
|
7 |
include plugin_dir_path(__FILE__).'inc/meta-box-manager.php';
|
8 |
include plugin_dir_path(__FILE__).'inc/post-selector.php';
|
9 |
-
include plugin_dir_path(__FILE__).'inc/fonts.php';
|
10 |
include plugin_dir_path(__FILE__).'inc/string-utils.php';
|
11 |
include plugin_dir_path(__FILE__).'inc/attachments.php';
|
12 |
|
6 |
include plugin_dir_path(__FILE__).'inc/widget-manager.class.php';
|
7 |
include plugin_dir_path(__FILE__).'inc/meta-box-manager.php';
|
8 |
include plugin_dir_path(__FILE__).'inc/post-selector.php';
|
|
|
9 |
include plugin_dir_path(__FILE__).'inc/string-utils.php';
|
10 |
include plugin_dir_path(__FILE__).'inc/attachments.php';
|
11 |
|
base/css/admin.css
CHANGED
@@ -24,6 +24,12 @@
|
|
24 |
.siteorigin-widget-form .siteorigin-widget-field label.siteorigin-widget-field-label {
|
25 |
font-weight: bold;
|
26 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
.siteorigin-widget-form .siteorigin-widget-field .siteorigin-widget-field-description {
|
28 |
font-size: 0.9em;
|
29 |
margin-top: 0.2em;
|
@@ -143,7 +149,7 @@
|
|
143 |
color: #999999;
|
144 |
}
|
145 |
.siteorigin-widget-form .siteorigin-widget-field-repeater .siteorigin-widget-field-expand {
|
146 |
-
right:
|
147 |
}
|
148 |
.siteorigin-widget-form .siteorigin-widget-field-repeater .siteorigin-widget-field-expand:before {
|
149 |
content: "\f140";
|
@@ -161,7 +167,7 @@
|
|
161 |
color: #50575D;
|
162 |
}
|
163 |
.siteorigin-widget-form .siteorigin-widget-field-repeater .siteorigin-widget-field-remove {
|
164 |
-
right:
|
165 |
}
|
166 |
.siteorigin-widget-form .siteorigin-widget-field-repeater .siteorigin-widget-field-remove:before {
|
167 |
content: '\f158';
|
24 |
.siteorigin-widget-form .siteorigin-widget-field label.siteorigin-widget-field-label {
|
25 |
font-weight: bold;
|
26 |
}
|
27 |
+
.siteorigin-widget-form .siteorigin-widget-field label.so-checkbox-label {
|
28 |
+
-webkit-user-select: none;
|
29 |
+
-moz-user-select: none;
|
30 |
+
-ms-user-select: none;
|
31 |
+
user-select: none;
|
32 |
+
}
|
33 |
.siteorigin-widget-form .siteorigin-widget-field .siteorigin-widget-field-description {
|
34 |
font-size: 0.9em;
|
35 |
margin-top: 0.2em;
|
149 |
color: #999999;
|
150 |
}
|
151 |
.siteorigin-widget-form .siteorigin-widget-field-repeater .siteorigin-widget-field-expand {
|
152 |
+
right: 48px;
|
153 |
}
|
154 |
.siteorigin-widget-form .siteorigin-widget-field-repeater .siteorigin-widget-field-expand:before {
|
155 |
content: "\f140";
|
167 |
color: #50575D;
|
168 |
}
|
169 |
.siteorigin-widget-form .siteorigin-widget-field-repeater .siteorigin-widget-field-remove {
|
170 |
+
right: 12px;
|
171 |
}
|
172 |
.siteorigin-widget-form .siteorigin-widget-field-repeater .siteorigin-widget-field-remove:before {
|
173 |
content: '\f158';
|
base/inc/fields/builder.class.php
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* A full instance of SiteOrigin Page Builder as a field.
|
5 |
+
*
|
6 |
+
* Class SiteOrigin_Widget_Field_Builder
|
7 |
+
*/
|
8 |
+
class SiteOrigin_Widget_Field_Builder extends SiteOrigin_Widget_Field_Base {
|
9 |
+
|
10 |
+
protected function render_field( $value, $instance ){
|
11 |
+
if( defined('SITEORIGIN_PANELS_VERSION') ) {
|
12 |
+
// Normal rendering code
|
13 |
+
?>
|
14 |
+
<div
|
15 |
+
class="siteorigin-page-builder-field"
|
16 |
+
data-mode="dialog"
|
17 |
+
data-type="<?php echo isset( $this->field_options['builder_type'] ) ? esc_attr( $this->field_options['builder_type'] ) : 'sow-builder-field' ?>"
|
18 |
+
>
|
19 |
+
<p>
|
20 |
+
<button class="button-secondary siteorigin-panels-display-builder" ><?php _e('Open Builder', 'siteorigin-panels') ?></button>
|
21 |
+
</p>
|
22 |
+
<input
|
23 |
+
type="hidden"
|
24 |
+
class="siteorigin-widget-input panels-data"
|
25 |
+
value="<?php echo esc_attr( json_encode( $value ) ) ?>"
|
26 |
+
name="<?php echo esc_attr( $this->element_name ) ?>"
|
27 |
+
id="<?php echo esc_attr( $this->element_id ) ?>"
|
28 |
+
/>
|
29 |
+
</div>
|
30 |
+
<?php
|
31 |
+
}
|
32 |
+
else {
|
33 |
+
// Let the user know that they need Page Builder installed
|
34 |
+
?>
|
35 |
+
<p>
|
36 |
+
<?php _e( 'This field requires: ', 'so-widgets-bundle' ) ?>
|
37 |
+
<a href="https://siteorigin.com/page-builder/" target="_blank"><?php _e( 'SiteOrigin Page Builder', 'so-widgets-bundle' ) ?></a>
|
38 |
+
</p>
|
39 |
+
<?php
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Process the panels_data
|
45 |
+
*
|
46 |
+
* @param mixed $value
|
47 |
+
* @param array $instance
|
48 |
+
*
|
49 |
+
* @return array|mixed|object
|
50 |
+
*/
|
51 |
+
protected function sanitize_field_input( $value, $instance ){
|
52 |
+
$panels_data = json_decode( $value, true );
|
53 |
+
if( function_exists('siteorigin_panels_process_raw_widgets') && !empty( $panels_data['widgets'] ) && is_array( $panels_data['widgets'] ) ) {
|
54 |
+
$panels_data['widgets'] = siteorigin_panels_process_raw_widgets( $panels_data['widgets'] );
|
55 |
+
}
|
56 |
+
|
57 |
+
return $panels_data;
|
58 |
+
}
|
59 |
+
|
60 |
+
}
|
base/inc/fields/checkbox.class.php
CHANGED
@@ -7,7 +7,7 @@ class SiteOrigin_Widget_Field_Checkbox extends SiteOrigin_Widget_Field_Base {
|
|
7 |
|
8 |
protected function render_field( $value, $instance ) {
|
9 |
?>
|
10 |
-
<label for="<?php echo esc_attr( $this->element_id ) ?>">
|
11 |
<input type="checkbox" name="<?php echo esc_attr( $this->element_name ) ?>" id="<?php echo esc_attr( $this->element_id ) ?>"
|
12 |
class="siteorigin-widget-input" <?php checked( !empty( $value ) ) ?> />
|
13 |
<?php echo esc_attr( $this->label ) ?>
|
@@ -23,4 +23,4 @@ class SiteOrigin_Widget_Field_Checkbox extends SiteOrigin_Widget_Field_Base {
|
|
23 |
return ! empty( $value );
|
24 |
}
|
25 |
|
26 |
-
}
|
7 |
|
8 |
protected function render_field( $value, $instance ) {
|
9 |
?>
|
10 |
+
<label for="<?php echo esc_attr( $this->element_id ) ?>" class="so-checkbox-label">
|
11 |
<input type="checkbox" name="<?php echo esc_attr( $this->element_name ) ?>" id="<?php echo esc_attr( $this->element_id ) ?>"
|
12 |
class="siteorigin-widget-input" <?php checked( !empty( $value ) ) ?> />
|
13 |
<?php echo esc_attr( $this->label ) ?>
|
23 |
return ! empty( $value );
|
24 |
}
|
25 |
|
26 |
+
}
|
base/inc/fields/checkboxes.class.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class SiteOrigin_Widget_Field_Checkbox
|
5 |
+
*/
|
6 |
+
class SiteOrigin_Widget_Field_Checkboxes extends SiteOrigin_Widget_Field_Base {
|
7 |
+
|
8 |
+
protected $options;
|
9 |
+
|
10 |
+
protected function render_field( $value, $instance ) {
|
11 |
+
if( empty($value) ) {
|
12 |
+
$value = array();
|
13 |
+
}
|
14 |
+
|
15 |
+
if( !is_array( $value ) ) {
|
16 |
+
$value = array( $value );
|
17 |
+
}
|
18 |
+
|
19 |
+
foreach( $this->options as $id => $label ) {
|
20 |
+
?>
|
21 |
+
<label for="<?php echo esc_attr( $this->element_id ) ?>-<?php echo esc_attr( $id ) ?>" class="so-checkbox-label">
|
22 |
+
<input
|
23 |
+
type="checkbox"
|
24 |
+
class="siteorigin-widget-input"
|
25 |
+
name="<?php echo esc_attr( $this->element_name ) ?>[]"
|
26 |
+
value="<?php echo esc_attr( $id ) ?>"
|
27 |
+
id="<?php echo esc_attr( $this->element_id ) ?>-<?php echo esc_attr( $id ) ?>"
|
28 |
+
<?php checked( in_array( $id, $value ) ) ?>
|
29 |
+
/>
|
30 |
+
<?php echo( $label ) ?>
|
31 |
+
</label>
|
32 |
+
<?php
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
protected function sanitize_field_input( $value, $instance ) {
|
37 |
+
$values = is_array( $value ) ? $value : array( $value );
|
38 |
+
$keys = array_keys( $this->options );
|
39 |
+
$sanitized_value = array();
|
40 |
+
foreach( $values as $value ) {
|
41 |
+
if ( !in_array( $value, $keys ) ) {
|
42 |
+
$sanitized_value[] = isset( $this->default ) ? $this->default : false;
|
43 |
+
}
|
44 |
+
else {
|
45 |
+
$sanitized_value[] = $value;
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
return count( $sanitized_value ) == 1 ? $sanitized_value[0] : $sanitized_value;
|
50 |
+
}
|
51 |
+
|
52 |
+
}
|
base/inc/fields/css/measurement-field.css
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.siteorigin-widget-form .siteorigin-widget-field input[type="text"].siteorigin-widget-input-measurement {
|
2 |
+
float: left;
|
3 |
+
max-width: 58px;
|
4 |
+
margin: 1px;
|
5 |
+
height: 28px;
|
6 |
+
vertical-align: middle;
|
7 |
+
}
|
base/inc/fields/css/tinymce-field.css
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
.wp-customizer .mce-floatpanel {
|
2 |
+
z-index: 1000000 !important;
|
3 |
+
}
|
base/inc/fields/icon.class.php
CHANGED
@@ -5,10 +5,10 @@
|
|
5 |
*/
|
6 |
class SiteOrigin_Widget_Field_Icon extends SiteOrigin_Widget_Field_Base {
|
7 |
|
8 |
-
protected
|
9 |
-
static $widget_icon_families;
|
10 |
-
if( empty( $widget_icon_families ) ) $widget_icon_families = apply_filters('siteorigin_widgets_icon_families', array() );
|
11 |
|
|
|
|
|
12 |
list( $value_family, $null ) = !empty($value) ? explode('-', $value, 2) : array('fontawesome', '');
|
13 |
|
14 |
?>
|
@@ -22,7 +22,11 @@ class SiteOrigin_Widget_Field_Icon extends SiteOrigin_Widget_Field_Base {
|
|
22 |
<select class="siteorigin-widget-icon-family" >
|
23 |
<?php foreach( $widget_icon_families as $family_id => $family_info ) : ?>
|
24 |
<option value="<?php echo esc_attr( $family_id ) ?>"
|
25 |
-
<?php selected( $value_family, $family_id )
|
|
|
|
|
|
|
|
|
26 |
<?php endforeach; ?>
|
27 |
</select>
|
28 |
|
@@ -45,10 +49,7 @@ class SiteOrigin_Widget_Field_Icon extends SiteOrigin_Widget_Field_Base {
|
|
45 |
}
|
46 |
list( $value_family, $value_icon ) = ( ! empty( $sanitized_value ) && strpos( $sanitized_value, '-' ) !== false ) ? explode( '-', $sanitized_value, 2 ) : array('', '');
|
47 |
|
48 |
-
|
49 |
-
if( empty( $widget_icon_families ) ) {
|
50 |
-
$widget_icon_families = apply_filters( 'siteorigin_widgets_icon_families', array() );
|
51 |
-
}
|
52 |
if( ! ( isset( $widget_icon_families[$value_family] ) && isset( $widget_icon_families[$value_family]['icons'][$value_icon] ) ) ) {
|
53 |
$sanitized_value = isset( $this->default ) ? $this->default : '';
|
54 |
}
|
@@ -56,4 +57,18 @@ class SiteOrigin_Widget_Field_Icon extends SiteOrigin_Widget_Field_Base {
|
|
56 |
return $sanitized_value;
|
57 |
}
|
58 |
|
59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
*/
|
6 |
class SiteOrigin_Widget_Field_Icon extends SiteOrigin_Widget_Field_Base {
|
7 |
|
8 |
+
protected $icons_callback;
|
|
|
|
|
9 |
|
10 |
+
protected function render_field( $value, $instance ) {
|
11 |
+
$widget_icon_families = $this->get_widget_icon_families();
|
12 |
list( $value_family, $null ) = !empty($value) ? explode('-', $value, 2) : array('fontawesome', '');
|
13 |
|
14 |
?>
|
22 |
<select class="siteorigin-widget-icon-family" >
|
23 |
<?php foreach( $widget_icon_families as $family_id => $family_info ) : ?>
|
24 |
<option value="<?php echo esc_attr( $family_id ) ?>"
|
25 |
+
<?php selected( $value_family, $family_id ) ?>
|
26 |
+
<?php if( !empty( $this->icons_callback ) ) echo 'data-icons="' . esc_attr( json_encode( $family_info ) ) . '"' ?>
|
27 |
+
>
|
28 |
+
<?php echo esc_html( $family_info['name'] ) ?> (<?php echo count( $family_info['icons'] ) ?>)
|
29 |
+
</option>
|
30 |
<?php endforeach; ?>
|
31 |
</select>
|
32 |
|
49 |
}
|
50 |
list( $value_family, $value_icon ) = ( ! empty( $sanitized_value ) && strpos( $sanitized_value, '-' ) !== false ) ? explode( '-', $sanitized_value, 2 ) : array('', '');
|
51 |
|
52 |
+
$widget_icon_families = $this->get_widget_icon_families();
|
|
|
|
|
|
|
53 |
if( ! ( isset( $widget_icon_families[$value_family] ) && isset( $widget_icon_families[$value_family]['icons'][$value_icon] ) ) ) {
|
54 |
$sanitized_value = isset( $this->default ) ? $this->default : '';
|
55 |
}
|
57 |
return $sanitized_value;
|
58 |
}
|
59 |
|
60 |
+
private function get_widget_icon_families(){
|
61 |
+
if( !empty( $this->icons_callback ) ) {
|
62 |
+
// We'll get the icons from the callback function
|
63 |
+
$widget_icon_families = call_user_func( $this->icons_callback );
|
64 |
+
}
|
65 |
+
else {
|
66 |
+
// We'll get icons from the main filter
|
67 |
+
static $widget_icon_families;
|
68 |
+
if( empty( $widget_icon_families ) ) $widget_icon_families = apply_filters('siteorigin_widgets_icon_families', array() );
|
69 |
+
}
|
70 |
+
|
71 |
+
return $widget_icon_families;
|
72 |
+
}
|
73 |
+
|
74 |
+
}
|
base/inc/fields/image-size.class.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class SiteOrigin_Widget_Field_Select
|
5 |
+
*/
|
6 |
+
class SiteOrigin_Widget_Field_Image_Size extends SiteOrigin_Widget_Field_Select {
|
7 |
+
|
8 |
+
protected function get_default_options() {
|
9 |
+
$image_size_configs = $this->get_image_sizes();
|
10 |
+
// Hardcoded 'full' and 'thumb' because they're not registered image sizes.
|
11 |
+
// 'full' will result in the original uploaded image size being used.
|
12 |
+
// 'thumb' is a small thumbnail image size defined by the current theme.
|
13 |
+
$sizes = array(
|
14 |
+
'full' => __( 'Full', 'so-widgets-bundle' ),
|
15 |
+
'thumb' => __( 'Thumbnail (Theme-defined)', 'so-widgets-bundle' ),
|
16 |
+
);
|
17 |
+
foreach( $image_size_configs as $name => $size_config) {
|
18 |
+
$sizes[$name] = ucwords(preg_replace('/[-_]/', ' ', $name)) . ' (' . $size_config['width'] . 'x' . $size_config['height'] . ')';
|
19 |
+
}
|
20 |
+
|
21 |
+
return array(
|
22 |
+
'options' => $sizes
|
23 |
+
);
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Get size information for all currently-registered image sizes.
|
28 |
+
* From codex example here: https://codex.wordpress.org/Function_Reference/get_intermediate_image_sizes
|
29 |
+
*
|
30 |
+
* @global $_wp_additional_image_sizes
|
31 |
+
* @uses get_intermediate_image_sizes()
|
32 |
+
* @return array $sizes Data for all currently-registered image sizes.
|
33 |
+
*/
|
34 |
+
private function get_image_sizes() {
|
35 |
+
global $_wp_additional_image_sizes;
|
36 |
+
|
37 |
+
$sizes = array();
|
38 |
+
|
39 |
+
foreach ( get_intermediate_image_sizes() as $_size ) {
|
40 |
+
if ( in_array( $_size, array('thumbnail', 'medium', 'medium_large', 'large') ) ) {
|
41 |
+
$sizes[ $_size ]['width'] = get_option( "{$_size}_size_w" );
|
42 |
+
$sizes[ $_size ]['height'] = get_option( "{$_size}_size_h" );
|
43 |
+
$sizes[ $_size ]['crop'] = (bool) get_option( "{$_size}_crop" );
|
44 |
+
} elseif ( isset( $_wp_additional_image_sizes[ $_size ] ) ) {
|
45 |
+
$sizes[ $_size ] = array(
|
46 |
+
'width' => $_wp_additional_image_sizes[ $_size ]['width'],
|
47 |
+
'height' => $_wp_additional_image_sizes[ $_size ]['height'],
|
48 |
+
'crop' => $_wp_additional_image_sizes[ $_size ]['crop'],
|
49 |
+
);
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
return $sizes;
|
54 |
+
}
|
55 |
+
|
56 |
+
}
|
base/inc/fields/js/tinymce-field.js
ADDED
@@ -0,0 +1,132 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* global tinyMCEPreInit, quicktags, QTags, tinymce */
|
2 |
+
|
3 |
+
(function( $ ) {
|
4 |
+
var setup = function(widgetForm) {
|
5 |
+
if(typeof tinyMCEPreInit !== 'undefined') {
|
6 |
+
//BS TinyMCE widget sometimes adds 'undefined' as an id when opening PB, which causes a JS error when using repeaters.
|
7 |
+
if (tinyMCEPreInit.mceInit.hasOwnProperty('undefined')) {
|
8 |
+
delete tinyMCEPreInit.mceInit['undefined'];
|
9 |
+
}
|
10 |
+
if (tinyMCEPreInit.qtInit.hasOwnProperty('undefined')) {
|
11 |
+
delete tinyMCEPreInit.qtInit['undefined'];
|
12 |
+
}
|
13 |
+
if (QTags.instances.hasOwnProperty('undefined')) {
|
14 |
+
delete QTags.instances['undefined'];
|
15 |
+
}
|
16 |
+
$(widgetForm).find('> .siteorigin-widget-field-type-tinymce > .siteorigin-widget-tinymce-container').each(function (index, element) {
|
17 |
+
var $container = $(element);
|
18 |
+
var $textarea = $container.find('textarea');
|
19 |
+
var id = $textarea.attr('id');
|
20 |
+
if( typeof tinymce != 'undefined') {
|
21 |
+
if (id.indexOf('__i__') > -1) return;
|
22 |
+
var mceSettings = $container.data('mceSettings');
|
23 |
+
var widgetIdBase = $container.data('widgetIdBase');
|
24 |
+
var name = $textarea.attr('name').replace(/\[\d+\]/g, '');
|
25 |
+
var fieldName = /[a-zA-Z0-9\-]+(?:\[[a-zA-Z0-9]+\])?\[(.*)\]/.exec(name)[1];
|
26 |
+
var idPattern = new RegExp('widget-' + widgetIdBase + '-.*-' + fieldName.replace(/\]\[/g, '-') + '[-\d]*');
|
27 |
+
for (var initId in tinyMCEPreInit.mceInit) {
|
28 |
+
if (initId.match(idPattern)) {
|
29 |
+
mceSettings = $.extend({}, tinyMCEPreInit.mceInit[initId], mceSettings);
|
30 |
+
}
|
31 |
+
}
|
32 |
+
var content;
|
33 |
+
var curEd = tinymce.get(id);
|
34 |
+
if (curEd != null) {
|
35 |
+
content = curEd.getContent();
|
36 |
+
curEd.remove();
|
37 |
+
}
|
38 |
+
var setupEditor = function (editor) {
|
39 |
+
editor.on('change',
|
40 |
+
function () {
|
41 |
+
tinymce.get(id).save();
|
42 |
+
$textarea.trigger('change');
|
43 |
+
$textarea.val(window.switchEditors.pre_wpautop(editor.getContent()));
|
44 |
+
}
|
45 |
+
);
|
46 |
+
editor.on('init',
|
47 |
+
function () {
|
48 |
+
if (content) {
|
49 |
+
editor.setContent(content);
|
50 |
+
}
|
51 |
+
}
|
52 |
+
);
|
53 |
+
$textarea.on('keyup',
|
54 |
+
function () {
|
55 |
+
editor.setContent(window.switchEditors.wpautop($textarea.val()));
|
56 |
+
}
|
57 |
+
);
|
58 |
+
};
|
59 |
+
mceSettings = $.extend({}, mceSettings, {selector: '#' + id, setup: setupEditor});
|
60 |
+
tinyMCEPreInit.mceInit[id] = mceSettings;
|
61 |
+
var wrapDiv = $container.find('div#wp-' + id + '-wrap');
|
62 |
+
if (wrapDiv.hasClass('tmce-active')) {
|
63 |
+
// Add a small timeout to make sure everything is ready - mainly for customizer and widgets interface
|
64 |
+
if ($('#' + id).is(':visible')) {
|
65 |
+
tinymce.init(tinyMCEPreInit.mceInit[id]);
|
66 |
+
}
|
67 |
+
else {
|
68 |
+
var intervalId = setInterval(function () {
|
69 |
+
if ($('#' + id).is(':visible')) {
|
70 |
+
tinymce.init(tinyMCEPreInit.mceInit[id]);
|
71 |
+
clearInterval(intervalId);
|
72 |
+
}
|
73 |
+
}, 500);
|
74 |
+
}
|
75 |
+
}
|
76 |
+
}
|
77 |
+
var qtSettings = $container.data('qtSettings');
|
78 |
+
qtSettings = $.extend({}, tinyMCEPreInit.qtInit['siteorigin-widget-input-tinymce-field'], qtSettings, {id: id});
|
79 |
+
tinyMCEPreInit.qtInit[id] = qtSettings;
|
80 |
+
$container.find('.quicktags-toolbar').remove();
|
81 |
+
quicktags(tinyMCEPreInit.qtInit[id]);
|
82 |
+
|
83 |
+
$(this).on( 'click', function(event) {
|
84 |
+
|
85 |
+
var $target = $(event.target);
|
86 |
+
if ( $target.hasClass( 'wp-switch-editor' ) ) {
|
87 |
+
mode = $target.hasClass( 'switch-tmce' ) ? 'tmce' : 'html';
|
88 |
+
$(this).find('+ .siteorigin-widget-tinymce-selected-editor').val(mode);
|
89 |
+
}
|
90 |
+
});
|
91 |
+
});
|
92 |
+
QTags._buttonsInit();
|
93 |
+
}
|
94 |
+
else {
|
95 |
+
setTimeout(function(){
|
96 |
+
setup(widgetForm);
|
97 |
+
}, 500);
|
98 |
+
}
|
99 |
+
};
|
100 |
+
|
101 |
+
$(document).on( 'sowsetupform', function(e) {
|
102 |
+
var $f = $(e.target);
|
103 |
+
|
104 |
+
if($f.is('.siteorigin-widget-field-repeater-item-form')){
|
105 |
+
if($f.is(':visible')) {
|
106 |
+
setup( $f );
|
107 |
+
}
|
108 |
+
else {
|
109 |
+
$f.on('slideToggleOpenComplete', function onSlideToggleComplete() {
|
110 |
+
if( $f.is(':visible') ){
|
111 |
+
setup($f);
|
112 |
+
$f.off('slideToggleOpenComplete');
|
113 |
+
}
|
114 |
+
});
|
115 |
+
}
|
116 |
+
}
|
117 |
+
else {
|
118 |
+
setup($f);
|
119 |
+
}
|
120 |
+
});
|
121 |
+
$(document).on('sortstop', function (event, ui) {
|
122 |
+
if(ui.item.is('.siteorigin-widget-field-repeater-item')) {
|
123 |
+
ui.item.find('> .siteorigin-widget-field-repeater-item-form').each(function(){
|
124 |
+
setup( $(this) );
|
125 |
+
});
|
126 |
+
}
|
127 |
+
else {
|
128 |
+
setup(ui.item.find('.siteorigin-widget-form'));
|
129 |
+
}
|
130 |
+
});
|
131 |
+
|
132 |
+
})( jQuery );
|
base/inc/fields/js/tinymce-field.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(e){var t=function(i){"undefined"!=typeof tinyMCEPreInit?(tinyMCEPreInit.mceInit.hasOwnProperty("undefined")&&delete tinyMCEPreInit.mceInit.undefined,tinyMCEPreInit.qtInit.hasOwnProperty("undefined")&&delete tinyMCEPreInit.qtInit.undefined,QTags.instances.hasOwnProperty("undefined")&&delete QTags.instances.undefined,e(i).find("> .siteorigin-widget-field-type-tinymce > .siteorigin-widget-tinymce-container").each(function(t,i){var n=e(i),r=n.find("textarea"),o=r.attr("id");if("undefined"!=typeof tinymce){if(o.indexOf("__i__")>-1)return;var d=n.data("mceSettings"),s=n.data("widgetIdBase"),a=r.attr("name").replace(/\[\d+\]/g,""),c=/[a-zA-Z0-9\-]+(?:\[[a-zA-Z0-9]+\])?\[(.*)\]/.exec(a)[1],f=new RegExp("widget-"+s+"-.*-"+c.replace(/\]\[/g,"-")+"[-d]*");for(var g in tinyMCEPreInit.mceInit)g.match(f)&&(d=e.extend({},tinyMCEPreInit.mceInit[g],d));var m,l=tinymce.get(o);null!=l&&(m=l.getContent(),l.remove());var u=function(e){e.on("change",function(){tinymce.get(o).save(),r.trigger("change"),r.val(window.switchEditors.pre_wpautop(e.getContent()))}),e.on("init",function(){m&&e.setContent(m)}),r.on("keyup",function(){e.setContent(window.switchEditors.wpautop(r.val()))})};d=e.extend({},d,{selector:"#"+o,setup:u}),tinyMCEPreInit.mceInit[o]=d;var y=n.find("div#wp-"+o+"-wrap");if(y.hasClass("tmce-active"))if(e("#"+o).is(":visible"))tinymce.init(tinyMCEPreInit.mceInit[o]);else var p=setInterval(function(){e("#"+o).is(":visible")&&(tinymce.init(tinyMCEPreInit.mceInit[o]),clearInterval(p))},500)}var I=n.data("qtSettings");I=e.extend({},tinyMCEPreInit.qtInit["siteorigin-widget-input-tinymce-field"],I,{id:o}),tinyMCEPreInit.qtInit[o]=I,n.find(".quicktags-toolbar").remove(),quicktags(tinyMCEPreInit.qtInit[o]),e(this).on("click",function(t){var i=e(t.target);i.hasClass("wp-switch-editor")&&(mode=i.hasClass("switch-tmce")?"tmce":"html",e(this).find("+ .siteorigin-widget-tinymce-selected-editor").val(mode))})}),QTags._buttonsInit()):setTimeout(function(){t(i)},500)};e(document).on("sowsetupform",function(i){var n=e(i.target);n.is(".siteorigin-widget-field-repeater-item-form")?n.is(":visible")?t(n):n.on("slideToggleOpenComplete",function(){n.is(":visible")&&(t(n),n.off("slideToggleOpenComplete"))}):t(n)}),e(document).on("sortstop",function(i,n){n.item.is(".siteorigin-widget-field-repeater-item")?n.item.find("> .siteorigin-widget-field-repeater-item-form").each(function(){t(e(this))}):t(n.item.find(".siteorigin-widget-form"))})}(jQuery);
|
base/inc/fields/measurement.class.php
CHANGED
@@ -47,7 +47,7 @@ class SiteOrigin_Widget_Field_Measurement extends SiteOrigin_Widget_Field_Text_I
|
|
47 |
}
|
48 |
}
|
49 |
?>
|
50 |
-
<select class="sow-measurement-select-unit"
|
51 |
name="<?php echo esc_attr( $this->for_widget->so_get_field_name( $this->base_name . '_unit', $this->parent_container ) ) ?>">
|
52 |
<?php foreach ( siteorigin_widgets_get_measurements_list() as $measurement ):?>
|
53 |
<option value="<?php echo esc_attr( $measurement ) ?>" <?php selected( $measurement, $unit, true ); ?>><?php echo esc_html( $measurement ) ?></option>
|
@@ -60,7 +60,7 @@ class SiteOrigin_Widget_Field_Measurement extends SiteOrigin_Widget_Field_Text_I
|
|
60 |
}
|
61 |
|
62 |
public function enqueue_scripts() {
|
63 |
-
wp_enqueue_style( 'so-measurement-field', plugin_dir_url(__FILE__) . 'css/
|
64 |
}
|
65 |
|
66 |
// This is doing sanitization and is being used to concatenate the numeric measurement value and the selected
|
47 |
}
|
48 |
}
|
49 |
?>
|
50 |
+
<select class="sow-measurement-select-unit siteorigin-widget-input"
|
51 |
name="<?php echo esc_attr( $this->for_widget->so_get_field_name( $this->base_name . '_unit', $this->parent_container ) ) ?>">
|
52 |
<?php foreach ( siteorigin_widgets_get_measurements_list() as $measurement ):?>
|
53 |
<option value="<?php echo esc_attr( $measurement ) ?>" <?php selected( $measurement, $unit, true ); ?>><?php echo esc_html( $measurement ) ?></option>
|
60 |
}
|
61 |
|
62 |
public function enqueue_scripts() {
|
63 |
+
wp_enqueue_style( 'so-measurement-field', plugin_dir_url(__FILE__) . 'css/measurement-field.css', array(), SOW_BUNDLE_VERSION );
|
64 |
}
|
65 |
|
66 |
// This is doing sanitization and is being used to concatenate the numeric measurement value and the selected
|
base/inc/fields/siteorigin-widget-field-class-loader.class.php
CHANGED
@@ -12,8 +12,9 @@ class SiteOrigin_Widget_Field_Class_Loader {
|
|
12 |
|
13 |
function __construct(){
|
14 |
// Setup the loader with default prefixes and paths
|
15 |
-
$this->add_class_prefixes( array( 'SiteOrigin_Widget_Field_' ) );
|
16 |
-
$this->add_class_paths( array( plugin_dir_path( __FILE__ ) ) );
|
|
|
17 |
spl_autoload_register( array( $this, 'load_field_class' ) );
|
18 |
}
|
19 |
|
@@ -29,21 +30,35 @@ class SiteOrigin_Widget_Field_Class_Loader {
|
|
29 |
/**
|
30 |
* Regsiter class prefixes to watch for in this loader
|
31 |
*
|
32 |
-
* @param $class_prefixes
|
|
|
33 |
*/
|
34 |
-
public function add_class_prefixes( $class_prefixes ) {
|
35 |
if( !isset( $this->class_prefixes ) ) $this->class_prefixes = array();
|
36 |
-
$this->class_prefixes
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
}
|
38 |
|
39 |
/**
|
40 |
* Register paths where we'll look for these classes.
|
41 |
*
|
42 |
-
* @param $class_paths
|
|
|
43 |
*/
|
44 |
-
public function add_class_paths( $class_paths ) {
|
45 |
if( !isset( $this->class_paths ) ) $this->class_paths = array();
|
46 |
-
$this->class_paths
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
}
|
48 |
|
49 |
/**
|
@@ -54,18 +69,26 @@ class SiteOrigin_Widget_Field_Class_Loader {
|
|
54 |
public function load_field_class( $field_classname ) {
|
55 |
$valid_classname = false;
|
56 |
$class_prefix = '';
|
57 |
-
|
58 |
-
|
59 |
-
|
|
|
|
|
|
|
|
|
|
|
60 |
}
|
61 |
if ( ! $valid_classname ) return;
|
62 |
|
63 |
$filename = strtolower( str_replace( '_', '-', str_replace( $class_prefix, '', $field_classname ) ) );
|
64 |
|
65 |
-
|
|
|
|
|
66 |
$filepath = $class_path . $filename . '.class.php';
|
67 |
if ( file_exists( $filepath ) ) {
|
68 |
require_once $filepath;
|
|
|
69 |
}
|
70 |
}
|
71 |
}
|
@@ -74,11 +97,15 @@ class SiteOrigin_Widget_Field_Class_Loader {
|
|
74 |
* Initialize and register the class field loader
|
75 |
*/
|
76 |
public function extend(){
|
77 |
-
$
|
78 |
-
|
|
|
|
|
79 |
|
80 |
-
$
|
81 |
-
|
|
|
|
|
82 |
}
|
83 |
}
|
84 |
|
12 |
|
13 |
function __construct(){
|
14 |
// Setup the loader with default prefixes and paths
|
15 |
+
$this->add_class_prefixes( array( 'SiteOrigin_Widget_Field_' ), 'base' );
|
16 |
+
$this->add_class_paths( array( plugin_dir_path( __FILE__ ) ), 'base' );
|
17 |
+
|
18 |
spl_autoload_register( array( $this, 'load_field_class' ) );
|
19 |
}
|
20 |
|
30 |
/**
|
31 |
* Regsiter class prefixes to watch for in this loader
|
32 |
*
|
33 |
+
* @param string|array $class_prefixes
|
34 |
+
* @param string $group
|
35 |
*/
|
36 |
+
public function add_class_prefixes( $class_prefixes, $group = 'base' ) {
|
37 |
if( !isset( $this->class_prefixes ) ) $this->class_prefixes = array();
|
38 |
+
if( !isset( $this->class_prefixes[$group] ) ) $this->class_prefixes[$group] = array();
|
39 |
+
|
40 |
+
$this->class_prefixes[$group] = array_merge(
|
41 |
+
$this->class_prefixes[$group],
|
42 |
+
$class_prefixes
|
43 |
+
);
|
44 |
+
$this->class_prefixes[$group] = array_unique( $this->class_prefixes[$group] );
|
45 |
}
|
46 |
|
47 |
/**
|
48 |
* Register paths where we'll look for these classes.
|
49 |
*
|
50 |
+
* @param string|array $class_paths
|
51 |
+
* @param string $group
|
52 |
*/
|
53 |
+
public function add_class_paths( $class_paths, $group = 'base' ) {
|
54 |
if( !isset( $this->class_paths ) ) $this->class_paths = array();
|
55 |
+
if( !isset( $this->class_paths[$group] ) ) $this->class_paths[$group] = array();
|
56 |
+
|
57 |
+
$this->class_paths[$group] = array_merge(
|
58 |
+
$this->class_paths[$group],
|
59 |
+
$class_paths
|
60 |
+
);
|
61 |
+
$this->class_paths[$group] = array_unique( $this->class_paths[$group] );
|
62 |
}
|
63 |
|
64 |
/**
|
69 |
public function load_field_class( $field_classname ) {
|
70 |
$valid_classname = false;
|
71 |
$class_prefix = '';
|
72 |
+
$class_group = '';
|
73 |
+
foreach ( $this->class_prefixes as $class_group => $class_prefixes ) {
|
74 |
+
foreach( $class_prefixes as $class_prefix ) {
|
75 |
+
$valid_classname = strpos( $field_classname, $class_prefix ) !== false;
|
76 |
+
if( $valid_classname ) {
|
77 |
+
break 2;
|
78 |
+
}
|
79 |
+
}
|
80 |
}
|
81 |
if ( ! $valid_classname ) return;
|
82 |
|
83 |
$filename = strtolower( str_replace( '_', '-', str_replace( $class_prefix, '', $field_classname ) ) );
|
84 |
|
85 |
+
if( empty( $this->class_paths[$class_group] ) ) return;
|
86 |
+
|
87 |
+
foreach( $this->class_paths[$class_group] as $class_path ) {
|
88 |
$filepath = $class_path . $filename . '.class.php';
|
89 |
if ( file_exists( $filepath ) ) {
|
90 |
require_once $filepath;
|
91 |
+
continue;
|
92 |
}
|
93 |
}
|
94 |
}
|
97 |
* Initialize and register the class field loader
|
98 |
*/
|
99 |
public function extend(){
|
100 |
+
$this->add_class_prefixes(
|
101 |
+
apply_filters( 'siteorigin_widgets_field_class_prefixes', array() ),
|
102 |
+
'base'
|
103 |
+
);
|
104 |
|
105 |
+
$this->add_class_paths(
|
106 |
+
apply_filters( 'siteorigin_widgets_field_class_paths', array() ),
|
107 |
+
'base'
|
108 |
+
);
|
109 |
}
|
110 |
}
|
111 |
|
base/inc/fields/tinymce.class.php
CHANGED
@@ -209,8 +209,8 @@ class SiteOrigin_Widget_Field_TinyMCE extends SiteOrigin_Widget_Field_Text_Input
|
|
209 |
}
|
210 |
|
211 |
public function enqueue_scripts() {
|
212 |
-
wp_enqueue_script( 'so-tinymce-field', plugin_dir_url(__FILE__) . 'js/
|
213 |
-
wp_enqueue_style( 'so-tinymce-field', plugin_dir_url(__FILE__) . 'css/
|
214 |
}
|
215 |
|
216 |
protected function sanitize_field_input( $value, $instance ) {
|
209 |
}
|
210 |
|
211 |
public function enqueue_scripts() {
|
212 |
+
wp_enqueue_script( 'so-tinymce-field', plugin_dir_url(__FILE__) . 'js/tinymce-field' . SOW_BUNDLE_JS_SUFFIX . '.js', array( 'jquery', 'editor', 'quicktags' ), SOW_BUNDLE_VERSION );
|
213 |
+
wp_enqueue_style( 'so-tinymce-field', plugin_dir_url(__FILE__) . 'css/tinymce-field.css', array(), SOW_BUNDLE_VERSION );
|
214 |
}
|
215 |
|
216 |
protected function sanitize_field_input( $value, $instance ) {
|
base/inc/meta-box-manager.php
CHANGED
@@ -90,7 +90,7 @@ class SiteOrigin_Widget_Meta_Box_Manager extends SiteOrigin_Widget {
|
|
90 |
*/
|
91 |
public function render_widgets_meta_box( $post ) {
|
92 |
wp_enqueue_script(
|
93 |
-
'sow-meta-box-manager
|
94 |
plugin_dir_url(SOW_BUNDLE_BASE_FILE).'base/js/meta-box-manager' . SOW_BUNDLE_JS_SUFFIX . '.js',
|
95 |
array( 'jquery' ),
|
96 |
SOW_BUNDLE_VERSION,
|
90 |
*/
|
91 |
public function render_widgets_meta_box( $post ) {
|
92 |
wp_enqueue_script(
|
93 |
+
'sow-meta-box-manager',
|
94 |
plugin_dir_url(SOW_BUNDLE_BASE_FILE).'base/js/meta-box-manager' . SOW_BUNDLE_JS_SUFFIX . '.js',
|
95 |
array( 'jquery' ),
|
96 |
SOW_BUNDLE_VERSION,
|
base/inc/post-selector.php
CHANGED
@@ -39,10 +39,14 @@ function siteorigin_widget_post_selector_process_query($query){
|
|
39 |
)
|
40 |
);
|
41 |
|
42 |
-
if(!empty($query['post_type'])) {
|
43 |
if($query['post_type'] == '_all') $query['post_type'] = siteorigin_widget_post_selector_all_post_types();
|
44 |
-
$query['post_type'] = explode(',', $query['post_type']);
|
45 |
}
|
|
|
|
|
|
|
|
|
46 |
|
47 |
if(!empty($query['post__in'])) {
|
48 |
$query['post__in'] = explode(',', $query['post__in']);
|
@@ -91,8 +95,7 @@ function siteorigin_widget_post_selector_process_query($query){
|
|
91 |
}
|
92 |
|
93 |
if ( ! empty( $query['additional'] ) ) {
|
94 |
-
$
|
95 |
-
$query = wp_parse_args( $additional, $query );
|
96 |
unset( $query['additional'] );
|
97 |
}
|
98 |
|
@@ -215,15 +218,7 @@ function siteorigin_widget_post_selector_all_post_types(){
|
|
215 |
* @return int
|
216 |
*/
|
217 |
function siteorigin_widget_post_selector_count_posts($query){
|
218 |
-
|
219 |
-
|
220 |
-
$query = wp_parse_args(
|
221 |
-
siteorigin_widget_post_selector_process_query($query),
|
222 |
-
array(
|
223 |
-
'post_status' => 'publish',
|
224 |
-
'posts_per_page' => 10,
|
225 |
-
)
|
226 |
-
);
|
227 |
$posts = new WP_Query($query);
|
228 |
return $posts->found_posts;
|
229 |
}
|
@@ -233,14 +228,8 @@ function siteorigin_widget_post_selector_count_posts($query){
|
|
233 |
*/
|
234 |
function siteorigin_widget_post_selector_get_posts_action(){
|
235 |
if ( empty( $_REQUEST['_widgets_nonce'] ) || !wp_verify_nonce( $_REQUEST['_widgets_nonce'], 'widgets_action' ) ) return;
|
236 |
-
|
237 |
-
$query =
|
238 |
-
siteorigin_widget_post_selector_process_query($query),
|
239 |
-
array(
|
240 |
-
'post_status' => 'publish',
|
241 |
-
'posts_per_page' => 10,
|
242 |
-
)
|
243 |
-
);
|
244 |
|
245 |
if(!empty($_POST['ignore_pagination'])) {
|
246 |
$query['posts_per_page'] = 100;
|
@@ -284,8 +273,6 @@ function siteorigin_widget_post_selector_post_search_action(){
|
|
284 |
$results = array();
|
285 |
$r = new WP_Query( array('s' => $term, 'post_status' => 'publish', 'posts_per_page' => 20, 'post_type' => $type) );
|
286 |
foreach($r->posts as $post) {
|
287 |
-
// $thumbnail = wp_get_attachment_image_src($post->ID);
|
288 |
-
|
289 |
$results[] = array(
|
290 |
'label' => $post->post_title,
|
291 |
'value' => $post->ID,
|
39 |
)
|
40 |
);
|
41 |
|
42 |
+
if( !empty( $query['post_type'] ) ) {
|
43 |
if($query['post_type'] == '_all') $query['post_type'] = siteorigin_widget_post_selector_all_post_types();
|
44 |
+
$query['post_type'] = strpos( $query['post_type'], ',' ) !== false ? explode( ',', $query['post_type'] ) : $query['post_type'];
|
45 |
}
|
46 |
+
if( $query['post_type'] == 'attachment' && $query['post_status'] == 'publish' ) {
|
47 |
+
$query['post_status'] = 'inherit';
|
48 |
+
}
|
49 |
+
|
50 |
|
51 |
if(!empty($query['post__in'])) {
|
52 |
$query['post__in'] = explode(',', $query['post__in']);
|
95 |
}
|
96 |
|
97 |
if ( ! empty( $query['additional'] ) ) {
|
98 |
+
$query = wp_parse_args( $query['additional'], $query );
|
|
|
99 |
unset( $query['additional'] );
|
100 |
}
|
101 |
|
218 |
* @return int
|
219 |
*/
|
220 |
function siteorigin_widget_post_selector_count_posts($query){
|
221 |
+
$query = siteorigin_widget_post_selector_process_query( $query );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
$posts = new WP_Query($query);
|
223 |
return $posts->found_posts;
|
224 |
}
|
228 |
*/
|
229 |
function siteorigin_widget_post_selector_get_posts_action(){
|
230 |
if ( empty( $_REQUEST['_widgets_nonce'] ) || !wp_verify_nonce( $_REQUEST['_widgets_nonce'], 'widgets_action' ) ) return;
|
231 |
+
|
232 |
+
$query = siteorigin_widget_post_selector_process_query( stripslashes( $_POST['query'] ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
233 |
|
234 |
if(!empty($_POST['ignore_pagination'])) {
|
235 |
$query['posts_per_page'] = 100;
|
273 |
$results = array();
|
274 |
$r = new WP_Query( array('s' => $term, 'post_status' => 'publish', 'posts_per_page' => 20, 'post_type' => $type) );
|
275 |
foreach($r->posts as $post) {
|
|
|
|
|
276 |
$results[] = array(
|
277 |
'label' => $post->post_title,
|
278 |
'value' => $post->ID,
|
base/inc/widget-manager.class.php
CHANGED
@@ -1,5 +1,10 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
|
|
|
|
|
|
3 |
class SiteOrigin_Widgets_Widget_Manager {
|
4 |
/**
|
5 |
* Regsitered widgets
|
@@ -22,7 +27,7 @@ class SiteOrigin_Widgets_Widget_Manager {
|
|
22 |
static $single;
|
23 |
|
24 |
if( empty($single) ) {
|
25 |
-
$single = new
|
26 |
}
|
27 |
|
28 |
return $single;
|
@@ -32,6 +37,7 @@ class SiteOrigin_Widgets_Widget_Manager {
|
|
32 |
* @param $id
|
33 |
* @param $path
|
34 |
* @param bool|false $class
|
|
|
35 |
*/
|
36 |
public function register( $id, $path, $class = false ){
|
37 |
$path = realpath( $path );
|
@@ -131,4 +137,4 @@ function siteorigin_widget_get_plugin_dir_path($id){
|
|
131 |
*/
|
132 |
function siteorigin_widget_get_plugin_dir_url($id){
|
133 |
return SiteOrigin_Widgets_Widget_Manager::single()->get_plugin_dir_url($id);
|
134 |
-
}
|
1 |
<?php
|
2 |
|
3 |
+
/**
|
4 |
+
* Handles registering Widgets Bundle widgets.
|
5 |
+
*
|
6 |
+
* Class SiteOrigin_Widgets_Widget_Manager
|
7 |
+
*/
|
8 |
class SiteOrigin_Widgets_Widget_Manager {
|
9 |
/**
|
10 |
* Regsitered widgets
|
27 |
static $single;
|
28 |
|
29 |
if( empty($single) ) {
|
30 |
+
$single = new self();
|
31 |
}
|
32 |
|
33 |
return $single;
|
37 |
* @param $id
|
38 |
* @param $path
|
39 |
* @param bool|false $class
|
40 |
+
* @return mixed
|
41 |
*/
|
42 |
public function register( $id, $path, $class = false ){
|
43 |
$path = realpath( $path );
|
137 |
*/
|
138 |
function siteorigin_widget_get_plugin_dir_url($id){
|
139 |
return SiteOrigin_Widgets_Widget_Manager::single()->get_plugin_dir_url($id);
|
140 |
+
}
|
base/inc/widgets/base-slider.class.php
CHANGED
@@ -90,6 +90,13 @@ abstract class SiteOrigin_Widget_Base_Slider extends SiteOrigin_Widget {
|
|
90 |
'label' => __('Navigation size', 'so-widgets-bundle'),
|
91 |
'default' => '25',
|
92 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
);
|
94 |
}
|
95 |
|
@@ -132,6 +139,7 @@ abstract class SiteOrigin_Widget_Base_Slider extends SiteOrigin_Widget {
|
|
132 |
'pagination' => true,
|
133 |
'speed' => $controls['speed'],
|
134 |
'timeout' => $controls['timeout'],
|
|
|
135 |
);
|
136 |
}
|
137 |
|
@@ -205,10 +213,11 @@ abstract class SiteOrigin_Widget_Base_Slider extends SiteOrigin_Widget {
|
|
205 |
* @param $frame
|
206 |
*/
|
207 |
function render_frame( $i, $frame ){
|
208 |
-
$background = $this->get_frame_background( $i, $frame )
|
209 |
-
$background = wp_parse_args($background, array(
|
210 |
'color' => false,
|
211 |
'image' => false,
|
|
|
|
|
212 |
'opacity' => 1,
|
213 |
'url' => false,
|
214 |
'new_window' => false,
|
@@ -217,33 +226,41 @@ abstract class SiteOrigin_Widget_Base_Slider extends SiteOrigin_Widget {
|
|
217 |
'videos-sizing' => 'background', // options for video sizing are background or full
|
218 |
) );
|
219 |
|
220 |
-
$
|
221 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
|
223 |
if( $background['opacity'] >= 1 ) {
|
224 |
-
if( !empty($background['image']) )
|
|
|
|
|
225 |
}
|
226 |
|
227 |
if( ! empty( $background['url'] ) ) {
|
228 |
-
$
|
229 |
}
|
230 |
|
231 |
-
$wrapper_attributes = array(
|
232 |
-
'class' => 'sow-slider-image'
|
233 |
-
);
|
234 |
-
|
235 |
if( !empty($background['image']) && !empty($background['image-sizing']) ) {
|
236 |
-
$wrapper_attributes['class']
|
237 |
}
|
238 |
if( !empty( $background['url'] ) ) {
|
239 |
-
$wrapper_attributes['data-url'] = json_encode(array(
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
}
|
|
|
|
|
|
|
|
|
244 |
|
245 |
?>
|
246 |
-
<li <?php foreach( $wrapper_attributes as $attr => $val ) echo $attr . '="' . esc_attr( $val ) . '" ';
|
247 |
<?php
|
248 |
$this->render_frame_contents( $i, $frame );
|
249 |
if( !empty( $background['videos'] ) ) {
|
@@ -251,7 +268,19 @@ abstract class SiteOrigin_Widget_Base_Slider extends SiteOrigin_Widget {
|
|
251 |
}
|
252 |
|
253 |
if( $background['opacity'] < 1 && !empty($background['image']) ) {
|
254 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
255 |
}
|
256 |
|
257 |
?>
|
90 |
'label' => __('Navigation size', 'so-widgets-bundle'),
|
91 |
'default' => '25',
|
92 |
),
|
93 |
+
|
94 |
+
'swipe' => array(
|
95 |
+
'type' => 'checkbox',
|
96 |
+
'label' => __( 'Swipe Control', 'so-widgets-bundle' ),
|
97 |
+
'description' => __( 'Allow users to swipe through frames on mobile devices.', 'so-widgets-bundle' ),
|
98 |
+
'default' => true,
|
99 |
+
)
|
100 |
);
|
101 |
}
|
102 |
|
139 |
'pagination' => true,
|
140 |
'speed' => $controls['speed'],
|
141 |
'timeout' => $controls['timeout'],
|
142 |
+
'swipe' => $controls['swipe'],
|
143 |
);
|
144 |
}
|
145 |
|
213 |
* @param $frame
|
214 |
*/
|
215 |
function render_frame( $i, $frame ){
|
216 |
+
$background = wp_parse_args( $this->get_frame_background( $i, $frame ), array(
|
|
|
217 |
'color' => false,
|
218 |
'image' => false,
|
219 |
+
'image-width' => 0,
|
220 |
+
'image-height' => 0,
|
221 |
'opacity' => 1,
|
222 |
'url' => false,
|
223 |
'new_window' => false,
|
226 |
'videos-sizing' => 'background', // options for video sizing are background or full
|
227 |
) );
|
228 |
|
229 |
+
$wrapper_attributes = array(
|
230 |
+
'class' => array( 'sow-slider-image' ),
|
231 |
+
'style' => array(),
|
232 |
+
);
|
233 |
+
|
234 |
+
if( !empty($background['color']) ) {
|
235 |
+
$wrapper_attributes['style'][] = 'background-color: ' . esc_attr($background['color']);
|
236 |
+
}
|
237 |
|
238 |
if( $background['opacity'] >= 1 ) {
|
239 |
+
if( !empty($background['image']) ) {
|
240 |
+
$wrapper_attributes['style'][] = 'background-image: url(' . esc_url($background['image']) . ')';
|
241 |
+
}
|
242 |
}
|
243 |
|
244 |
if( ! empty( $background['url'] ) ) {
|
245 |
+
$wrapper_attributes['style'][] = 'cursor: pointer;';
|
246 |
}
|
247 |
|
|
|
|
|
|
|
|
|
248 |
if( !empty($background['image']) && !empty($background['image-sizing']) ) {
|
249 |
+
$wrapper_attributes['class'][] = ' ' . 'sow-slider-image-' . $background['image-sizing'];
|
250 |
}
|
251 |
if( !empty( $background['url'] ) ) {
|
252 |
+
$wrapper_attributes['data-url'] = json_encode( array(
|
253 |
+
'url' => sow_esc_url($background['url']),
|
254 |
+
'new_window' => !empty( $background['new_window'] )
|
255 |
+
) );
|
256 |
}
|
257 |
+
$wrapper_attributes = apply_filters( 'siteorigin_widgets_slider_wrapper_attributes', $wrapper_attributes, $frame, $background );
|
258 |
+
|
259 |
+
$wrapper_attributes['class'] = implode( ' ', $wrapper_attributes['class'] );
|
260 |
+
$wrapper_attributes['style'] = implode( ';', $wrapper_attributes['style'] );
|
261 |
|
262 |
?>
|
263 |
+
<li <?php foreach( $wrapper_attributes as $attr => $val ) echo $attr . '="' . esc_attr( $val ) . '" '; ?>>
|
264 |
<?php
|
265 |
$this->render_frame_contents( $i, $frame );
|
266 |
if( !empty( $background['videos'] ) ) {
|
268 |
}
|
269 |
|
270 |
if( $background['opacity'] < 1 && !empty($background['image']) ) {
|
271 |
+
$overlay_attributes = array(
|
272 |
+
'class' => array( 'sow-slider-image-overlay', 'sow-slider-image-' . $background['image-sizing'] ),
|
273 |
+
'style' => array(
|
274 |
+
'background-image: url(' . $background['image'] . ')',
|
275 |
+
'opacity: ' . floatval( $background['opacity'] ),
|
276 |
+
)
|
277 |
+
);
|
278 |
+
$overlay_attributes = apply_filters( 'siteorigin_widgets_slider_overlay_attributes', $overlay_attributes, $frame, $background );
|
279 |
+
|
280 |
+
$overlay_attributes['class'] = implode( ' ', $overlay_attributes['class'] );
|
281 |
+
$overlay_attributes['style'] = implode( ';', $overlay_attributes['style'] );
|
282 |
+
|
283 |
+
?><div <?php foreach( $overlay_attributes as $attr => $val ) echo $attr . '="' . esc_attr( $val ) . '" '; ?> ></div><?php
|
284 |
}
|
285 |
|
286 |
?>
|
base/js/admin.js
CHANGED
@@ -369,6 +369,13 @@
|
|
369 |
var changeIconFamily = function(){
|
370 |
// Fetch the family icons from the server
|
371 |
var family = $is.find('select.siteorigin-widget-icon-family').val();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
372 |
if(typeof family === 'undefined' || family === '') {
|
373 |
return;
|
374 |
}
|
@@ -487,6 +494,15 @@
|
|
487 |
} );
|
488 |
} );
|
489 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
490 |
///////////////////////////////////////
|
491 |
// Now lets handle the state emitters
|
492 |
|
369 |
var changeIconFamily = function(){
|
370 |
// Fetch the family icons from the server
|
371 |
var family = $is.find('select.siteorigin-widget-icon-family').val();
|
372 |
+
|
373 |
+
var dataIcons = $is.find('select.siteorigin-widget-icon-family option:selected' ).data('icons');
|
374 |
+
if( dataIcons !== null ) {
|
375 |
+
iconWidgetCache[family] = dataIcons;
|
376 |
+
}
|
377 |
+
|
378 |
+
|
379 |
if(typeof family === 'undefined' || family === '') {
|
380 |
return;
|
381 |
}
|
494 |
} );
|
495 |
} );
|
496 |
|
497 |
+
///////////////////////////////////////
|
498 |
+
// Setup the Builder fields
|
499 |
+
if( typeof jQuery.fn.soPanelsSetupBuilderWidget !== 'undefined' ) {
|
500 |
+
$fields.filter( '.siteorigin-widget-field-type-builder' ).each( function(){
|
501 |
+
var $$ = $(this);
|
502 |
+
$$.find('> .siteorigin-page-builder-field' ).soPanelsSetupBuilderWidget();
|
503 |
+
} );
|
504 |
+
}
|
505 |
+
|
506 |
///////////////////////////////////////
|
507 |
// Now lets handle the state emitters
|
508 |
|
base/js/admin.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(e){e.fn.sowSetupForm=function(){return e(this).each(function(i,t){var n,a,r=e(t),s=!0,o=r.find("input[name]");if(o.length&&-1!==o.attr("name").indexOf("__i__"))return this;if(r.is(".siteorigin-widget-form-main")){if(r.data("sow-form-setup")===!0)return!0;if(e("body").hasClass("widgets-php")&&!r.is(":visible")&&0===r.closest(".panel-dialog").length)return!0;r.on("sowstatechange",function(i,t,n){r.find("[data-state-handler]").each(function(){var i=e(this),a=e.extend({},i.data("state-handler"),s?i.data("state-handler-initial"):{});if(0===Object.keys(a).length)return!0;var r,o,d,l,f,c,g={},u=window.sowForms.getRepeaterId(i);if(u!==!1){var p={};for(var w in a)p[w.replace("{$repeater}",u)]=a[w];a=p}for(var w in a)if(f=!1,r=w.match(/^([a-zA-Z0-9_-]+)(\[([a-zA-Z0-9_\-,]+)\])?(\[\])?$/),null!==r){if(o={group:"default",name:"",multi:!1},void 0!==r[2]?(o.group=r[1],o.name=r[3]):o.name=r[0],o.multi=void 0!==r[4],"_else"===o.group)o.group=o.name,o.name="",f=o.group===t&&"undefined"==typeof g[o.group];else{c=o.name.split(",").map(function(e){return e.trim()});for(var m=0;m<c.length&&!(f=o.group===t&&c[m]===n);m++);}if(f){d=a[w],o.multi||(d=[d]);for(var m=0;m<d.length;m++)l="undefined"!=typeof d[m][1]&&Boolean(d[m][1])?i.find(d[m][1]):i,l[d[m][0]].apply(l,"undefined"!=typeof d[m][2]?d[m][2]:[]);g[o.group]=!0}}})}),r.sowSetupPreview(),n=r}else n=r.closest(".siteorigin-widget-form-main");a=n.find("> .siteorigin-widgets-form-id").val();var d=r.find("> .siteorigin-widget-field");d.find("> .siteorigin-widget-section").sowSetupForm(),d.filter(".siteorigin-widget-field-type-widget:not(:has(> .siteorigin-widget-section))").sowSetupForm(),d.find(".siteorigin-widget-input").each(function(i,t){null===e(t).data("original-name")&&e(t).data("original-name",e(t).attr("name"))}),d.find("> .siteorigin-widget-field-repeater").sowSetupRepeater(),r.find(".siteorigin-widget-field-repeater-item").sowSetupRepeaterItems(),d.find("> .siteorigin-widget-input-color").wpColorPicker(),d.find("> .media-field-wrapper").each(function(){var i=e(this),t=i.closest(".siteorigin-widget-field");i.find("a.media-upload-button").click(function(i){if("undefined"!=typeof wp.media){var n=e(this),a=e(this).closest(".siteorigin-widget-field"),r=e(this).data("frame");return r?(r.open(),!1):(r=wp.media({title:n.data("choose"),library:{type:n.data("library").split(",").map(function(e){return e.trim()})},button:{text:n.data("update"),close:!1}}),n.data("frame",r),r.on("select",function(){var e=r.state().get("selection").first().attributes;a.find(".current .title").html(e.title);var i=a.find("input[type=hidden]");i.val(e.id),i.trigger("change"),"undefined"!=typeof e.sizes?"undefined"!=typeof e.sizes.thumbnail?a.find(".current .thumbnail").attr("src",e.sizes.thumbnail.url).fadeIn():a.find(".current .thumbnail").attr("src",e.sizes.full.url).fadeIn():a.find(".current .thumbnail").attr("src",e.icon).fadeIn(),t.find(".media-remove-button").removeClass("remove-hide"),r.close()}),r.open(),!1)}}),i.find(".current").mouseenter(function(){var i=e(this).find(".title");""!==i.html()&&i.fadeIn("fast")}).mouseleave(function(){e(this).find(".title").clearQueue().fadeOut("fast")}),t.find("a.media-remove-button").click(function(i){i.preventDefault(),t.find(".current .title").html(""),t.find("input[type=hidden]").val(""),t.find(".current .thumbnail").fadeOut("fast"),e(this).addClass("remove-hide")})}),d.filter(".siteorigin-widget-field-type-widget, .siteorigin-widget-field-type-section").find("> label").click(function(){e(this);e(this).toggleClass("siteorigin-widget-section-visible"),e(this).siblings(".siteorigin-widget-section").slideToggle(function(){e(window).resize(),e(this).find("> .siteorigin-widget-field-container-state").val(e(this).is(":visible")?"open":"closed")})});var l={};d.filter(".siteorigin-widget-field-type-icon").each(function(){var i=e(this),t=i.find(".siteorigin-widget-icon-selector"),n=t.find(".siteorigin-widget-icon-icon"),a=i.find(".siteorigin-widget-icon-selector-current");a.click(function(){t.slideToggle()});var r=function(){var i=t.find("select.siteorigin-widget-icon-family").val(),r=t.find(".siteorigin-widget-icon-icons");if("undefined"!=typeof l[i]){r.empty(),0===e("#siteorigin-widget-font-"+i).length&&e("<link rel='stylesheet' type='text/css'>").attr("id","siteorigin-widget-font-"+i).attr("href",l[i].style_uri).appendTo("head");for(var s in l[i].icons){var o=e('<div data-sow-icon="'+l[i].icons[s]+'"/>').attr("data-value",i+"-"+s).addClass("sow-icon-"+i).addClass("siteorigin-widget-icon-icons-icon").click(function(){var s=e(this);s.hasClass("siteorigin-widget-active")?(s.removeClass("siteorigin-widget-active"),n.val(""),a.find("span").hide()):(r.find(".siteorigin-widget-icon-icons-icon").removeClass("siteorigin-widget-active"),s.addClass("siteorigin-widget-active"),n.val(s.data("value")),a.find("span").show().attr("data-sow-icon",s.attr("data-sow-icon")).attr("class","").addClass("sow-icon-"+i)),n.trigger("change"),t.slideUp()});r.append(o),n.val()===i+"-"+s&&(a.find("span").show().attr("data-sow-icon",o.attr("data-sow-icon")).attr("class","").addClass("sow-icon-"+i),o.addClass("siteorigin-widget-active"))}r.prepend(r.find(".siteorigin-widget-active"))}},s=function(){var i=t.find("select.siteorigin-widget-icon-family").val();"undefined"!=typeof i&&""!==i&&("undefined"==typeof l[i]?e.getJSON(soWidgets.ajaxurl,{action:"siteorigin_widgets_get_icons",family:t.find("select.siteorigin-widget-icon-family").val()},function(e){l[i]=e,r()}):r())};s(),t.find("select.siteorigin-widget-icon-family").change(function(){t.find(".siteorigin-widget-icon-icons").empty(),s()})}),d.filter(".siteorigin-widget-field-type-slider").each(function(){var i=e(this),t=i.find('input[type="number"]'),n=i.find(".siteorigin-widget-value-slider");n.slider({max:parseInt(t.attr("max")),min:parseInt(t.attr("min")),value:parseInt(t.val()),slide:function(e,n){t.val(parseInt(n.value)),i.find(".siteorigin-widget-slider-value").html(n.value)}})}),d.filter(".siteorigin-widget-field-type-link").each(function(){var i=e(this),t=null,n=function(){null!==t&&t.abort();var n=i.find(".content-text-search").val(),a=i.find("ul.posts").empty().addClass("loading");e.get(soWidgets.ajaxurl,{action:"so_widgets_search_posts",query:n},function(i){for(var t=0;t<i.length;t++)""===i[t].post_title&&(i[t].post_title=" "),a.append(e("<li>").addClass("post").html(i[t].post_title+"<span>("+i[t].post_type+")</span>").data(i[t]));a.removeClass("loading")})};i.find(".select-content-button, .button-close").click(function(t){t.preventDefault(),e(this).blur();var a=i.find(".existing-content-selector");a.toggle(),a.is(":visible")&&0===a.find("ul.posts li").length&&n()}),i.on("click",".posts li",function(t){t.preventDefault();var n=e(this);i.find("input.siteorigin-widget-input").val("post: "+n.data("ID")),i.find(".existing-content-selector").toggle()});var a=null;i.find(".content-text-search").keyup(function(){null!==a&&clearTimeout(a),a=setTimeout(function(){n()},500)})});var f=function(){var i=e(this),t=i.closest("[data-state-emitter]").data("state-emitter");if("undefined"!=typeof t){var a=function(t,n){if("undefined"==typeof sowEmitters[t.callback]||"_"===t.callback.substr(0,1))return n;var a=window.sowForms.getRepeaterId(i);return a!==!1&&(t.args=t.args.map(function(e){return e.replace("{$repeater}",a)})),e.extend(n,sowEmitters[t.callback](i.val(),t.args))},r={"default":""};"undefined"==typeof t.length&&(t=[t]);for(var s=0;s<t.length;s++)r=a(t[s],r);var o=n.data("states");"undefined"==typeof o&&(o={"default":""});for(var d in r)("undefined"==typeof o[d]||r[d]!==o[d])&&(o[d]=r[d],n.trigger("sowstatechange",[d,r[d]]));n.data("states",o)}};d.filter("[data-state-emitter]").each(function(){e(this).find(".siteorigin-widget-input").on("keyup change",f),e(this).find(".siteorigin-widget-input").each(function(){var i=e(this);i.is(":radio")?i.is(":checked")&&f.call(i[0]):f.call(i[0])})}),r.trigger("sowsetupform",d).data("sow-form-setup",!0),r.find(".siteorigin-widget-field-repeater-item").trigger("updateFieldPositions"),s=!1})},e.fn.sowSetupPreview=function(){var i=e(this),t=i.siblings(".siteorigin-widget-preview");t.find("> a").click(function(t){t.preventDefault();var n={};i.find("*[name]").each(function(){var i=e(this),t=/[a-zA-Z0-9\-]+\[[a-zA-Z0-9]+\]\[(.*)\]/.exec(i.attr("name"));if(void 0===t)return!0;t=t[1];var a=t.split("][");a=a.map(function(e){return!isNaN(parseFloat(e))&&isFinite(e)?parseInt(e):e});for(var r=n,s=0;s<a.length;s++)if(s===a.length-1)if("checkbox"===i.attr("type"))i.is(":checked")?r[a[s]]=""!==i.val()?i.val():!0:r[a[s]]=!1;else if("radio"===i.attr("type"))i.is(":checked")&&(r[a[s]]=""!==i.val()?i.val():!0);else if("TEXTAREA"===i.prop("tagName")&&i.hasClass("wp-editor-area")){var o=null;"undefined"!=typeof tinyMCE&&(o=tinyMCE.get(i.attr("id"))),null===o||"function"!=typeof o.getContent||o.isHidden()?r[a[s]]=i.val():r[a[s]]=o.getContent()}else r[a[s]]=i.val();else"undefined"==typeof r[a[s]]&&(r[a[s]]={}),r=r[a[s]]});var a=e(e("#so-widgets-bundle-tpl-preview-dialog").html().trim()).appendTo("body");a.find('input[name="data"]').val(JSON.stringify(n)),a.find('input[name="class"]').val(i.data("class")),a.find("iframe").on("load",function(){e(this).css("visibility","visible")}),a.find("form").submit(),a.find(".close").click(function(){a.remove()})})},e.fn.sowSetupRepeater=function(){return e(this).each(function(i,t){var n=e(t),a=n.find(".siteorigin-widget-field-repeater-items"),r=n.data("repeater-name");a.bind("updateFieldPositions",function(){var i=e(this),t=i.find("> .siteorigin-widget-field-repeater-item");t.each(function(i,t){e(t).find(".siteorigin-widget-input").each(function(t,n){var a=e(n).data("repeater-positions");"undefined"==typeof a&&(a={}),a[r]=i,e(n).data("repeater-positions",a)})}),i.find(".siteorigin-widget-input").each(function(i,t){var n=e(t).data("repeater-positions"),a=e(t);if("undefined"!=typeof n){var r=a.data("original-name");if("undefined"==typeof r&&(a.data("original-name",a.attr("name")),r=a.attr("name")),!r)return;for(var s in n)r=r.replace("#"+s+"#",n[s]);e(t).attr("name",r)}});var a=n.data("scroll-count")?parseInt(n.data("scroll-count")):0;if(a>0&&t.length>a){var s=t.first().outerHeight();i.css("max-height",s*a).css("overflow","auto")}else i.css("max-height","").css("overflow","")}),a.sortable({handle:".siteorigin-widget-field-repeater-item-top",items:"> .siteorigin-widget-field-repeater-item",update:function(){a.trigger("updateFieldPositions")}}),a.trigger("updateFieldPositions"),n.find("> .siteorigin-widget-field-repeater-add").disableSelection().click(function(i){i.preventDefault(),n.closest(".siteorigin-widget-field-repeater").sowAddRepeaterItem().find("> .siteorigin-widget-field-repeater-items").slideDown("fast",function(){e(window).resize()})}),n.find("> .siteorigin-widget-field-repeater-top > .siteorigin-widget-field-repeater-expand").click(function(i){i.preventDefault(),n.closest(".siteorigin-widget-field-repeater").find("> .siteorigin-widget-field-repeateritems-").slideToggle("fast",function(){e(window).resize()})})})},e.fn.sowAddRepeaterItem=function(){return e(this).each(function(i,t){var n=e(t),a=n.find("> .siteorigin-widget-field-repeater-items").children().length+1,r=e("<div>"+n.find("> .siteorigin-widget-field-repeater-item-html").html()+"</div>");r.find("[data-name]").each(function(){var i=e(this);0===i.closest(".siteorigin-widget-field-repeater-item-html").length&&i.attr("name",e(this).data("name"))});var s=r.html().replace(/_id_/g,a),o="undefined"!=typeof n.attr("readonly"),d=e('<div class="siteorigin-widget-field-repeater-item ui-draggable" />').append(e('<div class="siteorigin-widget-field-repeater-item-top" />').append(e('<div class="siteorigin-widget-field-expand" />')).append(o?"":e('<div class="siteorigin-widget-field-copy" />')).append(o?"":e('<div class="siteorigin-widget-field-remove" />')).append(e("<h4 />").html(n.data("item-name")))).append(e('<div class="siteorigin-widget-field-repeater-item-form" />').html(s));n.find("> .siteorigin-widget-field-repeater-items").append(d).sortable("refresh").trigger("updateFieldPositions"),d.sowSetupRepeaterItems(),d.hide().slideDown("fast",function(){e(window).resize()})})},e.fn.sowRemoveRepeaterItem=function(){return e(this).each(function(i,t){var n=e(this).closest(".siteorigin-widget-field-repeater-items");e(this).remove(),n.sortable("refresh").trigger("updateFieldPositions")})},e.fn.sowSetupRepeaterItems=function(){return e(this).each(function(i,t){var n=e(t);if("undefined"==typeof n.data("sowrepeater-actions-setup")){var a=n.closest(".siteorigin-widget-field-repeater"),r=n.find("> .siteorigin-widget-field-repeater-item-top"),s=a.data("item-label");if(s&&s.selector){var o=function(){var e=s.hasOwnProperty("valueMethod")&&s.valueMethod?s.valueMethod:"val",i=n.find(s.selector)[e]();i&&(i.length>80&&(i=i.substr(0,79)+"..."),r.find("h4").text(i))};o();var d=s.hasOwnProperty("updateEvent")&&s.updateEvent?s.updateEvent:"change";n.bind(d,o)}r.click(function(i){"siteorigin-widget-field-remove"!==i.target.className&&"siteorigin-widget-field-copy"!==i.target.className&&(i.preventDefault(),e(this).closest(".siteorigin-widget-field-repeater-item").find(".siteorigin-widget-field-repeater-item-form").eq(0).slideToggle("fast",function(){e(window).resize(),e(this).is(":visible")?e(this).trigger("slideToggleOpenComplete"):e(this).trigger("slideToggleCloseComplete")}))}),r.find(".siteorigin-widget-field-remove").click(function(i){if(i.preventDefault(),confirm(soWidgets.sure)){var t=e(this).closest(".siteorigin-widget-field-repeater-items");e(this).closest(".siteorigin-widget-field-repeater-item").slideUp("fast",function(){e(this).remove(),t.sortable("refresh").trigger("updateFieldPositions"),e(window).resize()})}}),r.find(".siteorigin-widget-field-copy").click(function(i){i.preventDefault();var t=e(this).closest(".siteorigin-widget-form-main"),a=e(this).closest(".siteorigin-widget-field-repeater-item"),r=a.clone(),s=a.closest(".siteorigin-widget-field-repeater-items"),o=s.children().length,d={};r.find("*[name]").each(function(){var i=e(this),s=i.attr("id"),l=i.attr("name");if(i.is("textarea")&&i.parent().is(".wp-editor-container")&&"undefined"!=typeof tinymce){i.parent().empty().append(i),i.css("display","");var f=tinymce.get(s);f&&i.val(f.getContent())}else if(i.is(".wp-color-picker")){var c=i.closest(".wp-picker-container"),g=i.closest(".siteorigin-widget-field");c.remove(),g.append(i.remove())}else{var u=a.find('[name="'+l+'"]');u.length&&null!=u.val()&&i.val(u.val())}if(s){var p=s.replace(/-\d+$/,"");d[p]||(d[p]=t.find(".siteorigin-widget-input[id^="+p+"]").not("[id*=_id_]").length+1);var w=p+"-"+d[p]++;i.attr("id",w),r.find("label[for="+s+"]").attr("for",w),r.find("[id*="+s+"]").each(function(){var i=e(this).attr("id"),t=i.replace(s,w);e(this).attr("id",t)}),"undefined"!=typeof tinymce&&tinymce.get(w)&&tinymce.get(w).remove()}var m=a.parents(".siteorigin-widget-field-repeater").length,v=e("body");(v.hasClass("wp-customizer")||v.hasClass("widgets-php"))&&0==n.closest(".panel-dialog").length&&(m+=1);var h=l.replace(new RegExp("((?:.*?\\[\\d+\\]){"+(m-1).toString()+"})?(.*?\\[)\\d+(\\])"),"$1$2"+o.toString()+"$3");i.attr("name",h),i.data("original-name",h)}),s.append(r).sortable("refresh").trigger("updateFieldPositions"),r.sowSetupRepeaterItems(),r.hide().slideDown("fast",function(){e(window).resize()})}),n.find("> .siteorigin-widget-field-repeater-item-form").sowSetupForm(),n.data("sowrepeater-actions-setup",!0)}})};var i={getRepeaterId:function(e){"undefined"==typeof this.id&&(this.id=1);var i=e.closest(".siteorigin-widget-field-repeater-item");if(i.length){var t=i.data("item-id");return void 0===t&&(t=this.id++),i.data("item-id",t),t}return!1},getWidgetFieldVariable:function(e,i,t){var n=window.sow_field_javascript_variables[e];i=i.replace(/\[#.*?#\]/g,"");for(var a=/[a-zA-Z0-9\-]+(?:\[c?[0-9]+\])?\[(.*)\]/.exec(i)[1],r=a.split("]["),s=r.length?n:null;r.length;)s=s[r.shift()];return s[t]},fetchWidgetVariable:function(i,t,n){window.sowVars=window.sowVars||{},"undefined"==typeof window.sowVars[t]?e.post(soWidgets.ajaxurl,{action:"sow_get_javascript_variables",widget:t,key:i},function(e){window.sowVars[t]=e,n(window.sowVars[t][i])}):n(window.sowVars[t][i])}};window.sowForms=i,e(".widgets-holder-wrap").on("click",".widget:has(.siteorigin-widget-form-main) .widget-top",function(){var i=e(this).closest(".widget").find(".siteorigin-widget-form-main");setTimeout(function(){i.sowSetupForm()},200)}),e("body").hasClass("wp-customizer")&&e(document).on("widget-added",function(e,i){i.find(".siteorigin-widget-form").sowSetupForm()}),e(document).on("dialogopen",function(i){e(i.target).find(".siteorigin-widget-form-main").sowSetupForm()}),e(document).trigger("sowadminloaded")}(jQuery);var sowEmitters={_match:function(e,i){"undefined"==typeof i&&(i=".*");var t=new RegExp("^([a-zA-Z0-9_-]+)(\\[([a-zA-Z0-9_-]+)\\])? *: *("+i+") *$"),n=t.exec(e);if(null===n)return!1;var a="",r="default";return void 0!==n[3]?(r=n[1],a=n[3]):a=n[1],{match:n[4].trim(),group:r,state:a}},_checker:function(e,i,t,n){var a={};"undefined"==typeof i.length&&(i=[i]);for(var r,s=0;s<i.length;s++)r=sowEmitters._match(i[s],t),r!==!1&&("_true"===r.match||n(e,i,r.match))&&(a[r.group]=r.state);return a},select:function(e,i){"undefined"==typeof i.length&&(i=[i]);for(var t={},n=0;n<i.length;n++)""===i[n]&&(i[n]="default"),t[i[n]]=e;return t},conditional:function(val,args){return sowEmitters._checker(val,args,"[^;{}]*",function(val,args,match){return eval(match)})},"in":function(e,i){return sowEmitters._checker(e,i,"[^;{}]*",function(e,i,t){return-1!==t.split(",").map(function(e){return e.trim()}).indexOf(e)})}};
|
1 |
+
!function(e){e.fn.sowSetupForm=function(){return e(this).each(function(i,t){var n,a,r=e(t),s=!0,o=r.find("input[name]");if(o.length&&-1!==o.attr("name").indexOf("__i__"))return this;if(r.is(".siteorigin-widget-form-main")){if(r.data("sow-form-setup")===!0)return!0;if(e("body").hasClass("widgets-php")&&!r.is(":visible")&&0===r.closest(".panel-dialog").length)return!0;r.on("sowstatechange",function(i,t,n){r.find("[data-state-handler]").each(function(){var i=e(this),a=e.extend({},i.data("state-handler"),s?i.data("state-handler-initial"):{});if(0===Object.keys(a).length)return!0;var r,o,d,l,f,g,c={},u=window.sowForms.getRepeaterId(i);if(u!==!1){var p={};for(var w in a)p[w.replace("{$repeater}",u)]=a[w];a=p}for(var w in a)if(f=!1,r=w.match(/^([a-zA-Z0-9_-]+)(\[([a-zA-Z0-9_\-,]+)\])?(\[\])?$/),null!==r){if(o={group:"default",name:"",multi:!1},void 0!==r[2]?(o.group=r[1],o.name=r[3]):o.name=r[0],o.multi=void 0!==r[4],"_else"===o.group)o.group=o.name,o.name="",f=o.group===t&&"undefined"==typeof c[o.group];else{g=o.name.split(",").map(function(e){return e.trim()});for(var m=0;m<g.length&&!(f=o.group===t&&g[m]===n);m++);}if(f){d=a[w],o.multi||(d=[d]);for(var m=0;m<d.length;m++)l="undefined"!=typeof d[m][1]&&Boolean(d[m][1])?i.find(d[m][1]):i,l[d[m][0]].apply(l,"undefined"!=typeof d[m][2]?d[m][2]:[]);c[o.group]=!0}}})}),r.sowSetupPreview(),n=r}else n=r.closest(".siteorigin-widget-form-main");a=n.find("> .siteorigin-widgets-form-id").val();var d=r.find("> .siteorigin-widget-field");d.find("> .siteorigin-widget-section").sowSetupForm(),d.filter(".siteorigin-widget-field-type-widget:not(:has(> .siteorigin-widget-section))").sowSetupForm(),d.find(".siteorigin-widget-input").each(function(i,t){null===e(t).data("original-name")&&e(t).data("original-name",e(t).attr("name"))}),d.find("> .siteorigin-widget-field-repeater").sowSetupRepeater(),r.find(".siteorigin-widget-field-repeater-item").sowSetupRepeaterItems(),d.find("> .siteorigin-widget-input-color").wpColorPicker(),d.find("> .media-field-wrapper").each(function(){var i=e(this),t=i.closest(".siteorigin-widget-field");i.find("a.media-upload-button").click(function(i){if("undefined"!=typeof wp.media){var n=e(this),a=e(this).closest(".siteorigin-widget-field"),r=e(this).data("frame");return r?(r.open(),!1):(r=wp.media({title:n.data("choose"),library:{type:n.data("library").split(",").map(function(e){return e.trim()})},button:{text:n.data("update"),close:!1}}),n.data("frame",r),r.on("select",function(){var e=r.state().get("selection").first().attributes;a.find(".current .title").html(e.title);var i=a.find("input[type=hidden]");i.val(e.id),i.trigger("change"),"undefined"!=typeof e.sizes?"undefined"!=typeof e.sizes.thumbnail?a.find(".current .thumbnail").attr("src",e.sizes.thumbnail.url).fadeIn():a.find(".current .thumbnail").attr("src",e.sizes.full.url).fadeIn():a.find(".current .thumbnail").attr("src",e.icon).fadeIn(),t.find(".media-remove-button").removeClass("remove-hide"),r.close()}),r.open(),!1)}}),i.find(".current").mouseenter(function(){var i=e(this).find(".title");""!==i.html()&&i.fadeIn("fast")}).mouseleave(function(){e(this).find(".title").clearQueue().fadeOut("fast")}),t.find("a.media-remove-button").click(function(i){i.preventDefault(),t.find(".current .title").html(""),t.find("input[type=hidden]").val(""),t.find(".current .thumbnail").fadeOut("fast"),e(this).addClass("remove-hide")})}),d.filter(".siteorigin-widget-field-type-widget, .siteorigin-widget-field-type-section").find("> label").click(function(){e(this);e(this).toggleClass("siteorigin-widget-section-visible"),e(this).siblings(".siteorigin-widget-section").slideToggle(function(){e(window).resize(),e(this).find("> .siteorigin-widget-field-container-state").val(e(this).is(":visible")?"open":"closed")})});var l={};d.filter(".siteorigin-widget-field-type-icon").each(function(){var i=e(this),t=i.find(".siteorigin-widget-icon-selector"),n=t.find(".siteorigin-widget-icon-icon"),a=i.find(".siteorigin-widget-icon-selector-current");a.click(function(){t.slideToggle()});var r=function(){var i=t.find("select.siteorigin-widget-icon-family").val(),r=t.find(".siteorigin-widget-icon-icons");if("undefined"!=typeof l[i]){r.empty(),0===e("#siteorigin-widget-font-"+i).length&&e("<link rel='stylesheet' type='text/css'>").attr("id","siteorigin-widget-font-"+i).attr("href",l[i].style_uri).appendTo("head");for(var s in l[i].icons){var o=e('<div data-sow-icon="'+l[i].icons[s]+'"/>').attr("data-value",i+"-"+s).addClass("sow-icon-"+i).addClass("siteorigin-widget-icon-icons-icon").click(function(){var s=e(this);s.hasClass("siteorigin-widget-active")?(s.removeClass("siteorigin-widget-active"),n.val(""),a.find("span").hide()):(r.find(".siteorigin-widget-icon-icons-icon").removeClass("siteorigin-widget-active"),s.addClass("siteorigin-widget-active"),n.val(s.data("value")),a.find("span").show().attr("data-sow-icon",s.attr("data-sow-icon")).attr("class","").addClass("sow-icon-"+i)),n.trigger("change"),t.slideUp()});r.append(o),n.val()===i+"-"+s&&(a.find("span").show().attr("data-sow-icon",o.attr("data-sow-icon")).attr("class","").addClass("sow-icon-"+i),o.addClass("siteorigin-widget-active"))}r.prepend(r.find(".siteorigin-widget-active"))}},s=function(){var i=t.find("select.siteorigin-widget-icon-family").val(),n=t.find("select.siteorigin-widget-icon-family option:selected").data("icons");null!==n&&(l[i]=n),"undefined"!=typeof i&&""!==i&&("undefined"==typeof l[i]?e.getJSON(soWidgets.ajaxurl,{action:"siteorigin_widgets_get_icons",family:t.find("select.siteorigin-widget-icon-family").val()},function(e){l[i]=e,r()}):r())};s(),t.find("select.siteorigin-widget-icon-family").change(function(){t.find(".siteorigin-widget-icon-icons").empty(),s()})}),d.filter(".siteorigin-widget-field-type-slider").each(function(){var i=e(this),t=i.find('input[type="number"]'),n=i.find(".siteorigin-widget-value-slider");n.slider({max:parseInt(t.attr("max")),min:parseInt(t.attr("min")),value:parseInt(t.val()),slide:function(e,n){t.val(parseInt(n.value)),i.find(".siteorigin-widget-slider-value").html(n.value)}})}),d.filter(".siteorigin-widget-field-type-link").each(function(){var i=e(this),t=null,n=function(){null!==t&&t.abort();var n=i.find(".content-text-search").val(),a=i.find("ul.posts").empty().addClass("loading");e.get(soWidgets.ajaxurl,{action:"so_widgets_search_posts",query:n},function(i){for(var t=0;t<i.length;t++)""===i[t].post_title&&(i[t].post_title=" "),a.append(e("<li>").addClass("post").html(i[t].post_title+"<span>("+i[t].post_type+")</span>").data(i[t]));a.removeClass("loading")})};i.find(".select-content-button, .button-close").click(function(t){t.preventDefault(),e(this).blur();var a=i.find(".existing-content-selector");a.toggle(),a.is(":visible")&&0===a.find("ul.posts li").length&&n()}),i.on("click",".posts li",function(t){t.preventDefault();var n=e(this);i.find("input.siteorigin-widget-input").val("post: "+n.data("ID")),i.find(".existing-content-selector").toggle()});var a=null;i.find(".content-text-search").keyup(function(){null!==a&&clearTimeout(a),a=setTimeout(function(){n()},500)})}),"undefined"!=typeof jQuery.fn.soPanelsSetupBuilderWidget&&d.filter(".siteorigin-widget-field-type-builder").each(function(){var i=e(this);i.find("> .siteorigin-page-builder-field").soPanelsSetupBuilderWidget()});var f=function(){var i=e(this),t=i.closest("[data-state-emitter]").data("state-emitter");if("undefined"!=typeof t){var a=function(t,n){if("undefined"==typeof sowEmitters[t.callback]||"_"===t.callback.substr(0,1))return n;var a=window.sowForms.getRepeaterId(i);return a!==!1&&(t.args=t.args.map(function(e){return e.replace("{$repeater}",a)})),e.extend(n,sowEmitters[t.callback](i.val(),t.args))},r={"default":""};"undefined"==typeof t.length&&(t=[t]);for(var s=0;s<t.length;s++)r=a(t[s],r);var o=n.data("states");"undefined"==typeof o&&(o={"default":""});for(var d in r)("undefined"==typeof o[d]||r[d]!==o[d])&&(o[d]=r[d],n.trigger("sowstatechange",[d,r[d]]));n.data("states",o)}};d.filter("[data-state-emitter]").each(function(){e(this).find(".siteorigin-widget-input").on("keyup change",f),e(this).find(".siteorigin-widget-input").each(function(){var i=e(this);i.is(":radio")?i.is(":checked")&&f.call(i[0]):f.call(i[0])})}),r.trigger("sowsetupform",d).data("sow-form-setup",!0),r.find(".siteorigin-widget-field-repeater-item").trigger("updateFieldPositions"),s=!1})},e.fn.sowSetupPreview=function(){var i=e(this),t=i.siblings(".siteorigin-widget-preview");t.find("> a").click(function(t){t.preventDefault();var n={};i.find("*[name]").each(function(){var i=e(this),t=/[a-zA-Z0-9\-]+\[[a-zA-Z0-9]+\]\[(.*)\]/.exec(i.attr("name"));if(void 0===t)return!0;t=t[1];var a=t.split("][");a=a.map(function(e){return!isNaN(parseFloat(e))&&isFinite(e)?parseInt(e):e});for(var r=n,s=0;s<a.length;s++)if(s===a.length-1)if("checkbox"===i.attr("type"))i.is(":checked")?r[a[s]]=""!==i.val()?i.val():!0:r[a[s]]=!1;else if("radio"===i.attr("type"))i.is(":checked")&&(r[a[s]]=""!==i.val()?i.val():!0);else if("TEXTAREA"===i.prop("tagName")&&i.hasClass("wp-editor-area")){var o=null;"undefined"!=typeof tinyMCE&&(o=tinyMCE.get(i.attr("id"))),null===o||"function"!=typeof o.getContent||o.isHidden()?r[a[s]]=i.val():r[a[s]]=o.getContent()}else r[a[s]]=i.val();else"undefined"==typeof r[a[s]]&&(r[a[s]]={}),r=r[a[s]]});var a=e(e("#so-widgets-bundle-tpl-preview-dialog").html().trim()).appendTo("body");a.find('input[name="data"]').val(JSON.stringify(n)),a.find('input[name="class"]').val(i.data("class")),a.find("iframe").on("load",function(){e(this).css("visibility","visible")}),a.find("form").submit(),a.find(".close").click(function(){a.remove()})})},e.fn.sowSetupRepeater=function(){return e(this).each(function(i,t){var n=e(t),a=n.find(".siteorigin-widget-field-repeater-items"),r=n.data("repeater-name");a.bind("updateFieldPositions",function(){var i=e(this),t=i.find("> .siteorigin-widget-field-repeater-item");t.each(function(i,t){e(t).find(".siteorigin-widget-input").each(function(t,n){var a=e(n).data("repeater-positions");"undefined"==typeof a&&(a={}),a[r]=i,e(n).data("repeater-positions",a)})}),i.find(".siteorigin-widget-input").each(function(i,t){var n=e(t).data("repeater-positions"),a=e(t);if("undefined"!=typeof n){var r=a.data("original-name");if("undefined"==typeof r&&(a.data("original-name",a.attr("name")),r=a.attr("name")),!r)return;for(var s in n)r=r.replace("#"+s+"#",n[s]);e(t).attr("name",r)}});var a=n.data("scroll-count")?parseInt(n.data("scroll-count")):0;if(a>0&&t.length>a){var s=t.first().outerHeight();i.css("max-height",s*a).css("overflow","auto")}else i.css("max-height","").css("overflow","")}),a.sortable({handle:".siteorigin-widget-field-repeater-item-top",items:"> .siteorigin-widget-field-repeater-item",update:function(){a.trigger("updateFieldPositions")}}),a.trigger("updateFieldPositions"),n.find("> .siteorigin-widget-field-repeater-add").disableSelection().click(function(i){i.preventDefault(),n.closest(".siteorigin-widget-field-repeater").sowAddRepeaterItem().find("> .siteorigin-widget-field-repeater-items").slideDown("fast",function(){e(window).resize()})}),n.find("> .siteorigin-widget-field-repeater-top > .siteorigin-widget-field-repeater-expand").click(function(i){i.preventDefault(),n.closest(".siteorigin-widget-field-repeater").find("> .siteorigin-widget-field-repeateritems-").slideToggle("fast",function(){e(window).resize()})})})},e.fn.sowAddRepeaterItem=function(){return e(this).each(function(i,t){var n=e(t),a=n.find("> .siteorigin-widget-field-repeater-items").children().length+1,r=e("<div>"+n.find("> .siteorigin-widget-field-repeater-item-html").html()+"</div>");r.find("[data-name]").each(function(){var i=e(this);0===i.closest(".siteorigin-widget-field-repeater-item-html").length&&i.attr("name",e(this).data("name"))});var s=r.html().replace(/_id_/g,a),o="undefined"!=typeof n.attr("readonly"),d=e('<div class="siteorigin-widget-field-repeater-item ui-draggable" />').append(e('<div class="siteorigin-widget-field-repeater-item-top" />').append(e('<div class="siteorigin-widget-field-expand" />')).append(o?"":e('<div class="siteorigin-widget-field-copy" />')).append(o?"":e('<div class="siteorigin-widget-field-remove" />')).append(e("<h4 />").html(n.data("item-name")))).append(e('<div class="siteorigin-widget-field-repeater-item-form" />').html(s));n.find("> .siteorigin-widget-field-repeater-items").append(d).sortable("refresh").trigger("updateFieldPositions"),d.sowSetupRepeaterItems(),d.hide().slideDown("fast",function(){e(window).resize()})})},e.fn.sowRemoveRepeaterItem=function(){return e(this).each(function(i,t){var n=e(this).closest(".siteorigin-widget-field-repeater-items");e(this).remove(),n.sortable("refresh").trigger("updateFieldPositions")})},e.fn.sowSetupRepeaterItems=function(){return e(this).each(function(i,t){var n=e(t);if("undefined"==typeof n.data("sowrepeater-actions-setup")){var a=n.closest(".siteorigin-widget-field-repeater"),r=n.find("> .siteorigin-widget-field-repeater-item-top"),s=a.data("item-label");if(s&&s.selector){var o=function(){var e=s.hasOwnProperty("valueMethod")&&s.valueMethod?s.valueMethod:"val",i=n.find(s.selector)[e]();i&&(i.length>80&&(i=i.substr(0,79)+"..."),r.find("h4").text(i))};o();var d=s.hasOwnProperty("updateEvent")&&s.updateEvent?s.updateEvent:"change";n.bind(d,o)}r.click(function(i){"siteorigin-widget-field-remove"!==i.target.className&&"siteorigin-widget-field-copy"!==i.target.className&&(i.preventDefault(),e(this).closest(".siteorigin-widget-field-repeater-item").find(".siteorigin-widget-field-repeater-item-form").eq(0).slideToggle("fast",function(){e(window).resize(),e(this).is(":visible")?e(this).trigger("slideToggleOpenComplete"):e(this).trigger("slideToggleCloseComplete")}))}),r.find(".siteorigin-widget-field-remove").click(function(i){if(i.preventDefault(),confirm(soWidgets.sure)){var t=e(this).closest(".siteorigin-widget-field-repeater-items");e(this).closest(".siteorigin-widget-field-repeater-item").slideUp("fast",function(){e(this).remove(),t.sortable("refresh").trigger("updateFieldPositions"),e(window).resize()})}}),r.find(".siteorigin-widget-field-copy").click(function(i){i.preventDefault();var t=e(this).closest(".siteorigin-widget-form-main"),a=e(this).closest(".siteorigin-widget-field-repeater-item"),r=a.clone(),s=a.closest(".siteorigin-widget-field-repeater-items"),o=s.children().length,d={};r.find("*[name]").each(function(){var i=e(this),s=i.attr("id"),l=i.attr("name");if(i.is("textarea")&&i.parent().is(".wp-editor-container")&&"undefined"!=typeof tinymce){i.parent().empty().append(i),i.css("display","");var f=tinymce.get(s);f&&i.val(f.getContent())}else if(i.is(".wp-color-picker")){var g=i.closest(".wp-picker-container"),c=i.closest(".siteorigin-widget-field");g.remove(),c.append(i.remove())}else{var u=a.find('[name="'+l+'"]');u.length&&null!=u.val()&&i.val(u.val())}if(s){var p=s.replace(/-\d+$/,"");d[p]||(d[p]=t.find(".siteorigin-widget-input[id^="+p+"]").not("[id*=_id_]").length+1);var w=p+"-"+d[p]++;i.attr("id",w),r.find("label[for="+s+"]").attr("for",w),r.find("[id*="+s+"]").each(function(){var i=e(this).attr("id"),t=i.replace(s,w);e(this).attr("id",t)}),"undefined"!=typeof tinymce&&tinymce.get(w)&&tinymce.get(w).remove()}var m=a.parents(".siteorigin-widget-field-repeater").length,v=e("body");(v.hasClass("wp-customizer")||v.hasClass("widgets-php"))&&0==n.closest(".panel-dialog").length&&(m+=1);var h=l.replace(new RegExp("((?:.*?\\[\\d+\\]){"+(m-1).toString()+"})?(.*?\\[)\\d+(\\])"),"$1$2"+o.toString()+"$3");i.attr("name",h),i.data("original-name",h)}),s.append(r).sortable("refresh").trigger("updateFieldPositions"),r.sowSetupRepeaterItems(),r.hide().slideDown("fast",function(){e(window).resize()})}),n.find("> .siteorigin-widget-field-repeater-item-form").sowSetupForm(),n.data("sowrepeater-actions-setup",!0)}})};var i={getRepeaterId:function(e){"undefined"==typeof this.id&&(this.id=1);var i=e.closest(".siteorigin-widget-field-repeater-item");if(i.length){var t=i.data("item-id");return void 0===t&&(t=this.id++),i.data("item-id",t),t}return!1},getWidgetFieldVariable:function(e,i,t){var n=window.sow_field_javascript_variables[e];i=i.replace(/\[#.*?#\]/g,"");for(var a=/[a-zA-Z0-9\-]+(?:\[c?[0-9]+\])?\[(.*)\]/.exec(i)[1],r=a.split("]["),s=r.length?n:null;r.length;)s=s[r.shift()];return s[t]},fetchWidgetVariable:function(i,t,n){window.sowVars=window.sowVars||{},"undefined"==typeof window.sowVars[t]?e.post(soWidgets.ajaxurl,{action:"sow_get_javascript_variables",widget:t,key:i},function(e){window.sowVars[t]=e,n(window.sowVars[t][i])}):n(window.sowVars[t][i])}};window.sowForms=i,e(".widgets-holder-wrap").on("click",".widget:has(.siteorigin-widget-form-main) .widget-top",function(){var i=e(this).closest(".widget").find(".siteorigin-widget-form-main");setTimeout(function(){i.sowSetupForm()},200)}),e("body").hasClass("wp-customizer")&&e(document).on("widget-added",function(e,i){i.find(".siteorigin-widget-form").sowSetupForm()}),e(document).on("dialogopen",function(i){e(i.target).find(".siteorigin-widget-form-main").sowSetupForm()}),e(document).trigger("sowadminloaded")}(jQuery);var sowEmitters={_match:function(e,i){"undefined"==typeof i&&(i=".*");var t=new RegExp("^([a-zA-Z0-9_-]+)(\\[([a-zA-Z0-9_-]+)\\])? *: *("+i+") *$"),n=t.exec(e);if(null===n)return!1;var a="",r="default";return void 0!==n[3]?(r=n[1],a=n[3]):a=n[1],{match:n[4].trim(),group:r,state:a}},_checker:function(e,i,t,n){var a={};"undefined"==typeof i.length&&(i=[i]);for(var r,s=0;s<i.length;s++)r=sowEmitters._match(i[s],t),r!==!1&&("_true"===r.match||n(e,i,r.match))&&(a[r.group]=r.state);return a},select:function(e,i){"undefined"==typeof i.length&&(i=[i]);for(var t={},n=0;n<i.length;n++)""===i[n]&&(i[n]="default"),t[i[n]]=e;return t},conditional:function(val,args){return sowEmitters._checker(val,args,"[^;{}]*",function(val,args,match){return eval(match)})},"in":function(e,i){return sowEmitters._checker(e,i,"[^;{}]*",function(e,i,t){return-1!==t.split(",").map(function(e){return e.trim()}).indexOf(e)})}};
|
base/js/posts-selector.js
CHANGED
@@ -355,7 +355,7 @@ var soWidgetPostSelector = ( function ($, _) {
|
|
355 |
|
356 |
// The additional query arguments field
|
357 |
this.form.append('<div class="query-builder-form-field">' + sowPostsSelectorTpl.fields.additional + '</div>');
|
358 |
-
if( typeof this.model.get('additional') !== 'undefined' ) this.form.find('input[name="additional"]').val( this.model.get('additional')
|
359 |
|
360 |
|
361 |
var orderField = this.form.find('input[name="order"]');
|
@@ -468,7 +468,7 @@ var soWidgetPostSelector = ( function ($, _) {
|
|
468 |
this.model.set( 'order', this.$el.find('*[name="order"]').val() );
|
469 |
this.model.set( 'posts_per_page', this.$el.find('*[name="posts_per_page"]').val() );
|
470 |
this.model.set( 'sticky', this.$el.find('*[name="sticky"]').val() );
|
471 |
-
this.model.set( 'additional', this.$el.find('*[name="additional"]').val()
|
472 |
|
473 |
this.model.set( 'query', this.model.getQuery() );
|
474 |
|
355 |
|
356 |
// The additional query arguments field
|
357 |
this.form.append('<div class="query-builder-form-field">' + sowPostsSelectorTpl.fields.additional + '</div>');
|
358 |
+
if( typeof this.model.get('additional') !== 'undefined' ) this.form.find('input[name="additional"]').val( decodeURIComponent( this.model.get('additional') ) );
|
359 |
|
360 |
|
361 |
var orderField = this.form.find('input[name="order"]');
|
468 |
this.model.set( 'order', this.$el.find('*[name="order"]').val() );
|
469 |
this.model.set( 'posts_per_page', this.$el.find('*[name="posts_per_page"]').val() );
|
470 |
this.model.set( 'sticky', this.$el.find('*[name="sticky"]').val() );
|
471 |
+
this.model.set( 'additional', encodeURIComponent( this.$el.find('*[name="additional"]').val() ) );
|
472 |
|
473 |
this.model.set( 'query', this.model.getQuery() );
|
474 |
|
base/js/posts-selector.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var soWidgetPostSelector=function(e,t){var s,i,o,n,r,l,d,a;s=self.Post=Backbone.Model.extend({title:null,thumbnail:null,id:null}),i=self.PostCollection=Backbone.Collection.extend({model:s,foundPosts:null,updateWithQuery:function(t){if(""!==t){var s=this;e.post(sowPostsSelectorTpl.ajaxurl,{action:"sow_get_posts",query:t,ignore_pagination:!0},function(e){s.foundPosts=e.found_posts,s.reset(e.posts)})}}}),l=self.Query=Backbone.Model.extend({query:null,syncField:null,post_type:null,terms:null,post_status:null,posts_per_page:null,post__in:null,tax_query:null,date_range:null,orderby:null,order:null,sticky:null,defaults:{post_type:"post",orderby:"post_date",order:"DESC",posts_per_page:"",post_status:"publish",sticky:""},initialize:function(e,t){this.set(this.parseQuery(e.query))},getQuery:function(){var e=[];return"undefined"!=typeof this.get("post_type")&&e.push("post_type="+this.get("post_type")),"undefined"==typeof this.get("post__in")||t.isEmpty(this.get("post__in"))||e.push("post__in="+this.get("post__in").join(",")),"undefined"==typeof this.get("tax_query")||t.isEmpty(this.get("tax_query"))||e.push("tax_query="+this.get("tax_query").join(",")),"undefined"==typeof this.get("date_query")||t.isEmpty(this.get("date_query"))||e.push("date_query="+JSON.stringify(this.get("date_query"))),"undefined"!=typeof this.get("orderby")&&e.push("orderby="+this.get("orderby")),"undefined"!=typeof this.get("order")&&e.push("order="+this.get("order")),"undefined"!=typeof this.get("posts_per_page")&&e.push("posts_per_page="+this.get("posts_per_page")),"undefined"!=typeof this.get("sticky")&&e.push("sticky="+this.get("sticky")),"undefined"!=typeof this.get("additional")&&e.push("additional="+this.get("additional")),e.join("&")},setQuery:function(e){return this.set(this.parseQuery(e)),this},parseQuery:function(e){for(var t,s=/([^&=]+)=?([^&]*)/g,i=/\+/g,o=function(e){return decodeURIComponent(e.replace(i," "))},n={};t=s.exec(e);){var r=o(t[1]),l=o(t[2]);"[]"===r.substring(r.length-2)?(r=r.substring(0,r.length-2),(n[r]||(n[r]=[])).push(l)):n[r]=l}var d={};return n.hasOwnProperty("post_type")&&(d.post_type=n.post_type),n.hasOwnProperty("post__in")&&(d.post__in=n.post__in.split(",")),n.hasOwnProperty("tax_query")&&(d.tax_query=n.tax_query.split(",")),n.hasOwnProperty("date_query")&&(d.date_query=JSON.parse(n.date_query)),n.hasOwnProperty("orderby")&&(d.orderby=n.orderby),n.hasOwnProperty("order")&&(d.order=n.order),n.hasOwnProperty("posts_per_page")&&(d.posts_per_page=n.posts_per_page),n.hasOwnProperty("sticky")&&(d.sticky=n.sticky),n.hasOwnProperty("additional")&&(d.additional=n.additional),d.query=e,d},sync:function(e,t){if("create"===e){var s=this.syncField.val(),i=this.getQuery();s!==i&&(this.syncField.val(i),this.syncField.trigger("change"))}else this.setQuery(this.syncField.val())},setSyncField:function(e){this.syncField=e}}),a=self.QueryBuilder=Backbone.View.extend({attached:!1,rendered:!1,views:{},activeView:null,events:{"click .media-modal-backdrop, .media-modal-close":"escapeHandler","click .media-toolbar-primary .button":"buttonHandler"},initialize:function(){this.listenTo(this.model,"change",this.queryModelChange);var e=new i;this.views.postSummary=new o({posts:e,el:this.el}),this.views.postSummary.builder=this,this.views.postSummary.posts.updateWithQuery(this.model.getQuery()),this.addSubView("form",new d({el:this.el,model:this.model})),this.addSubView("postsView",new n({el:this.el,posts:e})),this.addSubView("postsSelect",new r({el:this.el,model:this.model})),this.views.form.bind("buttonHandler",this.close,this)},changeModel:function(e){this.model=e,this.render()},render:function(){return this.$el.html(sowPostsSelectorTpl.modal),this.$el.find(".media-toolbar-primary .button").html(this.views[this.activeView].buttonText),this.$el.find(".media-frame-title h1").html(this.views[this.activeView].modalTitle),this.rendered=!0,"postsSelect"!==this.activeView&&this.views.postSummary.render(),this.views[this.activeView].render(),this},close:function(){return this.$el.hide(),this.trigger("close"),this.model.save(),this},open:function(){this.show(),this.setActiveView("form"),this.trigger("open"),this.model.fetch()},save:function(){this.close(),this.model.save(),this.trigger("save")},attach:function(){return this.rendered||this.render(),this.attached||(this.$el.appendTo("body"),this.attached=!0),this},show:function(){this.attach(),this.$el.is(":visible")||this.$el.show()},escapeHandler:function(e){e.preventDefault(),this.close()},buttonHandler:function(e){e.preventDefault(),this.views[this.activeView].buttonHandler().trigger("buttonHandler")},addSubView:function(e,t){this.views[e]=t,t.builder=this,null===this.activeView&&(this.activeView=e)},setActiveView:function(e){this.activeView=e,this.render()},queryModelChange:function(){this.views.postSummary.posts.updateWithQuery(this.model.getQuery())}}),d=self.QueryForm=Backbone.View.extend({buttonText:"Save Query",modalTitle:"Build Posts Query",form:null,initialize:function(e){},render:function(){var t=this;if(this.form=e('<div class="query-builder-form>"></div>'),this.form.append('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.post_type+"</div>"),"undefined"!=typeof this.model.get("post_type")&&this.form.find('select[name="post_type"]').val(this.model.get("post_type")),this.form.append('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.post__in+"</div>"),"undefined"!=typeof this.model.get("post__in")&&this.form.find('input[name="post__in"]').val(this.model.get("post__in").join(",")),this.form.append('<div class="query-builder-form-field ui-front">'+sowPostsSelectorTpl.fields.tax_query+"</div>"),"undefined"!=typeof this.model.get("tax_query")&&this.form.find('input[name="tax_query"]').val(this.model.get("tax_query")),this.form.append('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.date_query+"</div>"),"undefined"!=typeof this.model.get("date_query")){var s=this.model.get("date_query");s.hasOwnProperty("after")&&this.form.find('input[name="after"]').val(s.after),s.hasOwnProperty("before")&&this.form.find('input[name="before"]').val(s.before)}this.form.append(e('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.orderby+"</div>").disableSelection()),"undefined"!=typeof this.model.get("orderby")&&this.form.find('select[name="orderby"]').val(this.model.get("orderby")),"undefined"!=typeof this.model.get("order")&&this.form.find('input[name="order"]').val(this.model.get("order")),this.form.append('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.posts_per_page+"</div>"),"undefined"!=typeof this.model.get("posts_per_page")&&this.form.find('input[name="posts_per_page"]').val(this.model.get("posts_per_page")),this.form.append('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.sticky+"</div>"),"undefined"!=typeof this.model.get("sticky")&&this.form.find('select[name="sticky"]').val(this.model.get("sticky")),this.form.append('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.additional+"</div>"),"undefined"!=typeof this.model.get("additional")&&this.form.find('input[name="additional"]').val(this.model.get("additional").split(",").join("&"));var i=this.form.find('input[name="order"]'),o=i.closest(".query-builder-form-field").find(".sow-order-button"),n=function(){"DESC"===i.val()?(o.removeClass("sow-order-button-asc"),o.addClass("sow-order-button-desc")):(o.addClass("sow-order-button-asc"),o.removeClass("sow-order-button-desc"))};return n(),o.click(function(e){return e.preventDefault(),"DESC"===i.val()?i.val("ASC"):i.val("DESC"),n(),t.updateModel(),!1}),this.$el.find(".query-builder-content").empty().append(this.form),this.$el.find(".query-builder-form-field select, .query-builder-form-field input").change(function(){t.updateModel()}),this.$el.find(".query-builder-form-field .sow-select-posts").click(function(e){e.preventDefault(),t.builder.setActiveView("postsSelect")}),this.form.find('input[name="tax_query"]').autocomplete({source:function(t,s){e.getJSON(sowPostsSelectorTpl.ajaxurl,{term:t.term.split(/,\s*/).pop(),action:"sow_search_terms"},s)},search:function(){var e=this.value.split(/,\s*/).pop();return e.length<1?!1:void 0},focus:function(){return!1},select:function(e,s){var i=this.value.split(/,\s*/);return i.pop(),i.push(s.item.value),i.push(""),this.value=i.join(", "),t.updateModel(),!1}}),this},updateModel:function(){if(this.model.set("post_type",this.$el.find('*[name="post_type"]').val()),""!==this.$el.find('*[name="post__in"]').val().trim()?this.model.set("post__in",this.$el.find('*[name="post__in"]').val().split(",").map(function(e){return Number(e.trim())})):this.model.set("post__in",[]),""!==this.$el.find('*[name="tax_query"]').val().trim()){var e=this.$el.find('*[name="tax_query"]').val().split(",").map(function(e){return e.trim()});this.model.set("tax_query",t.compact(e))}else this.model.set("tax_query",[]);return this.model.set("date_query",{after:this.$el.find('*[name="after"]').val(),before:this.$el.find('*[name="before"]').val()}),this.model.set("orderby",this.$el.find('*[name="orderby"]').val()),this.model.set("order",this.$el.find('*[name="order"]').val()),this.model.set("posts_per_page",this.$el.find('*[name="posts_per_page"]').val()),this.model.set("sticky",this.$el.find('*[name="sticky"]').val()),this.model.set("additional",this.$el.find('*[name="additional"]').val().split("&").join(",")),this.model.set("query",this.model.getQuery()),this},buttonHandler:function(){return this.updateModel(),this}}),o=self.PostCollectionSummaryView=Backbone.View.extend({template:t.template(sowPostsSelectorTpl.foundPosts),posts:null,initialize:function(e){this.posts=e.posts,this.posts.bind("reset",this.render,this)},render:function(){this.$el.find(".media-toolbar-secondary").html(this.template({foundPosts:this.posts.foundPosts}));var e=this;this.$el.find(".media-toolbar-secondary .preview-query-posts").click(function(t){t.preventDefault(),e.builder.setActiveView("postsView")})}}),n=self.PostCollectionView=Backbone.View.extend({buttonText:"Back",modalTitle:"Current Posts",template:t.template(sowPostsSelectorTpl.postSummary),posts:null,initialize:function(e){this.posts=e.posts},render:function(){var e=this.$el.find(".query-builder-content").empty().append('<div class="sow-current-posts"></div>').find(".sow-current-posts");e=this.$el.find(".query-builder-content");var t=this.template;return this.posts.each(function(s){e.append(t(s.attributes))}),this},buttonHandler:function(){return this.builder.setActiveView("form"),this}}),r=self.PostSelectView=Backbone.View.extend({buttonText:"Finish Selection",modalTitle:"Select Posts",sortable:null,postCache:{},postTemplate:t.template(sowPostsSelectorTpl.postSummary),initialize:function(){this.postCache={}},render:function(){var t=this.model.get("post__in"),s=this.model.get("post_type");this.$el.find(".query-builder-content").empty().html(sowPostsSelectorTpl.selector),this.sortable=this.$el.find(".query-builder-content #sow-post-selector .sow-posts-sortable").sortable({placeholder:"ui-state-highlight",forcePlaceholderSize:!0,items:"> .sow-post-selector-summary"}),this.addPosts(t);var i=this,o=this.$el.find(".query-builder-content #sow-post-selector .sow-search-field");return o.autocomplete({source:function(t,i){t.type=s,t.action="sow_search_posts",e.get(sowPostsSelectorTpl.ajaxurl,t,i)},minLength:0,select:function(t,s){return t.preventDefault(),e(this).val(""),i.addPosts([s.item.value]),!1}}),o.focusin(function(){o.autocomplete("search",o.val())}),this.$el.find(".query-builder-content").on("click",".sow-remove",function(t){t.preventDefault();var s=e(this);s.closest(".sow-post-selector-summary").fadeOut("fast",function(){e(this).remove(),i.sortable.sortable("refresh")})}),this},addPosts:function(s){if("undefined"!=typeof s&&!t.isEmpty(s)){for(var i=[],o=0;o<s.length;o++)"undefined"==typeof this.postCache[s[o]]&&i.push(s[o]);var n=this;t.isEmpty(i)||e.post(sowPostsSelectorTpl.ajaxurl,{action:"sow_get_posts",query:"post_type=_all&posts_per_page=-1&post__in="+i.join(",")},function(e){console.log(e),"undefined"!=typeof e.posts&&t.each(e.posts,function(e,t){n.postCache[e.id]={id:e.id,title:e.title,thumbnail:e.thumbnail,editUrl:e.editUrl}}),n.refreshLoading()});for(var r,o=0;o<s.length;o++)r="undefined"==typeof this.postCache[s[o]]?e(this.postTemplate({id:s[o],title:"",thumbnail:"",editUrl:"#"})).addClass("sow-post-loading"):e(this.postTemplate(this.postCache[s[o]])),r.appendTo(this.sortable);return this.sortable.sortable("refresh"),this}},refreshLoading:function(){var t=this;this.sortable.find(".sow-post-selector-summary.sow-post-loading").each(function(){var s=e(this),i=s.data("id");if("undefined"!=typeof t.postCache[i]){s.removeClass("sow-post-loading");var o=e(t.postTemplate(t.postCache[i]));s.html(o.html())}})},buttonHandler:function(){var s=[];return this.sortable.find(".sow-post-selector-summary").each(function(){s.push(Number(e(this).data("id")))}),this.model.set("post__in",s),t.isEmpty(s)||(this.model.set("post_type","_all"),this.model.set("orderby","post__in")),this.builder.setActiveView("form"),this}});var u=new a({model:new l({query:""})});jQuery(function(e){e("body").on("click",".sow-select-posts",function(t){t.preventDefault();var s=e(this);u.model.setSyncField(s.siblings(".siteorigin-widget-input")),u.model.sync("update"),u.views.postSummary.posts.on("reset",function(e){s.find(".sow-current-count").text(e.foundPosts)}),u.open()})})}(jQuery,_);
|
1 |
+
var soWidgetPostSelector=function(e,t){var s,i,o,n,r,l,d,a;s=self.Post=Backbone.Model.extend({title:null,thumbnail:null,id:null}),i=self.PostCollection=Backbone.Collection.extend({model:s,foundPosts:null,updateWithQuery:function(t){if(""!==t){var s=this;e.post(sowPostsSelectorTpl.ajaxurl,{action:"sow_get_posts",query:t,ignore_pagination:!0},function(e){s.foundPosts=e.found_posts,s.reset(e.posts)})}}}),l=self.Query=Backbone.Model.extend({query:null,syncField:null,post_type:null,terms:null,post_status:null,posts_per_page:null,post__in:null,tax_query:null,date_range:null,orderby:null,order:null,sticky:null,defaults:{post_type:"post",orderby:"post_date",order:"DESC",posts_per_page:"",post_status:"publish",sticky:""},initialize:function(e,t){this.set(this.parseQuery(e.query))},getQuery:function(){var e=[];return"undefined"!=typeof this.get("post_type")&&e.push("post_type="+this.get("post_type")),"undefined"==typeof this.get("post__in")||t.isEmpty(this.get("post__in"))||e.push("post__in="+this.get("post__in").join(",")),"undefined"==typeof this.get("tax_query")||t.isEmpty(this.get("tax_query"))||e.push("tax_query="+this.get("tax_query").join(",")),"undefined"==typeof this.get("date_query")||t.isEmpty(this.get("date_query"))||e.push("date_query="+JSON.stringify(this.get("date_query"))),"undefined"!=typeof this.get("orderby")&&e.push("orderby="+this.get("orderby")),"undefined"!=typeof this.get("order")&&e.push("order="+this.get("order")),"undefined"!=typeof this.get("posts_per_page")&&e.push("posts_per_page="+this.get("posts_per_page")),"undefined"!=typeof this.get("sticky")&&e.push("sticky="+this.get("sticky")),"undefined"!=typeof this.get("additional")&&e.push("additional="+this.get("additional")),e.join("&")},setQuery:function(e){return this.set(this.parseQuery(e)),this},parseQuery:function(e){for(var t,s=/([^&=]+)=?([^&]*)/g,i=/\+/g,o=function(e){return decodeURIComponent(e.replace(i," "))},n={};t=s.exec(e);){var r=o(t[1]),l=o(t[2]);"[]"===r.substring(r.length-2)?(r=r.substring(0,r.length-2),(n[r]||(n[r]=[])).push(l)):n[r]=l}var d={};return n.hasOwnProperty("post_type")&&(d.post_type=n.post_type),n.hasOwnProperty("post__in")&&(d.post__in=n.post__in.split(",")),n.hasOwnProperty("tax_query")&&(d.tax_query=n.tax_query.split(",")),n.hasOwnProperty("date_query")&&(d.date_query=JSON.parse(n.date_query)),n.hasOwnProperty("orderby")&&(d.orderby=n.orderby),n.hasOwnProperty("order")&&(d.order=n.order),n.hasOwnProperty("posts_per_page")&&(d.posts_per_page=n.posts_per_page),n.hasOwnProperty("sticky")&&(d.sticky=n.sticky),n.hasOwnProperty("additional")&&(d.additional=n.additional),d.query=e,d},sync:function(e,t){if("create"===e){var s=this.syncField.val(),i=this.getQuery();s!==i&&(this.syncField.val(i),this.syncField.trigger("change"))}else this.setQuery(this.syncField.val())},setSyncField:function(e){this.syncField=e}}),a=self.QueryBuilder=Backbone.View.extend({attached:!1,rendered:!1,views:{},activeView:null,events:{"click .media-modal-backdrop, .media-modal-close":"escapeHandler","click .media-toolbar-primary .button":"buttonHandler"},initialize:function(){this.listenTo(this.model,"change",this.queryModelChange);var e=new i;this.views.postSummary=new o({posts:e,el:this.el}),this.views.postSummary.builder=this,this.views.postSummary.posts.updateWithQuery(this.model.getQuery()),this.addSubView("form",new d({el:this.el,model:this.model})),this.addSubView("postsView",new n({el:this.el,posts:e})),this.addSubView("postsSelect",new r({el:this.el,model:this.model})),this.views.form.bind("buttonHandler",this.close,this)},changeModel:function(e){this.model=e,this.render()},render:function(){return this.$el.html(sowPostsSelectorTpl.modal),this.$el.find(".media-toolbar-primary .button").html(this.views[this.activeView].buttonText),this.$el.find(".media-frame-title h1").html(this.views[this.activeView].modalTitle),this.rendered=!0,"postsSelect"!==this.activeView&&this.views.postSummary.render(),this.views[this.activeView].render(),this},close:function(){return this.$el.hide(),this.trigger("close"),this.model.save(),this},open:function(){this.show(),this.setActiveView("form"),this.trigger("open"),this.model.fetch()},save:function(){this.close(),this.model.save(),this.trigger("save")},attach:function(){return this.rendered||this.render(),this.attached||(this.$el.appendTo("body"),this.attached=!0),this},show:function(){this.attach(),this.$el.is(":visible")||this.$el.show()},escapeHandler:function(e){e.preventDefault(),this.close()},buttonHandler:function(e){e.preventDefault(),this.views[this.activeView].buttonHandler().trigger("buttonHandler")},addSubView:function(e,t){this.views[e]=t,t.builder=this,null===this.activeView&&(this.activeView=e)},setActiveView:function(e){this.activeView=e,this.render()},queryModelChange:function(){this.views.postSummary.posts.updateWithQuery(this.model.getQuery())}}),d=self.QueryForm=Backbone.View.extend({buttonText:"Save Query",modalTitle:"Build Posts Query",form:null,initialize:function(e){},render:function(){var t=this;if(this.form=e('<div class="query-builder-form>"></div>'),this.form.append('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.post_type+"</div>"),"undefined"!=typeof this.model.get("post_type")&&this.form.find('select[name="post_type"]').val(this.model.get("post_type")),this.form.append('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.post__in+"</div>"),"undefined"!=typeof this.model.get("post__in")&&this.form.find('input[name="post__in"]').val(this.model.get("post__in").join(",")),this.form.append('<div class="query-builder-form-field ui-front">'+sowPostsSelectorTpl.fields.tax_query+"</div>"),"undefined"!=typeof this.model.get("tax_query")&&this.form.find('input[name="tax_query"]').val(this.model.get("tax_query")),this.form.append('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.date_query+"</div>"),"undefined"!=typeof this.model.get("date_query")){var s=this.model.get("date_query");s.hasOwnProperty("after")&&this.form.find('input[name="after"]').val(s.after),s.hasOwnProperty("before")&&this.form.find('input[name="before"]').val(s.before)}this.form.append(e('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.orderby+"</div>").disableSelection()),"undefined"!=typeof this.model.get("orderby")&&this.form.find('select[name="orderby"]').val(this.model.get("orderby")),"undefined"!=typeof this.model.get("order")&&this.form.find('input[name="order"]').val(this.model.get("order")),this.form.append('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.posts_per_page+"</div>"),"undefined"!=typeof this.model.get("posts_per_page")&&this.form.find('input[name="posts_per_page"]').val(this.model.get("posts_per_page")),this.form.append('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.sticky+"</div>"),"undefined"!=typeof this.model.get("sticky")&&this.form.find('select[name="sticky"]').val(this.model.get("sticky")),this.form.append('<div class="query-builder-form-field">'+sowPostsSelectorTpl.fields.additional+"</div>"),"undefined"!=typeof this.model.get("additional")&&this.form.find('input[name="additional"]').val(decodeURIComponent(this.model.get("additional")));var i=this.form.find('input[name="order"]'),o=i.closest(".query-builder-form-field").find(".sow-order-button"),n=function(){"DESC"===i.val()?(o.removeClass("sow-order-button-asc"),o.addClass("sow-order-button-desc")):(o.addClass("sow-order-button-asc"),o.removeClass("sow-order-button-desc"))};return n(),o.click(function(e){return e.preventDefault(),"DESC"===i.val()?i.val("ASC"):i.val("DESC"),n(),t.updateModel(),!1}),this.$el.find(".query-builder-content").empty().append(this.form),this.$el.find(".query-builder-form-field select, .query-builder-form-field input").change(function(){t.updateModel()}),this.$el.find(".query-builder-form-field .sow-select-posts").click(function(e){e.preventDefault(),t.builder.setActiveView("postsSelect")}),this.form.find('input[name="tax_query"]').autocomplete({source:function(t,s){e.getJSON(sowPostsSelectorTpl.ajaxurl,{term:t.term.split(/,\s*/).pop(),action:"sow_search_terms"},s)},search:function(){var e=this.value.split(/,\s*/).pop();return e.length<1?!1:void 0},focus:function(){return!1},select:function(e,s){var i=this.value.split(/,\s*/);return i.pop(),i.push(s.item.value),i.push(""),this.value=i.join(", "),t.updateModel(),!1}}),this},updateModel:function(){if(this.model.set("post_type",this.$el.find('*[name="post_type"]').val()),""!==this.$el.find('*[name="post__in"]').val().trim()?this.model.set("post__in",this.$el.find('*[name="post__in"]').val().split(",").map(function(e){return Number(e.trim())})):this.model.set("post__in",[]),""!==this.$el.find('*[name="tax_query"]').val().trim()){var e=this.$el.find('*[name="tax_query"]').val().split(",").map(function(e){return e.trim()});this.model.set("tax_query",t.compact(e))}else this.model.set("tax_query",[]);return this.model.set("date_query",{after:this.$el.find('*[name="after"]').val(),before:this.$el.find('*[name="before"]').val()}),this.model.set("orderby",this.$el.find('*[name="orderby"]').val()),this.model.set("order",this.$el.find('*[name="order"]').val()),this.model.set("posts_per_page",this.$el.find('*[name="posts_per_page"]').val()),this.model.set("sticky",this.$el.find('*[name="sticky"]').val()),this.model.set("additional",encodeURIComponent(this.$el.find('*[name="additional"]').val())),this.model.set("query",this.model.getQuery()),this},buttonHandler:function(){return this.updateModel(),this}}),o=self.PostCollectionSummaryView=Backbone.View.extend({template:t.template(sowPostsSelectorTpl.foundPosts),posts:null,initialize:function(e){this.posts=e.posts,this.posts.bind("reset",this.render,this)},render:function(){this.$el.find(".media-toolbar-secondary").html(this.template({foundPosts:this.posts.foundPosts}));var e=this;this.$el.find(".media-toolbar-secondary .preview-query-posts").click(function(t){t.preventDefault(),e.builder.setActiveView("postsView")})}}),n=self.PostCollectionView=Backbone.View.extend({buttonText:"Back",modalTitle:"Current Posts",template:t.template(sowPostsSelectorTpl.postSummary),posts:null,initialize:function(e){this.posts=e.posts},render:function(){var e=this.$el.find(".query-builder-content").empty().append('<div class="sow-current-posts"></div>').find(".sow-current-posts");e=this.$el.find(".query-builder-content");var t=this.template;return this.posts.each(function(s){e.append(t(s.attributes))}),this},buttonHandler:function(){return this.builder.setActiveView("form"),this}}),r=self.PostSelectView=Backbone.View.extend({buttonText:"Finish Selection",modalTitle:"Select Posts",sortable:null,postCache:{},postTemplate:t.template(sowPostsSelectorTpl.postSummary),initialize:function(){this.postCache={}},render:function(){var t=this.model.get("post__in"),s=this.model.get("post_type");this.$el.find(".query-builder-content").empty().html(sowPostsSelectorTpl.selector),this.sortable=this.$el.find(".query-builder-content #sow-post-selector .sow-posts-sortable").sortable({placeholder:"ui-state-highlight",forcePlaceholderSize:!0,items:"> .sow-post-selector-summary"}),this.addPosts(t);var i=this,o=this.$el.find(".query-builder-content #sow-post-selector .sow-search-field");return o.autocomplete({source:function(t,i){t.type=s,t.action="sow_search_posts",e.get(sowPostsSelectorTpl.ajaxurl,t,i)},minLength:0,select:function(t,s){return t.preventDefault(),e(this).val(""),i.addPosts([s.item.value]),!1}}),o.focusin(function(){o.autocomplete("search",o.val())}),this.$el.find(".query-builder-content").on("click",".sow-remove",function(t){t.preventDefault();var s=e(this);s.closest(".sow-post-selector-summary").fadeOut("fast",function(){e(this).remove(),i.sortable.sortable("refresh")})}),this},addPosts:function(s){if("undefined"!=typeof s&&!t.isEmpty(s)){for(var i=[],o=0;o<s.length;o++)"undefined"==typeof this.postCache[s[o]]&&i.push(s[o]);var n=this;t.isEmpty(i)||e.post(sowPostsSelectorTpl.ajaxurl,{action:"sow_get_posts",query:"post_type=_all&posts_per_page=-1&post__in="+i.join(",")},function(e){console.log(e),"undefined"!=typeof e.posts&&t.each(e.posts,function(e,t){n.postCache[e.id]={id:e.id,title:e.title,thumbnail:e.thumbnail,editUrl:e.editUrl}}),n.refreshLoading()});for(var r,o=0;o<s.length;o++)r="undefined"==typeof this.postCache[s[o]]?e(this.postTemplate({id:s[o],title:"",thumbnail:"",editUrl:"#"})).addClass("sow-post-loading"):e(this.postTemplate(this.postCache[s[o]])),r.appendTo(this.sortable);return this.sortable.sortable("refresh"),this}},refreshLoading:function(){var t=this;this.sortable.find(".sow-post-selector-summary.sow-post-loading").each(function(){var s=e(this),i=s.data("id");if("undefined"!=typeof t.postCache[i]){s.removeClass("sow-post-loading");var o=e(t.postTemplate(t.postCache[i]));s.html(o.html())}})},buttonHandler:function(){var s=[];return this.sortable.find(".sow-post-selector-summary").each(function(){s.push(Number(e(this).data("id")))}),this.model.set("post__in",s),t.isEmpty(s)||(this.model.set("post_type","_all"),this.model.set("orderby","post__in")),this.builder.setActiveView("form"),this}});var u=new a({model:new l({query:""})});jQuery(function(e){e("body").on("click",".sow-select-posts",function(t){t.preventDefault();var s=e(this);u.model.setSyncField(s.siblings(".siteorigin-widget-input")),u.model.sync("update"),u.views.postSummary.posts.on("reset",function(e){s.find(".sow-current-count").text(e.foundPosts)}),u.open()})})}(jQuery,_);
|
base/siteorigin-widget.class.php
CHANGED
@@ -353,8 +353,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
353 |
<input type="hidden" name="<?php echo $this->get_field_name('_sow_form_id') ?>" value="<?php echo esc_attr( $instance['_sow_form_id'] ) ?>" class="siteorigin-widgets-form-id" />
|
354 |
</div>
|
355 |
<div class="siteorigin-widget-form-no-styles">
|
356 |
-
|
357 |
-
<p><strong><?php _e('You will only need to do this once.', 'so-widgets-bundle') ?></strong></p>
|
358 |
</div>
|
359 |
|
360 |
<?php if( $this->widget_options['has_preview'] && ! $this->is_customize_preview() ) : ?>
|
@@ -386,6 +385,13 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
386 |
<?php
|
387 |
}
|
388 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
389 |
/**
|
390 |
* Enqueue the admin scripts for the widget form.
|
391 |
*/
|
353 |
<input type="hidden" name="<?php echo $this->get_field_name('_sow_form_id') ?>" value="<?php echo esc_attr( $instance['_sow_form_id'] ) ?>" class="siteorigin-widgets-form-id" />
|
354 |
</div>
|
355 |
<div class="siteorigin-widget-form-no-styles">
|
356 |
+
<?php $this->scripts_loading_message() ?>
|
|
|
357 |
</div>
|
358 |
|
359 |
<?php if( $this->widget_options['has_preview'] && ! $this->is_customize_preview() ) : ?>
|
385 |
<?php
|
386 |
}
|
387 |
|
388 |
+
function scripts_loading_message(){
|
389 |
+
?>
|
390 |
+
<p><strong><?php _e('This widget has scripts and styles that need to be loaded before you can use it. Please save and reload your current page.', 'so-widgets-bundle') ?></strong></p>
|
391 |
+
<p><strong><?php _e('You will only need to do this once.', 'so-widgets-bundle') ?></strong></p>
|
392 |
+
<?php
|
393 |
+
}
|
394 |
+
|
395 |
/**
|
396 |
* Enqueue the admin scripts for the widget form.
|
397 |
*/
|
js/slider/jquery.slider.js
CHANGED
@@ -112,6 +112,7 @@ jQuery( function($){
|
|
112 |
var $$ = $(this);
|
113 |
playSlideVideo(incomingSlideEl);
|
114 |
setupActiveSlide( $$, incomingSlideEl );
|
|
|
115 |
},
|
116 |
|
117 |
'cycle-before' : function(event, optionHash, outgoingSlideEl, incomingSlideEl, forwardFlag) {
|
@@ -119,6 +120,7 @@ jQuery( function($){
|
|
119 |
$p.find('> li').removeClass('sow-active').eq(optionHash.slideNum-1).addClass('sow-active');
|
120 |
pauseSlideVideo(outgoingSlideEl);
|
121 |
setupActiveSlide($$, incomingSlideEl, optionHash.speed);
|
|
|
122 |
},
|
123 |
|
124 |
'cycle-initialized' : function(event, optionHash){
|
@@ -126,6 +128,8 @@ jQuery( function($){
|
|
126 |
setupActiveSlide( $$, optionHash.slides[0] );
|
127 |
|
128 |
$p.find('>li').removeClass('sow-active').eq(0).addClass('sow-active');
|
|
|
|
|
129 |
if(optionHash.slideCount <= 1) {
|
130 |
// Special case when there is only one slide
|
131 |
$p.hide();
|
@@ -139,7 +143,7 @@ jQuery( function($){
|
|
139 |
'slides' : '> .sow-slider-image',
|
140 |
'speed' : settings.speed,
|
141 |
'timeout' : settings.timeout,
|
142 |
-
'swipe' :
|
143 |
'swipe-fx' : 'scrollHorz'
|
144 |
} );
|
145 |
|
112 |
var $$ = $(this);
|
113 |
playSlideVideo(incomingSlideEl);
|
114 |
setupActiveSlide( $$, incomingSlideEl );
|
115 |
+
$( incomingSlideEl ).trigger('sowSlideCycleAfter');
|
116 |
},
|
117 |
|
118 |
'cycle-before' : function(event, optionHash, outgoingSlideEl, incomingSlideEl, forwardFlag) {
|
120 |
$p.find('> li').removeClass('sow-active').eq(optionHash.slideNum-1).addClass('sow-active');
|
121 |
pauseSlideVideo(outgoingSlideEl);
|
122 |
setupActiveSlide($$, incomingSlideEl, optionHash.speed);
|
123 |
+
$( incomingSlideEl ).trigger('sowSlideCycleBefore');
|
124 |
},
|
125 |
|
126 |
'cycle-initialized' : function(event, optionHash){
|
128 |
setupActiveSlide( $$, optionHash.slides[0] );
|
129 |
|
130 |
$p.find('>li').removeClass('sow-active').eq(0).addClass('sow-active');
|
131 |
+
$( this ).find('.cycle-slide-active').trigger( 'sowSlideInitial' );
|
132 |
+
|
133 |
if(optionHash.slideCount <= 1) {
|
134 |
// Special case when there is only one slide
|
135 |
$p.hide();
|
143 |
'slides' : '> .sow-slider-image',
|
144 |
'speed' : settings.speed,
|
145 |
'timeout' : settings.timeout,
|
146 |
+
'swipe' : settings.swipe,
|
147 |
'swipe-fx' : 'scrollHorz'
|
148 |
} );
|
149 |
|
js/slider/jquery.slider.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var siteoriginSlider={};jQuery(function(e){var i=siteoriginSlider.playSlideVideo=function(i){e(i).find("video").each(function(){"undefined"!=typeof this.play&&this.play()})},t=siteoriginSlider.pauseSlideVideo=function(i){e(i).find("video").each(function(){"undefined"!=typeof this.pause&&this.pause()})},n=siteoriginSlider.setupActiveSlide=function(i,t,n){var s=e(i).find(".cycle-sentinel"),o=e(t),
|
1 |
+
var siteoriginSlider={};jQuery(function(e){var i=siteoriginSlider.playSlideVideo=function(i){e(i).find("video").each(function(){"undefined"!=typeof this.play&&this.play()})},t=siteoriginSlider.pauseSlideVideo=function(i){e(i).find("video").each(function(){"undefined"!=typeof this.pause&&this.pause()})},n=siteoriginSlider.setupActiveSlide=function(i,t,n){var s=e(i).find(".cycle-sentinel"),o=e(t),d=o.find("video.sow-background-element");if(void 0==n?s.css("height",o.outerHeight()):s.animate({height:o.outerHeight()},n),d.length){var a=o.outerWidth()/o.outerHeight(),c=d.outerWidth()/d.outerHeight();a>c?d.css({width:"100%",height:"auto"}):d.css({width:"auto",height:"100%"}),d.css({"margin-left":-Math.ceil(d.width()/2),"margin-top":-Math.ceil(d.height()/2)})}};e(".sow-slider-images").each(function(){var s=e(this),o=s.siblings(".sow-slider-pagination"),d=s.closest(".sow-slider-base"),a=d.find(".sow-slide-nav"),c=s.find(".sow-slider-image"),l=s.data("settings");c.each(function(i,t){var n=e(t),s=n.data("url");n.click(function(i){if(void 0!==s){var t=e(i.target);"A"!==t.prop("tagName")&&(i.preventDefault(),window.open(s.url,s.new_window?"_blank":"_self"))}})});var r=function(){if(d.show(),s.find(".sow-slider-image").each(function(){var i=e(this);e(window).on("resize panelsStretchRows",function(){i.css("height",i.find(".sow-slider-image-wrapper").outerHeight())}).resize()}),s.on({"cycle-after":function(t,s,o,d,a){var c=e(this);i(d),n(c,d),e(d).trigger("sowSlideCycleAfter")},"cycle-before":function(i,s,d,a,c){var l=e(this);o.find("> li").removeClass("sow-active").eq(s.slideNum-1).addClass("sow-active"),t(d),n(l,a,s.speed),e(a).trigger("sowSlideCycleBefore")},"cycle-initialized":function(t,d){i(e(this).find(".cycle-slide-active")),n(s,d.slides[0]),o.find(">li").removeClass("sow-active").eq(0).addClass("sow-active"),e(this).find(".cycle-slide-active").trigger("sowSlideInitial"),d.slideCount<=1&&(o.hide(),a.hide()),e(window).resize()}}).cycle({slides:"> .sow-slider-image",speed:l.speed,timeout:l.timeout,swipe:l.swipe,"swipe-fx":"scrollHorz"}),s.find("video.sow-background-element").on("loadeddata",function(){n(s,s.find(".cycle-slide-active"))}),o.add(a).hide(),!d.hasClass("sow-slider-is-mobile")&&c.length>1){var r=!1;d.mouseenter(function(){o.add(a).clearQueue().fadeIn(150),r=!1}).mouseleave(function(){r=!0,setTimeout(function(){r&&o.add(a).clearQueue().fadeOut(150),r=!1},750)})}e(window).resize(function(){n(s,s.find(".cycle-slide-active"))}),o.find("> li > a").click(function(i){i.preventDefault(),s.cycle("goto",e(this).data("goto"))}),a.find("> a").click(function(i){i.preventDefault(),s.cycle(e(this).data("action"))}),d.keydown(function(e){37===e.which?s.cycle("prev"):39===e.which&&s.cycle("next")})},f=s.find("img"),h=0,u=!1;f.each(function(){e(this);this.complete?h++:e(this).one("load",function(){h++,h!==f.length||u||(r(),u=!0)}).attr("src",e(this).attr("src")),h!==f.length||u||(r(),u=!0)}),0===f.length&&r()})});
|
readme.txt
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
=== SiteOrigin Widgets Bundle ===
|
2 |
Tags: bundle, widget, button, slider, image, carousel, price table, google maps, tinymce, social links
|
3 |
Requires at least: 3.9
|
4 |
-
Tested up to: 4.
|
5 |
-
Stable tag: 1.
|
6 |
-
Build time: 2016-
|
7 |
License: GPLv3 or later
|
8 |
Contributors: gpriday, braam-genis
|
9 |
|
@@ -51,6 +51,27 @@ The SiteOrigin Widgets Bundle is the perfect platform to build widgets for your
|
|
51 |
|
52 |
== Changelog ==
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
= 1.5.11 - April 11 2016 =
|
55 |
* Fixed features widget container shape setting.
|
56 |
|
1 |
=== SiteOrigin Widgets Bundle ===
|
2 |
Tags: bundle, widget, button, slider, image, carousel, price table, google maps, tinymce, social links
|
3 |
Requires at least: 3.9
|
4 |
+
Tested up to: 4.5.2
|
5 |
+
Stable tag: 1.6
|
6 |
+
Build time: 2016-06-21T15:53:26+02:00
|
7 |
License: GPLv3 or later
|
8 |
Contributors: gpriday, braam-genis
|
9 |
|
51 |
|
52 |
== Changelog ==
|
53 |
|
54 |
+
= 1.6 - 21 June 2016 =
|
55 |
+
* Added builder field.
|
56 |
+
* Added new multi checkboxes field.
|
57 |
+
* Added Layout Slider widget.
|
58 |
+
* Added taxonomy widget.
|
59 |
+
* Added slider wrapper attributes and filter.
|
60 |
+
* Fix for measurement field inside a repeater.
|
61 |
+
* Modified base folder to work independently of Widgets Bundle.
|
62 |
+
* Added custom icon families callback argument to icon field.
|
63 |
+
* Properly handle attachments in post selector
|
64 |
+
* Contact Form: Refactored form fields.
|
65 |
+
* Hero Image: Added image type to Hero Image widget.
|
66 |
+
* Button: Handle empty width.
|
67 |
+
* Image: Added filter for SiteOrigin image attributes.
|
68 |
+
* Image: Add dimensions to sizes dropdown.
|
69 |
+
* Maps: Ensure maps widget works with API key.
|
70 |
+
* Hero Image: Added setting to disable swipe on mobile Hero Image Widget.
|
71 |
+
* Fixed title syntax in Image widget.
|
72 |
+
* Video: Correctly get video file mime-types.
|
73 |
+
* Video Widget: Allow specifying multiple self-hosted video sources to support various formats.
|
74 |
+
|
75 |
= 1.5.11 - April 11 2016 =
|
76 |
* Fixed features widget container shape setting.
|
77 |
|
so-widgets-bundle.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: SiteOrigin Widgets Bundle
|
4 |
Description: A collection of all widgets, neatly bundled into a single plugin. It's also a framework to code your own widgets on top of.
|
5 |
-
Version: 1.
|
6 |
Text Domain: so-widgets-bundle
|
7 |
Domain Path: /languages
|
8 |
Author: SiteOrigin
|
@@ -12,12 +12,16 @@ License: GPL3
|
|
12 |
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
13 |
*/
|
14 |
|
15 |
-
define('SOW_BUNDLE_VERSION', '1.
|
16 |
-
define('SOW_BUNDLE_JS_SUFFIX', '.min');
|
17 |
define('SOW_BUNDLE_BASE_FILE', __FILE__);
|
18 |
|
|
|
|
|
|
|
|
|
|
|
19 |
if( !function_exists('siteorigin_widget_get_plugin_path') ) {
|
20 |
-
include plugin_dir_path(__FILE__).'base/
|
21 |
include plugin_dir_path(__FILE__).'icons/icons.php';
|
22 |
}
|
23 |
|
@@ -235,7 +239,7 @@ class SiteOrigin_Widgets_Bundle {
|
|
235 |
foreach( $active_widgets as $widget_id => $active ) {
|
236 |
if( empty($active) ) continue;
|
237 |
|
238 |
-
foreach( $
|
239 |
if ( !file_exists($folder . $widget_id.'/'.$widget_id.'.php') ) continue;
|
240 |
|
241 |
// Include this widget file
|
2 |
/*
|
3 |
Plugin Name: SiteOrigin Widgets Bundle
|
4 |
Description: A collection of all widgets, neatly bundled into a single plugin. It's also a framework to code your own widgets on top of.
|
5 |
+
Version: 1.6
|
6 |
Text Domain: so-widgets-bundle
|
7 |
Domain Path: /languages
|
8 |
Author: SiteOrigin
|
12 |
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
13 |
*/
|
14 |
|
15 |
+
define('SOW_BUNDLE_VERSION', '1.6');
|
|
|
16 |
define('SOW_BUNDLE_BASE_FILE', __FILE__);
|
17 |
|
18 |
+
// Allow JS suffix to be pre-set
|
19 |
+
if( !defined( 'SOW_BUNDLE_JS_SUFFIX' ) ) {
|
20 |
+
define('SOW_BUNDLE_JS_SUFFIX', '.min');
|
21 |
+
}
|
22 |
+
|
23 |
if( !function_exists('siteorigin_widget_get_plugin_path') ) {
|
24 |
+
include plugin_dir_path(__FILE__).'base/base.php';
|
25 |
include plugin_dir_path(__FILE__).'icons/icons.php';
|
26 |
}
|
27 |
|
239 |
foreach( $active_widgets as $widget_id => $active ) {
|
240 |
if( empty($active) ) continue;
|
241 |
|
242 |
+
foreach( $widget_folders as $folder ) {
|
243 |
if ( !file_exists($folder . $widget_id.'/'.$widget_id.'.php') ) continue;
|
244 |
|
245 |
// Include this widget file
|
widgets/button/button.php
CHANGED
@@ -78,22 +78,29 @@ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget {
|
|
78 |
),
|
79 |
),
|
80 |
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
'
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
),
|
96 |
-
),
|
97 |
|
98 |
'theme' => array(
|
99 |
'type' => 'select',
|
@@ -188,10 +195,6 @@ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget {
|
|
188 |
);
|
189 |
}
|
190 |
|
191 |
-
function get_template_name($instance) {
|
192 |
-
return 'base';
|
193 |
-
}
|
194 |
-
|
195 |
function get_style_name($instance) {
|
196 |
if(empty($instance['design']['theme'])) return 'atom';
|
197 |
return $instance['design']['theme'];
|
@@ -206,8 +209,9 @@ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget {
|
|
206 |
*/
|
207 |
function get_less_variables($instance){
|
208 |
if( empty( $instance ) || empty( $instance['design'] ) ) return array();
|
209 |
-
|
210 |
return array(
|
|
|
|
|
211 |
'button_color' => $instance['design']['button_color'],
|
212 |
'text_color' => $instance['design']['text_color'],
|
213 |
|
78 |
),
|
79 |
),
|
80 |
|
81 |
+
'design' => array(
|
82 |
+
'type' => 'section',
|
83 |
+
'label' => __('Design and layout', 'so-widgets-bundle'),
|
84 |
+
'hide' => true,
|
85 |
+
'fields' => array(
|
86 |
+
|
87 |
+
'width' => array(
|
88 |
+
'type' => 'measurement',
|
89 |
+
'label' => __( 'Width', 'so-widgets-bundle' ),
|
90 |
+
'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' )
|
91 |
+
),
|
92 |
+
|
93 |
+
'align' => array(
|
94 |
+
'type' => 'select',
|
95 |
+
'label' => __('Align', 'so-widgets-bundle'),
|
96 |
+
'default' => 'center',
|
97 |
+
'options' => array(
|
98 |
+
'left' => __('Left', 'so-widgets-bundle'),
|
99 |
+
'right' => __('Right', 'so-widgets-bundle'),
|
100 |
+
'center' => __('Center', 'so-widgets-bundle'),
|
101 |
+
'justify' => __('Justify', 'so-widgets-bundle'),
|
102 |
+
),
|
103 |
),
|
|
|
104 |
|
105 |
'theme' => array(
|
106 |
'type' => 'select',
|
195 |
);
|
196 |
}
|
197 |
|
|
|
|
|
|
|
|
|
198 |
function get_style_name($instance) {
|
199 |
if(empty($instance['design']['theme'])) return 'atom';
|
200 |
return $instance['design']['theme'];
|
209 |
*/
|
210 |
function get_less_variables($instance){
|
211 |
if( empty( $instance ) || empty( $instance['design'] ) ) return array();
|
|
|
212 |
return array(
|
213 |
+
'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '',
|
214 |
+
'has_button_width' => empty( $instance['design']['width'] ) ? 'false' : 'true',
|
215 |
'button_color' => $instance['design']['button_color'],
|
216 |
'text_color' => $instance['design']['text_color'],
|
217 |
|
widgets/button/styles/atom.less
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
@import "../../../base/less/mixins";
|
2 |
|
|
|
|
|
3 |
@button_color: #41a9d5;
|
4 |
@border_color: darken(@button_color, 15%);
|
5 |
@text_color: #FFFFFF;
|
@@ -12,6 +14,12 @@
|
|
12 |
.ow-button-base {
|
13 |
|
14 |
a {
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
font-size: @font_size;
|
16 |
padding: @padding @padding*2;
|
17 |
.gradient(@button_color, darken(@button_color, 10%), @button_color);
|
@@ -48,4 +56,4 @@
|
|
48 |
color: lighten(@text_color, 2%);
|
49 |
}
|
50 |
}
|
51 |
-
}
|
1 |
@import "../../../base/less/mixins";
|
2 |
|
3 |
+
@button_width: '';
|
4 |
+
@has_button_width: false;
|
5 |
@button_color: #41a9d5;
|
6 |
@border_color: darken(@button_color, 15%);
|
7 |
@text_color: #FFFFFF;
|
14 |
.ow-button-base {
|
15 |
|
16 |
a {
|
17 |
+
.box-sizing(border-box);
|
18 |
+
.btn_width() when( @has_button_width = true) {
|
19 |
+
width: @button_width;
|
20 |
+
}
|
21 |
+
.btn_width();
|
22 |
+
|
23 |
font-size: @font_size;
|
24 |
padding: @padding @padding*2;
|
25 |
.gradient(@button_color, darken(@button_color, 10%), @button_color);
|
56 |
color: lighten(@text_color, 2%);
|
57 |
}
|
58 |
}
|
59 |
+
}
|
widgets/button/styles/flat.less
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
@import "../../../base/less/mixins";
|
2 |
|
|
|
|
|
3 |
@button_color: #41a9d5;
|
4 |
@border_color: darken(@button_color, 5%);
|
5 |
@text_color: #FFFFFF;
|
@@ -13,6 +15,12 @@
|
|
13 |
.clearfix();
|
14 |
|
15 |
a {
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
font-size: @font_size;
|
17 |
padding: @padding @padding*2;
|
18 |
background: @button_color;
|
@@ -48,4 +56,4 @@
|
|
48 |
color: lighten(@text_color, 4%);
|
49 |
}
|
50 |
}
|
51 |
-
}
|
1 |
@import "../../../base/less/mixins";
|
2 |
|
3 |
+
@button_width: '';
|
4 |
+
@has_button_width: false;
|
5 |
@button_color: #41a9d5;
|
6 |
@border_color: darken(@button_color, 5%);
|
7 |
@text_color: #FFFFFF;
|
15 |
.clearfix();
|
16 |
|
17 |
a {
|
18 |
+
.box-sizing(border-box);
|
19 |
+
.btn_width() when( @has_button_width = true) {
|
20 |
+
width: @button_width;
|
21 |
+
}
|
22 |
+
.btn_width();
|
23 |
+
|
24 |
font-size: @font_size;
|
25 |
padding: @padding @padding*2;
|
26 |
background: @button_color;
|
56 |
color: lighten(@text_color, 4%);
|
57 |
}
|
58 |
}
|
59 |
+
}
|
widgets/button/styles/wire.less
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
@import "../../../base/less/mixins";
|
2 |
|
|
|
|
|
3 |
@button_color: #41a9d5;
|
4 |
@text_color: #FFFFFF;
|
5 |
|
@@ -12,6 +14,12 @@
|
|
12 |
.clearfix();
|
13 |
|
14 |
a {
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
font-size: @font_size;
|
16 |
padding: @padding @padding*2;
|
17 |
background: transparent;
|
@@ -45,4 +53,4 @@
|
|
45 |
color: @text_color !important;
|
46 |
}
|
47 |
}
|
48 |
-
}
|
1 |
@import "../../../base/less/mixins";
|
2 |
|
3 |
+
@button_width: '';
|
4 |
+
@has_button_width: false;
|
5 |
@button_color: #41a9d5;
|
6 |
@text_color: #FFFFFF;
|
7 |
|
14 |
.clearfix();
|
15 |
|
16 |
a {
|
17 |
+
.box-sizing(border-box);
|
18 |
+
.btn_width() when( @has_button_width = true) {
|
19 |
+
width: @button_width;
|
20 |
+
}
|
21 |
+
.btn_width();
|
22 |
+
|
23 |
font-size: @font_size;
|
24 |
padding: @padding @padding*2;
|
25 |
background: transparent;
|
53 |
color: @text_color !important;
|
54 |
}
|
55 |
}
|
56 |
+
}
|
widgets/button/tpl/{base.php → default.php}
RENAMED
@@ -14,7 +14,6 @@ if( !empty($instance['design']['hover']) ) $classes[] = 'ow-button-hover';
|
|
14 |
if(!empty($instance['attributes']['title'])) $button_attributes['title'] = esc_attr($instance['attributes']['title']);
|
15 |
if(!empty($instance['attributes']['onclick'])) $button_attributes['onclick'] = esc_attr($instance['attributes']['onclick']);
|
16 |
?>
|
17 |
-
|
18 |
<a <?php foreach($button_attributes as $name => $val) echo $name . '="' . $val . '" ' ?>>
|
19 |
<span>
|
20 |
<?php
|
@@ -35,4 +34,4 @@ if( !empty($instance['design']['hover']) ) $classes[] = 'ow-button-hover';
|
|
35 |
<?php echo wp_kses_post($instance['text']) ?>
|
36 |
</span>
|
37 |
</a>
|
38 |
-
</div>
|
14 |
if(!empty($instance['attributes']['title'])) $button_attributes['title'] = esc_attr($instance['attributes']['title']);
|
15 |
if(!empty($instance['attributes']['onclick'])) $button_attributes['onclick'] = esc_attr($instance['attributes']['onclick']);
|
16 |
?>
|
|
|
17 |
<a <?php foreach($button_attributes as $name => $val) echo $name . '="' . $val . '" ' ?>>
|
18 |
<span>
|
19 |
<?php
|
34 |
<?php echo wp_kses_post($instance['text']) ?>
|
35 |
</span>
|
36 |
</a>
|
37 |
+
</div>
|
widgets/contact/contact.php
CHANGED
@@ -715,50 +715,23 @@ class SiteOrigin_Widgets_ContactForm_Widget extends SiteOrigin_Widget {
|
|
715 |
<?php
|
716 |
}
|
717 |
?><span class="sow-field-container"><?php
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
if( !empty($field['options']) ) {
|
736 |
-
if( empty($value) || !is_array( $value ) ) {
|
737 |
-
$value = array();
|
738 |
-
}
|
739 |
-
|
740 |
-
echo '<ul>';
|
741 |
-
foreach ( $field['options'] as $i => $option ) {
|
742 |
-
echo '<li>';
|
743 |
-
echo '<label>';
|
744 |
-
echo '<input type="checkbox" value="' . esc_attr($option['value']) . '" name="' . esc_attr( $field_name ) . '[]" id="' . esc_attr( $field_id ) . '-' . $i . '" ' . checked( in_array($option['value'], $value) , true, false) . ' /> ';
|
745 |
-
echo esc_html( $option['value'] );
|
746 |
-
echo '</li>';
|
747 |
-
}
|
748 |
-
echo '</ul>';
|
749 |
-
}
|
750 |
-
break;
|
751 |
-
|
752 |
-
case 'textarea':
|
753 |
-
echo '<textarea name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" rows="10"' . ( $show_placeholder ? 'placeholder="' . esc_attr( $field['label'] ) . '"' : '' ) . '>' . esc_textarea($value) . '</textarea>';
|
754 |
-
break;
|
755 |
-
|
756 |
-
case 'subject':
|
757 |
-
case 'name':
|
758 |
-
default:
|
759 |
-
echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr($value) . '" class="sow-text-field" ' . ( $show_placeholder ? 'placeholder="' . esc_attr( $field['label'] ) . '"' : '' ) . '/>';
|
760 |
-
break;
|
761 |
-
|
762 |
}
|
763 |
?></span><?php
|
764 |
|
@@ -818,8 +791,13 @@ class SiteOrigin_Widgets_ContactForm_Widget extends SiteOrigin_Widget {
|
|
818 |
$value = !empty( $post_vars[$field_name] ) ? $post_vars[$field_name] : '';
|
819 |
|
820 |
if( $field['required']['required'] && empty($value) ) {
|
821 |
-
|
822 |
-
|
|
|
|
|
|
|
|
|
|
|
823 |
}
|
824 |
|
825 |
switch( $field['type'] ) {
|
@@ -854,17 +832,19 @@ class SiteOrigin_Widgets_ContactForm_Widget extends SiteOrigin_Widget {
|
|
854 |
}
|
855 |
}
|
856 |
|
857 |
-
// Add in the default subject
|
858 |
-
if( empty($email_fields['subject']) && !empty($instance['settings']['
|
859 |
-
$email_fields['subject'] = $instance['settings']['default_subject'];
|
860 |
-
}
|
861 |
-
if( !empty($instance['settings']['subject_prefix']) ) {
|
862 |
$email_fields['subject'] = $instance['settings']['subject_prefix'] . ' ' . $email_fields['subject'];
|
863 |
}
|
864 |
|
865 |
// Now we do some email message validation
|
866 |
if( empty($errors) ) {
|
867 |
$email_errors = $this->validate_mail( $email_fields );
|
|
|
|
|
|
|
|
|
|
|
868 |
if( !empty($email_errors) ) {
|
869 |
$errors['_general'] = $email_errors;
|
870 |
}
|
@@ -1060,3 +1040,25 @@ class SiteOrigin_Widgets_ContactForm_Widget extends SiteOrigin_Widget {
|
|
1060 |
|
1061 |
}
|
1062 |
siteorigin_widget_register( 'sow-contact-form', __FILE__, 'SiteOrigin_Widgets_ContactForm_Widget' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
715 |
<?php
|
716 |
}
|
717 |
?><span class="sow-field-container"><?php
|
718 |
+
$class_name = empty( $field['type'] ) ? '' : 'SiteOrigin_Widget_ContactForm_Field_' . ucwords( $field['type'] );
|
719 |
+
// This does autoloading if required.
|
720 |
+
if ( class_exists( $class_name ) ) {
|
721 |
+
/**
|
722 |
+
* @var $contact_field SiteOrigin_Widget_ContactForm_Field_Base
|
723 |
+
*/
|
724 |
+
$field_input_options = array(
|
725 |
+
'field' => $field,
|
726 |
+
'field_id' => $field_id,
|
727 |
+
'field_name' => $field_name,
|
728 |
+
'value' => $value,
|
729 |
+
'show_placeholder' => $show_placeholder
|
730 |
+
);
|
731 |
+
$contact_field = new $class_name( $field_input_options );
|
732 |
+
$contact_field->render();
|
733 |
+
} else {
|
734 |
+
echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $value ) . '" class="sow-text-field" ' . ( $show_placeholder ? 'placeholder="' . esc_attr( $field['label'] ) . '"' : '' ) . '/>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
735 |
}
|
736 |
?></span><?php
|
737 |
|
791 |
$value = !empty( $post_vars[$field_name] ) ? $post_vars[$field_name] : '';
|
792 |
|
793 |
if( $field['required']['required'] && empty($value) ) {
|
794 |
+
// Add in the default subject
|
795 |
+
if( $field['type'] == 'subject' && !empty($instance['settings']['default_subject'] ) ) {
|
796 |
+
$value = $instance['settings']['default_subject'];
|
797 |
+
} else {
|
798 |
+
$errors[ $field_name ] = ! empty( $field['required']['missing_message'] ) ? $field['required']['missing_message'] : __( 'Required field', 'so-widgets-bundle' );
|
799 |
+
continue;
|
800 |
+
}
|
801 |
}
|
802 |
|
803 |
switch( $field['type'] ) {
|
832 |
}
|
833 |
}
|
834 |
|
835 |
+
// Add in the default subject prefix
|
836 |
+
if( !empty( $email_fields['subject'] ) && !empty($instance['settings']['subject_prefix']) ) {
|
|
|
|
|
|
|
837 |
$email_fields['subject'] = $instance['settings']['subject_prefix'] . ' ' . $email_fields['subject'];
|
838 |
}
|
839 |
|
840 |
// Now we do some email message validation
|
841 |
if( empty($errors) ) {
|
842 |
$email_errors = $this->validate_mail( $email_fields );
|
843 |
+
// Missing subject input and no default subject set. Revert to using a generic default 'SiteName Contact Form'
|
844 |
+
if ( ! isset( $email_fields['subject'] ) && ! empty( $email_errors['subject'] ) ) {
|
845 |
+
unset($email_errors['subject']);
|
846 |
+
$email_fields['subject'] = get_bloginfo() . ' ' . __( 'Contact Form', 'siteorigin-widgets' );
|
847 |
+
}
|
848 |
if( !empty($email_errors) ) {
|
849 |
$errors['_general'] = $email_errors;
|
850 |
}
|
1040 |
|
1041 |
}
|
1042 |
siteorigin_widget_register( 'sow-contact-form', __FILE__, 'SiteOrigin_Widgets_ContactForm_Widget' );
|
1043 |
+
|
1044 |
+
// Tell the autoloader where to look for contactform field classes.
|
1045 |
+
function contactform_fields_class_paths( $class_paths ) {
|
1046 |
+
$loader = SiteOrigin_Widget_Field_Class_Loader::single();
|
1047 |
+
|
1048 |
+
$loader->add_class_prefixes(
|
1049 |
+
apply_filters( 'siteorigin_widgets_contact_form_field_class_prefixes', array(
|
1050 |
+
'SiteOrigin_Widget_ContactForm_Field_'
|
1051 |
+
) ),
|
1052 |
+
'contact-form'
|
1053 |
+
);
|
1054 |
+
|
1055 |
+
$loader->add_class_paths(
|
1056 |
+
apply_filters( 'siteorigin_widgets_contact_form_field_class_paths', array(
|
1057 |
+
plugin_dir_path( __FILE__ ) . 'fields/'
|
1058 |
+
) ),
|
1059 |
+
'contact-form'
|
1060 |
+
);
|
1061 |
+
|
1062 |
+
return $class_paths;
|
1063 |
+
}
|
1064 |
+
add_filter( 'init', 'contactform_fields_class_paths' );
|
widgets/contact/fields/base.class.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
abstract class SiteOrigin_Widget_ContactForm_Field_Base {
|
3 |
+
|
4 |
+
/**
|
5 |
+
* The options for this field. Used when enqueueing styles and scripts and rendering the field.
|
6 |
+
*
|
7 |
+
* @access protected
|
8 |
+
* @var array
|
9 |
+
*/
|
10 |
+
protected $options;
|
11 |
+
|
12 |
+
public function __construct( $options ) {
|
13 |
+
$this->options = $options;
|
14 |
+
$this->init();
|
15 |
+
}
|
16 |
+
|
17 |
+
private function init() {
|
18 |
+
$this->initialize( $this->options );
|
19 |
+
}
|
20 |
+
|
21 |
+
protected function initialize( $options ) {
|
22 |
+
}
|
23 |
+
|
24 |
+
abstract protected function render_field( $options );
|
25 |
+
|
26 |
+
public function render() {
|
27 |
+
$this->render_field( $this->options );
|
28 |
+
}
|
29 |
+
}
|
widgets/contact/fields/checkboxes.class.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|