Line # Revision Author
1 8 ahitrov@rambler.ru <!-- Одна картинка -->
2 119 ahitrov <table cellpadding="0" cellspacing="2" border="0" width="100%">
3 8 ahitrov@rambler.ru <tr><td><b><% $rusname %></b> / <font size="-1" color="#888888">name="<% $attr %>"</font> </td></tr>
4 119 ahitrov <tr><td>
5 <div><a href="javascript:void(0)" class="mm_act" id="<% $attr %>_file_prompt" style="padding:0 6px;"
6 onclick="$('#<% $attr %>_url_loader').hide(); $('#<% $attr %>_file_loader').show(); $('#<% $attr %>_file_prompt').addClass('mm_act'); $('#<% $attr %>_url_prompt').removeClass('mm_act'); return false;">file</a>
7 <a href="javascript:void(0)" class="mm_inact" id="<% $attr %>_url_prompt" style="padding:0 6px;"
8 onclick="$('#<% $attr %>_file_loader').hide(); $('#<% $attr %>_url_loader').show(); $('#<% $attr %>_url_prompt').addClass('mm_act'); $('#<% $attr %>_file_prompt').removeClass('mm_act'); $('#<% $attr %>_ext_url')[0].focus(); return false;">url</a></div>
9 <div id="<% $attr %>_file_loader" style="background:#d0d0d0; padding:2px;">
10 <input type="file" name="<% $attr %>" style="width:95%;font-family:arial;font-size:9pt;"></div>
11 <div id="<% $attr %>_url_loader" style="display:none; background:#d0d0d0; padding:2px;">&nbsp;URL:&nbsp;<input
12 id="<% $attr %>_ext_url" type="text" name="<% $attr %>.ext_url" style="width:81%;font-family:arial;font-size:9pt;"></div>
13 </td></tr>
14 8 ahitrov@rambler.ru % if ( exists($IMAGE->{width}) && exists($IMAGE->{height}) && exists($IMAGE->{filename}) )
15 % {
16 <tr><td style="font-size:95%;"><% $IMAGE->{filename} %></td></tr>
17 % my $max_show_width = 200;
18 % my $show_w = ( $IMAGE->{width} > $max_show_width ? $max_show_width : $IMAGE->{width} );
19 % my $show_h = ( $IMAGE->{width} > $max_show_width ? ($max_show_width*$IMAGE->{height}/$IMAGE->{width}) : $IMAGE->{height} );
20 % my $img_path = $state->{images_dir}.'/'.$IMAGE->{filename};
21 <tr><td>
22 % $img_path =~ s|^/{2,}|/|;
23 % my $u1 = URI->new($img_path);
24 % my $path = $u1->path;
25 % $path =~ s|/{2,}|/|g;
26 % $u1->path($path);
27 % $img_path = $u1->canonical;
28 <font size="-1" color="#888888">ШИР x ВЫС: <% $IMAGE->{width} %>x<% $IMAGE->{height} %></font>
29 <img src="<% $img_path %>" alt="<% html_escape($IMAGE->{alt}) %>" width="<% $show_w %>" height="<% $show_h %>"><br>
30 </td></tr>
31 % }
32 %
33
34 % foreach my $iattr (@{ $iattrs })
35 % {
36 560 ahitrov % next if ( !ref $iattr && ($iattr eq 'filename') || ($iattr eq 'width') || ($iattr eq 'height') );
37 % if ( ref $iattr eq 'ARRAY' ) {
38 <tr><td><font size="-1" color="#888888"><% $iattr->[1] %> (<% $iattr->[0] %>):</font></td></tr>
39 <tr><td><input type="text" name="<% $attr %>.<% $iattr->[0] %>" size="60" value="<% html_escape($IMAGE->{$iattr->[0]}) %>" style="width:95%;font-family:arial;font-size:9pt;"></td></tr>
40 % } elsif ( ref $iattr eq 'HASH' ) {
41 <tr><td><font size="-1" color="#888888"><% $iattr->{name} %> (<% $iattr->{attr} %>):</font></td></tr>
42 <tr><td><input type="text" name="<% $attr %>.<% $iattr->{attr} %>" size="60" value="<% html_escape($IMAGE->{$iattr->{attr}}) %>" style="width:95%;font-family:arial;font-size:9pt;"></td></tr>
43 % } elsif ( $iattr eq 'mini' ) {
44 8 ahitrov@rambler.ru <tr><td><font size="-1" color="#888888">name="<% $attr %>_mini"</font> </td></tr>
45 <tr><td><input type="file" name="<% $attr %>_mini" style="width:95%;font-family:arial;font-size:9pt;"></td></tr>
46 226 ahitrov % if (exists($IMAGE->{mini}->{filename}) )
47 % {
48 8 ahitrov@rambler.ru <tr><td style="font-size:95%;"><% $IMAGE->{mini}->{filename} %></td></tr>
49 % my $max_show_width = 200;
50 % my $show_w = ( $IMAGE->{mini}->{width} > $max_show_width ? $max_show_width : $IMAGE->{mini}->{width} );
51 % my $show_h = ( $IMAGE->{mini}->{width} > $max_show_width ? ($max_show_width*$IMAGE->{mini}->{height}/$IMAGE->{mini}->{width}) : $IMAGE->{mini}->{height} );
52 <tr><td>
53 <font size="-1" color="#888888">ШИР x ВЫС: <% $IMAGE->{mini}->{width} %>x<% $IMAGE->{mini}->{height} %></font>
54 <img src="<% $state->{images_dir}.'/'.$IMAGE->{mini}->{filename} %>" alt="<% html_escape($IMAGE->{mini}->{alt}) %>" width="<% $show_w %>" height="<% $show_h %>"><br>
55 </td></tr>
56 226 ahitrov % }
57 8 ahitrov@rambler.ru % } else {
58 <tr><td><font size="-1" color="#888888"><% $ATTRNAMES->{$iattr} %> (<% $iattr %>):</font></td></tr>
59 <tr><td><input type="text" name="<% $attr %>.<% $iattr %>" size="60" value="<% html_escape($IMAGE->{$iattr}) %>" style="width:95%;font-family:arial;font-size:9pt;"></td></tr>
60 226 ahitrov % }
61 % }
62 8 ahitrov@rambler.ru
63 <tr><td><input type="checkbox" name="_delete_image.<% $attr %>" value="1">Удалить<br><br></td></tr>
64 </table>
65
66 <%ARGS>
67
68 $IMAGE => undef
69 $rusname => undef
70 $attr => undef
71 $prop => {}
72
73 </%ARGS>
74 <%DOC>
75
76 Компонента отображает одну картинку...
77
78 </%DOC>
79 <%INIT>
80
81 my $iattrs = $prop->{iattrs};
82 560 ahitrov $iattrs = ['alt'] unless $iattrs;
83 8 ahitrov@rambler.ru
84 my $ATTRNAMES = {
85 'alt' => 'Подпись',
86 'btext' => 'Текст до картинки',
87 'atext' => 'Текст после картинки',
88 'url' => 'Ссылка с картинки',
89 'copyright' => 'Копирайт',
90 };
91
92 </%INIT>

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

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

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

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

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