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

(-)a/Koha/Club.pm (+12 lines)
Lines 63-68 sub club_fields { Link Here
63
    return Koha::Club::Fields->search( { club_id => $self->id() } );
63
    return Koha::Club::Fields->search( { club_id => $self->id() } );
64
}
64
}
65
65
66
=head3 club_enrollments
67
68
=cut
69
70
sub club_enrollments {
71
    my ($self) = @_;
72
73
    return unless $self->id();
74
75
    return scalar Koha::Club::Enrollments->search( { club_id => $self->id() } );
76
}
77
66
=head3 club_fields
78
=head3 club_fields
67
79
68
=cut
80
=cut
(-)a/Koha/Club/Enrollment.pm (+10 lines)
Lines 23-28 use Carp; Link Here
23
23
24
use Koha::Database;
24
use Koha::Database;
25
use Koha::Clubs;
25
use Koha::Clubs;
26
use Koha::Patrons;
26
27
27
use base qw(Koha::Object);
28
use base qw(Koha::Object);
28
29
Lines 61-66 sub club { Link Here
61
    return Koha::Clubs->find( $self->club_id() );
62
    return Koha::Clubs->find( $self->club_id() );
62
}
63
}
63
64
65
=head3 patron
66
67
=cut
68
69
sub patron {
70
    my ( $self ) = @_;
71
    return Koha::Patrons->find( $self->borrowernumber() );
72
}
73
64
=head3 type
74
=head3 type
65
75
66
=cut
76
=cut
(-)a/Koha/Clubs.pm (+3 lines)
Lines 56-61 sub get_enrollable { Link Here
56
        }
56
        }
57
    }
57
    }
58
58
59
    # Only clubs with no end date or an end date in the future can be enrolled in
60
    $params->{'-or'} = [ date_end => { '>=' => \'CURRENT_DATE()' }, date_end => undef ];
61
59
    my $rs = $self->_resultset()->search( $params, { prefetch => 'club_template' } );
62
    my $rs = $self->_resultset()->search( $params, { prefetch => 'club_template' } );
