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 +1400 -1902 1.5.52.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,22 +35,30 @@
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' ) );
61 58
59 + add_action( 'wp_ajax_fca_eoi_dismiss', array( $this, 'ajax_dismiss_notice' ) );
60 +
62 61 add_filter( 'get_user_option_screen_layout_easy-opt-ins', array( $this, 'force_one_column' ) );
63 62
64 63 add_filter( 'get_user_option_meta-box-order_easy-opt-ins', array( $this, 'order_columns' ) );
65 64
@@ -74,10 +73,10 @@
74 73 add_filter( 'enter_title_here', array( $this, 'change_default_title' ) );
75 74
76 75 add_filter( 'init', array( $this, 'bind_content_filter' ), 10 );
77 76
78 - add_filter( 'template_redirect', array( $this, 'parse_tc_condition_request' ), 1 );
79 -
77 + add_filter( 'plugin_action_links_' . FCA_EOI_PLUGIN_BASENAME, array( $this, 'add_plugin_action_links' ) );
78 +
80 79 //ADD ACTIONS TO GET THE ENTIRE PAGE OUTPUT IN BUFFER
81 80
82 81 if ( wp_get_theme() == 'Customizr' ) {
83 82 add_filter( 'the_content', array( $this, 'scan_for_shortcodes' ) );
@@ -84,15 +83,11 @@
84 83 } else {
85 84 add_action('wp_head', array( $this, 'fca_eoi_buffer_start' ));
86 85 add_action('wp_footer', array( $this, 'fca_eoi_buffer_end' ));
87 86 }
88 -
89 - add_filter( 'init', array( $this, 'request_prepare_lightbox' ) );
90 87
91 - add_filter( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
88 + add_filter( 'wp_footer', array( $this, 'maybe_show_lightbox' ) );
92 89
93 - add_filter( 'wp_footer', array( $this, 'show_lightbox' ) );
94 -
95 90 foreach ( $providers_available as $provider ) {
96 91 add_action( 'wp_ajax_fca_eoi_' . $provider . '_get_lists', $provider . '_ajax_get_lists' );
97 92 }
98 93
@@ -107,46 +102,24 @@
107 102 new EasyOptInsLicense( $this->settings );
108 103 }
109 104 }
110 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 +
117 + }
118 +
111 119 function fca_eoi_buffer_start() { ob_start(array( $this, 'scan_for_shortcodes' )); }
112 120 function fca_eoi_buffer_end() { ob_end_flush(); }
113 121
114 -
115 - public function enqueue_scripts() {
116 - wp_enqueue_script( 'jquery' );
117 - }
118 -
119 - public function more_settings() {
120 -
121 - $providers_available = array_keys( $this->settings[ 'providers' ] );
122 -
123 - // Get the post id
124 - if( is_admin() ) {
125 - $form_id = K::get_var( 'post', $_GET );
126 - } else {
127 - $protocol = is_ssl() ? 'https' : 'http';
128 - $form_id = K::get_var( 'fca_eoi_form_id', $_POST );
129 - }
130 -
131 - // Save form meta into object settings
132 - $this->settings[ 'eoi_form_meta' ] = empty ( $form_id )
133 - ? false
134 - : get_post_meta( $form_id, 'fca_eoi', true )
135 - ;
136 -
137 - // Add last 3 posts and there meta
138 - // We need to prepare the previous posts
139 - $fca_eoi_last_3_forms = array();
140 - foreach (query_posts( 'posts_per_page=3&post_type=easy-opt-ins' ) as $i => $f ) {
141 - $fca_eoi_last_3_forms[ $i ][ 'post' ] = $f;
142 - $fca_eoi_last_3_forms[ $i ][ 'fca_eoi' ] = get_post_meta( $f->ID, 'fca_eoi', true );
143 - }
144 - // reset query after the loop
145 - wp_reset_query();
146 - $this->settings[ 'fca_eoi_last_3_forms' ] = $fca_eoi_last_3_forms;
147 - }
148 -
149 122 public function register_custom_post_type() {
150 123
151 124 $labels = array(
152 125 'name' => __('Optin Forms') ,
@@ -160,9 +133,9 @@
160 133 'search_items' => __('Search Optin Form') ,
161 134 'not_found' => __('No Optin Form Found') ,
162 135 'not_found_in_trash' => __('No Optin Form Found in Trash') ,
163 136 'parent_item_colon' => '',
164 - 'menu_name' => __('Optin Cat')
137 + 'menu_name' => __('Optin Forms')
165 138 );
166 139 $args = array(
167 140 'menu_icon' => FCA_EOI_PLUGIN_URL . '/icon.png',
168 141 'labels' => $labels,
@@ -190,9 +163,9 @@
190 163 register_post_type('easy-opt-ins', $args);
191 164 }
192 165
193 166 private function enqueue_activity_style() {
194 - wp_enqueue_style( 'admin-cpt-easy-opt-ins-activity', FCA_EOI_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 );
195 168 }
196 169
197 170 public function add_new_columns( $columns ) {
198 171 $new_columns = array();
@@ -284,11 +257,11 @@
284 257 );
285 258 }
286 259
287 260 public function add_dashboard_widget() {
288 - wp_enqueue_script( 'd3_js', FCA_EOI_PLUGIN_URL . '/assets/vendor/nvd3/d3.min.js' );
289 - wp_enqueue_script( 'nvd3_js', FCA_EOI_PLUGIN_URL . '/assets/vendor/nvd3/nv.d3.min.js' );
290 - wp_enqueue_style( 'nvd3_css', FCA_EOI_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 );
291 264 $this->enqueue_activity_style();
292 265
293 266 $day_interval = $this->activity_day_interval['dashboard_widget'];
294 267 $activity = EasyOptInsActivity::get_instance();
@@ -369,17 +342,10 @@
369 342 <?php
370 343 }
371 344
372 345 public function add_meta_boxes() {
346 +
373 347 add_meta_box(
374 - 'fca_eoi_meta_box_nav',
375 - __( 'Navigation' ),
376 - array( &$this, 'meta_box_content_nav' ),
377 - 'easy-opt-ins',
378 - 'side',
379 - 'high'
380 - );
381 - add_meta_box(
382 348 'fca_eoi_meta_box_setup',
383 349 __( 'Setup' ),
384 350 array( &$this, 'meta_box_content_setup' ),
385 351 'easy-opt-ins',
@@ -393,8 +359,9 @@
393 359 'easy-opt-ins',
394 360 'side',
395 361 'high'
396 362 );
363 +
397 364 add_meta_box(
398 365 'fca_eoi_meta_box_provider',
399 366 __( 'Email Marketing Provider Integration' ),
400 367 array( &$this, 'meta_box_content_provider' ),
@@ -402,9 +369,9 @@
402 369 'side',
403 370 'high'
404 371 );
405 372 add_meta_box(
406 - 'fca_eoi_meta_box_publish',
373 + 'fca_eoi_meta_box_publish',
407 374 __( 'Publication' ),
408 375 array( &$this, 'meta_box_content_publish' ),
409 376 'easy-opt-ins',
410 377 'side',
@@ -411,10 +378,10 @@
411 378 'high'
412 379 );
413 380 add_meta_box(
414 381 'fca_eoi_meta_box_thanks',
415 - __( 'Thank You Message' ),
416 - array( &$this, 'meta_box_content_thanks' ),
382 + __( 'Messages' ),
383 + array( &$this, 'meta_box_content_messages' ),
417 384 'easy-opt-ins',
418 385 'side',
419 386 'high'
420 387 );
@@ -427,46 +394,28 @@
427 394 'side',
428 395 'high'
429 396 );
430 397 }
431 - if ( FCA_EOI_DEBUG ) {
432 - add_meta_box(
433 - 'fca_eoi_meta_box_debug',
434 - 'Debug',
435 - array( &$this, 'meta_box_content_debug' ),
436 - 'easy-opt-ins',
437 - 'side',
438 - 'high'
439 - );
440 - }
441 398 }
442 399
443 - public function meta_box_content_nav() {
444 - ?>
445 - <h2 class="nav-tab-wrapper" style="padding: 0 10px">
446 - <a href="#fca_eoi_meta_box_setup" class="nav-tab nav-tab-active">Choose</a>
447 - <a href="#fca_eoi_meta_box_build" class="nav-tab ">Build</a>
448 - <?php if( FCA_EOI_DEBUG ) : ?>
449 - <a href="#fca_eoi_meta_box_debug" class="nav-tab ">Debug</a>
450 - <?php endif; ?>
451 - </h2>
452 - <?php
453 - }
454 -
455 400 public function meta_box_content_setup() {
456 401
457 - global $post;
458 -
459 402 $layouts_types_labels = array(
460 403 'lightbox' => 'Popups',
461 404 'postbox' => 'Post Boxes',
462 405 'widget' => 'Sidebar Widgets',
406 + 'banner' => 'Optin Bars',
407 + 'overlay' => 'Slide Ins',
463 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 + );
464 417
465 - $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
466 -
467 - 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>';
468 -
469 418 // Build the layouts array
470 419 $layouts = $layouts_types = $layouts_types_found = array();
471 420 foreach ( glob( FCA_EOI_PLUGIN_DIR . 'layouts/*', GLOB_ONLYDIR ) as $v) {
472 421 $layouts_types_found[] = basename( $v );
@@ -477,9 +426,9 @@
477 426 if ( in_array( $layout_type, $layouts_types_found ) ) {
478 427 $layouts_types[] = $layout_type;
479 428 }
480 429 }
481 -
430 +
482 431 // Layouts types mini-tabs
483 432 echo '<ul class="category-tabs" id="layouts_types_tabs">';
484 433 foreach ( $layouts_types as $layout_type ) {
485 434 K::wrap(
@@ -493,284 +442,60 @@
493 442 'in' => 'a',
494 443 )
495 444 );
496 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 +
497 448 echo '</ul>';
498 -
499 - $file = plugin_dir_path( __FILE__ ) . "cache";
500 - $fca_eoi_scss_array = unserialize (file_get_contents($file));
501 -
502 - // Layout types
449 +
450 + //GENERATE SCREENSHOTS / OPTIN THEME PICKER
451 + //RN NOTE: MAYBE CACHE THIS
452 + $output = '';
503 453 foreach ( $layouts_types as $layout_type ) {
504 454
505 - echo '<div class="fca_eoi_accordion_tab" id="layouts_type_' . $layout_type . '">';
506 -
507 -
508 -
455 + $output .= "<div class='fca_eoi_accordion_tab' id='layouts_type_$layout_type'>";
456 + $layout_counter = 1;
509 457 foreach ( glob( FCA_EOI_PLUGIN_DIR . "layouts/$layout_type/*", GLOB_ONLYDIR ) as $layout_path ) {
510 - // Grab layout details
511 458 $layout_id = basename( $layout_path );
459 +
460 +
461 +
462 + $layout_helper = new EasyOptInsLayout( $layout_id );
463 + $layout_type = ucfirst ( $layout_helper->layout_type );
512 464
513 - $layout_helper = new EasyOptInsLayout( $layout_id );
514 - $layout_type = $layout_helper->layout_type;
515 - $php_path = $layout_helper->path_to_resource( 'layout', 'php' );
516 - $html_path = $layout_helper->path_to_resource( 'layout', 'html' );
517 - $html_wrap_path = $layout_helper->path_to_html_wrapper();
518 - $scss_path = $layout_helper->path_to_resource( 'layout', 'scss' );
519 465 $screenshot_path = $layout_helper->path_to_resource( 'screenshot', 'png' );
520 466 $screenshot_url = $layout_helper->url_to_resource( 'screenshot', 'png' );
521 -
522 - include $php_path;
467 + $screenshot = file_exists( $screenshot_path ) ? $screenshot_url : FCA_EOI_PLUGIN_URL . '/layouts/no-image.jpg';
523 468
469 + if ( array_key_exists ( $layout_id, $layout_names ) ) {
470 + $layout_name = $layout_names[$layout_id];
471 + } else {
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 );
474 + }
524 475
525 - $layout[ 'css' ] = file_exists( $scss_path )
526 - ? '#fca_eoi_preview_form_container {' .
527 - file_get_contents( $scss_path ) .
528 - '.fca_eoi_layout_popup_close {' .
529 - 'display: none;' .
530 - '}' .
531 - '}'
532 - : '';
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>";
533 482
534 -
535 - $name = $layout[ 'css' ];
536 - $layout[ 'css' ] = $fca_eoi_scss_array[$name];
537 -
538 -
539 -
540 -
541 - $layout[ 'template' ] = str_replace(
542 - '{{{layout}}}',
543 - file_get_contents( $html_path ),
544 - file_get_contents( $html_wrap_path )
545 - );
546 -
547 - $layout[ 'template' ] = str_replace(
548 - array(
549 - '<form',
550 - '/form',
551 - '{{{description_copy}}}',
552 - '{{{headline_copy}}}',
553 - '{{{name_field}}}',
554 - '{{{email_field}}}',
555 - '{{{submit_button}}}',
556 - '{{{privacy_copy}}}',
557 - '{{{fatcatapps_link}}}'
558 - )
559 - , array(
560 - '<div id="fca_eoi_preview_form_container">' .
561 - '<div id="fca_eoi_preview_form_wrapper">' .
562 - '<div id="fca_eoi_preview_form" class="' .
563 - 'fca_eoi_layout_' . $layout_helper->layout_number . ' ' .
564 - $layout_helper->layout_class .
565 - '"',
566 - '/div></div></div',
567 -
568 - '<div data-fca-eoi-fieldset-id ="description">{{{description_copy}}}</div>',
569 - '<div data-fca-eoi-fieldset-id ="headline" id="fca_eoi_preview_headline_copy">{{{headline_copy}}}</div>',
570 - '<input class="fca_eoi_form_input_element" type="text" placeholder="{{{name_placeholder}}}">',
571 - '<input class="fca_eoi_form_input_element" type="email" placeholder="{{{email_placeholder}}}">',
572 - '<input class="fca_eoi_form_button_element" data-fca-eoi-fieldset-id ="button" type="submit" value="{{{button_copy}}}">',
573 - '<div data-fca-eoi-fieldset-id="privacy">{{{privacy_copy}}}</div>',
574 - '{{#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}}',
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 - : FCA_EOI_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;
660 -
483 + $layout_counter = $layout_counter + 1;
661 484 }
662 - echo '</div>';
485 + $output .= "</div>";
486 +
663 487 }
664 - echo '<br clear="all"/>';
665 -
666 - // Prepare layouts array (id->name) for K
667 - $layouts_array = array();
668 - foreach ( $layouts as $layout_id => $layout ) {
669 - $layouts_array[ $layout_id ] = $layout[ 'name' ];
670 - }
671 -
672 - // Print hidden select box, it will be controlled by images (UI)
673 - K::select(
674 - 'fca_eoi[layout]',
675 - array(
676 - 'class' => 'hidden',
677 - 'id' => 'fca_eoi_layout_select',
678 - ),
679 - array(
680 - 'options' => $layouts_array,
681 - 'selected' => K::get_var( 'layout', $fca_eoi ),
682 - )
683 - );
684 -
685 - // Prepare the properties fields templates
686 - $property_templates[ 'color' ] = K::input( '{{property_name}}',
687 - array(
688 - 'class' => sprintf(
689 - "color { hash: true, caps: false, required: false, pickerPosition: '%s' }"
690 - , is_rtl() ? 'right' : 'left'
691 - ),
692 - 'value' => '{{property_value}}',
693 - ),
694 - array(
695 - 'format' => '<p class="clear"><label><span class="control-title">{{property_label}}</span><br />:input <a href="#transparent">None</a></label></p>',
696 - 'nocolorpicker' => true,
697 - 'return' => true,
698 - )
699 - );
700 - $property_templates[ 'icon' ] = K::input( '{{property_name}}',
701 - array(
702 - 'data-value-unchecked' => '{{property_value_unchecked}}',
703 - 'data-is-checked' => '{{property_is_checked}}',
704 - 'type' => 'checkbox',
705 - 'value' => '{{property_value}}',
706 - ),
707 - array(
708 - 'format' => '<p class="control-property-icon"><label class="fca_eoi_toggle">{{{icon}}} :input</label></p>',
709 - 'return' => true,
710 - )
711 - );
712 - $property_templates[ 'font-size' ] = K::select( '{{property_name}}',
713 - array(
714 - 'data-selected' => '{{selected}}',
715 - ),
716 - array(
717 - 'format' => '<p class="clear"><label><span class="control-title">{{property_label}}</span><br />:select</label></p>',
718 - 'options' => array(
719 - 'none' => '',
720 - '7px' => '7px',
721 - '8px' => '8px',
722 - '9px' => '9px',
723 - '10px' => '10px',
724 - '11px' => '11px',
725 - '12px' => '12px',
726 - '13px' => '13px',
727 - '14px' => '14px',
728 - '15px' => '15px',
729 - '16px' => '16px',
730 - '17px' => '17px',
731 - '18px' => '18px',
732 - '19px' => '19px',
733 - '20px' => '20px',
734 - '21px' => '21px',
735 - '22px' => '22px',
736 - '23px' => '23px',
737 - '24px' => '24px',
738 - '25px' => '25px',
739 - '26px' => '26px',
740 - '27px' => '27px',
741 - '28px' => '28px',
742 - '29px' => '29px',
743 - '30px' => '30px',
744 - '31px' => '31px',
745 - '32px' => '32px',
746 - '33px' => '33px',
747 - '34px' => '34px',
748 - '35px' => '35px',
749 - '36px' => '36px',
750 - ),
751 - 'selected' => 'none',
752 - 'return' => true,
753 - )
754 - );
755 -
756 - // Print the proprties fields templates
757 - foreach ( $property_templates as $prop => $property_template) {
758 - echo '<script id="fca_eoi_property_' . $prop . '" type="x-tmpl-mustache">' . $property_template . '</script>';
759 - }
760 -
761 - // Print a copy of the current settings
762 - echo
763 - '<script id="fca_eoi_post_meta" type="application/json">'
764 - . ( $fca_eoi ? json_encode( $fca_eoi ) : '{}' )
765 - . '</script>'
766 - ;
488 + $output .= '<br clear="all">';
489 + echo $output;
767 490 }
768 491
769 492 public function meta_box_content_provider() {
770 -
493 +
771 494 global $post;
772 495 $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
496 +
497 + //DISABLE CUSTOM FORM
773 498 $allow_customform = get_option ( 'fca_eoi_allow_customform', 'false' );
774 499 if ( $allow_customform == 'false' ) {
775 500 $providers = $this->settings[ 'providers' ];
776 501 unset ( $providers['customform'] );
@@ -776,47 +501,12 @@
776 501 unset ( $providers['customform'] );
777 502 $providers_available = array_keys( $providers );
778 503 } else {
779 504 $providers_available = array_keys( $this->settings[ 'providers' ] );
780 - }
505 + }
781 506
782 -
783 507 $providers_options = array();
784 - $screen = get_current_screen();
785 - $fca_eoi_last_3_forms = $this->settings[ 'fca_eoi_last_3_forms' ];
786 508
787 - // @todo: remove
788 - // Hack for mailchimp upgrade
789 - $fca_eoi[ 'mailchimp_list_id' ] = K::get_var(
790 - 'mailchimp_list_id'
791 - , $fca_eoi
792 - , K::get_var( 'list_id' , $fca_eoi )
793 - );
794 - if( K::get_var( 'list_id' , $fca_eoi ) ) {
795 - $fca_eoi[ 'provider' ] = 'mailchimp';
796 - }
797 - // End of hack
798 - // Hack for campaignmonitor upgrade
799 - $fca_eoi[ 'campaignmonitor_list_id' ] = K::get_var(
800 - 'campaignmonitor_list_id'
801 - , $fca_eoi
802 - , K::get_var( 'list_id' , $fca_eoi )
803 - );
804 - if( strlen( K::get_var( 'campaignmonitor_list_id' , $fca_eoi ) ) == 32){
805 - $fca_eoi[ 'provider' ] = 'campaignmonitor';
806 - }
807 - // End of hack
808 - // Hack for getresponse upgrade
809 - $fca_eoi[ 'getresponse_list_id' ] = K::get_var(
810 - 'getresponse_list_id'
811 - , $fca_eoi
812 - , K::get_var( 'list_id' , $fca_eoi )
813 - );
814 - if( K::get_var( 'list_id' , $fca_eoi ) ) {
815 - $fca_eoi[ 'provider' ] = 'getresponse';
816 - }
817 - // End of hack
818 -
819 509 // Prepare providers options
820 510 foreach ( $this->settings[ 'providers' ] as $provider_id => $provider ) {
821 511 $providers_options[ $provider_id ] = $provider[ 'info' ][ 'name' ];
822 512 }
@@ -822,30 +512,16 @@
822 512 }
823 513
824 514 if ( $allow_customform == 'false') {
825 515 unset ( $providers_options['customform'] );
826 - }
827 -
828 -
516 + }
517 +
829 518 // Provider choice if there are many providers
830 519 if ( 1 < count( $providers_available) ) {
831 520
832 - $last_date = 0;
833 - $provider = 'mailchimp'; // use mailchimp by default
834 - foreach ( $fca_eoi_last_3_forms as $form ) {
835 - if ( ! empty( $form['fca_eoi'] ) ) {
836 - $post_date = strtotime( $form['post']->post_date );
837 -
838 - foreach ( array_keys( $form['fca_eoi'] ) as $key ) {
839 - $pos = strpos( $key, '_list_id' );
840 - if ( $pos !== false && $post_date > $last_date ) {
841 - $provider = substr( $key, 0, $pos );
842 - $last_date = $post_date;
843 - }
844 - }
845 - }
846 - }
847 -
521 + $provider = get_option( 'fca_eoi_last_provider', '' );
522 + $provider = empty($provider) ? 'mailchimp' : $provider; // use mailchimp by default
523 +
848 524 K::select( 'fca_eoi[provider]'
849 525 , array(
850 526 'class' => 'select2',
851 527 'style' => 'width: 27em;',
@@ -861,461 +537,343 @@
861 537 foreach ( $providers_available as $provider ) {
862 538 call_user_func( $provider . '_integration', $this->settings );
863 539 }
864 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>
865 558
866 - 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>
867 567
868 - global $post;
869 - $screen = get_current_screen();
568 + <option value="time_on_page" disabled>
569 + Time on page
570 + </option>
870 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 +
871 689 $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
872 -
873 - // Widgets
690 +
691 + $conditions = empty( $fca_eoi['publish_lightbox']['conditions'] ) ? array() : $fca_eoi['publish_lightbox']['conditions'];
692 + $this->prepare_publish_rules_html( $conditions );
693 +
874 694 K::wrap(
875 695 sprintf(
876 - __( 'You can publish this optin box by going to <a href="%s" target="_blank">Appearance › Widgets</a>')
877 - , admin_url( 'widgets.php')
878 - )
879 - , array( 'id' => 'fca_eoi_publish_widget' )
880 - , 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' )
881 701 );
882 702
883 703 // Post boxes
884 704 echo '<div id ="fca_eoi_publish_postbox">';
885 - K::wrap( __( 'Shortcode')
886 - , array( 'style' => 'padding-left: 0px; padding-right: 0px; ' )
887 - , array( 'in' => 'h3' )
888 - );
889 - K::wrap( __( "Copy and paste beneath shortcode anywhere on your site where you'd like this opt-in form to appear." )
890 - , null
891 - , array( 'in' => 'p' )
892 - );
893 - K::input( ''
894 - , array(
895 - 'class' => 'regular-text autoselect',
896 - 'readonly' => 'readonly',
897 - 'value' => sprintf( '[%s id=%d]', $this->settings[ 'shortcode' ], $post->ID ),
898 - )
899 - , array( 'format' => '<p>:input</p>', )
900 - );
901 - K::wrap( __( 'Append to post or page')
902 - , array( 'style' => 'padding-left: 0px; padding-right: 0px; ' )
903 - , array( 'in' => 'h3' )
904 - );
905 - K::wrap( __( 'Automatically append this optin to the following posts, categories and/or pages.' )
906 - , null
907 - , array( 'in' => 'p' )
908 - );
909 - 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() ) );
910 730 echo '</div>';
911 731
912 732 // Lightboxes
913 733
914 - switch ( $this->settings['distribution'] ) {
915 - case 'free':
916 - $conditions_options = array(
917 - 'time_on_page' => 'Time on page is at least (second)',
918 - );
919 - break;
920 - case 'premium':
921 - $conditions_options = array(
922 - 'pageviews' => 'Number of pageviews during this visit at least',
923 - 'scrolled_percent' => 'Scrolled down on current page at least (%)',
924 - 'time_on_page' => 'Time on page is at least (second)',
925 - 'include' => 'Only show popup on the following posts/pages',
926 - 'exclude' => 'Never show popup on the following posts/pages',
927 - 'exit_intervention' => 'User is about to close the page (Exit Intervention)'
928 - );
929 - break;
930 - }
931 -
734 +
932 735 $fca_eoi[ 'publish_lightbox' ] = K::get_var( 'publish_lightbox', $fca_eoi, array() );
933 - echo "<div id ='fca_eoi_publish_lightbox'>";
934 736
935 - if ( 'premium' === $this->settings[ 'distribution' ] ) {
936 - K::input( 'fca_eoi[publish_lightbox_mode]'
937 - , array(
938 - 'type' => 'radio',
939 - 'value' => 'two_step_optin',
940 - 'checked' => 'two_step_optin' === K::get_var( 'publish_lightbox_mode', $fca_eoi ),
941 - )
942 - , array(
943 - 'format' => '<p><label>:input Two-Step Optin (Trigger popup only when the visitor clicks on a call to action link)</label></p>',
944 - )
945 - );
946 - }
947 -
948 - K::input( 'fca_eoi[publish_lightbox_mode]'
949 - , array(
950 - 'type' => 'radio',
951 - 'value' => 'traditional_popup',
952 - 'checked' => 'traditional_popup' === K::get_var( 'publish_lightbox_mode', $fca_eoi ),
953 - )
954 - , array(
955 - 'format' => '<p><label>:input Traditional Popup (Trigger popup when the visitor is browsing your site)</label></p>',
956 - )
957 - );
958 - ?>
959 -
960 - <hr />
961 -
962 - <?php // Condition always present ?>
963 - <div id="fca_eoi_publish_lightbox_mode_traditional_popup" class="hidden">
964 - <fieldset class="fca_lightbox_condition fca_lightbox_condition_permanent">
965 - <span class="fca_lightbox_condition_text"><?php _e('Show popup'); ?></span><?php
966 - K::select(
967 - 'fca_eoi[publish_lightbox][show_every]'
968 - , array()
969 - , array(
970 - 'options' => array(
971 - 'never' => __( 'Never' ),
972 - 'always' => __( 'On every pageview' ),
973 - 'session' => __( 'Once per visit' ),
974 - 'day' => __( 'Once per day' ),
975 - 'month' => __( 'Once per month' ),
976 - '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 ),
977 748 ),
978 - 'selected' => K::get_var( 'show_every', $fca_eoi[ 'publish_lightbox' ] ),
979 - )
980 - );
981 - ?>
982 - <p class="fca_eoi_help"><?php _e( 'Set how frequently to show the popup. (Never means the popup is deactivated.)' ); ?></p>
983 - </fieldset>
984 - <?php
985 - // Saved conditions
986 - $saved_conditions = array();
987 - $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 + }
988 754
989 - // Add default if creating a new form
990 - if ( 'add' === $screen->action ) {
991 - $saved_conditions = array(
992 - '_'.time().'001' => array(
993 - 'parameter' => 'pageviews',
994 - '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 ),
995 760 ),
996 - '_'.time().'002' => array(
997 - 'parameter' => 'scrolled_percent',
998 - 'value' => '30',
999 - ),
1000 - '_'.time().'003' => array(
1001 - 'parameter' => 'time_on_page',
1002 - 'value' => '30',
1003 - ),
1004 - );
1005 - }
1006 -
1007 - foreach ( $saved_conditions as $condition_id => $condition ) {
1008 - // Skip conditions that are not available in version
1009 - if ( ! array_key_exists( $condition[ 'parameter' ], $conditions_options ) ) {
1010 - continue;
1011 - }
1012 -
1013 - $select = K::select( "fca_eoi[publish_lightbox][conditions][$condition_id][parameter]"
1014 - , array()
1015 - , array(
1016 - 'selected' => $condition['parameter'],
1017 - 'options' => $conditions_options,
1018 - 'return' => 'true',
761 + array(
762 + 'format' => '<p><label>:input Traditional Popup (Trigger popup when the visitor is browsing your site)</label></p>',
1019 763 )
1020 764 );
765 + echo '</div>';
1021 766
1022 - if ( in_array( $condition['parameter'], array( 'include', 'exclude' ) ) ) {
1023 - $input = k_selector( "fca_eoi[publish_lightbox][conditions][$condition_id][value]"
1024 - , K::get_var( 'value', $condition, array() )
1025 - , true
1026 - );
1027 - } else if ( $condition['parameter'] == 'exit_intervention' ) {
1028 - $input = K::input( "fca_eoi[publish_lightbox][conditions][$condition_id][value]"
1029 - , array(
1030 - 'type' => 'hidden',
1031 - 'value' => ''
1032 - )
1033 - , array(
1034 - 'return' => true
1035 - )
1036 - );
1037 - } else {
1038 - $input = K::input( "fca_eoi[publish_lightbox][conditions][$condition_id][value]"
1039 - , array(
1040 - 'class' => 'medium-text',
1041 - 'type' => 'text',
1042 - 'value' => $condition['value'],
1043 - )
1044 - , array(
1045 - 'return' => true,
1046 - )
1047 - );
1048 - }
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 +
1049 815
1050 - $condition_HTML_inner = ''
1051 - . $select
1052 - . $input
1053 - . ' '
1054 - . '<span class="button fca_remove_lightbox_condition"><span style="vertical-align:text-bottom" class="dashicons dashicons-no"></span> Remove Rule</span>'
1055 - . '<p class="fca_eoi_help"></p>'
1056 - ;
1057 - echo '<div class="fca_eoi_and">- And -</div>';
1058 - K::wrap( $condition_HTML_inner
1059 - , array(
1060 - 'id' => 'fca_lightbox_condition' . $condition_id,
1061 - 'class' => 'fca_lightbox_condition',
1062 - 'style' => '
1063 - padding: .5%;
1064 - margin:.5% 0;
1065 - box-shadow: 0 0 1px rgba(0, 0, 0, .2);
1066 - width: 97%;
1067 - background:#F7F7F7;
1068 - ',
1069 - )
1070 - , array(
1071 - 'in' => 'fieldset',
1072 - )
1073 - );
1074 - }
1075 - ?>
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 +
1076 841
1077 - <?php /* Button to add conditions */ ?>
1078 - <p><span class="button" id="fca_add_lightbox_condition"><span style="vertical-align:text-bottom" class="dashicons dashicons-plus"></span> Add Rule</span></p>
1079 - </div>
1080 -
1081 - <?php if ( 'premium' === $this->settings[ 'distribution' ] ) { ?>
1082 - <div id="fca_eoi_publish_lightbox_mode_two_step_optin" class="hidden">
1083 - <?php
1084 - K::input( 'fca_eoi[lightbox_cta_text]'
1085 - , array(
1086 - 'value' => K::get_var( 'lightbox_cta_text', $fca_eoi )
1087 - ? K::get_var( 'lightbox_cta_text', $fca_eoi )
1088 - : __( 'Free Download' )
1089 - ,
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' ),
1090 850 'class' => 'regular-text',
1091 - )
1092 - , array(
851 + ),
852 + array(
1093 853 'format' => '<p><label>Call to action text :input</label></p>',
1094 854 )
1095 855 );
1096 - K::input( 'fca_eoi[lightbox_cta_link]'
1097 - , array(
856 + K::input( 'fca_eoi[lightbox_cta_link]',
857 + array(
1098 858 'readonly' => 'readonly',
1099 - 'value' => htmlspecialchars( sprintf( '<a href="#" data-optin-cat="%d">%s</a>'
1100 - , $post->ID
1101 - , __( 'Free Download' )
1102 - ) ),
859 + 'value' => htmlspecialchars( sprintf( '<button data-optin-cat="%d">%s</button>',
860 + $post->ID,
861 + __( 'Free Download' ) ) ),
1103 862 'class' => 'regular-text autoselect',
1104 - )
1105 - , array(
863 + ),
864 + array(
1106 865 'format' => '<p><label>Call to action link :input</label></p>',
1107 866 )
1108 867 );
1109 868
1110 - K::wrap( __( 'Post above link into the text editor window of your post/page/widget.' )
1111 - , array( 'class' => 'description' )
1112 - , 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' )
1113 872 );
1114 -
1115 - ?>
1116 - </div>
1117 - <?php } ?>
1118 -
1119 - <script>
1120 - jQuery( document ).ready( function( $ ) {
1121 -
1122 - <?php
1123 - $lightbox_help = array(
1124 - '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.)' ),
1125 - '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.' ),
1126 - '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.' ),
1127 - '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.' ),
1128 - 'exit_intervention' => __( 'Only show this popup to visitors who are about to close the current page.' ),
1129 - '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.' ),
1130 - );
1131 - ?>
1132 -
1133 - var lightbox_help = <?php echo json_encode( $lightbox_help ) ?>;
1134 -
1135 - // Condition template
1136 - <?php if ( 'free' === $this->settings[ 'distribution' ] ) { ?>
1137 - 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>' );
1138 - <?php } else if ( 'premium' === $this->settings[ 'distribution' ] ) { ?>
1139 - 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>' );
1140 - <?php } ?>
1141 -
1142 - <?php
1143 - $s = str_replace( array( "\n", '"' )
1144 - , array( '', '\"' )
1145 - , k_selector( 'fca_eoi[publish_lightbox][conditions][_x_][value]', array(), true )
1146 - );
1147 - ?>
1148 -
1149 - var s = "<?php echo $s; ?>";
1150 -
1151 - var t = '<input class="medium-text" type="text" name="fca_eoi[publish_lightbox][conditions][_x_][value]"/>';
1152 -
1153 - // Disables all but last condition, and use the right input field
1154 - $( document )
1155 - .on( 'change'
1156 - , "select[name^='fca_eoi[publish_lightbox][conditions]['][name$='][parameter]']"
1157 - , function() {
1158 - fix_conditions();
1159 - }
1160 - )
1161 - ;
1162 - $("select[name^='fca_eoi[publish_lightbox][conditions]['][name$='][parameter]']:first").change()
1163 - ;
1164 - function fix_conditions() {
1165 - var $button = $( '#fca_add_lightbox_condition' );
1166 - var $conditions;
1167 -
1168 - $conditions = $( 'select' )
1169 - .filter( "[name^='fca_eoi[publish_lightbox][conditions][']" )
1170 - .filter( "[name$='][parameter]']" )
1171 - ;
1172 - // Prevent changing other conditions
1173 - $conditions
1174 - .not(':last')
1175 - .prop( 'disabled', true )
1176 - ;
1177 - // Allow changing last
1178 - $conditions
1179 - .last()
1180 - .prop( 'disabled', false )
1181 - ;
1182 - // Show hide plus button
1183 - if ( $conditions.length == $(f).find('select:first option').length ) {
1184 - $button.hide();
1185 - } else {
1186 - $button.show();
1187 - }
1188 -
1189 - // Update conditions variable
1190 - $conditions = $( 'select' )
1191 - .filter( "[name^='fca_eoi[publish_lightbox][conditions][']" )
1192 - .filter( "[name$='][parameter]']" )
1193 - ;
1194 -
1195 - /**
1196 - * Show posts selector VS input depending on option.
1197 - * Remove previously selected options.
1198 - * Update help text
1199 - * Use default when applicable (i.e when data-default is here)
1200 - * Remove overflow (condition fieldsets without possible options)
1201 - */
1202 - $conditions.each( function( i ) {
1203 - var $this = $( this );
1204 - var $fieldset = $this.parent();
1205 - var $parameter = $( '[name$="[parameter]"]', $fieldset );
1206 - var $value = $( '[name$="[value]"],[name$="[value][]"]', $fieldset );
1207 - var $input = $value;
1208 - var name = $value.attr( 'name' ).replace(/\[\]/g, '');
1209 - var is_textfield = $value.is( 'input' );
1210 - var is_hidden = ( 'exit_intervention' === $parameter.val() );
1211 - var use_textfield = ( 'include' !== $parameter.val() && 'exclude' !== $parameter.val() );
1212 - var cpt, condition, _default;
1213 -
1214 - // Decide what element to use : input VS select
1215 - if ( use_textfield && ! is_textfield ) {
1216 - $( '.select2', $fieldset ).remove();
1217 - $input = $( t ).attr( 'name', name );
1218 - $parameter.after( $input );
1219 - } else if ( ! use_textfield && is_textfield ) {
1220 - $input = $( s ).attr( 'name', name + '[]' );
1221 - $value.replaceWith( $input );
1222 - }
1223 -
1224 - // Hide or show the input
1225 - $input.attr( 'type', is_hidden ? 'hidden' : 'text' );
1226 -
1227 - // Remove previously selected condition parameters
1228 - $conditions.not($this).find('option[value='+$this.val()+']').remove();
1229 -
1230 - // Update help text
1231 - $( '.fca_eoi_help', $fieldset ).text( lightbox_help[ $parameter.val() ] );
1232 -
1233 - // Use default
1234 - if ( _default = $( ':selected', $parameter).data( 'default' ) ) {
1235 - $value.val( _default );
1236 - $( 'option', $parameter ).data( 'default', '' );
1237 - }
1238 -
1239 - // Remove overflow
1240 - if ( ! $( 'option', $parameter ).length ) {
1241 - $( '.fca_remove_lightbox_condition', $fieldset ).click();
1242 - }
1243 - } );
1244 - $('select.select2').select2();
873 + echo "</div>";
1245 874 }
1246 -
1247 - $( document ).on( 'click', '.fca_remove_lightbox_condition', function( i ) {
1248 -
1249 - var $this = $( this );
1250 - var $opt = $( 'select:first option:selected', $this.parent() )
1251 - .clone()
1252 - .removeAttr( 'selected' )
1253 - ;
1254 -
1255 - $this.parent().remove(); // remove condition row
1256 -
1257 - $('.fca_eoi_and').remove(); // removes "AND"
1258 - $('.fca_lightbox_condition:gt(0)').before( '<div class="fca_eoi_and">- And -</div>' );
1259 -
1260 - $('select')
1261 - .filter( "[name^='fca_eoi[publish_lightbox][conditions][']" )
1262 - .filter( "[name$='][parameter]']" )
1263 - .append( $opt )
1264 - ;
1265 -
1266 - fix_conditions();
1267 - } );
1268 -
1269 -
1270 - $( document ).on( 'click', '#fca_add_lightbox_condition', function() {
1271 -
1272 - var $this = $( this );
1273 - var ts = Date.now();
1274 - var $condition = $( f.replace( /_x_/g, '_' + ts ) );
1275 -
1276 - // Remove already used conditions
1277 - $( 'option', $condition ).each( function() {
1278 - var $this = $( this );
1279 - var val = $this.val();
1280 - var remove = $('select')
1281 - .filter("[name^='fca_eoi[publish_lightbox][conditions][']")
1282 - .filter("[name$='][parameter]']")
1283 - .find('option:selected[value=' + val + ']')
1284 - .length
1285 - ;
1286 -
1287 - if ( remove ) {
1288 - $( this ).remove();
1289 - }
1290 - } );
1291 -
1292 - $this.parent().before( '<div class="fca_eoi_and">- And -</div>' );
1293 - $this.parent().before( $condition );
1294 -
1295 - // Bind removing to minus sign
1296 - $( '.fca_remove_lightbox_condition', '#fca_lightbox_condition_' + ts ).click( function() {
1297 - $( this ).parent().remove();
1298 - } );
1299 -
1300 - // Prevent changing previous conditions
1301 - fix_conditions();
1302 - } );
1303 -
1304 - // Enable disabled conditions fields to allow passing their value to the form action
1305 - $( document ).on( 'submit', '#post', function() {
1306 - $( 'select' )
1307 - .filter( "[name^='fca_eoi[publish_lightbox][conditions][']" )
1308 - .filter( "[name$='][parameter]']" )
1309 - .prop( 'disabled', false )
1310 - ;
1311 - } );
1312 - } );
1313 -
1314 - </script>
1315 - <?php
1316 -
1317 - echo '</div>'; // #fca_eoi_publish_lightbox
875 + echo "</div>";
1318 876 }
1319 877
1320 878 private function meta_box_field( $id, $title, $controls = array() ) {
1321 879 $content = '';
@@ -1331,12 +889,16 @@
1331 889
1332 890 $content = trim( $content );
1333 891 $class_name = 'accordion-section-primary-' . ( empty( $content ) ? 'empty' : 'full' );
1334 892 $content = '<div class="' . $class_name . '">' . $content . '</div>';
1335 -
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 +
1336 898 K::wrap(
1337 899 K::wrap(
1338 - $title,
900 + $title . "<span class='accordion-info' id='accordion-info-$title_id'></span>",
1339 901 array( 'class' => 'accordion-section-title' ),
1340 902 array( 'return' => true )
1341 903 ) .
1342 904 K::wrap(
@@ -1349,44 +911,147 @@
1349 911 'id' => $id
1350 912 )
1351 913 );
1352 914 }
1353 -
915 +
1354 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 );
1355 933
1356 - wp_enqueue_script( 'accordion' );
1357 -
1358 - global $post;
1359 - $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
934 + $output .= '</div>';
935 + echo $output;
936 + /* END FORM HTML GENERATION */
937 +
1360 938 $providers_available = array_keys( $this->settings[ 'providers' ] );
1361 939 $providers_options = array();
1362 940 $screen = get_current_screen();
1363 - $fca_eoi_last_3_forms = $this->settings[ 'fca_eoi_last_3_forms' ];
1364 941
1365 942 // Prepare providers options
1366 943 foreach ($this->settings[ 'providers' ] as $provider_id => $provider ) {
1367 944 $providers_options[ $provider_id ] = $provider[ 'info' ][ 'name' ];
1368 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(
1369 954
1370 - 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'),
1371 1007
1372 - echo '<div id="fca_eoi_settings" class="accordion-container">';
1008 + ) );
1373 1009
1374 - $this->meta_box_field( 'fca_eoi_fieldset_form', 'Form' );
1375 -
1376 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 + ),
1377 1021 array( 'input', 'fca_eoi[headline_copy]',
1378 - array( 'value' => K::get_var( 'headline_copy', $fca_eoi ) ),
1022 + array( 'class' => 'fca_eoi_text_input', 'value' => K::get_var( 'headline_copy', $post_meta ) ),
1379 1023 array( 'format' => '<p><label><span class="control-title">Headline Copy</span><br />:input</label></p>' )
1380 - )
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 +
1381 1032 ) );
1382 -
1033 +
1383 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 + ),
1384 1045 array( 'textarea', 'fca_eoi[description_copy]', array(), array(
1385 1046 'format' => ':textarea',
1386 1047 'editor' => true,
1387 - 'value' => K::get_var( 'description_copy', $fca_eoi ),
1388 - ) )
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'),
1389 1054 ) );
1390 1055
1391 1056 $this->meta_box_field( 'fca_eoi_fieldset_name_field', 'Name Field', array(
1392 1057 array( 'input', 'fca_eoi[show_name_field]',
@@ -1391,183 +1056,385 @@
1391 1056 $this->meta_box_field( 'fca_eoi_fieldset_name_field', 'Name Field', array(
1392 1057 array( 'input', 'fca_eoi[show_name_field]',
1393 1058 array(
1394 1059 'type' => 'checkbox',
1395 - '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'
1396 1062 ),
1397 1063 array(
1398 - '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>'
1399 1065 ),
1400 1066 ),
1401 1067 array( 'input', 'fca_eoi[name_placeholder]',
1402 - 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' ) ),
1403 1069 array( 'format' => '<p><label><span class="control-title">Placeholder Text</span><br />:input</label></p>' )
1404 - )
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'),
1405 1083 ) );
1406 1084
1407 1085 $this->meta_box_field( 'fca_eoi_fieldset_email_field', 'Email Field', array(
1408 1086 array( 'input', 'fca_eoi[email_placeholder]',
1409 - 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' ) ),
1410 1088 array( 'format' => '<p><label><span class="control-title">Placeholder Text</span><br />:input</label></p>' )
1411 - )
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'),
1412 1102 ) );
1413 1103
1414 1104 $this->meta_box_field( 'fca_eoi_fieldset_button', 'Button', array(
1415 1105 array( 'input', 'fca_eoi[button_copy]',
1416 - 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' ) ),
1417 1107 array( 'format' => '<p><label><span class="control-title">Button Copy</span><br />:input</label></p>' )
1418 - )
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 +
1419 1129 ) );
1420 1130
1421 - $this->meta_box_field( 'fca_eoi_fieldset_privacy', 'Privacy Policy', array(
1422 - array( 'textarea', 'fca_eoi[privacy_copy]',
1131 + $this->meta_box_field( 'fca_eoi_fieldset_privacy', 'After Button Area', array(
1132 + array( 'input', 'fca_eoi[show_privacy_field]',
1423 1133 array(
1424 - 'class' => 'large-text',
1425 - ),
1426 - array(
1427 - 'format' => '<p><label><span class="control-title">Privacy Policy Copy</span><br />:textarea</label></p>',
1428 - 'value' => K::get_var( 'privacy_copy', $fca_eoi ),
1429 - )
1430 - )
1431 - ) );
1432 -
1433 - $this->meta_box_field( 'fca_eoi_fieldset_fatcatapps', 'Branding', array(
1434 - array( 'input', 'fca_eoi[show_fatcatapps_link]',
1435 - array(
1436 1134 'type' => 'checkbox',
1437 - 'checked' => K::get_var( 'show_fatcatapps_link', $fca_eoi ),
1135 + 'checked' => K::get_var( 'show_privacy_field', $post_meta, 'on' ) == 'off' ? '' : 'on',
1136 + 'class' => 'switch-input'
1438 1137 ),
1439 1138 array(
1440 - 'format' => '<p><label>:input Show <a href="http://fatcatapps.com/" target="_blank">Optin Cat</a> Branding</label></p>'
1441 - )
1442 - )
1443 - ) );
1444 -
1445 - $this->meta_box_field( 'fca_eoi_fieldset_error_text', 'Error Text', array(
1446 - array( 'textarea', 'fca_eoi[error_text_field_required]',
1447 - array(
1448 - 'class' => 'large-text'
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>'
1449 1140 ),
1450 - array(
1451 - 'format' => '<p><label><span class="control-title">Field Required</span><br />:textarea</label></p>',
1452 - 'value' => K::get_var( 'error_text_field_required', $fca_eoi, '' )
1453 - )
1454 1141 ),
1455 - array( 'textarea', 'fca_eoi[error_text_invalid_email]',
1142 + array( 'textarea', 'fca_eoi[privacy_copy]',
1456 1143 array(
1457 - 'class' => 'large-text'
1144 + 'class' => 'large-text fca_eoi_text_input',
1458 1145 ),
1459 1146 array(
1460 - 'format' => '<p><label><span class="control-title">Invalid Email</span><br />:textarea</label></p>',
1461 - 'value' => K::get_var( 'error_text_invalid_email', $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 ),
1462 1149 )
1463 - )
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'),
1464 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 + }
1465 1173
1466 1174 echo '</div>';
1175 + echo '</div>';
1176 + echo '<br clear="all"/>';
1177 +
1178 +
1467 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 +
1199 + )
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 );
1468 1207
1469 - public function meta_box_content_thanks() {
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) {
1470 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 +
1471 1293 $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
1472 1294 $screen = get_current_screen();
1473 - $fca_eoi_last_3_forms = $this->settings[ 'fca_eoi_last_3_forms' ];
1474 -
1295 +
1475 1296 // Get the previous thank you page if this is a new post
1476 - $thank_you_page_suggestion = false;
1477 - if ( 'add' === $screen->action ) {
1478 - foreach ( $fca_eoi_last_3_forms as $fca_eoi_previous_form ) {
1479 - try {
1480 - if(
1481 - K::get_var( 'fca_eoi', $fca_eoi_previous_form )
1482 - && K::get_var( 'thank_you_page', $fca_eoi_previous_form[ 'fca_eoi' ] )
1483 - ) {
1484 - $thank_you_page_suggestion = $fca_eoi_previous_form[ 'fca_eoi' ][ 'thank_you_page' ];
1485 - break;
1486 - }
1487 - } catch ( Exception $e ) {}
1488 - }
1489 - }
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]',
1309 + array(
1310 + 'class' => 'regular-text',
1311 + 'value' => K::get_var( 'subscribing_message', $fca_eoi, $subscribing_suggestion ),
1312 + ),
1313 + array()
1314 + );
1490 1315
1491 - // Prepare options
1492 - $pages = array( '~' => __( 'Front page' ) );
1493 - $pages_objects = get_pages();
1494 - foreach ( $pages_objects as $page_obj ) {
1495 - $pages[ $page_obj->ID ] = $page_obj->post_title;
1496 - }
1497 - K::input( 'fca_eoi[thankyou_page_mode]'
1498 - , array(
1499 - 'type' => 'radio',
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(
1326 + 'type' => 'checkbox',
1500 1327 'value' => 'redirect',
1501 - 'checked' => 'redirect' === K::get_var( 'thankyou_page_mode', $fca_eoi ),
1328 + 'checked' => 'redirect' === $checked,
1329 + 'class' => 'switch-input fca-eoi-redirect-mode-toggle'
1330 + ),
1331 + array(
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>'
1502 1333 )
1503 - , array(
1504 - 'format' => '<p><label>:input Redirect to "Thank You" page</label></p>',
1334 + );
1335 + _e('Redirect', 'easy-opt-ins');
1336 +
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 + ),
1344 + array(
1345 + 'value' => K::get_var( 'thankyou_ajax', $fca_eoi, $thank_you_text_suggestion ),
1505 1346 )
1506 - );
1347 + );
1348 +
1349 + echo '</td></tr>';
1507 1350
1508 - if ( $this->settings['distribution'] === 'premium' ) {
1509 1351
1510 - K::input( 'fca_eoi[thankyou_page_mode]'
1511 - , array(
1512 - 'type' => 'radio',
1513 - 'value' => 'ajax',
1514 - 'checked' => 'ajax' === K::get_var( 'thankyou_page_mode', $fca_eoi ),
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' ),
1515 1366 )
1516 - , array(
1517 - 'format' => '<p><label>:input Display "Thank You" message using AJAX (Immediately after form submission. No page reload or redirect).</label></p>',
1518 - )
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;',
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 + )
1519 1390 );
1391 + echo '</span>';
1392 + echo '<span id="fca_eoi_redirect_url_span">';
1393 + K::input( 'fca_eoi[thank_you_url]',
1394 + array(
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>';
1520 1403
1521 - }
1522 1404
1523 - echo "<hr>";
1405 + echo '</table>';
1524 1406
1525 - echo "<div id='fca_eoi_thankyou_redirect'>";
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]',
1412 + array(
1413 + 'class' => 'large-text fca_eoi_text_input',
1414 + ),
1415 + array(
1416 + 'value' => K::get_var( 'error_text_field_required', $fca_eoi, $text_error_suggestion ),
1417 + )
1418 + );
1419 +
1420 + echo '</td></tr>';
1526 1421
1527 - K::wrap( 'Redirect user to the following page after submitting the form:'
1528 - , null
1529 - , array( 'in' => 'p' )
1530 - );
1531 - K::select( 'fca_eoi[thank_you_page]'
1532 - , array(
1533 - 'class' => 'select2',
1534 - 'style' => 'width: 27em;',
1535 - )
1536 - , array(
1537 - 'format' => '<p><label>:select</label></p>',
1538 - 'options' => $pages,
1539 - 'selected' => 'add' === $screen->action
1540 - ? $thank_you_page_suggestion
1541 - : K::get_var( 'thank_you_page', $fca_eoi, '~' )
1542 - ,
1543 - )
1544 - );
1545 - K::wrap( __( 'Create a new "Thank You Page" &rsaquo;' )
1546 - , array(
1547 - 'href' => admin_url( 'post-new.php?post_type=page' ),
1548 - 'target' => '_blank',
1549 - )
1550 - , array(
1551 - 'in' => 'a',
1552 - 'html_before' => '<p>',
1553 - 'html_after' => '</p>',
1554 - )
1555 - );
1422 + echo '<tr><th>Invalid Email</th><td>';
1423 +
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 + );
1432 +
1433 + echo '</td></tr>';
1556 1434
1557 - echo "</div>";
1558 1435
1559 - echo "<div id='fca_eoi_thankyou_ajax_msg'>";
1560 - K::textarea( 'fca_eoi[thankyou_ajax]'
1561 - , array(
1562 - 'class' => 'fca-eoi-thank-you-ajax',
1563 - )
1564 - , array(
1565 - 'value' => htmlentities ( K::get_var( 'thankyou_ajax', $fca_eoi, 'Thank you! Please check your inbox for your confirmation email.' )),
1566 - 'format' => '<label> Display this message after submitting the form:</label><br><br />:textarea',
1567 - )
1568 - );
1569 - echo "</div>";
1436 + echo '</table>';
1570 1437 }
1571 1438
1572 1439 public function meta_box_content_powerups() {
1573 1440
@@ -1572,42 +1439,61 @@
1572 1439 public function meta_box_content_powerups() {
1573 1440
1574 1441 global $post;
1575 1442 $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
1576 -
1577 1443 do_action('fca_eoi_powerups', $fca_eoi );
1578 1444 }
1579 1445
1580 - public function meta_box_content_debug() {
1581 -
1582 - global $post;
1583 -
1584 - $fca_eoi = get_post_meta( $post->ID, 'fca_eoi', true );
1585 -
1586 - !d( $fca_eoi );
1587 - }
1588 -
1589 1446 /**
1590 1447 * Save the Metabox Data
1591 1448 */
1592 1449 public function save_meta_box_content( $post_id, $post ) {
1593 -
1594 - // Save meta data
1595 - delete_post_meta( $post->ID, 'fca_eoi' );
1596 1450
1597 -
1598 - //DON'T INCLUDE PERIODS IN YOUR INPUT NAMES, OR YOU HAVE TO MAKE HACKS LIKE THIS
1599 - $post_formatted = array();
1600 - parse_str(file_get_contents("php://input"), $post_formatted);
1601 -
1602 -
1603 - $animation = isset($_POST['fca_eoi_animations']) ? $_POST['fca_eoi_animations'] : '';
1604 - $animationValue = isset($_POST['fca_eoi_show_animation_checkbox']) ? $_POST['fca_eoi_show_animation_checkbox'] : '';
1605 - if ($animationValue != 'on') {
1606 - $animation = '';
1607 - }
1608 -
1609 - if( $meta = K::get_var( 'fca_eoi', $post_formatted ) ) {
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 +
1610 1496 // Add provider if missing (happens on free distros where there is only one provider)
1611 1497 if( ! K::get_var( 'provider', $meta ) ) {
1612 1498 $meta[ 'provider' ] = $this->settings[ 'provider' ];
1613 1499 }
@@ -1633,15 +1519,8 @@
1633 1519 }
1634 1520 }
1635 1521 }
1636 1522
1637 - // Keep only the current layout inforamtion
1638 - foreach ( $meta as $k => $v ) {
1639 - if( preg_match( '|^[a-z]+_[0-9]+$|', $k ) && $k !== $meta[ 'layout' ] ) {
1640 - unset( $meta[ $k ] );
1641 - }
1642 - }
1643 -
1644 1523 // Make sure empty value for publish_postbox or publish_lightbox are saved as array(-1)
1645 1524 if( ! K::get_var( 'publish_postbox' , $meta, array() ) ) {
1646 1525 $meta[ 'publish_postbox' ] = array(-1);
1647 1526 }
@@ -1647,70 +1526,166 @@
1647 1526 }
1648 1527 if( ! K::get_var( 'publish_lightbox' , $meta, array() ) ) {
1649 1528 $meta[ 'publish_lightbox' ] = array(-1);
1650 1529 }
1651 -
1652 -
1653 - delete_post_meta( $post->ID, 'fca_eoi_layout' );
1654 - delete_post_meta( $post->ID, 'fca_eoi_provider' );
1655 -
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
1656 1537 $on_save_function = $provider . '_on_save';
1657 1538 if ( function_exists( $on_save_function ) ) {
1658 1539 $meta = $on_save_function( $meta );
1659 1540 }
1660 1541
1661 - //COMPILE SCSS AND SAVE INTO META
1662 - $head = '';
1663 -
1542 + //COMPILE CSS AND SAVE INTO 'HEAD' META
1664 1543 $layout_id = $meta[ 'layout' ];
1665 -
1666 - $layout = new EasyOptInsLayout( $layout_id );
1667 - $scss_path = $layout->path_to_resource( 'layout', 'scss' );
1668 1544
1669 - $form_id = $post->ID;
1670 - if ( file_exists( $scss_path ) ) {
1671 - $css_path = str_replace ( '.scss' , '_min.css', $scss_path );
1672 - $css = file_get_contents( $css_path );
1673 - $head .= '<style>' .
1674 - '.fca_eoi_form p { width: auto; }' .
1675 - '#fca_eoi_form_' . $form_id . ' input{ max-width: 9999px; }' . $css . '}' .
1676 - '</style>';
1677 - }
1678 -
1679 - // Add per form CSS
1680 - $head .= '<style>.fca_eoi_form{ margin: auto; }</style>';
1681 - $css = '';
1682 - if ( ! empty( $meta[ $layout_id ] ) ) {
1683 - $head .= "<style name='fca_eoi_form_style_$form_id'>";
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; }";
1547 +
1548 + if ( !empty( $layout_id ) ) {
1684 1549
1685 - foreach ( $meta[ $layout_id ] as $selector => $declarations ) {
1686 - $css .= "#fca_eoi_form_$form_id $selector{";
1687 - foreach ( $declarations as $property => $value ) {
1688 - if ( strlen( $value ) ) {
1689 - $css .= "$property:$value !important;";
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 );
1690 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 +
1691 1651 }
1692 - $css .= '}';
1693 1652 }
1694 1653
1695 - $head .= $css . '</style>';
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 +
1696 1687 }
1697 - if ( $layout->layout_type != 'lightbox' ) {
1698 - $head .= '<script>' . EasyOptInsActivity::get_instance()->get_tracking_code( $form_id ) . '</script>';
1699 - }
1700 -
1701 -
1702 - add_post_meta( $post->ID, 'fca_eoi', $meta );
1703 - add_post_meta( $post->ID, 'fca_eoi_layout', $meta[ 'layout' ] );
1704 - add_post_meta( $post->ID, 'fca_eoi_provider', $meta[ 'provider' ] );
1705 -
1706 - delete_post_meta( $post->ID, 'fca_eoi_animation' );
1707 - add_post_meta( $post->ID, 'fca_eoi_animation', $animation );
1708 -
1709 - delete_post_meta( $post->ID, 'fca_eoi_head' );
1710 - add_post_meta( $post->ID, 'fca_eoi_head', $head );
1711 -
1712 -
1713 1688 }
1714 1689 }
1715 1690
1716 1691 public function live_preview( $content ) {
@@ -1724,72 +1699,88 @@
1724 1699 }
1725 1700
1726 1701 public function admin_enqueue() {
1727 1702
1728 - $protocol = is_ssl() ? 'https' : 'http';
1729 1703 $provider = $this->settings[ 'provider' ];
1730 1704 $providers_available = array_keys( $this->settings[ 'providers' ] );
1731 1705
1732 -
1733 -
1734 - if ( ( ! empty( $_REQUEST['page'] ) && $_REQUEST['page'] == 'eoi_powerups' ) || has_action( 'fca_eoi_powerups' ) ) {
1735 - wp_enqueue_style( 'fca_eoi_powerups', FCA_EOI_PLUGIN_URL . '/assets/powerups/fca_eoi_powerups.css' );
1736 -
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' );
1737 1711 }
1738 -
1739 - if ( ( ! empty( $_REQUEST['page'] ) && $_REQUEST['page'] == 'eoi_powerups' ) ) {
1740 - wp_enqueue_script('fca_eoi_powerups_javascript', FCA_EOI_PLUGIN_URL . '/assets/powerups/fca_eoi_powerup.js');
1741 -
1742 - }
1743 -
1744 1712
1745 1713 $screen = get_current_screen();
1746 1714 if( 'easy-opt-ins' === $screen->id ){
1747 - wp_enqueue_script( 'tooltipster', FCA_EOI_PLUGIN_URL . '/assets/vendor/tooltipster/jquery.tooltipster.min.js' );
1748 - wp_enqueue_style( 'tooltipster', FCA_EOI_PLUGIN_URL . '/assets/vendor/tooltipster/tooltipster.css' );
1749 - wp_enqueue_script( 'mustache', $protocol . '://cdnjs.cloudflare.com/ajax/libs/mustache.js/0.8.1/mustache.min.js' );
1750 - wp_enqueue_script( 'select2', $protocol . '://cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.js' );
1751 - wp_enqueue_script( 'tinycolor', $protocol . '://cdnjs.cloudflare.com/ajax/libs/tinycolor/1.0.0/tinycolor.min.js' );
1752 - wp_enqueue_script( 'jscolor', FCA_EOI_PLUGIN_URL . '/assets/vendor/jscolor/jscolor.js' );
1753 - wp_enqueue_script( 'admin-cpt-easy-opt-ins-providers', FCA_EOI_PLUGIN_URL . '/assets/admin/eoi-providers.js' );
1754 - wp_enqueue_style( 'admin-cpt-easy-opt-ins-providers', FCA_EOI_PLUGIN_URL . '/assets/admin/eoi-providers.css' );
1755 - wp_enqueue_script( 'admin-cpt-easy-opt-ins', FCA_EOI_PLUGIN_URL . '/assets/admin/cpt-easy-opt-ins.js' );
1756 - wp_enqueue_style( 'fca_eoi', FCA_EOI_PLUGIN_URL .'/assets/style-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
1757 1746 foreach ( $providers_available as $provider ) {
1758 - wp_enqueue_script( 'admin-cpt-easy-opt-ins-' . $provider, FCA_EOI_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 );
1759 1748
1760 - $css_path = '/providers/' . $provider . '/cpt-easy-opt-ins.css';
1761 - if ( is_readable( FCA_EOI_PLUGIN_URL . $css_path ) ) {
1762 - wp_enqueue_style( 'admin-cpt-easy-opt-ins-' . $provider, FCA_EOI_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 );
1763 1752 }
1764 1753 }
1765 - wp_enqueue_style( 'admin-cpt-easy-opt-ins', FCA_EOI_PLUGIN_URL . '/assets/admin/cpt-easy-opt-ins.css' );
1766 - wp_enqueue_style( 'admin-cpt-easy-opt-ins-new', FCA_EOI_PLUGIN_URL . '/assets/admin/cpt-easy-opt-ins-new.css' );
1767 - wp_enqueue_style( 'font-awesome', $protocol . '://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.1.0/css/font-awesome.min.css' );
1768 - wp_enqueue_style( 'select2', $protocol . '://cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.min.css' );
1769 - 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 );
1770 1763
1764 + $file = plugin_dir_path( __FILE__ ) . "layout-cache";
1765 + $layout_data = unserialize (file_get_contents($file));
1771 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 +
1772 1772 if ( has_action( 'fca_eoi_powerups' ) ) {
1773 - wp_enqueue_script('fca_eoi_powerups', FCA_EOI_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);
1774 1774 }
1775 1775 }
1776 1776 if( 'widgets' === $screen->id ){
1777 - wp_enqueue_script( 'select2', $protocol . '://cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.js' );
1778 - 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 );
1779 1779 }
1780 1780 }
1781 1781
1782 1782 /**
1783 - * Disable autosaving optin forms since it causes data loss
1784 - */
1785 - function disable_autosave() {
1786 - if ( 'easy-opt-ins' == get_post_type() ) {
1787 - wp_dequeue_script( 'autosave' );
1788 - }
1789 - }
1790 -
1791 - /**
1792 1783 * Hides minor publising form items (status, visibility and publication date)
1793 1784 *
1794 1785 * This function shoud be used along with force_published to prevent
1795 1786 * saving posts as drafts
@@ -1799,36 +1790,97 @@
1799 1790 if( in_array( $screen->id, array( 'easy-opt-ins' ) ) ) {
1800 1791 echo '<style>#minor-publishing { display: none; }</style>';
1801 1792 }
1802 1793 }
1794 +
1795 + public function onboard_help() {
1803 1796
1804 - /**
1805 - * Disables meta box toggling (collapse/expand) for specified post types
1806 - */
1807 - 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() {
1808 1817
1809 - $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';
1810 1852
1811 - // Array of post types where we want to remove metabox toggling
1812 - $post_types = array(
1813 - 'easy-opt-ins',
1814 - );
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'];
1815 1876
1816 - if( in_array( $current_screen->id, $post_types ) ) {
1817 - ?>
1818 - <script type="text/javascript">
1819 - jQuery( document ).ready( function($) {
1820 - $( '.postbox' ).removeClass( 'closed' );
1821 - $( '.postbox .hndle' ).css( 'cursor', 'default' );
1822 - $( document ).delegate( '.postbox h3, .postbox .handlediv', 'click', function() {
1823 - $( this )
1824 - .unbind( 'click.postboxes' )
1825 - .parent().removeClass( 'closed' );
1826 - } );
1827 - } );
1828 - </script>
1829 - <?php
1877 + if ( wp_verify_nonce ( $nonce, 'fca_eoi_dismiss') == 1 ) {
1878 + if ( update_option( $option, 'true' ) ) {
1879 + wp_send_json_success( $option );
1880 + }
1830 1881 }
1882 + wp_send_json_error();
1831 1883 }
1832 1884
1833 1885 /**
1834 1886 * Forces one column
@@ -1941,16 +1993,17 @@
1941 1993 /**
1942 1994 * Add the desired body classes (backend)
1943 1995 */
1944 1996 public function add_body_class( $classes ) {
1945 -
1946 1997 return "$classes fca_eoi";
1947 1998 }
1948 -
1999 +
2000 +
1949 2001 /**
1950 2002 * Handle Adding a subscriber with Ajax
1951 2003 */
1952 2004 public function ajax_subscribe() {
2005 +
1953 2006 $error = '';
1954 2007 // Get meta
1955 2008 $id = $_REQUEST['form_id'];
1956 2009
@@ -1956,120 +2009,57 @@
1956 2009
1957 2010 if (empty ($id)){
1958 2011 $error .= "Couldn't find form ID";
1959 2012 }
1960 -
1961 - $nonce = $_REQUEST['nonce'];
1962 - $nonceVerified = wp_verify_nonce( $nonce, 'fca_eoi_submit_form' );
1963 - if ($nonceVerified === FALSE) {
1964 - $error .= " Couldn't verify form submission";
1965 - }
1966 -
2013 +
1967 2014 $fca_eoi = get_post_meta( $id, 'fca_eoi', true );
1968 2015
1969 2016 if (empty ($fca_eoi)){
1970 - $error .= " Couldn't find post meta";
2017 + $error .= "Couldn't find post meta";
1971 2018 }
1972 2019
1973 2020 $provider = K::get_var( 'provider' , $fca_eoi );
1974 2021
1975 -
1976 2022 // Check a list_id is provided
1977 2023 $list_id = K::get_var( $provider . '_list_id' , $fca_eoi );
1978 -
1979 - // @todo: remove
1980 - // Hack for mailchimp upgrade
1981 - if( empty( $fca_eoi[ 'provider' ] ) ) {
1982 - $list_id = K::get_var(
1983 - 'mailchimp_list_id'
1984 - , $fca_eoi
1985 - , K::get_var( 'list_id' , $fca_eoi )
1986 - );
1987 - $provider = 'mailchimp';
2024 + if ( empty( $list_id ) ) {
2025 + $error .= "List not set";
1988 2026 }
1989 - // End of Hack
1990 -
1991 - // Hack for campaignmonitor upgrade
1992 - if( strlen( K::get_var( 'list_id' , $fca_eoi ) ) == 32){
1993 - $list_id = K::get_var(
1994 - 'campaignmonitor_list_id'
1995 - , $fca_eoi
1996 - , K::get_var( 'list_id' , $fca_eoi )
1997 - );
1998 - $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";
1999 2032 }
2000 - // End of Hack
2001 2033
2034 + // Subscribe user
2035 + $status = false;
2036 +
2037 + if( $list_id && $nonceVerified !== FALSE ) {
2038 + $str = $provider . '_add_user';
2039 +
2040 + $status = call_user_func( $provider . '_add_user' , $this->settings , $_POST , $list_id );
2041 +
2042 + do_action('fca_eoi_after_submission', $fca_eoi, $_POST );
2002 2043
2003 - // Hack for drip
2004 - if ( $provider == 'drip' ) {
2005 - $_POST['drip_api_token'] = $fca_eoi['drip_api_token'];
2006 - $_POST['drip_account_id'] = $fca_eoi['drip_account_id'];
2007 - $_POST['drip_action'] = $fca_eoi['drip_action'];
2008 - $_POST['drip_list_id'] = $fca_eoi['drip_list_id'];
2044 + if ($status !== TRUE) {
2045 + $error .= " Can't add user";
2046 + }
2009 2047 }
2010 -
2011 - // Hack for mailchimp upgrade
2012 - if( empty( $fca_eoi[ 'provider' ] ) ) {
2013 - $list_id = K::get_var(
2014 - 'getresponse_list_id'
2015 - , $fca_eoi
2016 - , K::get_var( 'list_id' , $fca_eoi )
2017 - );
2018 - $provider = 'getresponse';
2019 - }
2020 - // End of Hack
2021 -
2022 - // Hack for custom form upgrade
2023 - if( empty( $fca_eoi[ 'provider' ] ) ) {
2024 - $list_id = K::get_var(
2025 - 'customform_list_id'
2026 - , $fca_eoi
2027 - , K::get_var( 'list_id' , $fca_eoi )
2028 - );
2029 - $provider = 'customform';
2030 - }
2031 - if ( $provider == 'customform' ) {
2032 - $_POST['customform_request'] = $fca_eoi['customform_request'];
2033 - }
2034 2048
2035 - // End of Hack
2036 -
2037 -
2038 - if (empty ($provider)){
2039 - $error .= " Couldn't find provider";
2040 - }
2041 -
2042 - if (empty ($list_id)){
2043 - $error .= " Couldn't find list ID";
2044 - }
2045 -
2046 - // Subscribe user
2047 - if( $list_id ) {
2048 - $status = call_user_func( $provider . '_add_user' , $this->settings , $_POST , $list_id );
2049 - $double_opt_in = K::get_var( 'mailchimp_double_opt_in', $fca_eoi, '' );
2050 - do_action('fca_eoi_after_submission'
2051 - , $fca_eoi
2052 - , $_POST
2053 - );
2054 - }
2055 -
2056 - if ($status !== TRUE) {
2057 - $error .= " Can't add user";
2058 - }
2059 -
2060 -
2061 2049 if ( $status !== FALSE && $error === '' ) {
2062 2050 echo '✓';
2063 2051 EasyOptInsActivity::get_instance()->add_conversion( $id );
2064 2052 } else {
2065 - echo '✗' . " Error:" . $error;
2066 - }
2053 + echo '✗' . " Error: " . $error;
2054 + }
2055 +
2067 2056 exit;
2068 2057 }
2069 2058
2070 2059 public function admin_notices() {
2071 2060
2061 + //RN NOTE: MAYBE REWRITE
2072 2062 $current_screen = get_current_screen();
2073 2063
2074 2064 // Exit function if we are not on the opt-in editing page
2075 2065 if ( ! (
@@ -2127,27 +2117,22 @@
2127 2117 }
2128 2118
2129 2119 add_action( 'wp', array( $this, 'content' ), 10 );
2130 2120 }
2131 -
2121 +
2122 + //SEARCH THE CONTENT AND APPEND ANY RELEVANT POST BOXES
2132 2123 public function content() {
2133 -
2124 +
2134 2125 global $post;
2135 -
2136 - 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' ) {
2137 2129 return;
2138 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 );
2139 2134
2140 - // Do nothing if viewing an opt-in
2141 - if ( 'easy-opt-ins' === $post->post_type ) {
2142 - return;
2143 - }
2144 -
2145 - // Work only when viewing a post of any type
2146 - if ( empty( $post ) ) {
2147 - return;
2148 - }
2149 -
2150 2135 $priorities = array();
2151 2136
2152 2137 // Post details
2153 2138 $post_ID = $post->ID;
@@ -2164,10 +2149,10 @@
2164 2149 }
2165 2150
2166 2151 $priorities[] = '#' . $post_ID;
2167 2152
2168 - $taxonomies = get_taxonomies('','names');
2169 - $post_taxonomies = wp_get_object_terms( $post->ID,$taxonomies);
2153 + $taxonomies = get_taxonomies('', 'names');
2154 + $post_taxonomies = wp_get_object_terms( $post->ID, $taxonomies);
2170 2155 foreach ( $post_taxonomies as $t ) {
2171 2156 $condition = $post_type . ':' . $t->term_id;
2172 2157
2173 2158 $post_cond[] = $condition;
@@ -2176,28 +2161,22 @@
2176 2161
2177 2162 $priorities[] = $post_type;
2178 2163 $priorities[] = '*';
2179 2164
2180 - $fca_eoi_last_99_forms = array();
2181 - foreach (get_posts( 'posts_per_page=99&post_type=easy-opt-ins' ) as $i => $f ) {
2182 - $fca_eoi_last_99_forms[ $i ][ 'post' ] = $f;
2183 - $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 );
2184 2172 }
2185 - // wp_reset_query();
2186 2173
2187 2174 $postboxes = array();
2188 2175
2189 2176 // Append postcode shortcode when the conditions match
2190 - foreach( $fca_eoi_last_99_forms as $f) {
2177 + foreach( $fca_eoi_postboxes as $f ) {
2191 2178
2192 - // Exclude other layout types
2193 - if ( empty ( $f[ 'fca_eoi' ][ 'layout' ] ) ) {
2194 - continue;
2195 - }
2196 - if ( strpos( $f[ 'fca_eoi' ][ 'layout' ], 'postbox_' ) !== 0 ) {
2197 - continue;
2198 - }
2199 -
2200 2179 // Get conditions
2201 2180 $eoi_form_cond = K::get_var( 'publish_postbox', $f[ 'fca_eoi' ], array() );
2202 2181
2203 2182 // Append
@@ -2211,9 +2190,9 @@
2211 2190 }
2212 2191
2213 2192 if ( ! empty( $postboxes ) ) {
2214 2193 foreach ( $priorities as $cond ) {
2215 - if ( ! empty( $postboxes[ $cond ] ) ) {
2194 + if ( !empty( $postboxes[ $cond ] ) ) {
2216 2195 $post->post_content .= $postboxes[ $cond ];
2217 2196 return;
2218 2197 }
2219 2198 }
@@ -2222,732 +2201,251 @@
2222 2201 return;
2223 2202 }
2224 2203 }
2225 2204
2226 - private function get_tc_token( $form_id ) {
2227 - return "$form_id";
2228 - }
2229 -
2230 - private function to_call_tc_condition( $name, $arguments ) {
2231 - return array_merge( array( $name ), $arguments );
2232 - }
2233 -
2234 - private function to_value_tc_condition( $form_id, $name, $eoi_condition ) {
2235 - $value = intval( $eoi_condition['value'] );
2236 - $params = array( $value );
2237 -
2238 - if ( $name === 'page_views' ) {
2239 - $params[] = $this->get_tc_token( $form_id );
2240 - } else if ( $name === 'time_on_page' ) {
2241 - $params[0] *= 1000;
2205 + public function scan_for_shortcodes( $content ) {
2206 + if ( preg_match_all( '/data-optin-cat\s*=\s*["\']?\s*(\d+)/', $content, $matches ) ) {
2207 + $this->two_step_ids_on_page = array_map( 'intval', $matches[1] );
2242 2208 }
2243 2209
2244 - return $this->to_call_tc_condition( $name, $params );
2210 + return $content;
2245 2211 }
2246 2212
2247 - private function to_server_pass_tc_condition( $post_id, $parameter, $eoi_condition ) {
2248 - $url = add_query_arg( array(
2249 - 'fca_eoi_tc_condition_pass' => urlencode( $parameter ),
2250 - 'fca_eoi_tc_condition_value' => urlencode( implode( ',', $eoi_condition['value'] ) ),
2251 - 'fca_eoi_tc_condition_post_id' => $post_id
2213 + public function maybe_show_lightbox() {
2214 +
2215 + // Get lightboxes
2216 + $lightboxes = get_posts( array(
2217 + 'post_type' => 'easy-opt-ins',
2218 + 'posts_per_page' => -1,
2219 + 'orderby' => 'ID',
2220 + 'meta_key' => 'fca_eoi_layout',
2221 + 'meta_value' => 'lightbox_',
2222 + 'meta_compare' => 'like',
2252 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 + ) ) );
2253 2244
2254 - return $this->to_call_tc_condition( 'server_pass', array( $url, 'true' ) );
2255 - }
2256 -
2257 - private function to_tc_condition( $form_id, $post_id, $eoi_condition ) {
2258 - $eoi_to_tc_value_map = array(
2259 - 'pageviews' => 'page_views',
2260 - 'scrolled_percent' => 'scroll_percent',
2261 - 'time_on_page' => 'time_on_page'
2262 - );
2263 -
2264 - $eoi_server_pass_conditions = array( 'include', 'exclude' );
2265 -
2266 - $parameter = $eoi_condition['parameter'];
2267 - if ( array_key_exists( $parameter, $eoi_to_tc_value_map ) ) {
2268 - return $this->to_value_tc_condition( $form_id, $eoi_to_tc_value_map[ $parameter ], $eoi_condition );
2269 - } else if ( in_array( $parameter, $eoi_server_pass_conditions ) ) {
2270 - return $this->to_server_pass_tc_condition( $post_id, $parameter, $eoi_condition );
2245 + if( empty( $lightboxes ) && empty ( $banners ) ) {
2246 + return false;
2271 2247 }
2272 2248
2273 - return null;
2274 - }
2275 -
2276 - private function to_show_every_tc_condition( $form_id, $condition ) {
2277 - if ( in_array( $condition, array( 'day', 'month', 'once', 'session' ) ) ) {
2278 - return array( $condition, $this->get_tc_token( $form_id ) );
2279 - } elseif ( $condition === 'always' ) {
2280 - return 'true';
2281 - } elseif ( $condition === 'never' ) {
2282 - return 'false';
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 + }
2283 2264 }
2265 +
2266 + foreach ( $lightboxes as $lightbox ) {
2284 2267
2285 - return $condition;
2286 - }
2287 -
2288 - private function get_tc_conditions( $form_id, $post_id, $conditions ) {
2289 - $tc_conditions = array();
2290 - $sequence_conditions = array();
2291 -
2292 - if ( ! empty( $conditions['show_every'] ) ) {
2293 - $condition = $this->to_show_every_tc_condition( $form_id, $conditions['show_every'] );
2294 -
2295 - if ( $condition === 'false' ) {
2296 - return array( 'false' );
2297 - } else {
2298 - $sequence_conditions[] = $condition;
2268 + // Get conditions
2269 + $lightbox->fca_eoi = get_post_meta( $lightbox->ID , 'fca_eoi', true );
2270 + $publish_lightbox_mode = K::get_var( 'publish_lightbox_mode', $lightbox->fca_eoi, array() );
2271 +
2272 + $lightbox_conditions = K::get_var( 'publish_lightbox', $lightbox->fca_eoi, array() );
2273 +
2274 + // If on a free distribution, force traditional popup mode
2275 + if ( $this->settings['distribution'] === 'free' ) {
2276 + $publish_lightbox_mode = 'traditional_popup';
2299 2277 }
2278 +
2279 + if ( 'two_step_optin' === $publish_lightbox_mode ) {
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 + );
2287 + }
2300 2288 }
2301 -
2302 - if ( ! empty( $conditions['conditions'] ) ) {
2303 - foreach ( $conditions['conditions'] as $condition ) {
2304 - if ( $condition['parameter'] === 'exit_intervention' ) {
2305 - $sequence_conditions[] = 'exit';
2306 - continue;
2307 - }
2308 -
2309 - $tc_condition = $this->to_tc_condition( $form_id, $post_id, $condition );
2310 - if ( ! empty( $tc_condition ) ) {
2311 - $tc_conditions[] = $tc_condition;
2312 - }
2313 - }
2289 +
2290 + $two_step_popups = array_intersect( $two_step_popups, $this->two_step_ids_on_page );
2291 +
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 );
2314 2314 }
2315 2315
2316 - $has_conditions = ! empty ( $tc_conditions );
2317 - if ( $has_conditions ) {
2318 - $tc_conditions = array( 'and' => $tc_conditions );
2316 + }
2317 +
2318 + public function test_server_conditions( $conditions ) {
2319 +
2320 + //CHECK FOR LIVE
2321 + if ( ! K::get_var( 'live', $conditions, true ) ) {
2322 + return false;
2319 2323 }
2320 -
2321 - if ( $sequence_conditions ) {
2322 - if ( $has_conditions ) {
2323 - $tc_conditions = array( 'sequence' => array( $tc_conditions ) );
2324 - } else {
2325 - $tc_conditions = array( 'sequence' => array() );
2324 +
2325 + //CHECK MOBILE
2326 + $mobile_detect = new Mobile_Detect;
2327 + $is_mobile = $mobile_detect->isMobile();
2328 +
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'];
2326 2350 }
2327 - foreach ( $sequence_conditions as $condition ) {
2328 - $tc_conditions['sequence'][] = $condition;
2329 - }
2330 2351 }
2331 -
2332 - return $tc_conditions;
2333 - }
2334 -
2335 - private function echo_tc_conditions_for_form( $form_id, $post_id ) {
2336 - $fca_eoi = get_post_meta( $form_id , 'fca_eoi', true );
2337 - $publish_lightbox = K::get_var( 'publish_lightbox', $fca_eoi, array() );
2338 -
2339 - header( 'Content-Type: application/json' );
2340 - exit( json_encode( $this->get_tc_conditions( $form_id, $post_id, $publish_lightbox ) ) );
2341 - }
2342 -
2343 - private function echo_tc_condition_pass( $post_id, $type, $values ) {
2352 +
2344 2353 $post_cond = array( '*' );
2345 -
2354 +
2346 2355 if ( is_front_page() ) {
2347 2356 $post_cond[] = '~';
2348 2357 }
2349 -
2358 +
2350 2359 if ( $post_id ) {
2351 2360 $post_type = get_post_type( $post_id );
2352 -
2353 2361 $post_cond[] = $post_type;
2354 2362 $post_cond[] = '#' . $post_id;
2355 -
2356 2363 $taxonomies = get_taxonomies( '', 'names' );
2357 2364 $post_taxonomies = wp_get_object_terms( $post_id, $taxonomies );
2358 -
2359 2365 foreach ( $post_taxonomies as $t ) {
2360 2366 $post_cond[] = $post_type . ':' . $t->term_id;
2361 2367 }
2362 2368 } else {
2363 2369 //FIX FOR NOT DISPLAYING ON BLOG PAGE
2364 -
2365 2370 if ( is_home() ) {
2366 2371 $post_cond[] = '#' . get_option('page_for_posts');
2367 2372 }
2368 2373
2369 2374 }
2370 -
2371 - $intersect = array_intersect( $values, $post_cond );
2372 -
2373 - if ( $type === 'include' ) {
2374 - echo $intersect ? 'true' : 'false';
2375 - } else if ( $type === 'exclude' ) {
2376 - echo $intersect ? 'false' : 'true';
2377 - }
2378 -
2379 - exit;
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 +
2380 2381 }
2381 2382
2382 - public function parse_tc_condition_request() {
2383 - $post_id = empty( $_REQUEST['fca_eoi_tc_condition_post_id'] ) ? 0 : (int) $_REQUEST['fca_eoi_tc_condition_post_id'];
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 );
2384 2385
2385 - if ( ! empty( $_REQUEST['fca_eoi_tc_conditions_for'] ) ) {
2386 - $form_id = (int) $_REQUEST['fca_eoi_tc_conditions_for'];
2387 - $this->echo_tc_conditions_for_form( $form_id, $post_id );
2386 + foreach ( $lightbox_ids as $id ) {
2387 + $this->prepare_lightbox_html( $id );
2388 2388 }
2389 -
2390 - if ( ! empty( $_REQUEST['fca_eoi_tc_condition_pass'] ) ) {
2391 - $this->echo_tc_condition_pass(
2392 - $post_id,
2393 - $_REQUEST['fca_eoi_tc_condition_pass'],
2394 - explode( ',', $_REQUEST['fca_eoi_tc_condition_value'] )
2395 - );
2396 - }
2397 2389 }
2390 +
2391 + private function display_banners( $banners ) {
2392 +
2393 + $target_data = array();
2398 2394
2399 - private function get_cookie_configuration() {
2400 - $cookie_configuration = array();
2395 + forEach ( $banners as $p ) {
2396 + $id = $p['id'];
2397 + $target_data[$id] = empty( $p['conditions'] ) ? array() : $p['conditions'];
2401 2398
2402 - if ( defined( 'COOKIEPATH' ) ) {
2403 - $path = COOKIEPATH;
2404 - if ( ! empty( $path ) ) {
2405 - $cookie_configuration['path'] = $path;
2406 - }
2399 + echo "<div id='fca_eoi_banner_$id' style='display:none;'>";
2400 + echo do_shortcode( "[easy-opt-in id=$id]" );
2401 + echo '</div>';
2407 2402 }
2408 2403
2409 - if ( defined( 'COOKIE_DOMAIN' ) ) {
2410 - $domain = COOKIE_DOMAIN;
2411 - if ( ! empty( $domain ) ) {
2412 - $cookie_configuration['domain'] = $domain;
2413 - }
2414 - }
2415 -
2416 - return $cookie_configuration;
2417 - }
2418 -
2419 - public function scan_for_shortcodes( $content ) {
2420 - if ( preg_match_all( '/data-optin-cat\s*=\s*["\']?\s*(\d+)/', $content, $matches ) ) {
2421 - $this->two_step_ids_on_page = array_map( 'intval', $matches[1] );
2422 - }
2423 -
2424 - return $content;
2425 - }
2426 -
2427 - public function show_lightbox() {
2404 + wp_enqueue_script( 'fca_eoi_targeting_js', FCA_EOI_PLUGIN_URL.'/assets/targeting.min.js', array( 'jquery' ), FCA_EOI_VER, true );
2428 2405
2429 - // Do not show lightbox on mobile if this is the free distribution
2430 - if ( $this->settings[ 'distribution' ] === 'free' ) {
2431 - $mobile_detect = new Mobile_Detect;
2432 - if ( $mobile_detect->isMobile() ) {
2433 - return;
2434 - }
2435 - }
2406 + $targetData = array (
2407 + 'ajax_url' => admin_url( 'admin-ajax.php' ),
2408 + 'nonce' => wp_create_nonce( 'fca_eoi_activity' ),
2409 + 'banners' => $target_data,
2410 + );
2436 2411
2437 - // Get lightboxes
2438 - $lightboxes = get_posts( array(
2439 - 'post_type' => 'easy-opt-ins',
2440 - 'posts_per_page' => -1,
2441 - 'orderby' => 'ID',
2442 - 'meta_key' => 'fca_eoi_layout',
2443 - 'meta_value' => 'lightbox_',
2444 - 'meta_compare' => 'like',
2445 - ) );
2446 -
2447 - // Exit function if no lightbox found
2448 - if( ! $lightboxes ) {
2449 - return;
2450 - }
2451 -
2452 - $two_step_ids = array();
2453 - $traditional_ids = array();
2454 -
2455 - foreach ( $lightboxes as $lightbox ) {
2456 -
2457 - // Get conditions
2458 - $lightbox->fca_eoi = get_post_meta( $lightbox->ID , 'fca_eoi', true );
2459 - $publish_lightbox_mode = K::get_var( 'publish_lightbox_mode', $lightbox->fca_eoi, array() );
2460 -
2461 - // If on a free distribution, force traditional popup mode
2462 - if ( 'free' === $this->settings['distribution'] ) {
2463 - $publish_lightbox_mode = 'traditional_popup';
2464 - }
2465 -
2466 - if ( 'two_step_optin' === $publish_lightbox_mode ) {
2467 - $two_step_ids[] = $lightbox->ID;
2468 - } else {
2469 - $traditional_ids[] = $lightbox->ID;
2470 - }
2471 - }
2412 + wp_localize_script( 'fca_eoi_targeting_js', 'fcaEoiBannerTargetingData', $targetData );
2472 2413
2473 - $this->display_traditional_popups($traditional_ids, $this->display_two_step_popups($two_step_ids));
2414 + return true;
2474 2415 }
2475 2416
2476 - private function display_two_step_popups($lightbox_ids) {
2477 - $lightbox_ids = array_intersect( $lightbox_ids, $this->two_step_ids_on_page );
2417 + private function display_traditional_popups( $popups ) {
2418 +
2419 + $target_data = array();
2478 2420
2479 - if ( empty( $lightbox_ids ) ) {
2480 - return false;
2421 + forEach ( $popups as $p ) {
2422 + $this->prepare_lightbox_html( $p['id'] );
2423 + $target_data[$p['id']] = empty( $p['conditions'] ) ? array() : $p['conditions'];
2481 2424 }
2482 - do_action( 'fca_eoi_display_lightbox' );
2425 +
2426 + wp_enqueue_script( 'fca_eoi_targeting_js', FCA_EOI_PLUGIN_URL.'/assets/targeting.min.js', array( 'jquery' ), FCA_EOI_VER, true );
2483 2427
2484 - foreach ( $lightbox_ids as $lightbox_id ) {
2485 - $this->prepare_lightbox( $lightbox_id );
2486 - }
2487 -
2488 - ?>
2489 - <script>
2490 - jQuery( function() {
2491 - jQuery( document ).on( 'click', '[data-optin-cat]', function( e ) {
2492 - var lightbox_id = jQuery( this ).data( 'optin-cat' );
2493 - <?php echo EasyOptInsActivity::get_instance()->get_tracking_code( 'lightbox_id', false ) ?>
2494 - jQuery.featherlight( jQuery( '#fca_eoi_lightbox_' + lightbox_id ), <?php echo $this->get_featherlight_options() ?> );
2495 - e.preventDefault();
2496 - } );
2497 - } );
2498 - </script>
2499 - <?php
2500 -
2501 - return true;
2502 - }
2503 -
2504 - private function display_traditional_popups( $lightbox_ids, $prerequisites_loaded = false ) {
2505 - if ( empty( $lightbox_ids ) ) {
2506 - return false;
2507 - }
2428 + $targetData = array (
2429 + 'ajax_url' => admin_url( 'admin-ajax.php' ),
2430 + 'nonce' => wp_create_nonce( 'fca_eoi_activity' ),
2431 + 'popups' => $target_data,
2432 + );
2508 2433
2509 - wp_enqueue_script( 'fca_eoi_script_js', FCA_EOI_PLUGIN_URL.'/assets/script.js' );
2510 - wp_enqueue_script( 'fca_eoi_featherlight_js', FCA_EOI_PLUGIN_URL.'/assets/vendor/featherlight/release/featherlight.min.js' );
2511 - wp_enqueue_style( 'fca_eoi_featherlight_css', FCA_EOI_PLUGIN_URL.'/assets/vendor/featherlight/release/featherlight.min.css' );
2434 + wp_localize_script( 'fca_eoi_targeting_js', 'fcaEoiTargetingData', $targetData );
2512 2435
2513 - ?>
2514 - <script type="text/javascript" src="<?php echo FCA_EOI_PLUGIN_URL . '/' . $this->targeting_cat_path ?>"></script>
2515 - <script>
2516 - (function() {
2517 - if ( typeof fca_eoi === "undefined" ) {
2518 - fca_eoi = {};
2519 - }
2520 -
2521 - fca_eoi.ajax_url = <?php echo json_encode( admin_url( 'admin-ajax.php' ) ) ?>;
2522 - })();
2523 -
2524 - <?php $v = array(
2525 - 'prerequisites_loaded' => 'p',
2526 - 'load_prerequisites' => 'l',
2527 - 'head' => 'h',
2528 - 'load_script' => 'c',
2529 - 'load_style' => 'y',
2530 - 'callback' => 'k',
2531 - 'vendor_url' => 'v',
2532 - 'done' => 'n',
2533 - 'document' => 'd',
2534 - 'window.location.href' => 'w',
2535 - 'display_popup' => 's',
2536 - 'false' => '!1',
2537 - 'true' => '1',
2538 - 'evaluable' => 'e',
2539 - 'descriptors' => 'r',
2540 - 'form_id' => 'm',
2541 - 'TargetingCat_OptinCat' => 'g',
2542 - 'url' => 'u'
2543 - ); ?>
2544 -
2545 - <?php ob_start(); ?>
2546 -
2547 - jQuery( function( $ ) {
2548 - var
2549 - <?php echo $v['document'] ?> = document,
2550 - <?php echo $v['window.location.href'] ?> = window.location.href,
2551 - <?php echo $v['TargetingCat_OptinCat'] ?> = TargetingCat_OptinCat;
2552 -
2553 - <?php if ( ! $prerequisites_loaded ) { ?>
2554 -
2555 - var
2556 - <?php echo $v['prerequisites_loaded'] ?> = <?php echo $v['false'] ?>,
2557 - <?php echo $v['head'] ?> = <?php echo $v['document'] ?>.head;
2558 -
2559 - function <?php echo $v['load_script'] ?>( <?php echo $v['url'] ?>, <?php echo $v['callback'] ?> ) {
2560 - var e = <?php echo $v['document'] ?>.createElement( 'script' );
2561 -
2562 - e.type = 'text/javascript';
2563 - e.src = <?php echo $v['url'] ?>;
2564 - e.onload = <?php echo $v['callback'] ?>;
2565 -
2566 - <?php echo $v['head'] ?>.appendChild( e );
2567 - }
2568 -
2569 - function <?php echo $v['load_style'] ?>( <?php echo $v['url'] ?>, <?php echo $v['callback'] ?> ) {
2570 - var e = <?php echo $v['document'] ?>.createElement( 'link' );
2571 -
2572 - e.rel = 'stylesheet';
2573 - e.type = 'text/css';
2574 - e.href = <?php echo $v['url'] ?>;
2575 - e.onload = <?php echo $v['callback'] ?>;
2576 -
2577 - <?php echo $v['head'] ?>.appendChild( e );
2578 - }
2579 -
2580 - function <?php echo $v['load_prerequisites'] ?>( <?php echo $v['callback'] ?> ) {
2581 - if ( <?php echo $v['prerequisites_loaded'] ?> ) {
2582 - <?php echo $v['callback'] ?>();
2583 - return;
2584 - }
2585 -
2586 - var t = 4,
2587 - <?php echo $v['url'] ?> = <?php echo json_encode( FCA_EOI_PLUGIN_URL . '/assets/' ) ?>,
2588 - <?php echo $v['vendor_url'] ?> = <?php echo $v['url'] ?> + 'vendor/',
2589 - <?php echo $v['done'] ?> = function() {
2590 - if ( ! --t ) {
2591 - <?php echo $v['prerequisites_loaded'] ?> = <?php echo $v['true'] ?>;
2592 - <?php echo $v['callback'] ?>();
2593 - }
2594 - };
2595 -
2596 - <?php echo $v['load_style'] ?>( '//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.1.0/css/font-awesome.min.css', <?php echo $v['done'] ?> );
2597 -
2598 -
2599 - <?php echo $v['load_style'] ?>( <?php echo $v['url'] ?> + 'style-new.css', <?php echo $v['done'] ?> );
2600 -
2601 - <?php echo $v['load_script'] ?>( <?php echo $v['vendor_url'] ?> + 'tooltipster/jquery.tooltipster.min.js', <?php echo $v['done'] ?> );
2602 - <?php echo $v['load_style'] ?>( <?php echo $v['vendor_url'] ?> + 'tooltipster/tooltipster.min.css', <?php echo $v['done'] ?> );
2603 -
2604 -
2605 - <?php
2606 -
2607 - $loadAnim = false;
2608 - forEach ($lightbox_ids as $id) {
2609 - $animation = get_post_meta( $id, 'fca_eoi_animation', true );
2610 - if ($animation != '') {
2611 - $loadAnim = true;
2612 - break;
2613 - }
2614 - }
2615 - global $fca_eoi_animation_enabled;
2616 - if (!$fca_eoi_animation_enabled) {
2617 - $loadAnim = false;
2618 - }
2619 -
2620 - if ( $loadAnim ) {
2621 -
2622 - echo $v['load_style'] . "(" . $v['vendor_url'] . "+ 'animate/animate.css'," . $v['done'] . ');'; } ?>
2623 - }
2624 -
2625 - <?php } ?>
2626 -
2627 - function <?php echo $v['display_popup'] ?>( <?php echo $v['form_id'] ?> ) {
2628 - var t = <?php echo $prerequisites_loaded ? 1 : 2 ?>,
2629 - <?php echo $v['done'] ?> = function() {
2630 - if ( ! --t ) {
2631 - $.featherlight(
2632 - $( '#fca_eoi_lightbox_' + <?php echo $v['form_id'] ?> ),
2633 - <?php echo $this->get_featherlight_options() ?>
2634 - );
2635 - <?php echo EasyOptInsActivity::get_instance()->get_tracking_code( $v['form_id'], false ) ?>
2636 - }
2637 - };
2638 -
2639 - $.post( <?php echo $v['window.location.href'] ?>, {
2640 - fca_eoi_prepare_lightbox: <?php echo $v['form_id'] ?>
2641 - }, function( html ) {
2642 - $( 'body' ).append( html );
2643 - <?php echo $v['done'] ?>();
2644 - } );
2645 -
2646 - <?php if ( ! $prerequisites_loaded ) { ?>
2647 - <?php echo $v['load_prerequisites'] ?>( <?php echo $v['done'] ?> );
2648 - <?php } ?>
2649 - }
2650 -
2651 - <?php echo $v['TargetingCat_OptinCat'] ?>.StorageManagerSessionPermanent.get_instance().default_configuration = <?php echo json_encode( $this->get_cookie_configuration() ) ?>;
2652 -
2653 - <?php echo json_encode( $lightbox_ids ) ?>.forEach( function( <?php echo $v['form_id'] ?> ) {
2654 - $.post( <?php echo $v['window.location.href'] ?>, {
2655 - <?php if ( is_single() || is_page() ) { ?>
2656 - 'fca_eoi_tc_condition_post_id': <?php echo get_the_ID() ?>,
2657 - <?php } ?>
2658 - 'fca_eoi_tc_conditions_for': <?php echo $v['form_id'] ?>
2659 - }, function( <?php echo $v['descriptors'] ?> ) {
2660 - var <?php echo $v['evaluable'] ?> = <?php echo $v['TargetingCat_OptinCat'] ?>.ConditionManager.get_instance().parse_descriptors(
2661 - typeof <?php echo $v['descriptors'] ?> === 'string'
2662 - ? JSON.parse( <?php echo $v['descriptors'] ?> )
2663 - : <?php echo $v['descriptors'] ?>
2664 - );
2665 - if ( <?php echo $v['evaluable'] ?> ) {
2666 - <?php echo $v['evaluable'] ?>.set_pass_callback( function() {
2667 - <?php echo $v['display_popup'] ?>( <?php echo $v['form_id'] ?> );
2668 - } );
2669 - <?php echo $v['evaluable'] ?>.evaluate();
2670 - }
2671 - } );
2672 - } );
2673 -
2674 - var lightbox_ids_Count = <?php echo count ($lightbox_ids) ?>;
2675 - var currentLightBoxCount = 0;
2676 - var totalAddedLightboxes = 0;
2677 -
2678 - function waitUntilPopupsAreMade() {
2679 -
2680 - if( totalAddedLightboxes < lightbox_ids_Count ) {
2681 -
2682 - if (document.getElementsByClassName("fca_eoi_featherlight").length > currentLightBoxCount) {
2683 -
2684 - totalAddedLightboxes++;
2685 - currentLightBoxCount = document.getElementsByClassName("fca_eoi_featherlight").length;
2686 - attachDeleteButtons();
2687 - window.setTimeout(waitUntilPopupsAreMade, 200);
2688 - }else {
2689 -
2690 - currentLightBoxCount = document.getElementsByClassName("fca_eoi_featherlight").length;
2691 - window.setTimeout(waitUntilPopupsAreMade, 200);
2692 - }
2693 -
2694 - } else {
2695 -
2696 - attachDeleteButtons();
2697 - }
2698 - }
2699 - if (lightbox_ids_Count > 1) {
2700 - waitUntilPopupsAreMade();
2701 - }
2702 -
2703 - function attachDeleteButtons() {
2704 - myNodes = document.getElementsByClassName("fca_eoi_layout_popup_close");
2705 -
2706 - for (var i=0; i<myNodes.length; i++) {
2707 - myNodes[i].onclick = function(e) {
2708 - $(this).parents(".fca_eoi_featherlight").hide();
2709 - };
2710 -
2711 - }
2712 - }
2713 -
2714 -
2715 - } );
2716 -
2717 - <?php
2718 -
2719 - echo preg_replace(
2720 - array( '/\s+/', '/([-+|\(\){}&=;,:?])\s+/', '/\s+([-+|\(\){}&=?])/', '/;}/' ),
2721 - array( ' ', '$1', '$1', '}' ),
2722 - trim( ob_get_clean() )
2723 - );
2724 -
2725 - ?>
2726 - </script>
2727 - <?php
2728 -
2729 2436 return true;
2730 2437 }
2731 2438
2732 - public function request_prepare_lightbox() {
2733 - if (array_key_exists('fca_eoi_prepare_lightbox', $_POST)) {
2734 - $lightbox_id = (int) $_POST['fca_eoi_prepare_lightbox'];
2735 - if ( $lightbox_id > 0 ) {
2736 - $this->prepare_lightbox( $lightbox_id );
2737 - exit;
2738 - }
2739 - }
2740 - }
2741 -
2742 - public function prepare_lightbox( $id ) {
2439 + public function prepare_lightbox_html( $id ) {
2743 2440 $id = (int) $id;
2744 2441
2745 - global $post;
2442 + $content = do_shortcode( "[easy-opt-in id=$id]" );
2746 2443
2747 - $animation = get_post_meta( $id, 'fca_eoi_animation', true );
2748 -
2749 -
2750 - $featherlight_class = 'fca_eoi_featherlight';
2751 - $content = do_shortcode( "[easy-opt-in id=$id]" );
2752 -
2753 2444 ?>
2754 2445 <div style="display:none">
2755 - <style scoped>.<?php echo $featherlight_class ?>-content { background: transparent !important; }</style>
2756 - <div class=<?php echo "'animated $animation'" ?> id="fca_eoi_lightbox_<?php echo $id ?>"><?php echo $content ?></div>
2446 + <div id="fca_eoi_lightbox_<?php echo $id ?>"><?php echo $content ?></div>
2757 2447 </div>
2758 2448 <?php
2759 2449 }
2760 2450
2761 - private function get_featherlight_options() {
2762 -
2763 - $is_iphone = preg_match('/(?:iPhone|iPod);/i', $_SERVER['HTTP_USER_AGENT']);
2764 - $is_ios = preg_match( '/(?:iPhone|iPad|iPod).* OS ([\d])_.* Safari/', $_SERVER['HTTP_USER_AGENT'], $matches );
2765 -
2766 - if ( $is_ios ) {
2767 - $ios_specific_options = ',
2768 - beforeOpen: function() {
2769 - var viewport = jQuery( "meta[name=viewport]" );
2770 - if ( viewport.length == 0 ) {
2771 - viewport = jQuery( "<meta name=\"viewport\" content=\"\"/>" );
2772 - jQuery( "head" ).append( viewport );
2773 - }
2774 -
2775 - var viewport_content = viewport.attr( "content" );
2776 - this.fca_eoi_viewport_content = viewport_content;
2777 - viewport.attr( "content", "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" );
2778 -
2779 - this.fca_eoi_orientation_change_listener = function() {
2780 - window.scrollTo( 0, 0 );
2781 - jQuery( ".fca_eoi_form input" ).each( function() {
2782 - this.blur();
2783 - } );
2784 - };
2785 - window.addEventListener( "orientationchange", this.fca_eoi_orientation_change_listener, false );
2786 -
2787 - this.fca_eoi_touch_move_listener = function( event ) {
2788 - event.preventDefault();
2789 - };
2790 - window.addEventListener( "touchmove", this.fca_eoi_touch_move_listener, false );
2791 - },
2792 - afterOpen: function() {
2793 - jQuery( "body" ).append( "<div class=\"fca_eoi_featherlight_pad\" style=\"display: block; height: 1000px;\"/>" );
2794 - },
2795 - beforeClose: function() {
2796 - jQuery( ".fca_eoi_featherlight_pad" ).remove();
2797 - },
2798 - afterClose: function() {
2799 - if ( this.hasOwnProperty( "fca_eoi_viewport_content" ) ) {
2800 - jQuery( "meta[name=viewport]" ).attr( "content", this.fca_eoi_viewport_content );
2801 - }
2802 -
2803 - if ( this.hasOwnProperty( "fca_eoi_orientation_change_listener" ) ) {
2804 - window.removeEventListener( "orientationchange", this.fca_eoi_orientation_change_listener );
2805 - }
2806 -
2807 - if ( this.hasOwnProperty( "fca_eoi_touch_move_listener" ) ) {
2808 - window.removeEventListener( "touchmove", this.fca_eoi_touch_move_listener );
2809 - }
2810 - }';
2811 - } else {
2812 - $ios_specific_options = '';
2813 - }
2814 -
2815 - return '{
2816 - namespace: "fca_eoi_featherlight",
2817 - otherClose: ".fca_eoi_layout_popup_close"' . $ios_specific_options . ',
2818 - variant: ' . ( $is_iphone ? '"fca_eoi_device_iphone"' : 'null' ) . '
2819 - }';
2820 - }
2821 -}
2822 -
2823 -function k_selector( $name, $selected_options = array(), $return = false ) {
2824 -
2825 - global $post;
2826 - // Dirty fix to restore the global $post
2827 - $post_bak = $post;
2828 -
2829 - // Get all post types except media
2830 - $post_types = get_post_types( array( 'public' => true ) );
2831 - unset( $post_types[ 'attachment' ] );
2832 -
2833 - $ret = ob_start();
2834 -
2835 - // Start ouput
2836 - echo '<select data-placeholder="' . __( 'Type to search for posts, categories or pages.' ) . '" name = "' . $name . '[]" class="select2" multiple="multiple" style="width: 27em;">';
2837 -
2838 - // Front page
2839 - K::wrap( __( 'Front page' )
2840 - , array(
2841 - 'value' => '~',
2842 - 'selected' => in_array( '~', $selected_options ),
2843 - )
2844 - , array( 'in' => 'option' )
2845 - );
2846 -
2847 - // All posts
2848 - // K::wrap( __( 'All' )
2849 - // , array(
2850 - // 'value' => '*',
2851 - // 'selected' => in_array( '*', $selected_options ),
2852 - // )
2853 - // , array( 'in' => 'option' )
2854 - // );
2855 -
2856 - foreach ($post_types as $post_type => $post_type_args ) {
2857 -
2858 - $post_type_obj = get_post_type_object( $post_type );
2859 - $post_type_name = $post_type_obj->labels->singular_name;
2860 -
2861 - $options = array();
2862 -
2863 - // Add taxonomy/terms options
2864 - $taxonomies = get_object_taxonomies( $post_type );
2865 - foreach ( $taxonomies as $taxonomy ) {
2866 - $taxonomy_obj = get_taxonomy( $taxonomy );
2867 - $taxonomy_name = $taxonomy_obj->labels->singular_name;
2868 - $terms = get_categories("taxonomy=$taxonomy&type=$post_type");
2869 - foreach ($terms as $term) {
2870 - $options[ 'taxonomies' ][ "$post_type:$term->term_id" ] =
2871 - $post_type_name
2872 - . " › $taxonomy_name"
2873 - . " › $term->name"
2874 - ;
2875 - }
2876 - }
2877 -
2878 - // Add posts options
2879 - $the_query = new WP_Query( "post_type=$post_type&posts_per_page=-1" );
2880 - if ( $the_query->have_posts() ) {
2881 -
2882 - while ( $the_query->have_posts() ) {
2883 - $the_query->the_post();
2884 - $options[ 'posts' ][ '#' . get_the_ID() ] = $post_type_name
2885 - . ' ' . __( '›' ) . ' '
2886 - . '#' . get_the_ID() . ' &ndash; '
2887 - . ( get_the_title() ? get_the_title() : __('[Untitled]') )
2888 - ;
2889 - }
2890 - }
2891 -
2892 - // Dirty fix to restore the global $post
2893 - $post = $post_bak;
2894 -
2895 - // Posts > All
2896 - echo '<optgroup label="' . $post_type_name . '">';
2897 - printf(
2898 - '<option value="%s" %s >%s</option>'
2899 - , $post_type
2900 - , ( in_array( $post_type, $selected_options ) ? 'selected' : '' )
2901 - , $post_type_name . ' ' . ( '›' ) . ' ' . __( 'All' )
2902 - );
2903 - echo '</optgroup>';
2904 -
2905 - // Posts > Taoxonomies
2906 - if ( ! empty( $options[ 'taxonomies' ] ) ) {
2907 - printf(
2908 - '<optgroup label="%s">'
2909 - , $post_type_name . ' ' . __( '›' ) . ' ' . __( 'Taxonomies' )
2910 - );
2911 - foreach ( $options[ 'taxonomies' ] as $k => $v ) {
2912 - $selected = ( in_array( $k, $selected_options ) ) ? 'selected="selected"' : '';
2913 - printf( '<option value="%s" %s >%s</option>', $k, $selected, $v );
2914 - }
2915 - echo '</optgroup>';
2916 - }
2917 -
2918 - // Posts > content
2919 - if ( ! empty( $options[ 'posts' ] ) ) {
2920 - printf( '<optgroup label="%s">'
2921 - , $post_type_name . ' ' . __( '›' ) . ' ' . __( 'Content' )
2922 - );
2923 - foreach ( $options[ 'posts' ] as $k => $v ) {
2924 - $selected = ( in_array( $k, $selected_options ) ) ? 'selected="selected"' : '';
2925 - printf( '<option value="%s" %s >%s</option>'
2926 - , $k
2927 - , $selected
2928 - , $v
2929 - );
2930 - }
2931 - echo '</optgroup>';
2932 - }
2933 - }
2934 - echo '</select>';
2935 -
2936 - $ret = ob_get_clean();
2937 -
2938 - if ( $return ) {
2939 - return $ret;
2940 - } else {
2941 - echo $ret;
2942 - }
2943 -}
2944 -
2945 -function fca_eoi_comp( $a, $b, $op, $negate = false ) {
2946 - switch ( $op ) {
2947 - case 'eq': return $negate ? ( ! ( $a == $b ) ) : ( $a == $b );
2948 - case 'gt': return $negate ? ( ! ( $a > $b ) ) : ( $a > $b );
2949 - case 'gte': return $negate ? ( ! ( $a >= $b ) ) : ( $a >= $b );
2950 - case 'lt': return $negate ? ( ! ( $a < $b ) ) : ( $a < $b );
2951 - case 'lte': return $negate ? ( ! ( $a <= $b ) ) : ( $a <= $b );
2952 - }
2953 2451 }