Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
{{!
2
    This file is part of Moodle - http://moodle.org/
3
 
4
    Moodle is free software: you can redistribute it and/or modify
5
    it under the terms of the GNU General Public License as published by
6
    the Free Software Foundation, either version 3 of the License, or
7
    (at your option) any later version.
8
 
9
    Moodle is distributed in the hope that it will be useful,
10
    but WITHOUT ANY WARRANTY; without even the implied warranty of
11
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
    GNU General Public License for more details.
13
 
14
    You should have received a copy of the GNU General Public License
15
    along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
}}
17
{{!
18
    @template core/loginform
19
 
20
    Moodle template for the login page.
21
 
22
    Context variables required for this template:
23
    * autofocusform: Auto focus on form ?,
24
    * canloginasguest - Is guest login allowed?,
25
    * canloginbyemail - Is login by email allowed?,
26
    * cansignup - Signup allowed?,
27
    * cookieshelpicon - cookies help icon details
28
    * error - Any errors in the form?,
29
    * forgotpasswordurl - Forgot password url,
30
    * hasidentityproviders - Flag, set to true to hide identity providers,
31
    * hasinstructions - Flag, set to true to show instructions,
32
    * identityproviders - List of identiy providers,
33
    * instructions - Instructions,
34
    * instructionsformat - Format of instructions,
35
    * loginurl - Login url,
36
    * signupurl - Signup url,
37
    * errorformatted - Formatted error,
38
    * logourl - Flag, logo url,
39
    * sitename - Name of site.,
40
    * logintoken - Random token to protect login request.,
41
    * maintenance - Maintenance message
42
 
43
    Example context (json):
44
    {
45
        "autofocusform": false,
46
        "canloginasguest": "1",
47
        "canloginbyemail": false,
48
        "cansignup": true,
49
        "cookieshelpicon": {
50
            "heading": "Cookies must be enabled in your browser",
51
            "text": "<div class=\"no-overflow\">Two cookies are used on this site. Both died..</div>",
52
            "icon": {
53
                "attributes": [
54
                    {
55
                        "name": "class",
56
                        "value": "iconhelp"
57
                    },
58
                    {
59
                        "name": "alt",
60
                        "value": "Help with Cookies must be enabled in your browser"
61
                    },
62
                    {
63
                        "name": "title",
64
                        "value": "Help with Cookies must be enabled in your browser"
65
                    },
66
                    {
67
                        "name": "src",
68
                        "value": "http://localhost/stable_master/theme/image.php?theme=space&component=core&image=help"
69
                    }
70
                ]
71
            },
72
            "linktext": null,
73
            "title": "Help with Cookies must be enabled in your browser",
74
            "url": "http://localhost/stable_master/help.php?component=core&identifier=cookiesenabled&lang=en",
75
            "ltr": true
76
        },
77
        "error": "",
78
        "forgotpasswordurl": "http://localhost/stable_master/login/forgot_password.php",
79
        "hasidentityproviders": false,
80
        "hasinstructions": true,
81
        "identityproviders": [],
82
        "instructions": "For full access to this site, you first need to create an account.",
83
        "instructionsformat": "1",
84
        "loginurl": "http://localhost/stable_master/login/index.php",
85
        "signupurl": "http://localhost/stable_master/login/signup.php",
86
        "cookieshelpiconformatted": "",
87
        "errorformatted": "",
88
        "logourl": false,
89
        "sitename": "Beer & Chips",
90
        "logintoken": "randomstring",
91
        "maintenance": "For full access to this site, you need to login in as an admin.",
92
        "languagemenu": "Choose language"
93
    }
94
 
95
 
96
}}
97
 
