Revision 54

Date:
2010/08/26 17:02:58
Author:
ahitrov@rambler.ru
Revision Log:
Избавляемся от одного противного артефакта
Files:

Legend:

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

     
    1 1 <%ARGS>
    2 2
    3 $object => undef
    4 $SETS => undef
    3 $object => undef
    4 $SETS => undef
    5 5
    6 6 </%ARGS>
    7 7 <%INIT>
    8 use Contenido::File;
    8 use Contenido::File;
    9 9 use vars qw($keeper $request );
    10 10
    11 11 $request->{local_codepage} = 'KOI8';
    12 $request->{local_codepage} = 'WIN' if Convert::Cyrillic::cstocs('WIN', 'KOI8', $SETS->{control_charset}) eq '��������';
    13 $request->{local_codepage} = 'UTF8' if Convert::Cyrillic::cstocs('UTF8', 'KOI8', $SETS->{control_charset}) eq '��������';
    12 $request->{local_codepage} = 'WIN' if Convert::Cyrillic::cstocs('WIN', 'KOI8', $SETS->{control_charset}) eq '��������';
    13 $request->{local_codepage} = 'UTF8' if Convert::Cyrillic::cstocs('UTF8', 'KOI8', $SETS->{control_charset}) eq '��������';
    14 14
    15 15 warn "Contenido Debug: ����� ��� �������������� ������ � ��������� ".$request->{local_codepage}."\n" if ($state->debug());
    16 16
    17
    18 17 my @properties = $object->structure();
    19 for (0..$#properties)
    20 {
    18 for (0..$#properties) {
    21 19 my $prop = $properties[$_];
    22 20 my $name = $prop->{attr};
    23 21 my $type = $prop->{type};
     
    25 23 next if ($name eq 'sections');
    26 24 next if ($name eq 'id');
    27 25
    28 my $component = '/contenido/components/outputs/'.$prop->{attr}.'.msn';
    29 if ($m->comp_exists($component)) {
    30 $object->{$name} = $m->comp($component, SETS => $SETS, name => $name, object => $object );
    31 } elsif ($m->comp_exists("/contenido/components/outputs/$type.msn")) {
    26 if ($m->comp_exists("/contenido/components/outputs/$type.msn")) {
    32 27 $object->{$name} = $m->comp("/contenido/components/outputs/$type.msn", SETS => $SETS, name => $name, object => $object );
    33 } elsif ( $prop->{type} eq 'image' )
    34 {
    28
    29 } elsif ( $prop->{type} eq 'image' ) {
    35 30 # --------------------------------------------------------------------------------------
    36 31 # ���������� �����, �������� ������� ��������...
    37 32
    38 if ($SETS->{'_delete_image.'.$name} == 1)
    39 {
    40 my $IMAGE = eval ('my '.$object->{ $name });
    41 Contenido::File::remove($IMAGE->{'filename'});
    42 Contenido::File::remove($IMAGE->{'mini'}{'filename'});
    43 foreach my $key (keys %{$IMAGE->{'mini'}}) {
    44 if (ref $IMAGE->{'mini'}{$key} && ref $IMAGE->{'mini'}{$key} eq 'HASH' && $IMAGE->{'mini'}{$key}->{'filename'}) {
    45 Contenido::File::remove($IMAGE->{'mini'}{$key}->{'filename'}) if $IMAGE->{'mini'}{$key}->{'filename'} ne $IMAGE->{'mini'}{'filename'};
    46 }
    47 }
    33 if ($SETS->{'_delete_image.'.$name} == 1) {
    34 my $IMAGE = eval ('my '.$object->{ $name });
    35 Contenido::File::remove($IMAGE->{'filename'});
    36 Contenido::File::remove($IMAGE->{'mini'}{'filename'});
    37 foreach my $key (keys %{$IMAGE->{'mini'}}) {
    38 if (ref $IMAGE->{'mini'}{$key} && ref $IMAGE->{'mini'}{$key} eq 'HASH' && $IMAGE->{'mini'}{$key}->{'filename'}) {
    39 Contenido::File::remove($IMAGE->{'mini'}{$key}->{'filename'}) if $IMAGE->{'mini'}{$key}->{'filename'} ne $IMAGE->{'mini'}{'filename'};
    40 }
    41 }
    48 42 $object->{$name} = '';
    49 43 } else {
    50 44 my $IMAGE = undef;
     
    60 54 $object->{$name} = Data::Dumper::Dumper($IMAGE);
    61 55 }
    62 56 }
    63 }
    64 elsif ($prop->{type} =~ /^images/)
    65 {
    57
    58 } elsif ($prop->{type} =~ /^images/) {
    66 59 # --------------------------------------------------------------------------------------
    67 60 # � ��� ��� ��� ������� - ����������� ����� �� ���� ��������...
    68 61
     
    80 73 my $maxnumber_ = 0;
    81 74
    82 75 # ������ ���� ����������� ��� ��������� - � ����� ��� ��, ��� ��� �����...
    83 foreach my $arg (keys(%{ $SETS }))
    84 {
    76 foreach my $arg (keys(%{ $SETS })) {
    85 77 # ��������� ��� �� �����, ��������...
    86 78 my ($partname,undef) = split(/\./,$arg);
    87 79 $partname =~ /^(.+)_(\d+)$/;
     
    92 84
    93 85 my $partname = $localname.'_'.$number;
    94 86
    95 if ($SETS->{'_delete_image.'.$partname} == 1)
    96 {
    97 Contenido::File::remove($IMAGES->{'image_'.$number}{"filename"});
    98 Contenido::File::remove($IMAGES->{'image_'.$number}{"mini"}{"filename"});
    99 foreach my $key (keys %{$IMAGES->{'image_'.$number}{'mini'}}) {
    100 if (ref $IMAGES->{'image_'.$number}{'mini'}{$key} && ref $IMAGES->{'image_'.$number}{'mini'}{$key} eq 'HASH' && $IMAGES->{'image_'.$number}{'mini'}{$key}->{'filename'}) {
    101 Contenido::File::remove($IMAGES->{'image_'.$number}{'mini'}{$key}->{'filename'}) if $IMAGES->{'image_'.$number}{'mini'}{$key}->{'filename'} ne $IMAGES->{'image_'.$number}{'mini'}{'filename'};
    102 }
    103 }
    87 if ($SETS->{'_delete_image.'.$partname} == 1) {
    88 Contenido::File::remove($IMAGES->{'image_'.$number}{"filename"});
    89 Contenido::File::remove($IMAGES->{'image_'.$number}{"mini"}{"filename"});
    90 foreach my $key (keys %{$IMAGES->{'image_'.$number}{'mini'}}) {
    91 if (ref $IMAGES->{'image_'.$number}{'mini'}{$key} && ref $IMAGES->{'image_'.$number}{'mini'}{$key} eq 'HASH' && $IMAGES->{'image_'.$number}{'mini'}{$key}->{'filename'}) {
    92 Contenido::File::remove($IMAGES->{'image_'.$number}{'mini'}{$key}->{'filename'}) if $IMAGES->{'image_'.$number}{'mini'}{$key}->{'filename'} ne $IMAGES->{'image_'.$number}{'mini'}{'filename'};
    93 }
    94 }
    104 95 delete $IMAGES->{'image_'.$number};
    105 }
    106 else
    107 {
    96 } else {
    108 97 my $IMAGE = undef;
    109 if (exists($IMAGES->{'image_'.$number}))
    110 {
    98 if (exists($IMAGES->{'image_'.$number})) {
    111 99 $IMAGE = $IMAGES->{'image_'.$number};
    112 100 };
    113 101 $IMAGE = $m->comp('/contenido/components/set_image.msn', default=>$IMAGE, field=>$partname, SETS=>$SETS, object=>$object, prop => $prop);
    114 if (exists($IMAGE->{filename}))
    115 {
    102 if (exists($IMAGE->{filename})) {
    116 103 local $Data::Dumper::Indent = 0;
    117 104 $IMAGE->{number} = $number;
    118 105 $IMAGES->{'image_'.$number} = $IMAGE;
     
    123 110
    124 111 }
    125 112
    126 if ( scalar(keys(%{ $IMAGES })) > 0)
    127 {
    113 if ( scalar(keys(%{ $IMAGES })) > 0) {
    128 114 local $Data::Dumper::Indent = 0;
    129 115 $object->{$name} = Data::Dumper::Dumper($IMAGES);
    130 116 }
    131 117
    132 }
    133 elsif ( $prop->{type} eq 'multimedia' )
    134 {
    118 } elsif ( $prop->{type} eq 'multimedia' ) {
    135 119 # --------------------------------------------------------------------------------------
    136 120 # ���������� ������ ������ �����������
    137 121
     
    155 139 }
    156 140 }
    157 141
    158 }
    159 elsif ( $prop->{type} eq 'multimedia_new' )
    160 {
    142 } elsif ( $prop->{type} eq 'multimedia_new' ) {
    161 143 # --------------------------------------------------------------------------------------
    162 144 # ���������� ������ ������ �����������
    163 145
     
    181 163 }
    182 164 }
    183 165
    184 }
    185 elsif ( $prop->{type} eq 'audio' )
    186 {
    166 } elsif ( $prop->{type} eq 'audio' ) {
    187 167 # --------------------------------------------------------------------------------------
    188 168 # ���������� ������ ������ �����������
    189 169
    190 if ($SETS->{'_delete_multi.'.$name} == 1)
    191 {
    192 my $VAR1 = undef;
    193 eval "\$object->{$name}";
    170 if ($SETS->{'_delete_multi.'.$name} == 1) {
    171 my $VAR1 = undef;
    172 eval "\$object->{$name}";
    194 173 my $BINARY = $VAR1;
    195 174 if (ref $BINARY) {$BINARY->remove}
    196 175 $object->{$name} = '';
    197 176 } else {
    198 177 my $MULTI = undef;
    199 if (length($object->$name) > 8)
    200 {
    201 my $VAR1 = undef;
    202 eval "\$object->{$name}";
    178 if (length($object->$name) > 8) {
    179 my $VAR1 = undef;
    180 eval "\$object->{$name}";
    203 181 $MULTI = $VAR1;
    204 182 unless (ref $MULTI) {$MULTI = undef};
    205 183 }
    206 184 $MULTI = $m->comp('/contenido/components/set_audio.msn', default=>$MULTI, field=>$name, SETS=>$SETS, object=>$object, prop => $prop);
    207 if (exists($MULTI->{filename}))
    208 {
    185 if (exists($MULTI->{filename})) {
    209 186 local $Data::Dumper::Indent = 0;
    210 187 $object->{$name} = Data::Dumper::Dumper($MULTI);
    211 188 }
    212 189 }
    213 190
    214 }
    215 else
    216 {
    191 } else {
    217 192 $object->{$name} = $m->comp('/contenido/components/filter.msn', str => $SETS->{$name} );
    218 193 }
    219 194

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

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

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

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

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