Revision 3 (by ahitrov@rambler.ru, 2010/03/24 15:19:32) |
The CORE
|
<%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 – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.