Revision 117
Date:
2011/08/18 19:34:39
Author:
ahitrov
Revision Log:
Interface refreshing
Image loader element interface upgrade phase 1
Image URL loader bug fix
Files:
Legend:
Added
Removed
Modified
utf8/core/comps/contenido/components/class_filter.msn
16
16
<tr>\
17
17
% }
18
18
<td><% $serial %></td>\
19
<td style="font-size:75%;" nowrap><% $document->class_name() %></td>\
20
<td style="font-size:75%;" nowrap align="right"><a href="sections.html?class=<% $document->class() %>&id=<% $id %>&use_section=1">С учетом</a>/<a href="sections.html?class=<% $document->class() %>&id=<% $id %>">Без учета</a> секции</td>\
19
<td nowrap><% $document->class_name() %></td>\
20
<td nowrap align="right"><a href="sections.html?class=<% $document->class() %>&id=<% $id %>&use_section=1">С учетом</a>/<a href="sections.html?class=<% $document->class() %>&id=<% $id %>">Без учета</a> секции</td>\
21
21
</tr>
22
22
% }
23
23
</table>
utf8/core/comps/contenido/components/index_tree.msn
10
10
<& "/contenido/components/__section_tree__.msn", root=>$root, level => $level, mode=>1 &>
11
11
12
12
</table>
13
<div style="font-size:70%;font-family:Tahoma;margin:5px 4px 10px 4px;"><b><a href="section.html?sect_id=<% $root %>">Создать подраздел »</a></b></div>
13
<div style="font-size:11px;font-family:Tahoma;margin:5px 4px 10px 4px;"><b><a href="section.html?sect_id=<% $root %>">Создать подраздел »</a></b></div>
14
14
</fieldset>
15
15
16
16
<%args>
utf8/core/comps/contenido/components/inputs/notetext.msn
22
22
// --->
23
23
</script>
24
24
25
<table border="0" width="95%" style="font-size:70%; font-weight:; font-family:Tahoma;background-color:#dcdcdc;color:#000000;">
25
<table border="0" width="95%" style="font-size:11px; font-weight:; font-family:Tahoma;background-color:#dcdcdc;color:#000000;">
26
26
<tr><td>
27
27
Вставка тегов:<br>
28
28
<a style="color:#000000" href="javascript: insertTags('<br>','')" title="перевод строки"><br></a>
utf8/core/comps/contenido/components/link_browse.msn
32
32
</div>
33
33
% }
34
34
% if ( $total or defined $alpha or defined $search ) {
35
<div style="font-size:75%; font-family:Arial;">
35
<div style="font-size:12px; font-family:Arial;">
36
36
<table border="0" cellspacing="0" cellpadding="2" width="100%" style="margin:4px 0 0; border:1px solid gray;">
37
37
<tr bgcolor="#e0e0e0"><th colspan="4">Поиск по букве: [<a href="?class=<% $class %>" style="font-weight:normal;">сброс фильтра</a>]</th></tr>
38
<tr><td style="font-size:75%; font-family:Arial; padding:2px 4px;">
38
<tr><td style="font-size:12px; font-family:Arial; padding:2px 4px;">
39
39
<& /inc/alpha.msn, alpha=>$alpha, params=>\%ARGS, &>
40
40
</td></tr></table>
41
41
…
…
212
212
% } #- foreach @documents
213
213
</table>
214
214
215
<div style="font-size:75%; font-family:Arial;">
215
<div style="font-size:12px; font-family:Arial;">
216
216
<& /inc/pages_.msn, p=>$p, n=>$n, total=>$total, params=>\%ARGS, &>
217
217
<div style="height:5px"><spacer type="block" height="5"></div>
218
218
</div>
utf8/core/comps/contenido/components/naviline.msn
6
6
% {
7
7
<style>
8
8
<!--
9
div.ftr {font-size:70%; font-family:Tahoma; padding:15px 0;}
9
div.ftr {font-size:11px; font-family:Tahoma; padding:15px 0;}
10
10
div.ftr h3 a {color:#000000;}
11
11
div.ftr h3 {font-size:130%; color:#FFFFFF; margin:0px; padding:8px; background-color:#8093B0;}
12
12
div.ftr i {font-style:normal;color:#777777;}
utf8/core/comps/contenido/components/object_form.msn
99
99
<div><iframe name="DocFinder" id="DocFinder" src="/contenido/find_document.html" frameborder="0"
100
100
marginheight="0" marginwidth="0" width="100%" height="0"></iframe></div>
101
101
<table cellpadding="5" cellspacing="0" border="0"><tr><td>
102
<p><font size=+1><b><nobr>Мультимедиа-объекты</nobr> к <% $PROTOS->{$proto}->[2] %></b></font></p>
102
<p><b style="font-size:15px;"><nobr>Мультимедиа-объекты</nobr> к <% $PROTOS->{$proto}->[2] %></b></p>
103
103
104
104
% for (0..$#properties)
105
105
% {
…
…
271
271
if ($toopi && (ref($toopi) eq 'HASH') && (exists($toopi->{ $object->class }))) {
272
272
%{ $options } = %{ $toopi->{ $object->class } };
273
273
}
274
my $is_multimedia = scalar( grep { $_->{type} =~ /(image|multimedia|audio)/ } $object->structure );
275
my $is_pickup = scalar( grep { $_->{type} =~ /(pickup)/ } $object->structure );
276
274
277
</%INIT>
utf8/core/comps/contenido/components/project.msn
8
8
ul.listtypes li.active {list-style-image:url(/contenido/i/nav-2.gif)}
9
9
</style>
10
10
11
<ul class="listtypes" style="font-size:70%;font-family:Tahoma;text-align:left;">
11
<ul class="listtypes" style="font-size:11px;font-family:Tahoma;text-align:left;">
12
12
<li>Документы:
13
13
<ul>
14
14
% for my $class (sort {$a->class_name cmp $b->class_name} @{ $state->{available_documents} })
utf8/core/comps/contenido/components/set_image.msn
19
19
20
20
my $IMAGE = $default;
21
21
22
if ($SETS->{$field}) {
22
if ($SETS->{$field} || $SETS->{"$field.ext_url"}) {
23
23
24
my $upload = $r->upload($field);
24
my $upload;
25
if ( $SETS->{$field} ) {
26
$upload = $r->upload($field);
27
} elsif ( $SETS->{"$field.ext_url"} && $SETS->{"$field.ext_url"} =~ /^(http|https|ftp):\/\/.*/ ) {
28
$upload = $SETS->{"$field.ext_url"};
29
}
25
30
if ($upload) {
26
31
27
32
my $IMG = $object->_store_image( $upload, attr => $prop->{attr} );
utf8/core/comps/contenido/components/structure.msn
8
8
ul.liststruct li {list-style-image:url(/contenido/i/nav-2-a.gif)}
9
9
</style>
10
10
11
<ul class="liststruct" style="font-size:70%;font-family:Tahoma;text-align:left;">
11
<ul class="liststruct" style="font-size:11px;font-family:Tahoma;text-align:left;">
12
12
<li><a href="options.html?proto=colors">Редактирование цветовых параметров</a>
13
13
<li><a href="options.html?proto=widths">Ширины</a>
14
14
<li><a href="options.html?proto=params">Дополнительные параметры</a>
utf8/core/comps/contenido/components/subsection.msn
11
11
</table>
12
12
% if ($section_access == 2)
13
13
% {
14
<div style="font-size:70%;font-family:Tahoma;margin:5px 4px 10px 4px;"><b><a href="section.html?sect_id=<% $section->id %>">Создать подраздел »</a></b></div>
14
<div style="font-size:11px;font-family:Tahoma;margin:5px 4px 10px 4px;"><b><a href="section.html?sect_id=<% $section->id %>">Создать подраздел »</a></b></div>
15
15
% }
16
<div style="font-size:70%;font-family:Tahoma;margin:5px 4px 10px 4px;"><b><a href="/contenido/?set_context=filter-<% $section->id %>">Установить в качестве фильтра »</a></b></div>
16
<div style="font-size:11px;font-family:Tahoma;margin:5px 4px 10px 4px;"><b><a href="/contenido/?set_context=filter-<% $section->id %>">Установить в качестве фильтра »</a></b></div>
17
17
</fieldset>
18
18
19
19
utf8/core/comps/contenido/components/title.msn
5
5
body {
6
6
background-color: #FFFFFF;
7
7
margin: 0px;
8
font-family: Tahoma, Arial, sans-serif;
8
9
}
9
10
form {
10
11
margin: 0px;
…
…
23
24
24
25
fieldset {padding:6px;margin-bottom:10px;border:2px solid #8093B0;}
25
26
fieldset legend {font-size:8pt;font-weight:bold;font-family:Tahoma;padding:3px 6px 3px 6px;margin-bottom:6px;color:#ffffff;background-color:#8093B0;}
27
28
table { font-size:13px; }
29
input { font-size:12px; }
26
30
27
.tatop {font-size:70%;font-family:Tahoma;color:#ffffff;}
31
.tatop {font-size:11px;font-family:Tahoma;color:#ffffff;}
28
32
.tatop a {color:#ffffff;}
29
.npath {font-size:70%;font-family:Tahoma;padding:8px;}
33
.npath {font-size:11px;font-family:Tahoma;padding:8px;}
30
34
31
.textnorm { font-size:70%; font-family:Tahoma; }
35
.textnorm { font-size:12px; font-family:Tahoma; }
32
36
.input_btn {background-color:#930300;color:#FFFFFF;height:2.4em;}
33
37
34
38
table.tlistdocs { margin-top:10px; margin-bottom:10px; border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9; }
35
39
table.tlistdocs td, table.tlistdocs th { border:1px solid #d9d9d9; border-right:0px; border-bottom:0px; }
36
table.tlistdocs td {font-size:70%;font-family:Tahoma;}
40
table.tlistdocs td {font-size:12px;font-family:Arial;}
37
41
table.tlistdocs table td {border:0px;}
38
42
39
43
table.tform th, table.tform td {
40
font-size: 70%;
44
font-size: 11px;
41
45
font-family: Tahoma;
42
46
text-align: left;
43
47
}
44
48
45
th {font-size:70%;font-family:Tahoma;text-align:left;}
49
th {font-size:11px;font-family:Tahoma;text-align:left;}
46
50
47
h5, .hdr5 {font-size:70%;font-family:Tahoma;font-weight:bold;padding-top:10px;padding-bottom:5px;}
51
h5, .hdr5 {font-size:11px;font-family:Tahoma;font-weight:bold;padding-top:10px;padding-bottom:5px;}
48
52
49
53
50
54
.hiddensect { color:#909090; }
…
…
65
69
}
66
70
.link_string { font: 12px Tahoma; padding:5px 10px; border-bottom:1px solid gray; }
67
71
.link_string p { margin:0; padding:0; }
72
73
.mm_act { background:#d0d0d0; border-top:1px solid gray; border-right:1px solid gray; text-decoration:none; }
68
74
69
75
</style>
70
76
<title>Редакторский интерфейс<% (length($title) > 0) ? " | $title" : "" %></title>
utf8/core/comps/contenido/components/users.msn
7
7
ul.listtypes li.unactive a {color:gray}
8
8
</style>
9
9
10
<ul class="listtypes" style="font-size:70%;font-family:Tahoma;text-align:left;">
10
<ul class="listtypes" style="font-size:11px;font-family:Tahoma;text-align:left;">
11
11
% for my $u (sort { $a->name cmp $b->name } @users) {
12
12
<li class="<% $u->status == 0 ? 'un' : '' %>active"><a href="users.html?login=<% $u->login() %>&class=<% $u->class() %>"><% $u->name() %> (<% $u->login() %>)</a>
13
13
% }
utf8/core/comps/contenido/document_filter_list.html
3
3
<span style="font:11px Verdana;">(<a href="document.html?class=<% $class %>&<% $field %>=<% $id %><% $defaults %>" target="_blank">создать новый</a>)</span></div>
4
4
% if ( ref $docs eq 'ARRAY' && @$docs ) {
5
5
% if ($total > $size) {
6
<div style="font-size:75%; font-family:Arial; text-align:center;">
6
<div style="font-size:12px; font-family:Arial; text-align:center;">
7
7
<& /inc/pages_.msn, p => $p, n => $size, total => $total, params => {%ARGS} &></div>
8
8
% }
9
9
% my @props = sort { $a->{column} <=> $b->{column} } grep { exists $_->{column} } $docs->[0]->required_properties;
utf8/core/comps/contenido/sections.html
80
80
sect_id => $owner->id,
81
81
default => ($owner->default_document_class ? $owner->default_document_class : undef) &>
82
82
% }
83
<div style="font-size:75%; font-family:Arial;">
83
<div style="font-size:12px; font-family:Arial;">
84
84
<table border="0" cellspacing="0" cellpadding="2" width="100%" style="margin:4px 0 0; border:1px solid gray;">
85
85
<tr bgcolor="#e0e0e0"><th colspan="4">Поиск по букве: [<a href="?id=<% $id %>" style="font-weight:normal;">сброс фильтра</a>]</th></tr>
86
<tr><td style="font-size:75%; font-family:Arial; padding:2px 4px;">
86
<tr><td style="font-size:12px; font-family:Arial; padding:2px 4px;">
87
87
<& /inc/alpha.msn, alpha=>$alpha, params=>\%ARGS, &>
88
88
</td></tr></table>
89
89
% ## Форма поиска. Работает при включенном фильтре класса
…
…
126
126
127
127
<& /contenido/components/section_browse.msn, documents => \@documents, columns => \@columns, section => $owner, filter => \%filter_params, %ARGS &>
128
128
129
<div style="font-size:75%; font-family:Arial;">
129
<div style="font-size:12px; font-family:Arial;">
130
130
<& /inc/pages_.msn, p=>$p, n=>$n, total=>$total, href=>'sections.html', params=>\%ARGS, &>
131
131
<div style="height:5px"><spacer type="block" height="5"></div>
132
132
</div>
utf8/core/lib/Contenido/File.pm
173
173
my $fh = get_fh($input);
174
174
return unless ref $fh;
175
175
176
my $size = (stat $fh)[7];
177
176
my $ext;
178
if ( $opts{filename} ) {
179
$ext = $opts{filename} =~ /(jpe?g|gif|png)$/i ? lc $1 : 'bin';
180
} elsif ( not ref $input ) {
177
my $size = 1073741824;
178
if ( not ref $input ) {
181
179
$ext = $input =~ /(jpe?g|gif|png)$/i ? lc $1 : 'bin';
180
if ( scheme($input) eq 'file' ) {
181
$size = (stat $fh)[7];
182
}
182
183
} elsif ( ref $input eq 'Apache::Upload' ) {
183
184
$ext = $input->filename() =~ /(jpe?g|gif|png)$/i ? lc $1 : 'bin';
185
$size = (stat $fh)[7];
186
} elsif ( $opts{filename} ) {
187
$ext = $opts{filename} =~ /(jpe?g|gif|png)$/i ? lc $1 : 'bin';
184
188
}
185
189
$ext ||= 'bin';
186
190
187
191
my $fh_tmp = IO::File->new('>'.$filename_tmp.'.'.$ext) || return;
188
192
my $buffer;
189
193
190
sysread $fh, $buffer, $size;
194
$size = sysread $fh, $buffer, $size;
191
195
syswrite $fh_tmp, $buffer, $size;
192
196
193
197
undef $fh_tmp;
Небольшая справка по веткам
cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.
koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.
utf8 – актуальная ветка, заточенная под UTF-8.
Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.