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