Revision 450
Date:
2014/11/13 14:32:01
Author:
ahitrov
Revision Log:
Section browse: the New Document list is radically shrinked when property default_table_class or default_document_class in section is set
Improved search by field in section browse. Now it shows for default_table_class filled
Files:
Legend:
Added
Removed
Modified
utf8/core/comps/contenido/components/new_objects_form.msn
1
1
<form action="<% $INVITE->{$proto}->[1] %>" method="GET" name="formnew">
2
2
<div align="right">
3
<table width="100%" border="0" cellpadding="3" cellspacing="0" class="tform">
4
<tr><td><% $INVITE->{$proto}->[0] %></td>
5
6
% my $classes = [ '' => '--- Выберите тип ---' ];
7
%
8
% foreach my $class (sort {$a->class_name cmp $b->class_name} $proto eq 'documents' ? @{ $user->get_available_classes } : @{ $state->{'available_'.$proto} })
9
% {
10
% my $object = $class->new($keeper);
11
% push @$classes, $class, "".$object->class_name()." ($class)";
12
% }
13
14
<td width="100%">
3
<table width="100%" border="0" cellpadding="3" cellspacing="0" class="tform">
4
<tr><td><% $INVITE->{$proto}->[0] %></td>
5
<td width="100%">
15
6
<& "/contenido/components/select.msn", name=>'class', values=>$classes, check=>$default, style=>'width:100%;', onChange => "set_create_button(this, 'create_$btn_id')" &>
16
</td>
17
<td><input id="create_<% $btn_id %>" type="submit" value="Создать"<% $default ? '' : ' disabled="disabled"' %>></td>
18
<td><input type="hidden" name="sect_id" value="<% $sect_id %>"></td>
19
</tr></table>
20
7
</td>
8
<td><input id="create_<% $btn_id %>" type="submit" value="Создать"<% $default ? '' : ' disabled="disabled"' %>></td>
9
<td><input type="hidden" name="sect_id" value="<% $sect_id %>"></td>
10
</tr></table>
21
11
</div></form>
22
12
<%ONCE>
23
13
use locale;
24
14
</%ONCE>
25
15
<%ARGS>
26
16
27
$default => undef
28
$proto => 'documents'
29
$sect_id => 1
17
$default => undef
18
$proto => 'documents'
19
$sect_id => 1
20
$section => undef
30
21
31
22
</%ARGS>
32
23
<%INIT>
33
my $INVITE = {
24
25
my $INVITE = {
34
26
'documents' => ['Новый документ','document.html'],
35
27
'sections' => ['Новая секция','section.html'],
36
28
'links' => ['Новая связь','link.html'],
37
29
'users' => ['Новый пользователь','users.html'],
38
30
};
39
my $btn_id = int(rand(10000));
31
my $btn_id = int(rand(10000));
32
33
my @class;
34
if ( $proto eq 'documents' ) {
35
@class = @{ $user->get_available_classes };
36
if ( ref $section ) {
37
if ( $section->default_table_class ) {
38
@class = grep { $_->new( $keeper )->class_table eq $section->default_table_class } @class;
39
} elsif ( $section->default_document_class ) {
40
@class = grep { $_ eq $section->default_document_class } @class;
41
($default) = grep { $_ eq $section->default_document_class } @class unless $default;
42
}
43
}
44
} else {
45
@class = @{ $state->{'available_'.$proto} };
46
}
47
48
my $classes = scalar @class > 1 ? [ '' => '--- Выберите тип ---' ] : [];
49
50
foreach my $class ( sort { $a->class_name cmp $b->class_name } @class ) {
51
my $object = $class->new($keeper);
52
push @$classes, $class, "".$object->class_name()." ($class)";
53
}
54
40
55
</%INIT>
utf8/core/comps/contenido/sections.html
79
79
% if ($total || scalar @documents || defined($alpha) || defined($search) ) {
80
80
% if ($section_access == 2) {
81
81
<& "/contenido/components/new_objects_form.msn", proto => 'documents',
82
sect_id => $owner->id,
82
sect_id => $owner->id, section => $owner,
83
83
default => ($owner->default_document_class ? $owner->default_document_class : undef) &>
84
84
% }
85
85
<div style="font-size:12px; font-family:Arial;">
…
…
91
91
% ## Форма поиска. Работает при включенном фильтре класса
92
92
% ## и описанной для класса функции search_fields
93
93
% ########################################################
94
% if ( $filter{class} ) {
95
% my $document = $filter{class}->new ($keeper);
94
% if ( $filter{class} || $filter{table} ) {
95
% my ($document) = $filter{class} ? ($filter{class}->new( $keeper )) : grep { $_->new( $keeper )->class_table eq $owner->default_table_class } @{ $user->get_available_classes };
96
96
% my @fields = $document->search_fields;
97
97
% if ( @fields ) {
98
98
% my @props = $document->required_properties;
Небольшая справка по веткам
cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.
koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.
utf8 – актуальная ветка, заточенная под UTF-8.
Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.