#-------------------------------------------------------
+=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.
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 = [
'nachname' => 'Tolkien',
'name_suffix' => undef,
'descr' => 'Bla Blub',
+ 'books' => [ 'Der Herr der Ringe',
+ 'Silmarillion',
+ ...
+ ],
},
{ 'id' => 2,
...
$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'};
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;
}
- 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.
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
};
-%]
--- /dev/null
+[%#
+ ** 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>
-%]
/* 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;
+}
<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>
-%]
/* 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 %];
+}