View | Details | Raw Unified | Return to bug 26738
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/common/patron_search.tt (-1 / +5 lines)
Lines 285-291 Link Here
285
        [% ELSIF selection_type == 'select' %]
285
        [% ELSIF selection_type == 'select' %]
286
            function select_user(borrowernumber, data) {
286
            function select_user(borrowernumber, data) {
287
                var p = window.opener;
287
                var p = window.opener;
288
                p.select_user(borrowernumber, data);
288
                [%  IF callback %]
289
                    p.[% callback %](borrowernumber, data);
290
                [%  ELSE %]
291
                    p.select_user(borrowernumber, data);
292
                [%  END %]
289
                window.close();
293
                window.close();
290
            }
294
            }
291
        [% END %]
295
        [% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt (-4 / +26 lines)
Lines 264-269 Link Here
264
            [% SWITCH m.code %]
264
            [% SWITCH m.code %]
265
            [% CASE 'biblio_exists' %]
265
            [% CASE 'biblio_exists' %]
266
                A similar document already exists: <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% m.id | uri %]">[% m.title | html %]</a>. Click on "Confirm your suggestion" to ignore this message.
266
                A similar document already exists: <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% m.id | uri %]">[% m.title | html %]</a>. Click on "Confirm your suggestion" to ignore this message.
267
            [%  CASE 'manager_not_enough_permissions' %]
268
                The manager you selected does not have sufficient permissions.
267
            [% CASE %]
269
            [% CASE %]
268
                [% m.code | html %]
270
                [% m.code | html %]
269
            [% END %]
271
            [% END %]
Lines 390-396 Link Here
390
                <td><input type="text" id="suggesteddate" name="suggesteddate" class="datepicker" size="10" maxlength="10" value="[% suggesteddate | $KohaDates %]"/>[% INCLUDE 'date-format.inc' %]</td>
392
                <td><input type="text" id="suggesteddate" name="suggesteddate" class="datepicker" size="10" maxlength="10" value="[% suggesteddate | $KohaDates %]"/>[% INCLUDE 'date-format.inc' %]</td>
391
                <td id="tdsuggestedby"><input type="hidden" id="suggestedby" name="suggestedby" value="[% suggestedby | html %]"/>[% IF ( suggestedby_patron.borrowernumber ) %]<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestedby_patron.borrowernumber | uri %]">[% suggestedby_patron.surname | html %], [% suggestedby_patron.firstname | html %] ([% suggestedby_patron.cardnumber | html %])</a>  [% Branches.GetName( suggestedby_patron.branchcode ) | html %] ([% suggestedby_patron.category.description | html %])[% END %]
393
                <td id="tdsuggestedby"><input type="hidden" id="suggestedby" name="suggestedby" value="[% suggestedby | html %]"/>[% IF ( suggestedby_patron.borrowernumber ) %]<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% suggestedby_patron.borrowernumber | uri %]">[% suggestedby_patron.surname | html %], [% suggestedby_patron.firstname | html %] ([% suggestedby_patron.cardnumber | html %])</a>  [% Branches.GetName( suggestedby_patron.branchcode ) | html %] ([% suggestedby_patron.category.description | html %])[% END %]
392
                </td>
394
                </td>
393
                <td><a href="#" id="suggester_search" class="btn btn-default">Set to patron</a></td>
395
                <td><a href="#" id="edit_suggester" class="btn btn-default">Set to patron</a></td>
394
            </tr>
396
            </tr>
395
            <tr>
397
            <tr>
396
                <th><label for="accepteddate">Accepted on:</label> </th>
398
                <th><label for="accepteddate">Accepted on:</label> </th>
Lines 962-974 Link Here
962
        var tab = '';
964
        var tab = '';
