PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.22.2
GiveWP – Donation Plugin and Fundraising Platform v3.22.2
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 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / includes / admin / shortcodes / admin-shortcodes.js
give / includes / admin / shortcodes Last commit date
abstract-shortcode-generator.php 6 years ago admin-shortcodes.js 6 years ago class-shortcode-button.php 6 years ago mce-plugin.js 6 years ago shortcode-give-donation-grid.php 4 years ago shortcode-give-donation-history.php 6 years ago shortcode-give-donor-wall.php 4 years ago shortcode-give-form.php 6 years ago shortcode-give-goal.php 5 years ago shortcode-give-login.php 6 years ago shortcode-give-profile-editor.php 6 years ago shortcode-give-receipt.php 6 years ago shortcode-give-register.php 6 years ago shortcode-give-totals.php 6 years ago
admin-shortcodes.js
259 lines
1 /*!
2 * Give Admin Shortcodes JS
3 *
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 * @package: Give
6 * @subpackage: Assets/JS
7 * @author: Paul Ryley
8 * @copyright: Copyright (c) 2016, GiveWP
9 * @license: http://opensource.org/licenses/gpl-2.0.php GNU Public License
10 * @since: 1.3.0
11 */
12
13 /* global Give, ajaxurl, jQuery, scShortcodes, tinymce */
14
15 let scShortcode, scButton;
16
17 jQuery(
18 function( $ ) {
19 const doc = $( this );
20
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' ];
27
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();
32 }
33 };
34
35 window.scForm = {
36
37 open: function( editor_id ) {
38 const editor = tinymce.get( editor_id );
39
40 if ( ! editor ) {
41 return;
42 }
43
44 let data, field, required, valid, win;
45
46 data = {
47 action: 'give_shortcode',
48 shortcode: scShortcode,
49 };
50
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 }
60
61 if ( response.body.length === 0 ) {
62 window.send_to_editor( '[' + response.shortcode + ']' );
63
64 scForm.destroy();
65
66 return;
67 }
68
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 );
82
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 ];
94
95 // Get the shortcode required attributes
96 required = scShortcodes[ scShortcode ];
97
98 valid = true;
99
100 // Do some validation voodoo
101 for ( const id in required ) {
102 if ( required.hasOwnProperty( id ) ) {
103 field = win.find( '#' + id )[ 0 ];
104
105 if ( typeof field !== 'undefined' && field.state.data.value === '' ) {
106 valid = false;
107
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;
118 }
119 }
120 }
121
122 if ( valid ) {
123 win.submit();
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 }
138 }
139
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 );
156
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 ];
167 }
168
169 editor.windowManager.open( popup );
170 }
171 );
172 },
173
174 destroy: function() {
175 const tmp = $( '#scTemp' );
176
177 if ( tmp.length ) {
178 tinymce.get( 'scTemp' ).remove();
179 tmp.remove();
180 }
181 },
182 };
183
184 const scOpen = function() {
185 scButton.addClass( 'active' ).parent().find( '.sc-menu' ).show();
186 };
187
188 const scClose = function() {
189 if ( typeof scButton !== 'undefined' ) {
190 scButton.removeClass( 'active' ).parent().find( '.sc-menu' ).hide();
191 }
192 };
193
194 doc.on(
195 'click',
196 function( e ) {
197 if ( ! $( e.target ).closest( '.sc-wrap' ).length ) {
198 scClose();
199 }
200 }
201 );
202
203 doc.on(
204 'click',
205 '.sc-button',
206 function( e ) {
207 e.preventDefault();
208
209 scButton = $( this );
210
211 if ( scButton.hasClass( 'active' ) ) {
212 scClose();
213 } else {
214 scOpen();
215 }
216 }
217 );
218
219 doc.on(
220 'click',
221 '.sc-shortcode',
222 function( e ) {
223 e.preventDefault();
224
225 // scShortcode is used by scForm to trigger the correct popup
226 scShortcode = $( this ).attr( 'data-shortcode' );
227
228 if ( scShortcode ) {
229 if ( ! tinymce.get( window.wpActiveEditor ) ) {
230 if ( ! $( '#scTemp' ).length ) {
231 $( 'body' ).append( '<textarea id="scTemp" style="display: none;" />' );
232
233 tinymce.init(
234 {
235 mode: 'exact',
236 elements: 'scTemp',
237 plugins: [ 'give_shortcode', 'wplink' ],
238 }
239 );
240 }
241
242 setTimeout( function() {
243 tinymce.execCommand( 'Give_Shortcode' );
244 }, 200 );
245 } else {
246 tinymce.execCommand( 'Give_Shortcode' );
247 }
248
249 setTimeout( function() {
250 scClose();
251 }, 100 );
252 } else {
253 console.warn( 'That is not a valid shortcode link.' );
254 }
255 }
256 );
257 }
258 );
259