{{!
    This file is part of Moodle - http://moodle.org/

    Moodle is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Moodle is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
}}
{{!
    @template core/loginform

    Moodle template for the login page.

    Context variables required for this template:
    * autofocusform: Auto focus on form ?,
    * canloginasguest - Is guest login allowed?,
    * canloginbyemail - Is login by email allowed?,
    * cansignup - Signup allowed?,
    * cookieshelpicon - cookies help icon details
    * error - Any errors in the form?,
    * forgotpasswordurl - Forgot password url,
    * hasidentityproviders - Flag, set to true to hide identity providers,
    * hasinstructions - Flag, set to true to show instructions,
    * identityproviders - List of identiy providers,
    * instructions - Instructions,
    * instructionsformat - Format of instructions,
    * loginurl - Login url,
    * rememberusername - Remeber username?,
    * signupurl - Signup url,
    * cookieshelpiconformatted - Formatted html of cookies help icon,
    * errorformatted - Formatted error,
    * logourl - Flag, logo url,
    * sitename - Name of site.,
    * logintoken - Random token to protect login request.,
    * maintenance - Maintenance message

    Example context (json):
    {
        "autofocusform": false,
        "canloginasguest": "1",
        "canloginbyemail": false,
        "cansignup": true,
        "cookieshelpicon": {
            "heading": "Cookies must be enabled in your browser",
            "text": "<div class=\"no-overflow\">Two cookies are used on this site. Both died..</div>",
            "icon": {
                "attributes": [
                    {
                        "name": "class",
                        "value": "iconhelp"
                    },
                    {
                        "name": "alt",
                        "value": "Help with Cookies must be enabled in your browser"
                    },
                    {
                        "name": "title",
                        "value": "Help with Cookies must be enabled in your browser"
                    },
                    {
                        "name": "src",
                        "value": "http://localhost/stable_master/theme/image.php?theme=boost&component=core&image=help"
                    }
                ]
            },
            "linktext": null,
            "title": "Help with Cookies must be enabled in your browser",
            "url": "http://localhost/stable_master/help.php?component=core&identifier=cookiesenabled&lang=en",
            "ltr": true
        },
        "error": "",
        "forgotpasswordurl": "http://localhost/stable_master/login/forgot_password.php",
        "hasidentityproviders": false,
        "hasinstructions": true,
        "identityproviders": [],
        "instructions": "For full access to this site, you first need to create an account.",
        "instructionsformat": "1",
        "loginurl": "http://localhost/stable_master/login/index.php",
        "rememberusername": true,
        "signupurl": "http://localhost/stable_master/login/signup.php",
        "cookieshelpiconformatted": "",
        "errorformatted": "",
        "logourl": false,
        "sitename": "Beer & Chips",
        "logintoken": "randomstring",
        "maintenance": "For full access to this site, you need to login in as an admin."
    }
}}

