X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FRequirementSpecVersion.pm;h=e97d2252b6effc7a020ac2d98390af750144387b;hb=3624b119556731da41e4ad395491ebb067f26565;hp=058884709499da25513e8096cb088b7574f4ee76;hpb=51fec3106e49e1ffc7d6a0a2c577bea8641efbff;p=kivitendo-erp.git diff --git a/SL/Controller/RequirementSpecVersion.pm b/SL/Controller/RequirementSpecVersion.pm index 058884709..e97d2252b 100644 --- a/SL/Controller/RequirementSpecVersion.pm +++ b/SL/Controller/RequirementSpecVersion.pm @@ -17,7 +17,7 @@ use SL::Locale::String; use Rose::Object::MakeMethods::Generic ( - 'scalar --get_set_init' => [ qw(requirement_spec version js versioned_copies) ], + 'scalar --get_set_init' => [ qw(requirement_spec version js) ], ); __PACKAGE__->run_before('check_auth'); @@ -37,13 +37,14 @@ sub action_new { $self->version(SL::DB::RequirementSpecVersion->new); - my $previous_version = $self->requirement_spec->previous_version; - my %differences = $self->calculate_differences(current => $self->requirement_spec, previous => $previous_version); + my $previous_version = $self->requirement_spec->highest_version; if (!$previous_version) { $self->version->description(t8('Initial version.')); } else { + my %differences = $self->calculate_differences(current => $self->requirement_spec, previous => $previous_version); + my @lines; my $fb_diff = $differences{function_blocks}; @@ -59,7 +60,7 @@ sub action_new { $self->version->description(@lines ? join("\n", @lines) : t8('No changes since previous version.')); } - $self->render('requirement_spec_version/new', { layout => 0 }, title => t8('Create a new version')); + $self->render('requirement_spec_version/new', { layout => 0 }); } sub action_create { @@ -71,18 +72,21 @@ sub action_create { return $self->js->error(@errors)->render($self) if @errors; my $db = $self->requirement_spec->db; - my @result = $self->version($self->requirement_spec->create_version(%attributes)); + my @result = $self->requirement_spec->create_version(%attributes); if (!@result) { $::lxdebug->message(LXDebug::WARN(), "Error: " . $db->error); return $self->js->error($::locale->text('Saving failed. Error message from the database: #1'), $db->error)->render($self); } - my $html = $self->render('requirement_spec/_version', { output => 0 }, requirement_spec => $self->requirement_spec); + $self->version($result[0]); + my $version_info_html = $self->render('requirement_spec/_version', { output => 0 }, requirement_spec => $self->requirement_spec); + my $version_list_html = $self->render('requirement_spec_version/list', { output => 0 }); $self->js - ->html('#requirement_spec_version', $html) - ->jqmClose('.jqmWindow') + ->html('#requirement_spec_version', $version_info_html) + ->html('#versioned_copies_list', $version_list_html) + ->dialog->close('#jqueryui_popup_dialog') ->render($self); } @@ -92,7 +96,7 @@ sub action_create { sub check_auth { my ($self, %params) = @_; - $::auth->assert('sales_quotation_edit'); + $::auth->assert('requirement_spec_edit'); } # @@ -114,17 +118,13 @@ sub init_js { $self->js(SL::ClientJS->new); } -sub init_versioned_copies { - my ($self) = @_; - $self->versioned_copies([ - sort { $b->mtime <=> $a->mtime } @{ $self->requirement_spec->versioned_copies } - ]); -} - sub has_item_changed { my ($previous, $current) = @_; croak "Missing previous/current" if !$previous || !$current; - return any { ($previous->$_ || '') ne ($current->$_ || '') } qw(item_type parent_id fb_number title description complexity_id risk_id time_estimation net_sum); + + return 1 if any { ($previous->$_ || '') ne ($current->$_ || '') } qw(item_type fb_number title description complexity_id risk_id); + return 0 if !$current->parent_id; + return $previous->parent->fb_number ne $current->parent->fb_number; } sub has_text_block_changed {