963
        function editManagerPopup(selected_tab) {
965
        function editManagerPopup(selected_tab) {
964
            tab = selected_tab;
966
            tab = selected_tab;
965
            window.open("/cgi-bin/koha/suggestion/add_user_search.pl?selection_type=select",
967
            window.open("/cgi-bin/koha/suggestion/add_user_search.pl?selection_type=select&callback=select_manager&permissions=suggestions.suggestions_manage",
966
                'PatronPopup',
968
                'PatronPopup',
967
                'width=740,height=450,location=yes,toolbar=no,'
969
                'width=740,height=450,location=yes,toolbar=no,'
968
                + 'scrollbars=yes,resize=yes'
970
                + 'scrollbars=yes,resize=yes'
969
            );
971
            );
970
        }
972
        }
971
        function select_user(borrowernumber, borrower) {
973
        function select_manager(borrowernumber, borrower) {
972
            var managedby_name = $("#managedby_name"+tab);
974
            var managedby_name = $("#managedby_name"+tab);
973
            var managedby = $("#managedby"+tab);
975
            var managedby = $("#managedby"+tab);
974
            managedby_name.empty();
976
            managedby_name.empty();
Lines 998-1003 Link Here
998
            [% END %]
1000
            [% END %]
999
        }
1001
        }
1000
1002
1003
        function editSuggesterPopup() {
1004
            window.open("/cgi-bin/koha/suggestion/add_user_search.pl?selection_type=select&callback=select_suggester",
1005
                'PatronPopup',
1006
                'width=740,height=450,location=yes,toolbar=no,'
1007
                + 'scrollbars=yes,resize=yes'
1008
            );
1009
        }
1010
1011
        function select_suggester(borrowernumber, borrower) {
1012
            var suggested = '<input type="hidden" id="suggestedby" name="suggestedby" value="' + borrowernumber + '" />';
1013
            suggested += '<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + borrowernumber + '">';
1014
            suggested += borrower.surname + ', ' + borrower.firstname + ' (' + borrower.cardnumber + ')';
1015
            suggested += '</a> ';
1016
            suggested += borrower.branchname + ' (' + borrower.category_description + ')';
1017
            $("#tdsuggestedby").html(suggested);
1018
            return 0;
1019
        }
1001
        $(document).ready(function(){
1020
        $(document).ready(function(){
1002
            $("#edit_manager").on("click",function(e){
1021
            $("#edit_manager").on("click",function(e){
1003
                e.preventDefault();
1022
                e.preventDefault();
Lines 1009-1014 Link Here
1009
                editManagerPopup(selected_tab);
1028
                editManagerPopup(selected_tab);
1010
            });
1029
            });
1011
1030
1031
            $("#edit_suggester").on("click", function(e){
1032
                e.preventDefault();
1033
                editSuggesterPopup();
1034
            });
1012
        });
1035
        });
1013
    </script>
1036
    </script>
1014
1037
Lines 1216-1221 Link Here
1216
    [% END %]
1239
    [% END %]
1217
    [% Asset.js("js/acq.js") | $raw %]
1240
    [% Asset.js("js/acq.js") | $raw %]
1218
    [% Asset.js("js/acquisitions-menu.js") | $raw %]
1241
    [% Asset.js("js/acquisitions-menu.js") | $raw %]
1219
    [% Asset.js("js/suggestions.js") | $raw %]
