Line # Revision Author
1 8 ahitrov@rambler.ru <select name="<% $name %>" id="<% $name %>_select" style="width: 37%;" onchange="<% $name %>_changed();">
2 % if ($prop->{allow_null}) {
3 <option value="" <% defined $check ? '' : 'selected' %>>--- не указано ---</option>
4 % }
5 % for my $sm (@{ $status_map }) {
6 <option value="<% $sm->[0] %>" <% (defined($check) && ($check eq $sm->[0])) ? 'selected' : '' %>><% defined $sm->[1] ? $sm->[1] : "$sm->[0] [unknown value]" %></option>
7 % }
8 </select>
9
10 <table id="<% $name %>_prev_table" style="width: 37%; display: none;" cellspacing="0" cellpadding="0" border="0">
11 <tr>
12 <td width="100%" id="<% $name %>_prev_text" class="bb undo" style="padding: 3px;"></td>
13 <td style="padding-left: 3px; vertical-align: top;"><a href="#" onclick="return <% $name %>_undo();" title="Отменить изменения"><img src="/contenido/i/undo-19x19.gif" width="19" height="19" class="bb gb"></a></td>
14 </tr>
15 </table>
16
17 <script type="text/javascript">
18 var <% $name %>_prev_value = document.getElementById('<% $name %>_select').selectedIndex;
19
20 function <% $name %>_changed() {
21 var t = document.getElementById('<% $name %>_prev_table');
22 if (document.getElementById('<% $name %>_select').selectedIndex==<% $name %>_prev_value) {
23 if (t.style.display!='none') {
24 t.style.display = 'none';
25 }
26 return;
27 }
28 if (t.style.display=='none') {
29 t.style.display = '';
30 }
31 }
32
33 function <% $name %>_undo() {
34 document.getElementById('<% $name %>_select').selectedIndex = <% $name %>_prev_value;
35 <% $name %>_changed();
36 return false;
37 }
38
39 var s = document.getElementById('<% $name %>_select');
40 document.getElementById('<% $name %>_prev_text').innerHTML = s.options.item(s.selectedIndex).innerHTML || '&nbsp;';
41 </script>
42
43 <%ARGS>
44 $name => undef
45 $check => undef
46 $mode => 'view'
47 $prop => {}
48 </%ARGS>
49 <%INIT>
50 # тут надо копию массива... иначе push @{$status_map} ломает default значения в $prop->{cases} или в $keeper->default_status()
51 my $status_map = [ @{ref $prop->{cases} eq 'ARRAY' ? $prop->{cases} : $keeper->default_status()} ];
52 if ($mode eq 'get') {
53 return $status_map;
54 }
55 if (defined $check) {
56 unless (grep {$_->[0] eq $check} @{$status_map}) {
57 push @{$status_map}, [$check, "$check [unknown value]"];
58 }
59 }
60 </%INIT>

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

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

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

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

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