Line # Revision Author
1 296 ahitrov % if ( $m->comp_exists ("/comps/$prj/header.msn") ) {
2 <& "/comps/$prj/header.msn" &>
3 % } else {
4 <& "/comps/header.msn" &>
5 % }
6
7 <table border="0" cellspacing="0" cellpadding="10" width="100%">
8 <tr valign="top">
9 <td width="80%">
10
11 <a name="members"></a>
12 %#<div class="mt10"></div>
13 <table border="0" cellspacing="0" cellpadding="0" width="100%" class="infoblock" style="z-index:1">
14 <tr>
15 <td class="cc" width="100%">
16
17 <div class="text">
18 <h2><% $voting->name %></h2>
19 % if ( $voting->status == 2 ) {
20 <p><& /inc/text_format.msn, doc => $voting, field => 'finished' &></p>
21 % } elsif ( $ok ) {
22 <p><& /inc/text_format.msn, doc => $voting, field => 'submit' &></p>
23 % } else {
24 <p><& /inc/text_format.msn, doc => $voting, field => 'abstr' &></p>
25 % }
26
27
28
29 <script language="Javascript">
30 <!--
31 function check_form () {
32 Form = document.forms.contest;
33 % foreach my $i ( 1 .. $quest->{freefields_amount} ) {
34 if ( !Form.freefield_<% $i %>.value ) {
35 alert ('Вы не заполнили поле "<% $quest->{freefields}->[$i-1] %>"');
36 return false;
37 }
38 % }
39 return true;
40 }
41 //-->
42 </script>
43
44 % if ( !$ok && $voting->status == 1 ) {
45 % if ( ref $quest && $quest->{question_amount} ) {
46 <form name="contest" action="contest.html" method="post" onsubmit="return check_form()">
47 % my $i = 0;
48 % foreach my $question ( @{ $quest->{questions} } ) {
49 <p><strong><% ++$i %>. <% $question->{question} %></strong><br>
50 % if ( $question->{amount} ) {
51 % my $j = 0;
52 % foreach my $choice ( @{ $question->{choices} } ) {
53 <input type="Radio" value="<% ++$j %>" name="r<% $i %>"><label><% $choice->{choice} %></label><br>
54 % }
55 % }
56 % }
57 % }
58 <p>
59 % if ( ref $quest && $quest->{freefields_amount} ) {
60 <table cellpadding="0" cellspacing="10" border="0">
61 % my $i = 0;
62 % foreach my $free ( @{ $quest->{freefields} } ) {
63 <tr>
64 <td><% $free %></td>
65 <td><input type="text" value="" name="freefield_<% ++$i %>" size="23" maxlength="300"></td>
66 </tr>
67 % }
68 % if ( $voting->status == 1 ) {
69 <tr>
70 <td></td>
71 <td><input type="submit" value="Ответить" >
72 <input type="hidden" name="filled" value="Ответить">
73 </td>
74 </tr>
75 % }
76 </table>
77 % }
78
79 </form>
80 % }
81
82
83 </div>
84
85 </td>
86 </tr>
87 </table>
88 </td>
89
90 % ### Правая колонка
91 % ###############################################
92 <td width="20%">
93 % ### Блок внешнего анонса
94 % ################################
95 % if ( $m->comp_exists ("/comps/$prj/block_contest.msn") ) {
96 <& "/comps/$prj/block_contest.msn" &>
97 % } else {
98 <& "/comps/block_contest.msn" &>
99 % }
100 % ### /Блок внешнего анонса
101 %
102 %
103
104 %#<& /www/comps/block_translation.msn &>
105
106 %#<& /www/comps/block_ticket.msn &>
107
108 %#<& /www/comps/block_cover.msn &>
109
110
111 <div class="mt10"></div>
112
113
114 </td></tr>
115 </table>
116
117 % ### Футер
118 % ##############################################
119 % if ( $m->comp_exists ("/comps/$prj/footer.msn") ) {
120 <& "/comps/$prj/footer.msn" &>
121 % } else {
122 <& "/comps/footer.msn" &>
123 % }
124 % ### /Футер
125
126 %#<pre><% Dumper($quest) %></pre>
127 <%once>
128 my %answers = (
129 1 => 'a',
130 2 => 'b',
131 3 => 'c',
132 4 => 'b',
133 5 => 'a',
134 6 => 'c',
135 );
136 </%once>
137 <%args>
138
139 $filled => undef
140 $name => undef
141 $phone => undef
142 $email => undef
143 $ok => undef
144
145 </%args>
146 <%init>
147
148 my $prj = $request->{project};
149 my $profile = $request->{project_profile};
150 my $root = $request->{project_section};
151
152 my ($voting) = $keeper->get_documents (
153 s => $root->id,
154 class => 'promosuite::Voting',
155 status => [1,2],
156 limit => 1,
157 );
158 &abort404 unless ref $voting;
159 my $quest = $voting->get_image('voting');
160
161 if ($filled) {
162 $m->comp ( '/subs/count_results.msn',
163 voting => $voting,
164 quest => $quest,
165 %ARGS );
166
167 $r->header_out("Location", "contest.html?ok=1");
168 $r->status(302);
169 $r->send_http_header();
170 $m->abort();
171 }
172
173 </%init>

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

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

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

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

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