X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FRequirementSpecTextBlock.pm;h=f52cbc8a16c693debbfe8c812599dfbc15762a59;hb=76105d1596c47e6883d527d21de683baa65c9c90;hp=7d224f6e226aa2ff72ec594c49add3a94bfb623c;hpb=b28b0afc6b991b5050ea39f66fd1870ca27f400f;p=kivitendo-erp.git diff --git a/SL/Controller/RequirementSpecTextBlock.pm b/SL/Controller/RequirementSpecTextBlock.pm index 7d224f6e2..f52cbc8a1 100644 --- a/SL/Controller/RequirementSpecTextBlock.pm +++ b/SL/Controller/RequirementSpecTextBlock.pm @@ -12,6 +12,7 @@ use SL::ClientJS; use SL::Clipboard; use SL::Controller::Helper::RequirementSpec; use SL::DB::RequirementSpec; +use SL::DB::RequirementSpecPicture; use SL::DB::RequirementSpecPredefinedText; use SL::DB::RequirementSpecTextBlock; use SL::Helper::Flash; @@ -19,11 +20,11 @@ use SL::Locale::String; use Rose::Object::MakeMethods::Generic ( - scalar => [ qw(text_block) ], + scalar => [ qw(text_block picture) ], 'scalar --get_set_init' => [ qw(predefined_texts js) ], ); -__PACKAGE__->run_before('load_requirement_spec_text_block', only => [qw(ajax_edit ajax_update ajax_delete ajax_flag dragged_and_dropped ajax_copy)]); +__PACKAGE__->run_before('load_requirement_spec_text_block', only => [qw(ajax_edit ajax_update ajax_delete ajax_flag dragged_and_dropped ajax_copy ajax_add_picture)]); # # actions @@ -99,6 +100,7 @@ sub action_ajax_create { my $node = $self->presenter->requirement_spec_text_block_jstree_data($self->text_block); $self->invalidate_version + ->hide('#text-block-list-empty') ->replaceWith('#' . $::form->{form_prefix} . '_form', $html) ->jstree->create_node('#tree', $insert_after ? ('#tb-' . $insert_after, 'after') : ('#tb-' . ($attributes->{output_position} == 0 ? 'front' : 'back'), 'last'), $node) ->jstree->select_node('#tree', '#tb-' . $self->text_block->id); @@ -258,6 +260,95 @@ sub action_ajax_paste { ->render($self); } +# +# actions for pictures +# + +sub action_ajax_add_picture { + my ($self) = @_; + + $self->picture(SL::DB::RequirementSpecPicture->new); + $self->render('requirement_spec_text_block/_picture_form', { layout => 0 }); +} + +sub action_ajax_edit_picture { + my ($self) = @_; + + $self->picture(SL::DB::RequirementSpecPicture->new(id => $::form->{picture_id})->load); + $self->text_block($self->picture->text_block); + $self->render('requirement_spec_text_block/_picture_form', { layout => 0 }); +} + +sub action_ajax_create_picture { + my ($self, %params) = @_; + + my $attributes = $::form->{ $::form->{form_prefix} } || die "Missing attributes"; + $attributes->{picture_file_name} = ((($::form->{ATTACHMENTS} || {})->{ $::form->{form_prefix} } || {})->{picture_content} || {})->{filename}; + my @errors = $self->picture(SL::DB::RequirementSpecPicture->new(%{ $attributes }))->validate; + + return $self->js->error(@errors)->render($self) if @errors; + + $self->picture->save; + + $self->text_block($self->picture->text_block); + my $html = $self->render('requirement_spec_text_block/_text_block_picture', { output => 0 }, picture => $self->picture); + + $self->invalidate_version + ->dialog->close('#jqueryui_popup_dialog') + ->append('#text-block-' . $self->text_block->id . '-pictures', $html) + ->show('#text-block-' . $self->text_block->id . '-pictures') + ->render($self); +} + +sub action_ajax_update_picture { + my ($self) = @_; + + my $attributes = $::form->{ $::form->{form_prefix} } || die "Missing attributes"; + $self->picture(SL::DB::RequirementSpecPicture->new(id => $::form->{id})->load); + + if (!$attributes->{picture_content}) { + delete $attributes->{picture_content}; + } else { + $attributes->{picture_file_name} = ((($::form->{ATTACHMENTS} || {})->{ $::form->{form_prefix} } || {})->{picture_content} || {})->{filename}; + } + + $self->picture->assign_attributes(%{ $attributes }); + my @errors = $self->picture->validate; + + return $self->js->error(@errors)->render($self) if @errors; + + $self->picture->save; + + $self->text_block($self->picture->text_block); + my $html = $self->render('requirement_spec_text_block/_text_block_picture', { output => 0 }, picture => $self->picture); + + $self->invalidate_version + ->dialog->close('#jqueryui_popup_dialog') + ->replaceWith('#text-block-picture-' . $self->picture->id, $html) + ->show('#text-block-' . $self->text_block->id . '-pictures') + ->render($self); +} + +sub action_ajax_delete_picture { + my ($self) = @_; + + $self->picture(SL::DB::RequirementSpecPicture->new(id => $::form->{id})->load); + $self->picture->delete; + $self->text_block(SL::DB::RequirementSpecTextBlock->new(id => $self->picture->text_block_id)->load); + + $self->invalidate_version + ->remove('#text-block-picture-' . $self->picture->id) + ->action_if(!@{ $self->text_block->pictures }, 'hide', '#text-block-' . $self->text_block->id . '-pictures') + ->render($self); +} + +sub action_ajax_download_picture { + my ($self) = @_; + + $self->picture(SL::DB::RequirementSpecPicture->new(id => $::form->{id})->load); + $self->send_file(\$self->picture->{picture_content}, type => $self->picture->picture_content_type, name => $self->picture->picture_file_name); +} + # # filters #