Bug 19641: (follow-up) Move patron templates to the footer
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / members / member-password.tt
1 [% USE Koha %]
2 [% USE Branches %]
3 [% SET footerjs = 1 %]
4 [% INCLUDE 'doc-head-open.inc' %]
5 <title>Koha &rsaquo; Patrons &rsaquo; [% IF ( newpassword ) %]Password updated [% ELSE %]Update password for [% surname %], [% firstname %][% END %]</title>
6 [% INCLUDE 'doc-head-close.inc' %]
7 </head>
8
9 <body id="pat_member-password" class="pat">
10 [% INCLUDE 'header.inc' %]
11 [% INCLUDE 'patron-search.inc' %]
12
13 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/members/members-home.pl">Patrons</a>  &rsaquo; <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">[% firstname %] [% surname %]</a> &rsaquo; [% IF ( newpassword ) %]Password Updated[% ELSE %]Change username and/or password[% END %]</div>
14
15 <div id="doc3" class="yui-t2">
16
17    <div id="bd">
18         <div id="yui-main">
19         <div class="yui-b">
20 [% INCLUDE 'members-toolbar.inc' %]
21
22 [% IF ( newpassword ) %]
23 <h1>Password Updated</h1>
24
25 [% ELSE %]
26
27 <form method="post" id="changepasswordf" action="/cgi-bin/koha/members/member-password.pl">
28 <input type="hidden" name="destination" value="[% destination %]" />
29 <input type="hidden" name="cardnumber" value="[% cardnumber %]" />
30 <input type="hidden" name="borrowernumber" id="borrowernumber" value="[% borrowernumber %]" />
31         [% IF ( errormsg ) %]
32                 <div class="dialog alert">
33                 <h4>The following errors have occurred:</h4>
34                 <ul>
35                 [% IF ( BADUSERID ) %]
36         <li>You have entered a username that already exists. Please choose another one.</li>
37                 [% END %]
38         [% IF ( ERROR_password_too_short ) %]
39             <li id="ERROR_short_password">Password must be at least [% Koha.Preference('minPasswordLength') %] characters long.</li>
40         [% END %]
41         [% IF ( ERROR_password_too_weak ) %]
42             <li id="ERROR_weak_password">Password must contain at least one digit, one lowercase and one uppercase.</li>
43         [% END %]
44         [% IF ( ERROR_password_has_whitespaces ) %]
45             <li id="ERROR_weak_password">Password must not contain leading or trailing whitespaces.</li>
46         [% END %]
47                 [% IF ( NOPERMISSION ) %]
48                 <li>You do not have permission to edit this patron's login information.</li>
49                 [% END %]
50                 [% IF ( NOMATCH ) %]
51                 <li><strong>The passwords entered do not match</strong>. Please re-enter the new password.</li>
52                 [% END %]
53                 </ul>
54                 </div>
55         [% END %]
56
57
58     <fieldset class="brief"><legend>Change username and/or password for [% firstname %] [% surname %]</legend>
59         <ol>
60     <li><label for="newuserid">New username:</label>
61         <input type="hidden" name="member" value="[% borrowernumber %]" /><input type="text" id="newuserid" name="newuserid" size="20" value="[% userid %]" /></li>
62     [% SET password_pattern = ".{" _ Koha.Preference('minPasswordLength') _ ",}" %]
63     [% IF Koha.Preference('RequireStrongPassword') %]
64         [% SET password_pattern = '(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{' _ Koha.Preference('minPasswordLength') _ ',}' %]
65     [% END %]
66     <li>
67         <label for="newpassword">New password:</label>
68         <div class="hint">Koha cannot display existing passwords. Leave the field blank to leave password unchanged.</div>
69         <input name="newpassword"  id="newpassword" type="password" size="20" />
70     </li>
71     <li>
72         <label for="newpassword2">Confirm new password:</label>
73         <input name="newpassword2"  id="newpassword2" type="password" size="20" />
74     </li>
75         </ol>
76 </fieldset>
77     <fieldset class="action">
78         <input type="hidden" name="csrf_token" value="[% csrf_token %]" />
79         <input type="submit" value="Save" />
80         <a class="cancel" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrowernumber %]">Cancel</a>
81     </fieldset>
82 </form>[% END %]
83
84 </div>
85 </div>
86 <div class="loading hide"><strong>Processing...</strong><img src="[% interface %]/[% theme %]/img/loading.gif" alt="" /></div>
87 <div class="yui-b">
88 [% INCLUDE 'circ-menu.inc' %]
89 </div>
90 </div>
91
92 [% MACRO jsinclude BLOCK %]
93     <script type="text/javascript" src="[% interface %]/[% theme %]/js/members-menu_[% KOHA_VERSION %].js"></script>
94     <script type="text/JavaScript">
95
96         function generate_password() {
97             // Always generate a strong password
98             var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
99             var length = [% Koha.Preference('minPasswordLength') %];
100             if ( length < 8 ) length = 8;
101             var password='';
102             for ( var i = 0 ; i < length ; i++){
103                 password += chars.charAt(Math.floor(Math.random()*chars.length));
104             }
105             return password;
106         }
107         $(document).ready(function() {
108             $("body").on('click', "#fillrandom",function(e) {
109                 e.preventDefault();
110                 var password = '';
111                 var pattern_regex = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{[% Koha.Preference('minPasswordLength') %],}/;
112                 while ( ! pattern_regex.test( password ) ) {
113                     password = generate_password();
114                 }
115                 $("#newpassword").val(password);
116                 $("#newpassword").attr('type', 'text');
117                 $("#newpassword2").val(password);
118                 $("#newpassword2").attr('type', 'text');
119             });
120             $("div.hint").eq(0).after(" <div class=\"hint\"><a href=\"#\" id=\"fillrandom\">"+_("Click to fill with a randomly generated suggestion. ")+"<strong>"+_("Passwords will be displayed as text")+"</strong>.</a></div>");
121
122             $(document).ajaxStart(function () {
123                 $("input[name^=newpassword]").hide();
124                 $("label[for=newpassword2]").hide();
125                 $(".hint:last").after($(".loading").show());
126             });
127             $(document).ajaxStop(function () {
128                 $("input[name^=newpassword]").show();
129                 $("label[for=newpassword2]").show();
130                 $(".loading").hide();
131                 $("label.error").hide();
132             });
133             [% IF NOMATCH %]
134                 $("#newpassword").addClass('focus');
135             [% END %]
136
137             $("#changepasswordf").validate({
138                 rules: {
139                     newpassword: {
140                         required: true,
141                         password_strong: true,
142                         password_no_spaces: true
143                     },
144                     newpassword2: {
145                         required: true,
146                         password_match: true
147                     }
148                 }
149             });
150         });
151     </script>
152     [% PROCESS 'password_check.inc' %]
153     [% PROCESS 'add_password_check' new_password => 'newpassword' %]
154 [% END %]
155
156 [% INCLUDE 'intranet-bottom.inc' %]