Revision 8 (by ahitrov@rambler.ru, 2010/03/29 11:46:38) Contenido UTF-8 core files
<%ARGS>
	$_URL		=> 'rate/ok.html'
	$id		=> undef
	$vote		=> undef
</%ARGS>
<%ONCE>
	use Apache::Cookie;
	use Rate::Main;
</%ONCE>
<%INIT>
	&abort404() unless ($id);
	&abort404() unless ($vote=~/^[1-5]$/);

	my $document;
	foreach (@{$state->rate->allowed_classes}) {
		$document = $keeper->get_document_by_id($id,class=>$_);
		last if $document;
	}
	&abort404() unless $document;

	my $ip		= $r->header_in("X-Real-IP");
	my (@ip_list)	= split(/\s*,\s*/, $ip);
	my $real_ip	= shift @ip_list;

	my $referer	= $r->header_in("Referer");


	my $cookie_name = $state->rate->cookie;
        my $cookie      = Apache::Cookie->new($r);
        my $cookies     = $cookie->parse;
	my $key		= $cookies->{$cookie_name} ? $cookies->{$cookie_name}->value() : $real_ip;

	#here we have user key and both values
	Rate::Main->write_one($key, $id, $vote, $real_ip, $referer, time());

        $_URL =~ s/^\///;
        $r->header_out("Location", "/".$_URL);
        $r->status(302);
        $r->send_http_header();
        $m->out('<html><body>redirect</body></html>');
        $m->abort();
</%INIT>

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

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

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

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

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