60
63
61
    if (wantarray) {
64
    if (wantarray) {
(-)a/Koha/Patron.pm (-4 / +12 lines)
Lines 600-608 sub first_valid_email_address { Link Here
600
=cut
600
=cut
601
601
602
sub get_club_enrollments {
602
sub get_club_enrollments {
603
    my ($self) = @_;
603
    my ( $self, $return_scalar ) = @_;
604
605
    my $e = Koha::Club::Enrollments->search( { borrowernumber => $self->borrowernumber(), date_canceled => undef } );
606
607
    return $e if $return_scalar;
604
608
605
    return Koha::Club::Enrollments->search( { borrowernumber => $self->borrowernumber(), date_canceled => undef } );
609
    return wantarray ? $e->as_list : $e;
606
}
610
}
607
611
608
=head3 get_enrollable_clubs
612
=head3 get_enrollable_clubs
Lines 610-616 sub get_club_enrollments { Link Here
610
=cut
614
=cut
611
615
612
sub get_enrollable_clubs {
616
sub get_enrollable_clubs {
613
    my ( $self, $is_enrollable_from_opac ) = @_;
617
    my ( $self, $is_enrollable_from_opac, $return_scalar ) = @_;
614
618
615
    my $params;
619
    my $params;
616
    $params->{is_enrollable_from_opac} = $is_enrollable_from_opac
620
    $params->{is_enrollable_from_opac} = $is_enrollable_from_opac
Lines 619-625 sub get_enrollable_clubs { Link Here
619
623
620
    $params->{borrower} = $self;
624
    $params->{borrower} = $self;
621
625
622
    return Koha::Clubs->get_enrollable($params);
626
    my $e = Koha::Clubs->get_enrollable($params);
627
628
    return $e if $return_scalar;
629
630
    return wantarray ? $e->as_list : $e;
623
}
631
}
624
632
625
=head3 type
633
=head3 type
(-)a/clubs/club-enrollments.pl (+47 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
# Copyright 2013 ByWater Solutions
4
#
5
# This file is part of Koha.
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;
23
24
use C4::Auth;
25
use C4::Output;
26
use Koha::Clubs;
27
28
my $cgi = new CGI;
29
30
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
31
    {
32
        template_name   => 'clubs/club-enrollments.tt',
33
        query           => $cgi,
34
        type            => 'intranet',
35
        authnotrequired => 0,
36
        flagsrequired   => { clubs => 'edit_clubs' },
37
    }
38
);
39
40
my $id = $cgi->param('id');
41
my $club = Koha::Clubs->find($id);
42
43
$template->param(
44
    club          => $club,
45
);
46
47
output_html_with_http_headers( $cgi, $cookie, $template->output );
(-)a/clubs/clubs-add-modify.pl (-1 / +7 lines)
Lines 44-50 my $schema = Koha::Database->new()->schema(); Link Here
44
44
45
my $id = $cgi->param('id');
45
my $id = $cgi->param('id');
46
my $club = $id ? Koha::Clubs->find($id) : Koha::Club->new();
46
my $club = $id ? Koha::Clubs->find($id) : Koha::Club->new();
47
my $stored = $cgi->param('name') ? $id ? 'updated' : 'stored' : undef;
47
48
my $stored =
49
    $cgi->param('name')
50
  ? $id
51
      ? 'updated'
52
      : 'stored'
53
  : undef;
48
54
49
my $club_template_id = $cgi->param('club_template_id');
55
my $club_template_id = $cgi->param('club_template_id');
50
my $club_template = $club->club_template() || Koha::Club::Templates->find($club_template_id);
56
my $club_template = $club->club_template() || Koha::Club::Templates->find($club_template_id);
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt (-5 / +5 lines)
Lines 895-906 No patron matched <span class="ex">[% message | html %]</span> Link Here
895
        [% END %]
895
        [% END %]
896
    </li>
896
    </li>
897
897
898
    [% SET enrollments = patron.get_club_enrollments.size || 0 %]
898
    [% SET enrollments = patron.get_club_enrollments(1) %]
899
    [% SET enrollable  = patron.get_enrollable_clubs.size || 0 %]
899
    [% SET enrollable  = patron.get_enrollable_clubs(0,1) %]
900
    [% IF CAN_user_clubs && ( enrollable || enrollments ) %]
900
    [% IF CAN_user_clubs && ( enrollable.count || enrollments.count ) %]
901
        <li>
901
        <li>
902
            <a id="clubs-tab-link" href="#clubs-tab">
902
            <a id="clubs-tab-link" href="#clubs-tab">
903
                Clubs ([% enrollments %]/[% enrollable %])
903
                Clubs ([% enrollments.count %]/[% enrollable.count %])
904
            </a>
904
            </a>
905
        </li>
905
        </li>
906
    [% END %]
906
    [% END %]
Lines 923-929 No patron matched <span class="ex">[% message | html %]</span> Link Here
923
        </li>
923
        </li>
924
    [% END %]
924
    [% END %]
925
925
926
    <li><a id="debarments-tab-link" href="#reldebarments">[% debarments.size %] Restrictions</a></li>
926
    <li><a id="debarments-tab-link" href="#reldebarments">[% debarments.count %] Restrictions</a></li>
927
</ul>
927
</ul>
928
928
929
<!-- SUMMARY : TODAY & PREVIOUS ISSUES -->
929
<!-- SUMMARY : TODAY & PREVIOUS ISSUES -->
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/clubs/club-enrollments.tt (+74 lines)
Line 0 Link Here
1
[% USE KohaDates %]
2
[% USE Branches %]
3
[% USE Koha %]
4
[% INCLUDE 'doc-head-open.inc' %]
5
<title>Koha &rsaquo; Tools &rsaquo; Patron clubs &rsaquo; Club enrollments</title>
6
[% INCLUDE 'doc-head-close.inc' %]
7
8
<link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/datatables.css" />
9
[% INCLUDE 'datatables.inc' %]
10
11
<script type="text/javascript">
12
//<![CDATA[
13
    $(document).ready(function() {
14
        eTable = $('#enrollments-table').dataTable($.extend(true, {}, dataTablesDefaults, {
15
            "sPaginationType": "four_button",
16
            "sDom": 'C<"top pager"ilpf><"#filter_c">tr<"bottom pager"ip>',
17
            "aoColumnDefs": [
18
                    { "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false },
19
            ]
20
        } ));
21
    });
22
//]]>
23
</script>
24
25
</head>
26
27
<body id="club_enrollments" class="clubs">
28
[% INCLUDE 'header.inc' %]
29
[% INCLUDE 'cat-search.inc' %]
30
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> &rsaquo; Patron clubs &rsaquo; Club enrollments</div>
31
32
<div id="doc3" class="yui-t2">
33
   <div id="bd">
34
        <div id="yui-main">
35
            <div class="yui-b">
36
                <h1>Club enrollments for <i>[% club.name %]</i></h1>
37
38
                <table id="enrollments-table">
39
                    <thead>
40
                        <tr>
41
                            <th>Name</th>
42
                            <th>Card number</th>
43
                            <th>&nbsp;</th>
44
                        </tr>
45
                    </thead>
46
47
                    <tbody>
48
                        [% FOREACH e IN club.club_enrollments %]
49
                            [% SET p = e.patron %]
50
                            <tr>
51
                                <td>
52
                                    [% p.firstname %] [% p.surname %]
53
                                </td>
54
                                <td>
55
                                    [% p.cardnumber %]
56
                                </td>
57
                                <td>
58
                                    <a class="btn btn-sm" href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% p.id %]">
59
                                        <i class="fa fa-eye"></i>
60
                                        View patron
61
                                    </a>
62
                                </td>
63
                            </tr>
64
                        [% END %]
65
                    </tbody>
66
                </table>
67
            </div>
68
        </div>
69
        <div class="yui-b noprint">
70
            [% INCLUDE 'tools-menu.inc' %]
71
        </div>
72
    </div>
73
</div>
74
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/clubs/clubs.tt (-2 / +26 lines)
Lines 1-3 Link Here
1
[% USE KohaDates %]
1
[% USE Branches %]
2
[% USE Branches %]
2
[% USE Koha %]
3
[% USE Koha %]
3
[% INCLUDE 'doc-head-open.inc' %]
4
[% INCLUDE 'doc-head-open.inc' %]
Lines 171-177 Link Here
171
                [% IF CAN_user_clubs_edit_clubs %]
172
                [% IF CAN_user_clubs_edit_clubs %]
172
                    <div class="btn-toolbar">
173
                    <div class="btn-toolbar">
173
                        <div class="btn-group">
174
                        <div class="btn-group">
174
                            <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-plus"></i> New club <span class="caret"></span></button>
175
                            [% IF club_templates %]
176
                                <button class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-plus"></i> New club <span class="caret"></span></button>
177
                            [% ELSE %]
178
                                <button disabled="disabled" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-plus"></i> New club <span class="caret"></span></button>
179
                            [% END %]
175
                            <ul class="dropdown-menu">
180
                            <ul class="dropdown-menu">
176
                                [% FOREACH t IN club_templates %]
181
                                [% FOREACH t IN club_templates %]
177
                                    <li><a href="/cgi-bin/koha/clubs/clubs-add-modify.pl?club_template_id=[% t.id %]">[% t.name %]</a></li>
182
                                    <li><a href="/cgi-bin/koha/clubs/clubs-add-modify.pl?club_template_id=[% t.id %]">[% t.name %]</a></li>
Lines 190-195 Link Here
190
                            <th>Public enrollment</th>
195
                            <th>Public enrollment</th>
191
                            <th>Email required</th>
196
                            <th>Email required</th>
192
                            <th>Library</th>
197
                            <th>Library</th>
198
                            <th>Start date</th>
199
                            <th>End date</th>
200
                            <th>Enrolled patrons</th>
193
                            <th>&nbsp;</th>
201
                            <th>&nbsp;</th>
194
                            <th>&nbsp;</th>
202
                            <th>&nbsp;</th>
195
                        </tr>
203
                        </tr>
Lines 218-223 Link Here
218
                                    </td>
226
                                    </td>
219
                                    <td>[% Branches.GetName( c.branchcode ) %]</td>
227
                                    <td>[% Branches.GetName( c.branchcode ) %]</td>
220
                                    <td>
228
                                    <td>
229
                                        [% IF c.date_start %]
230
                                            [% c.date_start | $KohaDates %]
231
                                        [% END %]
232
                                    </td>
233
                                    <td>
234
                                        [% IF c.date_end %]
235
                                            [% c.date_end | $KohaDates %]
236
                                        [% END %]
237
                                    </td>
238
                                    <td>
239
                                        [% c.club_enrollments.count %]
240
                                        <a class="btn btn-xs" href="club-enrollments.pl?id=[% c.id %]">
241
                                            View enrollments
242
                                        </a>
243
                                    </td>
244
                                    <td>
221
                                        [% IF CAN_user_clubs_edit_clubs %]
245
                                        [% IF CAN_user_clubs_edit_clubs %]
222
                                            <a class="btn btn-default" style="white-space:nowrap" href="clubs-add-modify.pl?id=[% c.id %]">
246
                                            <a class="btn btn-default" style="white-space:nowrap" href="clubs-add-modify.pl?id=[% c.id %]">
223
                                                <i class="fa fa-edit"></i> Edit
247
                                                <i class="fa fa-edit"></i> Edit
Lines 236-242 Link Here
236
                        [% ELSE %]
260
                        [% ELSE %]
237
                            <tr>
261
                            <tr>
238
                                <td colspan="8">
262
                                <td colspan="8">
239
                                    No club templates defined.
263
                                    No clubs defined.
240
                                </td>
264
                                </td>
241
                            </td>
265
                            </td>
242
                        [% END %]
266
                        [% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/clubs/patron-enroll.tt (-1 / +1 lines)
Lines 28-34 Link Here
28
                [% END %]
28
                [% END %]
29
29
30
                <li>
30
                <li>
31
                    <a href="#" class="btn btn-default" onclick="addEnrollment(); return false;"><i class="fa fa-plus"></i> Enroll</a>
31
                    <a href="#" class="btn btn-default" onclick="addEnrollment(); return false;"><i class="fa fa-plus"></i> Finish enrollment</a>
32
                    <a href="#" onclick="showClubs(); return false;">Cancel</a>
32
                    <a href="#" onclick="showClubs(); return false;">Cancel</a>
33
                </li>
33
                </li>
34
            </ol>
34
            </ol>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt (-4 / +5 lines)
Lines 523-534 function validate1(date) { Link Here
523
            </li>
523
            </li>
524
        [% END %]
524
        [% END %]
525
        <li><a id="debarments-tab-link" href="#reldebarments">[% debarments.size %] Restrictions</a></li>
525
        <li><a id="debarments-tab-link" href="#reldebarments">[% debarments.size %] Restrictions</a></li>
526
        [% SET enrollments = borrower.get_club_enrollments.size || 0 %]
526
527
        [% SET enrollable  = borrower.get_enrollable_clubs.size || 0 %]
527
        [% SET enrollments = patron.get_club_enrollments(1) %]
528
        [% IF CAN_user_clubs && ( enrollments || enrollable ) %]
528
        [% SET enrollable  = patron.get_enrollable_clubs(0,1) %]
529
        [% IF CAN_user_clubs && ( enrollable.count || enrollments.count ) %]
529
            <li>
530
            <li>
530
                <a id="clubs-tab-link" href="#clubs-tab">
531
                <a id="clubs-tab-link" href="#clubs-tab">
531
                    Clubs ([% enrollments %]/[% enrollable %])
532
                    Clubs ([% enrollments.count %]/[% enrollable.count %])
532
                </a>
533
                </a>
533
            </li>
534
            </li>
534
        [% END %]
535
        [% END %]
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/clubs/clubs-tab.tt (-1 / +1 lines)
Lines 56-62 Link Here
56
                    <td>[% c.name %]</td>
56
                    <td>[% c.name %]</td>
57
                    <td>[% c.description %]</td>
57
                    <td>[% c.description %]</td>
58
                    <td>
58
                    <td>
59
                        [% IF !c.club_template.is_email_required || ( c.club_template.is_email_required && borrower.FirstValidEmailAddress ) %]
59
                        [% IF !c.club_template.is_email_required || ( c.club_template.is_email_required && borrower.first_valid_email_address ) %]
60
                            <a class="btn btn-xs" onclick="loadEnrollmentForm([% c.id %])">
60
                            <a class="btn btn-xs" onclick="loadEnrollmentForm([% c.id %])">
61
                                <i class="icon-plus"></i> Enroll
61
                                <i class="icon-plus"></i> Enroll
62
                            </a>
62
                            </a>
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/clubs/enroll.tt (-1 / +1 lines)
Lines 28-34 Link Here
28
                [% END %]
28
                [% END %]
29
29
30
                <li>
30
                <li>
31
                    <a href="#" class="btn btn-default" onclick="addEnrollment(); return false;"><i class="fa fa-plus"></i> Enroll</a>
31
                    <a href="#" class="btn btn-default" onclick="addEnrollment(); return false;"><i class="fa fa-plus"></i> Finish enrollment</a>
32
                    <a href="#" onclick="showClubs(); return false;">Cancel</a>
32
                    <a href="#" onclick="showClubs(); return false;">Cancel</a>
33
                </li>
33
                </li>
34
            </ol>
34
            </ol>
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt (-3 / +6 lines)
Lines 4-9 Link Here
4
[% USE ItemTypes %]
4
[% USE ItemTypes %]
5
[% USE Price %]
5
[% USE Price %]
6
6
7
[% SET borrower_club_enrollments =  borrower.get_club_enrollments(1) %]
8
[% SET borrower_enrollable_clubs = borrower.get_enrollable_clubs(1,1) %]
9
7
[% INCLUDE 'doc-head-open.inc' %]
10
[% INCLUDE 'doc-head-open.inc' %]
8
<title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Your library home</title>
11
<title>[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog &rsaquo; Your library home</title>
9
[% INCLUDE 'doc-head-close.inc' %]
12
[% INCLUDE 'doc-head-close.inc' %]
Lines 134-143 Using this account is not recommended because some parts of Koha will not functi Link Here
134
                                [% IF ( BORROWER_INFO.amountlessthanzero ) %]<li><a href="#opac-user-fines">Credits ([% amountoutstanding | $Price %])</a></li>[% END %]
137
                                [% IF ( BORROWER_INFO.amountlessthanzero ) %]<li><a href="#opac-user-fines">Credits ([% amountoutstanding | $Price %])</a></li>[% END %]
135
                            [% END %]
138
                            [% END %]
136
139
137
                            [% IF borrower.get_club_enrollments.size || borrower.get_enrollable_clubs(1).size %]
140
                            [% IF borrower_club_enrollments.count || borrower_enrollable_clubs.count %]
138
                                <li>
141
                                <li>
139
                                    <a id="opac-user-clubs-tab-link" href="#opac-user-clubs">
142
                                    <a id="opac-user-clubs-tab-link" href="#opac-user-clubs">
140
                                        Clubs ([% borrower.get_club_enrollments.size %]/[% borrower.get_enrollable_clubs(1).size || 0 %])
143
                                        Clubs ([% borrower_club_enrollments.count || 0 %]/[% borrower_enrollable_clubs.count || 0 %])
141
                                    </a>
144
                                    </a>
142
                                </li>
145
                                </li>
143
                            [% END %]
146
                            [% END %]
Lines 326-332 Using this account is not recommended because some parts of Koha will not functi Link Here
326
                            [% END # IF issues_count %]
329
                            [% END # IF issues_count %]
327
                        </div> <!-- / .opac-user-checkouts -->
330
                        </div> <!-- / .opac-user-checkouts -->
328
331
329
                        [% IF borrower.get_club_enrollments_count.size || borrower.get_enrollable_clubs(1).size %]
332
                        [% IF borrower_club_enrollments.count || borrower_enrollable_clubs.count %]
330
                            <div id="opac-user-clubs">
333
                            <div id="opac-user-clubs">
331
                                Loading...
334
                                Loading...
332
                            </div>
335
                            </div>
(-)a/t/db_dependent/Clubs.t (-2 / +4 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 36;
20
use Test::More tests => 37;
21
use Test::Warn;
21
use Test::Warn;
22
22
23
use C4::Context;
23
use C4::Context;
Lines 129-134 my $club = Koha::Club->new( Link Here
129
        club_template_id => $club_template->id,
129
        club_template_id => $club_template->id,
130
        name             => "Test Club",
130
        name             => "Test Club",
131
        branchcode       => $branchcode,
131
        branchcode       => $branchcode,
132
        date_start       => '1900-01-01',
133
        date_end         => '9999-01-01',
132
    }
134
    }
133
)->store();
135
)->store();
134
136
Lines 216-221 is( $patron->get_club_enrollments->count, Link Here
216
    1, 'Got 1 club enrollment for patron' );
218
    1, 'Got 1 club enrollment for patron' );
217
is( $patron->get_enrollable_clubs->count,
219
is( $patron->get_enrollable_clubs->count,
218
    0, 'No more enrollable clubs for patron' );
220
    0, 'No more enrollable clubs for patron' );
221
is( $club->club_enrollments->count, 1, 'There is 1 enrollment for club' );
219
222
220
$schema->storage->txn_rollback();
223
$schema->storage->txn_rollback();
221
1;
224
1;
222
- 

Return to bug 12461