From: Frank Brehm Date: Tue, 11 Nov 2008 13:17:46 +0000 (+0000) Subject: Aufbewahrungsort mit zu Auswählen gebracht X-Git-Url: https://git.uhu-banane.org/?a=commitdiff_plain;h=b5d4c4a5250a3f8a2db3ecd62112a0ebbe1b0cae;p=books.git Aufbewahrungsort mit zu Auswählen gebracht --- diff --git a/lib/FrBr/Books/Controller/Books.pm b/lib/FrBr/Books/Controller/Books.pm index 0d404ce..517d90e 100644 --- a/lib/FrBr/Books/Controller/Books.pm +++ b/lib/FrBr/Books/Controller/Books.pm @@ -12,6 +12,7 @@ use FrBr::Books::Util::Author; use FrBr::Books::Util::Book; use FrBr::Books::Util::Category; use FrBr::Books::Util::Serie; +use FrBr::Books::Util::Ort; use FrBr::Books::Util::Verlag; use FrBr::Books::Util::Waehrung; @@ -36,7 +37,7 @@ Catalyst Controller. sub auto : Private { my ( $self, $c ) = @_; - my $K = __PACKAGE__ . "::auto(): "; + my $K = ( caller(0) )[3] . "(): "; $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2; @@ -75,7 +76,7 @@ sub index : Private { sub default : Private { my ( $self, $c ) = @_; - my $K = __PACKAGE__ . "::default(): "; + my $K = ( caller(0) )[3] . "(): "; $c->stash->{'template'} = 'not_implemented.tt2'; @@ -98,7 +99,7 @@ Fetch all book objects and pass to books/list.tt2 in stash to be displayed sub list : Local { my ($self, $c) = @_; - my $K = __PACKAGE__ . "::list(): "; + my $K = ( caller(0) )[3] . "(): "; $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2; push @{ $c->stash->{'menu_path'} }, { @@ -125,7 +126,7 @@ Erstellen eines neuen Buches. sub form_new : Path('new') { my ( $self, $c ) = @_; - my $K = __PACKAGE__ . "::form_new(): "; + my $K = ( caller(0) )[3] . "(): "; $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2; @@ -166,7 +167,7 @@ sub form_new : Path('new') { sub bookdata_session2stash : Private { my ( $self, $c ) = @_; - my $K = __PACKAGE__ . "::bookdata_session2stash(): "; + my $K = ( caller(0) )[3] . "(): "; $c->stash->{'book_edit'} = {} unless $c->stash->{'book_edit'}; $c->stash->{'book_edit'}{'title'} = $c->session->{'book_data_edit'}{'title'} if defined $c->session->{'book_data_edit'}{'title'}; @@ -237,7 +238,7 @@ sub bookdata_session2stash : Private { sub bookdata_cgi2session : Private { my ( $self, $c ) = @_; - my $K = __PACKAGE__ . "::bookdata_cgi2session(): "; + my $K = ( caller(0) )[3] . "(): "; return 1 unless $c->request->params->{'book_form_sent'}; @@ -469,7 +470,7 @@ sub bookdata_cgi2session : Private { sub prepare_data_structures : Private { my ( $self, $c ) = @_; - my $K = __PACKAGE__ . "::prepare_data_structures(): "; + my $K = ( caller(0) )[3] . "(): "; # Autoren zusammensammeln my $autor_list_complete = get_author_list($c); @@ -504,6 +505,17 @@ sub prepare_data_structures : Private { } $c->log->debug( get_output_string( $K . "Verlage: ", $c->stash->{'verlagsliste'} ) ); + # Aufbewahrungsorte zusammensammeln + my $ortsliste = get_ortsliste($c); + $c->log->debug( get_output_string( $K . "Aufbewahrungsorte gesamt: ", $ortsliste ) ); + $c->stash->{'ortsliste'} = {}; + $c->stash->{'orts_ids'} = []; + for my $ort ( @$ortsliste ) { + push @{$c->stash->{'orts_ids'}}, $ort->{'id'}; + $c->stash->{'ortsliste'}{$ort->{'id'}} = $ort->{'name'}; + } + $c->log->debug( get_output_string( $K . "Aufbewahrungsorte: ", $c->stash->{'ortsliste'} ) ); + # Buchserien zusamensammeln my $serienliste = get_serienliste($c); $c->log->debug( get_output_string( $K . "Serien gesamt: ", $serienliste ) ); diff --git a/lib/FrBr/Books/Util/Book.pm b/lib/FrBr/Books/Util/Book.pm index be9454e..7459baa 100644 --- a/lib/FrBr/Books/Util/Book.pm +++ b/lib/FrBr/Books/Util/Book.pm @@ -82,7 +82,7 @@ sub get_booklist { my $b_search_params = undef; my $other_params = {}; $other_params->{'order_by'} = [ 'title' ]; - $other_params->{'join'} = [ 'waehrung', 'verlag', 'bindungsart' ]; + $other_params->{'join'} = [ 'waehrung', 'verlag', 'ort', 'bindungsart' ]; $other_params->{'select'} = [ 'me.id', 'me.title', @@ -91,6 +91,7 @@ sub get_booklist { 'me.bindungsart_id', 'bindungsart.art_name', 'me.verlags_id', + 'me.orts_id', 'me.isbn', 'me.buch_nr', 'me.ausgabejahr', @@ -103,7 +104,9 @@ sub get_booklist { 'waehrung.umrechnung_in_euro', 'verlag.name_short', 'verlag.name_long', - + 'ort.name', + 'ort.descr', + 'ort.statisch', ]; $other_params->{'as'} = [ 'id', @@ -113,6 +116,7 @@ sub get_booklist { 'bindungsart_id', 'bindungsart', 'verlags_id', + 'orts_id', 'isbn', 'buch_nr', 'ausgabejahr', @@ -125,6 +129,9 @@ sub get_booklist { 'umrechnung_in_euro', 'verlagsname_short', 'verlagsname_long', + 'ortsname', + 'ort_beschreibung', + 'ort_ist_statisch', ]; my $i = 0; @@ -138,6 +145,7 @@ sub get_booklist { $buch->{'bindungsart_id'} = $book->bindungsart_id(); $buch->{'bindungsart'} = $book->get_column('bindungsart'); $buch->{'verlags_id'} = $book->verlags_id(); + $buch->{'orts_id'} = $book->orts_id(); $buch->{'isbn'} = $book->isbn(); $buch->{'buch_nr'} = $book->buch_nr(); $buch->{'ausgabejahr'} = $book->ausgabejahr(); @@ -150,6 +158,9 @@ sub get_booklist { $buch->{'umrechnung_in_euro'} = $book->get_column('umrechnung_in_euro'); $buch->{'verlagsname_short'} = $book->get_column('verlagsname_short'); $buch->{'verlagsname_long'} = $book->get_column('verlagsname_long'); + $buch->{'ortsname'} = $book->get_column('ortsname'); + $buch->{'ort_beschreibung'} = $book->get_column('ort_beschreibung'); + $buch->{'ort_ist_statisch'} = $book->get_column('ort_ist_statisch'); $buch->{'autoren'} = []; $buch->{'kategorien'} = []; $buch->{'serien'} = []; diff --git a/lib/FrBr/Books/Util/Ort.pm b/lib/FrBr/Books/Util/Ort.pm new file mode 100644 index 0000000..502e371 --- /dev/null +++ b/lib/FrBr/Books/Util/Ort.pm @@ -0,0 +1,135 @@ +package FrBr::Books::Util::Ort; + +# $Id$ +# $URL$ + +use strict; +use warnings; + +use FrBr::Common; + +# Export-Deklarationen + +BEGIN { + + use Exporter(); + our ( $VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS ); + + # set the version for version checking + $VERSION = 0.1; + my ($rev) = '$Revision$' =~ /(\d+)/; + $VERSION = sprintf( $VERSION . ".%d", $rev ); + + @ISA = qw(Exporter); + @EXPORT = qw( + &get_ortsliste + ); + + #%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], + + # your exported package globals go here, + # as well as any optionally exported functions + #@EXPORT_OK = qw($Var1 %Hashit &func3); +} ## end BEGIN + +our @EXPORT_OK; + +=head1 NAME + +FrBr::Books::Util::Ort - Modul fuer Funktionen rund um Aufbewahrungsorte + +=head1 METHODS + +=cut + +#----------------------------------------------------------------------------------- + +=head2 get_ortsliste( $c, $params ) + +Sammelt alle Aufbewahrungsorte zusammen. + +Folgende benannte Parameter koennen ueber $params uebergeben werden: + +Rueckgabe: Eine Array-Ref von Hash-Refs mit allen Aufbewahrungsorten, die den uebergebenen Suchkriterien entsprechen: + + $res = [ + { 'id' => 1, + 'name' => 'Ausgeliehen', + 'descr' => '', + 'statisch' => 'y', + }, + { 'id' => 2, + ... + }, + ... + ]; + +Die Liste ist nach den Namen der Aufbewahrungsorte alphabetisch sortiert. + +=cut + +sub get_ortsliste { + + my $c = shift; + my $K = ( caller(0) )[3] . "(): "; + + $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2; + + my $params = {}; + if ( ref($_[0]) and ref($_[0]) eq 'HASH' ) { + $params = $_[0]; + } + else { + %$params = @_; + } + $c->log->debug( get_output_string( $K, "Uebergebene Parameter: ", $params ) ) if $c->stash->{'debug_level'} >= 2; + + my $list = []; + + my $search_params = undef; + + my $other_params = {}; + $other_params->{'order_by'} = [ 'name' ]; + $other_params->{'select'} = [ + 'id', + 'name', + 'descr', + 'statisch', + ]; + $other_params->{'as'} = [ + 'id', + 'name', + 'descr', + 'statisch', + ]; + + for my $ort_rs ( $c->model('Schema::Orte')->search( $search_params, $other_params )->all() ) { + my $ort = {}; + $ort->{'id'} = $ort_rs->id(); + $ort->{'name'} = $ort_rs->name(); + $ort->{'descr'} = $ort_rs->descr(); + $ort->{'statisch'} = $ort_rs->statisch(); + push @$list, $ort; + } + + return $list; +} + +#----------------------------------------------------------------------------------- + +=head1 AUTHOR + +Frank Brehm + +=head1 LICENSE + +This library is free software, you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut + +1; + +__END__ + +# vim: noai : ts=4 fenc=utf-8 filetype=perl expandtab : diff --git a/root/src/books/book_form.tt2 b/root/src/books/book_form.tt2 index abeb566..1d6e0dc 100644 --- a/root/src/books/book_form.tt2 +++ b/root/src/books/book_form.tt2 @@ -81,6 +81,12 @@ function goto_new_serie() { [% FOR verlagsid IN verlags_ids %] [% END %]   + + Aufbewahrungsort: +   Kategorie(n): diff --git a/root/src/books/list.tt2 b/root/src/books/list.tt2 index 5e10e21..fbae6d8 100644 --- a/root/src/books/list.tt2 +++ b/root/src/books/list.tt2 @@ -15,6 +15,7 @@ Titel Kategorie Verlag + Aufbewahrungsort ISBN [%- FOREACH book IN books -%][% buch_id = book.id %] @@ -23,6 +24,7 @@ [% book.title %] [% tt_cat = [ ]; tt_cat.push(cat) FOREACH cat = book.kategorien %][% tt_cat.join(',
') %] [% book.verlagsname_short %] + [% IF book.orts_id %][% book.ortsname %][% ELSE %]unbekannt[% END %] [% book.isbn %] [% END -%]