X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FRequirementSpec.pm;h=6ba1c4e74ad27002a580e8721802278a537595e0;hb=aeaaea529da843a2e2cd9da37e08d468e5700d9c;hp=b22e15f652026f1316fe1f7d12d43c5077f33bce;hpb=6ef53d3f84ed5471a251856b0d4b2ca42e2e3992;p=kivitendo-erp.git diff --git a/SL/Controller/RequirementSpec.pm b/SL/Controller/RequirementSpec.pm index b22e15f65..6ba1c4e74 100644 --- a/SL/Controller/RequirementSpec.pm +++ b/SL/Controller/RequirementSpec.pm @@ -23,6 +23,7 @@ use SL::DB::RequirementSpec; use SL::Helper::CreatePDF qw(); use SL::Helper::Flash; use SL::Locale::String; +use SL::System::Process; use SL::Template::LaTeX; use Rose::Object::MakeMethods::Generic @@ -217,9 +218,16 @@ sub action_revert_to { sub action_create_pdf { my ($self, %params) = @_; + my $keep_temp_files = $::lx_office_conf{debug} && $::lx_office_conf{debug}->{keep_temp_files}; + my $temp_dir = File::Temp->newdir( + "kivitendo-print-XXXXXX", + DIR => SL::System::Process::exe_dir() . "/" . $::lx_office_conf{paths}->{userspath}, + CLEANUP => !$keep_temp_files, + ); + my $base_name = $self->requirement_spec->type->template_file_name || 'requirement_spec'; - my @pictures = $self->prepare_pictures_for_printing; - my %result = SL::Template::LaTeX->parse_and_create_pdf("${base_name}.tex", SELF => $self, rspec => $self->requirement_spec); + my @pictures = $self->prepare_pictures_for_printing($temp_dir->dirname); + my %result = SL::Template::LaTeX->parse_and_create_pdf("${base_name}.tex", SELF => $self, rspec => $self->requirement_spec, userspath => $temp_dir->dirname); unlink @pictures unless ($::lx_office_conf{debug} || {})->{keep_temp_files}; @@ -374,7 +382,7 @@ sub init_includeable_cvar_configs { sub init_include_cvars { my ($self) = @_; - return $::form->{include_cvars} if $::form->{include_cvars} && (ref($::form->{include_cvars}) eq 'HASH'); + return { map { ($_->name => $::form->{"include_cvars_" . $_->name}) } @{ $self->cvar_configs } } if $::form->{_include_cvars_from_form}; return { map { ($_->name => ($_->includeable && $_->included_by_default)) } @{ $self->cvar_configs } }; } @@ -516,6 +524,8 @@ sub prepare_report { %column_defs = (%column_defs, %cvar_column_defs); } + my @cvar_column_form_names = ('_include_cvars_from_form', map { "include_cvars_" . $_->name } @{ $self->includeable_cvar_configs }); + $report->set_options( std_column_visibility => 1, controller_class => 'RequirementSpec', @@ -528,7 +538,7 @@ sub prepare_report { ); $report->set_columns(%column_defs); $report->set_column_order(@columns); - $report->set_export_options(qw(list filter)); + $report->set_export_options(qw(list filter), @cvar_column_form_names); $report->set_options_from_form; $self->models->set_report_generator_sort_options(report => $report, sortable_columns => \@sortable); } @@ -597,11 +607,11 @@ sub render_first_pasted_section_as_list { } sub prepare_pictures_for_printing { - my ($self) = @_; + my ($self, $userspath) = @_; my @files; - my $userspath = File::Spec->rel2abs($::lx_office_conf{paths}->{userspath}); - my $target = "${userspath}/kivitendo-print-requirement-spec-picture-" . Common::unique_id() . '-'; + $userspath ||= SL::System::Process::exe_dir() . "/" . $::lx_office_conf{paths}->{userspath}; + my $target = "${userspath}/kivitendo-print-requirement-spec-picture-" . Common::unique_id() . '-'; foreach my $picture (map { @{ $_->pictures } } @{ $self->requirement_spec->text_blocks }) { my $output_file_name = $target . $picture->id . '.' . $picture->get_default_file_name_extension;