1 package SL::Controller::RecordLinks;
5 use parent qw(SL::Controller::Base);
8 use SL::DB::DeliveryOrder;
10 use SL::DB::PurchaseInvoice;
11 use SL::Locale::String;
13 __PACKAGE__->run_before('check_object_params', only => [ qw(ajax_list ajax_delete) ]);
19 sub action_ajax_list {
23 my $model = 'SL::DB::' . $::form->{object_model};
24 my $object = $model->new(id => $::form->{object_id})->load || die $::locale->text("Record not found");
25 my $linked_records = $object->linked_records(direction => 'both');
26 my $output = SL::Presenter->get->grouped_record_list(
28 with_columns => [ qw(record_link_direction) ],
29 edit_record_links => 1,
30 object_model => $::form->{object_model},
31 object_id => $::form->{object_id},
33 $self->render(\$output, { layout => 0, process => 0 });
37 $self->render('generic/error', { layout => 0 }, label_error => $@);
41 sub action_ajax_delete {
44 my $prefix = $::form->{form_prefix} || 'record_links';
45 foreach my $str (@{ $::form->{"${prefix}_delete"} || [] }) {
46 my ($from_table, $from_id, $to_table, $to_id) = split m/__/, $str, 4;
50 next if !$from_table || !$from_id || !$to_table || !$to_id;
52 # $::lxdebug->message(0, "INSERT INTO record_links (from_table, from_id, to_table, to_id) VALUES ('${from_table}', ${from_id}, '${to_table}', ${to_id});");
54 SL::DB::Manager::RecordLink->delete_all(where => [
55 from_table => $from_table,
57 to_table => $to_table,
62 $self->action_ajax_list;
69 sub check_object_params {
72 return $::form->{object_id} && ($::form->{object_model} =~ m/^(?:Order|DeliveryOrder|Invoice|PurchaseInvoice)$/);