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