@@ -, +, @@
- create a new purchase suggestion from within acquisitions (suggestion.pl?op=add)
- click "select manager," search for user, click Select
- see that the user you just selected shows under "Created by,"
- see that "Managed by" still says "You"
- modify the suggester
- save your suggestion
---
.../prog/en/modules/common/patron_search.tt | 6 +-
.../prog/en/modules/suggestion/suggestion.tt | 30 ++++++++--
.../suggestion/tables/suggester_search.tt | 36 ------------
.../intranet-tmpl/prog/js/suggestions.js | 17 ------
suggestion/add_user_search.pl | 7 ++-
suggestion/suggester_search.pl | 57 -------------------
suggestion/suggestion.pl | 14 ++++-
7 files changed, 48 insertions(+), 119 deletions(-)
delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/tables/suggester_search.tt
delete mode 100644 koha-tmpl/intranet-tmpl/prog/js/suggestions.js
delete mode 100755 suggestion/suggester_search.pl
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/common/patron_search.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/common/patron_search.tt
@@ -285,7 +285,11 @@
[% ELSIF selection_type == 'select' %]
function select_user(borrowernumber, data) {
var p = window.opener;
- p.select_user(borrowernumber, data);
+ [% IF callback %]
+ p.[% callback %](borrowernumber, data);
+ [% ELSE %]
+ p.select_user(borrowernumber, data);
+ [% END %]
window.close();
}
[% END %]
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt
@@ -264,6 +264,8 @@
[% SWITCH m.code %]
[% CASE 'biblio_exists' %]
A similar document already exists: [% m.title | html %]. Click on "Confirm your suggestion" to ignore this message.
+ [% CASE 'manager_not_enough_permissions' %]
+ The manager you selected does not have sufficient permissions.
[% CASE %]
[% m.code | html %]
[% END %]
@@ -390,7 +392,7 @@
[% INCLUDE 'date-format.inc' %] |
[% IF ( suggestedby_patron.borrowernumber ) %][% suggestedby_patron.surname | html %], [% suggestedby_patron.firstname | html %] ([% suggestedby_patron.cardnumber | html %]) [% Branches.GetName( suggestedby_patron.branchcode ) | html %] ([% suggestedby_patron.category.description | html %])[% END %]
|
- Set to patron |
+ Set to patron |
|
@@ -962,13 +964,13 @@
var tab = '';
function editManagerPopup(selected_tab) {
tab = selected_tab;
- window.open("/cgi-bin/koha/suggestion/add_user_search.pl?selection_type=select",
+ window.open("/cgi-bin/koha/suggestion/add_user_search.pl?selection_type=select&callback=select_manager&permissions=suggestions.suggestions_manage",
'PatronPopup',
'width=740,height=450,location=yes,toolbar=no,'
+ 'scrollbars=yes,resize=yes'
);
}
- function select_user(borrowernumber, borrower) {
+ function select_manager(borrowernumber, borrower) {
var managedby_name = $("#managedby_name"+tab);
var managedby = $("#managedby"+tab);
managedby_name.empty();
@@ -998,6 +1000,23 @@
[% END %]
}
+ function editSuggesterPopup() {
+ window.open("/cgi-bin/koha/suggestion/add_user_search.pl?selection_type=select&callback=select_suggester",
+ 'PatronPopup',
+ 'width=740,height=450,location=yes,toolbar=no,'
+ + 'scrollbars=yes,resize=yes'
+ );
+ }
+
+ function select_suggester(borrowernumber, borrower) {
+ var suggested = '';
+ suggested += '';
+ suggested += borrower.surname + ', ' + borrower.firstname + ' (' + borrower.cardnumber + ')';
+ suggested += ' ';
+ suggested += borrower.branchname + ' (' + borrower.category_description + ')';
+ $("#tdsuggestedby").html(suggested);
+ return 0;
+ }
$(document).ready(function(){
$("#edit_manager").on("click",function(e){
e.preventDefault();
@@ -1009,6 +1028,10 @@
editManagerPopup(selected_tab);
});
+ $("#edit_suggester").on("click", function(e){
+ e.preventDefault();
+ editSuggesterPopup();
+ });
});
@@ -1216,6 +1239,5 @@
[% END %]
[% Asset.js("js/acq.js") | $raw %]
[% Asset.js("js/acquisitions-menu.js") | $raw %]
- [% Asset.js("js/suggestions.js") | $raw %]
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/tables/suggester_search.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/tables/suggester_search.tt
@@ -1,36 +0,0 @@
-[% USE raw %]
-[% USE To %]
-[% USE Branches %]
-[% USE KohaDates %]
-{
- "sEcho": [% sEcho | html %],
- "iTotalRecords": [% iTotalRecords | html %],
- "iTotalDisplayRecords": [% iTotalDisplayRecords | html %],
- "aaData": [
- [% FOREACH data IN aaData %]
- {
- "dt_cardnumber":
- "[% data.cardnumber | html %]",
- "dt_name":
- "[% INCLUDE 'patron-title.inc' borrowernumber = data.borrowernumber category_type = data.category_type firstname = data.firstname surname = data.surname othernames = data.othernames cardnumber = data.cardnumber invert_name = 1%]",
- "dt_dateofbirth":
- "[% data.dateofbirth | $KohaDates %]",
- "dt_address":
- "[% INCLUDE escape_address data=data %]",
- "dt_action":
- "Select"
- }[% UNLESS loop.last %],[% END %]
- [% END %]
- ]
-}
-[% BLOCK escape_address %]
-[%~ SET address = data.streetnumber _ ' ' %]
-[%~ IF data.address %][% SET address = address _ data.address _ ' ' %][% END %]
-[%~ IF data.address2 %][% SET address = address _ data.address2 _ ' ' %][% END %]
-[%~ IF data.city %][% SET address = address _ data.city _ ' ' %][% END %]
-[%~ IF data.state %][% SET address = address _ data.state _ ' ' %][% END %]
-[%~ IF data.zipcode %][% SET address = address _ data.zipcode _ ' ' %][% END %]
-[%~ IF data.country %][% SET address = address _ data.country _ ' ' %][% END %]
-[%~ SET address = address _ Branches.GetName( data.branchcode ) %]
-[%~ To.json( address ) | $raw ~%]
-[% END %]
--- a/koha-tmpl/intranet-tmpl/prog/js/suggestions.js
+++ a/koha-tmpl/intranet-tmpl/prog/js/suggestions.js
@@ -1,17 +0,0 @@
-function select_user(borrowernumber, borrower) {
- var suggested = '';
- suggested += '';
- suggested += borrower.surname + ', ' + borrower.firstname + ' (' + borrower.cardnumber + ')';
- suggested += ' ';
- suggested += borrower.branchname + ' (' + borrower.category_description + ')';
- $("#tdsuggestedby").html(suggested);
- return 0;
-}
-
-$(document).ready(function(){
- $('body').on('click', '#suggester_search', function(e) {
- e.preventDefault();
- var newin = window.open('suggester_search.pl','popup','width=600,height=400,resizable=no,toolbar=false,scrollbars=yes,top');
- });
-
-});
--- a/suggestion/add_user_search.pl
+++ a/suggestion/add_user_search.pl
@@ -43,16 +43,17 @@ my $selection_type = $input->param('selection_type') || 'add';
my $referer = $input->referer();
-# If this script is called by suggestion/suggestion.pl
-# the patrons to return should be superlibrarian or have the suggestions_manage flag
+# The patrons to return should be superlibrarian or have the suggestions_manage flag
+my $permissions = $input->param('permissions');
my $search_patrons_with_suggestion_perm_only =
- ( $referer =~ m|suggestion/suggestion.pl| )
+ ( $permissions && $permissions eq 'suggestions.suggestions_manage' )
? 1 : 0;
my $patron_categories = Koha::Patron::Categories->search_limited;
$template->param(
patrons_with_suggestion_perm_only => $search_patrons_with_suggestion_perm_only,
view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
+ callback => scalar $input->param('callback'),
columns => ['cardnumber', 'name', 'branch', 'category', 'action'],
json_template => 'acqui/tables/members_results.tt',
selection_type => $selection_type,
--- a/suggestion/suggester_search.pl
+++ a/suggestion/suggester_search.pl
@@ -1,57 +0,0 @@
-#!/usr/bin/perl
-
-# This file is part of Koha.
-#
-# Copyright 2020 BibLibre
-#
-# Koha is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# Koha is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Koha; if not, see .
-
-use Modern::Perl;
-
-use CGI qw ( -utf8 );
-use C4::Auth;
-use C4::Output;
-use C4::Members;
-
-use Koha::Patron::Categories;
-
-my $input = CGI->new;
-
-my $dbh = C4::Context->dbh;
-
-my ( $template, $loggedinuser, $cookie, $staff_flags ) = get_template_and_user(
- { template_name => "common/patron_search.tt",
- query => $input,
- type => "intranet",
- authnotrequired => 0,
- flagsrequired => { suggestions => 'suggestions_manage' },
- }
-);
-
-my $q = $input->param('q') || '';
-my $op = $input->param('op') || '';
-
-my $referer = $input->referer();
-
-my $patron_categories = Koha::Patron::Categories->search_limited;
-$template->param(
- view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
- columns => ['cardnumber', 'name', 'dateofbirth', 'address', 'action' ],
- json_template => 'suggestion/tables/suggester_search.tt',
- selection_type => 'select',
- alphabet => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
- categories => $patron_categories,
- aaSorting => 1,
-);
-output_html_with_http_headers( $input, $cookie, $template->output );
--- a/suggestion/suggestion.pl
+++ a/suggestion/suggestion.pl
@@ -135,13 +135,25 @@ if ( $op =~ /save/i ) {
itemtype => $suggestion_only->{itemtype},
});
- if ( !$suggestion_only->{suggestionid} && ( my ($duplicatebiblionumber, $duplicatetitle) = FindDuplicate($biblio) ) && !$save_confirmed ) {
+ my $manager = Koha::Patrons->find( $suggestion_only->{managedby} );
+ if ( $manager && not $manager->has_permission({suggestions => 'suggestions_manage'})) {
+ push @messages, { type => 'error', code => 'manager_not_enough_permissions' };
+ $template->param(
+ messages => \@messages,
+ );
+ delete $suggestion_ref->{suggesteddate};
+ delete $suggestion_ref->{manageddate};
+ delete $suggestion_ref->{managedby};
+ Init($suggestion_ref);
+ }
+ elsif ( !$suggestion_only->{suggestionid} && ( my ($duplicatebiblionumber, $duplicatetitle) = FindDuplicate($biblio) ) && !$save_confirmed ) {
push @messages, { type => 'error', code => 'biblio_exists', id => $duplicatebiblionumber, title => $duplicatetitle };
$template->param(
messages => \@messages,
need_confirm => 1
);
delete $suggestion_ref->{suggesteddate};
+ delete $suggestion_ref->{manageddate};
Init($suggestion_ref);
}
else {
--