$c->stash->{'template'} = 'books/filter.tt2';
+ # Neue Filterkriterien setzen
+ if ( $c->request->params->{'do_save'} ) {
+
+ if ( $c->request->params->{'filter_enabled'} and ( lc($c->request->params->{'filter_enabled'}) eq 'on' ) ) {
+
+ my $filter = {};
+
+ # Buchtitel-Filter setzen
+ my $title_name_where = $c->request->params->{'title_name_where'};
+ $title_name_where ||= 'is';
+ $title_name_where = lc($title_name_where);
+ $title_name_where = 'is' unless ( ( $title_name_where eq 'starts_with' ) or ( $title_name_where eq 'contains' ) );
+ $filter->{'title_name_where'} = $title_name_where;
+
+ my $title_name = $c->request->params->{'title_name'};
+ $title_name = '' unless defined $title_name;
+ $title_name =~ s/^\s+//;
+ $title_name =~ s/\s+$//;
+ $filter->{'title_name'} = $title_name;
+
+ # Nach Autoren filtern
+ my $autoren = {};
+ my $autor_ids = ref($c->request->params->{'autoren_ids'}) eq 'ARRAY' ? $c->request->params->{'autoren_ids'} : [$c->request->params->{'autoren_ids'}];
+ for my $id ( @$autor_ids ) {
+ if ( defined $id and $id =~ /(\d+)/ ) {
+ my $aid = $1;
+ $autoren->{$aid} = 1 if $aid;
+ }
+ }
+ $filter->{'autoren'} = $autoren if ( scalar( keys %$autoren ) );
+
+ # Nach Kategorie filtern
+ my $kategorien = {};
+ my $kat_ids = ref($c->request->params->{'kategorie_ids'}) eq 'ARRAY' ? $c->request->params->{'kategorie_ids'} : [$c->request->params->{'kategorie_ids'}];
+ for my $id ( @$kat_ids ) {
+ if ( defined $id and $id =~ /(\d+)/ ) {
+ my $aid = $1;
+ $kategorien->{$aid} = 1 if $aid;
+ }
+ }
+ $filter->{'kategorien'} = $kategorien if ( scalar( keys %$kategorien ) );
+
+ # Nach Buchserien filtern
+ my $serien = {};
+ my $serien_ids = ref($c->request->params->{'serien_ids'}) eq 'ARRAY' ? $c->request->params->{'serien_ids'} : [$c->request->params->{'serien_ids'}];
+ for my $id ( @$serien_ids ) {
+ if ( defined $id and $id =~ /(\d+)/ ) {
+ my $aid = $1;
+ $serien->{$aid} = 1 if $aid;
+ }
+ }
+ $filter->{'serien'} = $serien if ( scalar( keys %$serien ) );
+
+ # Nach Verlagen filtern
+ 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+)/ ) {
+ my $aid = $1;
+ $verlage->{$aid} = 1 if $aid;
+ }
+ }
+ $filter->{'verlage'} = $verlage if ( scalar( keys %$verlage ) );
+
+ # Nach Aufbewahrungsorten filtern
+ 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+)/ ) {
+ my $aid = $1;
+ $orte->{$aid} = 1 if $aid;
+ }
+ }
+ $filter->{'orte'} = $orte if ( scalar( keys %$orte ) );
+
+ $c->stash->{'booklist_filter'} = $filter;
+ $c->session->{'booklist_filter'} = $filter;
+
+ }
+ else {
+
+ $c->stash->{'booklist_filter'} = undef;
+ $c->session->{'booklist_filter'} = undef;
+
+ }
+
+ $c->detach('/books/list');
+
+ }
+
return 1;
}
document.booklist_filter_form.title_name_where.disabled = true;
document.booklist_filter_form.title_name.disabled = true;
document.booklist_filter_form.autoren_ids.disabled = true;
+ document.booklist_filter_form.kategorie_ids.disabled = true;
+ document.booklist_filter_form.verlags_ids.disabled = true;
+ document.booklist_filter_form.serien_ids.disabled = true;
+ document.booklist_filter_form.orts_ids.disabled = true;
}
function set_filter_enabled() {
document.booklist_filter_form.title_name_where.disabled = false;
document.booklist_filter_form.title_name.disabled = false;
document.booklist_filter_form.autoren_ids.disabled = false;
+ document.booklist_filter_form.kategorie_ids.disabled = false;
+ document.booklist_filter_form.verlags_ids.disabled = false;
+ document.booklist_filter_form.serien_ids.disabled = false;
+ document.booklist_filter_form.orts_ids.disabled = false;
}
</script>
value="off"[% IF NOT booklist_filter %] checked[% END %]> <label
for="filter_disabled">Filter deaktiviert - es werden alle Bücher angezeigt</label></td>
</tr><tr>
- <td><input type="radio" id="filter_enabled" name="filter_enabled"onclick="set_filter_enabled();"
+ <td><input type="radio" id="filter_enabled" name="filter_enabled" onclick="set_filter_enabled();"
value="on"[% IF booklist_filter %] checked[% END %]> <label
for="filter_enabled">Filter aktiviert - es werden die Bücher entsprechend ihrer Auswahl angezeigt</label></td>
</tr><tr>
</tr><tr>
<th><label for="autoren_ids">Autor:</label> </th>
<td><select name="autoren_ids" id="autoren_ids" size="12" multiple>
- <option value="">-- Autor oder Autoren wählen --</option>[% FOR autor_id IN autor_array_sorted %]
+ <option value="">-- Autor(en) wählen --</option>[% FOR autor_id IN autor_array_sorted %]
<option value="[% autor_id %]"[% IF booklist_filter.autoren AND booklist_filter.autoren.$autor_id %] selected[% END %] >[% autor_list.$autor_id %]</option>
[% END %]</select></td>
+ </tr><tr>
+ <th><label for="kategorie_ids">Kategorie:</label> </th>
+ <td><select name="kategorie_ids" id="kategorie_ids" size="6" multiple>
+ <option value="">-- Kategorie(n) wählen --</option>[% FOR kategorie_id IN kategorie_ids %]
+ <option value="[% kategorie_id %]"[% IF booklist_filter.kategorien AND booklist_filter.kategorien.$kategorie_id %] selected[% END %] >[% kategorie_list.$kategorie_id %]</option>
+ [% END %]</select></td>
+ </tr><tr>
+ <th><label for="serien_ids">Buchserie:</label> </th>
+ <td><select name="serien_ids" id="serien_ids" size="8" multiple>
+ <option value="">-- Buchserie(e) wählen --</option>[% FOR serien_id IN serien_ids %]
+ <option value="[% serien_id %]"[% IF booklist_filter.serien AND booklist_filter.serien.$serien_id %] selected[% END %] >[% serienliste.$serien_id %]</option>
+ [% END %]</select></td>
+ </tr><tr>
+ <th><label for="verlags_ids">Verlag:</label> </th>
+ <td><select name="verlags_ids" id="verlags_ids" size="8" multiple>
+ <option value="">-- Verlag(e) wählen --</option>[% FOR verlags_id IN verlags_ids %]
+ <option value="[% verlags_id %]"[% IF booklist_filter.verlage AND booklist_filter.verlage.$verlags_id %] selected[% END %] >[% verlagsliste.$verlags_id %]</option>
+ [% END %]</select></td>
+ </tr><tr>
+ <th><label for="orts_ids">Aufbewahrungsort:</label> </th>
+ <td><select name="orts_ids" id="orts_ids" size="6" multiple>
+ <option value="">-- Aufbewahrungsort(e) wählen --</option>[% FOR orts_id IN orts_ids %]
+ <option value="[% orts_id %]"[% IF booklist_filter.orte AND booklist_filter.orte.$orts_id %] selected[% END %] >[% ortsliste.$orts_id %]</option>
+ [% END %]</select></td>
</tr>
</table>
</fieldset>
<script type="text/javascript">
-[% IF booklist_filter %]set_filter_enabled();[% ELSE %]set_filter_disabled();[% END %]
+[% IF booklist_filter %]set_filter_enabled();
+document.booklist_filter_form.filter_enabled.checked = true;
+document.booklist_filter_form.filter_disabled.checked = false;[% ELSE %]set_filter_disabled();
+document.booklist_filter_form.filter_enabled.checked = false;
+document.booklist_filter_form.filter_disabled.checked = true;[% END %]
</script>