Version Description
- 11 October 2017 =
- New Accordion widget!
- Prevent multiple initialization of media field.
- Use correct path for widget banner when defined in a theme.
- Video: Added option to show/hide related YouTube videos at end of video.
- Slider: Handle links inside slider frames first and then allow processing of frame background clicks.
- Give repeated fields in widget fields unique ids for state handling.
- New multi-measurement field.
- Widget Manager Path Comparison fix. (allows for settings to work)
- Button: Use
esc_js
instead ofesc_attr
for onclick.
Download this release
Release Info
Developer | gpriday |
Plugin | SiteOrigin Widgets Bundle |
Version | 1.10.0 |
Comparing to | |
See all releases |
Code changes from version 1.9.10 to 1.10.0
- admin/tpl/admin.php +9 -5
- base/base.php +1 -0
- base/inc/array-utils.php +23 -0
- base/inc/fields/css/multi-measurement-field.css +19 -0
- base/inc/fields/js/media-field.js +6 -1
- base/inc/fields/js/media-field.min.js +1 -1
- base/inc/fields/js/multi-measurement-field.js +57 -0
- base/inc/fields/js/multi-measurement-field.min.js +1 -0
- base/inc/fields/multi-measurement.class.php +113 -0
- base/inc/fields/widget.class.php +4 -2
- base/inc/widget-manager.class.php +1 -2
- base/js/admin.js +55 -25
- base/js/admin.min.js +1 -1
- base/siteorigin-widget.class.php +21 -7
- compat/elementor/styles.css +0 -9
- js/slider/jquery.slider.js +10 -7
- js/slider/jquery.slider.min.js +1 -1
- lang/so-widgets-bundle.pot +117 -37
- readme.txt +13 -2
- so-widgets-bundle.php +6 -5
- widgets/accordion/accordion.php +211 -0
- widgets/accordion/js/accordion.js +37 -0
- widgets/accordion/js/accordion.min.js +1 -0
- widgets/accordion/styles/default.less +97 -0
- widgets/accordion/tpl/default.php +37 -0
- widgets/button/button.php +1 -3
- widgets/button/tpl/default.php +4 -1
- widgets/post-carousel/post-carousel.php +14 -14
- widgets/video/tpl/default.php +2 -1
- widgets/video/video.php +31 -2
admin/tpl/admin.php
CHANGED
@@ -22,14 +22,18 @@
|
|
22 |
|
23 |
<div id="widgets-list">
|
24 |
|
25 |
-
<?php
|
|
|
|
|
|
|
26 |
<div class="so-widget-wrap">
|
27 |
<div class="so-widget so-widget-is-<?php echo $widget['Active'] ? 'active' : 'inactive' ?>" data-id="<?php echo esc_attr( $widget['ID'] ) ?>">
|
28 |
|
29 |
<?php
|
30 |
$banner = '';
|
31 |
-
|
32 |
-
|
|
|
33 |
}
|
34 |
$banner = apply_filters('siteorigin_widgets_widget_banner', $banner, $widget);
|
35 |
?>
|
@@ -71,8 +75,8 @@
|
|
71 |
/** @var SiteOrigin_Widget $widget_object */
|
72 |
$widget_object = !empty( $widget_objects[ $file ] ) ? $widget_objects[ $file ] : false;
|
73 |
if( !empty( $widget_object ) && $widget_object->has_form( 'settings' ) ) {
|
74 |
-
$rel_path = str_replace( WP_PLUGIN_DIR, '', $file );
|
75 |
-
|
76 |
$form_url = add_query_arg( array(
|
77 |
'id' => $rel_path,
|
78 |
'action' => 'so_widgets_setting_form',
|
22 |
|
23 |
<div id="widgets-list">
|
24 |
|
25 |
+
<?php
|
26 |
+
foreach( $widgets as $file => $widget ):
|
27 |
+
$file = wp_normalize_path( $file );
|
28 |
+
?>
|
29 |
<div class="so-widget-wrap">
|
30 |
<div class="so-widget so-widget-is-<?php echo $widget['Active'] ? 'active' : 'inactive' ?>" data-id="<?php echo esc_attr( $widget['ID'] ) ?>">
|
31 |
|
32 |
<?php
|
33 |
$banner = '';
|
34 |
+
$widget_dir = dirname( $widget['File'] );
|
35 |
+
if( file_exists( $widget_dir . '/assets/banner.svg' ) ) {
|
36 |
+
$banner = str_replace( WP_CONTENT_DIR, content_url(), $widget_dir ) . '/assets/banner.svg';
|
37 |
}
|
38 |
$banner = apply_filters('siteorigin_widgets_widget_banner', $banner, $widget);
|
39 |
?>
|
75 |
/** @var SiteOrigin_Widget $widget_object */
|
76 |
$widget_object = !empty( $widget_objects[ $file ] ) ? $widget_objects[ $file ] : false;
|
77 |
if( !empty( $widget_object ) && $widget_object->has_form( 'settings' ) ) {
|
78 |
+
$rel_path = str_replace( wp_normalize_path( WP_PLUGIN_DIR ), '', $file );
|
79 |
+
|
80 |
$form_url = add_query_arg( array(
|
81 |
'id' => $rel_path,
|
82 |
'action' => 'so_widgets_setting_form',
|
base/base.php
CHANGED
@@ -7,6 +7,7 @@ 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 |
include plugin_dir_path(__FILE__).'inc/actions.php';
|
12 |
include plugin_dir_path(__FILE__).'inc/shortcode.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/array-utils.php';
|
11 |
include plugin_dir_path(__FILE__).'inc/attachments.php';
|
12 |
include plugin_dir_path(__FILE__).'inc/actions.php';
|
13 |
include plugin_dir_path(__FILE__).'inc/shortcode.php';
|
base/inc/array-utils.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* From this SO answer by Halil Özgür: https://stackoverflow.com/a/18781630/3710600
|
5 |
+
*
|
6 |
+
* Works with both integer and string positions.
|
7 |
+
*
|
8 |
+
* @param array $array
|
9 |
+
* @param int|string $position
|
10 |
+
* @param mixed $insert
|
11 |
+
*/
|
12 |
+
function siteorigin_widgets_array_insert( &$array, $position, $insert ) {
|
13 |
+
if ( is_int( $position ) ) {
|
14 |
+
array_splice( $array, $position, 0, $insert );
|
15 |
+
} else {
|
16 |
+
$pos = array_search( $position, array_keys( $array ) );
|
17 |
+
$array = array_merge(
|
18 |
+
array_slice( $array, 0, $pos ),
|
19 |
+
$insert,
|
20 |
+
array_slice( $array, $pos )
|
21 |
+
);
|
22 |
+
}
|
23 |
+
}
|
base/inc/fields/css/multi-measurement-field.css
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.siteorigin-widget-form .siteorigin-widget-field .sow-multi-measurement-container {
|
2 |
+
display: flex;
|
3 |
+
}
|
4 |
+
.siteorigin-widget-form .siteorigin-widget-field .sow-multi-measurement-container .sow-multi-measurement-input-container:not(:first-child) {
|
5 |
+
margin-left: 10px;
|
6 |
+
}
|
7 |
+
.siteorigin-widget-form .siteorigin-widget-field .sow-multi-measurement-container .sow-multi-measurement-input-container > label {
|
8 |
+
padding-left: 5px;
|
9 |
+
}
|
10 |
+
.siteorigin-widget-form .siteorigin-widget-field .sow-multi-measurement-container .sow-multi-measurement-input-container input[type="text"].sow-multi-measurement-input {
|
11 |
+
float: left;
|
12 |
+
max-width: 58px;
|
13 |
+
margin: 1px;
|
14 |
+
height: 28px;
|
15 |
+
vertical-align: middle;
|
16 |
+
}
|
17 |
+
.siteorigin-widget-form .siteorigin-widget-field .sow-multi-measurement-container .sow-multi-measurement-input-container select.sow-multi-measurement-select-unit {
|
18 |
+
min-width: inherit;
|
19 |
+
}
|
base/inc/fields/js/media-field.js
CHANGED
@@ -7,6 +7,10 @@
|
|
7 |
var $media = $field.find('> .media-field-wrapper');
|
8 |
var $inputField = $field.find( '.siteorigin-widget-input' ).not('.media-fallback-external');
|
9 |
|
|
|
|
|
|
|
|
|
10 |
// Handle the media uploader
|
11 |
$media.find( '.media-upload-button' ).click(function(e){
|
12 |
e.preventDefault();
|
@@ -99,7 +103,7 @@
|
|
99 |
} );
|
100 |
|
101 |
// Everything for the dialog
|
102 |
-
var dialog
|
103 |
|
104 |
var reflowDialog = function() {
|
105 |
if( ! dialog ) return;
|
@@ -398,6 +402,7 @@
|
|
398 |
}
|
399 |
} );
|
400 |
|
|
|
401 |
});
|
402 |
|
403 |
} )( jQuery );
|
7 |
var $media = $field.find('> .media-field-wrapper');
|
8 |
var $inputField = $field.find( '.siteorigin-widget-input' ).not('.media-fallback-external');
|
9 |
|
10 |
+
if ( $media.data( 'initialized' ) ) {
|
11 |
+
return;
|
12 |
+
}
|
13 |
+
|
14 |
// Handle the media uploader
|
15 |
$media.find( '.media-upload-button' ).click(function(e){
|
16 |
e.preventDefault();
|
103 |
} );
|
104 |
|
105 |
// Everything for the dialog
|
106 |
+
var dialog;
|
107 |
|
108 |
var reflowDialog = function() {
|
109 |
if( ! dialog ) return;
|
402 |
}
|
403 |
} );
|
404 |
|
405 |
+
$media.data( 'initialized', true );
|
406 |
});
|
407 |
|
408 |
} )( jQuery );
|
base/inc/fields/js/media-field.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(e){e(document).on("sowsetupformfield",".siteorigin-widget-field-type-media",function(t){var i=e(this),
|
1 |
+
!function(e){e(document).on("sowsetupformfield",".siteorigin-widget-field-type-media",function(t){var i=e(this),a=i.find("> .media-field-wrapper"),s=i.find(".siteorigin-widget-input").not(".media-fallback-external");if(!a.data("initialized")){a.find(".media-upload-button").click(function(t){if(t.preventDefault(),void 0!==wp.media){var a=e(this),n=e(this).data("frame");if(n)return n.open(),!1;n=wp.media({title:a.data("choose"),library:{type:a.data("library").split(",").map(function(e){return e.trim()})},button:{text:a.data("update"),close:!1}}),a.data("frame",n),n.on("select",function(){var e=n.state().get("selection").first().attributes;i.find(".current .title").html(e.title),s.val(e.id),s.trigger("change",{silent:!0});var t=i.find(".current .thumbnail");void 0!==e.sizes?void 0!==e.sizes.thumbnail?t.attr("src",e.sizes.thumbnail.url).fadeIn():t.attr("src",e.sizes.full.url).fadeIn():t.attr("src",e.icon).fadeIn(),i.find(".media-remove-button").removeClass("remove-hide"),n.close()}),n.open()}}),a.find(".current").mouseenter(function(){var t=e(this).find(".title");""!==t.html()&&t.fadeIn("fast")}).mouseleave(function(){e(this).find(".title").clearQueue().fadeOut("fast")}),i.find("a.media-remove-button").click(function(t){t.preventDefault(),i.find(".current .title").html(""),s.val(""),i.find(".current .thumbnail").fadeOut("fast"),e(this).addClass("remove-hide")});var n,r=function(){if(n){var e=n.find(".so-widgets-image-results");if(0!==e.length){var t=e.width(),i=Math.floor(t/276),a=t-276*i,s=a/i+260;e.find(".so-widgets-result-image").css({width:s,height:s/1.4})}}};e(window).resize(r);var o=function(){if(!n){n=e(e("#so-widgets-bundle-tpl-image-search-dialog").html().trim()).appendTo("body"),n.find(".close").click(function(){n.hide()});var t=n.find(".so-widgets-image-results"),a=function(i,a){n.find(".so-widgets-results-loading").fadeIn("fast"),n.find(".so-widgets-results-loading strong").html(n.find(".so-widgets-results-loading strong").data("loading")),n.find(".so-widgets-results-more").hide(),e.get(ajaxurl,{action:"so_widgets_image_search",q:i,page:a,_sononce:n.find('input[name="_sononce"]').val()},function(s){if(s.error)return void alert(s.message);t.removeClass("so-loading"),e.each(s.items,function(i,a){var s=e(e("#so-widgets-bundle-tpl-image-search-result").html().trim()).appendTo(t).addClass("source-"+a.source),n=s.find(".so-widgets-result-image");n.css("background-image","url("+a.thumbnail+")"),n.data("thumbnail",a.thumbnail),n.data("preview",a.preview),a.url&&n.attr({href:a.url,target:"_blank"}),a.full_url&&(n.data({full_url:a.full_url,import_signature:a.import_signature}),n.attr("href",a.full_url)),"shutterstock"===a.source&&n.append(e("#so-widgets-bundle-tpl-image-search-result-sponsored").html())}),1===a&&(n.find("#so-widgets-image-search-suggestions ul").empty(),e.each(s.keywords,function(t,i){n.find("#so-widgets-image-search-suggestions").show(),n.find("#so-widgets-image-search-suggestions ul").append(e("<li></li>").append(e('<a href="#"></a>').html(i).data("keyword",i)))})),n.find(".so-widgets-results-loading").fadeOut("fast"),r(),n.find(".so-widgets-results-more").show().find("button").data({query:i,page:a+1})})};n.find("#so-widgets-image-search-form").submit(function(e){e.preventDefault();var i=n.find(".so-widgets-search-input").val();t.empty(),""!==i&&a(i,1)}),n.on("click",".so-keywords-list a",function(t){t.preventDefault();var i=e(this).blur();n.find(".so-widgets-search-input").val(i.data("keyword")),n.find("#so-widgets-image-search-form").submit()}),n.find(".so-widgets-results-more button").click(function(){var t=e(this);a(t.data("query"),t.data("page"))});var o;n.on("click",".so-widgets-result-image",function(t){var a=e(this);if(a.data("full_url")&&(t.preventDefault(),confirm(n.data("confirm-import")))){n.addClass("so-widgets-importing");var r=e("#post_ID").val();null===r&&(r=""),e.get(ajaxurl,{action:"so_widgets_image_import",full_url:a.data("full_url"),import_signature:a.data("import_signature"),post_id:r,_sononce:n.find('input[name="_sononce"]').val()},function(e){n.find("#so-widgets-image-search-frame").removeClass("so-widgets-importing"),!1===e.error?(n.hide(),n.find(".so-widgets-results-loading").hide(),s.val(e.attachment_id).trigger("change",{silent:!0}),i.find(".current .thumbnail").attr("src",e.thumb).fadeIn(),i.find(".media-remove-button").removeClass("remove-hide")):(alert(e.message),n.find(".so-widgets-results-loading").hide())}),n.find(".so-widgets-results-loading").fadeIn("fast"),n.find(".so-widgets-results-loading strong").html(n.find(".so-widgets-results-loading strong").data("importing")),n.find(".so-widgets-results-more").hide(),n.find("#so-widgets-image-search-frame").addClass("so-widgets-importing")}});var d=n.find(".so-widgets-preview-window");n.on("mouseenter",".so-widgets-result-image",function(){var t=e(this),i=t.data("preview");clearTimeout(o),o=setTimeout(function(){var a=1,s=1;i[1]>.33*e(window).outerWidth()&&(a=.33*e(window).outerWidth()/i[1]),i[2]>.5*e(window).outerHeight()&&(s=.5*e(window).outerHeight()/i[2]);var r=Math.min(a,s);r>1&&(r=1),d.show().find(".so-widgets-preview-window-inside").css({"background-image":"url("+t.data("thumbnail")+")",width:i[1]*r,height:i[2]*r}).append(e("<img />").attr("src",i[0])),n.trigger("mousemove")},1e3)}).on("mouseleave",".so-widgets-result-image",function(){d.hide().find("img").remove(),clearTimeout(o)});var l,u;n.on("mousemove",function(t){if(t.clientX&&(l=t.clientX),t.clientY&&(u=t.clientY),d.is(":visible")){var i=d.outerHeight(),a=d.outerWidth(),s=e(window).outerHeight(),n=e(window).outerWidth(),r=u-i/2;r=Math.max(r,10),r=Math.min(r,s-10-i);var o=l<n/2?l+15:l-15-a;d.css({top:r,left:o})}})}n.show(),n.find(".so-widgets-search-input").focus()};a.find(".find-image-button").click(function(e){e.preventDefault(),o()}),s.change(function(e,t){if(!t||!t.silent){var a=s.val();if(a){var n=i.find(".current .thumbnail"),r=wp.media.attachment(a);r.fetch().done(function(){if(r.has("sizes")){var e=r.get("sizes");void 0!==e.thumbnail?n.attr("src",e.thumbnail.url).fadeIn():n.attr("src",e.full.url).fadeIn()}else n.attr("src",r.get("icon")).fadeIn();i.find(".media-remove-button").removeClass("remove-hide")})}else i.find("a.media-remove-button").click()}}),a.data("initialized",!0)}})}(jQuery);
|
base/inc/fields/js/multi-measurement-field.js
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* global jQuery */
|
2 |
+
|
3 |
+
(function( $ ) {
|
4 |
+
$( document ).on( 'sowsetupformfield', '.siteorigin-widget-field-type-multi-measurement', function ( e ) {
|
5 |
+
|
6 |
+
var valField = $( this ).find( 'input[type="hidden"][class="siteorigin-widget-input"]' );
|
7 |
+
var separator = valField.data( 'separator' );
|
8 |
+
var autoFillEnabled = valField.data( 'autofill' );
|
9 |
+
var values = valField.val() === '' ? [] : valField.val().split( separator );
|
10 |
+
var $valInputs = $( this ).find( '.sow-multi-measurement-input' );
|
11 |
+
var $inputContainers = $( this ).find( '.sow-multi-measurement-input-container' );
|
12 |
+
|
13 |
+
var updateValue = function ( $element ) {
|
14 |
+
var vals = valField.val() === '' ? [] : valField.val().split( separator );
|
15 |
+
var $unitInput = $element.find( '+ .sow-multi-measurement-select-unit' );
|
16 |
+
var index = $valInputs.index( $element );
|
17 |
+
vals[ index ] = $element.val() + ( $element.val() === '' ? '' : $unitInput.val() );
|
18 |
+
valField.val( vals.join( separator ) );
|
19 |
+
};
|
20 |
+
|
21 |
+
$valInputs.each( function ( index, element ) {
|
22 |
+
if ( values.length > index ) {
|
23 |
+
var valueResult = values[ index ].match( /(\d+\.?\d*)([a-z%]+)*/ );
|
24 |
+
if ( valueResult && valueResult.length ) {
|
25 |
+
var amount = valueResult[ 1 ];
|
26 |
+
var unit = valueResult[ 2 ];
|
27 |
+
$( element ).val( amount );
|
28 |
+
$( element ).find( '+ .sow-multi-measurement-select-unit' ).val( unit );
|
29 |
+
}
|
30 |
+
} else {
|
31 |
+
updateValue( $( element ) );
|
32 |
+
}
|
33 |
+
} );
|
34 |
+
|
35 |
+
$inputContainers.change( function ( event ) {
|
36 |
+
var $valInput = $( event.currentTarget ).find( '> .sow-multi-measurement-input' );
|
37 |
+
var doAutofill = autoFillEnabled;
|
38 |
+
if ( autoFillEnabled ) {
|
39 |
+
$valInputs.each( function ( index, element ) {
|
40 |
+
// Only want to autofill if it has been enabled and no other inputs have values.
|
41 |
+
if ( element !== $valInput.eq( 0 ) ) {
|
42 |
+
doAutofill = doAutofill && !( $( element ).val() );
|
43 |
+
}
|
44 |
+
} );
|
45 |
+
}
|
46 |
+
if ( doAutofill ) {
|
47 |
+
$valInputs.each( function( index, element ) {
|
48 |
+
$( element ).val( $valInput.val() );
|
49 |
+
updateValue( $( element ) );
|
50 |
+
} );
|
51 |
+
} else {
|
52 |
+
updateValue( $valInput );
|
53 |
+
}
|
54 |
+
} );
|
55 |
+
|
56 |
+
} );
|
57 |
+
})( jQuery );
|
base/inc/fields/js/multi-measurement-field.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(t){t(document).on("sowsetupformfield",".siteorigin-widget-field-type-multi-measurement",function(e){var i=t(this).find('input[type="hidden"][class="siteorigin-widget-input"]'),n=i.data("separator"),a=i.data("autofill"),l=""===i.val()?[]:i.val().split(n),u=t(this).find(".sow-multi-measurement-input"),s=t(this).find(".sow-multi-measurement-input-container"),o=function(t){var e=""===i.val()?[]:i.val().split(n),a=t.find("+ .sow-multi-measurement-select-unit");e[u.index(t)]=t.val()+(""===t.val()?"":a.val()),i.val(e.join(n))};u.each(function(e,i){if(l.length>e){var n=l[e].match(/(\d+\.?\d*)([a-z%]+)*/);if(n&&n.length){var a=n[1],u=n[2];t(i).val(a),t(i).find("+ .sow-multi-measurement-select-unit").val(u)}}else o(t(i))}),s.change(function(e){var i=t(e.currentTarget).find("> .sow-multi-measurement-input"),n=a;a&&u.each(function(e,a){a!==i.eq(0)&&(n=n&&!t(a).val())}),n?u.each(function(e,n){t(n).val(i.val()),o(t(n))}):o(i)})})}(jQuery);
|
base/inc/fields/multi-measurement.class.php
ADDED
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class SiteOrigin_Widget_Field_Multi_Measurement
|
5 |
+
*/
|
6 |
+
class SiteOrigin_Widget_Field_Multi_Measurement extends SiteOrigin_Widget_Field_Text_Input_Base {
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Configuration of the measurements to be taken. Should be in the form:
|
10 |
+
* `array(
|
11 |
+
* 'padding_left' => array(
|
12 |
+
* 'label' => __( 'Padding left', 'so-widgets-bundle' ),
|
13 |
+
* 'units' => array( 'px', 'rem', 'em', '%' ),
|
14 |
+
* ),
|
15 |
+
* 'padding_right' => __( 'Padding right', 'so-widgets-bundle' ),
|
16 |
+
* 'padding_bottom' => __( 'Padding bottom', 'so-widgets-bundle' ),
|
17 |
+
* 'padding_top' => __( 'Padding top', 'so-widgets-bundle' ),
|
18 |
+
* )`
|
19 |
+
*
|
20 |
+
* The 'units' property is optional and defaults to the list returned by `siteorigin_widgets_get_measurements_list`.
|
21 |
+
*
|
22 |
+
* @access protected
|
23 |
+
* @var array
|
24 |
+
*/
|
25 |
+
protected $measurements;
|
26 |
+
|
27 |
+
/**
|
28 |
+
* String separator for the measurements. Default is an empty space.
|
29 |
+
*
|
30 |
+
* @access protected
|
31 |
+
* @var string
|
32 |
+
*/
|
33 |
+
protected $separator;
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Whether to automatically fill the rest of the inputs when the first value is entered.
|
37 |
+
* Default is false.
|
38 |
+
*
|
39 |
+
* @access protected
|
40 |
+
* @var boolean
|
41 |
+
*/
|
42 |
+
protected $autofill;
|
43 |
+
|
44 |
+
protected function get_default_options() {
|
45 |
+
return array(
|
46 |
+
'separator' => ' ',
|
47 |
+
'autofill' => false,
|
48 |
+
);
|
49 |
+
}
|
50 |
+
|
51 |
+
protected function render_field( $value, $instance ) {
|
52 |
+
?>
|
53 |
+
<div class="sow-multi-measurement-container">
|
54 |
+
<?php
|
55 |
+
foreach ( $this->measurements as $name => $measurement_config ) {
|
56 |
+
$label = empty( $measurement_config['label'] ) ? '' : $measurement_config['label'];
|
57 |
+
$units = empty( $measurement_config['units'] ) ?
|
58 |
+
siteorigin_widgets_get_measurements_list() :
|
59 |
+
$measurement_config['units'];
|
60 |
+
$input_id = $this->element_id . '-' . $name;
|
61 |
+
?>
|
62 |
+
<div class="sow-multi-measurement-input-container">
|
63 |
+
<label for="<?php echo esc_attr( $input_id ) ?>"><?php echo esc_html( $label ) ?></label>
|
64 |
+
<input id="<?php echo esc_attr( $input_id ) ?>" type="text" class="sow-multi-measurement-input">
|
65 |
+
<select class="sow-multi-measurement-select-unit">
|
66 |
+
<?php foreach ( $units as $unit ):?>
|
67 |
+
<option value="<?php echo esc_attr( $unit ) ?>"><?php echo esc_html( $unit ) ?></option>
|
68 |
+
<?php endforeach?>
|
69 |
+
</select>
|
70 |
+
<div class="clear"></div>
|
71 |
+
</div>
|
72 |
+
<?php
|
73 |
+
}
|
74 |
+
?>
|
75 |
+
</div>
|
76 |
+
<input type="hidden"
|
77 |
+
class="siteorigin-widget-input"
|
78 |
+
value="<?php echo esc_attr( $value ) ?>"
|
79 |
+
name="<?php echo esc_attr( $this->element_name ) ?>"
|
80 |
+
data-autofill="<?php echo empty( $this->autofill ) ? 'false' : 'true'; ?>"
|
81 |
+
data-separator="<?php echo esc_attr( $this->separator ) ?>"/><?php
|
82 |
+
}
|
83 |
+
|
84 |
+
public function enqueue_scripts() {
|
85 |
+
wp_enqueue_style( 'so-multi-measurement-field', plugin_dir_url( __FILE__ ) . 'css/multi-measurement-field.css', array(),
|
86 |
+
SOW_BUNDLE_VERSION );
|
87 |
+
wp_enqueue_script( 'so-multi-measurement-field',
|
88 |
+
plugin_dir_url( __FILE__ ) . 'js/multi-measurement-field' . SOW_BUNDLE_JS_SUFFIX . '.js', array( 'jquery' ),
|
89 |
+
SOW_BUNDLE_VERSION );
|
90 |
+
}
|
91 |
+
|
92 |
+
protected function sanitize_field_input( $value, $instance ) {
|
93 |
+
if ( empty( $value ) ) {
|
94 |
+
return $value;
|
95 |
+
}
|
96 |
+
|
97 |
+
$values = explode( $this->separator, $value );
|
98 |
+
$any_values = false;
|
99 |
+
foreach ( $values as $index => $measurement ) {
|
100 |
+
$any_values = $any_values || ! empty( $measurement );
|
101 |
+
preg_match('/(\d+\.?\d*)([a-z%]+)*/', $measurement, $matches);
|
102 |
+
|
103 |
+
$num_matches = count( $matches );
|
104 |
+
|
105 |
+
$val = $num_matches > 1 ? $matches[1] : '0';
|
106 |
+
$unit = $num_matches > 2 ? $matches[2] : 'px';
|
107 |
+
$measurement = $val . $unit;
|
108 |
+
$values[ $index ] = $measurement;
|
109 |
+
}
|
110 |
+
// If all values are empty, just return an empty string.
|
111 |
+
return $any_values ? implode( $this->separator, $values ) : '';
|
112 |
+
}
|
113 |
+
}
|
base/inc/fields/widget.class.php
CHANGED
@@ -27,7 +27,8 @@ class SiteOrigin_Widget_Field_Widget extends SiteOrigin_Widget_Field_Container_B
|
|
27 |
}
|
28 |
|
29 |
protected function render_field( $value, $instance ) {
|
30 |
-
|
|
|
31 |
if ( $this->collapsible ) {
|
32 |
?><div class="siteorigin-widget-section <?php if( $this->state == 'closed' ) echo 'siteorigin-widget-section-hide'; ?>"><?php
|
33 |
}
|
@@ -53,6 +54,7 @@ class SiteOrigin_Widget_Field_Widget extends SiteOrigin_Widget_Field_Container_B
|
|
53 |
if ( $this->collapsible ) {
|
54 |
?></div><?php
|
55 |
}
|
|
|
56 |
}
|
57 |
|
58 |
-
}
|
27 |
}
|
28 |
|
29 |
protected function render_field( $value, $instance ) {
|
30 |
+
|
31 |
+
echo '<div class="siteorigin-widget-widget">';
|
32 |
if ( $this->collapsible ) {
|
33 |
?><div class="siteorigin-widget-section <?php if( $this->state == 'closed' ) echo 'siteorigin-widget-section-hide'; ?>"><?php
|
34 |
}
|
54 |
if ( $this->collapsible ) {
|
55 |
?></div><?php
|
56 |
}
|
57 |
+
echo '</div>';
|
58 |
}
|
59 |
|
60 |
+
}
|
base/inc/widget-manager.class.php
CHANGED
@@ -40,7 +40,7 @@ class SiteOrigin_Widgets_Widget_Manager {
|
|
40 |
* @return mixed
|
41 |
*/
|
42 |
public function register( $id, $path, $class = false ){
|
43 |
-
$path =
|
44 |
if ( empty( $class ) ) {
|
45 |
$class = 'SiteOrigin_Widget_' . str_replace( ' ', '', ucwords( str_replace('-', ' ', $id) ) ) . '_Widget';
|
46 |
}
|
@@ -117,7 +117,6 @@ class SiteOrigin_Widgets_Widget_Manager {
|
|
117 |
* @return mixed
|
118 |
*/
|
119 |
function get_class_from_path( $path ) {
|
120 |
-
$path = realpath( $path );
|
121 |
foreach( $this->registered as $id => $r ) {
|
122 |
if( $r->path == $path ) return $r->class;
|
123 |
}
|
40 |
* @return mixed
|
41 |
*/
|
42 |
public function register( $id, $path, $class = false ){
|
43 |
+
$path = wp_normalize_path( $path );
|
44 |
if ( empty( $class ) ) {
|
45 |
$class = 'SiteOrigin_Widget_' . str_replace( ' ', '', ucwords( str_replace('-', ' ', $id) ) ) . '_Widget';
|
46 |
}
|
117 |
* @return mixed
|
118 |
*/
|
119 |
function get_class_from_path( $path ) {
|
|
|
120 |
foreach( $this->registered as $id => $r ) {
|
121 |
if( $r->path == $path ) return $r->class;
|
122 |
}
|
base/js/admin.js
CHANGED
@@ -48,7 +48,7 @@ var sowbForms = window.sowbForms || {};
|
|
48 |
// Indicates if the handler has run
|
49 |
var handlerRun = {};
|
50 |
|
51 |
-
var repeaterIndex = sowbForms.
|
52 |
if (repeaterIndex !== false) {
|
53 |
var repeaterHandler = {};
|
54 |
for ( var rptrState in handler) {
|
@@ -56,6 +56,23 @@ var sowbForms = window.sowbForms || {};
|
|
56 |
}
|
57 |
handler = repeaterHandler;
|
58 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
|
60 |
// Go through all the handlers
|
61 |
for (var state in handler) {
|
@@ -196,10 +213,10 @@ var sowbForms = window.sowbForms || {};
|
|
196 |
var $fields = $el.find('> .siteorigin-widget-field');
|
197 |
|
198 |
// Process any sub sections
|
199 |
-
$fields.find('> .siteorigin-widget-section').sowSetupForm();
|
200 |
|
201 |
// Process any sub widgets whose fields aren't contained in a section
|
202 |
-
$fields.filter('.siteorigin-widget-
|
203 |
|
204 |
// Store the field names
|
205 |
$fields.find('.siteorigin-widget-input').each(function (i, input) {
|
@@ -234,15 +251,16 @@ var sowbForms = window.sowbForms || {};
|
|
234 |
// Handle the sections
|
235 |
var expandContainer = function () {
|
236 |
$(this).toggleClass('siteorigin-widget-section-visible');
|
237 |
-
$(this).
|
238 |
-
|
239 |
-
|
|
|
240 |
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
};
|
247 |
$fields.filter('.siteorigin-widget-field-type-widget, .siteorigin-widget-field-type-section').find('> label').click(expandContainer);
|
248 |
$fields.filter('.siteorigin-widget-field-type-posts').find('.posts-container-label-wrapper').click(expandContainer);
|
@@ -374,12 +392,20 @@ var sowbForms = window.sowbForms || {};
|
|
374 |
}
|
375 |
|
376 |
// Check if this is inside a repeater
|
377 |
-
var repeaterIndex = sowbForms.
|
378 |
if (repeaterIndex !== false) {
|
379 |
emitter.args = emitter.args.map(function (a) {
|
380 |
return a.replace('{$repeater}', repeaterIndex);
|
381 |
});
|
382 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
383 |
|
384 |
var val = $$.is('[type="checkbox"]') ? $$.is(':checked') : $$.val();
|
385 |
// Return an array that has the new states added to the array
|
@@ -823,25 +849,29 @@ var sowbForms = window.sowbForms || {};
|
|
823 |
|
824 |
// Widgets Bundle utility functions
|
825 |
/**
|
826 |
-
* Get the unique index of a
|
|
|
827 |
*
|
828 |
* @param $el
|
|
|
|
|
829 |
* @return {*}
|
830 |
*/
|
831 |
-
sowbForms.
|
832 |
-
|
833 |
-
|
|
|
834 |
}
|
835 |
-
|
836 |
-
var $
|
837 |
-
if ($
|
838 |
-
var
|
839 |
-
if (
|
840 |
-
|
841 |
}
|
842 |
-
$
|
843 |
-
|
844 |
-
return
|
845 |
}
|
846 |
else {
|
847 |
return false;
|
48 |
// Indicates if the handler has run
|
49 |
var handlerRun = {};
|
50 |
|
51 |
+
var repeaterIndex = sowbForms.getContainerFieldId( $$, 'repeater', '.siteorigin-widget-field-repeater-item' );
|
52 |
if (repeaterIndex !== false) {
|
53 |
var repeaterHandler = {};
|
54 |
for ( var rptrState in handler) {
|
56 |
}
|
57 |
handler = repeaterHandler;
|
58 |
}
|
59 |
+
|
60 |
+
var widgetFieldId = sowbForms.getContainerFieldId( $$, 'widget', '.siteorigin-widget-widget' );
|
61 |
+
if ( widgetFieldId !== false ) {
|
62 |
+
var widgetFieldHandler = {};
|
63 |
+
for ( var wdgFldState in handler) {
|
64 |
+
var stMatches = wdgFldState.match( /_else\[(.*)\]|(.*)\[(.*)\]/ );
|
65 |
+
var st = '';
|
66 |
+
if ( stMatches && stMatches.length && stMatches[1] === undefined ) {
|
67 |
+
st = stMatches[ 2 ] + '_' + widgetFieldId + '[' + stMatches[ 3 ] + ']';
|
68 |
+
} else {
|
69 |
+
st = '_else[' + stMatches[ 1 ] + '_' + widgetFieldId + ']';
|
70 |
+
}
|
71 |
+
|
72 |
+
widgetFieldHandler[st] = handler[wdgFldState];
|
73 |
+
}
|
74 |
+
handler = widgetFieldHandler;
|
75 |
+
}
|
76 |
|
77 |
// Go through all the handlers
|
78 |
for (var state in handler) {
|
213 |
var $fields = $el.find('> .siteorigin-widget-field');
|
214 |
|
215 |
// Process any sub sections
|
216 |
+
$fields.find('> .siteorigin-widget-section, > .siteorigin-widget-widget > .siteorigin-widget-section').sowSetupForm();
|
217 |
|
218 |
// Process any sub widgets whose fields aren't contained in a section
|
219 |
+
$fields.filter('.siteorigin-widget-widget:not(:has(> .siteorigin-widget-section))').sowSetupForm();
|
220 |
|
221 |
// Store the field names
|
222 |
$fields.find('.siteorigin-widget-input').each(function (i, input) {
|
251 |
// Handle the sections
|
252 |
var expandContainer = function () {
|
253 |
$(this).toggleClass('siteorigin-widget-section-visible');
|
254 |
+
$(this).parent().find('> .siteorigin-widget-section, > .siteorigin-widget-widget > .siteorigin-widget-section')
|
255 |
+
.slideToggle('fast', function () {
|
256 |
+
$(window).resize();
|
257 |
+
$(this).find('> .siteorigin-widget-field-container-state').val($(this).is(':visible') ? 'open' : 'closed');
|
258 |
|
259 |
+
if ( $( this ).is( ':visible' ) ) {
|
260 |
+
var $fields = $( this ).find( '> .siteorigin-widget-field' );
|
261 |
+
$fields.trigger( 'sowsetupformfield' );
|
262 |
+
}
|
263 |
+
} );
|
264 |
};
|
265 |
$fields.filter('.siteorigin-widget-field-type-widget, .siteorigin-widget-field-type-section').find('> label').click(expandContainer);
|
266 |
$fields.filter('.siteorigin-widget-field-type-posts').find('.posts-container-label-wrapper').click(expandContainer);
|
392 |
}
|
393 |
|
394 |
// Check if this is inside a repeater
|
395 |
+
var repeaterIndex = sowbForms.getContainerFieldId( $$, 'repeater', '.siteorigin-widget-field-repeater-item' );
|
396 |
if (repeaterIndex !== false) {
|
397 |
emitter.args = emitter.args.map(function (a) {
|
398 |
return a.replace('{$repeater}', repeaterIndex);
|
399 |
});
|
400 |
}
|
401 |
+
|
402 |
+
var widgetFieldId = sowbForms.getContainerFieldId( $$, 'widget', '.siteorigin-widget-widget' );
|
403 |
+
if ( widgetFieldId !== false && ! emitter.hasOwnProperty( 'widgetFieldId' ) ) {
|
404 |
+
emitter.widgetFieldId = widgetFieldId;
|
405 |
+
emitter.args = emitter.args.map(function (arg) {
|
406 |
+
return arg + '_' + widgetFieldId;
|
407 |
+
});
|
408 |
+
}
|
409 |
|
410 |
var val = $$.is('[type="checkbox"]') ? $$.is(':checked') : $$.val();
|
411 |
// Return an array that has the new states added to the array
|
849 |
|
850 |
// Widgets Bundle utility functions
|
851 |
/**
|
852 |
+
* Get the unique index of a repeated item. Could be in a repeater or if multiple widget fields with the same
|
853 |
+
* widget class.
|
854 |
*
|
855 |
* @param $el
|
856 |
+
* @param containerType
|
857 |
+
* @param containerClass
|
858 |
* @return {*}
|
859 |
*/
|
860 |
+
sowbForms.getContainerFieldId = function ( $el, containerType, containerClass ) {
|
861 |
+
var fieldIdPropName = containerType + 'FieldId';
|
862 |
+
if ( ! this.hasOwnProperty( fieldIdPropName ) ) {
|
863 |
+
this[ fieldIdPropName ] = 1;
|
864 |
}
|
865 |
+
|
866 |
+
var $field = $el.closest( containerClass );
|
867 |
+
if ( $field.length ) {
|
868 |
+
var fieldId = $field.data( 'field-id' );
|
869 |
+
if ( fieldId === undefined ) {
|
870 |
+
fieldId = this[ fieldIdPropName ]++;
|
871 |
}
|
872 |
+
$field.data( 'field-id', fieldId );
|
873 |
+
|
874 |
+
return fieldId;
|
875 |
}
|
876 |
else {
|
877 |
return false;
|
base/js/admin.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var sowbForms=window.sowbForms||{};!function(e){e.fn.sowSetupForm=function(){return e(this).each(function(i,t){var n,r=e(t),a=!0,s=e("body"),o=r.find("input[name]");if(o.length&&-1!==o.attr("name").indexOf("__i__"))return this;if(r.is(".siteorigin-widget-form-main")){if(!0===r.data("sow-form-setup"))return!0;if(s.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),r=e.extend({},i.data("state-handler"),a?i.data("state-handler-initial"):{});if(0===Object.keys(r).length)return!0;var s,o,d,l,f,g,c={},p=sowbForms.getRepeaterId(i);if(!1!==p){var u={};for(var m in r)u[m.replace("{$repeater}",p)]=r[m];r=u}for(var w in r)if(f=!1,null!==(s=w.match(/^([a-zA-Z0-9_-]+)(\[([a-zA-Z0-9_\-,]+)\])?(\[\])?$/))){if(o={group:"default",name:"",multi:!1},void 0!==s[2]?(o.group=s[1],o.name=s[3]):o.name=s[0],o.multi=void 0!==s[4],"_else"===o.group)o.group=o.name,o.name="",f=o.group===t&&void 0===c[o.group];else{g=o.name.split(",").map(function(e){return e.trim()});for(var v=0;v<g.length&&!(f=o.group===t&&g[v]===n);v++);}if(f){d=r[w],o.multi||(d=[d]);for(var v=0;v<d.length;v++)l=void 0!==d[v][1]&&Boolean(d[v][1])?i.find(d[v][1]):i,l[d[v][0]].apply(l,void 0!==d[v][2]?d[v][2]:[]);c[o.group]=!0}}})}),r.sowSetupPreview(),n=r;var d=r.find(".siteorigin-widget-teaser");d.find(".dashicons-dismiss").click(function(){var i=e(this);e.get(i.data("dismiss-url")),d.slideUp("normal",function(){d.remove()})});var l=r.find("> .siteorigin-widgets-form-id").val(),f=r.find("> .siteorigin-widgets-form-timestamp"),g=parseInt(f.val()||0),c=JSON.parse(sessionStorage.getItem(l));if(c)if(c._sow_form_timestamp>g){var p=e('<div class="siteorigin-widget-form-notification"><span>'+soWidgets.backup.newerVersion+'</span><a class="button button-small so-backup-restore">'+soWidgets.backup.restore+'</a><a class="button button-small so-backup-dismiss">'+soWidgets.backup.dismiss+"</a><div><small>"+soWidgets.backup.replaceWarning+"</small></div></div>");r.prepend(p),p.find(".so-backup-restore").click(function(){sowbForms.setWidgetFormValues(n,c),p.slideUp("fast",function(){p.remove()})}),p.find(".so-backup-dismiss").click(function(){p.slideUp("fast",function(){sessionStorage.removeItem(l),p.remove()})})}else sessionStorage.removeItem(l);r.change(function(){f.val((new Date).getTime());var e=sowbForms.getWidgetFormValues(r);sessionStorage.setItem(l,JSON.stringify(e))})}else n=r.closest(".siteorigin-widget-form-main");n.find("> .siteorigin-widgets-form-id").val();var u=r.find("> .siteorigin-widget-field");u.find("> .siteorigin-widget-section").sowSetupForm(),u.filter(".siteorigin-widget-field-type-widget:not(:has(> .siteorigin-widget-section))").sowSetupForm(),u.find(".siteorigin-widget-input").each(function(i,t){null===e(t).data("original-name")&&e(t).data("original-name",e(t).attr("name"))}),u.find("> .siteorigin-widget-field-repeater").sowSetupRepeater(),r.find(".siteorigin-widget-field-repeater-item").sowSetupRepeaterItems(),u.find("> .siteorigin-widget-input-color").each(function(){var i=e(this),t={change:function(i,t){setTimeout(function(){e(i.target).trigger("change")},100)}};i.data("defaultColor")&&(t.defaultColor=i.data("defaultColor")),i.wpColorPicker(t)});var m=function(){e(this).toggleClass("siteorigin-widget-section-visible"),e(this).siblings(".siteorigin-widget-section").slideToggle("fast",function(){if(e(window).resize(),e(this).find("> .siteorigin-widget-field-container-state").val(e(this).is(":visible")?"open":"closed"),e(this).is(":visible")){e(this).find("> .siteorigin-widget-field").trigger("sowsetupformfield")}})};u.filter(".siteorigin-widget-field-type-widget, .siteorigin-widget-field-type-section").find("> label").click(m),u.filter(".siteorigin-widget-field-type-posts").find(".posts-container-label-wrapper").click(m),u.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,i){t.val(parseInt(i.value)),t.trigger("change")},change:function(e,t){i.find(".siteorigin-widget-slider-value").html(t.value)}}),t.change(function(e,i){i&&i.silent||n.slider("value",parseInt(t.val()))})}),u.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"),r=n.val(),a=n.data("postTypes"),s=i.find("ul.posts").empty().addClass("loading");e.get(soWidgets.ajaxurl,{action:"so_widgets_search_posts",query:r,postTypes:a},function(i){for(var t=0;t<i.length;t++)""===i[t].label&&(i[t].label=" "),s.append(e("<li>").addClass("post").html(i[t].label+"<span>("+i[t].type+")</span>").data(i[t]));s.removeClass("loading")})};i.find(".select-content-button, .button-close").click(function(t){t.preventDefault(),e(this).blur();var r=i.find(".existing-content-selector");r.toggle(),r.is(":visible")&&0===r.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("value")),i.find(".existing-content-selector").toggle()});var r=null;i.find(".content-text-search").keyup(function(){null!==r&&clearTimeout(r),r=setTimeout(function(){n()},500)})}),void 0!==jQuery.fn.soPanelsSetupBuilderWidget&&u.filter(".siteorigin-widget-field-type-builder").each(function(){e(this).find("> .siteorigin-page-builder-field").soPanelsSetupBuilderWidget()});var w=function(){var i=e(this),t=i.closest("[data-state-emitter]").data("state-emitter");if(void 0!==t){var r={default:""};void 0===t.length&&(t=[t]);for(var a=0;a<t.length;a++)r=function(t,n){if(void 0===sowEmitters[t.callback]||"_"===t.callback.substr(0,1))return n;var r=sowbForms.getRepeaterId(i);!1!==r&&(t.args=t.args.map(function(e){return e.replace("{$repeater}",r)}));var a=i.is('[type="checkbox"]')?i.is(":checked"):i.val();return e.extend(n,sowEmitters[t.callback](a,t.args))}(t[a],r);var s=n.data("states");void 0===s&&(s={default:""});for(var o in r)void 0!==s[o]&&r[o]===s[o]||(s[o]=r[o],n.trigger("sowstatechange",[o,r[o]]));n.data("states",s)}};u.filter("[data-state-emitter]").each(function(){e(this).find(".siteorigin-widget-input").on("keyup change",w),e(this).find(".siteorigin-widget-input").each(function(){var i=e(this);i.is(":radio")?i.is(":checked")&&w.call(i[0]):w.call(i[0])})}),r.trigger("sowsetupform",u).data("sow-form-setup",!0),u.trigger("sowsetupformfield"),r.find(".siteorigin-widget-field-repeater-item").trigger("updateFieldPositions"),(s.hasClass("wp-customizer")||s.hasClass("widgets-php"))&&r.closest(".ui-sortable").on("sortstop",function(e,i){i.item.find(".siteorigin-widget-form").find("> .siteorigin-widget-field").trigger("sowsetupformfield")}),a=!1})},e.fn.sowSetupPreview=function(){var i=e(this);i.siblings(".siteorigin-widget-preview").find("> a").click(function(t){t.preventDefault();var n=sowbForms.getWidgetFormValues(i),r=e(e("#so-widgets-bundle-tpl-preview-dialog").html().trim()).appendTo("body");r.find('input[name="data"]').val(JSON.stringify(n)),r.find('input[name="class"]').val(i.data("class")),r.find("iframe").on("load",function(){e(this).css("visibility","visible")}),r.find("form").submit(),r.find(".close").click(function(){r.remove()})})},e.fn.sowSetupRepeater=function(){return e(this).each(function(i,t){var n=e(t),r=n.find(".siteorigin-widget-field-repeater-items"),a=n.data("repeater-name");r.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 r=e(n).data("repeater-positions");void 0===r&&(r={}),r[a]=i,e(n).data("repeater-positions",r)})}),i.find(".siteorigin-widget-input").each(function(i,t){var n=e(t).data("repeater-positions"),r=e(t);if(void 0!==n){var a=r.attr("data-original-name");if(a||(r.attr("data-original-name",r.attr("name")),a=r.attr("name")),!a)return;if(n)for(var s in n)a=a.replace("#"+s+"#",n[s]);r.attr("name",a)}}),i.data("initialSetup")||(i.find(".siteorigin-widget-input").each(function(i,t){var n=e(t);n.prop("checked",n.prop("defaultChecked"))}),i.data("initialSetup",!0));var r=n.data("scroll-count")?parseInt(n.data("scroll-count")):0;if(r>0&&t.length>r){var s=t.first().outerHeight();i.css("max-height",s*r).css("overflow","auto")}else i.css("max-height","").css("overflow","")}),r.sortable({handle:".siteorigin-widget-field-repeater-item-top",items:"> .siteorigin-widget-field-repeater-item",update:function(){r.trigger("updateFieldPositions")},sortstop:function(i,t){if(t.item.is(".siteorigin-widget-field-repeater-item"))t.item.find("> .siteorigin-widget-field-repeater-item-form").each(function(){e(this).find("> .siteorigin-widget-field").trigger("sowsetupformfield")});else{t.item.find(".siteorigin-widget-form").find("> .siteorigin-widget-field").trigger("sowsetupformfield")}}}),r.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),r=n.find("> .siteorigin-widget-field-repeater-items").children().length+1,a=e("<div>"+n.find("> .siteorigin-widget-field-repeater-item-html").html()+"</div>");a.find(".siteorigin-widget-input[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=a.html().replace(/_id_/g,r),o=void 0!==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(void 0===n.data("sowrepeater-actions-setup")){var r=n.closest(".siteorigin-widget-field-repeater"),a=n.find("> .siteorigin-widget-field-repeater-item-top"),s=r.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)+"..."),a.find("h4").text(i))};o();var d=s.hasOwnProperty("updateEvent")&&s.updateEvent?s.updateEvent:"change";n.bind(d,o)}a.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(){if(e(window).resize(),e(this).is(":visible")){e(this).trigger("slideToggleOpenComplete");e(this).find("> .siteorigin-widget-field").trigger("sowsetupformfield")}else e(this).trigger("slideToggleCloseComplete")}))}),a.find(".siteorigin-widget-field-remove").click(function(i,t){i.preventDefault();var n=e(this).closest(".siteorigin-widget-field-repeater-items"),r=e(this).closest(".siteorigin-widget-field-repeater-item"),a=function(){r.remove(),n.sortable("refresh").trigger("updateFieldPositions"),e(window).resize()};t&&t.silent?a():confirm(soWidgets.sure)&&r.slideUp("fast",a)}),a.find(".siteorigin-widget-field-copy").click(function(i){i.preventDefault();var t=e(this).closest(".siteorigin-widget-form-main"),r=e(this).closest(".siteorigin-widget-field-repeater-item"),a=r.clone(),s=r.closest(".siteorigin-widget-field-repeater-items"),o=s.children().length,d={};a.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 p=r.find('[name="'+l+'"]');p.length&&null!=p.val()&&i.val(p.val())}if(s){var u,m,w;if(i.is('[type="radio"]')){m=s.replace(/-\d+-\d+$/,"");var v=s.replace(/-\d+$/,"");if(!d[m]){var h={};d[m]=t.find(".siteorigin-widget-input[id^="+m+"]").not("[id*=_id_]").filter(function(i,t){var n=e(t).attr("name");return!h[n]&&(h[n]=!0,!0)}).length+1}var b=m+"-"+d[m];w=b+s.match(/-\d+$/)[0],a.find("label[for="+v+"]").attr("for",b)}else u=new RegExp("-\\d+$"),m=s.replace(u,""),d[m]||(d[m]=t.find(".siteorigin-widget-input[id^="+m+"]").not("[id*=_id_]").length+1),w=m+"-"+d[m]++;i.attr("id",w),a.find("label[for="+s+"]").attr("for",w),a.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 y=r.parents(".siteorigin-widget-field-repeater").length,k=e("body");(k.hasClass("wp-customizer")||k.hasClass("widgets-php"))&&0===n.closest(".panel-dialog").length&&(y+=1);var _=l.replace(new RegExp("((?:.*?\\[\\d+\\]){"+(y-1).toString()+"})?(.*?\\[)\\d+(\\])"),"$1$2"+o.toString()+"$3");i.attr("name",_),i.data("original-name",_)}),s.append(a).sortable("refresh").trigger("updateFieldPositions"),a.sowSetupRepeaterItems(),a.hide().slideDown("fast",function(){e(window).resize()})}),n.find("> .siteorigin-widget-field-repeater-item-form").sowSetupForm(),n.data("sowrepeater-actions-setup",!0)}})},sowbForms.getRepeaterId=function(e){void 0===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},sowbForms.getWidgetFieldVariable=function(e,i,t){var n=window.sow_field_javascript_variables[e];i=i.replace(/\[#.*?#\]/g,"");for(var r=/[a-zA-Z0-9\-]+(?:\[c?[0-9]+\])?\[(.*)\]/.exec(i)[1],a=r.split("]["),s=a.length?n:null;a.length;)s=s[a.shift()];return s[t]},sowbForms.fetchWidgetVariable=function(i,t,n){window.sowVars=window.sowVars||{},void 0===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])},sowbForms.getWidgetFormValues=function(i){if(_.isUndefined(i))return null;var t={};return i.find("*[name]").each(function(){var i=e(this);try{var n=/[a-zA-Z0-9\-]+\[[a-zA-Z0-9]+\]\[(.*)\]/.exec(i.attr("name"));if(_.isEmpty(n))return!0;n=n[1];var r=n.split("][");r=r.map(function(e){return!isNaN(parseFloat(e))&&isFinite(e)?parseInt(e):e});var a=t,s=null,o=_.isString(i.attr("type"))?i.attr("type").toLowerCase():null;if("checkbox"===o)s=!!i.is(":checked")&&(""===i.val()||i.val());else if("radio"===o){if(!i.is(":checked"))return;s=i.val()}else if("TEXTAREA"===i.prop("tagName")&&i.hasClass("wp-editor-area")){var d=null;"undefined"!=typeof tinyMCE&&(d=tinyMCE.get(i.attr("id"))),s=null===d||"function"!=typeof d.getContent||d.isHidden()?i.val():d.getContent()}else if("SELECT"===i.prop("tagName")){var l=i.find("option:selected");1===l.length?s=i.find("option:selected").val():l.length>1&&(s=_.map(i.find("option:selected"),function(i,t){return e(i).val()}))}else s=i.val();for(var f=0;f<r.length;f++)f===r.length-1?""===r[f]?a.push(s):a[r[f]]=s:(_.isUndefined(a[r[f]])&&(_.isNumber(r[f+1])||""===r[f+1]?a[r[f]]=[]:a[r[f]]={}),a=a[r[f]])}catch(e){console.error("Field ["+i.attr("name")+"] could not be processed and was skipped - "+e.message)}}),t},sowbForms.setWidgetFormValues=function(i,t){var n=0,r=function(i,t){10!=++n&&i.find("> .siteorigin-widget-field-type-repeater").each(function(){var i=e(this).find("> .siteorigin-widget-field-repeater"),n=i.data("repeaterName"),a=t.hasOwnProperty(n)?t[n]:null;if(a&&Array.isArray(a)&&0!==a.length){var s=i.find("> .siteorigin-widget-field-repeater-items > .siteorigin-widget-field-repeater-item"),o=a.length,d=s.length;if(o>d)for(var l=0;l<o-d;l++)i.find("> .siteorigin-widget-field-repeater-add").click();else if(o<d)for(var f=o;f<d;f++){var g=e(s.eq(f));g.find("> .siteorigin-widget-field-repeater-item-top").find(".siteorigin-widget-field-remove").trigger("click",{silent:!0})}s=i.find("> .siteorigin-widget-field-repeater-items > .siteorigin-widget-field-repeater-item");for(var c=0;c<s.length;c++)s.eq(c).find("> .siteorigin-widget-field-repeater-item-form"),r(s.eq(c).find("> .siteorigin-widget-field-repeater-item-form"),a[c])}})};r(i,t),i.find("*[name]").each(function(){var i=e(this),n=/[a-zA-Z0-9\-]+\[[a-zA-Z0-9]+\]\[(.*)\]/.exec(i.attr("name"));if(void 0===n)return!0;n=n[1];var r=n.split("][");r=r.map(function(e){return!isNaN(parseFloat(e))&&isFinite(e)?parseInt(e):e});for(var a,s=t,o=0;o<r.length;o++)o===r.length-1?a=s[r[o]]:s=s[r[o]];if("checkbox"===i.attr("type"))i.prop("checked",a);else if("radio"===i.attr("type"))i.prop("checked",a===i.val());else if("TEXTAREA"===i.prop("tagName")&&i.hasClass("wp-editor-area")){var d=null;"undefined"!=typeof tinyMCE&&(d=tinyMCE.get(i.attr("id"))),null===d||"function"!=typeof d.getContent||d.isHidden()?i.val(a):d.setContent(a)}else i.val(a);i.trigger("change")})},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("open_dialog",function(i,t){if(t.$el.find(".so-panels-dialog").is(".so-panels-dialog-edit-widget")){e(i.target).find(".siteorigin-widget-form-main").find("> .siteorigin-widget-field").trigger("sowsetupformfield")}}),e(function(){e(document).trigger("sowadminloaded")})}(jQuery);var sowEmitters={_match:function(e,i){void 0===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 r="",a="default";return void 0!==n[3]?(a=n[1],r=n[3]):r=n[1],{match:n[4].trim(),group:a,state:r}},_checker:function(e,i,t,n){var r={};void 0===i.length&&(i=[i]);for(var a,s=0;s<i.length;s++)!1!==(a=sowEmitters._match(i[s],t))&&("_true"===a.match||n(e,i,a.match))&&(r[a.group]=a.state);return r},select:function(e,i){void 0===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)})}};window.sowbForms=sowbForms;
|
1 |
+
var sowbForms=window.sowbForms||{};!function(e){e.fn.sowSetupForm=function(){return e(this).each(function(i,t){var r,n=e(t),a=!0,s=e("body"),o=n.find("input[name]");if(o.length&&-1!==o.attr("name").indexOf("__i__"))return this;if(n.is(".siteorigin-widget-form-main")){if(!0===n.data("sow-form-setup"))return!0;if(s.hasClass("widgets-php")&&!n.is(":visible")&&0===n.closest(".panel-dialog").length)return!0;n.on("sowstatechange",function(i,t,r){n.find("[data-state-handler]").each(function(){var i=e(this),n=e.extend({},i.data("state-handler"),a?i.data("state-handler-initial"):{});if(0===Object.keys(n).length)return!0;var s,o,d,l,g,f,c={},p=sowbForms.getContainerFieldId(i,"repeater",".siteorigin-widget-field-repeater-item");if(!1!==p){var u={};for(var m in n)u[m.replace("{$repeater}",p)]=n[m];n=u}var w=sowbForms.getContainerFieldId(i,"widget",".siteorigin-widget-widget");if(!1!==w){var v={};for(var h in n){var b=h.match(/_else\[(.*)\]|(.*)\[(.*)\]/),y="";y=b&&b.length&&void 0===b[1]?b[2]+"_"+w+"["+b[3]+"]":"_else["+b[1]+"_"+w+"]",v[y]=n[h]}n=v}for(var k in n)if(g=!1,null!==(s=k.match(/^([a-zA-Z0-9_-]+)(\[([a-zA-Z0-9_\-,]+)\])?(\[\])?$/))){if(o={group:"default",name:"",multi:!1},void 0!==s[2]?(o.group=s[1],o.name=s[3]):o.name=s[0],o.multi=void 0!==s[4],"_else"===o.group)o.group=o.name,o.name="",g=o.group===t&&void 0===c[o.group];else{f=o.name.split(",").map(function(e){return e.trim()});for(var F=0;F<f.length&&!(g=o.group===t&&f[F]===r);F++);}if(g){d=n[k],o.multi||(d=[d]);for(var F=0;F<d.length;F++)l=void 0!==d[F][1]&&Boolean(d[F][1])?i.find(d[F][1]):i,l[d[F][0]].apply(l,void 0!==d[F][2]?d[F][2]:[]);c[o.group]=!0}}})}),n.sowSetupPreview(),r=n;var d=n.find(".siteorigin-widget-teaser");d.find(".dashicons-dismiss").click(function(){var i=e(this);e.get(i.data("dismiss-url")),d.slideUp("normal",function(){d.remove()})});var l=n.find("> .siteorigin-widgets-form-id").val(),g=n.find("> .siteorigin-widgets-form-timestamp"),f=parseInt(g.val()||0),c=JSON.parse(sessionStorage.getItem(l));if(c)if(c._sow_form_timestamp>f){var p=e('<div class="siteorigin-widget-form-notification"><span>'+soWidgets.backup.newerVersion+'</span><a class="button button-small so-backup-restore">'+soWidgets.backup.restore+'</a><a class="button button-small so-backup-dismiss">'+soWidgets.backup.dismiss+"</a><div><small>"+soWidgets.backup.replaceWarning+"</small></div></div>");n.prepend(p),p.find(".so-backup-restore").click(function(){sowbForms.setWidgetFormValues(r,c),p.slideUp("fast",function(){p.remove()})}),p.find(".so-backup-dismiss").click(function(){p.slideUp("fast",function(){sessionStorage.removeItem(l),p.remove()})})}else sessionStorage.removeItem(l);n.change(function(){g.val((new Date).getTime());var e=sowbForms.getWidgetFormValues(n);sessionStorage.setItem(l,JSON.stringify(e))})}else r=n.closest(".siteorigin-widget-form-main");r.find("> .siteorigin-widgets-form-id").val();var u=n.find("> .siteorigin-widget-field");u.find("> .siteorigin-widget-section, > .siteorigin-widget-widget > .siteorigin-widget-section").sowSetupForm(),u.filter(".siteorigin-widget-widget:not(:has(> .siteorigin-widget-section))").sowSetupForm(),u.find(".siteorigin-widget-input").each(function(i,t){null===e(t).data("original-name")&&e(t).data("original-name",e(t).attr("name"))}),u.find("> .siteorigin-widget-field-repeater").sowSetupRepeater(),n.find(".siteorigin-widget-field-repeater-item").sowSetupRepeaterItems(),u.find("> .siteorigin-widget-input-color").each(function(){var i=e(this),t={change:function(i,t){setTimeout(function(){e(i.target).trigger("change")},100)}};i.data("defaultColor")&&(t.defaultColor=i.data("defaultColor")),i.wpColorPicker(t)});var m=function(){e(this).toggleClass("siteorigin-widget-section-visible"),e(this).parent().find("> .siteorigin-widget-section, > .siteorigin-widget-widget > .siteorigin-widget-section").slideToggle("fast",function(){if(e(window).resize(),e(this).find("> .siteorigin-widget-field-container-state").val(e(this).is(":visible")?"open":"closed"),e(this).is(":visible")){e(this).find("> .siteorigin-widget-field").trigger("sowsetupformfield")}})};u.filter(".siteorigin-widget-field-type-widget, .siteorigin-widget-field-type-section").find("> label").click(m),u.filter(".siteorigin-widget-field-type-posts").find(".posts-container-label-wrapper").click(m),u.filter(".siteorigin-widget-field-type-slider").each(function(){var i=e(this),t=i.find('input[type="number"]'),r=i.find(".siteorigin-widget-value-slider");r.slider({max:parseInt(t.attr("max")),min:parseInt(t.attr("min")),value:parseInt(t.val()),slide:function(e,i){t.val(parseInt(i.value)),t.trigger("change")},change:function(e,t){i.find(".siteorigin-widget-slider-value").html(t.value)}}),t.change(function(e,i){i&&i.silent||r.slider("value",parseInt(t.val()))})}),u.filter(".siteorigin-widget-field-type-link").each(function(){var i=e(this),t=null,r=function(){null!==t&&t.abort();var r=i.find(".content-text-search"),n=r.val(),a=r.data("postTypes"),s=i.find("ul.posts").empty().addClass("loading");e.get(soWidgets.ajaxurl,{action:"so_widgets_search_posts",query:n,postTypes:a},function(i){for(var t=0;t<i.length;t++)""===i[t].label&&(i[t].label=" "),s.append(e("<li>").addClass("post").html(i[t].label+"<span>("+i[t].type+")</span>").data(i[t]));s.removeClass("loading")})};i.find(".select-content-button, .button-close").click(function(t){t.preventDefault(),e(this).blur();var n=i.find(".existing-content-selector");n.toggle(),n.is(":visible")&&0===n.find("ul.posts li").length&&r()}),i.on("click",".posts li",function(t){t.preventDefault();var r=e(this);i.find("input.siteorigin-widget-input").val("post: "+r.data("value")),i.find(".existing-content-selector").toggle()});var n=null;i.find(".content-text-search").keyup(function(){null!==n&&clearTimeout(n),n=setTimeout(function(){r()},500)})}),void 0!==jQuery.fn.soPanelsSetupBuilderWidget&&u.filter(".siteorigin-widget-field-type-builder").each(function(){e(this).find("> .siteorigin-page-builder-field").soPanelsSetupBuilderWidget()});var w=function(){var i=e(this),t=i.closest("[data-state-emitter]").data("state-emitter");if(void 0!==t){var n={default:""};void 0===t.length&&(t=[t]);for(var a=0;a<t.length;a++)n=function(t,r){if(void 0===sowEmitters[t.callback]||"_"===t.callback.substr(0,1))return r;var n=sowbForms.getContainerFieldId(i,"repeater",".siteorigin-widget-field-repeater-item");!1!==n&&(t.args=t.args.map(function(e){return e.replace("{$repeater}",n)}));var a=sowbForms.getContainerFieldId(i,"widget",".siteorigin-widget-widget");!1===a||t.hasOwnProperty("widgetFieldId")||(t.widgetFieldId=a,t.args=t.args.map(function(e){return e+"_"+a}));var s=i.is('[type="checkbox"]')?i.is(":checked"):i.val();return e.extend(r,sowEmitters[t.callback](s,t.args))}(t[a],n);var s=r.data("states");void 0===s&&(s={default:""});for(var o in n)void 0!==s[o]&&n[o]===s[o]||(s[o]=n[o],r.trigger("sowstatechange",[o,n[o]]));r.data("states",s)}};u.filter("[data-state-emitter]").each(function(){e(this).find(".siteorigin-widget-input").on("keyup change",w),e(this).find(".siteorigin-widget-input").each(function(){var i=e(this);i.is(":radio")?i.is(":checked")&&w.call(i[0]):w.call(i[0])})}),n.trigger("sowsetupform",u).data("sow-form-setup",!0),u.trigger("sowsetupformfield"),n.find(".siteorigin-widget-field-repeater-item").trigger("updateFieldPositions"),(s.hasClass("wp-customizer")||s.hasClass("widgets-php"))&&n.closest(".ui-sortable").on("sortstop",function(e,i){i.item.find(".siteorigin-widget-form").find("> .siteorigin-widget-field").trigger("sowsetupformfield")}),a=!1})},e.fn.sowSetupPreview=function(){var i=e(this);i.siblings(".siteorigin-widget-preview").find("> a").click(function(t){t.preventDefault();var r=sowbForms.getWidgetFormValues(i),n=e(e("#so-widgets-bundle-tpl-preview-dialog").html().trim()).appendTo("body");n.find('input[name="data"]').val(JSON.stringify(r)),n.find('input[name="class"]').val(i.data("class")),n.find("iframe").on("load",function(){e(this).css("visibility","visible")}),n.find("form").submit(),n.find(".close").click(function(){n.remove()})})},e.fn.sowSetupRepeater=function(){return e(this).each(function(i,t){var r=e(t),n=r.find(".siteorigin-widget-field-repeater-items"),a=r.data("repeater-name");n.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,r){var n=e(r).data("repeater-positions");void 0===n&&(n={}),n[a]=i,e(r).data("repeater-positions",n)})}),i.find(".siteorigin-widget-input").each(function(i,t){var r=e(t).data("repeater-positions"),n=e(t);if(void 0!==r){var a=n.attr("data-original-name");if(a||(n.attr("data-original-name",n.attr("name")),a=n.attr("name")),!a)return;if(r)for(var s in r)a=a.replace("#"+s+"#",r[s]);n.attr("name",a)}}),i.data("initialSetup")||(i.find(".siteorigin-widget-input").each(function(i,t){var r=e(t);r.prop("checked",r.prop("defaultChecked"))}),i.data("initialSetup",!0));var n=r.data("scroll-count")?parseInt(r.data("scroll-count")):0;if(n>0&&t.length>n){var s=t.first().outerHeight();i.css("max-height",s*n).css("overflow","auto")}else i.css("max-height","").css("overflow","")}),n.sortable({handle:".siteorigin-widget-field-repeater-item-top",items:"> .siteorigin-widget-field-repeater-item",update:function(){n.trigger("updateFieldPositions")},sortstop:function(i,t){if(t.item.is(".siteorigin-widget-field-repeater-item"))t.item.find("> .siteorigin-widget-field-repeater-item-form").each(function(){e(this).find("> .siteorigin-widget-field").trigger("sowsetupformfield")});else{t.item.find(".siteorigin-widget-form").find("> .siteorigin-widget-field").trigger("sowsetupformfield")}}}),n.trigger("updateFieldPositions"),r.find("> .siteorigin-widget-field-repeater-add").disableSelection().click(function(i){i.preventDefault(),r.closest(".siteorigin-widget-field-repeater").sowAddRepeaterItem().find("> .siteorigin-widget-field-repeater-items").slideDown("fast",function(){e(window).resize()})}),r.find("> .siteorigin-widget-field-repeater-top > .siteorigin-widget-field-repeater-expand").click(function(i){i.preventDefault(),r.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 r=e(t),n=r.find("> .siteorigin-widget-field-repeater-items").children().length+1,a=e("<div>"+r.find("> .siteorigin-widget-field-repeater-item-html").html()+"</div>");a.find(".siteorigin-widget-input[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=a.html().replace(/_id_/g,n),o=void 0!==r.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(r.data("item-name")))).append(e('<div class="siteorigin-widget-field-repeater-item-form" />').html(s));r.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 r=e(this).closest(".siteorigin-widget-field-repeater-items");e(this).remove(),r.sortable("refresh").trigger("updateFieldPositions")})},e.fn.sowSetupRepeaterItems=function(){return e(this).each(function(i,t){var r=e(t);if(void 0===r.data("sowrepeater-actions-setup")){var n=r.closest(".siteorigin-widget-field-repeater"),a=r.find("> .siteorigin-widget-field-repeater-item-top"),s=n.data("item-label");if(s&&s.selector){var o=function(){var e=s.hasOwnProperty("valueMethod")&&s.valueMethod?s.valueMethod:"val",i=r.find(s.selector)[e]();i&&(i.length>80&&(i=i.substr(0,79)+"..."),a.find("h4").text(i))};o();var d=s.hasOwnProperty("updateEvent")&&s.updateEvent?s.updateEvent:"change";r.bind(d,o)}a.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(){if(e(window).resize(),e(this).is(":visible")){e(this).trigger("slideToggleOpenComplete");e(this).find("> .siteorigin-widget-field").trigger("sowsetupformfield")}else e(this).trigger("slideToggleCloseComplete")}))}),a.find(".siteorigin-widget-field-remove").click(function(i,t){i.preventDefault();var r=e(this).closest(".siteorigin-widget-field-repeater-items"),n=e(this).closest(".siteorigin-widget-field-repeater-item"),a=function(){n.remove(),r.sortable("refresh").trigger("updateFieldPositions"),e(window).resize()};t&&t.silent?a():confirm(soWidgets.sure)&&n.slideUp("fast",a)}),a.find(".siteorigin-widget-field-copy").click(function(i){i.preventDefault();var t=e(this).closest(".siteorigin-widget-form-main"),n=e(this).closest(".siteorigin-widget-field-repeater-item"),a=n.clone(),s=n.closest(".siteorigin-widget-field-repeater-items"),o=s.children().length,d={};a.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 g=tinymce.get(s);g&&i.val(g.getContent())}else if(i.is(".wp-color-picker")){var f=i.closest(".wp-picker-container"),c=i.closest(".siteorigin-widget-field");f.remove(),c.append(i.remove())}else{var p=n.find('[name="'+l+'"]');p.length&&null!=p.val()&&i.val(p.val())}if(s){var u,m,w;if(i.is('[type="radio"]')){m=s.replace(/-\d+-\d+$/,"");var v=s.replace(/-\d+$/,"");if(!d[m]){var h={};d[m]=t.find(".siteorigin-widget-input[id^="+m+"]").not("[id*=_id_]").filter(function(i,t){var r=e(t).attr("name");return!h[r]&&(h[r]=!0,!0)}).length+1}var b=m+"-"+d[m];w=b+s.match(/-\d+$/)[0],a.find("label[for="+v+"]").attr("for",b)}else u=new RegExp("-\\d+$"),m=s.replace(u,""),d[m]||(d[m]=t.find(".siteorigin-widget-input[id^="+m+"]").not("[id*=_id_]").length+1),w=m+"-"+d[m]++;i.attr("id",w),a.find("label[for="+s+"]").attr("for",w),a.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 y=n.parents(".siteorigin-widget-field-repeater").length,k=e("body");(k.hasClass("wp-customizer")||k.hasClass("widgets-php"))&&0===r.closest(".panel-dialog").length&&(y+=1);var F=l.replace(new RegExp("((?:.*?\\[\\d+\\]){"+(y-1).toString()+"})?(.*?\\[)\\d+(\\])"),"$1$2"+o.toString()+"$3");i.attr("name",F),i.data("original-name",F)}),s.append(a).sortable("refresh").trigger("updateFieldPositions"),a.sowSetupRepeaterItems(),a.hide().slideDown("fast",function(){e(window).resize()})}),r.find("> .siteorigin-widget-field-repeater-item-form").sowSetupForm(),r.data("sowrepeater-actions-setup",!0)}})},sowbForms.getContainerFieldId=function(e,i,t){var r=i+"FieldId";this.hasOwnProperty(r)||(this[r]=1);var n=e.closest(t);if(n.length){var a=n.data("field-id");return void 0===a&&(a=this[r]++),n.data("field-id",a),a}return!1},sowbForms.getWidgetFieldVariable=function(e,i,t){var r=window.sow_field_javascript_variables[e];i=i.replace(/\[#.*?#\]/g,"");for(var n=/[a-zA-Z0-9\-]+(?:\[c?[0-9]+\])?\[(.*)\]/.exec(i)[1],a=n.split("]["),s=a.length?r:null;a.length;)s=s[a.shift()];return s[t]},sowbForms.fetchWidgetVariable=function(i,t,r){window.sowVars=window.sowVars||{},void 0===window.sowVars[t]?e.post(soWidgets.ajaxurl,{action:"sow_get_javascript_variables",widget:t,key:i},function(e){window.sowVars[t]=e,r(window.sowVars[t][i])}):r(window.sowVars[t][i])},sowbForms.getWidgetFormValues=function(i){if(_.isUndefined(i))return null;var t={};return i.find("*[name]").each(function(){var i=e(this);try{var r=/[a-zA-Z0-9\-]+\[[a-zA-Z0-9]+\]\[(.*)\]/.exec(i.attr("name"));if(_.isEmpty(r))return!0;r=r[1];var n=r.split("][");n=n.map(function(e){return!isNaN(parseFloat(e))&&isFinite(e)?parseInt(e):e});var a=t,s=null,o=_.isString(i.attr("type"))?i.attr("type").toLowerCase():null;if("checkbox"===o)s=!!i.is(":checked")&&(""===i.val()||i.val());else if("radio"===o){if(!i.is(":checked"))return;s=i.val()}else if("TEXTAREA"===i.prop("tagName")&&i.hasClass("wp-editor-area")){var d=null;"undefined"!=typeof tinyMCE&&(d=tinyMCE.get(i.attr("id"))),s=null===d||"function"!=typeof d.getContent||d.isHidden()?i.val():d.getContent()}else if("SELECT"===i.prop("tagName")){var l=i.find("option:selected");1===l.length?s=i.find("option:selected").val():l.length>1&&(s=_.map(i.find("option:selected"),function(i,t){return e(i).val()}))}else s=i.val();for(var g=0;g<n.length;g++)g===n.length-1?""===n[g]?a.push(s):a[n[g]]=s:(_.isUndefined(a[n[g]])&&(_.isNumber(n[g+1])||""===n[g+1]?a[n[g]]=[]:a[n[g]]={}),a=a[n[g]])}catch(e){console.error("Field ["+i.attr("name")+"] could not be processed and was skipped - "+e.message)}}),t},sowbForms.setWidgetFormValues=function(i,t){var r=0,n=function(i,t){10!=++r&&i.find("> .siteorigin-widget-field-type-repeater").each(function(){var i=e(this).find("> .siteorigin-widget-field-repeater"),r=i.data("repeaterName"),a=t.hasOwnProperty(r)?t[r]:null;if(a&&Array.isArray(a)&&0!==a.length){var s=i.find("> .siteorigin-widget-field-repeater-items > .siteorigin-widget-field-repeater-item"),o=a.length,d=s.length;if(o>d)for(var l=0;l<o-d;l++)i.find("> .siteorigin-widget-field-repeater-add").click();else if(o<d)for(var g=o;g<d;g++){var f=e(s.eq(g));f.find("> .siteorigin-widget-field-repeater-item-top").find(".siteorigin-widget-field-remove").trigger("click",{silent:!0})}s=i.find("> .siteorigin-widget-field-repeater-items > .siteorigin-widget-field-repeater-item");for(var c=0;c<s.length;c++)s.eq(c).find("> .siteorigin-widget-field-repeater-item-form"),n(s.eq(c).find("> .siteorigin-widget-field-repeater-item-form"),a[c])}})};n(i,t),i.find("*[name]").each(function(){var i=e(this),r=/[a-zA-Z0-9\-]+\[[a-zA-Z0-9]+\]\[(.*)\]/.exec(i.attr("name"));if(void 0===r)return!0;r=r[1];var n=r.split("][");n=n.map(function(e){return!isNaN(parseFloat(e))&&isFinite(e)?parseInt(e):e});for(var a,s=t,o=0;o<n.length;o++)o===n.length-1?a=s[n[o]]:s=s[n[o]];if("checkbox"===i.attr("type"))i.prop("checked",a);else if("radio"===i.attr("type"))i.prop("checked",a===i.val());else if("TEXTAREA"===i.prop("tagName")&&i.hasClass("wp-editor-area")){var d=null;"undefined"!=typeof tinyMCE&&(d=tinyMCE.get(i.attr("id"))),null===d||"function"!=typeof d.getContent||d.isHidden()?i.val(a):d.setContent(a)}else i.val(a);i.trigger("change")})},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("open_dialog",function(i,t){if(t.$el.find(".so-panels-dialog").is(".so-panels-dialog-edit-widget")){e(i.target).find(".siteorigin-widget-form-main").find("> .siteorigin-widget-field").trigger("sowsetupformfield")}}),e(function(){e(document).trigger("sowadminloaded")})}(jQuery);var sowEmitters={_match:function(e,i){void 0===i&&(i=".*");var t=new RegExp("^([a-zA-Z0-9_-]+)(\\[([a-zA-Z0-9_-]+)\\])? *: *("+i+") *$"),r=t.exec(e);if(null===r)return!1;var n="",a="default";return void 0!==r[3]?(a=r[1],n=r[3]):n=r[1],{match:r[4].trim(),group:a,state:n}},_checker:function(e,i,t,r){var n={};void 0===i.length&&(i=[i]);for(var a,s=0;s<i.length;s++)!1!==(a=sowEmitters._match(i[s],t))&&("_true"===a.match||r(e,i,a.match))&&(n[a.group]=a.state);return n},select:function(e,i){void 0===i.length&&(i=[i]);for(var t={},r=0;r<i.length;r++)""===i[r]&&(i[r]="default"),t[i[r]]=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)})}};window.sowbForms=sowbForms;
|
base/siteorigin-widget.class.php
CHANGED
@@ -1003,7 +1003,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
1003 |
* @return array
|
1004 |
*/
|
1005 |
function get_google_font_fields( $instance ) {
|
1006 |
-
return array();
|
1007 |
}
|
1008 |
|
1009 |
/**
|
@@ -1218,8 +1218,15 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
1218 |
/**
|
1219 |
* Enqueue all the registered scripts
|
1220 |
*/
|
1221 |
-
function enqueue_registered_scripts() {
|
1222 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1223 |
if ( ! wp_script_is( $f_script[0] ) ) {
|
1224 |
wp_enqueue_script(
|
1225 |
$f_script[0],
|
@@ -1248,8 +1255,15 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
1248 |
/**
|
1249 |
* Enqueue any frontend styles that were registered
|
1250 |
*/
|
1251 |
-
function enqueue_registered_styles() {
|
1252 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1253 |
if ( ! wp_style_is( $f_style[0] ) ) {
|
1254 |
wp_enqueue_style(
|
1255 |
$f_style[0],
|
@@ -1268,8 +1282,8 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
1268 |
* will then ensure that the scripts are not enqueued more than once.
|
1269 |
*/
|
1270 |
function enqueue_frontend_scripts( $instance ) {
|
1271 |
-
$this->enqueue_registered_scripts();
|
1272 |
-
$this->enqueue_registered_styles();
|
1273 |
|
1274 |
// Give plugins a chance to enqueue additional frontend scripts
|
1275 |
do_action('siteorigin_widgets_enqueue_frontend_scripts_' . $this->id_base, $instance, $this);
|
1003 |
* @return array
|
1004 |
*/
|
1005 |
function get_google_font_fields( $instance ) {
|
1006 |
+
return apply_filters( 'siteorigin_widgets_google_font_fields_' . $this->id_base, array(), $instance, $this );
|
1007 |
}
|
1008 |
|
1009 |
/**
|
1218 |
/**
|
1219 |
* Enqueue all the registered scripts
|
1220 |
*/
|
1221 |
+
function enqueue_registered_scripts( $instance ) {
|
1222 |
+
$f_scripts = apply_filters(
|
1223 |
+
'siteorigin_widgets_frontend_scripts_' . $this->id_base,
|
1224 |
+
$this->frontend_scripts,
|
1225 |
+
$instance,
|
1226 |
+
$this
|
1227 |
+
);
|
1228 |
+
|
1229 |
+
foreach ( $f_scripts as $f_script ) {
|
1230 |
if ( ! wp_script_is( $f_script[0] ) ) {
|
1231 |
wp_enqueue_script(
|
1232 |
$f_script[0],
|
1255 |
/**
|
1256 |
* Enqueue any frontend styles that were registered
|
1257 |
*/
|
1258 |
+
function enqueue_registered_styles( $instance ) {
|
1259 |
+
$f_styles = apply_filters(
|
1260 |
+
'siteorigin_widgets_frontend_styles_' . $this->id_base,
|
1261 |
+
$this->frontend_styles,
|
1262 |
+
$instance,
|
1263 |
+
$this
|
1264 |
+
);
|
1265 |
+
|
1266 |
+
foreach ( $f_styles as $f_style ) {
|
1267 |
if ( ! wp_style_is( $f_style[0] ) ) {
|
1268 |
wp_enqueue_style(
|
1269 |
$f_style[0],
|
1282 |
* will then ensure that the scripts are not enqueued more than once.
|
1283 |
*/
|
1284 |
function enqueue_frontend_scripts( $instance ) {
|
1285 |
+
$this->enqueue_registered_scripts( $instance );
|
1286 |
+
$this->enqueue_registered_styles( $instance );
|
1287 |
|
1288 |
// Give plugins a chance to enqueue additional frontend scripts
|
1289 |
do_action('siteorigin_widgets_enqueue_frontend_scripts_' . $this->id_base, $instance, $this);
|
compat/elementor/styles.css
CHANGED
@@ -1,12 +1,3 @@
|
|
1 |
-
body #elementor-editor-wrapper .elementor-panel {
|
2 |
-
min-width: 400px;
|
3 |
-
}
|
4 |
-
body.elementor-editor-preview #elementor-editor-wrapper #elementor-panel {
|
5 |
-
left: -400px;
|
6 |
-
}
|
7 |
-
body.elementor-editor-active #elementor-editor-wrapper #elementor-preview {
|
8 |
-
left: 400px;
|
9 |
-
}
|
10 |
.elementor-panel #elementor-panel-page-editor .elementor-control-content .siteorigin-widget-form {
|
11 |
min-width: inherit;
|
12 |
/* Button styles copied from wp-core for default UI look. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
.elementor-panel #elementor-panel-page-editor .elementor-control-content .siteorigin-widget-form {
|
2 |
min-width: inherit;
|
3 |
/* Button styles copied from wp-core for default UI look. */
|
js/slider/jquery.slider.js
CHANGED
@@ -82,15 +82,18 @@ jQuery( function($){
|
|
82 |
|
83 |
$slide.click(function(event) {
|
84 |
|
85 |
-
if( urlData !== undefined ) {
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
}
|
92 |
}
|
93 |
} );
|
|
|
|
|
|
|
|
|
94 |
});
|
95 |
|
96 |
var setupSlider = function(){
|
82 |
|
83 |
$slide.click(function(event) {
|
84 |
|
85 |
+
if( urlData !== undefined && urlData.hasOwnProperty( 'url' ) ) {
|
86 |
+
event.preventDefault();
|
87 |
+
window.open(
|
88 |
+
urlData.url,
|
89 |
+
urlData.hasOwnProperty( 'new_window' ) && urlData.new_window ? '_blank' : '_self'
|
90 |
+
);
|
|
|
91 |
}
|
92 |
} );
|
93 |
+
|
94 |
+
$slide.find( 'a' ).click( function ( event ) {
|
95 |
+
event.stopPropagation();
|
96 |
+
} );
|
97 |
});
|
98 |
|
99 |
var setupSlider = function(){
|
js/slider/jquery.slider.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var sowb=window.sowb||{};sowb.SiteOriginSlider=function(e){return{playSlideVideo:function(i){e(i).find("video").each(function(){void 0!==this.play&&this.play()})},pauseSlideVideo:function(i){e(i).find("video").each(function(){void 0!==this.pause&&this.pause()})},setupActiveSlide:function(i,t,s){var n=e(i).find(".cycle-sentinel"),o=e(t),d=o.find("video.sow-background-element");if(void 0==s?n.css("height",o.outerHeight()):n.animate({height:o.outerHeight()},s),d.length){o.outerWidth()/o.outerHeight()>d.outerWidth()/d.outerHeight()?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)})}}}},jQuery(function(e){sowb.setupSliders=sowb.setupSlider=function(){var i=new sowb.SiteOriginSlider(e);e(".sow-slider-images").each(function(){var t=e(this),s=t.siblings(".sow-slider-pagination"),n=t.closest(".sow-slider-base"),o=n.find(".sow-slide-nav"),d=t.find(".sow-slider-image"),c=t.data("settings");d.each(function(i,t){var s=e(t),n=s.data("url");s.click(function(
|
1 |
+
var sowb=window.sowb||{};sowb.SiteOriginSlider=function(e){return{playSlideVideo:function(i){e(i).find("video").each(function(){void 0!==this.play&&this.play()})},pauseSlideVideo:function(i){e(i).find("video").each(function(){void 0!==this.pause&&this.pause()})},setupActiveSlide:function(i,t,s){var n=e(i).find(".cycle-sentinel"),o=e(t),d=o.find("video.sow-background-element");if(void 0==s?n.css("height",o.outerHeight()):n.animate({height:o.outerHeight()},s),d.length){o.outerWidth()/o.outerHeight()>d.outerWidth()/d.outerHeight()?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)})}}}},jQuery(function(e){sowb.setupSliders=sowb.setupSlider=function(){var i=new sowb.SiteOriginSlider(e);e(".sow-slider-images").each(function(){var t=e(this),s=t.siblings(".sow-slider-pagination"),n=t.closest(".sow-slider-base"),o=n.find(".sow-slide-nav"),d=t.find(".sow-slider-image"),c=t.data("settings");d.each(function(i,t){var s=e(t),n=s.data("url");s.click(function(e){void 0!==n&&n.hasOwnProperty("url")&&(e.preventDefault(),window.open(n.url,n.hasOwnProperty("new_window")&&n.new_window?"_blank":"_self"))}),s.find("a").click(function(e){e.stopPropagation()})});var l=function(){var a=t.closest(".so-widget-fittext-wrapper");if(a.length>0&&!a.data("fitTextDone"))return void a.on("fitTextDone",function(){l()});if(n.show(),t.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()}),t.on({"cycle-after":function(t,s,n,o,d){var c=e(this);i.playSlideVideo(o),i.setupActiveSlide(c,o),e(o).trigger("sowSlideCycleAfter")},"cycle-before":function(t,n,o,d,c){var l=e(this);s.find("> li").removeClass("sow-active").eq(n.slideNum-1).addClass("sow-active"),i.pauseSlideVideo(o),i.setupActiveSlide(l,d,n.speed),e(d).trigger("sowSlideCycleBefore")},"cycle-initialized":function(n,d){i.playSlideVideo(e(this).find(".cycle-slide-active")),i.setupActiveSlide(t,d.slides[0]),s.find(">li").removeClass("sow-active").eq(0).addClass("sow-active"),e(this).find(".cycle-slide-active").trigger("sowSlideInitial"),d.slideCount<=1&&(s.hide(),o.hide()),e(window).resize(),setTimeout(function(){i.setupActiveSlide(t,d.slides[0]),t.find(".cycle-sentinel").empty()},200)}}).cycle({slides:"> .sow-slider-image",speed:c.speed,timeout:c.timeout,swipe:c.swipe,"swipe-fx":"scrollHorz"}),t.find("video.sow-background-element").on("loadeddata",function(){i.setupActiveSlide(t,t.find(".cycle-slide-active"))}),s.add(o).hide(),!n.hasClass("sow-slider-is-mobile")&&d.length>1){var r=!1;n.mouseenter(function(){s.add(o).clearQueue().fadeIn(150),r=!1}).mouseleave(function(){r=!0,setTimeout(function(){r&&s.add(o).clearQueue().fadeOut(150),r=!1},750)})}e(window).resize(function(){i.setupActiveSlide(t,t.find(".cycle-slide-active"))}),s.find("> li > a").click(function(i){i.preventDefault(),t.cycle("goto",e(this).data("goto"))}),o.find("> a").click(function(i){i.preventDefault(),t.cycle(e(this).data("action"))}),n.keydown(function(e){37===e.which?t.cycle("prev"):39===e.which&&t.cycle("next")})},a=t.find("img"),r=0,u=!1;a.each(function(){e(this);this.complete?r++:e(this).one("load",function(){++r!==a.length||u||(l(),u=!0)}).attr("src",e(this).attr("src")),r!==a.length||u||(l(),u=!0)}),0===a.length&&l()})},sowb.setupSliders(),e(sowb).on("setup_widgets",sowb.setupSliders)}),window.sowb=sowb;
|
lang/so-widgets-bundle.pot
CHANGED
@@ -37,35 +37,35 @@ msgstr ""
|
|
37 |
msgid "Disabled"
|
38 |
msgstr ""
|
39 |
|
40 |
-
#: tmp/admin/tpl/admin.php:
|
41 |
msgid "Active"
|
42 |
msgstr ""
|
43 |
|
44 |
-
#: tmp/admin/tpl/admin.php:
|
45 |
msgid "Activate"
|
46 |
msgstr ""
|
47 |
|
48 |
-
#: tmp/admin/tpl/admin.php:
|
49 |
msgid "Deactivate"
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: tmp/admin/tpl/admin.php:
|
53 |
msgid "Settings"
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: tmp/admin/tpl/admin.php:
|
57 |
msgid "Developers - create your own widgets for the Widgets Bundle."
|
58 |
msgstr ""
|
59 |
|
60 |
-
#: tmp/admin/tpl/admin.php:
|
61 |
msgid "Read More"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: tmp/admin/tpl/admin.php:
|
65 |
msgid "Widget Settings"
|
66 |
msgstr ""
|
67 |
|
68 |
-
#: tmp/admin/tpl/admin.php:
|
69 |
msgid "Save"
|
70 |
msgstr ""
|
71 |
|
@@ -233,6 +233,22 @@ msgstr ""
|
|
233 |
msgid "Sponsored"
|
234 |
msgstr ""
|
235 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
#: tmp/base/inc/fields/posts.class.php:22
|
237 |
msgid "Post type"
|
238 |
msgstr ""
|
@@ -281,7 +297,7 @@ msgstr ""
|
|
281 |
msgid "Author"
|
282 |
msgstr ""
|
283 |
|
284 |
-
#: tmp/base/inc/fields/posts.class.php:82, tmp/widgets/contact/contact.php:47, tmp/widgets/cta/cta.php:63, tmp/widgets/editor/editor.php:32, tmp/widgets/features/features.php:132, tmp/widgets/post-carousel/post-carousel.php:97, tmp/widgets/price-table/price-table.php:41, tmp/widgets/price-table/price-table.php:60, tmp/widgets/simple-masonry/simple-masonry.php:43, tmp/widgets/simple-masonry/simple-masonry.php:74, tmp/widgets/social-media-buttons/social-media-buttons.php:42, tmp/widgets/taxonomy/taxonomy.php:33, tmp/widgets/testimonial/testimonial.php:40, tmp/widgets/video/video.php:32
|
285 |
msgid "Title"
|
286 |
msgstr ""
|
287 |
|
@@ -373,11 +389,11 @@ msgstr ""
|
|
373 |
msgid "Add"
|
374 |
msgstr ""
|
375 |
|
376 |
-
#: tmp/base/inc/fields/widget.class.php:
|
377 |
msgid "%s does not exist"
|
378 |
msgstr ""
|
379 |
|
380 |
-
#: tmp/base/inc/fields/widget.class.php:
|
381 |
msgid "%s is not a SiteOrigin Widget"
|
382 |
msgstr ""
|
383 |
|
@@ -597,14 +613,94 @@ msgstr ""
|
|
597 |
msgid "Deactivated"
|
598 |
msgstr ""
|
599 |
|
600 |
-
#: tmp/so-widgets-bundle.php:
|
601 |
msgid "Manage Widgets"
|
602 |
msgstr ""
|
603 |
|
604 |
-
#: tmp/so-widgets-bundle.php:
|
605 |
msgid "Support"
|
606 |
msgstr ""
|
607 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
608 |
#: tmp/widgets/button/button.php:14
|
609 |
msgid "SiteOrigin Button"
|
610 |
msgstr ""
|
@@ -1041,26 +1137,10 @@ msgstr ""
|
|
1041 |
msgid "How to handle submissions that are identified as spam."
|
1042 |
msgstr ""
|
1043 |
|
1044 |
-
#: tmp/widgets/contact/contact.php:276, tmp/widgets/cta/cta.php:73, tmp/widgets/testimonial/testimonial.php:182
|
1045 |
-
msgid "Design"
|
1046 |
-
msgstr ""
|
1047 |
-
|
1048 |
#: tmp/widgets/contact/contact.php:282
|
1049 |
msgid "Container"
|
1050 |
msgstr ""
|
1051 |
|
1052 |
-
#: tmp/widgets/contact/contact.php:286, tmp/widgets/contact/contact.php:515, tmp/widgets/cta/cta.php:77, tmp/widgets/hero/hero.php:113, tmp/widgets/layout-slider/layout-slider.php:81, tmp/widgets/social-media-buttons/social-media-buttons.php:74
|
1053 |
-
msgid "Background color"
|
1054 |
-
msgstr ""
|
1055 |
-
|
1056 |
-
#: tmp/widgets/contact/contact.php:296, tmp/widgets/contact/contact.php:409, tmp/widgets/contact/contact.php:525, tmp/widgets/cta/cta.php:81
|
1057 |
-
msgid "Border color"
|
1058 |
-
msgstr ""
|
1059 |
-
|
1060 |
-
#: tmp/widgets/contact/contact.php:301, tmp/widgets/contact/contact.php:414, tmp/widgets/contact/contact.php:541
|
1061 |
-
msgid "Border width"
|
1062 |
-
msgstr ""
|
1063 |
-
|
1064 |
#: tmp/widgets/contact/contact.php:306, tmp/widgets/contact/contact.php:530
|
1065 |
msgid "Border style"
|
1066 |
msgstr ""
|
@@ -1305,10 +1385,6 @@ msgstr ""
|
|
1305 |
msgid "Subtitle"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
-
#: tmp/widgets/cta/cta.php:85
|
1309 |
-
msgid "Title color"
|
1310 |
-
msgstr ""
|
1311 |
-
|
1312 |
#: tmp/widgets/cta/cta.php:89
|
1313 |
msgid "Subtitle color"
|
1314 |
msgstr ""
|
@@ -1941,10 +2017,6 @@ msgstr ""
|
|
1941 |
msgid "Frame"
|
1942 |
msgstr ""
|
1943 |
|
1944 |
-
#: tmp/widgets/hero/hero.php:59, tmp/widgets/layout-slider/layout-slider.php:47
|
1945 |
-
msgid "Content"
|
1946 |
-
msgstr ""
|
1947 |
-
|
1948 |
#: tmp/widgets/hero/hero.php:64, tmp/widgets/taxonomy/taxonomy.php:49
|
1949 |
msgid "Buttons"
|
1950 |
msgstr ""
|
@@ -2732,3 +2804,11 @@ msgstr ""
|
|
2732 |
#: tmp/widgets/video/video.php:106
|
2733 |
msgid "Always use the embedded video rather than the MediaElement player."
|
2734 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
msgid "Disabled"
|
38 |
msgstr ""
|
39 |
|
40 |
+
#: tmp/admin/tpl/admin.php:48
|
41 |
msgid "Active"
|
42 |
msgstr ""
|
43 |
|
44 |
+
#: tmp/admin/tpl/admin.php:70
|
45 |
msgid "Activate"
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: tmp/admin/tpl/admin.php:71
|
49 |
msgid "Deactivate"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: tmp/admin/tpl/admin.php:90, tmp/widgets/contact/contact.php:58, tmp/widgets/google-map/google-map.php:70, tmp/widgets/testimonial/testimonial.php:99
|
53 |
msgid "Settings"
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: tmp/admin/tpl/admin.php:104
|
57 |
msgid "Developers - create your own widgets for the Widgets Bundle."
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: tmp/admin/tpl/admin.php:105
|
61 |
msgid "Read More"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: tmp/admin/tpl/admin.php:112
|
65 |
msgid "Widget Settings"
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: tmp/admin/tpl/admin.php:123
|
69 |
msgid "Save"
|
70 |
msgstr ""
|
71 |
|
233 |
msgid "Sponsored"
|
234 |
msgstr ""
|
235 |
|
236 |
+
#: tmp/base/inc/fields/multi-measurement.class.php:12
|
237 |
+
msgid "Padding left"
|
238 |
+
msgstr ""
|
239 |
+
|
240 |
+
#: tmp/base/inc/fields/multi-measurement.class.php:15
|
241 |
+
msgid "Padding right"
|
242 |
+
msgstr ""
|
243 |
+
|
244 |
+
#: tmp/base/inc/fields/multi-measurement.class.php:16
|
245 |
+
msgid "Padding bottom"
|
246 |
+
msgstr ""
|
247 |
+
|
248 |
+
#: tmp/base/inc/fields/multi-measurement.class.php:17
|
249 |
+
msgid "Padding top"
|
250 |
+
msgstr ""
|
251 |
+
|
252 |
#: tmp/base/inc/fields/posts.class.php:22
|
253 |
msgid "Post type"
|
254 |
msgstr ""
|
297 |
msgid "Author"
|
298 |
msgstr ""
|
299 |
|
300 |
+
#: tmp/base/inc/fields/posts.class.php:82, tmp/widgets/accordion/accordion.php:50, tmp/widgets/contact/contact.php:47, tmp/widgets/cta/cta.php:63, tmp/widgets/editor/editor.php:32, tmp/widgets/features/features.php:132, tmp/widgets/post-carousel/post-carousel.php:97, tmp/widgets/price-table/price-table.php:41, tmp/widgets/price-table/price-table.php:60, tmp/widgets/simple-masonry/simple-masonry.php:43, tmp/widgets/simple-masonry/simple-masonry.php:74, tmp/widgets/social-media-buttons/social-media-buttons.php:42, tmp/widgets/taxonomy/taxonomy.php:33, tmp/widgets/testimonial/testimonial.php:40, tmp/widgets/video/video.php:32
|
301 |
msgid "Title"
|
302 |
msgstr ""
|
303 |
|
389 |
msgid "Add"
|
390 |
msgstr ""
|
391 |
|
392 |
+
#: tmp/base/inc/fields/widget.class.php:37
|
393 |
msgid "%s does not exist"
|
394 |
msgstr ""
|
395 |
|
396 |
+
#: tmp/base/inc/fields/widget.class.php:47
|
397 |
msgid "%s is not a SiteOrigin Widget"
|
398 |
msgstr ""
|
399 |
|
613 |
msgid "Deactivated"
|
614 |
msgstr ""
|
615 |
|
616 |
+
#: tmp/so-widgets-bundle.php:729
|
617 |
msgid "Manage Widgets"
|
618 |
msgstr ""
|
619 |
|
620 |
+
#: tmp/so-widgets-bundle.php:730
|
621 |
msgid "Support"
|
622 |
msgstr ""
|
623 |
|
624 |
+
#: tmp/widgets/accordion/accordion.php:14
|
625 |
+
msgid "SiteOrigin Accordion"
|
626 |
+
msgstr ""
|
627 |
+
|
628 |
+
#: tmp/widgets/accordion/accordion.php:16
|
629 |
+
msgid "An accordion widget."
|
630 |
+
msgstr ""
|
631 |
+
|
632 |
+
#: tmp/widgets/accordion/accordion.php:46, tmp/widgets/accordion/accordion.php:113
|
633 |
+
msgid "Panels"
|
634 |
+
msgstr ""
|
635 |
+
|
636 |
+
#: tmp/widgets/accordion/accordion.php:54, tmp/widgets/hero/hero.php:59, tmp/widgets/layout-slider/layout-slider.php:47
|
637 |
+
msgid "Content"
|
638 |
+
msgstr ""
|
639 |
+
|
640 |
+
#: tmp/widgets/accordion/accordion.php:58
|
641 |
+
msgid "Initial state"
|
642 |
+
msgstr ""
|
643 |
+
|
644 |
+
#: tmp/widgets/accordion/accordion.php:59
|
645 |
+
msgid "Whether this panel should be open or closed when the page first loads."
|
646 |
+
msgstr ""
|
647 |
+
|
648 |
+
#: tmp/widgets/accordion/accordion.php:61
|
649 |
+
msgid "Open"
|
650 |
+
msgstr ""
|
651 |
+
|
652 |
+
#: tmp/widgets/accordion/accordion.php:62
|
653 |
+
msgid "Closed"
|
654 |
+
msgstr ""
|
655 |
+
|
656 |
+
#: tmp/widgets/accordion/accordion.php:70, tmp/widgets/contact/contact.php:276, tmp/widgets/cta/cta.php:73, tmp/widgets/testimonial/testimonial.php:182
|
657 |
+
msgid "Design"
|
658 |
+
msgstr ""
|
659 |
+
|
660 |
+
#: tmp/widgets/accordion/accordion.php:75
|
661 |
+
msgid "Headings"
|
662 |
+
msgstr ""
|
663 |
+
|
664 |
+
#: tmp/widgets/accordion/accordion.php:80, tmp/widgets/accordion/accordion.php:118, tmp/widgets/contact/contact.php:286, tmp/widgets/contact/contact.php:515, tmp/widgets/cta/cta.php:77, tmp/widgets/hero/hero.php:113, tmp/widgets/layout-slider/layout-slider.php:81, tmp/widgets/social-media-buttons/social-media-buttons.php:74
|
665 |
+
msgid "Background color"
|
666 |
+
msgstr ""
|
667 |
+
|
668 |
+
#: tmp/widgets/accordion/accordion.php:85
|
669 |
+
msgid "Background hover color"
|
670 |
+
msgstr ""
|
671 |
+
|
672 |
+
#: tmp/widgets/accordion/accordion.php:90, tmp/widgets/cta/cta.php:85
|
673 |
+
msgid "Title color"
|
674 |
+
msgstr ""
|
675 |
+
|
676 |
+
#: tmp/widgets/accordion/accordion.php:95
|
677 |
+
msgid "Title hover color"
|
678 |
+
msgstr ""
|
679 |
+
|
680 |
+
#: tmp/widgets/accordion/accordion.php:99, tmp/widgets/accordion/accordion.php:127, tmp/widgets/contact/contact.php:296, tmp/widgets/contact/contact.php:409, tmp/widgets/contact/contact.php:525, tmp/widgets/cta/cta.php:81
|
681 |
+
msgid "Border color"
|
682 |
+
msgstr ""
|
683 |
+
|
684 |
+
#: tmp/widgets/accordion/accordion.php:103
|
685 |
+
msgid "Border hover color"
|
686 |
+
msgstr ""
|
687 |
+
|
688 |
+
#: tmp/widgets/accordion/accordion.php:107, tmp/widgets/accordion/accordion.php:131, tmp/widgets/contact/contact.php:301, tmp/widgets/contact/contact.php:414, tmp/widgets/contact/contact.php:541
|
689 |
+
msgid "Border width"
|
690 |
+
msgstr ""
|
691 |
+
|
692 |
+
#: tmp/widgets/accordion/accordion.php:123
|
693 |
+
msgid "Font color"
|
694 |
+
msgstr ""
|
695 |
+
|
696 |
+
#: tmp/widgets/accordion/accordion.php:135
|
697 |
+
msgid "Bottom margin"
|
698 |
+
msgstr ""
|
699 |
+
|
700 |
+
#: tmp/widgets/accordion/accordion.php:204
|
701 |
+
msgid "Get more customization options and the ability to use widgets and layouts as your accordion content with %sSiteOrigin Premium%s"
|
702 |
+
msgstr ""
|
703 |
+
|
704 |
#: tmp/widgets/button/button.php:14
|
705 |
msgid "SiteOrigin Button"
|
706 |
msgstr ""
|
1137 |
msgid "How to handle submissions that are identified as spam."
|
1138 |
msgstr ""
|
1139 |
|
|
|
|
|
|
|
|
|
1140 |
#: tmp/widgets/contact/contact.php:282
|
1141 |
msgid "Container"
|
1142 |
msgstr ""
|
1143 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1144 |
#: tmp/widgets/contact/contact.php:306, tmp/widgets/contact/contact.php:530
|
1145 |
msgid "Border style"
|
1146 |
msgstr ""
|
1385 |
msgid "Subtitle"
|
1386 |
msgstr ""
|
1387 |
|
|
|
|
|
|
|
|
|
1388 |
#: tmp/widgets/cta/cta.php:89
|
1389 |
msgid "Subtitle color"
|
1390 |
msgstr ""
|
2017 |
msgid "Frame"
|
2018 |
msgstr ""
|
2019 |
|
|
|
|
|
|
|
|
|
2020 |
#: tmp/widgets/hero/hero.php:64, tmp/widgets/taxonomy/taxonomy.php:49
|
2021 |
msgid "Buttons"
|
2022 |
msgstr ""
|
2804 |
#: tmp/widgets/video/video.php:106
|
2805 |
msgid "Always use the embedded video rather than the MediaElement player."
|
2806 |
msgstr ""
|
2807 |
+
|
2808 |
+
#: tmp/widgets/video/video.php:115
|
2809 |
+
msgid "Show related videos."
|
2810 |
+
msgstr ""
|
2811 |
+
|
2812 |
+
#: tmp/widgets/video/video.php:116
|
2813 |
+
msgid "If the external host supports it."
|
2814 |
+
msgstr ""
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Tags: bundle, widget, button, slider, image, carousel, price table, google maps, tinymce, social links
|
3 |
Requires at least: 4.2
|
4 |
Tested up to: 4.8.1
|
5 |
-
Stable tag: 1.
|
6 |
-
Build time: 2017-
|
7 |
License: GPLv3 or later
|
8 |
Contributors: gpriday, braam-genis
|
9 |
Donate link: https://siteorigin.com/downloads/contribution/
|
@@ -54,6 +54,17 @@ The SiteOrigin Widgets Bundle is the perfect platform to build widgets for your
|
|
54 |
|
55 |
== Changelog ==
|
56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
= 1.9.10 - 14 September 2017 =
|
58 |
* TinyMCE field: fixed issue with filter for TinyMCE plugins.
|
59 |
* Added teaser messages for SiteOrigin Premium addons.
|
2 |
Tags: bundle, widget, button, slider, image, carousel, price table, google maps, tinymce, social links
|
3 |
Requires at least: 4.2
|
4 |
Tested up to: 4.8.1
|
5 |
+
Stable tag: 1.10.0
|
6 |
+
Build time: 2017-10-11T09:35:25+02:00
|
7 |
License: GPLv3 or later
|
8 |
Contributors: gpriday, braam-genis
|
9 |
Donate link: https://siteorigin.com/downloads/contribution/
|
54 |
|
55 |
== Changelog ==
|
56 |
|
57 |
+
= 1.10.0 - 11 October 2017 =
|
58 |
+
* New Accordion widget!
|
59 |
+
* Prevent multiple initialization of media field.
|
60 |
+
* Use correct path for widget banner when defined in a theme.
|
61 |
+
* Video: Added option to show/hide related YouTube videos at end of video.
|
62 |
+
* Slider: Handle links inside slider frames first and then allow processing of frame background clicks.
|
63 |
+
* Give repeated fields in widget fields unique ids for state handling.
|
64 |
+
* New multi-measurement field.
|
65 |
+
* Widget Manager Path Comparison fix. (allows for settings to work)
|
66 |
+
* Button: Use `esc_js` instead of `esc_attr` for onclick.
|
67 |
+
|
68 |
= 1.9.10 - 14 September 2017 =
|
69 |
* TinyMCE field: fixed issue with filter for TinyMCE plugins.
|
70 |
* Added teaser messages for SiteOrigin Premium addons.
|
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: /lang
|
8 |
Author: SiteOrigin
|
@@ -12,7 +12,7 @@ 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_BASE_FILE', __FILE__);
|
17 |
|
18 |
// Allow JS suffix to be pre-set
|
@@ -382,7 +382,7 @@ class SiteOrigin_Widgets_Bundle {
|
|
382 |
|
383 |
$widget_objects = $this->get_widget_objects();
|
384 |
|
385 |
-
$widget_path = empty( $_GET['id'] ) ? false : WP_PLUGIN_DIR . $_GET['id'];
|
386 |
|
387 |
$widget_object = empty( $widget_objects[ $widget_path ] ) ? false : $widget_objects[ $widget_path ];
|
388 |
|
@@ -424,7 +424,7 @@ class SiteOrigin_Widgets_Bundle {
|
|
424 |
}
|
425 |
|
426 |
$widget_objects = $this->get_widget_objects();
|
427 |
-
$widget_path = empty( $_GET['id'] ) ? false : WP_PLUGIN_DIR . $_GET['id'];
|
428 |
$widget_object = empty( $widget_objects[ $widget_path ] ) ? false : $widget_objects[ $widget_path ];
|
429 |
|
430 |
if ( empty( $widget_object ) || ! $widget_object->has_form( 'settings' ) ) {
|
@@ -640,8 +640,9 @@ class SiteOrigin_Widgets_Bundle {
|
|
640 |
|
641 |
foreach( $folders as $folder ) {
|
642 |
|
643 |
-
$files = glob( $folder . '*/*.php' );
|
644 |
foreach ($files as $file) {
|
|
|
645 |
include_once $file;
|
646 |
|
647 |
$widget_class = $manager->get_class_from_path( $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.10.0
|
6 |
Text Domain: so-widgets-bundle
|
7 |
Domain Path: /lang
|
8 |
Author: SiteOrigin
|
12 |
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
13 |
*/
|
14 |
|
15 |
+
define('SOW_BUNDLE_VERSION', '1.10.0');
|
16 |
define('SOW_BUNDLE_BASE_FILE', __FILE__);
|
17 |
|
18 |
// Allow JS suffix to be pre-set
|
382 |
|
383 |
$widget_objects = $this->get_widget_objects();
|
384 |
|
385 |
+
$widget_path = empty( $_GET['id'] ) ? false : wp_normalize_path( WP_PLUGIN_DIR ) . $_GET['id'];
|
386 |
|
387 |
$widget_object = empty( $widget_objects[ $widget_path ] ) ? false : $widget_objects[ $widget_path ];
|
388 |
|
424 |
}
|
425 |
|
426 |
$widget_objects = $this->get_widget_objects();
|
427 |
+
$widget_path = empty( $_GET['id'] ) ? false : wp_normalize_path( WP_PLUGIN_DIR ) . $_GET['id'];
|
428 |
$widget_object = empty( $widget_objects[ $widget_path ] ) ? false : $widget_objects[ $widget_path ];
|
429 |
|
430 |
if ( empty( $widget_object ) || ! $widget_object->has_form( 'settings' ) ) {
|
640 |
|
641 |
foreach( $folders as $folder ) {
|
642 |
|
643 |
+
$files = glob( wp_normalize_path( $folder ) . '*/*.php' );
|
644 |
foreach ($files as $file) {
|
645 |
+
$file = wp_normalize_path( $file );
|
646 |
include_once $file;
|
647 |
|
648 |
$widget_class = $manager->get_class_from_path( $file );
|
widgets/accordion/accordion.php
ADDED
@@ -0,0 +1,211 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Widget Name: Accordion
|
4 |
+
Description: An accordion to squeeze a lot of content into a small space.
|
5 |
+
Author: SiteOrigin
|
6 |
+
Author URI: https://siteorigin.com
|
7 |
+
*/
|
8 |
+
|
9 |
+
class SiteOrigin_Widget_Accordion_Widget extends SiteOrigin_Widget {
|
10 |
+
function __construct() {
|
11 |
+
|
12 |
+
parent::__construct(
|
13 |
+
'sow-accordion',
|
14 |
+
__( 'SiteOrigin Accordion', 'so-widgets-bundle' ),
|
15 |
+
array(
|
16 |
+
'description' => __( 'An accordion widget.', 'so-widgets-bundle' ),
|
17 |
+
'help' => 'https://siteorigin.com/widgets-bundle/accordion-widget/',
|
18 |
+
),
|
19 |
+
array(),
|
20 |
+
false,
|
21 |
+
plugin_dir_path( __FILE__ )
|
22 |
+
);
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Initialize the accordion widget.
|
27 |
+
*/
|
28 |
+
function initialize() {
|
29 |
+
$this->register_frontend_scripts(
|
30 |
+
array(
|
31 |
+
array(
|
32 |
+
'sow-accordion',
|
33 |
+
plugin_dir_url( __FILE__ ) . 'js/accordion' . SOW_BUNDLE_JS_SUFFIX . '.js',
|
34 |
+
array( 'jquery' ),
|
35 |
+
SOW_BUNDLE_VERSION
|
36 |
+
)
|
37 |
+
)
|
38 |
+
);
|
39 |
+
}
|
40 |
+
|
41 |
+
function get_widget_form() {
|
42 |
+
|
43 |
+
return array(
|
44 |
+
'panels' => array(
|
45 |
+
'type' => 'repeater',
|
46 |
+
'label' => __( 'Panels', 'so-widgets-bundle' ),
|
47 |
+
'fields' => array(
|
48 |
+
'title' => array(
|
49 |
+
'type' => 'text',
|
50 |
+
'label' => __( 'Title', 'so-widgets-bundle' ),
|
51 |
+
),
|
52 |
+
'content_text' => array(
|
53 |
+
'type' => 'tinymce',
|
54 |
+
'label' => __( 'Content', 'so-widgets-bundle' ),
|
55 |
+
),
|
56 |
+
'initial_state' => array(
|
57 |
+
'type' => 'radio',
|
58 |
+
'label' => __( 'Initial state', 'so-widgets-bundle' ),
|
59 |
+
'description' => __( 'Whether this panel should be open or closed when the page first loads.', 'so-widgets-bundle' ),
|
60 |
+
'options' => array(
|
61 |
+
'open' => __( 'Open', 'so-widgets-bundle' ),
|
62 |
+
'closed' => __( 'Closed', 'so-widgets-bundle' ),
|
63 |
+
),
|
64 |
+
'default' => 'closed',
|
65 |
+
),
|
66 |
+
),
|
67 |
+
),
|
68 |
+
'design' => array(
|
69 |
+
'type' => 'section',
|
70 |
+
'label' => __( 'Design', 'so-widgets-bundle' ),
|
71 |
+
'hide' => true,
|
72 |
+
'fields' => array(
|
73 |
+
'heading' => array(
|
74 |
+
'type' => 'section',
|
75 |
+
'label' => __( 'Headings', 'so-widgets-bundle' ),
|
76 |
+
'hide' => true,
|
77 |
+
'fields' => array(
|
78 |
+
'background_color' => array(
|
79 |
+
'type' => 'color',
|
80 |
+
'label' => __( 'Background color', 'so-widgets-bundle' ),
|
81 |
+
'default' => '#828282',
|
82 |
+
),
|
83 |
+
'background_hover_color' => array(
|
84 |
+
'type' => 'color',
|
85 |
+
'label' => __( 'Background hover color', 'so-widgets-bundle' ),
|
86 |
+
'default' => '#8C8C8C',
|
87 |
+
),
|
88 |
+
'title_color' => array(
|
89 |
+
'type' => 'color',
|
90 |
+
'label' => __( 'Title color', 'so-widgets-bundle' ),
|
91 |
+
'default' => '#FFFFFF',
|
92 |
+
),
|
93 |
+
'title_hover_color' => array(
|
94 |
+
'type' => 'color',
|
95 |
+
'label' => __( 'Title hover color', 'so-widgets-bundle' ),
|
96 |
+
),
|
97 |
+
'border_color' => array(
|
98 |
+
'type' => 'color',
|
99 |
+
'label' => __( 'Border color', 'so-widgets-bundle' ),
|
100 |
+
),
|
101 |
+
'border_hover_color' => array(
|
102 |
+
'type' => 'color',
|
103 |
+
'label' => __( 'Border hover color', 'so-widgets-bundle' ),
|
104 |
+
),
|
105 |
+
'border_width' => array(
|
106 |
+
'type' => 'measurement',
|
107 |
+
'label' => __( 'Border width', 'so-widgets-bundle' ),
|
108 |
+
),
|
109 |
+
),
|
110 |
+
),
|
111 |
+
'panels' => array(
|
112 |
+
'type' => 'section',
|
113 |
+
'label' => __( 'Panels', 'so-widgets-bundle' ),
|
114 |
+
'hide' => true,
|
115 |
+
'fields' => array(
|
116 |
+
'background_color' => array(
|
117 |
+
'type' => 'color',
|
118 |
+
'label' => __( 'Background color', 'so-widgets-bundle' ),
|
119 |
+
'default' => '#F9F9F9',
|
120 |
+
),
|
121 |
+
'font_color' => array(
|
122 |
+
'type' => 'color',
|
123 |
+
'label' => __( 'Font color', 'so-widgets-bundle' ),
|
124 |
+
),
|
125 |
+
'border_color' => array(
|
126 |
+
'type' => 'color',
|
127 |
+
'label' => __( 'Border color', 'so-widgets-bundle' ),
|
128 |
+
),
|
129 |
+
'border_width' => array(
|
130 |
+
'type' => 'measurement',
|
131 |
+
'label' => __( 'Border width', 'so-widgets-bundle' ),
|
132 |
+
),
|
133 |
+
'margin_bottom' => array(
|
134 |
+
'type' => 'measurement',
|
135 |
+
'label' => __( 'Bottom margin', 'so-widgets-bundle' ),
|
136 |
+
'default' => '10px',
|
137 |
+
),
|
138 |
+
),
|
139 |
+
),
|
140 |
+
),
|
141 |
+
),
|
142 |
+
);
|
143 |
+
}
|
144 |
+
|
145 |
+
public function get_less_variables( $instance ) {
|
146 |
+
$design = $instance['design'];
|
147 |
+
|
148 |
+
return array(
|
149 |
+
'heading_background_color' => $design['heading']['background_color'],
|
150 |
+
'heading_background_hover_color' => $design['heading']['background_hover_color'],
|
151 |
+
'title_color' => $design['heading']['title_color'],
|
152 |
+
'title_hover_color' => $design['heading']['title_hover_color'],
|
153 |
+
'heading_border_color' => $design['heading']['border_color'],
|
154 |
+
'heading_border_hover_color' => $design['heading']['border_hover_color'],
|
155 |
+
'heading_border_width' => $design['heading']['border_width'],
|
156 |
+
'has_heading_border_width' => empty( $design['heading']['border_width'] ) ? 'false' : 'true',
|
157 |
+
'panels_background_color' => $design['panels']['background_color'],
|
158 |
+
'panels_font_color' => $design['panels']['font_color'],
|
159 |
+
'panels_border_color' => $design['panels']['border_color'],
|
160 |
+
'panels_border_width' => $design['panels']['border_width'],
|
161 |
+
'has_panels_border_width' => empty( $design['panels']['border_width'] ) ? 'false' : 'true',
|
162 |
+
'panels_margin_bottom' => $design['panels']['margin_bottom'],
|
163 |
+
);
|
164 |
+
}
|
165 |
+
|
166 |
+
public function get_template_variables( $instance, $args ) {
|
167 |
+
if( empty( $instance ) ) return array();
|
168 |
+
|
169 |
+
$panels = empty( $instance['panels'] ) ? array() : $instance['panels'];
|
170 |
+
|
171 |
+
foreach ( $panels as &$panel ) {
|
172 |
+
if ( empty( $panel['before_title'] ) ) {
|
173 |
+
$panel['before_title'] = '';
|
174 |
+
}
|
175 |
+
if ( empty( $panel['after_title'] ) ) {
|
176 |
+
$panel['after_title'] = '';
|
177 |
+
}
|
178 |
+
}
|
179 |
+
|
180 |
+
if ( empty( $instance['design']['heading']['icon_open'] ) ) {
|
181 |
+
$instance['design']['heading']['icon_open'] = 'ionicons-plus';
|
182 |
+
}
|
183 |
+
|
184 |
+
if ( empty( $instance['design']['heading']['icon_close'] ) ) {
|
185 |
+
$instance['design']['heading']['icon_close'] = 'ionicons-minus';
|
186 |
+
}
|
187 |
+
|
188 |
+
return array(
|
189 |
+
'panels' => $panels,
|
190 |
+
'icon_open' => $instance['design']['heading']['icon_open'],
|
191 |
+
'icon_close' => $instance['design']['heading']['icon_close'],
|
192 |
+
);
|
193 |
+
}
|
194 |
+
|
195 |
+
public function render_panel_content( $panel, $instance ) {
|
196 |
+
$content = wp_kses_post( $panel['content_text'] );
|
197 |
+
|
198 |
+
echo apply_filters( 'siteorigin_widgets_accordion_render_panel_content', $content, $panel, $instance );
|
199 |
+
}
|
200 |
+
|
201 |
+
function get_form_teaser(){
|
202 |
+
if( class_exists( 'SiteOrigin_Premium' ) ) return false;
|
203 |
+
return sprintf(
|
204 |
+
__( 'Get more customization options and the ability to use widgets and layouts as your accordion content with %sSiteOrigin Premium%s', 'so-widgets-bundle' ),
|
205 |
+
'<a href="https://siteorigin.com/downloads/premium/?featured_addon=plugin/accordion" target="_blank">',
|
206 |
+
'</a>'
|
207 |
+
);
|
208 |
+
}
|
209 |
+
}
|
210 |
+
|
211 |
+
siteorigin_widget_register('sow-accordion', __FILE__, 'SiteOrigin_Widget_Accordion_Widget');
|
widgets/accordion/js/accordion.js
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery( function ( $ ) {
|
2 |
+
|
3 |
+
$( '.sow-accordion' ).each( function ( index, element ) {
|
4 |
+
var $accordionPanels = $( element ).find( '> .sow-accordion-panel' );
|
5 |
+
|
6 |
+
$accordionPanels.not( '.sow-accordion-panel-open' ).find( '.sow-accordion-panel-content' ).hide();
|
7 |
+
|
8 |
+
var openPanels = $accordionPanels.filter( '.sow-accordion-panel-open' ).toArray();
|
9 |
+
|
10 |
+
var openPanel = function ( panel ) {
|
11 |
+
$( panel ).find( '> .sow-accordion-panel-content' ).slideDown();
|
12 |
+
$( panel ).addClass( 'sow-accordion-panel-open' );
|
13 |
+
openPanels.push( panel );
|
14 |
+
};
|
15 |
+
|
16 |
+
var closePanel = function ( panel ) {
|
17 |
+
$( panel ).find( '> .sow-accordion-panel-content' ).slideUp();
|
18 |
+
$( panel ).removeClass( 'sow-accordion-panel-open' );
|
19 |
+
openPanels.splice( openPanels.indexOf( panel ), 1 );
|
20 |
+
};
|
21 |
+
|
22 |
+
$accordionPanels.find( '> .sow-accordion-panel-header' ).click( function () {
|
23 |
+
var $this = $( this );
|
24 |
+
var $widget = $this.closest( '.so-widget-sow-accordion' );
|
25 |
+
var maxOpenPanels = $widget.data( 'maxOpenPanels' );
|
26 |
+
var $panel = $this.closest( '.sow-accordion-panel' );
|
27 |
+
if ( $panel.is( '.sow-accordion-panel-open' ) ) {
|
28 |
+
closePanel( $panel.get( 0 ) );
|
29 |
+
} else {
|
30 |
+
openPanel( $panel.get( 0 ) );
|
31 |
+
}
|
32 |
+
if ( ! isNaN( maxOpenPanels ) && maxOpenPanels > 0 && openPanels.length > maxOpenPanels ) {
|
33 |
+
closePanel( openPanels[ 0 ] );
|
34 |
+
}
|
35 |
+
} );
|
36 |
+
} );
|
37 |
+
} );
|
widgets/accordion/js/accordion.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
jQuery(function(o){o(".sow-accordion").each(function(n,c){var e=o(c).find("> .sow-accordion-panel");e.not(".sow-accordion-panel-open").find(".sow-accordion-panel-content").hide();var a=e.filter(".sow-accordion-panel-open").toArray(),i=function(n){o(n).find("> .sow-accordion-panel-content").slideDown(),o(n).addClass("sow-accordion-panel-open"),a.push(n)},s=function(n){o(n).find("> .sow-accordion-panel-content").slideUp(),o(n).removeClass("sow-accordion-panel-open"),a.splice(a.indexOf(n),1)};e.find("> .sow-accordion-panel-header").click(function(){var n=o(this),c=n.closest(".so-widget-sow-accordion"),e=c.data("maxOpenPanels"),d=n.closest(".sow-accordion-panel");d.is(".sow-accordion-panel-open")?s(d.get(0)):i(d.get(0)),!isNaN(e)&&e>0&&a.length>e&&s(a[0])})})});
|
widgets/accordion/styles/default.less
ADDED
@@ -0,0 +1,97 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@import "../../../base/less/mixins";
|
2 |
+
|
3 |
+
.widget-function('import_google_font');
|
4 |
+
|
5 |
+
@heading_background_color: default;
|
6 |
+
@heading_background_hover_color: default;
|
7 |
+
@title_color: default;
|
8 |
+
@title_hover_color: default;
|
9 |
+
@heading_title_align: left;
|
10 |
+
@heading_title_font_family: default;
|
11 |
+
@heading_title_font_weight: default;
|
12 |
+
@heading_title_font_size: default;
|
13 |
+
@heading_border_color: default;
|
14 |
+
@heading_border_hover_color: default;
|
15 |
+
@has_heading_border_width: default;
|
16 |
+
@heading_border_width: default;
|
17 |
+
@heading_border_radius: default;
|
18 |
+
@heading_padding: 15px 30px 15px 30px;
|
19 |
+
@show_open_close_icon: true;
|
20 |
+
@open_close_location: right;
|
21 |
+
|
22 |
+
@panels_background_color: default;
|
23 |
+
@panels_font_color: default;
|
24 |
+
@panels_border_color: default;
|
25 |
+
@has_panels_border_width: default;
|
26 |
+
@panels_border_width: default;
|
27 |
+
@panels_border_radius: default;
|
28 |
+
@panels_padding: 15px 30px 15px 30px;
|
29 |
+
@panels_margin_bottom: 10px;
|
30 |
+
|
31 |
+
.sow-accordion {
|
32 |
+
.sow-accordion-panel {
|
33 |
+
.sow-accordion-panel-header {
|
34 |
+
position: relative;
|
35 |
+
cursor: pointer;
|
36 |
+
padding: @heading_padding;
|
37 |
+
background-color: @heading_background_color;
|
38 |
+
color: @title_color;
|
39 |
+
text-align: @heading_title_align;
|
40 |
+
font-family: @heading_title_font_family;
|
41 |
+
font-weight: @heading_title_font_weight;
|
42 |
+
font-size: @heading_title_font_size;
|
43 |
+
|
44 |
+
& when( @has_heading_border_width = true ) {
|
45 |
+
border-style: solid;
|
46 |
+
border-color: @heading_border_color;
|
47 |
+
border-width: @heading_border_width;
|
48 |
+
border-radius: @heading_border_radius;
|
49 |
+
}
|
50 |
+
|
51 |
+
&:hover {
|
52 |
+
background-color: @heading_background_hover_color;
|
53 |
+
color: @title_hover_color;
|
54 |
+
border-color: @heading_border_hover_color;
|
55 |
+
}
|
56 |
+
|
57 |
+
.sow-accordion-title {
|
58 |
+
display: inline-block;
|
59 |
+
& when ( @show_open_close_icon = true ) and ( @heading_title_align = @open_close_location ) {
|
60 |
+
margin-@{open_close_location}: 5px;
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
.sow-accordion-open-close-button {
|
65 |
+
float: @open_close_location;
|
66 |
+
|
67 |
+
& when ( @show_open_close_icon = false ) {
|
68 |
+
display: none;
|
69 |
+
}
|
70 |
+
}
|
71 |
+
}
|
72 |
+
&:not(.sow-accordion-panel-open) > .sow-accordion-panel-header {
|
73 |
+
.sow-accordion-close-button {
|
74 |
+
display: none;
|
75 |
+
}
|
76 |
+
}
|
77 |
+
&.sow-accordion-panel-open > .sow-accordion-panel-header {
|
78 |
+
.sow-accordion-open-button {
|
79 |
+
display: none;
|
80 |
+
}
|
81 |
+
}
|
82 |
+
.sow-accordion-panel-content {
|
83 |
+
.sow-accordion-panel-border {
|
84 |
+
background-color: @panels_background_color;
|
85 |
+
& when ( @has_panels_border_width = true ) {
|
86 |
+
border-style: solid;
|
87 |
+
border-color: @panels_border_color;
|
88 |
+
border-width: @panels_border_width;
|
89 |
+
border-radius: @panels_border_radius;
|
90 |
+
}
|
91 |
+
padding: @panels_padding;
|
92 |
+
color: @panels_font_color;
|
93 |
+
}
|
94 |
+
}
|
95 |
+
margin-bottom: @panels_margin_bottom;
|
96 |
+
}
|
97 |
+
}
|
widgets/accordion/tpl/default.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @var array $instance
|
4 |
+
* @var array $panels
|
5 |
+
* @var string $icon_open
|
6 |
+
* @var string $icon_close
|
7 |
+
*/
|
8 |
+
|
9 |
+
?>
|
10 |
+
<div>
|
11 |
+
<div class="sow-accordion">
|
12 |
+
<?php foreach ( $panels as $panel ) : ?>
|
13 |
+
<div class="sow-accordion-panel<?php if ( $panel['initial_state'] == 'open' ) echo ' sow-accordion-panel-open'; ?>">
|
14 |
+
<div class="sow-accordion-panel-header">
|
15 |
+
<div class="sow-accordion-title">
|
16 |
+
<?php echo $panel['before_title']; ?>
|
17 |
+
<?php echo wp_kses_post( $panel['title'] ); ?>
|
18 |
+
<?php echo $panel['after_title']; ?>
|
19 |
+
</div>
|
20 |
+
<div class="sow-accordion-open-close-button">
|
21 |
+
<div class="sow-accordion-open-button">
|
22 |
+
<?php echo siteorigin_widget_get_icon( $icon_open ); ?>
|
23 |
+
</div>
|
24 |
+
<div class="sow-accordion-close-button">
|
25 |
+
<?php echo siteorigin_widget_get_icon( $icon_close ); ?>
|
26 |
+
</div>
|
27 |
+
</div>
|
28 |
+
</div>
|
29 |
+
<div class="sow-accordion-panel-content">
|
30 |
+
<div class="sow-accordion-panel-border">
|
31 |
+
<?php $this->render_panel_content( $panel, $instance ); ?>
|
32 |
+
</div>
|
33 |
+
</div>
|
34 |
+
</div>
|
35 |
+
<?php endforeach; ?>
|
36 |
+
</div>
|
37 |
+
</div>
|
widgets/button/button.php
CHANGED
@@ -250,9 +250,6 @@ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget {
|
|
250 |
if ( ! empty( $attributes['title'] ) ) {
|
251 |
$button_attributes['title'] = $attributes['title'];
|
252 |
}
|
253 |
-
if ( ! empty( $attributes['onclick'] ) ) {
|
254 |
-
$button_attributes['onclick'] = $attributes['onclick'];
|
255 |
-
}
|
256 |
if ( ! empty( $attributes['rel'] ) ) {
|
257 |
$button_attributes['rel'] = $attributes['rel'];
|
258 |
}
|
@@ -269,6 +266,7 @@ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget {
|
|
269 |
return array(
|
270 |
'button_attributes' => $button_attributes,
|
271 |
'href' => !empty( $instance['url'] ) ? $instance['url'] : '#',
|
|
|
272 |
'align' => $instance['design']['align'],
|
273 |
'icon_image_url' => $icon_image_url,
|
274 |
'icon' => $instance['button_icon']['icon_selected'],
|
250 |
if ( ! empty( $attributes['title'] ) ) {
|
251 |
$button_attributes['title'] = $attributes['title'];
|
252 |
}
|
|
|
|
|
|
|
253 |
if ( ! empty( $attributes['rel'] ) ) {
|
254 |
$button_attributes['rel'] = $attributes['rel'];
|
255 |
}
|
266 |
return array(
|
267 |
'button_attributes' => $button_attributes,
|
268 |
'href' => !empty( $instance['url'] ) ? $instance['url'] : '#',
|
269 |
+
'onclick' => ! empty( $attributes['onclick'] ) ? $attributes['onclick'] : '',
|
270 |
'align' => $instance['design']['align'],
|
271 |
'icon_image_url' => $icon_image_url,
|
272 |
'icon' => $instance['button_icon']['icon_selected'],
|
widgets/button/tpl/default.php
CHANGED
@@ -1,6 +1,8 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* @var array $button_attributes
|
|
|
|
|
4 |
* @var string $align
|
5 |
* @var string $icon_image_url
|
6 |
* @var string $icon
|
@@ -10,7 +12,8 @@
|
|
10 |
|
11 |
?>
|
12 |
<div class="ow-button-base ow-button-align-<?php echo esc_attr( $align ) ?>">
|
13 |
-
<a href="<?php echo sow_esc_url( $href ) ?>" <?php foreach( $button_attributes as $name => $val ) echo $name . '="' . esc_attr( $val ) . '" '
|
|
|
14 |
<span>
|
15 |
<?php
|
16 |
if( ! empty( $icon_image_url ) ) {
|
1 |
<?php
|
2 |
/**
|
3 |
* @var array $button_attributes
|
4 |
+
* @var string $href
|
5 |
+
* @var string $onclick
|
6 |
* @var string $align
|
7 |
* @var string $icon_image_url
|
8 |
* @var string $icon
|
12 |
|
13 |
?>
|
14 |
<div class="ow-button-base ow-button-align-<?php echo esc_attr( $align ) ?>">
|
15 |
+
<a href="<?php echo sow_esc_url( $href ) ?>" <?php foreach( $button_attributes as $name => $val ) echo $name . '="' . esc_attr( $val ) . '" ' ?>
|
16 |
+
<?php if ( ! empty( $onclick ) ) echo 'onclick="' . esc_js( $onclick ) . '"'; ?>>
|
17 |
<span>
|
18 |
<?php
|
19 |
if( ! empty( $icon_image_url ) ) {
|
widgets/post-carousel/post-carousel.php
CHANGED
@@ -146,20 +146,20 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget {
|
|
146 |
if ( ! empty( $instance['default_thumbnail'] ) ) {
|
147 |
$default_thumbnail = wp_get_attachment_image_src( $instance['default_thumbnail'], 'sow-carousel-default' );
|
148 |
}
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
}
|
164 |
|
165 |
function get_template_name($instance){
|
146 |
if ( ! empty( $instance['default_thumbnail'] ) ) {
|
147 |
$default_thumbnail = wp_get_attachment_image_src( $instance['default_thumbnail'], 'sow-carousel-default' );
|
148 |
}
|
149 |
+
|
150 |
+
$query = wp_parse_args(
|
151 |
+
siteorigin_widget_post_selector_process_query( $instance['posts'] ),
|
152 |
+
array(
|
153 |
+
'paged' => empty( $instance['paged'] ) ? 1 : $instance['paged']
|
154 |
+
)
|
155 |
+
);
|
156 |
+
$posts = new WP_Query( $query );
|
157 |
+
|
158 |
+
return array(
|
159 |
+
'title' => $instance['title'],
|
160 |
+
'posts' => $posts,
|
161 |
+
'default_thumbnail' => ! empty( $default_thumbnail ) ? $default_thumbnail[0] : '',
|
162 |
+
);
|
163 |
}
|
164 |
|
165 |
function get_template_name($instance){
|
widgets/video/tpl/default.php
CHANGED
@@ -4,6 +4,7 @@
|
|
4 |
* @var $args
|
5 |
* @var $player_id
|
6 |
* @var $autoplay
|
|
|
7 |
* @var $skin_class
|
8 |
* @var $is_skinnable_video_host
|
9 |
* @var $sources
|
@@ -46,7 +47,7 @@ do_action( 'siteorigin_widgets_sow-video_before_video', $instance );
|
|
46 |
<?php endforeach; ?>
|
47 |
</video>
|
48 |
<?php else : ?>
|
49 |
-
<?php echo $this->get_video_oembed( $src, $autoplay ); ?>
|
50 |
<?php endif; ?>
|
51 |
</div>
|
52 |
<?php do_action( 'siteorigin_widgets_sow-video_after_video', $instance ); ?>
|
4 |
* @var $args
|
5 |
* @var $player_id
|
6 |
* @var $autoplay
|
7 |
+
* @var $related_videos
|
8 |
* @var $skin_class
|
9 |
* @var $is_skinnable_video_host
|
10 |
* @var $sources
|
47 |
<?php endforeach; ?>
|
48 |
</video>
|
49 |
<?php else : ?>
|
50 |
+
<?php echo $this->get_video_oembed( $src, $autoplay, $related_videos ); ?>
|
51 |
<?php endif; ?>
|
52 |
</div>
|
53 |
<?php do_action( 'siteorigin_widgets_sow-video_after_video', $instance ); ?>
|
widgets/video/video.php
CHANGED
@@ -108,7 +108,17 @@ class SiteOrigin_Widget_Video_Widget extends SiteOrigin_Widget {
|
|
108 |
'video_type[external]' => array( 'show' ),
|
109 |
'video_type[self]' => array( 'hide' ),
|
110 |
)
|
111 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
),
|
113 |
),
|
114 |
);
|
@@ -195,6 +205,7 @@ class SiteOrigin_Widget_Video_Widget extends SiteOrigin_Widget {
|
|
195 |
'is_skinnable_video_host' => $this->is_skinnable_video_host( $video_host ),
|
196 |
'poster' => $poster,
|
197 |
'autoplay' => ! empty( $instance['playback']['autoplay'] ),
|
|
|
198 |
'skin_class' => 'default'
|
199 |
);
|
200 |
|
@@ -214,7 +225,7 @@ class SiteOrigin_Widget_Video_Widget extends SiteOrigin_Widget {
|
|
214 |
/**
|
215 |
* Gets a video source embed
|
216 |
*/
|
217 |
-
function get_video_oembed( $src, $autoplay = false ) {
|
218 |
if ( empty( $src ) ) {
|
219 |
return '';
|
220 |
}
|
@@ -239,6 +250,13 @@ class SiteOrigin_Widget_Video_Widget extends SiteOrigin_Widget {
|
|
239 |
'autoplay_callback'
|
240 |
), $html );
|
241 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
|
243 |
if ( ! empty( $html ) ) {
|
244 |
set_transient( 'sow-vid-embed[' . $hash . ']', $html, 30 * 86400 );
|
@@ -259,6 +277,17 @@ class SiteOrigin_Widget_Video_Widget extends SiteOrigin_Widget {
|
|
259 |
return str_replace( $match[1], add_query_arg( 'autoplay', 1, $match[1] ), $match[0] );
|
260 |
}
|
261 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
262 |
/**
|
263 |
* Get the video host from the URL
|
264 |
*
|
108 |
'video_type[external]' => array( 'show' ),
|
109 |
'video_type[self]' => array( 'hide' ),
|
110 |
)
|
111 |
+
),
|
112 |
+
'related_videos' => array(
|
113 |
+
'type' => 'checkbox',
|
114 |
+
'default' => true,
|
115 |
+
'label' => __( 'Show related videos.', 'so-widgets-bundle' ),
|
116 |
+
'description' => __( 'If the external host supports it.', 'so-widgets-bundle' ),
|
117 |
+
'state_handler' => array(
|
118 |
+
'video_type[external]' => array( 'show' ),
|
119 |
+
'video_type[self]' => array( 'hide' ),
|
120 |
+
)
|
121 |
+
),
|
122 |
),
|
123 |
),
|
124 |
);
|
205 |
'is_skinnable_video_host' => $this->is_skinnable_video_host( $video_host ),
|
206 |
'poster' => $poster,
|
207 |
'autoplay' => ! empty( $instance['playback']['autoplay'] ),
|
208 |
+
'related_videos' => ! empty( $instance['playback']['related_videos'] ),
|
209 |
'skin_class' => 'default'
|
210 |
);
|
211 |
|
225 |
/**
|
226 |
* Gets a video source embed
|
227 |
*/
|
228 |
+
function get_video_oembed( $src, $autoplay = false, $related_videos = true ) {
|
229 |
if ( empty( $src ) ) {
|
230 |
return '';
|
231 |
}
|
250 |
'autoplay_callback'
|
251 |
), $html );
|
252 |
}
|
253 |
+
|
254 |
+
if ( empty( $related_videos ) ) {
|
255 |
+
$html = preg_replace_callback( '/src=["\'](http[^"\']*)["\']/', array(
|
256 |
+
$this,
|
257 |
+
'remove_related_videos'
|
258 |
+
), $html );
|
259 |
+
}
|
260 |
|
261 |
if ( ! empty( $html ) ) {
|
262 |
set_transient( 'sow-vid-embed[' . $hash . ']', $html, 30 * 86400 );
|
277 |
return str_replace( $match[1], add_query_arg( 'autoplay', 1, $match[1] ), $match[0] );
|
278 |
}
|
279 |
|
280 |
+
/**
|
281 |
+
* The preg_replace callback that adds the rel param for YouTube videos.
|
282 |
+
*
|
283 |
+
* @param $match
|
284 |
+
*
|
285 |
+
* @return mixed
|
286 |
+
*/
|
287 |
+
function remove_related_videos( $match ) {
|
288 |
+
return str_replace( $match[1], add_query_arg( 'rel', 0, $match[1] ), $match[0] );
|
289 |
+
}
|
290 |
+
|
291 |
/**
|
292 |
* Get the video host from the URL
|
293 |
*
|