]> Frank Brehm's Git Trees - books.git/commitdiff
Autorliste dazu, Listen gestylt
authorFrank Brehm <frank@brehm-online.com>
Mon, 8 Dec 2008 12:35:10 +0000 (12:35 +0000)
committerFrank Brehm <frank@brehm-online.com>
Mon, 8 Dec 2008 12:35:10 +0000 (12:35 +0000)
lib/FrBr/Books/Controller/Autor.pm
lib/FrBr/Books/Util/Author.pm
lib/FrBr/Books/Util/Book.pm
root/lib/config/colors.tt2
root/src/autor/list.tt2 [new file with mode: 0644]
root/src/autor/styles.css
root/src/books/list.tt2
root/src/books/styles.css

index 1efb318ebfb83d0316b1ea51104293c393476e0c..a31ff155ce4c65724b304a2068c92a324ec646df 100644 (file)
@@ -83,6 +83,33 @@ sub default : Private {
 
 #-------------------------------------------------------
 
+=head2 list
+    
+Fetch all author objects and pass to autor/list.tt2 in stash to be displayed
+    
+=cut
+     
+sub list : Local {
+
+    my ($self, $c) = @_;
+    my $K = ( caller(0) )[3] . "(): ";
+    $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
+
+    push @{ $c->stash->{'menu_path'} }, {
+        'path' => $c->web_path("/autor/list"),
+        'name' => "Liste"
+    };
+
+    my $liste = get_author_list( $c, 'get_books' => 1 );
+    $c->log->debug( get_output_string( $K, "Erhaltene Liste der Autoren: ", $liste ) ) if $c->stash->{'debug_level'} >= 2;
+    $c->stash->{'authors'} = $liste;
+
+    $c->stash->{'template'} = 'autor/list.tt2';
+
+}
+
+#-------------------------------------------------------
+
 =head2 form_new( )
 
 Erstellen eines neuen Autors.
index dd7145b2861d18f7b28059d95c54a0091f407370..09ed1cda12881a9e1eab4f02ff06c8e6c92a0c73 100644 (file)
@@ -52,6 +52,15 @@ Sammelt alle Autoren zusammen.
 
 Folgende benannte Parameter koennen ueber $params uebergeben werden:
 
+=over 4
+
+=item B<get_books>
+
+Boolscher Parameter, der aussagt, dass auch die Buecher des Autors / der Autoren
+mit zuammengesammelt werden sollen.
+
+=back
+
 Rueckgabe: Eine Array-Ref von Hash-Refs mit allen Autoren, die den uebergebenen Suchkriterien entsprechen:
 
   $res = [
@@ -63,6 +72,10 @@ Rueckgabe: Eine Array-Ref von Hash-Refs mit allen Autoren, die den uebergebenen
       'nachname'    => 'Tolkien',
       'name_suffix' => undef,
       'descr'  => 'Bla Blub',
+      'books'       => [ 'Der Herr der Ringe',
+                         'Silmarillion',
+                         ...
+                       ],
     },
     { 'id'     => 2,
       ...
@@ -124,6 +137,7 @@ sub get_author_list {
         $autor->{'nachname'}    = $autor_rs->nachname();
         $autor->{'name_suffix'} = $autor_rs->name_suffix();
         $autor->{'descr'}       = $autor_rs->autor_descr();
+        $autor->{'books'}       = [];
         my @N;
         push @N, $autor->{'titel'} if $autor->{'titel'};
         push @N, $autor->{'vorname'} if $autor->{'vorname'};
@@ -134,6 +148,47 @@ sub get_author_list {
         push @$list, $autor;
     }
 
+    if ( $params->{'get_books'} ) {
+        for my $autor ( @$list ) {
+            my $aid = $autor->{'id'};
+            $search_params = { 'autor_id' => $autor->{'id'} };
+            $other_params = {};
+            $other_params->{'order_by'} = [ 'buch.title', 'buch.untertitel' ];
+            $other_params->{'join'}     = [ 'buch' ];
+            $other_params->{'select'}   = [
+                'me.id',
+                'me.ord_num',
+                'buch.id',
+                'buch.title',
+                'buch.title_original',
+                'buch.untertitel',
+                'buch.isbn',
+            ];
+            $other_params->{'as'}   = [
+                'id',
+                'ord_num_book_author',
+                'buch_id',
+                'title',
+                'title_original',
+                'untertitel',
+                'isbn',
+            ];
+            for my $ref ( $c->model('Schema::Autor2buch')->search( $search_params, $other_params )->all() ) {
+
+                my $buch = {};
+
+                $buch->{'id'}             = $ref->get_column('buch_id');
+                $buch->{'title'}          = $ref->get_column('title');
+                $buch->{'title_original'} = $ref->get_column('title_original');
+                $buch->{'untertitel'}     = $ref->get_column('untertitel');
+                $buch->{'isbn'}           = $ref->get_column('isbn');
+
+                push @{ $autor->{'books'} }, $buch;
+
+            }
+        }
+    }
+
     return $list;
 }
 
index 55be7dab34ed3d17669f6be2c445ee30663f54d0..ef0e985f56b08ba2c0519a56ab80863bafc00985 100644 (file)
@@ -55,7 +55,7 @@ Folgende benannte Parameter koennen ueber $params uebergeben werden:
   - title_original - Ein konkreter Original-Buchtitel (auch SQL-Metazeichen erlaubt)
     (Hinweis: wenn sowohl 'title' als auch 'title_original' uebergeben werden, werden
               diese ODER-verknuepft)
-  
+  - autor_id - Alle Buecher des Autors mit dieser Id
 
 Rueckgabe: Eine Array-Ref mit allen Buchtiteln, die den uebergebenen Suchkriterien entsprechen.
 
index 59facbcf366b548a0ce60cb0071240274852f6f9..0a7de3939a63a297ab910334503e27812f7ab00a 100644 (file)
@@ -45,7 +45,8 @@
         hhellgraublau   = '#c1d4e6'
         dunkelgraublau  = '#808d99'
         hdunkelgraublau = '#96a5b2'
-       dunkelblau      = '#1010c0'
+        dunkelblau      = '#1010c0'
+        ganzhellmagenta = '#e8e0ff'
         hellmagenta     = '#d7cfec'
         mittelmgenta    = '#babadd'
         dunkelmagenta   = '#666699'
     };
 
     site.col = {
-        page           = site.rgb.hellmagenta
-        text           = site.rgb.black
-        head           = site.rgb.dunkelmagenta
+        page            = site.rgb.hellmagenta
+        text            = site.rgb.black
+        head            = site.rgb.dunkelmagenta
         head_text       = site.rgb.white
-        line           = site.rgb.dunkelgraugelb
-        message                = site.rgb.green
-        error          = site.rgb.red
-        warn           = site.rgb.darkgreen
-        alink          = site.rgb.darkblue
-        statusbarbg    = site.rgb.mittelmgenta
+        line            = site.rgb.dunkelgraugelb
+        message         = site.rgb.green
+        error           = site.rgb.red
+        warn            = site.rgb.darkgreen
+        alink           = site.rgb.darkblue
+        statusbarbg     = site.rgb.mittelmgenta
         statusbartext  = site.rgb.dunkelgraugelb
         statusbarborder = site.rgb.dunkelgraugelb
         footertext      = site.rgb.dunkelgraublau
-        border         = site.rgb.ganzdunkelgrau
-        table_bg       = site.rgb.white
-        list_head      = site.rgb.silbergrau
-        list_row       = site.rgb.hellsilbergrau
-        list_row_bold  = site.rgb.fastweiss
-        text_free_day  = site.rgb.hellrot
-        text_hfree_day = site.rgb.dunkelbraun
-        bg_free_day    = site.rgb.rosa
-        bg_hfree_day   = site.rgb.hellrosa
-        border_hell    = site.rgb.hellgraublau
-        border_dunkel  = site.rgb.dunkelgraublau
-        bg_table       = site.rgb.graublau
-        bg_table_head  = site.rgb.hdunkelgraublau
-        link_table     = site.rgb.dunkelblau
+        border          = site.rgb.ganzdunkelgrau
+        table_bg        = site.rgb.white
+        list_head       = site.rgb.silbergrau
+        list_row        = site.rgb.hellsilbergrau
+        list_row_bold   = site.rgb.fastweiss
+        text_free_day   = site.rgb.hellrot
+        text_hfree_day  = site.rgb.dunkelbraun
+        bg_free_day     = site.rgb.rosa
+        bg_hfree_day    = site.rgb.hellrosa
+        border_hell     = site.rgb.hellgraublau
+        border_dunkel   = site.rgb.dunkelgraublau
+        tab_rahmen_hell = site.rgb.ganzhellmagenta
+        tab_rahmen_dkl  = site.rgb.dunkelmagenta
+        bg_table        = site.rgb.graublau
+        bg_table_head   = site.rgb.hdunkelgraublau
+        link_table      = site.rgb.dunkelblau
     };
 
 -%]
