Revision 275

Date:
2013/02/07 18:20:04
Author:
ahitrov
Revision Log:
Lookup multi bug - multiple deletion didn't funtion
Links block now can be used in plugins. It returns BACK to the caller, not to /contenido/
Files:

Legend:

 
Added
 
Removed
 
Modified
  • utf8/core/comps/contenido/components/document_links_block.msn

     
    9 9 % }
    10 10 <br clear="all">
    11 11 <div style="padding:4px 0 2px;"><a target="_top"
    12 href="link_frame.html?class=<% $class %>&<% $link_class_name %>=<% $document->class %>&<% $link_id_name %>=<% $document->id %>"><b>Добавить связь</b></a></div>
    12 href="link_frame.html?class=<% $class %>&<% $link_class_name %>=<% $document->class %>&<% $link_id_name %>=<% $document->id %>&back=<% $back %>"><b>Добавить связь</b></a></div>
    13 13 % if ( $total > $size ) {
    14 14 <div style="padding:2px 0 4px;"><b>Страницы:</b> &nbsp;<&
    15 15 '/inc/pages_.msn', total => $total, n => $size, p => $p,
    16 16 params => { id => $document->id, class => $document->class, link_class => $class },
    17 17 &></div>
    18 18 % }
    19 <& /contenido/components/document_links_list.msn,
    19 <& /contenido/components/document_links_list.msn, parent_url => $parent_url,
    20 20 links => $links, docs => $docs, $link_id_name eq 'dest_id' ? (destination => $document) : (source => $document) &>
    21 21 <%args>
    22 22
     
    27 27 $opts => {}
    28 28 $link_id_name => 'dest_id'
    29 29 $link_class_name=> 'dest_class'
    30 $parent_url => undef
    30 31
    31 32 </%args>
    32 33 <%init>
     
    34 35 return unless ref $document;
    35 36 return unless ref $lclasses eq 'ARRAY' && @$lclasses;
    36 37 $class ||= $lclasses->[0];
    38 my $back = URI::Escape::uri_escape( $parent_url );
    37 39
    38 40 my $size = 20;
    39 41 my $revert_id = $link_id_name eq 'dest_id' ? 'source_id' : 'dest_id';
  • utf8/core/comps/contenido/components/document_links_list.msn

     
    75 75 <div style="padding:2px; text-align:right">
    76 76 <input type="hidden" name="id" value="<% $document->id %>">
    77 77 <input type="hidden" name="class" value="<% $document->class %>">
    78 <input type="hidden" name="parent_url" value="<% $parent_url %>">
    78 79 % if ( ref $destination ) {
    79 80 <input type="hidden" name="source_class" value="<% $links->[0]->class %>">
    80 81 % } else {
     
    92 93 $docs => undef
    93 94 $destination => undef
    94 95 $source => undef
    96 $parent_url => undef
    95 97
    96 98 </%args>
    97 99 <%init>
  • utf8/core/comps/contenido/components/outputs/lookup_multi.msn

     
    19 19 next unless $k =~ /^${name}_(add|delete)$/;
    20 20 next unless $v;
    21 21
    22 warn Dumper $v;
    22 23 if ($1 eq 'add') {
    23 24 $ids{$v} = 1;
    24 25 } elsif ($1 eq 'delete') {
    25 delete $ids{$v};
    26 if ( ref $v eq 'ARRAY' ) {
    27 map { delete $ids{$_} } @$v;
    28 } else {
    29 delete $ids{$v};
    30 }
    26 31 }
    27 32 }
    28 33
  • utf8/core/comps/contenido/document_links.html

     
    41 41 <& "/contenido/components/document_links_block.msn",
    42 42 document => $document, lclasses => \@sources, class => $lclass, p => $p,
    43 43 link_id_name => 'source_id',
    44 link_class_name => 'source_class'
    44 link_class_name => 'source_class',
    45 parent_url => $parent_url,
    45 46 &>
    46 47 </div>
    47 48 <div id="div_source_hidden" style="display:<% $show ? 'none' : 'block' %>; padding:5px;"><a href="javascript:switch_div('div_source')"
     
    62 63 <& "/contenido/components/document_links_block.msn",
    63 64 document => $document, lclasses => \@destinations, class => $lclass, p => $p,
    64 65 link_id_name => 'dest_id',
    65 link_class_name => 'dest_class'
    66 link_class_name => 'dest_class',
    67 parent_url => $parent_url,
    66 68 &>
    67 69 </div>
    68 70 <div id="div_destination_hidden" style="display:<% $show ? 'none' : 'block' %>; padding:5px;"><a href="javascript:switch_div('div_destination')"
     
    81 83 $class => undef
    82 84 $id => undef
    83 85 $link_class => undef
    86 $parent_url => undef
    84 87
    85 88 </%ARGS>
    86 89
    87 90 <%INIT>
    91
    88 92 return unless ($state->{available_links} and @{$state->{available_links}});
    93 $parent_url ||= $r->header_in("Referer");
    89 94 my $document;
    90 95 my (@sources, @destinations);
    91 96 if ($id && ($id !~ /\D/) && ($id > 0)) {
  • utf8/core/comps/contenido/link_frame.html

     
    15 15 $dest_id => ''
    16 16 $save => 0
    17 17 $status => 0
    18 $back => undef
    18 19 </%args>
    19 20 <%init>
    20 21
     
    22 23 push @source_args, 'class='.$class if $class;
    23 24 push @source_args, 'source_class='.$source_class if $source_class;
    24 25 push @source_args, 'source_id='.$source_id if $source_id;
    26 push @source_args, 'back='.URI::Escape::uri_escape( $back );
    25 27 push @dest_args, 'class='.$class if $class;
    26 28 push @dest_args, 'dest_class='.$dest_class if $dest_class;
    27 29 push @dest_args, 'dest_id='.$dest_id if $dest_id;
    30 push @dest_args, 'back='.URI::Escape::uri_escape( $back );
    28 31
    29 32 $sargs = @source_args ? '?'.join('&', @source_args) : undef;
    30 33 $dargs = @dest_args ? '?'.join('&', @dest_args) : undef;
  • utf8/core/comps/contenido/links/destination.html

     
    78 78 <form action="link_add.html" name="sourceform" target="_top" method="post" onsubmit="return CheckSource();">
    79 79 <div id="link_list"></div>
    80 80
    81 <input type="hidden" name="back" value="<% $back %>">
    81 82 <input type="hidden" name="class" value="<% $class %>">
    82 83 <input type="hidden" name="dest_id" value="<% $dest_id %>">
    83 84 <input type="hidden" name="dest_class" value="<% $dest_class %>">
     
    146 147 $dest_id => ''
    147 148 $save => 0
    148 149 $status => 0
    150 $back => undef
    149 151
    150 152 $p => 1
    151 153 $use_section => undef
  • utf8/core/comps/contenido/links/link_add.html

     
    8 8 $dest_class => undef
    9 9 $sources => undef
    10 10 $destinations => undef
    11 $back => undef
    11 12
    12 13 </%args>
    13 14 <%init>
     
    59 60 $ret_params = "id=$dest_id&class=$dest_class";
    60 61 }
    61 62 if ($ret_params) {
    62 $r->header_out("Location", "/contenido/document.html?".$ret_params);
    63 $r->status(302);
    64 $r->send_http_header();
    65 $m->abort();
    66 }else{
    67 abort404;
    63 $m->redirect( $back || "/contenido/document.html?".$ret_params );
    64 } else {
    65 &abort404;
    68 66 }
    69 67
    70 68 </%init>
  • utf8/core/comps/contenido/links/source.html

     
    77 77 <form action="link_add.html" name="destform" target="_top" method="post" onsubmit="return CheckDest();">
    78 78 <div id="link_list"></div>
    79 79
    80 <input type="hidden" name="back" value="<% $back %>">
    80 81 <input type="hidden" name="class" value="<% $class %>">
    81 82 <input type="hidden" name="source_id" value="<% $source_id %>">
    82 83 <input type="hidden" name="source_class" value="<% $source_class %>">
     
    145 146 $dest_id => ''
    146 147 $save => 0
    147 148 $status => 0
    149 $back => undef
    148 150
    149 151 $p => 1
    150 152 $restrict_class => undef
  • utf8/core/comps/contenido/store_document_links.html

     
    5 5 $source_class => undef
    6 6 $dest_class => undef
    7 7 $update => undef
    8 $parent_url => undef
    8 9
    9 10 </%ARGS>
    10 11
     
    82 83 }
    83 84 }
    84 85
    86 $parent_url = URI::Escape::uri_escape( $parent_url ) if $parent_url;
    85 87 # Проброс на содержание документа...
    86 88 if ( $source_class ) {
    87 $m->redirect ("document_links.html?id=$id&class=$class&source_class=$source_class");
    89 $m->redirect ("document_links.html?id=$id&class=$class&source_class=$source_class&parent_url=$parent_url");
    88 90 } elsif ( $dest_class ) {
    89 $m->redirect ("document_links.html?id=$id&class=$class&dest_class=$dest_class");
    91 $m->redirect ("document_links.html?id=$id&class=$class&dest_class=$dest_class&parent_url=$parent_url");
    90 92 } else {
    91 $m->redirect ("document_links.html?id=$id&class=$class");
    93 $m->redirect ("document_links.html?id=$id&class=$class&parent_url=$parent_url");
    92 94 }
    93 95 }
    94 96

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

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

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

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

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