]> Frank Brehm's Git Trees - books.git/commitdiff
Aufbewahrungsort mit zu Auswählen gebracht
authorFrank Brehm <frank@brehm-online.com>
Tue, 11 Nov 2008 13:17:46 +0000 (13:17 +0000)
committerFrank Brehm <frank@brehm-online.com>
Tue, 11 Nov 2008 13:17:46 +0000 (13:17 +0000)
lib/FrBr/Books/Controller/Books.pm
lib/FrBr/Books/Util/Book.pm
lib/FrBr/Books/Util/Ort.pm [new file with mode: 0644]
root/src/books/book_form.tt2
root/src/books/list.tt2

index 0d404ce91c7d85ed8987058474e144e0694f3bfa..517d90eec9ae70c52a8729d4b588a098f22402a2 100644 (file)
@@ -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 ) );
index be9454e82925ac53afeebb68ad74a6cc19834eef..7459baa0087ea653757357c90db168967299bd42 100644 (file)
@@ -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 (file)
index 0000000..502e371
--- /dev/null
@@ -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 :
index abeb566303a89995fdc53f02fa6bad55b39cc6e4..1d6e0dcf712aae6f71178e36c3c40a00019ebab4 100644 (file)
@@ -81,6 +81,12 @@ function goto_new_serie() {
             <option value="">-- Verlag auswählen --</option>[% FOR verlagsid IN verlags_ids %]
             <option value="[% verlagsid %]"[% IF book_edit.verlags_id == verlagsid %] selected[% END %]>[% verlagsliste.$verlagsid %]</option>[% END %]
           </select>&nbsp;<input type="button" name="neuer_verlag" value="*" class="shift_button" title="Neuer Verlag" onclick="goto_new_verlag();" /></td>
+    </tr><tr>
+      <th>Aufbewahrungsort:</th>
+      <td><select name="orts_id" size="1">
+            <option value="">-- Aufbewahrungsort auswählen --</option>[% FOR ortsid IN orts_ids %]
+            <option value="[% ortsid %]"[% IF book_edit.orts_id == ortsid %] selected[% END %]>[% ortsliste.$ortsid %]</option>[% END %]
+          </select>&nbsp;<input type="button" name="neuer_aufbewahrungsort" value="*" class="shift_button" title="Neuer Aufbewahrungsort" onclick="goto_new_ort();" /></td>
     </tr><tr>
       <th>Kategorie(n):</th>
       <td>
index 5e10e210fe26a017d08bb56c92c511cb1f4cb64f..fbae6d869e2e011447b1330dc3ea2f246caadf60 100644 (file)
@@ -15,6 +15,7 @@
     <th>Titel</th>
     <th>Kategorie</th>
     <th>Verlag</th>
+    <th>Aufbewahrungsort</th>
     <th>ISBN</th>
   </tr>
 [%- FOREACH book IN books -%][% buch_id = book.id %]
@@ -23,6 +24,7 @@
     <td>[% book.title %]</td>
     <td>[% tt_cat = [ ]; tt_cat.push(cat) FOREACH cat = book.kategorien %][% tt_cat.join(',<br />') %]</td>
     <td>[% book.verlagsname_short %]</td>
+    <td>[% IF book.orts_id %][% book.ortsname %][% ELSE %]unbekannt[% END %]</td>
     <td>[% book.isbn %]</td>
   </tr>
 [% END -%]