Description | manuals and libraries |
Kernel::Output::HTML::Layout - all generic html functions
All generic html functions. E. g. to get options fields, template processing, ...
create a new object. Do not use it directly, instead use:
use Kernel::System::ObjectManager;
local $Kernel::OM = Kernel::System::ObjectManager->new(
'Kernel::Output::HTML::Layout' => {
Lang => 'de',
},
);
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
From the web installer, a special Option InstallerOnly
is passed to indicate that a database connection is not yet available.
use Kernel::System::ObjectManager;
local $Kernel::OM = Kernel::System::ObjectManager->new(
'Kernel::Output::HTML::Layout' => {
InstallerOnly => 1,
},
);
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
call a block and pass data to it (optional) to generate the block's output.
$LayoutObject->Block(
Name => 'Row',
Data => {
Time => ...,
},
);
Encode perl data structure to JSON string
my $JSON = $LayoutObject->JSONEncode(
Data => $Data,
NoQuotes => 0|1, # optional: no double quotes at the start and the end of JSON string
);
return html for browser to redirect
my $HTML = $LayoutObject->Redirect(
OP => "Action=AdminUserGroup;Subaction=User;ID=$UserID",
);
my $HTML = $LayoutObject->Redirect(
ExtURL => "http://some.example.com/",
);
During login action, Login =
1> should be passed to Redirect(), which indicates that if the browser has cookie support, it is OK for the session cookie to be not yet set.
create notify lines
infos, the text will be translated
my $Output = $LayoutObject->Notify(
Priority => 'Warning',
Info => 'Some Info Message',
);
data with link, the text will be translated
my $Output = $LayoutObject->Notify(
Priority => 'Warning',
Data => 'Template content',
Link => 'http://example.com/',
LinkClass => 'some_CSS_class', # optional
);
errors, the text will be translated
my $Output = $LayoutObject->Notify(
Priority => 'Error',
Info => 'Some Error Message',
);
errors from log backend, if no error exists, a '' will be returned
my $Output = $LayoutObject->Notify(
Priority => 'Error',
);
Adds notification about tickets which are not updated.
my $Output = $LayoutObject->NotifyNonUpdatedTickets();
generates the HTML for the page begin in the Agent interface.
my $Output = $LayoutObject->Header(
Type => 'Small', # (optional) '' (Default, full header) or 'Small' (blank header)
ShowToolbarItems => 0, # (optional) default 1 (0|1)
ShowPrefLink => 0, # (optional) default 1 (0|1)
ShowLogoutButton => 0, # (optional) default 1 (0|1)
DisableIFrameOriginRestricted => 1, # (optional, default 0) - suppress X-Frame-Options header.
);
convert ASCII to html string
my $HTML = $LayoutObject->Ascii2Html(
Text => 'Some <> Test <font color="red">Test</font>',
Max => 20, # max 20 chars flowed by [..]
VMax => 15, # first 15 lines
NewLine => 0, # move \r to \n
HTMLResultMode => 0, # replace " " with C< >
StripEmptyLines => 0,
Type => 'Normal', # JSText or Normal text
LinkFeature => 0, # do some URL detections
);
also string ref is possible
my $HTMLStringRef = $LayoutObject->Ascii2Html(
Text => \$String,
);
detect links in text
my $HTMLWithLinks = $LayoutObject->LinkQuote(
Text => $HTMLWithOutLinks,
);
also string ref is possible
my $HTMLWithLinksRef = $LayoutObject->LinkQuote(
Text => \$HTMLWithOutLinksRef,
);
detect links in HTML code
my $HTMLWithLinks = $LayoutObject->HTMLLinkQuote(
String => $HTMLString,
);
also string ref is possible
my $HTMLWithLinksRef = $LayoutObject->HTMLLinkQuote(
String => \$HTMLString,
);
perform URL encoding on query string parameter names or values.
my $ParamValueEncoded = $LayoutObject->LinkEncode($ParamValue);
Don't encode entire URLs, because this will make them invalid (?, & and ; will be encoded as well). Only pass one parameter name or value at a time.
build a HTML option element based on given data
my $HTML = $LayoutObject->BuildSelection(
Data => $ArrayRef, # use $HashRef, $ArrayRef or $ArrayHashRef (see below)
Name => 'TheName', # name of element
ID => 'HTMLID', # (optional) the HTML ID for this element, if not provided, the name will be used as ID as well
Multiple => 0, # (optional) default 0 (0|1)
Size => 1, # (optional) default 1 element size
Class => 'class', # (optional) a css class, include 'Modernize' to activate InputFields
Disabled => 0, # (optional) default 0 (0|1) disable the element
AutoComplete => 'off', # (optional)
OnChange => 'javascript', # (optional)
OnClick => 'javascript', # (optional)
SelectedID => 1, # (optional) use integer or arrayref (unable to use with ArrayHashRef)
SelectedID => [1, 5, 3], # (optional) use integer or arrayref (unable to use with ArrayHashRef)
SelectedValue => 'test', # (optional) use string or arrayref (unable to use with ArrayHashRef)
SelectedValue => ['test', 'test1'], # (optional) use string or arrayref (unable to use with ArrayHashRef)
Sort => 'NumericValue', # (optional) (AlphanumericValue|NumericValue|AlphanumericKey|NumericKey|TreeView|IndividualKey|IndividualValue) unable to use with ArrayHashRef
SortIndividual => ['sec', 'min'] # (optional) only sort is set to IndividualKey or IndividualValue
SortReverse => 0, # (optional) reverse the list
Translation => 1, # (optional) default 1 (0|1) translate value
PossibleNone => 0, # (optional) default 0 (0|1) add a leading empty selection
TreeView => 0, # (optional) default 0 (0|1)
DisabledBranch => 'Branch', # (optional) disable all elements of this branch (use string or arrayref)
Max => 100, # (optional) default 100 max size of the shown value
HTMLQuote => 0, # (optional) default 1 (0|1) disable html quote
Title => 'C<Tooltip> Text', # (optional) string will be shown as c<Tooltip> on c<mouseover>
OptionTitle => 1, # (optional) default 0 (0|1) show title attribute (the option value) on every option element
Filters => { # (optional) filter data, used by InputFields
LastOwners => { # filter id
Name => 'Last owners', # name of the filter
Values => { # filtered data structure
Key1 => 'Value1',
Key2 => 'Value2',
Key3 => 'Value3',
},
Active => 1, # (optional) default 0 (0|1) make this filter immediately active
},
InvolvedAgents => {
Name => 'Involved in this ticket',
Values => \%HashWithData,
},
},
ExpandFilters => 1, # (optional) default 0 (0|1) expand filters list by default
ValidateDateAfter => '2016-01-01', # (optional) validate that date is after supplied value
ValidateDateBefore => '2016-01-01', # (optional) validate that date is before supplied value
);
my $HashRef = {
Key1 => 'Value1',
Key2 => 'Value2',
Key3 => 'Value3',
};
my $ArrayRef = [
'KeyValue1',
'KeyValue2',
'KeyValue3',
'KeyValue4',
];
my $ArrayHashRef = [
{
Key => '1',
Value => 'Value1',
},
{
Key => '2',
Value => 'Value1::Subvalue1',
Selected => 1,
},
{
Key => '3',
Value => 'Value1::Subvalue2',
},
{
Key => '4',
Value => 'Value2',
Disabled => 1,
}
];
check if access to a frontend module exists
my $Access = $LayoutObject->Permission(
Action => 'AdminCustomerUser',
Type => 'rw', # ro|rw possible
);
returns browser output to display/download a attachment
$HTML = $LayoutObject->Attachment(
Type => 'inline', # optional, default: attachment, possible: inline|attachment
Filename => 'FileName.png', # optional
AdditionalHeader => $AdditionalHeader, # optional
ContentType => 'image/png',
Content => $Content,
Sandbox => 1, # optional, default 0; use content security policy to prohibit external
# scripts, flash etc.
);
or for AJAX html snippets
$HTML = $LayoutObject->Attachment(
Type => 'inline', # optional, default: attachment, possible: inline|attachment
Filename => 'FileName.html', # optional
ContentType => 'text/html',
Charset => 'utf-8', # optional
Content => $Content,
NoCache => 1, # optional
);
generates a page navigation bar
my %PageNavBar = $LayoutObject->PageNavBar(
Limit => 100, # marks result of TotalHits red if Limit is gerater then AllHits
WindowSize => 15, # max shown pages to click
StartHit => 1, # start to show items
PageShown => 15, # number of shown items a page
AllHits => 56, # number of total hits
Action => 'AgentXXX', # e. g. 'Action=' . $Self->{LayoutObject}->{Action}
Link => $Link, # e. g. 'Subaction=View;'
AJAXReplace => 'IDElement', # IDElement which should be replaced
IDPrefix => 'Tickets', # Prefix for the id parameter
);
return values of hash
TotalHits # total hits
Result # shown items e. g. "1-5" or "16-30"
SiteNavBar # html for page nav bar e. g. "1 2 3 4"
ResultLong # shown items e. g. "1-5 of 32" or "16-30 of 64"
SiteNavBarLong # html for page nav bar e. g. "Page: 1 2 3 4"
build the HTML code to represent a date selection based on the given data. Depending on the SysConfig settings the controls to set the date could be multiple select or input fields
my $HTML = $LayoutObject->BuildDateSelection(
Prefix => 'some prefix', # optional, (needed to specify other parameters)
<Prefix>Year => 2015, # optional, defaults to current year, used to set the initial value
<Prefix>Month => 6, # optional, defaults to current month, used to set the initial value
<Prefix>Day => 9, # optional, defaults to current day, used to set the initial value
<Prefix>Hour => 12, # optional, defaults to current hour, used to set the initial value
<Prefix>Minute => 26, # optional, defaults to current minute, used to set the initial value
<Prefix>Second => 59, # optional, defaults to current second, used to set the initial value
<Prefix>Optional => 1, # optional, default 0, when active a checkbox is included to specify
# if the values should be saved or not
<Prefix>Used => 1, # optional, default 0, used to set the initial state of the checkbox
# mentioned above
<Prefix>Required => 1, # optional, default 0 (Deprecated)
<prefix>Class => 'some class', # optional, specify an additional class to the HTML elements
Area => 'some area', # optional, default 'Agent' (Deprecated)
DiffTime => 123, # optional, default 0, used to set the initial time influencing the
# current time (in seconds)
OverrideTimeZone => 1, # optional (1 or 0), when active the time is not translated to the user
# time zone
YearPeriodFuture => 3, # optional, used to define the number of years in future to be display
# in the year select
YearPeriodPast => 2, # optional, used to define the number of years in past to be display
# in the year select
YearDiff => 0, # optional. used to define the number of years to be displayed
# in the year select (alternatively to YearPeriodFuture and YearPeriodPast)
ValidateDateInFuture => 1, # optional (1 or 0), when active sets an special class to validate
# that the date set in the controls to be in the future
ValidateDateNotInFuture => 1, # optional (1 or 0), when active sets an special class to validate
# that the date set in the controls not to be in the future
ValidateDateAfterPrefix => 'Start', # optional (Prefix), when defined sets a special class to validate
# that the date set in the controls comes after the date with Prefix
ValidateDateAfterValue => '2016-01-01', # optional (Date), when defined sets a special data parameter to validate
# that the date set in the controls comes after the supplied date
ValidateDateBeforePrefix => 'End', # optional (Prefix), when defined sets a special class to validate
# that the date set in the controls comes before the date with Prefix
ValidateDateBeforeValue => '2016-01-01', # optional (Date), when defined sets a special data parameter to validate
# that the date set in the controls comes before the supplied date
Calendar => 2, # optional, used to define the SysConfig calendar on which the Datepicker
# will be based on to show the vacation days and the start week day
Format => 'DateInputFormat', # optional, or 'DateInputFormatLong', used to define if only date or
# date/time components should be shown (DateInputFormatLong shows date/time)
Validate => 1, # optional (1 or 0), defines if the date selection should be validated on
# client side with JS
Disabled => 1, # optional (1 or 0), when active select and checkbox controls gets the
# disabled attribute and input fields gets the read only attribute
);
Produces human readable data size.
my $SizeStr = $LayoutObject->HumanReadableDataSize(
Size => 123, # size in bytes
);
Returns
$SizeStr = '123 B'; # example with decimal point: 123.4 MB
converts text to rich text
my $HTMLString = $LayoutObject->Ascii2RichText(
String => $TextString,
);
converts text to rich text
my $TextString = $LayoutObject->RichText2Ascii(
String => $HTMLString,
);
1) add html, body, ... tags to be a valid html document 2) replace links of inline content e. g. images to <img src="cid:xxxx" />
$HTMLBody = $LayoutObject->RichTextDocumentComplete(
String => $HTMLBody,
);
Serve a rich text (HTML) document for local view inside of an iframe
in correct charset and with correct links for inline documents.
By default, all inline/active content (such as script
, object
, applet
or embed
tags) will be stripped. If there are external images, they will be stripped too, but a message will be shown allowing the user to reload the page showing the external images.
my %HTMLFile = $LayoutObject->RichTextDocumentServe(
Data => {
Content => $HTMLBodyRef,
ContentType => 'text/html; charset="iso-8859-1"',
},
URL => 'AgentTicketAttachment;Subaction=HTMLView;TicketID=123;ArticleID=123;FileID=',
Attachments => \%AttachmentListOfInlineAttachments,
LoadInlineContent => 0, # Serve the document including all inline content. WARNING: This might be dangerous.
LoadExternalImages => 0, # Load external images? If this is 0, a message will be included if
# external images were found and removed.
);
please see Kernel::System::HTML::Layout::DocumentCleanup()
This software is part of the OTRS project (https://otrs.org/).
This software comes with ABSOLUTELY NO WARRANTY. For details, see the enclosed file COPYING for license information (GPL). If you did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.