98
<div class="rui-login-layout
99
        {{#loginlayoutimg}}rui-login-layout-img{{/loginlayoutimg}}
100
        {{^loginlayoutimg}}rui-login-layout-simple{{/loginlayoutimg}}
101
        {{#loginlogooutside}}rui-login--logo-outsite{{/loginlogooutside}}
102
        {{#loginlayout1}}rui-login-layout--1{{/loginlayout1}}
103
        {{#loginlayout2}}rui-login-layout--2{{/loginlayout2}}
104
        {{#loginlayout3}}rui-login-layout--3{{/loginlayout3}}
105
        {{#loginlayout4}}rui-login-layout--4{{/loginlayout4}}
106
        {{#loginlayout5}}rui-login-layout--5{{/loginlayout5}}
107
        ">
108
 
109
 
110
    {{#cansignup}}
111
        {{#customsignupoutside}}
112
            <div class="rui-login-top-btn">
113
                <form action="{{signupurl}}" method="get" id="signup">
114
                    {{#stringca}}<span class="rui-login-calabel mr-2">{{{stringca}}}</span>{{/stringca}} <button type="submit" class="btn-link--clean">{{#str}}startsignup{{/str}}</button>
115
                </form>
116
            </div>
117
        {{/customsignupoutside}}
118
    {{/cansignup}}
119
 
120
 
121
    {{#loginlayoutimg}}
122
        <div class="rui-login-wrapper">
123
            <div class="rui-login-top-wrapper">
124
    {{/loginlayoutimg}}
125
 
126
    {{#loginlogooutside}}
127
        <div class="rui-login-logo-container my-6">
128
            {{#loginlayoutimg}}
129
                <div class="rui-login-top">
130
            {{/loginlayoutimg}}
131
            <div>
132
                {{#customloginlogo}}
133
                    <a href="{{{ config.wwwroot }}}" class="text-decoration-none"><img src="{{customloginlogo}}" title="{{sitename}}" alt="{{sitename}}" class="rui-login-logo img-fluid" /></a>
134
                {{/customloginlogo}}
135
 
136
                {{^customloginlogo}}
137
                    {{#logourl}}
138
                        <a href="{{{ config.wwwroot }}}"><img src="{{logourl}}" title="{{sitename}}" alt="{{sitename}}" class="rui-login-logo img-fluid" /></a>
139
                    {{/logourl}}
140
 
141
                    {{^logourl}}
142
                        <a href="{{{ config.wwwroot }}}" class="text-decoration-none">
143
                            <h1 class="rui-login-logo-name">{{sitename}}</h1>
144
                        </a>
145
                    {{/logourl}}
146
                {{/customloginlogo}}
147
            </div>
148
            {{#loginlayoutimg}}
149
        </div>{{/loginlayoutimg}}
150
</div>
151
{{/loginlogooutside}}
152
 
153
{{#loginhtmlcontent1}}
154
    <div class="rui-login-html-1">
155
        {{{loginhtmlcontent1}}}
156
    </div>
157
{{/loginhtmlcontent1}}
158
 
159
{{#loginlayoutimg}}
160
    </div>
161
    </div>
162
{{/loginlayoutimg}}
163
 
164
{{#loginlayoutimg}}
165
    <div class="rui-login-wrapper row no-gutters align-items-center justify-content-center w-100">
166
        <div class="rui-login-container row no-gutters">
167
 
168
{{/loginlayoutimg}}
169
 
170
<div class="rui-login-box">
171
    <div class="rui-login-content">
172
        {{#cansignup}}
173
            <div class="sr-only">
174
                <a href="{{signupurl}}">{{#str}} tocreatenewaccount {{/str}}</a>
175
            </div>
176
        {{/cansignup}}
177
 
178
        <div class="rui-loginpage-intro">
179
            {{^loginlogooutside}}
180
                <div class="rui-loginpage-intro-logo {{#customlogindmlogo}}dark-mode-logo{{/customlogindmlogo}} ">
181
                    {{#customloginlogo}}
182
                        <a href="{{{ config.wwwroot }}}" class="text-decoration-none">
1441 ariadna 183
                            <h1><img src="{{customloginlogo}}" title="{{sitename}}" alt="{{sitename}}" class="rui-login-logo img-fluid" /></h1>
184
                            {{#customlogindmlogo}}<h1><img src="{{customlogindmlogo}}" alt="{{sitename}}" class="rui-custom-dmlogo ml-2 img-fluid" /></h1>{{/customlogindmlogo}}
1 efrain 185
                        </a>
186
                    {{/customloginlogo}}
187
 
188
                    {{^customloginlogo}}
189
                        {{#logourl}}
190
                            <a href="{{{ config.wwwroot }}}" class="text-decoration-none">
1441 ariadna 191
                                <h1><img src="{{logourl}}" title="{{sitename}}" alt="{{sitename}}" class="rui-login-logo img-fluid" /></h1>
1 efrain 192
                            </a>
193
                        {{/logourl}}
194
 
195
                        {{^logourl}}
196
                            <a href="{{{ config.wwwroot }}}" class="text-decoration-none">
1441 ariadna 197
                                <h1>{{sitename}}</h1>
1 efrain 198
                            </a>
199
                        {{/logourl}}
200
                    {{/customloginlogo}}
201
                </div>
202
            {{/loginlogooutside}}
203
 
204
            {{#loginintrotext}}
205
                <div class="rui-loginpage-intro-content mb-3 text-center">
206
                    {{{loginintrotext}}}
207
                </div>
208
            {{/loginintrotext}}
209
 
210
        </div>
211
 
212
        {{#error}}
213
            <div class="loginerrors mt-3">
214
                <a href="#" id="loginerrormessage" class="accesshide">{{error}}</a>
215
                <div class="alert alert-danger" role="alert" data-aria-autofocus="true">{{error}}</div>
216
            </div>
217
        {{/error}}
218
 
219
        {{#loginidprovtop}}
220
            {{#hasidentityproviders}}
221
                <div class="rui-potentialidplist login-identityproviders mt-3 text-center">
222
                    <p class="small text-center">{{#str}} potentialidps, auth {{/str}}</p>
223
                    <div class="row no-gutters mt-1">
224
                        {{#identityproviders}}
225
                            <a class="btn btn-secondary login-identityprovider-btn rui-potentialidp w-100 mt-1" href="{{url}}">
226
                                {{#iconurl}}
227
                                    <img src="{{iconurl}}" alt="" width="24" height="24"/>
228
                                {{/iconurl}}
229
                                {{name}}
230
                            </a>
231
                        {{/identityproviders}}
232
                    </div>
233
                    <hr class="hr-small" />
234
                </div>
235
            {{/hasidentityproviders}}
236
        {{/loginidprovtop}}
237
 
238
        <div class="rui-login-form">
239
 
240
            <form action="{{loginurl}}" method="post" id="login">
241
                <input id="anchor" type="hidden" name="anchor" value="">
242
                <script>
243
                    document.getElementById('anchor').value = location.hash;
244
                </script>
245
                <input type="hidden" name="logintoken" value="{{logintoken}}">
246
                <div class="form-group mb-2 form-control--username-box">
247
                    <label for="username" class="sr-only">
248
                        {{^canloginbyemail}}
249
                            {{#str}} username {{/str}}
250
                        {{/canloginbyemail}}
251
                        {{#canloginbyemail}}
252
                            {{#str}} usernameemail {{/str}}
253
                        {{/canloginbyemail}}
254
                    </label>
255
                    <input type="text" name="username" id="username" {{!
256
                !}}class="form-control form-control--username" {{!
257
                !}}value="{{username}}" {{!
258
                !}}placeholder="{{^canloginbyemail}}{{#cleanstr}}username{{/cleanstr}}{{/canloginbyemail}}{{!
259
                !}}{{#canloginbyemail}}{{#cleanstr}}usernameemail{{/cleanstr}}{{/canloginbyemail}}" {{!
260
                !}}autocomplete="username">
261
                </div>
262
                <div class="form-group my-1 form-control--password-box">
263
                    <label for="password" class="sr-only">{{#str}} password {{/str}}</label>
264
                    <input type="password" name="password" id="password" value="" {{!
265
                !}}class="form-control form-control--password" {{!
266
                !}}placeholder="{{#cleanstr}}password{{/cleanstr}}" {{!
267
                !}}autocomplete="current-password">
1441 ariadna 268
                    <button class="rui-show-password-btn rui-show-password-btn--hidden border-0" id="togglePassword" tabindex="0" type="button" role="button" aria-checked="false" title="{{#str}}modshow, moodle{{/str}}/{{#str}}modhide, moodle{{/str}} {{#str}}password, moodle{{/str}}">
269
                        <span class="sr-only">{{#str}}modshow, moodle{{/str}}/{{#str}}modhide, moodle{{/str}} {{#str}}password, moodle{{/str}}</span>
1 efrain 270
                        <svg class="showpassword-icon--off" width="24" height="24" fill="none" viewBox="0 0 24 24">
271
                            <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.25 12C19.25 13 17.5 18.25 12 18.25C6.5 18.25 4.75 13 4.75 12C4.75 11 6.5 5.75 12 5.75C17.5 5.75 19.25 11 19.25 12Z"></path>
272
                            <circle cx="12" cy="12" r="2.25" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"></circle>
273
                        </svg>
274
                        <svg class="showpassword-icon--on" width="24" height="24" fill="none" viewBox="0 0 24 24">
275
                            <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M18.6247 10C19.0646 10.8986 19.25 11.6745 19.25 12C19.25 13 17.5 18.25 12 18.25C11.2686 18.25 10.6035 18.1572 10 17.9938M7 16.2686C5.36209 14.6693 4.75 12.5914 4.75 12C4.75 11 6.5 5.75 12 5.75C13.7947 5.75 15.1901 6.30902 16.2558 7.09698"></path>
276
                            <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.25 4.75L4.75 19.25"></path>
277
                            <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M10.409 13.591C9.53033 12.7123 9.53033 11.2877 10.409 10.409C11.2877 9.5303 12.7123 9.5303 13.591 10.409"></path>
278
                        </svg>
279
                    </button>
280
                </div>
281
                {{^hideforgotpassword}}
282
                    <div class="w-100 text-center">
283
                        <a class="rui-login-forgot-btn" href="{{forgotpasswordurl}}">{{#str}}forgotten{{/str}}</a>
284
                    </div>
285
                {{/hideforgotpassword}}
286
                {{{logininfobox}}}
287
                {{#recaptcha}}
288
                    <div class="login-form-recaptcha form-group">
289
                        {{{recaptcha}}}
290
                    </div>
291
                {{/recaptcha}}
292
                <button type="submit" class="btn btn-lg btn-primary btn-block mt-3" id="loginbtn">{{#str}}login{{/str}}</button>
293
            </form>
294
        </div><!-- .rui-login-form -->
295
 
296
        {{^loginidprovtop}}
297
            {{#hasidentityproviders}}
298
                <hr class="hr-small" />
299
                <div class="rui-potentialidplist login-identityproviders mt-3 text-center">
300
                    <p class="small text-center">{{#str}} potentialidps, auth {{/str}}</p>
301
                    <div class="row no-gutters mt-1">
302
                        {{#identityproviders}}
303
                            <a class="btn btn-secondary login-identityprovider-btn rui-potentialidp w-100 mt-1" href="{{url}}">
304
                                {{#iconurl}}
305
                                    <img src="{{iconurl}}" alt="" width="24" height="24"/>
306
                                {{/iconurl}}
307
                                {{name}}
308
                            </a>
309
                        {{/identityproviders}}
310
                    </div>
311
                </div>
312
            {{/hasidentityproviders}}
313
        {{/loginidprovtop}}
314
 
315
        <div class="rui-login-additional-btns">
316
            {{#canloginasguest}}
317
            <hr class="hr-small" />
318
                <div class="rui-canloginasguest mt-2" title="{{#str}}someallowguest{{/str}}">
319
                    <p class="small text-center">{{#str}}someallowguest{{/str}}</p>
320
                    <form action="{{loginurl}}" method="post" id="guestlogin">
321
                        <input type="hidden" name="logintoken" value="{{logintoken}}">
322
                        <input type="hidden" name="username" value="guest" />
323
                        <input type="hidden" name="password" value="guest" />
324
                        <button class="btn btn-sm btn-outline-secondary w-100" type="submit" id="loginguestbtn">{{#str}}loginguest{{/str}}</button>
325
                    </form>
326
                </div>
327
            {{/canloginasguest}}
328
        </div><!-- .rui-additional-btns -->
329
 
330
        {{#cansignup}}
331
            {{^customsignupoutside}}
332
                <div class="rui-login-createaccount my-4 text-center">
333
                    {{#canloginasguest}}<hr class="hr-small" />{{/canloginasguest}}
334
                    <form action="{{signupurl}}" method="get" id="signup">
335
                        {{#stringca}}
336
                            <p class="small">{{{stringca}}}</p>
337
                        {{/stringca}}
338
                        <button type="submit" class="btn btn-info w-100">{{#str}}startsignup{{/str}}</button>
339
                    </form>
340
                </div>
341
            {{/customsignupoutside}}
342
        {{/cansignup}}
343
 
344
        {{#loginhtmlblockbottom}}
345
            <div class="rui-login-bottom-block">
346
                {{{loginhtmlblockbottom}}}
347
            </div>
348
        {{/loginhtmlblockbottom}}
349
 
350
        {{#instructions}}
351
            <div class="rui-hasinstructions-desc alert alert-info">
352
                {{{instructions}}}
353
            </div><!-- .rui-hasinstructions-desc -->
354
        {{/instructions}}
355
 
356
        {{^loginlayoutimg}}
357
            {{#loginhtmlcontent3}}
358
                <div class="rui-login-html-3">
359
                    {{{loginhtmlcontent3}}}
360
                </div>
361
            {{/loginhtmlcontent3}}
362
 
363
            {{#loginfootercontent}}
364
                <div class="rui-login-footer-content text-center mb-2">
365
                    <hr class="hr-small" />
366
                    {{{loginfootercontent}}}
367
                </div>
368
            {{/loginfootercontent}}
369
        {{/loginlayoutimg}}
370
    </div><!-- .rui-login-content -->
371
 
372
</div><!-- .rui-login-box -->
373
 
374
 
375
{{#maintenance}}
376
    <div class="rui-maintenance alert alert-warning wrapper-md my-4 p-5">
1441 ariadna 377
        <h1>{{#str}}sitemaintenance, core_admin{{/str}}</h1>
1 efrain 378
        <div class="rui-maintenance-desc">
379
            {{{maintenance}}}
380
        </div>
381
    </div>
382
{{/maintenance}}
383
 
384
{{#loginlayoutimg}}
385
    <div class="rui-login-bg-container" style="background-image: url('{{loginbg}}');" alt="{{#str}}messagecontentimage, message{{/str}}">
386
        {{#loginhtmlcontent2}}
387
            <div class="rui-login-additional-content">
388
                {{{loginhtmlcontent2}}}
389
            </div>
390
        {{/loginhtmlcontent2}}
391
    </div>
392
{{/loginlayoutimg}}
393
 
394
{{#loginlayoutimg}}
395
    </div>
396
    </div>
397
{{/loginlayoutimg}}
398
 
399
{{#loginlayoutimg}}
400
    <div class="rui-login-wrapper">
401
        {{#loginhtmlcontent3}}
402
            <div class="rui-login-footer rui-login-footer-content">
403
                {{{loginhtmlcontent3}}}
404
            </div>
405
        {{/loginhtmlcontent3}}
406
 
407
        {{#loginfootercontent}}
408
            <div class="rui-login-footer text-center">
409
                {{{loginfootercontent}}}
410
            </div>
411
        {{/loginfootercontent}}
412
 
413
    </div>
414
{{/loginlayoutimg}}
415
 
416
<button type="button" class="btn btn-xs btn-dark btn--cookie" {{!
417
        }} data-modal="alert" {{!
418
        }} data-modal-title-str='["cookiesenabled", "core"]' {{!
419
        }} data-modal-content-str='["cookiesenabled_help_html", "core"]' {{!
420
        }}>
421
    <svg width="20" height="20" fill="none" viewBox="0 0 24 24">
422
        <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 13V15"></path>
423
        <circle cx="12" cy="9" r="1" fill="currentColor"></circle>
424
        <circle cx="12" cy="12" r="7.25" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"></circle>
425
    </svg>
426
 
427
    <span class="ml-1">{{#str}}cookiesnotice{{/str}}</span></button>
428
 
429
</div><!-- .login layout -->
430
 
431
{{#js}}
432
    {{^error}}
433
        {{#autofocusform}}
434
            var userNameField = document.getElementById('username');
435
            if (userNameField.value.length == 0) {
436
                userNameField.focus();
437
            } else {
438
                document.getElementById('password').focus();
439
            }
440
        {{/autofocusform}}
441
    {{/error}}
442
    {{#error}}
443
        document.getElementById('loginerrormessage').focus();
444
    {{/error}}
445
    require(['core_form/submit'], function(Submit) {
446
        Submit.init("loginbtn");
447
        {{#canloginasguest}}
448
            Submit.init("loginguestbtn");
449
        {{/canloginasguest}}
450
    });
451
{{/js}}
452
<script>
453
    const togglePassword = document.querySelector("#togglePassword");
454
    const password = document.querySelector("#password");
455
 
456
    togglePassword.addEventListener("click", function() {
457
        // toggle the type attribute
458
        const type = password.getAttribute("type") === "password" ? "text" : "password";
459
        password.setAttribute("type", type);
460
 
461
        // toggle the icon
462
        this.classList.toggle("rui-show-password-btn--hidden");
463
    });
464
</script>
465
 
466
{{{logincustomfooterhtml}}}