Bugzilla – Attachment 164706 Details for
Bug 36572
Cleanup the set library page and avoid extra confirmation step
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 36572: Fix and clean-up set library
Bug-36572-Fix-and-clean-up-set-library.patch (text/plain), 15.44 KB, created by
Tomás Cohen Arazi (tcohen)
on 2024-04-11 13:40:41 UTC
(
hide
)
Description:
Bug 36572: Fix and clean-up set library
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2024-04-11 13:40:41 UTC
Size:
15.44 KB
patch
obsolete
>From 782820406fa40565cde8551bd271829b6c98832a Mon Sep 17 00:00:00 2001 >From: Lucas Gass <lucas@bywatersolutions.com> >Date: Thu, 11 Apr 2024 08:38:04 +0000 >Subject: [PATCH] Bug 36572: Fix and clean-up set library > >To test: >1. Have 3 staff accounts to test: > -STAFF A: superlibrarian > -STAFF B: loggedinlibrary permission > -STAFF C: no loggedinlibrary or superlibrarian permission >2. Enable 'UseCirculationDesks' and create some desks. (Admin > > Circulation desks) >3. Enable 'UseCashRegisters' and create some registers ( Admin > Cash > registers) >4. Use STAFF A ( superlibrarian ) and make sure you can change branch, > desk and register. >5. Use STAFF B ( loggedinlibrary permission ) and make sure you can > change branch, desk and register. >6. Use STAFF C ( no loggedinlibrary or superlibrarian permission ) and > make sure you can change branch, desk and register. >7. Each time you change you should be redirected to the page you were > previously on. > >Signed-off-by: Owen Leonard <oleonard@myacpl.org> >Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> >--- > circ/set-library.pl | 86 +++----- > .../prog/en/modules/circ/set-library.tt | 196 +++++++----------- > 2 files changed, 103 insertions(+), 179 deletions(-) > >diff --git a/circ/set-library.pl b/circ/set-library.pl >index b370245bd33..c840f0f1987 100755 >--- a/circ/set-library.pl >+++ b/circ/set-library.pl >@@ -47,11 +47,10 @@ my $register_id = $query->param('register_id'); > my $userenv_branch = C4::Context->userenv->{'branch'} || ''; > my $userenv_desk = C4::Context->userenv->{'desk_id'} || ''; > my $userenv_register_id = C4::Context->userenv->{'register_id'} || ''; >-my @updated; >+my $updated; > > my $library = Koha::Libraries->find($branch); > # $session lines here are doing the updating >-## Please see file perltidy.ERR > if ( > $op eq 'cud-set-library' > && $library >@@ -63,76 +62,49 @@ if ( > my $branchname = $library->branchname; > $session->param( 'branchname', $branchname ); # update sesssion in DB > $session->param( 'branch', $branch ); # update sesssion in DB >- push @updated, { >- updated_branch => 1, >- old_branch => $userenv_branch, >- new_branch => $branch, >- }; >- } # else branch the same, no update >-} elsif ( $op eq 'cud-set-library' && $library ) { >- if ( $desk_id && ( !$userenv_desk or $userenv_desk ne $desk_id ) ) { >- my $desk = Koha::Desks->find( { desk_id => $desk_id } ); >- my $old_desk_name = ''; >- if ($userenv_desk) { >- $old_desk_name = Koha::Desks->find( { desk_id => $userenv_desk } )->desk_name; >- } >- $template->param( LoginDeskname => $desk->desk_name ); >- $template->param( LoginDeskid => $desk->desk_id ); >- $session->param( desk_name => $desk->desk_name ); >- $session->param( desk_id => $desk->desk_id ); >- $session->flush(); >- push @updated, { >- updated_desk => 1, >- old_desk => $old_desk_name, >- }; >+ $updated = 1; > } >- if ( defined($register_id) >- && ( $userenv_register_id ne $register_id ) ) >- { >- my $old_register_name = C4::Context->userenv->{'register_name'} || ''; >- my $register = Koha::Cash::Registers->find($register_id); >- $session->param( 'register_id', $register_id ); >- $session->param( 'register_name', $register ? $register->name : '' ); >- push @updated, >- { >- updated_register => 1, >- old_register => $old_register_name >- }; >+} else { >+ $branch = $userenv_branch; # fallback value >+} >+ >+if ( $desk_id && ( !$userenv_desk or $userenv_desk ne $desk_id ) ) { >+ my $desk = Koha::Desks->find( { desk_id => $desk_id } ); >+ my $old_desk_name = ''; >+ if ($userenv_desk) { >+ $old_desk_name = Koha::Desks->find( { desk_id => $userenv_desk } )->desk_name; > } >- $session->flush(); >+ $session->param( desk_name => $desk->desk_name ); >+ $session->param( desk_id => $desk->desk_id ); >+ $updated = 1; > } else { >- $branch = $userenv_branch; # fallback value > $desk_id = $userenv_desk; > } > >-$template->param(updated => \@updated) if (scalar @updated); >- >-my @recycle_loop; >-foreach my $param ($query->param()) { >- $param or next; # disclude blanks >- $param eq "branch" and next; # disclude branch >- $param eq "desk_id" and next; # disclude desk_id >- $param eq "register_id" and next; # disclude register >- $param eq "oldreferer" and next; # disclude oldreferer >- push @recycle_loop, { >- param => $param, >- value => scalar $query->param($param), >- }; >+if ( defined($register_id) >+ && ( $userenv_register_id ne $register_id ) ) >+{ >+ my $old_register_name = C4::Context->userenv->{'register_name'} || ''; >+ my $register = Koha::Cash::Registers->find($register_id); >+ $session->param( 'register_id', $register_id ); >+ $session->param( 'register_name', $register ? $register->name : '' ); >+ $updated = 1; >+} else { >+ $register_id = $userenv_register_id; > } > >-my $referer = $query->param('oldreferer') || $ENV{HTTP_REFERER} || ''; >-$referer =~ /set-library\.pl/ and undef $referer; # avoid sending them back to this same page. >+$session->flush(); > >-if (scalar @updated and not scalar @recycle_loop) { >- # we updated something, and there were no extra params to POST: quick redirect >- print $query->redirect($referer || '/cgi-bin/koha/circ/circulation.pl'); >+ >+my $referer = $query->param('oldreferer') || $ENV{HTTP_REFERER} || ''; >+if ( $updated ) { >+ print $query->redirect($referer || '/cgi-bin/koha/mainpage.pl'); > } > > $template->param( > referer => $referer, > branch => $branch, > desk_id => $desk_id, >- recycle_loop=> \@recycle_loop, > ); > > # Checking if there is a Fast Cataloging Framework >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/set-library.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/set-library.tt >index 5834f2cfa5b..a2fa68078db 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/set-library.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/set-library.tt >@@ -42,131 +42,83 @@ > <div class="col-sm-12"> > <main> > <div class="row"> >- >- [% IF Koha.Preference('CircSidebar') %] >- <div class="col-sm-10 col-sm-push-2"> >- [% ELSE %] >- <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2"> >- [% END %] >- [% INCLUDE 'messages.inc' %] >- <h1>Set library</h1> >- >-[% IF ( updated ) %] >- >-<h2>Update succeeded</h2> >-Updated:<ul> >- [% FOREACH update IN updated %] >- [% IF ( update.updated_branch || update.updated_desk || update.updated_register ) %] >- [% IF ( update.updated_branch ) %] >- <li>Library: [% update.old_branch or "?" | html %] ⇒ [% update.new_branch or "?" | html %]</li> >- [% END %] >- [% IF ( update.updated_desk ) %] >- <li>Desk: [% update.old_desk or "?" | html %] ⇒ [% LoginDeskname or "?" | html %]</li> >- [% END %] >- [% IF ( updated.updated_register ) %] >- <li>Register: [% updated.old_register or "?" | html %] ⇒ [% Registers.session_register_name or "?" | html %]</li> >- [% END %] >- [% ELSE %] >- <li>ERROR - unknown</li> >- [% END %] >- [% END %] >- </ul> >-<form method="post" action="[% referer or "/cgi-bin/koha/circ/circulation.pl" %]"> >- [% INCLUDE 'csrf-token.inc' %] >- <div class="noshow"> >- [% FOREACH recycle_loo IN recycle_loop %] >- [% SET param = recycle_loo.param %] >- [% NEXT IF param == 'op' %] >- [% NEXT IF param == 'csrf_token' %] >- [% IF param == 'original_op' %][% param = 'op' %][% END %] >- <input type="text" name="[% param | html %]" value="[% recycle_loo.value | html %]" /> >- [% IF param == 'op' %][% SET has_op = 1 %][% END %] >- [% END %] >- [% UNLESS has_op %] >- <input type="hidden" name="op" value="cud-no-op" /> [%# Trick to pass anti-CSRF requirements %] >- [% END %] >- </div> >- <button type="submit">Continue</button> >-</form> >- >-[% ELSE %] >- >-<form method="post" action="set-library.pl"> >- [% INCLUDE 'csrf-token.inc' %] >- <input type="hidden" name="op" value="cud-set-library" /> >-[% IF ( CAN_user_superlibrarian || CAN_user_loggedinlibrary ) %] >-<fieldset class="rows"> >- <legend>Set library</legend> >- <ol> >- <li><label for="branch">Choose library:</label> >- <select name="branch" id="branch"> >- [% PROCESS options_for_libraries libraries => Branches.all( selected => branch, unfiltered => 1 ) %] >- </select></li> >- </ol> >-</fieldset> >-[% ELSE %] >-<select name="branch" id="branch" style="visibility:hidden;"> >- [% PROCESS options_for_libraries libraries => Branches.all( selected => branch ) %] >-</select> >-[% END %] >- >-[% IF Koha.Preference('UseCirculationDesks') && Desks.all %] >-<fieldset class="rows"> >- <legend>Set desk</legend> >- <ol> >- <li><label for="desk">Choose desk:</label> >- <select name="desk_id" id="desk_id"> >- [% PROCESS options_for_desks desks => Desks.all(), selected => desk_id %] >- </select></li> >- </ol> >-</fieldset> >-[% END %] >- >-[% IF Koha.Preference('UseCashRegisters') %] >-<fieldset class="rows"> >- <legend>Set cash register</legend> >- <ol> >- <li> >- <label for="register_id">Choose cash register:</label> >- <select name="register_id" id="register_id"> >- <option id="noregister" selected="selected" value="">-- None --</option> >- [% PROCESS options_for_registers registers => Registers.all() %] >- </select> >- </li> >- </ol> >-</fieldset> >-[% END %] >- >-<fieldset class="action"> >- <input type="submit" class="btn btn-primary" value="Submit" /> >- <a class="cancel" id="cancel_set_library" href="[% referer or '/cgi-bin/koha/circ/circulation.pl' %]">Cancel</a> >-</fieldset> >-<div class="noshow"> >- [% FOREACH recycle_loo IN recycle_loop %] >- [% SET param = recycle_loo.param %] >- [% IF param == 'op' %][% param = 'original_op' %][% END %] >- <input type="text" name="[% param | html %]" value="[% recycle_loo.value | html %]" /> >- [% END %] >- <input type="hidden" name="oldreferer" value="[% referer or "/cgi-bin/koha/circ/circulation.pl" %]" /> >-</div> >-</form> >-<!-- /updated --> >-[% END %] >- > [% IF Koha.Preference('CircSidebar') %] >- </div> <!-- /.col-sm-10.col-sm-push-2 --> >- <div class="col-sm-2 col-sm-pull-10"> >- <aside> >- [% INCLUDE 'circ-nav.inc' %] >- </aside> >- </div> <!-- /.col-sm-2.col-sm-pull-10 --> >- </div> <!-- /.row --> >+ <div class="col-sm-10 col-sm-push-2"> >+ [% ELSE %] >+ <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2"> > [% END %] >+ [% INCLUDE 'messages.inc' %] >+ <h1>Set library</h1> >+ <form method="post" action="set-library.pl"> >+ [% INCLUDE 'csrf-token.inc' %] >+ <input type="hidden" name="op" value="cud-set-library" /> >+ [% IF ( CAN_user_superlibrarian || CAN_user_loggedinlibrary ) %] >+ <fieldset class="rows"> >+ <legend>Set library</legend> >+ <ol> >+ <li><label for="branch">Choose library:</label> >+ <select name="branch" id="branch"> >+ [% PROCESS options_for_libraries libraries => Branches.all( selected => branch, unfiltered => 1 ) %] >+ </select></li> >+ </ol> >+ </fieldset> >+ [% ELSE %] >+ <select name="branch" id="branch" style="visibility:hidden;"> >+ [% PROCESS options_for_libraries libraries => Branches.all( selected => branch ) %] >+ </select> >+ [% END %] > >- </main> >- </div> <!-- /.col-sm-12 --> >- </div> <!-- /.row --> >- >+ [% IF Koha.Preference('UseCirculationDesks') && Desks.all %] >+ <fieldset class="rows"> >+ <legend>Set desk</legend> >+ <ol> >+ <li><label for="desk_id">Choose desk:</label> >+ <select name="desk_id" id="desk_id"> >+ [% PROCESS options_for_desks desks => Desks.all(), selected => desk_id %] >+ </select></li> >+ </ol> >+ </fieldset> >+ [% IF Koha.Preference('UseCashRegisters') %] >+ <fieldset class="rows"> >+ <legend>Set cash register</legend> >+ <ol> >+ <li> >+ <label for="register_id">Choose cash register:</label> >+ <select name="register_id" id="register_id"> >+ <option id="noregister" selected="selected" value="">-- None --</option> >+ [% PROCESS options_for_registers registers => Registers.all() %] >+ </select> >+ </li> >+ </ol> >+ </fieldset> >+ [% END %] >+ <fieldset class="action"> >+ <input type="submit" class="btn btn-primary" value="Submit" /> >+ <a class="cancel" id="cancel_set_library" href="[% referer or '/cgi-bin/koha/mainpage.pl' %]">Cancel</a> >+ </fieldset> >+ <div class="noshow"> >+ [% FOREACH recycle_loo IN recycle_loop %] >+ [% SET param = recycle_loo.param %] >+ [% IF param == 'op' %][% param = 'original_op' %][% END %] >+ <input type="text" name="[% param | html %]" value="[% recycle_loo.value | html %]" /> >+ [% END %] >+ <input type="hidden" name="oldreferer" value="[% referer or "/cgi-bin/koha/mainpage.pl" %]" /> >+ </div> >+ </form> >+ <!-- /updated --> >+ [% END %] >+ [% IF Koha.Preference('CircSidebar') %] >+ </div> <!-- /.col-sm-10.col-sm-push-2 --> >+ <div class="col-sm-2 col-sm-pull-10"> >+ <aside> >+ [% INCLUDE 'circ-nav.inc' %] >+ </aside> >+ </div> <!-- /.col-sm-2.col-sm-pull-10 --> >+ </div> <!-- /.row --> >+ [% END %] >+ </main> >+ </div> <!-- /.col-sm-12 --> >+</div> <!-- /.row --> > [% MACRO jsinclude BLOCK %] > [% Asset.js("js/desk_selection.js") | $raw %] > [% Asset.js("js/register_selection.js") | $raw %] >-- >2.44.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 36572
:
164665
|
164672
|
164679
| 164706 |
164707