]> Frank Brehm's Git Trees - books.git/commitdiff
Vorbelegungen von Autoren nach deren Neueingabe
authorFrank Brehm <frank@brehm-online.com>
Tue, 26 Jan 2010 23:04:46 +0000 (23:04 +0000)
committerFrank Brehm <frank@brehm-online.com>
Tue, 26 Jan 2010 23:04:46 +0000 (23:04 +0000)
lib/FrBr/Books.pm
lib/FrBr/Books/Controller/Autor.pm
lib/FrBr/Books/Controller/Books.pm
lib/FrBr/Books/Controller/Kategorie.pm
lib/FrBr/Books/Controller/Logout.pm
lib/FrBr/Books/Controller/Ort.pm
lib/FrBr/Books/Controller/Root.pm
lib/FrBr/Books/Controller/Serie.pm
lib/FrBr/Books/Controller/Verlag.pm
root/src/books/form.tt2

index b9595e7600ceb172ef4d974bd282d672160141a1..454cac8412b44c4ad79db273cdc6136952adae52 100644 (file)
@@ -224,6 +224,7 @@ sub auto : Private {
     $c->stash->{'last_login_name'} = $c->session->{'last_login_name'};
 
     $c->log->debug( $K . "Aktuelle Script-URL: '" . $c->stash->{'self_url'} . "'." ) if $c->stash->{'debug_level'} >= 2;
+    $c->log->debug( get_output_string( $K, "Aktueller Request: ", $c->req ) )  if $c->config->{'debug_level'} >= 3;
 
     # Listenlaenge festlegen
     $c->stash->{'list_length'} = $c->session->{'list_length'} || $c->config->{'default_list_length'} || 20;
index c2a99fda6d96270995514575e0ccc39f82f066af..dc420b2e2219c22d43f03184087aee4daaa78e38 100644 (file)
@@ -204,7 +204,7 @@ sub form_new : Path('new') {
 
     return 1 unless $c->request->params->{'autor_form_sent'} and $c->request->params->{'do_save'};
 
-    return $self->save_author($c);
+       return $self->save_author($c);
 
 }
 
@@ -455,6 +455,9 @@ sub save_author : Private {
     delete $c->session->{'autor_data_edit'} if exists $c->session->{'autor_data_edit'};
     delete $c->session->{'return_target_autor_save'} if exists $c->session->{'return_target_autor_save'};
 
+       $c->session->{'last_inserted'} = {} unless $c->session->{'last_inserted'};
+       $c->session->{'last_inserted'}{'autor_id'} = $autor_id;
+
     return 1;
 
 }
index 75d8dca909591d967187a50873c7fac0eb622c3b..8c5d97966baaec28a8f6a53f7cfc52bdec67e73e 100644 (file)
@@ -85,6 +85,7 @@ sub index : Private {
     $c->session->{'return_target_new'} = $c->web_path("/books");
 
     delete $c->session->{'from_book_list'} if exists $c->session->{'from_book_list'};
+       delete $c->session->{'form'}{'buch'} if exists $c->session->{'form'}{'buch'};
 
 }
 
@@ -491,6 +492,16 @@ sub form_new : Path('new') {
         'name' => "Neu"
     };
 
+       # Es wurde auf "Neuer Autor" geklickt.
+       if ( $c->request->params->{'neuer_autor'} ) {
+               $c->session->{'form'} = {} unless $c->session->{'form'};
+               $c->session->{'form'}{'buch'} = {} unless $c->session->{'form'}{'buch'};
+               $c->session->{'form'}{'buch'}{'neuer_autor_angefordert'} = 1;
+               $self->bookdata_cgi2session($c);
+               $c->response->redirect( $c->web_path( '/autor/new', { 'return_target_form' => $c->stash->{'self_url'} } ) );
+               return 1;
+       }
+
     $c->stash->{'return_target'} = $c->session->{'return_target_new'} or $c->web_path("/books");
 
     $c->stash->{'template'} = 'books/new.tt2';
@@ -904,7 +915,6 @@ sub check_formparams : Private {
 
 }
 
-
 #-------------------------------------------------------
 
 sub bookdata_session2stash : Private {
@@ -912,10 +922,16 @@ sub bookdata_session2stash : Private {
     my ( $self, $c ) = @_;
     my $K = ( caller(0) )[3] . "(): ";
 
+    $c->log->debug( $K . "aufgerufen." );
     $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'};
     $c->stash->{'book_edit'}{'id'} = $c->session->{'book_data_edit'}{'id'} if $c->session->{'book_data_edit'}{'id'};
 
+       $c->stash->{'selected_autor_ids'} = {} unless $c->stash->{'selected_autor_ids'};
+       if ( $c->session->{'form'}{'buch'}{'neuer_autor_angefordert'} and $c->session->{'last_inserted'}{'autor_id'} ) {
+               $c->stash->{'selected_autor_ids'}{ $c->session->{'last_inserted'}{'autor_id'} } = 1;
+       }
+
     my %Autor;
 
     $c->stash->{'autor_list_book'} = [];
@@ -989,6 +1005,7 @@ sub bookdata_cgi2session : Private {
     my ( $self, $c ) = @_;
     my $K = ( caller(0) )[3] . "(): ";
 
+    $c->log->debug( $K . "aufgerufen." );
     return 1 unless $c->request->params->{'book_form_sent'};
 
     # Basis anlegen, wenn notwendig
index 3105b13a0658fa68f9ab024e12cb0585bb7bf1b7..ae49aa04c85c4ea79009080f42dad61b6772019b 100644 (file)
@@ -431,11 +431,20 @@ sub do_save_category : Private {
 
     return 1 unless $self->check_formparams($c);
 
+       my $cid = undef;
+
     eval {
-        die "Speichern des Verlags misslungen." unless save_category( $c, $c->stash->{'category_edit'} );
+               $cid = save_category( $c, $c->stash->{'category_edit'} );
     };
     if ( $@ ) {
         $c->stash->{'error_message'} = $@;
+        $c->log->warn( "Fehler beim Speichern der Kategorie: " . $@ );
+        return undef;
+    }
+    unless ( $cid ) {
+        my $msg = "Speichern der Kategorie mißlungen.";
+        $c->log->info( $K . "Fehler beim Speichern: " . $msg );
+        $c->stash->{'error_message'} = $msg;
         return undef;
     }
 
@@ -443,6 +452,9 @@ sub do_save_category : Private {
     delete $c->session->{'category_data_edit'} if exists $c->session->{'category_data_edit'};
     delete $c->session->{'return_target_category_save'} if exists $c->session->{'return_target_category_save'};
 
+       $c->session->{'last_inserted'} = {} unless $c->session->{'last_inserted'};
+       $c->session->{'last_inserted'}{'kategorie_id'} = $cid;
+
     return 1;
 
 }
index be3ef27d6b44be3819f7726e3fb875cedc0a3fc1..8d4f8a3d1860805d747faffb0cd5f11c36415e1a 100644 (file)
@@ -46,7 +46,9 @@ sub index : Private {
         books_in_other_list
         category_data_edit
         delete_book_id
+        form
         from_book_list
+        last_inserted
         list_length
         ort_data_edit
         return_target_autor_save
@@ -62,7 +64,7 @@ sub index : Private {
         verlag_data_edit
     );
     for my $key (@Keys) {
-        delete $c->session->{$key} if $c->session->{$key};
+        delete $c->session->{$key} if exists $c->session->{$key};
     }
 
     $c->stash->{'login_action'} = 'none';
index ff6d18d04622cf8f3c094afc12019f5aa73e4463..791b2f8afa86ca268a26185328d4c0a18189faea 100644 (file)
@@ -436,11 +436,14 @@ sub do_save_ort : Private {
 
     return 1 unless $self->check_formparams($c);
 
+    my $oid = undef;
+
     eval {
-        die "Speichern des Aufbewahrungsortes mißlungen." unless save_ort( $c, $c->stash->{'ort_edit'} );
+        die "Speichern des Aufbewahrungsortes mißlungen." unless $oid = save_ort( $c, $c->stash->{'ort_edit'} );
     };
     if ( $@ ) {
         $c->stash->{'error_message'} = $@;
+        $c->log->warn( "Fehler beim Speichern des Aufbewahrungsortes: " . $@ );
         return undef;
     }
 
@@ -448,6 +451,9 @@ sub do_save_ort : Private {
     delete $c->session->{'ort_data_edit'} if exists $c->session->{'ort_data_edit'};
     delete $c->session->{'return_target_ort_save'} if exists $c->session->{'return_target_ort_save'};
 
+       $c->session->{'last_inserted'} = {} unless $c->session->{'last_inserted'};
+       $c->session->{'last_inserted'}{'orts_id'} = $oid;
+
     return 1;
 
 }
index 9e57f1a593ce7d120be7e82f5a73944fc6177727..b1e1b2f3533df0bafefeecd402a5759d4f9bd349 100644 (file)
@@ -69,6 +69,10 @@ sub end : ActionClass('RenderView') {
     }
     $c->log->debug( get_output_string( $K, "Menue-Pfad: ", $c->stash->{'menu_path'} ) ) if $c->stash->{'debug_level'};
 
+    delete $c->stash->{'storage'} if exists $c->stash->{'storage'};
+    $c->log->debug( get_output_string( $K, "Aktuelle Session: ", $c->session ) )  if $c->config->{'debug_level'} >= 3;
+    $c->log->debug( get_output_string( $K, "Aktueller Stash: ", $c->stash ) )  if $c->config->{'debug_level'} >= 3;
+
 }
 
 =head1 AUTHOR
index c8ebc7a028f44a93fd22aced605c25dfd47708f6..dd7164970e1b85711a43276368c3830a2672a76d 100644 (file)
@@ -463,11 +463,15 @@ sub do_save_serie : Private {
 
     return 1 unless $self->check_formparams($c);
 
+    my $sid  = undef;
+
     eval {
-        die "Speichern der Buchserie mißlungen." unless save_serie( $c, $c->stash->{'serie_edit'} );
+               $sid = save_serie( $c, $c->stash->{'serie_edit'} );
+        die "Speichern der Buchserie mißlungen." unless $sid;
     };
     if ( $@ ) {
         $c->stash->{'error_message'} = $@;
+        $c->log->warn( "Fehler beim Speichern der Buchserie: " . $@ );
         return undef;
     }
 
@@ -475,6 +479,9 @@ sub do_save_serie : Private {
     delete $c->session->{'serie_data_edit'} if exists $c->session->{'serie_data_edit'};
     delete $c->session->{'return_target_serie_save'} if exists $c->session->{'return_target_serie_save'};
 
+       $c->session->{'last_inserted'} = {} unless $c->session->{'last_inserted'};
+       $c->session->{'last_inserted'}{'serien_id'} = $sid;
+
     return 1;
 
 }
index cd6a72a9e1a3fc3f7e4bee102382bf390779e9fb..fb355bbbd8d0994f03746e5b28036c23369d11ee 100644 (file)
@@ -431,11 +431,20 @@ sub do_save_verlag : Private {
 
     return 1 unless $self->check_formparams($c);
 
+       my $vid = undef;
+
     eval {
-        die "Speichern des Verlags misslungen." unless save_verlag( $c, $c->stash->{'verlag_edit'} );
+               $vid = save_verlag( $c, $c->stash->{'verlag_edit'} );
     };
     if ( $@ ) {
         $c->stash->{'error_message'} = $@;
+        $c->log->warn( "Fehler beim Speichern des Verlags: " . $@ );
+        return undef;
+    }
+    unless ( $vid ) {
+        my $msg = "Speichern des Verlags mißlungen.";
+        $c->log->info( $K . "Fehler beim Speichern: " . $msg );
+        $c->stash->{'error_message'} = $msg;
         return undef;
     }
 
@@ -443,6 +452,9 @@ sub do_save_verlag : Private {
     delete $c->session->{'verlag_data_edit'} if exists $c->session->{'verlag_data_edit'};
     delete $c->session->{'return_target_verlag_save'} if exists $c->session->{'return_target_verlag_save'};
 
+       $c->session->{'last_inserted'} = {} unless $c->session->{'last_inserted'};
+       $c->session->{'last_inserted'}{'verlags_id'} = $vid;
+
     return 1;
 
 }
index 085ea33ac92e60d4aa417a76f2ede38c25fa9106..25e4c39c6d8581867b453fad8a594779753d233c 100644 (file)
@@ -15,11 +15,6 @@ Buch-Formular
 
 <script type="text/javascript">//<![CDATA[
 
-function goto_new_author() {
-    var target = '[% Catalyst.web_path( '/autor/new', { 'return_target_form' => self_url } ) %]';
-    window.location.href = target;
-}
-
 function goto_new_verlag() {
     var target = '[% Catalyst.web_path( '/verlag/new', { 'return_target_form' => self_url } ) %]';
     window.location.href = target;
@@ -61,11 +56,11 @@ function goto_new_ort() {
           </tr><tr>
             <td><select name="autor_not" size="12" multiple>
         <option value="">-- Autor oder Autoren wählen --</option>[% FOR autor_id IN autor_list_no %]
-        <option value="[% autor_id %]">[% autor_list.$autor_id %]</option>
+        <option value="[% autor_id %]"[% IF selected_autor_ids.$autor_id %] selected="selected"[% END %]>[% autor_list.$autor_id %]</option>
       [% END %]</select></td>
             <td><input type="submit" name="wird_autor"  value="&rArr;" class="shift_button" title="Wird Autor" /><br /><br />
                 <input type="submit" name="nach_oben"   value="&uArr;" class="shift_button" title="Autor in der Reihenfolge nach oben" /><br /><br />
-                <input type="button" name="neuer_autor" value="*"      class="shift_button" title="Neuer Autor" onclick="goto_new_author();" /><br /><br />
+                <input type="submit" name="neuer_autor" value="*"      class="shift_button" title="Neuer Autor" /><br /><br />
                 <input type="submit" name="nach_unten"  value="&dArr;" class="shift_button" title="Autor in der Reihenfolge nach unten" /><br /><br />
                 <input type="submit" name="entf_autor"  value="&lArr;" class="shift_button" title="Autor entfernen" />
             </td>