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;
76 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
78 template_name => "virtualshelves/shelves.tmpl",
82 flagsrequired => { catalogue => 1 },
86 if ( $query->param('modifyshelfcontents') ) {
87 my $shelfnumber = $query->param('viewshelf');
88 my $barcode = $query->param('addbarcode');
89 my ($item) = GetItem( 0, $barcode );
90 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'), $query->param('sortfield')
115 if ( $op && ( $op eq 'modif' ) ) {
116 my ( $shelfnumber, $shelfname, $owner, $category, $sortfield ) =
117 GetShelf( $query->param('shelf') );
120 shelfnumber => $shelfnumber,
121 shelfname => $shelfname,
122 "category$category" => 1,
123 "sort_$sortfield" => 1,
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'),
137 manageshelf => &ShelfPossibleAction( $loggedinuser, $shelfnumber, 'manage' ),
143 if ( $query->param('shelves') ) {
144 if ( my $newshelf = $query->param('addshelf') ) {
145 my $shelfnumber = AddShelf(
147 $query->param('owner'),
148 $query->param('category')
151 if ( $shelfnumber == -1 ) { #shelf already exists.
154 shelfnumber => $shelfnumber,
159 print $query->redirect("/cgi-bin/koha/virtualshelves/shelves.pl?viewshelf=$shelfnumber");
163 foreach ( $query->param() ) {
167 my ( $status, $count ) = DelShelf($delshelf);
169 $line{'status'} = $status;
170 $line{'count'} = $count;
172 print $query->redirect("/cgi-bin/koha/virtualshelves/shelves.pl");
176 #if the shelf is not deleted, %line points on null
177 # push( @paramsloop, \%line );
179 $template->param( paramsloop => \@paramsloop );
180 my ($shelflist) = GetShelves( $loggedinuser, 2 );
183 foreach my $element ( sort keys %$shelflist ) {
185 $color = ($color==1) ? 0 : 1;
186 $color and $line{'toggle'} = $color;
187 $line{'shelf'} = $element;
188 $line{'shelfname'} = $shelflist->{$element}->{'shelfname'};
189 $line{'shelfvirtualcount'} = $shelflist->{$element}->{'count'};
190 push( @shelvesloop, \%line );
193 shelvesloop => \@shelvesloop,
200 # rebuild shelflist in case a shelf has been added
201 $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{'sortfield'}=$shelflist->{$element}->{'sortfield'};
213 $line{"viewcategory$shelflist->{$element}->{'category'}"} = 1;
214 $line{'mine'} = 1 if $shelflist->{$element}->{'owner'} eq $loggedinuser;
215 $line{'shelfvirtualcount'} = $shelflist->{$element}->{'count'};
216 $line{'canmanage'} = ShelfPossibleAction( $loggedinuser, $element, 'manage' );
217 $line{'firstname'} = $shelflist->{$element}->{'firstname'} unless $shelflist->{$element}->{'owner'} eq $loggedinuser;
218 $line{'surname'} = $shelflist->{$element}->{'surname'} unless $shelflist->{$element}->{'owner'} eq $loggedinuser;
219 $numberCanManage++ if $line{'canmanage'};
220 push( @shelvesloop, \%line );
224 shelvesloop => \@shelvesloop,
225 numberCanManage => $numberCanManage,
227 if ($template->param('viewshelf') or
228 $template->param( 'shelves' ) or
229 $template->param( 'edit' ) ) {
230 $template->param(vseflag => 1);
232 if ($template->param( 'shelves' ) or
233 $template->param( 'edit' ) ) {
234 $template->param( seflag => 1);
237 output_html_with_http_headers $query, $cookie, $template->output;
240 my $innertemplate = shift;
241 if ( my $newshelf = $query->param('addshelf') ) {
242 my $shelfnumber = AddShelf(
244 $query->param('owner'),
245 $query->param('category')
248 if ( $shelfnumber == -1 ) { #shelf already exists.
251 shelfnumber => $shelfnumber,
258 foreach ( $query->param() ) {
262 my ( $status, $count ) = DelShelf($delshelf);
264 $line{'status'} = $status;
265 $line{'count'} = $count;
269 #if the shelf is not deleted, %line points on null
270 push( @paramsloop, \%line );
272 $innertemplate->param( paramsloop => \@paramsloop );
273 my ($shelflist) = GetShelves( $loggedinuser, 2 );
276 foreach my $element ( sort keys %$shelflist ) {
278 ( $color eq 1 ) ? ( $color = 0 ) : ( $color = 1 );
279 $line{'toggle'} = $color;
280 $line{'shelf'} = $element;
281 $line{'shelfname'} = $shelflist->{$element}->{'shelfname'};
282 $line{'shelfvirtualcount'} = $shelflist->{$element}->{'count'};
283 push( @shelvesloop, \%line );
285 $innertemplate->param(
286 shelvesloop => \@shelvesloop,