PluginProbe
weForms – Easy Drag & Drop Contact Form Builder For WordPress / 1.4.8
weForms – Easy Drag & Drop Contact Form Builder For WordPress v1.4.8
1.6.7 1.6.8 1.6.9 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.18 1.6.19 1.6.2 1.6.20 1.6.21 1.6.22 1.6.23 1.6.24 1.6.25 1.6.26 1.6.27 1.6.28 1.6.3 1.6.4 1.6.5 1.6.6 All 74 releases
weforms / includes / admin / class-form-builder-assets.php

class-form-builder-assets.php in weForms – Easy Drag & Drop Contact Form Builder For WordPress 1.4.8, at includes/admin/class-form-builder-assets.php

402 lines 15.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * The Assets Class
5 */
6 class WeForms_Form_Builder_Assets {
7
8 public function __construct() {
9 $this->init_actions();
10 }
11
12 public function init_actions() {
13 add_action( 'in_admin_header', [ $this, 'remove_admin_notices' ] );
14 add_action( 'admin_enqueue_scripts', [ $this, 'builder_enqueue_scripts' ], 2000 );
15 add_action( 'admin_print_scripts', [ $this, 'builder_mixins_script' ] );
16 add_action( 'admin_footer', [ $this, 'admin_footer_js_templates' ] );
17
18 add_action( 'wpuf-form-builder-template-builder-stage-submit-area', [ $this, 'add_form_submit_area' ] );
19
20 add_action( 'wpuf-form-builder-tabs-contact_form', [ $this, 'add_primary_tabs' ] );
21 add_action( 'wpuf-form-builder-tab-contents-contact_form', [ $this, 'add_primary_tab_contents' ] );
22
23 add_action( 'wpuf-form-builder-settings-tabs-contact_form', [ $this, 'add_settings_tabs' ] );
24 add_action( 'wpuf-form-builder-settings-tab-contents-contact_form', [ $this, 'add_settings_tab_contents' ] );
25
26 do_action( 'weforms_form_builder_init' );
27 }
28
29 /**
30 * Remove all kinds of admin notices
31 *
32 * Since we don't have much space left on top of the page,
33 * we have to remove all kinds of admin notices
34 *
35 * @since 1.2.6
36 *
37 * @return void
38 */
39 public function remove_admin_notices() {
40 remove_all_actions( 'network_admin_notices' );
41 remove_all_actions( 'user_admin_notices' );
42 remove_all_actions( 'admin_notices' );
43 remove_all_actions( 'all_admin_notices' );
44 }
45
46 public function builder_enqueue_scripts() {
47 $prefix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
48
49 weforms()->scripts->enqueue_backend();
50
51 $recaptcha = weforms_get_settings( 'recaptcha' );
52
53 $wpuf_form_builder = apply_filters( 'wpuf-form-builder-localize-script', [
54 'i18n' => $this->i18n(),
55 'panel_sections' => weforms()->fields->get_field_groups(),
56 'field_settings' => weforms()->fields->get_js_settings(),
57 'pro_link' => self::get_pro_url(),
58 'site_url' => site_url( '/' ),
59 'defaultNotification' => [
60 'active' => 'true',
61 'type' => 'email',
62 'smsTo' => '',
63 'smsText' => '[{form_name}] ' . __( 'New Form Submission', 'weforms' ) . ' #{entry_id}',
64 'name' => 'Admin Notification',
65 'subject' => '[{form_name}] New Form Submission #{entry_id}',
66 'to' => '{admin_email}',
67 'replyTo' => '',
68 'message' => '{all_fields}',
69 'fromName' => '',
70 'fromAddress' => '{admin_email}',
71 'cc' => '',
72 'bcc' => '',
73 'weforms_cond' => [
74 'condition_status' => 'no',
75 'cond_logic' => 'any',
76 'conditions' => [
77 [
78 'name' => '',
79 'operator' => '=',
80 'option' => '',
81 ],
82 ],
83 ],
84 ],
85 'integrations' => weforms()->integrations->get_integration_js_settings(),
86 'recaptcha_site' => isset( $recaptcha->key ) ? $recaptcha->key : '',
87 'recaptcha_secret' => isset( $recaptcha->secret ) ? $recaptcha->secret : '',
88 ] );
89
90 // mixins
91 $wpuf_mixins = [
92 'root' => apply_filters( 'weforms-builder-js-root-mixins', [ 'weforms_mixin_builder_root' ] ),
93 'builder_stage' => apply_filters( 'weforms-builder-js-builder-stage-mixins', [ 'weforms_mixin_builder_stage' ] ),
94 'form_fields' => apply_filters( 'weforms-builder-js-form-fields-mixins', [] ),
95 'field_options' => apply_filters( 'weforms-builder-js-field-options-mixins', [] ),
96 ];
97
98 $weforms = apply_filters( 'weforms_localized_script', [
99 'nonce' => wp_create_nonce( 'weforms' ),
100 'confirm' => __( 'Are you sure?', 'weforms' ),
101 'is_pro' => class_exists( 'WeForms_Pro' ) ? 'true' : 'false',
102 'has_payment' => class_exists( 'WeForms_Payment' ) ? 'true' : 'false',
103 'has_sms' => class_exists( 'WeForms_SMS_Notification' ) ? 'true' : 'false',
104 'routes' => $this->get_vue_routes(),
105 'routeComponents' => [ 'default' => null ],
106 'mixins' => [ 'default' => null ],
107 'assetsURL' => WEFORMS_ASSET_URI,
108 'shortcodes' => $this->shortcodes(),
109 'settings' => [
110 'recaptcha' => weforms_get_settings( 'recaptcha' ),
111 ],
112 ] );
113
114 wp_localize_script( 'weforms-form-builder-mixins', 'wpuf_form_builder', $wpuf_form_builder );
115 wp_localize_script( 'weforms-form-builder-mixins', 'wpuf_mixins', $wpuf_mixins );
116 wp_localize_script( 'weforms-mixins', 'weForms', $weforms );
117
118 do_action( 'weforms_admin_after_scripts_loaded' );
119 }
120
121 /**
122 * The pro url
123 *
124 * @return string
125 */
126 public static function get_pro_url() {
127 $link = 'https://wedevs.com/weforms-upgrade/';
128
129 if ( $aff = get_option( '_weforms_aff_ref' ) ) {
130 $link = add_query_arg( [ 'ref' => $aff ], $link );
131 }
132
133 return $link;
134 }
135
136 /**
137 * SPA Routes
138 *
139 * @return array
140 */
141 public function get_vue_routes() {
142 $routes = [
143 [
144 'path' => '/',
145 'name' => 'home',
146 'component' => 'Home',
147 ],
148 [
149 'path' => '/form/:id',
150 'component' => 'FormHome',
151 'children' => [
152 [
153 'path' => '',
154 'name' => 'form',
155 'component' => 'SingleForm',
156 ],
157 [
158 'path' => 'entries',
159 'component' => 'FormEntriesHome',
160 'children' => [
161 [
162 'path' => '',
163 'name' => 'formEntries',
164 'component' => 'FormEntries',
165 'props' => true,
166 ],
167 [
168 'path' => ':entryid',
169 'name' => 'formEntriesSingle',
170 'component' => 'FormEntriesSingle',
171 ],
172 ],
173 ],
174 [
175 'path' => 'edit',
176 'name' => 'edit',
177 'component' => 'FormEditComponent',
178 ],
179 ],
180 ],
181 [
182 'path' => '/tools',
183 'name' => 'tools',
184 'component' => 'Tools',
185 ],
186 [
187 'path' => '/entries',
188 'name' => 'entries',
189 'component' => 'Entries',
190 ],
191 [
192 'path' => '/help',
193 'name' => 'help',
194 'component' => 'Help',
195 ],
196 [
197 'path' => '/premium',
198 'name' => 'premium',
199 'component' => 'Premium',
200 ],
201 [
202 'path' => '/settings',
203 'name' => 'settings',
204 'component' => 'Settings',
205 ],
206 ];
207
208 return apply_filters( 'weforms_vue_routes', $routes );
209 }
210
211 /**
212 * Print js scripts in admin head
213 *
214 * @since 2.5
215 *
216 * @return void
217 */
218 public function builder_mixins_script() {
219 ?>
220 <script>
221 if (!window.Promise) {
222 var promise_polyfill = document.createElement('script');
223 promise_polyfill.setAttribute('src','https://cdn.polyfill.io/v2/polyfill.min.js');
224 document.head.appendChild(promise_polyfill);
225 }
226 </script>
227
228 <script>
229 var wpuf_form_builder_mixins = function(mixins, mixin_parent) {
230 if (!mixins || !mixins.length) {
231 return [];
232 }
233
234 if (!mixin_parent) {
235 mixin_parent = window;
236 }
237
238 return mixins.map(function (mixin) {
239 return mixin_parent[mixin];
240 });
241 };
242 </script>
243 <?php
244 }
245
246 /**
247 * Include vue component templates
248 *
249 * @since 2.5
250 *
251 * @return void
252 */
253 public function admin_footer_js_templates() {
254 if ( !defined( 'WPUF_ASSET_URI' ) ) {
255 define( 'WPUF_ASSET_URI', WEFORMS_ROOT_URI . '/assets' );
256 }
257
258 include WEFORMS_ROOT . '/assets/wpuf/js-templates/form-components.php';
259 include WEFORMS_ROOT . '/assets/js-templates/form-components.php';
260 include WEFORMS_ROOT . '/assets/js-templates/spa-components.php';
261
262 do_action( 'wpuf-form-builder-add-js-templates' );
263 }
264
265 /**
266 * i18n translatable strings
267 *
268 * @since 2.5
269 *
270 * @return array
271 */
272 private function i18n() {
273 return apply_filters( 'wpuf-form-builder-i18n', [
274 'advanced_options' => __( 'Advanced Options', 'weforms' ),
275 'quiz_options' => __( 'Quiz Options', 'weforms' ),
276 'delete_field_warn_msg' => __( 'Are you sure you want to delete this field?', 'weforms' ),
277 'yes_delete_it' => __( 'Yes, delete it', 'weforms' ),
278 'no_cancel_it' => __( 'No, cancel it', 'weforms' ),
279 'ok' => __( 'OK', 'weforms' ),
280 'cancel' => __( 'Cancel', 'weforms' ),
281 'close' => __( 'Close', 'weforms' ),
282 'disable' => __( 'Disable', 'weforms' ),
283 'last_choice_warn_msg' => __( 'This field must contain at least one choice', 'weforms' ),
284 'option' => __( 'Option', 'weforms' ),
285 'row' => __( 'Row', 'weforms' ),
286 'column' => __( 'Column', 'weforms' ),
287 'last_column_warn_msg' => __( 'This field must contain at least one column', 'weforms' ),
288 'is_a_pro_feature' => __( 'is available in Pro version', 'weforms' ),
289 'pro_feature_msg' => __( 'Please upgrade to the Pro version to unlock all these awesome features', 'weforms' ),
290 'upgrade_to_pro' => __( 'Get the Pro version', 'weforms' ),
291 'select' => __( 'Select', 'weforms' ),
292 'saved_form_data' => __( 'Saved form data', 'weforms' ),
293 'unsaved_changes' => __( 'You have unsaved changes.', 'weforms' ),
294 'areYouSureToLeave' => __( 'Are you sure to leave this page?', 'weforms' ),
295 'copy_shortcode' => __( 'Click to copy shortcode', 'weforms' ),
296
297 'selectAnImage' => __( 'Select an image', 'weforms' ),
298 'pleaseSelectAnImage' => __( 'Please select an image', 'weforms' ),
299 'uploadAnImage' => __( 'Upload an image', 'weforms' ),
300
301 'shareYourForm' => __( 'Share Your Form', 'weforms' ),
302 'shareYourFormDesc' => __( 'Sharing your form enables <strong>anyone</strong> to view and submit the form without inserting the shortcode to a page.', 'weforms' ),
303 'shareYourFormText' => __( 'Anyone with this URL will be able to view and submit this form.', 'weforms' ),
304 'areYouSure' => __( 'Are you sure?', 'weforms' ),
305 'selectNotification' => __( 'You must select a notification', 'weforms' ),
306 'areYouSureDesc' => __( 'Anyone with existing URL won\'t be able to view and submit the form anymore.', 'weforms' ),
307 'disableSharing' => __( 'Disable Sharing', 'weforms' ),
308 ] );
309 }
310
311 /**
312 * Add buttons in form submit area
313 *
314 * @return void
315 */
316 public function add_form_submit_area() {
317 ?>
318 <input @click.prevent="" type="submit" name="submit" class="button button-primary" v-model="settings.submit_text">
319 <?php
320 }
321
322 /**
323 * Additional primary tabs
324 *
325 * @return void
326 */
327 public function add_primary_tabs() {
328 $tabs = apply_filters( 'wpuf_contact_form_editor_tabs', [
329 'notification' => __( 'Notifications', 'weforms' ),
330 'integration' => __( 'Integrations', 'weforms' ),
331 ] );
332
333 foreach ( $tabs as $key => $label ) {
334 ?>
335 <a href="#wpuf-form-builder-tab-<?php echo esc_attr( $key ); ?>" :class="['nav-tab', isActiveTab( '<?php echo esc_attr( $key ); ?>' ) ? 'nav-tab-active' : '']" v-on:click.prevent="makeActive('<?php echo esc_attr( $key ); ?>')"><?php echo esc_attr( $label ); ?></a>
336 <?php
337 }
338 }
339
340 public function add_primary_tab_contents() {
341 include __DIR__ . '/views/notification-integration.php';
342 }
343
344 /**
345 * Add settings tabs
346 *
347 * @return void
348 */
349 public function add_settings_tabs() {
350 ?>
351
352 <a href="#" :class="['nav-tab', isActiveSettingsTab( 'form' ) ? 'nav-tab-active' : '']" v-on:click.prevent="makeActiveSettingsTab( 'form' )" class="nav-tab"><?php esc_html_e( 'Form Settings', 'weforms' ); ?></a>
353 <a href="#" :class="['nav-tab', isActiveSettingsTab( 'restriction' ) ? 'nav-tab-active' : '']" v-on:click.prevent="makeActiveSettingsTab( 'restriction' )" class="nav-tab"><?php esc_html_e( 'Submission Restriction', 'weforms' ); ?></a>
354 <a href="#" :class="['nav-tab', isActiveSettingsTab( 'display' ) ? 'nav-tab-active' : '']" v-on:click.prevent="makeActiveSettingsTab( 'display' )" class="nav-tab"><?php esc_html_e( 'Display Settings', 'weforms' ); ?></a>
355
356 <?php do_action( 'wpuf_contact_form_settings_tab' ); ?>
357
358 <?php
359 }
360
361 /**
362 * Add settings tabs
363 *
364 * @return void
365 */
366 public function add_settings_tab_contents() {
367 ?>
368 <div id="wpuf-metabox-settings" class="tab-content" v-show="isActiveSettingsTab('form')">
369 <?php include_once __DIR__ . '/views/form-settings.php'; ?>
370 </div>
371
372 <div id="wpuf-metabox-settings-restriction" class="tab-content" v-show="isActiveSettingsTab('restriction')">
373 <?php include_once __DIR__ . '/views/submission-restriction.php'; ?>
374 </div>
375
376 <div id="wpuf-metabox-settings-display" class="tab-content" v-show="isActiveSettingsTab('display')">
377 <?php include_once __DIR__ . '/views/display-settings.php'; ?>
378 </div>
379
380 <?php do_action( 'wpuf_contact_form_settings_tab_content' ); ?>
381
382 <?php
383 }
384
385 public function shortcodes( $type = '' ) {
386 $shortcodes = [];
387
388 $shortcodes['user'] = [
389 'title' => __( 'User', 'weforms' ),
390 'codes' => [
391 'first_name' => [ 'title' => __( 'First Name', 'weforms' ), 'default' => 'reader' ],
392 ],
393 ];
394
395 if ( !empty( $type ) && !empty( $shortcodes[ $type ] ) ) {
396 return $shortcodes[ $type ];
397 }
398
399 return $shortcodes;
400 }
401 }
402