PluginProbe
GetResponse Forms by Optin Cat / 2.0.2
GetResponse Forms by Optin Cat v2.0.2
1.3.4 1.3.5 1.3.6 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 2.0.0 All 36 releases
← All changes | includes/eoi-post-types.php +1506 -1874 1.4.02.0.2 View file →
@@ -1,6 +1,6 @@
1 1 <?php
2 -
2 +
3 3 class EasyOptInsPostTypes {
4 4
5 5 public $settings;
6 6
@@ -8,10 +8,8 @@
8 8 'form_list' => null,
9 9 'dashboard_widget' => 30
10 10 );
11 11
12 - private $targeting_cat_path = 'assets/vendor/targeting-cat/TargetingCat-OptinCat-1.2.min.js';
13 -
14 12 private $two_step_ids_on_page = array();
15 13
16 14 public function __construct( $settings ) {
17 15
@@ -29,17 +27,10 @@
29 27 add_action( 'admin_post_fca_eoi_reset_stats', array( $this, 'reset_stats' ) );
30 28
31 29 // Dashboard widget
32 30 add_action( 'wp_dashboard_setup', array( $this, 'dashboard_setup' ) );
33 -
34 31
35 - // Add provider object and post settings to settings
36 - add_action( 'init', array( $this, 'more_settings' ) );
37 -
38 - // Handle AJAX submission (unused)
39 - add_action( 'init', array( $this, 'handle_submission' ) );
40 -
41 - // Initiate action hooks
32 + // Save
42 33 add_action( 'save_post', array( $this, 'save_meta_box_content' ), 1, 2 );
43 34
44 35 // Live preview
45 36 add_filter( 'the_content', array( $this, 'live_preview' ) );
@@ -44,26 +35,35 @@
44 35 // Live preview
45 36 add_filter( 'the_content', array( $this, 'live_preview' ) );
46 37
47 38 // Scripts and styles
48 - add_filter( 'admin_enqueue_scripts', array( $this, 'admin_enqueue' ) );
49 - add_filter( 'admin_enqueue_scripts', array( $this, 'disable_autosave' ) );
39 + add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue' ) );
50 40
51 41 add_action( 'admin_head', array( $this, 'hide_minor_publishing' ) );
52 -
42 +
43 + add_action( 'admin_notices', array( $this, 'onboard_help' ), 1 );
44 +
45 + if ( $this->settings['distribution'] === 'free' ) {
46 + add_action( 'admin_notices', array( $this, 'review_notice' ) );
47 + }
48 +
49 + //V 2.0 BLOG POST NOTICE
50 + add_action( 'admin_notices', array( $this, 'google_changes_notice' ) );
51 +
53 52 add_filter( 'admin_body_class', array( $this, 'add_body_class' ) );
54 53
55 54 add_filter( 'wp_insert_post_data', array( $this, 'force_published' ) );
56 55
57 - // add_action( 'admin_footer', array( $this, 'disable_metabox_toggle' ) );
58 -
59 56 add_action( 'wp_ajax_fca_eoi_subscribe', array( $this, 'ajax_subscribe' ) );
60 -
57 + add_action( 'wp_ajax_nopriv_fca_eoi_subscribe', array( $this, 'ajax_subscribe' ) );
58 +
59 + add_action( 'wp_ajax_fca_eoi_dismiss', array( $this, 'ajax_dismiss_notice' ) );
60 +
61 61 add_filter( 'get_user_option_screen_layout_easy-opt-ins', array( $this, 'force_one_column' ) );
62 62
63 63 add_filter( 'get_user_option_meta-box-order_easy-opt-ins', array( $this, 'order_columns' ) );
64 64
65 - add_filter( 'gettext', array( $this, 'override_text' ) );
65 + add_filter( 'post_updated_messages', array( $this, 'override_text' ) );
66 66
67 67 add_filter( 'bulk_actions-edit-easy-opt-ins', array( $this, 'disable_bulk_edit' ) );
68 68
69 69 add_filter( 'post_row_actions', array( $this, 'remove_quick_edit' ) );
@@ -73,18 +73,21 @@
73 73 add_filter( 'enter_title_here', array( $this, 'change_default_title' ) );
74 74
75 75 add_filter( 'init', array( $this, 'bind_content_filter' ), 10 );
76 76
77 - add_filter( 'template_redirect', array( $this, 'parse_tc_condition_request' ), 1 );
77 + add_filter( 'plugin_action_links_' . FCA_EOI_PLUGIN_BASENAME, array( $this, 'add_plugin_action_links' ) );
78 +
79 + //ADD ACTIONS TO GET THE ENTIRE PAGE OUTPUT IN BUFFER
80 +
81 + if ( wp_get_theme() == 'Customizr' ) {
82 + add_filter( 'the_content', array( $this, 'scan_for_shortcodes' ) );
83 + } else {
84 + add_action('wp_head', array( $this, 'fca_eoi_buffer_start' ));
85 + add_action('wp_footer', array( $this, 'fca_eoi_buffer_end' ));
86 + }
78 87
79 - add_filter( 'the_content', array( $this, 'scan_for_shortcodes' ) );
88 + add_filter( 'wp_footer', array( $this, 'maybe_show_lightbox' ) );
80 89
81 - add_filter( 'init', array( $this, 'request_prepare_lightbox' ) );
82 -
83 - add_filter( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
84 -
85 - add_filter( 'wp_footer', array( $this, 'show_lightbox' ) );
86 -
87 90 foreach ( $providers_available as $provider ) {
88 91 add_action( 'wp_ajax_fca_eoi_' . $provider . '_get_lists', $provider . '_ajax_get_lists' );
89 92 }
90 93
@@ -94,47 +97,29 @@
94 97 }
95 98
96 99 // Handle licensing
97 100 if( count( $providers_available ) > 1 ) {
98 - require $this->settings[ 'plugin_dir' ] . 'includes/licensing.php';
101 + require_once FCA_EOI_PLUGIN_DIR . 'includes/licensing.php';
99 102 new EasyOptInsLicense( $this->settings );
100 103 }
101 104 }
102 -
103 - public function enqueue_scripts() {
104 - wp_enqueue_script( 'jquery' );
105 +
106 + public function add_plugin_action_links( $links ) {
107 + $url = admin_url('post-new.php?post_type=easy-opt-ins');
108 +
109 + $new_links = array(
110 + 'addnew' => "<a href='$url' >" . __('Add New Optin Form', 'easy-opt-ins' ) . '</a>'
111 + );
112 +
113 + $links = array_merge( $new_links, $links );
114 +
115 + return $links;
116 +
105 117 }
106 -
107 - public function more_settings() {
108 -
109 - $providers_available = array_keys( $this->settings[ 'providers' ] );
110 -
111 - // Get the post id
112 - if( is_admin() ) {
113 - $form_id = K::get_var( 'post', $_GET );
114 - } else {
115 - $protocol = is_ssl() ? 'https' : 'http';
116 - $form_id = K::get_var( 'fca_eoi_form_id', $_POST );
117 - }
118 -
119 - // Save form meta into object settings
120 - $this->settings[ 'eoi_form_meta' ] = empty ( $form_id )
121 - ? false
122 - : get_post_meta( $form_id, 'fca_eoi', true )
123 - ;
124 -
125 - // Add last 3 posts and there meta
126 - // We need to prepare the previous posts
127 - $fca_eoi_last_3_forms = array();
128 - foreach (query_posts( 'posts_per_page=3&post_type=easy-opt-ins' ) as $i => $f ) {
129 - $fca_eoi_last_3_forms[ $i ][ 'post' ] = $f;
130 - $fca_eoi_last_3_forms[ $i ][ 'fca_eoi' ] = get_post_meta( $f->ID, 'fca_eoi', true );
131 - }
132 - // reset query after the loop
133 - wp_reset_query();
134 - $this->settings[ 'fca_eoi_last_3_forms' ] = $fca_eoi_last_3_forms;
135 - }
136 -
118 +
119 + function fca_eoi_buffer_start() { ob_start(array( $this, 'scan_for_shortcodes' )); }
120 + function fca_eoi_buffer_end() { ob_end_flush(); }
121 +
137 122 public function register_custom_post_type() {
138 123
139 124 $labels = array(
140 125 'name' => __('Optin Forms') ,
@@ -148,16 +133,16 @@
148 133 'search_items' => __('Search Optin Form') ,
149 134 'not_found' => __('No Optin Form Found') ,
150 135 'not_found_in_trash' => __('No Optin Form Found in Trash') ,
151 136 'parent_item_colon' => '',
152 - 'menu_name' => __('Optin Cat')
137 + 'menu_name' => __('Optin Forms')
153 138 );
154 139 $args = array(
155 - 'menu_icon' => "{$this->settings['plugin_url']}/icon.png",
140 + 'menu_icon' => FCA_EOI_PLUGIN_URL . '/icon.png',
156 141 'labels' => $labels,
157 142 'public' => false,
158 143 'exclude_from_search' => true,
159 - 'publicly_queryable' => true,
144 + 'publicly_queryable' => false,
160 145 'show_ui' => true,
161 146 'show_in_menu' => true,
162 147 'query_var' => true,
163 148 'rewrite' => array(
@@ -178,9 +163,9 @@
178 163 register_post_type('easy-opt-ins', $args);
179 164 }
180 165
181 166 private function enqueue_activity_style() {
182 - wp_enqueue_style( 'admin-cpt-easy-opt-ins-activity', $this->settings['plugin_url'] . '/assets/admin/cpt-easy-opt-ins-activity.css' );
167 + wp_enqueue_style( 'admin-cpt-easy-opt-ins-activity', FCA_EOI_PLUGIN_URL . '/assets/admin/cpt-easy-opt-ins-activity.min.css', array(), FCA_EOI_VER );
183 168 }
184 169
185 170 public function add_new_columns( $columns ) {
186 171 $new_columns = array();
@@ -255,11 +240,17 @@
255 240 $tag, 1 );
256 241 }
257 242
258 243 public function dashboard_setup() {
244 +
245 + if ( defined ( 'FCA_EOI_DISABLE_STATS_TRACKING' )) {
246 + $title = 'Optin Cat Summary (TRACKING DISABLED)';
247 + } else {
248 + $title = 'Optin Cat Summary';
249 + }
259 250 add_meta_box(
260 251 'fca_eoi_dashboard_widget',
261 - 'Optin Cat Summary',
252 + $title,
262 253 array( $this, 'add_dashboard_widget' ),
263 254 'dashboard',
264 255 'normal',
265 256 'high'
@@ -266,11 +257,11 @@
266 257 );
267 258 }
268 259
269 260 public function add_dashboard_widget() {
270 - wp_enqueue_script( 'd3_js', $this->settings['plugin_url'] . '/assets/vendor/nvd3/d3.min.js' );
271 - wp_enqueue_script( 'nvd3_js', $this->settings['plugin_url'] . '/assets/vendor/nvd3/nv.d3.min.js' );
272 - wp_enqueue_style( 'nvd3_css', $this->settings['plugin_url'] . '/assets/vendor/nvd3/nv.d3.min.css' );
261 + wp_enqueue_script( 'd3_js', FCA_EOI_PLUGIN_URL . '/assets/vendor/nvd3/d3.min.js', array(), FCA_EOI_VER, true );
262 + wp_enqueue_script( 'nvd3_js', FCA_EOI_PLUGIN_URL . '/assets/vendor/nvd3/nv.d3.min.js', array(), FCA_EOI_VER, true );
263 + wp_enqueue_style( 'nvd3_css', FCA_EOI_PLUGIN_URL . '/assets/vendor/nvd3/nv.d3.min.css', array(), FCA_EOI_VER );
273 264 $this->enqueue_activity_style();
274 265
275 266 $day_interval = $this->activity_day_interval['dashboard_widget'];
276 267 $activity = EasyOptInsActivity::get_instance();
@@ -351,17 +342,10 @@
351 342 <?php
352 343 }
353 344
354 345 public function add_meta_boxes() {
346 +
355 347 add_meta_box(
356 - 'fca_eoi_meta_box_nav',
357 - __( 'Navigation' ),
358 - array( &$this, 'meta_box_content_nav' ),
359 - 'easy-opt-ins',
360 - 'side',
361 - 'high'
362 - );
363 - add_meta_box(
364 348 'fca_eoi_meta_box_setup',
365 349 __( 'Setup' ),
366 350 array( &$this, 'meta_box_content_setup' ),
367 351 'easy-opt-ins',
@@ -375,8 +359,9 @@
375 359 'easy-opt-ins',
376 360 'side',
377 361 'high'
378 362 );
363 +
379 364 add_meta_box(
380 365 'fca_eoi_meta_box_provider',
381 366 __( 'Email Marketing Provider Integration' ),
382 367 array( &$this, 'meta_box_content_provider' ),
@@ -384,9 +369,9 @@
384 369 'side',
385 370 'high'
386 371 );
387 372 add_meta_box(
388 - 'fca_eoi_meta_box_publish',
373 + 'fca_eoi_meta_box_publish',
389 374 __( 'Publication' ),
390 375 array( &$this, 'meta_box_content_publish' ),
391 376 'easy-opt-ins',
392 377 'side',
@@ -393,10 +378,10 @@
393 378 'high'
394 379 );
395 380 add_meta_box(
396 381 'fca_eoi_meta_box_thanks',
397 - __( 'Thank You Page' ),
398 - array( &$this, 'meta_box_content_thanks' ),
382 + __( 'Messages' ),
383 + array( &$this, 'meta_box_content_messages' ),
399 384 'easy-opt-ins',
400 385 'side',
401 386 'high'
402 387 );
@@ -409,50 +394,31 @@
409 394 'side',
410 395 'high'
411 396 );
412 397 }
413 - if ( FCA_EOI_DEBUG ) {
414 - add_meta_box(
415 - 'fca_eoi_meta_box_debug',
416 - 'Debug',
417 - array( &$this, 'meta_box_content_debug' ),
418 - 'easy-opt-ins',
419 - 'side',
420 - 'high'
421 - );
422 - }
423 398 }
424 399
425 - public function meta_box_content_nav() {
426 - ?>
427 - <h2 class="nav-tab-wrapper" style="padding: 0 10px">
428 - <a href="#fca_eoi_meta_box_setup" class="nav-tab nav-tab-active">Choose</a>
429 - <a href="#fca_eoi_meta_box_build" class="nav-tab ">Build</a>
430 - <?php if( FCA_EOI_DEBUG ) : ?>
431 - <a href="#fca_eoi_meta_box_debug" class="nav-tab ">Debug</a>
432 - <?php endif; ?>
433 - </h2>
434 - <?php
435 - }
436 -
437 400 public function meta_box_content_setup() {
438 401
439 - global $post;
440 -
441 402 $layouts_types_labels = array(
442 403 'lightbox' => 'Popups',
443 404 'postbox' => 'Post Boxes',
444 405 'widget' => 'Sidebar Widgets',
406 + 'banner' => 'Optin Bars',
407 + 'overlay' => 'Slide Ins',
445 408 );
409 +
410 + $layout_names = array(
411 + 'banner_10' => __( 'Optin Bar 1', 'easy-opt-ins'),
412 + 'banner_11' => __( 'Optin Bar 2', 'easy-opt-ins'),
413 + 'banner_12' => __( 'Optin Bar 3', 'easy-opt-ins'),
414 + 'overlay_13' => __( 'Slide In Light', 'easy-opt-ins'),
415 + 'overlay_14' => __( 'Slide In Dark', 'easy-opt-ins'),
416 + );
446 417
447 - $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
448 -
449 - echo '<h2>' . __( 'Choose a Layout' ) . '</h2>';
450 - echo '<script id="fca_eoi_texts" type="application/json">{ "headline_copy": "Headline Copy", "description_copy": "Description Copy", "name_placeholder": "Name Placeholder", "email_placeholder": "Email Placeholder", "button_copy": "Button Copy", "privacy_copy": "Privacy Copy" }</script>';
451 -
452 418 // Build the layouts array
453 419 $layouts = $layouts_types = $layouts_types_found = array();
454 - foreach ( glob( $this->settings[ 'plugin_dir' ] . 'layouts/*', GLOB_ONLYDIR ) as $v) {
420 + foreach ( glob( FCA_EOI_PLUGIN_DIR . 'layouts/*', GLOB_ONLYDIR ) as $v) {
455 421 $layouts_types_found[] = basename( $v );
456 422 }
457 423
458 424 $layouts_types_accepted = array_keys( $layouts_types_labels );
@@ -460,9 +426,9 @@
460 426 if ( in_array( $layout_type, $layouts_types_found ) ) {
461 427 $layouts_types[] = $layout_type;
462 428 }
463 429 }
464 -
430 +
465 431 // Layouts types mini-tabs
466 432 echo '<ul class="category-tabs" id="layouts_types_tabs">';
467 433 foreach ( $layouts_types as $layout_type ) {
468 434 K::wrap(
@@ -476,361 +442,86 @@
476 442 'in' => 'a',
477 443 )
478 444 );
479 445 }
446 + echo '<button type="button" class="button button-primary" id="fca_eoi_layout_revert_button" style="display: none">' . __('Back', 'easy-opt-in') . '</button>';
447 +
480 448 echo '</ul>';
481 -
482 - // Layout types
449 +
450 + //GENERATE SCREENSHOTS / OPTIN THEME PICKER
451 + //RN NOTE: MAYBE CACHE THIS
452 + $output = '';
483 453 foreach ( $layouts_types as $layout_type ) {
484 - echo '<div class="fca_eoi_accordion_tab" id="layouts_type_' . $layout_type . '">';
485 454
486 - foreach ( glob( $this->settings[ 'plugin_dir' ] . "layouts/$layout_type/*", GLOB_ONLYDIR ) as $layout_path ) {
487 - // Grab layout details
455 + $output .= "<div class='fca_eoi_accordion_tab' id='layouts_type_$layout_type'>";
456 + $layout_counter = 1;
457 + foreach ( glob( FCA_EOI_PLUGIN_DIR . "layouts/$layout_type/*", GLOB_ONLYDIR ) as $layout_path ) {
488 458 $layout_id = basename( $layout_path );
459 +
460 +
461 +
462 + $layout_helper = new EasyOptInsLayout( $layout_id );
463 + $layout_type = ucfirst ( $layout_helper->layout_type );
489 464
490 - $layout_helper = new EasyOptInsLayout( $layout_id );
491 - $layout_type = $layout_helper->layout_type;
492 - $php_path = $layout_helper->path_to_resource( 'layout', 'php' );
493 - $html_path = $layout_helper->path_to_resource( 'layout', 'html' );
494 - $html_wrap_path = $layout_helper->path_to_html_wrapper();
495 - $scss_path = $layout_helper->path_to_resource( 'layout', 'scss' );
496 465 $screenshot_path = $layout_helper->path_to_resource( 'screenshot', 'png' );
497 466 $screenshot_url = $layout_helper->url_to_resource( 'screenshot', 'png' );
498 -
499 - include $php_path;
500 - if ( EasyOptInsLayout::uses_new_css() ) {
501 - $layout[ 'css' ] = file_exists( $scss_path )
502 - ? '#fca_eoi_preview_form_container {' .
503 - file_get_contents( $scss_path ) .
504 - '.fca_eoi_layout_popup_close {' .
505 - 'display: none;' .
506 - '}' .
507 - '}'
508 - : ''
509 - ;
467 + $screenshot = file_exists( $screenshot_path ) ? $screenshot_url : FCA_EOI_PLUGIN_URL . '/layouts/no-image.jpg';
468 +
469 + if ( array_key_exists ( $layout_id, $layout_names ) ) {
470 + $layout_name = $layout_names[$layout_id];
510 471 } else {
511 - $layout[ 'css' ] = file_exists( $scss_path )
512 - ? file_get_contents( $scss_path)
513 - : ''
514 - ;
472 + $layout_name = ucfirst ( str_replace( 'layout', 'widget', str_replace('_', ' ', $layout_id) ) );
473 + $layout_name = str_replace( array('Postbox 0', 'Widget 0'), 'No CSS', $layout_name );
515 474 }
516 -
517 - // Add $ltr SASS variable
518 - $layout[ 'css' ] = sprintf( '$ltr: %s;', is_rtl() ? 'false' : 'true' )
519 - . $layout[ 'css' ]
520 - ;
521 - $scss = $layout_helper->new_scss_compiler();
522 - $layout[ 'css' ] = $scss->compile( $layout[ 'css' ] );
523 - if ( EasyOptInsLayout::uses_new_css() ) {
524 - $layout[ 'template' ] = str_replace(
525 - '{{{layout}}}',
526 - file_get_contents( $html_path ),
527 - file_get_contents( $html_wrap_path )
528 - );
529 - } else {
530 - $layout[ 'template' ] = file_get_contents( $html_path );
531 - }
532 - $layout[ 'template' ] = str_replace(
533 - array(
534 - '<form',
535 - '/form',
536 - '{{{description_copy}}}',
537 - '{{{headline_copy}}}',
538 - '{{{name_field}}}',
539 - '{{{email_field}}}',
540 - '{{{submit_button}}}',
541 - '{{{privacy_copy}}}',
542 - '{{{fatcatapps_link}}}'
543 - )
544 - , array(
545 - EasyOptInsLayout::uses_new_css()
546 - ? '<div id="fca_eoi_preview_form_container">' .
547 - '<div id="fca_eoi_preview_form_wrapper">' .
548 - '<div id="fca_eoi_preview_form" class="' .
549 - 'fca_eoi_layout_' . $layout_helper->layout_number . ' ' .
550 - $layout_helper->layout_class .
551 - '"'
552 - : '<div id="fca_eoi_preview_form" class="fca_eoi_' . $layout_id . '"',
553 - EasyOptInsLayout::uses_new_css()
554 - ? '/div></div></div'
555 - : '/div',
556 - '<div data-fca-eoi-fieldset-id ="description">{{{description_copy}}}</div>',
557 - EasyOptInsLayout::uses_new_css()
558 - ? '<div data-fca-eoi-fieldset-id ="headline" id="fca_eoi_preview_headline_copy">{{{headline_copy}}}</div>'
559 - : '<span data-fca-eoi-fieldset-id ="headline" id="fca_eoi_preview_headline_copy">{{{headline_copy}}}</span>',
560 - EasyOptInsLayout::uses_new_css()
561 - ? '<input class="fca_eoi_form_input_element" type="text" placeholder="{{{name_placeholder}}}">'
562 - : '<input data-fca-eoi-fieldset-id ="name_field" type="text" placeholder="{{{name_placeholder}}}" />',
563 - EasyOptInsLayout::uses_new_css()
564 - ? '<input class="fca_eoi_form_input_element" type="email" placeholder="{{{email_placeholder}}}">'
565 - : '<input data-fca-eoi-fieldset-id ="email_field" type="email" placeholder="{{{email_placeholder}}}" />',
566 - EasyOptInsLayout::uses_new_css()
567 - ? '<input class="fca_eoi_form_button_element" data-fca-eoi-fieldset-id ="button" type="submit" value="{{{button_copy}}}">'
568 - : '<input data-fca-eoi-fieldset-id ="button" type="submit" value="{{{button_copy}}}" />',
569 - EasyOptInsLayout::uses_new_css()
570 - ? '<div data-fca-eoi-fieldset-id="privacy">{{{privacy_copy}}}</div>'
571 - : '<span data-fca-eoi-fieldset-id ="privacy">{{{privacy_copy}}}</span>',
572 - EasyOptInsLayout::uses_new_css()
573 - ? '{{#show_fatcatapps_link}}<div class="fca_eoi_layout_fatcatapps_link_wrapper fca_eoi_form_text_element"><span data-fca-eoi-fieldset-id ="fatcatapps"><a href="#" onclick="javascript:return false">Powered by Optin Cat</a></span></div>{{/show_fatcatapps_link}}'
574 - : '{{#show_fatcatapps_link}}<p class="fca_eoi_' . $layout_id . '_fatcatapps_link_wrapper"><span data-fca-eoi-fieldset-id ="fatcatapps"><a href="#" onclick="javascript:return false">Powered by Optin Cat</a></span></p>{{/show_fatcatapps_link}}',
575 - )
576 - , $layout[ 'template' ]
577 - );
578 - $layout[ 'template' ] .= sprintf( '<style>%s</style>', $layout[ 'css' ] );
579 - $layouts[ $layout_id ] = $layout;
580 - // Output the layout image and hidden template
581 - $layout_output_tpl = '
582 - <div class="fca_eoi_layout has-tip" data-layout-id=":id" data-layout-type=":type">
583 - <img src=":src" />
584 - <div class="fca_eoi_layout_info">
585 - <h3>:name</h3>
586 - </div>
587 - <script id="fca_eoi_tpl_:id" type="x-tmpl-mustache">:template</script>
588 - <script id="fca_eoi_editables_:id" type="application/json">:editables</script>
589 - <script id="fca_eoi_texts_:id" type="application/json">:texts</script>
590 - </div>
591 - ';
592 - $layout_output = str_replace(
593 - array(
594 - ':id',
595 - ':type',
596 - ':name',
597 - ':src',
598 - ':template',
599 - ':editables',
600 - ':texts',
601 - ),
602 - array(
603 - $layout_id,
604 - $layout_type,
605 - $layout[ 'name' ],
606 - file_exists( $screenshot_path )
607 - ? $screenshot_url
608 - : $this->settings[ 'plugin_url' ] . '/layouts/no-image.jpg'
609 - ,
610 - $layout[ 'template' ],
611 - ! empty( $layout[ 'editables' ] )
612 - ? json_encode( $layout[ 'editables' ] )
613 - : 'null'
614 - ,
615 - ! empty( $layout[ 'texts' ] )
616 - ? json_encode( $layout[ 'texts' ] )
617 - : 'null'
618 - ,
619 - ),
620 - $layout_output_tpl
621 - );
622 -
623 - // Add autocolors
624 - if( ! empty( $layout[ 'autocolors' ] ) ) {
625 - foreach ($layout[ 'autocolors' ] as $autocolor ) {
626 - $layout_output .= '
627 - <script>
628 - jQuery( document ).ready( function( $ ) {
629 -
630 - var source = "[name*=\'' . $autocolor[ 'source' ] . '\']";
631 - var destination = "[name*=\'' . $autocolor[ 'destination' ] . '\']";
632 -
633 - $( destination ).closest( "p" ).hide();
634 -
635 - $( document ).on( "change", source, function() {
636 - var v = $(this).val();
637 - if( ! v ) {
638 - $( destination ).val( "" );
639 - return ;
640 - }
641 -
642 - var c = tinycolor( v );'
643 - ;
644 - foreach ( $autocolor[ 'operations'] as $op => $val ) {
645 - $layout_output .= '
646 - c = c.' . $op. '( ' . 1*$val . ' );
647 - ';
648 - }
649 - $layout_output .= '
650 - $( destination ).val( c.toString() );
651 - $( destination ).blur();
652 - } );
653 - } );
654 - </script>'
655 - ;
656 - }
657 - }
658 -
659 - echo $layout_output;
475 +
476 + $output .= "<div class='fca_eoi_layout has-tip fca_eoi_layout_preview' data-layout-id='$layout_id' data-layout-type='$layout_type'>";
477 + $output .= "<img src='$screenshot'>";
478 + $output .= "<div class='fca_eoi_layout_info'>";
479 + $output .= "<h3>$layout_name</h3>";
480 + $output .= "</div>";
481 + $output .= "</div>";
482 +
483 + $layout_counter = $layout_counter + 1;
660 484 }
661 - echo '</div>';
485 + $output .= "</div>";
486 +
662 487 }
663 - echo '<br clear="all"/>';
664 -
665 - // Prepare layouts array (id->name) for K
666 - $layouts_array = array();
667 - foreach ( $layouts as $layout_id => $layout ) {
668 - $layouts_array[ $layout_id ] = $layout[ 'name' ];
669 - }
670 -
671 - // Print hidden select box, it will be controlled by images (UI)
672 - K::select(
673 - 'fca_eoi[layout]',
674 - array(
675 - 'class' => 'hidden',
676 - 'id' => 'fca_eoi_layout_select',
677 - ),
678 - array(
679 - 'options' => $layouts_array,
680 - 'selected' => K::get_var( 'layout', $fca_eoi ),
681 - )
682 - );
683 -
684 - // Prepare the properties fields templates
685 - $property_templates[ 'color' ] = K::input( '{{property_name}}',
686 - array(
687 - 'class' => sprintf(
688 - "color { hash: true, caps: false, required: false, pickerPosition: '%s' }"
689 - , is_rtl() ? 'right' : 'left'
690 - ),
691 - 'value' => '{{property_value}}',
692 - ),
693 - array(
694 - 'format' => '<p class="clear"><label><span class="control-title">{{property_label}}</span><br />:input <a href="#transparent">None</a></label></p>',
695 - 'nocolorpicker' => true,
696 - 'return' => true,
697 - )
698 - );
699 - $property_templates[ 'icon' ] = K::input( '{{property_name}}',
700 - array(
701 - 'data-value-unchecked' => '{{property_value_unchecked}}',
702 - 'data-is-checked' => '{{property_is_checked}}',
703 - 'type' => 'checkbox',
704 - 'value' => '{{property_value}}',
705 - ),
706 - array(
707 - 'format' => '<p class="control-property-icon"><label class="fca_eoi_toggle">{{{icon}}} :input</label></p>',
708 - 'return' => true,
709 - )
710 - );
711 - $property_templates[ 'font-size' ] = K::select( '{{property_name}}',
712 - array(
713 - 'data-selected' => '{{selected}}',
714 - ),
715 - array(
716 - 'format' => '<p class="clear"><label><span class="control-title">{{property_label}}</span><br />:select</label></p>',
717 - 'options' => array(
718 - 'none' => '',
719 - '7px' => '7px',
720 - '8px' => '8px',
721 - '9px' => '9px',
722 - '10px' => '10px',
723 - '11px' => '11px',
724 - '12px' => '12px',
725 - '13px' => '13px',
726 - '14px' => '14px',
727 - '15px' => '15px',
728 - '16px' => '16px',
729 - '17px' => '17px',
730 - '18px' => '18px',
731 - '19px' => '19px',
732 - '20px' => '20px',
733 - '21px' => '21px',
734 - '22px' => '22px',
735 - '23px' => '23px',
736 - '24px' => '24px',
737 - '25px' => '25px',
738 - '26px' => '26px',
739 - '27px' => '27px',
740 - '28px' => '28px',
741 - '29px' => '29px',
742 - '30px' => '30px',
743 - '31px' => '31px',
744 - '32px' => '32px',
745 - '33px' => '33px',
746 - '34px' => '34px',
747 - '35px' => '35px',
748 - '36px' => '36px',
749 - ),
750 - 'selected' => 'none',
751 - 'return' => true,
752 - )
753 - );
754 -
755 - // Print the proprties fields templates
756 - foreach ( $property_templates as $prop => $property_template) {
757 - echo '<script id="fca_eoi_property_' . $prop . '" type="x-tmpl-mustache">' . $property_template . '</script>';
758 - }
759 -
760 - // Print a copy of the current settings
761 - echo
762 - '<script id="fca_eoi_post_meta" type="application/json">'
763 - . ( $fca_eoi ? json_encode( $fca_eoi ) : '{}' )
764 - . '</script>'
765 - ;
488 + $output .= '<br clear="all">';
489 + echo $output;
766 490 }
767 491
768 492 public function meta_box_content_provider() {
769 -
493 +
770 494 global $post;
771 495 $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
772 - $providers_available = array_keys( $this->settings[ 'providers' ] );
496 +
497 + //DISABLE CUSTOM FORM
498 + $allow_customform = get_option ( 'fca_eoi_allow_customform', 'false' );
499 + if ( $allow_customform == 'false' ) {
500 + $providers = $this->settings[ 'providers' ];
501 + unset ( $providers['customform'] );
502 + $providers_available = array_keys( $providers );
503 + } else {
504 + $providers_available = array_keys( $this->settings[ 'providers' ] );
505 + }
506 +
773 507 $providers_options = array();
774 - $screen = get_current_screen();
775 - $fca_eoi_last_3_forms = $this->settings[ 'fca_eoi_last_3_forms' ];
776 508
777 - // @todo: remove
778 - // Hack for mailchimp upgrade
779 - $fca_eoi[ 'mailchimp_list_id' ] = K::get_var(
780 - 'mailchimp_list_id'
781 - , $fca_eoi
782 - , K::get_var( 'list_id' , $fca_eoi )
783 - );
784 - if( K::get_var( 'list_id' , $fca_eoi ) ) {
785 - $fca_eoi[ 'provider' ] = 'mailchimp';
786 - }
787 - // End of hack
788 - // Hack for campaignmonitor upgrade
789 - $fca_eoi[ 'campaignmonitor_list_id' ] = K::get_var(
790 - 'campaignmonitor_list_id'
791 - , $fca_eoi
792 - , K::get_var( 'list_id' , $fca_eoi )
793 - );
794 - if( strlen( K::get_var( 'campaignmonitor_list_id' , $fca_eoi ) ) == 32){
795 - $fca_eoi[ 'provider' ] = 'campaignmonitor';
796 - }
797 - // End of hack
798 - // Hack for getresponse upgrade
799 - $fca_eoi[ 'getresponse_list_id' ] = K::get_var(
800 - 'getresponse_list_id'
801 - , $fca_eoi
802 - , K::get_var( 'list_id' , $fca_eoi )
803 - );
804 - if( K::get_var( 'list_id' , $fca_eoi ) ) {
805 - $fca_eoi[ 'provider' ] = 'getresponse';
806 - }
807 - // End of hack
808 -
809 509 // Prepare providers options
810 - foreach ($this->settings[ 'providers' ] as $provider_id => $provider ) {
510 + foreach ( $this->settings[ 'providers' ] as $provider_id => $provider ) {
811 511 $providers_options[ $provider_id ] = $provider[ 'info' ][ 'name' ];
812 512 }
813 513
514 + if ( $allow_customform == 'false') {
515 + unset ( $providers_options['customform'] );
516 + }
517 +
814 518 // Provider choice if there are many providers
815 519 if ( 1 < count( $providers_available) ) {
816 520
817 - $last_date = 0;
818 - $provider = 'mailchimp'; // use mailchimp by default
819 - foreach ( $fca_eoi_last_3_forms as $form ) {
820 - if ( ! empty( $form['fca_eoi'] ) ) {
821 - $post_date = strtotime( $form['post']->post_date );
822 -
823 - foreach ( array_keys( $form['fca_eoi'] ) as $key ) {
824 - $pos = strpos( $key, '_list_id' );
825 - if ( $pos !== false && $post_date > $last_date ) {
826 - $provider = substr( $key, 0, $pos );
827 - $last_date = $post_date;
828 - }
829 - }
830 - }
831 - }
832 -
521 + $provider = get_option( 'fca_eoi_last_provider', '' );
522 + $provider = empty($provider) ? 'mailchimp' : $provider; // use mailchimp by default
523 +
833 524 K::select( 'fca_eoi[provider]'
834 525 , array(
835 526 'class' => 'select2',
836 527 'style' => 'width: 27em;',
@@ -842,466 +533,347 @@
842 533 )
843 534 );
844 535 }
845 536
846 - $providers_available = array_keys( $this->settings[ 'providers' ] );
847 537 foreach ( $providers_available as $provider ) {
848 538 call_user_func( $provider . '_integration', $this->settings );
849 539 }
850 540 }
541 +
542 + //SEND JS TEMPLATE DATA FOR RULE CREATION
543 + public function prepare_publish_rules_html( $rules = array() ) {
544 +
545 + switch ( $this->settings['distribution'] ) {
546 + case 'free':
547 + $conditions_options = array(
548 + '' => __( 'Choose a rule...' ),
549 + 'time_on_page' => __( 'Time on page' ),
550 + );
551 + ob_start();
552 + ?>
553 + <tr>
554 + <th><select class="fca_eoi_condition_select">
555 + <option selected="selected">
556 + Choose a rule...
557 + </option>
851 558
852 - public function meta_box_content_publish() {
559 + <option value="scrolled_percent">
560 + Scrolled down
561 + </option>
562 + <optgroup label="Premium Only">
563 +
564 + <option value="pageviews" disabled>
565 + Number of Pageviews
566 + </option>
853 567
854 - global $post;
855 - $screen = get_current_screen();
568 + <option value="time_on_page" disabled>
569 + Time on page
570 + </option>
856 571
572 + <option value="include" disabled>
573 + Only display on these pages
574 + </option>
575 +
576 + <option value="exclude" disabled>
577 + Never display on these pages
578 + </option>
579 +
580 + <option value="exit_intervention" disabled>
581 + Exit Intervention
582 + </option>
583 + </optgroup>
584 + </select><span class='fca_eoi_at_least' style=
585 + 'display:none'>at&nbsp;least</span></th>
586 +
587 + <td></td>
588 +
589 + <td class='fca_eoi_delete_condition' title='Click to remove'><span class='fca_eoi_close_icon dashicons dashicons-no'></span></td>
590 + </tr>
591 +
592 + <?php
593 +
594 + $rowNew = ob_get_clean();
595 + break;
596 +
597 + case 'premium':
598 +
599 + $conditions_options = array(
600 + '' => __( 'Choose a rule...' ),
601 + 'scrolled_percent' => __( 'Scrolled down' ),
602 + 'pageviews' => __( 'Number of Pageviews' ),
603 + 'time_on_page' => __( 'Time on page' ),
604 + 'include' => __( 'Only display on these pages' ),
605 + 'exclude' => __( 'Never display on these pages' ),
606 + 'exit_intervention' => __( 'Exit Intervention' ),
607 + );
608 +
609 + $rowNew = "<tr><th>" .
610 + K::select(
611 + '',
612 + array(
613 + 'class' => 'fca_eoi_condition_select',
614 + ),
615 + array(
616 + 'options' => $conditions_options,
617 + 'return' => true,
618 + )
619 + ) . "<span class='fca_eoi_at_least' style='display:none' >at&nbsp;least</span></th><td></td><td class='fca_eoi_delete_condition' title='Click to remove'><span class='fca_eoi_close_icon dashicons dashicons-no'></span></td></tr>";
620 +
621 + break;
622 + }
623 +
624 + $ruleTableHtml = array (
625 + 'rowNew' => $rowNew,
626 +
627 + 'dataScroll' => K::input(
628 + 'fca_eoi[publish_lightbox][conditions][scrolled_percent]',
629 + array(
630 + 'type' => 'number',
631 + 'min' => '0',
632 + 'max' => '100',
633 + 'value' => '30',
634 + 'class' => '',
635 + ),
636 + array(
637 + 'return' => true,
638 + )
639 + ) . '&nbsp;%',
640 +
641 + 'dataPageviews' => K::input(
642 + 'fca_eoi[publish_lightbox][conditions][pageviews]',
643 + array(
644 + 'type' => 'number',
645 + 'min' => '0',
646 + 'value' => '2',
647 + 'class' => '',
648 + ),
649 + array(
650 + 'return' => true,
651 + )
652 + ) . '&nbsp;pageviews',
653 +
654 + 'dataTime' => K::input(
655 + 'fca_eoi[publish_lightbox][conditions][time_on_page]',
656 + array(
657 + 'type' => 'number',
658 + 'min' => '0',
659 + 'value' => '30',
660 + 'class' => '',
661 + ),
662 + array(
663 + 'return' => true,
664 + )
665 + ) . '&nbsp;seconds',
666 +
667 + 'dataExit' => K::input( 'fca_eoi[publish_lightbox][conditions][exit_intervention]',
668 + array(
669 + 'type' => 'checkbox',
670 + 'class' => 'switch-input'
671 + ),
672 + array(
673 + 'format' => '<label class="switch">:input<span class="switch-label" data-on="On" data-off="Off"></span><span class="switch-handle"></span></label>',
674 + 'return' => true,
675 + )
676 + ),
677 +
678 + 'dataInclude' => k_selector( 'fca_eoi[publish_lightbox][conditions][include]', array(), true ),
679 + 'dataExclude' => k_selector( 'fca_eoi[publish_lightbox][conditions][exclude]', array(), true ),
680 + );
681 +
682 + wp_localize_script( 'fca-eoi-rules', 'fcaEoiRuleTableHtml', $ruleTableHtml );
683 + wp_localize_script( 'fca-eoi-rules', 'fcaEoiRules', $rules );
684 + wp_localize_script( 'fca-eoi-rules', 'fcaEoiDistro', $this->settings['distribution'] );
685 + }
686 +
687 + public function meta_box_content_publish( $post ) {
688 +
857 689 $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
858 -
859 - // Widgets
690 +
691 + $conditions = empty( $fca_eoi['publish_lightbox']['conditions'] ) ? array() : $fca_eoi['publish_lightbox']['conditions'];
692 + $this->prepare_publish_rules_html( $conditions );
693 +
860 694 K::wrap(
861 695 sprintf(
862 - __( 'You can publish this optin box by going to <a href="%s" target="_blank">Appearance › Widgets</a>')
863 - , admin_url( 'widgets.php')
864 - )
865 - , array( 'id' => 'fca_eoi_publish_widget' )
866 - , array( 'in' => 'p' )
696 + __( 'You can publish this optin box by going to <a href="%s" target="_blank">Appearance › Widgets</a>'),
697 + admin_url( 'widgets.php')
698 + ),
699 + array( 'id' => 'fca_eoi_publish_widget' ),
700 + array( 'in' => 'p' )
867 701 );
868 702
869 703 // Post boxes
870 704 echo '<div id ="fca_eoi_publish_postbox">';
871 - K::wrap( __( 'Shortcode')
872 - , array( 'style' => 'padding-left: 0px; padding-right: 0px; ' )
873 - , array( 'in' => 'h3' )
874 - );
875 - K::wrap( __( "Copy and paste beneath shortcode anywhere on your site where you'd like this opt-in form to appear." )
876 - , null
877 - , array( 'in' => 'p' )
878 - );
879 - K::input( ''
880 - , array(
881 - 'class' => 'regular-text autoselect',
882 - 'readonly' => 'readonly',
883 - 'value' => sprintf( '[%s id=%d]', $this->settings[ 'shortcode' ], $post->ID ),
884 - )
885 - , array( 'format' => '<p>:input</p>', )
886 - );
887 - K::wrap( __( 'Append to post or page')
888 - , array( 'style' => 'padding-left: 0px; padding-right: 0px; ' )
889 - , array( 'in' => 'h3' )
890 - );
891 - K::wrap( __( 'Automatically append this optin to the following posts, categories and/or pages.' )
892 - , null
893 - , array( 'in' => 'p' )
894 - );
895 - k_selector( 'fca_eoi[publish_postbox]', K::get_var( 'publish_postbox', $fca_eoi, array() ) );
705 + K::wrap( __( 'Shortcode'),
706 + array( 'style' => 'padding-left: 0px; padding-right: 0px; ' ),
707 + array( 'in' => 'h3' )
708 + );
709 + K::wrap( __( "Copy and paste beneath shortcode anywhere on your site where you'd like this opt-in form to appear." ),
710 + null,
711 + array( 'in' => 'p' )
712 + );
713 + K::input( '',
714 + array(
715 + 'class' => 'regular-text autoselect',
716 + 'readonly' => 'readonly',
717 + 'value' => sprintf( '[%s id=%d]', $this->settings[ 'shortcode' ], $post->ID ),
718 + ),
719 + array( 'format' => '<p>:input</p>', )
720 + );
721 + K::wrap( __( 'Append to post or page'),
722 + array( 'style' => 'padding-left: 0px; padding-right: 0px; ' ),
723 + array( 'in' => 'h3' )
724 + );
725 + K::wrap( __( 'Automatically append this optin to the following posts, categories and/or pages.' ),
726 + null,
727 + array( 'in' => 'p' )
728 + );
729 + k_selector( 'fca_eoi[publish_postbox]', K::get_var( 'publish_postbox', $fca_eoi, array() ) );
896 730 echo '</div>';
897 731
898 732 // Lightboxes
899 733
900 - switch ( $this->settings['distribution'] ) {
901 - case 'free':
902 - $conditions_options = array(
903 - 'time_on_page' => 'Time on page is at least (second)',
904 - );
905 - break;
906 - case 'premium':
907 - $conditions_options = array(
908 - 'pageviews' => 'Number of pageviews during this visit at least',
909 - 'scrolled_percent' => 'Scrolled down on current page at least (%)',
910 - 'time_on_page' => 'Time on page is at least (second)',
911 - 'include' => 'Only show popup on the following posts/pages',
912 - 'exclude' => 'Never show popup on the following posts/pages',
913 - 'exit_intervention' => 'User is about to close the page (Exit Intervention)'
914 - );
915 - break;
916 - }
917 -
734 +
918 735 $fca_eoi[ 'publish_lightbox' ] = K::get_var( 'publish_lightbox', $fca_eoi, array() );
919 - echo "<div id ='fca_eoi_publish_lightbox'>";
920 736
921 - if ( 'premium' === $this->settings[ 'distribution' ] ) {
922 - K::input( 'fca_eoi[publish_lightbox_mode]'
923 - , array(
924 - 'type' => 'radio',
925 - 'value' => 'two_step_optin',
926 - 'checked' => 'two_step_optin' === K::get_var( 'publish_lightbox_mode', $fca_eoi ),
927 - )
928 - , array(
929 - 'format' => '<p><label>:input Two-Step Optin (Trigger popup only when the visitor clicks on a call to action link)</label></p>',
930 - )
931 - );
932 - }
933 -
934 - K::input( 'fca_eoi[publish_lightbox_mode]'
935 - , array(
936 - 'type' => 'radio',
937 - 'value' => 'traditional_popup',
938 - 'checked' => 'traditional_popup' === K::get_var( 'publish_lightbox_mode', $fca_eoi ),
939 - )
940 - , array(
941 - 'format' => '<p><label>:input Traditional Popup (Trigger popup when the visitor is browsing your site)</label></p>',
942 - )
943 - );
944 - ?>
945 -
946 - <hr />
947 -
948 - <?php // Condition always present ?>
949 - <div id="fca_eoi_publish_lightbox_mode_traditional_popup" class="hidden">
950 - <fieldset class="fca_lightbox_condition fca_lightbox_condition_permanent">
951 - <span class="fca_lightbox_condition_text"><?php _e('Show popup'); ?></span><?php
952 - K::select(
953 - 'fca_eoi[publish_lightbox][show_every]'
954 - , array()
955 - , array(
956 - 'options' => array(
957 - 'never' => __( 'Never' ),
958 - 'always' => __( 'On every pageview' ),
959 - 'session' => __( 'Once per visit' ),
960 - 'day' => __( 'Once per day' ),
961 - 'month' => __( 'Once per month' ),
962 - 'once' => __( 'Only once' ),
737 +
738 + echo "<div id='fca_eoi_publish_lightbox'>";
739 +
740 + echo '<div id="publish_lightbox_mode_selector_div">';
741 + if ( 'premium' === $this->settings[ 'distribution' ] ) {
742 +
743 + K::input( 'fca_eoi[publish_lightbox_mode]',
744 + array(
745 + 'type' => 'radio',
746 + 'value' => 'two_step_optin',
747 + 'checked' => 'two_step_optin' === K::get_var( 'publish_lightbox_mode', $fca_eoi ),
963 748 ),
964 - 'selected' => K::get_var( 'show_every', $fca_eoi[ 'publish_lightbox' ] ),
965 - )
966 - );
967 - ?>
968 - <p class="fca_eoi_help"><?php _e( 'Set how frequently to show the popup. (Never means the popup is deactivated.)' ); ?></p>
969 - </fieldset>
970 - <?php
971 - // Saved conditions
972 - $saved_conditions = array();
973 - $saved_conditions = K::get_var( 'conditions', $fca_eoi[ 'publish_lightbox' ], array() );
749 + array(
750 + 'format' => '<p><label>:input Two-Step Optin (Trigger popup only when the visitor clicks on a call to action link)</label></p>',
751 + )
752 + );
753 + }
974 754
975 - // Add default if creating a new form
976 - if ( 'add' === $screen->action ) {
977 - $saved_conditions = array(
978 - '_'.time().'001' => array(
979 - 'parameter' => 'pageviews',
980 - 'value' => '2',
755 + K::input( 'fca_eoi[publish_lightbox_mode]',
756 + array(
757 + 'type' => 'radio',
758 + 'value' => 'traditional_popup',
759 + 'checked' => 'traditional_popup' === K::get_var( 'publish_lightbox_mode', $fca_eoi ),
981 760 ),
982 - '_'.time().'002' => array(
983 - 'parameter' => 'scrolled_percent',
984 - 'value' => '30',
985 - ),
986 - '_'.time().'003' => array(
987 - 'parameter' => 'time_on_page',
988 - 'value' => '30',
989 - ),
990 - );
991 - }
992 -
993 - foreach ( $saved_conditions as $condition_id => $condition ) {
994 - // Skip conditions that are not available in version
995 - if ( ! array_key_exists( $condition[ 'parameter' ], $conditions_options ) ) {
996 - continue;
997 - }
998 -
999 - $select = K::select( "fca_eoi[publish_lightbox][conditions][$condition_id][parameter]"
1000 - , array()
1001 - , array(
1002 - 'selected' => $condition['parameter'],
1003 - 'options' => $conditions_options,
1004 - 'return' => 'true',
761 + array(
762 + 'format' => '<p><label>:input Traditional Popup (Trigger popup when the visitor is browsing your site)</label></p>',
1005 763 )
1006 764 );
765 + echo '</div>';
1007 766
1008 - if ( in_array( $condition['parameter'], array( 'include', 'exclude' ) ) ) {
1009 - $input = k_selector( "fca_eoi[publish_lightbox][conditions][$condition_id][value]"
1010 - , K::get_var( 'value', $condition, array() )
1011 - , true
1012 - );
1013 - } else if ( $condition['parameter'] == 'exit_intervention' ) {
1014 - $input = K::input( "fca_eoi[publish_lightbox][conditions][$condition_id][value]"
1015 - , array(
1016 - 'type' => 'hidden',
1017 - 'value' => ''
1018 - )
1019 - , array(
1020 - 'return' => true
1021 - )
1022 - );
1023 - } else {
1024 - $input = K::input( "fca_eoi[publish_lightbox][conditions][$condition_id][value]"
1025 - , array(
1026 - 'class' => 'medium-text',
1027 - 'type' => 'text',
1028 - 'value' => $condition['value'],
1029 - )
1030 - , array(
1031 - 'return' => true,
1032 - )
1033 - );
1034 - }
767 + echo '<div id="fca_eoi_publish_lightbox_mode_traditional_popup">';
768 + echo "<h3>Rules</h3>";
769 +
770 + echo "<table class='fca_eoi_display_rules_table'>";
771 + echo "<tr><th>Display Frequency" . fca_eoi_tooltip ( __('Set the minimum time between visits your optin will display to each user', 'easy-opt-ins') ) . "</th><td>";
772 + K::select(
773 + 'fca_eoi[publish_lightbox][show_every]',
774 + array(),
775 + array(
776 + 'options' => array(
777 + 'always' => __( 'On every pageview' ),
778 + 'session' => __( 'Once per visit' ),
779 + 'day' => __( 'Once per day' ),
780 + 'month' => __( 'Once per month' ),
781 + 'once' => __( 'Only once' ),
782 + ),
783 + 'selected' => K::get_var( 'show_every', $fca_eoi[ 'publish_lightbox' ], 'month' ),
784 + )
785 + );
786 + echo "</td></tr>";
787 +
788 + echo "<tr><th>Devices to Display on</th><td>";
789 + K::select(
790 + 'fca_eoi[publish_lightbox][devices]',
791 + array(),
792 + array(
793 + 'options' => array(
794 + 'desktop' => __( 'Desktop Only' ),
795 + 'mobile' => __( 'Mobile Only' ),
796 + 'all' => __( 'Desktop & Mobile' ),
797 + ),
798 + 'selected' => K::get_var( 'devices', $fca_eoi[ 'publish_lightbox' ], 'all' ),
799 + )
800 + );
801 + echo "</td></tr>";
802 +
803 + echo "<tr><th>Success Cookie Duration" . fca_eoi_tooltip ( __('The number of days before the optin will display again once the user successfully opts in to your campaign.', 'easy-opt-ins') ) . "</th><td>";
804 + K::input( 'fca_eoi[publish_lightbox][success_duration]',
805 + array(
806 + 'type' => 'number',
807 + 'class' => 'regular-text',
808 + 'min' => 0,
809 + 'value' => K::get_var( 'success_duration', $fca_eoi[ 'publish_lightbox' ], 365 ),
810 + )
811 + );
812 +
813 + echo " days</td></tr>";
814 +
1035 815
1036 - $condition_HTML_inner = ''
1037 - . $select
1038 - . $input
1039 - . ' '
1040 - . '<span class="button fca_remove_lightbox_condition"><span style="vertical-align:text-bottom" class="dashicons dashicons-no"></span> Remove Rule</span>'
1041 - . '<p class="fca_eoi_help"></p>'
1042 - ;
1043 - echo '<div class="fca_eoi_and">- And -</div>';
1044 - K::wrap( $condition_HTML_inner
1045 - , array(
1046 - 'id' => 'fca_lightbox_condition' . $condition_id,
1047 - 'class' => 'fca_lightbox_condition',
1048 - 'style' => '
1049 - padding: .5%;
1050 - margin:.5% 0;
1051 - box-shadow: 0 0 1px rgba(0, 0, 0, .2);
1052 - width: 97%;
1053 - background:#F7F7F7;
1054 - ',
1055 - )
1056 - , array(
1057 - 'in' => 'fieldset',
1058 - )
1059 - );
1060 - }
1061 - ?>
816 + echo "</table>";
817 +
818 + echo "<table class='fca_eoi_display_rules_table' id='fca_eoi_primary_rules_table' >";
819 + //to be filled dynamically?
820 + echo "</table>";
821 +
822 + echo "<a href='#' id='fca_eoi_add_rule'>+ Add a rule</a>";
823 +
824 + echo "<h3>Go Live</h3>";
825 + echo "<table class='fca_eoi_display_rules_table' >";
826 + echo "<tr><th>Deployed (makes this optin go live)</th><td>";
827 + K::input( 'fca_eoi[publish_lightbox][live]',
828 + array(
829 + 'type' => 'checkbox',
830 + 'checked' => K::get_var( 'live', $fca_eoi[ 'publish_lightbox' ], '' ),
831 + 'class' => 'switch-input'
832 + ),
833 + array(
834 + 'format' => '<label class="switch">:input<span class="switch-label" data-on="On" data-off="Off"></span><span class="switch-handle"></span></label>'
835 + )
836 + );
837 + echo "</td></tr>";
838 + echo "</table>";
839 + echo "</div>";
840 +
1062 841
1063 - <?php /* Button to add conditions */ ?>
1064 - <p><span class="button" id="fca_add_lightbox_condition"><span style="vertical-align:text-bottom" class="dashicons dashicons-plus"></span> Add Rule</span></p>
1065 - </div>
1066 -
1067 - <?php if ( 'premium' === $this->settings[ 'distribution' ] ) { ?>
1068 - <div id="fca_eoi_publish_lightbox_mode_two_step_optin" class="hidden">
1069 - <?php
1070 - K::input( 'fca_eoi[lightbox_cta_text]'
1071 - , array(
1072 - 'value' => K::get_var( 'lightbox_cta_text', $fca_eoi )
1073 - ? K::get_var( 'lightbox_cta_text', $fca_eoi )
1074 - : __( 'Free Download' )
1075 - ,
842 +
843 + if ( 'premium' === $this->settings[ 'distribution' ] ) {
844 +
845 + echo '<div id="fca_eoi_publish_lightbox_mode_two_step_optin">';
846 + echo "<h3>Two-Step</h3>";
847 + K::input( 'fca_eoi[lightbox_cta_text]',
848 + array(
849 + 'value' => K::get_var( 'lightbox_cta_text', $fca_eoi ) ? K::get_var( 'lightbox_cta_text', $fca_eoi ) : __( 'Free Download' ),
1076 850 'class' => 'regular-text',
1077 - )
1078 - , array(
851 + ),
852 + array(
1079 853 'format' => '<p><label>Call to action text :input</label></p>',
1080 854 )
1081 855 );
1082 - K::input( 'fca_eoi[lightbox_cta_link]'
1083 - , array(
856 + K::input( 'fca_eoi[lightbox_cta_link]',
857 + array(
1084 858 'readonly' => 'readonly',
1085 - 'value' => htmlspecialchars( sprintf( '<a href="#" data-optin-cat="%d">%s</a>'
1086 - , $post->ID
1087 - , __( 'Free Download' )
1088 - ) ),
859 + 'value' => htmlspecialchars( sprintf( '<button data-optin-cat="%d">%s</button>',
860 + $post->ID,
861 + __( 'Free Download' ) ) ),
1089 862 'class' => 'regular-text autoselect',
1090 - )
1091 - , array(
863 + ),
864 + array(
1092 865 'format' => '<p><label>Call to action link :input</label></p>',
1093 866 )
1094 867 );
1095 868
1096 - K::wrap( __( 'Post above link into the text editor window of your post/page/widget.' )
1097 - , array( 'class' => 'description' )
1098 - , array( 'in' => 'p' )
869 + K::wrap( __( 'Post above link into the text editor window of your post/page/widget.' ),
870 + array( 'class' => 'description' ),
871 + array( 'in' => 'p' )
1099 872 );
1100 -
1101 - ?>
1102 - </div>
1103 - <?php } ?>
1104 -
1105 - <script>
1106 - jQuery( document ).ready( function( $ ) {
1107 -
1108 - <?php
1109 - $lightbox_help = array(
1110 - 'scrolled_percent' => __( 'Only show this popup to visitors who have scrolled down at least X% on the current page. Someone who scrolls down is engaging with your content and therefore more likely to convert. (Keep in mind that the entire page length, including comments, is included in this calculation.)' ),
1111 - 'pageviews' => __( 'Only show this popup to visitors have viewed at least X pages in this visit. Someone who views multiple pages during a visit is very engaged and therefore more likely to convert.' ),
1112 - 'include' => __( 'Makes sure your popup will only be shown on the posts, pages or categories you select. This is great if you want to set up offers for specific categories or blog posts.' ),
1113 - 'exclude' => __( 'Makes sure your popup will never be shown on the posts, pages or categories you select. This is great if you want to avoid showing your popups on landing pages, checkout pages, order confirmation pages, etc.' ),
1114 - 'exit_intervention' => __( 'Only show this popup to visitors who are about to close the current page.' ),
1115 - 'time_on_page' => __( 'Only show this popup to visitors who have spent at least X seconds on the current page. The longer someone spends on your page, the more engaged he is.' ),
1116 - );
1117 - ?>
1118 -
1119 - var lightbox_help = <?php echo json_encode( $lightbox_help ) ?>;
1120 -
1121 - // Condition template
1122 - <?php if ( 'free' === $this->settings[ 'distribution' ] ) { ?>
1123 - var f = ( '<fieldset id="fca_lightbox_condition_x_" class="fca_lightbox_condition"><select name="fca_eoi[publish_lightbox][conditions][_x_][parameter]"><option value="time_on_page" data-default="30">Time on page is at least (second)</option></select><input class="medium-text" type="text" value="" name="fca_eoi[publish_lightbox][conditions][_x_][value]"/> <span class="button fca_remove_lightbox_condition"><span class="dashicons dashicons-no"></span> Remove Rule</span><p class="fca_eoi_help"></p></fieldset>' );
1124 - <?php } else if ( 'premium' === $this->settings[ 'distribution' ] ) { ?>
1125 - var f = ( '<fieldset id="fca_lightbox_condition_x_" class="fca_lightbox_condition"><select name="fca_eoi[publish_lightbox][conditions][_x_][parameter]"><option value="pageviews" data-default="2">Number of pageviews during this visit at least</option><option value="scrolled_percent" data-default="30">Scrolled down on current page at least (%)</option><option value="time_on_page" data-default="30">Time on page is at least (second)</option><option value="include">Only show popup on the following posts/pages</option><option value="exclude">Never show popup on the following posts/pages</option><option value="exit_intervention">User is about to close the page (Exit Intervention)</option></select><input class="medium-text" type="text" value="" name="fca_eoi[publish_lightbox][conditions][_x_][value]"/> <span class="button fca_remove_lightbox_condition"><span class="dashicons dashicons-no"></span> Remove Rule</span><p class="fca_eoi_help"></p></fieldset>' );
1126 - <?php } ?>
1127 -
1128 - <?php
1129 - $s = str_replace( array( "\n", '"' )
1130 - , array( '', '\"' )
1131 - , k_selector( 'fca_eoi[publish_lightbox][conditions][_x_][value]', array(), true )
1132 - );
1133 - ?>
1134 -
1135 - var s = "<?php echo $s; ?>";
1136 -
1137 - var t = '<input class="medium-text" type="text" name="fca_eoi[publish_lightbox][conditions][_x_][value]"/>';
1138 -
1139 - // Disables all but last condition, and use the right input field
1140 - $( document )
1141 - .on( 'change'
1142 - , "select[name^='fca_eoi[publish_lightbox][conditions]['][name$='][parameter]']"
1143 - , function() {
1144 - fix_conditions();
1145 - }
1146 - )
1147 - ;
1148 - $("select[name^='fca_eoi[publish_lightbox][conditions]['][name$='][parameter]']:first").change()
1149 - ;
1150 - function fix_conditions() {
1151 - var $button = $( '#fca_add_lightbox_condition' );
1152 - var $conditions;
1153 -
1154 - $conditions = $( 'select' )
1155 - .filter( "[name^='fca_eoi[publish_lightbox][conditions][']" )
1156 - .filter( "[name$='][parameter]']" )
1157 - ;
1158 - // Prevent changing other conditions
1159 - $conditions
1160 - .not(':last')
1161 - .prop( 'disabled', true )
1162 - ;
1163 - // Allow changing last
1164 - $conditions
1165 - .last()
1166 - .prop( 'disabled', false )
1167 - ;
1168 - // Show hide plus button
1169 - if ( $conditions.length == $(f).find('select:first option').length ) {
1170 - $button.hide();
1171 - } else {
1172 - $button.show();
1173 - }
1174 -
1175 - // Update conditions variable
1176 - $conditions = $( 'select' )
1177 - .filter( "[name^='fca_eoi[publish_lightbox][conditions][']" )
1178 - .filter( "[name$='][parameter]']" )
1179 - ;
1180 -
1181 - /**
1182 - * Show posts selector VS input depending on option.
1183 - * Remove previously selected options.
1184 - * Update help text
1185 - * Use default when applicable (i.e when data-default is here)
1186 - * Remove overflow (condition fieldsets without possible options)
1187 - */
1188 - $conditions.each( function( i ) {
1189 - var $this = $( this );
1190 - var $fieldset = $this.parent();
1191 - var $parameter = $( '[name$="[parameter]"]', $fieldset );
1192 - var $value = $( '[name$="[value]"],[name$="[value][]"]', $fieldset );
1193 - var $input = $value;
1194 - var name = $value.attr( 'name' ).replace(/\[\]/g, '');
1195 - var is_textfield = $value.is( 'input' );
1196 - var is_hidden = ( 'exit_intervention' === $parameter.val() );
1197 - var use_textfield = ( 'include' !== $parameter.val() && 'exclude' !== $parameter.val() );
1198 - var cpt, condition, _default;
1199 -
1200 - // Decide what element to use : input VS select
1201 - if ( use_textfield && ! is_textfield ) {
1202 - $( '.select2', $fieldset ).remove();
1203 - $input = $( t ).attr( 'name', name );
1204 - $parameter.after( $input );
1205 - } else if ( ! use_textfield && is_textfield ) {
1206 - $input = $( s ).attr( 'name', name + '[]' );
1207 - $value.replaceWith( $input );
1208 - }
1209 -
1210 - // Hide or show the input
1211 - $input.attr( 'type', is_hidden ? 'hidden' : 'text' );
1212 -
1213 - // Remove previously selected condition parameters
1214 - $conditions.not($this).find('option[value='+$this.val()+']').remove();
1215 -
1216 - // Update help text
1217 - $( '.fca_eoi_help', $fieldset ).text( lightbox_help[ $parameter.val() ] );
1218 -
1219 - // Use default
1220 - if ( _default = $( ':selected', $parameter).data( 'default' ) ) {
1221 - $value.val( _default );
1222 - $( 'option', $parameter ).data( 'default', '' );
1223 - }
1224 -
1225 - // Remove overflow
1226 - if ( ! $( 'option', $parameter ).length ) {
1227 - $( '.fca_remove_lightbox_condition', $fieldset ).click();
1228 - }
1229 - } );
1230 - $('select.select2').select2();
873 + echo "</div>";
1231 874 }
1232 -
1233 - $( document ).on( 'click', '.fca_remove_lightbox_condition', function( i ) {
1234 -
1235 - var $this = $( this );
1236 - var $opt = $( 'select:first option:selected', $this.parent() )
1237 - .clone()
1238 - .removeAttr( 'selected' )
1239 - ;
1240 -
1241 - $this.parent().remove(); // remove condition row
1242 -
1243 - $('.fca_eoi_and').remove(); // removes "AND"
1244 - $('.fca_lightbox_condition:gt(0)').before( '<div class="fca_eoi_and">- And -</div>' );
1245 -
1246 - $('select')
1247 - .filter( "[name^='fca_eoi[publish_lightbox][conditions][']" )
1248 - .filter( "[name$='][parameter]']" )
1249 - .append( $opt )
1250 - ;
1251 -
1252 - fix_conditions();
1253 - } );
1254 -
1255 -
1256 - $( document ).on( 'click', '#fca_add_lightbox_condition', function() {
1257 -
1258 - var $this = $( this );
1259 - var ts = Date.now();
1260 - var $condition = $( f.replace( /_x_/g, '_' + ts ) );
1261 -
1262 - // Remove already used conditions
1263 - $( 'option', $condition ).each( function() {
1264 - var $this = $( this );
1265 - var val = $this.val();
1266 - var remove = $('select')
1267 - .filter("[name^='fca_eoi[publish_lightbox][conditions][']")
1268 - .filter("[name$='][parameter]']")
1269 - .find('option:selected[value=' + val + ']')
1270 - .length
1271 - ;
1272 -
1273 - if ( remove ) {
1274 - $( this ).remove();
1275 - }
1276 - } );
1277 -
1278 - $this.parent().before( '<div class="fca_eoi_and">- And -</div>' );
1279 - $this.parent().before( $condition );
1280 -
1281 - // Bind removing to minus sign
1282 - $( '.fca_remove_lightbox_condition', '#fca_lightbox_condition_' + ts ).click( function() {
1283 - $( this ).parent().remove();
1284 - } );
1285 -
1286 - // Prevent changing previous conditions
1287 - fix_conditions();
1288 - } );
1289 -
1290 - // Enable disabled conditions fields to allow passing their value to the form action
1291 - $( document ).on( 'submit', '#post', function() {
1292 - $( 'select' )
1293 - .filter( "[name^='fca_eoi[publish_lightbox][conditions][']" )
1294 - .filter( "[name$='][parameter]']" )
1295 - .prop( 'disabled', false )
1296 - ;
1297 - } );
1298 - } );
1299 -
1300 - </script>
1301 - <?php
1302 -
1303 - echo '</div>'; // #fca_eoi_publish_lightbox
875 + echo "</div>";
1304 876 }
1305 877
1306 878 private function meta_box_field( $id, $title, $controls = array() ) {
1307 879 $content = '';
@@ -1317,12 +889,16 @@
1317 889
1318 890 $content = trim( $content );
1319 891 $class_name = 'accordion-section-primary-' . ( empty( $content ) ? 'empty' : 'full' );
1320 892 $content = '<div class="' . $class_name . '">' . $content . '</div>';
1321 -
893 +
894 + $title_id = str_replace ( ' ', '_', $title );
895 + $title_id = strtolower ( $title_id );
896 + $title_id = preg_replace('/[^a-zA-Z0-9_.]/', '', $title_id);
897 +
1322 898 K::wrap(
1323 899 K::wrap(
1324 - $title,
900 + $title . "<span class='accordion-info' id='accordion-info-$title_id'></span>",
1325 901 array( 'class' => 'accordion-section-title' ),
1326 902 array( 'return' => true )
1327 903 ) .
1328 904 K::wrap(
@@ -1335,44 +911,147 @@
1335 911 'id' => $id
1336 912 )
1337 913 );
1338 914 }
1339 -
915 +
1340 916 public function meta_box_content_build() {
917 +
918 + global $post;
919 + $post_meta = get_post_meta( $post->ID, 'fca_eoi', true );
920 + $layout = get_post_meta( $post->ID, 'fca_eoi_layout', true );
921 +
922 + $selected_layout = empty( $layout ) ? 'lightbox_not_set' : $layout;
923 + $class = empty( $layout ) ? 'fca-new-layout' : '';
924 + echo "<input id='fca_eoi_layout_select' name='fca_eoi[layout]' value='$selected_layout' hidden readonly class='$class'>";
925 +
926 + //OUTPUT SELECTED OR DEFAULT TEMPLATE
927 +
928 + echo "<div id='fca_eoi_form_preview'>";
929 +
930 + $output = '<div id="fca_eoi_preview">';
931 + //JS WILL LOAD THE TEMPLATE
932 + //$output .= fca_eoi_get_layout_html( $selected_layout );
1341 933
1342 - wp_enqueue_script( 'accordion' );
1343 -
1344 - global $post;
1345 - $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
934 + $output .= '</div>';
935 + echo $output;
936 + /* END FORM HTML GENERATION */
937 +
1346 938 $providers_available = array_keys( $this->settings[ 'providers' ] );
1347 939 $providers_options = array();
1348 940 $screen = get_current_screen();
1349 - $fca_eoi_last_3_forms = $this->settings[ 'fca_eoi_last_3_forms' ];
1350 941
1351 942 // Prepare providers options
1352 943 foreach ($this->settings[ 'providers' ] as $provider_id => $provider ) {
1353 944 $providers_options[ $provider_id ] = $provider[ 'info' ][ 'name' ];
1354 945 }
946 +
947 + echo '<div id="fca_eoi_settings" class="accordion-container">';
948 +
949 + echo '<div id="fca_eoi_fieldset_layout">';
950 + echo '<span id="accordion-info-layout">Layout</span><button title="Change Layout" type="button" id="fca_eoi_layout_select_button" class="button button-secondary"><span style="margin-top: 3px; margin-right: 3px;" class="dashicons dashicons-admin-appearance"></span>Change Layout</button>';
951 + echo '</div>';
952 +
953 + $this->meta_box_field( 'fca_eoi_fieldset_form', 'Form', array(
1355 954
1356 - K::wrap( '', array( 'id' => 'fca_eoi_preview' ) );
955 + array( 'input', 'fca_eoi[toggle_overlay_position]',
956 + array(
957 + 'type' => 'checkbox',
958 + 'checked' => K::get_var( 'toggle_overlay_position', $post_meta, 'off' ) === 'off' ? '' : 'on',
959 + 'class' => 'switch-input'
960 + ),
961 + array(
962 + 'format' => '<p id="fca_eoi_overlay_position_p"><span class="control-title">Placement</span><br><label class="switch">:input<span class="switch-label" data-on="" data-off=""></span><span class="switch-handle"></span></label></p>'
963 + ),
964 + ),
965 + array( 'input', 'fca_eoi[show_close]',
966 + array(
967 + 'type' => 'checkbox',
968 + 'checked' => K::get_var( 'show_close', $post_meta, 'on' ) === 'on' ? 'on' : '',
969 + 'class' => 'switch-input'
970 + ),
971 + array(
972 + 'format' => '<p id="fca_eoi_close_button_p"><span class="control-title">Close Button</span><br><label class="switch">:input<span class="switch-label" data-on="Show" data-off="Hide"></span><span class="switch-handle"></span></label></p>'
973 + ),
974 + ),
975 +
976 + array( 'input', 'fca_eoi[push_page]',
977 + array(
978 + 'type' => 'checkbox',
979 + 'checked' => K::get_var( 'push_page', $post_meta, 'on' ) === 'on' ? 'on' : '',
980 + 'class' => 'switch-input'
981 + ),
982 + array(
983 + 'format' => '<p id="fca_eoi_push_page_p"><span class="control-title">Push Page Down</span><br><label class="switch">:input<span class="switch-label" data-on="On" data-off="Off"></span><span class="switch-handle"></span></label></p>'
984 + ),
985 + ),
986 +
987 + array( 'input', "fca_eoi[offset]",
988 + array(
989 + 'type' => 'number',
990 + 'min' => '0',
991 + 'value' => K::get_var( 'offset', $post_meta, 0 ),
992 + 'class' => 'fca_eoi_number_input',
993 + ),
994 + array(
995 + 'format' => "<p id='fca_eoi_offset_p'><label><span class='control-title'>Offset</span></label><br />:inputpx</p>",
996 + )
997 + ),
998 +
999 + $this->generate_hidden_css_select_input('form_background_color_selector'),
1000 + $this->generate_color_picker('form_background_color','Form Background Color'),
1001 + $this->generate_hidden_css_select_input('form_border_color_selector'),
1002 + $this->generate_color_picker('form_border_color','Border Color'),
1003 + $this->generate_hidden_css_select_input('form_width_selector'),
1004 + $this->generate_width_select_input('form_width','Width', 100),
1005 + //$this->generate_hidden_css_select_input('form_alignment_selector'),
1006 + //$this->generate_alignment_select_input('form_alignment','Alignment', 'center'),
1357 1007
1358 - echo '<div id="fca_eoi_settings" class="accordion-container">';
1008 + ) );
1359 1009
1360 - $this->meta_box_field( 'fca_eoi_fieldset_form', 'Form' );
1361 -
1362 1010 $this->meta_box_field( 'fca_eoi_fieldset_headline', 'Headline', array(
1011 + array( 'input', 'fca_eoi[show_headline_field]',
1012 + array(
1013 + 'type' => 'checkbox',
1014 + 'checked' => K::get_var( 'show_headline_field', $post_meta, 'on' ) == 'off' ? '' : 'on',
1015 + 'class' => 'switch-input'
1016 + ),
1017 + array(
1018 + 'format' => '<p><span class="control-title">Headline Field</span><br><label class="switch">:input<span class="switch-label" data-on="Show" data-off="Hide"></span><span class="switch-handle"></span></label></p>'
1019 + ),
1020 + ),
1363 1021 array( 'input', 'fca_eoi[headline_copy]',
1364 - array( 'value' => K::get_var( 'headline_copy', $fca_eoi ) ),
1022 + array( 'class' => 'fca_eoi_text_input', 'value' => K::get_var( 'headline_copy', $post_meta ) ),
1365 1023 array( 'format' => '<p><label><span class="control-title">Headline Copy</span><br />:input</label></p>' )
1366 - )
1024 + ),
1025 + $this->generate_hidden_css_select_input('headline_font_size_selector'),
1026 + $this->generate_font_size_picker ('headline_font_size', 'Font Size'),
1027 + $this->generate_hidden_css_select_input('headline_font_color_selector'),
1028 + $this->generate_color_picker('headline_font_color','Font Color'),
1029 + $this->generate_hidden_css_select_input('headline_background_color_selector'),
1030 + $this->generate_color_picker('headline_background_color','Background Color'),
1031 +
1367 1032 ) );
1368 -
1033 +
1369 1034 $this->meta_box_field( 'fca_eoi_fieldset_description', 'Description', array(
1035 + array( 'input', 'fca_eoi[show_description_field]',
1036 + array(
1037 + 'type' => 'checkbox',
1038 + 'checked' => K::get_var( 'show_description_field', $post_meta, 'on' ) == 'off' ? '' : 'on',
1039 + 'class' => 'switch-input'
1040 + ),
1041 + array(
1042 + 'format' => '<p><span class="control-title">Description Field</span><br><label class="switch">:input<span class="switch-label" data-on="Show" data-off="Hide"></span><span class="switch-handle"></span></label></p>'
1043 + ),
1044 + ),
1370 1045 array( 'textarea', 'fca_eoi[description_copy]', array(), array(
1371 1046 'format' => ':textarea',
1372 1047 'editor' => true,
1373 - 'value' => K::get_var( 'description_copy', $fca_eoi ),
1374 - ) )
1048 + 'value' => K::get_var( 'description_copy', $post_meta ),
1049 + ) ),
1050 + $this->generate_hidden_css_select_input('description_font_size_selector'),
1051 + $this->generate_font_size_picker ('description_font_size', 'Font Size'),
1052 + $this->generate_hidden_css_select_input('description_font_color_selector'),
1053 + $this->generate_color_picker('description_font_color','Font Color'),
1375 1054 ) );
1376 1055
1377 1056 $this->meta_box_field( 'fca_eoi_fieldset_name_field', 'Name Field', array(
1378 1057 array( 'input', 'fca_eoi[show_name_field]',
@@ -1377,140 +1056,385 @@
1377 1056 $this->meta_box_field( 'fca_eoi_fieldset_name_field', 'Name Field', array(
1378 1057 array( 'input', 'fca_eoi[show_name_field]',
1379 1058 array(
1380 1059 'type' => 'checkbox',
1381 - 'checked' => K::get_var( 'show_name_field', $fca_eoi ),
1060 + 'checked' => K::get_var( 'show_name_field', $post_meta, 'off' ) == 'off' ? '' : 'on',
1061 + 'class' => 'switch-input'
1382 1062 ),
1383 1063 array(
1384 - 'format' => '<p><label>:input Show Name Field</label></p>'
1064 + 'format' => '<p><span class="control-title">Name Field</span><br><label class="switch">:input<span class="switch-label" data-on="Show" data-off="Hide"></span><span class="switch-handle"></span></label></p>'
1385 1065 ),
1386 1066 ),
1387 1067 array( 'input', 'fca_eoi[name_placeholder]',
1388 - array( 'value' => K::get_var( 'name_placeholder', $fca_eoi, 'Your Name' ) ),
1068 + array( 'class' => 'fca_eoi_text_input', 'value' => K::get_var( 'name_placeholder', $post_meta, 'First Name' ) ),
1389 1069 array( 'format' => '<p><label><span class="control-title">Placeholder Text</span><br />:input</label></p>' )
1390 - )
1070 + ),
1071 + $this->generate_hidden_css_select_input('name_font_size_selector'),
1072 + $this->generate_font_size_picker ('name_font_size', 'Font Size'),
1073 + $this->generate_hidden_css_select_input('name_font_color_selector'),
1074 + $this->generate_color_picker('name_font_color','Font Color'),
1075 + $this->generate_hidden_css_select_input('name_background_color_selector'),
1076 + $this->generate_color_picker('name_background_color','Background Color'),
1077 + $this->generate_hidden_css_select_input('name_border_color_selector'),
1078 + $this->generate_color_picker('name_border_color','Border Color'),
1079 + $this->generate_hidden_css_select_input('name_width_selector'),
1080 + $this->generate_width_select_input('name_width','Width', 100),
1081 + //$this->generate_hidden_css_select_input('name_alignment_selector'),
1082 + //$this->generate_alignment_select_input('name_alignment','Alignment', 'left'),
1391 1083 ) );
1392 1084
1393 1085 $this->meta_box_field( 'fca_eoi_fieldset_email_field', 'Email Field', array(
1394 1086 array( 'input', 'fca_eoi[email_placeholder]',
1395 - array( 'value' => K::get_var( 'email_placeholder', $fca_eoi, 'Your Email' ) ),
1087 + array( 'class' => 'fca_eoi_text_input', 'value' => K::get_var( 'email_placeholder', $post_meta, 'Your Email' ) ),
1396 1088 array( 'format' => '<p><label><span class="control-title">Placeholder Text</span><br />:input</label></p>' )
1397 - )
1089 + ),
1090 + $this->generate_hidden_css_select_input('email_font_size_selector'),
1091 + $this->generate_font_size_picker ('email_font_size', 'Font Size'),
1092 + $this->generate_hidden_css_select_input('email_font_color_selector'),
1093 + $this->generate_color_picker('email_font_color','Font Color'),
1094 + $this->generate_hidden_css_select_input('email_background_color_selector'),
1095 + $this->generate_color_picker('email_background_color','Background Color'),
1096 + $this->generate_hidden_css_select_input('email_border_color_selector'),
1097 + $this->generate_color_picker('email_border_color','Border Color'),
1098 + $this->generate_hidden_css_select_input('email_width_selector'),
1099 + $this->generate_width_select_input('email_width','Width', 100),
1100 + //$this->generate_hidden_css_select_input('email_alignment_selector'),
1101 + //$this->generate_alignment_select_input('email_alignment','Alignment', 'left'),
1398 1102 ) );
1399 1103
1400 1104 $this->meta_box_field( 'fca_eoi_fieldset_button', 'Button', array(
1401 1105 array( 'input', 'fca_eoi[button_copy]',
1402 - array( 'value' => K::get_var( 'button_copy', $fca_eoi, 'Subscribe Now' ) ),
1106 + array( 'class' => 'fca_eoi_text_input', 'value' => K::get_var( 'button_copy', $post_meta, 'Subscribe Now' ) ),
1403 1107 array( 'format' => '<p><label><span class="control-title">Button Copy</span><br />:input</label></p>' )
1404 - )
1108 + ),
1109 + $this->generate_hidden_css_select_input('button_font_size_selector'),
1110 + $this->generate_font_size_picker ('button_font_size', 'Font Size'),
1111 + $this->generate_hidden_css_select_input('button_font_color_selector'),
1112 + $this->generate_color_picker('button_font_color','Font Color'),
1113 +
1114 + $this->generate_hidden_css_select_input('button_background_color_selector'),
1115 + $this->generate_color_picker('button_background_color','Background Color'),
1116 + $this->generate_hidden_css_select_input('button_wrapper_background_color_selector'),
1117 + $this->generate_color_picker('button_wrapper_background_color','Bottom Border Color'),
1118 + $this->generate_hidden_css_select_input('button_border_color_selector'),
1119 + $this->generate_color_picker('button_border_color','Border Color'),
1120 +
1121 + $this->generate_hidden_css_select_input('button_hover_color_selector'),
1122 + $this->generate_color_picker('button_hover_color','Hover Color'),
1123 +
1124 + $this->generate_hidden_css_select_input('button_width_selector'),
1125 + $this->generate_width_select_input('button_width','Width', 100),
1126 + //$this->generate_hidden_css_select_input('button_alignment_selector'),
1127 + //$this->generate_alignment_select_input('button_alignment','Alignment', 'center'),
1128 +
1405 1129 ) );
1406 1130
1407 - $this->meta_box_field( 'fca_eoi_fieldset_privacy', 'Privacy Policy', array(
1131 + $this->meta_box_field( 'fca_eoi_fieldset_privacy', 'After Button Area', array(
1132 + array( 'input', 'fca_eoi[show_privacy_field]',
1133 + array(
1134 + 'type' => 'checkbox',
1135 + 'checked' => K::get_var( 'show_privacy_field', $post_meta, 'on' ) == 'off' ? '' : 'on',
1136 + 'class' => 'switch-input'
1137 + ),
1138 + array(
1139 + 'format' => '<p><span class="control-title">After Button Area</span><br><label class="switch">:input<span class="switch-label" data-on="Show" data-off="Hide"></span><span class="switch-handle"></span></label></p>'
1140 + ),
1141 + ),
1408 1142 array( 'textarea', 'fca_eoi[privacy_copy]',
1409 1143 array(
1410 - 'class' => 'large-text',
1144 + 'class' => 'large-text fca_eoi_text_input',
1411 1145 ),
1412 1146 array(
1413 - 'format' => '<p><label><span class="control-title">Privacy Policy Copy</span><br />:textarea</label></p>',
1414 - 'value' => K::get_var( 'privacy_copy', $fca_eoi ),
1147 + 'format' => '<p><label><span class="control-title">After Button Area Copy</span><br />:textarea</label></p>',
1148 + 'value' => K::get_var( 'privacy_copy', $post_meta ),
1415 1149 )
1150 + ),
1151 + $this->generate_hidden_css_select_input('privacy_font_size_selector'),
1152 + $this->generate_font_size_picker ('privacy_font_size', 'Font Size'),
1153 + $this->generate_hidden_css_select_input('privacy_font_color_selector'),
1154 + $this->generate_color_picker('privacy_font_color','Font Color'),
1155 + ) );
1156 + if ( $this->settings['distribution'] === 'free' ) {
1157 + $this->meta_box_field( 'fca_eoi_fieldset_fatcatapps', 'Branding', array(
1158 + array( 'input', 'fca_eoi[show_fatcatapps_link]',
1159 + array(
1160 + 'type' => 'checkbox',
1161 + 'checked' => K::get_var( 'show_fatcatapps_link', $post_meta ),
1162 + 'class' => 'switch-input'
1163 + ),
1164 + array(
1165 + 'format' => '<p><span class="control-title"><a href="http://fatcatapps.com/" target="_blank">Optin Cat</a> Branding</span><br><label class="switch">:input<span class="switch-label" data-on="Show" data-off="Hide"></span><span class="switch-handle"></span></label></p>'
1166 + ),
1167 + ),
1168 +
1169 + $this->generate_hidden_css_select_input('branding_font_color_selector'),
1170 + $this->generate_color_picker ('branding_font_color', 'Font Color'),
1171 + ) );
1172 + }
1173 +
1174 + echo '</div>';
1175 + echo '</div>';
1176 + echo '<br clear="all"/>';
1177 +
1178 +
1179 + }
1180 + public function generate_width_select_input( $id, $name, $default = 100 ) {
1181 + global $post;
1182 + $post_meta = get_post_meta( $post->ID, 'fca_eoi', true );
1183 + $value = K::get_var( "$id", $post_meta, $default );
1184 + $units = K::get_var( "$id" . "-units", $post_meta, '%' );
1185 +
1186 + $px_selected = $units == 'px' ? 'selected' : '';
1187 + $pct_selected = $units == '%' ? 'selected' : '';
1188 +
1189 + return array( 'input', "fca_eoi[$id]",
1190 + array(
1191 + 'type' => 'number',
1192 + 'min' => '0',
1193 + 'value' => $value,
1194 + 'class' => 'fca_eoi_width_input',
1195 + ),
1196 + array(
1197 + 'format' => "<p><label><span class='control-title'>$name</span></label><br />:input <select class='fca_eoi_width_units_select' name='fca_eoi[$id-units]'><option value='%' $pct_selected>%</option><option value='px' $px_selected>px</option></select></p>",
1198 +
1416 1199 )
1417 - ) );
1200 + );
1201 + }
1202 +
1203 + public function generate_alignment_select_input( $id, $name, $default ) {
1204 + global $post;
1205 + $post_meta = get_post_meta( $post->ID, 'fca_eoi', true );
1206 + $value = K::get_var( "$id", $post_meta, $default );
1418 1207
1419 - $this->meta_box_field( 'fca_eoi_fieldset_fatcatapps', 'Branding', array(
1420 - array( 'input', 'fca_eoi[show_fatcatapps_link]',
1208 + return array( 'input', "fca_eoi[$id]",
1209 + array(
1210 + 'type' => 'hidden',
1211 + 'value' => $value,
1212 + 'class' => 'fca_eoi_alignment_input',
1213 + ),
1214 + array(
1215 + 'format' => "<p><label><span class='control-title'>$name</span></label><br><span data-value='left' class='dashicons dashicons-editor-alignleft fca-eoi-align-button fca-eoi-align-left-btn'></span><span data-value='center' class='dashicons dashicons-editor-aligncenter fca-eoi-align-button fca-eoi-align-center-btn'></span><span data-value='right' class='dashicons dashicons-editor-alignright fca-eoi-align-button fca-eoi-align-right-btn'></span>:input</p>",
1216 + ),
1217 + );
1218 + }
1219 +
1220 + public function generate_hidden_css_select_input ($id) {
1221 + return array( 'input', "fca_eoi[$id]",
1222 + array ( 'class' => 'fca-hidden-input hidden',
1223 + 'value' => ''
1224 + )
1225 + );
1226 + }
1227 +
1228 + public function generate_color_picker ($id, $name) {
1229 + global $post;
1230 + $post_meta = get_post_meta( $post->ID, 'fca_eoi', true );
1231 + return array( 'input', "fca_eoi[$id]",
1232 + array ( 'class' => 'fca-color-picker',
1233 + 'value' => K::get_var( "$id", $post_meta )
1234 + ),
1235 + array(
1236 + 'format' => '<p><label><span class="control-title">'. $name . '</span><br />:input</label></p>',
1237 + ),
1238 + );
1239 + }
1240 +
1241 + public function generate_font_size_picker ($id, $name) {
1242 + global $post;
1243 + $post_meta = get_post_meta( $post->ID, 'fca_eoi', true );
1244 + return array( 'select', "fca_eoi[$id]",
1245 +
1246 + array (
1247 + 'data-selected' => K::get_var( "$id", $post_meta ),
1248 + 'class' => 'fca-font-size-picker ',
1249 + ),
1250 + array(
1251 + 'format' => '<p class="clear"><label><span class="control-title">'. $name . '</span><br />:select</label></p>',
1252 + 'options' => array(
1253 + 'none' => '',
1254 + '7px' => '7px',
1255 + '8px' => '8px',
1256 + '9px' => '9px',
1257 + '10px' => '10px',
1258 + '11px' => '11px',
1259 + '12px' => '12px',
1260 + '13px' => '13px',
1261 + '14px' => '14px',
1262 + '15px' => '15px',
1263 + '16px' => '16px',
1264 + '17px' => '17px',
1265 + '18px' => '18px',
1266 + '19px' => '19px',
1267 + '20px' => '20px',
1268 + '21px' => '21px',
1269 + '22px' => '22px',
1270 + '23px' => '23px',
1271 + '24px' => '24px',
1272 + '25px' => '25px',
1273 + '26px' => '26px',
1274 + '27px' => '27px',
1275 + '28px' => '28px',
1276 + '29px' => '29px',
1277 + '30px' => '30px',
1278 + '31px' => '31px',
1279 + '32px' => '32px',
1280 + '33px' => '33px',
1281 + '34px' => '34px',
1282 + '35px' => '35px',
1283 + '36px' => '36px',
1284 + ),
1285 + 'selected' => K::get_var( "$id", $post_meta ),
1286 + 'return' => true,
1287 + ),
1288 + );
1289 + }
1290 +
1291 + public function meta_box_content_messages( $post ) {
1292 +
1293 + $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
1294 + $screen = get_current_screen();
1295 +
1296 + // Get the previous thank you page if this is a new post
1297 + $last_form_meta = get_option( 'fca_eoi_last_form_meta', '' );
1298 + $thank_you_page_suggestion = empty ($last_form_meta['thank_you_page']) ? '~' : $last_form_meta['thank_you_page'];
1299 + $thank_you_mode_suggestion = empty ($last_form_meta['thankyou_page_mode']) ? 'ajax' : $last_form_meta['thankyou_page_mode'];
1300 + $thank_you_text_suggestion = empty ($last_form_meta['thankyou_ajax']) ? __('Thank you! Please check your inbox for your confirmation email.', 'easy-opt-ins') : stripslashes( $last_form_meta['thankyou_ajax'] );
1301 + $subscribing_suggestion = empty ($last_form_meta['subscribing_message']) ? __('Subscribing...', 'easy-opt-ins') : stripslashes( $last_form_meta['subscribing_message'] );
1302 + $text_error_suggestion = empty ($last_form_meta['error_text_field_required']) ? __('Please fill out this field to continue', 'easy-opt-ins') : stripslashes( $last_form_meta['error_text_field_required'] );
1303 + $email_error_suggestion = empty ($last_form_meta['error_text_invalid_email']) ? __('Please enter a valid email address. For example "example@example.com".', 'easy-opt-ins') : stripslashes( $last_form_meta['error_text_invalid_email'] );
1304 +
1305 + echo '<h3>' . __('Subscribing Message', 'easy-opt-ins') . fca_eoi_tooltip ( __('This message will be displayed after your visitors submit your form.', 'easy-opt-ins') ) . '</h3>';
1306 + echo '<table class="fca_eoi_text_messages_table">';
1307 + echo '<tr><th>Message</th><td>';
1308 + K::input( 'fca_eoi[subscribing_message]',
1421 1309 array(
1310 + 'class' => 'regular-text',
1311 + 'value' => K::get_var( 'subscribing_message', $fca_eoi, $subscribing_suggestion ),
1312 + ),
1313 + array()
1314 + );
1315 +
1316 + echo '</td></tr></table>';
1317 +
1318 + echo '<h3>' . __('Thank You Message', 'easy-opt-ins') . fca_eoi_tooltip( __('This message will be displayed after someone has successfully subscribed.', 'easy-opt-ins') ) . '</h3>';
1319 + echo '<table class="fca_eoi_text_messages_table">';
1320 + echo '<tr><th>Behavior</th><td>';
1321 + _e('Display immediately', 'easy-opt-ins');
1322 + $checked = K::get_var( 'thankyou_page_mode', $fca_eoi, $thank_you_mode_suggestion );
1323 +
1324 + K::input( 'fca_eoi[thankyou_page_mode]',
1325 + array(
1422 1326 'type' => 'checkbox',
1423 - 'checked' => K::get_var( 'show_fatcatapps_link', $fca_eoi ),
1327 + 'value' => 'redirect',
1328 + 'checked' => 'redirect' === $checked,
1329 + 'class' => 'switch-input fca-eoi-redirect-mode-toggle'
1424 1330 ),
1425 1331 array(
1426 - 'format' => '<p><label>:input Show <a href="http://fatcatapps.com/" target="_blank">Easy Opt-ins</a> Branding</label></p>'
1332 + 'format' => '<label class="switch" id="fca-eoi-redirect-mode-toggle-label" >:input<span class="switch-label" data-on="" data-off=""></span><span class="switch-handle"></span></label>'
1427 1333 )
1428 - )
1429 - ) );
1334 + );
1335 + _e('Redirect', 'easy-opt-ins');
1430 1336
1431 - $this->meta_box_field( 'fca_eoi_fieldset_error_text', 'Error Text', array(
1432 - array( 'textarea', 'fca_eoi[error_text_field_required]',
1337 + echo '</td></tr>';
1338 +
1339 + echo '<tr id="fca_eoi_thankyou_ajax_msg"><th>Thank You Message</th><td>';
1340 +
1341 + K::textarea( 'fca_eoi[thankyou_ajax]', array(
1342 + 'class' => 'large-text fca_eoi_text_input',
1343 + ),
1433 1344 array(
1434 - 'class' => 'large-text'
1345 + 'value' => K::get_var( 'thankyou_ajax', $fca_eoi, $thank_you_text_suggestion ),
1346 + )
1347 + );
1348 +
1349 + echo '</td></tr>';
1350 +
1351 +
1352 + echo '<tr id="fca_eoi_thankyou_redirect"><th>Redirect to';
1353 +
1354 + K::select(
1355 + 'fca_eoi[redirect_page_mode]',
1356 + array(
1357 + 'class' => 'fca-eoi-redirect-page-toggle',
1358 + ),
1359 + array(
1360 + 'options' => array(
1361 + 'page' => __( 'Page' ),
1362 + 'url' => __( 'URL' ),
1363 +
1364 + ),
1365 + 'selected' => K::get_var( 'redirect_page_mode', $fca_eoi, 'page' ),
1366 + )
1367 + );
1368 +
1369 +
1370 + echo '</th><td>';
1371 +
1372 + echo '<span id="fca_eoi_redirect_page_span">';
1373 + $pages = array( '~' => __( 'Front page' ) );
1374 + $pages_objects = get_pages();
1375 + foreach ( $pages_objects as $page_obj ) {
1376 + $pages[ $page_obj->ID ] = $page_obj->post_title;
1377 + }
1378 + K::select( 'fca_eoi[thank_you_page]',
1379 + array(
1380 + 'class' => 'select2',
1381 + 'style' => 'width: 27em;',
1435 1382 ),
1383 + array(
1384 + 'format' => '<p><label>:select</label></p>',
1385 + 'options' => $pages,
1386 + 'selected' => 'add' === $screen->action
1387 + ? $thank_you_page_suggestion
1388 + : K::get_var( 'thank_you_page', $fca_eoi, '~' ),
1389 + )
1390 + );
1391 + echo '</span>';
1392 + echo '<span id="fca_eoi_redirect_url_span">';
1393 + K::input( 'fca_eoi[thank_you_url]',
1436 1394 array(
1437 - 'format' => '<p><label><span class="control-title">Field Required</span><br />:textarea</label></p>',
1438 - 'value' => K::get_var( 'error_text_field_required', $fca_eoi, esc_html( $this->settings['error_text']['field_required'] ) )
1439 - )
1440 - ),
1441 - array( 'textarea', 'fca_eoi[error_text_invalid_email]',
1395 + 'class' => 'regular-text',
1396 + 'value' => K::get_var( 'thank_you_url', $fca_eoi ),
1397 + 'placeholder' => 'enter URL here',
1398 + ),
1399 + array()
1400 + );
1401 + echo '</span>';
1402 + echo '</td></tr>';
1403 +
1404 +
1405 + echo '</table>';
1406 +
1407 + echo '<h3>' . __('Error Messages', 'easy-opt-ins') . fca_eoi_tooltip( __("These messages will be dispalyed if someone fills out the form incorrectly.", 'easy-opt-ins') ) . '</h3>';
1408 + echo '<table class="fca_eoi_text_messages_table">';
1409 + echo '<tr><th>Field Required</th><td>';
1410 +
1411 + K::textarea( 'fca_eoi[error_text_field_required]',
1442 1412 array(
1443 - 'class' => 'large-text'
1413 + 'class' => 'large-text fca_eoi_text_input',
1444 1414 ),
1445 1415 array(
1446 - 'format' => '<p><label><span class="control-title">Invalid Email</span><br />:textarea</label></p>',
1447 - 'value' => K::get_var( 'error_text_invalid_email', $fca_eoi, esc_html( $this->settings['error_text']['invalid_email'] ) )
1416 + 'value' => K::get_var( 'error_text_field_required', $fca_eoi, $text_error_suggestion ),
1448 1417 )
1449 - )
1450 - ) );
1418 + );
1451 1419
1452 - echo '</div>';
1453 - }
1420 + echo '</td></tr>';
1421 +
1422 + echo '<tr><th>Invalid Email</th><td>';
1454 1423
1455 - public function meta_box_content_thanks() {
1456 - global $post;
1457 - $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
1458 - $screen = get_current_screen();
1459 - $fca_eoi_last_3_forms = $this->settings[ 'fca_eoi_last_3_forms' ];
1424 + K::textarea( 'fca_eoi[error_text_invalid_email]',
1425 + array(
1426 + 'class' => 'large-text fca_eoi_text_input',
1427 + ),
1428 + array(
1429 + 'value' => K::get_var( 'error_text_invalid_email', $fca_eoi, $email_error_suggestion )
1430 + )
1431 + );
1460 1432
1461 - // Get the previous thank you page if this is a new post
1462 - $thank_you_page_suggestion = false;
1463 - if ( 'add' === $screen->action ) {
1464 - foreach ( $fca_eoi_last_3_forms as $fca_eoi_previous_form ) {
1465 - try {
1466 - if(
1467 - K::get_var( 'fca_eoi', $fca_eoi_previous_form )
1468 - && K::get_var( 'thank_you_page', $fca_eoi_previous_form[ 'fca_eoi' ] )
1469 - ) {
1470 - $thank_you_page_suggestion = $fca_eoi_previous_form[ 'fca_eoi' ][ 'thank_you_page' ];
1471 - break;
1472 - }
1473 - } catch ( Exception $e ) {}
1474 - }
1475 - }
1476 -
1477 - // Prepare options
1478 - $pages = array( '~' => __( 'Front page' ) );
1479 - $pages_objects = get_pages();
1480 - foreach ( $pages_objects as $page_obj ) {
1481 - $pages[ $page_obj->ID ] = $page_obj->post_title;
1482 - }
1483 -
1484 - K::wrap( 'Redirect user to the following page after submitting the form:'
1485 - , null
1486 - , array( 'in' => 'p' )
1487 - );
1488 - K::select( 'fca_eoi[thank_you_page]'
1489 - , array(
1490 - 'class' => 'select2',
1491 - 'style' => 'width: 27em;',
1492 - )
1493 - , array(
1494 - 'format' => '<p><label>:select</label></p>',
1495 - 'options' => $pages,
1496 - 'selected' => 'add' === $screen->action
1497 - ? $thank_you_page_suggestion
1498 - : K::get_var( 'thank_you_page', $fca_eoi, '~' )
1499 - ,
1500 - )
1501 - );
1502 - K::wrap( __( 'Create a new "Thank You Page" &rsaquo;' )
1503 - , array(
1504 - 'href' => admin_url( 'post-new.php?post_type=page' ),
1505 - 'target' => '_blank',
1506 - )
1507 - , array(
1508 - 'in' => 'a',
1509 - 'html_before' => '<p>',
1510 - 'html_after' => '</p>',
1511 - )
1512 - );
1433 + echo '</td></tr>';
1434 +
1435 +
1436 + echo '</table>';
1513 1437 }
1514 1438
1515 1439 public function meta_box_content_powerups() {
1516 1440
@@ -1515,36 +1439,61 @@
1515 1439 public function meta_box_content_powerups() {
1516 1440
1517 1441 global $post;
1518 1442 $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
1519 -
1520 1443 do_action('fca_eoi_powerups', $fca_eoi );
1521 1444 }
1522 1445
1523 - public function meta_box_content_debug() {
1524 -
1525 - global $post;
1526 -
1527 - $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
1528 -
1529 - !d( $fca_eoi );
1530 - }
1531 -
1532 1446 /**
1533 1447 * Save the Metabox Data
1534 1448 */
1535 1449 public function save_meta_box_content( $post_id, $post ) {
1536 -
1537 - // Save meta data
1538 - delete_post_meta( $post->ID, 'fca_eoi' );
1539 -
1540 - $animation = isset($_POST['fca_eoi_animations']) ? $_POST['fca_eoi_animations'] : '';
1541 - $animationValue = $_POST['fca_eoi_show_animation_checkbox'];
1542 - if ($animationValue != 'on') {
1543 - $animation = '';
1544 - }
1545 1450
1546 - if( $meta = K::get_var( 'fca_eoi', $_POST ) ) {
1451 + if ( isset ($_POST['fca_eoi'])) {
1452 + $form_id = $post_id;
1453 + $meta = $_POST['fca_eoi'];
1454 +
1455 + //SET SHOW/HIDE SETTINGS
1456 + $toggles = array (
1457 + 'show_headline_field',
1458 + 'show_description_field',
1459 + 'show_name_field',
1460 + 'show_close',
1461 + 'show_privacy_field',
1462 + 'push_page',
1463 + );
1464 +
1465 + forEach ( $toggles as $field ) {
1466 + $meta[$field] = empty ( $meta[$field] ) ? 'off' : 'on';
1467 + }
1468 +
1469 + $settings = array (
1470 + 'form_background_color_selector' => 'background-color',
1471 + 'form_border_color_selector' => 'border-color',
1472 + 'headline_font_size_selector' => 'font-size',
1473 + 'headline_font_color_selector' => 'color',
1474 + 'headline_background_color_selector' => 'background-color',
1475 + 'description_font_size_selector' => 'font-size',
1476 + 'description_font_color_selector' => 'color',
1477 + 'name_font_size_selector' => 'font-size',
1478 + 'name_font_color_selector' => 'color',
1479 + 'name_background_color_selector' => 'background-color',
1480 + 'name_border_color_selector' => 'border-color',
1481 + 'email_font_size_selector' => 'font-size',
1482 + 'email_font_color_selector' => 'color',
1483 + 'email_background_color_selector' => 'background-color',
1484 + 'email_border_color_selector' => 'border-color',
1485 + 'button_font_size_selector' => 'font-size',
1486 + 'button_font_color_selector' => 'color',
1487 + 'button_background_color_selector' => 'background-color',
1488 + 'button_border_color_selector' => 'border-color',
1489 + // 'button_hover_color_selector' => 'background-color', special case
1490 + 'button_wrapper_background_color_selector' => 'background-color',
1491 + 'privacy_font_size_selector' => 'font-size',
1492 + 'privacy_font_color_selector' => 'color',
1493 + 'branding_font_color_selector' => 'color',
1494 + );
1495 +
1547 1496 // Add provider if missing (happens on free distros where there is only one provider)
1548 1497 if( ! K::get_var( 'provider', $meta ) ) {
1549 1498 $meta[ 'provider' ] = $this->settings[ 'provider' ];
1550 1499 }
@@ -1570,16 +1519,9 @@
1570 1519 }
1571 1520 }
1572 1521 }
1573 1522
1574 - // Keep only the current layout inforamtion
1575 - foreach ( $meta as $k => $v ) {
1576 - if( preg_match( '|^[a-z]+_[0-9]+$|', $k ) && $k !== $meta[ 'layout' ] ) {
1577 - unset( $meta[ $k ] );
1578 - }
1579 - }
1580 -
1581 - // Make sure emtpy value for publish_postbox or publish_lightbox are saved as array(-1)
1523 + // Make sure empty value for publish_postbox or publish_lightbox are saved as array(-1)
1582 1524 if( ! K::get_var( 'publish_postbox' , $meta, array() ) ) {
1583 1525 $meta[ 'publish_postbox' ] = array(-1);
1584 1526 }
1585 1527 if( ! K::get_var( 'publish_lightbox' , $meta, array() ) ) {
@@ -1584,28 +1526,166 @@
1584 1526 }
1585 1527 if( ! K::get_var( 'publish_lightbox' , $meta, array() ) ) {
1586 1528 $meta[ 'publish_lightbox' ] = array(-1);
1587 1529 }
1588 -
1589 -
1590 - delete_post_meta( $post->ID, 'fca_eoi_layout' );
1591 - delete_post_meta( $post->ID, 'fca_eoi_provider' );
1592 -
1530 +
1531 + //sanitize thank you ajax message
1532 + if ( !empty ( $meta[ 'thankyou_ajax' ] ) ) {
1533 + $meta[ 'thankyou_ajax' ] = htmlentities($meta[ 'thankyou_ajax' ], ENT_QUOTES, "UTF-8");
1534 + }
1535 +
1536 + //RN NOTE: THIS DO ANYTHING? -> ONLY FOR CUSTOM HTML FORMS SEEMS LIKE
1593 1537 $on_save_function = $provider . '_on_save';
1594 1538 if ( function_exists( $on_save_function ) ) {
1595 1539 $meta = $on_save_function( $meta );
1596 1540 }
1597 1541
1598 -
1542 + //COMPILE CSS AND SAVE INTO 'HEAD' META
1543 + $layout_id = $meta[ 'layout' ];
1544 +
1545 + // General CSS for all forms
1546 + $css = "<style type='text/css' class='fca-eoi-style'>.fca_eoi_form{ margin: auto; } .fca_eoi_form p { width: auto; } #fca_eoi_form_$form_id input{ max-width: 9999px; }";
1599 1547
1600 - add_post_meta( $post->ID, 'fca_eoi', $meta );
1601 - add_post_meta( $post->ID, 'fca_eoi_layout', $meta[ 'layout' ] );
1602 - add_post_meta( $post->ID, 'fca_eoi_provider', $meta[ 'provider' ] );
1603 -
1604 - delete_post_meta( $post->ID, 'fca_eoi_animation' );
1605 - add_post_meta( $post->ID, 'fca_eoi_animation', $animation );
1606 -
1607 -
1548 + if ( !empty( $layout_id ) ) {
1549 +
1550 + // CACHE (ALMOST) ALL THE OUTPUT HERE
1551 + $layout = new EasyOptInsLayout( $layout_id );
1552 + $scss_path = $layout->path_to_resource( 'layout', 'scss' );
1553 +
1554 + if ( file_exists( $scss_path ) ) {
1555 + $css_path = str_replace ( '.scss' , '_min.css', $scss_path );
1556 + $css_file = file_get_contents( $css_path );
1557 + }
1558 +
1559 + $show_name = K::get_var( 'show_name_field', $meta, 'off' );
1560 + if ( $show_name === 'off' ) {
1561 + $css .= "#fca_eoi_form_$form_id .fca_eoi_layout_name_field_wrapper {display: none !important;}";
1562 + $selector = K::get_var( 'email_width_selector', $meta, '' );
1563 + $css .= "#fca_eoi_form_$form_id $selector {float:none;margin-left:auto;margin-right:auto;}";
1564 +
1565 + }
1566 + $show_headline_field = K::get_var( 'show_headline_field', $meta, 'on' );
1567 + if ( $show_headline_field === 'off' ) {
1568 + $css .= "#fca_eoi_form_$form_id .fca_eoi_layout_headline_copy_wrapper {display: none !important;}";
1569 + }
1570 +
1571 + $show_description_field = K::get_var( 'show_description_field', $meta, 'on' );
1572 + if ( $show_description_field === 'off' ) {
1573 + $css .= "#fca_eoi_form_$form_id .fca_eoi_layout_description_copy_wrapper {display: none !important;}";
1574 + }
1575 +
1576 + $show_close = K::get_var( 'show_close', $meta, 'on' );
1577 + if ( $show_close === 'off' ) {
1578 + $css .= "#fca_eoi_form_$form_id .fca_eoi_banner_close_btn {display: none !important;}";
1579 + }
1580 +
1581 + $toggle_position = K::get_var( 'toggle_overlay_position', $meta, 'off' );
1582 + $offset = K::get_var( 'offset', $meta, 0 ) . 'px';
1583 +
1584 + if ( $toggle_position === 'on' && strrpos( $layout_id, 'overlay' ) !== false ) {
1585 + $css .= "#fca_eoi_form_$form_id .fca_eoi_layout_overlay { left: $offset !important; right: initial !important; }";
1586 + } else if ( strrpos( $layout_id, 'overlay' ) !== false ) {
1587 + $css .= "#fca_eoi_form_$form_id .fca_eoi_layout_overlay { right: $offset !important; }";
1588 + }
1589 + if ( $toggle_position === 'on' && strrpos( $layout_id, 'banner' ) !== false ) {
1590 + $css .= "#fca_eoi_form_$form_id .fca_eoi_layout_banner { bottom: $offset !important; top: initial !important; }";
1591 + } else if ( strrpos( $layout_id, 'banner' ) !== false ) {
1592 + $css .= "#fca_eoi_form_$form_id .fca_eoi_layout_banner { top: $offset !important; }";
1593 + }
1594 +
1595 + //VENDOR PREFIXED PLACEHOLDER COLORS
1596 + $placeholder_color = K::get_var( 'email_font_color', $meta, '#000000' );
1597 + $css .= "#fca_eoi_form_$form_id .fca_eoi_form_input_element::-webkit-input-placeholder {opacity:0.6;color:$placeholder_color;}";
1598 + $css .= "#fca_eoi_form_$form_id .fca_eoi_form_input_element::-moz-placeholder {opacity:0.6;color:$placeholder_color;}";
1599 + $css .= "#fca_eoi_form_$form_id .fca_eoi_form_input_element:-ms-input-placeholder {opacity:0.6;color:$placeholder_color;}";
1600 + $css .= "#fca_eoi_form_$form_id .fca_eoi_form_input_element:-moz-placeholder {opacity:0.6;color:$placeholder_color;}";
1601 +
1602 + //HOVER
1603 + $hover_color = K::get_var( 'button_hover_color', $meta, 'initial' );
1604 + $selector = K::get_var( 'button_hover_color_selector', $meta, '' );
1605 +
1606 + $s1 = str_replace ( ' input', ':hover', $selector );
1607 + $s2 = str_replace ( ' input', ' input:hover', $selector );
1608 +
1609 + $css .= "#fca_eoi_form_$form_id $s1, #fca_eoi_form_$form_id $s2 {background-color:$hover_color !important;}";
1610 +
1611 + //WIDTHS
1612 + $width_selects = array(
1613 + 'form_width',
1614 + 'name_width',
1615 + 'email_width',
1616 + 'button_width',
1617 + );
1618 +
1619 + forEach ( $width_selects as $w ) {
1620 + $width = K::get_var( $w, $meta, '100' );
1621 + $units = K::get_var( "$w-units", $meta, '%' );
1622 + $selector = K::get_var( $w . "_selector", $meta, '' );
1623 + $css .= "#fca_eoi_form_$form_id $selector {width:$width$units;}";
1624 +
1625 + }
1626 +
1627 + //ADD CSS FROM FILE
1628 + $css .= $css_file;
1629 +
1630 + //ADD CUSTOM CSS FROM SAVE
1631 +
1632 + $added_widget_3_css_rule = false;
1633 +
1634 + foreach ( $settings as $key => $property ) {
1635 + $selector = empty ( $meta[$key] ) ? '' : $meta[$key];
1636 + $input = str_replace ( '_selector', '', $key);
1637 +
1638 + if ( !empty ( $selector ) ) {
1639 + //SPECIAL CASE FOR BUTTON BORDER
1640 + if ( $key === 'button_wrapper_background_color_selector' ) {
1641 + $selector = str_replace ( 'input', '', $selector );
1642 + }
1643 + //SPECIAL CASE FOR WIDGET 3
1644 + if ( $selector == '.fca_eoi_layout_3.fca_eoi_layout_widget div.fca_eoi_layout_headline_copy_wrapper div' && !$added_widget_3_css_rule && $input == 'headline_background_color' ) {
1645 + $css .= "#fca_eoi_form_$form_id form.fca_eoi_layout_3.fca_eoi_layout_widget svg.fca_eoi_layout_headline_copy_triangle { fill: $meta[$input] !important; }";
1646 + $added_widget_3_css_rule = true;
1647 + }
1648 +
1649 + $css .= "#fca_eoi_form_$form_id $selector { $property: $meta[$input] !important; }";
1650 +
1651 + }
1652 + }
1653 +
1654 + $animation = isset( $_POST['fca_eoi_animations'] ) && isset( $_POST['fca_eoi_show_animation_checkbox'] ) ? $_POST['fca_eoi_animations'] : '';
1655 + update_post_meta( $post->ID, 'fca_eoi_animation', $animation );
1656 +
1657 + $head = $css . '</style>';
1658 +
1659 + $html = fca_eoi_get_html ( $form_id, $meta );
1660 +
1661 + $head = $head . $html;
1662 + $meta[ 'post_id' ] = $post_id;
1663 +
1664 + //format conditions
1665 + $new_conditions = array();
1666 + $conditions = empty ( $meta['publish_lightbox']['conditions'] ) ? array() : $meta['publish_lightbox']['conditions'];
1667 +
1668 + forEach ( $conditions as $key => $value ) {
1669 + $new_conditions[] = array (
1670 + 'parameter' => $key,
1671 + 'value' => $value,
1672 + );
1673 + }
1674 + $meta['publish_lightbox']['conditions'] = $new_conditions;
1675 +
1676 + //SET THE LIVE TO 'FALSE' FOR BACKWARD COMPATIBILITY
1677 + $meta['publish_lightbox']['live'] = empty ( $meta['publish_lightbox']['live'] ) ? false : true;
1678 +
1679 + update_option( 'fca_eoi_last_provider', $meta[ 'provider' ] );
1680 + update_option( 'fca_eoi_last_form_meta', $meta );
1681 + update_post_meta( $post->ID, 'fca_eoi_meta_format', '2.0' );
1682 + update_post_meta( $post->ID, 'fca_eoi', $meta );
1683 + update_post_meta( $post->ID, 'fca_eoi_layout', $meta[ 'layout' ] );
1684 + update_post_meta( $post->ID, 'fca_eoi_provider', $meta[ 'provider' ] );
1685 + update_post_meta( $post->ID, 'fca_eoi_head', $head );
1686 +
1687 + }
1608 1688 }
1609 1689 }
1610 1690
1611 1691 public function live_preview( $content ) {
@@ -1619,67 +1699,88 @@
1619 1699 }
1620 1700
1621 1701 public function admin_enqueue() {
1622 1702
1623 - $protocol = is_ssl() ? 'https' : 'http';
1624 1703 $provider = $this->settings[ 'provider' ];
1625 1704 $providers_available = array_keys( $this->settings[ 'providers' ] );
1626 1705
1627 -
1628 -
1629 - if ( ( ! empty( $_REQUEST['page'] ) && $_REQUEST['page'] == 'eoi_powerups' ) || has_action( 'fca_eoi_powerups' ) ) {
1630 - wp_enqueue_style( 'fca_eoi_powerups', $this->settings['plugin_url'] . '/assets/powerups/fca_eoi_powerups.css' );
1706 + /**
1707 + * Disable autosaving optin forms since it causes data loss
1708 + */
1709 + if ( 'easy-opt-ins' == get_post_type() ) {
1710 + wp_dequeue_script( 'autosave' );
1631 1711 }
1632 1712
1633 1713 $screen = get_current_screen();
1634 1714 if( 'easy-opt-ins' === $screen->id ){
1635 - wp_enqueue_script( 'tooltipster', $this->settings[ 'plugin_url' ] . '/assets/vendor/tooltipster/jquery.tooltipster.min.js' );
1636 - wp_enqueue_style( 'tooltipster', $this->settings[ 'plugin_url' ] . '/assets/vendor/tooltipster/tooltipster.css' );
1637 - wp_enqueue_script( 'mustache', $protocol . '://cdnjs.cloudflare.com/ajax/libs/mustache.js/0.8.1/mustache.min.js' );
1638 - wp_enqueue_script( 'select2', $protocol . '://cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.js' );
1639 - wp_enqueue_script( 'tinycolor', $protocol . '://cdnjs.cloudflare.com/ajax/libs/tinycolor/1.0.0/tinycolor.min.js' );
1640 - wp_enqueue_script( 'jscolor', $this->settings['plugin_url'] . '/assets/vendor/jscolor/jscolor.js' );
1641 - wp_enqueue_script( 'admin-cpt-easy-opt-ins-providers', $this->settings['plugin_url'] . '/assets/admin/eoi-providers.js' );
1642 - wp_enqueue_style( 'admin-cpt-easy-opt-ins-providers', $this->settings['plugin_url'] . '/assets/admin/eoi-providers.css' );
1643 - wp_enqueue_script( 'admin-cpt-easy-opt-ins', $this->settings['plugin_url'] . '/assets/admin/cpt-easy-opt-ins.js' );
1644 - wp_enqueue_style( 'fca_eoi', $this->settings[ 'plugin_url' ].'/assets/style' . ( EasyOptInsLayout::uses_new_css() ? '-new' : '' ) . '.css' );
1715 + global $post;
1716 + $meta = get_post_meta($post->ID, 'fca_eoi', true );
1717 + $options = get_option( 'fca_eoi_settings' );
1718 + //LOAD DEPENDENCIES
1719 + wp_enqueue_script( 'fca_eoi_tooltipster', FCA_EOI_PLUGIN_URL . '/assets/vendor/tooltipster/tooltipster.bundle.min.js', array(), FCA_EOI_VER, true );
1720 + wp_enqueue_style( 'fca_eoi_tooltipster_css', FCA_EOI_PLUGIN_URL . '/assets/vendor/tooltipster/tooltipster.bundle.min.css', array(), FCA_EOI_VER );
1721 + wp_enqueue_style( 'fca_eoi_tooltipster_theme_css', FCA_EOI_PLUGIN_URL . '/assets/vendor/tooltipster/tooltipster-borderless.min.css', array(), FCA_EOI_VER );
1722 +
1723 + wp_enqueue_style( 'wp-color-picker' );
1724 + wp_enqueue_script( 'wp-color-picker' );
1725 + wp_enqueue_script( 'select2', '//cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.js', array(), FCA_EOI_VER, true );
1726 + wp_enqueue_style( 'font-awesome', '//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.1.0/css/font-awesome.min.css', array(), FCA_EOI_VER );
1727 + wp_enqueue_style( 'select2', '//cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.min.css', array(), FCA_EOI_VER );
1728 + wp_enqueue_script( 'accordion' );
1729 +
1730 + if ( !empty( $options['animation'] ) ) {
1731 + wp_enqueue_style( 'fca_eoi_powerups_animate', FCA_EOI_PLUGIN_URL . '/assets/vendor/animate/animate.min.css', array(), FCA_EOI_VER );
1732 + }
1733 +
1734 + //LOAD CUSTOM AJAX SPINNER CODE/CSS
1735 + wp_enqueue_script( 'fca-eoi-ajax-spinner', FCA_EOI_PLUGIN_URL . '/assets/admin/fca-eoi-ajax-spinner.min.js', array(), FCA_EOI_VER, true );
1736 + wp_enqueue_style( 'fca-eoi-ajax-spinner', FCA_EOI_PLUGIN_URL . '/assets/admin/fca-eoi-ajax-spinner.min.css', array(), FCA_EOI_VER );
1737 +
1738 + //LOAD COMMON CSS
1739 + wp_enqueue_style( 'fca-eoi-common-css', FCA_EOI_PLUGIN_URL .'/assets/style-new.min.css', array(), FCA_EOI_VER );
1740 +
1741 + //LOAD EDITOR JS
1742 + wp_enqueue_script( 'fca-eoi-editor', FCA_EOI_PLUGIN_URL . '/assets/admin/fca-eoi-editor.min.js', array('jquery', 'fca_eoi_tooltipster', 'wp-color-picker', 'select2', 'accordion' ), FCA_EOI_VER, true );
1743 + wp_enqueue_script( 'fca-eoi-rules', FCA_EOI_PLUGIN_URL . '/assets/admin/fca-eoi-rules.min.js', array('jquery' ), FCA_EOI_VER, true );
1744 +
1745 + //LOAD PROVIDER JS AND CSS
1645 1746 foreach ( $providers_available as $provider ) {
1646 - wp_enqueue_script( 'admin-cpt-easy-opt-ins-' . $provider, $this->settings['plugin_url'] . '/providers/' . $provider . '/cpt-easy-opt-ins.js' );
1747 + wp_enqueue_script( 'admin-cpt-easy-opt-ins-' . $provider, FCA_EOI_PLUGIN_URL . '/providers/' . $provider . '/cpt-easy-opt-ins.min.js', array(), FCA_EOI_VER, true );
1647 1748
1648 - $css_path = '/providers/' . $provider . '/cpt-easy-opt-ins.css';
1649 - if ( is_readable( $this->settings['plugin_dir'] . $css_path ) ) {
1650 - wp_enqueue_style( 'admin-cpt-easy-opt-ins-' . $provider, $this->settings['plugin_url'] . $css_path );
1749 + $css_path = '/providers/' . $provider . '/cpt-easy-opt-ins.min.css';
1750 + if ( is_readable( FCA_EOI_PLUGIN_DIR . $css_path ) ) {
1751 + wp_enqueue_style( 'admin-cpt-easy-opt-ins-' . $provider, FCA_EOI_PLUGIN_URL . $css_path, array(), FCA_EOI_VER );
1651 1752 }
1652 1753 }
1653 - wp_enqueue_style( 'admin-cpt-easy-opt-ins', $this->settings['plugin_url'] . '/assets/admin/cpt-easy-opt-ins.css' );
1654 - if ( EasyOptInsLayout::uses_new_css() ) {
1655 - wp_enqueue_style( 'admin-cpt-easy-opt-ins-new', $this->settings['plugin_url'] . '/assets/admin/cpt-easy-opt-ins-new.css' );
1656 - } else {
1657 - wp_enqueue_style( 'admin-cpt-easy-opt-ins-old', $this->settings['plugin_url'] . '/assets/admin/cpt-easy-opt-ins-old.css' );
1658 - }
1659 - wp_enqueue_style( 'font-awesome', $protocol . '://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.1.0/css/font-awesome.min.css' );
1660 - wp_enqueue_style( 'select2', $protocol . '://cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.min.css' );
1661 - wp_enqueue_script('bootstrap-js', $protocol . '://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.2.0/js/bootstrap.min.js');
1754 + //SEND VARIABLES TO JS
1755 + $useGroups = empty ( $options['mailchimp_groups'] ) ? array('off') : array('on') ;
1756 + wp_localize_script( 'admin-cpt-easy-opt-ins-mailchimp', 'fcaEoiUseGroups', $useGroups );
1757 +
1758 + $tags = empty($meta['aweber_tags']) ? '' : $meta['aweber_tags'];
1759 + $aweberSettings = array(
1760 + 'tags' => $tags,
1761 + );
1762 + wp_localize_script( 'admin-cpt-easy-opt-ins-aweber', 'fcaEoiAweberSettings', $aweberSettings );
1763 +
1764 + $file = plugin_dir_path( __FILE__ ) . "layout-cache";
1765 + $layout_data = unserialize (file_get_contents($file));
1766 +
1767 + wp_localize_script( 'fca-eoi-editor', 'fcaEoiLayouts', $layout_data );
1768 +
1769 + //EDITOR CSS
1770 + wp_enqueue_style( 'fca-eoi-editor-css', FCA_EOI_PLUGIN_URL . '/assets/admin/fca-eoi-editor.min.css', array(), FCA_EOI_VER );
1771 +
1662 1772 if ( has_action( 'fca_eoi_powerups' ) ) {
1663 - wp_enqueue_script('fca_eoi_powerups', $this->settings['plugin_url'] . '/assets/powerups/fca_eoi_powerups.js');
1773 + wp_enqueue_script('fca_eoi_powerups', FCA_EOI_PLUGIN_URL . '/assets/powerups/fca_eoi_powerups.min.js', array(), FCA_EOI_VER, true);
1664 1774 }
1665 1775 }
1666 1776 if( 'widgets' === $screen->id ){
1667 - wp_enqueue_script( 'select2', $protocol . '://cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.js' );
1668 - wp_enqueue_style( 'select2', $protocol . '://cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.min.css' );
1777 + wp_enqueue_script( 'select2', '//cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.js', array(), FCA_EOI_VER, true );
1778 + wp_enqueue_style( 'select2', '//cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.min.css', array(), FCA_EOI_VER );
1669 1779 }
1670 1780 }
1671 1781
1672 1782 /**
1673 - * Disable autosaving optin forms since it causes data loss
1674 - */
1675 - function disable_autosave() {
1676 - if ( 'easy-opt-ins' == get_post_type() ) {
1677 - wp_dequeue_script( 'autosave' );
1678 - }
1679 - }
1680 -
1681 - /**
1682 1783 * Hides minor publising form items (status, visibility and publication date)
1683 1784 *
1684 1785 * This function shoud be used along with force_published to prevent
1685 1786 * saving posts as drafts
@@ -1689,36 +1790,97 @@
1689 1790 if( in_array( $screen->id, array( 'easy-opt-ins' ) ) ) {
1690 1791 echo '<style>#minor-publishing { display: none; }</style>';
1691 1792 }
1692 1793 }
1794 +
1795 + public function onboard_help() {
1693 1796
1694 - /**
1695 - * Disables meta box toggling (collapse/expand) for specified post types
1696 - */
1697 - public function disable_metabox_toggle() {
1797 + $current_screen = get_current_screen();
1798 +
1799 + // Exit function if we are not on the opt-in list
1800 + if ( $current_screen->id === 'edit-easy-opt-ins' ) {
1801 + $posts = get_posts( 'posts_per_page=-1&post_type=easy-opt-ins' );
1802 +
1803 + if ( empty ( $posts ) ) {
1804 +
1805 + wp_enqueue_style( 'fca_eoi_onboard_stylesheet', FCA_EOI_PLUGIN_URL . '/assets/admin/onboard.min.css', array(), FCA_EOI_VER );
1806 +
1807 + echo '<div class="error fca_eoi_onboard_div">';
1808 +
1809 + echo '<img id="fca_eoi_onboard_text" src="' . FCA_EOI_PLUGIN_URL . '/assets/admin/onboarding-text.png' . '">';
1810 + echo '<img id="fca_eoi_onboard_arrow" src="' . FCA_EOI_PLUGIN_URL . '/assets/admin/onboarding-arrow.png' . '">';
1811 + echo '</div>';
1812 + }
1813 + }
1814 + }
1815 +
1816 + public function google_changes_notice() {
1698 1817
1699 - $current_screen = get_current_screen();
1818 + $dismissed = get_option ( 'fca_eoi_dismiss_google_changes' );
1819 +
1820 + if ( $dismissed !== 'true' ) {
1821 +
1822 + wp_enqueue_script( 'fca_eoi_dismiss_review_js', FCA_EOI_PLUGIN_URL . '/assets/admin/dismiss.min.js', array(), FCA_EOI_VER );
1823 + wp_localize_script( 'fca_eoi_dismiss_review_js', 'fcaEoiDismiss', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'fca_eoi_dismiss' ) ) );
1824 + $blog_link = 'https://fatcatapps.com/interstitials-update/';
1825 +
1826 + echo '<div class="notice notice-info fca_eoi_review_div" style="padding-bottom: 8px;">';
1827 + echo '<img style="float:left" width="120" height="120" src="' . FCA_EOI_PLUGIN_URL . '/assets/admin/optincat.png' . '">';
1828 + echo '<p><strong>' . __( "Optin Cat: New Google algorithm update may affect your rankings", 'easy-opt-ins' ) . '</strong></p>';
1829 +
1830 + echo '<p>' . __( "Google has recently made changes to its mobile search results. These changes may negatively impact sites that use popups on mobile devices if no action is taken.", 'easy-opt-ins') . '</p>';
1831 + echo '<br>';
1832 +
1833 + echo "<a target='_blank' href='$blog_link' class='button button-primary'>" . __( 'Learn More & Fix This', 'easy-opt-ins') . "</a> ";
1834 + echo "<button type='button' class='button button-secondary' data-option='fca_eoi_dismiss_google_changes' id='fca-eoi-dismiss-review-btn'>" . __( 'Dismiss', 'easy-opt-ins') . "</button>";
1835 + echo '<br style="clear:both">';
1836 + echo '</div>';
1837 + }
1838 + }
1839 +
1840 + public function review_notice() {
1841 +
1842 + $dismissed = get_option ( 'fca_eoi_dismiss_review' );
1843 +
1844 + if ( $dismissed !== 'true' ) {
1845 + $activity = EasyOptInsActivity::get_instance();
1846 + $stats = $activity->get_form_stats( $this->activity_day_interval['form_list'] );
1847 + $conversions = empty ( $stats['conversions'] ) ? array() : $stats['conversions'];
1848 + $conversions = array_sum ( $conversions );
1849 +
1850 + if ( $conversions >= 25 ) {
1851 + $review_link = 'https://wordpress.org/support/plugin/' . FCA_EOI_PLUGIN_SLUG . '/reviews/?rate=5#new-post';
1700 1852
1701 - // Array of post types where we want to remove metabox toggling
1702 - $post_types = array(
1703 - 'easy-opt-ins',
1704 - );
1853 + wp_enqueue_script( 'fca_eoi_dismiss_review_js', FCA_EOI_PLUGIN_URL . '/assets/admin/dismiss.min.js', array(), FCA_EOI_VER );
1854 + wp_localize_script( 'fca_eoi_dismiss_review_js', 'fcaEoiDismiss', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'fca_eoi_dismiss' ) ) );
1855 +
1856 + echo '<div class="notice notice-success fca_eoi_review_div">';
1857 + echo '<img style="float:left" width="120" height="120" src="' . FCA_EOI_PLUGIN_URL . '/assets/admin/optincat.png' . '">';
1858 + echo '<p><strong>' . __( "Great work! You've gotten more than 25 email subscribers using Optin Cat.", 'easy-opt-ins' ) . '</strong></p>';
1859 +
1860 + echo '<p>' . sprintf( __( "If you love Optin Cat, why not leave us a nice review on %sWordPress.org%s? Reviews keeps us motivated - we'd really appreciate it.", 'easy-opt-ins' ), "<a target='_blank' href='$review_link'>", '</a>') . '</p>';
1861 + echo '<br>';
1862 +
1863 + echo "<a target='_blank' href='$review_link' class='button button-primary'>" . __( 'Leave a Review', 'easy-opt-ins') . "</a> ";
1864 + echo "<button type='button' class='button button-secondary' data-option='fca_eoi_dismiss_review' id='fca-eoi-dismiss-review-btn'>" . __( 'Dismiss', 'easy-opt-ins') . "</button>";
1865 + echo '<br style="clear:both">';
1866 + echo '</div>';
1867 +
1868 + }
1869 + }
1870 + }
1871 +
1872 + public function ajax_dismiss_notice() {
1873 +
1874 + $nonce = empty ( $_REQUEST['nonce'] ) ? '' : $_REQUEST['nonce'];
1875 + $option = empty ( $_REQUEST['option'] ) ? 'fca_eoi_dismiss_review' : $_REQUEST['option'];
1705 1876
1706 - if( in_array( $current_screen->id, $post_types ) ) {
1707 - ?>
1708 - <script type="text/javascript">
1709 - jQuery( document ).ready( function($) {
1710 - $( '.postbox' ).removeClass( 'closed' );
1711 - $( '.postbox .hndle' ).css( 'cursor', 'default' );
1712 - $( document ).delegate( '.postbox h3, .postbox .handlediv', 'click', function() {
1713 - $( this )
1714 - .unbind( 'click.postboxes' )
1715 - .parent().removeClass( 'closed' );
1716 - } );
1717 - } );
1718 - </script>
1719 - <?php
1877 + if ( wp_verify_nonce ( $nonce, 'fca_eoi_dismiss') == 1 ) {
1878 + if ( update_option( $option, 'true' ) ) {
1879 + wp_send_json_success( $option );
1880 + }
1720 1881 }
1882 + wp_send_json_error();
1721 1883 }
1722 1884
1723 1885 /**
1724 1886 * Forces one column
@@ -1766,27 +1928,38 @@
1766 1928
1767 1929 /**
1768 1930 * Override some strings to match our likings
1769 1931 */
1770 - public function override_text( $text ) {
1932 + public function override_text( $messages ) {
1933 +
1934 + global $post;
1771 1935
1772 - if( $post = K::get_var( 'post', $GLOBALS ) ) {
1773 - if ( 'easy-opt-ins' === $post->post_type ) {
1774 - switch ( $text ) {
1775 - case 'Post published. <a href="%s">View post</a>':
1776 - case 'Post updated. <a href="%s">View post</a>':
1777 - $text = __( 'Opt-In Form saved.' );
1778 - break;
1779 - case 'Publish':
1780 - $text = __( 'Save' );
1781 - break;
1782 - case 'Update':
1783 - $text = __( 'Save' );
1784 - break;
1785 - }
1786 - }
1936 + $post_ID = $post->ID;
1937 + $post_type = get_post_type( $post_ID );
1938 +
1939 + $obj = get_post_type_object( $post_type );
1940 + $singular = $obj->labels->singular_name;
1941 +
1942 + if ( 'easy-opt-ins' === $post->post_type ) {
1943 +
1944 + $messages[$post_type] = array(
1945 + 0 => '', // Unused. Messages start at index 1.
1946 + 1 => __( 'Opt-In Form updated.' ),
1947 + 2 => __( 'Opt-In Form updated.' ),
1948 + 3 => __( 'Opt-In Form deleted.' ),
1949 + 4 => __( 'Opt-In Form updated.' ),
1950 + 5 => isset( $_GET['revision']) ? sprintf( __('%2$s restored to revision from %1$s' ), wp_post_revision_title( (int) $_GET['revision'], false ), esc_attr( $singular ) ) : false,
1951 + 6 => __( 'Opt-In Form saved.' ),
1952 + 7 => sprintf( __( '%s saved.' ), esc_attr( $singular ) ),
1953 + 8 => sprintf( __( '%s submitted. <a href="%s" target="_blank">Preview %s</a>'), $singular, esc_url( add_query_arg( 'preview', 'true', get_permalink( $post_ID ) ) ), strtolower( $singular ) ),
1954 + 9 => sprintf( __( '%s scheduled for: <strong>%s</strong>. <a href="%s" target="_blank">Preview %s</a>' ), $singular, date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink( $post_ID ) ), strtolower( $singular ) ),
1955 + 10 => sprintf( __( '%s draft updated. <a href="%s" target="_blank">Preview %s</a>'), $singular, esc_url( add_query_arg( 'preview', 'true', get_permalink( $post_ID ) ) ), strtolower( $singular ) )
1956 + );
1957 +
1787 1958 }
1788 - return $text;
1959 +
1960 + return $messages;
1961 +
1789 1962 }
1790 1963
1791 1964 public function force_published( $post ) {
1792 1965
@@ -1820,135 +1993,73 @@
1820 1993 /**
1821 1994 * Add the desired body classes (backend)
1822 1995 */
1823 1996 public function add_body_class( $classes ) {
1824 -
1825 1997 return "$classes fca_eoi";
1826 1998 }
1827 -
1999 +
2000 +
1828 2001 /**
1829 2002 * Handle Adding a subscriber with Ajax
1830 2003 */
1831 2004 public function ajax_subscribe() {
1832 -
1833 - // Check a list_id is provided
1834 - $list_id = K::get_var( 'list_id' , $_POST );
1835 - if( ! $list_id ) {
1836 - echo '✗';
1837 - exit;
2005 +
2006 + $error = '';
2007 + // Get meta
2008 + $id = $_REQUEST['form_id'];
2009 +
2010 + if (empty ($id)){
2011 + $error .= "Couldn't find form ID";
1838 2012 }
1839 2013
1840 - // Subscribe user
1841 - $status = call_user_func( $this->settings[ 'provider' ] . '_add_user' , $this->settings , $_POST , $list_id );
1842 - // Output ✓ or ✗
1843 - if( $status ) {
1844 - $fca_eoi = get_post_meta( K::get_var( 'form_id' , $_POST ), 'fca_eoi', true );
1845 - $double_opt_in = K::get_var( 'mailchimp_double_opt_in', $fca_eoi, '' );
1846 - do_action('fca_eoi_after_submission'
1847 - , $fca_eoi
1848 - , $_POST
1849 - );
1850 - echo '✓';
1851 - } else {
1852 - echo '✗';
1853 - }
1854 - exit;
1855 - }
1856 -
1857 - /**
1858 - * Handle form submissions
1859 - */
1860 - public function handle_submission() {
1861 -
1862 - // Check that we have a form submission
1863 - if ( ! K::get_var( 'fca_eoi', $_POST ) ) {
1864 - return;
1865 - }
1866 -
1867 - // Check that we have a valid form
1868 - $id = K::get_var( 'id', $_POST );
1869 - $post = get_post( $id );
1870 - if ( $post && 'easy-opt-ins' === $post->post_type ) {
1871 - // Nothing, we're good
1872 - } else {
1873 - return;
1874 - }
1875 -
1876 - // Get meta
1877 2014 $fca_eoi = get_post_meta( $id, 'fca_eoi', true );
2015 +
2016 + if (empty ($fca_eoi)){
2017 + $error .= "Couldn't find post meta";
2018 + }
2019 +
1878 2020 $provider = K::get_var( 'provider' , $fca_eoi );
1879 -
2021 +
1880 2022 // Check a list_id is provided
1881 2023 $list_id = K::get_var( $provider . '_list_id' , $fca_eoi );
1882 -
1883 - // @todo: remove
1884 - // Hack for mailchimp upgrade
1885 - if( empty( $fca_eoi[ 'provider' ] ) ) {
1886 - $list_id = K::get_var(
1887 - 'mailchimp_list_id'
1888 - , $fca_eoi
1889 - , K::get_var( 'list_id' , $fca_eoi )
1890 - );
1891 - $provider = 'mailchimp';
2024 + if ( empty( $list_id ) ) {
2025 + $error .= "List not set";
1892 2026 }
1893 - // End of Hack
1894 -
1895 - // Hack for campaignmonitor upgrade
1896 - if( strlen( K::get_var( 'list_id' , $fca_eoi ) ) == 32){
1897 - $list_id = K::get_var(
1898 - 'campaignmonitor_list_id'
1899 - , $fca_eoi
1900 - , K::get_var( 'list_id' , $fca_eoi )
1901 - );
1902 - $provider = 'campaignmonitor';
2027 +
2028 + $nonce = $_REQUEST['nonce'];
2029 + $nonceVerified = wp_verify_nonce( $nonce, 'fca_eoi_submit_form' );
2030 + if ($nonceVerified === FALSE) {
2031 + $error .= "Couldn't verify form submission";
1903 2032 }
1904 - // End of Hack
1905 -
1906 - // Hack for mailchimp upgrade
1907 - if( empty( $fca_eoi[ 'provider' ] ) ) {
1908 - $list_id = K::get_var(
1909 - 'getresponse_list_id'
1910 - , $fca_eoi
1911 - , K::get_var( 'list_id' , $fca_eoi )
1912 - );
1913 - $provider = 'getresponse';
1914 - }
1915 - // End of Hack
1916 -
1917 - // Hack for custom form upgrade
1918 - if( empty( $fca_eoi[ 'provider' ] ) ) {
1919 - $list_id = K::get_var(
1920 - 'customform_list_id'
1921 - , $fca_eoi
1922 - , K::get_var( 'list_id' , $fca_eoi )
1923 - );
1924 - $provider = 'customform';
1925 - }
1926 - // End of Hack
1927 -
1928 - // Subscribe user
1929 - if( $list_id ) {
2033 +
2034 + // Subscribe user
2035 + $status = false;
2036 +
2037 + if( $list_id && $nonceVerified !== FALSE ) {
2038 + $str = $provider . '_add_user';
2039 +
1930 2040 $status = call_user_func( $provider . '_add_user' , $this->settings , $_POST , $list_id );
1931 - $double_opt_in = K::get_var( 'mailchimp_double_opt_in', $fca_eoi, '' );
1932 - do_action('fca_eoi_after_submission'
1933 - , $fca_eoi
1934 - , $_POST
1935 - );
2041 +
2042 + do_action('fca_eoi_after_submission', $fca_eoi, $_POST );
2043 +
2044 + if ($status !== TRUE) {
2045 + $error .= " Can't add user";
2046 + }
1936 2047 }
1937 -
1938 - // Go to thank you page if any
1939 - $thank_you_page = K::get_var( 'thank_you_page', $fca_eoi );
1940 - $thank_you_page_url = ( $thank_you_page && '~' !== $thank_you_page )
1941 - ? get_permalink( $thank_you_page )
1942 - : get_home_url()
1943 - ;
1944 - EasyOptInsActivity::get_instance()->add_conversion( K::get_var( 'fca_eoi_form_id', $_POST ) );
1945 - wp_redirect( $thank_you_page_url );
2048 +
2049 + if ( $status !== FALSE && $error === '' ) {
2050 + echo '✓';
2051 + EasyOptInsActivity::get_instance()->add_conversion( $id );
2052 + } else {
2053 + echo '✗' . " Error: " . $error;
2054 + }
2055 +
1946 2056 exit;
1947 2057 }
1948 2058
1949 2059 public function admin_notices() {
1950 2060
2061 + //RN NOTE: MAYBE REWRITE
1951 2062 $current_screen = get_current_screen();
1952 2063
1953 2064 // Exit function if we are not on the opt-in editing page
1954 2065 if ( ! (
@@ -2006,27 +2117,22 @@
2006 2117 }
2007 2118
2008 2119 add_action( 'wp', array( $this, 'content' ), 10 );
2009 2120 }
2010 -
2121 +
2122 + //SEARCH THE CONTENT AND APPEND ANY RELEVANT POST BOXES
2011 2123 public function content() {
2012 -
2124 +
2013 2125 global $post;
2014 -
2015 - if ( empty( $post ) ) {
2126 +
2127 + // Work only when viewing a post of any type & not viewing an opt-in editor
2128 + if ( empty( $post ) OR $post->post_type === 'easy-opt-ins' ) {
2016 2129 return;
2017 2130 }
2131 +
2132 + //ADD SESSION COOKIE TRACKING SCRIPT
2133 + wp_enqueue_script( 'fca_eoi_pagecount_js', FCA_EOI_PLUGIN_URL.'/assets/pagecount.min.js', array(), FCA_EOI_VER, true );
2018 2134
2019 - // Do nothing if viewing an opt-in
2020 - if ( 'easy-opt-ins' === $post->post_type ) {
2021 - return;
2022 - }
2023 -
2024 - // Work only when viewing a post of any type
2025 - if ( empty( $post ) ) {
2026 - return;
2027 - }
2028 -
2029 2135 $priorities = array();
2030 2136
2031 2137 // Post details
2032 2138 $post_ID = $post->ID;
@@ -2043,10 +2149,10 @@
2043 2149 }
2044 2150
2045 2151 $priorities[] = '#' . $post_ID;
2046 2152
2047 - $taxonomies = get_taxonomies('','names');
2048 - $post_taxonomies = wp_get_object_terms( $post->ID,$taxonomies);
2153 + $taxonomies = get_taxonomies('', 'names');
2154 + $post_taxonomies = wp_get_object_terms( $post->ID, $taxonomies);
2049 2155 foreach ( $post_taxonomies as $t ) {
2050 2156 $condition = $post_type . ':' . $t->term_id;
2051 2157
2052 2158 $post_cond[] = $condition;
@@ -2055,28 +2161,22 @@
2055 2161
2056 2162 $priorities[] = $post_type;
2057 2163 $priorities[] = '*';
2058 2164
2059 - $fca_eoi_last_99_forms = array();
2060 - foreach (get_posts( 'posts_per_page=99&post_type=easy-opt-ins' ) as $i => $f ) {
2061 - $fca_eoi_last_99_forms[ $i ][ 'post' ] = $f;
2062 - $fca_eoi_last_99_forms[ $i ][ 'fca_eoi' ] = get_post_meta( $f->ID, 'fca_eoi', true );
2165 + $optins = get_posts( 'posts_per_page=99&post_type=easy-opt-ins' );
2166 +
2167 + $fca_eoi_postboxes = array();
2168 +
2169 + foreach ( $optins as $i => $p ) {
2170 + $fca_eoi_postboxes[ $i ][ 'post' ] = $p;
2171 + $fca_eoi_postboxes[ $i ][ 'fca_eoi' ] = get_post_meta( $p->ID, 'fca_eoi', true );
2063 2172 }
2064 - // wp_reset_query();
2065 2173
2066 2174 $postboxes = array();
2067 2175
2068 2176 // Append postcode shortcode when the conditions match
2069 - foreach( $fca_eoi_last_99_forms as $f) {
2177 + foreach( $fca_eoi_postboxes as $f ) {
2070 2178
2071 - // Exclude other layout types
2072 - if ( empty ( $f[ 'fca_eoi' ][ 'layout' ] ) ) {
2073 - continue;
2074 - }
2075 - if ( strpos( $f[ 'fca_eoi' ][ 'layout' ], 'postbox_' ) !== 0 ) {
2076 - continue;
2077 - }
2078 -
2079 2179 // Get conditions
2080 2180 $eoi_form_cond = K::get_var( 'publish_postbox', $f[ 'fca_eoi' ], array() );
2081 2181
2082 2182 // Append
@@ -2090,9 +2190,9 @@
2090 2190 }
2091 2191
2092 2192 if ( ! empty( $postboxes ) ) {
2093 2193 foreach ( $priorities as $cond ) {
2094 - if ( ! empty( $postboxes[ $cond ] ) ) {
2194 + if ( !empty( $postboxes[ $cond ] ) ) {
2095 2195 $post->post_content .= $postboxes[ $cond ];
2096 2196 return;
2097 2197 }
2098 2198 }
@@ -2101,194 +2201,8 @@
2101 2201 return;
2102 2202 }
2103 2203 }
2104 2204
2105 - private function get_tc_token( $form_id ) {
2106 - return "$form_id";
2107 - }
2108 -
2109 - private function to_call_tc_condition( $name, $arguments ) {
2110 - return array_merge( array( $name ), $arguments );
2111 - }
2112 -
2113 - private function to_value_tc_condition( $form_id, $name, $eoi_condition ) {
2114 - $value = intval( $eoi_condition['value'] );
2115 - $params = array( $value );
2116 -
2117 - if ( $name === 'page_views' ) {
2118 - $params[] = $this->get_tc_token( $form_id );
2119 - } else if ( $name === 'time_on_page' ) {
2120 - $params[0] *= 1000;
2121 - }
2122 -
2123 - return $this->to_call_tc_condition( $name, $params );
2124 - }
2125 -
2126 - private function to_server_pass_tc_condition( $post_id, $parameter, $eoi_condition ) {
2127 - $url = add_query_arg( array(
2128 - 'fca_eoi_tc_condition_pass' => urlencode( $parameter ),
2129 - 'fca_eoi_tc_condition_value' => urlencode( implode( ',', $eoi_condition['value'] ) ),
2130 - 'fca_eoi_tc_condition_post_id' => $post_id
2131 - ) );
2132 -
2133 - return $this->to_call_tc_condition( 'server_pass', array( $url, 'true' ) );
2134 - }
2135 -
2136 - private function to_tc_condition( $form_id, $post_id, $eoi_condition ) {
2137 - $eoi_to_tc_value_map = array(
2138 - 'pageviews' => 'page_views',
2139 - 'scrolled_percent' => 'scroll_percent',
2140 - 'time_on_page' => 'time_on_page'
2141 - );
2142 -
2143 - $eoi_server_pass_conditions = array( 'include', 'exclude' );
2144 -
2145 - $parameter = $eoi_condition['parameter'];
2146 - if ( array_key_exists( $parameter, $eoi_to_tc_value_map ) ) {
2147 - return $this->to_value_tc_condition( $form_id, $eoi_to_tc_value_map[ $parameter ], $eoi_condition );
2148 - } else if ( in_array( $parameter, $eoi_server_pass_conditions ) ) {
2149 - return $this->to_server_pass_tc_condition( $post_id, $parameter, $eoi_condition );
2150 - }
2151 -
2152 - return null;
2153 - }
2154 -
2155 - private function to_show_every_tc_condition( $form_id, $condition ) {
2156 - if ( in_array( $condition, array( 'day', 'month', 'once', 'session' ) ) ) {
2157 - return array( $condition, $this->get_tc_token( $form_id ) );
2158 - } elseif ( $condition === 'always' ) {
2159 - return 'true';
2160 - } elseif ( $condition === 'never' ) {
2161 - return 'false';
2162 - }
2163 -
2164 - return $condition;
2165 - }
2166 -
2167 - private function get_tc_conditions( $form_id, $post_id, $conditions ) {
2168 - $tc_conditions = array();
2169 - $sequence_conditions = array();
2170 -
2171 - if ( ! empty( $conditions['show_every'] ) ) {
2172 - $condition = $this->to_show_every_tc_condition( $form_id, $conditions['show_every'] );
2173 -
2174 - if ( $condition === 'false' ) {
2175 - return array( 'false' );
2176 - } else {
2177 - $sequence_conditions[] = $condition;
2178 - }
2179 - }
2180 -
2181 - if ( ! empty( $conditions['conditions'] ) ) {
2182 - foreach ( $conditions['conditions'] as $condition ) {
2183 - if ( $condition['parameter'] === 'exit_intervention' ) {
2184 - $sequence_conditions[] = 'exit';
2185 - continue;
2186 - }
2187 -
2188 - $tc_condition = $this->to_tc_condition( $form_id, $post_id, $condition );
2189 - if ( ! empty( $tc_condition ) ) {
2190 - $tc_conditions[] = $tc_condition;
2191 - }
2192 - }
2193 - }
2194 -
2195 - $has_conditions = ! empty ( $tc_conditions );
2196 - if ( $has_conditions ) {
2197 - $tc_conditions = array( 'and' => $tc_conditions );
2198 - }
2199 -
2200 - if ( $sequence_conditions ) {
2201 - if ( $has_conditions ) {
2202 - $tc_conditions = array( 'sequence' => array( $tc_conditions ) );
2203 - } else {
2204 - $tc_conditions = array( 'sequence' => array() );
2205 - }
2206 - foreach ( $sequence_conditions as $condition ) {
2207 - $tc_conditions['sequence'][] = $condition;
2208 - }
2209 - }
2210 -
2211 - return $tc_conditions;
2212 - }
2213 -
2214 - private function echo_tc_conditions_for_form( $form_id, $post_id ) {
2215 - $fca_eoi = get_post_meta( $form_id , 'fca_eoi', true );
2216 - $publish_lightbox = K::get_var( 'publish_lightbox', $fca_eoi, array() );
2217 -
2218 - header( 'Content-Type: application/json' );
2219 - exit( json_encode( $this->get_tc_conditions( $form_id, $post_id, $publish_lightbox ) ) );
2220 - }
2221 -
2222 - private function echo_tc_condition_pass( $post_id, $type, $values ) {
2223 - $post_cond = array( '*' );
2224 -
2225 - if ( is_front_page() ) {
2226 - $post_cond[] = '~';
2227 - }
2228 -
2229 - if ( $post_id ) {
2230 - $post_type = get_post_type( $post_id );
2231 -
2232 - $post_cond[] = $post_type;
2233 - $post_cond[] = '#' . $post_id;
2234 -
2235 - $taxonomies = get_taxonomies( '', 'names' );
2236 - $post_taxonomies = wp_get_object_terms( $post_id, $taxonomies );
2237 -
2238 - foreach ( $post_taxonomies as $t ) {
2239 - $post_cond[] = $post_type . ':' . $t->term_id;
2240 - }
2241 - }
2242 -
2243 - $intersect = array_intersect( $values, $post_cond );
2244 -
2245 - if ( $type === 'include' ) {
2246 - echo $intersect ? 'true' : 'false';
2247 - } else if ( $type === 'exclude' ) {
2248 - echo $intersect ? 'false' : 'true';
2249 - }
2250 -
2251 - exit;
2252 - }
2253 -
2254 - public function parse_tc_condition_request() {
2255 - $post_id = empty( $_REQUEST['fca_eoi_tc_condition_post_id'] ) ? 0 : (int) $_REQUEST['fca_eoi_tc_condition_post_id'];
2256 -
2257 - if ( ! empty( $_REQUEST['fca_eoi_tc_conditions_for'] ) ) {
2258 - $form_id = (int) $_REQUEST['fca_eoi_tc_conditions_for'];
2259 - $this->echo_tc_conditions_for_form( $form_id, $post_id );
2260 - }
2261 -
2262 - if ( ! empty( $_REQUEST['fca_eoi_tc_condition_pass'] ) ) {
2263 - $this->echo_tc_condition_pass(
2264 - $post_id,
2265 - $_REQUEST['fca_eoi_tc_condition_pass'],
2266 - explode( ',', $_REQUEST['fca_eoi_tc_condition_value'] )
2267 - );
2268 - }
2269 - }
2270 -
2271 - private function get_cookie_configuration() {
2272 - $cookie_configuration = array();
2273 -
2274 - if ( defined( 'COOKIEPATH' ) ) {
2275 - $path = COOKIEPATH;
2276 - if ( ! empty( $path ) ) {
2277 - $cookie_configuration['path'] = $path;
2278 - }
2279 - }
2280 -
2281 - if ( defined( 'COOKIE_DOMAIN' ) ) {
2282 - $domain = COOKIE_DOMAIN;
2283 - if ( ! empty( $domain ) ) {
2284 - $cookie_configuration['domain'] = $domain;
2285 - }
2286 - }
2287 -
2288 - return $cookie_configuration;
2289 - }
2290 -
2291 2205 public function scan_for_shortcodes( $content ) {
2292 2206 if ( preg_match_all( '/data-optin-cat\s*=\s*["\']?\s*(\d+)/', $content, $matches ) ) {
2293 2207 $this->two_step_ids_on_page = array_map( 'intval', $matches[1] );
2294 2208 }
@@ -2295,18 +2209,10 @@
2295 2209
2296 2210 return $content;
2297 2211 }
2298 2212
2299 - public function show_lightbox() {
2213 + public function maybe_show_lightbox() {
2300 2214
2301 - // Do not show lightbox on mobile if this is the free distribution
2302 - if ( $this->settings[ 'distribution' ] === 'free' ) {
2303 - $mobile_detect = new Mobile_Detect;
2304 - if ( $mobile_detect->isMobile() ) {
2305 - return;
2306 - }
2307 - }
2308 -
2309 2215 // Get lightboxes
2310 2216 $lightboxes = get_posts( array(
2311 2217 'post_type' => 'easy-opt-ins',
2312 2218 'posts_per_page' => -1,
@@ -2314,506 +2220,232 @@
2314 2220 'meta_key' => 'fca_eoi_layout',
2315 2221 'meta_value' => 'lightbox_',
2316 2222 'meta_compare' => 'like',
2317 2223 ) );
2224 +
2225 + // BANNERS
2226 + $banners = get_posts( array(
2227 + 'post_type' => 'easy-opt-ins',
2228 + 'posts_per_page' => -1,
2229 + 'orderby' => 'ID',
2230 + 'meta_key' => 'fca_eoi_layout',
2231 + 'meta_value' => 'banner_',
2232 + 'meta_compare' => 'like',
2233 + ) );
2234 +
2235 + //OVERLAY AND BANNERS WORK FUNCTIONALLY THE SAME
2236 + $banners = array_merge ( $banners, get_posts( array(
2237 + 'post_type' => 'easy-opt-ins',
2238 + 'posts_per_page' => -1,
2239 + 'orderby' => 'ID',
2240 + 'meta_key' => 'fca_eoi_layout',
2241 + 'meta_value' => 'overlay_',
2242 + 'meta_compare' => 'like',
2243 + ) ) );
2318 2244
2319 - // Exit function if no lightbox found
2320 - if( ! $lightboxes ) {
2321 - return;
2245 + if( empty( $lightboxes ) && empty ( $banners ) ) {
2246 + return false;
2322 2247 }
2323 2248
2324 - $two_step_ids = array();
2325 - $traditional_ids = array();
2326 -
2249 + $two_step_popups = array();
2250 + $traditional_popups = array();
2251 + $banners_to_show = array();
2252 +
2253 + foreach ( $banners as $banner ) {
2254 + $m = get_post_meta( $banner->ID , 'fca_eoi', true );
2255 + $conditions = K::get_var( 'publish_lightbox', $m, array() );
2256 +
2257 + if ( $this->test_server_conditions( $conditions ) ) {
2258 + $banners_to_show[] = array(
2259 + 'id' => $banner->ID,
2260 + 'meta' => $m,
2261 + 'conditions' => $conditions,
2262 + );
2263 + }
2264 + }
2265 +
2327 2266 foreach ( $lightboxes as $lightbox ) {
2328 2267
2329 2268 // Get conditions
2330 2269 $lightbox->fca_eoi = get_post_meta( $lightbox->ID , 'fca_eoi', true );
2331 2270 $publish_lightbox_mode = K::get_var( 'publish_lightbox_mode', $lightbox->fca_eoi, array() );
2332 -
2271 +
2272 + $lightbox_conditions = K::get_var( 'publish_lightbox', $lightbox->fca_eoi, array() );
2273 +
2333 2274 // If on a free distribution, force traditional popup mode
2334 - if ( 'free' === $this->settings['distribution'] ) {
2275 + if ( $this->settings['distribution'] === 'free' ) {
2335 2276 $publish_lightbox_mode = 'traditional_popup';
2336 2277 }
2337 -
2278 +
2338 2279 if ( 'two_step_optin' === $publish_lightbox_mode ) {
2339 - $two_step_ids[] = $lightbox->ID;
2340 - } else {
2341 - $traditional_ids[] = $lightbox->ID;
2280 + $two_step_popups[] = $lightbox->ID;
2281 + } else if ( $this->test_server_conditions( $lightbox_conditions ) ) {
2282 + $traditional_popups[] = array(
2283 + 'id' => $lightbox->ID,
2284 + 'meta' => $lightbox->fca_eoi,
2285 + 'conditions' => $lightbox_conditions,
2286 + );
2342 2287 }
2343 2288 }
2344 2289
2345 - $this->display_traditional_popups($traditional_ids, $this->display_two_step_popups($two_step_ids));
2346 - }
2347 -
2348 - private function display_two_step_popups($lightbox_ids) {
2349 - $lightbox_ids = array_intersect( $lightbox_ids, $this->two_step_ids_on_page );
2350 -
2351 - if ( empty( $lightbox_ids ) ) {
2352 - return false;
2353 - }
2354 - do_action( 'fca_eoi_display_lightbox' );
2290 + $two_step_popups = array_intersect( $two_step_popups, $this->two_step_ids_on_page );
2355 2291
2356 - foreach ( $lightbox_ids as $lightbox_id ) {
2357 - $this->prepare_lightbox( $lightbox_id );
2292 + if ( !empty( $traditional_popups ) OR !empty( $two_step_popups ) OR !empty( $banners_to_show ) ) {
2293 + wp_enqueue_script ( 'jquery' );
2294 + wp_enqueue_style( 'fca_eoi_tooltipster_css', FCA_EOI_PLUGIN_URL.'/assets/vendor/tooltipster/tooltipster.bundle.min.css', array(), FCA_EOI_VER );
2295 + wp_enqueue_style( 'fca_eoi_tooltipster_borderless', FCA_EOI_PLUGIN_URL.'/assets/vendor/tooltipster/tooltipster-borderless.min.css', array(), FCA_EOI_VER );
2296 + wp_enqueue_script( 'fca_eoi_tooltipster_js', FCA_EOI_PLUGIN_URL.'/assets/vendor/tooltipster/tooltipster.bundle.min.js', array(), FCA_EOI_VER, true );
2297 +
2298 + wp_enqueue_script( 'fca_eoi_featherlight_js', FCA_EOI_PLUGIN_URL.'/assets/vendor/featherlight/release/featherlight.min.js', array(), FCA_EOI_VER, true );
2299 + wp_enqueue_style( 'fca_eoi_featherlight_css', FCA_EOI_PLUGIN_URL.'/assets/vendor/featherlight/release/featherlight.min.css', array(), FCA_EOI_VER );
2300 +
2301 + wp_enqueue_script( 'fca_eoi_jstz', FCA_EOI_PLUGIN_URL . '/assets/vendor/jstz/jstz.min.js', array(), FCA_EOI_VER, true );
2302 +
2303 + wp_enqueue_script( 'fca_eoi_script_js', FCA_EOI_PLUGIN_URL.'/assets/script.min.js', array( 'fca_eoi_jstz', 'jquery', 'fca_eoi_tooltipster_js', 'fca_eoi_featherlight_js' ), FCA_EOI_VER, true );
2304 +
2305 + $data = array (
2306 + 'ajax_url' => admin_url( 'admin-ajax.php' ),
2307 + 'nonce' => wp_create_nonce( 'fca_eoi_submit_form' ),
2308 + );
2309 + wp_localize_script( 'fca_eoi_script_js', 'fcaEoiScriptData', $data );
2310 +
2311 + empty ( $traditional_popups ) ? '' : $this->display_traditional_popups( $traditional_popups );
2312 + empty ( $two_step_popups ) ? '' : $this->display_two_step_popups( $two_step_popups );
2313 + empty ( $banners_to_show ) ? '' : $this->display_banners( $banners_to_show );
2358 2314 }
2359 2315
2360 - ?>
2361 - <script>
2362 - jQuery( function( $ ) {
2363 - $( '[data-optin-cat]' ).live( 'click', function( e ) {
2364 - var lightbox_id = $( this ).data( 'optin-cat' );
2365 - <?php echo EasyOptInsActivity::get_instance()->get_tracking_code( 'lightbox_id', false ) ?>
2366 - $.featherlight( $( '#fca_eoi_lightbox_' + lightbox_id ), <?php echo $this->get_featherlight_options() ?> );
2367 - e.preventDefault();
2368 - } );
2369 - } );
2370 - </script>
2371 - <?php
2372 -
2373 - return true;
2374 2316 }
2375 -
2376 - private function display_traditional_popups( $lightbox_ids, $prerequisites_loaded = false ) {
2377 - if ( empty( $lightbox_ids ) ) {
2317 +
2318 + public function test_server_conditions( $conditions ) {
2319 +
2320 + //CHECK FOR LIVE
2321 + if ( ! K::get_var( 'live', $conditions, true ) ) {
2378 2322 return false;
2379 2323 }
2380 -
2381 - ?>
2382 - <script type="text/javascript" src="<?php echo $this->settings['plugin_url'] . '/' . $this->targeting_cat_path ?>"></script>
2383 - <script>
2384 - (function() {
2385 - if ( typeof fca_eoi === "undefined" ) {
2386 - fca_eoi = {};
2387 - }
2388 -
2389 - var error_text = <?php echo json_encode( $this->settings['error_text'] ); ?>;
2390 - Object.keys( error_text ).forEach( function( key ) {
2391 - fca_eoi[ key ] = error_text[ key ];
2392 - } );
2393 -
2394 - fca_eoi.ajax_url = <?php echo json_encode( admin_url( 'admin-ajax.php' ) ) ?>;
2395 - })();
2396 -
2397 - <?php $v = array(
2398 - 'prerequisites_loaded' => 'p',
2399 - 'load_prerequisites' => 'l',
2400 - 'head' => 'h',
2401 - 'load_script' => 'c',
2402 - 'load_style' => 'y',
2403 - 'callback' => 'k',
2404 - 'vendor_url' => 'v',
2405 - 'done' => 'n',
2406 - 'document' => 'd',
2407 - 'window.location.href' => 'w',
2408 - 'display_popup' => 's',
2409 - 'false' => '!1',
2410 - 'true' => '1',
2411 - 'evaluable' => 'e',
2412 - 'descriptors' => 'r',
2413 - 'form_id' => 'm',
2414 - 'TargetingCat_OptinCat' => 'g',
2415 - 'url' => 'u'
2416 - ); ?>
2417 -
2418 - <?php ob_start(); ?>
2419 -
2420 - jQuery( function( $ ) {
2421 - var
2422 - <?php echo $v['document'] ?> = document,
2423 - <?php echo $v['window.location.href'] ?> = window.location.href,
2424 - <?php echo $v['TargetingCat_OptinCat'] ?> = TargetingCat_OptinCat;
2425 -
2426 - <?php if ( ! $prerequisites_loaded ) { ?>
2427 -
2428 - var
2429 - <?php echo $v['prerequisites_loaded'] ?> = <?php echo $v['false'] ?>,
2430 - <?php echo $v['head'] ?> = <?php echo $v['document'] ?>.head;
2431 -
2432 - function <?php echo $v['load_script'] ?>( <?php echo $v['url'] ?>, <?php echo $v['callback'] ?> ) {
2433 - var e = <?php echo $v['document'] ?>.createElement( 'script' );
2434 -
2435 - e.type = 'text/javascript';
2436 - e.src = <?php echo $v['url'] ?>;
2437 - e.onload = <?php echo $v['callback'] ?>;
2438 -
2439 - <?php echo $v['head'] ?>.appendChild( e );
2440 - }
2441 -
2442 - function <?php echo $v['load_style'] ?>( <?php echo $v['url'] ?>, <?php echo $v['callback'] ?> ) {
2443 - var e = <?php echo $v['document'] ?>.createElement( 'link' );
2444 -
2445 - e.rel = 'stylesheet';
2446 - e.type = 'text/css';
2447 - e.href = <?php echo $v['url'] ?>;
2448 - e.onload = <?php echo $v['callback'] ?>;
2449 -
2450 - <?php echo $v['head'] ?>.appendChild( e );
2451 - }
2452 -
2453 - function <?php echo $v['load_prerequisites'] ?>( <?php echo $v['callback'] ?> ) {
2454 - if ( <?php echo $v['prerequisites_loaded'] ?> ) {
2455 - <?php echo $v['callback'] ?>();
2456 - return;
2457 - }
2458 -
2459 - var t = 7,
2460 - <?php echo $v['url'] ?> = <?php echo json_encode( $this->settings[ 'plugin_url' ] . '/assets/' ) ?>,
2461 - <?php echo $v['vendor_url'] ?> = <?php echo $v['url'] ?> + 'vendor/',
2462 - <?php echo $v['done'] ?> = function() {
2463 - if ( ! --t ) {
2464 - <?php echo $v['prerequisites_loaded'] ?> = <?php echo $v['true'] ?>;
2465 - <?php echo $v['callback'] ?>();
2466 - }
2467 - };
2468 -
2469 - <?php echo $v['load_style'] ?>( '//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.1.0/css/font-awesome.min.css', <?php echo $v['done'] ?> );
2470 -
2471 - <?php echo $v['load_script'] ?>( <?php echo $v['url'] ?> + 'script.js', <?php echo $v['done'] ?> );
2472 - <?php echo $v['load_style'] ?>( <?php echo $v['url'] ?> + 'style<?php echo EasyOptInsLayout::uses_new_css() ? '-new' : '' ?>.css', <?php echo $v['done'] ?> );
2473 -
2474 - <?php echo $v['load_script'] ?>( <?php echo $v['vendor_url'] ?> + 'tooltipster/jquery.tooltipster.min.js', <?php echo $v['done'] ?> );
2475 - <?php echo $v['load_style'] ?>( <?php echo $v['vendor_url'] ?> + 'tooltipster/tooltipster.min.css', <?php echo $v['done'] ?> );
2476 -
2477 - <?php echo $v['load_script'] ?>( <?php echo $v['vendor_url'] ?> + 'featherlight/release/featherlight.min.js', <?php echo $v['done'] ?> );
2478 - <?php echo $v['load_style'] ?>( <?php echo $v['vendor_url'] ?> + 'featherlight/release/featherlight.min.css', <?php echo $v['done'] ?> );
2479 -
2480 - <?php global $fca_eoi_animation_enabled;
2481 -
2482 -
2483 - if ( $fca_eoi_animation_enabled ) {
2484 -
2485 - echo $v['load_style'] . "(" . $v['vendor_url'] . "+ 'animate/animate.css'," . $v['done'] . ');'; } ?>
2486 - }
2487 -
2488 - <?php } ?>
2489 -
2490 - function <?php echo $v['display_popup'] ?>( <?php echo $v['form_id'] ?> ) {
2491 - var t = <?php echo $prerequisites_loaded ? 1 : 2 ?>,
2492 - <?php echo $v['done'] ?> = function() {
2493 - if ( ! --t ) {
2494 - $.featherlight(
2495 - $( '#fca_eoi_lightbox_' + <?php echo $v['form_id'] ?> ),
2496 - <?php echo $this->get_featherlight_options() ?>
2497 - );
2498 - <?php echo EasyOptInsActivity::get_instance()->get_tracking_code( $v['form_id'], false ) ?>
2499 - }
2500 - };
2501 -
2502 - $.post( <?php echo $v['window.location.href'] ?>, {
2503 - fca_eoi_prepare_lightbox: <?php echo $v['form_id'] ?>
2504 - }, function( html ) {
2505 - <?php echo $v['document'] ?>.body.innerHTML += html;
2506 - <?php echo $v['done'] ?>();
2507 - } );
2508 -
2509 - <?php if ( ! $prerequisites_loaded ) { ?>
2510 - <?php echo $v['load_prerequisites'] ?>( <?php echo $v['done'] ?> );
2511 - <?php } ?>
2512 - }
2513 -
2514 - <?php echo $v['TargetingCat_OptinCat'] ?>.StorageManagerSessionPermanent.get_instance().default_configuration = <?php echo json_encode( $this->get_cookie_configuration() ) ?>;
2515 -
2516 - <?php echo json_encode( $lightbox_ids ) ?>.forEach( function( <?php echo $v['form_id'] ?> ) {
2517 - $.post( <?php echo $v['window.location.href'] ?>, {
2518 - <?php if ( is_single() || is_page() ) { ?>
2519 - 'fca_eoi_tc_condition_post_id': <?php echo get_the_ID() ?>,
2520 - <?php } ?>
2521 - 'fca_eoi_tc_conditions_for': <?php echo $v['form_id'] ?>
2522 - }, function( <?php echo $v['descriptors'] ?> ) {
2523 - var <?php echo $v['evaluable'] ?> = <?php echo $v['TargetingCat_OptinCat'] ?>.ConditionManager.get_instance().parse_descriptors(
2524 - typeof <?php echo $v['descriptors'] ?> === 'string'
2525 - ? JSON.parse( <?php echo $v['descriptors'] ?> )
2526 - : <?php echo $v['descriptors'] ?>
2527 - );
2528 - if ( <?php echo $v['evaluable'] ?> ) {
2529 - <?php echo $v['evaluable'] ?>.set_pass_callback( function() {
2530 - <?php echo $v['display_popup'] ?>( <?php echo $v['form_id'] ?> );
2531 - } );
2532 - <?php echo $v['evaluable'] ?>.evaluate();
2533 - }
2534 - } );
2535 - } );
2324 +
2325 + //CHECK MOBILE
2326 + $mobile_detect = new Mobile_Detect;
2327 + $is_mobile = $mobile_detect->isMobile();
2536 2328
2537 - var lightbox_ids_Count = <?php echo count ($lightbox_ids) ?>;
2538 - var currentLightBoxCount = 0;
2539 - var totalAddedLightboxes = 0;
2540 -
2541 - function waitUntilPopupsAreMade() {
2542 -
2543 - if( totalAddedLightboxes < lightbox_ids_Count ) {
2544 -
2545 - if (document.getElementsByClassName("fca_eoi_featherlight").length > currentLightBoxCount) {
2546 -
2547 - totalAddedLightboxes++;
2548 - currentLightBoxCount = document.getElementsByClassName("fca_eoi_featherlight").length;
2549 - attachDeleteButtons();
2550 - window.setTimeout(waitUntilPopupsAreMade, 200);
2551 - }else {
2552 -
2553 - currentLightBoxCount = document.getElementsByClassName("fca_eoi_featherlight").length;
2554 - window.setTimeout(waitUntilPopupsAreMade, 200);
2555 - }
2556 -
2557 - } else {
2558 -
2559 - attachDeleteButtons();
2560 - }
2561 - }
2562 - if (lightbox_ids_Count > 1) {
2563 - waitUntilPopupsAreMade();
2564 - }
2565 -
2566 - function attachDeleteButtons() {
2567 - myNodes = document.getElementsByClassName("fca_eoi_layout_popup_close");
2568 -
2569 - for (var i=0; i<myNodes.length; i++) {
2570 - myNodes[i].onclick = function(e) {
2571 - $(this).parents(".fca_eoi_featherlight").hide();
2572 - };
2573 -
2574 - }
2575 - }
2576 -
2577 -
2578 - } );
2579 -
2580 - <?php
2581 -
2582 - echo preg_replace(
2583 - array( '/\s+/', '/([-+|\(\){}&=;,:?])\s+/', '/\s+([-+|\(\){}&=?])/', '/;}/' ),
2584 - array( ' ', '$1', '$1', '}' ),
2585 - trim( ob_get_clean() )
2586 - );
2587 -
2588 - ?>
2589 - </script>
2590 - <?php
2591 -
2592 - return true;
2593 - }
2594 -
2595 - public function request_prepare_lightbox() {
2596 - if (array_key_exists('fca_eoi_prepare_lightbox', $_POST)) {
2597 - $lightbox_id = (int) $_POST['fca_eoi_prepare_lightbox'];
2598 - if ( $lightbox_id > 0 ) {
2599 - $this->prepare_lightbox( $lightbox_id );
2600 - exit;
2329 + $mobile_mode = K::get_var( 'devices', $conditions, 'all' );
2330 + $fail_mobile = $mobile_mode === 'mobile' && !$is_mobile;
2331 + $fail_desktop = $mobile_mode === 'desktop' && $is_mobile;
2332 + $pass_mobile = !$fail_mobile && !$fail_desktop;
2333 +
2334 + if ( empty( $conditions['conditions'] ) ) {
2335 + return $pass_mobile;
2336 + }
2337 +
2338 + //CHECK INCLUDED AND EXCLUDED PAGES & TAXONOMIES
2339 + global $post;
2340 + $post_id = $post->ID;
2341 +
2342 + $includes = array();
2343 + $excludes = array();
2344 +
2345 + forEach ( $conditions['conditions'] as $condition ) {
2346 + if ( $condition['parameter'] === 'exclude' ) {
2347 + $excludes = $condition['value'];
2348 + } else if ( $condition['parameter'] === 'include' ) {
2349 + $includes = $condition['value'];
2601 2350 }
2602 2351 }
2603 - }
2604 -
2605 - public function prepare_lightbox( $id ) {
2606 - $id = (int) $id;
2607 2352
2608 - global $post;
2353 + $post_cond = array( '*' );
2609 2354
2610 - $animation = get_post_meta( $id, 'fca_eoi_animation', true );
2355 + if ( is_front_page() ) {
2356 + $post_cond[] = '~';
2357 + }
2611 2358
2612 -
2613 - $featherlight_class = EasyOptInsLayout::uses_new_css() ? 'fca_eoi_featherlight' : 'featherlight';
2614 - $content = do_shortcode( "[easy-opt-in id=$id]" );
2615 -
2616 - ?>
2617 - <div style="display:none">
2618 - <style scoped>.<?php echo $featherlight_class ?>-content { background: transparent !important; }</style>
2619 - <div class=<?php echo "'animated $animation'" ?> id="fca_eoi_lightbox_<?php echo $id ?>"><?php echo $content ?></div>
2620 - </div>
2621 - <?php
2622 - }
2623 -
2624 - private function get_featherlight_options() {
2625 - if ( EasyOptInsLayout::uses_new_css() ) {
2626 - $is_iphone = preg_match('/(?:iPhone|iPod);/i', $_SERVER['HTTP_USER_AGENT']);
2627 - $is_ios = preg_match( '/(?:iPhone|iPad|iPod).* OS ([\d])_.* Safari/', $_SERVER['HTTP_USER_AGENT'], $matches );
2628 -
2629 - if ( $is_ios ) {
2630 - $ios_specific_options = ',
2631 - beforeOpen: function() {
2632 - var viewport = jQuery( "meta[name=viewport]" );
2633 - if ( viewport.length == 0 ) {
2634 - viewport = jQuery( "<meta name=\"viewport\" content=\"\"/>" );
2635 - jQuery( "head" ).append( viewport );
2636 - }
2637 -
2638 - var viewport_content = viewport.attr( "content" );
2639 - this.fca_eoi_viewport_content = viewport_content;
2640 - viewport.attr( "content", "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" );
2641 -
2642 - this.fca_eoi_orientation_change_listener = function() {
2643 - window.scrollTo( 0, 0 );
2644 - jQuery( ".fca_eoi_form input" ).each( function() {
2645 - this.blur();
2646 - } );
2647 - };
2648 - window.addEventListener( "orientationchange", this.fca_eoi_orientation_change_listener, false );
2649 -
2650 - this.fca_eoi_touch_move_listener = function( event ) {
2651 - event.preventDefault();
2652 - };
2653 - window.addEventListener( "touchmove", this.fca_eoi_touch_move_listener, false );
2654 - },
2655 - afterOpen: function() {
2656 - jQuery( "body" ).append( "<div class=\"fca_eoi_featherlight_pad\" style=\"display: block; height: 1000px;\"/>" );
2657 - },
2658 - beforeClose: function() {
2659 - jQuery( ".fca_eoi_featherlight_pad" ).remove();
2660 - },
2661 - afterClose: function() {
2662 - if ( this.hasOwnProperty( "fca_eoi_viewport_content" ) ) {
2663 - jQuery( "meta[name=viewport]" ).attr( "content", this.fca_eoi_viewport_content );
2664 - }
2665 -
2666 - if ( this.hasOwnProperty( "fca_eoi_orientation_change_listener" ) ) {
2667 - window.removeEventListener( "orientationchange", this.fca_eoi_orientation_change_listener );
2668 - }
2669 -
2670 - if ( this.hasOwnProperty( "fca_eoi_touch_move_listener" ) ) {
2671 - window.removeEventListener( "touchmove", this.fca_eoi_touch_move_listener );
2672 - }
2673 - }';
2674 - } else {
2675 - $ios_specific_options = '';
2359 + if ( $post_id ) {
2360 + $post_type = get_post_type( $post_id );
2361 + $post_cond[] = $post_type;
2362 + $post_cond[] = '#' . $post_id;
2363 + $taxonomies = get_taxonomies( '', 'names' );
2364 + $post_taxonomies = wp_get_object_terms( $post_id, $taxonomies );
2365 + foreach ( $post_taxonomies as $t ) {
2366 + $post_cond[] = $post_type . ':' . $t->term_id;
2676 2367 }
2677 -
2678 - return '{
2679 - namespace: "fca_eoi_featherlight",
2680 - otherClose: ".fca_eoi_layout_popup_close"' . $ios_specific_options . ',
2681 - variant: ' . ( $is_iphone ? '"fca_eoi_device_iphone"' : 'null' ) . '
2682 - }';
2683 2368 } else {
2684 - return 'undefined';
2369 + //FIX FOR NOT DISPLAYING ON BLOG PAGE
2370 + if ( is_home() ) {
2371 + $post_cond[] = '#' . get_option('page_for_posts');
2372 + }
2373 +
2685 2374 }
2375 +
2376 + $pass_includes = empty( $includes ) ? true : count ( array_intersect( $includes, $post_cond ) ) > 0;
2377 + $pass_excludes = empty( $excludes ) ? true : count ( array_intersect( $excludes, $post_cond ) ) == 0;
2378 +
2379 + return $pass_includes && $pass_excludes && $pass_mobile;
2380 +
2686 2381 }
2687 -}
2688 2382
2689 -function k_selector( $name, $selected_options = array(), $return = false ) {
2383 + private function display_two_step_popups( $lightbox_ids ) {
2384 + wp_enqueue_script( 'fca_eoi_twostep_js', FCA_EOI_PLUGIN_URL.'/assets/twostep.min.js', array( 'jquery', 'fca_eoi_tooltipster_js', 'fca_eoi_featherlight_js', 'fca_eoi_script_js' ), FCA_EOI_VER, true );
2690 2385
2691 - global $post;
2692 - // Dirty fix to restore the global $post
2693 - $post_bak = $post;
2694 -
2695 - // Get all post types except media
2696 - $post_types = get_post_types( array( 'public' => true ) );
2697 - unset( $post_types[ 'attachment' ] );
2698 -
2699 - $ret = ob_start();
2700 -
2701 - // Start ouput
2702 - echo '<select data-placeholder="' . __( 'Type to search for posts, categories or pages.' ) . '" name = "' . $name . '[]" class="select2" multiple="multiple" style="width: 27em;">';
2703 -
2704 - // Front page
2705 - K::wrap( __( 'Front page' )
2706 - , array(
2707 - 'value' => '~',
2708 - 'selected' => in_array( '~', $selected_options ),
2709 - )
2710 - , array( 'in' => 'option' )
2711 - );
2712 -
2713 - // All posts
2714 - // K::wrap( __( 'All' )
2715 - // , array(
2716 - // 'value' => '*',
2717 - // 'selected' => in_array( '*', $selected_options ),
2718 - // )
2719 - // , array( 'in' => 'option' )
2720 - // );
2721 -
2722 - foreach ($post_types as $post_type => $post_type_args ) {
2723 -
2724 - $post_type_obj = get_post_type_object( $post_type );
2725 - $post_type_name = $post_type_obj->labels->singular_name;
2726 -
2727 - $options = array();
2728 -
2729 - // Add taxonomy/terms options
2730 - $taxonomies = get_object_taxonomies( $post_type );
2731 - foreach ( $taxonomies as $taxonomy ) {
2732 - $taxonomy_obj = get_taxonomy( $taxonomy );
2733 - $taxonomy_name = $taxonomy_obj->labels->singular_name;
2734 - $terms = get_categories("taxonomy=$taxonomy&type=$post_type");
2735 - foreach ($terms as $term) {
2736 - $options[ 'taxonomies' ][ "$post_type:$term->term_id" ] =
2737 - $post_type_name
2738 - . " › $taxonomy_name"
2739 - . " › $term->name"
2740 - ;
2741 - }
2386 + foreach ( $lightbox_ids as $id ) {
2387 + $this->prepare_lightbox_html( $id );
2742 2388 }
2389 + }
2390 +
2391 + private function display_banners( $banners ) {
2392 +
2393 + $target_data = array();
2743 2394
2744 - // Add posts options
2745 - $the_query = new WP_Query( "post_type=$post_type&posts_per_page=-1" );
2746 - if ( $the_query->have_posts() ) {
2395 + forEach ( $banners as $p ) {
2396 + $id = $p['id'];
2397 + $target_data[$id] = empty( $p['conditions'] ) ? array() : $p['conditions'];
2747 2398
2748 - while ( $the_query->have_posts() ) {
2749 - $the_query->the_post();
2750 - $options[ 'posts' ][ '#' . get_the_ID() ] = $post_type_name
2751 - . ' ' . __( '›' ) . ' '
2752 - . '#' . get_the_ID() . ' &ndash; '
2753 - . ( get_the_title() ? get_the_title() : __('[Untitled]') )
2754 - ;
2755 - }
2399 + echo "<div id='fca_eoi_banner_$id' style='display:none;'>";
2400 + echo do_shortcode( "[easy-opt-in id=$id]" );
2401 + echo '</div>';
2756 2402 }
2757 2403
2758 - // Dirty fix to restore the global $post
2759 - $post = $post_bak;
2404 + wp_enqueue_script( 'fca_eoi_targeting_js', FCA_EOI_PLUGIN_URL.'/assets/targeting.min.js', array( 'jquery' ), FCA_EOI_VER, true );
2405 +
2406 + $targetData = array (
2407 + 'ajax_url' => admin_url( 'admin-ajax.php' ),
2408 + 'nonce' => wp_create_nonce( 'fca_eoi_activity' ),
2409 + 'banners' => $target_data,
2410 + );
2411 +
2412 + wp_localize_script( 'fca_eoi_targeting_js', 'fcaEoiBannerTargetingData', $targetData );
2413 +
2414 + return true;
2415 + }
2760 2416
2761 - // Posts > All
2762 - echo '<optgroup label="' . $post_type_name . '">';
2763 - printf(
2764 - '<option value="%s" %s >%s</option>'
2765 - , $post_type
2766 - , ( in_array( $post_type, $selected_options ) ? 'selected' : '' )
2767 - , $post_type_name . ' ' . ( '›' ) . ' ' . __( 'All' )
2768 - );
2769 - echo '</optgroup>';
2417 + private function display_traditional_popups( $popups ) {
2418 +
2419 + $target_data = array();
2770 2420
2771 - // Posts > Taoxonomies
2772 - if ( ! empty( $options[ 'taxonomies' ] ) ) {
2773 - printf(
2774 - '<optgroup label="%s">'
2775 - , $post_type_name . ' ' . __( '›' ) . ' ' . __( 'Taxonomies' )
2776 - );
2777 - foreach ( $options[ 'taxonomies' ] as $k => $v ) {
2778 - $selected = ( in_array( $k, $selected_options ) ) ? 'selected="selected"' : '';
2779 - printf( '<option value="%s" %s >%s</option>', $k, $selected, $v );
2780 - }
2781 - echo '</optgroup>';
2421 + forEach ( $popups as $p ) {
2422 + $this->prepare_lightbox_html( $p['id'] );
2423 + $target_data[$p['id']] = empty( $p['conditions'] ) ? array() : $p['conditions'];
2782 2424 }
2783 2425
2784 - // Posts > content
2785 - if ( ! empty( $options[ 'posts' ] ) ) {
2786 - printf( '<optgroup label="%s">'
2787 - , $post_type_name . ' ' . __( '›' ) . ' ' . __( 'Content' )
2788 - );
2789 - foreach ( $options[ 'posts' ] as $k => $v ) {
2790 - $selected = ( in_array( $k, $selected_options ) ) ? 'selected="selected"' : '';
2791 - printf( '<option value="%s" %s >%s</option>'
2792 - , $k
2793 - , $selected
2794 - , $v
2795 - );
2796 - }
2797 - echo '</optgroup>';
2798 - }
2426 + wp_enqueue_script( 'fca_eoi_targeting_js', FCA_EOI_PLUGIN_URL.'/assets/targeting.min.js', array( 'jquery' ), FCA_EOI_VER, true );
2427 +
2428 + $targetData = array (
2429 + 'ajax_url' => admin_url( 'admin-ajax.php' ),
2430 + 'nonce' => wp_create_nonce( 'fca_eoi_activity' ),
2431 + 'popups' => $target_data,
2432 + );
2433 +
2434 + wp_localize_script( 'fca_eoi_targeting_js', 'fcaEoiTargetingData', $targetData );
2435 +
2436 + return true;
2799 2437 }
2800 - echo '</select>';
2801 2438
2802 - $ret = ob_get_clean();
2803 -
2804 - if ( $return ) {
2805 - return $ret;
2806 - } else {
2807 - echo $ret;
2439 + public function prepare_lightbox_html( $id ) {
2440 + $id = (int) $id;
2441 +
2442 + $content = do_shortcode( "[easy-opt-in id=$id]" );
2443 +
2444 + ?>
2445 + <div style="display:none">
2446 + <div id="fca_eoi_lightbox_<?php echo $id ?>"><?php echo $content ?></div>
2447 + </div>
2448 + <?php
2808 2449 }
2809 -}
2810 2450
2811 -function fca_eoi_comp( $a, $b, $op, $negate = false ) {
2812 - switch ( $op ) {
2813 - case 'eq': return $negate ? ( ! ( $a == $b ) ) : ( $a == $b );
2814 - case 'gt': return $negate ? ( ! ( $a > $b ) ) : ( $a > $b );
2815 - case 'gte': return $negate ? ( ! ( $a >= $b ) ) : ( $a >= $b );
2816 - case 'lt': return $negate ? ( ! ( $a < $b ) ) : ( $a < $b );
2817 - case 'lte': return $negate ? ( ! ( $a <= $b ) ) : ( $a <= $b );
2818 - }
2819 2451 }