]> Frank Brehm's Git Trees - books.git/commitdiff
Bugfixing, mit Edit einer Serie weitergekommen
authorFrank Brehm <frank@brehm-online.com>
Mon, 23 Nov 2009 23:04:35 +0000 (23:04 +0000)
committerFrank Brehm <frank@brehm-online.com>
Mon, 23 Nov 2009 23:04:35 +0000 (23:04 +0000)
lib/FrBr/Books/Controller/Serie.pm
lib/FrBr/Books/Util/Book.pm
lib/FrBr/Books/Util/Serie.pm
root/src/books/form.tt2
root/src/serie/delete.tt2 [new file with mode: 0644]
root/src/serie/delete_success.tt2 [new file with mode: 0644]
root/src/serie/edit.tt2 [new file with mode: 0644]
root/src/serie/form.css
root/src/serie/form.tt2
root/src/serie/new.tt2

index 215bfe6bcbb13bca3db6ba10b65d4e858f1a06eb..2a91068e5b688c9834cafed18213af435f6c1e39 100644 (file)
@@ -9,6 +9,7 @@ use base 'Catalyst::Controller';
 
 use FrBr::Common;
 use FrBr::Books::Util::Serie;
+use FrBr::Books::Util::Book;
 
 =head1 NAME
 
@@ -261,6 +262,119 @@ sub form_view : Path('view') {
 
 #-------------------------------------------------------
 
+=head2 form_edit( )
+
+Aendern einer vorhandenen Buchserie.
+
+=cut
+
+sub form_edit : Path('edit') {
+
+    my ( $self, $c ) = @_;
+    my $K = ( caller(0) )[3] . "(): ";
+
+    $c->log->debug( $K . "aufgerufen." ) if $c->stash->{'debug_level'} > 2;
+
+    unless ( $c->user_exists() ) {
+        $c->detach('/not_allowed');
+        return;
+    }
+
+    $c->stash->{'menu_path'} = [] unless $c->stash->{'menu_path'};
+       $self->add_serienlist_menu($c) if $c->session->{'from_serie_list'};
+    push @{ $c->stash->{'menu_path'} }, {
+        'path' => $c->web_path("/serie/edit"),
+        'name' => "Ändern"
+    };
+
+    $c->stash->{'error_message'} = '';
+
+    # Zu bearbeitende Serien-Id ermitteln
+    my $sid = to_int( $c->request->params->{'edit_serien_id'} || 0 );
+    unless ( $sid ) {
+        if ( $c->session->{'serie_data_edit'} and $c->session->{'serie_data_edit'}{'id'} ) {
+            $sid = $c->session->{'serie_data_edit'}{'id'};
+        }
+    }
+    unless ( $sid ) {
+        $c->stash->{'template'} = 'error.tt2';
+        $c->stash->{'error'}    = 'Keine oder ung&uuml;ltige Buchserien-Id &uuml;bergeben.';
+        return 1;
+    }
+
+    my $sliste = get_serienliste( $c, 'get_books' => 1, 'serien_id' => $sid );
+    $c->log->debug( get_output_string( $K, "Erhaltene Serienliste: ", $sliste ) ) if $c->stash->{'debug_level'} >= 2;
+
+    unless ( $sliste and scalar( @$sliste ) ) {
+        $c->stash->{'template'} = 'error.tt2';
+        $c->stash->{'error'}    = 'Zur &uuml;bergebenen Buchserien-Id wurde nichts gefunden.';
+        return 1;
+    }
+
+    my $serie = $sliste->[0];
+
+    $c->log->debug( get_output_string( $K, "Buchserie aus Datenbank: ", $serie ) ) if $c->stash->{'debug_level'} >= 2;
+
+    # Ruecksprung-URL bestimmen
+    $c->stash->{'return_target'} = $c->session->{'return_target_edit'} or $c->web_path("/serie/list");
+
+    # Sitzungsdaten vorbelegen, falls noch nicht geschehen
+    if ( $c->session->{'serie_data_edit'} ) {
+        if ( ! $c->session->{'serie_data_edit'}{'id'} or $c->session->{'serie_data_edit'}{'id'} != $sid ) {
+            $c->session->{'serie_data_edit'} = $serie;
+        }
+    }
+    else {
+        $c->session->{'serie_data_edit'} = $serie;
+    }
+    $sliste = undef;
+
+       $self->prepare_data_structures($c);
+       $self->serie_cgi2session($c);
+
+    $c->stash->{'template'} = 'serie/edit.tt2';
+    push @{$c->stash->{'cssfiles'}}, 'serie/form.css';
+
+    $self->serie_session2stash($c);
+
+    return 1 unless $c->request->params->{'serie_form_sent'} and $c->request->params->{'do_save'};
+
+    return $self->do_save_serie($c);
+
+}
+
+#-------------------------------------------------------
+
+sub prepare_data_structures : Private {
+
+    my ( $self, $c ) = @_;
+    my $K = ( caller(0) )[3] . "(): ";
+
+    # Liste aller Bücher zusammensammeln
+    my $buchliste = get_booklist( $c, { 'sort_criteria' => [ 'title', 'autoren' ], } );
+
+    $c->stash->{'book_list'} = {};
+    $c->stash->{'book_array_sorted'} = [];
+
+    for my $book ( @$buchliste ) {
+
+        my $buch_id = $book->{'id'};
+        my $title = $book->{'title'};
+        $title .= " (" . join( ", ", @{ $book->{'autoren'} } ) . ")" if ( $book->{'autoren'} and scalar(@{ $book->{'autoren'} }) );
+
+        $c->stash->{'book_list'}{$buch_id} = $title;
+        push @{ $c->stash->{'book_array_sorted'} }, $buch_id;
+
+    }
+    $c->log->debug( get_output_string( $K . "Buchliste: ", $c->stash->{'book_list'} ) );
+    $c->log->debug( get_output_string( $K . "Alle Buch-Id's, sortiert: ", $c->stash->{'book_array_sorted'} ) );
+
+    undef $buchliste;
+
+}
+
+#-------------------------------------------------------
+
 sub do_save_serie : Private {
 
     my ( $self, $c ) = @_;
@@ -341,12 +455,152 @@ sub serie_cgi2session : Private {
         $c->session->{'serie_data_edit'}{'descr'} = '';
     }
 
+    $self->collect_cgi_books( $c ) if $c->session->{'serie_data_edit'}{'id'};
+
     return 1;
 
 }
 
 #-------------------------------------------------------
 
+sub collect_cgi_books : Private {
+
+    my ( $self, $c ) = @_;
+    my $K = ( caller(0) )[3] . "(): ";
+
+    return unless ( $c->stash->{'book_list'} and $c->stash->{'book_array_sorted'} );
+
+    my %Buch = ();
+    my $i = 1;
+    for my $buch_id ( @{$c->session->{'serie_data_edit'}{'book_ids'}} ) {
+        $Buch{$buch_id} = $i;
+        $i++;
+    }
+
+    # Buch zur Serie hinzufuegen
+    if ( $c->request->params->{'zur_serie'} ) {
+        if ( $c->request->params->{'book_to_list'} ) {
+            my $buch_ids = ref( $c->request->params->{'book_to_list'} ) eq 'ARRAY' ? $c->request->params->{'book_to_list'} : [$c->request->params->{'book_to_list'}];
+            $c->log->debug( get_output_string( $K . "Fuege Buch zu Buchserie hinzu: ", $buch_ids ) );
+            for my $buch_id ( @$buch_ids ) {
+                next unless $buch_id;
+                unless ( $Buch{$buch_id} ) {
+                    push @{$c->session->{'serie_data_edit'}{'book_ids'}}, $buch_id;
+                    $Buch{$buch_id} = scalar( @{$c->session->{'serie_data_edit'}{'book_ids'}} );
+                }
+            }
+        }
+        return;
+    }
+
+    # Buch aus Buchserie entfernen
+    if ( $c->request->params->{'von_serie'} ) {
+        if ( $c->request->params->{'book_from_list'} ) {
+            my $buch_ids = ref($c->request->params->{'book_from_list'}) eq 'ARRAY' ? $c->request->params->{'book_from_list'} : [$c->request->params->{'book_from_list'}];
+            $c->log->debug( get_output_string( $K . "Entferne Buch von Buchserie: ", $buch_ids ) );
+            for my $buch_id ( @$buch_ids ) {
+                next unless $buch_id;
+                $i = $Buch{$buch_id};
+                next unless $i;
+                splice( @{$c->session->{'serie_data_edit'}{'book_ids'}}, $i - 1, 1 );
+                $i = 1;
+                %Buch = ();
+                for my $bid ( @{$c->session->{'serie_data_edit'}{'book_ids'}} ) {
+                    $Buch{$bid} = $i;
+                    $i++;
+                }
+            }
+        }
+        return;
+    }
+
+    # Buch in der Buchserie nach oben
+    if ( $c->request->params->{'nach_oben'} ) {
+
+        if ( $c->request->params->{'book_from_list'} ) {
+
+            my $buch_id = ref($c->request->params->{'book_from_list'}) eq 'ARRAY' ? $c->request->params->{'book_from_list'}[0] : $c->request->params->{'book_from_list'};
+            return unless $buch_id;
+
+            $c->log->debug( get_output_string( $K . "Bewege Buch nach oben ", $buch_id ) );
+
+            $c->log->debug( get_output_string( $K . "Bücher vorher: ", $c->session->{'serie_data_edit'}{'book_ids'} ) );
+            my $new_list = [];
+            my $last_book_id = undef;
+            for my $bid ( @{$c->session->{'serie_data_edit'}{'book_ids'}} ) {
+                unless ( $last_book_id ) {
+                    $last_book_id = $bid;
+                    next;
+                }
+                if ( $bid == $buch_id ) {
+                    push @$new_list, $bid;
+                    next;
+                }
+                push @$new_list, $last_book_id;
+                $last_book_id = $bid;
+            }
+            push @$new_list, $last_book_id;
+            $c->session->{'serie_data_edit'}{'book_ids'} = $new_list;
+            $c->log->debug( get_output_string( $K . "Bücher hinterher: ", $c->session->{'serie_data_edit'}{'book_ids'} ) );
+
+        }
+
+        return;
+
+    }
+
+    # Buch in der Buchserie nach unten
+    if ( $c->request->params->{'nach_unten'} ) {
+
+        if ( $c->request->params->{'book_from_list'} ) {
+
+            my $buch_id = ref($c->request->params->{'book_from_list'}) eq 'ARRAY' ? $c->request->params->{'book_from_list'}[0] : $c->request->params->{'book_from_list'};
+            return unless $buch_id;
+
+            $c->log->debug( get_output_string( $K . "Bewege Buch nach unten ", $buch_id ) );
+            $c->log->debug( get_output_string( $K . "Bücher vorher: ", $c->session->{'serie_data_edit'}{'book_ids'} ) );
+
+            my $new_list = [];
+            my $last_book_id = undef;
+
+            for my $bid ( @{$c->session->{'serie_data_edit'}{'book_ids'}} ) {
+
+                $c->log->debug( $K . "Untersuche \$bid " . $bid . " ..." );
+
+                unless ( $last_book_id ) {
+                    $c->log->debug( $K . "\$last_book_id war noch nicht gesetzt." );
+                    if ( $bid == $buch_id ) {
+                        $last_book_id = $bid;
+                        $c->log->debug( $K . "Hebe \$bid " . $bid . " für nächste Runde auf." );
+                        next;
+                    }
+                    push @$new_list, $bid if $bid;
+                    next;
+                }
+
+                unless ( $bid == $buch_id ) {
+                    $c->log->debug( $K . "\$bid != \$buch_id." );
+                    push @$new_list, $bid if $bid;
+                }
+
+                if ( $last_book_id ) {
+                    $c->log->debug( $K . "Hänge \$last_book_id: " . $last_book_id . " an Liste ran." );
+                    push @$new_list, $last_book_id;
+                    $last_book_id = undef;
+                }
+
+            }
+
+            $c->session->{'serie_data_edit'}{'book_ids'} = $new_list;
+            $c->log->debug( get_output_string( $K . "Bücher hinterher: ", $c->session->{'serie_data_edit'}{'book_ids'} ) );
+        }
+
+    }
+
+}
+
+#-------------------------------------------------------
+
 sub serie_session2stash : Private {
 
     my ( $self, $c ) = @_;
@@ -359,6 +613,28 @@ sub serie_session2stash : Private {
     $c->stash->{'serie_edit'}{'name'}  = $c->session->{'serie_data_edit'}{'name'} if $c->session->{'serie_data_edit'}{'name'};
     $c->stash->{'serie_edit'}{'descr'} = $c->session->{'serie_data_edit'}{'descr'};
 
+    if ( $c->session->{'serie_data_edit'}{'id'} and $c->stash->{'book_array_sorted'} ) {
+
+        my %Buch;
+
+        # Buch-Id's eintragen, die zur Serie gehoeren
+        $c->stash->{'books_in_list'} = [];
+        for my $buch_id ( @{$c->session->{'serie_data_edit'}{'book_ids'}} ) {
+            next unless $c->stash->{'book_list'}{$buch_id};
+            push @{$c->stash->{'books_in_list'}}, $buch_id;
+            $Buch{$buch_id} = 1;
+        }
+        $c->log->debug( get_output_string( $K . "Bücher dieser Buchserie: ", $c->stash->{'books_in_list'} ) );
+
+        # Buch-Id's zusammensammeln, die nicht zur Serie gehoeren
+        $c->stash->{'books_not_in_list'} = [];
+        for my $buch_id ( @{$c->stash->{'book_array_sorted'}} ) {
+            push @{$c->stash->{'books_not_in_list'}}, $buch_id unless $Buch{$buch_id};
+        }
+        $c->log->debug( get_output_string( $K . "Bücher, die fehlen: ", $c->stash->{'books_not_in_list'} ) );
+
+    }
+
     $c->stash->{'return_target_serie_save'} = $c->session->{'return_target_serie_save'} || $c->web_path('/serie');
 
     return 1;
index 7380fc1c87711fc535b8e93b3ddd4c072543705c..f06715aa6627630cd4f188f5d8f890930efb553c 100644 (file)
@@ -66,6 +66,11 @@ Folgende benannte Parameter koennen ueber $params uebergeben werden:
 
 =item I<autor_id>: Alle Buecher des Autors mit dieser Id
 
+=item I<sort_criteria>: Eine Array-Ref mit den Spalten, nach denen sortiert wird.
+
+In diesem Fall wird anhand dieses Parameters und nicht des Sitzungsparameters 'book_order_criteria' sortiert
+(Siehe L<collect_sort_criteria>).
+
 =back
 
 Rueckgabe: Eine Array-Ref mit allen Buchtiteln, die den uebergebenen Suchkriterien entsprechen.
@@ -137,15 +142,19 @@ sub get_booklist {
 
     my $storage = $c->stash->{'storage'};
 
-    # Suchparameter zusammensammeln
+    # Such- und Sortierparameter zusammensammeln
     my $b_search_params = {};
     my $order = undef;
+    if ( $params->{'sort_criteria'} and ref($params->{'sort_criteria'}) and ref($params->{'sort_criteria'}) eq 'ARRAY' ) {
+        $order = $params->{'sort_criteria'};
+    } 
 
     if ( $params->{'buch_id'} ) {
         $b_search_params->{'me.id'} = $params->{'buch_id'};
+        $order = undef;
     }
     else {
-        $order = collect_sort_criteria($c)
+        $order = collect_sort_criteria( $c, $order )
     }
 
     # Suchparameter auf undef setzen, falls es keine gibt.
@@ -160,8 +169,17 @@ sub get_booklist {
     $anzahl_buecher = $c->model('Schema::BuchListe')->count( $b_search_params, $other_params );
     $c->log->debug(  get_output_string( $K, "Anzahl gefundene Buecher: ", $anzahl_buecher ) ) if $c->stash->{'debug_level'} >= 2;
 
-    $other_params->{'rows'} = $c->stash->{'list_length'} || 20;
-    $other_params->{'page'} = $params->{'page'} || $c->stash->{'page'} || 1;
+       my $page = to_int( $params->{'page'} ) ? to_int( $params->{'page'} ) : undef;
+       my $rows = undef;
+       $rows = $c->stash->{'list_length'} || 20 if defined $page;
+
+       if ( $page ) {
+               $other_params->{'rows'} = $rows;
+               $other_params->{'page'} = $page;
+       }
+    #$other_params->{'rows'} = $c->stash->{'list_length'} || 20;
+    #$other_params->{'page'} = $params->{'page'} || $c->stash->{'page'} || 1;
 
     my $book_ids = [];
 
@@ -391,7 +409,7 @@ sub get_booklist_sort_columns {
 
 #-----------------------------------------------------------------------------------
 
-=head2 collect_sort_criteria( $c )
+=head2 collect_sort_criteria( $c, [ $criteria ] )
 
 Sammelt aus der Sitzung die Sortierkriterien der Buchliste zusammen und gibt diese verwendbar
 für get_booklist() zurück.
@@ -400,6 +418,9 @@ Die Sortierkriterien müssen in der Sitzung unter dem Schlüssel 'book_order_cri
 als Array-Ref abgelegt sein. Die Elemente der Array-Ref sind entweder Scalare mit den
 Spaltennamen oder Hashrefs der Form [ { 'autoren' => 'desc' }, { 'kategorien' => 'asc' }, ...].
 
+Es kann auch als weiterer Parameter eine Array-Ref mit den Sorierkriterien uebergeben werden.
+In diesem Fall wird der Sitzungsschluessel 'book_order_criteria' nicht beruecksichtigt.
+
 Folgende Spaltennamen dürfen verwendet werden:
 
   - autoren
@@ -420,6 +441,7 @@ Falls in $c->session->{'book_order_criteria'} nichts liegt, wird folgendes
 als Voreinstellung verwendet:
 
     $criteria = [
+        'autoren',
         'title',
     ];
 
@@ -430,13 +452,17 @@ sub collect_sort_criteria {
     my $c = shift;
     my $K = ( caller(0) )[3] . "(): ";
 
+    my $given_criteria = shift;
+
     my $order = [];
 
     my $valid_column = get_booklist_sort_columns();
 
     my $used_column = {};
 
-    my $criteria = $c->session->{'book_order_criteria'};
+    $given_criteria = undef unless ( $given_criteria and ref($given_criteria) and ref($given_criteria) eq 'ARRAY' );
+
+    my $criteria = ( $given_criteria or $c->session->{'book_order_criteria'} );
     unless ( $criteria and ref($criteria) and ref($criteria) eq 'ARRAY' and scalar(@$criteria) ) {
         $criteria = [
             'autoren',
index 5c54733702e856ffa732c67f9ef1d6b609cb9310..5e2e4d143ebfc207b7524b279c6b675ea106e338 100644 (file)
@@ -77,6 +77,11 @@ Die zurueckgegebene Array-Ref hat folgenden Aufbau:
         'name'                 => 'Perry Rhodan',
         'descr'                        => 'Abenteuer des Weltraumspezis',
         'count_books'       => 60,
+        'book_ids'          => [
+            2,
+            22,
+            ...
+        ],
         'books'             => [
                  {
                        'id'                 => 2,
@@ -194,6 +199,7 @@ sub get_serienliste {
     for my $serie ( @$list ) {
 
         $serie->{'books'} = [];
+        $serie->{'book_ids'} = [];
 
         my $sid = $serie->{'id'};
 
@@ -259,6 +265,9 @@ sub get_serienliste {
                ];
 
                for my $book ( $c->model('Schema::Buecher')->search( $search_params, $other_params )->all() ) {
+
+                       push @{ $serie->{'book_ids'} }, $book->id();
+
                        my $buch = {};
                        $buch->{'id'}                 = $book->id();
                        $buch->{'serien_ord_num'}     = $book->get_column('serien_ord_num');
index b6d72ba3252859835b0c8414f9247b4f908e8960..085ea33ac92e60d4aa417a76f2ede38c25fa9106 100644 (file)
@@ -1,4 +1,4 @@
-[%#
+<!-- [%#
     Template fuer Buchangaben
 
     vim: noai : ts=4 fenc=utf-8 filetype=html expandtab :
@@ -8,7 +8,9 @@
 
 -%]
 
-<!-- Book form -->
+Buch-Formular
+
+-->
 [% PROCESS forumcode.tt2 %]
 
 <script type="text/javascript">//<![CDATA[
diff --git a/root/src/serie/delete.tt2 b/root/src/serie/delete.tt2
new file mode 100644 (file)
index 0000000..1bcc4cb
--- /dev/null
@@ -0,0 +1,56 @@
+<!-- [%# 
+
+    Template zum Löschen einer Buchserie
+
+    vim: noai : ts=4 fenc=utf-8 filetype=html expandtab :
+
+    $Id$
+    $URL$
+
+    Übergebene Struktur in [serie]:
+
+    $serie = {
+        'id'                => 1,
+        'name'              => 'Perry Rhodan',
+        'descr'             => 'Abenteuer des Weltraumspezis',
+        'count_books'       => 0,
+        'books'             => [],
+    };
+
+-%]
+
+Buchserie löschen
+
+-->
+
+<form method="post" name="serie_form" action="[% self_url %]">
+<input type="hidden" name="really_delete_serie" value="yes" />
+<input type="hidden" name="delete_serie_id" value="[% serie.id | html %]" />
+
+<table class="ftable" cellspacing="0">
+  <tr>
+    <th colspan="2" class="title">Möchten Sie die Buchserie '[% serie.name | html %]' wirklich löschen?</th>
+  </tr><tr>
+    <td colspan="2" class="empty"></td>
+  </tr><tr>
+    <th>Name der Buchserie:</th>
+    <td>[% serie.name | html %]</td>
+  </tr><tr>
+    <th>Beschreibung:</th>
+    <td>[% serie.descr | html %]</td>
+  </tr><tr>
+    <td colspan="2" class="empty"></td>
+  </tr><tr>
+      <th colspan="2" class="button"><input type="submit" name="do_delete" value="  Löschen  " /></th>
+</table>
+
+[%- IF error_message %]
+<div class="error">
+<span class="bold">Fehler:</span>&nbsp;[% error_message %]
+</div>
+[% END -%]
+
+<div class="back">
+<h2><a href="[% return_target %]">[% 'Zurück' %]</a></h2>
+</div>
+
diff --git a/root/src/serie/delete_success.tt2 b/root/src/serie/delete_success.tt2
new file mode 100644 (file)
index 0000000..db13b5f
--- /dev/null
@@ -0,0 +1,35 @@
+<!-- [%# 
+
+    Template zum Melden des erfolgreichen Löschen einer Buchserie
+
+    vim: noai : ts=4 fenc=utf-8 filetype=html expandtab :
+
+    $Id$
+    $URL$
+
+    Übergebene Struktur in [serie]:
+
+    $serie = {
+        'id'                => 1,
+        'name'              => 'Perry Rhodan',
+        'descr'             => 'Abenteuer des Weltraumspezis',
+        'count_books'       => 0,
+        'books'             => [],
+    };
+
+-%]
+
+Buchserie wurde gelöscht
+
+-->
+
+<div style="text-align: center">
+
+Die Buchserie <b>&quot;[% serie.name | html %]&quot;</b> wurde erfolgreich gelöscht.
+
+</div>
+
+<div class="back">
+<h2><a href="[% return_target %]">[% 'OK' %]</a></h2>
+</div>
+
diff --git a/root/src/serie/edit.tt2 b/root/src/serie/edit.tt2
new file mode 100644 (file)
index 0000000..c1262fa
--- /dev/null
@@ -0,0 +1,17 @@
+<!-- [%#
+    Template zum Ändern der Angaben einer Buchserie
+
+    vim: noai : ts=4 fenc=utf-8 filetype=html expandtab :
+
+    $Id$
+    $URL$
+
+-%]
+[%- autor_form_title = 'Buchserie ändern' %]
+[% autor_form_title %]
+-->
+[% PROCESS serie/form.tt2 %]
+
+<div class="back">
+<h2><a href="[% return_target_serie_save %]">[% 'Zurück' %]</a></h2>
+</div>
index eda2b555f1907867a038c10c8e7799d20a485f4e..36ff7fe4a5c0c87665ea7bd2b7c53a410ea4e1d6 100644 (file)
@@ -7,4 +7,5 @@
 -%]
 /*  Stylesheets Buchserienformular */
 
+[% PROCESS ftable.css %]
 
index 4b202dbc533a8fb57be65300c22fcb945ea583ce..d85e37dfe31a4bf2d301bbee4199a36f5e747e06 100644 (file)
@@ -1,4 +1,4 @@
-[%#
+<!-- [%#
 
     Template für Formular Buchserie
 
@@ -9,7 +9,9 @@
 
 -%]
 
-<!-- Buchserien-Formular -->
+Buchserien-Formular
+
+-->
 
 <form method="post" name="serien_form" action="[% self_url %]">
 <input type="hidden" name="serie_form_sent" value="sent" />
     </tr><tr>
       <th>Beschreibung:</th>
       <td><textarea name="serien_descr" cols="50" rows="10">[% serie_edit.descr | html %]</textarea></td>
-    </tr><tr>
+    [%- IF serie_edit.id %]</tr><tr>
+      <th>Bücher:</th>
+      <td>
+        <table class="two_lists" cellspacing="0">
+          <tr>
+            <th>Verfügbare Bücher</th>
+            <th></th>
+            <th>Bücher dieser Buchserie</th>
+          </tr><tr>
+            <td><select name="book_to_list" size="15">
+                  <option value="">-- Buch zum Hinzufügen wählen --</option>[% FOR book_id IN books_not_in_list %]
+                  <option value="[% book_id %]">[% book_list.$book_id %]</option>
+      [% END %]</select></td>
+            <td><input type="submit" name="zur_serie"  value="&rArr;" class="shift_button" title="Zur Serie hinzufügen" />
+                <br /><br />
+                <input type="submit" name="nach_oben"  value="&uArr;" class="shift_button" title="Buch in der Reihenfolge nach oben" />
+                <br /><br />
+                <br /><br />
+                <input type="submit" name="nach_unten" value="&dArr;" class="shift_button" title="Buch in der Reihenfolge nach unten" />
+                <br /><br />
+                <input type="submit" name="von_serie"  value="&lArr;" class="shift_button" title="Buch von Serie entfernen" />
+            </td>
+            <td><select name="book_from_list" size="15">
+                  <option value="">-- Buch zum Entfernen von der Serie wählen --</option>[% FOR book_id IN books_in_list %]
+                  <option value="[% book_id %]">[% book_list.$book_id %]</option>
+      [% END %]</select></td>
+           </tr></table></td>
+    [% END %]</tr><tr>
       <td colspan="2">&nbsp;</td>
     </tr><tr>
       <th colspan="2" class="button"><input type="submit" name="do_save" value="  OK  " /></th>
index 14dfd2df32a86eddbcadfb3eac3d8ccac4a35802..c1474bb5897b01e60a7564dfa2a0f1bd64f0f082 100644 (file)
@@ -1,4 +1,4 @@
-[%#
+<!-- [%#
 
     Template für neue Buchserie
 
@@ -9,6 +9,8 @@
 
 -%]
 [%- serie_form_title = 'Neue Buchserie' -%]
+[% autor_form_title %]
+-->
 [% PROCESS serie/form.tt2 %]
 
 <div class="back">