better handling for errors, don't send filler text to server
[scpubgit/stemmatology.git] / stemmaweb / lib / stemmaweb / Controller / Relation.pm
index 8785d6f..0842124 100644 (file)
@@ -313,20 +313,23 @@ sub reading :Chained('text') :PathPart :Args(1) {
                        foreach my $p ( keys %{$c->request->params} ) {
                                if( $p =~ /^morphology_(\d+)$/ ) {
                                        # Set the form on the correct lexeme
+                                       my $morphval = $c->request->param( $p );
+                                       next unless $morphval;
                                        my $midx = $1;
-                                       $c->log->debug( "Fetching lexeme $midx" );
                                        my $lx = $rdg->lexeme( $midx );
-                                       my $strrep = $rdg->language . ' // ' 
-                                               . $c->request->param( $p );
+                                       my $strrep = $rdg->language . ' // ' . $morphval;
                                        my $idx = $lx->has_form( $strrep );
                                        unless( defined $idx ) {
                                                # Make the word form and add it to the lexeme.
-                                               $c->log->debug("Adding new form for $strrep");
                                                try {
                                                        $idx = $lx->add_matching_form( $strrep ) - 1;
                                                } catch( Text::Tradition::Error $e ) {
                                                        $c->response->status( '403' );
                                                        $errmsg = $e->message;
+                                               } catch {
+                                                       # Something else went wrong, probably a Moose error
+                                                       $c->response->status( '403' );
+                                                       $errmsg = 'Something went wrong with the request';      
                                                }
                                        }
                                        $lx->disambiguate( $idx ) if defined $idx;
@@ -336,7 +339,7 @@ sub reading :Chained('text') :PathPart :Args(1) {
                                }
                        }               
                }
-               $m->save( $tradition );
+               $m->save( $rdg );
                $c->stash->{'result'} = $errmsg ? { 'error' => $errmsg }
                        : _reading_struct( $rdg );