Revision 296 (by ahitrov, 2013/03/26 17:59:01) Promosite (anthill) project source
%  my $qnum = 1;
Session	DateTime	\
%  foreach my $question ( @{$vstruct->{questions}} ) {
%	if ( $question->{range} ) {
%		foreach my $choice ( @{ $question->{choices} } ) {
<% $choice->{choice} %>	\
%		}
%	} elsif ( $question->{allow_multi} ) {
%		foreach my $choice ( @{ $question->{choices} } ) {
<% $choice->{choice} %>	\
%		}
%	} else {
<% $question->{question} %>	\
%	}
%  }
%  $m->out("\n");
%  foreach my $voice ( @$voices ) {
%	my $vote = JSON::XS->new->decode($voice->voting);
%	my $qnum = 1;
%	my $ctime = Contenido::DateTime->new( postgres => $voice->ctime );
<% $voice->session_id %>	<% $ctime->ymd('-').' '.$ctime->hms %>	\
%	foreach my $question ( @{$vstruct->{questions}} ) {
%		if ( $question->{range} ) {
%			my $chc = 1;
%			foreach my $choice ( @{ $question->{choices} } ) {
<% exists $vote->{$qnum}{$chc} ? $vote->{$qnum}{$chc} : '0' %>	\
%				$chc++;
%			}
%		} elsif ( $question->{allow_multi} ) {
%			my $chc = 1;
%			foreach my $choice ( @{ $question->{choices} } ) {
<% exists $vote->{$qnum}{$chc} ? 1 : 0 %>	\
%				$chc++;
%			}
%		} else {
%			my $chc = 1;
%			my $ans;
%			foreach my $choice ( @{ $question->{choices} } ) {
%				if ( exists $vote->{$qnum}{$chc} ) {
%					$ans = $choice->{choice};
%					last;
%				}
%				$chc++;
%			}
<% $ans ? $ans : 0 %>	\
%		}
%		$qnum++;
%	}
%	$m->out("\n");
%  }
%#<% Dumper($vstruct) %>
<%args>

	$id	=> undef

</%args>
<%init>

  my $prj = $request->{project};
  my $profile = $request->{project_profile};
  my $root = $request->{project_section};
  &abort404	unless $id && $id =~ /^\d+$/;

  my ($document, $voices, $vstruct);
  if ( $id ) {
	$document = $keeper->get_document_by_id ($id,
		class   => 'promosuite::Voting',
		status  => 1,
	);
	&abort404	unless ref $document;
	$vstruct = $document->get_image('voting');
	$voices = $keeper->get_documents(
		class		=> 'promosuite::Voice',
		order_by	=> 'dtime',
		object_id	=> $document->id,
		no_limit	=> 1,
		return_mode	=> 'array_ref',
	);
  }
  return	unless ref $voices eq 'ARRAY' && @$voices;
  $r->header_out('Content-Disposition', 'attachment; filename="result_'.$id.'.txt"');

</%init>

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

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

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

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

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