Revision 33

Date:
2010/06/09 10:07:25
Author:
ahitrov@rambler.ru
Revision Log:
Коррективы в установке ImageMagick
Инлайновое редактирование и отображение дополнительных полей в контрольке связи
Files:

Legend:

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

     
    26 26 % if ( @props ) {
    27 27 % foreach my $prop ( @props ) {
    28 28 % my $field = $prop->{attr};
    29 % if ( exists $prop->{inline} ) {
    30 % $inline_status = 1;
    31 % if ( $prop->{type} =~ /^(string|integer|float)$/ ) {
    32 <td><input type="text" name="<% 'update_'.$link->id.'_'.$field %>" value="<% $link->$field |h %>" style="<% $prop->{inline_width} ? 'width:'.$prop->{inline_width}.'px;' : 'width:65px; ' %> <% $prop->{inline_style} || '' %>"></td>
    33 % } elsif ($prop->{type} eq 'checkbox') {
    34 % my $checked = $link->$field ? ' checked' : '';
    35 <td align="center"><input type="checkbox" name="<% 'update_'.$link->id.'_'.$field %>"<% $checked %>>
    36 % } elsif ($prop->{type} eq 'select') {
    37 % my $options = {};
    38 % if ($toopi && (ref($toopi) eq 'HASH') && (exists($toopi->{$link->class}))) {
    39 % %{ $options } = %{ $toopi->{$link->class} };
    40 % }
    41 % my $values = $options->{$prop->{attr}};
    42 <td><select name="<% 'update_'.$link->id.'_'.$field %>">
    43 % if ( ref $values eq 'ARRAY' ) {
    44 % foreach my $val ( @$values ) {
    45 % my $selected = $val eq $link->$field ? ' selected' : '';
    46 <option value="<% $val %>"<% $selected %>><% $val %>
    47 % }
    48 % }
    49 </select>
    50 % } elsif ($prop->{type} eq 'status') {
    51 % my $cases = $prop->{cases};
    52 % if ( ref $cases eq 'ARRAY' ) {
    53 <td><select name="<% 'update_'.$link->id.'_'.$field %>" style="<% $prop->{inline_width} ? 'width:'.$prop->{inline_width}.'px;' : '' %> <% $prop->{inline_style} || '' %>">
    54 % foreach my $case ( @$cases ) {
    55 % my $selected = $case->[0] eq $link->$field ? ' selected' : '';
    56 <option value="<% $case->[0] %>"<% $selected %>><% $case->[1] %>
    57 % }
    58 </select>
    59 % }
    60
    61 % }
    62 % } else {
    29 63 <td><% $link->$field %></td>
    64 % }
    30 65 % }
    31 66 % }
    32 <td><a href="link.html?class=<% $link->class %>&id=<% $link->id %>" target="_blank">�������������</a></td>
    33 </tr>
    67 <td><a href="link.html?class=<% $link->class %>&id=<% $link->id %>" target="_blank">�������������</a>
    68 % if ( $inline_status ) {
    69 <input type="hidden" name="update_<% $link->id %>_class" value="<% $link->class %>">
    70 % }
    71 </td></tr>
    34 72 % }
    35 73 </table>
    36 74 % if ( @$links ) {
     
    42 80 % } else {
    43 81 <input type="hidden" name="dest_class" value="<% $links->[0]->class %>">
    44 82 % }
    83 % if ( $inline_status ) {
    84 <input type="submit" name="update" value="��������� ���������" class="input_btn">
    85 % }
    45 86 <input type="submit" value="������� ��������� ����� ���������" class="input_btn"></div>
    46 87 % }
    47 88 </form>
     
    59 100 return unless ref $docs;
    60 101 return unless ref $links eq 'ARRAY' && @$links;
    61 102
    103 my $inline_status = 0;
    62 104 my $document = $destination || $source;
    63 105 my @props = $links->[0]->structure;
    64 106 @props = sort { $a->{column} <=> $b->{column} } grep { $_->{attr} ne 'class' && $_->{type} =~ /string|integer/ } grep { $_->{column} } @props;
    107 my $toopi = $project->links();
    65 108
    66 109 </%init>
  • koi8/core/comps/contenido/store_document_links.html

     
    4 4 $class => undef
    5 5 $source_class => undef
    6 6 $dest_class => undef
    7 $update => undef
    7 8
    8 9 </%ARGS>
    9 10
    10 11
    11 12 <%init>
    12 if ($id)
    13 {
    13 if ($id) {
    14 14 my $document = $keeper->get_document_by_id($id, class=>$class);
    15 15
    16 my @link_args = ();
    17 if ( exists $ARGS{links} && ref $ARGS{links} eq 'ARRAY' ) {
    18 @link_args = @{ $ARGS{links} }
    19 } elsif ( exists $ARGS{links} ) {
    20 @link_args = ( $ARGS{links} );
    21 }
    16 if ( $update ) {
    22 17
    23 my %nlinks = ();
    24 foreach my $name (@link_args)
    25 {
    26 if ($name =~ /^link_(\d+)_(\d+)_(.*)$/)
    18 my %updated;
    19 while ( my ($field, $value) = each %ARGS ) {
    20 if ( $field =~ /^update_(\d+)_(\w+)$/ ) {
    21 my $oid = $1;
    22 my $attr = $2;
    23 $updated{$oid}{$attr} = $value;
    24 }
    25 }
    26 my %classes = map { $_->{class} => 1 } values %updated;
    27 foreach my $update_class ( keys %classes ) {
    28 my @ids;
    29 while ( my ($oid, $attr) = each %updated) {
    30 push @ids, $oid if $attr->{class} eq $update_class;
    31 }
    32 my @objects = $keeper->get_links (
    33 id => \@ids,
    34 class => $update_class
    35 ) if @ids;
    36 foreach my $object ( @objects ) {
    37 my $fields = $updated{$object->id};
    38 my @props = grep { exists $_->{inline} && $_->{inline} } $object->structure;
    39 if ( ref $fields eq 'HASH' ) {
    40 foreach my $prop ( @props ) {
    41 my $attr = $prop->{attr};
    42 my $value = ref $fields && exists $fields->{$attr} ? $fields->{$attr} : undef;
    43 if ( $prop->{db_type} eq 'float' ) {
    44 for ( $value ) {
    45 s/\,/\./;
    46 s/^\s+//;
    47 s/\s+$//;
    48 }
    49 }
    50 if ( $prop->{type} eq 'checkbox' ) {
    51 $value = $value ? 1 : undef;
    52 }
    53
    54 $object->$attr($value);
    55 }
    56 $object->store;
    57 }
    58 }
    59 }
    60
    61 } else {
    62 my @link_args = ();
    63 if ( exists $ARGS{links} && ref $ARGS{links} eq 'ARRAY' ) {
    64 @link_args = @{ $ARGS{links} }
    65 } elsif ( exists $ARGS{links} ) {
    66 @link_args = ( $ARGS{links} );
    67 }
    68
    69 my %nlinks = ();
    70 foreach my $name (@link_args)
    27 71 {
    28 my ($id, $dest_id, $lclass) = ($1, $2, $3);
    29 if ( $id && $lclass ) {
    30 my $link = $keeper->get_link_by_id ($id,
    31 class => $lclass,
    32 );
    33 $link->delete if ref $link;
    72 if ($name =~ /^link_(\d+)_(\d+)_(.*)$/)
    73 {
    74 my ($id, $dest_id, $lclass) = ($1, $2, $3);
    75 if ( $id && $lclass ) {
    76 my $link = $keeper->get_link_by_id ($id,
    77 class => $lclass,
    78 );
    79 $link->delete if ref $link;
    80 }
    34 81 }
    35 82 }
    36 83 }
  • koi8/core/ports/all/ImageMagick/GNUmakefile

     
    1 1 ##############################################################################
    2 # $HeadURL: http://svn.dev.rambler.ru/Contenido/trunk/ports/all/ImageMagick/GNUmakefile $
    3 # $Id: GNUmakefile 1077 2007-10-09 09:48:29Z lonerr $
    2 # $HeadURL: http://svn.dev.rambler.ru/Contenido/branches/utf8/ports/all/ImageMagick/GNUmakefile $
    3 # $Id: GNUmakefile 1549 2010-06-08 14:23:45Z lonerr $
    4 4 ###############################################################################
    5 5
    6 6 PORTVERSION = 6.2.7-8
    7 CONFIGURE_ENV = CPPFLAGS="$${CPPFLAGS} -I${PREFIX}/include" LDFLAGS="$${LDFLAGS} -L${PREFIX}/lib"
    7 CONFIGURE_ENV = CPPFLAGS="-I${PREFIX}/include $${CPPFLAGS}" LDFLAGS="$${LDFLAGS} -L${PREFIX}/lib"
    8 8 CONFIGURE_ARGS = --prefix=${PREFIX} --without-perl --without-threads --with-jpeg
    9 PORT_DEPENDS = jpeg
    9 CONFIGURE_POSTCMD = ${MAKE_RECURSIVE} post-configure
    10 PORT_DEPENDS = jpeg libpng
    10 11
    11 12 MASTER_POST_SITES = ftp://ftp.imagemagick.org/pub/ImageMagick/ \
    12 13 ftp://gd.tuwien.ac.at/pub/graphics/ImageMagftp://ftp.carnet.hr/misc/imagemagick/ \
     
    21 22
    22 23 WRKSRC = ${WRKDIR}/${PORTNAME}-${shell perl -e 'print +(split "-", "${PORTVERSION}")[0]'}
    23 24
    25 post-configure:
    26 cd ${WRKSRC} && pwd && sed -i .orig -E 's|^(CPPFLAGS =)(.*)|\1 -I${PREFIX}/include \2|' Makefile
    24 27
    28
    25 29 include ../../etc/ports.mk

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

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

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

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

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