Revision 296 (by ahitrov, 2013/03/26 17:59:01) Promosite (anthill) project source
<p>Всего проголосовало: <input type="text" name="<% $name.'_total' %>" value="<% $set->{total}||'0' %>" readonly></p> 
<p>Кол-во вопросов: <input type="text" name="<% $name.'_question_amount' %>" value="<% $set->{question_amount} %>" maxlength=2 size=2></p>

% foreach my $question_id (0..($set->{question_amount}-1)) {
% my $prefix       =$name.'_question'.$question_id.'_';
% my $question_data=$set->{questions}->[$question_id];
<p><b>Вопрос номер <% $question_id+1 %>:</b> 
<& text.msn,  name => $prefix.'question', check => $question_data->{question}, prop=>{rows=>2} &>
<br>Кол-во вариантов ответа: <input type="text" name="<% $prefix.'amount' %>" value="<% $question_data->{amount} %>" maxlength=2 size=2>
<br>Шкалирование ответов (от 1 до ...): <input type="text" name="<% $prefix.'range' %>" value="<% $question_data->{range} %>" maxlength=2 size=2>
<br>Возможность множественного выбора: <input type="checkbox" name="<% $prefix.'allow_multi' %>" value="1" <% $question_data->{allow_multi} ? 'checked':'' %>>
%#<br>Шкалирование ответа: <input type="checkbox" name="<% $prefix.'scale_answer' %>" value="1" <% $question_data->{scale_answer} ? 'checked':'' %>>

% if ($question_data->{amount}) {
<table width=100% border=0>
  <tr><td width=10% nowrap>N ответа</td><td>Random</td><td width=80%>Текст или ID картинки в формате &lt;% pictures_N %&gt;</td><td width=10%>Всего за</td></tr>
% foreach my $answer_id (0..($question_data->{amount}-1)) {
% my $inner_prefix=$prefix.'answer'.$answer_id.'_';
% my $answer_data =$question_data->{choices}->[$answer_id];
  <tr>
    <td width=10% align="center"><% $answer_id+1 %></td>
    <td width=5% align="center"><input type="checkbox" name="<% $inner_prefix.'random' %>"<% $answer_data->{random} ? ' checked' : '' %>></td>
    <td width=75%><input type="text" name="<% $inner_prefix.'choice' %>" value="<% html_escape($answer_data->{choice}) %>" style="width:100%;"></td>
    <td width=10%><input type="text" name="<% $inner_prefix.'votes' %>" value="<% $answer_data->{votes}||'0' %>" readonly></td>
  </tr> 
%}
</table>
%}
<hr>
%}
<p>Кол-во свободных полей: <input type="text" name="<% $name.'_freefields_amount' %>" value="<% $set->{freefields_amount} %>" maxlength=2 size=2></p>
<table width=100% border=0>
  <tr><td width=10% nowrap>N поля</td><td width=90%>Текст</td></tr>
% foreach my $freefield_id (0..($set->{freefields_amount}-1)) {
% my $prefix	   =$name.'_freefield';
% my $question_data=$set->{freefields}->[$freefield_id];
  <tr>
    <td width=10% align="center"><% $freefield_id+1 %></td>
    <td width=90%><input type="text" name="<% $prefix.$freefield_id %>" value="<% html_escape($question_data) %>" style="width:100%;"></td> 
  </tr>
% }
</table>
<hr>
PS: Внимание поддержка многих features из видимых в этой форме остается на template формы и template результатов. И <font color="red">не гарантируется</font> на шаблонах по умолчанию или старых шаблонах.
%#<pre>
%#<% Data::Dumper::Dumper($set) %>
%#</pre>

<%args>
	$name => undef
	$check => undef
</%args>
<%init>
        use vars qw($VAR1);
        my $set={};
        if ($check)
        {
          eval ($check);
          if ($@)
          {
            warn "cannot eval $name with value '$check'";
          }
          else
          {
            $set=$VAR1;
          }
        } 
</%init>

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

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

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

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

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