1220
[% END %]
1242
[% END %]
1221
[% INCLUDE 'intranet-bottom.inc' %]
1243
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/tables/suggester_search.tt (-36 lines)
Lines 1-36 Link Here
1
[% USE raw %]
2
[% USE To %]
3
[% USE Branches %]
4
[% USE KohaDates %]
5
{
6
    "sEcho": [% sEcho | html %],
7
    "iTotalRecords": [% iTotalRecords | html %],
8
    "iTotalDisplayRecords": [% iTotalDisplayRecords | html %],
9
    "aaData": [
10
        [% FOREACH data IN aaData %]
11
            {
12
                "dt_cardnumber":
13
                    "[% data.cardnumber | html %]",
14
                "dt_name":
15
                    "[% 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%]",
16
                "dt_dateofbirth":
17
                    "[% data.dateofbirth | $KohaDates %]",
18
                "dt_address":
19
                    "[% INCLUDE escape_address data=data %]",
20
                "dt_action":
21
                    "<a href=\"#\" class=\"btn btn-default btn-xs select_user\" data-borrowernumber=\"[% data.borrowernumber | html %]\">Select</a><input type=\"hidden\" id=\"borrower_data[% data.borrowernumber | html %]\" name=\"borrower_data[% data.borrowernumber | html %]\" value=\"[% To.json(data) | html %]\" />"
22
            }[% UNLESS loop.last %],[% END %]
23
        [% END %]
24
    ]
25
}
26
[% BLOCK escape_address %]
27
[%~ SET address = data.streetnumber _ ' ' %]
28
[%~ IF data.address %][% SET address = address _ data.address _ ' ' %][% END %]
29
[%~ IF data.address2 %][% SET address = address _ data.address2 _ ' ' %][% END %]
30
[%~ IF data.city %][% SET address = address _ data.city _ ' ' %][% END %]
31
[%~ IF data.state %][% SET address = address _ data.state _ ' ' %][% END %]
32
[%~ IF data.zipcode %][% SET address = address _ data.zipcode _ ' ' %][% END %]
33
[%~ IF data.country %][% SET address = address _ data.country _ ' ' %][% END %]
34
[%~ SET address = address _ Branches.GetName( data.branchcode ) %]
35
[%~ To.json( address ) | $raw ~%]
36
[% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/js/suggestions.js (-17 lines)
Lines 1-17 Link Here
1
function select_user(borrowernumber, borrower) {
2
    var suggested = '<input type="hidden" id="suggestedby" name="suggestedby" value="' + borrowernumber + '" />';
3
    suggested += '<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + borrowernumber + '">';
4
    suggested += borrower.surname + ', ' + borrower.firstname + ' (' + borrower.cardnumber + ')';
5
    suggested += '</a> ';
6
    suggested += borrower.branchname + ' (' + borrower.category_description + ')';
7
    $("#tdsuggestedby").html(suggested);
8
    return 0;
9
}
10
11
$(document).ready(function(){
12
    $('body').on('click', '#suggester_search', function(e) {
13
        e.preventDefault();
14
        var newin = window.open('suggester_search.pl','popup','width=600,height=400,resizable=no,toolbar=false,scrollbars=yes,top');
15
    });
16
17
});
(-)a/suggestion/add_user_search.pl (-3 / +4 lines)
Lines 43-58 my $selection_type = $input->param('selection_type') || 'add'; Link Here
43
43
44
my $referer = $input->referer();
44
my $referer = $input->referer();
45
45
46
# If this script is called by suggestion/suggestion.pl
46
# The patrons to return should be superlibrarian or have the suggestions_manage flag
47
# the patrons to return should be superlibrarian or have the suggestions_manage flag
47
my $permissions = $input->param('permissions');
48
my $search_patrons_with_suggestion_perm_only =
48
my $search_patrons_with_suggestion_perm_only =
49
    ( $referer =~ m|suggestion/suggestion.pl| )
49
    ( $permissions && $permissions eq 'suggestions.suggestions_manage' )
50
        ? 1 : 0;
50
        ? 1 : 0;
51
51
52
my $patron_categories = Koha::Patron::Categories->search_limited;
52
my $patron_categories = Koha::Patron::Categories->search_limited;
53
$template->param(
53
$template->param(
54
    patrons_with_suggestion_perm_only => $search_patrons_with_suggestion_perm_only,
54
    patrons_with_suggestion_perm_only => $search_patrons_with_suggestion_perm_only,
55
    view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
55
    view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
56
    callback => scalar $input->param('callback'),
56
    columns => ['cardnumber', 'name', 'branch', 'category', 'action'],
57
    columns => ['cardnumber', 'name', 'branch', 'category', 'action'],
57
    json_template => 'acqui/tables/members_results.tt',
58
    json_template => 'acqui/tables/members_results.tt',
58
    selection_type => $selection_type,
59
    selection_type => $selection_type,
(-)a/suggestion/suggester_search.pl (-57 lines)
Lines 1-57 Link Here
1
#!/usr/bin/perl
2
3
# This file is part of Koha.
4
#
5
# Copyright 2020 BibLibre
6
#
7
# Koha is free software; you can redistribute it and/or modify it
8
# under the terms of the GNU General Public License as published by
9
# the Free Software Foundation; either version 3 of the License, or
10
# (at your option) any later version.
11
#
12
# Koha is distributed in the hope that it will be useful, but
13
# WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
# GNU General Public License for more details.
16
#
17
# You should have received a copy of the GNU General Public License
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20
use Modern::Perl;
21
22
use CGI qw ( -utf8 );
23
use C4::Auth;
24
use C4::Output;
25
use C4::Members;
26
27
use Koha::Patron::Categories;
28
29
my $input = CGI->new;
30
31
my $dbh = C4::Context->dbh;
32
33
my ( $template, $loggedinuser, $cookie, $staff_flags ) = get_template_and_user(
34
    {   template_name   => "common/patron_search.tt",
35
        query           => $input,
36
        type            => "intranet",
37
        authnotrequired => 0,
38
        flagsrequired   => { suggestions => 'suggestions_manage' },
39
    }
40
);
41
42
my $q = $input->param('q') || '';
43
my $op = $input->param('op') || '';
44
45
my $referer = $input->referer();
46
47
my $patron_categories = Koha::Patron::Categories->search_limited;
48
$template->param(
49
    view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
50
    columns => ['cardnumber', 'name', 'dateofbirth', 'address', 'action' ],
51
    json_template => 'suggestion/tables/suggester_search.tt',
52
    selection_type => 'select',
53
    alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
54
    categories      => $patron_categories,
55
    aaSorting       => 1,
56
);
57
output_html_with_http_headers( $input, $cookie, $template->output );
(-)a/suggestion/suggestion.pl (-2 / +13 lines)
Lines 135-147 if ( $op =~ /save/i ) { Link Here
135
            itemtype => $suggestion_only->{itemtype},
135
            itemtype => $suggestion_only->{itemtype},
136
    });
136
    });
