PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.9
GiveWP – Donation Plugin and Fundraising Platform v4.16.9
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 2.30.0 All 255 releases
← All changes | includes/admin/shortcodes/admin-shortcodes.js +197 -167 2.3.04.16.9 View file →
@@ -4,9 +4,9 @@
4 4 * @description: The Give Admin Shortcode scripts. Only enqueued on the admin widgets screen; used to show shortcode dialogs, show/hide, and other functions
5 5 * @package: Give
6 6 * @subpackage: Assets/JS
7 7 * @author: Paul Ryley
8 - * @copyright: Copyright (c) 2016, WordImpress
8 + * @copyright: Copyright (c) 2016, GiveWP
9 9 * @license: http://opensource.org/licenses/gpl-2.0.php GNU Public License
10 10 * @since: 1.3.0
11 11 */
12 12
@@ -11,218 +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() {
144 - // Conditional fields.
145 - render_continue_button_title_field();
169 + editor.windowManager.open( popup );
146 170 }
147 - };
171 + );
172 + },
148 173
149 - // Change the buttons if server-side validation failed
150 - if ( response.ok.constructor === Array ) {
151 - popup.buttons[0].text = response.ok[0];
152 - popup.buttons[0].onclick = 'close';
153 - delete popup.buttons[1];
174 + destroy: function() {
175 + const tmp = $( '#scTemp' );
176 +
177 + if ( tmp.length ) {
178 + tinymce.get( 'scTemp' ).remove();
179 + tmp.remove();
154 180 }
181 + },
182 + };
155 183
156 - editor.windowManager.open( popup );
157 - });
158 - },
184 + const scOpen = function() {
185 + scButton.addClass( 'active' ).parent().find( '.sc-menu' ).show();
186 + };
159 187
160 - destroy: function() {
161 - var tmp = $( '#scTemp' );
188 + const scClose = function() {
189 + if ( typeof scButton !== 'undefined' ) {
190 + scButton.removeClass( 'active' ).parent().find( '.sc-menu' ).hide();
191 + }
192 + };
162 193
163 - if ( tmp.length ) {
164 - tinymce.get( 'scTemp' ).remove();
165 - tmp.remove();
194 + doc.on(
195 + 'click',
196 + function( e ) {
197 + if ( ! $( e.target ).closest( '.sc-wrap' ).length ) {
198 + scClose();
199 + }
166 200 }
167 - }
168 - };
201 + );
169 202
170 - var scOpen = function() {
171 - scButton.addClass( 'active' ).parent().find( '.sc-menu' ).show();
172 - };
203 + doc.on(
204 + 'click',
205 + '.sc-button',
206 + function( e ) {
207 + e.preventDefault();
173 208
174 - var scClose = function() {
175 - if ( typeof scButton !== 'undefined' ) {
176 - scButton.removeClass( 'active' ).parent().find( '.sc-menu' ).hide();
177 - }
178 - };
209 + scButton = $( this );
179 210
180 - doc.on( 'click', function( e ) {
181 - if ( ! $( e.target ).closest( '.sc-wrap' ).length ) {
182 - scClose();
183 - }
184 - });
211 + if ( scButton.hasClass( 'active' ) ) {
212 + scClose();
213 + } else {
214 + scOpen();
215 + }
216 + }
217 + );
185 218
186 - doc.on( 'click', '.sc-button', function( e ) {
187 - e.preventDefault();
219 + doc.on(
220 + 'click',
221 + '.sc-shortcode',
222 + function( e ) {
223 + e.preventDefault();
188 224
189 - scButton = $( this );
225 + // scShortcode is used by scForm to trigger the correct popup
226 + scShortcode = $( this ).attr( 'data-shortcode' );
190 227
191 - if ( scButton.hasClass( 'active' ) ) {
192 - scClose();
193 - } else {
194 - scOpen();
195 - }
196 - });
228 + if ( scShortcode ) {
229 + if ( ! tinymce.get( window.wpActiveEditor ) ) {
230 + if ( ! $( '#scTemp' ).length ) {
231 + $( 'body' ).append( '<textarea id="scTemp" style="display: none;" />' );
197 232
198 - doc.on( 'click', '.sc-shortcode', function( e ) {
199 - e.preventDefault();
233 + tinymce.init(
234 + {
235 + mode: 'exact',
236 + elements: 'scTemp',
237 + plugins: [ 'give_shortcode', 'wplink' ],
238 + }
239 + );
240 + }
200 241
201 - // scShortcode is used by scForm to trigger the correct popup
202 - scShortcode = $( this ).attr( 'data-shortcode' );
242 + setTimeout( function() {
243 + tinymce.execCommand( 'Give_Shortcode' );
244 + }, 200 );
245 + } else {
246 + tinymce.execCommand( 'Give_Shortcode' );
247 + }
203 248
204 - if ( scShortcode ) {
205 - if ( ! tinymce.get( window.wpActiveEditor ) ) {
206 -
207 - if ( ! $( '#scTemp' ).length ) {
208 -
209 - $( 'body' ).append( '<textarea id="scTemp" style="display: none;" />' );
210 -
211 - tinymce.init({
212 - mode : "exact",
213 - elements : "scTemp",
214 - plugins : ['give_shortcode', 'wplink']
215 - });
249 + setTimeout( function() {
250 + scClose();
251 + }, 100 );
252 + } else {
253 + console.warn( 'That is not a valid shortcode link.' );
216 254 }
217 -
218 - setTimeout( function() { tinymce.execCommand( 'Give_Shortcode' ); }, 200 );
219 - } else {
220 - tinymce.execCommand( 'Give_Shortcode' );
221 255 }
222 -
223 - setTimeout( function() { scClose(); }, 100 );
224 - } else {
225 - console.warn( 'That is not a valid shortcode link.' );
226 - }
227 - });
228 -});
256 + );
257 + }
258 +);