Wainui Witika-Park
26e38d4990
Changed each of the pages in the labels and members folders to have one <h1> tag showing that describes the page, rather than the <h1> describing the logo. The hierarchy of heading tags may be broken in many pages, but this will be dealt with in an additional bug. To test: 1) Go to the Staff Client 2) Apply patch 3) Go to each of the pages in the labels and members folders and check that they have an obvious and descriptive heading 4) Ensure that the heading in the page is <h1> Sponsored-by: Catalyst IT Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
185 lines
7.4 KiB
Text
185 lines
7.4 KiB
Text
[% USE raw %]
|
|
[% USE Asset %]
|
|
[% USE Koha %]
|
|
[% USE Branches %]
|
|
[% SET footerjs = 1 %]
|
|
[% INCLUDE 'doc-head-open.inc' %]
|
|
<title>
|
|
[% IF ( newpassword ) %]Password updated [% ELSE %]Update password for [% patron.surname | html %], [% patron.firstname | html %][% END %] › Patrons › Koha
|
|
</title>
|
|
[% INCLUDE 'doc-head-close.inc' %]
|
|
</head>
|
|
|
|
<body id="pat_member-password" class="pat">
|
|
[% INCLUDE 'header.inc' %]
|
|
[% INCLUDE 'patron-search-header.inc' %]
|
|
|
|
<nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
|
|
<ol>
|
|
<li>
|
|
<a href="/cgi-bin/koha/mainpage.pl">Home</a>
|
|
</li>
|
|
<li>
|
|
<a href="/cgi-bin/koha/members/members-home.pl">Patrons</a>
|
|
</li>
|
|
<li>
|
|
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron.borrowernumber | uri %]">[% patron.firstname | html %] [% patron.surname | html %]</a>
|
|
</li>
|
|
<li>
|
|
<a href="#" aria-current="page">
|
|
[% IF ( newpassword ) %]
|
|
Password updated
|
|
[% ELSE %]
|
|
Change username and/or password
|
|
[% END %]
|
|
</a>
|
|
</li>
|
|
</ol>
|
|
</nav>
|
|
|
|
<div class="main container-fluid">
|
|
<div class="row">
|
|
<div class="col-sm-10 col-sm-push-2">
|
|
<main>
|
|
|
|
[% INCLUDE 'members-toolbar.inc' %]
|
|
|
|
[% IF ( newpassword ) %]
|
|
<h1>Password updated</h1>
|
|
|
|
[% ELSE %]
|
|
|
|
<form method="post" id="changepasswordf" action="/cgi-bin/koha/members/member-password.pl">
|
|
<input type="hidden" name="destination" value="[% destination | html %]" />
|
|
<input type="hidden" name="borrowernumber" id="borrowernumber" value="[% patron.borrowernumber | html %]" />
|
|
[% IF ( errormsg ) %]
|
|
<div class="dialog alert">
|
|
<h4>The following errors have occurred:</h4>
|
|
<ul>
|
|
[% IF ( BADUSERID ) %]
|
|
<li>You have entered a username that already exists. Please choose another one.</li>
|
|
[% END %]
|
|
[% IF ( ERROR_password_too_short ) %]
|
|
<li id="ERROR_short_password">Password must be at least [% patron.category.effective_min_password_length | html %] characters long.</li>
|
|
[% END %]
|
|
[% IF ( ERROR_password_too_weak ) %]
|
|
<li id="ERROR_weak_password">Password must contain at least one digit, one lowercase and one uppercase.</li>
|
|
[% END %]
|
|
[% IF ( ERROR_password_has_whitespaces ) %]
|
|
<li id="ERROR_weak_password">Password must not contain leading or trailing whitespaces.</li>
|
|
[% END %]
|
|
[% IF ( ERROR_from_plugin ) %]
|
|
<li id="ERROR_from_plugin">The password was rejected by a plugin.</li>
|
|
[% END %]
|
|
[% IF ( NOPERMISSION ) %]
|
|
<li>You do not have permission to edit this patron's login information.</li>
|
|
[% END %]
|
|
[% IF ( NOMATCH ) %]
|
|
<li><strong>The passwords entered do not match</strong>. Please re-enter the new password.</li>
|
|
[% END %]
|
|
</ul>
|
|
</div>
|
|
[% END %]
|
|
|
|
|
|
<fieldset class="brief"><legend><h1>Change username and/or password for [% patron.firstname | html %] [% patron.surname | html %]</h1></legend>
|
|
<ol>
|
|
<li><label for="newuserid">New username:</label>
|
|
<input type="hidden" name="member" value="[% patron.borrowernumber | html %]" /><input type="text" id="newuserid" name="newuserid" size="20" value="[% patron.userid | html %]" /></li>
|
|
[% SET password_pattern = ".{" _ patron.category.effective_min_password_length _ ",}" %]
|
|
[% IF patron.category.effective_require_strong_password %]
|
|
[% SET password_pattern = '(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{' _ patron.category.effective_min_password_length _ ',}' %]
|
|
[% END %]
|
|
<li>
|
|
<label for="newpassword">New password:</label>
|
|
<div class="hint">Koha cannot display existing passwords. Leave the field blank to leave password unchanged.</div>
|
|
<input name="newpassword" id="newpassword" type="password" size="20" />
|
|
</li>
|
|
<li>
|
|
<label for="newpassword2">Confirm new password:</label>
|
|
<input name="newpassword2" id="newpassword2" type="password" size="20" />
|
|
</li>
|
|
</ol>
|
|
</fieldset>
|
|
<fieldset class="action">
|
|
<input type="hidden" name="csrf_token" value="[% csrf_token | html %]" />
|
|
<input type="submit" value="Save" />
|
|
<a class="cancel" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron.borrowernumber | html %]">Cancel</a>
|
|
</fieldset>
|
|
</form>[% END %]
|
|
|
|
|
|
<div class="loading hide"><strong>Processing...</strong><img src="[% interface | html %]/[% theme | html %]/img/loading.gif" alt="" /></div>
|
|
|
|
</main>
|
|
</div> <!-- /.col-sm-10.col-sm-push-2 -->
|
|
|
|
<div class="col-sm-2 col-sm-pull-10">
|
|
<aside>
|
|
[% INCLUDE 'circ-menu.inc' %]
|
|
</aside>
|
|
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
|
|
</div> <!-- /.row -->
|
|
|
|
[% MACRO jsinclude BLOCK %]
|
|
[% INCLUDE 'str/members-menu.inc' %]
|
|
[% Asset.js("js/members-menu.js") | $raw %]
|
|
<script>
|
|
function generate_password() {
|
|
// Always generate a strong password
|
|
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
var length = [% patron.category.effective_min_password_length | html %];
|
|
if ( length < 8 ) length = 8;
|
|
var password='';
|
|
for ( var i = 0 ; i < length ; i++){
|
|
password += chars.charAt(Math.floor(Math.random()*chars.length));
|
|
}
|
|
return password;
|
|
}
|
|
$(document).ready(function() {
|
|
$("body").on('click', "#fillrandom",function(e) {
|
|
e.preventDefault();
|
|
var password = '';
|
|
var pattern_regex = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{[% patron.category.effective_min_password_length | html %],}/;
|
|
while ( ! pattern_regex.test( password ) ) {
|
|
password = generate_password();
|
|
}
|
|
$("#newpassword").val(password);
|
|
$("#newpassword").attr('type', 'text');
|
|
$("#newpassword2").val(password);
|
|
$("#newpassword2").attr('type', 'text');
|
|
});
|
|
$("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>");
|
|
|
|
$(document).ajaxStart(function () {
|
|
$("input[name^=newpassword]").hide();
|
|
$("label[for=newpassword2]").hide();
|
|
$(".hint:last").after($(".loading").show());
|
|
});
|
|
$(document).ajaxStop(function () {
|
|
$("input[name^=newpassword]").show();
|
|
$("label[for=newpassword2]").show();
|
|
$(".loading").hide();
|
|
$("label.error").hide();
|
|
});
|
|
[% IF NOMATCH %]
|
|
$("#newpassword").addClass('focus');
|
|
[% END %]
|
|
|
|
$("#changepasswordf").validate({
|
|
rules: {
|
|
newpassword: {
|
|
password_strong: true,
|
|
password_no_spaces: true
|
|
},
|
|
newpassword2: {
|
|
password_match: true
|
|
}
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
[% PROCESS 'password_check.inc' new_password => 'newpassword', minPasswordLength => patron.category.effective_min_password_length, RequireStrongPassword => patron.category.effective_require_strong_password %]
|
|
[% END %]
|
|
|
|
[% INCLUDE 'intranet-bottom.inc' %]
|