PluginProbe
Orderable – Restaurant & Food Ordering System / 1.10.0
Orderable – Restaurant & Food Ordering System v1.10.0
0.1.4 0.1.5 0.2.0 1.0.0 1.1.0 1.1.1 1.10.0 1.10.1 1.11.0 1.12.0 1.12.1 1.12.2 1.13.0 1.14.0 1.15.0 1.16.0 1.17.0 1.17.1 1.18.0 1.19.0 1.19.1 1.19.2 1.2.0 1.20.0 1.20.1 All 44 releases
orderable / inc / modules / layouts / assets / admin / js / main.js

main.js in Orderable – Restaurant & Food Ordering System 1.10.0, at inc/modules/layouts/assets/admin/js/main.js

112 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function( $, document ) {
2 "use strict";
3
4 var orderable_layouts = {
5 /**
6 * On doc ready.
7 */
8 on_ready: function() {
9 orderable_layouts.builder.init();
10 },
11
12 /**
13 * Helper functions.
14 */
15 helpers: {
16 /**
17 * Get field type.
18 */
19 get_field_type: function( $field ) {
20 var tag = $field.get( 0 ).tagName;
21
22 if ( 'SELECT' === tag ) {
23 return 'select';
24 } else {
25 return $field.attr( 'type' );
26 }
27 },
28
29 /**
30 * Strip "orderable_" prefix.
31 *
32 * @param string
33 * @return {*}
34 */
35 strip_prefix: function( string ) {
36 return string.replace( 'orderable_', '' );
37 }
38 },
39
40 /**
41 * Builder.
42 */
43 builder: {
44 /**
45 * Init builder.
46 */
47 init: function() {
48 orderable_layouts.builder.watch();
49 },
50
51 /**
52 * Watch builder fields.
53 */
54 watch: function() {
55 $( document.body ).on( 'change', '#orderable-layout-settings-metabox input, #orderable-layout-settings-metabox select', function() {
56 var $parent = $( this ).closest( '#orderable-layout-settings-metabox' ),
57 data = {},
58 reload_preview = true;
59
60 $parent.find( '.form-field > input, .form-field > select:enabled' ).each( function( index, field ) {
61 var $field = $( field ),
62 type = orderable_layouts.helpers.get_field_type( $field ),
63 value = '';
64
65 if ( 'checkbox' === type ) {
66 value = $( this ).is( ':checked' );
67 } else if ( 'select' === type && 'multiple' === $field.attr( 'multiple' ) ) {
68 value = $field.val();
69 } else {
70 value = $field.val();
71 }
72
73 // Has a "pro_" prefix.
74 if ( typeof value === 'string' && 0 === value.indexOf( 'pro_') ) {
75 reload_preview = false;
76
77 $( document.body ).trigger( 'orderable-pro-modal' );
78 }
79
80 data[ orderable_layouts.helpers.strip_prefix( this.name.replace( '[]', '' ) ) ] = value;
81 } );
82
83 if ( reload_preview ) {
84 orderable_layouts.builder.reload_preview( data );
85 }
86 } );
87 },
88
89 /**
90 * Reload preview.
91 *
92 * @param preview_data
93 */
94 reload_preview: function( preview_data ) {
95 var data = {
96 'action': 'orderable_preview',
97 'data': preview_data
98 };
99
100 $.post( ajaxurl, data, function( response ) {
101 if ( !response.success ) {
102 return;
103 }
104
105 $( '#orderable-layout-preview-metabox .orderable-main-wrap' ).html( response.data.shortcode );
106 } );
107 }
108 }
109 };
110
111 $( document ).ready( orderable_layouts.on_ready );
112 }( jQuery, document ));