- eval {
- $shelf = Koha::Virtualshelf->new(
- { shelfname => $query->param('shelfname'),
- sortfield => $query->param('sortfield'),
- category => $query->param('category') || 1,
- allow_add => $query->param('allow_add'),
- allow_delete_own => $query->param('allow_delete_own'),
- allow_delete_other => $query->param('allow_delete_other'),
- owner => $query->param('owner'),
- }
- );
- $shelf->store;
- $shelfnumber = $shelf->shelfnumber;
- };
- if ($@) {
- push @messages, { type => 'error', code => ref($@), msg => $@ };
- } elsif ( not $shelf ) {
- push @messages, { type => 'error', code => 'error_on_insert' };
+ if ( $loggedinuser ) {
+ my $allow_changes_from = $query->param('allow_changes_from');
+ eval {
+ $shelf = Koha::Virtualshelf->new(
+ { shelfname => scalar $query->param('shelfname'),
+ sortfield => scalar $query->param('sortfield'),
+ category => scalar $query->param('category') || 1,
+ allow_change_from_owner => $allow_changes_from > 0,
+ allow_change_from_others => $allow_changes_from == ANYONE,
+ owner => scalar $loggedinuser,
+ }
+ );
+ $shelf->store;
+ $shelfnumber = $shelf->shelfnumber;
+ };
+ if ($@) {
+ push @messages, { type => 'error', code => ref($@), msg => $@ };
+ } elsif ( not $shelf ) {
+ push @messages, { type => 'error', code => 'error_on_insert' };
+ } else {
+ push @messages, { type => 'message', code => 'success_on_insert' };
+ $op = 'view';
+ }