3 # Copyright 2000-2002 Katipo Communications
5 # This file is part of Koha.
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 2 of the License, or (at your option) any later
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License along with
17 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
18 # Suite 330, Boston, MA 02111-1307 USA
28 this script is used to script to provide bookshelf management
34 =item C<modifyshelfcontents>
36 if this script has to modify the shelve content.
40 to know on which shelve this script has to work.
47 * modifsave to save change on the shelves
48 * modif to change the template to allow to modify the shelves.
52 to load the template with 'viewshelves param' which allow to read the shelves information.
56 if equals to 1. then call the function shelves which add
61 if the param shelves = 1 then addshelf must be equals to the name of the shelf to add.
73 use C4::Interface::CGI::Output;
77 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
79 template_name => "opac-shelves.tmpl",
86 if ( $query->param('modifyshelfcontents') ) {
87 my $shelfnumber = $query->param('viewshelf');
88 my $barcode = $query->param('addbarcode');
89 my ($item) = GetItemnumberFromBarcode($barcode);
90 if ( ShelfPossibleAction( $loggedinuser, $shelfnumber, 'manage' ) ) {
91 AddToShelf( $item->{'itemnumber'}, $shelfnumber );
92 foreach ( $query->param ) {
95 if ( $query->param('remove') eq "on" ) {
96 DelFromShelf( $itemnumber, $shelfnumber );
103 # getting the Shelves list
104 my $shelflist = GetShelves( $loggedinuser, 2 );
105 $template->param( { loggedinuser => $loggedinuser } );
106 my $op = $query->param('op');
109 if ( $op && ( $op eq 'modifsave' ) ) {
111 $query->param('shelfnumber'), $query->param('shelfname'),
112 $loggedinuser, $query->param('category')
116 if ( $op && ( $op eq 'modif' ) ) {
117 my ( $shelfnumber, $shelfname, $owner, $category ) =
118 GetShelf( $query->param('shelf') );
121 shelfnumber => $shelfnumber,
122 shelfname => $shelfname,
123 "category$category" => 1
126 # editshelf($query->param('shelf'));
129 if ( $query->param('viewshelf') ) {
130 #check that the user can view the shelf
131 my $shelfnumber = $query->param('viewshelf');
132 if ( ShelfPossibleAction( $loggedinuser, $shelfnumber, 'view' ) ) {
133 my $items = GetShelfContents($shelfnumber);
135 shelfname => $shelflist->{$shelfnumber}->{'shelfname'},
136 shelfnumber => $shelfnumber,
137 viewshelf => $query->param('viewshelf'),
138 manageshelf => &ShelfPossibleAction( $loggedinuser, $shelfnumber, 'manage' ),
144 if ( $query->param('shelves') ) {
145 if ( my $newshelf = $query->param('addshelf') ) {
146 my $shelfnumber = AddShelf(
148 $query->param('owner'),
149 $query->param('category')
152 if ( $shelfnumber == -1 ) { #shelf already exists.
155 shelfnumber => $shelfnumber,
162 foreach ( $query->param() ) {
166 my ( $status, $count ) = DelShelf($delshelf);
168 $line{'status'} = $status;
169 $line{'count'} = $count;
173 #if the shelf is not deleted, %line points on null
174 push( @paramsloop, \%line );
176 $template->param( paramsloop => \@paramsloop );
177 my ($shelflist) = GetShelves( $loggedinuser, 2 );
180 foreach my $element ( sort keys %$shelflist ) {
182 ( $color eq 1 ) ? ( $color = 0 ) : ( $color = 1 );
183 $line{'toggle'} = $color;
184 $line{'shelf'} = $element;
185 $line{'shelfname'} = $shelflist->{$element}->{'shelfname'};
186 $line{'shelfbookcount'} = $shelflist->{$element}->{'count'};
187 push( @shelvesloop, \%line );
190 shelvesloop => \@shelvesloop,
198 GetShelves( $loggedinuser, 2 )
199 ; # rebuild shelflist in case a shelf has been added
203 foreach my $element ( sort keys %$shelflist ) {
205 ( $color eq 1 ) ? ( $color = 0 ) : ( $color = 1 );
206 $line{'toggle'} = $color;
207 $line{'shelf'} = $element;
208 $line{'shelfname'} = $shelflist->{$element}->{'shelfname'};
209 $line{ "category" . $shelflist->{$element}->{'category'} } = 1;
210 $line{'mine'} = 1 if $shelflist->{$element}->{'owner'} eq $loggedinuser;
211 $line{'shelfbookcount'} = $shelflist->{$element}->{'count'};
213 ShelfPossibleAction( $loggedinuser, $element, 'manage' );
214 $line{'firstname'} = $shelflist->{$element}->{'firstname'}
215 unless $shelflist->{$element}->{'owner'} eq $loggedinuser;
216 $line{'surname'} = $shelflist->{$element}->{'surname'}
217 unless $shelflist->{$element}->{'owner'} eq $loggedinuser;
218 push( @shelvesloop, \%line );
222 shelvesloop => \@shelvesloop,
223 "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
226 output_html_with_http_headers $query, $cookie, $template->output;
232 # Revision 1.11 2007/04/17 08:52:19 tipaul
233 # circulation cleaning continued: bufixing
235 # Revision 1.10 2007/04/04 16:46:23 tipaul
236 # HUGE COMMIT : code cleaning circulation.
238 # some stuff to do, i'll write a mail on koha-devel NOW !
240 # Revision 1.9 2007/03/09 15:12:54 tipaul
241 # rel_3_0 moved to HEAD
243 # Revision 1.8.2.12 2007/01/15 17:19:30 toins
244 # enable to add checked items to a shelf.
245 # Some display enhancements.
247 # Revision 1.8.2.11 2007/01/10 10:52:58 toins
248 # adding syspref directly to Auth.pm instead of to the template.
250 # Revision 1.8.2.10 2007/01/10 10:12:48 toins
251 # Adding OpacTopissue, OpacCloud, OpacAuthorithies to the template->param.
254 # Revision 1.8.2.9 2006/12/15 17:43:24 toins
255 # sync with intranet.
257 # Revision 1.8.2.8 2006/12/14 17:59:17 toins
258 # add the link to "BiblioDefaultView systempref" and not to opac-detail.pl
260 # Revision 1.8.2.7 2006/12/14 17:22:55 toins
261 # bookshelves work perfectly with mod_perl and are cleaned.
263 # Revision 1.8.2.6 2006/12/14 16:04:25 toins
264 # sync with intranet.
266 # Revision 1.8.2.5 2006/12/11 17:10:06 toins
267 # fixing some bugs on bookshelves.
269 # Revision 1.8.2.4 2006/12/07 15:42:15 toins
270 # synching opac & intranet.
271 # fix some broken link & bugs.
272 # removing warn compilation.
274 # Revision 1.8.2.3 2006/11/30 18:23:51 toins
275 # theses scripts don't need to use C4::Search.