Line #
Revision
Author
1
8
ahitrov@rambler.ru
package SQL::DocumentTable;
2
3
use strict;
4
use base 'SQL::ProtoTable';
5
6
sub db_table
7
{
8
return 'documents';
9
}
10
11
sub available_filters {
12
my @available_filters = qw(
13
_class_filter
14
_status_filter
15
_in_id_filter
16
_id_filter
17
_name_filter
18
_class_excludes_filter
19
_sfilter_filter
20
_datetime_filter
21
_date_equal_filter
22
_date_filter
23
_previous_days_filter
24
_prev_to_filter
25
_next_to_filter
26
_s_filter
27
28
_excludes_filter
29
_link_filter
30
);
31
return \@available_filters;
32
}
33
34
# ----------------------------------------------------------------------------
35
# Свойства храним в массивах, потому что порядок важен!
36
# Это общие свойства - одинаковые для всех документов.
37
#
38
# attr - обязательный параметр, название атрибута;
39
# type - тип аттрибута, требуется для отображдения;
40
# rusname - русское название, опять же требуется для отображения;
41
# hidden - равен 1, когда
42
# readonly - инициализации при записи только без изменения в дальнейшем
43
# db_field - поле в таблице
44
# default - значение по умолчанию (поле всегда имеет это значение)
45
# ----------------------------------------------------------------------------
46
sub required_properties
47
{
48
388
ahitrov
my $self = shift;
49
my $id_sequence = $self->db_id_sequence();
50
8
ahitrov@rambler.ru
return (
51
{ # Идентификатор документа, сквозной по всем типам...
52
'attr' => 'id',
53
'type' => 'integer',
54
'rusname' => 'Идентификатор документа',
55
'hidden' => 1,
56
'readonly' => 1,
57
'auto' => 1,
58
'db_field' => 'id',
59
'db_type' => 'integer',
60
388
ahitrov
'db_opts' => "not null default nextval('public.$id_sequence'::text)",
61
8
ahitrov@rambler.ru
},
62
{ # Класс документа...
63
'attr' => 'class',
64
'type' => 'string',
65
'rusname' => 'Класс документа',
66
'column' => 3,
67
'hidden' => 1,
68
'readonly' => 1,
69
'db_field' => 'class',
70
'db_type' => 'varchar(48)',
71
'db_opts' => 'not null',
72
},
73
{ # Имя документа...
74
'attr' => 'name',
75
'type' => 'string',
76
'rusname' => 'Название',
77
'column' => 2,
78
'db_field' => 'name',
79
'db_type' => 'varchar(255)',
80
},
81
{ # Время создания документа, служебное поле...
82
'attr' => 'ctime',
83
'type' => 'datetime',
84
'rusname' => 'Время создания',
85
'readonly' => 1,
86
'auto' => 1,
87
'hidden' => 1,
88
'db_field' => 'ctime',
89
'db_type' => 'timestamp',
90
'db_opts' => 'not null default now()',
91
'default' => 'CURRENT_TIMESTAMP',
92
},
93
{ # Время модификации документа, служебное поле...
94
'attr' => 'mtime',
95
'type' => 'datetime',
96
'rusname' => 'Время модификации',
97
'hidden' => 1,
98
'auto' => 1,
99
'db_field' => 'mtime',
100
'db_type' => 'timestamp',
101
'db_opts' => 'not null default now()',
102
'default' => 'CURRENT_TIMESTAMP',
103
},
104
{ # Дата и время документа...
105
'attr' => 'dtime',
106
'type' => 'datetime',
107
'rusname' => 'Дата и время документа<sup style="color:#888;"> 1)</sup>',
108
'column' => 1,
109
'db_field' => 'dtime',
110
'db_type' => 'timestamp',
111
'db_opts' => 'not null default now()',
112
'default' => 'CURRENT_TIMESTAMP',
113
},
114
{ # Массив секций, обрабатывается специальным образом...
115
'attr' => 'sections',
116
'type' => 'sections_list',
117
'rusname' => 'Секции',
118
'hidden' => 1,
119
'db_field' => 'sections',
120
'db_type' => 'integer[]',
121
},
122
{ # Одно поле статуса является встроенным...
123
'attr' => 'status',
124
'type' => 'status',
125
'rusname' => 'Статус',
126
'db_field' => 'status',
127
'db_type' => 'integer',
128
},
129
);
130
}
131
132
1;
133
Небольшая справка по веткам
cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.
koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.
utf8 – актуальная ветка, заточенная под UTF-8.
Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.