{{#maintenance}}
    <div class="row justify-content-center mt-6">
        <div class="col-xl-6 col-sm-8">
            <div class="card">
                <div class="card-body">
                    <div class="card-title mb-0 text-center">
                        <h2 class="mb-0">{{#str}}sitemaintenance, core_admin{{/str}}</h2>
                    </div>
                    <div>
                        {{{maintenance}}}
                    </div>
                </div>
            </div>
        </div>
    </div>
{{/maintenance}}

<div class="card login-card">
    <div class="card-block">

        {{# show_login_page_logo }}

            {{#loginpage_logo_url}}
                <a href="{{{ config.wwwroot }}}"><h2 class="card-header text-center" ><img src="{{loginpage_logo_url}}" class="img-fluid" title="{{sitename}}" alt="{{sitename}}"/></h2></a>
            {{/loginpage_logo_url}}

            {{^loginpage_logo_url}}
                {{#logourl}}
                    <a href="{{{ config.wwwroot }}}"><h2 class="card-header text-center" ><img src="{{logourl}}" class="img-fluid" title="{{sitename}}" alt="{{sitename}}"/></h2></a>
                {{/logourl}}

                {{^logourl}}
                    <a href="{{{ config.wwwroot }}}"><h2 class="card-header text-center">{{sitename}}</h2></a>
                {{/logourl}}
            {{/loginpage_logo_url}}

        {{/ show_login_page_logo }}

        <div class="card-body">
            {{#cansignup}}
                <div class="sr-only">
                    <a href="{{signupurl}}">{{#str}} tocreatenewaccount {{/str}}</a>
                </div>
            {{/cansignup}}

            {{#error}}
                <div class="loginerrors">
                    <a href="#" id="loginerrormessage" class="accesshide">{{error}}</a>
                    <div class="alert alert-danger" role="alert" data-aria-autofocus="true">{{error}}</div>
                </div>
            {{/error}}

            <div class="row justify-content-md-center">
                <div class="col-12">
                    <form action="{{loginurl}}" method="post" id="login">
                        <input id="anchor" type="hidden" name="anchor" value="">
                        <script>document.getElementById('anchor').value = location.hash;</script>
                        <input type="hidden" name="logintoken" value="{{logintoken}}">
                        <div class="form-group">
                            <div class="input-username-wrapper">
                                <label for="username" class="sr-only">
                                    {{^canloginbyemail}}
                                        {{#str}} username {{/str}}
                                    {{/canloginbyemail}}
                                    {{#canloginbyemail}}
                                        {{#str}} usernameemail {{/str}}
                                    {{/canloginbyemail}}
                                </label>
                                <input type="text" name="username" id="username"
                                    class="form-control"
                                    value="{{username}}"
                                    placeholder={{#quote}}{{^canloginbyemail}}{{#str}}username{{/str}}{{/canloginbyemail}}{{#canloginbyemail}}{{#str}}usernameemail{{/str}}{{/canloginbyemail}}{{/quote}}
                                    autocomplete="username">
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="input-password-wrapper">
                                <label for="password" class="sr-only">{{#str}} password {{/str}}</label>
                                <input type="password" name="password" id="password" value=""
                                    class="form-control"
                                    placeholder={{#quote}}{{#str}}password{{/str}}{{/quote}}
                                    autocomplete="current-password">
                                <span class="show-password show-password-hidden fa fa-eye" id="togglePassword"></span>
                            </div>
                        </div>
                        {{#rememberusername}}
                            <div class="rememberpass mt-3">
                                <input type="checkbox" name="rememberusername" id="rememberusername" value="1" {{#username}}checked="checked"{{/username}} />
                                <label for="rememberusername">{{#str}} rememberusername, admin {{/str}}</label>
                            </div>
                        {{/rememberusername}}

                        <button type="submit" class="btn btn-primary btn-block mt-3" id="loginbtn">{{#str}}login{{/str}}</button>
                    </form>

                    <div class="forgetpass mt-3">
                        <a href="{{forgotpasswordurl}}">{{#str}}forgotten{{/str}}</a>
                    </div>
                </div>

                {{#canloginasguest}}
                <div class="col-12">
                    <hr>
                    <div class="allow-guests">
                        <div class="mb-3">{{#str}}someallowguest{{/str}}</div>
                        <form action="{{loginurl}}" method="post" id="guestlogin">
                            <input type="hidden" name="logintoken" value="{{logintoken}}">
                            <input type="hidden" name="username" value="guest" />
                            <input type="hidden" name="password" value="guest" />
                            <button class="btn btn-secondary btn-block" type="submit">{{#str}}loginguest{{/str}}</button>
                        </form>
                    </div>
                </div>
                {{/canloginasguest}}

                {{#hasidentityproviders}}
                <div class="col-12">
                    <hr>
                    <div class="identity-providers">
                        <div class="mb-3">{{#str}} potentialidps, auth {{/str}}</div>
                        <div class="potentialidplist mt-3">
                            {{#identityproviders}}
                                <div class="potentialidp">
                                    <a href="{{url}}" title={{#quote}}{{name}}{{/quote}} class="btn btn-secondary btn-block">
                                        {{#iconurl}}
                                            <img src="{{iconurl}}" alt="" width="24" height="24"/>
                                        {{/iconurl}}
                                        {{name}}
                                    </a>
                                </div>
                            {{/identityproviders}}
                        </div>
                    </div>
                </div>
                {{/hasidentityproviders}}

                {{#hasinstructions}}
                <div class="col-12">
                    <hr>
                    <div class="create-account">
                        <h4 class="mb-3">{{#str}}firsttime{{/str}}</h4>
                        <div>{{{instructions}}}</div>
                        {{#cansignup}}
                            <form class="mt-3" action="{{signupurl}}" method="get" id="signup">
                                <button type="submit" class="btn btn-secondary btn-block">{{#str}}startsignup{{/str}}</button>
                            </form>
                        {{/cansignup}}
                    </div>
                </div>
                {{/hasinstructions}}
            </div>
        </div>
    </div>
</div>

{{#js}}
    {{#error}}
        require(['jquery'], function($) {
            $('#loginerrormessage').focus();
        });
    {{/error}}
    {{^error}}
        {{#autofocusform}}
            require(['jquery'], function($) {
                if ($('#username').val()) {
                    $('#password').focus();
                } else {
                    $('#username').focus();
                }
            });
        {{/autofocusform}}
    {{/error}}
{{/js}}

<script>
    const togglePassword = document.querySelector("#togglePassword");
    const password = document.querySelector("#password");

    togglePassword.addEventListener("click", function() {
        // toggle the type attribute
        const type = password.getAttribute("type") === "password" ? "text" : "password";
        password.setAttribute("type", type);

        // toggle the icon
        this.classList.toggle("show-password-hidden");
    });
</script>