diff --git a/root/src/autor/list.tt2 b/root/src/autor/list.tt2
new file mode 100644 (file)
index 0000000..8a349b4
--- /dev/null
@@ -0,0 +1,34 @@
+[%#
+  ** Template fuer Autorenliste
+  **
+  ** vim: noai : ts=4 fenc=utf-8 filetype=html expandtab :
+  **
+  ** $Id$
+  ** $URL$
+  ** -%]
+
+[% META title = 'Autorenliste' -%]
+    
+<table class="autorliste">
+  <tr>
+    <th>Name des Autors</th>
+    <th>zusätzliche Angaben</th>
+    <th>Bücher</th>
+    <th></th>
+    <th></th>
+    <th></th>
+  </tr>
+[% rowstyle = 'even' %][%- FOREACH author IN authors -%][% author_id = author.id %]
+  <tr>
+    <td class="[% rowstyle %]">[% author.name %]</td>
+    <td class="[% rowstyle %]">[% author.descr %]</td>
+    <td class="[% rowstyle %]"><ul class="buchliste">
+[% IF author.books and author.books.size > 0 %][% FOREACH book IN author.books -%]
+            <li>[% book.title %][% IF book.untertitel %] ([% book.untertitel %])[% END %]</li>[% END %][% ELSE %]<li><i>keine</i></li>[% END %]
+        </ul></td>
+    <td class="button [% rowstyle %]"><a href="[% path('/autor/view') %]?view_autor_id=[% author.id %]">Ansehen</a></td>
+    <td class="button [% rowstyle %]"><a href="[% path('/autor/edit') %]?edit_autor_id=[% author.id %]">Ändern</a></td>
+    <td class="button [% rowstyle %]"><a href="[% path('/autor/delete') %]?delete_autor_id=[% author.id %]">Löschen</a></td>
+  </tr>
+[% IF rowstyle == 'even' %][% rowstyle = 'odd'%][% ELSE %][% rowstyle = 'even' %][% END %][% END -%]
+</table>
index 98edb6e485ab562670eaf2e28d4cdab4ca68a428..45b0a059a64d007ce31540e1bfb413f389817a2f 100644 (file)
@@ -7,4 +7,47 @@
 -%]
 /*  Stylesheets Autoren */
 
