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