PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.13
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.13
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
← All changes | js/admin/embed.js +68 -68 6.326.13 View file →
@@ -4,9 +4,9 @@
4 4 if ( 'undefined' === typeof ajaxurl || 'undefined' === typeof wp || 'undefined' === typeof frmDom ) {
5 5 return;
6 6 }
7 7
8 - const { __, sprintf } = wp.i18n;
8 + const __ = wp.i18n.__;
9 9 const { div, tag, svg } = frmDom;
10 10 const { maybeCreateModal, footerButton } = frmDom.modal;
11 11
12 12 let autoId = 0;
@@ -73,9 +73,9 @@
73 73 }
74 74
75 75 function openEmbedModal() {
76 76 /* translators: %s type: ie form, view. */
77 - const title = sprintf( __( 'Embed %s', 'formidable' ), getTypeDescription() );
77 + const title = __( 'Embed %s', 'formidable' ).replace( '%s', getTypeDescription() );
78 78
79 79 modal = maybeCreateModal(
80 80 'frm_embed_modal',
81 81 {
@@ -92,17 +92,17 @@
92 92 $modal.parent().addClass( 'frm-embed-modal-wrapper' );
93 93 }
94 94
95 95 function getModalFooter() {
96 - const doneButton = footerButton( {
96 + const doneButton = footerButton({
97 97 text: __( 'Done', 'formidable' ),
98 98 buttonType: 'primary'
99 - } );
99 + });
100 100
101 - const cancelButton = footerButton( {
101 + const cancelButton = footerButton({
102 102 text: __( 'Back', 'formidable' ),
103 103 buttonType: 'cancel'
104 - } );
104 + });
105 105 cancelButton.addEventListener(
106 106 'click',
107 107 function( event ) {
108 108 event.preventDefault();
@@ -109,17 +109,17 @@
109 109 openEmbedModal();
110 110 }
111 111 );
112 112
113 - return div( {
113 + return div({
114 114 children: [ doneButton, cancelButton ]
115 - } );
115 + });
116 116 }
117 117
118 118 function offsetModalY( $modal, amount ) {
119 119 const position = {
120 120 my: 'top',
121 - at: `top+${ amount }`,
121 + at: 'top+' + amount,
122 122 of: window
123 123 };
124 124 $modal.dialog( 'option', 'position', position );
125 125 }
@@ -124,19 +124,19 @@
124 124 $modal.dialog( 'option', 'position', position );
125 125 }
126 126
127 127 function getModalOptions() {
128 - const content = div( { className: 'frm-embed-modal-content frm_wrap' } );
128 + const content = div({ className: 'frm-embed-modal-content frm_wrap' });
129 129 const typeDescription = getTypeDescription();
130 130
131 131 /* translators: %s type: ie form, view. */
132 - const existingPageDescription = sprintf( __( 'Embed your %s into an existing page.', 'formidable' ), typeDescription );
132 + const existingPageDescription = __( 'Embed your %s into an existing page.', 'formidable' ).replace( '%s', typeDescription );
133 133
134 134 /* translators: %s type: ie form, view. */
135 - const newPageDescription = sprintf( __( 'Put your %s on a newly created page.', 'formidable' ), typeDescription );
135 + const newPageDescription = __( 'Put your %s on a newly created page.', 'formidable' ).replace( '%s', typeDescription );
136 136
137 137 /* translators: %s type: ie form, view. */
138 - const insertManuallyDescription = sprintf( __( 'Use shortcodes or PHP code to put the %s anywhere.', 'formidable' ), typeDescription );
138 + const insertManuallyDescription = __( 'Use shortcodes or PHP code to put the %s anywhere.', 'formidable' ).replace( '%s', typeDescription );
139 139
140 140 const options = [
141 141 {
142 142 icon: '#frm_file_icon',
@@ -147,17 +147,17 @@
147 147
148 148 const spinner = tag( 'span' );
149 149 spinner.className = 'frm-wait frm_spinner';
150 150 spinner.style.visibility = 'visible';
151 - content.append( spinner );
151 + content.appendChild( spinner );
152 152
153 153 const gap = div();
154 154 gap.style.height = '20px';
155 - content.append( gap );
155 + content.appendChild( gap );
156 156
157 157 content.classList.add( 'frm-loading-page-options' );
158 158
159 - jQuery.ajax( {
159 + jQuery.ajax({
160 160 type: 'POST',
161 161 url: ajaxurl,
162 162 data: {
163 163 action: 'get_page_dropdown',
@@ -164,9 +164,9 @@
164 164 nonce: frmGlobal.nonce
165 165 },
166 166 dataType: 'json',
167 167 success: addExistingPageDropdown
168 - } );
168 + });
169 169
170 170 function addExistingPageDropdown( response ) {
171 171 if ( 'object' !== typeof response || 'string' !== typeof response.html ) {
172 172 return;
@@ -177,28 +177,28 @@
177 177
178 178 const typeDescription = getTypeDescription();
179 179
180 180 /* translators: %s: type (ie. view, form). */
181 - const titleText = sprintf( __( 'Select the page you want to embed your %s into.', 'formidable' ), typeDescription );
181 + const titleText = __( 'Select the page you want to embed your %s into.', 'formidable' ).replace( '%s', typeDescription );
182 182
183 183 const title = getLabel( titleText );
184 184 title.setAttribute( 'for', 'frm_page_dropdown' );
185 - content.append( title );
185 + content.appendChild( title );
186 186
187 187 let editPageUrl;
188 188
189 - const doneButton = modal.querySelector( '.frm_modal_footer .button-primary' );
189 + doneButton = modal.querySelector( '.frm_modal_footer .button-primary' );
190 190 doneButton.classList.remove( 'dismiss' );
191 191 /* translators: %s: type (ie. view, form). */
192 - doneButton.textContent = sprintf( __( 'Insert %s', 'formidable' ), typeDescription );
192 + doneButton.textContent = __( 'Insert %s', 'formidable' ).replace( '%s', typeDescription );
193 193 doneButton.addEventListener( 'click', redirectToExistingPageWithInjectedShortcode );
194 194
195 195 const dropdownWrapper = div();
196 196 dropdownWrapper.innerHTML = response.html;
197 - content.append( dropdownWrapper );
197 + content.appendChild( dropdownWrapper );
198 198
199 199 if ( 'form' === state.type ) {
200 - editPageUrl = `${ response.edit_page_url }&frmForm=${ state.objectId }`;
200 + editPageUrl = response.edit_page_url + '&frmForm=' + state.objectId;
201 201 } else {
202 202 const hookName = 'frm_embed_edit_page_url';
203 203 const hookArgs = {
204 204 objectId: state.objectId,
@@ -221,9 +221,9 @@
221 221
222 222 const pageId = pageDropdown.value;
223 223
224 224 if ( '0' === pageId || '' === pageId ) {
225 - const error = div( { className: 'frm_error_style' } );
225 + const error = div({ className: 'frm_error_style' });
226 226 error.setAttribute( 'role', 'alert' );
227 227 error.textContent = __( 'Please select a page', 'formidable' );
228 228 content.insertBefore( error, title.nextElementSibling );
229 229 return;
@@ -228,9 +228,9 @@
228 228 content.insertBefore( error, title.nextElementSibling );
229 229 return;
230 230 }
231 231
232 - window.location.href = editPageUrl.replace( 'post=0', `post=${ pageId }` );
232 + window.location.href = editPageUrl.replace( 'post=0', 'post=' + pageId );
233 233 }
234 234 }
235 235 }
236 236 },
@@ -240,9 +240,9 @@
240 240 description: newPageDescription,
241 241 callback: () => {
242 242 content.innerHTML = '';
243 243
244 - const wrapper = div( { className: 'field-group' } );
244 + const wrapper = div({ className: 'field-group' });
245 245 const form = tag( 'form' );
246 246
247 247 const createPageWithShortcode = () => {
248 248 const hookName = 'frm_create_page_with_shortcode_data';
@@ -255,19 +255,19 @@
255 255 name: input.value,
256 256 nonce: frmGlobal.nonce
257 257 }
258 258 );
259 - jQuery.ajax( {
259 + jQuery.ajax({
260 260 type: 'POST',
261 261 url: ajaxurl,
262 262 data,
263 263 dataType: 'json',
264 - success( response ) {
264 + success: function( response ) {
265 265 if ( 'object' === typeof response && 'string' === typeof response.redirect ) {
266 266 window.location.href = response.redirect;
267 267 }
268 268 }
269 - } );
269 + });
270 270 };
271 271
272 272 form.addEventListener(
273 273 'submit',
@@ -280,22 +280,22 @@
280 280 );
281 281
282 282 const title = getLabel( __( 'What will you call the new page?', 'formidable' ) );
283 283 title.setAttribute( 'for', 'frm_name_your_page' );
284 - form.append( title );
284 + form.appendChild( title );
285 285
286 286 const input = tag( 'input' );
287 287 input.id = 'frm_name_your_page';
288 288 input.placeholder = __( 'Name your page', 'formidable' );
289 - form.append( input );
289 + form.appendChild( input );
290 290
291 - wrapper.append( form );
292 - content.append( wrapper );
291 + wrapper.appendChild( form );
292 + content.appendChild( wrapper );
293 293
294 294 input.type = 'text';
295 295 input.focus();
296 296
297 - const doneButton = modal.querySelector( '.frm_modal_footer .button-primary' );
297 + doneButton = modal.querySelector( '.frm_modal_footer .button-primary' );
298 298 doneButton.textContent = __( 'Create page', 'formidable' );
299 299 doneButton.addEventListener(
300 300 'click',
301 301 function( event ) {
@@ -312,9 +312,9 @@
312 312 callback: () => {
313 313 content.innerHTML = '';
314 314
315 315 if ( 'form' === state.type ) {
316 - getEmbedFormManualExamples().forEach( example => content.append( getEmbedExample( example ) ) );
316 + getEmbedFormManualExamples().forEach( example => content.appendChild( getEmbedExample( example ) ) );
317 317 } else {
318 318 const hookName = 'frm_embed_examples';
319 319 const hookArgs = {
320 320 type: state.type,
@@ -321,9 +321,9 @@
321 321 objectId: state.objectId,
322 322 objectKey: state.objectKey
323 323 };
324 324 wp.hooks.applyFilters( hookName, [], hookArgs ).forEach(
325 - example => content.append( getEmbedExample( example ) )
325 + example => content.appendChild( getEmbedExample( example ) )
326 326 );
327 327 }
328 328 }
329 329 }
@@ -329,9 +329,9 @@
329 329 }
330 330 ];
331 331
332 332 options.forEach(
333 - option => content.append( getModalOption( option ) )
333 + option => content.appendChild( getModalOption( option ) )
334 334 );
335 335
336 336 return content;
337 337 }
@@ -345,21 +345,21 @@
345 345 return __( 'form', 'formidable' );
346 346 }
347 347 }
348 348
349 - function getModalOption( { icon, label, description, callback } ) {
349 + function getModalOption({ icon, label, description, callback }) {
350 350 const output = div();
351 - output.append( wrapModalOptionIcon( icon ) );
351 + output.appendChild( wrapModalOptionIcon( icon ) );
352 352 output.className = 'frm-embed-modal-option';
353 353 output.setAttribute( 'tabindex', 0 );
354 354 output.setAttribute( 'role', 'button' );
355 355
356 356 const textWrapper = div();
357 - textWrapper.append( getLabel( label ) );
358 - textWrapper.append( div( description ) );
359 - output.append( textWrapper );
357 + textWrapper.appendChild( getLabel( label ) );
358 + textWrapper.appendChild( div( description ) );
359 + output.appendChild( textWrapper );
360 360
361 - output.append( div( { className: 'caret' } ) );
361 + output.appendChild( div({ className: 'caret' }) );
362 362
363 363 output.addEventListener(
364 364 'click',
365 365 function() {
@@ -370,12 +370,12 @@
370 370 return output;
371 371 }
372 372
373 373 function wrapModalOptionIcon( iconHref ) {
374 - return div( {
374 + return div({
375 375 className: 'frm-icon-wrapper',
376 - child: svg( { href: iconHref } )
377 - } );
376 + child: svg({ href: iconHref })
377 + });
378 378 }
379 379
380 380 function getEmbedFormManualExamples() {
381 381 const formId = state.objectId;
@@ -383,15 +383,15 @@
383 383
384 384 let examples = [
385 385 {
386 386 label: __( 'WordPress shortcode', 'formidable' ),
387 - example: `[formidable id=${ formId }]`,
387 + example: '[formidable id=' + formId + ']',
388 388 link: 'https://formidableforms.com/knowledgebase/publish-a-form/#kb-insert-the-shortcode-manually',
389 389 linkLabel: __( 'How to use shortcodes in WordPress', 'formidable' )
390 390 },
391 391 {
392 392 label: __( 'Use PHP code', 'formidable' ),
393 - example: `<?php echo FrmFormsController::get_form_shortcode( array( 'id' => ${ formId } ) ); ?>`
393 + example: '<?php echo FrmFormsController::get_form_shortcode( array( \'id\' => ' + formId + ' ) ); ?>'
394 394 }
395 395 ];
396 396
397 397 const filterArgs = { formId, formKey };
@@ -399,18 +399,18 @@
399 399
400 400 return examples;
401 401 }
402 402
403 - function getEmbedExample( { label, example, link, linkLabel } ) {
404 - const unique = getAutoId();
403 + function getEmbedExample({ label, example, link, linkLabel }) {
404 + let unique, element, labelElement, exampleElement, linkElement;
405 405
406 - const labelElement = getLabel( label );
407 - labelElement.id = `frm_embed_example_label_${ unique }`;
406 + unique = getAutoId();
407 + element = div();
408 408
409 - const element = div();
410 - element.append( labelElement );
409 + labelElement = getLabel( label );
410 + labelElement.id = 'frm_embed_example_label_' + unique;
411 + element.appendChild( labelElement );
411 412
412 - let exampleElement;
413 413 if ( example.length > 80 ) {
414 414 exampleElement = tag( 'textarea' );
415 415 } else {
416 416 exampleElement = tag( 'input' );
@@ -416,24 +416,24 @@
416 416 exampleElement = tag( 'input' );
417 417 exampleElement.type = 'text';
418 418 }
419 419
420 - exampleElement.id = `frm_embed_example_${ unique }`;
420 + exampleElement.id = 'frm_embed_example_' + unique;
421 421 exampleElement.className = 'frm_embed_example';
422 422 exampleElement.value = example;
423 423 exampleElement.readOnly = true;
424 424 exampleElement.setAttribute( 'tabindex', -1 );
425 425
426 - if ( link !== undefined && linkLabel !== undefined ) {
427 - const linkElement = tag( 'a' );
426 + if ( 'undefined' !== typeof link && 'undefined' !== typeof linkLabel ) {
427 + linkElement = tag( 'a' );
428 428 linkElement.href = link;
429 429 linkElement.textContent = linkLabel;
430 430 linkElement.setAttribute( 'target', '_blank' );
431 - element.append( linkElement );
431 + element.appendChild( linkElement );
432 432 }
433 433
434 - element.append( exampleElement );
435 - element.append( getCopyIcon( label ) );
434 + element.appendChild( exampleElement );
435 + element.appendChild( getCopyIcon( label ) );
436 436
437 437 return element;
438 438 }
439 439
@@ -442,14 +442,14 @@
442 442 return tag( 'label', args );
443 443 }
444 444
445 445 function getCopyIcon( label ) {
446 - const icon = svg( { href: '#frm_clone_icon' } );
447 - icon.id = `frm_copy_embed_${ getAutoId() }`;
446 + const icon = svg({ href: '#frm_clone_icon' });
447 + icon.id = 'frm_copy_embed_' + getAutoId();
448 448 icon.setAttribute( 'tabindex', 0 );
449 449 icon.setAttribute( 'role', 'button' );
450 450 /* translators: %s: Example type (ie. WordPress shortcode, API Form script) */
451 - icon.setAttribute( 'aria-label', sprintf( __( 'Copy %s', 'formidable' ), label ) );
451 + icon.setAttribute( 'aria-label', __( 'Copy %s', 'formidable' ).replace( '%s', label ) );
452 452 icon.addEventListener(
453 453 'click',
454 454 () => copyExampleToClipboard( icon.parentNode.querySelector( '.frm_embed_example' ) )
455 455 );
@@ -486,17 +486,17 @@
486 486 }
487 487
488 488 function speak( message ) {
489 489 const element = document.createElement( 'div' );
490 - const id = `speak-${ getAutoId() }`;
490 + const id = 'speak-' + getAutoId();
491 491
492 492 element.setAttribute( 'aria-live', 'assertive' );
493 493 element.setAttribute( 'id', id );
494 494 element.className = 'frm_screen_reader frm_hidden';
495 495 element.textContent = message;
496 - document.body.append( element );
496 + document.body.appendChild( element );
497 497
498 - setTimeout( () => element.remove(), 1000 );
498 + setTimeout( () => document.body.removeChild( element ), 1000 );
499 499 }
500 500
501 501 /**
502 502 * Get a unique id that automatically increments with every function call.
@@ -502,9 +502,9 @@
502 502 * Get a unique id that automatically increments with every function call.
503 503 * Can be used for any UI that requires a unique id.
504 504 * Not to be used in data.
505 505 *
506 - * @return {number} The unique id.
506 + * @returns {integer}
507 507 */
508 508 function getAutoId() {
509 509 return ++autoId;
510 510 }