+TABLE.autorliste {
+  border-width:                2px;
+  border-style:                solid;
+  border-top-color:     [% site.col.tab_rahmen_hell %];
+  border-left-color:    [% site.col.tab_rahmen_hell %];
+  border-right-color:  [% site.col.tab_rahmen_dkl %];
+  border-bottom-color:  [% site.col.tab_rahmen_dkl %];  
+  border-collapse:     separate;
+  border-spacing:      0;
+}
+
+TABLE.autorliste TH {
+  vertical-align:      top;
+  text-align:          left; 
+  padding:             2px;
+  border-width:                1px;
+  border-style:                solid;
+  border-top-color:     [% site.col.tab_rahmen_dkl %];
+  border-left-color:    [% site.col.tab_rahmen_dkl %];
+  border-right-color:  [% site.col.tab_rahmen_hell %];
+  border-bottom-color:  [% site.col.tab_rahmen_hell %];  
+  background-color:    [% site.col.list_head %];
+}
+
+TABLE.autorliste TD {
+  vertical-align:      top;
+  padding:             2px;
+  border-width:                1px;
+  border-style:                solid;
+  border-top-color:     [% site.col.tab_rahmen_dkl %];
+  border-left-color:    [% site.col.tab_rahmen_dkl %];
+  border-right-color:  [% site.col.tab_rahmen_hell %];
+  border-bottom-color:  [% site.col.tab_rahmen_hell %];  
+  background-color:    [% site.col.list_row_bold %];
+}
+
+TABLE.autorliste TD.odd {
+  background-color:    [% site.col.list_row %];
+}
+
+TABLE.autorliste UL {
+  margin:      0;
+}
 
