Version Description
- 20 September 2016 =
- Added mechanism for creating global widget setting.
- Added mechanism for adding dismissible notices to widget forms.
- Unified Google Maps JS working for maps widget and contact form location field.
- Added icon search for icon field.
- Added remove button to icon field.
- Contact Form: Fixed clash with Firefox field validation.
- Properly display remove button after importing Pixabay image.
Download this release
Release Info
Developer | gpriday |
Plugin | SiteOrigin Widgets Bundle |
Version | 1.7 |
Comparing to | |
See all releases |
Code changes from version 1.6.5 to 1.7
- admin/admin.css +178 -0
- admin/admin.js +44 -3
- admin/admin.min.js +1 -1
- admin/images/wpspin_light-2x.gif +0 -0
- admin/images/wpspin_light.gif +0 -0
- admin/tpl/admin.php +42 -2
- base/base.php +1 -1
- base/css/admin.css +15 -101
- base/inc/actions.php +20 -0
- base/inc/fields/container-base.class.php +2 -2
- base/inc/fields/css/icon-field.css +122 -0
- base/inc/fields/factory.class.php +6 -6
- base/inc/fields/icon.class.php +11 -0
- base/inc/fields/js/icon-field.js +168 -0
- base/inc/fields/js/icon-field.min.js +1 -0
- base/inc/fields/js/media-field.js +2 -0
- base/inc/fields/js/media-field.min.js +1 -1
- base/inc/fields/media.class.php +2 -3
- base/inc/meta-box-manager.php +7 -29
- base/inc/widget-manager.class.php +40 -13
- base/js/admin.js +21 -130
- base/js/admin.min.js +1 -1
- base/siteorigin-widget.class.php +156 -23
- readme.txt +11 -2
- so-widgets-bundle.php +98 -12
- widgets/button/button.php +1 -1
- widgets/contact/contact.php +15 -1
- widgets/contact/js/contact.js +2 -4
- widgets/contact/js/contact.min.js +1 -1
- widgets/contact/styles/default.less +4 -0
- widgets/cta/cta.php +1 -1
- widgets/editor/editor.php +1 -1
- widgets/features/features.php +1 -1
- widgets/google-map/google-map.php +1 -1
- widgets/google-map/js/js-map.js +224 -53
- widgets/google-map/js/js-map.min.js +1 -1
- widgets/headline/headline.php +1 -1
- widgets/hero/hero.php +1 -1
- widgets/icon/icon.php +1 -1
- widgets/image-grid/image-grid.php +1 -1
- widgets/image/image.php +1 -1
- widgets/layout-slider/layout-slider.php +1 -1
- widgets/post-carousel/post-carousel.php +1 -1
- widgets/price-table/price-table.php +1 -1
- widgets/simple-masonry/simple-masonry.php +1 -1
- widgets/slider/slider.php +1 -1
- widgets/social-media-buttons/data/networks.php +1 -1
- widgets/social-media-buttons/social-media-buttons.php +1 -1
- widgets/taxonomy/taxonomy.php +1 -1
- widgets/testimonial/testimonial.php +1 -1
- widgets/video/video.php +1 -1
admin/admin.css
CHANGED
@@ -229,6 +229,7 @@
|
|
229 |
}
|
230 |
#sow-widgets-page #widgets-list .so-widget .so-widget-toggle-active {
|
231 |
margin-top: 15px;
|
|
|
232 |
}
|
233 |
#sow-widgets-page #widgets-list .so-widget .so-widget-toggle-active button:focus {
|
234 |
outline: none;
|
@@ -252,6 +253,10 @@
|
|
252 |
-webkit-filter: grayscale(1);
|
253 |
opacity: 0.7;
|
254 |
}
|
|
|
|
|
|
|
|
|
255 |
#sow-widgets-page #widgets-list.so-animated img,
|
256 |
#sow-widgets-page #widgets-list.so-animated svg {
|
257 |
-webkit-transition: all 0.45s ease;
|
@@ -265,6 +270,179 @@
|
|
265 |
color: #777;
|
266 |
font-style: italic;
|
267 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
body.plugins_page_so-widgets-plugins #contextual-help-link-wrap {
|
269 |
z-index: 10;
|
270 |
}
|
229 |
}
|
230 |
#sow-widgets-page #widgets-list .so-widget .so-widget-toggle-active {
|
231 |
margin-top: 15px;
|
232 |
+
display: inline-block;
|
233 |
}
|
234 |
#sow-widgets-page #widgets-list .so-widget .so-widget-toggle-active button:focus {
|
235 |
outline: none;
|
253 |
-webkit-filter: grayscale(1);
|
254 |
opacity: 0.7;
|
255 |
}
|
256 |
+
#sow-widgets-page #widgets-list .so-widget .so-widget-settings {
|
257 |
+
margin-top: 15px;
|
258 |
+
display: inline-block;
|
259 |
+
}
|
260 |
#sow-widgets-page #widgets-list.so-animated img,
|
261 |
#sow-widgets-page #widgets-list.so-animated svg {
|
262 |
-webkit-transition: all 0.45s ease;
|
270 |
color: #777;
|
271 |
font-style: italic;
|
272 |
}
|
273 |
+
#sow-widgets-page #sow-settings-dialog {
|
274 |
+
display: none;
|
275 |
+
}
|
276 |
+
#sow-widgets-page #sow-settings-dialog .so-overlay,
|
277 |
+
#sow-widgets-page #sow-settings-dialog .so-content,
|
278 |
+
#sow-widgets-page #sow-settings-dialog .so-title-bar,
|
279 |
+
#sow-widgets-page #sow-settings-dialog .so-toolbar,
|
280 |
+
#sow-widgets-page #sow-settings-dialog .so-left-sidebar,
|
281 |
+
#sow-widgets-page #sow-settings-dialog .so-right-sidebar {
|
282 |
+
z-index: 100001;
|
283 |
+
position: fixed;
|
284 |
+
-ms-box-sizing: border-box;
|
285 |
+
-moz-box-sizing: border-box;
|
286 |
+
-webkit-box-sizing: border-box;
|
287 |
+
box-sizing: border-box;
|
288 |
+
padding: 15px;
|
289 |
+
}
|
290 |
+
#sow-widgets-page #sow-settings-dialog .so-overlay {
|
291 |
+
top: 0;
|
292 |
+
left: 0;
|
293 |
+
right: 0;
|
294 |
+
bottom: 0;
|
295 |
+
background: rgba(0, 0, 0, 0.5);
|
296 |
+
}
|
297 |
+
#sow-widgets-page #sow-settings-dialog .so-content {
|
298 |
+
overflow-y: auto;
|
299 |
+
top: 80px;
|
300 |
+
left: 30px;
|
301 |
+
right: 30px;
|
302 |
+
bottom: 88px;
|
303 |
+
background-color: #fdfdfd;
|
304 |
+
overflow-x: hidden;
|
305 |
+
-webkit-box-shadow: inset 0 2px 2px rgba(0,0,0,0.03);
|
306 |
+
-moz-box-shadow: inset 0 2px 2px rgba(0,0,0,0.03);
|
307 |
+
box-shadow: inset 0 2px 2px rgba(0,0,0,0.03);
|
308 |
+
}
|
309 |
+
#sow-widgets-page #sow-settings-dialog .so-content > *:first-child,
|
310 |
+
#sow-widgets-page #sow-settings-dialog .so-content form > *:first-child {
|
311 |
+
margin-top: 0;
|
312 |
+
}
|
313 |
+
#sow-widgets-page #sow-settings-dialog .so-content > *:last-child,
|
314 |
+
#sow-widgets-page #sow-settings-dialog .so-content form > *:last-child {
|
315 |
+
margin-bottom: 0;
|
316 |
+
}
|
317 |
+
#sow-widgets-page #sow-settings-dialog .so-content .so-content-tabs > * {
|
318 |
+
display: none;
|
319 |
+
}
|
320 |
+
#sow-widgets-page #sow-settings-dialog .so-content.so-loading {
|
321 |
+
background-image: url("images/wpspin_light.gif");
|
322 |
+
background-position: center center;
|
323 |
+
background-repeat: no-repeat;
|
324 |
+
}
|
325 |
+
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
|
326 |
+
#sow-widgets-page #sow-settings-dialog .so-content.so-loading {
|
327 |
+
background-image: url(images/wpspin_light-2x.gif);
|
328 |
+
background-size: 16px 16px;
|
329 |
+
}
|
330 |
+
}
|
331 |
+
#sow-widgets-page #sow-settings-dialog .so-title-bar {
|
332 |
+
left: 30px;
|
333 |
+
right: 30px;
|
334 |
+
top: 30px;
|
335 |
+
height: 50px;
|
336 |
+
background-color: #fafafa;
|
337 |
+
border-bottom: 1px solid #D8D8D8;
|
338 |
+
/* These are the action buttons in the title bar */
|
339 |
+
}
|
340 |
+
#sow-widgets-page #sow-settings-dialog .so-title-bar h3.so-title {
|
341 |
+
margin: 0 !important;
|
342 |
+
padding: 0 !important;
|
343 |
+
}
|
344 |
+
#sow-widgets-page #sow-settings-dialog .so-title-bar a {
|
345 |
+
cursor: pointer;
|
346 |
+
position: absolute;
|
347 |
+
box-sizing: border-box;
|
348 |
+
width: 50px;
|
349 |
+
height: 50px;
|
350 |
+
display: block;
|
351 |
+
top: 0;
|
352 |
+
right: 0;
|
353 |
+
-webkit-transition: all 0.2s ease;
|
354 |
+
-moz-transition: all 0.2s ease;
|
355 |
+
-o-transition: all 0.2s ease;
|
356 |
+
transition: all 0.2s ease;
|
357 |
+
background: #fafafa;
|
358 |
+
border-left: 1px solid #d8d8d8;
|
359 |
+
border-bottom: 1px solid #d8d8d8;
|
360 |
+
}
|
361 |
+
#sow-widgets-page #sow-settings-dialog .so-title-bar a:hover {
|
362 |
+
background: #e9e9e9;
|
363 |
+
}
|
364 |
+
#sow-widgets-page #sow-settings-dialog .so-title-bar a:hover .so-dialog-icon {
|
365 |
+
color: #333333;
|
366 |
+
}
|
367 |
+
#sow-widgets-page #sow-settings-dialog .so-title-bar a .so-dialog-icon {
|
368 |
+
position: absolute;
|
369 |
+
top: 50%;
|
370 |
+
left: 50%;
|
371 |
+
text-decoration: none;
|
372 |
+
width: 20px;
|
373 |
+
height: 20px;
|
374 |
+
margin-left: -10px;
|
375 |
+
margin-top: -10px;
|
376 |
+
color: #666666;
|
377 |
+
text-align: center;
|
378 |
+
}
|
379 |
+
#sow-widgets-page #sow-settings-dialog .so-title-bar a .so-dialog-icon:before {
|
380 |
+
font: 400 20px/1em dashicons;
|
381 |
+
top: 7px;
|
382 |
+
left: 13px;
|
383 |
+
}
|
384 |
+
#sow-widgets-page #sow-settings-dialog .so-title-bar a.so-close {
|
385 |
+
right: 0;
|
386 |
+
}
|
387 |
+
#sow-widgets-page #sow-settings-dialog .so-title-bar a.so-close .so-dialog-icon:before {
|
388 |
+
content: "\f335";
|
389 |
+
}
|
390 |
+
#sow-widgets-page #sow-settings-dialog .so-toolbar {
|
391 |
+
left: 30px;
|
392 |
+
right: 30px;
|
393 |
+
bottom: 30px;
|
394 |
+
height: 58px;
|
395 |
+
background-color: #fafafa;
|
396 |
+
border-top: 1px solid #D8D8D8;
|
397 |
+
z-index: 100002;
|
398 |
+
}
|
399 |
+
#sow-widgets-page #sow-settings-dialog .so-toolbar .so-status {
|
400 |
+
float: left;
|
401 |
+
padding-top: 6px;
|
402 |
+
padding-bottom: 6px;
|
403 |
+
font-style: italic;
|
404 |
+
color: #999999;
|
405 |
+
line-height: 1em;
|
406 |
+
}
|
407 |
+
#sow-widgets-page #sow-settings-dialog .so-toolbar .so-status.so-panels-loading {
|
408 |
+
padding-left: 26px;
|
409 |
+
background-position: left center;
|
410 |
+
}
|
411 |
+
#sow-widgets-page #sow-settings-dialog .so-toolbar .so-buttons {
|
412 |
+
float: right;
|
413 |
+
}
|
414 |
+
#sow-widgets-page #sow-settings-dialog .so-toolbar .so-buttons .action-buttons {
|
415 |
+
position: absolute;
|
416 |
+
left: 15px;
|
417 |
+
top: 50%;
|
418 |
+
margin-top: -0.65em;
|
419 |
+
}
|
420 |
+
#sow-widgets-page #sow-settings-dialog .so-toolbar .so-buttons .action-buttons a {
|
421 |
+
cursor: pointer;
|
422 |
+
display: inline;
|
423 |
+
padding: 0.2em 0.5em;
|
424 |
+
line-height: 1em;
|
425 |
+
margin-right: 0.5em;
|
426 |
+
text-decoration: none;
|
427 |
+
}
|
428 |
+
#sow-widgets-page #sow-settings-dialog .so-toolbar .so-buttons .action-buttons .so-delete {
|
429 |
+
color: #a00;
|
430 |
+
}
|
431 |
+
#sow-widgets-page #sow-settings-dialog .so-toolbar .so-buttons .action-buttons .so-delete:hover {
|
432 |
+
background: #a00;
|
433 |
+
color: #FFFFFF;
|
434 |
+
}
|
435 |
+
#sow-widgets-page #sow-settings-dialog .so-toolbar .so-buttons .action-buttons .so-duplicate:hover {
|
436 |
+
text-decoration: underline;
|
437 |
+
}
|
438 |
+
#sow-widgets-page #sow-settings-dialog .siteorigin-widget-help-link {
|
439 |
+
display: none;
|
440 |
+
}
|
441 |
+
#sow-widgets-page #so-widget-settings-save {
|
442 |
+
width: 0;
|
443 |
+
height: 0;
|
444 |
+
border: none;
|
445 |
+
}
|
446 |
body.plugins_page_so-widgets-plugins #contextual-help-link-wrap {
|
447 |
z-index: 10;
|
448 |
}
|
admin/admin.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/* globals jQuery, soWidgetsAdmin */
|
2 |
|
3 |
-
jQuery(function($){
|
4 |
|
5 |
$('.so-widget-toggle-active button').click( function(){
|
6 |
var $$ = $(this),
|
@@ -122,6 +122,47 @@ jQuery(function($){
|
|
122 |
$(window).resize();
|
123 |
});
|
124 |
|
125 |
-
//
|
126 |
$('#widgets-list').addClass('so-animated');
|
127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
/* globals jQuery, soWidgetsAdmin */
|
2 |
|
3 |
+
jQuery( function( $ ){
|
4 |
|
5 |
$('.so-widget-toggle-active button').click( function(){
|
6 |
var $$ = $(this),
|
122 |
$(window).resize();
|
123 |
});
|
124 |
|
125 |
+
// Enable css3 animations on the widgets list
|
126 |
$('#widgets-list').addClass('so-animated');
|
127 |
+
|
128 |
+
// Handle the dialog
|
129 |
+
var dialog = $('#sow-settings-dialog');
|
130 |
+
|
131 |
+
$( '#widgets-list .so-widget-settings' ).click( function( e ){
|
132 |
+
var $$ = $(this);
|
133 |
+
e.preventDefault();
|
134 |
+
|
135 |
+
dialog.find('.so-content')
|
136 |
+
.empty()
|
137 |
+
.addClass('so-loading')
|
138 |
+
.load( $$.data('form-url'), function(){
|
139 |
+
$(this).removeClass('so-loading');
|
140 |
+
} );
|
141 |
+
|
142 |
+
dialog.show();
|
143 |
+
} );
|
144 |
+
|
145 |
+
dialog.find('.so-close').click( function( e ){
|
146 |
+
e.preventDefault();
|
147 |
+
dialog.hide();
|
148 |
+
} );
|
149 |
+
|
150 |
+
dialog.find('.so-save').click( function( e ){
|
151 |
+
e.preventDefault();
|
152 |
+
|
153 |
+
var $$ = $(this);
|
154 |
+
$$.prop('disabled', true);
|
155 |
+
$( '#widgets-list .so-widget-settings' ).prop('disabled', true);
|
156 |
+
|
157 |
+
dialog.find( 'form' ).submit( function( ){
|
158 |
+
$$.prop('disabled', false);
|
159 |
+
dialog.hide();
|
160 |
+
} ).submit();
|
161 |
+
} );
|
162 |
+
|
163 |
+
// Enable all widget settings button after the save iframe has loaded.
|
164 |
+
$('#so-widget-settings-save').load( function(){
|
165 |
+
$( '#widgets-list .so-widget-settings' ).prop('disabled', false);
|
166 |
+
} );
|
167 |
+
|
168 |
+
} );
|
admin/admin.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(function(
|
1 |
+
jQuery(function(i){i(".so-widget-toggle-active button").click(function(){var e=i(this),s=e.data("status"),t=e.closest(".so-widget");s?t.addClass("so-widget-is-active").removeClass("so-widget-is-inactive"):t.removeClass("so-widget-is-active").addClass("so-widget-is-inactive"),i.post(soWidgetsAdmin.toggleUrl,{widget:t.data("id"),active:s},function(i){})}),i(".so-widget-banner").each(function(){var e=i(this),s=e.find("img");if(s.length)s.width()>128&&s.css("margin-left",-(s.width()-128)/2);else{var t=Trianglify({width:128,height:128,variance:1,cell_size:32,seed:e.data("seed")});e.append(t.svg())}});var e=function(){var e=i(this).val().toLowerCase();""===e?i(".so-widget-wrap").show():i(".so-widget").each(function(){var s=i(this);s.find("h3").html().toLowerCase().indexOf(e)>-1?s.parent().show():s.parent().hide()})};i("#sow-widget-search input").on({keyup:e,search:e}),i(window).resize(function(){var e=i(".so-widget-text").css("height","auto"),s=0;e.each(function(){s=Math.max(s,i(this).height())}),e.each(function(){i(this).css("height",s)})}).resize(),i("#sow-widgets-page .page-nav a").click(function(e){e.preventDefault();var s=i(this),t=s.attr("href"),a=s.closest("li");switch(i("#sow-widgets-page .page-nav li").not(a).removeClass("active"),a.addClass("active"),t){case"#all":i(".so-widget-wrap").show();break;case"#enabled":i(".so-widget-wrap").hide(),i(".so-widget-wrap .so-widget-is-active").each(function(){i(this).closest(".so-widget-wrap").show()}),i(".so-widget-wrap .so-widget-is-inactive").each(function(){i(this).closest(".so-widget-wrap").hide()});break;case"#disabled":i(".so-widget-wrap .so-widget-is-active").each(function(){i(this).closest(".so-widget-wrap").hide()}),i(".so-widget-wrap .so-widget-is-inactive").each(function(){i(this).closest(".so-widget-wrap").show()})}i(window).resize()}),i("#widgets-list").addClass("so-animated");var s=i("#sow-settings-dialog");i("#widgets-list .so-widget-settings").click(function(e){var t=i(this);e.preventDefault(),s.find(".so-content").empty().addClass("so-loading").load(t.data("form-url"),function(){i(this).removeClass("so-loading")}),s.show()}),s.find(".so-close").click(function(i){i.preventDefault(),s.hide()}),s.find(".so-save").click(function(e){e.preventDefault();var t=i(this);t.prop("disabled",!0),i("#widgets-list .so-widget-settings").prop("disabled",!0),s.find("form").submit(function(){t.prop("disabled",!1),s.hide()}).submit()}),i("#so-widget-settings-save").load(function(){i("#widgets-list .so-widget-settings").prop("disabled",!1)})});
|
admin/images/wpspin_light-2x.gif
ADDED
Binary file
|
admin/images/wpspin_light.gif
ADDED
Binary file
|
admin/tpl/admin.php
CHANGED
@@ -22,7 +22,7 @@
|
|
22 |
|
23 |
<div id="widgets-list">
|
24 |
|
25 |
-
<?php foreach( $widgets as $
|
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 |
|
@@ -67,6 +67,24 @@
|
|
67 |
<button class="button-secondary so-widget-deactivate" data-status="0"><?php esc_html_e( 'Deactivate', 'so-widgets-bundle' ) ?></button>
|
68 |
</div>
|
69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
</div>
|
71 |
|
72 |
</div>
|
@@ -80,4 +98,26 @@
|
|
80 |
<a href="https://siteorigin.com/docs/widgets-bundle/" target="_blank"><?php _e('Read More', 'so-widgets-bundle') ?></a>.
|
81 |
</div>
|
82 |
|
83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
23 |
<div id="widgets-list">
|
24 |
|
25 |
+
<?php foreach( $widgets as $file => $widget ): ?>
|
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 |
|
67 |
<button class="button-secondary so-widget-deactivate" data-status="0"><?php esc_html_e( 'Deactivate', 'so-widgets-bundle' ) ?></button>
|
68 |
</div>
|
69 |
|
70 |
+
<?php
|
71 |
+
$widget_object = !empty( $widget_objects[ $file ] ) ? $widget_objects[ $file ] : false;
|
72 |
+
if( !empty( $widget_object ) && $widget_object->has_form( 'settings' ) ) {
|
73 |
+
$form_url = add_query_arg( array(
|
74 |
+
'id' => $file,
|
75 |
+
'action' => 'so_widgets_setting_form',
|
76 |
+
),
|
77 |
+
admin_url( 'admin-ajax.php' )
|
78 |
+
);
|
79 |
+
$form_url = wp_nonce_url( $form_url, 'display-widget-form' );
|
80 |
+
|
81 |
+
?>
|
82 |
+
<button class="button-secondary so-widget-settings" data-form-url="<?php echo esc_url( $form_url ) ?>">
|
83 |
+
<?php esc_html_e( 'Settings', 'so-widgets-bundle' ) ?>
|
84 |
+
</button>
|
85 |
+
<?php
|
86 |
+
}
|
87 |
+
?>
|
88 |
</div>
|
89 |
|
90 |
</div>
|
98 |
<a href="https://siteorigin.com/docs/widgets-bundle/" target="_blank"><?php _e('Read More', 'so-widgets-bundle') ?></a>.
|
99 |
</div>
|
100 |
|
101 |
+
<div id="sow-settings-dialog">
|
102 |
+
<div class="so-overlay"></div>
|
103 |
+
|
104 |
+
<div class="so-title-bar">
|
105 |
+
<h3 class="so-title">Widget Settings</h3>
|
106 |
+
<a class="so-close">
|
107 |
+
<span class="so-dialog-icon"></span>
|
108 |
+
</a>
|
109 |
+
</div>
|
110 |
+
|
111 |
+
<div class="so-content so-loading">
|
112 |
+
</div>
|
113 |
+
|
114 |
+
<div class="so-toolbar">
|
115 |
+
<div class="so-buttons">
|
116 |
+
<button class="button-primary so-save"><?php _e( 'Save', 'so-widgets-bundle' ) ?></button>
|
117 |
+
</div>
|
118 |
+
</div>
|
119 |
+
</div>
|
120 |
+
|
121 |
+
<iframe id="so-widget-settings-save" name="so-widget-settings-save"></iframe>
|
122 |
+
|
123 |
+
</div>
|
base/base.php
CHANGED
@@ -232,4 +232,4 @@ function siteorigin_widgets_get_measurements_list() {
|
|
232 |
|
233 |
// Allow themes and plugins to trim or enhance the list.
|
234 |
return apply_filters('siteorigin_widgets_get_measurements_list', $measurements);
|
235 |
-
}
|
232 |
|
233 |
// Allow themes and plugins to trim or enhance the list.
|
234 |
return apply_filters('siteorigin_widgets_get_measurements_list', $measurements);
|
235 |
+
}
|
base/css/admin.css
CHANGED
@@ -1,6 +1,21 @@
|
|
1 |
.siteorigin-widget-form-no-styles {
|
2 |
display: none !important;
|
3 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
.siteorigin-widget-form {
|
5 |
display: block !important;
|
6 |
margin: 15px 0;
|
@@ -379,107 +394,6 @@
|
|
379 |
width: 120px;
|
380 |
text-align: center;
|
381 |
}
|
382 |
-
.siteorigin-widget-form .siteorigin-widget-icon-selector-current {
|
383 |
-
display: inline-block;
|
384 |
-
background: #f9f9f9;
|
385 |
-
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f2f2f2), color-stop(1, #f9f9f9));
|
386 |
-
background: -ms-linear-gradient(bottom, #f2f2f2, #f9f9f9);
|
387 |
-
background: -moz-linear-gradient(center bottom, #f2f2f2 0%, #f9f9f9 100%);
|
388 |
-
background: -o-linear-gradient(#f9f9f9, #f2f2f2);
|
389 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#f2f2f2', GradientType=0);
|
390 |
-
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.1);
|
391 |
-
-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.1);
|
392 |
-
box-shadow: 0 1px 2px rgba(0,0,0,0.1);
|
393 |
-
-webkit-border-radius: 3px;
|
394 |
-
-moz-border-radius: 3px;
|
395 |
-
border-radius: 3px;
|
396 |
-
border: 1px solid #bbbbbb;
|
397 |
-
height: 35px;
|
398 |
-
}
|
399 |
-
.siteorigin-widget-form .siteorigin-widget-icon-selector-current:hover {
|
400 |
-
background: #ffffff;
|
401 |
-
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f7f7f7), color-stop(1, #ffffff));
|
402 |
-
background: -ms-linear-gradient(bottom, #f7f7f7, #ffffff);
|
403 |
-
background: -moz-linear-gradient(center bottom, #f7f7f7 0%, #ffffff 100%);
|
404 |
-
background: -o-linear-gradient(#ffffff, #f7f7f7);
|
405 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f7f7f7', GradientType=0);
|
406 |
-
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.15);
|
407 |
-
-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.15);
|
408 |
-
box-shadow: 0 1px 2px rgba(0,0,0,0.15);
|
409 |
-
}
|
410 |
-
.siteorigin-widget-form .siteorigin-widget-icon-selector-current .siteorigin-widget-icon {
|
411 |
-
-ms-box-sizing: border-box;
|
412 |
-
-moz-box-sizing: border-box;
|
413 |
-
-webkit-box-sizing: border-box;
|
414 |
-
box-sizing: border-box;
|
415 |
-
float: left;
|
416 |
-
margin: 4px;
|
417 |
-
padding: 3px;
|
418 |
-
border: 1px solid #999;
|
419 |
-
background: #f3f3f3;
|
420 |
-
height: 27px;
|
421 |
-
width: 32px;
|
422 |
-
text-align: center;
|
423 |
-
}
|
424 |
-
.siteorigin-widget-form .siteorigin-widget-icon-selector-current .siteorigin-widget-icon span {
|
425 |
-
color: #333;
|
426 |
-
font-size: 20px;
|
427 |
-
}
|
428 |
-
.siteorigin-widget-form .siteorigin-widget-icon-selector-current label {
|
429 |
-
display: block;
|
430 |
-
float: left;
|
431 |
-
color: #666;
|
432 |
-
text-decoration: none;
|
433 |
-
text-shadow: 0 1px 0 #FFF;
|
434 |
-
font-weight: 600;
|
435 |
-
font-size: 11px;
|
436 |
-
padding: 9px 10px 7px 7px;
|
437 |
-
outline: none;
|
438 |
-
cursor: pointer;
|
439 |
-
}
|
440 |
-
.siteorigin-widget-form .siteorigin-widget-icon-selector {
|
441 |
-
display: none;
|
442 |
-
padding: 10px;
|
443 |
-
border: 1px solid #D8D8D8;
|
444 |
-
background: #FFFFFF;
|
445 |
-
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.0275);
|
446 |
-
-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.0275);
|
447 |
-
box-shadow: 0 1px 2px rgba(0,0,0,0.0275);
|
448 |
-
margin-top: 10px;
|
449 |
-
}
|
450 |
-
.siteorigin-widget-form .siteorigin-widget-icon-selector select.siteorigin-widget-icon-family {
|
451 |
-
font-size: 11px;
|
452 |
-
}
|
453 |
-
.siteorigin-widget-form .siteorigin-widget-icon-selector .siteorigin-widget-icon-icons {
|
454 |
-
height: 160px;
|
455 |
-
overflow-y: scroll;
|
456 |
-
margin-top: 10px;
|
457 |
-
}
|
458 |
-
.siteorigin-widget-form .siteorigin-widget-icon-selector .siteorigin-widget-icon-icons .siteorigin-widget-icon-icons-icon {
|
459 |
-
-ms-box-sizing: border-box;
|
460 |
-
-moz-box-sizing: border-box;
|
461 |
-
-webkit-box-sizing: border-box;
|
462 |
-
box-sizing: border-box;
|
463 |
-
float: left;
|
464 |
-
width: 58px;
|
465 |
-
height: 48px;
|
466 |
-
margin: 3px;
|
467 |
-
padding: 4px 0;
|
468 |
-
border: 1px solid #D0D0D0;
|
469 |
-
background: #FFFFFF;
|
470 |
-
font-size: 40px;
|
471 |
-
overflow: hidden;
|
472 |
-
cursor: pointer;
|
473 |
-
text-align: center;
|
474 |
-
}
|
475 |
-
.siteorigin-widget-form .siteorigin-widget-icon-selector .siteorigin-widget-icon-icons .siteorigin-widget-icon-icons-icon.siteorigin-widget-active {
|
476 |
-
background: #f6fafc;
|
477 |
-
border: 1px solid #43aaec;
|
478 |
-
color: #078dce;
|
479 |
-
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.25);
|
480 |
-
-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.25);
|
481 |
-
box-shadow: 0 1px 2px rgba(0,0,0,0.25);
|
482 |
-
}
|
483 |
.siteorigin-widget-form .siteorigin-widget-description {
|
484 |
clear: both;
|
485 |
}
|
1 |
.siteorigin-widget-form-no-styles {
|
2 |
display: none !important;
|
3 |
}
|
4 |
+
.siteorigin-widget-teaser {
|
5 |
+
padding: 10px 12px;
|
6 |
+
border: 1px solid #5fc133;
|
7 |
+
background: #edfbe7;
|
8 |
+
color: #394a3a;
|
9 |
+
margin-bottom: 20px;
|
10 |
+
}
|
11 |
+
.siteorigin-widget-teaser .dashicons {
|
12 |
+
float: right;
|
13 |
+
margin: 1px 2px 6px 10px;
|
14 |
+
cursor: pointer;
|
15 |
+
font-size: 18px;
|
16 |
+
width: 18px;
|
17 |
+
height: 18px;
|
18 |
+
}
|
19 |
.siteorigin-widget-form {
|
20 |
display: block !important;
|
21 |
margin: 15px 0;
|
394 |
width: 120px;
|
395 |
text-align: center;
|
396 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
397 |
.siteorigin-widget-form .siteorigin-widget-description {
|
398 |
clear: both;
|
399 |
}
|
base/inc/actions.php
CHANGED
@@ -189,3 +189,23 @@ function siteorigin_widget_image_import(){
|
|
189 |
exit();
|
190 |
}
|
191 |
add_action('wp_ajax_so_widgets_image_import', 'siteorigin_widget_image_import');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
exit();
|
190 |
}
|
191 |
add_action('wp_ajax_so_widgets_image_import', 'siteorigin_widget_image_import');
|
192 |
+
|
193 |
+
/**
|
194 |
+
* Action to handle a user dismissing a teaser notice.
|
195 |
+
*/
|
196 |
+
function siteorigin_widgets_dismiss_widget_action(){
|
197 |
+
if( empty( $_GET[ '_wpnonce' ] ) || ! wp_verify_nonce( $_GET[ '_wpnonce' ], 'dismiss-widget-teaser' ) ) exit();
|
198 |
+
if( empty( $_GET[ 'widget' ] ) ) exit();
|
199 |
+
|
200 |
+
$dismissed = get_user_meta( get_current_user_id(), 'teasers_dismissed', true );
|
201 |
+
if( empty( $dismissed ) ) {
|
202 |
+
$dismissed = array();
|
203 |
+
}
|
204 |
+
|
205 |
+
$dismissed[ $_GET[ 'widget' ] ] = true;
|
206 |
+
|
207 |
+
update_user_meta( get_current_user_id(), 'teasers_dismissed', $dismissed );
|
208 |
+
|
209 |
+
exit();
|
210 |
+
}
|
211 |
+
add_action( 'wp_ajax_so_dismiss_widget_teaser', 'siteorigin_widgets_dismiss_widget_action' );
|
base/inc/fields/container-base.class.php
CHANGED
@@ -74,7 +74,7 @@ abstract class SiteOrigin_Widget_Field_Container_Base extends SiteOrigin_Widget_
|
|
74 |
}
|
75 |
}
|
76 |
/* @var $field_factory SiteOrigin_Widget_Field_Factory */
|
77 |
-
$field_factory = SiteOrigin_Widget_Field_Factory::
|
78 |
foreach( $this->fields as $sub_field_name => $sub_field_options ) {
|
79 |
/* @var $field SiteOrigin_Widget_Field_Base */
|
80 |
$field = $field_factory->create_field(
|
@@ -97,7 +97,7 @@ abstract class SiteOrigin_Widget_Field_Container_Base extends SiteOrigin_Widget_
|
|
97 |
|
98 |
protected function sanitize_field_input( $value, $instance ) {
|
99 |
/* @var $field_factory SiteOrigin_Widget_Field_Factory */
|
100 |
-
$field_factory = SiteOrigin_Widget_Field_Factory::
|
101 |
foreach( $this->fields as $sub_field_name => $sub_field_options ) {
|
102 |
|
103 |
/* @var $sub_field SiteOrigin_Widget_Field_Base */
|
74 |
}
|
75 |
}
|
76 |
/* @var $field_factory SiteOrigin_Widget_Field_Factory */
|
77 |
+
$field_factory = SiteOrigin_Widget_Field_Factory::single();
|
78 |
foreach( $this->fields as $sub_field_name => $sub_field_options ) {
|
79 |
/* @var $field SiteOrigin_Widget_Field_Base */
|
80 |
$field = $field_factory->create_field(
|
97 |
|
98 |
protected function sanitize_field_input( $value, $instance ) {
|
99 |
/* @var $field_factory SiteOrigin_Widget_Field_Factory */
|
100 |
+
$field_factory = SiteOrigin_Widget_Field_Factory::single();
|
101 |
foreach( $this->fields as $sub_field_name => $sub_field_options ) {
|
102 |
|
103 |
/* @var $sub_field SiteOrigin_Widget_Field_Base */
|
base/inc/fields/css/icon-field.css
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon .siteorigin-widget-icon-selector-current {
|
2 |
+
display: inline-block;
|
3 |
+
background: #f9f9f9;
|
4 |
+
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f2f2f2), color-stop(1, #f9f9f9));
|
5 |
+
background: -ms-linear-gradient(bottom, #f2f2f2, #f9f9f9);
|
6 |
+
background: -moz-linear-gradient(center bottom, #f2f2f2 0%, #f9f9f9 100%);
|
7 |
+
background: -o-linear-gradient(#f9f9f9, #f2f2f2);
|
8 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#f2f2f2', GradientType=0);
|
9 |
+
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.1);
|
10 |
+
-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.1);
|
11 |
+
box-shadow: 0 1px 2px rgba(0,0,0,0.1);
|
12 |
+
-webkit-border-radius: 3px;
|
13 |
+
-moz-border-radius: 3px;
|
14 |
+
border-radius: 3px;
|
15 |
+
float: left;
|
16 |
+
border: 1px solid #bbbbbb;
|
17 |
+
height: 35px;
|
18 |
+
}
|
19 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon .siteorigin-widget-icon-selector-current:hover {
|
20 |
+
background: #ffffff;
|
21 |
+
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f7f7f7), color-stop(1, #ffffff));
|
22 |
+
background: -ms-linear-gradient(bottom, #f7f7f7, #ffffff);
|
23 |
+
background: -moz-linear-gradient(center bottom, #f7f7f7 0%, #ffffff 100%);
|
24 |
+
background: -o-linear-gradient(#ffffff, #f7f7f7);
|
25 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f7f7f7', GradientType=0);
|
26 |
+
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.15);
|
27 |
+
-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.15);
|
28 |
+
box-shadow: 0 1px 2px rgba(0,0,0,0.15);
|
29 |
+
}
|
30 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon .siteorigin-widget-icon-selector-current .siteorigin-widget-icon {
|
31 |
+
-ms-box-sizing: border-box;
|
32 |
+
-moz-box-sizing: border-box;
|
33 |
+
-webkit-box-sizing: border-box;
|
34 |
+
box-sizing: border-box;
|
35 |
+
float: left;
|
36 |
+
margin: 4px;
|
37 |
+
padding: 3px;
|
38 |
+
border: 1px solid #999;
|
39 |
+
background: #f3f3f3;
|
40 |
+
height: 27px;
|
41 |
+
width: 32px;
|
42 |
+
text-align: center;
|
43 |
+
}
|
44 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon .siteorigin-widget-icon-selector-current .siteorigin-widget-icon span {
|
45 |
+
color: #333;
|
46 |
+
font-size: 20px;
|
47 |
+
}
|
48 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon .siteorigin-widget-icon-selector-current label {
|
49 |
+
display: block;
|
50 |
+
float: left;
|
51 |
+
color: #666;
|
52 |
+
text-decoration: none;
|
53 |
+
text-shadow: 0 1px 0 #FFF;
|
54 |
+
font-weight: 600;
|
55 |
+
font-size: 11px;
|
56 |
+
padding: 9px 10px 7px 7px;
|
57 |
+
outline: none;
|
58 |
+
cursor: pointer;
|
59 |
+
}
|
60 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon .so-icon-remove {
|
61 |
+
cursor: pointer;
|
62 |
+
display: block;
|
63 |
+
text-decoration: none;
|
64 |
+
float: left;
|
65 |
+
color: #AAA;
|
66 |
+
font-size: 11px;
|
67 |
+
line-height: 1em;
|
68 |
+
padding: 11px 0 11px 6px;
|
69 |
+
}
|
70 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon.siteorigin-widget-active .so-icon-remove {
|
71 |
+
display: none;
|
72 |
+
}
|
73 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon .siteorigin-widget-icon-selector {
|
74 |
+
display: none;
|
75 |
+
padding: 10px;
|
76 |
+
border: 1px solid #D8D8D8;
|
77 |
+
background: #FFFFFF;
|
78 |
+
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.0275);
|
79 |
+
-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.0275);
|
80 |
+
box-shadow: 0 1px 2px rgba(0,0,0,0.0275);
|
81 |
+
margin-top: 10px;
|
82 |
+
}
|
83 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon .siteorigin-widget-icon-selector select.siteorigin-widget-icon-family {
|
84 |
+
font-size: 11px;
|
85 |
+
display: inline-block;
|
86 |
+
}
|
87 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon .siteorigin-widget-icon-selector .siteorigin-widget-icon-search {
|
88 |
+
font-size: 11px;
|
89 |
+
display: inline-block;
|
90 |
+
width: 260px;
|
91 |
+
padding: 6px 8px;
|
92 |
+
}
|
93 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon .siteorigin-widget-icon-selector .siteorigin-widget-icon-icons {
|
94 |
+
height: 160px;
|
95 |
+
overflow-y: scroll;
|
96 |
+
margin-top: 10px;
|
97 |
+
}
|
98 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon .siteorigin-widget-icon-selector .siteorigin-widget-icon-icons .siteorigin-widget-icon-icons-icon {
|
99 |
+
-ms-box-sizing: border-box;
|
100 |
+
-moz-box-sizing: border-box;
|
101 |
+
-webkit-box-sizing: border-box;
|
102 |
+
box-sizing: border-box;
|
103 |
+
float: left;
|
104 |
+
width: 58px;
|
105 |
+
height: 48px;
|
106 |
+
margin: 3px;
|
107 |
+
padding: 4px 0;
|
108 |
+
border: 1px solid #D0D0D0;
|
109 |
+
background: #FFFFFF;
|
110 |
+
font-size: 40px;
|
111 |
+
overflow: hidden;
|
112 |
+
cursor: pointer;
|
113 |
+
text-align: center;
|
114 |
+
}
|
115 |
+
.siteorigin-widget-form .siteorigin-widget-field-icon .siteorigin-widget-icon-selector .siteorigin-widget-icon-icons .siteorigin-widget-icon-icons-icon.siteorigin-widget-active {
|
116 |
+
background: #f6fafc;
|
117 |
+
border: 1px solid #43aaec;
|
118 |
+
color: #078dce;
|
119 |
+
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.25);
|
120 |
+
-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.25);
|
121 |
+
box-shadow: 0 1px 2px rgba(0,0,0,0.25);
|
122 |
+
}
|
base/inc/fields/factory.class.php
CHANGED
@@ -4,14 +4,14 @@
|
|
4 |
* Class SiteOrigin_Widget_Field_Factory
|
5 |
*/
|
6 |
class SiteOrigin_Widget_Field_Factory {
|
|
|
|
|
7 |
|
8 |
-
|
9 |
-
|
10 |
-
public static function getInstance() {
|
11 |
-
if( ! isset( SiteOrigin_Widget_Field_Factory::$instance ) ) {
|
12 |
-
SiteOrigin_Widget_Field_Factory::$instance = new SiteOrigin_Widget_Field_Factory();
|
13 |
}
|
14 |
-
|
|
|
15 |
}
|
16 |
|
17 |
public function create_field( $field_name, $field_options, SiteOrigin_Widget $for_widget, $for_repeater = array(), $is_template = false ) {
|
4 |
* Class SiteOrigin_Widget_Field_Factory
|
5 |
*/
|
6 |
class SiteOrigin_Widget_Field_Factory {
|
7 |
+
public static function single(){
|
8 |
+
static $single;
|
9 |
|
10 |
+
if( empty( $single ) ) {
|
11 |
+
$single = new self();
|
|
|
|
|
|
|
12 |
}
|
13 |
+
|
14 |
+
return $single;
|
15 |
}
|
16 |
|
17 |
public function create_field( $field_name, $field_options, SiteOrigin_Widget $for_widget, $for_repeater = array(), $is_template = false ) {
|
base/inc/fields/icon.class.php
CHANGED
@@ -18,6 +18,10 @@ class SiteOrigin_Widget_Field_Icon extends SiteOrigin_Widget_Field_Base {
|
|
18 |
<label><?php _e('Choose Icon', 'so-widgets-bundle') ?></label>
|
19 |
</div>
|
20 |
|
|
|
|
|
|
|
|
|
21 |
<div class="siteorigin-widget-icon-selector siteorigin-widget-field-subcontainer">
|
22 |
<select class="siteorigin-widget-icon-family" >
|
23 |
<?php foreach( $widget_icon_families as $family_id => $family_info ) : ?>
|
@@ -30,6 +34,8 @@ class SiteOrigin_Widget_Field_Icon extends SiteOrigin_Widget_Field_Base {
|
|
30 |
<?php endforeach; ?>
|
31 |
</select>
|
32 |
|
|
|
|
|
33 |
<input type="hidden" name="<?php echo esc_attr( $this->element_name ) ?>" value="<?php echo esc_attr( $value ) ?>"
|
34 |
class="siteorigin-widget-icon-icon siteorigin-widget-input" />
|
35 |
|
@@ -71,4 +77,9 @@ class SiteOrigin_Widget_Field_Icon extends SiteOrigin_Widget_Field_Base {
|
|
71 |
return $widget_icon_families;
|
72 |
}
|
73 |
|
|
|
|
|
|
|
|
|
|
|
74 |
}
|
18 |
<label><?php _e('Choose Icon', 'so-widgets-bundle') ?></label>
|
19 |
</div>
|
20 |
|
21 |
+
<a class="so-icon-remove" style="display: <?php echo !empty( $value ) ? 'block' : 'none' ?>;"><?php esc_html_e( 'Remove', 'so-widgets-bundle' ) ?></a>
|
22 |
+
|
23 |
+
<div class="clear"></div>
|
24 |
+
|
25 |
<div class="siteorigin-widget-icon-selector siteorigin-widget-field-subcontainer">
|
26 |
<select class="siteorigin-widget-icon-family" >
|
27 |
<?php foreach( $widget_icon_families as $family_id => $family_info ) : ?>
|
34 |
<?php endforeach; ?>
|
35 |
</select>
|
36 |
|
37 |
+
<input type="search" class="siteorigin-widget-icon-search" placeholder="<?php esc_attr_e( 'Search Icons' ) ?>" />
|
38 |
+
|
39 |
<input type="hidden" name="<?php echo esc_attr( $this->element_name ) ?>" value="<?php echo esc_attr( $value ) ?>"
|
40 |
class="siteorigin-widget-icon-icon siteorigin-widget-input" />
|
41 |
|
77 |
return $widget_icon_families;
|
78 |
}
|
79 |
|
80 |
+
public function enqueue_scripts(){
|
81 |
+
wp_enqueue_script( 'so-icon-field', plugin_dir_url( __FILE__ ) . '/js/icon-field' . SOW_BUNDLE_JS_SUFFIX . '.js', array( 'jquery' ), SOW_BUNDLE_VERSION );
|
82 |
+
wp_enqueue_style( 'so-icon-field', plugin_dir_url( __FILE__ ) . '/css/icon-field.css', array( ), SOW_BUNDLE_VERSION );
|
83 |
+
}
|
84 |
+
|
85 |
}
|
base/inc/fields/js/icon-field.js
ADDED
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
( function( $ ) {
|
2 |
+
|
3 |
+
var iconWidgetCache = {};
|
4 |
+
|
5 |
+
$(document).on( 'sowsetupformfield', '.siteorigin-widget-field-type-icon', function(e) {
|
6 |
+
var $$ = $(this),
|
7 |
+
$is = $$.find('.siteorigin-widget-icon-selector'),
|
8 |
+
$v = $is.find('.siteorigin-widget-icon-icon'),
|
9 |
+
$b = $$.find('.siteorigin-widget-icon-selector-current'),
|
10 |
+
$remove = $$.find( '.so-icon-remove' ),
|
11 |
+
$search = $$.find( '.siteorigin-widget-icon-search' );
|
12 |
+
|
13 |
+
// Clicking on the button should display the icon selector
|
14 |
+
$b.click( function(){
|
15 |
+
$is.slideToggle();
|
16 |
+
$search.val( '' );
|
17 |
+
searchIcons();
|
18 |
+
} );
|
19 |
+
|
20 |
+
// Clicking on the remove button
|
21 |
+
$remove.click( function( e ){
|
22 |
+
e.preventDefault();
|
23 |
+
|
24 |
+
// Trigger a click on the existing icon to remove it.
|
25 |
+
$$.find('.siteorigin-widget-active').click();
|
26 |
+
} );
|
27 |
+
|
28 |
+
var searchIcons = function(){
|
29 |
+
var q = $search.val().toLowerCase();
|
30 |
+
if( q === '' ) {
|
31 |
+
$is.find('.siteorigin-widget-icon-icons-icon').show();
|
32 |
+
}
|
33 |
+
else {
|
34 |
+
$is.find('.siteorigin-widget-icon-icons-icon').each( function(){
|
35 |
+
var $$ = $( this ),
|
36 |
+
value = $$.attr( 'data-value' );
|
37 |
+
|
38 |
+
value = value.replace( /-/, ' ' );
|
39 |
+
if( value.indexOf( q ) === -1 ) {
|
40 |
+
$$.hide();
|
41 |
+
}
|
42 |
+
else {
|
43 |
+
$$.show();
|
44 |
+
}
|
45 |
+
} );
|
46 |
+
}
|
47 |
+
};
|
48 |
+
|
49 |
+
$search.keyup( searchIcons ).change( searchIcons );
|
50 |
+
|
51 |
+
var rerenderIcons = function(){
|
52 |
+
var family = $is.find('select.siteorigin-widget-icon-family').val();
|
53 |
+
var container = $is.find('.siteorigin-widget-icon-icons');
|
54 |
+
|
55 |
+
if(typeof iconWidgetCache[family] === 'undefined') {
|
56 |
+
return;
|
57 |
+
}
|
58 |
+
|
59 |
+
container.empty();
|
60 |
+
|
61 |
+
if( $('#'+'siteorigin-widget-font-'+family).length === 0) {
|
62 |
+
|
63 |
+
$("<link rel='stylesheet' type='text/css'>")
|
64 |
+
.attr('id', 'siteorigin-widget-font-' + family)
|
65 |
+
.attr('href', iconWidgetCache[family].style_uri)
|
66 |
+
.appendTo('head');
|
67 |
+
}
|
68 |
+
|
69 |
+
for ( var i in iconWidgetCache[family].icons ) {
|
70 |
+
|
71 |
+
var icon = $('<div data-sow-icon="' + iconWidgetCache[family].icons[i] + '"/>')
|
72 |
+
.attr('data-value', family + '-' + i)
|
73 |
+
.addClass( 'sow-icon-' + family )
|
74 |
+
.addClass( 'siteorigin-widget-icon-icons-icon' )
|
75 |
+
.click(function(){
|
76 |
+
var $$ = $(this);
|
77 |
+
|
78 |
+
if( $$.hasClass('siteorigin-widget-active') ) {
|
79 |
+
// This is being unselected
|
80 |
+
$$.removeClass('siteorigin-widget-active');
|
81 |
+
$v.val( '' );
|
82 |
+
|
83 |
+
// Hide the button icon
|
84 |
+
$b.find('span').hide();
|
85 |
+
|
86 |
+
$remove.hide();
|
87 |
+
}
|
88 |
+
else {
|
89 |
+
// This is being selected
|
90 |
+
container.find('.siteorigin-widget-icon-icons-icon').removeClass('siteorigin-widget-active');
|
91 |
+
$$.addClass('siteorigin-widget-active');
|
92 |
+
$v.val( $$.data('value') );
|
93 |
+
|
94 |
+
// Also add this to the button
|
95 |
+
$b.find('span')
|
96 |
+
.show()
|
97 |
+
.attr( 'data-sow-icon', $$.attr('data-sow-icon') )
|
98 |
+
.attr( 'class', '' )
|
99 |
+
.addClass( 'sow-icon-' + family );
|
100 |
+
|
101 |
+
$remove.show();
|
102 |
+
}
|
103 |
+
$v.trigger('change');
|
104 |
+
|
105 |
+
// Hide the icon selector
|
106 |
+
$is.slideUp();
|
107 |
+
});
|
108 |
+
|
109 |
+
container.append(icon);
|
110 |
+
|
111 |
+
if( $v.val() === family + '-' + i ) {
|
112 |
+
// Add selected icon to the button.
|
113 |
+
$b.find('span')
|
114 |
+
.show()
|
115 |
+
.attr( 'data-sow-icon', icon.attr('data-sow-icon') )
|
116 |
+
.attr( 'class', '' )
|
117 |
+
.addClass( 'sow-icon-' + family );
|
118 |
+
icon.addClass('siteorigin-widget-active');
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
// Move a selected item to the first position
|
123 |
+
container.prepend( container.find('.siteorigin-widget-active') );
|
124 |
+
|
125 |
+
searchIcons();
|
126 |
+
};
|
127 |
+
|
128 |
+
// Create the function for changing the icon family and call it once
|
129 |
+
var changeIconFamily = function(){
|
130 |
+
// Fetch the family icons from the server
|
131 |
+
var family = $is.find('select.siteorigin-widget-icon-family').val();
|
132 |
+
|
133 |
+
var dataIcons = $is.find('select.siteorigin-widget-icon-family option:selected' ).data('icons');
|
134 |
+
if( dataIcons !== null ) {
|
135 |
+
iconWidgetCache[family] = dataIcons;
|
136 |
+
}
|
137 |
+
|
138 |
+
|
139 |
+
if(typeof family === 'undefined' || family === '') {
|
140 |
+
return;
|
141 |
+
}
|
142 |
+
|
143 |
+
if(typeof iconWidgetCache[family] === 'undefined') {
|
144 |
+
$.getJSON(
|
145 |
+
soWidgets.ajaxurl,
|
146 |
+
{
|
147 |
+
'action' : 'siteorigin_widgets_get_icons',
|
148 |
+
'family' : $is.find('select.siteorigin-widget-icon-family').val()
|
149 |
+
},
|
150 |
+
function(data) {
|
151 |
+
iconWidgetCache[family] = data;
|
152 |
+
rerenderIcons();
|
153 |
+
}
|
154 |
+
);
|
155 |
+
}
|
156 |
+
else {
|
157 |
+
rerenderIcons();
|
158 |
+
}
|
159 |
+
};
|
160 |
+
changeIconFamily();
|
161 |
+
|
162 |
+
$is.find('select.siteorigin-widget-icon-family').change(function(){
|
163 |
+
$is.find('.siteorigin-widget-icon-icons').empty();
|
164 |
+
changeIconFamily();
|
165 |
+
});
|
166 |
+
} );
|
167 |
+
|
168 |
+
} )( jQuery );
|
base/inc/fields/js/icon-field.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(i){var e={};i(document).on("sowsetupformfield",".siteorigin-widget-field-type-icon",function(t){var n=i(this),o=n.find(".siteorigin-widget-icon-selector"),s=o.find(".siteorigin-widget-icon-icon"),a=n.find(".siteorigin-widget-icon-selector-current"),d=n.find(".so-icon-remove"),c=n.find(".siteorigin-widget-icon-search");a.click(function(){o.slideToggle(),c.val(""),r()}),d.click(function(i){i.preventDefault(),n.find(".siteorigin-widget-active").click()});var r=function(){var e=c.val().toLowerCase();""===e?o.find(".siteorigin-widget-icon-icons-icon").show():o.find(".siteorigin-widget-icon-icons-icon").each(function(){var t=i(this),n=t.attr("data-value");n=n.replace(/-/," "),n.indexOf(e)===-1?t.hide():t.show()})};c.keyup(r).change(r);var g=function(){var t=o.find("select.siteorigin-widget-icon-family").val(),n=o.find(".siteorigin-widget-icon-icons");if("undefined"!=typeof e[t]){n.empty(),0===i("#siteorigin-widget-font-"+t).length&&i("<link rel='stylesheet' type='text/css'>").attr("id","siteorigin-widget-font-"+t).attr("href",e[t].style_uri).appendTo("head");for(var c in e[t].icons){var g=i('<div data-sow-icon="'+e[t].icons[c]+'"/>').attr("data-value",t+"-"+c).addClass("sow-icon-"+t).addClass("siteorigin-widget-icon-icons-icon").click(function(){var e=i(this);e.hasClass("siteorigin-widget-active")?(e.removeClass("siteorigin-widget-active"),s.val(""),a.find("span").hide(),d.hide()):(n.find(".siteorigin-widget-icon-icons-icon").removeClass("siteorigin-widget-active"),e.addClass("siteorigin-widget-active"),s.val(e.data("value")),a.find("span").show().attr("data-sow-icon",e.attr("data-sow-icon")).attr("class","").addClass("sow-icon-"+t),d.show()),s.trigger("change"),o.slideUp()});n.append(g),s.val()===t+"-"+c&&(a.find("span").show().attr("data-sow-icon",g.attr("data-sow-icon")).attr("class","").addClass("sow-icon-"+t),g.addClass("siteorigin-widget-active"))}n.prepend(n.find(".siteorigin-widget-active")),r()}},l=function(){var t=o.find("select.siteorigin-widget-icon-family").val(),n=o.find("select.siteorigin-widget-icon-family option:selected").data("icons");null!==n&&(e[t]=n),"undefined"!=typeof t&&""!==t&&("undefined"==typeof e[t]?i.getJSON(soWidgets.ajaxurl,{action:"siteorigin_widgets_get_icons",family:o.find("select.siteorigin-widget-icon-family").val()},function(i){e[t]=i,g()}):g())};l(),o.find("select.siteorigin-widget-icon-family").change(function(){o.find(".siteorigin-widget-icon-icons").empty(),l()})})}(jQuery);
|
base/inc/fields/js/media-field.js
CHANGED
@@ -266,6 +266,8 @@
|
|
266 |
dialog.find( '.so-widgets-results-loading' ).hide();
|
267 |
$field.find( 'input[type=hidden]' ).val( response.attachment_id ).trigger('change');
|
268 |
$field.find('.current .thumbnail' ).attr('src', response.thumb ).fadeIn();
|
|
|
|
|
269 |
}
|
270 |
else {
|
271 |
alert( response.message );
|
266 |
dialog.find( '.so-widgets-results-loading' ).hide();
|
267 |
$field.find( 'input[type=hidden]' ).val( response.attachment_id ).trigger('change');
|
268 |
$field.find('.current .thumbnail' ).attr('src', response.thumb ).fadeIn();
|
269 |
+
|
270 |
+
$field.find('.media-remove-button').removeClass('remove-hide');
|
271 |
}
|
272 |
else {
|
273 |
alert( response.message );
|
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).find("> .media-field-wrapper"),s=i.closest(".siteorigin-widget-field");i.find(".media-upload-button").click(function(t){if(t.preventDefault(),"undefined"!=typeof wp.media){var i=e(this),n=e(this).closest(".siteorigin-widget-field"),a=e(this).data("frame");if(a)return a.open(),!1;a=wp.media({title:i.data("choose"),library:{type:i.data("library").split(",").map(function(e){return e.trim()})},button:{text:i.data("update"),close:!1}}),i.data("frame",a),a.on("select",function(){var e=a.state().get("selection").first().attributes;n.find(".current .title").html(e.title);var t=n.find("input[type=hidden]");t.val(e.id),t.trigger("change"),"undefined"!=typeof e.sizes?"undefined"!=typeof e.sizes.thumbnail?n.find(".current .thumbnail").attr("src",e.sizes.thumbnail.url).fadeIn():n.find(".current .thumbnail").attr("src",e.sizes.full.url).fadeIn():n.find(".current .thumbnail").attr("src",e.icon).fadeIn(),s.find(".media-remove-button").removeClass("remove-hide"),a.close()}),a.open()}}),i.find(".current").mouseenter(function(){var t=e(this).find(".title");""!==t.html()&&t.fadeIn("fast")}).mouseleave(function(){e(this).find(".title").clearQueue().fadeOut("fast")}),s.find("a.media-remove-button").click(function(t){t.preventDefault(),s.find(".current .title").html(""),s.find("input[type=hidden]").val(""),s.find(".current .thumbnail").fadeOut("fast"),e(this).addClass("remove-hide")});var n=!1,a=function(){if(n){var e=n.find(".so-widgets-image-results");if(0!==e.length){var t=e.width(),i=Math.floor(t/276),s=t-276*i,a=s/i+260;e.find(".so-widgets-result-image").css({width:a,height:a/1.4})}}};e(window).resize(a);var d=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"),i=function(i,s){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:s,_sononce:n.find('input[name="_sononce"]').val()},function(d){return d.error?void alert(d.message):(t.removeClass("so-loading"),e.each(d.items,function(i,s){var n=e(e("#so-widgets-bundle-tpl-image-search-result").html().trim()).appendTo(t).addClass("source-"+s.source),a=n.find(".so-widgets-result-image");a.css("background-image","url("+s.thumbnail+")"),a.data("thumbnail",s.thumbnail),a.data("preview",s.preview),s.url&&a.attr({href:s.url,target:"_blank"}),s.full_url&&(a.data({full_url:s.full_url,import_signature:s.import_signature}),a.attr("href",s.full_url)),"shutterstock"===s.source&&a.append(e("#so-widgets-bundle-tpl-image-search-result-sponsored").html())}),1===s&&(n.find("#so-widgets-image-search-suggestions ul").empty(),e.each(d.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"),a(),void n.find(".so-widgets-results-more").show().find("button").data({query:i,page:s+1}))})};n.find("#so-widgets-image-search-form").submit(function(e){e.preventDefault();var s=n.find(".so-widgets-search-input").val();t.empty(),""!==s&&i(s,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);i(t.data("query"),t.data("page"))});var d;n.on("click",".so-widgets-result-image",function(t){var i=e(this);if(i.data("full_url")&&(t.preventDefault(),confirm(n.data("confirm-import")))){n.addClass("so-widgets-importing");var a=e("#post_ID").val();null===a&&(a=""),e.get(ajaxurl,{action:"so_widgets_image_import",full_url:i.data("full_url"),import_signature:i.data("import_signature"),post_id:a,_sononce:n.find('input[name="_sononce"]').val()},function(e){n.find("#so-widgets-image-search-frame").removeClass("so-widgets-importing"),e.error===!1?(n.hide(),n.find(".so-widgets-results-loading").hide(),s.find("input[type=hidden]").val(e.attachment_id).trigger("change"),s.find(".current .thumbnail").attr("src",e.thumb).fadeIn()):(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 r=n.find(".so-widgets-preview-window");n.on("mouseenter",".so-widgets-result-image",function(){var t=e(this),i=t.data("preview");clearTimeout(d),d=setTimeout(function(){var s=1,a=1;i[1]>.33*e(window).outerWidth()&&(s=.33*e(window).outerWidth()/i[1]),i[2]>.5*e(window).outerHeight()&&(a=.5*e(window).outerHeight()/i[2]);var d=Math.min(s,a);d>1&&(d=1),r.show().find(".so-widgets-preview-window-inside").css({"background-image":"url("+t.data("thumbnail")+")",width:i[1]*d,height:i[2]*d}).append(e("<img />").attr("src",i[0])),n.trigger("mousemove")},1e3)}).on("mouseleave",".so-widgets-result-image",function(){r.hide().find("img").remove(),clearTimeout(d)});var o,u;n.on("mousemove",function(t){if(t.clientX&&(o=t.clientX),t.clientY&&(u=t.clientY),r.is(":visible")){var i=r.outerHeight(),s=r.outerWidth(),n=e(window).outerHeight(),a=e(window).outerWidth(),d=u-i/2;d=Math.max(d,10),d=Math.min(d,n-10-i);var l=o<a/2?o+15:o-15-s;r.css({top:d,left:l})}})}n.show(),n.find(".so-widgets-search-input").focus()};i.find(".find-image-button").click(function(e){e.preventDefault(),d()})})}(jQuery);
|
1 |
+
!function(e){e(document).on("sowsetupformfield",".siteorigin-widget-field-type-media",function(t){var i=e(this).find("> .media-field-wrapper"),s=i.closest(".siteorigin-widget-field");i.find(".media-upload-button").click(function(t){if(t.preventDefault(),"undefined"!=typeof wp.media){var i=e(this),n=e(this).closest(".siteorigin-widget-field"),a=e(this).data("frame");if(a)return a.open(),!1;a=wp.media({title:i.data("choose"),library:{type:i.data("library").split(",").map(function(e){return e.trim()})},button:{text:i.data("update"),close:!1}}),i.data("frame",a),a.on("select",function(){var e=a.state().get("selection").first().attributes;n.find(".current .title").html(e.title);var t=n.find("input[type=hidden]");t.val(e.id),t.trigger("change"),"undefined"!=typeof e.sizes?"undefined"!=typeof e.sizes.thumbnail?n.find(".current .thumbnail").attr("src",e.sizes.thumbnail.url).fadeIn():n.find(".current .thumbnail").attr("src",e.sizes.full.url).fadeIn():n.find(".current .thumbnail").attr("src",e.icon).fadeIn(),s.find(".media-remove-button").removeClass("remove-hide"),a.close()}),a.open()}}),i.find(".current").mouseenter(function(){var t=e(this).find(".title");""!==t.html()&&t.fadeIn("fast")}).mouseleave(function(){e(this).find(".title").clearQueue().fadeOut("fast")}),s.find("a.media-remove-button").click(function(t){t.preventDefault(),s.find(".current .title").html(""),s.find("input[type=hidden]").val(""),s.find(".current .thumbnail").fadeOut("fast"),e(this).addClass("remove-hide")});var n=!1,a=function(){if(n){var e=n.find(".so-widgets-image-results");if(0!==e.length){var t=e.width(),i=Math.floor(t/276),s=t-276*i,a=s/i+260;e.find(".so-widgets-result-image").css({width:a,height:a/1.4})}}};e(window).resize(a);var d=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"),i=function(i,s){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:s,_sononce:n.find('input[name="_sononce"]').val()},function(d){return d.error?void alert(d.message):(t.removeClass("so-loading"),e.each(d.items,function(i,s){var n=e(e("#so-widgets-bundle-tpl-image-search-result").html().trim()).appendTo(t).addClass("source-"+s.source),a=n.find(".so-widgets-result-image");a.css("background-image","url("+s.thumbnail+")"),a.data("thumbnail",s.thumbnail),a.data("preview",s.preview),s.url&&a.attr({href:s.url,target:"_blank"}),s.full_url&&(a.data({full_url:s.full_url,import_signature:s.import_signature}),a.attr("href",s.full_url)),"shutterstock"===s.source&&a.append(e("#so-widgets-bundle-tpl-image-search-result-sponsored").html())}),1===s&&(n.find("#so-widgets-image-search-suggestions ul").empty(),e.each(d.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"),a(),void n.find(".so-widgets-results-more").show().find("button").data({query:i,page:s+1}))})};n.find("#so-widgets-image-search-form").submit(function(e){e.preventDefault();var s=n.find(".so-widgets-search-input").val();t.empty(),""!==s&&i(s,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);i(t.data("query"),t.data("page"))});var d;n.on("click",".so-widgets-result-image",function(t){var i=e(this);if(i.data("full_url")&&(t.preventDefault(),confirm(n.data("confirm-import")))){n.addClass("so-widgets-importing");var a=e("#post_ID").val();null===a&&(a=""),e.get(ajaxurl,{action:"so_widgets_image_import",full_url:i.data("full_url"),import_signature:i.data("import_signature"),post_id:a,_sononce:n.find('input[name="_sononce"]').val()},function(e){n.find("#so-widgets-image-search-frame").removeClass("so-widgets-importing"),e.error===!1?(n.hide(),n.find(".so-widgets-results-loading").hide(),s.find("input[type=hidden]").val(e.attachment_id).trigger("change"),s.find(".current .thumbnail").attr("src",e.thumb).fadeIn(),s.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 r=n.find(".so-widgets-preview-window");n.on("mouseenter",".so-widgets-result-image",function(){var t=e(this),i=t.data("preview");clearTimeout(d),d=setTimeout(function(){var s=1,a=1;i[1]>.33*e(window).outerWidth()&&(s=.33*e(window).outerWidth()/i[1]),i[2]>.5*e(window).outerHeight()&&(a=.5*e(window).outerHeight()/i[2]);var d=Math.min(s,a);d>1&&(d=1),r.show().find(".so-widgets-preview-window-inside").css({"background-image":"url("+t.data("thumbnail")+")",width:i[1]*d,height:i[2]*d}).append(e("<img />").attr("src",i[0])),n.trigger("mousemove")},1e3)}).on("mouseleave",".so-widgets-result-image",function(){r.hide().find("img").remove(),clearTimeout(d)});var o,u;n.on("mousemove",function(t){if(t.clientX&&(o=t.clientX),t.clientY&&(u=t.clientY),r.is(":visible")){var i=r.outerHeight(),s=r.outerWidth(),n=e(window).outerHeight(),a=e(window).outerWidth(),d=u-i/2;d=Math.max(d,10),d=Math.min(d,n-10-i);var l=o<a/2?o+15:o-15-s;r.css({top:d,left:l})}})}n.show(),n.find(".so-widgets-search-input").focus()};i.find(".find-image-button").click(function(e){e.preventDefault(),d()})})}(jQuery);
|
base/inc/fields/media.class.php
CHANGED
@@ -186,9 +186,8 @@ class SiteOrigin_Widget_Field_Media extends SiteOrigin_Widget_Field_Base {
|
|
186 |
<div id="so-widgets-image-search-powered">
|
187 |
<?php
|
188 |
printf(
|
189 |
-
__( 'Powered by %s
|
190 |
-
'<a href="https://pixabay.com/" target="_blank">Pixabay</a>'
|
191 |
-
'<a href="http://stock.siteorigin.com/?shutterstock=home" target="_blank">Shutterstock</a>'
|
192 |
);
|
193 |
?>
|
194 |
</div>
|
186 |
<div id="so-widgets-image-search-powered">
|
187 |
<?php
|
188 |
printf(
|
189 |
+
__( 'Powered by %s', 'so-widgets-bundle' ),
|
190 |
+
'<a href="https://pixabay.com/" target="_blank">Pixabay</a>'
|
|
|
191 |
);
|
192 |
?>
|
193 |
</div>
|
base/inc/meta-box-manager.php
CHANGED
@@ -35,7 +35,7 @@ class SiteOrigin_Widget_Meta_Box_Manager extends SiteOrigin_Widget {
|
|
35 |
__('SiteOrigin Meta Box Manager', 'so-widgets-bundle'),
|
36 |
array(
|
37 |
'has_preview' => false,
|
38 |
-
'help' =>
|
39 |
),
|
40 |
array(),
|
41 |
array()
|
@@ -71,7 +71,7 @@ class SiteOrigin_Widget_Meta_Box_Manager extends SiteOrigin_Widget {
|
|
71 |
}
|
72 |
}
|
73 |
|
74 |
-
if ( !empty( $this->form_options ) ) {
|
75 |
add_meta_box(
|
76 |
'siteorigin-widgets-meta-box',
|
77 |
__( 'Widgets Bundle Post Meta Data', 'so-widgets-bundle' ),
|
@@ -90,7 +90,7 @@ class SiteOrigin_Widget_Meta_Box_Manager extends SiteOrigin_Widget {
|
|
90 |
*/
|
91 |
public function render_widgets_meta_box( $post ) {
|
92 |
wp_enqueue_script(
|
93 |
-
'sow-meta-box-manager',
|
94 |
plugin_dir_url(SOW_BUNDLE_BASE_FILE).'base/js/meta-box-manager' . SOW_BUNDLE_JS_SUFFIX . '.js',
|
95 |
array( 'jquery' ),
|
96 |
SOW_BUNDLE_VERSION,
|
@@ -140,14 +140,11 @@ class SiteOrigin_Widget_Meta_Box_Manager extends SiteOrigin_Widget {
|
|
140 |
* @param $post_id
|
141 |
*/
|
142 |
public function save_widget_post_meta( $post_id ) {
|
143 |
-
$
|
144 |
-
if ( !wp_verify_nonce( $nonce, 'widget_post_meta_save' ) ) return;
|
145 |
if ( !current_user_can( 'edit_post', $post_id ) ) return;
|
146 |
|
147 |
-
$
|
148 |
-
|
149 |
-
) );
|
150 |
-
$widget_post_meta = json_decode( $request['widget_post_meta'], true);
|
151 |
|
152 |
update_post_meta( $post_id, self::POST_META_KEY, $widget_post_meta );
|
153 |
|
@@ -159,6 +156,7 @@ class SiteOrigin_Widget_Meta_Box_Manager extends SiteOrigin_Widget {
|
|
159 |
* @param $post_id string The id of the post for which the meta data is stored.
|
160 |
* @param $widget_id string The id of the widget for which the meta data is stored.
|
161 |
* @param $meta_key string The key of the meta data value which is to be retrieved.
|
|
|
162 |
* @return mixed An empty string if the meta data is not found, else the meta data in whatever format it was stored.
|
163 |
*/
|
164 |
public function get_widget_post_meta( $post_id, $widget_id, $meta_key ) {
|
@@ -168,24 +166,4 @@ class SiteOrigin_Widget_Meta_Box_Manager extends SiteOrigin_Widget {
|
|
168 |
if( ! isset( $widget_post_meta[$widget_post_meta_field] ) ) return '';
|
169 |
return $widget_post_meta[$widget_post_meta_field];
|
170 |
}
|
171 |
-
|
172 |
-
/**
|
173 |
-
* Unused override.
|
174 |
-
*
|
175 |
-
* @param $instance
|
176 |
-
* @return string
|
177 |
-
*/
|
178 |
-
function get_style_name( $instance ) {
|
179 |
-
return '';
|
180 |
-
}
|
181 |
-
|
182 |
-
/**
|
183 |
-
* Unused override.
|
184 |
-
*
|
185 |
-
* @param $instance
|
186 |
-
* @return string
|
187 |
-
*/
|
188 |
-
function get_template_name( $instance ) {
|
189 |
-
return '';
|
190 |
-
}
|
191 |
}
|
35 |
__('SiteOrigin Meta Box Manager', 'so-widgets-bundle'),
|
36 |
array(
|
37 |
'has_preview' => false,
|
38 |
+
'help' => false
|
39 |
),
|
40 |
array(),
|
41 |
array()
|
71 |
}
|
72 |
}
|
73 |
|
74 |
+
if ( ! empty( $this->form_options ) ) {
|
75 |
add_meta_box(
|
76 |
'siteorigin-widgets-meta-box',
|
77 |
__( 'Widgets Bundle Post Meta Data', 'so-widgets-bundle' ),
|
90 |
*/
|
91 |
public function render_widgets_meta_box( $post ) {
|
92 |
wp_enqueue_script(
|
93 |
+
'sow-meta-box-manager-js',
|
94 |
plugin_dir_url(SOW_BUNDLE_BASE_FILE).'base/js/meta-box-manager' . SOW_BUNDLE_JS_SUFFIX . '.js',
|
95 |
array( 'jquery' ),
|
96 |
SOW_BUNDLE_VERSION,
|
140 |
* @param $post_id
|
141 |
*/
|
142 |
public function save_widget_post_meta( $post_id ) {
|
143 |
+
if ( empty( $_POST['_widget_post_meta_nonce'] ) || !wp_verify_nonce( $_POST['_widget_post_meta_nonce'], 'widget_post_meta_save' ) ) return;
|
|
|
144 |
if ( !current_user_can( 'edit_post', $post_id ) ) return;
|
145 |
|
146 |
+
$widget_post_meta = isset( $_POST['widget_post_meta'] ) ? stripslashes_deep( $_POST['widget_post_meta'] ) : '';
|
147 |
+
$widget_post_meta = json_decode( $widget_post_meta, true);
|
|
|
|
|
148 |
|
149 |
update_post_meta( $post_id, self::POST_META_KEY, $widget_post_meta );
|
150 |
|
156 |
* @param $post_id string The id of the post for which the meta data is stored.
|
157 |
* @param $widget_id string The id of the widget for which the meta data is stored.
|
158 |
* @param $meta_key string The key of the meta data value which is to be retrieved.
|
159 |
+
*
|
160 |
* @return mixed An empty string if the meta data is not found, else the meta data in whatever format it was stored.
|
161 |
*/
|
162 |
public function get_widget_post_meta( $post_id, $widget_id, $meta_key ) {
|
166 |
if( ! isset( $widget_post_meta[$widget_post_meta_field] ) ) return '';
|
167 |
return $widget_post_meta[$widget_post_meta_field];
|
168 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
}
|
base/inc/widget-manager.class.php
CHANGED
@@ -11,10 +11,10 @@ class SiteOrigin_Widgets_Widget_Manager {
|
|
11 |
*
|
12 |
* @var
|
13 |
*/
|
14 |
-
private $
|
15 |
|
16 |
function __construct(){
|
17 |
-
$this->
|
18 |
add_action( 'widgets_init', array( $this, 'widgets_init' ) );
|
19 |
}
|
20 |
|
@@ -45,19 +45,19 @@ class SiteOrigin_Widgets_Widget_Manager {
|
|
45 |
$class = 'SiteOrigin_Widget_' . str_replace( ' ', '', ucwords( str_replace('-', ' ', $id) ) ) . '_Widget';
|
46 |
}
|
47 |
|
48 |
-
$this->
|
49 |
-
$this->
|
50 |
-
$this->
|
51 |
-
$this->
|
52 |
|
53 |
-
return $this->
|
54 |
}
|
55 |
|
56 |
/**
|
57 |
* Initialize all the widgets.
|
58 |
*/
|
59 |
public function widgets_init(){
|
60 |
-
foreach( $this->
|
61 |
if( $info->registered ) continue;
|
62 |
register_widget( $info->class );
|
63 |
$info->registered = true;
|
@@ -72,13 +72,13 @@ class SiteOrigin_Widgets_Widget_Manager {
|
|
72 |
* @return bool
|
73 |
*/
|
74 |
public function get_plugin_path( $id ) {
|
75 |
-
if( empty($this->
|
76 |
-
// This call might be using the incorrect ID convention
|
77 |
if( substr($id, 0, 4) == 'sow-' ) $id = substr($id, 4);
|
78 |
else $id = 'sow-' . $id;
|
79 |
}
|
80 |
|
81 |
-
return !empty($this->
|
82 |
}
|
83 |
|
84 |
/**
|
@@ -95,6 +95,33 @@ class SiteOrigin_Widgets_Widget_Manager {
|
|
95 |
function get_plugin_dir_url( $id ){
|
96 |
return plugin_dir_url( $this->get_plugin_path( $id ) );
|
97 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
}
|
99 |
SiteOrigin_Widgets_Widget_Manager::single();
|
100 |
|
@@ -126,7 +153,7 @@ function siteorigin_widget_get_plugin_path($id){
|
|
126 |
* @return string
|
127 |
*/
|
128 |
function siteorigin_widget_get_plugin_dir_path($id){
|
129 |
-
return SiteOrigin_Widgets_Widget_Manager::single()->get_plugin_dir_path($id);
|
130 |
}
|
131 |
|
132 |
/**
|
@@ -136,5 +163,5 @@ function siteorigin_widget_get_plugin_dir_path($id){
|
|
136 |
* @return string
|
137 |
*/
|
138 |
function siteorigin_widget_get_plugin_dir_url($id){
|
139 |
-
return SiteOrigin_Widgets_Widget_Manager::single()->get_plugin_dir_url($id);
|
140 |
}
|
11 |
*
|
12 |
* @var
|
13 |
*/
|
14 |
+
private $registered;
|
15 |
|
16 |
function __construct(){
|
17 |
+
$this->registered = array();
|
18 |
add_action( 'widgets_init', array( $this, 'widgets_init' ) );
|
19 |
}
|
20 |
|
45 |
$class = 'SiteOrigin_Widget_' . str_replace( ' ', '', ucwords( str_replace('-', ' ', $id) ) ) . '_Widget';
|
46 |
}
|
47 |
|
48 |
+
$this->registered[ $id ] = new stdClass();
|
49 |
+
$this->registered[ $id ]->path = $path;
|
50 |
+
$this->registered[ $id ]->class = $class;
|
51 |
+
$this->registered[ $id ]->registered = false;
|
52 |
|
53 |
+
return $this->registered[ $id ];
|
54 |
}
|
55 |
|
56 |
/**
|
57 |
* Initialize all the widgets.
|
58 |
*/
|
59 |
public function widgets_init(){
|
60 |
+
foreach( $this->registered as $id => & $info ) {
|
61 |
if( $info->registered ) continue;
|
62 |
register_widget( $info->class );
|
63 |
$info->registered = true;
|
72 |
* @return bool
|
73 |
*/
|
74 |
public function get_plugin_path( $id ) {
|
75 |
+
if( empty( $this->registered[ $id ] ) ) {
|
76 |
+
// This call might be using the incorrect ID convention.
|
77 |
if( substr($id, 0, 4) == 'sow-' ) $id = substr($id, 4);
|
78 |
else $id = 'sow-' . $id;
|
79 |
}
|
80 |
|
81 |
+
return !empty($this->registered[$id]) ? $this->registered[$id]->path : false;
|
82 |
}
|
83 |
|
84 |
/**
|
95 |
function get_plugin_dir_url( $id ){
|
96 |
return plugin_dir_url( $this->get_plugin_path( $id ) );
|
97 |
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Get a widget ID from a file path
|
101 |
+
*
|
102 |
+
* @param string $path The file path.
|
103 |
+
*
|
104 |
+
* @return string The ID.
|
105 |
+
*/
|
106 |
+
function get_id_from_path( $path ){
|
107 |
+
foreach( $this->registered as $id => $r ) {
|
108 |
+
if( $r->path == $path ) return $id;
|
109 |
+
}
|
110 |
+
return false;
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Get the class name of a widget from the
|
115 |
+
*
|
116 |
+
* @param $path
|
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 |
+
}
|
123 |
+
return false;
|
124 |
+
}
|
125 |
}
|
126 |
SiteOrigin_Widgets_Widget_Manager::single();
|
127 |
|
153 |
* @return string
|
154 |
*/
|
155 |
function siteorigin_widget_get_plugin_dir_path($id){
|
156 |
+
return SiteOrigin_Widgets_Widget_Manager::single()->get_plugin_dir_path( $id );
|
157 |
}
|
158 |
|
159 |
/**
|
163 |
* @return string
|
164 |
*/
|
165 |
function siteorigin_widget_get_plugin_dir_url($id){
|
166 |
+
return SiteOrigin_Widgets_Widget_Manager::single()->get_plugin_dir_url( $id );
|
167 |
}
|
base/js/admin.js
CHANGED
@@ -135,6 +135,17 @@
|
|
135 |
// Lets set up the preview
|
136 |
$el.sowSetupPreview();
|
137 |
$mainForm = $el;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
}
|
139 |
else {
|
140 |
$mainForm = $el.closest('.siteorigin-widget-form-main');
|
@@ -178,130 +189,6 @@
|
|
178 |
});
|
179 |
});
|
180 |
|
181 |
-
///////////////////////////////////////
|
182 |
-
// Handle the icon selection
|
183 |
-
|
184 |
-
var iconWidgetCache = {};
|
185 |
-
$fields.filter('.siteorigin-widget-field-type-icon').each(function(){
|
186 |
-
var $$ = $(this),
|
187 |
-
$is = $$.find('.siteorigin-widget-icon-selector'),
|
188 |
-
$v = $is.find('.siteorigin-widget-icon-icon'),
|
189 |
-
$b = $$.find('.siteorigin-widget-icon-selector-current');
|
190 |
-
|
191 |
-
// Clicking on the button should display the icon selector
|
192 |
-
$b.click(function(){
|
193 |
-
$is.slideToggle();
|
194 |
-
});
|
195 |
-
|
196 |
-
var rerenderIcons = function(){
|
197 |
-
var family = $is.find('select.siteorigin-widget-icon-family').val();
|
198 |
-
var container = $is.find('.siteorigin-widget-icon-icons');
|
199 |
-
|
200 |
-
if(typeof iconWidgetCache[family] === 'undefined') {
|
201 |
-
return;
|
202 |
-
}
|
203 |
-
|
204 |
-
container.empty();
|
205 |
-
|
206 |
-
if( $('#'+'siteorigin-widget-font-'+family).length === 0) {
|
207 |
-
|
208 |
-
$("<link rel='stylesheet' type='text/css'>")
|
209 |
-
.attr('id', 'siteorigin-widget-font-' + family)
|
210 |
-
.attr('href', iconWidgetCache[family].style_uri)
|
211 |
-
.appendTo('head');
|
212 |
-
}
|
213 |
-
|
214 |
-
|
215 |
-
for ( var i in iconWidgetCache[family].icons ) {
|
216 |
-
|
217 |
-
var icon = $('<div data-sow-icon="' + iconWidgetCache[family].icons[i] + '"/>')
|
218 |
-
.attr('data-value', family + '-' + i)
|
219 |
-
.addClass( 'sow-icon-' + family )
|
220 |
-
.addClass( 'siteorigin-widget-icon-icons-icon' )
|
221 |
-
.click(function(){
|
222 |
-
var $$ = $(this);
|
223 |
-
if( $$.hasClass('siteorigin-widget-active') ) {
|
224 |
-
// This is being unselected
|
225 |
-
$$.removeClass('siteorigin-widget-active');
|
226 |
-
$v.val( '' );
|
227 |
-
|
228 |
-
// Hide the button icon
|
229 |
-
$b.find('span').hide();
|
230 |
-
}
|
231 |
-
else {
|
232 |
-
// This is being selected
|
233 |
-
container.find('.siteorigin-widget-icon-icons-icon').removeClass('siteorigin-widget-active');
|
234 |
-
$$.addClass('siteorigin-widget-active');
|
235 |
-
$v.val( $$.data('value') );
|
236 |
-
|
237 |
-
// Also add this to the button
|
238 |
-
$b.find('span')
|
239 |
-
.show()
|
240 |
-
.attr( 'data-sow-icon', $$.attr('data-sow-icon') )
|
241 |
-
.attr( 'class', '' )
|
242 |
-
.addClass( 'sow-icon-' + family );
|
243 |
-
}
|
244 |
-
$v.trigger('change');
|
245 |
-
|
246 |
-
// Hide the icon selector
|
247 |
-
$is.slideUp();
|
248 |
-
});
|
249 |
-
|
250 |
-
container.append(icon);
|
251 |
-
|
252 |
-
if( $v.val() === family + '-' + i ) {
|
253 |
-
// Add selected icon to the button.
|
254 |
-
$b.find('span')
|
255 |
-
.show()
|
256 |
-
.attr( 'data-sow-icon', icon.attr('data-sow-icon') )
|
257 |
-
.attr( 'class', '' )
|
258 |
-
.addClass( 'sow-icon-' + family );
|
259 |
-
icon.addClass('siteorigin-widget-active');
|
260 |
-
}
|
261 |
-
}
|
262 |
-
|
263 |
-
// Move a selcted item to the first position
|
264 |
-
container.prepend( container.find('.siteorigin-widget-active') );
|
265 |
-
};
|
266 |
-
|
267 |
-
// Create the function for changing the icon family and call it once
|
268 |
-
var changeIconFamily = function(){
|
269 |
-
// Fetch the family icons from the server
|
270 |
-
var family = $is.find('select.siteorigin-widget-icon-family').val();
|
271 |
-
|
272 |
-
var dataIcons = $is.find('select.siteorigin-widget-icon-family option:selected' ).data('icons');
|
273 |
-
if( dataIcons !== null ) {
|
274 |
-
iconWidgetCache[family] = dataIcons;
|
275 |
-
}
|
276 |
-
|
277 |
-
|
278 |
-
if(typeof family === 'undefined' || family === '') {
|
279 |
-
return;
|
280 |
-
}
|
281 |
-
|
282 |
-
if(typeof iconWidgetCache[family] === 'undefined') {
|
283 |
-
$.getJSON(
|
284 |
-
soWidgets.ajaxurl,
|
285 |
-
{ 'action' : 'siteorigin_widgets_get_icons', 'family' : $is.find('select.siteorigin-widget-icon-family').val() },
|
286 |
-
function(data) {
|
287 |
-
iconWidgetCache[family] = data;
|
288 |
-
rerenderIcons();
|
289 |
-
}
|
290 |
-
);
|
291 |
-
}
|
292 |
-
else {
|
293 |
-
rerenderIcons();
|
294 |
-
}
|
295 |
-
};
|
296 |
-
|
297 |
-
changeIconFamily();
|
298 |
-
|
299 |
-
$is.find('select.siteorigin-widget-icon-family').change(function(){
|
300 |
-
$is.find('.siteorigin-widget-icon-icons').empty();
|
301 |
-
changeIconFamily();
|
302 |
-
});
|
303 |
-
});
|
304 |
-
|
305 |
///////////////////////////////////////
|
306 |
// Handle the slider fields
|
307 |
|
@@ -596,6 +483,7 @@
|
|
596 |
$items.bind('updateFieldPositions', function(){
|
597 |
var $$ = $(this);
|
598 |
var $rptrItems = $$.find('> .siteorigin-widget-field-repeater-item');
|
|
|
599 |
// Set the position for the repeater items
|
600 |
$rptrItems.each(function(i, el){
|
601 |
$(el).find('.siteorigin-widget-input').each(function(j, input){
|
@@ -615,19 +503,22 @@
|
|
615 |
var $in = $(input);
|
616 |
|
617 |
if(typeof pos !== 'undefined') {
|
618 |
-
var newName = $in.
|
619 |
|
620 |
-
if(
|
621 |
-
$in.
|
622 |
newName = $in.attr('name');
|
623 |
}
|
624 |
if( ! newName ) {
|
625 |
return;
|
626 |
}
|
627 |
-
|
628 |
-
|
|
|
|
|
|
|
629 |
}
|
630 |
-
$
|
631 |
}
|
632 |
});
|
633 |
|
135 |
// Lets set up the preview
|
136 |
$el.sowSetupPreview();
|
137 |
$mainForm = $el;
|
138 |
+
|
139 |
+
var $teaser = $el.find( '.siteorigin-widget-teaser' );
|
140 |
+
$teaser.find('.dashicons-dismiss').click( function(){
|
141 |
+
var $$ = $(this);
|
142 |
+
$.get( $$.data( 'dismiss-url' ) );
|
143 |
+
console.log( $$.data( 'dismiss-url' ) );
|
144 |
+
|
145 |
+
$teaser.slideUp( 'normal', function(){
|
146 |
+
$teaser.remove();
|
147 |
+
} );
|
148 |
+
} );
|
149 |
}
|
150 |
else {
|
151 |
$mainForm = $el.closest('.siteorigin-widget-form-main');
|
189 |
});
|
190 |
});
|
191 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
192 |
///////////////////////////////////////
|
193 |
// Handle the slider fields
|
194 |
|
483 |
$items.bind('updateFieldPositions', function(){
|
484 |
var $$ = $(this);
|
485 |
var $rptrItems = $$.find('> .siteorigin-widget-field-repeater-item');
|
486 |
+
|
487 |
// Set the position for the repeater items
|
488 |
$rptrItems.each(function(i, el){
|
489 |
$(el).find('.siteorigin-widget-input').each(function(j, input){
|
503 |
var $in = $(input);
|
504 |
|
505 |
if(typeof pos !== 'undefined') {
|
506 |
+
var newName = $in.attr('data-original-name');
|
507 |
|
508 |
+
if( ! newName ) {
|
509 |
+
$in.attr( 'data-original-name', $in.attr('name') );
|
510 |
newName = $in.attr('name');
|
511 |
}
|
512 |
if( ! newName ) {
|
513 |
return;
|
514 |
}
|
515 |
+
|
516 |
+
if( pos ) {
|
517 |
+
for( var k in pos ) {
|
518 |
+
newName = newName.replace('#' + k + '#', pos[k] );
|
519 |
+
}
|
520 |
}
|
521 |
+
$in.attr('name', newName);
|
522 |
}
|
523 |
});
|
524 |
|
base/js/admin.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(e){e.fn.sowSetupForm=function(){return e(this).each(function(i,t){var n,a,r=e(t),s=!0,o=r.find("input[name]");if(o.length&&o.attr("name").indexOf("__i__")!==-1)return this;if(r.is(".siteorigin-widget-form-main")){if(r.data("sow-form-setup")===!0)return!0;if(e("body").hasClass("widgets-php")&&!r.is(":visible")&&0===r.closest(".panel-dialog").length)return!0;r.on("sowstatechange",function(i,t,n){r.find("[data-state-handler]").each(function(){var i=e(this),a=e.extend({},i.data("state-handler"),s?i.data("state-handler-initial"):{});if(0===Object.keys(a).length)return!0;var r,o,d,l,f,g,c={},p=window.sowForms.getRepeaterId(i);if(p!==!1){var u={};for(var w in a)u[w.replace("{$repeater}",p)]=a[w];a=u}for(var w in a)if(f=!1,r=w.match(/^([a-zA-Z0-9_-]+)(\[([a-zA-Z0-9_\-,]+)\])?(\[\])?$/),null!==r){if(o={group:"default",name:"",multi:!1},void 0!==r[2]?(o.group=r[1],o.name=r[3]):o.name=r[0],o.multi=void 0!==r[4],"_else"===o.group)o.group=o.name,o.name="",f=o.group===t&&"undefined"==typeof c[o.group];else{g=o.name.split(",").map(function(e){return e.trim()});for(var m=0;m<g.length&&!(f=o.group===t&&g[m]===n);m++);}if(f){d=a[w],o.multi||(d=[d]);for(var m=0;m<d.length;m++)l="undefined"!=typeof d[m][1]&&Boolean(d[m][1])?i.find(d[m][1]):i,l[d[m][0]].apply(l,"undefined"!=typeof d[m][2]?d[m][2]:[]);c[o.group]=!0}}})}),r.sowSetupPreview(),n=r}else n=r.closest(".siteorigin-widget-form-main");a=n.find("> .siteorigin-widgets-form-id").val();var d=r.find("> .siteorigin-widget-field");d.find("> .siteorigin-widget-section").sowSetupForm(),d.filter(".siteorigin-widget-field-type-widget:not(:has(> .siteorigin-widget-section))").sowSetupForm(),d.find(".siteorigin-widget-input").each(function(i,t){null===e(t).data("original-name")&&e(t).data("original-name",e(t).attr("name"))}),d.find("> .siteorigin-widget-field-repeater").sowSetupRepeater(),r.find(".siteorigin-widget-field-repeater-item").sowSetupRepeaterItems(),d.find("> .siteorigin-widget-input-color").wpColorPicker(),d.filter(".siteorigin-widget-field-type-widget, .siteorigin-widget-field-type-section").find("> label").click(function(){e(this);e(this).toggleClass("siteorigin-widget-section-visible"),e(this).siblings(".siteorigin-widget-section").slideToggle(function(){e(window).resize(),e(this).find("> .siteorigin-widget-field-container-state").val(e(this).is(":visible")?"open":"closed")})});var l={};d.filter(".siteorigin-widget-field-type-icon").each(function(){var i=e(this),t=i.find(".siteorigin-widget-icon-selector"),n=t.find(".siteorigin-widget-icon-icon"),a=i.find(".siteorigin-widget-icon-selector-current");a.click(function(){t.slideToggle()});var r=function(){var i=t.find("select.siteorigin-widget-icon-family").val(),r=t.find(".siteorigin-widget-icon-icons");if("undefined"!=typeof l[i]){r.empty(),0===e("#siteorigin-widget-font-"+i).length&&e("<link rel='stylesheet' type='text/css'>").attr("id","siteorigin-widget-font-"+i).attr("href",l[i].style_uri).appendTo("head");for(var s in l[i].icons){var o=e('<div data-sow-icon="'+l[i].icons[s]+'"/>').attr("data-value",i+"-"+s).addClass("sow-icon-"+i).addClass("siteorigin-widget-icon-icons-icon").click(function(){var s=e(this);s.hasClass("siteorigin-widget-active")?(s.removeClass("siteorigin-widget-active"),n.val(""),a.find("span").hide()):(r.find(".siteorigin-widget-icon-icons-icon").removeClass("siteorigin-widget-active"),s.addClass("siteorigin-widget-active"),n.val(s.data("value")),a.find("span").show().attr("data-sow-icon",s.attr("data-sow-icon")).attr("class","").addClass("sow-icon-"+i)),n.trigger("change"),t.slideUp()});r.append(o),n.val()===i+"-"+s&&(a.find("span").show().attr("data-sow-icon",o.attr("data-sow-icon")).attr("class","").addClass("sow-icon-"+i),o.addClass("siteorigin-widget-active"))}r.prepend(r.find(".siteorigin-widget-active"))}},s=function(){var i=t.find("select.siteorigin-widget-icon-family").val(),n=t.find("select.siteorigin-widget-icon-family option:selected").data("icons");null!==n&&(l[i]=n),"undefined"!=typeof i&&""!==i&&("undefined"==typeof l[i]?e.getJSON(soWidgets.ajaxurl,{action:"siteorigin_widgets_get_icons",family:t.find("select.siteorigin-widget-icon-family").val()},function(e){l[i]=e,r()}):r())};s(),t.find("select.siteorigin-widget-icon-family").change(function(){t.find(".siteorigin-widget-icon-icons").empty(),s()})}),d.filter(".siteorigin-widget-field-type-slider").each(function(){var i=e(this),t=i.find('input[type="number"]'),n=i.find(".siteorigin-widget-value-slider");n.slider({max:parseInt(t.attr("max")),min:parseInt(t.attr("min")),value:parseInt(t.val()),slide:function(e,n){t.val(parseInt(n.value)),i.find(".siteorigin-widget-slider-value").html(n.value)}})}),d.filter(".siteorigin-widget-field-type-link").each(function(){var i=e(this),t=null,n=function(){null!==t&&t.abort();var n=i.find(".content-text-search").val(),a=i.find("ul.posts").empty().addClass("loading");e.get(soWidgets.ajaxurl,{action:"so_widgets_search_posts",query:n},function(i){for(var t=0;t<i.length;t++)""===i[t].post_title&&(i[t].post_title=" "),a.append(e("<li>").addClass("post").html(i[t].post_title+"<span>("+i[t].post_type+")</span>").data(i[t]));a.removeClass("loading")})};i.find(".select-content-button, .button-close").click(function(t){t.preventDefault(),e(this).blur();var a=i.find(".existing-content-selector");a.toggle(),a.is(":visible")&&0===a.find("ul.posts li").length&&n()}),i.on("click",".posts li",function(t){t.preventDefault();var n=e(this);i.find("input.siteorigin-widget-input").val("post: "+n.data("ID")),i.find(".existing-content-selector").toggle()});var a=null;i.find(".content-text-search").keyup(function(){null!==a&&clearTimeout(a),a=setTimeout(function(){n()},500)})}),"undefined"!=typeof jQuery.fn.soPanelsSetupBuilderWidget&&d.filter(".siteorigin-widget-field-type-builder").each(function(){var i=e(this);i.find("> .siteorigin-page-builder-field").soPanelsSetupBuilderWidget()});var f=function(){var i=e(this),t=i.closest("[data-state-emitter]").data("state-emitter");if("undefined"!=typeof t){var a=function(t,n){if("undefined"==typeof sowEmitters[t.callback]||"_"===t.callback.substr(0,1))return n;var a=window.sowForms.getRepeaterId(i);return a!==!1&&(t.args=t.args.map(function(e){return e.replace("{$repeater}",a)})),e.extend(n,sowEmitters[t.callback](i.val(),t.args))},r={"default":""};"undefined"==typeof t.length&&(t=[t]);for(var s=0;s<t.length;s++)r=a(t[s],r);var o=n.data("states");"undefined"==typeof o&&(o={"default":""});for(var d in r)"undefined"!=typeof o[d]&&r[d]===o[d]||(o[d]=r[d],n.trigger("sowstatechange",[d,r[d]]));n.data("states",o)}};d.filter("[data-state-emitter]").each(function(){e(this).find(".siteorigin-widget-input").on("keyup change",f),e(this).find(".siteorigin-widget-input").each(function(){var i=e(this);i.is(":radio")?i.is(":checked")&&f.call(i[0]):f.call(i[0])})}),r.trigger("sowsetupform",d).data("sow-form-setup",!0),d.trigger("sowsetupformfield"),r.find(".siteorigin-widget-field-repeater-item").trigger("updateFieldPositions"),s=!1})},e.fn.sowSetupPreview=function(){var i=e(this),t=i.siblings(".siteorigin-widget-preview");t.find("> a").click(function(t){t.preventDefault();var n={};i.find("*[name]").each(function(){var i=e(this),t=/[a-zA-Z0-9\-]+\[[a-zA-Z0-9]+\]\[(.*)\]/.exec(i.attr("name"));if(void 0===t)return!0;t=t[1];var a=t.split("][");a=a.map(function(e){return!isNaN(parseFloat(e))&&isFinite(e)?parseInt(e):e});for(var r=n,s=0;s<a.length;s++)if(s===a.length-1)if("checkbox"===i.attr("type"))i.is(":checked")?r[a[s]]=""===i.val()||i.val():r[a[s]]=!1;else if("radio"===i.attr("type"))i.is(":checked")&&(r[a[s]]=""===i.val()||i.val());else if("TEXTAREA"===i.prop("tagName")&&i.hasClass("wp-editor-area")){var o=null;"undefined"!=typeof tinyMCE&&(o=tinyMCE.get(i.attr("id"))),null===o||"function"!=typeof o.getContent||o.isHidden()?r[a[s]]=i.val():r[a[s]]=o.getContent()}else r[a[s]]=i.val();else"undefined"==typeof r[a[s]]&&(r[a[s]]={}),r=r[a[s]]});var a=e(e("#so-widgets-bundle-tpl-preview-dialog").html().trim()).appendTo("body");a.find('input[name="data"]').val(JSON.stringify(n)),a.find('input[name="class"]').val(i.data("class")),a.find("iframe").on("load",function(){e(this).css("visibility","visible")}),a.find("form").submit(),a.find(".close").click(function(){a.remove()})})},e.fn.sowSetupRepeater=function(){return e(this).each(function(i,t){var n=e(t),a=n.find(".siteorigin-widget-field-repeater-items"),r=n.data("repeater-name");a.bind("updateFieldPositions",function(){var i=e(this),t=i.find("> .siteorigin-widget-field-repeater-item");t.each(function(i,t){e(t).find(".siteorigin-widget-input").each(function(t,n){var a=e(n).data("repeater-positions");"undefined"==typeof a&&(a={}),a[r]=i,e(n).data("repeater-positions",a)})}),i.find(".siteorigin-widget-input").each(function(i,t){var n=e(t).data("repeater-positions"),a=e(t);if("undefined"!=typeof n){var r=a.data("original-name");if("undefined"==typeof r&&(a.data("original-name",a.attr("name")),r=a.attr("name")),!r)return;for(var s in n)r=r.replace("#"+s+"#",n[s]);e(t).attr("name",r)}});var a=n.data("scroll-count")?parseInt(n.data("scroll-count")):0;if(a>0&&t.length>a){var s=t.first().outerHeight();i.css("max-height",s*a).css("overflow","auto")}else i.css("max-height","").css("overflow","")}),a.sortable({handle:".siteorigin-widget-field-repeater-item-top",items:"> .siteorigin-widget-field-repeater-item",update:function(){a.trigger("updateFieldPositions")}}),a.trigger("updateFieldPositions"),n.find("> .siteorigin-widget-field-repeater-add").disableSelection().click(function(i){i.preventDefault(),n.closest(".siteorigin-widget-field-repeater").sowAddRepeaterItem().find("> .siteorigin-widget-field-repeater-items").slideDown("fast",function(){e(window).resize()})}),n.find("> .siteorigin-widget-field-repeater-top > .siteorigin-widget-field-repeater-expand").click(function(i){i.preventDefault(),n.closest(".siteorigin-widget-field-repeater").find("> .siteorigin-widget-field-repeateritems-").slideToggle("fast",function(){e(window).resize()})})})},e.fn.sowAddRepeaterItem=function(){return e(this).each(function(i,t){var n=e(t),a=n.find("> .siteorigin-widget-field-repeater-items").children().length+1,r=e("<div>"+n.find("> .siteorigin-widget-field-repeater-item-html").html()+"</div>");r.find("[data-name]").each(function(){var i=e(this);0===i.closest(".siteorigin-widget-field-repeater-item-html").length&&i.attr("name",e(this).data("name"))});var s=r.html().replace(/_id_/g,a),o="undefined"!=typeof n.attr("readonly"),d=e('<div class="siteorigin-widget-field-repeater-item ui-draggable" />').append(e('<div class="siteorigin-widget-field-repeater-item-top" />').append(e('<div class="siteorigin-widget-field-expand" />')).append(o?"":e('<div class="siteorigin-widget-field-copy" />')).append(o?"":e('<div class="siteorigin-widget-field-remove" />')).append(e("<h4 />").html(n.data("item-name")))).append(e('<div class="siteorigin-widget-field-repeater-item-form" />').html(s));n.find("> .siteorigin-widget-field-repeater-items").append(d).sortable("refresh").trigger("updateFieldPositions"),d.sowSetupRepeaterItems(),d.hide().slideDown("fast",function(){e(window).resize()})})},e.fn.sowRemoveRepeaterItem=function(){return e(this).each(function(i,t){var n=e(this).closest(".siteorigin-widget-field-repeater-items");e(this).remove(),n.sortable("refresh").trigger("updateFieldPositions")})},e.fn.sowSetupRepeaterItems=function(){return e(this).each(function(i,t){var n=e(t);if("undefined"==typeof n.data("sowrepeater-actions-setup")){var a=n.closest(".siteorigin-widget-field-repeater"),r=n.find("> .siteorigin-widget-field-repeater-item-top"),s=a.data("item-label");if(s&&s.selector){var o=function(){var e=s.hasOwnProperty("valueMethod")&&s.valueMethod?s.valueMethod:"val",i=n.find(s.selector)[e]();i&&(i.length>80&&(i=i.substr(0,79)+"..."),r.find("h4").text(i))};o();var d=s.hasOwnProperty("updateEvent")&&s.updateEvent?s.updateEvent:"change";n.bind(d,o)}r.click(function(i){"siteorigin-widget-field-remove"!==i.target.className&&"siteorigin-widget-field-copy"!==i.target.className&&(i.preventDefault(),e(this).closest(".siteorigin-widget-field-repeater-item").find(".siteorigin-widget-field-repeater-item-form").eq(0).slideToggle("fast",function(){e(window).resize(),e(this).is(":visible")?e(this).trigger("slideToggleOpenComplete"):e(this).trigger("slideToggleCloseComplete")}))}),r.find(".siteorigin-widget-field-remove").click(function(i){if(i.preventDefault(),confirm(soWidgets.sure)){var t=e(this).closest(".siteorigin-widget-field-repeater-items");e(this).closest(".siteorigin-widget-field-repeater-item").slideUp("fast",function(){e(this).remove(),t.sortable("refresh").trigger("updateFieldPositions"),e(window).resize()})}}),r.find(".siteorigin-widget-field-copy").click(function(i){i.preventDefault();var t=e(this).closest(".siteorigin-widget-form-main"),a=e(this).closest(".siteorigin-widget-field-repeater-item"),r=a.clone(),s=a.closest(".siteorigin-widget-field-repeater-items"),o=s.children().length,d={};r.find("*[name]").each(function(){var i=e(this),s=i.attr("id"),l=i.attr("name");if(i.is("textarea")&&i.parent().is(".wp-editor-container")&&"undefined"!=typeof tinymce){i.parent().empty().append(i),i.css("display","");var f=tinymce.get(s);f&&i.val(f.getContent())}else if(i.is(".wp-color-picker")){var g=i.closest(".wp-picker-container"),c=i.closest(".siteorigin-widget-field");g.remove(),c.append(i.remove())}else{var p=a.find('[name="'+l+'"]');p.length&&null!=p.val()&&i.val(p.val())}if(s){var u=s.replace(/-\d+$/,"");d[u]||(d[u]=t.find(".siteorigin-widget-input[id^="+u+"]").not("[id*=_id_]").length+1);var w=u+"-"+d[u]++;i.attr("id",w),r.find("label[for="+s+"]").attr("for",w),r.find("[id*="+s+"]").each(function(){var i=e(this).attr("id"),t=i.replace(s,w);e(this).attr("id",t)}),"undefined"!=typeof tinymce&&tinymce.get(w)&&tinymce.get(w).remove()}var m=a.parents(".siteorigin-widget-field-repeater").length,v=e("body");(v.hasClass("wp-customizer")||v.hasClass("widgets-php"))&&0==n.closest(".panel-dialog").length&&(m+=1);var h=l.replace(new RegExp("((?:.*?\\[\\d+\\]){"+(m-1).toString()+"})?(.*?\\[)\\d+(\\])"),"$1$2"+o.toString()+"$3");i.attr("name",h),i.data("original-name",h)}),s.append(r).sortable("refresh").trigger("updateFieldPositions"),r.sowSetupRepeaterItems(),r.hide().slideDown("fast",function(){e(window).resize()})}),n.find("> .siteorigin-widget-field-repeater-item-form").sowSetupForm(),n.data("sowrepeater-actions-setup",!0)}})};var i={getRepeaterId:function(e){"undefined"==typeof this.id&&(this.id=1);var i=e.closest(".siteorigin-widget-field-repeater-item");if(i.length){var t=i.data("item-id");return void 0===t&&(t=this.id++),i.data("item-id",t),t}return!1},getWidgetFieldVariable:function(e,i,t){var n=window.sow_field_javascript_variables[e];i=i.replace(/\[#.*?#\]/g,"");for(var a=/[a-zA-Z0-9\-]+(?:\[c?[0-9]+\])?\[(.*)\]/.exec(i)[1],r=a.split("]["),s=r.length?n:null;r.length;)s=s[r.shift()];return s[t]},fetchWidgetVariable:function(i,t,n){window.sowVars=window.sowVars||{},"undefined"==typeof window.sowVars[t]?e.post(soWidgets.ajaxurl,{action:"sow_get_javascript_variables",widget:t,key:i},function(e){window.sowVars[t]=e,n(window.sowVars[t][i])}):n(window.sowVars[t][i])}};window.sowForms=i,e(".widgets-holder-wrap").on("click",".widget:has(.siteorigin-widget-form-main) .widget-top",function(){var i=e(this).closest(".widget").find(".siteorigin-widget-form-main");setTimeout(function(){i.sowSetupForm()},200)}),e("body").hasClass("wp-customizer")&&e(document).on("widget-added",function(e,i){i.find(".siteorigin-widget-form").sowSetupForm()}),e(document).on("dialogopen",function(i){e(i.target).find(".siteorigin-widget-form-main").sowSetupForm()}),e(function(){e(document).trigger("sowadminloaded")})}(jQuery);var sowEmitters={_match:function(e,i){"undefined"==typeof i&&(i=".*");var t=new RegExp("^([a-zA-Z0-9_-]+)(\\[([a-zA-Z0-9_-]+)\\])? *: *("+i+") *$"),n=t.exec(e);if(null===n)return!1;var a="",r="default";return void 0!==n[3]?(r=n[1],a=n[3]):a=n[1],{match:n[4].trim(),group:r,state:a}},_checker:function(e,i,t,n){var a={};"undefined"==typeof i.length&&(i=[i]);for(var r,s=0;s<i.length;s++)r=sowEmitters._match(i[s],t),r!==!1&&("_true"===r.match||n(e,i,r.match))&&(a[r.group]=r.state);return a},select:function(e,i){"undefined"==typeof i.length&&(i=[i]);for(var t={},n=0;n<i.length;n++)""===i[n]&&(i[n]="default"),t[i[n]]=e;return t},conditional:function(val,args){return sowEmitters._checker(val,args,"[^;{}]*",function(val,args,match){return eval(match)})},"in":function(e,i){return sowEmitters._checker(e,i,"[^;{}]*",function(e,i,t){return t.split(",").map(function(e){return e.trim()}).indexOf(e)!==-1})}};
|
1 |
+
!function(e){e.fn.sowSetupForm=function(){return e(this).each(function(i,t){var n,r,a=e(t),s=!0,o=a.find("input[name]");if(o.length&&o.attr("name").indexOf("__i__")!==-1)return this;if(a.is(".siteorigin-widget-form-main")){if(a.data("sow-form-setup")===!0)return!0;if(e("body").hasClass("widgets-php")&&!a.is(":visible")&&0===a.closest(".panel-dialog").length)return!0;a.on("sowstatechange",function(i,t,n){a.find("[data-state-handler]").each(function(){var i=e(this),r=e.extend({},i.data("state-handler"),s?i.data("state-handler-initial"):{});if(0===Object.keys(r).length)return!0;var a,o,d,l,f,g,p={},c=window.sowForms.getRepeaterId(i);if(c!==!1){var u={};for(var w in r)u[w.replace("{$repeater}",c)]=r[w];r=u}for(var w in r)if(f=!1,a=w.match(/^([a-zA-Z0-9_-]+)(\[([a-zA-Z0-9_\-,]+)\])?(\[\])?$/),null!==a){if(o={group:"default",name:"",multi:!1},void 0!==a[2]?(o.group=a[1],o.name=a[3]):o.name=a[0],o.multi=void 0!==a[4],"_else"===o.group)o.group=o.name,o.name="",f=o.group===t&&"undefined"==typeof p[o.group];else{g=o.name.split(",").map(function(e){return e.trim()});for(var m=0;m<g.length&&!(f=o.group===t&&g[m]===n);m++);}if(f){d=r[w],o.multi||(d=[d]);for(var m=0;m<d.length;m++)l="undefined"!=typeof d[m][1]&&Boolean(d[m][1])?i.find(d[m][1]):i,l[d[m][0]].apply(l,"undefined"!=typeof d[m][2]?d[m][2]:[]);p[o.group]=!0}}})}),a.sowSetupPreview(),n=a;var d=a.find(".siteorigin-widget-teaser");d.find(".dashicons-dismiss").click(function(){var i=e(this);e.get(i.data("dismiss-url")),console.log(i.data("dismiss-url")),d.slideUp("normal",function(){d.remove()})})}else n=a.closest(".siteorigin-widget-form-main");r=n.find("> .siteorigin-widgets-form-id").val();var l=a.find("> .siteorigin-widget-field");l.find("> .siteorigin-widget-section").sowSetupForm(),l.filter(".siteorigin-widget-field-type-widget:not(:has(> .siteorigin-widget-section))").sowSetupForm(),l.find(".siteorigin-widget-input").each(function(i,t){null===e(t).data("original-name")&&e(t).data("original-name",e(t).attr("name"))}),l.find("> .siteorigin-widget-field-repeater").sowSetupRepeater(),a.find(".siteorigin-widget-field-repeater-item").sowSetupRepeaterItems(),l.find("> .siteorigin-widget-input-color").wpColorPicker(),l.filter(".siteorigin-widget-field-type-widget, .siteorigin-widget-field-type-section").find("> label").click(function(){e(this);e(this).toggleClass("siteorigin-widget-section-visible"),e(this).siblings(".siteorigin-widget-section").slideToggle(function(){e(window).resize(),e(this).find("> .siteorigin-widget-field-container-state").val(e(this).is(":visible")?"open":"closed")})}),l.filter(".siteorigin-widget-field-type-slider").each(function(){var i=e(this),t=i.find('input[type="number"]'),n=i.find(".siteorigin-widget-value-slider");n.slider({max:parseInt(t.attr("max")),min:parseInt(t.attr("min")),value:parseInt(t.val()),slide:function(e,n){t.val(parseInt(n.value)),i.find(".siteorigin-widget-slider-value").html(n.value)}})}),l.filter(".siteorigin-widget-field-type-link").each(function(){var i=e(this),t=null,n=function(){null!==t&&t.abort();var n=i.find(".content-text-search").val(),r=i.find("ul.posts").empty().addClass("loading");e.get(soWidgets.ajaxurl,{action:"so_widgets_search_posts",query:n},function(i){for(var t=0;t<i.length;t++)""===i[t].post_title&&(i[t].post_title=" "),r.append(e("<li>").addClass("post").html(i[t].post_title+"<span>("+i[t].post_type+")</span>").data(i[t]));r.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("ID")),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)})}),"undefined"!=typeof jQuery.fn.soPanelsSetupBuilderWidget&&l.filter(".siteorigin-widget-field-type-builder").each(function(){var i=e(this);i.find("> .siteorigin-page-builder-field").soPanelsSetupBuilderWidget()});var f=function(){var i=e(this),t=i.closest("[data-state-emitter]").data("state-emitter");if("undefined"!=typeof t){var r=function(t,n){if("undefined"==typeof sowEmitters[t.callback]||"_"===t.callback.substr(0,1))return n;var r=window.sowForms.getRepeaterId(i);return r!==!1&&(t.args=t.args.map(function(e){return e.replace("{$repeater}",r)})),e.extend(n,sowEmitters[t.callback](i.val(),t.args))},a={"default":""};"undefined"==typeof t.length&&(t=[t]);for(var s=0;s<t.length;s++)a=r(t[s],a);var o=n.data("states");"undefined"==typeof o&&(o={"default":""});for(var d in a)"undefined"!=typeof o[d]&&a[d]===o[d]||(o[d]=a[d],n.trigger("sowstatechange",[d,a[d]]));n.data("states",o)}};l.filter("[data-state-emitter]").each(function(){e(this).find(".siteorigin-widget-input").on("keyup change",f),e(this).find(".siteorigin-widget-input").each(function(){var i=e(this);i.is(":radio")?i.is(":checked")&&f.call(i[0]):f.call(i[0])})}),a.trigger("sowsetupform",l).data("sow-form-setup",!0),l.trigger("sowsetupformfield"),a.find(".siteorigin-widget-field-repeater-item").trigger("updateFieldPositions"),s=!1})},e.fn.sowSetupPreview=function(){var i=e(this),t=i.siblings(".siteorigin-widget-preview");t.find("> a").click(function(t){t.preventDefault();var n={};i.find("*[name]").each(function(){var i=e(this),t=/[a-zA-Z0-9\-]+\[[a-zA-Z0-9]+\]\[(.*)\]/.exec(i.attr("name"));if(void 0===t)return!0;t=t[1];var r=t.split("][");r=r.map(function(e){return!isNaN(parseFloat(e))&&isFinite(e)?parseInt(e):e});for(var a=n,s=0;s<r.length;s++)if(s===r.length-1)if("checkbox"===i.attr("type"))i.is(":checked")?a[r[s]]=""===i.val()||i.val():a[r[s]]=!1;else if("radio"===i.attr("type"))i.is(":checked")&&(a[r[s]]=""===i.val()||i.val());else if("TEXTAREA"===i.prop("tagName")&&i.hasClass("wp-editor-area")){var o=null;"undefined"!=typeof tinyMCE&&(o=tinyMCE.get(i.attr("id"))),null===o||"function"!=typeof o.getContent||o.isHidden()?a[r[s]]=i.val():a[r[s]]=o.getContent()}else a[r[s]]=i.val();else"undefined"==typeof a[r[s]]&&(a[r[s]]={}),a=a[r[s]]});var 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");"undefined"==typeof 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("undefined"!=typeof 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)}});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")}}),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("[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="undefined"!=typeof n.attr("readonly"),d=e('<div class="siteorigin-widget-field-repeater-item ui-draggable" />').append(e('<div class="siteorigin-widget-field-repeater-item-top" />').append(e('<div class="siteorigin-widget-field-expand" />')).append(o?"":e('<div class="siteorigin-widget-field-copy" />')).append(o?"":e('<div class="siteorigin-widget-field-remove" />')).append(e("<h4 />").html(n.data("item-name")))).append(e('<div class="siteorigin-widget-field-repeater-item-form" />').html(s));n.find("> .siteorigin-widget-field-repeater-items").append(d).sortable("refresh").trigger("updateFieldPositions"),d.sowSetupRepeaterItems(),d.hide().slideDown("fast",function(){e(window).resize()})})},e.fn.sowRemoveRepeaterItem=function(){return e(this).each(function(i,t){var n=e(this).closest(".siteorigin-widget-field-repeater-items");e(this).remove(),n.sortable("refresh").trigger("updateFieldPositions")})},e.fn.sowSetupRepeaterItems=function(){return e(this).each(function(i,t){var n=e(t);if("undefined"==typeof n.data("sowrepeater-actions-setup")){var 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(){e(window).resize(),e(this).is(":visible")?e(this).trigger("slideToggleOpenComplete"):e(this).trigger("slideToggleCloseComplete")}))}),a.find(".siteorigin-widget-field-remove").click(function(i){if(i.preventDefault(),confirm(soWidgets.sure)){var t=e(this).closest(".siteorigin-widget-field-repeater-items");e(this).closest(".siteorigin-widget-field-repeater-item").slideUp("fast",function(){e(this).remove(),t.sortable("refresh").trigger("updateFieldPositions"),e(window).resize()})}}),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"),p=i.closest(".siteorigin-widget-field");g.remove(),p.append(i.remove())}else{var c=r.find('[name="'+l+'"]');c.length&&null!=c.val()&&i.val(c.val())}if(s){var u=s.replace(/-\d+$/,"");d[u]||(d[u]=t.find(".siteorigin-widget-input[id^="+u+"]").not("[id*=_id_]").length+1);var w=u+"-"+d[u]++;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 m=r.parents(".siteorigin-widget-field-repeater").length,h=e("body");(h.hasClass("wp-customizer")||h.hasClass("widgets-php"))&&0==n.closest(".panel-dialog").length&&(m+=1);var v=l.replace(new RegExp("((?:.*?\\[\\d+\\]){"+(m-1).toString()+"})?(.*?\\[)\\d+(\\])"),"$1$2"+o.toString()+"$3");i.attr("name",v),i.data("original-name",v)}),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)}})};var i={getRepeaterId:function(e){"undefined"==typeof this.id&&(this.id=1);var i=e.closest(".siteorigin-widget-field-repeater-item");if(i.length){var t=i.data("item-id");return void 0===t&&(t=this.id++),i.data("item-id",t),t}return!1},getWidgetFieldVariable:function(e,i,t){var n=window.sow_field_javascript_variables[e];i=i.replace(/\[#.*?#\]/g,"");for(var 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]},fetchWidgetVariable:function(i,t,n){window.sowVars=window.sowVars||{},"undefined"==typeof window.sowVars[t]?e.post(soWidgets.ajaxurl,{action:"sow_get_javascript_variables",widget:t,key:i},function(e){window.sowVars[t]=e,n(window.sowVars[t][i])}):n(window.sowVars[t][i])}};window.sowForms=i,e(".widgets-holder-wrap").on("click",".widget:has(.siteorigin-widget-form-main) .widget-top",function(){var i=e(this).closest(".widget").find(".siteorigin-widget-form-main");setTimeout(function(){i.sowSetupForm()},200)}),e("body").hasClass("wp-customizer")&&e(document).on("widget-added",function(e,i){i.find(".siteorigin-widget-form").sowSetupForm()}),e(document).on("dialogopen",function(i){e(i.target).find(".siteorigin-widget-form-main").sowSetupForm()}),e(function(){e(document).trigger("sowadminloaded")})}(jQuery);var sowEmitters={_match:function(e,i){"undefined"==typeof i&&(i=".*");var t=new RegExp("^([a-zA-Z0-9_-]+)(\\[([a-zA-Z0-9_-]+)\\])? *: *("+i+") *$"),n=t.exec(e);if(null===n)return!1;var 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={};"undefined"==typeof i.length&&(i=[i]);for(var a,s=0;s<i.length;s++)a=sowEmitters._match(i[s],t),a!==!1&&("_true"===a.match||n(e,i,a.match))&&(r[a.group]=a.state);return r},select:function(e,i){"undefined"==typeof i.length&&(i=[i]);for(var t={},n=0;n<i.length;n++)""===i[n]&&(i[n]="default"),t[i[n]]=e;return t},conditional:function(val,args){return sowEmitters._checker(val,args,"[^;{}]*",function(val,args,match){return eval(match)})},"in":function(e,i){return sowEmitters._checker(e,i,"[^;{}]*",function(e,i,t){return t.split(",").map(function(e){return e.trim()}).indexOf(e)!==-1})}};
|
base/siteorigin-widget.class.php
CHANGED
@@ -38,7 +38,6 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
38 |
static $css_expire = 604800; // 7 days
|
39 |
|
40 |
/**
|
41 |
-
*
|
42 |
* @param string $id
|
43 |
* @param string $name
|
44 |
* @param array $widget_options Optional Normal WP_Widget widget options and a few extras.
|
@@ -61,7 +60,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
61 |
'has_preview' => true,
|
62 |
) );
|
63 |
|
64 |
-
$control_options = wp_parse_args($
|
65 |
'width' => 800,
|
66 |
) );
|
67 |
|
@@ -84,16 +83,36 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
84 |
}
|
85 |
|
86 |
/**
|
87 |
-
*
|
88 |
*
|
89 |
* @return array
|
90 |
*/
|
91 |
-
function
|
92 |
-
return array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
}
|
94 |
|
95 |
/**
|
96 |
-
* Get
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
*
|
98 |
* @param bool|SiteOrigin_Widget $parent
|
99 |
*
|
@@ -101,7 +120,8 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
101 |
*/
|
102 |
function form_options( $parent = false ) {
|
103 |
if( empty( $this->form_options ) ) {
|
104 |
-
|
|
|
105 |
}
|
106 |
|
107 |
$form_options = $this->modify_form( $this->form_options );
|
@@ -123,7 +143,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
123 |
*/
|
124 |
public function widget( $args, $instance ) {
|
125 |
if( empty( $this->form_options ) ) {
|
126 |
-
$this->form_options = $this->
|
127 |
}
|
128 |
|
129 |
$instance = $this->modify_instance( $instance );
|
@@ -209,7 +229,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
209 |
*/
|
210 |
function generate_and_enqueue_instance_styles( $instance ) {
|
211 |
if( empty( $this->form_options ) ) {
|
212 |
-
$this->form_options = $this->
|
213 |
}
|
214 |
|
215 |
// We'll assume empty instances don't have styles
|
@@ -309,7 +329,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
309 |
* @param $form
|
310 |
* @param $instance
|
311 |
*/
|
312 |
-
function add_defaults($form, $instance, $level = 0){
|
313 |
if( $level > 10 ) return $instance;
|
314 |
|
315 |
foreach($form as $id => $field) {
|
@@ -341,11 +361,23 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
341 |
* Display the widget form.
|
342 |
*
|
343 |
* @param array $instance
|
|
|
|
|
344 |
* @return string|void
|
345 |
*/
|
346 |
-
public function form( $instance ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
347 |
$instance = $this->modify_instance($instance);
|
348 |
-
$instance = $this->add_defaults( $
|
349 |
|
350 |
if( empty( $this->number ) ) {
|
351 |
// Compatibility with form widgets.
|
@@ -361,14 +393,14 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
361 |
if( empty( $instance['_sow_form_id'] ) ) {
|
362 |
$instance['_sow_form_id'] = uniqid();
|
363 |
}
|
364 |
-
|
365 |
?>
|
366 |
<div class="siteorigin-widget-form siteorigin-widget-form-main siteorigin-widget-form-main-<?php echo esc_attr($class_name) ?>" id="<?php echo $form_id ?>" data-class="<?php echo esc_attr( $this->widget_class ) ?>" style="display: none">
|
367 |
<?php
|
|
|
368 |
/* @var $field_factory SiteOrigin_Widget_Field_Factory */
|
369 |
-
$field_factory = SiteOrigin_Widget_Field_Factory::
|
370 |
$fields_javascript_variables = array();
|
371 |
-
foreach( $
|
372 |
/* @var $field SiteOrigin_Widget_Field_Base */
|
373 |
$field = $field_factory->create_field( $field_name, $field_options, $this );
|
374 |
$field->render( isset( $instance[$field_name] ) ? $instance[$field_name] : null, $instance );
|
@@ -414,7 +446,43 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
414 |
</script>
|
415 |
<?php
|
416 |
|
417 |
-
$this->enqueue_scripts();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
418 |
}
|
419 |
|
420 |
function scripts_loading_message(){
|
@@ -426,8 +494,10 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
426 |
|
427 |
/**
|
428 |
* Enqueue the admin scripts for the widget form.
|
|
|
|
|
429 |
*/
|
430 |
-
function enqueue_scripts(){
|
431 |
|
432 |
if( ! wp_script_is('siteorigin-widget-admin') ) {
|
433 |
wp_enqueue_style( 'wp-color-picker' );
|
@@ -455,11 +525,32 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
455 |
siteorigin_widget_post_selector_enqueue_admin_scripts();
|
456 |
}
|
457 |
|
|
|
|
|
|
|
|
|
|
|
|
|
458 |
// This lets the widget enqueue any specific admin scripts
|
459 |
$this->enqueue_admin_scripts();
|
460 |
do_action( 'siteorigin_widgets_enqueue_admin_scripts_' . $this->id_base, $this );
|
461 |
}
|
462 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
463 |
/**
|
464 |
* Display all the admin stuff for the footer
|
465 |
*/
|
@@ -470,7 +561,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
470 |
<div class="so-widgets-dialog-overlay"></div>
|
471 |
|
472 |
<div class="so-widgets-toolbar">
|
473 |
-
<h3><?php _e('Widget Preview', 'so-widgets-bundle') ?></h3>
|
474 |
<div class="close"><span class="dashicons dashicons-arrow-left-alt2"></span></div>
|
475 |
</div>
|
476 |
|
@@ -493,13 +584,13 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
493 |
}
|
494 |
|
495 |
/**
|
496 |
-
* Checks if the current widget is using a posts selector
|
497 |
*
|
498 |
* @return bool
|
499 |
*/
|
500 |
function using_posts_selector(){
|
501 |
if( empty( $this->form_options ) ) {
|
502 |
-
$this->form_options = $this->
|
503 |
}
|
504 |
|
505 |
foreach($this->form_options as $field) {
|
@@ -513,15 +604,25 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
513 |
*
|
514 |
* @param array $new_instance
|
515 |
* @param array $old_instance
|
|
|
516 |
* @return array|void
|
517 |
*/
|
518 |
-
public function update( $new_instance, $old_instance ) {
|
519 |
if( !class_exists('SiteOrigin_Widgets_Color_Object') ) require plugin_dir_path( __FILE__ ).'inc/color.php';
|
520 |
|
521 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
522 |
if( ! empty( $form_options ) ) {
|
523 |
/* @var $field_factory SiteOrigin_Widget_Field_Factory */
|
524 |
-
$field_factory = SiteOrigin_Widget_Field_Factory::
|
525 |
foreach ( $form_options as $field_name => $field_options ) {
|
526 |
/* @var $field SiteOrigin_Widget_Field_Base */
|
527 |
if ( !empty( $this->fields ) && !empty( $this->fields[$field_name] ) ) {
|
@@ -1120,4 +1221,36 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
1120 |
( !empty( $_REQUEST['action'] ) && $_REQUEST['action'] == 'so_panels_builder_content' ); // Is this a Page Builder content ajax request
|
1121 |
}
|
1122 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1123 |
}
|
38 |
static $css_expire = 604800; // 7 days
|
39 |
|
40 |
/**
|
|
|
41 |
* @param string $id
|
42 |
* @param string $name
|
43 |
* @param array $widget_options Optional Normal WP_Widget widget options and a few extras.
|
60 |
'has_preview' => true,
|
61 |
) );
|
62 |
|
63 |
+
$control_options = wp_parse_args( $control_options, array(
|
64 |
'width' => 800,
|
65 |
) );
|
66 |
|
83 |
}
|
84 |
|
85 |
/**
|
86 |
+
* Get the main widget form. This should be overwritten by child widgets.
|
87 |
*
|
88 |
* @return array
|
89 |
*/
|
90 |
+
function get_widget_form(){
|
91 |
+
return method_exists( $this, 'initialize_form' ) ? $this->initialize_form() : array();
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Check if a child widget implements a specific form type.
|
96 |
+
*
|
97 |
+
* @param string $form_type
|
98 |
+
* @return bool
|
99 |
+
*/
|
100 |
+
function has_form( $form_type = 'widget' ){
|
101 |
+
return method_exists( $this, 'get_' . $form_type . '_form' );
|
102 |
}
|
103 |
|
104 |
/**
|
105 |
+
* Get a specific type of form.
|
106 |
+
*
|
107 |
+
* @param $form_type
|
108 |
+
* @return array The form array, or an empty array if the form doesn't exist.
|
109 |
+
*/
|
110 |
+
function get_form( $form_type ) {
|
111 |
+
return $this->has_form( $form_type ) ? call_user_func( array( $this, 'get_' . $form_type . '_form' ) ) : array();
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Get the main form options and allow child widgets to modify that form.
|
116 |
*
|
117 |
* @param bool|SiteOrigin_Widget $parent
|
118 |
*
|
120 |
*/
|
121 |
function form_options( $parent = false ) {
|
122 |
if( empty( $this->form_options ) ) {
|
123 |
+
// If the widget doesn't have form_options defined from the constructor, then it might be defining them in the get_widget_form function
|
124 |
+
$this->form_options = $this->get_widget_form();
|
125 |
}
|
126 |
|
127 |
$form_options = $this->modify_form( $this->form_options );
|
143 |
*/
|
144 |
public function widget( $args, $instance ) {
|
145 |
if( empty( $this->form_options ) ) {
|
146 |
+
$this->form_options = $this->get_widget_form();
|
147 |
}
|
148 |
|
149 |
$instance = $this->modify_instance( $instance );
|
229 |
*/
|
230 |
function generate_and_enqueue_instance_styles( $instance ) {
|
231 |
if( empty( $this->form_options ) ) {
|
232 |
+
$this->form_options = $this->get_widget_form();
|
233 |
}
|
234 |
|
235 |
// We'll assume empty instances don't have styles
|
329 |
* @param $form
|
330 |
* @param $instance
|
331 |
*/
|
332 |
+
function add_defaults( $form, $instance, $level = 0 ){
|
333 |
if( $level > 10 ) return $instance;
|
334 |
|
335 |
foreach($form as $id => $field) {
|
361 |
* Display the widget form.
|
362 |
*
|
363 |
* @param array $instance
|
364 |
+
* @param string $form_type Which type of form we're using
|
365 |
+
*
|
366 |
* @return string|void
|
367 |
*/
|
368 |
+
public function form( $instance, $form_type = 'widget' ) {
|
369 |
+
if( $form_type == 'widget' ) {
|
370 |
+
if( empty( $this->form_options ) ) {
|
371 |
+
$this->form_options = $this->form_options();
|
372 |
+
}
|
373 |
+
$form_options = $this->form_options;
|
374 |
+
}
|
375 |
+
else {
|
376 |
+
$form_options = $this->get_form( $form_type );
|
377 |
+
}
|
378 |
+
|
379 |
$instance = $this->modify_instance($instance);
|
380 |
+
$instance = $this->add_defaults( $form_options, $instance );
|
381 |
|
382 |
if( empty( $this->number ) ) {
|
383 |
// Compatibility with form widgets.
|
393 |
if( empty( $instance['_sow_form_id'] ) ) {
|
394 |
$instance['_sow_form_id'] = uniqid();
|
395 |
}
|
|
|
396 |
?>
|
397 |
<div class="siteorigin-widget-form siteorigin-widget-form-main siteorigin-widget-form-main-<?php echo esc_attr($class_name) ?>" id="<?php echo $form_id ?>" data-class="<?php echo esc_attr( $this->widget_class ) ?>" style="display: none">
|
398 |
<?php
|
399 |
+
$this->display_teaser_message();
|
400 |
/* @var $field_factory SiteOrigin_Widget_Field_Factory */
|
401 |
+
$field_factory = SiteOrigin_Widget_Field_Factory::single();
|
402 |
$fields_javascript_variables = array();
|
403 |
+
foreach( $form_options as $field_name => $field_options ) {
|
404 |
/* @var $field SiteOrigin_Widget_Field_Base */
|
405 |
$field = $field_factory->create_field( $field_name, $field_options, $this );
|
406 |
$field->render( isset( $instance[$field_name] ) ? $instance[$field_name] : null, $instance );
|
446 |
</script>
|
447 |
<?php
|
448 |
|
449 |
+
$this->enqueue_scripts( );
|
450 |
+
}
|
451 |
+
|
452 |
+
/**
|
453 |
+
* Display the teaser message.
|
454 |
+
*/
|
455 |
+
function display_teaser_message(){
|
456 |
+
if(
|
457 |
+
method_exists( $this, 'get_form_teaser' ) &&
|
458 |
+
( $teaser = $this->get_form_teaser() )
|
459 |
+
) {
|
460 |
+
$dismissed = get_user_meta( get_current_user_id(), 'teasers_dismissed', true );
|
461 |
+
if( empty( $dismissed[ $this->id_base ] ) ) {
|
462 |
+
$dismiss_url = add_query_arg( array(
|
463 |
+
'action' => 'so_dismiss_widget_teaser',
|
464 |
+
'widget' => $this->id_base,
|
465 |
+
), admin_url( 'admin-ajax.php' ) );
|
466 |
+
$dismiss_url = wp_nonce_url( $dismiss_url, 'dismiss-widget-teaser' );
|
467 |
+
|
468 |
+
?>
|
469 |
+
<div class="siteorigin-widget-teaser">
|
470 |
+
<?php echo wp_kses_post( $teaser ) ?>
|
471 |
+
<span class="dashicons dashicons-dismiss" data-dismiss-url="<?php echo esc_url( $dismiss_url ) ?>"></span>
|
472 |
+
</div>
|
473 |
+
<?php
|
474 |
+
}
|
475 |
+
}
|
476 |
+
}
|
477 |
+
|
478 |
+
/**
|
479 |
+
* Should we display the teaser for SiteOrigin Premium
|
480 |
+
*
|
481 |
+
* @return bool
|
482 |
+
*/
|
483 |
+
function display_siteorigin_premium_teaser(){
|
484 |
+
return apply_filters( 'siteorigin_premium_upgrade_teaser', true ) &&
|
485 |
+
! defined( 'SITEORIGIN_PREMIUM_VERSION' );
|
486 |
}
|
487 |
|
488 |
function scripts_loading_message(){
|
494 |
|
495 |
/**
|
496 |
* Enqueue the admin scripts for the widget form.
|
497 |
+
*
|
498 |
+
* @param bool|string $form_type Should we enqueue the field scripts too?
|
499 |
*/
|
500 |
+
function enqueue_scripts( $form_type = false ){
|
501 |
|
502 |
if( ! wp_script_is('siteorigin-widget-admin') ) {
|
503 |
wp_enqueue_style( 'wp-color-picker' );
|
525 |
siteorigin_widget_post_selector_enqueue_admin_scripts();
|
526 |
}
|
527 |
|
528 |
+
if( !empty( $form_type ) && $this->has_form( $form_type ) ) {
|
529 |
+
// Enqueue field scripts for the given form type
|
530 |
+
$form_options = $this->get_form( $form_type );
|
531 |
+
$this->enqueue_field_scripts( $form_options );
|
532 |
+
}
|
533 |
+
|
534 |
// This lets the widget enqueue any specific admin scripts
|
535 |
$this->enqueue_admin_scripts();
|
536 |
do_action( 'siteorigin_widgets_enqueue_admin_scripts_' . $this->id_base, $this );
|
537 |
}
|
538 |
|
539 |
+
function enqueue_field_scripts( $fields ){
|
540 |
+
/* @var $field_factory SiteOrigin_Widget_Field_Factory */
|
541 |
+
$field_factory = SiteOrigin_Widget_Field_Factory::single();
|
542 |
+
|
543 |
+
foreach( $fields as $field_name => $field_options ) {
|
544 |
+
/* @var $field SiteOrigin_Widget_Field_Base */
|
545 |
+
$field = $field_factory->create_field( $field_name, $field_options, $this );
|
546 |
+
$field->enqueue_scripts();
|
547 |
+
|
548 |
+
if( !empty( $field_options['fields'] ) ) {
|
549 |
+
$this->enqueue_field_scripts( $field_options['fields'] );
|
550 |
+
}
|
551 |
+
}
|
552 |
+
}
|
553 |
+
|
554 |
/**
|
555 |
* Display all the admin stuff for the footer
|
556 |
*/
|
561 |
<div class="so-widgets-dialog-overlay"></div>
|
562 |
|
563 |
<div class="so-widgets-toolbar">
|
564 |
+
<h3><?php _e( 'Widget Preview', 'so-widgets-bundle' ) ?></h3>
|
565 |
<div class="close"><span class="dashicons dashicons-arrow-left-alt2"></span></div>
|
566 |
</div>
|
567 |
|
584 |
}
|
585 |
|
586 |
/**
|
587 |
+
* Checks if the current widget is using a posts selector in the main form.
|
588 |
*
|
589 |
* @return bool
|
590 |
*/
|
591 |
function using_posts_selector(){
|
592 |
if( empty( $this->form_options ) ) {
|
593 |
+
$this->form_options = $this->form_options();
|
594 |
}
|
595 |
|
596 |
foreach($this->form_options as $field) {
|
604 |
*
|
605 |
* @param array $new_instance
|
606 |
* @param array $old_instance
|
607 |
+
* @param string $form_type The type of form we're using.
|
608 |
* @return array|void
|
609 |
*/
|
610 |
+
public function update( $new_instance, $old_instance, $form_type = 'widget' ) {
|
611 |
if( !class_exists('SiteOrigin_Widgets_Color_Object') ) require plugin_dir_path( __FILE__ ).'inc/color.php';
|
612 |
|
613 |
+
if( $form_type == 'widget' ) {
|
614 |
+
if( empty( $this->form_options ) ) {
|
615 |
+
$this->form_options = $this->form_options();
|
616 |
+
}
|
617 |
+
$form_options = $this->form_options;
|
618 |
+
}
|
619 |
+
else {
|
620 |
+
$form_options = $this->get_form( $form_type );
|
621 |
+
}
|
622 |
+
|
623 |
if( ! empty( $form_options ) ) {
|
624 |
/* @var $field_factory SiteOrigin_Widget_Field_Factory */
|
625 |
+
$field_factory = SiteOrigin_Widget_Field_Factory::single();
|
626 |
foreach ( $form_options as $field_name => $field_options ) {
|
627 |
/* @var $field SiteOrigin_Widget_Field_Base */
|
628 |
if ( !empty( $this->fields ) && !empty( $this->fields[$field_name] ) ) {
|
1221 |
( !empty( $_REQUEST['action'] ) && $_REQUEST['action'] == 'so_panels_builder_content' ); // Is this a Page Builder content ajax request
|
1222 |
}
|
1223 |
|
1224 |
+
/**
|
1225 |
+
* Get the global settings from the options table.
|
1226 |
+
*
|
1227 |
+
* @return mixed|void
|
1228 |
+
*/
|
1229 |
+
function get_global_settings( ){
|
1230 |
+
$values = get_option( 'so_widget_settings[' . $this->widget_class . ']', array() );
|
1231 |
+
|
1232 |
+
// Add in the defaults
|
1233 |
+
if( $this->has_form( 'settings' ) ) {
|
1234 |
+
$values = $this->add_defaults( $this->get_settings_form(), $values );
|
1235 |
+
}
|
1236 |
+
|
1237 |
+
return $values;
|
1238 |
+
}
|
1239 |
+
|
1240 |
+
/**
|
1241 |
+
* Save the global settings. Handles validation too.
|
1242 |
+
*
|
1243 |
+
* @param array $values The new values
|
1244 |
+
* @return array The sanitized values.
|
1245 |
+
*/
|
1246 |
+
function save_global_settings( $values ){
|
1247 |
+
$current = $this->get_global_settings();
|
1248 |
+
|
1249 |
+
$values = $this->update( $values, $current, 'settings' );
|
1250 |
+
|
1251 |
+
unset( $values['_sow_form_id'] );
|
1252 |
+
update_option( 'so_widget_settings[' . $this->widget_class . ']', $values );
|
1253 |
+
|
1254 |
+
return $values;
|
1255 |
+
}
|
1256 |
}
|
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: 3.9
|
4 |
Tested up to: 4.6
|
5 |
-
Stable tag: 1.
|
6 |
-
Build time: 2016-
|
7 |
License: GPLv3 or later
|
8 |
Contributors: gpriday, braam-genis
|
9 |
|
@@ -51,6 +51,15 @@ The SiteOrigin Widgets Bundle is the perfect platform to build widgets for your
|
|
51 |
|
52 |
== Changelog ==
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
= 1.6.5 - 15 August 2016 =
|
55 |
* Fixed dialog z-index.
|
56 |
* Added field required argument.
|
2 |
Tags: bundle, widget, button, slider, image, carousel, price table, google maps, tinymce, social links
|
3 |
Requires at least: 3.9
|
4 |
Tested up to: 4.6
|
5 |
+
Stable tag: 1.7
|
6 |
+
Build time: 2016-09-20T13:29:48+02:00
|
7 |
License: GPLv3 or later
|
8 |
Contributors: gpriday, braam-genis
|
9 |
|
51 |
|
52 |
== Changelog ==
|
53 |
|
54 |
+
= 1.7 - 20 September 2016 =
|
55 |
+
* Added mechanism for creating global widget setting.
|
56 |
+
* Added mechanism for adding dismissible notices to widget forms.
|
57 |
+
* Unified Google Maps JS working for maps widget and contact form location field.
|
58 |
+
* Added icon search for icon field.
|
59 |
+
* Added remove button to icon field.
|
60 |
+
* Contact Form: Fixed clash with Firefox field validation.
|
61 |
+
* Properly display remove button after importing Pixabay image.
|
62 |
+
|
63 |
= 1.6.5 - 15 August 2016 =
|
64 |
* Fixed dialog z-index.
|
65 |
* Added field required argument.
|
so-widgets-bundle.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: SiteOrigin Widgets Bundle
|
4 |
Description: A collection of all widgets, neatly bundled into a single plugin. It's also a framework to code your own widgets on top of.
|
5 |
-
Version: 1.
|
6 |
Text Domain: so-widgets-bundle
|
7 |
Domain Path: /languages
|
8 |
Author: SiteOrigin
|
@@ -12,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
|
@@ -45,9 +45,14 @@ class SiteOrigin_Widgets_Bundle {
|
|
45 |
add_action('admin_init', array($this, 'admin_activate_widget') );
|
46 |
add_action('admin_menu', array($this, 'admin_menu_init') );
|
47 |
add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts') );
|
|
|
|
|
48 |
add_action('wp_ajax_so_widgets_bundle_manage', array($this, 'admin_ajax_manage_handler') );
|
49 |
add_action('wp_ajax_sow_get_javascript_variables', array($this, 'admin_ajax_get_javascript_variables') );
|
50 |
|
|
|
|
|
|
|
51 |
// Initialize the widgets, but do it fairly late
|
52 |
add_action( 'plugins_loaded', array($this, 'set_plugin_textdomain'), 1 );
|
53 |
add_action( 'after_setup_theme', array($this, 'get_widget_folders'), 11 );
|
@@ -219,7 +224,7 @@ class SiteOrigin_Widgets_Bundle {
|
|
219 |
if( empty($this->widget_folders) ) {
|
220 |
// We can use this filter to add more folders to use for widgets
|
221 |
$this->widget_folders = apply_filters('siteorigin_widgets_widget_folders', array(
|
222 |
-
plugin_dir_path(__FILE__).'widgets/'
|
223 |
) );
|
224 |
}
|
225 |
|
@@ -350,6 +355,58 @@ class SiteOrigin_Widgets_Bundle {
|
|
350 |
exit();
|
351 |
}
|
352 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
353 |
/**
|
354 |
* Add the admin menu page.
|
355 |
*
|
@@ -369,9 +426,8 @@ class SiteOrigin_Widgets_Bundle {
|
|
369 |
* Display the admin page.
|
370 |
*/
|
371 |
function admin_page(){
|
372 |
-
|
373 |
-
$
|
374 |
-
$widgets = $bundle->get_widgets_list();
|
375 |
|
376 |
if(
|
377 |
isset($_GET['widget_action_done'])
|
@@ -379,7 +435,6 @@ class SiteOrigin_Widgets_Bundle {
|
|
379 |
&& !empty($_GET['widget'])
|
380 |
&& !empty( $widgets[ $_GET['widget'].'/'.$_GET['widget'].'.php' ] )
|
381 |
) {
|
382 |
-
|
383 |
?>
|
384 |
<div class="updated">
|
385 |
<p>
|
@@ -395,6 +450,11 @@ class SiteOrigin_Widgets_Bundle {
|
|
395 |
<?php
|
396 |
}
|
397 |
|
|
|
|
|
|
|
|
|
|
|
398 |
include plugin_dir_path(__FILE__).'admin/tpl/admin.php';
|
399 |
}
|
400 |
|
@@ -408,7 +468,7 @@ class SiteOrigin_Widgets_Bundle {
|
|
408 |
global $wp_widget_factory;
|
409 |
if ( ! empty( $wp_widget_factory->widgets[ $widget_class ] ) ) {
|
410 |
$widget = $wp_widget_factory->widgets[ $widget_class ];
|
411 |
-
if( method_exists($widget, 'get_javascript_variables') ) $result = $widget->get_javascript_variables();
|
412 |
}
|
413 |
|
414 |
header('content-type: application/json');
|
@@ -509,7 +569,7 @@ class SiteOrigin_Widgets_Bundle {
|
|
509 |
$widgets = array();
|
510 |
foreach( $folders as $folder ) {
|
511 |
|
512 |
-
$files = glob( $folder.'*/*.php' );
|
513 |
foreach($files as $file) {
|
514 |
$widget = get_file_data( $file, $default_headers, 'siteorigin-widget' );
|
515 |
//skip the file if it's missing a name
|
@@ -520,10 +580,10 @@ class SiteOrigin_Widgets_Bundle {
|
|
520 |
$id = $f['filename'];
|
521 |
|
522 |
$widget['ID'] = $id;
|
523 |
-
$widget['Active'] = !empty($active[$id]);
|
524 |
$widget['File'] = $file;
|
525 |
|
526 |
-
$widgets[$file] = $widget;
|
527 |
}
|
528 |
|
529 |
}
|
@@ -533,6 +593,32 @@ class SiteOrigin_Widgets_Bundle {
|
|
533 |
return $widgets;
|
534 |
}
|
535 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
536 |
/**
|
537 |
* Sorting function to sort widgets by name
|
538 |
*
|
@@ -642,4 +728,4 @@ SiteOrigin_Widgets_Bundle::single();
|
|
642 |
|
643 |
// Initialize the Meta Box Manager
|
644 |
global $sow_meta_box_manager;
|
645 |
-
$sow_meta_box_manager = SiteOrigin_Widget_Meta_Box_Manager::single();
|
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.7
|
6 |
Text Domain: so-widgets-bundle
|
7 |
Domain Path: /languages
|
8 |
Author: SiteOrigin
|
12 |
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
13 |
*/
|
14 |
|
15 |
+
define('SOW_BUNDLE_VERSION', '1.7');
|
16 |
define('SOW_BUNDLE_BASE_FILE', __FILE__);
|
17 |
|
18 |
// Allow JS suffix to be pre-set
|
45 |
add_action('admin_init', array($this, 'admin_activate_widget') );
|
46 |
add_action('admin_menu', array($this, 'admin_menu_init') );
|
47 |
add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts') );
|
48 |
+
|
49 |
+
// All the ajax actions
|
50 |
add_action('wp_ajax_so_widgets_bundle_manage', array($this, 'admin_ajax_manage_handler') );
|
51 |
add_action('wp_ajax_sow_get_javascript_variables', array($this, 'admin_ajax_get_javascript_variables') );
|
52 |
|
53 |
+
add_action('wp_ajax_so_widgets_setting_form', array($this, 'admin_ajax_settings_form') );
|
54 |
+
add_action('wp_ajax_so_widgets_setting_save', array($this, 'admin_ajax_settings_save') );
|
55 |
+
|
56 |
// Initialize the widgets, but do it fairly late
|
57 |
add_action( 'plugins_loaded', array($this, 'set_plugin_textdomain'), 1 );
|
58 |
add_action( 'after_setup_theme', array($this, 'get_widget_folders'), 11 );
|
224 |
if( empty($this->widget_folders) ) {
|
225 |
// We can use this filter to add more folders to use for widgets
|
226 |
$this->widget_folders = apply_filters('siteorigin_widgets_widget_folders', array(
|
227 |
+
plugin_dir_path(__FILE__) . 'widgets/'
|
228 |
) );
|
229 |
}
|
230 |
|
355 |
exit();
|
356 |
}
|
357 |
|
358 |
+
/**
|
359 |
+
* Handler for displaying the Widget settings form.
|
360 |
+
*
|
361 |
+
* @action wp_ajax_so_widgets_setting_form
|
362 |
+
*/
|
363 |
+
function admin_ajax_settings_form(){
|
364 |
+
if( ! wp_verify_nonce($_GET['_wpnonce'], 'display-widget-form') ) exit();
|
365 |
+
if( ! current_user_can( apply_filters( 'siteorigin_widgets_admin_menu_capability', 'manage_options' ) ) ) exit();
|
366 |
+
|
367 |
+
$widget_objects = $this->get_widget_objects();
|
368 |
+
$widget_object = !empty( $widget_objects[ $_GET['id'] ] ) ? $widget_objects[ $_GET['id'] ] : false;
|
369 |
+
|
370 |
+
if( empty( $widget_object ) || ! $widget_object->has_form( 'settings' ) ) exit();
|
371 |
+
|
372 |
+
unset( $widget_object->widget_options['has_preview'] );
|
373 |
+
|
374 |
+
$action_url = admin_url( 'admin-ajax.php' );
|
375 |
+
$action_url = add_query_arg( array(
|
376 |
+
'id' => $_GET['id'],
|
377 |
+
'action' => 'so_widgets_setting_save',
|
378 |
+
), $action_url );
|
379 |
+
$action_url = wp_nonce_url( $action_url, 'save-widget-settings' );
|
380 |
+
|
381 |
+
$value = $widget_object->get_global_settings();
|
382 |
+
|
383 |
+
?>
|
384 |
+
<form method="post" action="<?php echo esc_url( $action_url ) ?>" target="so-widget-settings-save">
|
385 |
+
<?php $widget_object->form( $value, 'settings' ) ?>
|
386 |
+
</form>
|
387 |
+
<?php
|
388 |
+
|
389 |
+
exit();
|
390 |
+
}
|
391 |
+
|
392 |
+
/**
|
393 |
+
* Handler for saving the widget settings.
|
394 |
+
*
|
395 |
+
* @action wp_ajax_so_widgets_setting_save
|
396 |
+
*/
|
397 |
+
function admin_ajax_settings_save(){
|
398 |
+
if( ! wp_verify_nonce( $_GET['_wpnonce'], 'save-widget-settings' ) ) exit();
|
399 |
+
if( ! current_user_can( apply_filters( 'siteorigin_widgets_admin_menu_capability', 'manage_options' ) ) ) exit();
|
400 |
+
|
401 |
+
$widget_objects = $this->get_widget_objects();
|
402 |
+
$widget_object = !empty( $widget_objects[ $_GET['id'] ] ) ? $widget_objects[ $_GET['id'] ] : false;
|
403 |
+
|
404 |
+
if( empty( $widget_object ) || ! $widget_object->has_form( 'settings' ) ) exit();
|
405 |
+
|
406 |
+
$form_values = array_shift( array_shift( array_values( $_POST ) ) );
|
407 |
+
$widget_object->save_global_settings( $form_values );
|
408 |
+
}
|
409 |
+
|
410 |
/**
|
411 |
* Add the admin menu page.
|
412 |
*
|
426 |
* Display the admin page.
|
427 |
*/
|
428 |
function admin_page(){
|
429 |
+
$widgets = $this->get_widgets_list();
|
430 |
+
$widget_objects = $this->get_widget_objects();
|
|
|
431 |
|
432 |
if(
|
433 |
isset($_GET['widget_action_done'])
|
435 |
&& !empty($_GET['widget'])
|
436 |
&& !empty( $widgets[ $_GET['widget'].'/'.$_GET['widget'].'.php' ] )
|
437 |
) {
|
|
|
438 |
?>
|
439 |
<div class="updated">
|
440 |
<p>
|
450 |
<?php
|
451 |
}
|
452 |
|
453 |
+
// Enqueue all the admin page scripts
|
454 |
+
foreach( $widget_objects as $widget ) {
|
455 |
+
$widget->enqueue_scripts( 'settings' );
|
456 |
+
}
|
457 |
+
|
458 |
include plugin_dir_path(__FILE__).'admin/tpl/admin.php';
|
459 |
}
|
460 |
|
468 |
global $wp_widget_factory;
|
469 |
if ( ! empty( $wp_widget_factory->widgets[ $widget_class ] ) ) {
|
470 |
$widget = $wp_widget_factory->widgets[ $widget_class ];
|
471 |
+
if( method_exists( $widget, 'get_javascript_variables' ) ) $result = $widget->get_javascript_variables();
|
472 |
}
|
473 |
|
474 |
header('content-type: application/json');
|
569 |
$widgets = array();
|
570 |
foreach( $folders as $folder ) {
|
571 |
|
572 |
+
$files = glob( $folder . '*/*.php' );
|
573 |
foreach($files as $file) {
|
574 |
$widget = get_file_data( $file, $default_headers, 'siteorigin-widget' );
|
575 |
//skip the file if it's missing a name
|
580 |
$id = $f['filename'];
|
581 |
|
582 |
$widget['ID'] = $id;
|
583 |
+
$widget['Active'] = !empty( $active[ $id ] );
|
584 |
$widget['File'] = $file;
|
585 |
|
586 |
+
$widgets[ $file ] = $widget;
|
587 |
}
|
588 |
|
589 |
}
|
593 |
return $widgets;
|
594 |
}
|
595 |
|
596 |
+
/**
|
597 |
+
* Get instances of all the widgets. Even ones that are not active.
|
598 |
+
*/
|
599 |
+
private function get_widget_objects(){
|
600 |
+
$folders = $this->get_widget_folders();
|
601 |
+
|
602 |
+
$widgets = array();
|
603 |
+
$manager = SiteOrigin_Widgets_Widget_Manager::single();
|
604 |
+
|
605 |
+
foreach( $folders as $folder ) {
|
606 |
+
|
607 |
+
$files = glob( $folder . '*/*.php' );
|
608 |
+
foreach ($files as $file) {
|
609 |
+
include_once $file;
|
610 |
+
|
611 |
+
$widget_class = $manager->get_class_from_path( $file );
|
612 |
+
|
613 |
+
if( $widget_class && class_exists( $widget_class ) ) {
|
614 |
+
$widgets[ $file ] = new $widget_class();
|
615 |
+
}
|
616 |
+
}
|
617 |
+
}
|
618 |
+
|
619 |
+
return $widgets;
|
620 |
+
}
|
621 |
+
|
622 |
/**
|
623 |
* Sorting function to sort widgets by name
|
624 |
*
|
728 |
|
729 |
// Initialize the Meta Box Manager
|
730 |
global $sow_meta_box_manager;
|
731 |
+
$sow_meta_box_manager = SiteOrigin_Widget_Meta_Box_Manager::single();
|
widgets/button/button.php
CHANGED
@@ -38,7 +38,7 @@ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget {
|
|
38 |
);
|
39 |
}
|
40 |
|
41 |
-
function
|
42 |
return array(
|
43 |
'text' => array(
|
44 |
'type' => 'text',
|
38 |
);
|
39 |
}
|
40 |
|
41 |
+
function get_widget_form() {
|
42 |
return array(
|
43 |
'text' => array(
|
44 |
'type' => 'text',
|
widgets/contact/contact.php
CHANGED
@@ -39,7 +39,7 @@ class SiteOrigin_Widgets_ContactForm_Widget extends SiteOrigin_Widget {
|
|
39 |
add_filter( 'siteorigin_widgets_sanitize_field_multiple_emails', array( $this, 'sanitize_multiple_emails' ) );
|
40 |
}
|
41 |
|
42 |
-
function
|
43 |
return array(
|
44 |
'title' => array(
|
45 |
'type' => 'text',
|
@@ -523,6 +523,20 @@ class SiteOrigin_Widgets_ContactForm_Widget extends SiteOrigin_Widget {
|
|
523 |
);
|
524 |
}
|
525 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
526 |
function sanitize_multiple_emails( $value ) {
|
527 |
$values = explode( ',', $value );
|
528 |
foreach ( $values as $i => $email ) {
|
39 |
add_filter( 'siteorigin_widgets_sanitize_field_multiple_emails', array( $this, 'sanitize_multiple_emails' ) );
|
40 |
}
|
41 |
|
42 |
+
function get_widget_form(){
|
43 |
return array(
|
44 |
'title' => array(
|
45 |
'type' => 'text',
|
523 |
);
|
524 |
}
|
525 |
|
526 |
+
function get_form_teaser(){
|
527 |
+
if( ! $this->display_siteorigin_premium_teaser() ) return false;
|
528 |
+
|
529 |
+
$url = add_query_arg( array(
|
530 |
+
'featured_addon' => 'plugin/contact-form-fields',
|
531 |
+
'featured_plugin' => 'widgets-bundle'
|
532 |
+
), 'https://siteorigin.com/downloads/premium/' );
|
533 |
+
|
534 |
+
return sprintf(
|
535 |
+
__( 'Get more form fields for the Contact Form Widget in %s', 'so-widgets-bundle' ),
|
536 |
+
'<a href="' . esc_url( $url ) . '" target="_blank">' . __( 'SiteOrigin Premium', 'so-widgets-bundle' ) . '</a>'
|
537 |
+
);
|
538 |
+
}
|
539 |
+
|
540 |
function sanitize_multiple_emails( $value ) {
|
541 |
$values = explode( ',', $value );
|
542 |
foreach ( $values as $i => $email ) {
|
widgets/contact/js/contact.js
CHANGED
@@ -26,11 +26,9 @@ var SiteOriginContactForm = {
|
|
26 |
}
|
27 |
|
28 |
// Disable the submit button on click to avoid multiple submits.
|
29 |
-
$
|
30 |
$submitButton.prop('disabled', true);
|
31 |
-
|
32 |
-
$el.submit();
|
33 |
-
});
|
34 |
});
|
35 |
},
|
36 |
};
|
26 |
}
|
27 |
|
28 |
// Disable the submit button on click to avoid multiple submits.
|
29 |
+
$contactForms.submit( function () {
|
30 |
$submitButton.prop('disabled', true);
|
31 |
+
} );
|
|
|
|
|
32 |
});
|
33 |
},
|
34 |
};
|
widgets/contact/js/contact.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
function soContactFormInitialize(){SiteOriginContactForm.init(window.jQuery,!0)}var SiteOriginContactForm={init:function(i
|
1 |
+
function soContactFormInitialize(){SiteOriginContactForm.init(window.jQuery,!0)}var SiteOriginContactForm={init:function(t,i){var e=t("form.sow-contact-form");e.each(function(){var o=t(this),n=t(this).find(".sow-submit-wrapper > input.sow-submit");if(i){var a=o.find(".sow-recaptcha");if(a.length){var r=a.data("config");n.prop("disabled",!0),grecaptcha.render(a.get(0),{sitekey:r.sitekey,theme:r.theme,type:r.type,size:r.size,callback:function(t){n.prop("disabled",!1)}})}}e.submit(function(){n.prop("disabled",!0)})})}};jQuery(function(t){var i=t("form.sow-contact-form"),e=i.toArray().some(function(i){return t(i).find("div").hasClass("sow-recaptcha")});if(e)if(window.recaptcha)SiteOriginContactForm.init(t,e);else{var o="https://www.google.com/recaptcha/api.js?onload=soContactFormInitialize&render=explicit",n=t('<script type="text/javascript" src="'+o+'" async defer>');t("body").append(n)}else SiteOriginContactForm.init(t,e)});
|
widgets/contact/styles/default.less
CHANGED
@@ -98,6 +98,10 @@
|
|
98 |
}
|
99 |
}
|
100 |
|
|
|
|
|
|
|
|
|
101 |
.sow-contact-form {
|
102 |
// Container Background
|
103 |
@container_background: default;
|
98 |
}
|
99 |
}
|
100 |
|
101 |
+
.sow-recaptcha {
|
102 |
+
margin-bottom: 1em;
|
103 |
+
}
|
104 |
+
|
105 |
.sow-contact-form {
|
106 |
// Container Background
|
107 |
@container_background: default;
|
widgets/cta/cta.php
CHANGED
@@ -55,7 +55,7 @@ class SiteOrigin_Widget_Cta_Widget extends SiteOrigin_Widget {
|
|
55 |
);
|
56 |
}
|
57 |
|
58 |
-
function
|
59 |
return array(
|
60 |
|
61 |
'title' => array(
|
55 |
);
|
56 |
}
|
57 |
|
58 |
+
function get_widget_form(){
|
59 |
return array(
|
60 |
|
61 |
'title' => array(
|
widgets/editor/editor.php
CHANGED
@@ -24,7 +24,7 @@ class SiteOrigin_Widget_Editor_Widget extends SiteOrigin_Widget {
|
|
24 |
);
|
25 |
}
|
26 |
|
27 |
-
function
|
28 |
return array(
|
29 |
'title' => array(
|
30 |
'type' => 'text',
|
24 |
);
|
25 |
}
|
26 |
|
27 |
+
function get_widget_form(){
|
28 |
return array(
|
29 |
'title' => array(
|
30 |
'type' => 'text',
|
widgets/features/features.php
CHANGED
@@ -34,7 +34,7 @@ class SiteOrigin_Widget_Features_Widget extends SiteOrigin_Widget {
|
|
34 |
);
|
35 |
}
|
36 |
|
37 |
-
function
|
38 |
|
39 |
return array(
|
40 |
'features' => array(
|
34 |
);
|
35 |
}
|
36 |
|
37 |
+
function get_widget_form(){
|
38 |
|
39 |
return array(
|
40 |
'features' => array(
|
widgets/google-map/google-map.php
CHANGED
@@ -47,7 +47,7 @@ class SiteOrigin_Widget_GoogleMap_Widget extends SiteOrigin_Widget {
|
|
47 |
);
|
48 |
}
|
49 |
|
50 |
-
function
|
51 |
return array(
|
52 |
'map_center' => array(
|
53 |
'type' => 'textarea',
|
47 |
);
|
48 |
}
|
49 |
|
50 |
+
function get_widget_form(){
|
51 |
return array(
|
52 |
'map_center' => array(
|
53 |
'type' => 'textarea',
|
widgets/google-map/js/js-map.js
CHANGED
@@ -1,11 +1,18 @@
|
|
1 |
-
|
2 |
-
* (c) SiteOrigin, freely distributable under the terms of the GPL 2.0 license.
|
3 |
-
*/
|
4 |
|
5 |
-
|
6 |
return {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
showMap: function(element, location, options) {
|
|
|
8 |
var zoom = Number(options.zoom);
|
|
|
9 |
if ( !zoom ) zoom = 14;
|
10 |
|
11 |
var userMapTypeId = 'user_map_style';
|
@@ -15,6 +22,8 @@ var SiteOriginGoogleMap = function($) {
|
|
15 |
scrollwheel: options.scrollZoom,
|
16 |
draggable: options.draggable,
|
17 |
disableDefaultUI: options.disableUi,
|
|
|
|
|
18 |
center: location,
|
19 |
mapTypeControlOptions: {
|
20 |
mapTypeIds: [google.maps.MapTypeId.ROADMAP, userMapTypeId]
|
@@ -37,7 +46,7 @@ var SiteOriginGoogleMap = function($) {
|
|
37 |
}
|
38 |
|
39 |
if (options.markerAtCenter) {
|
40 |
-
new google.maps.Marker({
|
41 |
position: location,
|
42 |
map: map,
|
43 |
draggable: options.markersDraggable,
|
@@ -55,10 +64,94 @@ var SiteOriginGoogleMap = function($) {
|
|
55 |
map.setCenter(center);
|
56 |
});
|
57 |
}
|
58 |
-
|
|
|
59 |
this.showMarkers(options.markerPositions, map, options);
|
60 |
this.showDirections(options.directions, map, options);
|
61 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
showMarkers: function(markerPositions, map, options) {
|
63 |
if ( markerPositions && markerPositions.length ) {
|
64 |
var geocoder = new google.maps.Geocoder();
|
@@ -139,69 +232,147 @@ var SiteOriginGoogleMap = function($) {
|
|
139 |
});
|
140 |
}
|
141 |
},
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
var
|
151 |
-
|
152 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
}
|
154 |
-
}
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
}
|
168 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
}
|
170 |
-
|
|
|
|
|
171 |
// We're using entered latlng coordinates directly
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
this.showMap(element, results[0].geometry.location, options);
|
180 |
-
}
|
181 |
-
else if (status == google.maps.GeocoderStatus.ZERO_RESULTS) {
|
182 |
-
$$.append('<div><p><strong>There were no results for the place you entered. Please try another.</strong></p></div>');
|
183 |
-
}
|
184 |
-
}.bind(this));
|
185 |
}
|
186 |
-
|
187 |
-
|
188 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
};
|
190 |
};
|
191 |
|
|
|
192 |
function soGoogleMapInitialize() {
|
193 |
-
new SiteOriginGoogleMap(window.jQuery).
|
194 |
}
|
195 |
|
196 |
jQuery(function ($) {
|
197 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
soGoogleMapInitialize();
|
199 |
} else {
|
200 |
-
var mapOptions = $('.sow-google-map-canvas').data('options');
|
201 |
-
|
202 |
var apiUrl = 'https://maps.googleapis.com/maps/api/js?v=3.exp&callback=soGoogleMapInitialize';
|
203 |
-
if(mapOptions
|
204 |
-
|
|
|
|
|
|
|
|
|
|
|
205 |
}
|
206 |
var script = $('<script type="text/javascript" src="' + apiUrl + '">');
|
207 |
$('body').append(script);
|
1 |
+
var sowb = window.sowb || {};
|
|
|
|
|
2 |
|
3 |
+
sowb.SiteOriginGoogleMap = function($) {
|
4 |
return {
|
5 |
+
// So that we can always display something, even if no location or address was entered.
|
6 |
+
DEFAULT_LOCATIONS: [
|
7 |
+
'Addo Elephant National Park, R335, Addo',
|
8 |
+
'Cape Town, Western Cape, South Africa',
|
9 |
+
'San Francisco Bay Area, CA, United States',
|
10 |
+
'New York, NY, United States',
|
11 |
+
],
|
12 |
showMap: function(element, location, options) {
|
13 |
+
|
14 |
var zoom = Number(options.zoom);
|
15 |
+
|
16 |
if ( !zoom ) zoom = 14;
|
17 |
|
18 |
var userMapTypeId = 'user_map_style';
|
22 |
scrollwheel: options.scrollZoom,
|
23 |
draggable: options.draggable,
|
24 |
disableDefaultUI: options.disableUi,
|
25 |
+
zoomControl: options.zoomControl,
|
26 |
+
panControl: options.panControl,
|
27 |
center: location,
|
28 |
mapTypeControlOptions: {
|
29 |
mapTypeIds: [google.maps.MapTypeId.ROADMAP, userMapTypeId]
|
46 |
}
|
47 |
|
48 |
if (options.markerAtCenter) {
|
49 |
+
this.centerMarker = new google.maps.Marker({
|
50 |
position: location,
|
51 |
map: map,
|
52 |
draggable: options.markersDraggable,
|
64 |
map.setCenter(center);
|
65 |
});
|
66 |
}
|
67 |
+
|
68 |
+
this.linkAutocompleteField(options.autocomplete, options.autocompleteElement, map, options);
|
69 |
this.showMarkers(options.markerPositions, map, options);
|
70 |
this.showDirections(options.directions, map, options);
|
71 |
},
|
72 |
+
|
73 |
+
linkAutocompleteField: function (autocomplete, autocompleteElement, map, options) {
|
74 |
+
if( autocomplete && autocompleteElement ) {
|
75 |
+
|
76 |
+
var updateMapLocation = function ( address ) {
|
77 |
+
if ( this.inputAddress != address ) {
|
78 |
+
this.inputAddress = address;
|
79 |
+
this.getLocation( this.inputAddress ).done(
|
80 |
+
function ( location ) {
|
81 |
+
map.setZoom( 15 );
|
82 |
+
map.setCenter( location );
|
83 |
+
if( this.centerMarker ) {
|
84 |
+
this.centerMarker.setPosition( location );
|
85 |
+
this.centerMarker.setTitle( this.inputAddress );
|
86 |
+
}
|
87 |
+
}.bind( this )
|
88 |
+
);
|
89 |
+
}
|
90 |
+
}.bind( this );
|
91 |
+
|
92 |
+
var $autocompleteElement = $( autocompleteElement );
|
93 |
+
autocomplete.addListener( 'place_changed', function () {
|
94 |
+
var place = autocomplete.getPlace();
|
95 |
+
map.setZoom( 15 );
|
96 |
+
if ( place.geometry ) {
|
97 |
+
map.setCenter( place.geometry.location );
|
98 |
+
if( this.centerMarker ) {
|
99 |
+
this.centerMarker.setPosition(place.geometry.location);
|
100 |
+
}
|
101 |
+
}
|
102 |
+
}.bind( this ) );
|
103 |
+
|
104 |
+
google.maps.event.addDomListener( autocompleteElement, 'keypress', function ( event ) {
|
105 |
+
var key = event.keyCode || event.which;
|
106 |
+
if ( key == '13' ) {
|
107 |
+
event.preventDefault();
|
108 |
+
}
|
109 |
+
} );
|
110 |
+
|
111 |
+
$autocompleteElement.focusin( function () {
|
112 |
+
if ( !this.resultsObserver ) {
|
113 |
+
var autocompleteResultsContainer = document.querySelector( '.pac-container' );
|
114 |
+
this.resultsObserver = new MutationObserver( function () {
|
115 |
+
var $topResult = $( $( '.pac-item' ).get( 0 ) );
|
116 |
+
var queryPartA = $topResult.find( '.pac-item-query' ).text();
|
117 |
+
var queryPartB = $topResult.find( 'span' ).not( '[class]' ).text();
|
118 |
+
var topQuery = queryPartA + ( queryPartB ? (', ' + queryPartB) : '' );
|
119 |
+
if ( topQuery ) {
|
120 |
+
updateMapLocation( topQuery );
|
121 |
+
}
|
122 |
+
} );
|
123 |
+
|
124 |
+
var config = { attributes: true, childList: true, characterData: true };
|
125 |
+
|
126 |
+
this.resultsObserver.observe( autocompleteResultsContainer, config );
|
127 |
+
}
|
128 |
+
}.bind( this ) );
|
129 |
+
|
130 |
+
var revGeocode = function ( latLng ) {
|
131 |
+
this.getGeocoder().geocode( { location: latLng }, function ( results, status ) {
|
132 |
+
if ( status == google.maps.GeocoderStatus.OK ) {
|
133 |
+
if ( results.length > 0 ) {
|
134 |
+
var addr = results[ 0 ].formatted_address;
|
135 |
+
$autocompleteElement.val( addr );
|
136 |
+
if( this.centerMarker ) {
|
137 |
+
this.centerMarker.setPosition(latLng);
|
138 |
+
this.centerMarker.setTitle(addr);
|
139 |
+
}
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}.bind( this ) );
|
143 |
+
}.bind( this );
|
144 |
+
|
145 |
+
map.addListener( 'click', function ( event ) {
|
146 |
+
revGeocode( event.latLng );
|
147 |
+
} );
|
148 |
+
|
149 |
+
this.centerMarker.addListener( 'dragend', function ( event ) {
|
150 |
+
revGeocode( event.latLng );
|
151 |
+
} );
|
152 |
+
}
|
153 |
+
},
|
154 |
+
|
155 |
showMarkers: function(markerPositions, map, options) {
|
156 |
if ( markerPositions && markerPositions.length ) {
|
157 |
var geocoder = new google.maps.Geocoder();
|
232 |
});
|
233 |
}
|
234 |
},
|
235 |
+
initMaps: function() {
|
236 |
+
// Init any autocomplete fields first.
|
237 |
+
var $autoCompleteFields = $( '.sow-google-map-autocomplete' );
|
238 |
+
var autoCompleteInit = new $.Deferred();
|
239 |
+
if( $autoCompleteFields.length == 0) {
|
240 |
+
autoCompleteInit.resolve();
|
241 |
+
} else {
|
242 |
+
$autoCompleteFields.each(function (index, element) {
|
243 |
+
var autocomplete = new google.maps.places.Autocomplete(
|
244 |
+
element,
|
245 |
+
{types: ['address']}
|
246 |
+
);
|
247 |
+
|
248 |
+
var $mapField = $(element).siblings('.sow-google-map-canvas');
|
249 |
+
|
250 |
+
if ($mapField.length > 0) {
|
251 |
+
var options = $mapField.data('options');
|
252 |
+
options.autocomplete = autocomplete;
|
253 |
+
options.autocompleteElement = element;
|
254 |
+
this.getLocation(options.address).done(
|
255 |
+
function (location) {
|
256 |
+
this.showMap($mapField.get(0), location, options);
|
257 |
+
$mapField.data('initialized', true);
|
258 |
+
autoCompleteInit.resolve();
|
259 |
+
}.bind(this)
|
260 |
+
).fail(function () {
|
261 |
+
$mapField.append('<div><p><strong>There were no results for the place you entered. Please try another.</strong></p></div>');
|
262 |
+
autoCompleteInit.reject();
|
263 |
+
});
|
264 |
}
|
265 |
+
}.bind(this));
|
266 |
+
}
|
267 |
+
|
268 |
+
autoCompleteInit.done(function(){
|
269 |
+
$('.sow-google-map-canvas').each(function (index, element) {
|
270 |
+
var $$ = $(element);
|
271 |
+
|
272 |
+
if( $$.data( 'initialized' ) ) {
|
273 |
+
// Already initialized so continue to next element.
|
274 |
+
return true;
|
275 |
+
}
|
276 |
+
|
277 |
+
var options = $$.data( 'options' );
|
278 |
+
var address = options.address;
|
279 |
+
// If no address was specified, but we have markers, use the first marker as the map center.
|
280 |
+
if(!address) {
|
281 |
+
var markers = options.markerPositions;
|
282 |
+
if(markers && markers.length) {
|
283 |
+
address = markers[0].place;
|
284 |
}
|
285 |
}
|
286 |
+
|
287 |
+
this.getLocation( address ).done(
|
288 |
+
function ( location ) {
|
289 |
+
this.showMap( $$.get( 0 ), location, options );
|
290 |
+
$$.data( 'initialized' );
|
291 |
+
}.bind( this )
|
292 |
+
).fail( function () {
|
293 |
+
$$.append( '<div><p><strong>There were no results for the place you entered. Please try another.</strong></p></div>' );
|
294 |
+
} );
|
295 |
+
|
296 |
+
}.bind(this));
|
297 |
+
}.bind(this));
|
298 |
+
},
|
299 |
+
getGeocoder: function () {
|
300 |
+
if ( !this._geocoder ) {
|
301 |
+
this._geocoder = new google.maps.Geocoder();
|
302 |
+
}
|
303 |
+
return this._geocoder;
|
304 |
+
},
|
305 |
+
getLocation: function ( inputLocation ) {
|
306 |
+
var locationPromise = new $.Deferred();
|
307 |
+
var location = { address: inputLocation };
|
308 |
+
//check if address is actually a valid latlng
|
309 |
+
var latLng;
|
310 |
+
if ( inputLocation && inputLocation.indexOf( ',' ) > -1 ) {
|
311 |
+
var vals = inputLocation.split( ',' );
|
312 |
+
// A latlng value should be of the format 'lat,lng'
|
313 |
+
if ( vals && vals.length == 2 ) {
|
314 |
+
latLng = new google.maps.LatLng( vals[ 0 ], vals[ 1 ] );
|
315 |
+
// Let the API decide if we have a valid latlng
|
316 |
+
// This should fail if the input is an address containing a comma
|
317 |
+
// e.g. 123 Sesame Street, Middleburg, FL, United States
|
318 |
+
if ( !(isNaN( latLng.lat() ) || isNaN( latLng.lng() )) ) {
|
319 |
+
location = { location: { lat: latLng.lat(), lng: latLng.lng() } };
|
320 |
+
}
|
321 |
}
|
322 |
+
}
|
323 |
+
|
324 |
+
if ( location.hasOwnProperty( 'location' ) ) {
|
325 |
// We're using entered latlng coordinates directly
|
326 |
+
locationPromise.resolve( location.location );
|
327 |
+
} else if ( location.hasOwnProperty( 'address' ) ) {
|
328 |
+
|
329 |
+
// Either user entered an address, or fall back to defaults and use the geocoder.
|
330 |
+
if ( !location.address ) {
|
331 |
+
var rndIndx = parseInt( Math.random() * this.DEFAULT_LOCATIONS.length );
|
332 |
+
location.address = this.DEFAULT_LOCATIONS[ rndIndx ];
|
|
|
|
|
|
|
|
|
|
|
|
|
333 |
}
|
334 |
+
this.getGeocoder().geocode( location, function ( results, status ) {
|
335 |
+
if ( status == google.maps.GeocoderStatus.OK ) {
|
336 |
+
locationPromise.resolve( results[ 0 ].geometry.location );
|
337 |
+
}
|
338 |
+
else if ( status == google.maps.GeocoderStatus.ZERO_RESULTS ) {
|
339 |
+
locationPromise.reject( status );
|
340 |
+
}
|
341 |
+
} );
|
342 |
+
}
|
343 |
+
return locationPromise;
|
344 |
+
},
|
345 |
};
|
346 |
};
|
347 |
|
348 |
+
// Called by Google Maps API when it has loaded.
|
349 |
function soGoogleMapInitialize() {
|
350 |
+
new sowb.SiteOriginGoogleMap(window.jQuery).initMaps();
|
351 |
}
|
352 |
|
353 |
jQuery(function ($) {
|
354 |
+
var mapOptions = $( '.sow-google-map-canvas' ).data( 'options' );
|
355 |
+
var mapsApiLoaded = typeof window.google !== 'undefined' && window.google.maps !== 'undefined';
|
356 |
+
var isLoaded = function (element) {
|
357 |
+
var lib = window.google.maps[element];
|
358 |
+
return window.google.maps.hasOwnProperty(element) && typeof lib !== 'undefined' && lib !== null;
|
359 |
+
};
|
360 |
+
var hasLibraries = typeof mapOptions.libraries !== 'undefined' && mapOptions.libraries !== null;
|
361 |
+
if(hasLibraries) {
|
362 |
+
mapsApiLoaded = mapsApiLoaded && mapOptions.libraries.every(isLoaded);
|
363 |
+
}
|
364 |
+
|
365 |
+
if (mapsApiLoaded) {
|
366 |
soGoogleMapInitialize();
|
367 |
} else {
|
|
|
|
|
368 |
var apiUrl = 'https://maps.googleapis.com/maps/api/js?v=3.exp&callback=soGoogleMapInitialize';
|
369 |
+
if(mapOptions) {
|
370 |
+
if( hasLibraries ) {
|
371 |
+
apiUrl += '&libraries=' + mapOptions.libraries.join(',');
|
372 |
+
}
|
373 |
+
if( mapOptions.apiKey ) {
|
374 |
+
apiUrl += '&key=' + mapOptions.apiKey;
|
375 |
+
}
|
376 |
}
|
377 |
var script = $('<script type="text/javascript" src="' + apiUrl + '">');
|
378 |
$('body').append(script);
|
widgets/google-map/js/js-map.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
function soGoogleMapInitialize(){new SiteOriginGoogleMap(window.jQuery).
|
1 |
+
function soGoogleMapInitialize(){new sowb.SiteOriginGoogleMap(window.jQuery).initMaps()}var sowb=window.sowb||{};sowb.SiteOriginGoogleMap=function(e){return{DEFAULT_LOCATIONS:["Addo Elephant National Park, R335, Addo","Cape Town, Western Cape, South Africa","San Francisco Bay Area, CA, United States","New York, NY, United States"],showMap:function(e,o,t){var i=Number(t.zoom);i||(i=14);var n="user_map_style",a={zoom:i,scrollwheel:t.scrollZoom,draggable:t.draggable,disableDefaultUI:t.disableUi,zoomControl:t.zoomControl,panControl:t.panControl,center:o,mapTypeControlOptions:{mapTypeIds:[google.maps.MapTypeId.ROADMAP,n]}},r=new google.maps.Map(e,a),s={name:t.mapName},l=t.mapStyles;if(l){var d=new google.maps.StyledMapType(l,s);r.mapTypes.set(n,d),r.setMapTypeId(n)}if(t.markerAtCenter&&(this.centerMarker=new google.maps.Marker({position:o,map:r,draggable:t.markersDraggable,icon:t.markerIcon,title:""})),t.keepCentered){var p;google.maps.event.addDomListener(r,"idle",function(){p=r.getCenter()}),google.maps.event.addDomListener(window,"resize",function(){r.setCenter(p)})}this.linkAutocompleteField(t.autocomplete,t.autocompleteElement,r,t),this.showMarkers(t.markerPositions,r,t),this.showDirections(t.directions,r,t)},linkAutocompleteField:function(o,t,i,n){if(o&&t){var a=function(e){this.inputAddress!=e&&(this.inputAddress=e,this.getLocation(this.inputAddress).done(function(e){i.setZoom(15),i.setCenter(e),this.centerMarker&&(this.centerMarker.setPosition(e),this.centerMarker.setTitle(this.inputAddress))}.bind(this)))}.bind(this),r=e(t);o.addListener("place_changed",function(){var e=o.getPlace();i.setZoom(15),e.geometry&&(i.setCenter(e.geometry.location),this.centerMarker&&this.centerMarker.setPosition(e.geometry.location))}.bind(this)),google.maps.event.addDomListener(t,"keypress",function(e){var o=e.keyCode||e.which;"13"==o&&e.preventDefault()}),r.focusin(function(){if(!this.resultsObserver){var o=document.querySelector(".pac-container");this.resultsObserver=new MutationObserver(function(){var o=e(e(".pac-item").get(0)),t=o.find(".pac-item-query").text(),i=o.find("span").not("[class]").text(),n=t+(i?", "+i:"");n&&a(n)});var t={attributes:!0,childList:!0,characterData:!0};this.resultsObserver.observe(o,t)}}.bind(this));var s=function(e){this.getGeocoder().geocode({location:e},function(o,t){if(t==google.maps.GeocoderStatus.OK&&o.length>0){var i=o[0].formatted_address;r.val(i),this.centerMarker&&(this.centerMarker.setPosition(e),this.centerMarker.setTitle(i))}}.bind(this))}.bind(this);i.addListener("click",function(e){s(e.latLng)}),this.centerMarker.addListener("dragend",function(e){s(e.latLng)})}},showMarkers:function(e,o,t){if(e&&e.length){var i=new google.maps.Geocoder;e.forEach(function(e){var n=function(){i.geocode({address:e.place},function(i,a){if(a==google.maps.GeocoderStatus.OK){var r=new google.maps.Marker({position:i[0].geometry.location,map:o,draggable:t.markersDraggable,icon:t.markerIcon,title:""});if(e.hasOwnProperty("info")&&e.info){var s={content:e.info};e.hasOwnProperty("info_max_width")&&e.info_max_width&&(s.maxWidth=e.info_max_width);var l=t.markerInfoDisplay;s.disableAutoPan="always"==l;var d=new google.maps.InfoWindow(s);"always"==l?(d.open(o,r),r.addListener("click",function(){d.open(o,r)})):r.addListener(l,function(){d.open(o,r)})}}else a==google.maps.GeocoderStatus.OVER_QUERY_LIMIT&&setTimeout(n,1e3*Math.random(),e)})};setTimeout(n,1e3*Math.random(),e)})}},showDirections:function(e,o){if(e){e.waypoints&&e.waypoints.length&&e.waypoints.map(function(e){e.stopover=Boolean(e.stopover)});var t=new google.maps.DirectionsRenderer;t.setMap(o);var i=new google.maps.DirectionsService;i.route({origin:e.origin,destination:e.destination,travelMode:e.travelMode.toUpperCase(),avoidHighways:e.avoidHighways,avoidTolls:e.avoidTolls,waypoints:e.waypoints,optimizeWaypoints:e.optimizeWaypoints},function(e,o){o==google.maps.DirectionsStatus.OK&&t.setDirections(e)})}},initMaps:function(){var o=e(".sow-google-map-autocomplete"),t=new e.Deferred;0==o.length?t.resolve():o.each(function(o,i){var n=new google.maps.places.Autocomplete(i,{types:["address"]}),a=e(i).siblings(".sow-google-map-canvas");if(a.length>0){var r=a.data("options");r.autocomplete=n,r.autocompleteElement=i,this.getLocation(r.address).done(function(e){this.showMap(a.get(0),e,r),a.data("initialized",!0),t.resolve()}.bind(this)).fail(function(){a.append("<div><p><strong>There were no results for the place you entered. Please try another.</strong></p></div>"),t.reject()})}}.bind(this)),t.done(function(){e(".sow-google-map-canvas").each(function(o,t){var i=e(t);if(i.data("initialized"))return!0;var n=i.data("options"),a=n.address;if(!a){var r=n.markerPositions;r&&r.length&&(a=r[0].place)}this.getLocation(a).done(function(e){this.showMap(i.get(0),e,n),i.data("initialized")}.bind(this)).fail(function(){i.append("<div><p><strong>There were no results for the place you entered. Please try another.</strong></p></div>")})}.bind(this))}.bind(this))},getGeocoder:function(){return this._geocoder||(this._geocoder=new google.maps.Geocoder),this._geocoder},getLocation:function(o){var t,i=new e.Deferred,n={address:o};if(o&&o.indexOf(",")>-1){var a=o.split(",");a&&2==a.length&&(t=new google.maps.LatLng(a[0],a[1]),isNaN(t.lat())||isNaN(t.lng())||(n={location:{lat:t.lat(),lng:t.lng()}}))}if(n.hasOwnProperty("location"))i.resolve(n.location);else if(n.hasOwnProperty("address")){if(!n.address){var r=parseInt(Math.random()*this.DEFAULT_LOCATIONS.length);n.address=this.DEFAULT_LOCATIONS[r]}this.getGeocoder().geocode(n,function(e,o){o==google.maps.GeocoderStatus.OK?i.resolve(e[0].geometry.location):o==google.maps.GeocoderStatus.ZERO_RESULTS&&i.reject(o)})}return i}}},jQuery(function(e){var o=e(".sow-google-map-canvas").data("options"),t="undefined"!=typeof window.google&&"undefined"!==window.google.maps,i=function(e){var o=window.google.maps[e];return window.google.maps.hasOwnProperty(e)&&"undefined"!=typeof o&&null!==o},n="undefined"!=typeof o.libraries&&null!==o.libraries;if(n&&(t=t&&o.libraries.every(i)),t)soGoogleMapInitialize();else{var a="https://maps.googleapis.com/maps/api/js?v=3.exp&callback=soGoogleMapInitialize";o&&(n&&(a+="&libraries="+o.libraries.join(",")),o.apiKey&&(a+="&key="+o.apiKey));var r=e('<script type="text/javascript" src="'+a+'">');e("body").append(r)}});
|
widgets/headline/headline.php
CHANGED
@@ -27,7 +27,7 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
|
|
27 |
add_filter( 'siteorigin_widgets_wrapper_classes_' . $this->id_base, array( $this, 'wrapper_class_filter' ), 10, 2 );
|
28 |
}
|
29 |
|
30 |
-
function
|
31 |
return array(
|
32 |
'headline' => array(
|
33 |
'type' => 'section',
|
27 |
add_filter( 'siteorigin_widgets_wrapper_classes_' . $this->id_base, array( $this, 'wrapper_class_filter' ), 10, 2 );
|
28 |
}
|
29 |
|
30 |
+
function get_widget_form(){
|
31 |
return array(
|
32 |
'headline' => array(
|
33 |
'type' => 'section',
|
widgets/hero/hero.php
CHANGED
@@ -39,7 +39,7 @@ class SiteOrigin_Widget_Hero_Widget extends SiteOrigin_Widget_Base_Slider {
|
|
39 |
parent::initialize();
|
40 |
}
|
41 |
|
42 |
-
function
|
43 |
return array(
|
44 |
'frames' => array(
|
45 |
'type' => 'repeater',
|
39 |
parent::initialize();
|
40 |
}
|
41 |
|
42 |
+
function get_widget_form(){
|
43 |
return array(
|
44 |
'frames' => array(
|
45 |
'type' => 'repeater',
|
widgets/icon/icon.php
CHANGED
@@ -23,7 +23,7 @@ class SiteOrigin_Widget_Icon_Widget extends SiteOrigin_Widget {
|
|
23 |
);
|
24 |
}
|
25 |
|
26 |
-
function
|
27 |
return array(
|
28 |
'icon' => array(
|
29 |
'type' => 'icon',
|
23 |
);
|
24 |
}
|
25 |
|
26 |
+
function get_widget_form() {
|
27 |
return array(
|
28 |
'icon' => array(
|
29 |
'type' => 'icon',
|
widgets/image-grid/image-grid.php
CHANGED
@@ -42,7 +42,7 @@ class SiteOrigin_Widgets_ImageGrid_Widget extends SiteOrigin_Widget {
|
|
42 |
) );
|
43 |
}
|
44 |
|
45 |
-
function
|
46 |
|
47 |
return array(
|
48 |
|
42 |
) );
|
43 |
}
|
44 |
|
45 |
+
function get_widget_form(){
|
46 |
|
47 |
return array(
|
48 |
|
widgets/image/image.php
CHANGED
@@ -23,7 +23,7 @@ class SiteOrigin_Widget_Image_Widget extends SiteOrigin_Widget {
|
|
23 |
);
|
24 |
}
|
25 |
|
26 |
-
function
|
27 |
|
28 |
return array(
|
29 |
'image' => array(
|
23 |
);
|
24 |
}
|
25 |
|
26 |
+
function get_widget_form() {
|
27 |
|
28 |
return array(
|
29 |
'image' => array(
|
widgets/layout-slider/layout-slider.php
CHANGED
@@ -27,7 +27,7 @@ class SiteOrigin_Widget_LayoutSlider_Widget extends SiteOrigin_Widget_Base_Slide
|
|
27 |
);
|
28 |
}
|
29 |
|
30 |
-
function
|
31 |
return array(
|
32 |
'frames' => array(
|
33 |
'type' => 'repeater',
|
27 |
);
|
28 |
}
|
29 |
|
30 |
+
function get_widget_form(){
|
31 |
return array(
|
32 |
'frames' => array(
|
33 |
'type' => 'repeater',
|
widgets/post-carousel/post-carousel.php
CHANGED
@@ -84,7 +84,7 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget {
|
|
84 |
);
|
85 |
}
|
86 |
|
87 |
-
function
|
88 |
return array(
|
89 |
'title' => array(
|
90 |
'type' => 'text',
|
84 |
);
|
85 |
}
|
86 |
|
87 |
+
function get_widget_form(){
|
88 |
return array(
|
89 |
'title' => array(
|
90 |
'type' => 'text',
|
widgets/price-table/price-table.php
CHANGED
@@ -35,7 +35,7 @@ class SiteOrigin_Widget_PriceTable_Widget extends SiteOrigin_Widget {
|
|
35 |
);
|
36 |
}
|
37 |
|
38 |
-
function
|
39 |
return array(
|
40 |
'title' => array(
|
41 |
'type' => 'text',
|
35 |
);
|
36 |
}
|
37 |
|
38 |
+
function get_widget_form(){
|
39 |
return array(
|
40 |
'title' => array(
|
41 |
'type' => 'text',
|
widgets/simple-masonry/simple-masonry.php
CHANGED
@@ -48,7 +48,7 @@ class SiteOrigin_Widget_Simple_Masonry_Widget extends SiteOrigin_Widget {
|
|
48 |
);
|
49 |
}
|
50 |
|
51 |
-
function
|
52 |
return array(
|
53 |
'widget_title' => array(
|
54 |
'type' => 'text',
|
48 |
);
|
49 |
}
|
50 |
|
51 |
+
function get_widget_form(){
|
52 |
return array(
|
53 |
'widget_title' => array(
|
54 |
'type' => 'text',
|
widgets/slider/slider.php
CHANGED
@@ -26,7 +26,7 @@ class SiteOrigin_Widget_Slider_Widget extends SiteOrigin_Widget_Base_Slider {
|
|
26 |
);
|
27 |
}
|
28 |
|
29 |
-
function
|
30 |
return array(
|
31 |
'frames' => array(
|
32 |
'type' => 'repeater',
|
26 |
);
|
27 |
}
|
28 |
|
29 |
+
function get_widget_form(){
|
30 |
return array(
|
31 |
'frames' => array(
|
32 |
'type' => 'repeater',
|
widgets/social-media-buttons/data/networks.php
CHANGED
@@ -239,7 +239,7 @@ return array(
|
|
239 |
'button_color' => '#5BC8FF'
|
240 |
),
|
241 |
'wordpress' => array(
|
242 |
-
'label' => __( '
|
243 |
'base_url' => 'https://wordpress.org/',
|
244 |
'icon_color' => '#797979',
|
245 |
'button_color' => '#222222'
|
239 |
'button_color' => '#5BC8FF'
|
240 |
),
|
241 |
'wordpress' => array(
|
242 |
+
'label' => __( 'WordPress', 'so-widgets-bundle' ),
|
243 |
'base_url' => 'https://wordpress.org/',
|
244 |
'icon_color' => '#797979',
|
245 |
'button_color' => '#222222'
|
widgets/social-media-buttons/social-media-buttons.php
CHANGED
@@ -25,7 +25,7 @@ class SiteOrigin_Widget_SocialMediaButtons_Widget extends SiteOrigin_Widget {
|
|
25 |
);
|
26 |
}
|
27 |
|
28 |
-
function
|
29 |
|
30 |
if( empty( $this->networks ) ) {
|
31 |
$this->networks = include plugin_dir_path( __FILE__ ) . 'data/networks.php';
|
25 |
);
|
26 |
}
|
27 |
|
28 |
+
function get_widget_form(){
|
29 |
|
30 |
if( empty( $this->networks ) ) {
|
31 |
$this->networks = include plugin_dir_path( __FILE__ ) . 'data/networks.php';
|
widgets/taxonomy/taxonomy.php
CHANGED
@@ -23,7 +23,7 @@ class SiteOrigin_Widget_Taxonomy_Widget extends SiteOrigin_Widget {
|
|
23 |
);
|
24 |
}
|
25 |
|
26 |
-
function
|
27 |
// Gets taxonomy objects and extracts the 'label' field from each one.
|
28 |
$taxonomies = wp_list_pluck( get_taxonomies( array(), 'objects' ), 'label' );
|
29 |
|
23 |
);
|
24 |
}
|
25 |
|
26 |
+
function get_widget_form() {
|
27 |
// Gets taxonomy objects and extracts the 'label' field from each one.
|
28 |
$taxonomies = wp_list_pluck( get_taxonomies( array(), 'objects' ), 'label' );
|
29 |
|
widgets/testimonial/testimonial.php
CHANGED
@@ -33,7 +33,7 @@ class SiteOrigin_Widgets_Testimonials_Widget extends SiteOrigin_Widget {
|
|
33 |
) );
|
34 |
}
|
35 |
|
36 |
-
function
|
37 |
return array(
|
38 |
'title' => array(
|
39 |
'type' => 'text',
|
33 |
) );
|
34 |
}
|
35 |
|
36 |
+
function get_widget_form(){
|
37 |
return array(
|
38 |
'title' => array(
|
39 |
'type' => 'text',
|
widgets/video/video.php
CHANGED
@@ -25,7 +25,7 @@ class SiteOrigin_Widget_Video_Widget extends SiteOrigin_Widget {
|
|
25 |
);
|
26 |
}
|
27 |
|
28 |
-
function
|
29 |
return array(
|
30 |
'title' => array(
|
31 |
'type' => 'text',
|
25 |
);
|
26 |
}
|
27 |
|
28 |
+
function get_widget_form() {
|
29 |
return array(
|
30 |
'title' => array(
|
31 |
'type' => 'text',
|