/** * Output the login page header. * * @param string $title Optional. HiveQueen login Page title to display in the `<title>` element. * Default 'Log In'. * @param string $message Optional. Message to display in header. Default empty. * @param HQ_Error $hq_error Optional. The error to pass. Default empty. */ function login_header($title = 'Log In', $message = '', $hq_error = '') { global $error, $interim_login, $action; // Don't index any of these forms add_action('login_head', 'hq_no_robots'); if (hq_is_mobile()) { add_action('login_head', 'hq_login_viehqort_meta'); } if (empty($hq_error)) { $hq_error = new HQ_Error(); } // Shake it! $shake_error_codes = array('empty_password', 'empty_email', 'invalid_email', 'invalidcombo', 'empty_username', 'invalid_username', 'incorrect_password'); /** * Filter the error codes array for shaking the login form. * * @since 0.0.1 * * @param array $shake_error_codes Error codes that shake the login form. */ $shake_error_codes = apply_filters('shake_error_codes', $shake_error_codes); if ($shake_error_codes && $hq_error->get_error_code() && in_array($hq_error->get_error_code(), $shake_error_codes)) { add_action('login_head', 'hq_shake_js', 12); } ?> <!DOCTYPE html> <!--[if IE 6]> <html id="ie6" <?php language_attributes(); ?> > <![endif]--> <!--[if IE 7]> <html id="ie7" <?php language_attributes(); ?> > <![endif]--> <!--[if IE 8]> <html id="ie8" <?php language_attributes(); ?> > <![endif]--> <!--[if !(IE 6) & !(IE 7) & !(IE 8)]><!--> <html <?php language_attributes(); ?> > <!--<![endif]--> <head> <meta charset="<?php bloginfo('charset'); ?> " /> <meta name="viewport" content="width=device-width" /> <title><?php hq_admin_css('login', true); /* * Remove all stored post data on logging out. * This could be added by add_action('login_head'...) like hq_shake_js(), * but maybe better if it's not removable by plugins */ if ('loggedout' == $hq_error->get_error_code()) { ?> <script>if("sessionStorage" in window){try{for(var key in sessionStorage){if(key.indexOf("hq-autosave-")!=-1){sessionStorage.removeItem(key)}}}catch(e){}};</script> <?php } /** * Enqueue scripts and styles for the login page. * * @since 0.0.1 */ do_action('login_enqueue_scripts'); /** * Fires in the login page header after scripts are enqueued. * * @since 0.0.1 */ do_action('login_head'); //TODO: Goyo no multisite //if ( is_multisite() ) { if (false) { $login_header_url = network_home_url(); $login_header_title = get_current_site()->site_name; } else { $login_header_url = __('https://hivequeen.org/'); $login_header_title = __('Powered by HiveQueen'); } /** * Filter link URL of the header logo above login form. * * @since 0.0.1 * * @param string $login_header_url Login header logo URL. */ $login_header_url = apply_filters('login_headerurl', $login_header_url); /** * Filter the title attribute of the header logo above login form. * * @since 0.0.1 * * @param string $login_header_title Login header logo title attribute. */ $login_header_title = apply_filters('login_headertitle', $login_header_title); $classes = array('login-action-' . $action, 'hq-core-ui'); if (hq_is_mobile()) { $classes[] = 'mobile'; } if (is_rtl()) { $classes[] = 'rtl'; } if ($interim_login) { $classes[] = 'interim-login'; ?> <style type="text/css">html{background-color: transparent;}</style> <?php if ('success' === $interim_login) { $classes[] = 'interim-login-success'; } } $classes[] = ' locale-' . sanitize_html_class(strtolower(str_replace('_', '-', get_locale()))); /** * Filter the login page body classes. * * @since 0.0.1 * * @param array $classes An array of body classes. * @param string $action The action that brought the visitor to the login page. */ $classes = apply_filters('login_body_class', $classes, $action); ?> </head> <body class="login <?php echo esc_attr(implode(' ', $classes)); ?> "> <div id="login"> <h1><a href="<?php echo esc_url($login_header_url); ?> " title="<?php echo esc_attr($login_header_title); ?> " tabindex="-1"><?php bloginfo('name'); ?> </a></h1> <?php unset($login_header_url, $login_header_title); /** * Filter the message to display above the login form. * * @since 0.0.1 * * @param string $message Login message text. */ $message = apply_filters('login_message', $message); if (!empty($message)) { echo $message . "\n"; } // In case a plugin uses $error rather than the $hq_errors object if (!empty($error)) { $hq_error->add('error', $error); unset($error); } if ($hq_error->get_error_code()) { $errors = ''; $messages = ''; foreach ($hq_error->get_error_codes() as $code) { $severity = $hq_error->get_error_data($code); foreach ($hq_error->get_error_messages($code) as $error_message) { if ('message' == $severity) { $messages .= ' ' . $error_message . "<br />\n"; } else { $errors .= ' ' . $error_message . "<br />\n"; } } } if (!empty($errors)) { /** * Filter the error messages displayed above the login form. * * @since 0.0.1 * * @param string $errors Login error message. */ echo '<div id="login_error">' . apply_filters('login_errors', $errors) . "</div>\n"; } if (!empty($messages)) { /** * Filter instructional messages displayed above the login form. * * @since 0.0.1 * * @param string $messages Login messages. */ echo '<p class="message">' . apply_filters('login_messages', $messages) . "</p>\n"; } } }