#-------------------------------------------------------
+=head2 list
+
+Sucht alle Verlage als Objekt zusammen und übergibt das verlag/list.tt2 zur Darstellung.
+
+=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("/verlag/list"),
+ 'name' => "Liste"
+ };
+
+ my $liste = get_verlagsliste( $c, 'get_books' => 1 );
+ $c->log->debug( get_output_string( $K, "Erhaltene Liste der Verlage: ", $liste ) ) if $c->stash->{'debug_level'} >= 2;
+ $c->stash->{'verlage'} = $liste;
+
+ $c->stash->{'template'} = 'verlag/list.tt2';
+
+}
+
+#-------------------------------------------------------
+
=head2 form_new( )
Erstellen eines neuen Verlages.
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint("name_short", ["name_short"]);
+__PACKAGE__->has_many( 'buecher' => 'FrBr::Books::Db::Buecher', { 'foreign.verlags_id' => 'self.id' } );
-# Created by DBIx::Class::Schema::Loader v0.04004 @ 2008-03-17 17:53:52
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:DAa/d3XMLm6o69u4vod7zA
-
-
-# You can replace this text with custom content, and it will be preserved on regeneration
1;
__END__
-# vim: noai : ts=4 fenc=utf-8 filetype=perl expandtab :
+# vim: noai : ts=4 fenc=utf-8 filetype=perl
__END__
-# vim: noai : ts=4 fenc=utf-8 filetype=perl expandtab :
+# vim: noai : ts=4 fenc=utf-8 filetype=perl :
Folgende benannte Parameter koennen ueber $params uebergeben werden:
-Rueckgabe: Eine Array-Ref von Hash-Refs mit allen verlagen, die den uebergebenen Suchkriterien entsprechen:
+=over 4
+
+=item B<page>
+
+Integer: Zeigt an, welche Seite von Verlagen dargestellt werden soll.
+
+Wenn nicht angegeben, werden alle Verlage zurückgegeben.
+
+=back
+
+Rueckgabe: Eine Array-Ref von Hash-Refs mit allen Verlagen, die den uebergebenen Suchkriterien entsprechen:
$res = [
- { 'id' => 1,
- 'name' => 'Heyne',
- 'name_long' => 'Heyne-Verlag usw. GmbH & Co. KG',
- },
- { 'id' => 2,
- ...
- },
+ {
+ 'id' => 1,
+ 'name' => 'Heyne',
+ 'name_long' => 'Heyne-Verlag usw. GmbH & Co. KG',
+ 'count_books' => 22,
+ },
+ {
+ 'id' => 2,
+ ...
+ },
...
];
$c->log->debug( get_output_string( $K, "Uebergebene Parameter: ", $params ) ) if $c->stash->{'debug_level'} >= 2;
my $list = [];
+ my $page = to_int( $params->{'page'} ) ? to_int( $params->{'page'} ) : undef;
+ my $rows = undef;
+ $rows = $c->stash->{'list_length'} || 20 if defined $page;
my $search_params = undef;
my $other_params = {};
$other_params->{'order_by'} = [ 'name_short' ];
$other_params->{'select'} = [
- 'id',
- 'name_short',
- 'name_long',
+ 'me.id',
+ 'me.name_short',
+ 'me.name_long',
+ { 'count' => 'buecher.id' }
];
$other_params->{'as'} = [
'id',
'name_short',
'name_long',
+ 'count_books',
];
+ $other_params->{'join'} = [ 'buecher'];
+ $other_params->{'group_by'} = [ 'id' ];
+
+ if ( $page ) {
+ $other_params->{'rows'} = $rows;
+ $other_params->{'page'} = $page;
+ }
for my $verlag_rs ( $c->model('Schema::Verlage')->search( $search_params, $other_params )->all() ) {
my $verlag = {};
- $verlag->{'id'} = $verlag_rs->id();
- $verlag->{'name'} = $verlag_rs->name_short();
- $verlag->{'descr'} = $verlag_rs->name_long();
+ $verlag->{'id'} = $verlag_rs->id();
+ $verlag->{'name'} = $verlag_rs->name_short();
+ $verlag->{'descr'} = $verlag_rs->name_long();
+ $verlag->{'count_books'} = $verlag_rs->get_column('count_books');
push @$list, $verlag;
}
__END__
-# vim: noai : ts=4 fenc=utf-8 filetype=perl expandtab :
+# vim: noai : ts=4 fenc=utf-8 filetype=perl
-[%#
+/* [%#
# Template fuer Stylesheets Autoren
#
+ # vim: noai : ts=4 fenc=utf-8 filetype=css
+ #
# $Id$
# $URL$
#
-%]
-/* Stylesheets Autoren */
+Stylesheets Autoren */
DIV.center {
- margin: auto;
- text-align: center;
- width: auto;
+ margin: auto;
+ text-align: center;
+ width: auto;
}
TABLE.wrapper {
- border-spacing: 0;
- margin: auto;
+ border-spacing: 0;
+ margin: auto;
}
TABLE.wrapper TH {
- text-align: center;
- font-size: 1.2em;
+ text-align: center;
+ font-size: 1.2em;
}
TABLE.wrapper TD {
- text-align: left;
+ text-align: left;
}
TABLE.wrapper TD.action {
- font-weight: bolder;
- padding-top: 1em;
- padding-bottom: 1em;
+ font-weight: bolder;
+ padding-top: 1em;
+ padding-bottom: 1em;
}
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;
+ 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;
- font-size: 1em;
- 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 %];
+ vertical-align: top;
+ text-align: left;
+ font-size: 1em;
+ 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;
- font-size: 1em;
- 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 %];
+ vertical-align: top;
+ font-size: 1em;
+ 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 %];
+ background-color: [% site.col.list_row %];
}
TABLE.autorliste UL {
- margin: 0;
+ margin: 0;
}
TABLE.autorliste TD.button {
- font-weight: bolder;
- text-align: center;
- padding-left: 1em;
- padding-right: 1em;
+ font-weight: bolder;
+ text-align: center;
+ padding-left: 1em;
+ padding-right: 1em;
}
--- /dev/null
+<!-- [%#
+ ** Template fuer Verlagsliste
+ **
+ ** vim: noai : ts=4 fenc=utf-8 filetype=html :
+ **
+ ** $Id$
+ ** $URL$
+ ** -%]
+
+ Verlagsliste
+
+-->
+
+[% META title = 'Verlagsliste' -%]
+
+<div class="center">
+
+<table class="wrapper" cellspacing="0">
+<tr><th>Liste der Verlage</th> </tr>
+[% IF Catalyst.user_exists %]<tr><td class="action"><a href="[% path('/verlag/new') %]">Neuer Verlag ...</a></td></tr>[% END %]
+<tr><td><table class="verlagsliste">
+ <tr>
+ <th>Name des Verlags</th>
+ <th>Ausführlicher Verlagsname</th>
+ <th>Anzahl Bücher</th>
+ <th></th>
+ [% IF Catalyst.user_exists %]<th></th>
+ <th></th>[% END %]
+ </tr>
+[% rowstyle = 'even' %][%- FOREACH verlag IN verlage -%]
+ <tr>
+ <td class="[% rowstyle %]">[% verlag.name %]</td>
+ <td class="[% rowstyle %]">[% verlag.descr %]</td>
+ <td class="[% rowstyle %]" style="text-align: right;">[% verlag.count_books %]</td>
+ <td class="button [% rowstyle %]"><a href="[% path('/verlag/view') %]?view_verlags_id=[% verlag.id %]">Ansehen</a></td>
+ [% IF Catalyst.user_exists %]<td class="button [% rowstyle %]"><a href="[% path('/verlag/edit') %]?edit_verlags_id=[% verlag.id %]">Ändern</a></td>
+ <td class="button [% rowstyle %]">[% IF verlag.count_books > 0 %]Löschen[% ELSE %]<a href="[% path('/verlag/delete') %]?delete_verlags_id=[% author.id %]">Löschen</a>[% END %]</td>[% END %]
+ </tr>
+[% IF rowstyle == 'even' %][% rowstyle = 'odd'%][% ELSE %][% rowstyle = 'even' %][% END %][% END -%]
+</table></td></tr></table>
+</div>
+<br />
-%]
Stylesheets Verlage */
+DIV.center {
+ margin: auto;
+ text-align: center;
+ width: auto;
+}
+
+TABLE.wrapper {
+ border-spacing: 0;
+ margin: auto;
+}
+
+TABLE.wrapper TH {
+ text-align: center;
+ font-size: 1.2em;
+}
+
+TABLE.wrapper TD {
+ text-align: left;
+}
+
+TABLE.wrapper TD.action {
+ font-weight: bolder;
+ padding-top: 1em;
+ padding-bottom: 1em;
+}
+
+TABLE.verlagsliste {
+ 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.verlagsliste TH {
+ vertical-align: top;
+ text-align: left;
+ font-size: 1em;
+ 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.verlagsliste TD {
+ vertical-align: top;
+ font-size: 1em;
+ 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.verlagsliste TD.odd {
+ background-color: [% site.col.list_row %];
+}
+
+TABLE.verlagsliste UL {
+ margin: 0;
+}
+
+TABLE.verlagsliste TD.button {
+ font-weight: bolder;
+ text-align: center;
+ padding-left: 1em;
+ padding-right: 1em;
+}