index 37fa76a8d728967c6a1a18db6b5666dd22f12205..1c78a85bd4c68967b427470f625e58f9333bc8c1 100644 (file)
     <th></th>
     <th></th>
   </tr>
-[%- FOREACH book IN books -%][% buch_id = book.id %]
+[% rowstyle = 'even' %][%- FOREACH book IN books -%][% buch_id = book.id %]
   <tr>
-    <td>[% tt_authors = [ ]; tt_authors.push(autor) FOREACH autor = book.autoren %][% tt_authors.join(', ') %]</td>
-    <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 class="button"><a href="[% path('/books/view') %]?view_book_id=[% book.id %]">Ansehen</a></td>
-    <td class="button"><a href="[% path('/books/edit') %]?edit_book_id=[% book.id %]">Ändern</a></td>
-    <td class="button"><a href="[% path('/books/delete') %]?delete_book_id=[% book.id %]">Löschen</a></td>
+    <td class="[% rowstyle %]">[% tt_authors = [ ]; tt_authors.push(autor) FOREACH autor = book.autoren %][% tt_authors.join(', ') %]</td>
+    <td class="[% rowstyle %]">[% book.title %]</td>
+    <td class="[% rowstyle %]">[% tt_cat = [ ]; tt_cat.push(cat) FOREACH cat = book.kategorien %][% tt_cat.join(',<br />') %]</td>
+    <td class="[% rowstyle %]">[% book.verlagsname_short %]</td>
+    <td class="[% rowstyle %]">[% IF book.orts_id %][% book.ortsname %][% ELSE %]unbekannt[% END %]</td>
+    <td class="button [% rowstyle %]"><a href="[% path('/books/view') %]?view_book_id=[% book.id %]">Ansehen</a></td>
+    <td class="button [% rowstyle %]"><a href="[% path('/books/edit') %]?edit_book_id=[% book.id %]">Ändern</a></td>
+    <td class="button [% rowstyle %]"><a href="[% path('/books/delete') %]?delete_book_id=[% book.id %]">Löschen</a></td>
   </tr>
-[% END -%]
+[% IF rowstyle == 'even' %][% rowstyle = 'odd'%][% ELSE %][% rowstyle = 'even' %][% END %][% END -%]
 </table>
index d4151834b6f1181c877a16df1b44830036b1cb0d..1d57a2c776e738f116eead9a136f4ec65f5d9c71 100644 (file)
@@ -7,4 +7,43 @@
 -%]
 /*  Stylesheets Buecherlisten */
 
+TABLE.buchliste {
+  border-width:         2px;
+  border-style:         solid;
+  border-top-color:     [% site.col.tab_rahmen_hell %];
+  border-left-color:    [% site.col.tab_rahmen_hell %];
+  border-right-color:   [% site.col.tab_rahmen_dkl %];
+  border-bottom-color:  [% site.col.tab_rahmen_dkl %];
+  border-collapse:      separate;
+  border-spacing:       0;
+}
+
+TABLE.buchliste TH {
+  vertical-align:       top;
+  text-align:           left;
+  padding:              2px;
+  border-width:         1px;
+  border-style:         solid;
+  border-top-color:     [% site.col.tab_rahmen_dkl %];
+  border-left-color:    [% site.col.tab_rahmen_dkl %];
+  border-right-color:   [% site.col.tab_rahmen_hell %];
+  border-bottom-color:  [% site.col.tab_rahmen_hell %];
+  background-color:     [% site.col.list_head %];
+}
+
+TABLE.buchliste TD {
+  vertical-align:       top;
+  padding:              2px;
+  border-width:         1px;
+  border-style:         solid;
+  border-top-color:     [% site.col.tab_rahmen_dkl %];
+  border-left-color:    [% site.col.tab_rahmen_dkl %];
+  border-right-color:   [% site.col.tab_rahmen_hell %];
+  border-bottom-color:  [% site.col.tab_rahmen_hell %];
+  background-color:     [% site.col.list_row_bold %];
+}
+
+TABLE.buchliste TD.odd {
+  background-color:     [% site.col.list_row %];
+}