Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision d1809c22

Von Bernd Bleßmann vor fast 3 Jahren hinzugefügt

  • ID d1809c2258dc72d73a6aaf9392bdf290fc5ee289
  • Vorgänger fe4deda7
  • Nachfolger d339e8dc

Auftrags-Controller: neuen Artikel aus Maske heraus anlegen können

Unterschiede anzeigen:

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