From 5a0c49fb3723d0bbe71a254f0af2f4a73667e830 Mon Sep 17 00:00:00 2001 From: Kyle M Hall <kyle@bywatersolutions.com> Date: Mon, 10 Sep 2012 08:06:09 -0400 Subject: [PATCH] Bug 7067 - OPAC Borrower Self Registration - Followup Content-Type: text/plain; charset="utf-8" --- C4/Members.pm | 9 +- Koha/Borrower/Modifications.pm | 32 ++++-- .../intranet-tmpl/prog/en/modules/intranet-main.tt | 3 +- .../prog/en/modules/members/members-update.tt | 113 ++++++++++---------- .../opac-tmpl/prog/en/modules/opac-memberentry.tt | 26 ++++- mainpage.pl | 10 ++- members/members-update-do.pl | 2 +- members/members-update.pl | 10 ++- opac/opac-memberentry.pl | 22 ++-- 9 files changed, 138 insertions(+), 89 deletions(-) diff --git a/C4/Members.pm b/C4/Members.pm index 5cf65e3..ae00805 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -757,10 +757,6 @@ sub AddMember { # generate a proper login if none provided $data{'userid'} = Generate_Userid($data{'borrowernumber'}, $data{'firstname'}, $data{'surname'}) if $data{'userid'} eq ''; - # create a disabled account if no password provided - $data{'password'} = ($data{'password'})? md5_base64($data{'password'}) : '!'; - $data{'borrowernumber'}=InsertInTable("borrowers",\%data); - # add expiration date if it isn't already there unless ( $data{'dateexpiry'} ) { $data{'dateexpiry'} = GetExpiryDate( $data{'categorycode'}, C4::Dates->new()->output("iso") ); @@ -771,6 +767,11 @@ sub AddMember { $data{'dateenrolled'} = C4::Dates->new()->output("iso"); } + # create a disabled account if no password provided + $data{'password'} = ($data{'password'})? md5_base64($data{'password'}) : '!'; + $data{'borrowernumber'}=InsertInTable("borrowers",\%data); + + # mysql_insertid is probably bad. not necessarily accurate and mysql-specific at best. logaction("MEMBERS", "CREATE", $data{'borrowernumber'}, "") if C4::Context->preference("BorrowersLog"); diff --git a/Koha/Borrower/Modifications.pm b/Koha/Borrower/Modifications.pm index a986599..f83b61d 100644 --- a/Koha/Borrower/Modifications.pm +++ b/Koha/Borrower/Modifications.pm @@ -144,17 +144,24 @@ Returns the number of pending modifications for existing borrowers. =cut sub GetPendingModificationsCount { - my ($self) = @_; + my ( $self, $branchcode ) = @_; my $dbh = C4::Context->dbh; my $query = " SELECT COUNT(*) AS count - FROM borrower_modifications - WHERE borrowernumber > 0 + FROM borrower_modifications, borrowers + WHERE borrower_modifications.borrowernumber > 0 + AND borrower_modifications.borrowernumber = borrowers.borrowernumber "; + my @params; + if ($branchcode) { + $query .= " AND borrowers.branchcode = ? "; + push( @params, $branchcode ); + } + my $sth = $dbh->prepare($query); - $sth->execute(); + $sth->execute(@params); my $result = $sth->fetchrow_hashref(); return $result->{'count'}; @@ -169,17 +176,24 @@ Returns an arrayref of hashrefs for all pending modifications for existing borro =cut sub GetPendingModifications { - my ($self) = @_; + my ( $self, $branchcode ) = @_; my $dbh = C4::Context->dbh; my $query = " - SELECT * - FROM borrower_modifications - WHERE borrowernumber > 0 + SELECT borrower_modifications.* + FROM borrower_modifications, borrowers + WHERE borrower_modifications.borrowernumber > 0 + AND borrower_modifications.borrowernumber = borrowers.borrowernumber "; + my @params; + if ($branchcode) { + $query .= " AND borrowers.branchcode = ? "; + push( @params, $branchcode ); + } + my $sth = $dbh->prepare($query); - $sth->execute(); + $sth->execute(@params); my @m; while ( my $row = $sth->fetchrow_hashref() ) { diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt index 8242d23..8e9ecf4 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt @@ -100,6 +100,7 @@ <div class="yui-g"> [% IF ( ( CAN_user_tools_moderate_comments && pendingcomments ) || ( CAN_user_tools_moderate_tags && pendingtags ) + || ( CAN_user_borrowers && pending_borrower_modifications ) || ( CAN_user_acquisition && pendingsuggestions ) ) %] <div id="area-pending"> [% IF ( CAN_user_acquisition && pendingsuggestions ) %] @@ -125,7 +126,7 @@ [% END %] - [% IF ( CAN_user_borrowers && pending_borrower_modifications )%] + [% IF ( CAN_user_borrowers && pending_borrower_modifications ) %] <div class="pending-info"> <a href="/cgi-bin/koha/members/members-update.pl">Patrons requesting modifications</a>: <span class="pending-number-link">[% pending_borrower_modifications %]</span> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/members-update.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/members-update.tt index 8878b7f..4495054 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/members-update.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/members-update.tt @@ -64,72 +64,75 @@ <div id="yui-main"> <div class="yui-b"> <div class="yui-g"> + [% IF PendingModifications %] + <form method="post" action="members-update-do.pl"> - <form method="post" action="members-update-do.pl"> - - <table> - <thead> - <tr> - <th colspan="3">Action</th> - <th rowspan="2">Patron</th> - <th rowspan="2">Changes</th> - </tr> - - <tr> - <th>Approve</th> - <th>Deny</th> - <th>Ignore</th> - </tr> - </thead> + <table> + <thead> + <tr> + <th colspan="3">Action</th> + <th rowspan="2">Patron</th> + <th rowspan="2">Changes</th> + </tr> - <tbody> - [% FOREACH pm IN PendingModifications %] - [% SET borrowernumber = pm.borrowernumber %] <tr> - <td> - <input type="radio" name="modify_[% pm.borrowernumber %]" value="approve" /> - </td> - <td> - <input type="radio" name="modify_[% pm.borrowernumber %]" value="deny" /> - </td> - <td> - <input type="radio" name="modify_[% pm.borrowernumber %]" value="ignore" checked="checked"/> - </td> + <th>Approve</th> + <th>Deny</th> + <th>Ignore</th> + </tr> + </thead> + + <tbody> + [% FOREACH pm IN PendingModifications %] + [% SET borrowernumber = pm.borrowernumber %] + <tr> + <td> + <input type="radio" name="modify_[% pm.borrowernumber %]" value="approve" /> + </td> + <td> + <input type="radio" name="modify_[% pm.borrowernumber %]" value="deny" /> + </td> + <td> + <input type="radio" name="modify_[% pm.borrowernumber %]" value="ignore" checked="checked"/> + </td> - <td> - [% borrowers.$borrowernumber.firstname %] [% borrowers.$borrowernumber.surname %] - </td> + <td> + [% borrowers.$borrowernumber.firstname %] [% borrowers.$borrowernumber.surname %] + </td> - <td> - <table> - <tr> - <th>Field</th> - <th>From</th> - <th>To</th> - </tr> + <td> + <table> + <tr> + <th>Field</th> + <th>From</th> + <th>To</th> + </tr> - [% FOREACH key IN pm.keys %] - [% IF field_display_names.$key %] - [% IF ( ( pm.$key OR borrowers.$borrowernumber.$key ) && ( pm.$key != borrowers.$borrowernumber.$key ) ) %] - <tr> - <td>[% field_display_names.$key %]</td> - <td>[% borrowers.$borrowernumber.$key %]</td> - <td>[% pm.$key %]</td> - </td> + [% FOREACH key IN pm.keys %] + [% IF field_display_names.$key %] + [% IF ( ( pm.$key OR borrowers.$borrowernumber.$key ) && ( pm.$key != borrowers.$borrowernumber.$key ) ) %] + <tr> + <td>[% field_display_names.$key %]</td> + <td>[% borrowers.$borrowernumber.$key %]</td> + <td>[% pm.$key %]</td> + </td> + [% END %] [% END %] [% END %] - [% END %] - </table> - </td> - </tr> - [% END %] - </tbody> - </table> + </table> + </td> + </tr> + [% END %] + </tbody> + </table> - <p><input type="submit" /></p> + <p><input type="submit" /></p> - </form> + </form> + [% ELSE %] + <p>There are no pending patron modifications.</p> + [% END %] </div> </div> </div> diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-memberentry.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-memberentry.tt index 38c0bc7..fab3ff5 100644 --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-memberentry.tt +++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-memberentry.tt @@ -7,7 +7,16 @@ <script type="text/javascript"> $(document).ready(function() { - $( "#borrower_dateofbirth" ).datepicker({ yearRange: "c-120:c" }); + [% IF OPACPatronDetails %] + $( "#borrower_dateofbirth" ).datepicker({ yearRange: "c-120:c" }); + [% ELSE %] + $("#memberentry-form :input").attr('readonly', true); + $("#borrower_branchcode").attr('disabled',true); + $("#borrower_title").attr('disabled',true); + $('#memberentry-form :radio').attr('disabled',true); + $('span.required').remove(); + $('label.required').removeClass('required'); + [% END %] }); </script> </head> @@ -21,6 +30,9 @@ <div class="yui-b"> <div class="yui-g"> <div id="useraccount" class="container"> + [% UNLESS OPACPatronDetails %] + <div>To make changes to your record please contact the library.</div> + [% END %] [% IF empty_mandatory_fields %] <div class="dialog alert">You have not filled out all required fields. Please fill in all missing fields and resubmit.</div> @@ -30,7 +42,7 @@ <div class="dialog alert">You typed in the wrong characters in the box before submitting. Please try again.</div> [% END %] - <form method="post"> + <form method="post" id="memberentry-form"> [% UNLESS hidden.defined('branchcode') @@ -134,7 +146,9 @@ <input type="text" id="borrower_dateofbirth" name="borrower_dateofbirth" value="[% borrower.dateofbirth | $KohaDates %]" readonly="readonly" size="10" /> - <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('borrower_dateofbirth').value='';return false;">Clear date</a><p></p> + [% IF OPACPatronDetails %] + <a href="#" style="font-size:85%;text-decoration:none;" onclick="document.getElementById('borrower_dateofbirth').value='';return false;">Clear date</a><p></p> + [% END %] [% IF mandatory.defined('dateofbirth') %]<span class="required">Required</span>[% END %] </li> @@ -690,8 +704,10 @@ [% END %] [% IF action == 'edit' %] - <input type="hidden" name="action" value="update" /> - <input type="submit" value="Submit Update Request" /> + [% IF OPACPatronDetails %] + <input type="hidden" name="action" value="update" /> + <input type="submit" value="Submit Update Request" /> + [% END %] [% ELSE %] <input type="hidden" name="action" value="create" /> <input type="submit" value="Submit" /> diff --git a/mainpage.pl b/mainpage.pl index 78dbe66..259380b 100755 --- a/mainpage.pl +++ b/mainpage.pl @@ -32,7 +32,7 @@ use Koha::Borrower::Modifications; my $query = new CGI; -my ( $template, $loggedinuser, $cookie ) = get_template_and_user( +my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user( { template_name => "intranet-main.tmpl", query => $query, @@ -50,11 +50,17 @@ $template->param( koha_news_count => $koha_news_count ); +my $branch = + C4::Context->preference("IndependantBranches") + && !$flags->{'superlibrarian'} + ? C4::Context->userenv()->{'branch'} + : undef; + my $pendingcomments = numberofreviews(0); my $pendingtags = get_count_by_tag_status(0); my $pendingsuggestions = CountSuggestion("ASKED"); my $pending_borrower_modifications = - Koha::Borrower::Modifications->GetPendingModificationsCount(); + Koha::Borrower::Modifications->GetPendingModificationsCount( $branch ); $template->param( pendingcomments => $pendingcomments, diff --git a/members/members-update-do.pl b/members/members-update-do.pl index 147975a..e7b7b28 100755 --- a/members/members-update-do.pl +++ b/members/members-update-do.pl @@ -61,4 +61,4 @@ foreach my $param (@params) { } } -print $query->redirect("/cgi-bin/koha/mainpage.pl"); +print $query->redirect("/cgi-bin/koha/members/members-update.pl"); diff --git a/members/members-update.pl b/members/members-update.pl index 9ffcf42..334d83b 100755 --- a/members/members-update.pl +++ b/members/members-update.pl @@ -30,7 +30,7 @@ use Koha::Borrower::Modifications; my $query = new CGI; -my ( $template, $loggedinuser, $cookie ) = get_template_and_user( +my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user( { template_name => "members/members-update.tmpl", query => $query, @@ -41,8 +41,14 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); +my $branch = + C4::Context->preference("IndependantBranches") + && !$flags->{'superlibrarian'} + ? C4::Context->userenv()->{'branch'} + : undef; + my $pending_modifications = - Koha::Borrower::Modifications->GetPendingModifications(); + Koha::Borrower::Modifications->GetPendingModifications($branch); my $borrowers; foreach my $pm (@$pending_modifications) { diff --git a/opac/opac-memberentry.pl b/opac/opac-memberentry.pl index cf24176..36ddd24 100755 --- a/opac/opac-memberentry.pl +++ b/opac/opac-memberentry.pl @@ -30,11 +30,6 @@ use C4::Branch qw(GetBranchesLoop); my $cgi = new CGI; my $dbh = C4::Context->dbh; -unless ( C4::Context->preference('PatronSelfRegistration') ) { - print $cgi->redirect("/cgi-bin/koha/opac-main.pl"); - exit; -} - my ( $template, $borrowernumber, $cookie ) = get_template_and_user( { template_name => "opac-memberentry.tmpl", @@ -44,11 +39,17 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( } ); +unless ( C4::Context->preference('PatronSelfRegistration') || $borrowernumber ) { + print $cgi->redirect("/cgi-bin/koha/opac-main.pl"); + exit; +} + $template->param( - hidden => GetHiddenFields(), - mandatory => GetMandatoryFields(), - member_titles => GetTitles(), - branches => GetBranchesLoop() + hidden => GetHiddenFields(), + mandatory => GetMandatoryFields(), + member_titles => GetTitles(), + branches => GetBranchesLoop(), + OPACPatronDetails => C4::Context->preference('OPACPatronDetails'), ); my $action = $cgi->param('action') || q{}; @@ -167,7 +168,8 @@ elsif ($borrowernumber) { #Display logged in borrower's data $action = 'edit'; $template->param( - borrower => GetMember( borrowernumber => $borrowernumber ) ); + borrower => GetMember( borrowernumber => $borrowernumber ), + ); } my $captcha = random_string("CCCCC"); -- 1.7.2.5