PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.17.0
GiveWP – Donation Plugin and Fundraising Platform v4.17.0
4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 All 256 releases
← All changes | includes/admin/shortcodes/admin-shortcodes.js +196 -175 2.3.14.17.0 View file →
@@ -11,227 +11,248 @@
11 11 */
12 12
13 13 /* global Give, ajaxurl, jQuery, scShortcodes, tinymce */
14 14
15 -var scShortcode, scButton;
15 +let scShortcode, scButton;
16 16
17 +jQuery(
18 + function( $ ) {
19 + const doc = $( this );
17 20
18 -jQuery( function( $ ) {
21 + /**
22 + * Show continue button title setting field only if display style is not All Fields.
23 + */
24 + window.render_continue_button_title_field = function() {
25 + const selected_display_style = $( '.mce-txt', '.mce-give-display-style' ).text(),
26 + expected_display_styles = [ '- Select -', 'All Fields' ];
19 27
20 - let doc = $( this );
21 -
22 - /**
23 - * Show continue button title setting field only if display style is not All Fields.
24 - */
25 - window.render_continue_button_title_field = function() {
26 - var selected_display_style = $('.mce-txt', '.mce-give-display-style').text(),
27 - expected_display_styles = [ '- Select -', 'All Fields' ];
28 -
29 - if( -1 !== $.inArray( selected_display_style, expected_display_styles ) ) {
30 - $('.mce-give-continue-button-title').closest('.mce-container' ).hide()
31 - } else {
32 - $('.mce-give-continue-button-title').closest('.mce-container' ).show()
33 - }
34 - };
35 -
36 - window.scForm = {
37 -
38 - open: function( editor_id ) {
39 - var editor = tinymce.get( editor_id );
40 -
41 - if ( ! editor ) {
42 - return;
28 + if ( -1 !== $.inArray( selected_display_style, expected_display_styles ) ) {
29 + $( '.mce-give-continue-button-title' ).closest( '.mce-container' ).hide();
30 + } else {
31 + $( '.mce-give-continue-button-title' ).closest( '.mce-container' ).show();
43 32 }
33 + };
44 34
45 - var data, field, required, valid, win;
35 + window.scForm = {
46 36
47 - data = {
48 - action : 'give_shortcode',
49 - shortcode : scShortcode
50 - };
37 + open: function( editor_id ) {
38 + const editor = tinymce.get( editor_id );
51 39
52 - $.post( ajaxurl, data, function( response ) {
53 -
54 - // what happens if response === false?
55 - if ( ! response.body ) {
56 - console.error( 'Bad AJAX response!' );
40 + if ( ! editor ) {
57 41 return;
58 42 }
59 43
60 - if ( response.body.length === 0 ) {
61 - window.send_to_editor( '[' + response.shortcode + ']' );
44 + let data, field, required, valid, win;
62 45
63 - scForm.destroy();
46 + data = {
47 + action: 'give_shortcode',
48 + shortcode: scShortcode,
49 + };
64 50
65 - return;
66 - }
51 + $.post(
52 + ajaxurl,
53 + data,
54 + function( response ) {
55 + // what happens if response === false?
56 + if ( ! response.body ) {
57 + console.error( 'Bad AJAX response!' );
58 + return;
59 + }
67 60
68 - /**
69 - * Render continue button title setting field on basis of display style value.
70 - */
71 - $.each( response.body, function( index, item ){
61 + if ( response.body.length === 0 ) {
62 + window.send_to_editor( '[' + response.shortcode + ']' );
72 63
73 - if( 'display_style' === item.name ) {
74 - response.body[index].onselect = function(){
75 - render_continue_button_title_field();
76 - };
77 - }
78 - });
64 + scForm.destroy();
79 65
80 - var popup = {
81 - title : response.title,
82 - body : response.body,
83 - classes: 'sc-popup',
84 - minWidth: 320,
85 - buttons : [ {
86 - text : response.ok,
87 - classes : 'primary sc-primary',
88 - onclick : function() {
89 - // Get the top most window object
90 - win = editor.windowManager.getWindows()[0];
66 + return;
67 + }
91 68
92 - // Get the shortcode required attributes
93 - required = scShortcodes[ scShortcode ];
69 + /**
70 + * Render continue button title setting field on basis of display style value.
71 + */
72 + $.each(
73 + response.body,
74 + function( index, item ) {
75 + if ( 'display_style' === item.name ) {
76 + response.body[ index ].onselect = function() {
77 + render_continue_button_title_field();
78 + };
79 + }
80 + }
81 + );
94 82
95 - valid = true;
83 + const popup = {
84 + title: response.title,
85 + body: response.body,
86 + classes: 'sc-popup',
87 + minWidth: 320,
88 + buttons: [ {
89 + text: response.ok,
90 + classes: 'primary sc-primary',
91 + onclick: function() {
92 + // Get the top most window object
93 + win = editor.windowManager.getWindows()[ 0 ];
96 94
97 - // Do some validation voodoo
98 - for ( var id in required ) {
99 - if ( required.hasOwnProperty( id ) ) {
95 + // Get the shortcode required attributes
96 + required = scShortcodes[ scShortcode ];
100 97
101 - field = win.find( '#' + id )[0];
98 + valid = true;
102 99
103 - if ( typeof field !== 'undefined' && field.state.data.value === '' ) {
100 + // Do some validation voodoo
101 + for ( const id in required ) {
102 + if ( required.hasOwnProperty( id ) ) {
103 + field = win.find( '#' + id )[ 0 ];
104 104
105 - valid = false;
105 + if ( typeof field !== 'undefined' && field.state.data.value === '' ) {
106 + valid = false;
106 107
107 - new Give.modal.GiveErrorAlert({
108 - modalContent:{
109 - desc: required[ id ],
110 - cancelBtnTitle: Give.fn.getGlobalVar('ok'),
108 + new Give.modal.GiveErrorAlert(
109 + {
110 + modalContent: {
111 + desc: required[ id ],
112 + cancelBtnTitle: Give.fn.getGlobalVar( 'ok' ),
113 + },
114 + }
115 + ).render();
116 +
117 + break;
111 118 }
112 - }).render();
119 + }
120 + }
113 121
114 - break;
122 + if ( valid ) {
123 + win.submit();
115 124 }
125 + },
126 + },
127 + {
128 + text: response.close,
129 + onclick: 'close',
130 + } ],
131 + onsubmit: function( e ) {
132 + let attributes = '';
133 +
134 + for ( const key in e.data ) {
135 + if ( e.data.hasOwnProperty( key ) && e.data[ key ] !== '' ) {
136 + attributes += ' ' + key + '="' + e.data[ key ] + '"';
137 + }
116 138 }
117 - }
118 139
119 - if ( valid ) {
120 - win.submit();
121 - }
122 - }
123 - },
124 - {
125 - text : response.close,
126 - onclick : 'close'
127 - }, ],
128 - onsubmit: function( e ) {
129 - var attributes = '';
140 + // Insert shortcode into the WP_Editor
141 + window.send_to_editor( '[' + response.shortcode + attributes + ']' );
142 + },
143 + onclose: function() {
144 + scForm.destroy();
145 + },
146 + onopen: function() {
147 + // Hacky way to remove scrollbars when not necessary.
148 + const popup = $( '.mce-sc-popup' );
149 + popup.css(
150 + {
151 + width: popup.width(),
152 + height: popup.height(),
153 + overflow: 'auto',
154 + }
155 + );
130 156
131 - for ( var key in e.data ) {
132 - if ( e.data.hasOwnProperty( key ) && e.data[ key ] !== '' ) {
133 - attributes += ' ' + key + '="' + e.data[ key ] + '"';
134 - }
157 + // Conditional fields.
158 + render_continue_button_title_field();
159 + },
160 + };
161 +
162 + // Change the buttons if server-side validation failed
163 + if ( response.ok.constructor === Array ) {
164 + popup.buttons[ 0 ].text = response.ok[ 0 ];
165 + popup.buttons[ 0 ].onclick = 'close';
166 + delete popup.buttons[ 1 ];
135 167 }
136 168
137 - // Insert shortcode into the WP_Editor
138 - window.send_to_editor( '[' + response.shortcode + attributes + ']' );
139 - },
140 - onclose: function() {
141 - scForm.destroy();
142 - },
143 - onopen: function() {
169 + editor.windowManager.open( popup );
170 + }
171 + );
172 + },
144 173
145 - // Hacky way to remove scrollbars when not necessary.
146 - let popup = $('.mce-sc-popup');
147 - popup.css({
148 - width: popup.width(),
149 - height: popup.height(),
150 - overflow: 'auto'
151 - });
174 + destroy: function() {
175 + const tmp = $( '#scTemp' );
152 176
153 - // Conditional fields.
154 - render_continue_button_title_field();
155 - }
156 - };
157 -
158 - // Change the buttons if server-side validation failed
159 - if ( response.ok.constructor === Array ) {
160 - popup.buttons[0].text = response.ok[0];
161 - popup.buttons[0].onclick = 'close';
162 - delete popup.buttons[1];
177 + if ( tmp.length ) {
178 + tinymce.get( 'scTemp' ).remove();
179 + tmp.remove();
163 180 }
181 + },
182 + };
164 183
165 - editor.windowManager.open( popup );
166 - });
167 - },
184 + const scOpen = function() {
185 + scButton.addClass( 'active' ).parent().find( '.sc-menu' ).show();
186 + };
168 187
169 - destroy: function() {
170 - var tmp = $( '#scTemp' );
188 + const scClose = function() {
189 + if ( typeof scButton !== 'undefined' ) {
190 + scButton.removeClass( 'active' ).parent().find( '.sc-menu' ).hide();
191 + }
192 + };
171 193
172 - if ( tmp.length ) {
173 - tinymce.get( 'scTemp' ).remove();
174 - tmp.remove();
194 + doc.on(
195 + 'click',
196 + function( e ) {
197 + if ( ! $( e.target ).closest( '.sc-wrap' ).length ) {
198 + scClose();
199 + }
175 200 }
176 - }
177 - };
201 + );
178 202
179 - var scOpen = function() {
180 - scButton.addClass( 'active' ).parent().find( '.sc-menu' ).show();
181 - };
203 + doc.on(
204 + 'click',
205 + '.sc-button',
206 + function( e ) {
207 + e.preventDefault();
182 208
183 - var scClose = function() {
184 - if ( typeof scButton !== 'undefined' ) {
185 - scButton.removeClass( 'active' ).parent().find( '.sc-menu' ).hide();
186 - }
187 - };
209 + scButton = $( this );
188 210
189 - doc.on( 'click', function( e ) {
190 - if ( ! $( e.target ).closest( '.sc-wrap' ).length ) {
191 - scClose();
192 - }
193 - });
211 + if ( scButton.hasClass( 'active' ) ) {
212 + scClose();
213 + } else {
214 + scOpen();
215 + }
216 + }
217 + );
194 218
195 - doc.on( 'click', '.sc-button', function( e ) {
196 - e.preventDefault();
219 + doc.on(
220 + 'click',
221 + '.sc-shortcode',
222 + function( e ) {
223 + e.preventDefault();
197 224
198 - scButton = $( this );
225 + // scShortcode is used by scForm to trigger the correct popup
226 + scShortcode = $( this ).attr( 'data-shortcode' );
199 227
200 - if ( scButton.hasClass( 'active' ) ) {
201 - scClose();
202 - } else {
203 - scOpen();
204 - }
205 - });
228 + if ( scShortcode ) {
229 + if ( ! tinymce.get( window.wpActiveEditor ) ) {
230 + if ( ! $( '#scTemp' ).length ) {
231 + $( 'body' ).append( '<textarea id="scTemp" style="display: none;" />' );
206 232
207 - doc.on( 'click', '.sc-shortcode', function( e ) {
208 - e.preventDefault();
233 + tinymce.init(
234 + {
235 + mode: 'exact',
236 + elements: 'scTemp',
237 + plugins: [ 'give_shortcode', 'wplink' ],
238 + }
239 + );
240 + }
209 241
210 - // scShortcode is used by scForm to trigger the correct popup
211 - scShortcode = $( this ).attr( 'data-shortcode' );
242 + setTimeout( function() {
243 + tinymce.execCommand( 'Give_Shortcode' );
244 + }, 200 );
245 + } else {
246 + tinymce.execCommand( 'Give_Shortcode' );
247 + }
212 248
213 - if ( scShortcode ) {
214 - if ( ! tinymce.get( window.wpActiveEditor ) ) {
215 -
216 - if ( ! $( '#scTemp' ).length ) {
217 -
218 - $( 'body' ).append( '<textarea id="scTemp" style="display: none;" />' );
219 -
220 - tinymce.init({
221 - mode : "exact",
222 - elements : "scTemp",
223 - plugins : ['give_shortcode', 'wplink']
224 - });
249 + setTimeout( function() {
250 + scClose();
251 + }, 100 );
252 + } else {
253 + console.warn( 'That is not a valid shortcode link.' );
225 254 }
226 -
227 - setTimeout( function() { tinymce.execCommand( 'Give_Shortcode' ); }, 200 );
228 - } else {
229 - tinymce.execCommand( 'Give_Shortcode' );
230 255 }
231 -
232 - setTimeout( function() { scClose(); }, 100 );
233 - } else {
234 - console.warn( 'That is not a valid shortcode link.' );
235 - }
236 - });
237 -});
256 + );
257 + }
258 +);