Document.pm
- NAME Communiware::Document
- SYNOPSYS
- DESCRIPTION
- new
- clone
- set_header
- add_header
- remove_header
- clear_headers
- set_content
- add_to_content
- update_last_modified
- charset
- type
- convert
- content
- header
- request
- content_type
- DOCUMENT PREPARATION FUNCTIONS
NAME Communiware::Document
SYNOPSYS
my $doc = new Communiware::Document(protocol=>'HTTP', request=>$req); $doc->charset($document_item_charset); exec_template($doc, $template_name); $doc->header->prepare($apache); $apache->send_http_header; $apache->print($doc->content);
in exec_template
:
$doc->set_content($content);
in the handler of DE MailTo:
my $doc = new Communiware::Document(protocol=>'Email', request=>$req); $doc->charset($needed_charset); exec_template($doc, $template_name); $doc->convert('text/plain') if ...; ... print SENDMAIL $doc->header->as_text, $doc->content;
in Context::document with argument:
$doc->update_last_modified($self->get('LASTCHANGE'));
DESCRIPTION
Объект Communiware::Document - это один из ответов на запрос. У документа есть заголовок, соответствующий протоколу, по которому ответ будет отдан (Communiware::Header::HTTP, Communiware::Header::Email) и тело.
Все методы, у которых явно не указано возвращаемое значение, возвращают себя. Для выстраивания в цепочки.
new
$doc = new Communiware::Document($protocol);
Создает новый документ с заголовком, рассчитанным на отдачу по протоколу
$protocol
(на данный момент поддерживаются 'HTTP'
и 'Email'
).
clone
$new_doc = $doc->clone;
Копирующий конструктор. Полезен перед convert, если хочется сохранить оригинал.
set_header
$doc->set_header($header_name, $content);
Враппер к методу set заголовка. Устанавливает заголовок С<$header_name> в
значение $content
. Предыдущее значение, если было, удаляется.
add_header
$doc->add_header($header_name, $content);
Враппер к методу add заголовка. Добавляет заголовок $header_name
со
значением $content
. Если заголовок $header_name
может быть в одном ответе
в нескольких экземплярах (или иметь несколько значений), появится
дополнительный заголовок (дополнительное значение), если нет - будет переписан
имевшийся.
remove_header
$doc->remove_header($header_name);
Враппер к методу remove заголовка. Удаляет все заголовки с именем
$header_name
.
clear_headers
$doc->clear_headers;
Враппер к методу clear заголовка. Чистит заголовок в девственное состояние.
set_content
$doc->set_content($content);
Делает содержимое документа (семантически) равным $content
. Вообще говоря,
результат метода content может не совпадать с $content
(charset).
add_to_content
$doc->add_to_content($content_chunk);
Добавляет к содержимому документа $content_chunk
. Добавление может
различаться в зависимости от MIME-типа (так, для HTML может добавлять перед
закрывающим тегом элемента BODY).
update_last_modified
$doc->update_last_modified($new_last_modified);
Освежает момент последнего изменения документа (т.е. если переданное время больше текущего момента последнего изменения, оно становится текущим). Аргумент в формате коммуниверной даты.
charset
$charset = $doc->charset([$charset]);
Возвращает кодировку документа. Если вызван с аргументом $charset
,
предварительно ее устанавливает в указанное значение, что может повлечь
изменение содержимого и заведомо повлечет изменение заголовка.
type
$mime_type = $doc->type([$mime_type]);
Возвращает MIME-тип документа. Если вызван с аргументом $mime_type
,
предварительно его устанавливает в указанное значение, что повлечет изменение
заголовка. Менять тип документу с заполненным содержимым нельзя.
convert
$doc->convert($mime_type);
Преобразует документ в MIME-тип $mime_type
. Вообще говоря, с потерей
форматирования.
content
$content = $doc->content;
Возвращает содержимое документа. Это содержимое, вообще говоря, не совпадает с тем, что было выставлено set_content, поэтому перед выдачей ответа клиенту следует провести цикл set_content-content.
header
$header = $doc->header;
Возвращает объект заголовка.
request
$request = $doc->request;
Возвращает объект запроса, в ответ на который создается данный документ.
content_type
$self->header->set('Content-Type',$self->content_type);
Returns correct MIME content-type for given mime-type and charset.
DOCUMENT PREPARATION FUNCTIONS
Following methods are not methods of Document object. They are just functions which perform document making.
escapeHTML
escapeHTML(string)
Escapes some dangerous symbols into HTML entities.
escapeURI
escapeURI(string)
Escapes some symbols as %hexcode
tag
tag($name,{attr=>value,attr->value},$content)
Constructs HTML element.
=cut
sub tag { | |
my ($elem, $attrs, $content) = @_; | |
$content ||= ''; |
# Make head my $out = "<$elem"; while (my ($attr, $val) = each %$attrs) { next unless $attr; $val = '' unless defined $val; $val = untag_html($val, 'a') unless lc(substr($attr, 2, 0) eq 'on'); $out .= " $attr=\"$val\""; } if ($HTML::Tagset::emptyElement{$elem}) { $out .= "/>"; } else { $out .= ">$content</$elem>"; } return $out; } =head2 hidden_field
$html = hidden_field ($name,$value)
Because Communiware excessively uses <input type=hidden
> in its
interactive parts, special helper procedure is provided to generate this
particular tag.
It gets just two args - name of input element, and its value or list of values.
popup_menu
$html = popup_menu($name,$choices,$value_col,$label_col,$def_val,%options)
Generates HTML <select
> tag with name $name
and list of options
from the $choices
which should be reference to list of hashes just like
Communiware::Filter::fetchall_arrayref
returns.
Names of hash elements which should be used as values and labels are passed as two subsequent parameters.
Next parameter should be default value (no element would be marked as SELECTED if this value is undefined), and rest of parameters is interpreted as hash of options to pass to select tag.
untag_html
See Communiware::Format::untag_html
format
$formatted_text = $doc->format(\@values, \@type, $format); $formatted_text = $doc->format(\@values, \@type, {DATE=>$strftime_format, STRING=>$sprintf_format, ...});
Converts @values
to visual representation according to their @type
.
Usually @values
and @type
are results of a call to context's
get_typed
. Merges list of formatted values, if there is list, by commas.
Default values for formats are `%s
' for strings, `%g
' for numbers,
`%c
' for dates and `p
' for richtexts. Scalar format means same value for
all types.
Takes into account accuracy of dates, added to their type as third element.
html_error_out
html_error_out($error_message)
Constructs HTML element span with class formError and puts content into it. May be used dynamic elements to put errors directly to generated html.
=cut
sub html_error_out { tag('span', {class=> 'formError'}, join(q{}, '[', @_, ']')); }
html_warn_out
html_warn_out($warning_message)
Constructs HTML element span with class formError and puts content into it. May be used dynamic elements to put warning messages directly to generated html.
=cut
sub html_warn_out { tag('span', {class=> 'formError'}, join(q{}, '[', @_, ']')); }
1;