4 # Copyright 2000-2002 Katipo Communications
6 # This file is part of Koha.
8 # Koha is free software; you can redistribute it and/or modify it under the
9 # terms of the GNU General Public License as published by the Free Software
10 # Foundation; either version 2 of the License, or (at your option) any later
13 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
14 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License along with
18 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
19 # Suite 330, Boston, MA 02111-1307 USA
27 this script is used to script to provide virtualshelf management
33 =item C<modifyshelfcontents>
35 if this script has to modify the shelve content.
39 to know on which shelve this script has to work.
46 * modifsave to save change on the shelves
47 * modif to change the template to allow to modify the shelves.
51 to load the template with 'viewshelves param' which allow to read the shelves information.
55 if equals to 1. then call the function shelves which add
60 if the param shelves = 1 then addshelf must be equals to the name of the shelf to add.
68 use C4::VirtualShelves;
75 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
77 template_name => "virtualshelves/shelves.tmpl",
81 flagsrequired => { catalogue => 1 },
85 if ( $query->param('modifyshelfcontents') ) {
86 my $shelfnumber = $query->param('viewshelf');
87 my $barcode = $query->param('addbarcode');
88 my ($item) = GetItem( 0, $barcode );
89 my ($biblio) = GetBiblioFromItemNumber($item->{'itemnumber'});
90 if ( ShelfPossibleAction( $loggedinuser, $shelfnumber, 'manage' ) ) {
91 AddToShelf( $biblio->{'biblionumber'}, $shelfnumber );
92 foreach ( $query->param ) {
94 my $biblionumber = $1;
95 DelFromShelf( $biblionumber, $shelfnumber );
101 # getting the Shelves list
102 my $shelflist = GetShelves( $loggedinuser, 2 );
103 $template->param( { loggedinuser => $loggedinuser } );
104 my $op = $query->param('op');
107 if ( $op && ( $op eq 'modifsave' ) ) {
109 $query->param('shelfnumber'), $query->param('shelfname'),
110 $loggedinuser, $query->param('category')
114 if ( $op && ( $op eq 'modif' ) ) {
115 my ( $shelfnumber, $shelfname, $owner, $category ) =
116 GetShelf( $query->param('shelf') );
119 shelfnumber => $shelfnumber,
120 shelfname => $shelfname,
121 "category$category" => 1
124 # editshelf($query->param('shelf'));
127 if ( $query->param('viewshelf') ) {
129 #check that the user can view the shelf
130 my $shelfnumber = $query->param('viewshelf');
131 if ( ShelfPossibleAction( $loggedinuser, $shelfnumber, 'view' ) ) {
132 my $items = GetShelfContents($shelfnumber);
134 shelfname => $shelflist->{$shelfnumber}->{'shelfname'},
135 shelfnumber => $shelfnumber,
136 viewshelf => $query->param('viewshelf'),
138 &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,
160 print $query->redirect("/cgi-bin/koha/virtualshelves/shelves.pl?viewshelf=$shelfnumber");
164 foreach ( $query->param() ) {
168 my ( $status, $count ) = DelShelf($delshelf);
170 $line{'status'} = $status;
171 $line{'count'} = $count;
173 print $query->redirect("/cgi-bin/koha/virtualshelves/shelves.pl");
177 #if the shelf is not deleted, %line points on null
178 # push( @paramsloop, \%line );
180 $template->param( paramsloop => \@paramsloop );
181 my ($shelflist) = GetShelves( $loggedinuser, 2 );
184 foreach my $element ( sort keys %$shelflist ) {
186 ( $color eq 1 ) ? ( $color = 0 ) : ( $color = 1 );
187 $line{'toggle'} = $color;
188 $line{'shelf'} = $element;
189 $line{'shelfname'} = $shelflist->{$element}->{'shelfname'};
190 $line{'shelfvirtualcount'} = $shelflist->{$element}->{'count'};
191 push( @shelvesloop, \%line );
194 shelvesloop => \@shelvesloop,
201 my $shelflist = GetShelves( $loggedinuser, 2 );
204 my $numberCanManage = 0;
206 foreach my $element ( sort keys %$shelflist ) {
208 ( $color eq 1 ) ? ( $color = 0 ) : ( $color = 1 );
209 $line{'toggle'} = $color;
210 $line{'shelf'} = $element;
211 $line{'shelfname'} = $shelflist->{$element}->{'shelfname'};
212 $line{"viewcategory$shelflist->{$element}->{'category'}"} = 1;
213 $line{'mine'} = 1 if $shelflist->{$element}->{'owner'} eq $loggedinuser;
214 $line{'shelfvirtualcount'} = $shelflist->{$element}->{'count'};
216 ShelfPossibleAction( $loggedinuser, $element, 'manage' );
217 $line{'firstname'} = $shelflist->{$element}->{'firstname'}
218 unless $shelflist->{$element}->{'owner'} eq $loggedinuser;
219 $line{'surname'} = $shelflist->{$element}->{'surname'}
220 unless $shelflist->{$element}->{'owner'} eq $loggedinuser;
221 $numberCanManage++ if $line{'canmanage'};
222 push( @shelvesloop, \%line );
226 shelvesloop => \@shelvesloop,
228 numberCanManage => $numberCanManage,
231 output_html_with_http_headers $query, $cookie, $template->output;
234 my $innertemplate = shift;
235 if ( my $newshelf = $query->param('addshelf') ) {
236 my $shelfnumber = AddShelf(
238 $query->param('owner'),
239 $query->param('category')
242 if ( $shelfnumber == -1 ) { #shelf already exists.
245 shelfnumber => $shelfnumber,
252 foreach ( $query->param() ) {
256 my ( $status, $count ) = DelShelf($delshelf);
258 $line{'status'} = $status;
259 $line{'count'} = $count;
263 #if the shelf is not deleted, %line points on null
264 push( @paramsloop, \%line );
266 $innertemplate->param( paramsloop => \@paramsloop );
267 my ($shelflist) = GetShelves( $loggedinuser, 2 );
270 foreach my $element ( sort keys %$shelflist ) {
272 ( $color eq 1 ) ? ( $color = 0 ) : ( $color = 1 );
273 $line{'toggle'} = $color;
274 $line{'shelf'} = $element;
275 $line{'shelfname'} = $shelflist->{$element}->{'shelfname'};
276 $line{'shelfvirtualcount'} = $shelflist->{$element}->{'count'};
277 push( @shelvesloop, \%line );
279 $innertemplate->param(
280 shelvesloop => \@shelvesloop,
286 # Revision 1.13 2007/04/24 13:54:29 hdl
287 # functions that were in C4::Interface::CGI::Output are now in C4::Output.
288 # So this implies quite a change for files.
289 # Sorry about conflicts which will be caused.
290 # directory Interface::CGI should now be dropped.
291 # I noticed that many scripts (reports ones, but also some circ/stats.pl or opac-topissues) still use Date::Manip.
293 # Revision 1.12 2007/04/04 16:46:22 tipaul
294 # HUGE COMMIT : code cleaning circulation.
296 # some stuff to do, i'll write a mail on koha-devel NOW !
298 # Revision 1.11 2007/03/09 14:32:26 tipaul
299 # rel_3_0 moved to HEAD
301 # Revision 1.9.2.9 2007/02/05 15:54:30 toins
302 # don't display "remove selected shelves" if the user logged has no shelf.
304 # Revision 1.9.2.8 2006/12/15 17:36:57 toins
305 # - some change on the html param.
306 # - Writing directly the code of a sub called only once.
307 # - adding syspref: BiblioDefaultView.
309 # Revision 1.9.2.7 2006/12/14 17:22:55 toins
310 # virtualshelves work perfectly with mod_perl and are cleaned.
312 # Revision 1.9.2.6 2006/12/13 10:06:05 toins
313 # fix a mod_perl specific bug.
315 # Revision 1.9.2.5 2006/12/11 17:10:06 toins
316 # fixing some bugs on virtualshelves.
318 # Revision 1.9.2.4 2006/11/30 18:23:51 toins
319 # theses scripts don't need to use C4::Search.
321 # Revision 1.9.2.3 2006/10/30 09:50:45 tipaul
322 # better perl writting
324 # Revision 1.9.2.2 2006/10/17 07:59:35 toins