$c->stash->{'return_target_action'} = $c->web_path("/books");
$c->stash->{'booklist_filter'} = $c->session->{'booklist_filter'} if $c->session->{'booklist_filter'};
+ $c->log->debug( get_output_string( $K, "Buchlistenfilter: ", $c->session->{'booklist_filter'} ) ) if $c->stash->{'debug_level'} >= 2;
$c->stash->{'cssfiles'} = [] unless $c->stash->{'cssfiles'};
push @{$c->stash->{'cssfiles'}}, 'books/styles.css';
$c->session->{'return_target_del'} = $c->web_path("/books/list");
$c->session->{'return_target_new'} = $c->web_path("/books/list");
$c->session->{'from_book_list'} = 1;
+ $c->log->debug( get_output_string( $K, "Buchlistenfilter: ", $c->session->{'booklist_filter'} ) ) if $c->stash->{'debug_level'} >= 2;
}
#-------------------------------------------------------
$self->prepare_data_structures($c);
+ $c->stash->{'ortsliste'}{-1} = 'unbekannt';
+ unshift @{ $c->stash->{'orts_ids'} }, -1;
+
+ $c->stash->{'verlagsliste'}{-1} = 'unbekannt';
+ unshift @{ $c->stash->{'verlags_ids'} }, -1;
+
$c->stash->{'template'} = 'books/filter.tt2';
# Neue Filterkriterien setzen
my $verlage = {};
my $verlags_ids = ref($c->request->params->{'verlags_ids'}) eq 'ARRAY' ? $c->request->params->{'verlags_ids'} : [$c->request->params->{'verlags_ids'}];
for my $id ( @$verlags_ids ) {
- if ( defined $id and $id =~ /(\d+)/ ) {
+ if ( defined $id and $id =~ /(-?\d+)/ ) {
my $aid = $1;
$verlage->{$aid} = 1 if $aid;
}
my $orte = {};
my $orts_ids = ref($c->request->params->{'orts_ids'}) eq 'ARRAY' ? $c->request->params->{'orts_ids'} : [$c->request->params->{'orts_ids'}];
for my $id ( @$orts_ids ) {
- if ( defined $id and $id =~ /(\d+)/ ) {
+ if ( defined $id and $id =~ /(-?\d+)/ ) {
my $aid = $1;
$orte->{$aid} = 1 if $aid;
}
}
- $filter->{'orte'} = $orte if ( scalar( keys %$orte ) );
+ if ( scalar( keys %$orte ) ) {
+ $filter->{'orte'} = $orte if ( scalar( keys %$orte ) );
+ }
+ else {
+ delete $filter->{'orte'} if exists $filter->{'orte'};
+ }
$c->stash->{'booklist_filter'} = $filter;
$c->session->{'booklist_filter'} = $filter;
+ $c->log->debug( get_output_string( $K, "Filter: ", $filter ) ) if $c->stash->{'debug_level'} >= 2;
+
}
else {
$c->stash->{'booklist_filter'} = undef;
$c->session->{'booklist_filter'} = undef;
+ $c->log->debug( get_output_string( $K, "Filter gelöscht." ) ) if $c->stash->{'debug_level'} >= 2;
}
$c->stash->{'booklist_filter_changed'} = 1;
}
+ $c->log->debug( get_output_string( $K, "Buchlistenfilter: ", $c->session->{'booklist_filter'} ) ) if $c->stash->{'debug_level'} >= 2;
return 1;
if ( $filter->{'orte'} and scalar( keys %{ $filter->{'orte'} } ) ) {
my $ids = [ keys( %{ $filter->{'orte'} } ) ];
if ( scalar(@$ids) > 1 ) {
- $b_search_params->{'me.orts_id'} = { '-in' => $ids };
+ if ( exists $filter->{'orte'}{-1} ) {
+ my $or = [];
+ push @$or, 'me.orts_id' => \'IS NULL';
+ #delete $filter->{'orte'}{-1};
+ my $oids = [ grep { $_ >= 0 } keys %{ $filter->{'orte'} } ];
+ if ( scalar(@$oids) > 1 ) {
+ push @$or, 'me.orts_id' => { '-in' => $oids };
+ }
+ else {
+ push @$or, 'me.orts_id' => $oids->[0];
+ }
+ $b_search_params->{'-or'} = $or;
+ }
+ else {
+ $b_search_params->{'me.orts_id'} = { '-in' => $ids };
+ }
}
else {
- $b_search_params->{'me.orts_id'} = $ids->[0];
+ my $oid = $ids->[0];
+ if ( $oid == -1 ) {
+ $b_search_params->{'me.orts_id'} = \'IS NULL';
+ }
+ else {
+ $b_search_params->{'me.orts_id'} = $oid;
+ }
}
}
# Suchparameter auf undef setzen, falls es keine gibt.
$b_search_params = undef unless scalar keys %$b_search_params;
+ $c->log->debug( get_output_string( $K, "Suchparameter: ", $b_search_params ) ) if $c->stash->{'debug_level'} >= 2;
# Anzahl der Buecher insgesamt (ohne paginierung) ermitteln
my $other_params = {};