137
137
138
    if ( !$suggestion_only->{suggestionid} && ( my ($duplicatebiblionumber, $duplicatetitle) = FindDuplicate($biblio) ) && !$save_confirmed ) {
138
    my $manager = Koha::Patrons->find( $suggestion_only->{managedby} );
139
    if ( $manager && not $manager->has_permission({suggestions => 'suggestions_manage'})) {
140
        push @messages, { type => 'error', code => 'manager_not_enough_permissions' };
141
        $template->param(
142
            messages => \@messages,
143
        );
144
        delete $suggestion_ref->{suggesteddate};
145
        delete $suggestion_ref->{manageddate};
146
        delete $suggestion_ref->{managedby};
147
        Init($suggestion_ref);
148
    }
149
    elsif ( !$suggestion_only->{suggestionid} && ( my ($duplicatebiblionumber, $duplicatetitle) = FindDuplicate($biblio) ) && !$save_confirmed ) {
139
        push @messages, { type => 'error', code => 'biblio_exists', id => $duplicatebiblionumber, title => $duplicatetitle };
150
        push @messages, { type => 'error', code => 'biblio_exists', id => $duplicatebiblionumber, title => $duplicatetitle };
140
        $template->param(
151
        $template->param(
141
            messages => \@messages,
152
            messages => \@messages,
142
            need_confirm => 1
153
            need_confirm => 1
143
        );
154
        );
144
        delete $suggestion_ref->{suggesteddate};
155
        delete $suggestion_ref->{suggesteddate};
156
        delete $suggestion_ref->{manageddate};
145
        Init($suggestion_ref);
157
        Init($suggestion_ref);
146
    }
158
    }
147
    else {
159
    else {
148
- 

Return to bug 26738