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'});
91 if ( ShelfPossibleAction( $loggedinuser, $shelfnumber, 'manage' ) ) {
92 AddToShelf( $biblio->{'biblionumber'}, $shelfnumber );
93 foreach ( $query->param ) {
95 my $biblionumber = $1;
96 DelFromShelf( $biblionumber, $shelfnumber );
102 # getting the Shelves list
103 my $shelflist = GetShelves( $loggedinuser, 2 );
104 $template->param( { loggedinuser => $loggedinuser } );
105 my $op = $query->param('op');
108 if ( $op && ( $op eq 'modifsave' ) ) {
110 $query->param('shelfnumber'), $query->param('shelfname'),
111 $loggedinuser, $query->param('category')
115 if ( $op && ( $op eq 'modif' ) ) {
116 my ( $shelfnumber, $shelfname, $owner, $category ) =
117 GetShelf( $query->param('shelf') );
120 shelfnumber => $shelfnumber,
121 shelfname => $shelfname,
122 "category$category" => 1
125 # editshelf($query->param('shelf'));
128 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'),
139 &ShelfPossibleAction( $loggedinuser, $shelfnumber, 'manage' ),
145 if ( $query->param('shelves') ) {
146 if ( my $newshelf = $query->param('addshelf') ) {
147 my $shelfnumber = AddShelf(
149 $query->param('owner'),
150 $query->param('category')
153 if ( $shelfnumber == -1 ) { #shelf already exists.
156 shelfnumber => $shelfnumber,
163 foreach ( $query->param() ) {
167 my ( $status, $count ) = DelShelf($delshelf);
169 $line{'status'} = $status;
170 $line{'count'} = $count;
174 #if the shelf is not deleted, %line points on null
175 push( @paramsloop, \%line );
177 $template->param( paramsloop => \@paramsloop );
178 my ($shelflist) = GetShelves( $loggedinuser, 2 );
181 foreach my $element ( sort keys %$shelflist ) {
183 ( $color eq 1 ) ? ( $color = 0 ) : ( $color = 1 );
184 $line{'toggle'} = $color;
185 $line{'shelf'} = $element;
186 $line{'shelfname'} = $shelflist->{$element}->{'shelfname'};
187 $line{'shelfvirtualcount'} = $shelflist->{$element}->{'count'};
188 push( @shelvesloop, \%line );
191 shelvesloop => \@shelvesloop,
198 my $shelflist = GetShelves( $loggedinuser, 2 );
201 my $numberCanManage = 0;
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{"viewcategory$shelflist->{$element}->{'category'}"} = 1;
210 $line{'mine'} = 1 if $shelflist->{$element}->{'owner'} eq $loggedinuser;
211 $line{'shelfvirtualcount'} = $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 $numberCanManage++ if $line{'canmanage'};
219 push( @shelvesloop, \%line );
223 shelvesloop => \@shelvesloop,
225 numberCanManage => $numberCanManage,
228 output_html_with_http_headers $query, $cookie, $template->output;
231 my $innertemplate = shift;
232 if ( my $newshelf = $query->param('addshelf') ) {
233 my $shelfnumber = AddShelf(
235 $query->param('owner'),
236 $query->param('category')
239 if ( $shelfnumber == -1 ) { #shelf already exists.
242 shelfnumber => $shelfnumber,
249 foreach ( $query->param() ) {
253 my ( $status, $count ) = DelShelf($delshelf);
255 $line{'status'} = $status;
256 $line{'count'} = $count;
260 #if the shelf is not deleted, %line points on null
261 push( @paramsloop, \%line );
263 $innertemplate->param( paramsloop => \@paramsloop );
264 my ($shelflist) = GetShelves( $loggedinuser, 2 );
267 foreach my $element ( sort keys %$shelflist ) {
269 ( $color eq 1 ) ? ( $color = 0 ) : ( $color = 1 );
270 $line{'toggle'} = $color;
271 $line{'shelf'} = $element;
272 $line{'shelfname'} = $shelflist->{$element}->{'shelfname'};
273 $line{'shelfvirtualcount'} = $shelflist->{$element}->{'count'};
274 push( @shelvesloop, \%line );
276 $innertemplate->param(
277 shelvesloop => \@shelvesloop,
284 # Revision 1.13 2007/04/24 13:54:29 hdl
285 # functions that were in C4::Interface::CGI::Output are now in C4::Output.
286 # So this implies quite a change for files.
287 # Sorry about conflicts which will be caused.
288 # directory Interface::CGI should now be dropped.
289 # I noticed that many scripts (reports ones, but also some circ/stats.pl or opac-topissues) still use Date::Manip.
291 # Revision 1.12 2007/04/04 16:46:22 tipaul
292 # HUGE COMMIT : code cleaning circulation.
294 # some stuff to do, i'll write a mail on koha-devel NOW !
296 # Revision 1.11 2007/03/09 14:32:26 tipaul
297 # rel_3_0 moved to HEAD
299 # Revision 1.9.2.9 2007/02/05 15:54:30 toins
300 # don't display "remove selected shelves" if the user logged has no shelf.
302 # Revision 1.9.2.8 2006/12/15 17:36:57 toins
303 # - some change on the html param.
304 # - Writing directly the code of a sub called only once.
305 # - adding syspref: BiblioDefaultView.
307 # Revision 1.9.2.7 2006/12/14 17:22:55 toins
308 # virtualshelves work perfectly with mod_perl and are cleaned.
310 # Revision 1.9.2.6 2006/12/13 10:06:05 toins
311 # fix a mod_perl specific bug.
313 # Revision 1.9.2.5 2006/12/11 17:10:06 toins
314 # fixing some bugs on virtualshelves.
316 # Revision 1.9.2.4 2006/11/30 18:23:51 toins
317 # theses scripts don't need to use C4::Search.
319 # Revision 1.9.2.3 2006/10/30 09:50:45 tipaul
320 # better perl writting
322 # Revision 1.9.2.2 2006/10/17 07:59:35 toins