<& "/contenido/components/header.msn", title => $PROTOS->{$proto}->[0] &>
<% $PROTOS->{$proto}->[0] %>
После каждого нажатия кнопки "Сохранить" в таблицу добавляются 5-ть пустых полей. Будьте внимательны! Изменения тут же отображаются на сайте. Для удаления какого-либо ключа просто сотрите или установите пустым его значение.

В качестве ключа используйте любые допустимые для ключей perl-хэшей символы. По этим ключам Вы потом можете достать эти данные из объекта $project, существующего на каждой странице.

<% $PROTOS->{$proto}->[1] %>

%# ### SECTION ALIAS ############################### % if ($proto eq 's_alias') { % if (ref($toopi) eq 'HASH') % { % for my $p (sort { $a cmp $b } (keys(%{ $toopi }))) % { % } % } % for (1..5) % { % }
Параметр Значение
<% $p %>
%# ### DOCUMENTS ALIAS ############################### <%DOC> % } elsif( $proto eq 'd_alias' ) { В БУДУЮЩЕМ <& "/contenido/components/obj_list_js.msn" &> % if (ref($toopi) eq 'HASH') % { % for my $p (sort { $a cmp $b } (keys(%{ $toopi }))) % { % } % } % for (1..5) % { % }
Параметр Значение
<% $p %> <& "/contenido/components/_show_obj_list.msn", name => 'newoption_value_'.$_, check => $toopi->{$p}, &>
<& "/contenido/components/_show_obj_list.msn" &>
% } else { % if (ref($toopi) eq 'HASH') % { % for my $p (sort { $a cmp $b } (keys(%{ $toopi }))) % { % } % } % for (1..5) % { % }
Параметр Значение
<% $p %>
% }
<%ARGS> $proto => undef $save => undef <%INIT> use vars qw($keeper $request $sect); my $PROTOS = { 'colors' => ['Редактирование цветовых параметров','В этот блок значений заносятся все возможные константы оформления, цветовые константы, элементы стилей и т.д.'], 'widths' => ['Ширины','В этот блок значений занятосятся все управляющие размерами элементов значения. Все ширины, отступы, сепараторы и т.д.'], 'params' => ['Дополнительные параметры','В этот блок значений заносятся произвольные параметры, не попадающие в другие группы.'], 's_alias' => ['Идентификаторы секций','Здесь значениям СЕКЦИЙ (рубрик) присваиваются специальные строковые идентификаторы-ключи. Это делается для того, чтобы привязать секции редакторского интерфейса с программной пользовательской частью'], 'd_alias' => ['Идентификаторы документов','Здесь значениям ДОКУМЕНТОВ присваиваются специальные строковые идентификаторы-ключи. Это делается для того, чтобы привязать ДОКУМЕНТЫ с программной пользовательской частью'], 'redirects' => ['Короткие имена','Здесь определяются редиректы (то есть псевдоимена и их значения). В качестве параметра выступает короткое имя, а в качестве значения - его URI (включая начальный слеш /, index.html указывать не надо).'], }; my $toopi = $project->$proto(); if ( ($save) && (exists($PROTOS->{$proto})) ) { my $N = {}; my $V = {}; foreach my $p (keys(%ARGS)) { if ($p =~ /^option_(.+)$/) { if ( (length($ARGS{'option_'.$1})<1) && (exists($toopi->{$1})) ) { delete $toopi->{$1}; } else { $toopi->{$1} = $ARGS{'option_'.$1}; } } elsif ($p =~ /^newoption_id_(.+)$/) { $N->{$1} = $ARGS{'newoption_id_'.$1}; } elsif ($p =~ /^newoption_value_(.+)$/) { $V->{$1} = $ARGS{'newoption_value_'.$1}; } } foreach my $n (keys(%{ $N })) { next if (length($N->{$n}) < 1); $toopi->{$N->{$n}} = $V->{$n}; } $project->$proto($toopi); $project->store($keeper); } elsif ( $proto eq 's_alias' && not defined $save) { #warn Data::Dumper::Dumper($sect)."\n"; }