diff --git a/wp-admin/admin-header.php b/wp-admin/admin-header.php index 1494b298c..b3316c2c0 100644 --- a/wp-admin/admin-header.php +++ b/wp-admin/admin-header.php @@ -11,7 +11,7 @@ if ( ! defined( 'WP_ADMIN' ) ) require_once( './admin.php' ); // In case admin-header.php is included in a function. -global $title, $hook_suffix, $current_screen, $wp_locale, $pagenow, $wp_version, $is_iphone, +global $title, $hook_suffix, $current_screen, $wp_locale, $pagenow, $wp_version, $current_site, $update_title, $total_update_count, $parent_file; // Catch plugins that include admin-header.php before admin.php completes. @@ -87,9 +87,10 @@ $admin_body_class .= ' version-' . str_replace( '.', '-', preg_replace( '/^([.0- $admin_body_class .= ' admin-color-' . sanitize_html_class( get_user_option( 'admin_color' ), 'fresh' ); $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) ); -if ( $is_iphone ) { ?> - - +if ( wp_is_mobile() ) + $admin_body_class .= ' mobile'; + +?> "> diff --git a/wp-admin/css/wp-admin.dev.css b/wp-admin/css/wp-admin.dev.css index b05ed6abf..1b434388b 100644 --- a/wp-admin/css/wp-admin.dev.css +++ b/wp-admin/css/wp-admin.dev.css @@ -5323,6 +5323,10 @@ p.pagenav { padding: 2px 0 0; } +.mobile .row-actions { + visibility: visible; +} + tr:hover .row-actions, div.comment-item:hover .row-actions { visibility: visible; diff --git a/wp-admin/includes/media.php b/wp-admin/includes/media.php index 360c427ff..f20fa895b 100644 --- a/wp-admin/includes/media.php +++ b/wp-admin/includes/media.php @@ -62,10 +62,10 @@ add_filter('media_upload_tabs', 'update_gallery_tab'); * @since 2.5.0 */ function the_media_upload_tabs() { - global $redir_tab, $is_iphone; + global $redir_tab; $tabs = media_upload_tabs(); - if ( $is_iphone ) { + if ( wp_is_mobile() ) { unset($tabs['type']); $default = 'type_url'; } else { @@ -528,8 +528,6 @@ function media_upload_form_handler() { * @return unknown */ function wp_media_upload_handler() { - global $is_iphone; - $errors = array(); $id = 0; @@ -600,7 +598,7 @@ function wp_media_upload_handler() { return wp_iframe( 'media_upload_type_url_form', $type, $errors, $id ); } - if ( $is_iphone ) + if ( wp_is_mobile() ) return wp_iframe( 'media_upload_type_url_form', 'image', $errors, $id ); else return wp_iframe( 'media_upload_type_form', 'image', $errors, $id ); @@ -1306,9 +1304,9 @@ function media_upload_header() { * @param unknown_type $errors */ function media_upload_form( $errors = null ) { - global $type, $tab, $pagenow, $is_IE, $is_opera, $is_iphone; + global $type, $tab, $pagenow, $is_IE, $is_opera; - if ( $is_iphone ) + if ( wp_is_mobile() ) return; $upload_action_url = admin_url('async-upload.php'); @@ -1440,9 +1438,7 @@ if ( ($is_IE || $is_opera) && $max_upload_size > 100 * 1024 * 1024 ) { ?> * @param unknown_type $id */ function media_upload_type_form($type = 'file', $errors = null, $id = null) { - global $is_iphone; - - if ( $is_iphone ) + if ( wp_is_mobile() ) return; media_upload_header(); diff --git a/wp-admin/includes/misc.php b/wp-admin/includes/misc.php index bbc76722d..14f94fbed 100644 --- a/wp-admin/includes/misc.php +++ b/wp-admin/includes/misc.php @@ -583,9 +583,10 @@ foreach ( $_wp_admin_css_colors as $color => $color_info ): ?> } function _ipad_meta() { - if ( strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') !== false ) { ?> - - + + = 534 ); else $wp_rich_edit = true; diff --git a/wp-includes/vars.php b/wp-includes/vars.php index e444210b6..0138dbc18 100644 --- a/wp-includes/vars.php +++ b/wp-includes/vars.php @@ -97,3 +97,28 @@ $is_IIS = !$is_apache && (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') ! * @global bool $is_iis7 */ $is_iis7 = $is_IIS && (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/7.') !== false); + +/** + * Test if the current browser runs on a mobile device (smart phone, tablet, etc.) + * + * @return bool true|false + */ +function wp_is_mobile() { + static $is_mobile; + + if ( isset($is_mobile) ) + return $is_mobile; + + if ( empty($_SERVER['HTTP_USER_AGENT']) ) { + $is_mobile = false; + } elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.) + || strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false + || strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false + || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false ) { + $is_mobile = true; + } else { + $is_mobile = false; + } + + return $is_mobile; +} diff --git a/wp-login.php b/wp-login.php index dd62918ac..1c74f3e93 100644 --- a/wp-login.php +++ b/wp-login.php @@ -39,7 +39,7 @@ if ( force_ssl_admin() && !is_ssl() ) { * @param WP_Error $wp_error Optional. WordPress Error Object */ function login_header($title = 'Log In', $message = '', $wp_error = '') { - global $error, $is_iphone, $interim_login, $current_site; + global $error, $interim_login, $current_site; // Don't index any of these forms add_action( 'login_head', 'wp_no_robots' ); @@ -54,25 +54,26 @@ function login_header($title = 'Log In', $message = '', $wp_error = '') { if ( $shake_error_codes && $wp_error->get_error_code() && in_array( $wp_error->get_error_code(), $shake_error_codes ) ) add_action( 'login_head', 'wp_shake_js', 12 ); - ?> - -> - + ?> + > + <?php bloginfo('name'); ?> › <?php echo $title; ?> - - - - + + + - - + + ?> + +

-

- - - + + + - -
- - - +
+ + +