Revision 225 (by ahitrov, 2012/06/27 17:59:40) Serialize

%# vim:syn=mason
<%args>
	$object
	$name => undef
	$SETS => undef
</%args>
<%init>
	return undef unless ref $SETS;
	return undef unless $name;

	# Если оно хранится в поле типа integer[] то нам вернется массив, если в data, то ссылка на массив.
	# Просекаем фишку

	my %ids;
	while (my ($k, $v) = each(%$SETS)) {
		next	unless $v;
		if ( $k =~ /^${name}_(\d+)_(delete|id)/ ) {
			my $id = $1;
			my $key = $2;
			if ( ref $v eq 'ARRAY' ) {
				map { $ids{$_}{$key} => $_ } @$v;
			} else {
				$ids{$id}{$key} = $id;
			}
		} elsif ( $k =~ /^${name}_(addanotheritem)/ ) {
			if ( ref $v eq 'ARRAY' ) {
				map { $ids{$_}{id} => $_ } @$v;
			} else {
				$ids{$v}{id} = $v;
			}
		}
	}
	warn "\n\nPickup form ($name)".Dumper(\%ids)."\n"			if $DEBUG;
	my @ids = map { $_->{id} } grep { !exists $_->{delete} } values %ids;
	warn "What to leave ($name)".Dumper(\@ids)."\n\n"			if $DEBUG;

	return \@ids;

</%init>

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

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

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

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

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