Связи этого документа1
% if (%source_links) % {

Добавить связь от данного объекта: % foreach my $class (sort keys %source_links) { % }
<% $source_links{$class} %> (источник)

% } % if (%dest_links) % {

Добавить связь к данному объекту: % foreach my $class (sort keys %dest_links) { % }
<% $dest_links{$class} %> (цель)

% } %if (@links) {

Установленные связи:

% my $last_class; % foreach my $link (@links) { % if ($link->class() ne $last_class) { % $last_class = $link->class(); % } % my $ldocument = $keeper->__get_by_id__($link->dest_class, % id=>$link->dest_id, class=>$link->dest_class, light=>1 ); % next unless ($ldocument); % }
<% $link->class_name() %>
<% $ldocument->name || '[без имени]' %> (<% $ldocument->class_name %>)

%} %if (@source_links) {
Связи ведущие к этому документу

% my $last_class; % foreach my $link (@source_links) { % if ($link->class() ne $last_class) { % $last_class = $link->class(); % } % my $rdocument = $keeper->__get_by_id__($link->source_class, % id=>$link->source_id, class=>$link->source_class, light=>1 ); % next unless ($rdocument); % }
<% $link->class_name() %>
  <% $rdocument->name %> (<% $rdocument->class_name %>)
%}

Примечания
1) Выделенные связи будут удалены. Если Вы хотите удалить какую-нибудь связь, установите галочку напротив нее и нажмите кнопку "удалить".
<%ARGS> $document => undef <%INIT> return unless ref($document); ## && $document->can('id'); my $options = $project->links(); my %source_links=(); my %dest_links=(); my @source_links; my @links; foreach my $class (@{ $state->{available_links} }) { my $link = $class->new($keeper); my $set = $link->available_sources(); next unless ($set and ref($set) eq 'ARRAY' and @$set); my @avaliable_sources = @$set; my $found = 0; foreach my $source (@avaliable_sources) { if ($source eq $document->class()) { $found=1; last; } } next unless $found; $source_links{$class}=$link->class_name(); push @links, $document->links($class); } foreach my $class (@{ $state->{available_links} }) { my $link = $class->new($keeper); my $set = $link->available_destinations(); next unless ($set and ref($set) eq 'ARRAY' and @$set); my @avaliable_dest = @$set; my $found = 0; foreach my $source (@avaliable_dest) { if ($source eq $document->class()) { $found=1; last; } } next unless $found; $dest_links{$class}=$link->class_name(); push @source_links, $document->links($class,'reverse'); } <%DOC> foreach my $class (@{ $state->{available_links} }) { if (ref( $options->{$class}->{source_id} )) { my @avaliable_sources = @{$options->{$class}->{source_id}}; shift @avaliable_sources; my $found = 0; foreach my $source (@avaliable_sources) { if ($source eq $document->class()) { $found=1; last; } } next unless $found; my $link = $class->new($keeper); $allowed_links{$class}=$link->class_name(); } else { my $link = $class->new($keeper); $allowed_links{$class}=$link->class_name(); } }