package Contenido::Document;
# ----------------------------------------------------------------------------
# Класс Документ
# ----------------------------------------------------------------------------
use strict;
use warnings;
use locale;
use base 'Contenido::Object';
use Utils;
use Contenido::Globals;
use Data::Dumper;
sub class_name {
return 'Документ';
}
sub class_description {
return 'Документ по умолчанию';
}
# клас реализации таблицы
sub class_table {
return 'SQL::DocumentTable';
}
# ----------------------------------------------------------------------------
# Конструктор. Создает новый объект для работы с документами в среде базы
# данных PostgreSQL.
#
# Формат использования:
# Contenido::Document->new()
# Contenido::Document->new($keeper)
# Contenido::Document->new($keeper, $id)
#
# Возвращает либо истинное значение, если все получилось, либо ложь.
# ----------------------------------------------------------------------------
sub new {
my ($proto, $keeper, $id) = @_;
my $class = ref($proto) || $proto;
my $self;
if (defined($id) && ($id>0) && defined($keeper)) {
$self=$keeper->get_document_by_id($id, class=>$class);
} else {
$self = {};
bless($self, $class);
$self->init();
$self->class($class);
$self->keeper($keeper) if (ref $keeper);
}
return $self;
}
# Возвращает главную секцию (первую)...
# вот такой вот загадочный код ;))
# искренне надеюсь что он работает и причем так как надо
sub section {
shift @{[shift->sections()]};
}
####
# Шаблонный метод для определения полей, по которым можно искать.
# Переопределяется в документах, возвращает массив названий полей.
##################################################################
sub search_fields {
return ('name');
}
####
# Шаблонный метод для описания полей в документах других классов,
# связанных с данным документом связью многие-к-одному от поля
# field документа класса class к id данного документа
#
# Пример:
# {
# name => 'Описание связи',
# class => 'project::Class',
# filter => 'filter_name'
# field => 'table_field'
# }
#
##################################################################
sub table_links {
return undef;
}
####
# Шаблонный конфигуратор Jevix
##################################################################
sub jevix_conf
{
my $jevix_conf = {
isHTML => 1, # Работать в режиме гипертекста (в режиме простого текста работает быстрее)
lineBreaks => 0, # Расставлять переносы строк
paragraphs => 0, # Размечать параграфы
dashes => 1, # Тире dots => 1, # Многоточия edgeSpaces => 1, # Убирать пробельные символы в начале и конце строки tagSpaces => 1, # Убирать пробелы между тегами (