+ my $db = $self->requirement_spec->db;
+ if (!$db->do_transaction(sub {
+ if ($self->copy_source) {
+ $self->requirement_spec($self->copy_source->create_copy(%{ $params }));
+ } else {
+ $self->requirement_spec->save;
+ }
+ })) {
+ $::lxdebug->message(LXDebug::WARN(), "Error: " . $db->error);
+ @errors = ($::locale->text('Saving failed. Error message from the database: #1'), $db->error);
+ return $self->js->error(@errors)->render($self) if $::request->is_ajax;
+
+ $self->requirement_spec->id(undef) if $is_new;
+ flash('error', @errors);
+ return $self->render('requirement_spec/new', title => $title);
+ }
+
+ if ($::request->is_ajax) {
+ my $html = $self->render('requirement_spec/_header', { output => 0 });
+ return $self->invalidate_version
+ ->replaceWith('#requirement-spec-header', $html)
+ ->flash('info', t8('The requirement spec has been saved.'))
+ ->render($self);
+ }