Line # Revision Author
1 8 ahitrov@rambler.ru % unless ($error) {
2 <style>
3 .td { font:11px Verdana; padding:2px 4px; }
4 </style>
5 <a name="<% $name %>_anc"></a>
6 <table width="100%" cellspacing="1" cellpadding="0" border="0">
7 <tr><td width="5%">
8 <input type="text" name="<% $name %>" id="<% $name %>_value"
9 value="<% $check %>" style="width:100px;" onkeyup="<% $name %>_changed();">
10 </td><td width="94%" class="td">
11 <input type="text" name="<% $name %>_docname" id="<% $name %>_docname"
12 value="<% ref $doc ? $doc->name : '' | h %>" onclick="lookfor_<% $name %>()"
13 style="width:100%; color:blue; text-decoration:underline;" readonly>
14 </td><td width="1%" class="td"><a href="#top"
15 onclick="search_<% $name %>();">
16 <img src="/contenido/i/lookup-19x19.gif" width="19" height="19" class="bb gb"></a>
17 </td></tr>
18 <tr id="<% $name %>_prev_table" style="display: none;">
19 <td id="<% $name %>_prev_value" class="bb undo" style="padding:3px;"><% $check || '&nbsp;' %></td>
20 <td id="<% $name %>_prev_docname" class="bb undo" style="padding:3px;"><% ref $doc ? $doc->name : '&nbsp;' | h %></td>
21 <td style="padding-left: 3px; vertical-align: top;"><a href="#"
22 onclick="return <% $name %>_undo();" title="Отменить изменения"><img
23 src="/contenido/i/undo-19x19.gif" width="19" height="19" class="bb gb"></a></td>
24 </tr>
25 </table>
26 % } else {
27 <font color="red"><% $error %></font>
28 % $m->comp('/contenido/components/inputs/integer.msn', %ARGS);
29 % }
30
31 <script type="text/javascript">
32 var key_flag_<% $name %> = 1;
33 var <% $name %>_prev_value = document.getElementById('<% $name %>_value').value;
34 var <% $name %>_prev_docname = document.getElementById('<% $name %>_docname').value;
35 %# document.getElementById('<% $name %>_prev_value').innerHTML = <% $name %>_prev_value || '&nbsp;';
36 %# document.getElementById('<% $name %>_prev_docname').innerHTML = <% $name %>_prev_docname || '&nbsp;';
37
38 function search_<% $name %>() {
39 document.getElementById('DocFinder').style.height = 470;
40 document.getElementById('DocFinder').src = '<% $lookup_string %>';
41 }
42
43 function lookfor_<% $name %>() {
44 var id = document.getElementById('<% $name %>_value').value;
45 if (id) {
46 386 ahitrov % if ( exists $prop->{lookup_opts}{class} ) {
47 var Class = '<% $prop->{lookup_opts}{class} %>';
48 8 ahitrov@rambler.ru var Uri = 'document.html?id=' + id + '&class=' + Class;
49 386 ahitrov % } elsif ( exists $prop->{lookup_opts}{table} ) {
50 var Class = '<% $prop->{lookup_opts}{table} %>';
51 var Uri = 'document.html?id=' + id + '&table=' + Class;
52 % }
53 8 ahitrov@rambler.ru var Width = screen.width;
54 var Height = screen.height;
55 window.open(Uri,'Interface','width='+Width+',height='+Height+',top=0,left=0,location=1,menubar=1,resizable=0,scrollbars=1,status=1,titlebar=1,toolbar=1,directories=1,hotkeys=1');
56 }
57 }
58
59 function <% $name %>_changed() {
60 var t = document.getElementById('<% $name %>_prev_table');
61 var v = document.getElementById('<% $name %>_value');
62 if (v.value == <% $name %>_prev_value) {
63 if (t.style.display!='none') {
64 t.style.display = 'none';
65 }
66 return;
67 }
68 if (t.style.display=='none') {
69 t.style.display = '';
70 }
71 }
72
73 function <% $name %>_undo() {
74 document.getElementById('<% $name %>_value').value = <% $name %>_prev_value;
75 document.getElementById('<% $name %>_docname').value = <% $name %>_prev_docname;
76 <% $name %>_changed();
77 return false;
78 }
79
80 </script>
81 <%args>
82 $object
83 $name => undef
84 $check => undef
85 $prop => {}
86 </%args>
87 <%init>
88
89 my ($error, $doc, $lookup_string);
90
91 386 ahitrov if ($prop && ref($prop) && exists $prop->{lookup_opts} && ref $prop->{lookup_opts} eq 'HASH' ) {
92 8 ahitrov@rambler.ru if ( $check ) {
93 $doc = $keeper->get_document_by_id ( $check, %{$prop->{lookup_opts}} );
94 }
95 $lookup_string = '/contenido/find_document.html?nf='.$name.'_docname&vf='.$name.'_value';
96 386 ahitrov while ( my ($param, $value) = each %{ $prop->{lookup_opts} } ) {
97 $lookup_string .= '&'.$param.'='.$value;
98 36 ahitrov@rambler.ru }
99 8 ahitrov@rambler.ru } else {
100 $error = 'Похоже неверное описание lookup_opts в документе';
101 }
102
103 </%init>

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

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

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

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

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