Settings';
array_unshift( $links, $link );
return $links;
} );
/**
* Load files.
*/
function jn_admin_tailor_init_hook() {
require_once JN_ADMIN_TAILOR_PATH . '/includes/admin.php';
add_action( 'admin_enqueue_scripts', function( $hook ) {
// Only load on our settings page
if ( $hook !== 'settings_page_admin-tailor' ) {
return;
}
// Media.
if ( ! did_action( 'wp_enqueue_media' ) ) wp_enqueue_media();
// Styles.
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_style( 'jn-admin-tailor-style', plugins_url( '/assets/css/style.css' , JN_ADMIN_TAILOR_FILE ), array(), JN_ADMIN_TAILOR_VERSION );
// Script.
wp_enqueue_script(
'jn-admin-tailor-script',
plugins_url( '/assets/js/script.js' , JN_ADMIN_TAILOR_FILE ),
array( 'jquery', 'wp-color-picker' ),
JN_ADMIN_TAILOR_VERSION,
true
);
} );
}
/**
* Settings page.
*/
add_action( 'admin_menu', function() {
$hook = add_options_page(
'Admin Tailor Settings',
'Admin Tailor',
'administrator',
'admin-tailor',
'jn_admin_tailor_add_settings_page_content',
6
);
add_action( 'load-' . $hook, 'jn_admin_tailor_init_hook' );
} );
/**
* Utility
*/
function jn_admin_tailor_hex2rgba( $color, $opacity ) {
list( $r, $g, $b ) = sscanf( $color, '#%02x%02x%02x' );
return 'rgba(' . $r . ',' . $g . ',' . $b . ',' . $opacity . ')'; // double-quotes look messy :D
}
/**
* Set login page styles.
*/
add_action( 'login_enqueue_scripts', function() {
$login_color_palette = get_option( 'jn_admin_tailor_login_color' );
$login_footer_color = get_option( 'jn_admin_tailor_login_footer_color' );
$login_pattern_url = get_option( 'jn_admin_tailor_login_pattern_url' );
$image_id = get_option( 'jn_admin_tailor_login_logo_id' );
$image = wp_get_attachment_image_url( $image_id );
$bg_image_id = get_option( 'jn_admin_tailor_bg_image_id' );
$bg_image = wp_get_attachment_image_url( $bg_image_id );
$custom_css = get_option( 'jn_admin_tailor_custom_css' );
$form_border_radius = max( 0, min( 50, absint( get_option( 'jn_admin_tailor_form_border_radius', 0 ) ) ) );
$form_box_shadow = max( 0, min( 100, absint( get_option( 'jn_admin_tailor_form_box_shadow', 0 ) ) ) );
$form_transparency = max( 10, min( 100, absint( get_option( 'jn_admin_tailor_form_transparency', 100 ) ) ) );
$logo_border_radius = max( 0, min( 50, absint( get_option( 'jn_admin_tailor_logo_border_radius', 0 ) ) ) );
// Check if any customizations exist
$has_customizations = $image || $login_color_palette || $login_footer_color ||
( $bg_image || ( $login_pattern_url && jn_admin_tailor_get_pattern_url( 'default.png' ) !== $login_pattern_url ) ) ||
( $form_border_radius || $form_box_shadow || 100 !== $form_transparency ) || $custom_css;
if ( ! $has_customizations ) {
return;
}
$styles = '';
if ( $image ) {
$styles .= 'body.login div#login h1 a {
background-image: url(' . esc_url( $image ) . ');';
if ( $logo_border_radius ) {
$styles .= 'border-radius: ' . absint( $logo_border_radius ) . 'px;overflow: hidden;';
}
$styles .= '}';
}
if ( $login_color_palette ) {
$color = esc_attr( $login_color_palette );
$styles .= 'body.login div#login .message {
border-color: ' . jn_admin_tailor_hex2rgba( $color, .5 ) . ';
}';
$styles .= 'body.login div#login #loginform input:focus {
border-color: ' . $color . ';
box-shadow: 0 0 0 1px ' . $color . ';
}';
$styles .= 'body.login div#login #loginform .wp-pwd .button-secondary {
color: ' . $color . ';
}';
$styles .= 'body.login div#login #loginform #rememberme:focus {
border-color: ' . $color . ';
}';
$styles .= 'body.login div#login #loginform #wp-submit {
background: ' . $color . ';
border-color: ' . $color . ';
}';
}
if ( $login_footer_color ) {
$styles .= 'body.login #backtoblog a, body.login #nav a, body.login .privacy-policy-link {
color: ' . esc_attr( $login_footer_color ) . ';
}';
}
if ( $bg_image ) {
$styles .= 'body.login {
background-image: url(' . esc_url( $bg_image ) . ');
background-position: center;
background-size: cover;
background-repeat: no-repeat;
}';
} elseif ( $login_pattern_url && jn_admin_tailor_get_pattern_url( 'default.png' ) !== $login_pattern_url ) {
$size = ( 'svg' === pathinfo( $login_pattern_url, PATHINFO_EXTENSION ) ) ? 'cover' : 'auto';
$styles .= 'body.login {
background-image: url(' . esc_url( $login_pattern_url ) . ');
background-position: center;
background-size: ' . esc_html( $size ) . ';
}';
}
if ( $form_border_radius || $form_box_shadow || 100 !== $form_transparency ) {
$styles .= 'body.login div#login #loginform {';
if ( $form_border_radius ) {
$styles .= 'border-radius: ' . absint( $form_border_radius ) . 'px;';
}
if ( $form_box_shadow ) {
$shadow_intensity = absint( $form_box_shadow ) / 100;
$styles .= 'box-shadow: 0 2px 10px rgba(0, 0, 0, ' . $shadow_intensity . ');';
}
if ( 100 !== $form_transparency ) {
$opacity = absint( $form_transparency ) / 100;
$styles .= 'background-color: rgba(255, 255, 255, ' . $opacity . ');';
}
$styles .= '}';
}
if ( $custom_css ) {
$styles .= wp_strip_all_tags( $custom_css );
}
?>
#wp-toolbar span.ab-label, #wpadminbar > #wp-toolbar span.noticon {
color: rgba(240, 245, 250, .6) !important;
}';
$styles .= '#wpadminbar .ab-icon:before, #wpadminbar .ab-item:before {
color: rgba(240, 245, 250, .6) !important;
}';
}
if ( $menu_highlight_color ) {
$styles .= '#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head, #adminmenu .wp-menu-arrow, #adminmenu .wp-menu-arrow div, #adminmenu li.current a.menu-top, #adminmenu li.wp-has-current-submenu a.wp-has-current-submenu {
background: ' . esc_attr( $menu_highlight_color ) . ' !important;
}';
$styles .= '#adminmenu li a:hover, #adminmenu li.menu-top:hover, #adminmenu li.opensub > a.menu-top, #adminmenu li > a.menu-top:focus {
background-color: ' . esc_attr( $menu_highlight_color ) . ' !important;
}';
$styles .= '#adminmenu .wp-submenu a:hover, #adminmenu .wp-submenu a:focus {
background: ' . esc_attr( $menu_highlight_color ) . ' !important;
}';
}
if ( $styles ) {
echo '';
}
} );
add_action( 'wp_before_admin_bar_render', function() {
global $wp_admin_bar;
if ( get_option( 'jn_admin_tailor_hide_wp_logo' ) ) {
$wp_admin_bar->remove_menu( 'wp-logo' );
}
} );
add_action( 'wp_dashboard_setup', function() {
if ( get_option( 'jn_admin_tailor_hide_welcome_panel' ) ) {
remove_action( 'welcome_panel', 'wp_welcome_panel' );
update_user_meta( get_current_user_id(), 'show_welcome_panel', 0 );
}
} );
add_filter( 'admin_footer_text', function( $footer_text ) {
$custom_footer = get_option( 'jn_admin_tailor_admin_footer_text' );
return $custom_footer ? esc_html( $custom_footer ) : $footer_text;
} );
add_filter( 'login_errors', function( $error ) {
$custom_error = get_option( 'jn_admin_tailor_custom_login_error' );
if ( $custom_error && ! empty( trim( $custom_error ) ) ) {
return 'ERROR: ' . esc_html( $custom_error );
}
return $error;
} );
// All done, have fun!