Revision 389 (by ahitrov, 2013/10/28 17:55:00) status_multi control now can get values from the table

% if ( $error ) {
	<font color="red"><% $error %></font>
% } else {
%	foreach my $id ( @values ) {
%		if ( ref $id eq 'ARRAY' && scalar @$id == 2 ) {
%			my $checked = exists $ids{$id->[0]} ? ' checked' : ''; 
<input <% $prop->{readonly} ? 'readonly ' : '' %>type="checkbox" name="<% $name %>_<% $id->[0] %>" value="<% $value %>" <% $checked %>><% $id->[1] %><br>
%		} else {
%			my $checked = exists $ids{$id} ? ' checked' : ''; 
<input <% $prop->{readonly} ? 'readonly ' : '' %>type="checkbox" name="<% $name %>_<% $id %>" value="<% $value %>" <% $checked %>><% $id %><br>
%		}
%	}
% }
<%args>

	$object
	$name	=> undef
	$value	=> 1
	$check	=> undef
	$prop	=> {}

</%args>
<%init>

  my ($objects, $error);

  # Если оно хранится в поле типа integer[] то нам вернется массив, если в data, то ссылка на массив.
  # Просекаем фишку
  my @ids = ref($object->$name) eq 'ARRAY' ? @{ $object->$name } : $object->$name;
  my %ids = map { $_ => 1 } @ids;
  my @values;
  if ( $prop && ref $prop ) {
	if ( exists $prop->{lookup_opts} && ref $prop->{lookup_opts} eq 'HASH' ) {
		@values = $keeper->get_documents (
			%{$prop->{lookup_opts}},
			names	=> 1,
		);
	} elsif ( exists $prop->{values} && ref $prop->{values} eq 'ARRAY' ) {
		@values = @{ $prop->{values} };
	} elsif ( exists $prop->{cases} && ref $prop->{cases} eq 'ARRAY' ) {
		@values = @{ $prop->{cases} };
	}
  } else {
        $error = 'Похоже неверное описание lookup_opts в документе';
  }

  $error = 'Не определен набор значений для поля'	unless @values;

</%init>

Небольшая справка по веткам

cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.

koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.

utf8 – актуальная ветка, заточенная под UTF-8.

Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.