Revision 121

Date:
2011/08/22 16:08:07
Author:
ahitrov
Revision Log:
Admin Interface redesign
New image control
New AI image attachment function - url saving
Files:

Legend:

 
Added
 
Removed
 
Modified
  • koi8/core/comps/contenido/components/__section_tree__.msn

     
    37 37 my ($statcase) = grep { $_->[0] == $sect->status } @{$statprop->{cases}} if exists $statprop->{cases} && ref $statprop->{cases} eq 'ARRAY';
    38 38 my $statname = $statcase->[1] if ref $statcase;
    39 39 my $html_sect = '<span'.($statstyle).(!$sect->status ? ' class="hiddensect"' : '').'>'.($section_access ? '<a href="'.$href.'"'.$statstyle.'>' : '').$sname.'&nbsp;' . ($section_access ? '</a>' : '') . '&nbsp;'.($sect->status != 1 && $statname ? '&nbsp;<span style="font-size:12px;">('.$statname.')</span>' : '').'</span>';
    40 my $style = ($offset == 1) ? ($viewmode ? ' style="font-size:110%;"':' style="font-size:95%;"') : '';
    40 my $style = ($offset == 1) ? ($viewmode ? ' style="font-size:16px;font-weight:bold;"':' style="font-size:14px;"') : ' style="font-size:12px;"';
    41 41
    42 42 $m->out(<<EOT);
    43 43 <tr>
     
    54 54
    55 55 if ($viewmode)
    56 56 {
    57 my $fhref = '/contenido/?set_context=filter-'.$sect->id();
    58 my $new_doc_class = $sect->default_document_class;
    59 $m->out(qq^\n<td align="center" nowrap><a href="$fhref">���.������</a>^);
    60 $m->out(qq^&nbsp;&nbsp;&nbsp;<a href="document.html?sect_id=$sect->{id}&class=$new_doc_class">���.�����</a>^) if $section_access == 2 and $new_doc_class;
    61 $m->out("</td>");
    57 my $fhref = '/contenido/?set_context=filter-'.$sect->id();
    58 my $new_doc_class = $sect->default_document_class;
    59 $m->out(qq^\n<td align="center" nowrap>^);
    60 $m->out(qq^<a href="section.html?id=$sect->{id}" title="������������� ��������� ������"><img src="/contenido/i/actions/edit.gif" width="15" height="17" align="absmiddle" border="0"></a>&nbsp;&nbsp;&nbsp;^);
    61 $m->out(qq^<a href="$fhref">������</a>^);
    62 $m->out(qq^&nbsp;&nbsp;&nbsp;<a href="document.html?sect_id=$sect->{id}&class=$new_doc_class">���.�����</a>^) if $section_access == 2 and $new_doc_class;
    63 $m->out("</td>");
    62 64 }
    63 65
    64 66 $m->out('</tr>');
  • koi8/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>&nbsp;������</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>&nbsp;������</td>\
    21 21 </tr>
    22 22 % }
    23 23 </table>
  • koi8/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 %>">������� ��������� &raquo;</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 %>">������� ��������� &raquo;</a></b></div>
    14 14 </fieldset>
    15 15
    16 16 <%args>
  • koi8/core/comps/contenido/components/inputs/image.msn

     
    1 1 <!-- ���� �������� -->
    2 <table cellpadding="0" cellspacing="2" border="0">
    2 <table cellpadding="0" cellspacing="2" border="0" width="100%">
    3 3 <tr><td><b><% $rusname %></b> / <font size="-1" color="#888888">name="<% $attr %>"</font> </td></tr>
    4 <tr><td><input type="file" name="<% $attr %>" style="width:95%;font-family:arial;font-size:9pt;"></td></tr>
    4 <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>
    5 14 % if ( exists($IMAGE->{width}) && exists($IMAGE->{height}) && exists($IMAGE->{filename}) )
    6 15 % {
    7 16 <tr><td style="font-size:95%;"><% $IMAGE->{filename} %></td></tr>
     
    16 25 % $path =~ s|/{2,}|/|g;
    17 26 % $u1->path($path);
    18 27 % $img_path = $u1->canonical;
    19 <font size="-1" color="#888888">��� x ���: <% $IMAGE->{width} %>x<% $IMAGE->{height} %></font><br>
    28 <font size="-1" color="#888888">��� x ���: <% $IMAGE->{width} %>x<% $IMAGE->{height} %></font>
    20 29 <img src="<% $img_path %>" alt="<% html_escape($IMAGE->{alt}) %>" width="<% $show_w %>" height="<% $show_h %>"><br>
    21 30 </td></tr>
    22 31 % }
  • koi8/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 &nbsp;&nbsp;<a style="color:#000000" href="javascript: insertTags('<br>','')" title="������� ������">&lt;br&gt;</a>&nbsp;&nbsp;
  • koi8/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">����� �� �����:&nbsp;&nbsp;[<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>
  • koi8/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;}
  • koi8/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> �&nbsp;<% $PROTOS->{$proto}->[2] %></b></font></p>
    102 <p><b style="font-size:15px;"><nobr>�����������-�������</nobr> �&nbsp;<% $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 </%INIT>
    274 my $is_multimedia = scalar( grep { $_->{type} =~ /(image|multimedia|audio)/ } $object->structure );
    275 my $is_pickup = scalar( grep { $_->{type} =~ /(pickup)/ } $object->structure );
    276
    277 </%INIT>
  • koi8/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} })
  • koi8/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} );
  • koi8/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>
  • koi8/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 %>">������� ��������� &raquo;</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 %>">������� ��������� &raquo;</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 %>">���������� � �������� ������� &raquo;</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 %>">���������� � �������� ������� &raquo;</a></b></div>
    17 17 </fieldset>
    18 18
    19 19
  • koi8/core/comps/contenido/components/title.msn

     
    1 1 <html>
    2 2 <head>
    3 <META http-equiv="Content-Type" content="text/html; charset=KOI8-R">
    3 <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
    4 4 <style>
    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>
     
    97 103
    98 104 convert_urls : false,
    99 105
    106 extended_valid_elements : "iframe[src|width|height|name|align|noresize|scrolling|frameBorder|marginWidth|marginHeight]",
    107
    100 108 paste_create_paragraphs : false,
    101 109 paste_create_linebreaks : false,
    102 110 paste_auto_cleanup_on_paste : true,
  • koi8/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 % }
  • koi8/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;
  • koi8/core/comps/contenido/sections.html

     
    82 82 sect_id => $owner->id,
    83 83 default => ($owner->default_document_class ? $owner->default_document_class : undef) &>
    84 84 % }
    85 <div style="font-size:75%; font-family:Arial;">
    85 <div style="font-size:12px; font-family:Arial;">
    86 86 <table border="0" cellspacing="0" cellpadding="2" width="100%" style="margin:4px 0 0; border:1px solid gray;">
    87 87 <tr bgcolor="#e0e0e0"><th colspan="4">����� �� �����:&nbsp;&nbsp;[<a href="?id=<% $id %>" style="font-weight:normal;">����� �������</a>]</th></tr>
    88 <tr><td style="font-size:75%; font-family:Arial; padding:2px 4px;">
    88 <tr><td style="font-size:12px; font-family:Arial; padding:2px 4px;">
    89 89 <& /inc/alpha.msn, alpha=>$alpha, params=>\%ARGS, &>
    90 90 </td></tr></table>
    91 91 % ## ����� ������. �������� ��� ���������� ������� ������
     
    132 132
    133 133 <& /contenido/components/section_browse.msn, documents => \@documents, columns => \@columns, section => $owner, filter => \%filter_params, %ARGS &>
    134 134
    135 <div style="font-size:75%; font-family:Arial;">
    135 <div style="font-size:12px; font-family:Arial;">
    136 136 % if ( $owner->no_count ) {
    137 137 <& /inc/pages_nocount.msn, p=>$p, n=>$n, found=> scalar @documents, href=>'sections.html', params=>\%ARGS, size => 15 &>
    138 138 % } else {
  • koi8/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 – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.