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, # Убирать пробелы между тегами ( ) multiSpaces => 1, # Превращать множественные пробелы в одинарные redundantSpaces => 1, # Убирать пробелы там, где их не должно быть compositeWords => 0, # Заключать составные слова в тег compositeWordsLength => 10, # Максимальная длина составного слова, заключаемого в тег nbsp => 0, # Расставлять неразрывные пробелы quotes => 1, # Верстать кавычки qaType => 0, # Тип внешних кавычек (см. настройки отладочного интерфейса на http://jevix.ru/) qbType => 1, # Тип вложенных кавычек misc => 1, # Всякое разное (©, дроби и прочее) codeMode => 2, # Способ кодировки спец. символов (0: ANSI <...>, 1: HTML-код <…>, 2: HTML-сужности <…>) tagsDenyAll => 0, # По умолчанию отвергать все теги tagsDeny => 'script', # Список запрещённых тегов tagsAllow => '', # Список разрешённых тегов (исключает их, когда устанавлен запрет всех) tagCloseSingle => 0, # Закрывать одинарные теги, когда они не закрыты tagNamesToLower => 0, # Приводить имена тегов к нижнему регистру tagNamesToUpper => 0, # Приводить имена тегов к верхнему регистру tagAttributesToLower => 0, # Приводить имена атрибутов тегов к нижнему регистру tagAttributesToUpper => 0, # Приводить имена атрибутов тегов к верхнему регистру tagQuoteValues => 0, # Помещать в кавычки значения атрибутов тегов tagUnQuoteValues => 0, # Убирать кавычки вокруг значений атрибутов тегов simpleXSS => 1, # Удаление возможных XSS-атак в коде документа checkHTML => 0, # Проверять целостность HTML logErrors => 0 # Вести журнал ошибок }; return $jevix_conf; } 1;