Revision d1809c22
Von Bernd Bleßmann vor fast 3 Jahren hinzugefügt
SL/Controller/Order.pm | ||
---|---|---|
777 | 777 |
sub action_add_item { |
778 | 778 |
my ($self) = @_; |
779 | 779 |
|
780 |
delete $::form->{add_item}->{create_part_type}; |
|
781 |
|
|
780 | 782 |
my $form_attr = $::form->{add_item}; |
781 | 783 |
|
782 | 784 |
return unless $form_attr->{parts_id}; |
... | ... | |
976 | 978 |
$self->render_price_dialog($item); |
977 | 979 |
} |
978 | 980 |
|
981 |
# save the order in a session variable and redirect to the part controller |
|
982 |
sub action_create_part { |
|
983 |
my ($self) = @_; |
|
984 |
|
|
985 |
$::lxdebug->dump(0, "bb: form", $::form); |
|
986 |
my $previousform = $::auth->save_form_in_session(non_scalars => 1); |
|
987 |
|
|
988 |
my $callback = $self->url_for( |
|
989 |
action => 'return_from_create_part', |
|
990 |
type => $self->type, # type is needed for check_auth on return |
|
991 |
previousform => $previousform, |
|
992 |
); |
|
993 |
|
|
994 |
flash_later('info', t8('You are adding a new part while you are editing another document. You will be redirected to your document when saving the new part or aborting this form.')); |
|
995 |
|
|
996 |
my @redirect_params = ( |
|
997 |
controller => 'Part', |
|
998 |
action => 'add', |
|
999 |
part_type => $::form->{add_item}->{create_part_type}, |
|
1000 |
callback => $callback, |
|
1001 |
show_abort => 1, |
|
1002 |
); |
|
1003 |
|
|
1004 |
$self->redirect_to(@redirect_params); |
|
1005 |
} |
|
1006 |
|
|
1007 |
sub action_return_from_create_part { |
|
1008 |
my ($self) = @_; |
|
1009 |
|
|
1010 |
$self->{created_part} = SL::DB::Part->new(id => delete $::form->{new_parts_id})->load if $::form->{new_parts_id}; |
|
1011 |
|
|
1012 |
$::auth->restore_form_from_session(delete $::form->{previousform}); |
|
1013 |
|
|
1014 |
# set item ids to new fake id, to identify them as new items |
|
1015 |
foreach my $item (@{$self->order->items_sorted}) { |
|
1016 |
$item->{new_fake_id} = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000); |
|
1017 |
} |
|
1018 |
|
|
1019 |
$self->recalc(); |
|
1020 |
$self->get_unalterable_data(); |
|
1021 |
$self->pre_render(); |
|
1022 |
|
|
1023 |
# trigger rendering values for second row/longdescription as hidden, |
|
1024 |
# because they are loaded only on demand. So we need to keep the values |
|
1025 |
# from the source. |
|
1026 |
$_->{render_second_row} = 1 for @{ $self->order->items_sorted }; |
|
1027 |
$_->{render_longdescription} = 1 for @{ $self->order->items_sorted }; |
|
1028 |
|
|
1029 |
$self->render( |
|
1030 |
'order/form', |
|
1031 |
title => $self->get_title_for('edit'), |
|
1032 |
%{$self->{template_args}} |
|
1033 |
); |
|
1034 |
|
|
1035 |
} |
|
1036 |
|
|
979 | 1037 |
# load the second row for one or more items |
980 | 1038 |
# |
981 | 1039 |
# This action gets the html code for all items second rows by rendering a template for |
Auch abrufbar als: Unified diff
Auftrags-Controller: neuen Artikel aus Maske heraus anlegen können