X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FRequirementSpecVersion.pm;h=e225d77b388c37c250c4d62fc82db77ebb3f9ce0;hb=3a7079558f44e4b80670327e70b565c8caf52a0e;hp=058884709499da25513e8096cb088b7574f4ee76;hpb=51fec3106e49e1ffc7d6a0a2c577bea8641efbff;p=kivitendo-erp.git diff --git a/SL/Controller/RequirementSpecVersion.pm b/SL/Controller/RequirementSpecVersion.pm index 058884709..e225d77b3 100644 --- a/SL/Controller/RequirementSpecVersion.pm +++ b/SL/Controller/RequirementSpecVersion.pm @@ -7,7 +7,6 @@ use parent qw(SL::Controller::Base); use Carp; use List::MoreUtils qw(any); -use SL::ClientJS; use SL::DB::Customer; use SL::DB::Project; use SL::DB::RequirementSpec; @@ -17,7 +16,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) ], ); __PACKAGE__->run_before('check_auth'); @@ -37,13 +36,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 +59,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 { @@ -68,22 +68,25 @@ sub action_create { my %attributes = %{ delete($::form->{rs_version}) || {} }; my @errors = SL::DB::RequirementSpecVersion->new(%attributes, version_number => 1)->validate; - return $self->js->error(@errors)->render($self) if @errors; + return $self->js->error(@errors)->render 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); + return $self->js->error($::locale->text('Saving failed. Error message from the database: #1'), $db->error)->render; } - 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') - ->render($self); + ->html('#requirement_spec_version', $version_info_html) + ->html('#versioned_copies_list', $version_list_html) + ->dialog->close('#jqueryui_popup_dialog') + ->render; } # @@ -92,7 +95,7 @@ sub action_create { sub check_auth { my ($self, %params) = @_; - $::auth->assert('sales_quotation_edit'); + $::auth->assert('requirement_spec_edit'); } # @@ -109,22 +112,13 @@ sub init_version { $self->version(SL::DB::RequirementSpecVersion->new(id => $::form->{id})->load) if $::form->{id}; } -sub init_js { - my ($self, %params) = @_; - $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 {