From 5d850af499aa96b2ed48601637ee647c6a4da7ba Mon Sep 17 00:00:00 2001 From: Robin Cornett Date: Sun, 2 Nov 2014 19:20:00 -0500 Subject: [PATCH] total settings renovation --- ...s-displayfeaturedimagegenesis-settings.php | 127 ++++++++++++------ 1 file changed, 86 insertions(+), 41 deletions(-) diff --git a/includes/class-displayfeaturedimagegenesis-settings.php b/includes/class-displayfeaturedimagegenesis-settings.php index dfa66ba..7fcc907 100644 --- a/includes/class-displayfeaturedimagegenesis-settings.php +++ b/includes/class-displayfeaturedimagegenesis-settings.php @@ -9,6 +9,35 @@ class Display_Featured_Image_Genesis_Settings { + public function do_submenu_page() { + + add_submenu_page( + 'genesis', + __( 'Display Featured Image for Genesis: Settings', 'display-featured-image-genesis' ), + __( 'Display Featured Image Settings', 'display-featured-image-genesis' ), + 'manage_options', + 'displayfeaturedimagegenesis', + array( $this, 'do_settings_form' ) + ); + + add_action( 'admin_init', array( $this, 'register_settings' ) ); + add_action( 'load-genesis_page_displayfeaturedimagegenesis', array( $this, 'help' ) ); + + } + + public function do_settings_form() { + $page_title = get_admin_page_title(); + echo '
'; + echo '

' . $page_title . '

'; + echo '
'; + settings_fields( 'displayfeaturedimagegenesis' ); + do_settings_sections( 'displayfeaturedimagegenesis' ); + submit_button(); + settings_errors(); + echo '
'; + echo '
'; + } + /** * Settings for media screen * @return settings for backstretch image options @@ -16,22 +45,22 @@ class Display_Featured_Image_Genesis_Settings { * @since 1.1.0 */ public function register_settings() { - register_setting( 'media', 'displayfeaturedimage_less_header', 'absint' ); - register_setting( 'media', 'displayfeaturedimage_default', array( $this, 'validate_image' ) ); - register_setting( 'media', 'displayfeaturedimage_excerpts', array( $this, 'one_zero' ) ); + register_setting( 'displayfeaturedimagegenesis', 'displayfeaturedimage_less_header', 'absint' ); + register_setting( 'displayfeaturedimagegenesis', 'displayfeaturedimage_default', array( $this, 'validate_image' ) ); + register_setting( 'displayfeaturedimagegenesis', 'displayfeaturedimage_excerpts', array( $this, 'one_zero' ) ); add_settings_section( 'display_featured_image_section', __( 'Display Featured Image for Genesis', 'display-featured-image-genesis' ), array( $this, 'section_description'), - 'media' + 'displayfeaturedimagegenesis' ); add_settings_field( 'displayfeaturedimage_less_header', '', array( $this, 'header_size' ), - 'media', + 'displayfeaturedimagegenesis', 'display_featured_image_section' ); @@ -39,7 +68,7 @@ class Display_Featured_Image_Genesis_Settings { 'displayfeaturedimage_default', '', array( $this, 'set_default_image' ), - 'media', + 'displayfeaturedimagegenesis', 'display_featured_image_section' ); @@ -47,7 +76,7 @@ class Display_Featured_Image_Genesis_Settings { 'displayfeaturedimage_excerpts', '', array( $this, 'move_excerpts' ), - 'media', + 'displayfeaturedimagegenesis', 'display_featured_image_section' ); @@ -90,13 +119,13 @@ class Display_Featured_Image_Genesis_Settings { public function set_default_image() { $item = Display_Featured_Image_Genesis_Common::get_image_variables(); - if ( !empty( $item->fallback ) ) { + if ( ! empty( $item->fallback ) ) { $preview = wp_get_attachment_image_src( $item->fallback_id, 'medium' ); echo '
'; - echo ''; + echo ''; echo '
'; } - echo ''; + echo ''; echo ''; echo '

' . sprintf( __( 'If you would like to use a default image for the featured image, upload it here. Must be at least %1$s pixels wide.', 'display-featured-image-genesis' ), @@ -105,7 +134,7 @@ class Display_Featured_Image_Genesis_Settings { } /** - * move excerpts to leader image area + * option to move excerpts to leader image area * @return 0 1 checkbox * * @since 1.3.0 @@ -124,37 +153,38 @@ class Display_Featured_Image_Genesis_Settings { */ public function validate_image( $new_value ) { - // not using get_image_variables since we need to check before commit to option $new_value = esc_url( $new_value ); $valid = $this->is_valid_img_ext( $new_value ); $large = get_option( 'large_size_w' ); $id = Display_Featured_Image_Genesis_Common::get_image_id( $new_value ); $file = wp_get_attachment_image_src( $id, 'original' ); + $message = __( 'Settings saved.', 'display-featured-image-genesis' ); + $type = 'updated'; // ok for field to be empty - if ( empty( $new_value ) ) { - return; - } - // check if file type is legit. if not, wp_die() - elseif ( !$valid ) { - wp_die( sprintf( - __( 'Sorry, that is an invalid file type. Return to the Media Settings page and try again.', 'display-featured-image-genesis' ), - esc_url( admin_url( 'options-media.php' ) ) - ) ); - return get_option( 'displayfeaturedimage_default', '' ); - } - // if file is an image, but is too small, throw it back - elseif ( $file[1] <= $large ) { - wp_die( sprintf( - __( 'Sorry, that image is too small to use as your Default Featured Image. Your image needs to be at least %1$s pixels wide. Return to the Media Settings page and try again.', 'display-featured-image-genesis' ), - absint( $large+1 ), - esc_url( admin_url( 'options-media.php' ) ) - ) ); + if ( $new_value ) { - return get_option( 'displayfeaturedimage_default', '' ); + if ( ! $valid ) { + $type = 'error'; + $message = __( 'Sorry, that is an invalid file type. The Default Featured Image has been reset to the last valid setting.', 'display-featured-image-genesis' ); + $new_value = get_option( 'displayfeaturedimage_default', '' ); + } + // if file is an image, but is too small, throw it back + elseif ( $file[1] <= $large ) { + $type = 'error'; + $message = __( 'Sorry, your image is too small. The Default Featured Image has been reset to the last valid setting.', 'display-featured-image-genesis' ); + $new_value = get_option( 'displayfeaturedimage_default', '' ); + } } + + add_settings_error( + 'displayfeaturedimage_default', + esc_attr( 'settings-updated' ), + $message, + $type + ); + return $new_value; - } /** @@ -205,24 +235,39 @@ class Display_Featured_Image_Genesis_Settings { $screen = get_current_screen(); $large = get_option( 'large_size_w' ); - $displayfeaturedimage_help = - '

' . __( 'Display Featured Image for Genesis has three optional settings:', 'display-featured-image-genesis' ) . '

' . + $height_help = '

' . __( 'Height', 'display-featured-image-genesis' ) . '

' . - '

' . __( 'Depending on how your header/nav are set up, or if you just do not want your backstretch image to extend to the bottom of the user screen, you may want to change this number. It will raise the bottom line of the backstretch image, making it shorter.', 'display-featured-image-genesis' ) . '

' . + '

' . __( 'Depending on how your header/nav are set up, or if you just do not want your backstretch image to extend to the bottom of the user screen, you may want to change this number. It will raise the bottom line of the backstretch image, making it shorter.', 'display-featured-image-genesis' ) . '

'; + $default_help = '

' . __( 'Set a Default Featured Image', 'display-featured-image-genesis' ) . '

' . '

' . __( 'You may set a large image to be used sitewide if a featured image is not available. This image will show on posts, pages, and archives.', 'display-featured-image-genesis' ) . '

' . '

' . sprintf( __( 'Supported file types are: jpg, jpeg, png, and gif. The image must be at least %1$s pixels wide.', 'display-featured-image-genesis' ), absint( $large+1 ) - ) . '

' . + ) . '

'; + + $excerpts_help = '

' . __( 'Move Excerpts/Archive Descriptions', 'display-featured-image-genesis' ) . '

' . - '

' . __( 'By default, archive descriptions (set on the Genesis Archive Settings pages) show below the Default Featured Image, while the archive title displays on top of the image. If you check this box, archives with both a Headline and Intro Text will output both in a box overlaying the Featured Image. Posts which use an optional Excerpt will behave the same way.', 'display-featured-image-genesis' ) . '

'; + '

' . __( 'By default, archive descriptions (set on the Genesis Archive Settings pages) show below the Default Featured Image, while the archive title displays on top of the image. If you check this box, all headlines, descriptions, and optional excerpts will display in a box overlaying the Featured Image.', 'display-featured-image-genesis' ) . '

'; + $screen->add_help_tab( array( - 'id' => 'displayfeaturedimage-help', - 'title' => __( 'Display Featured Image for Genesis', 'display-featured-image-genesis' ), - 'content' => $displayfeaturedimage_help, + 'id' => 'displayfeaturedimage_less_header-help', + 'title' => __( 'Height', 'display-featured-image-genesis' ), + 'content' => $height_help, + ) ); + + $screen->add_help_tab( array( + 'id' => 'displayfeaturedimage_default-help', + 'title' => __( 'Default Featured Image', 'display-featured-image-genesis' ), + 'content' => $default_help, + ) ); + + $screen->add_help_tab( array( + 'id' => 'displayfeaturedimage_excerpts-help', + 'title' => __( 'Move Excerpts', 'display-featured-image-genesis' ), + 'content' => $excerpts_help, ) ); } @@ -236,7 +281,7 @@ class Display_Featured_Image_Genesis_Settings { public function enqueue_scripts() { wp_register_script( 'displayfeaturedimage-upload', plugins_url( '/includes/js/settings-upload.js', dirname( __FILE__ ) ), array( 'jquery', 'media-upload', 'thickbox' ), '1.0.0' ); - if ( 'options-media' == get_current_screen()->id ) { + if ( 'genesis_page_displayfeaturedimagegenesis' === get_current_screen()->id ) { wp_enqueue_media(); wp_enqueue_script( 'displayfeaturedimage-upload' ); }