Revision 609 (by ahitrov, 2016/11/02 14:43:55) Manual document sorting using ajax.
Inline editing type can differ from form editing type.

<% $json %>
<%once>

    use JSON::XS;

</%once>
<%args>

	$id	=> undef
	$aid	=> undef
	$s	=> undef
	$move	=> undef

</%args>
<%init>

    my %result;

    if ( $id && $id =~ /^\d+$/ && $s && $s =~ /^\d+$/ && $move && $move =~ /^(up|down|first|last|before|after)$/ && (!$aid || $aid && $aid =~ /^\d+$/) ) {
	my $section = $keeper->get_section_by_id( $s );
	if ( ref $section ) {
		if ( $section->_sorted ) {
			if ( $section->dmove( $id, $move, $aid ) ) {
				my $position = $section->_get_document_pos( $id );
				warn Dumper( $position );
				if ( ref $position && exists $position->{index} ) {
					if ( exists $position->{before} ) {
						$result{before} = $position->{before};
						$result{success} = 1;
					}
					if ( exists $position->{after} ) {
						$result{after} = $position->{after};
						$result{success} = 1;
					}
					if ( exists $position->{first} ) {
						$result{first} = 1;
						$result{success} = 1;
					}
					if ( exists $position->{last} ) {
						$result{last} = 1;
						$result{success} = 1;
					}
					unless ( exists $result{success} ) {
						$result{error} = Encode::decode('utf-8', 'Ошибка индексации. Для разбора полетов обратитесь к разработчикам');
					}
				} else {
					$result{error} = Encode::decode('utf-8', 'Ошибка индексации. Для разбора полетов обратитесь к разработчикам');
				}
			} else {
				$result{error} = Encode::decode('utf-8', 'Ошибка перемещения. Для разбора полетов обратитесь к разработчикам');
			}
		} else {
			$result{error} = Encode::decode('utf-8', 'В данной секции отключен режим ручной сортировки');
		}
	} else {
		$result{error} = Encode::decode('utf-8', 'Секция не найдена');
	}
    } else {
	$result{error} = Encode::decode('utf-8', 'Переданы неверные параметры');
    }

    my $json = encode_json \%result;

</%init>

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

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

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

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

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