D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
oems
/
wp-content
/
plugins
/
slide-anything
/
php
/
Filename :
slide-anything-admin.php
back
Copy
<?php /** * ##################################################################### * ### SLIDE ANYTHING PLUGIN - PHP FUNCTIONS FOR WordPress DASHBOARD ### * ##################################################################### * * @package WordPress_Slide_Anything * @author Simon Edge * @copyright EdgeWebPages * @license GPLv2 or later */ /** * ##### PLUGIN REGISTRATION HOOK - RUN WHEN THE PLUGIN IS ACTIVATED ##### */ function cpt_slider_plugin_activation() { // INSERT A 'SAMPLE SLIDER' CUSTOM POST INTO THE DATABASE. $sample_post_title = 'Sample Slider'; // check if the 'sample slider' already exists (plugin has been activated before). $cpt_post = get_page_by_title( $sample_post_title, 'OBJECT', 'sa_slider' ); if ( is_null( $cpt_post ) ) { // create the post object. $sample_post = array( 'post_title' => $sample_post_title, 'post_content' => '', 'post_status' => 'publish', 'post_type' => 'sa_slider', ); // insert the post into the database. $cpt_id = wp_insert_post( $sample_post ); // insert meta data for the 'sample slider' slides. for ( $i = 1; $i <= 8; $i++ ) { if ( 1 === $i ) { $color = '#f4cccc'; $image = 'sample_logo1.png'; } elseif ( 2 === $i ) { $color = '#d9ead3'; $image = 'sample_logo2.png'; } elseif ( 3 === $i ) { $color = '#fce5cd'; $image = 'sample_logo3.png'; } elseif ( 4 === $i ) { $color = '#d0e0e3'; $image = 'sample_logo4.png'; } elseif ( 5 === $i ) { $color = '#fff2cc'; $image = 'sample_logo5.png'; } elseif ( 6 === $i ) { $color = '#cfe2f3'; $image = 'sample_logo6.png'; } elseif ( 7 === $i ) { $color = '#d9d2e9'; $image = 'sample_logo7.png'; } elseif ( 8 === $i ) { $color = '#ead1dc'; $image = 'sample_logo8.png'; } $content = "<div style='text-align: center; padding-bottom: 10px;'>\n"; $content .= "<div><img src='" . plugins_url() . '/slide-anything/images/' . $image . "' alt='Logo " . $i . "' /></div>\n"; $content .= "<h3>Company Name</h3>\n"; $content .= "<p>Lorem ipsum dolor sit amet, cu usu cibo vituperata, id ius probo maiestatis inciderint, sit eu vide volutpat.</p>\n"; $content .= "</div>\n"; update_post_meta( $cpt_id, 'sa_slide' . $i . '_content', $content ); $image_data = '~left top~contain~no-repeat~' . $color; update_post_meta( $cpt_id, 'sa_slide' . $i . '_image_data', $image_data ); update_post_meta( $cpt_id, 'sa_slide' . $i . '_link_url', '' ); update_post_meta( $cpt_id, 'sa_slide' . $i . '_link_target', '_self' ); update_post_meta( $cpt_id, 'sa_slide' . $i . '_popup_type', 'NONE' ); update_post_meta( $cpt_id, 'sa_slide' . $i . '_popup_imageid', '' ); update_post_meta( $cpt_id, 'sa_slide' . $i . '_popup_imagetitle', '' ); update_post_meta( $cpt_id, 'sa_slide' . $i . '_popup_video_id', '' ); update_post_meta( $cpt_id, 'sa_slide' . $i . '_popup_video_type', '' ); update_post_meta( $cpt_id, 'sa_slide' . $i . '_popup_background', 'no' ); update_post_meta( $cpt_id, 'sa_slide' . $i . '_popup_html', '' ); update_post_meta( $cpt_id, 'sa_slide' . $i . '_popup_shortcode', '0' ); update_post_meta( $cpt_id, 'sa_slide' . $i . '_popup_bgcol', '#ffffff' ); update_post_meta( $cpt_id, 'sa_slide' . $i . '_popup_width', '600' ); } // insert meta data for the 'sample slider' configuration. update_post_meta( $cpt_id, 'sa_disable_visual_editor', '0' ); update_post_meta( $cpt_id, 'sa_num_slides', 8 ); update_post_meta( $cpt_id, 'sa_slide_duration', 4 ); update_post_meta( $cpt_id, 'sa_slide_transition', 0.3 ); update_post_meta( $cpt_id, 'sa_slide_by', 1 ); update_post_meta( $cpt_id, 'sa_loop_slider', '1' ); update_post_meta( $cpt_id, 'sa_stop_hover', '1' ); update_post_meta( $cpt_id, 'sa_nav_arrows', '1' ); update_post_meta( $cpt_id, 'sa_pagination', '1' ); update_post_meta( $cpt_id, 'sa_shortcodes', '0' ); update_post_meta( $cpt_id, 'sa_random_order', '1' ); update_post_meta( $cpt_id, 'sa_reverse_order', '0' ); update_post_meta( $cpt_id, 'sa_mouse_drag', '0' ); update_post_meta( $cpt_id, 'sa_touch_drag', '1' ); update_post_meta( $cpt_id, 'sa_mousewheel', '0' ); update_post_meta( $cpt_id, 'sa_click_advance', '0' ); update_post_meta( $cpt_id, 'sa_auto_height', '0' ); update_post_meta( $cpt_id, 'sa_vert_center', '0' ); update_post_meta( $cpt_id, 'sa_items_width1', 1 ); update_post_meta( $cpt_id, 'sa_items_width2', 2 ); update_post_meta( $cpt_id, 'sa_items_width3', 3 ); update_post_meta( $cpt_id, 'sa_items_width4', 4 ); update_post_meta( $cpt_id, 'sa_items_width5', 4 ); update_post_meta( $cpt_id, 'sa_items_width6', 4 ); update_post_meta( $cpt_id, 'sa_transition', 'fade' ); update_post_meta( $cpt_id, 'sa_hero_slider', '0' ); update_post_meta( $cpt_id, 'sa_showcase_slider', '0' ); update_post_meta( $cpt_id, 'sa_showcase_width', '120' ); update_post_meta( $cpt_id, 'sa_showcase_tablet', '1' ); update_post_meta( $cpt_id, 'sa_showcase_width_tab', '130' ); update_post_meta( $cpt_id, 'sa_showcase_mobile', '0' ); update_post_meta( $cpt_id, 'sa_showcase_width_mob', '140' ); update_post_meta( $cpt_id, 'sa_css_id', 'sample_slider' ); update_post_meta( $cpt_id, 'sa_background_color', '#fafafa' ); update_post_meta( $cpt_id, 'sa_border_width', 1 ); update_post_meta( $cpt_id, 'sa_border_color', '#f0f0f0' ); update_post_meta( $cpt_id, 'sa_border_radius', 5 ); update_post_meta( $cpt_id, 'sa_wrapper_padd_top', 8 ); update_post_meta( $cpt_id, 'sa_wrapper_padd_right', 8 ); update_post_meta( $cpt_id, 'sa_wrapper_padd_bottom', 8 ); update_post_meta( $cpt_id, 'sa_wrapper_padd_left', 8 ); update_post_meta( $cpt_id, 'sa_slide_min_height_perc', 50 ); update_post_meta( $cpt_id, 'sa_slide_padding_tb', 5 ); update_post_meta( $cpt_id, 'sa_slide_padding_lr', 5 ); update_post_meta( $cpt_id, 'sa_slide_margin_lr', 0 ); update_post_meta( $cpt_id, 'sa_autohide_arrows', '1' ); update_post_meta( $cpt_id, 'sa_dot_per_slide', '0' ); update_post_meta( $cpt_id, 'sa_slide_icons_location', 'Center Center' ); update_post_meta( $cpt_id, 'sa_slide_icons_visible', '0' ); update_post_meta( $cpt_id, 'sa_slide_icons_color', 'white' ); update_post_meta( $cpt_id, 'sa_thumbs_active', '0' ); update_post_meta( $cpt_id, 'sa_thumbs_location', 'Inside Bottom' ); update_post_meta( $cpt_id, 'sa_thumbs_image_size', 'thumbnail' ); update_post_meta( $cpt_id, 'sa_thumbs_padding', 3 ); update_post_meta( $cpt_id, 'sa_thumbs_width', 150 ); update_post_meta( $cpt_id, 'sa_thumbs_height', 85 ); update_post_meta( $cpt_id, 'sa_thumbs_opacity', 50 ); update_post_meta( $cpt_id, 'sa_thumbs_border_width', 0 ); update_post_meta( $cpt_id, 'sa_thumbs_border_color', '#ffffff' ); update_post_meta( $cpt_id, 'sa_thumbs_resp_tablet', 75 ); update_post_meta( $cpt_id, 'sa_thumbs_resp_mobile', 50 ); } } /** * ##### ADD CHECKBOX OPTION UNDER "Settings -> Writing" CALLED "Disable TinyMCE Button" ##### */ function cpt_slider_disable_tinymce_button_setting() { // REGISTER WordPress SETTING. register_setting( 'writing', 'sa-disable-tinymce-button', 'cpt_slider_writing_settings_sanitize' ); // CREATE SETTINGS SECTION (within "Settings->Writing"). add_settings_section( 'sa-writing-settings-section', 'Slide Anything Settings', 'cpt_slider_writing_settings_section_description', 'writing' ); // CREATE SETTINGS INPUT FIELD. add_settings_field( 'sa-settings-field1', 'Disable TinyMCE Button', 'cpt_slider_writing_settings_field1_callback', 'writing', 'sa-writing-settings-section' ); } /** * ##### SANATIZE SETTINGS CALLBACK FUNCTION ##### * * @param string $input Disable TinyMCE Button checkbox. */ function cpt_slider_writing_settings_sanitize( $input ) { return isset( $input ) ? true : false; } /** * ##### SETTING SECTION DESCRIPTION ##### */ function cpt_slider_writing_settings_section_description() { echo esc_html( "Disable the 'Slide Anything Sliders' button within the toolbar of the WordPress Classic Editor when editing pages and posts." ); } /** * ##### SETTINGS INPUT FIELD CALLBACK ##### */ function cpt_slider_writing_settings_field1_callback() { ?> <label for="sa-disable-tinymce-input"> <input id="sa-disable-tinymce-input" type="checkbox" value="1" name="sa-disable-tinymce-button" <?php checked( get_option( 'sa-disable-tinymce-button', false ) ); ?>> </label> <?php } /** * ##### ACTION HOOK - REGISTER SCRIPTS (JS AND CSS) FOR WordPress DASHBOARD ONLY ##### */ function cpt_slider_register_admin_scripts() { $screen = get_current_screen(); $plugin_path = dirname( __FILE__ ) . '/../slide-anything.php'; $plugin_data = get_plugin_data( $plugin_path, false, false ); $plugin_ver = $plugin_data['Version']; if ( 'sa_slider' === $screen->post_type ) { // ONLY LOAD SCRIPTS (JS & CSS) WITHIN 'Slide Anything' SCREENS IN WordPress DASHBOARD. // enqueues all scripts, styles & settings required in order to use the WordPress Media JS APIs. wp_enqueue_media(); // load 'WordPress jquery-ui' scripts. wp_enqueue_script( 'jquery-ui-core' ); wp_enqueue_script( 'jquery-ui-accordion' ); wp_enqueue_script( 'jquery-ui-tabs' ); wp_enqueue_script( 'jquery-ui-slider' ); wp_enqueue_script( 'jquery-ui-sortable' ); wp_enqueue_script( 'jquery-ui-draggable' ); wp_enqueue_script( 'jquery-ui-droppable' ); wp_enqueue_script( 'jquery-ui-resize' ); wp_enqueue_script( 'jquery-ui-dialog' ); wp_enqueue_script( 'jquery-ui-button' ); wp_enqueue_script( 'jquery-ui-tooltip' ); wp_enqueue_script( 'jquery-ui-spinner' ); // load 'spectrum colorpicker' script and css. wp_register_script( 'spectrum_js', SA_PLUGIN_PATH . 'spectrum/spectrum.js', array( 'jquery' ), '1.8.0', true ); wp_enqueue_script( 'spectrum_js' ); wp_register_style( 'spectrum_css', SA_PLUGIN_PATH . 'spectrum/spectrum.css', array(), '1.8.0' ); wp_enqueue_style( 'spectrum_css' ); // load 'jquery-ui' css. wp_register_style( 'admin_ui_css', SA_PLUGIN_PATH . 'css/admin-user-interface.min.css', array(), '1.11.4' ); wp_enqueue_style( 'admin_ui_css' ); // load 'slide-anything' custom javasript and css for WordPress admin. wp_register_script( 'sa-slider-admin-script', SA_PLUGIN_PATH . 'js/slide-anything-admin.js', array( 'jquery' ), $plugin_ver, true ); wp_enqueue_script( 'sa-slider-admin-script' ); wp_register_style( 'sa-slider-admin-css', SA_PLUGIN_PATH . 'css/slide-anything-admin.css', array(), $plugin_ver ); wp_enqueue_style( 'sa-slider-admin-css' ); } if ( 'settings_page_sa-settings-page' === $screen->id ) { // SLIDE ANYTHING SETTINGS PAGE - load custom css script. wp_register_style( 'sa-slider-admin-css', SA_PLUGIN_PATH . 'css/slide-anything-admin.css', array(), $plugin_ver ); wp_enqueue_style( 'sa-slider-admin-css' ); } // style for TINYMCE editor 'Slide Anything sliders' button. wp_register_style( 'tinymce-css', SA_PLUGIN_PATH . 'css/tinymce_style.css', array(), $plugin_ver ); wp_enqueue_style( 'tinymce-css' ); } /** * ##### ACTION HOOK - REGISTER THE 'Slide Anything' CUSTOM POST TYPE ##### */ function cpt_slider_register() { $labels = array( 'name' => _x( 'SA Sliders', 'post type general name', 'sa_slider_textdomain' ), 'singular_name' => _x( 'Slider', 'post type singular name', 'sa_slider_textdomain' ), 'menu_name' => __( 'SA Sliders', 'sa_slider_textdomain' ), 'add_new' => __( 'Add New Slider', 'sa_slider_textdomain' ), 'add_new_item' => __( 'Add New Slider', 'sa_slider_textdomain' ), 'edit_item' => __( 'Edit Slider', 'sa_slider_textdomain' ), 'new_item' => __( 'New Slider', 'sa_slider_textdomain' ), 'view_item' => __( 'View Slider', 'sa_slider_textdomain' ), 'not_found' => __( 'No sliders found', 'sa_slider_textdomain' ), 'not_found_in_trash' => __( 'No sliders found in Trash', 'sa_slider_textdomain' ), ); $args = array( 'labels' => $labels, 'description' => __( 'Slide Anything carousel/slider', 'sa_slider_textdomain' ), 'public' => false, 'exclude_from_search' => true, 'publicly_queryable' => false, 'show_ui' => true, 'show_in_nav_menus' => false, 'show_in_menu' => true, 'menu_position' => 10, 'menu_icon' => 'dashicons-images-alt2', 'hierarchical' => false, 'supports' => array( 'title' ), 'has_archive' => false, 'query_var' => false, 'can_export' => true, 'rewrite' => true, 'capability_type' => 'post', ); register_post_type( 'sa_slider', $args ); } /** * ##### WP DASHBOARD - SLIDER LIST PAGE ##### * ACTION HOOK - ADD/REMOVE (HOVER-OVER) ROW ACTIONS WHEN THIS CUSTOM POST TYPE IS LISTED IN DASHBOARD * * @param array $actions Row Actions. * @param array $post Post Type. */ function cpt_slider_row_actions( $actions, $post ) { if ( 'sa_slider' === $post->post_type ) { // REMOVE 'Quick Edit' ROW ACTION. unset( $actions['inline hide-if-no-js'] ); } return $actions; } /** * ##### FILTER TO ADD/REMOVE COLUMNS DISPLAYED FOR THIS CUSTOM POST TYPE IN DASHBOARD ##### * * @param array $columns Post List Columns. */ function cpt_slider_modify_columns( $columns ) { // new columns to be added. $new_columns = array( 'slides' => 'Slides', 'shortcode' => 'Shortcode', 'css-id' => 'CSS ID', ); $columns = array_slice( $columns, 0, 2, true ) + $new_columns + array_slice( $columns, 2, null, true ); return $columns; } /** * ##### DEFINE OUTPUT FOR EACH CUSTOM COLUMN DISPLAYED FOR THIS POST TYPE IN THE DASHBOARD ##### * * @param array $column Post List Column. */ function cpt_slider_custom_column_content( $column ) { // get post object for this row. global $post; // output for the 'Slides' column. if ( 'slides' === $column ) { $num_slides = get_post_meta( $post->ID, 'sa_num_slides', true ); if ( '' === $num_slides ) { $num_slides = '-'; } echo esc_html( $num_slides ); } // output for the 'Shortcode' column. if ( 'shortcode' === $column ) { $shortcode = "[slide-anything id='" . $post->ID . "']"; echo esc_html( $shortcode ); } // output for the 'CSS ID' column. if ( 'css-id' === $column ) { $css_id = get_post_meta( $post->ID, 'sa_css_id', true ); if ( '' === $css_id ) { $css_id = '-'; } else { $css_id = '#' . $css_id; } echo esc_html( $css_id ); } } /** * ##### ADD A CUSTOM BUTTON TO WordPress TINYMCE EDITOR (ON PAGES AND POSTS ONLY) ##### */ function cpt_slider_add_tinymce_button() { global $typenow; // check user permissions. if ( ! current_user_can( 'edit_posts' ) && ! current_user_can( 'edit_pages' ) ) { return; } // verify the post type - only display button on posts and pages. if ( ! in_array( $typenow, array( 'post', 'page' ), true ) ) { return; } // check if WYSIWYG is enabled. if ( 'true' === get_user_option( 'rich_editing' ) ) { add_filter( 'mce_external_plugins', 'cpt_slider_add_tinymce_plugin' ); add_filter( 'mce_buttons', 'cpt_slider_register_tinymce_button' ); } } /** * ##### FILTER HOOK: mce_external_plugins ##### * * @param array $plugin_array Plugin Array. */ function cpt_slider_add_tinymce_plugin( $plugin_array ) { $plugin_array['tinymce_button'] = SA_PLUGIN_PATH . 'js/add_tinymce_button.js'; return $plugin_array; } /** * ##### FILTER HOOK: mce_buttons ##### * * @param array $buttons TinyMCE buttons. */ function cpt_slider_register_tinymce_button( $buttons ) { array_push( $buttons, 'tinymce_button' ); return $buttons; } /** * ##### ACTION HOOK: admin_footer ##### */ function cpt_slider_get_tinymce_shortcode_array() { $screen = get_current_screen(); if ( 'envira' !== $screen->post_type ) { // ### BUG FIX - CLASHING WITH ENVIRA GALLERY (VER 2.0.13) ###. // display 2 javascript arrays (in footer) containing all the slide anything post titles and post ids. // these 2 arrays are used to display the shortcode options by the TinyMCE button. echo "<script type='text/javascript'>\n"; echo "var sa_title_arr = new Array();\n"; echo "var sa_id_arr = new Array();\n"; $args = array( 'post_type' => 'sa_slider', 'post_status' => 'publish', 'posts_per_page' => -1, ); $sa_slider_query = new WP_Query( $args ); $count = 0; foreach ( $sa_slider_query->posts as $sa_post ) { $title = $sa_post->post_title; echo 'sa_title_arr[' . esc_js( $count ) . "] = '" . esc_js( $title ) . "';\n"; echo 'sa_id_arr[' . esc_js( $count ) . "] = '" . esc_js( $sa_post->ID ) . "';\n"; $count++; } echo "</script>\n"; } } /** * ##### ACTION HOOK - ADD META BOXES TO THE 'Slide Anything' CUSTOM POST TYPE ##### */ function cpt_slider_add_meta_boxes() { global $post; global $current_user; if ( ! is_object( $post ) ) { return; } $info_added = get_post_meta( $post->ID, 'sa_info_added', true ); $info_deleted = get_post_meta( $post->ID, 'sa_info_deleted', true ); $info_duplicated = get_post_meta( $post->ID, 'sa_info_duplicated', true ); $info_moved = get_post_meta( $post->ID, 'sa_info_moved', true ); if ( '1' === $info_added ) { add_meta_box( 'cpt_slide_added', __( 'Information' ), 'cpt_slide_added_content', 'sa_slider', 'normal', 'high' ); update_post_meta( $post->ID, 'sa_info_added', '0' ); } if ( '1' === $info_deleted ) { add_meta_box( 'cpt_slide_deleted', __( 'Information' ), 'cpt_slide_deleted_content', 'sa_slider', 'normal', 'high' ); update_post_meta( $post->ID, 'sa_info_deleted', '0' ); } if ( '1' === $info_duplicated ) { add_meta_box( 'cpt_slide_duplicated', __( 'Information' ), 'cpt_slide_duplicated_content', 'sa_slider', 'normal', 'high' ); update_post_meta( $post->ID, 'sa_info_duplicated', '0' ); } if ( '1' === $info_moved ) { add_meta_box( 'cpt_slide_moved', __( 'Information' ), 'cpt_slide_moved_content', 'sa_slider', 'normal', 'high' ); update_post_meta( $post->ID, 'sa_info_moved', '0' ); } add_meta_box( 'cpt_slider_settings', __( 'Slider Settings' ), 'cpt_slider_settings_content', 'sa_slider', 'normal', 'high' ); add_meta_box( 'cpt_slider_slides', __( 'Slides' ), 'cpt_slider_slides_content', 'sa_slider', 'normal', 'high' ); add_meta_box( 'cpt_slider_shortcode', __( 'Shortcode / Preview' ), 'cpt_slider_shortcode_content', 'sa_slider', 'side', 'high' ); add_meta_box( 'cpt_slider_items', __( 'Items Displayed' ), 'cpt_slider_items_content', 'sa_slider', 'side', 'default' ); add_meta_box( 'cpt_slider_style', __( 'Slider Style' ), 'cpt_slider_style_content', 'sa_slider', 'side', 'default' ); add_meta_box( 'cpt_slider_thumbs', __( 'Thumbnail Pagination' ), 'cpt_slider_thumbs_content', 'sa_slider', 'side', 'default' ); remove_meta_box( 'mymetabox_revslider_0', 'sa_slider', 'normal' ); // remove revolution slider meta box. } /** * ##### META BOX CONTENT - 'Information' (slide added) BOX ##### */ function cpt_slide_added_content() { echo "<h3 id='sa_slide_added_mess'>A new slide has been added to this slider.</h3>"; } /** * ##### META BOX CONTENT - 'Information' (slide deleted) BOX ##### */ function cpt_slide_deleted_content() { echo "<h3 id='sa_slide_deleted_mess'>A slide has been deleted from this slider.</h3>"; } /** * ##### META BOX CONTENT - 'Information' (slide duplicated) BOX ##### */ function cpt_slide_duplicated_content() { echo "<h3 id='sa_slide_duplicated_mess'>A slide has been duplicated (copied) within this slider.</h3>"; } /** * ##### META BOX CONTENT - 'Information' (slide moved) BOX ##### */ function cpt_slide_moved_content() { echo "<h3 id='sa_slide_moved_mess'>The slide order of this slider has been has changed.</h3>"; } /** * // ##### META BOX CONTENT - 'Slider Settings' BOX ##### * * @param array $post Custom Post 'sa_slider'. */ function cpt_slider_settings_content( $post ) { $num_slides = get_post_meta( $post->ID, 'sa_num_slides', true ); echo "<div id='sa_slider_settings'>\n"; // NONCE TO PREVENT CSRF SECURITY ATTACKS. wp_nonce_field( basename( __FILE__ ), 'nonce_save_slider' ); // HIDDEN FIELD - NUMBER OF SLIDES. if ( '' === $num_slides ) { // new slider is being created. echo "<input type='hidden' id='num_slides_id' name='sa_num_slides' value='3'/>\n"; } else { // existing slider. $num_slides = intval( $num_slides ); echo "<input type='hidden' id='num_slides_id' name='sa_num_slides' value='" . esc_attr( $num_slides ) . "'/>\n"; } // HIDDEN FIELD - SLIDE ADDED INDICATOR. echo "<input type='hidden' id='sa_info_added' name='sa_info_added' value='0'/>\n"; // HIDDEN FIELD - SLIDE DELETED INDICATOR. echo "<input type='hidden' id='sa_info_deleted' name='sa_info_deleted' value='0'/>\n"; // HIDDEN FIELD - SLIDE DUPLICATED INDICATOR. echo "<input type='hidden' id='sa_info_duplicated' name='sa_info_duplicated' value='0'/>\n"; // HIDDEN FIELD - SLIDE MOVED UP INDICATOR. echo "<input type='hidden' id='sa_info_moved' name='sa_info_moved' value='0'/>\n"; // HIDDEN FIELD - DUPLICATE SLIDE NUMBER. echo "<input type='hidden' id='sa_duplicate_slide' name='sa_duplicate_slide' value='0'/>\n"; // HIDDEN FIELD - MOVE SLIDE UP (SLIDE NUMBER). echo "<input type='hidden' id='sa_move_slide_up' name='sa_move_slide_up' value='0'/>\n"; // HIDDEN FIELD - PRO VERSION. echo "<input type='hidden' id='sa_pro_version' name='sa_pro_version' value='1'/>\n"; // SLIDE DURATION. $slide_duration = get_post_meta( $post->ID, 'sa_slide_duration', true ); if ( '' === $slide_duration ) { $slide_duration = 5; } echo "<div class='sa_slider_value'><span>Slide Duration:</span>"; echo "<input type='text' id='sa_slide_duration' name='sa_slide_duration' readonly value='" . esc_attr( $slide_duration ) . "'><em>seconds (0 = manual navigation)</em>"; echo "<em class='sa_tooltip' href='' title='Set to 0 to disable slider autoplay (manual slider navigation only)'></em></div>\n"; echo "<div class='jquery_ui_slider' id='jq_slider_duration'></div><hr/>\n"; // SLIDE TRANSITION. $slide_transition = get_post_meta( $post->ID, 'sa_slide_transition', true ); if ( '' === $slide_transition ) { $slide_transition = 0.2; } echo "<div class='sa_slider_value'><span>Slide Transition:</span>"; echo "<input type='text' id='sa_slide_transition' name='sa_slide_transition' readonly value='" . esc_attr( $slide_transition ) . "'><em>seconds</em>\n"; echo "<em class='sa_tooltip' href='' title='The time it takes to change from one slide to the next slide'></em></div>\n"; echo "<div class='jquery_ui_slider' id='jq_slider_transition'></div><hr/>\n"; // SLIDE BY. $slide_by = get_post_meta( $post->ID, 'sa_slide_by', true ); if ( '' === $slide_by ) { $slide_by = 1; } echo "<div class='sa_slider_value'><span>Slide By:</span>"; echo "<input type='text' id='sa_slide_by' name='sa_slide_by' readonly value='" . esc_attr( $slide_by ) . "'><em>slides (0 = slide by page)</em>"; echo "<em class='sa_tooltip' href='' title='The number of slides to slide per transition. Set to 0 to enable the Slide by Page option.'></em></div>\n"; echo "<div class='jquery_ui_slider' id='jq_slider_by'></div><hr/>\n"; echo "<div class='half_width_column'>\n"; // LOOP SLIDER. $loop_slider = get_post_meta( $post->ID, 'sa_loop_slider', true ); if ( '' === $loop_slider ) { $loop_slider = '1'; } echo "<div class='sa_setting_checkbox'><span>Loop Slider:</span>"; if ( '1' === $loop_slider ) { echo "<input type='checkbox' id='sa_loop_slider' name='sa_loop_slider' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_loop_slider' name='sa_loop_slider' value='1'/>"; } echo "<em class='sa_tooltip' href='' title='Only applies when slide duration is NOT zero (loops back to first slide after last slide is displayed)'></em>"; echo "</div>\n"; // STOP ON HOVER. $stop_hover = get_post_meta( $post->ID, 'sa_stop_hover', true ); if ( '' === $stop_hover ) { $stop_hover = '1'; } echo "<div class='sa_setting_checkbox'><span>Stop on Hover:</span>"; if ( '1' === $stop_hover ) { echo "<input type='checkbox' id='sa_stop_hover' name='sa_stop_hover' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_stop_hover' name='sa_stop_hover' value='1'/>"; } echo "<em class='sa_tooltip' href='' title='Only applies when slide duration is NOT zero (slideshow is paused when hovering over a slide)'></em>"; echo "</div>\n"; // RANDOM ORDER. $random_order = get_post_meta( $post->ID, 'sa_random_order', true ); if ( '' === $random_order ) { $random_order = '0'; } echo "<div class='sa_setting_checkbox'><span>Random Order:</span>"; if ( '1' === $random_order ) { echo "<input type='checkbox' id='sa_random_order' name='sa_random_order' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_random_order' name='sa_random_order' value='1'/>"; } echo "<em class='sa_tooltip' title='When checked slides will be randomly re-ordered whenever the slider is displayed'></em>"; echo "</div>\n"; // REVERSE ORDER. $reverse_order = get_post_meta( $post->ID, 'sa_reverse_order', true ); if ( '' === $reverse_order ) { $reverse_order = '0'; } echo "<div class='sa_setting_checkbox'><span>Reverse Order:</span>"; if ( '1' === $reverse_order ) { echo "<input type='checkbox' id='sa_reverse_order' name='sa_reverse_order' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_reverse_order' name='sa_reverse_order' value='1'/>"; } echo "<em class='sa_tooltip' title='When checked your slides will be shown in the reverse order (i.e. last slide first)'></em>"; echo "</div>\n"; // ALLOW SHORTCODES. $shortcodes = get_post_meta( $post->ID, 'sa_shortcodes', true ); if ( '' === $shortcodes ) { $shortcodes = '0'; } echo "<div class='sa_setting_checkbox'><span>Allow Shortcodes:</span>"; if ( '1' === $shortcodes ) { echo "<input type='checkbox' id='sa_shortcodes' name='sa_shortcodes' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_shortcodes' name='sa_shortcodes' value='1'/>"; } echo "<em class='sa_tooltip' href='' title='Include WordPree shorcodes within slide content. NOTE: Running shortcodes in Slide Anything may cause issues with some WordPress Page Builders'></em>\n"; echo "</div>\n"; // VERTICAL CENTER. $vert_center = get_post_meta( $post->ID, 'sa_vert_center', true ); if ( '' === $vert_center ) { $vert_center = '0'; } echo "<div class='sa_setting_checkbox'><span>Vertical Center:</span>"; if ( '1' === $vert_center ) { echo "<input type='checkbox' id='sa_vert_center' name='sa_vert_center' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_vert_center' name='sa_vert_center' value='1'/>"; } echo "<em class='sa_tooltip' title='Vertically center content within slides. Only use this setting if you have set a Min Height for your slider (which sets a minimum height for each slide).'></em>"; echo "</div>\n"; echo "</div>\n"; echo "<div class='half_width_column'>\n"; // NAVIGATE ARROWS. $nav_arrows = get_post_meta( $post->ID, 'sa_nav_arrows', true ); if ( '' === $nav_arrows ) { $nav_arrows = '1'; } echo "<div class='sa_setting_checkbox'><span>Navigate Arrows:</span>"; if ( '1' === $nav_arrows ) { echo "<input type='checkbox' id='sa_nav_arrows' name='sa_nav_arrows' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_nav_arrows' name='sa_nav_arrows' value='1'/>"; } echo "<em class='sa_tooltip' href='' title='Display the \"next slide\" amd \"previous slide\" buttons'></em>\n"; echo "</div>\n"; // SHOW PAGINATION. $pagination = get_post_meta( $post->ID, 'sa_pagination', true ); if ( '' === $pagination ) { $pagination = '1'; } echo "<div class='sa_setting_checkbox'><span>Show Pagination:</span>"; if ( '1' === $pagination ) { echo "<input type='checkbox' id='sa_pagination' name='sa_pagination' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_pagination' name='sa_pagination' value='1'/>"; } echo "<em class='sa_tooltip' href='' title='Display slider pagination below the slider'></em>\n"; echo "</div>\n"; // MOUSE DRAG. $mouse_drag = get_post_meta( $post->ID, 'sa_mouse_drag', true ); if ( '' === $mouse_drag ) { $mouse_drag = '0'; } echo "<div class='sa_setting_checkbox'><span>Mouse Drag:</span>"; if ( '1' === $mouse_drag ) { echo "<input type='checkbox' id='sa_mouse_drag' name='sa_mouse_drag' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_mouse_drag' name='sa_mouse_drag' value='1'/>"; } echo "<em class='sa_tooltip' href='' title='Allow navigation to previous/next slides by holding down left mouse button and dragging left/right. (NOTE: Enabling this option will disable vertical touch-drag scrolling on mobile devices)'></em>\n"; echo "</div>\n"; // TOUCH DRAG. $touch_drag = get_post_meta( $post->ID, 'sa_touch_drag', true ); if ( '' === $touch_drag ) { $touch_drag = '1'; } echo "<div class='sa_setting_checkbox'><span>Touch Drag:</span>"; if ( '1' === $touch_drag ) { echo "<input type='checkbox' id='sa_touch_drag' name='sa_touch_drag' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_touch_drag' name='sa_touch_drag' value='1'/>"; } echo "<em class='sa_tooltip' href='' title='Allow navigation to previous/next slides on mobile devices by touching screen and dragging left/right'></em>\n"; echo "</div>\n"; // MOUSEWHEEL NAV. $mousewheel = get_post_meta( $post->ID, 'sa_mousewheel', true ); if ( '' === $mousewheel ) { $mousewheel = '0'; } echo "<div class='sa_setting_checkbox'><span>Mousewheel Nav:</span>"; if ( '1' === $mousewheel ) { echo "<input type='checkbox' id='sa_mousewheel' name='sa_mousewheel' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_mousewheel' name='sa_mousewheel' value='1'/>"; } echo "<em class='sa_tooltip' href='' title='Allow previous/next slide navigation using the mousewheel (NOTE: does not work well with the Apple Mac touchpad scroll wheel mimic)'></em>\n"; echo "</div>\n"; // CLICK TO ADVANCE. $click_advance = get_post_meta( $post->ID, 'sa_click_advance', true ); if ( '' === $click_advance ) { $click_advance = '0'; } echo "<div class='sa_setting_checkbox'><span>Click to Advance:</span>"; if ( '1' === $click_advance ) { echo "<input type='checkbox' id='sa_click_advance' name='sa_click_advance' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_click_advance' name='sa_click_advance' value='1'/>"; } echo "<em class='sa_tooltip' href='' title='Clicking on the slider advances to the next slide. NOTE: Only works when the Mouse Drag and Touch Drag options are NOT checked.'></em>\n"; echo "</div>\n"; // AUTO HEIGHT. $auto_height = get_post_meta( $post->ID, 'sa_auto_height', true ); if ( '' === $auto_height ) { $auto_height = '0'; } echo "<div class='sa_setting_checkbox'><span>Auto Height:</span>"; if ( '1' === $auto_height ) { echo "<input type='checkbox' id='sa_auto_height' name='sa_auto_height' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_auto_height' name='sa_auto_height' value='1'/>"; } echo "<em class='sa_tooltip' title='Only works with 1 item on the screen. When checked the height of slider is automatically changed to match the height for each slide.'></em>"; echo "</div>\n"; echo "</div>\n"; echo "<div style='clear:both; float:none; width:100%; height:1px;'></div>\n"; echo "</div>\n"; } /** * ##### META BOX CONTENT - 'Slides' BOX ##### * * @param array $post Custom Post 'sa_slider'. */ function cpt_slider_slides_content( $post ) { $num_slides = get_post_meta( $post->ID, 'sa_num_slides', true ); $slider_css_id = get_post_meta( $post->ID, 'sa_css_id', true ); // DISABLE VISUAL EDITOR CHECKBOX. $disable_visual_editor = get_post_meta( $post->ID, 'sa_disable_visual_editor', true ); if ( '' === $disable_visual_editor ) { $disable_visual_editor = '0'; } echo "<div id='sa_visual_editor_checkbox'><span>Disable Visual Editor:</span>"; if ( '1' === $disable_visual_editor ) { echo "<input type='checkbox' id='sa_disable_visual_editor' name='sa_disable_visual_editor' value='1' checked/></div>\n"; } else { echo "<input type='checkbox' id='sa_disable_visual_editor' name='sa_disable_visual_editor' value='1'/></div>\n"; } // SLIDER EDITOR BOX SETTINGS. if ( '1' === $disable_visual_editor ) { $editor_args = array( 'tinymce' => false, 'wpautop' => false, 'media_buttons' => true, 'editor_class' => 'sa_slide_content', 'editor_height' => '250', ); } else { $editor_args = array( 'tinymce' => true, 'wpautop' => false, 'media_buttons' => true, 'editor_class' => 'sa_slide_content', 'editor_height' => '250', ); } if ( '' === $num_slides ) { // A NEW SLIDER IS BEING CREATED - ADD 3 INITIAL SLIDES. $num_slides = 3; $slide_data[0]['edit_id'] = 'sa_slide1_content'; $slide_data[0]['content'] = 'Slide content'; $slide_data[0]['del_id'] = 'sa_slide1_delete'; $slide_data[0]['image_data'] = 'sa_slide1_image_data'; $slide_data[0]['image_id'] = 'sa_slide1_image_id'; $slide_data[0]['thumb'] = 'slide1_thumb'; $slide_data[0]['image_del'] = 'slide1_image_del'; $slide_data[0]['image_pos'] = 'sa_slide1_image_pos'; $slide_data[0]['image_size'] = 'sa_slide1_image_size'; $slide_data[0]['image_repeat'] = 'sa_slide1_image_repeat'; $slide_data[0]['image_color'] = 'sa_slide1_image_color'; $slide_data[0]['link_url'] = 'sa_slide1_link_url'; $slide_data[0]['link_target'] = 'sa_slide1_link_target'; $slide_data[0]['slide_no'] = 1; $slide_data[1]['edit_id'] = 'sa_slide2_content'; $slide_data[1]['content'] = 'Slide content'; $slide_data[1]['del_id'] = 'sa_slide2_delete'; $slide_data[1]['image_data'] = 'sa_slide2_image_data'; $slide_data[1]['image_id'] = 'sa_slide2_image_id'; $slide_data[1]['thumb'] = 'slide2_thumb'; $slide_data[1]['image_del'] = 'slide2_image_del'; $slide_data[1]['image_pos'] = 'sa_slide2_image_pos'; $slide_data[1]['image_size'] = 'sa_slide2_image_size'; $slide_data[1]['image_repeat'] = 'sa_slide2_image_repeat'; $slide_data[1]['image_color'] = 'sa_slide2_image_color'; $slide_data[1]['link_url'] = 'sa_slide2_link_url'; $slide_data[1]['link_target'] = 'sa_slide2_link_target'; $slide_data[1]['slide_no'] = 2; $slide_data[2]['edit_id'] = 'sa_slide3_content'; $slide_data[2]['content'] = 'Slide content'; $slide_data[2]['del_id'] = 'sa_slide3_delete'; $slide_data[2]['image_data'] = 'sa_slide3_image_data'; $slide_data[2]['image_id'] = 'sa_slide3_image_id'; $slide_data[2]['thumb'] = 'slide3_thumb'; $slide_data[2]['image_del'] = 'slide3_image_del'; $slide_data[2]['image_pos'] = 'sa_slide3_image_pos'; $slide_data[2]['image_size'] = 'sa_slide3_image_size'; $slide_data[2]['image_repeat'] = 'sa_slide3_image_repeat'; $slide_data[2]['image_color'] = 'sa_slide3_image_color'; $slide_data[2]['link_url'] = 'sa_slide3_link_url'; $slide_data[2]['link_target'] = 'sa_slide3_link_target'; $slide_data[2]['slide_no'] = 3; $slide_data[0]['popup_type'] = 'sa_slide1_popup_type'; $slide_data[0]['popup_imageid'] = 'sa_slide1_popup_imageid'; $slide_data[0]['popup_imagetitle'] = 'sa_slide1_popup_imagetitle'; $slide_data[0]['popup_video_id'] = 'sa_slide1_popup_video_id'; $slide_data[0]['popup_video_type'] = 'sa_slide1_popup_video_type'; $slide_data[0]['popup_background'] = 'sa_slide1_popup_background'; $slide_data[0]['popup_html'] = 'sa_slide1_popup_html'; $slide_data[0]['popup_shortcode'] = 'sa_slide1_popup_shortcode'; $slide_data[0]['popup_bgcol'] = 'sa_slide1_popup_bgcol'; $slide_data[0]['popup_width'] = 'sa_slide1_popup_width'; $slide_data[1]['popup_type'] = 'sa_slide2_popup_type'; $slide_data[1]['popup_imageid'] = 'sa_slide2_popup_imageid'; $slide_data[1]['popup_imagetitle'] = 'sa_slide2_popup_imagetitle'; $slide_data[1]['popup_video_id'] = 'sa_slide2_popup_video_id'; $slide_data[1]['popup_video_type'] = 'sa_slide2_popup_video_type'; $slide_data[1]['popup_background'] = 'sa_slide2_popup_background'; $slide_data[1]['popup_html'] = 'sa_slide2_popup_html'; $slide_data[1]['popup_shortcode'] = 'sa_slide2_popup_shortcode'; $slide_data[1]['popup_bgcol'] = 'sa_slide2_popup_bgcol'; $slide_data[1]['popup_width'] = 'sa_slide2_popup_width'; $slide_data[2]['popup_type'] = 'sa_slide3_popup_type'; $slide_data[2]['popup_imageid'] = 'sa_slide3_popup_imageid'; $slide_data[2]['popup_imagetitle'] = 'sa_slide3_popup_imagetitle'; $slide_data[2]['popup_video_id'] = 'sa_slide3_popup_video_id'; $slide_data[2]['popup_video_type'] = 'sa_slide3_popup_video_type'; $slide_data[2]['popup_background'] = 'sa_slide3_popup_background'; $slide_data[2]['popup_html'] = 'sa_slide3_popup_html'; $slide_data[2]['popup_shortcode'] = 'sa_slide3_popup_shortcode'; $slide_data[2]['popup_bgcol'] = 'sa_slide3_popup_bgcol'; $slide_data[2]['popup_width'] = 'sa_slide3_popup_width'; } else { // AN EXISTING SLIDER - GET SLIDE DATA FROM THE DATABASE AND SAVE WITHIN AN ARRAY. $num_slides = intval( $num_slides ); $slide_data = array(); $count = 0; for ( $i = 1; $i <= $num_slides; $i++ ) { $slide_edit_id = 'sa_slide' . $i . '_content'; $slide_char_count = 'sa_slide' . $i . '_char_count'; $slide_data[ $count ]['edit_id'] = $slide_edit_id; $slide_data[ $count ]['content'] = get_post_meta( $post->ID, $slide_edit_id, true ); $slide_data[ $count ]['char_count'] = get_post_meta( $post->ID, $slide_char_count, true ); $slide_data[ $count ]['del_id'] = 'sa_slide' . $i . '_delete'; $slide_data[ $count ]['thumb'] = 'slide' . $i . '_thumb'; $slide_data[ $count ]['image_del'] = 'slide' . $i . '_image_del'; $slide_data[ $count ]['image_data'] = 'sa_slide' . $i . '_image_data'; $slide_data[ $count ]['image_id'] = 'sa_slide' . $i . '_image_id'; $slide_data[ $count ]['image_pos'] = 'sa_slide' . $i . '_image_pos'; $slide_data[ $count ]['image_size'] = 'sa_slide' . $i . '_image_size'; $slide_data[ $count ]['image_repeat'] = 'sa_slide' . $i . '_image_repeat'; $slide_data[ $count ]['image_color'] = 'sa_slide' . $i . '_image_color'; $slide_data[ $count ]['image_data'] = 'sa_slide' . $i . '_image_data'; $slide_data[ $count ]['link_url'] = 'sa_slide' . $i . '_link_url'; $slide_data[ $count ]['link_target'] = 'sa_slide' . $i . '_link_target'; $slide_data[ $count ]['popup_type'] = 'sa_slide' . $i . '_popup_type'; $slide_data[ $count ]['popup_imageid'] = 'sa_slide' . $i . '_popup_imageid'; $slide_data[ $count ]['popup_imagetitle'] = 'sa_slide' . $i . '_popup_imagetitle'; $slide_data[ $count ]['popup_video_id'] = 'sa_slide' . $i . '_popup_video_id'; $slide_data[ $count ]['popup_video_type'] = 'sa_slide' . $i . '_popup_video_type'; $slide_data[ $count ]['popup_background'] = 'sa_slide' . $i . '_popup_background'; $slide_data[ $count ]['popup_html'] = 'sa_slide' . $i . '_popup_html'; $slide_data[ $count ]['popup_shortcode'] = 'sa_slide' . $i . '_popup_shortcode'; $slide_data[ $count ]['popup_bgcol'] = 'sa_slide' . $i . '_popup_bgcol'; $slide_data[ $count ]['popup_width'] = 'sa_slide' . $i . '_popup_width'; $slide_data[ $count ]['slide_no'] = $i; $count++; } } // GET AVAILABLE WordPress IMAGE SIZES AND SAVE WITHIN AN ARRAY. global $_wp_additional_image_sizes; $image_size_arr = array(); $image_size_arr[0]['value'] = 'no'; $image_size_arr[0]['desc'] = 'NO'; $count = 1; foreach ( get_intermediate_image_sizes() as $image_size ) { if ( in_array( $image_size, array( 'thumbnail', 'medium', 'medium_large', 'large' ), true ) ) { $width = get_option( "{$image_size}_size_w" ); $height = get_option( "{$image_size}_size_h" ); } elseif ( isset( $_wp_additional_image_sizes[ $image_size ] ) ) { $width = $_wp_additional_image_sizes[ $image_size ]['width']; $height = $_wp_additional_image_sizes[ $image_size ]['height']; } if ( ( 0 !== $width ) && ( 0 !== $height ) ) { $image_size_arr[ $count ]['value'] = $image_size; $image_size_arr[ $count ]['desc'] = $image_size . ' (' . $width . '×' . $height . ')'; $count++; } } /** * ###### LOOP TO DISPLAY INPUT ELEMENTS FOR EACH SLIDE ###### */ echo "<div id='slider_accordion'>\n"; // determine whether to use css classes instead of csss ids. $use_classes = 0; $other_settings = get_post_meta( $post->ID, 'sa_other_settings', true ); if ( '' !== $other_settings ) { $other_settings_arr = explode( '|', $other_settings ); } if ( isset( $other_settings_arr ) && ( count( $other_settings_arr ) > 7 ) ) { $disable_slide_ids = $other_settings_arr[7]; } else { $disable_slide_ids = '0'; } if ( '1' === $disable_slide_ids ) { $use_classes = 1; } $tot = count( $slide_data ); for ( $i = 0; $i < $tot; $i++ ) { // DISPLAY ACCORDION HEADING. echo '<h3>Slide ' . esc_html( $slide_data[ $i ]['slide_no'] ); $css_id = $slider_css_id . '_slide' . sprintf( '%02d', $slide_data[ $i ]['slide_no'] ); // display CSS ID/CLASS for the current slide. if ( 1 === $use_classes ) { echo '<span>.' . esc_html( $css_id ) . '</span>'; } else { echo '<span>#' . esc_html( $css_id ) . '</span>'; } echo "</h3>\n"; echo "<div>\n"; // ### DISPLAY THE SLIDE CONTENT EDITOR (textarea field) ### wp_editor( $slide_data[ $i ]['content'], $slide_data[ $i ]['edit_id'], $editor_args ); /** * ############################## * ##### SLIDE TABS - START ##### * ############################## */ $tabs_num = $i + 1; echo "<div id='slide_" . esc_html( $tabs_num ) . "_tabs' class='sa_slide_tabs'>\n"; echo "<ul>\n"; echo "<li><a href='#slide" . esc_html( $tabs_num ) . "_background_tab'>Slide Background</a></li>\n"; echo "<li><a href='#slide" . esc_html( $tabs_num ) . "_link_tab'>Slide Link</a></li>\n"; echo "<li><a href='#slide" . esc_html( $tabs_num ) . "_popup_tab'>Slide Popup</a></li>\n"; echo "<li><a href='#slide" . esc_html( $tabs_num ) . "_goto_tab'>Slide Goto Link</a></li>\n"; echo "</ul>\n"; /** * ####### SLIDE TAB 1 - SLIDE BACKGROUND ####### */ echo "<div id='slide" . esc_html( $tabs_num ) . "_background_tab' class='sa_slide_tab'>\n"; // GET BACKGROUND IMAGE DATA FOR THIS SLIDE (image id, position, size, repeat and color) FROM DATABASE. $slide_image_data = get_post_meta( $post->ID, $slide_data[ $i ]['image_data'], true ); if ( isset( $slide_image_data ) && ( '' !== $slide_image_data ) ) { $data_arr = explode( '~', $slide_image_data ); $slide_image_id = $data_arr[0]; $slide_image_pos = $data_arr[1]; $slide_image_size = $data_arr[2]; $slide_image_repeat = $data_arr[3]; $slide_image_color = $data_arr[4]; } else { $slide_image_id = get_post_meta( $post->ID, $slide_data[ $i ]['image_id'], true ); $slide_image_pos = get_post_meta( $post->ID, $slide_data[ $i ]['image_pos'], true ); $slide_image_size = get_post_meta( $post->ID, $slide_data[ $i ]['image_size'], true ); $slide_image_repeat = get_post_meta( $post->ID, $slide_data[ $i ]['image_repeat'], true ); $slide_image_color = get_post_meta( $post->ID, $slide_data[ $i ]['image_color'], true ); } if ( '' === $slide_image_pos ) { $slide_image_pos = 'left top'; } if ( '' === $slide_image_size ) { $slide_image_size = 'contain'; } if ( '' === $slide_image_repeat ) { $slide_image_repeat = 'no-repeat'; } if ( '' === $slide_image_color ) { $slide_image_color = 'rgba(0,0,0,0)'; } echo "<div class='sa_slide_bg_wrapper'>\n"; /** * ### 'USE POPUP IMAGE AS SLIDE BACKGROUND' SETTING ### */ $slide_popup_background = get_post_meta( $post->ID, $slide_data[ $i ]['popup_background'], true ); if ( '' === $slide_popup_background ) { $slide_popup_background = 'no'; } echo "<div class='popup_background_wrapper'>\n"; echo '<div>Use Popup Image as Slide Background:'; $tooltip = 'Allows you to use the same image you defined as the popup image as the slide background image. You can use a smaller version of the popup image.'; echo "<em class='sa_tooltip' href='' title='" . esc_attr( $tooltip ) . "'></em></div>\n"; echo "<select id='" . esc_attr( $slide_data[ $i ]['popup_background'] ) . "' name='" . esc_attr( $slide_data[ $i ]['popup_background'] ) . "' "; echo "onChange='change_slide_popup_background(" . esc_attr( $slide_data[ $i ]['slide_no'] ) . ");'>"; $tot_loop = count( $image_size_arr ); for ( $j = 0; $j < $tot_loop; $j++ ) { if ( $slide_popup_background === $image_size_arr[ $j ]['value'] ) { echo "<option value='" . esc_attr( $image_size_arr[ $j ]['value'] ) . "' selected>" . esc_html( $image_size_arr[ $j ]['desc'] ) . '</option>'; } else { echo "<option value='" . esc_attr( $image_size_arr[ $j ]['value'] ) . "'>" . esc_html( $image_size_arr[ $j ]['desc'] ) . '</option>'; } } echo '</select>'; echo "</div>\n"; // .popup_background_wrapper echo "<div style='clear:both; float:none; width:100%; height:1px;'></div>\n"; echo "<div id='slide" . esc_attr( $slide_data[ $i ]['slide_no'] ) . "_imagebg_popup' class='sa_slide_bg_popup'><div></div></div>\n"; // SLIDE BACKGROUND IMAGE - THUMBNAIL AND 'SET IMAGE' BUTTON. // get WordPress media upload frame url. $upload_frame_url = esc_url( get_upload_iframe_src( 'image', $post->ID ) . '&slide=' . $slide_data[ $i ]['slide_no'] ); // Get image src for slide background image. $slide_image_src = wp_get_attachment_image_src( $slide_image_id, 'medium' ); // check if the slide background image id already exists. $image_exists = is_array( $slide_image_src ); // slide backround image - thumbnail (and delete button). echo "<div id='" . esc_attr( $slide_data[ $i ]['thumb'] ) . "' class='sa_slide_thumb'>\n"; if ( $image_exists ) { echo "<div style='background-image:url(\"" . esc_attr( $slide_image_src[0] ) . '"); background-size:' . esc_attr( $slide_image_size ) . '; '; echo 'background-repeat:' . esc_attr( $slide_image_repeat ) . '; background-color:' . esc_attr( $slide_image_color ) . '; '; echo 'background-position:' . esc_attr( $slide_image_pos ) . ";'></div>\n"; echo "<span id='" . esc_attr( $slide_data[ $i ]['image_del'] ) . "' onClick='remove_slide_bg_image(\"" . esc_attr( $slide_data[ $i ]['slide_no'] ) . "\");' title='Delete the background image for this slide'>X</span>\n"; echo "</div>\n"; } else { if ( isset( $slide_data[ $i ]['popup_type'] ) ) { $slide_popup_type = get_post_meta( $post->ID, $slide_data[ $i ]['popup_type'], true ); $popup_video_type = get_post_meta( $post->ID, $slide_data[ $i ]['popup_video_type'], true ); $popup_video_id = get_post_meta( $post->ID, $slide_data[ $i ]['popup_video_id'], true ); } else { $slide_popup_type = 'NONE'; $popup_video_type = ''; $popup_video_id = ''; } if ( ( '99999999' === $slide_image_id ) && ( 'VIDEO' === $slide_popup_type ) && ( 'youtube' === $popup_video_type ) ) { $youtube_thumb = 'https://img.youtube.com/vi/' . $popup_video_id . '/maxresdefault.jpg'; echo "<div style='background-image:url(\"" . esc_attr( $youtube_thumb ) . '"); background-size:' . esc_attr( $slide_image_size ) . '; '; echo 'background-repeat:' . esc_attr( $slide_image_repeat ) . '; background-color:' . esc_attr( $slide_image_color ) . '; '; echo 'background-position:' . esc_attr( $slide_image_pos ) . ";'></div>\n"; echo "<span id='" . esc_attr( $slide_data[ $i ]['image_del'] ) . "' onClick='remove_slide_bg_image(\"" . esc_attr( $slide_data[ $i ]['slide_no'] ) . "\");' title='Delete the background image for this slide'>X</span>\n"; echo "</div>\n"; } else { echo "<div style='background-color:#ffffff; background-size:" . esc_attr( $slide_image_size ) . '; '; echo 'background-repeat:' . esc_attr( $slide_image_repeat ) . '; background-color:' . esc_attr( $slide_image_color ) . '; '; echo 'background-position:' . esc_attr( $slide_image_pos ) . ";'></div>\n"; echo "<span id='" . esc_attr( $slide_data[ $i ]['image_del'] ) . "' class='sa_hidden' onClick='remove_slide_bg_image(\"" . esc_attr( $slide_data[ $i ]['slide_no'] ) . "\");' title='Delete the background image for this slide'>X</span>\n"; echo "</div>\n"; } } // slide background image - 'set image' button. echo "<a class='button button-secondary slide_image_add' id='slide" . esc_attr( $slide_data[ $i ]['slide_no'] ) . "_image_add' "; echo "href='" . esc_attr( $upload_frame_url ) . "' title='Set the background image for this slide'>Set Image</a>\n"; // slide background image - image id hidden field. echo "<input type='hidden' id='" . esc_attr( $slide_data[ $i ]['image_id'] ) . "' name='" . esc_attr( $slide_data[ $i ]['image_id'] ) . "' value='" . esc_attr( $slide_image_id ) . "'/>\n"; // SLIDE BACKGROUND IMAGE - BACKGROUND POSITION (dropdown box). echo "<div class='slide_image_settings_line'>"; echo '<span>Background Position:</span>'; $option_arr = array(); $option_arr[0]['desc'] = 'Top Left'; $option_arr[0]['value'] = 'left top'; $option_arr[1]['desc'] = 'Top Center'; $option_arr[1]['value'] = 'center top'; $option_arr[2]['desc'] = 'Top Right'; $option_arr[2]['value'] = 'right top'; $option_arr[3]['desc'] = 'Center Left'; $option_arr[3]['value'] = 'left center'; $option_arr[4]['desc'] = 'Center'; $option_arr[4]['value'] = 'center center'; $option_arr[5]['desc'] = 'Center Right'; $option_arr[5]['value'] = 'right center'; $option_arr[6]['desc'] = 'Bottom Left'; $option_arr[6]['value'] = 'left bottom'; $option_arr[7]['desc'] = 'Bottom Center'; $option_arr[7]['value'] = 'center bottom'; $option_arr[8]['desc'] = 'Bottom Right'; $option_arr[8]['value'] = 'right bottom'; echo "<select id='" . esc_attr( $slide_data[ $i ]['image_pos'] ) . "' name='" . esc_attr( $slide_data[ $i ]['image_pos'] ) . "' onChange='change_slide_image_pos(" . esc_attr( $slide_data[ $i ]['slide_no'] ) . ");'>"; $tot_loop = count( $option_arr ); for ( $j = 0; $j < $tot_loop; $j++ ) { if ( $slide_image_pos === $option_arr[ $j ]['value'] ) { echo "<option value='" . esc_attr( $option_arr[ $j ]['value'] ) . "' selected>" . esc_html( $option_arr[ $j ]['desc'] ) . '</option>'; } else { echo "<option value='" . esc_attr( $option_arr[ $j ]['value'] ) . "'>" . esc_html( $option_arr[ $j ]['desc'] ) . '</option>'; } } echo '</select>'; echo "</div>\n"; // SLIDE BACKGROUND IMAGE - BACKGROUND SIZE (dropdown box). echo "<div class='slide_image_settings_line'>"; echo '<span>Background Size:</span>'; $option_arr = array(); $option_arr[0]['value'] = 'auto'; $option_arr[0]['desc'] = 'no resize'; $option_arr[1]['value'] = 'contain'; $option_arr[1]['desc'] = 'contain'; $option_arr[2]['value'] = 'cover'; $option_arr[2]['desc'] = 'cover'; $option_arr[3]['value'] = '100% 100%'; $option_arr[3]['desc'] = '100%'; $option_arr[4]['value'] = '100% auto'; $option_arr[4]['desc'] = '100% width'; $option_arr[5]['value'] = 'auto 100%'; $option_arr[5]['desc'] = '100% height'; echo "<select id='" . esc_attr( $slide_data[ $i ]['image_size'] ) . "' name='" . esc_attr( $slide_data[ $i ]['image_size'] ) . "' onChange='change_slide_image_size(" . esc_attr( $slide_data[ $i ]['slide_no'] ) . ");'>"; $tot_loop = count( $option_arr ); for ( $j = 0; $j < $tot_loop; $j++ ) { if ( $slide_image_size === $option_arr[ $j ]['value'] ) { echo "<option value='" . esc_attr( $option_arr[ $j ]['value'] ) . "' selected>" . esc_html( $option_arr[ $j ]['desc'] ) . '</option>'; } else { echo "<option value='" . esc_attr( $option_arr[ $j ]['value'] ) . "'>" . esc_html( $option_arr[ $j ]['desc'] ) . '</option>'; } } echo '</select>'; echo "</div>\n"; // SLIDER BACKGROUND IMAGE - BACKGROUND REPEAT (dropdown box). echo "<div class='slide_image_settings_line'>"; echo '<span>Background Repeat:</span>'; $option_arr = array(); $option_arr[0] = 'no-repeat'; $option_arr[1] = 'repeat'; $option_arr[2] = 'repeat-x'; $option_arr[3] = 'repeat-y'; echo "<select id='" . esc_attr( $slide_data[ $i ]['image_repeat'] ) . "' name='" . esc_attr( $slide_data[ $i ]['image_repeat'] ) . "' "; echo "onChange='change_slide_image_repeat(" . esc_attr( $slide_data[ $i ]['slide_no'] ) . ");'>"; $tot_loop = count( $option_arr ); for ( $j = 0; $j < $tot_loop; $j++ ) { if ( $slide_image_repeat === $option_arr[ $j ] ) { echo "<option value='" . esc_attr( $option_arr[ $j ] ) . "' selected>" . esc_html( $option_arr[ $j ] ) . '</option>'; } else { echo "<option value='" . esc_attr( $option_arr[ $j ] ) . "'>" . esc_html( $option_arr[ $j ] ) . '</option>'; } } echo '</select>'; echo "</div>\n"; // SLIDER BACKGROUND IMAGE - BACKGROUND COLOR (color picker). echo "<div class='slide_image_settings_line'>"; echo '<span>Background Color:</span>'; echo "<input type='text' id='" . esc_attr( $slide_data[ $i ]['image_color'] ) . "' name='" . esc_attr( $slide_data[ $i ]['image_color'] ) . "' value='" . esc_attr( $slide_image_color ) . "' "; echo "onChange='change_slide_image_color(" . esc_attr( $slide_data[ $i ]['slide_no'] ) . ");'>"; echo "</div>\n"; echo "<div style='clear:both; float:none; width:100%; height:1px;'></div>\n"; echo "</div>\n"; echo "</div>\n"; /** * ####### SLIDE TAB 2 - SLIDE LINK ####### */ echo "<div id='slide" . esc_attr( $tabs_num ) . "_link_tab' class='sa_slide_tab'>\n"; // GET SLIDE LINK DATA FOR THIS SLIDE FROM THE DATABASE. $slide_link_url = get_post_meta( $post->ID, $slide_data[ $i ]['link_url'], true ); $slide_link_target = get_post_meta( $post->ID, $slide_data[ $i ]['link_target'], true ); if ( '' === $slide_link_target ) { $slide_link_target = '_self'; } // DISPLAY INPUT FIELDS FOR SLIDE LINK SETTINGS. echo "<div class='slide_link_settings_wrapper'>"; echo '<p>Specify a link URL that this slide opens</h3>'; // LINK URL. echo '<div><span>Link URL:</span>'; echo "<input type='text' id='" . esc_attr( $slide_data[ $i ]['link_url'] ) . "' name='" . esc_attr( $slide_data[ $i ]['link_url'] ) . "' "; echo "value='" . esc_attr( $slide_link_url ) . "'/></div>\n"; // LINK TARGET. echo '<div><span>Link Target:</span>'; echo "<select id='" . esc_attr( $slide_data[ $i ]['link_target'] ) . "' name='" . esc_attr( $slide_data[ $i ]['link_target'] ) . "'>"; if ( '_blank' === $slide_link_target ) { echo "<option value='_self'>Same Tab/Window</option>"; echo "<option value='_blank' selected>New Tab/Window</option>"; } else { echo "<option value='_self' selected>Same Tab/Window</option>"; echo "<option value='_blank'>New Tab/Window</option>"; } echo '</select>'; echo "</div>\n"; echo "</div>\n"; echo "</div>\n"; /** * ####### SLIDE TAB 3 - SLIDE POPUP ####### */ echo "<div id='slide" . esc_attr( $tabs_num ) . "_popup_tab' class='sa_slide_tab'>\n"; // GET SLIDE POPUP DATA FOR THIS SLIDE FROM THE DATABASE. $slide_popup_type = get_post_meta( $post->ID, $slide_data[ $i ]['popup_type'], true ); if ( '' === $slide_popup_type ) { $slide_popup_type = 'NONE'; } $popup_imageid = intval( get_post_meta( $post->ID, $slide_data[ $i ]['popup_imageid'], true ) ); $popup_video_id = get_post_meta( $post->ID, $slide_data[ $i ]['popup_video_id'], true ); $popup_video_type = get_post_meta( $post->ID, $slide_data[ $i ]['popup_video_type'], true ); $popup_imagetitle = get_post_meta( $post->ID, $slide_data[ $i ]['popup_imagetitle'], true ); $popup_html = get_post_meta( $post->ID, $slide_data[ $i ]['popup_html'], true ); $popup_shortcode = get_post_meta( $post->ID, $slide_data[ $i ]['popup_shortcode'], true ); $popup_bgcol = get_post_meta( $post->ID, $slide_data[ $i ]['popup_bgcol'], true ); $popup_width = intval( get_post_meta( $post->ID, $slide_data[ $i ]['popup_width'], true ) ); $css_id = get_post_meta( $post->ID, 'sa_css_id', true ); // POPUP TYPE. echo "<div class='slide_popup_settings_line'>"; echo '<span>SA Popup Type:</span>'; $option_arr = array(); $option_arr[0] = 'NONE'; $option_arr[1] = 'IMAGE'; $option_arr[2] = 'VIDEO'; $option_arr[3] = 'HTML'; echo "<select id='" . esc_attr( $slide_data[ $i ]['popup_type'] ) . "' name='" . esc_attr( $slide_data[ $i ]['popup_type'] ) . "' "; echo "onChange='change_slide_popup_type(" . esc_attr( $slide_data[ $i ]['slide_no'] ) . ");'>"; $tot_loop = count( $option_arr ); for ( $j = 0; $j < $tot_loop; $j++ ) { if ( $slide_popup_type === $option_arr[ $j ] ) { echo "<option value='" . esc_attr( $option_arr[ $j ] ) . "' selected>" . esc_html( $option_arr[ $j ] ) . '</option>'; } else { echo "<option value='" . esc_attr( $option_arr[ $j ] ) . "'>" . esc_html( $option_arr[ $j ] ) . '</option>'; } } echo '</select>'; echo "</div>\n"; // A) IMAGE POPUP SETTINGS. $sl_num = ( $i + 1 ); if ( 'IMAGE' === $slide_popup_type ) { echo "<div id='slide" . esc_attr( $sl_num ) . "_image_popup_wrapper' class='image_popup_wrapper'>\n"; } else { echo "<div id='slide" . esc_attr( $sl_num ) . "_image_popup_wrapper' class='image_popup_wrapper' style='display:none;'>\n"; } // get WordPress media upload frame url. $upload_popup_frame_url = esc_url( get_upload_iframe_src( 'image', $post->ID ) . '&popup=' . $slide_data[ $i ]['slide_no'] ); // Get image src for slide popup image. $popup_image_src = wp_get_attachment_image_src( $popup_imageid, 'medium' ); // check if the slide background image id already exists. $image_exists = is_array( $popup_image_src ); echo "<div id='slide" . esc_attr( $sl_num ) . "_popup_thumb' class='slide_popup_thumb'>\n"; $placeholder = SA_PLUGIN_PATH . 'images/image_placeholder.jpg'; if ( $image_exists ) { // media library image id exists - display thumbnail image. echo "<div><img src='" . esc_attr( $popup_image_src[0] ) . "'/></div>"; // display image delete button. echo "<span onClick='remove_popup_image(\"" . esc_attr( $slide_data[ $i ]['slide_no'] ) . '", "' . esc_attr( $placeholder ) . "\");' "; echo "id='slide" . esc_attr( $slide_data[ $i ]['slide_no'] ) . "_popup_image_del' title='Delete the popup image for this slide'>X</span>\n"; // get popup image info (size & dimensions). $popup_image_meta = wp_get_attachment_metadata( $popup_imageid ); $image_width = $popup_image_meta['width']; $image_height = $popup_image_meta['height']; $info_dim = $image_width . ' x ' . $image_height . ' pixels'; $popup_image_full = wp_get_attachment_image_src( $popup_imageid, 'full' ); $img_headers = get_headers( $popup_image_full[0], 1 ); $info_size = $img_headers['Content-Length']; if ( '' !== $info_size ) { $size_unit = 'bytes'; if ( $info_size > 1048576 ) { if ( ! is_array( $info_size ) ) { $info_size = round( $info_size / 1048576 ) . ' MB'; } else { $info_size = ''; } } elseif ( $info_size > 1024 ) { if ( ! is_array( $info_size ) ) { $info_size = round( $info_size / 1024 ) . ' kb'; } else { $info_size = ''; } } } } else { // no image selected yet - display placeholder image. $popup_image_id = 0; echo "<div><img src='" . esc_attr( $placeholder ) . "'/></div>"; // display image delete button (hidden state). echo "<span class='sa_hidden' onClick='remove_popup_image(\"" . esc_attr( $slide_data[ $i ]['slide_no'] ) . '", "' . esc_attr( $placeholder ) . "\");' "; echo "id='slide" . esc_attr( $slide_data[ $i ]['slide_no'] ) . "_popup_image_del' title='Delete the popup image for this slide'>X</span>\n"; // reset popup image info (size & dimensions). $info_dim = ''; $info_size = ''; } echo "</div>\n"; // slide popup image - 'set image' button. echo "<a class='button button-secondary popup_image_add' href='" . esc_attr( $upload_popup_frame_url ) . "' "; echo "title='Set the background image for this slide'>Set Image</a>\n"; // slide popup image - popup image id hidden field. echo "<input type='hidden' id='" . esc_attr( $slide_data[ $i ]['popup_imageid'] ) . "' name='" . esc_attr( $slide_data[ $i ]['popup_imageid'] ); echo "' value='" . esc_attr( $popup_imageid ) . "' />\n"; // slide popup image - popup image info (title, dimensions & size). echo "<div class='slide_popup_info'>\n"; // popup image title. echo "<input class='sa_slide_popup_imagetitle' type='text' id='" . esc_attr( $slide_data[ $i ]['popup_imagetitle'] ) . "' "; echo "name='" . esc_attr( $slide_data[ $i ]['popup_imagetitle'] ) . "' value='" . esc_attr( $popup_imagetitle ) . "' "; echo "onChange='change_popup_image_title(this.value, \"" . esc_attr( $preview_button ) . "\")' placeholder='Enter popup title'/>\n"; // popup dimensions. echo "<div id='slide" . esc_attr( $slide_data[ $i ]['slide_no'] ) . "_popup_info_dim' class='slide_popup_info_dim'>"; echo '<strong>Dimensions:</strong> ' . esc_html( $info_dim ) . "</div>\n"; // popup file size. echo "<div id='slide" . esc_attr( $slide_data[ $i ]['slide_no'] ) . "_popup_info_size' class='slide_popup_info_size'>"; if ( '' !== $info_size ) { echo '<strong>File Size:</strong> ' . esc_html( $info_size ); } echo "</div>\n"; echo "</div>\n"; echo "<div style='clear:both; float:none; width:100%; height:1px;'></div>\n"; echo "</div>\n"; // B) VIDEO POPUP SETTINGS. $sl_num = ( $i + 1 ); if ( 'VIDEO' === $slide_popup_type ) { echo "<div id='slide" . esc_attr( $sl_num ) . "_video_popup_wrapper' class='video_popup_wrapper'>\n"; } else { echo "<div id='slide" . esc_attr( $sl_num ) . "_video_popup_wrapper' class='video_popup_wrapper' style='display:none;'>\n"; } // set default video values. if ( ( 'youtube' !== $popup_video_type ) && ( 'vimeo' !== $popup_video_type ) ) { $popup_video_type = ''; $popup_video_id = ''; } if ( '' === $popup_video_id ) { $popup_video_type = ''; } // video preview. echo "<div id='slide" . esc_attr( $sl_num ) . "_video_thumb' class='slide_video_thumb'>\n"; if ( '' !== $popup_video_id ) { if ( 'youtube' === $popup_video_type ) { echo "<iframe src='https://www.youtube.com/embed/" . esc_attr( $popup_video_id ) . "' frameborder='0' allowfullscreen></iframe>\n"; } elseif ( 'vimeo' === $popup_video_type ) { echo "<iframe src='https://player.vimeo.com/video/" . esc_attr( $popup_video_id ) . "' frameborder='0' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>"; } else { echo "<img src='" . esc_attr( SA_PLUGIN_PATH ) . "images/video_placeholder.jpg'/>"; } } else { echo "<img src='" . esc_attr( SA_PLUGIN_PATH ) . "images/video_placeholder.jpg'/>"; } echo "<div style='float:none; clear:both; width:100%; height:1px;'></div>\n"; echo "</div>\n"; // video url (youtube/vimeo) input text box. echo "<div class='sa_slide_video_url'>"; echo "<input type='text' id='sa_slide" . esc_attr( $sl_num ) . "_video_url' name='sa_slide" . esc_attr( $sl_num ) . "_video_url' "; echo "placeholder='Enter YouTube or Vimeo URL'/></div>\n"; // 'update video' button. echo "<a class='button button-secondary' title='Update popup video using the above video URL' "; echo "onClick='update_popup_video(" . esc_attr( $sl_num ) . ");'>Set Video</a>\n"; // invalid url error message. echo "<div id='sa_slide" . esc_attr( $sl_num ) . "_video_invalid_url' class='sa_popup_video_invalid_url'>"; echo "URL entered is NOT a valid YouTube or Vimeo URL!</div>\n"; // hidden video id text field. echo "<input type='hidden' id='" . esc_attr( $slide_data[ $i ]['popup_video_id'] ) . "' name='" . esc_attr( $slide_data[ $i ]['popup_video_id'] ) . "' "; echo "value='" . esc_attr( $popup_video_id ) . "'/>\n"; // hidden video type (youtube/vimeo) text field. echo "<input type='hidden' id='" . esc_attr( $slide_data[ $i ]['popup_video_type'] ) . "' name='" . esc_attr( $slide_data[ $i ]['popup_video_type'] ) . "' "; echo "value='" . esc_attr( $popup_video_type ) . "'/>\n"; echo "<div style='float:none; clear:both; width:100%; height:1px;'></div>\n"; echo "</div>\n"; // C) CONTENT POPUP SETTINGS. $sl_num = ( $i + 1 ); if ( 'HTML' === $slide_popup_type ) { echo "<div id='slide" . esc_attr( $sl_num ) . "_html_popup_wrapper' class='html_popup_wrapper'>\n"; } else { echo "<div id='slide" . esc_attr( $sl_num ) . "_html_popup_wrapper' class='html_popup_wrapper' style='display:none;'>\n"; } // content popup - html. echo "<textarea id='" . esc_attr( $slide_data[ $i ]['popup_html'] ) . "' name='" . esc_attr( $slide_data[ $i ]['popup_html'] ) . "' "; echo "placeholder='Enter HTML Code or WordPress Shortcode'>" . esc_attr( $popup_html ) . "</textarea>\n"; // content popup - shortcode. if ( '' === $popup_shortcode ) { $popup_shortcode = '0'; } echo "<div class='slide_popup_settings_line' style='margin:3px 0px 15px;'><span>Shortcode Content:</span>"; if ( '1' === $popup_shortcode ) { echo "<input type='checkbox' id='" . esc_attr( $slide_data[ $i ]['popup_shortcode'] ) . "' name='" . esc_attr( $slide_data[ $i ]['popup_shortcode'] ) . "' value='1' checked/>"; } else { echo "<input type='checkbox' id='" . esc_attr( $slide_data[ $i ]['popup_shortcode'] ) . "' name='" . esc_attr( $slide_data[ $i ]['popup_shortcode'] ) . "' value='1'/>"; } echo "<em class='sa_tooltip' href='' title='Use a WordPress shortcode instead of HTML as your popup content'></em>\n"; echo "</div>\n"; // content popup - css id. $popup_id = $css_id . '_popup' . ( $i + 1 ); echo "<div class='slide_popup_settings_line'>"; echo "<span>Popup CSS ID:</span><div id='sa_slide" . esc_attr( $sl_num ) . "_popup_css' class='slide_popup_css'>#" . esc_html( $popup_id ) . '</div>'; echo '<strong>(click to copy to clipboard)</strong></div>'; // content popup - background color. if ( '' === $popup_bgcol ) { $popup_bgcol = '#ffffff'; } echo "<div class='slide_popup_settings_line'>"; echo '<span>Background Color:</span>'; echo "<input type='text' id='" . esc_attr( $slide_data[ $i ]['popup_bgcol'] ) . "' name='" . esc_attr( $slide_data[ $i ]['popup_bgcol'] ) . "' "; echo "value='" . esc_attr( $popup_bgcol ) . "'>"; echo "</div>\n"; // content popup - width. if ( ( '' === $popup_width ) || ( 0 === $popup_width ) ) { $popup_width = '600'; } echo "<div class='slide_popup_settings_line'>"; echo '<span>Popup Width:</span>'; echo "<input type='text' id='" . esc_attr( $slide_data[ $i ]['popup_width'] ) . "' name='" . esc_attr( $slide_data[ $i ]['popup_width'] ) . "' "; echo "value='" . esc_attr( $popup_width ) . "'><em>px</em>"; echo "</div>\n"; echo "</div>\n"; echo "</div>\n"; /** * ####### SLIDE TAB 4 - SLIDE GOTO LINK ####### */ $css_id = get_post_meta( $post->ID, 'sa_css_id', true ); $goto_class = $css_id . '_goto' . ( $i + 1 ); $eg_link = 'https://edgewebpages.com/slide-goto-links'; echo "<div id='slide" . esc_attr( $tabs_num ) . "_goto_tab' class='sa_slide_tab'>\n"; echo "<div class='slide_goto_link_content'>\n"; echo "<p><strong>Create a link or button to link directly to this slide</strong></p>\n"; echo "<p>To do this, give your link or button the following <strong>CSS Class:</strong></p>\n"; echo "<div class='slide_goto_class'><span>" . esc_html( $goto_class ) . "</span></div>\n"; echo "<p>To see an example of how a '<strong>Slide Goto Link</strong>' works "; echo "<a href='" . esc_attr( $eg_link ) . "' target='_blank'>CLICK HERE</a></p>\n"; echo "</div>\n"; echo "</div>\n"; /** * // ############################ * // ##### SLIDE TABS - END ##### * // ############################ */ echo "</div>\n"; // 3. DELETE STATUS FIELD (hidden) AND DELETE SLIDE BUTTON. echo "<input type='hidden' id='" . esc_attr( $slide_data[ $i ]['del_id'] ) . "' name='" . esc_attr( $slide_data[ $i ]['del_id'] ) . "' value='1'/>\n"; echo "<div class='button button-secondary' onClick='delete_sa_slide(\"" . esc_attr( $slide_data[ $i ]['del_id'] ) . "\");' title='Delete this slide'>Delete Slide</div>\n"; // 4. DUPLICATE SLIDE BUTTON. echo "<div class='button button-secondary' onClick='duplicate_slide(\"" . esc_attr( $slide_data[ $i ]['slide_no'] ) . "\");' title='Duplicate this slide'>Duplicate Slide</div>\n"; // 5. MOVE SLIDE UP BUTTON. if ( 1 !== $slide_data[ $i ]['slide_no'] ) { echo "<div class='button button-secondary' onClick='move_slide_up(\"" . esc_attr( $slide_data[ $i ]['slide_no'] ) . "\");' title='Move this slide up within the slide order'>Move Slide Up</div>\n"; } echo "</div>\n"; } echo "</div>\n"; // ADD SLIDE BUTTON. if ( $num_slides < 99 ) { // a maximum of 99 slides allowed. echo "<div id='sa_add_slide' class='button button-primary button-large' title='Add a new slide'>Add Slide</div>\n"; } // JQUERY-UI DIALOG BOX DIV - FOR CONFIRMATION DIALOG BOXES. echo "<div id='sa_dialog_box'></div>\n"; } /** * ##### META BOX CONTENT - 'Slider Preview/Shortcode' BOX ##### * * @param array $post Custom Post 'sa_slider'. */ function cpt_slider_shortcode_content( $post ) { $post_status = get_post_status( $post->ID ); $allow_shortcodes = get_post_meta( $post->ID, 'sa_shortcodes', true ); $shortcode = '[slide-anything id="' . $post->ID . '"]'; echo "<div id='sa_slider_shortcode'>" . esc_html( $shortcode ) . "</div>\n"; echo "<div id='sa_shortcode_copy' class='button button-secondary'>Copy to Clipboard</div>\n"; } /** * ##### META BOX CONTENT - 'Items Displayed' BOX ##### * * @param array $post Custom Post 'sa_slider'. */ function cpt_slider_items_content( $post ) { $items_width1 = intval( get_post_meta( $post->ID, 'sa_items_width1', true ) ); $items_width2 = intval( get_post_meta( $post->ID, 'sa_items_width2', true ) ); $items_width3 = intval( get_post_meta( $post->ID, 'sa_items_width3', true ) ); $items_width4 = intval( get_post_meta( $post->ID, 'sa_items_width4', true ) ); $items_width5 = intval( get_post_meta( $post->ID, 'sa_items_width5', true ) ); $items_width6 = intval( get_post_meta( $post->ID, 'sa_items_width6', true ) ); if ( 0 === $items_width1 ) { $items_width1 = 1; } if ( 0 === $items_width2 ) { $items_width2 = 1; } if ( 0 === $items_width3 ) { $items_width3 = 1; } if ( 0 === $items_width4 ) { $items_width4 = 1; } if ( 0 === $items_width5 ) { $items_width5 = 1; } if ( 0 === $items_width6 ) { $items_width6 = $items_width5; } echo "<div id='items_displayed_metabox'>\n"; echo "<h4>Browser/Device Width:</h4>\n"; // items for browser width category 1. echo "<div><em class='sa_tooltip' href='' title='Up to 479 pixels'></em><span>Mobile Portrait</span><select name='sa_items_width1'>"; for ( $i = 1; $i <= 12; $i++ ) { if ( $i === $items_width1 ) { echo "<option value='" . esc_attr( $i ) . "' selected>" . esc_html( $i ) . '</option>'; } else { echo "<option value='" . esc_attr( $i ) . "'>" . esc_html( $i ) . '</option>'; } } echo "</select></div>\n"; // items for browser width category 2. echo "<div><em class='sa_tooltip' href='' title='480 to 767 pixels'></em><span>Mobile Landscape</span><select name='sa_items_width2'>"; for ( $i = 1; $i <= 12; $i++ ) { if ( $i === $items_width2 ) { echo "<option value='" . esc_attr( $i ) . "' selected>" . esc_html( $i ) . '</option>'; } else { echo "<option value='" . esc_attr( $i ) . "'>" . esc_html( $i ) . '</option>'; } } echo "</select></div>\n"; // items for browser width category 3. echo "<div><em class='sa_tooltip' href='' title='768 to 979 pixels'></em><span>Tablet Portrait</span><select name='sa_items_width3'>"; for ( $i = 1; $i <= 12; $i++ ) { if ( $i === $items_width3 ) { echo "<option value='" . esc_attr( $i ) . "' selected>" . esc_html( $i ) . '</option>'; } else { echo "<option value='" . esc_attr( $i ) . "'>" . esc_html( $i ) . '</option>'; } } echo "</select></div>\n"; // items for browser width category 4. echo "<div><em class='sa_tooltip' href='' title='980 to 1199 pixels'></em><span>Desktop Small</span><select name='sa_items_width4'>"; for ( $i = 1; $i <= 12; $i++ ) { if ( $i === $items_width4 ) { echo "<option value='" . esc_attr( $i ) . "' selected>" . esc_html( $i ) . '</option>'; } else { echo "<option value='" . esc_attr( $i ) . "'>" . esc_html( $i ) . '</option>'; } } echo "</select></div>\n"; // items for browser width category 5. echo "<div><em class='sa_tooltip' href='' title='1200 to 1499 pixels'></em><span>Desktop Large</span><select name='sa_items_width5'>"; for ( $i = 1; $i <= 12; $i++ ) { if ( $i === $items_width5 ) { echo "<option value='" . esc_attr( $i ) . "' selected>" . esc_html( $i ) . '</option>'; } else { echo "<option value='" . esc_attr( $i ) . "'>" . esc_html( $i ) . '</option>'; } } echo "</select></div>\n"; // items for browser width category 6. echo "<div><em class='sa_tooltip' href='' title='Over 1500 pixels'></em><span>Desktop X-Large</span><select name='sa_items_width6'>"; for ( $i = 1; $i <= 12; $i++ ) { if ( $i === $items_width6 ) { echo "<option value='" . esc_attr( $i ) . "' selected>" . esc_html( $i ) . '</option>'; } else { echo "<option value='" . esc_attr( $i ) . "'>" . esc_html( $i ) . '</option>'; } } echo "</select></div>\n"; // slide transition effect. $transition = get_post_meta( $post->ID, 'sa_transition', true ); if ( '' === $transition ) { $transition = 'fade'; } $option_arr = array(); $option_arr[0] = 'Slide'; $option_arr[1] = 'Fade'; $option_arr[2] = 'Zoom In'; $option_arr[3] = 'Zoom Out'; $option_arr[4] = 'Flip Out X'; $option_arr[5] = 'Flip Out Y'; $option_arr[6] = 'Rotate Left'; $option_arr[7] = 'Rotate Right'; $option_arr[8] = 'Bounce Out'; $option_arr[9] = 'Roll Out'; $option_arr[10] = 'Slide Down'; if ( ( 1 === $items_width1 ) && ( 1 === $items_width2 ) && ( 1 === $items_width3 ) && ( 1 === $items_width4 ) && ( 1 === $items_width5 ) && ( 1 === $items_width6 ) ) { echo "<div class='sa_items_all_one' style='display:block;'>"; } else { echo "<div class='sa_items_all_one' style='display:none;'>"; } echo "<em class='sa_tooltip' href='' title='NOTE: Slide transitions only work when the above items displayed are ALL SET TO 1'></em>"; echo "<span style='color:firebrick !important;'>Slide Transition</span><select style='max-width:100px !important;' name='sa_transition'>"; $tot_opt = count( $option_arr ); for ( $i = 0; $i < $tot_opt; $i++ ) { if ( $transition === $option_arr[ $i ] ) { echo "<option value='" . esc_attr( $option_arr[ $i ] ) . "' selected>" . esc_html( $option_arr[ $i ] ) . '</option>'; } else { echo "<option value='" . esc_attr( $option_arr[ $i ] ) . "'>" . esc_html( $option_arr[ $i ] ) . '</option>'; } } echo "</select></div>\n"; // HERO SLIDER. $hero_slider = get_post_meta( $post->ID, 'sa_hero_slider', true ); if ( '1' !== $hero_slider ) { $hero_slider = '0'; } if ( ( 1 === $items_width1 ) && ( 1 === $items_width2 ) && ( 1 === $items_width3 ) && ( 1 === $items_width4 ) && ( 1 === $items_width5 ) && ( 1 === $items_width6 ) ) { echo "<div id='sa_hero_slider_wrapper' class='sa_items_all_one' style='display:block;'>"; } else { echo "<div id='sa_hero_slider_wrapper' class='sa_items_all_one' style='display:none;'>"; } echo '<span>Hero Slider</span>'; // hero slider checkbox. if ( '1' === $hero_slider ) { echo "<input type='checkbox' id='sa_hero_slider' name='sa_hero_slider' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_hero_slider' name='sa_hero_slider' value='1'/>"; } $hs_note1 = 'Most WP Theme 'Page Builders' (Visual Composer, Divi, Elementor, SiteOrigin...) allow you create full-width sections in your content. If you are not using a page builder then you will have to manually create a PHP template file to include a full-width container.'; $hs_note2 = 'The slider height is set to 100% screen/device height using CSS 'vh' (viewport height). Just about all browsers now support CSS viewport units, except Opera Mini which was installed on the old 'button' phones.'; if ( '1' === $hero_slider ) { echo "<div id='sa_hero_slider_note' style='display:block;'>"; } else { echo "<div id='sa_hero_slider_note' style='display:none;'>"; } echo '<strong>Please Note:</strong>'; echo "<ol><li>Shortcode should be inserted into a full-width section<em class='sa_tooltip' title='" . esc_attr( $hs_note1 ) . "'></em></li>"; echo "<li>Only works on browsers that support Viewport units - see <a href='https://caniuse.com/#feat=viewport-units' target='_blank'>here</a>"; echo "<em class='sa_tooltip' title='" . esc_attr( $hs_note2 ) . "'></em></li></ol></div>"; echo "</div>\n"; // SHOWCASE SLIDER. if ( ( 1 === $items_width1 ) && ( 1 === $items_width2 ) && ( 1 === $items_width3 ) && ( 1 === $items_width4 ) && ( 1 === $items_width5 ) && ( 1 === $items_width6 ) ) { echo "<div id='sa_showcase_slider_wrapper' style='display:none;'>"; } else { echo "<div id='sa_showcase_slider_wrapper' style='display:block;'>"; } // showcase slider checkbox. $showcase_slider = get_post_meta( $post->ID, 'sa_showcase_slider', true ); if ( '1' !== $showcase_slider ) { $showcase_slider = '0'; } echo "<div class='sa_ss_line'><span><strong>Showcase Carousel</strong></span>"; echo "<input type='checkbox' id='sa_showcase_slider' name='sa_showcase_slider' value='1'"; if ( '1' === $showcase_slider ) { echo ' checked'; } echo ' />'; echo '</div>'; if ( '1' === $showcase_slider ) { echo "<div id='sa_showcase_slider_pro' style='display:block;'>"; } else { echo "<div id='sa_showcase_slider_pro' style='display:none;'>"; } // showcase slider - desktop width. $showcase_width = get_post_meta( $post->ID, 'sa_showcase_width', true ); if ( '' === $showcase_width ) { $showcase_width = '120'; } echo "<div class='sa_ss_line'><span>Desktop Width</span>"; echo "<input type='text' id='sa_showcase_width' name='sa_showcase_width' value='" . esc_attr( $showcase_width ) . "'>"; echo "<em>%</em></div>\n"; // showcase slider - use on tablets. $showcase_tablet = get_post_meta( $post->ID, 'sa_showcase_tablet', true ); if ( ( '0' !== $showcase_tablet ) && ( '1' !== $showcase_tablet ) ) { $showcase_tablet = '1'; } echo "<div class='sa_ss_line'><span>Use on Tablets</span>"; if ( '1' === $showcase_tablet ) { echo "<input type='checkbox' id='sa_showcase_tablet' name='sa_showcase_tablet' value='1' checked />"; } else { echo "<input type='checkbox' id='sa_showcase_tablet' name='sa_showcase_tablet' value='1' />"; } echo "</div>\n"; // showcase slider - tablet width. $showcase_width_tab = get_post_meta( $post->ID, 'sa_showcase_width_tab', true ); if ( '' === $showcase_width_tab ) { $showcase_width_tab = '130'; } echo "<div class='sa_ss_line'><span>Tablet Width</span>"; echo "<input type='text' id='sa_showcase_width_tab' name='sa_showcase_width_tab' value='" . esc_attr( $showcase_width_tab ) . "'>"; echo "<em>%</em></div>\n"; // showcase slider - use on mobiles. $showcase_mobile = get_post_meta( $post->ID, 'sa_showcase_mobile', true ); if ( '1' !== $showcase_mobile ) { $showcase_mobile = '0'; } echo "<div class='sa_ss_line'><span>Use on Mobiles</span>"; if ( '1' === $showcase_mobile ) { echo "<input type='checkbox' id='sa_showcase_mobile' name='sa_showcase_mobile' value='1' checked />"; } else { echo "<input type='checkbox' id='sa_showcase_mobile' name='sa_showcase_mobile' value='1' />"; } echo "</div>\n"; // showcase slider - mobile width. $showcase_width_mob = get_post_meta( $post->ID, 'sa_showcase_width_mob', true ); if ( '' === $showcase_width_mob ) { $showcase_width_mob = '140'; } echo "<div class='sa_ss_line'><span>Mobile Width</span>"; echo "<input type='text' id='sa_showcase_width_mob' name='sa_showcase_width_mob' value='" . esc_attr( $showcase_width_mob ) . "'>"; echo "<em>%</em></div>\n"; // showcase slider - css to style left/rightmost slides. $css_id = get_post_meta( $post->ID, 'sa_css_id', true ); echo "<div class='sa_ss_css_line'>CSS to target left+right partial slides:"; echo "<div id='ss_css_value'>#" . esc_html( $css_id ) . ' .sc_partial</div>'; echo "</div>\n"; echo '</div>'; // #sa_showcase_slider_pro echo "</div>\n"; echo "</div>\n"; } /** * ##### META BOX CONTENT - 'Slider Style' BOX ##### * * @param array $post Custom Post 'sa_slider'. */ function cpt_slider_style_content( $post ) { // CSS ID. $css_id = get_post_meta( $post->ID, 'sa_css_id', true ); if ( '' === $css_id ) { $css_id = 'slider_' . $post->ID; } echo "<div id='slider_style_metabox'>\n"; echo "<h4>CSS <span>#id</span> for Slider:</h4>\n"; echo "<div style='padding-bottom:10px; color:#909090;'>Must consist of letters (upper/lowercase) or Underscore '_' characters <span style='color:firebrick;'>ONLY!</span></div>\n"; echo "<input type='text' id='sa_css_id' name='sa_css_id' value='" . esc_attr( $css_id ) . "'/>\n"; echo "<div id='css_note_text'>To style slides use CSS selector:</div>"; echo "<div id='css_note_value'>#" . esc_html( $css_id ) . ' .owl-item</div>'; echo "<div class='ca_style_hr'></div>\n"; // SLIDER PADDING (TOP, RIGHT, BOTTOM, LEFT). $wrapper_padd_top = get_post_meta( $post->ID, 'sa_wrapper_padd_top', true ); if ( '' === $wrapper_padd_top ) { $wrapper_padd_top = '0'; } $wrapper_padd_right = get_post_meta( $post->ID, 'sa_wrapper_padd_right', true ); if ( '' === $wrapper_padd_right ) { $wrapper_padd_right = '0'; } $wrapper_padd_bottom = get_post_meta( $post->ID, 'sa_wrapper_padd_bottom', true ); if ( '' === $wrapper_padd_bottom ) { $wrapper_padd_bottom = '0'; } $wrapper_padd_left = get_post_meta( $post->ID, 'sa_wrapper_padd_left', true ); if ( '' === $wrapper_padd_left ) { $wrapper_padd_left = '0'; } $tooltip = 'Padding space around the entire carousel/slider'; echo "<h4>Padding <span>(pixels)</span>:<em class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'></em></h4>"; echo "<div class='ca_style_padding'>"; echo "<div id='padd_top'>"; echo "<input type='text' id='sa_wrapper_padd_top' name='sa_wrapper_padd_top' value='" . esc_attr( $wrapper_padd_top ) . "'></div>"; echo "<div id='padd_right'>"; echo "<input type='text' id='sa_wrapper_padd_right' name='sa_wrapper_padd_right' value='" . esc_attr( $wrapper_padd_right ) . "'></div>"; echo "<div type='text' id='padd_bottom'>"; echo "<input type='text' id='sa_wrapper_padd_bottom' name='sa_wrapper_padd_bottom' value='" . esc_attr( $wrapper_padd_bottom ) . "'></div>"; echo "<div id='padd_left'>"; echo "<input type='text' id='sa_wrapper_padd_left' name='sa_wrapper_padd_left' value='" . esc_attr( $wrapper_padd_left ) . "'></div>"; echo "</div>\n"; echo "<div style='clear:both; float:none; width:100%; height:10px;'></div>"; $tooltip = 'Style settings for the slider navigation arrows and slider pagination'; echo "<h4>Slider Navigation:<em class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'></em></h4>"; // AUTOHIDE ARROWS. $autohide_arrows = get_post_meta( $post->ID, 'sa_autohide_arrows', true ); if ( '' === $autohide_arrows ) { $autohide_arrows = '1'; } echo "<div class='ca_style_setting_line'><span style='width:140px;'>Autohide Arrows</span>"; if ( '1' === $autohide_arrows ) { echo "<input type='checkbox' id='sa_autohide_arrows' name='sa_autohide_arrows' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_autohide_arrows' name='sa_autohide_arrows' value='1'/>"; } echo "</div>\n"; // SHOW DOT PER SLIDE. $dot_per_slide = get_post_meta( $post->ID, 'sa_dot_per_slide', true ); if ( '' === $dot_per_slide ) { $dot_per_slide = '0'; } echo "<div class='ca_style_setting_line'><span style='width:140px;'>Show 1 Dot Per Slide</span>"; if ( '1' === $dot_per_slide ) { echo "<input type='checkbox' id='sa_dot_per_slide' name='sa_dot_per_slide' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_dot_per_slide' name='sa_dot_per_slide' value='1'/>"; } echo "</div>\n"; $tooltip = 'The background color and border around the entire carousel/slider'; echo "<h4>Background/Border:<em class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'></em></h4>"; // SLIDER BACKGROUND COLOR. $background_color = get_post_meta( $post->ID, 'sa_background_color', true ); if ( '' === $background_color ) { $background_color = 'rgba(0,0,0,0)'; } echo "<div class='ca_style_setting_line'><span>Background:</span>"; echo "<input type='text' id='sa_background_color' name='sa_background_color' value='" . esc_attr( $background_color ) . "'></div>\n"; // SLIDER BORDER (WIDTH & COLOR). $border_width = get_post_meta( $post->ID, 'sa_border_width', true ); if ( '' === $border_width ) { $border_width = '0'; } $border_color = get_post_meta( $post->ID, 'sa_border_color', true ); if ( '' === $border_color ) { $border_color = 'rgba(0,0,0,0)'; } echo "<div class='ca_style_setting_line'><span>Border Style:</span>"; echo "<input type='text' id='sa_border_width' name='sa_border_width' value='" . esc_attr( $border_width ) . "'><em>px</em>"; echo "<input type='text' id='sa_border_color' name='sa_border_color' value='" . esc_attr( $border_color ) . "'></div>\n"; // SLIDER BORDER RADIUS. $border_radius = get_post_meta( $post->ID, 'sa_border_radius', true ); if ( '' === $border_radius ) { $border_radius = '0'; } echo "<div class='ca_style_setting_line'><span>Border Radius:</span>"; echo "<input type='text' id='sa_border_radius' name='sa_border_radius' value='" . esc_attr( $border_radius ) . "'></div>\n"; echo "<div class='ca_style_hr' style='margin-top:10px;'></div>\n"; $tooltip = 'The style settings for all slides (within the slider/carousel)'; echo "<h4>Slide Style:<em class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'></em></h4>"; // SLIDE - MINIMUM HEIGHT. $slide_min_height = get_post_meta( $post->ID, 'sa_slide_min_height_perc', true ); if ( '' === $slide_min_height ) { $slide_min_height = '50'; } echo "<div style='padding:5px 0px 10px;'>\n"; $tooltip = 'The minimum height of each slide. Can be set to a percentage of the slide width, or for image sliders set to a 4:3 or 16:9 aspect ratio.'; echo "<div class='ca_style_setting_line' id='ca_style_min_height' style='padding-bottom:7px !important;'>"; echo "<span class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'>Min Height:</span><br/>"; if ( 'aspect43' === $slide_min_height ) { echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='percent' style='margin-left:20px !important;'/><em>%</em>"; echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='px'/><em>px</em>"; echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='43' checked/><em>4:3</em>"; echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='169'/><em>16:9</em>"; } elseif ( 'aspect169' === $slide_min_height ) { echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='percent' style='margin-left:20px !important;'/><em>%</em>"; echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='px'/><em>px</em>"; echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='43'/><em>4:3</em>"; echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='169' checked/><em>16:9</em>"; } elseif ( strpos( $slide_min_height, 'px' ) !== false ) { echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='percent' style='margin-left:20px !important;'/><em>%</em>"; echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='px' checked/><em>px</em>"; echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='43'/><em>4:3</em>"; echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='169'/><em>16:9</em>"; } else { echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='percent' style='margin-left:20px !important;' checked/><em>%</em>"; echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='px'/><em>px</em>"; echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='43'/><em>4:3</em>"; echo "<input type='radio' name='sa_slide_min_height_type' class='sa_slide_min_height_type' value='169'/><em>16:9</em>"; } echo "</div>\n"; if ( ( 'aspect43' === $slide_min_height ) || ( 'aspect169' === $slide_min_height ) ) { $mh_suffix = ''; echo "<div class='ca_style_setting_line' id='sa_slide_min_height_wrapper' style='display:none;'>"; echo "<input type='text' id='sa_slide_min_height' name='sa_slide_min_height' value='" . esc_attr( $slide_min_height ) . "'/>"; echo "<em id='mh_suffix'>" . esc_html( $mh_suffix ) . "</em></div>\n"; echo "<input type='hidden' id='sa_slide_min_height_hidden' name='sa_slide_min_height_hidden' value='0'/>\n"; } else { if ( strpos( $slide_min_height, 'px' ) !== false ) { $mh_value = str_replace( 'px', '', $slide_min_height ); $mh_suffix = 'px'; } else { $mh_value = $slide_min_height; $mh_suffix = '%'; } echo "<div class='ca_style_setting_line' id='sa_slide_min_height_wrapper'><span style='width:20px;'> </span>"; echo "<input type='text' id='sa_slide_min_height' name='sa_slide_min_height' value='" . esc_attr( $mh_value ) . "'/>"; echo "<em id='mh_suffix'>" . esc_html( $mh_suffix ) . "</em></div>\n"; echo "<input type='hidden' id='sa_slide_min_height_hidden' name='sa_slide_min_height_hidden' value='" . esc_attr( $mh_value ) . "'/>\n"; } echo "</div>\n"; // SLIDE - PADDING TOP/BOTTOM. $slide_padding_tb = get_post_meta( $post->ID, 'sa_slide_padding_tb', true ); if ( '' === $slide_padding_tb ) { $slide_padding_tb = '5'; } $tooltip = 'Padding space top/bottom for each individual slide'; echo "<div class='ca_style_setting_line' id='ca_style_padding_top_bottom'><span class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'>Padding:</span>"; echo "<input type='text' id='sa_slide_padding_tb' name='sa_slide_padding_tb' value='" . esc_attr( $slide_padding_tb ) . "'><em>%</em></div>\n"; // SLIDE - PADDING LEFT/RIGHT. $slide_padding_lr = get_post_meta( $post->ID, 'sa_slide_padding_lr', true ); if ( '' === $slide_padding_lr ) { $slide_padding_lr = '5'; } $tooltip = 'Padding space left/right for each individual slide'; echo "<div class='ca_style_setting_line' id='ca_style_padding_left_right'><span class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'>Padding:</span>"; echo "<input type='text' id='sa_slide_padding_lr' name='sa_slide_padding_lr' value='" . esc_attr( $slide_padding_lr ) . "'><em>%</em></div>\n"; // SLIDE - MARGIN LEFT/RIGHT. $slide_margin_lr = get_post_meta( $post->ID, 'sa_slide_margin_lr', true ); if ( '' === $slide_margin_lr ) { $slide_margin_lr = '0'; } $tooltip = 'Margin space left and right of each slide'; echo "<div class='ca_style_setting_line' id='ca_style_margin_left_right'><span class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'>Margin:</span>"; echo "<input type='text' id='sa_slide_margin_lr' name='sa_slide_margin_lr' value='" . esc_attr( $slide_margin_lr ) . "'><em>%</em></div>\n"; $tooltip = 'The link/popup buttons that appear on a slide'; echo "<h4>Link/Popup Icons:<em class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'></em></h4>"; // LINK/POPUP ICONS - ICON LOCATION. $slide_icons_location = get_post_meta( $post->ID, 'sa_slide_icons_location', true ); if ( '' === $slide_icons_location ) { $slide_icons_location = 'Center Center'; } echo "<div class='ca_style_setting_line'><span>Icon Location</span>"; echo "<select id='sa_slide_icons_location' name='sa_slide_icons_location'>"; $option_arr = array(); $option_arr[0] = 'Center Center'; $option_arr[1] = 'Top Left'; $option_arr[2] = 'Top Center'; $option_arr[3] = 'Top Right'; $option_arr[4] = 'Bottom Left'; $option_arr[5] = 'Bottom Center'; $option_arr[6] = 'Bottom Right'; $tot_opt = count( $option_arr ); for ( $i = 0; $i < $tot_opt; $i++ ) { if ( $option_arr[ $i ] === $slide_icons_location ) { echo "<option value='" . esc_attr( $option_arr[ $i ] ) . "' selected>" . esc_html( $option_arr[ $i ] ) . '</option>'; } else { echo "<option value='" . esc_attr( $option_arr[ $i ] ) . "'>" . esc_html( $option_arr[ $i ] ) . '</option>'; } } echo "</select></div>\n"; // LINK/POPUP ICONS - ALWAYS VISIBLE. $slide_icons_visible = get_post_meta( $post->ID, 'sa_slide_icons_visible', true ); if ( '1' !== $slide_icons_visible ) { $slide_icons_visible = '0'; } echo "<div class='ca_style_setting_line'><span>Always Visible</span>"; if ( '1' === $slide_icons_visible ) { echo "<input type='checkbox' id='sa_slide_icons_visible' name='sa_slide_icons_visible' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_slide_icons_visible' name='sa_slide_icons_visible' value='1'/>"; } echo "</div>\n"; // LINK/POPUP ICONS - COLOR SCHEME. $slide_icons_color = get_post_meta( $post->ID, 'sa_slide_icons_color', true ); if ( '' === $slide_icons_color ) { $slide_icons_location = 'white'; } echo "<div class='ca_style_setting_line'><span>Color Scheme</span>"; echo "<select id='sa_slide_icons_color' name='sa_slide_icons_color'>"; if ( 'black' === $slide_icons_color ) { echo "<option value='white'>White</option>"; echo "<option value='black' selected>Black</option>"; } else { echo "<option value='white selected'>White</option>"; echo "<option value='black'>Black</option>"; } echo "</select></div>\n"; // LINK/POPUP ICONS - FULL SLIDE LINKS. $slide_icons_fullslide = get_post_meta( $post->ID, 'sa_slide_icons_fullslide', true ); if ( '1' !== $slide_icons_fullslide ) { $slide_icons_fullslide = '0'; } echo "<div class='ca_style_setting_line'><span>Full Slide Links</span>"; if ( '1' === $slide_icons_fullslide ) { echo "<input type='checkbox' id='sa_slide_icons_fullslide' name='sa_slide_icons_fullslide' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_slide_icons_fullslide' name='sa_slide_icons_fullslide' value='1'/>"; } $tooltip = 'This makes the entire slide area a clickable link. NOTE: This feature is '; $tooltip .= 'disabled if you have both a slide link AND a popup link for a slide.'; $tt_style = 'margin:0px 0px -3px 5px; cursor:help;'; echo "<em class='sa_tooltip' style='" . esc_attr( $tt_style ) . "' title='" . esc_attr( $tooltip ) . "'></em>"; echo "</div>\n"; // ##### OTHER SETTINGS ##### echo "<h4 style='margin-top:10px !important;'>Other Settings:</h4>"; // FETCH OTHER SETTINGS POST META. $other_settings = get_post_meta( $post->ID, 'sa_other_settings', true ); if ( '' !== $other_settings ) { $other_settings_arr = explode( '|', $other_settings ); } // setting 1 - sa_window_onload. if ( isset( $other_settings_arr ) && ( '' !== $other_settings_arr[0] ) ) { $window_onload = $other_settings_arr[0]; } else { $window_onload = get_post_meta( $post->ID, 'sa_window_onload', true ); if ( '' === $window_onload ) { $window_onload = '0'; } } // setting 2 - sa_strip_javascript. if ( isset( $other_settings_arr ) && ( '' !== $other_settings_arr[1] ) ) { $strip_javascript = $other_settings_arr[1]; } else { $strip_javascript = get_post_meta( $post->ID, 'sa_strip_javascript', true ); if ( '' === $strip_javascript ) { $strip_javascript = '0'; } } // setting 3 - sa_lazy_load_images. if ( isset( $other_settings_arr ) && ( '' !== $other_settings_arr[2] ) ) { $lazy_load_images = $other_settings_arr[2]; } else { $lazy_load_images = get_post_meta( $post->ID, 'sa_lazy_load_images', true ); if ( '' === $lazy_load_images ) { $lazy_load_images = '0'; } } // setting 4 - sa_ulli_containers. if ( isset( $other_settings_arr ) && ( '' !== $other_settings_arr[3] ) ) { $ulli_containers = $other_settings_arr[3]; } else { $ulli_containers = get_post_meta( $post->ID, 'sa_ulli_containers', true ); if ( '' === $ulli_containers ) { $ulli_containers = '0'; } } // setting 5 - sa_rtl_slider. if ( isset( $other_settings_arr ) && ( '' !== $other_settings_arr[4] ) ) { $rtl_slider = $other_settings_arr[4]; } else { $rtl_slider = '0'; } // setting 7 - bg_image_size. $bg_image_size = 'full'; if ( isset( $other_settings_arr ) && ( count( $other_settings_arr ) > 6 ) ) { if ( '' !== $other_settings_arr[6] ) { $bg_image_size = $other_settings_arr[6]; } } // setting 8 - sa_disable_slide_ids. if ( isset( $other_settings_arr ) && ( count( $other_settings_arr ) > 7 ) ) { $disable_slide_ids = $other_settings_arr[7]; } else { $disable_slide_ids = '0'; } // USE 'DOMContentLoaded' EVENT (checkbox). $tooltip = 'Load the Slide Anything JavaScript during the DOMContentLoaded event. Use this option if jQuery '; $tooltip .= 'is loading in your theme footer and you are getting the JavaScript error message '; $tooltip .= '"Uncaught ReferenceError: jQuery is not defined".'; echo "<div class='sa_window_onload_line'>"; echo "<span class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'></span><span style='min-width:160px;'>DOMContentLoaded event:</span>"; if ( '1' === $window_onload ) { echo "<input type='checkbox' id='sa_window_onload' name='sa_window_onload' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_window_onload' name='sa_window_onload' value='1'/>"; } echo "</div>\n"; echo "<div style='display:none !important;'>"; echo "<input type='checkbox' id='sa_lazy_load_images' name='sa_lazy_load_images' value='0'/>"; echo "</div>\n"; // Use UL and LI Containers. $tooltip = 'Use "UL" as the DOM element for "owl-stage" and use "LI" as the DOM elements for "owl-item".'; echo "<div class='sa_window_onload_line'>"; echo "<span class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'></span><span style='min-width:160px;'>Use UL and LI Containers:</span>"; if ( '1' === $ulli_containers ) { echo "<input type='checkbox' id='sa_ulli_containers' name='sa_ulli_containers' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_ulli_containers' name='sa_ulli_containers' value='1'/>"; } echo "</div>\n"; // Right to Left Slider. $tooltip = 'Change the direction of the slider to be right to left.'; echo "<div class='sa_window_onload_line'>"; echo "<span class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'></span><span style='min-width:160px;'>Right to Left Slider:</span>"; if ( '1' === $rtl_slider ) { echo "<input type='checkbox' id='sa_rtl_slider' name='sa_rtl_slider' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_rtl_slider' name='sa_rtl_slider' value='1'/>"; } echo "</div>\n"; // Don't use Slide IDs. $tooltip = 'Do not use a unique CSS ID to identify each slide container - use a unique CSS Class instead.'; echo "<div class='sa_window_onload_line'>"; echo "<span class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'></span><span style='min-width:160px;'>Don't use CSS IDs for slides:</span>"; if ( '1' === $disable_slide_ids ) { echo "<input type='checkbox' id='sa_disable_slide_ids' name='sa_disable_slide_ids' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_disable_slide_ids' name='sa_disable_slide_ids' value='1'/>"; } echo "</div>\n"; // Start Position. $num_slides = intval( get_post_meta( $post->ID, 'sa_num_slides', true ) ); if ( '' === $num_slides ) { $start_pos = 1; } else { $start_pos = intval( get_post_meta( $post->ID, 'sa_start_pos', true ) ); if ( '' === $start_pos ) { $start_pos = 1; } $tooltip = 'Which slide number to start display first'; echo "<div class='sa_window_onload_line'>"; echo "<span class='sa_tooltip' title='" . esc_attr( $tooltip ) . "'></span><span style='min-width:160px;'>Starting Slide Number:</span>"; echo "<select name='sa_start_pos'>"; for ( $i = 1; $i <= $num_slides; $i++ ) { if ( $i === $start_pos ) { echo "<option value='" . esc_attr( $i ) . "' selected>" . esc_html( $i ) . '</option>'; } else { echo "<option value='" . esc_attr( $i ) . "'>" . esc_html( $i ) . '</option>'; } } echo '</select>'; echo "</div>\n"; } // SLIDE BACKGROUND IMAGE SIZE. global $_wp_additional_image_sizes; $image_size_arr = array(); // get WordPress image size data and save into and array. $image_size_arr[0]['value'] = 'full'; $image_size_arr[0]['desc'] = 'Full Size'; $count = 1; foreach ( get_intermediate_image_sizes() as $image_size ) { if ( in_array( $image_size, array( 'thumbnail', 'medium', 'medium_large', 'large' ), true ) ) { $width = get_option( "{$image_size}_size_w" ); $height = get_option( "{$image_size}_size_h" ); } elseif ( isset( $_wp_additional_image_sizes[ $image_size ] ) ) { $width = $_wp_additional_image_sizes[ $image_size ]['width']; $height = $_wp_additional_image_sizes[ $image_size ]['height']; } if ( ( 0 !== $width ) && ( 0 !== $height ) ) { $image_size_arr[ $count ]['value'] = $image_size; $image_size_arr[ $count ]['desc'] = $image_size . ' (' . $width . '×' . $height . ')'; $count++; } } // display the dropdown input box allowing user to select background image size. $tooltip = 'Allows you to set the WordPress image size to use for your slide background images.'; echo "<div class='bg_image_size_wrapper'>\n<div>\n"; echo "<em class='sa_tooltip' href='' title='" . esc_attr( $tooltip ) . "'></em>"; echo '<span>Background Image Size:</span>'; echo "<div style='float:none; clear:both; width:100%; height:1px; padding:0px !important;'></div>\n</div>\n"; echo "<select name='bg_image_size'>"; $tot_size_arr = count( $image_size_arr ); for ( $j = 0; $j < $tot_size_arr; $j++ ) { if ( $bg_image_size === $image_size_arr[ $j ]['value'] ) { echo "<option value='" . esc_attr( $image_size_arr[ $j ]['value'] ) . "' selected>" . esc_html( $image_size_arr[ $j ]['desc'] ) . '</option>'; } else { echo "<option value='" . esc_attr( $image_size_arr[ $j ]['value'] ) . "'>" . esc_html( $image_size_arr[ $j ]['desc'] ) . '</option>'; } } echo "</select>\n"; echo "</div>\n"; // .bg_image_size_wrapper echo "</div>\n"; } /** * ##### META BOX CONTENT - 'Thumbnails (Pagination)' BOX ##### * * @param array $post Custom Post 'sa_slider'. */ function cpt_slider_thumbs_content( $post ) { // get WordPress image size data and save into and array. global $_wp_additional_image_sizes; $image_size_arr = array(); $count = 0; foreach ( get_intermediate_image_sizes() as $image_size ) { if ( in_array( $image_size, array( 'thumbnail', 'medium', 'medium_large', 'large' ), true ) ) { $width = get_option( "{$image_size}_size_w" ); $height = get_option( "{$image_size}_size_h" ); } elseif ( isset( $_wp_additional_image_sizes[ $image_size ] ) ) { $width = $_wp_additional_image_sizes[ $image_size ]['width']; $height = $_wp_additional_image_sizes[ $image_size ]['height']; } if ( ( 0 !== $width ) && ( 0 !== $height ) ) { $image_size_arr[ $count ]['value'] = $image_size; $image_size_arr[ $count ]['desc'] = $image_size . ' (' . $width . '×' . $height . ')'; $count++; } } // Use thumbnail pagination (checkbox). $thumbs_active = get_post_meta( $post->ID, 'sa_thumbs_active', true ); if ( '' === $thumbs_active ) { $thumbs_active = '0'; } echo "<div class='sa_thumbs_line'><span>Use Thumbnail Pagination:</span>"; if ( '1' === $thumbs_active ) { echo "<input type='checkbox' id='sa_thumbs_active' name='sa_thumbs_active' value='1' checked/>"; } else { echo "<input type='checkbox' id='sa_thumbs_active' name='sa_thumbs_active' value='1'/>"; } echo "</div>\n"; if ( '1' === $thumbs_active ) { echo "<div id='sa_thumbs_settings' style='display:block;'>\n"; } else { echo "<div id='sa_thumbs_settings' style='display:none;'>\n"; } // Thumbs Location (dropdown). $thumbs_location = get_post_meta( $post->ID, 'sa_thumbs_location', true ); if ( '' === $thumbs_location ) { $thumbs_location = 'inside_bottom'; } echo "<div class='sa_thumbs_line'><span>Thumbs Location:</span>"; echo "<select id='sa_thumbs_location' name='sa_thumbs_location'>"; $option_arr = array(); $option_arr[0] = 'Inside Bottom'; $option_arr[1] = 'Inside Top'; $option_arr[2] = 'Inside Left'; $option_arr[3] = 'Inside Right'; $option_arr[4] = 'Outside Bottom'; $tot_opt = count( $option_arr ); for ( $i = 0; $i < $tot_opt; $i++ ) { $value = strtolower( str_replace( ' ', '_', $option_arr[ $i ] ) ); if ( $value === $thumbs_location ) { echo "<option value='" . esc_attr( $value ) . "' selected>" . esc_html( $option_arr[ $i ] ) . '</option>'; } else { echo "<option value='" . esc_attr( $value ) . "'>" . esc_html( $option_arr[ $i ] ) . '</option>'; } } echo "</select></div>\n"; // Thumbnail Image Size (dropdown). $thumbs_image_size = get_post_meta( $post->ID, 'sa_thumbs_image_size', true ); if ( '' === $thumbs_image_size ) { $thumbs_image_size = 'thumbnail'; } echo "<div class='sa_thumbs_line'><span>Thumbnail Image Size:</span>"; echo "<select id='sa_thumbs_image_size' name='sa_thumbs_image_size'>"; $tot_img_arr = count( $image_size_arr ); for ( $i = 0; $i < $tot_img_arr; $i++ ) { if ( $image_size_arr[ $i ]['value'] === $thumbs_image_size ) { echo "<option value='" . esc_attr( $image_size_arr[ $i ]['value'] ) . "' selected>" . esc_html( $image_size_arr[ $i ]['desc'] ) . '</option>'; } else { echo "<option value='" . esc_attr( $image_size_arr[ $i ]['value'] ) . "'>" . esc_html( $image_size_arr[ $i ]['desc'] ) . '</option>'; } } echo "</select></div>\n"; // Container Padding. $thumbs_padding = get_post_meta( $post->ID, 'sa_thumbs_padding', true ); if ( '' === $thumbs_padding ) { $thumbs_padding = '3'; } echo "<div class='sa_thumbs_line'><span>Container Padding:</span>"; echo "<input type='text' id='sa_thumbs_padding' name='sa_thumbs_padding' value='" . esc_attr( $thumbs_padding ) . "'><em>%</em>"; echo "</div>\n"; // Thumbs Width. $thumbs_width = get_post_meta( $post->ID, 'sa_thumbs_width', true ); if ( '' === $thumbs_width ) { $thumbs_width = '150'; } echo "<div class='sa_thumbs_line'><span>Thumbs Width:</span>"; echo "<input type='text' id='sa_thumbs_width' name='sa_thumbs_width' value='" . esc_attr( $thumbs_width ) . "'><em>px</em>"; echo "</div>\n"; // Thumbs Height. $thumbs_height = get_post_meta( $post->ID, 'sa_thumbs_height', true ); if ( '' === $thumbs_height ) { $thumbs_height = '85'; } echo "<div class='sa_thumbs_line'><span>Thumbs Height:</span>"; echo "<input type='text' id='sa_thumbs_height' name='sa_thumbs_height' value='" . esc_attr( $thumbs_height ) . "'><em>px</em>"; echo "</div>\n"; // Thumbs Opacity. $thumbs_opacity = get_post_meta( $post->ID, 'sa_thumbs_opacity', true ); if ( '' === $thumbs_opacity ) { $thumbs_opacity = '50'; } echo "<div class='sa_thumbs_line'><span>Thumbs Opacity:</span>"; echo "<input type='text' id='sa_thumbs_opacity' name='sa_thumbs_opacity' value='" . esc_attr( $thumbs_opacity ) . "'><em>%</em>"; echo "</div>\n"; echo '<h4>Active Thumb Border Style</h4>'; // Border Width. $thumbs_border_width = get_post_meta( $post->ID, 'sa_thumbs_border_width', true ); if ( '' === $thumbs_border_width ) { $thumbs_border_width = '0'; } echo "<div class='sa_thumbs_line'><span>Border Width:</span>"; echo "<input type='text' id='sa_thumbs_border_width' name='sa_thumbs_border_width' value='" . esc_attr( $thumbs_border_width ) . "'><em>px</em>"; echo "</div>\n"; // Border Color. $thumbs_border_color = get_post_meta( $post->ID, 'sa_thumbs_border_color', true ); if ( '' === $thumbs_border_color ) { $thumbs_border_color = '#ffffff'; } echo "<div class='sa_thumbs_line'><span>Border Color:</span>"; echo "<input type='text' id='sa_thumbs_border_color' name='sa_thumbs_border_color' value='" . esc_attr( $thumbs_border_color ) . "'></div>\n"; echo '<h4>Responsive Thumb Sizes</h4>'; // Tablet Thumb Size. $thumbs_resp_tablet = get_post_meta( $post->ID, 'sa_thumbs_resp_tablet', true ); if ( '' === $thumbs_resp_tablet ) { $thumbs_resp_tablet = '75'; } echo "<div class='sa_thumbs_line'><span>Tablet Thumb Size:</span>"; echo "<input type='text' id='sa_thumbs_resp_tablet' name='sa_thumbs_resp_tablet' value='" . esc_attr( $thumbs_resp_tablet ) . "'><em>%</em>"; echo "</div>\n"; // Mobile Thumb Size. $thumbs_resp_mobile = get_post_meta( $post->ID, 'sa_thumbs_resp_mobile', true ); if ( '' === $thumbs_resp_mobile ) { $thumbs_resp_mobile = '50'; } echo "<div class='sa_thumbs_line'><span>Mobile Thumb Size:</span>"; echo "<input type='text' id='sa_thumbs_resp_mobile' name='sa_thumbs_resp_mobile' value='" . esc_attr( $thumbs_resp_mobile ) . "'><em>%</em>"; echo "</div>\n"; echo "</div>\n"; // #sa_thumbs_settings } /** * // ##### ACTION HOOK - SAVE CUSTOM POST TYPE ('Slide Anything') DATA ##### */ function cpt_slider_save_postdata() { global $post; // ### REMOVE XSS ATTACK VULNERABILITY FROM SLIDER POST TITLES ### global $wpdb; if ( isset( $post->ID ) && ( '' !== $post->ID ) ) { $post_title = get_the_title( $post->ID ); $sanitize_title = sanitize_text_field( $post_title ); $where = array( 'ID' => $post->ID ); $wpdb->update( $wpdb->posts, array( 'post_title' => $sanitize_title ), $where ); // db call ok; no-cache ok. } // ### VERIFY 1) LOGGED-IN USER IS ADMINISTRATOR AND 2) VALID NONCE TO PREVENT CSRF HACKER ATTACKS ### if ( current_user_can( 'edit_pages' ) && isset( $_POST['nonce_save_slider'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce_save_slider'] ) ), basename( __FILE__ ) ) ) { if ( isset( $_POST['sa_num_slides'] ) ) { $total_slides = intval( $_POST['sa_num_slides'] ); } else { $total_slides = 1; } if ( isset( $_POST['sa_duplicate_slide'] ) ) { if ( ( '' === $_POST['sa_duplicate_slide'] ) || ( '0' === $_POST['sa_duplicate_slide'] ) ) { $duplicate_slide = 0; } else { // A SLIDE NEEDS TO BE DUPLICATED. $duplicate_slide = intval( $_POST['sa_duplicate_slide'] ); } } else { $duplicate_slide = 0; } if ( isset( $_POST['sa_move_slide_up'] ) ) { if ( ( '' === $_POST['sa_move_slide_up'] ) || ( '0' === $_POST['sa_move_slide_up'] ) ) { $move_slide_up = 0; } else { // A SLIDE NEEDS TO BE MOVED. $move_slide_up = intval( $_POST['sa_move_slide_up'] ); } } else { $move_slide_up = 0; } // UPDATE CONTENT FOR EACH SLIDE. $slides_saved = 0; for ( $i = 1; $i <= $total_slides; $i++ ) { $slide_edit_id = 'sa_slide' . $i . '_content'; $slide_image_id = 'sa_slide' . $i . '_image_id'; $slide_image_pos = 'sa_slide' . $i . '_image_pos'; $slide_image_size = 'sa_slide' . $i . '_image_size'; $slide_image_repeat = 'sa_slide' . $i . '_image_repeat'; $slide_image_color = 'sa_slide' . $i . '_image_color'; $slide_link_url = 'sa_slide' . $i . '_link_url'; $slide_link_target = 'sa_slide' . $i . '_link_target'; $slide_popup_type = 'sa_slide' . $i . '_popup_type'; $slide_popup_imageid = 'sa_slide' . $i . '_popup_imageid'; $slide_popup_imagetitle = 'sa_slide' . $i . '_popup_imagetitle'; $slide_popup_video_id = 'sa_slide' . $i . '_popup_video_id'; $slide_popup_video_type = 'sa_slide' . $i . '_popup_video_type'; $slide_popup_background = 'sa_slide' . $i . '_popup_background'; $slide_popup_html = 'sa_slide' . $i . '_popup_html'; $slide_popup_shortcode = 'sa_slide' . $i . '_popup_shortcode'; $slide_popup_bgcol = 'sa_slide' . $i . '_popup_bgcol'; $slide_popup_width = 'sa_slide' . $i . '_popup_width'; $slide_content = ''; $slide_image_id_val = 0; $slide_image_pos_val = ''; $slide_image_size_val = ''; $slide_image_repeat_val = ''; $slide_image_color_val = ''; $slide_link_url_val = ''; $slide_link_target_val = ''; if ( isset( $_POST[ $slide_edit_id ] ) && ( '' !== $_POST[ $slide_edit_id ] ) ) { $slide_content = wp_kses_post( wp_unslash( $_POST[ $slide_edit_id ] ) ); } if ( isset( $_POST[ $slide_image_id ] ) ) { $slide_image_id_val = abs( intval( $_POST[ $slide_image_id ] ) ); } if ( isset( $_POST[ $slide_image_pos ] ) ) { $slide_image_pos_val = sanitize_text_field( wp_unslash( $_POST[ $slide_image_pos ] ) ); } if ( isset( $_POST[ $slide_image_size ] ) ) { $slide_image_size_val = sanitize_text_field( wp_unslash( $_POST[ $slide_image_size ] ) ); } if ( isset( $_POST[ $slide_image_repeat ] ) ) { $slide_image_repeat_val = sanitize_text_field( wp_unslash( $_POST[ $slide_image_repeat ] ) ); } if ( isset( $_POST[ $slide_image_color ] ) ) { $slide_image_color_val = sanitize_text_field( wp_unslash( $_POST[ $slide_image_color ] ) ); } if ( isset( $_POST[ $slide_link_url ] ) ) { $slide_link_url_val = esc_url( wp_unslash( $_POST[ $slide_link_url ] ) ); } if ( isset( $_POST[ $slide_link_target ] ) ) { $slide_link_target_val = sanitize_text_field( wp_unslash( $_POST[ $slide_link_target ] ) ); } $slide_popup_type_val = ''; $slide_popup_imageid_val = 0; $slide_popup_imagetitle_val = ''; $slide_popup_video_id_val = ''; $slide_popup_video_type_val = ''; $slide_popup_background_val = ''; $slide_popup_html_val = ''; $slide_popup_shortcode_val = ''; $slide_popup_bgcol_val = ''; $slide_popup_width_val = 0; if ( isset( $_POST[ $slide_popup_type ] ) ) { $slide_popup_type_val = sanitize_text_field( wp_unslash( $_POST[ $slide_popup_type ] ) ); } if ( isset( $_POST[ $slide_popup_imageid ] ) ) { $slide_popup_imageid_val = sanitize_text_field( wp_unslash( $_POST[ $slide_popup_imageid ] ) ); } if ( isset( $_POST[ $slide_popup_imagetitle ] ) ) { $slide_popup_imagetitle_val = sanitize_text_field( wp_unslash( $_POST[ $slide_popup_imagetitle ] ) ); } if ( isset( $_POST[ $slide_popup_video_id ] ) ) { $slide_popup_video_id_val = sanitize_text_field( wp_unslash( $_POST[ $slide_popup_video_id ] ) ); } if ( isset( $_POST[ $slide_popup_video_type ] ) ) { $slide_popup_video_type_val = sanitize_text_field( wp_unslash( $_POST[ $slide_popup_video_type ] ) ); } if ( isset( $_POST[ $slide_popup_background ] ) ) { $slide_popup_background_val = sanitize_text_field( wp_unslash( $_POST[ $slide_popup_background ] ) ); } if ( isset( $_POST[ $slide_popup_html ] ) ) { $slide_popup_html_val = balanceTags( wp_kses_post( wp_unslash( $_POST[ $slide_popup_html ] ) ), true ); } if ( isset( $_POST[ $slide_popup_shortcode ] ) ) { $slide_popup_shortcode_val = sanitize_text_field( wp_unslash( $_POST[ $slide_popup_shortcode ] ) ); } if ( isset( $_POST[ $slide_popup_bgcol ] ) ) { $slide_popup_bgcol_val = sanitize_text_field( wp_unslash( $_POST[ $slide_popup_bgcol ] ) ); } if ( isset( $_POST[ $slide_popup_width ] ) ) { $slide_popup_width_val = abs( intval( $_POST[ $slide_popup_width ] ) ); } // check delete status for slide. $del_status_id = 'sa_slide' . $i . '_delete'; if ( isset( $_POST[ $del_status_id ] ) && ( '' !== $_POST[ $del_status_id ] ) ) { $del_status = sanitize_text_field( wp_unslash( $_POST[ $del_status_id ] ) ); } else { // a new slide has been added. $del_status = '1'; $slide_content = ''; } if ( '1' === $del_status ) { // save slide content only if slide has not been marked for deletion. $slides_saved++; $slide_edit_id_save = 'sa_slide' . $slides_saved . '_content'; $slide_image_data_saved = 'sa_slide' . $slides_saved . '_image_data'; $slide_link_url_saved = 'sa_slide' . $slides_saved . '_link_url'; $slide_link_target_saved = 'sa_slide' . $slides_saved . '_link_target'; $slide_popup_type_saved = 'sa_slide' . $slides_saved . '_popup_type'; $slide_popup_imageid_saved = 'sa_slide' . $slides_saved . '_popup_imageid'; $slide_popup_imagetitle_saved = 'sa_slide' . $slides_saved . '_popup_imagetitle'; $slide_popup_video_id_saved = 'sa_slide' . $slides_saved . '_popup_video_id'; $slide_popup_video_type_saved = 'sa_slide' . $slides_saved . '_popup_video_type'; $slide_popup_background_saved = 'sa_slide' . $slides_saved . '_popup_background'; $slide_popup_html_saved = 'sa_slide' . $slides_saved . '_popup_html'; $slide_popup_shortcode_saved = 'sa_slide' . $slides_saved . '_popup_shortcode'; $slide_popup_bgcol_saved = 'sa_slide' . $slides_saved . '_popup_bgcol'; $slide_popup_width_saved = 'sa_slide' . $slides_saved . '_popup_width'; update_post_meta( $post->ID, $slide_edit_id_save, $slide_content ); $slide_image_data_val = $slide_image_id_val . '~' . $slide_image_pos_val . '~' . $slide_image_size_val . '~' . $slide_image_repeat_val . '~' . $slide_image_color_val; update_post_meta( $post->ID, $slide_image_data_saved, $slide_image_data_val ); update_post_meta( $post->ID, $slide_link_url_saved, $slide_link_url_val ); update_post_meta( $post->ID, $slide_link_target_saved, $slide_link_target_val ); update_post_meta( $post->ID, $slide_popup_type_saved, $slide_popup_type_val ); update_post_meta( $post->ID, $slide_popup_imageid_saved, $slide_popup_imageid_val ); update_post_meta( $post->ID, $slide_popup_imagetitle_saved, $slide_popup_imagetitle_val ); update_post_meta( $post->ID, $slide_popup_video_id_saved, $slide_popup_video_id_val ); update_post_meta( $post->ID, $slide_popup_video_type_saved, $slide_popup_video_type_val ); update_post_meta( $post->ID, $slide_popup_background_saved, $slide_popup_background_val ); update_post_meta( $post->ID, $slide_popup_html_saved, $slide_popup_html_val ); update_post_meta( $post->ID, $slide_popup_shortcode_saved, $slide_popup_shortcode_val ); update_post_meta( $post->ID, $slide_popup_bgcol_saved, $slide_popup_bgcol_val ); update_post_meta( $post->ID, $slide_popup_width_saved, $slide_popup_width_val ); if ( $i === $duplicate_slide ) { // the 'duplicate slide' button has been click for this slide - create a new slide that is an exact copy of previous slide. $slides_saved++; $slide_edit_id_save = 'sa_slide' . $slides_saved . '_content'; $slide_image_data_saved = 'sa_slide' . $slides_saved . '_image_data'; $slide_link_url_saved = 'sa_slide' . $slides_saved . '_link_url'; $slide_link_target_saved = 'sa_slide' . $slides_saved . '_link_target'; $slide_popup_type_saved = 'sa_slide' . $slides_saved . '_popup_type'; $slide_popup_imageid_saved = 'sa_slide' . $slides_saved . '_popup_imageid'; $slide_popup_imagetitle_saved = 'sa_slide' . $slides_saved . '_popup_imagetitle'; $slide_popup_video_id_saved = 'sa_slide' . $slides_saved . '_popup_video_id'; $slide_popup_video_type_saved = 'sa_slide' . $slides_saved . '_popup_video_type'; $slide_popup_background_saved = 'sa_slide' . $slides_saved . '_popup_background'; $slide_popup_html_saved = 'sa_slide' . $slides_saved . '_popup_html'; $slide_popup_shortcode_saved = 'sa_slide' . $slides_saved . '_popup_shortcode'; $slide_popup_bgcol_saved = 'sa_slide' . $slides_saved . '_popup_bgcol'; $slide_popup_width_saved = 'sa_slide' . $slides_saved . '_popup_width'; update_post_meta( $post->ID, $slide_edit_id_save, $slide_content ); $slide_image_data_val = $slide_image_id_val . '~' . $slide_image_pos_val . '~' . $slide_image_size_val . '~' . $slide_image_repeat_val . '~' . $slide_image_color_val; update_post_meta( $post->ID, $slide_image_data_saved, $slide_image_data_val ); update_post_meta( $post->ID, $slide_link_url_saved, $slide_link_url_val ); update_post_meta( $post->ID, $slide_link_target_saved, $slide_link_target_val ); update_post_meta( $post->ID, $slide_popup_type_saved, $slide_popup_type_val ); update_post_meta( $post->ID, $slide_popup_imageid_saved, $slide_popup_imageid_val ); update_post_meta( $post->ID, $slide_popup_imagetitle_saved, $slide_popup_imagetitle_val ); update_post_meta( $post->ID, $slide_popup_video_id_saved, $slide_popup_video_id_val ); update_post_meta( $post->ID, $slide_popup_video_type_saved, $slide_popup_video_type_val ); update_post_meta( $post->ID, $slide_popup_background_saved, $slide_popup_background_val ); update_post_meta( $post->ID, $slide_popup_html_saved, $slide_popup_html_val ); update_post_meta( $post->ID, $slide_popup_shortcode_saved, $slide_popup_shortcode_val ); update_post_meta( $post->ID, $slide_popup_bgcol_saved, $slide_popup_bgcol_val ); update_post_meta( $post->ID, $slide_popup_width_saved, $slide_popup_width_val ); } } } if ( 0 !== $move_slide_up ) { // A SLIDE NEEDS TO BE MOVED (TWO SLIDES ARE SWAPPED). $slide2 = $move_slide_up; $slide1 = intval( $move_slide_up ) - 1; $slide1_content = ''; $slide1_image_id = 0; $slide1_image_pos = ''; $slide1_image_size = ''; $slide1_image_repeat = ''; $slide1_image_color = ''; $slide1_link_url = ''; $slide1_link_target = ''; if ( isset( $_POST[ 'sa_slide' . $slide1 . '_content' ] ) ) { $slide1_content = wp_kses_post( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_content' ] ) ); // $slide1_content = balanceTags( sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_content' ] ) ), true ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_image_id' ] ) ) { $slide1_image_id = abs( intval( $_POST[ 'sa_slide' . $slide1 . '_image_id' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_image_pos' ] ) ) { $slide1_image_pos = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_image_pos' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_image_size' ] ) ) { $slide1_image_size = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_image_size' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_image_repeat' ] ) ) { $slide1_image_repeat = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_image_repeat' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_image_color' ] ) ) { $slide1_image_color = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_image_color' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_link_url' ] ) ) { $slide1_link_url = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_link_url' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_link_target' ] ) ) { $slide1_link_target = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_link_target' ] ) ); } $slide1_popup_type = ''; $slide1_popup_imageid = ''; $slide1_popup_imagetitle = ''; $slide1_popup_video_id = ''; $slide1_popup_video_type = ''; $slide1_popup_background = ''; $slide1_popup_html = ''; $slide1_popup_shortcode = ''; $slide1_popup_bgcol = ''; $slide1_popup_width = 0; if ( isset( $_POST[ 'sa_slide' . $slide1 . '_popup_type' ] ) ) { $slide1_popup_type = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_popup_type' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_popup_imageid' ] ) ) { $slide1_popup_imageid = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_popup_imageid' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_popup_imagetitle' ] ) ) { $slide1_popup_imagetitle = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_popup_imagetitle' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_popup_video_id' ] ) ) { $slide1_popup_video_id = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_popup_video_id' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_popup_video_type' ] ) ) { $slide1_popup_video_type = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_popup_video_type' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_popup_background' ] ) ) { $slide1_popup_background = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_popup_background' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_popup_html' ] ) ) { $slide1_popup_html = balanceTags( wp_kses_post( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_popup_html' ] ) ), true ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_popup_shortcode' ] ) ) { $slide1_popup_shortcode = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_popup_shortcode' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_popup_bgcol' ] ) ) { $slide1_popup_bgcol = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide1 . '_popup_bgcol' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide1 . '_popup_width' ] ) ) { $slide1_popup_width = abs( intval( $_POST[ 'sa_slide' . $slide1 . '_popup_width' ] ) ); } $slide2_content = ''; $slide2_image_id = 0; $slide2_image_pos = ''; $slide2_image_size = ''; $slide2_image_repeat = ''; $slide2_image_color = ''; $slide2_link_url = ''; $slide2_link_target = ''; if ( isset( $_POST[ 'sa_slide' . $slide2 . '_content' ] ) ) { $slide2_content = wp_kses_post( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_content' ] ) ); // $slide2_content = balanceTags( sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_content' ] ) ), true ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_image_id' ] ) ) { $slide2_image_id = abs( intval( $_POST[ 'sa_slide' . $slide2 . '_image_id' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_image_pos' ] ) ) { $slide2_image_pos = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_image_pos' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_image_size' ] ) ) { $slide2_image_size = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_image_size' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_image_repeat' ] ) ) { $slide2_image_repeat = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_image_repeat' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_image_color' ] ) ) { $slide2_image_color = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_image_color' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_link_url' ] ) ) { $slide2_link_url = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_link_url' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_link_target' ] ) ) { $slide2_link_target = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_link_target' ] ) ); } $slide2_popup_type = ''; $slide2_popup_imageid = ''; $slide2_popup_imagetitle = ''; $slide2_popup_video_id = ''; $slide2_popup_video_type = ''; $slide2_popup_background = ''; $slide2_popup_html = ''; $slide2_popup_shortcode = ''; $slide2_popup_bgcol = ''; $slide2_popup_width = 0; if ( isset( $_POST[ 'sa_slide' . $slide2 . '_popup_type' ] ) ) { $slide2_popup_type = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_popup_type' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_popup_imageid' ] ) ) { $slide2_popup_imageid = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_popup_imageid' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_popup_imagetitle' ] ) ) { $slide2_popup_imagetitle = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_popup_imagetitle' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_popup_video_id' ] ) ) { $slide2_popup_video_id = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_popup_video_id' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_popup_video_type' ] ) ) { $slide2_popup_video_type = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_popup_video_type' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_popup_background' ] ) ) { $slide2_popup_background = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_popup_background' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_popup_html' ] ) ) { $slide2_popup_html = balanceTags( wp_kses_post( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_popup_html' ] ) ), true ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_popup_shortcode' ] ) ) { $slide2_popup_shortcode = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_popup_shortcode' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_popup_bgcol' ] ) ) { $slide2_popup_bgcol = sanitize_text_field( wp_unslash( $_POST[ 'sa_slide' . $slide2 . '_popup_bgcol' ] ) ); } if ( isset( $_POST[ 'sa_slide' . $slide2 . '_popup_width' ] ) ) { $slide2_popup_width = abs( intval( $_POST[ 'sa_slide' . $slide2 . '_popup_width' ] ) ); } update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_content', $slide1_content ); $slide1_image_data = $slide1_image_id . '~' . $slide1_image_pos . '~' . $slide1_image_size . '~' . $slide1_image_repeat . '~' . $slide1_image_color; update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_image_data', $slide1_image_data ); update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_link_url', $slide1_link_url ); update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_link_target', $slide1_link_target ); update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_popup_type', $slide1_popup_type ); update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_popup_imageid', $slide1_popup_imageid ); update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_popup_imagetitle', $slide1_popup_imagetitle ); update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_popup_video_id', $slide1_popup_video_id ); update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_popup_video_type', $slide1_popup_video_type ); update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_popup_background', $slide1_popup_background ); update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_popup_html', $slide1_popup_html ); update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_popup_shortcode', $slide1_popup_shortcode ); update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_popup_bgcol', $slide1_popup_bgcol ); update_post_meta( $post->ID, 'sa_slide' . $slide2 . '_popup_width', $slide1_popup_width ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_content', $slide2_content ); $slide2_image_data = $slide2_image_id . '~' . $slide2_image_pos . '~' . $slide2_image_size . '~' . $slide2_image_repeat . '~' . $slide2_image_color; update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_image_data', $slide2_image_data ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_link_url', $slide2_link_url ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_link_target', $slide2_link_target ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_popup_type', $slide2_popup_type ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_popup_imageid', $slide2_popup_imageid ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_popup_imagetitle', $slide2_popup_imagetitle ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_popup_video_id', $slide2_popup_video_id ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_popup_video_type', $slide2_popup_video_type ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_popup_background', $slide2_popup_background ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_popup_html', $slide2_popup_html ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_popup_shortcode', $slide2_popup_shortcode ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_popup_bgcol', $slide2_popup_bgcol ); update_post_meta( $post->ID, 'sa_slide' . $slide1 . '_popup_width', $slide2_popup_width ); } // UPDATE SLIDE CONTENT CHARACTER COUNT. $total_slides = get_post_meta( $post->ID, 'sa_num_slides', true ); for ( $i = 1; $i <= $total_slides; $i++ ) { $slide_content = get_post_meta( $post->ID, 'sa_slide' . $i . '_content', true ); $char_count = strlen( $slide_content ); update_post_meta( $post->ID, 'sa_slide' . $i . '_char_count', $char_count ); } // UPDATE SLIDER SETTINGS. update_post_meta( $post->ID, 'sa_num_slides', abs( intval( $slides_saved ) ) ); if ( isset( $_POST['sa_disable_visual_editor'] ) && ( '1' === $_POST['sa_disable_visual_editor'] ) ) { update_post_meta( $post->ID, 'sa_disable_visual_editor', '1' ); } else { update_post_meta( $post->ID, 'sa_disable_visual_editor', '0' ); } if ( isset( $_POST['sa_info_added'] ) ) { update_post_meta( $post->ID, 'sa_info_added', abs( intval( $_POST['sa_info_added'] ) ) ); } if ( isset( $_POST['sa_info_deleted'] ) ) { update_post_meta( $post->ID, 'sa_info_deleted', abs( intval( $_POST['sa_info_deleted'] ) ) ); } if ( isset( $_POST['sa_duplicate_slide'] ) ) { update_post_meta( $post->ID, 'sa_duplicate_slide', abs( intval( $_POST['sa_duplicate_slide'] ) ) ); } if ( isset( $_POST['sa_info_duplicated'] ) ) { update_post_meta( $post->ID, 'sa_info_duplicated', abs( intval( $_POST['sa_info_duplicated'] ) ) ); } if ( isset( $_POST['sa_move_slide_up'] ) ) { update_post_meta( $post->ID, 'sa_move_slide_up', abs( intval( $_POST['sa_move_slide_up'] ) ) ); } if ( isset( $_POST['sa_info_moved'] ) ) { update_post_meta( $post->ID, 'sa_info_moved', abs( intval( $_POST['sa_info_moved'] ) ) ); } if ( isset( $_POST['sa_slide_duration'] ) ) { update_post_meta( $post->ID, 'sa_slide_duration', abs( floatval( $_POST['sa_slide_duration'] ) ) ); } if ( isset( $_POST['sa_slide_transition'] ) ) { update_post_meta( $post->ID, 'sa_slide_transition', abs( floatval( $_POST['sa_slide_transition'] ) ) ); } if ( isset( $_POST['sa_slide_by'] ) ) { update_post_meta( $post->ID, 'sa_slide_by', abs( floatval( $_POST['sa_slide_by'] ) ) ); } if ( isset( $_POST['sa_loop_slider'] ) && ( '1' === $_POST['sa_loop_slider'] ) ) { update_post_meta( $post->ID, 'sa_loop_slider', '1' ); } else { update_post_meta( $post->ID, 'sa_loop_slider', '0' ); } if ( isset( $_POST['sa_stop_hover'] ) && ( '1' === $_POST['sa_stop_hover'] ) ) { update_post_meta( $post->ID, 'sa_stop_hover', '1' ); } else { update_post_meta( $post->ID, 'sa_stop_hover', '0' ); } if ( isset( $_POST['sa_nav_arrows'] ) && ( '1' === $_POST['sa_nav_arrows'] ) ) { update_post_meta( $post->ID, 'sa_nav_arrows', '1' ); } else { update_post_meta( $post->ID, 'sa_nav_arrows', '0' ); } if ( isset( $_POST['sa_pagination'] ) && ( '1' === $_POST['sa_pagination'] ) ) { update_post_meta( $post->ID, 'sa_pagination', '1' ); } else { update_post_meta( $post->ID, 'sa_pagination', '0' ); } if ( isset( $_POST['sa_random_order'] ) && ( '1' === $_POST['sa_random_order'] ) ) { update_post_meta( $post->ID, 'sa_random_order', '1' ); } else { update_post_meta( $post->ID, 'sa_random_order', '0' ); } if ( isset( $_POST['sa_reverse_order'] ) && ( '1' === $_POST['sa_reverse_order'] ) ) { update_post_meta( $post->ID, 'sa_reverse_order', '1' ); } else { update_post_meta( $post->ID, 'sa_reverse_order', '0' ); } if ( isset( $_POST['sa_shortcodes'] ) && ( '1' === $_POST['sa_shortcodes'] ) ) { update_post_meta( $post->ID, 'sa_shortcodes', '1' ); } else { update_post_meta( $post->ID, 'sa_shortcodes', '0' ); } if ( isset( $_POST['sa_mouse_drag'] ) && ( '1' === $_POST['sa_mouse_drag'] ) ) { update_post_meta( $post->ID, 'sa_mouse_drag', '1' ); } else { update_post_meta( $post->ID, 'sa_mouse_drag', '0' ); } if ( isset( $_POST['sa_touch_drag'] ) && ( '1' === $_POST['sa_touch_drag'] ) ) { update_post_meta( $post->ID, 'sa_touch_drag', '1' ); } else { update_post_meta( $post->ID, 'sa_touch_drag', '0' ); } if ( isset( $_POST['sa_mousewheel'] ) && ( '1' === $_POST['sa_mousewheel'] ) ) { update_post_meta( $post->ID, 'sa_mousewheel', '1' ); } else { update_post_meta( $post->ID, 'sa_mousewheel', '0' ); } if ( isset( $_POST['sa_click_advance'] ) && ( '1' === $_POST['sa_click_advance'] ) ) { update_post_meta( $post->ID, 'sa_click_advance', '1' ); } else { update_post_meta( $post->ID, 'sa_click_advance', '0' ); } if ( isset( $_POST['sa_auto_height'] ) && ( '1' === $_POST['sa_auto_height'] ) ) { update_post_meta( $post->ID, 'sa_auto_height', '1' ); } else { update_post_meta( $post->ID, 'sa_auto_height', '0' ); } if ( isset( $_POST['sa_vert_center'] ) && ( '1' === $_POST['sa_vert_center'] ) ) { update_post_meta( $post->ID, 'sa_vert_center', '1' ); } else { update_post_meta( $post->ID, 'sa_vert_center', '0' ); } // UPDATE SLIDER ITEMS DISPLAYED. if ( isset( $_POST['sa_items_width1'] ) ) { update_post_meta( $post->ID, 'sa_items_width1', abs( intval( $_POST['sa_items_width1'] ) ) ); } if ( isset( $_POST['sa_items_width2'] ) ) { update_post_meta( $post->ID, 'sa_items_width2', abs( intval( $_POST['sa_items_width2'] ) ) ); } if ( isset( $_POST['sa_items_width3'] ) ) { update_post_meta( $post->ID, 'sa_items_width3', abs( intval( $_POST['sa_items_width3'] ) ) ); } if ( isset( $_POST['sa_items_width4'] ) ) { update_post_meta( $post->ID, 'sa_items_width4', abs( intval( $_POST['sa_items_width4'] ) ) ); } if ( isset( $_POST['sa_items_width5'] ) ) { update_post_meta( $post->ID, 'sa_items_width5', abs( intval( $_POST['sa_items_width5'] ) ) ); } if ( isset( $_POST['sa_items_width6'] ) ) { update_post_meta( $post->ID, 'sa_items_width6', abs( intval( $_POST['sa_items_width6'] ) ) ); } if ( isset( $_POST['sa_transition'] ) ) { update_post_meta( $post->ID, 'sa_transition', sanitize_text_field( wp_unslash( $_POST['sa_transition'] ) ) ); } if ( isset( $_POST['sa_hero_slider'] ) && ( '1' === $_POST['sa_hero_slider'] ) ) { update_post_meta( $post->ID, 'sa_hero_slider', '1' ); } else { update_post_meta( $post->ID, 'sa_hero_slider', '0' ); } if ( isset( $_POST['sa_showcase_slider'] ) && ( '1' === $_POST['sa_showcase_slider'] ) ) { update_post_meta( $post->ID, 'sa_showcase_slider', '1' ); } else { update_post_meta( $post->ID, 'sa_showcase_slider', '0' ); } if ( isset( $_POST['sa_showcase_width'] ) ) { update_post_meta( $post->ID, 'sa_showcase_width', abs( intval( $_POST['sa_showcase_width'] ) ) ); } if ( isset( $_POST['sa_showcase_tablet'] ) && ( '1' === $_POST['sa_showcase_tablet'] ) ) { update_post_meta( $post->ID, 'sa_showcase_tablet', '1' ); } else { update_post_meta( $post->ID, 'sa_showcase_tablet', '0' ); } if ( isset( $_POST['sa_showcase_width_tab'] ) ) { update_post_meta( $post->ID, 'sa_showcase_width_tab', abs( intval( $_POST['sa_showcase_width_tab'] ) ) ); } if ( isset( $_POST['sa_showcase_mobile'] ) && ( '1' === $_POST['sa_showcase_mobile'] ) ) { update_post_meta( $post->ID, 'sa_showcase_mobile', '1' ); } else { update_post_meta( $post->ID, 'sa_showcase_mobile', '0' ); } if ( isset( $_POST['sa_showcase_width_mob'] ) ) { update_post_meta( $post->ID, 'sa_showcase_width_mob', abs( intval( $_POST['sa_showcase_width_mob'] ) ) ); } // UPDATE SLIDER STYLE. if ( isset( $_POST['sa_css_id'] ) ) { $post_css_id = str_replace( '-', '_', sanitize_text_field( wp_unslash( $_POST['sa_css_id'] ) ) ); update_post_meta( $post->ID, 'sa_css_id', sanitize_text_field( $post_css_id ) ); } if ( isset( $_POST['sa_background_color'] ) ) { update_post_meta( $post->ID, 'sa_background_color', sanitize_text_field( wp_unslash( $_POST['sa_background_color'] ) ) ); } if ( isset( $_POST['sa_border_width'] ) ) { update_post_meta( $post->ID, 'sa_border_width', abs( intval( $_POST['sa_border_width'] ) ) ); } if ( isset( $_POST['sa_border_color'] ) ) { update_post_meta( $post->ID, 'sa_border_color', sanitize_text_field( wp_unslash( $_POST['sa_border_color'] ) ) ); } if ( isset( $_POST['sa_border_radius'] ) ) { update_post_meta( $post->ID, 'sa_border_radius', abs( intval( $_POST['sa_border_radius'] ) ) ); } if ( isset( $_POST['sa_wrapper_padd_top'] ) ) { update_post_meta( $post->ID, 'sa_wrapper_padd_top', abs( intval( $_POST['sa_wrapper_padd_top'] ) ) ); } if ( isset( $_POST['sa_wrapper_padd_right'] ) ) { update_post_meta( $post->ID, 'sa_wrapper_padd_right', abs( intval( $_POST['sa_wrapper_padd_right'] ) ) ); } if ( isset( $_POST['sa_wrapper_padd_bottom'] ) ) { update_post_meta( $post->ID, 'sa_wrapper_padd_bottom', abs( intval( $_POST['sa_wrapper_padd_bottom'] ) ) ); } if ( isset( $_POST['sa_wrapper_padd_left'] ) ) { update_post_meta( $post->ID, 'sa_wrapper_padd_left', abs( intval( $_POST['sa_wrapper_padd_left'] ) ) ); } if ( isset( $_POST['sa_slide_min_height_type'] ) && isset( $_POST['sa_slide_min_height'] ) ) { if ( 'px' === $_POST['sa_slide_min_height_type'] ) { update_post_meta( $post->ID, 'sa_slide_min_height_perc', sanitize_text_field( wp_unslash( $_POST['sa_slide_min_height'] ) ) . 'px' ); } else { update_post_meta( $post->ID, 'sa_slide_min_height_perc', sanitize_text_field( wp_unslash( $_POST['sa_slide_min_height'] ) ) ); } } if ( isset( $_POST['sa_slide_padding_tb'] ) ) { update_post_meta( $post->ID, 'sa_slide_padding_tb', abs( floatval( $_POST['sa_slide_padding_tb'] ) ) ); } if ( isset( $_POST['sa_slide_padding_lr'] ) ) { update_post_meta( $post->ID, 'sa_slide_padding_lr', abs( floatval( $_POST['sa_slide_padding_lr'] ) ) ); } if ( isset( $_POST['sa_slide_margin_lr'] ) ) { update_post_meta( $post->ID, 'sa_slide_margin_lr', abs( floatval( $_POST['sa_slide_margin_lr'] ) ) ); } if ( isset( $_POST['sa_slide_icons_location'] ) ) { update_post_meta( $post->ID, 'sa_slide_icons_location', sanitize_text_field( wp_unslash( $_POST['sa_slide_icons_location'] ) ) ); } if ( isset( $_POST['sa_slide_icons_color'] ) ) { update_post_meta( $post->ID, 'sa_slide_icons_color', sanitize_text_field( wp_unslash( $_POST['sa_slide_icons_color'] ) ) ); } if ( isset( $_POST['sa_autohide_arrows'] ) && ( '1' === $_POST['sa_autohide_arrows'] ) ) { update_post_meta( $post->ID, 'sa_autohide_arrows', '1' ); } else { update_post_meta( $post->ID, 'sa_autohide_arrows', '0' ); } if ( isset( $_POST['sa_dot_per_slide'] ) && ( '1' === $_POST['sa_dot_per_slide'] ) ) { update_post_meta( $post->ID, 'sa_dot_per_slide', '1' ); } else { update_post_meta( $post->ID, 'sa_dot_per_slide', '0' ); } if ( isset( $_POST['sa_slide_icons_visible'] ) && ( '1' === $_POST['sa_slide_icons_visible'] ) ) { update_post_meta( $post->ID, 'sa_slide_icons_visible', '1' ); } else { update_post_meta( $post->ID, 'sa_slide_icons_visible', '0' ); } if ( isset( $_POST['sa_slide_icons_fullslide'] ) && ( '1' === $_POST['sa_slide_icons_fullslide'] ) ) { update_post_meta( $post->ID, 'sa_slide_icons_fullslide', '1' ); } else { update_post_meta( $post->ID, 'sa_slide_icons_fullslide', '0' ); } // OTHER SETTINGS. $other_settings = ''; if ( isset( $_POST['sa_window_onload'] ) && ( '1' === $_POST['sa_window_onload'] ) ) { $other_settings .= '1'; } else { $other_settings .= '0'; } $_POST['sa_strip_javascript'] = 0; if ( isset( $_POST['sa_strip_javascript'] ) && ( '1' === $_POST['sa_strip_javascript'] ) ) { $other_settings .= '|1'; } else { $other_settings .= '|0'; } if ( isset( $_POST['sa_lazy_load_images'] ) && ( '1' === $_POST['sa_lazy_load_images'] ) ) { $other_settings .= '|1'; } else { $other_settings .= '|0'; } if ( isset( $_POST['sa_ulli_containers'] ) && ( '1' === $_POST['sa_ulli_containers'] ) ) { $other_settings .= '|1'; } else { $other_settings .= '|0'; } if ( isset( $_POST['sa_rtl_slider'] ) && ( '1' === $_POST['sa_rtl_slider'] ) ) { $other_settings .= '|1'; } else { $other_settings .= '|0'; } // disable preview setting (now removed & permanently disabled). $other_settings .= '|1'; if ( isset( $_POST['bg_image_size'] ) && ( '' !== $_POST['bg_image_size'] ) ) { $other_settings .= '|' . sanitize_text_field( wp_unslash( $_POST['bg_image_size'] ) ); } else { $other_settings .= '|full'; } if ( isset( $_POST['sa_disable_slide_ids'] ) && ( '1' === $_POST['sa_disable_slide_ids'] ) ) { $other_settings .= '|1'; } else { $other_settings .= '|0'; } update_post_meta( $post->ID, 'sa_other_settings', $other_settings ); // starting slide number. if ( isset( $_POST['sa_start_pos'] ) ) { update_post_meta( $post->ID, 'sa_start_pos', abs( intval( $_POST['sa_start_pos'] ) ) ); } // THUMBNAIL PAGINATION. if ( isset( $_POST['sa_thumbs_active'] ) && ( '1' === $_POST['sa_thumbs_active'] ) ) { update_post_meta( $post->ID, 'sa_thumbs_active', '1' ); } else { update_post_meta( $post->ID, 'sa_thumbs_active', '0' ); } if ( isset( $_POST['sa_thumbs_location'] ) ) { update_post_meta( $post->ID, 'sa_thumbs_location', sanitize_text_field( wp_unslash( $_POST['sa_thumbs_location'] ) ) ); } if ( isset( $_POST['sa_thumbs_image_size'] ) ) { update_post_meta( $post->ID, 'sa_thumbs_image_size', sanitize_text_field( wp_unslash( $_POST['sa_thumbs_image_size'] ) ) ); } if ( isset( $_POST['sa_thumbs_padding'] ) ) { update_post_meta( $post->ID, 'sa_thumbs_padding', abs( floatval( $_POST['sa_thumbs_padding'] ) ) ); } if ( isset( $_POST['sa_thumbs_width'] ) ) { update_post_meta( $post->ID, 'sa_thumbs_width', abs( intval( $_POST['sa_thumbs_width'] ) ) ); } if ( isset( $_POST['sa_thumbs_height'] ) ) { update_post_meta( $post->ID, 'sa_thumbs_height', abs( intval( $_POST['sa_thumbs_height'] ) ) ); } if ( isset( $_POST['sa_thumbs_opacity'] ) ) { update_post_meta( $post->ID, 'sa_thumbs_opacity', abs( intval( $_POST['sa_thumbs_opacity'] ) ) ); } if ( isset( $_POST['sa_thumbs_border_width'] ) ) { update_post_meta( $post->ID, 'sa_thumbs_border_width', abs( intval( $_POST['sa_thumbs_border_width'] ) ) ); } if ( isset( $_POST['sa_thumbs_border_color'] ) ) { update_post_meta( $post->ID, 'sa_thumbs_border_color', sanitize_text_field( wp_unslash( $_POST['sa_thumbs_border_color'] ) ) ); } if ( isset( $_POST['sa_thumbs_resp_tablet'] ) ) { update_post_meta( $post->ID, 'sa_thumbs_resp_tablet', abs( intval( $_POST['sa_thumbs_resp_tablet'] ) ) ); } if ( isset( $_POST['sa_thumbs_resp_mobile'] ) ) { update_post_meta( $post->ID, 'sa_thumbs_resp_mobile', abs( intval( $_POST['sa_thumbs_resp_mobile'] ) ) ); } } } /** * ################################################################################### * ### FUNCTION DISPLAYS THE 'RE-ORDER SLIDES' SUB-PAGE IN THE WordPress DASHBOARD ### * ################################################################################### */ function cpt_slider_extra_sa_menu_pages() { add_submenu_page( 'edit.php?post_type=sa_slider', __( 'Re-Order Slides', 'menu-sa-order' ), __( 'Re-Order Slides', 'menu-sa-order' ), 'manage_options', 'reorderslides', 'cpt_slider_sa_reorder_slides_page' ); } /** * ### FUNCTION CONTAINING THE 'RE-ORDER' SLIDES FUNCTIONALITY ### */ function cpt_slider_sa_reorder_slides_page() { $page_url = get_admin_url() . 'edit.php?post_type=sa_slider&page=reorderslides'; $placeholder_image = get_site_url() . '/wp-content/plugins/slide-anything/images/bg_placeholder.png'; echo "<div id='sa_reorder_slides'>\n"; echo '<h1>Slide Anything - Re-Order Slides</h1>'; if ( isset( $_SERVER['REQUEST_METHOD'] ) && ( 'POST' === $_SERVER['REQUEST_METHOD'] ) && isset( $_POST['reorder_nonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['reorder_nonce'] ) ), 'reorder_action' ) ) { // A POST VARIABLE FOR 'SLIDER ID' HAS BEEN PASSED. if ( isset( $_POST['sar_slider_id'] ) ) { $slider_id = sanitize_text_field( wp_unslash( $_POST['sar_slider_id'] ) ); $slider_title = get_the_title( $slider_id ); } else { exit(); } if ( isset( $_POST['sar_sort_order'] ) && ( '' !== $_POST['sar_sort_order'] ) ) { // CHANGE THE ORDER OF SLIDE DATA FOR THE SLIDER AND RE-SAVE METADATA. $sort_order = sanitize_text_field( wp_unslash( $_POST['sar_sort_order'] ) ); $data_in_arr = array(); $data_out_arr = array(); // 1) SAVE SLIDES METADATA TO AN 'IN' ARRAY (ONLY SLIDES MEATDATA AND NO SETTINGS DATA SAVED!). $metadata = get_metadata( 'post', $slider_id ); $num_slides = $metadata['sa_num_slides'][0]; foreach ( $metadata as $key => $value_arr ) { $value = $value_arr[0]; for ( $i = 1; $i <= $num_slides; $i++ ) { $key_prefix = 'sa_slide' . $i . '_'; if ( strpos( $key, $key_prefix ) === 0 ) { // metadata key starts with the key prefix ('sa_slide??'). $data_in_arr[ $key ] = $value; } } } // 2) CREATE THE NEW SLIDES 'OUT' ARRAY (WITH THE NEW SLIDE ORDER). $sort_order_arr = explode( ',', $sort_order ); $count_order_arr = count( $sort_order_arr ); for ( $i = 0; $i < $count_order_arr; $i++ ) { $loop_prefix = 'sa_slide' . ( $i + 1 ) . '_'; // ascending loop order (1, 2, 3...). $order_prefix = 'sa_slide' . $sort_order_arr[ $i ] . '_'; // slide number to be stored in this slot. foreach ( $data_in_arr as $key => $value ) { if ( strpos( $key, $order_prefix ) === 0 ) { // metakey key value starts with the order prefix. $new_key = str_replace( $order_prefix, $loop_prefix, $key ); $data_out_arr[ $new_key ] = $value; } } } // 3) LOOP THROUGH SLIDES 'OUT' ARRAY UPDATING POST METADATA. foreach ( $data_out_arr as $key => $value ) { update_post_meta( $slider_id, $key, $value ); } echo "<h3 id='sar_success_message'>SLIDE ORDER HAS BEEN UPDATED</h3>"; } else { if ( isset( $_POST['sar_del_slides'] ) && ( '' !== $_POST['sar_del_slides'] ) ) { // DELETE ALL SLIDES WITH THE 'DELETE SLIDE' CHECKBOX CHECKED. $del_slides = sanitize_text_field( wp_unslash( $_POST['sar_del_slides'] ) ); $del_slides_arr = explode( ',', $del_slides ); $data_in_arr = array(); $data_out_arr = array(); // 1) SAVE SLIDES METADATA TO AN 'IN' ARRAY (ONLY SLIDES MEATDATA AND NO SETTINGS DATA SAVED!). $metadata = get_metadata( 'post', $slider_id ); $num_slides = $metadata['sa_num_slides'][0]; foreach ( $metadata as $key => $value_arr ) { $value = $value_arr[0]; for ( $i = 1; $i <= $num_slides; $i++ ) { $key_prefix = 'sa_slide' . $i . '_'; if ( strpos( $key, $key_prefix ) === 0 ) { // metadata key starts with the key prefix ('sa_slide??'). $data_in_arr[ $i ][ $key ] = $value; } } } // 2) CREATE THE NEW SLIDES 'OUT' ARRAY (WITH THE DELETED SLIDES REMOVED) $curr_index = 0; $tot_del = 0; for ( $i = 1; $i <= $num_slides; $i++ ) { $loop_prefix = 'sa_slide' . $i . '_'; $delete_yn = 0; $count_del_arr = count( $del_slides_arr ); for ( $j = 0; $j < $count_del_arr; $j++ ) { if ( $i === $del_slides_arr[ $j ] ) { $delete_yn = 1; } } if ( 0 === $delete_yn ) { // current slide is NOT to be deleted - copy to 'out' array. $curr_index++; $curr_prefix = 'sa_slide' . $curr_index . '_'; foreach ( $data_in_arr[ $i ] as $key => $value ) { $new_key = str_replace( $loop_prefix, $curr_prefix, $key ); $data_out_arr[ $new_key ] = $value; } } else { $tot_del++; } } // 3) LOOP THROUGH SLIDES 'OUT' ARRAY UPDATING POST METADATA. update_post_meta( $slider_id, 'sa_num_slides', $curr_index ); foreach ( $data_out_arr as $key => $value ) { update_post_meta( $slider_id, $key, $value ); } if ( 1 === $tot_del ) { echo "<h3 id='sar_success_message'>" . esc_html( $tot_del ) . ' SLIDE HAS BEEN DELETED</h3>'; } else { echo "<h3 id='sar_success_message'>" . esc_html( $tot_del ) . ' SLIDES HAVE BEEN DELETED</h3>'; } } } // GET REQUIRED SLIDER METADATA AND SAVE WITHIN AN ARRAY. $num_slides = 0; $slide_arr = array(); $metadata = get_metadata( 'post', $slider_id ); if ( count( $metadata ) > 0 ) { $num_slides = $metadata['sa_num_slides'][0]; } if ( 0 !== $num_slides ) { // SLIDER CONTAINS SLIDES - DISPLAY SORTABLE LIST OF SLIDES. for ( $i = 1; $i <= $num_slides; $i++ ) { $image_data = $metadata[ 'sa_slide' . $i . '_image_data' ][0]; $image_data_arr = explode( '~', $image_data ); $slide_arr[ $i ]['image_id'] = $image_data_arr[0]; $slide_arr[ $i ]['content'] = $metadata[ 'sa_slide' . $i . '_content' ][0]; // cater for popup images used as the slide background. $popup_type = ''; $popup_background = ''; if ( isset( $metadata[ 'sa_slide' . $i . '_popup_type' ][0] ) ) { $popup_type = $metadata[ 'sa_slide' . $i . '_popup_type' ][0]; } if ( isset( $metadata[ 'sa_slide' . $i . '_popup_background' ][0] ) ) { $popup_background = $metadata[ 'sa_slide' . $i . '_popup_background' ][0]; } if ( 'IMAGE' === $popup_type ) { if ( ( '' !== $popup_background ) && ( 'no' !== $popup_background ) ) { $slide_arr[ $i ]['image_id'] = $metadata[ 'sa_slide' . $i . '_popup_imageid' ][0]; } } } // DISPLAY THE SORTABLE GRID OF SLIDES. echo "<h2 id='sar_slider_title'>" . esc_html( $slider_title ) . "</h2>\n"; echo "<h3 id='sar_drag_message'>Drag slides to re-order...</h3>\n"; echo "<ul id='sar_sortable'>\n"; for ( $i = 1; $i <= $num_slides; $i++ ) { $bg_image = $placeholder_image; $slide_image_src = wp_get_attachment_image_src( $slide_arr[ $i ]['image_id'], 'thumbnail' ); if ( ! empty( $slide_image_src[0] ) ) { $bg_image = $slide_image_src[0]; } echo "<li id='sar" . esc_attr( $i ) . "' class='ui-state-default'>\n"; echo "<div class='sar_image' style='background-image:url(\"" . esc_url( $bg_image ) . "\");'></div>\n"; echo "<div class='sar_content'>\n"; echo "<h4 class='sar_slide_num'>SLIDE " . esc_html( $i ) . "</h4>\n"; echo "<div class='sar_del_slide'>DELETE <span>SLIDE</span>"; echo "<input type='checkbox' id='sar_del" . esc_attr( $i ) . "' name='sar_del" . esc_attr( $i ) . "' class='sar_del_checkbox'/>"; echo "</div>\n"; echo "<div class='sar_slide_html'>" . esc_html( nl2br( htmlentities( $slide_arr[ $i ]['content'] ) ) ) . "</div>\n"; echo '</div>'; echo "</li>\n"; } echo "</ul>\n"; // DISPLAY THE HTML FORM CONTAINING THE SORT ORDER INPUT ELEMENT. echo "<form method='post' id='sar_order_form'>\n"; wp_nonce_field( 'reorder_action', 'reorder_nonce' ); echo "<input type='hidden' name='sar_slider_id' value='" . esc_attr( $slider_id ) . "'/>"; echo "<input type='hidden' id='sar_sort_order' name='sar_sort_order'/>"; echo "<input type='hidden' id='sar_del_slides' name='sar_del_slides'/>"; echo "<input type='submit' id='sar_update_but' value='UPDATE ORDER'/>"; echo "<input type='submit' id='sar_delete_but' value='DELETE SLIDES'/>"; echo "</form>\n"; } else { // SLIDER CONTAINS NO SLIDES - DISPLAY MESSAGE. echo "<h3 id='sar_no_slides_found'>This slider contains NO slides!</h3>\n"; echo "<a class='sar_back_button' href='" . esc_url( $page_url ) . "'>BACK</a>"; } } else { // ##### NO POST VARIABLE FOR 'SLIDER ID' HAS BEEN PASSED ##### // WP QUERY TO GET ARRAY OF SA SLIDERS (ID & TITLE) THAT EXIST. $slider_arr = array(); $count = 0; $args = array( 'post_type' => 'sa_slider', 'post_status' => array( 'publish', 'draft' ), 'orderby' => 'menu_order', 'order' => 'ASC', 'posts_per_page' => -1, ); $sliders = new WP_Query( $args ); if ( $sliders->have_posts() ) { while ( $sliders->have_posts() ) { $sliders->the_post(); $slider_arr[ $count ]['id'] = get_the_ID(); $slider_arr[ $count ]['title'] = get_the_title(); $count++; } } wp_reset_postdata(); if ( count( $slider_arr ) > 0 ) { // DISPLAY FORM CONTAINING SA SLIDER SELECT DROPDOWN. echo "<form method='post' id='sar_slider_form'>\n"; wp_nonce_field( 'reorder_action', 'reorder_nonce' ); echo "<p>This tool allows you to change the order of slides within a Slide Anything slider.</p>\n"; echo "<p>Select the slider you would like to re-order, then just drag-and-drop slides for your new slide order.</p>\n"; echo "<div style='padding-top:10px;'>Select Slider to Re-Order:<br/>"; echo "<select id='sar_slider_id' name='sar_slider_id'>\n"; $count_slider_arr = count( $slider_arr ); for ( $i = 0; $i < $count_slider_arr; $i++ ) { echo '<h4>|' . esc_html( $slider_arr[ $i ]['id'] ) . '|' . esc_html( $slider_arr[ $i ]['title'] ) . '|</h4>'; echo "<option value='" . esc_attr( $slider_arr[ $i ]['id'] ) . "'>" . esc_html( $slider_arr[ $i ]['title'] ) . ' (#' . esc_html( $slider_arr[ $i ]['id'] ) . ")</option>\n"; } echo "<select></div>\n"; echo "<div><input type='submit' value='Select Slider'/></div>\n"; echo "</form>\n"; } else { // NO SA SLIDERS FOUND - DISPLAY MESSAGE. echo "<h3 id='sar_no_sliders_found'>No Slide Anything sliders found!</h3>\n"; } } echo "</div>\n"; } /** * ### FUNCTION CALLED BY 'template_include' FILTER TO USE A CUSTOM PAGE TERMPLATE FOR SA PREVIEW PAGE ### * * @param string $template Page Template. */ function cpt_slider_sa_preview_page_template( $template ) { if ( is_page( 'Slide Anything Popup Preview' ) ) { $template = dirname( __FILE__ ) . '/single-page.php'; } return $template; } /** * ### FILTER TO ALLOW IFRAMES WITHIN SLIDE CONTENT ### * * @param array $allowedposttags Allowed Post Tags. */ function cpt_slider_allow_iframes_filter( $allowedposttags ) { // Only change for users who can publish posts. if ( ! current_user_can( 'publish_posts' ) ) { return $allowedposttags; } // Allow iframes and the following attributes. $allowedposttags['iframe'] = array( 'align' => true, 'width' => true, 'height' => true, 'frameborder' => true, 'name' => true, 'src' => true, 'title' => true, 'allow' => true, 'allowfullscreen' => true, 'id' => true, 'class' => true, 'style' => true, 'scrolling' => true, 'marginwidth' => true, 'marginheight' => true, ); return $allowedposttags; } ?>