+sub header {
+ $::lxdebug->enter_sub;
+
+ my ($self, %params) = @_;
+ my @header;
+
+ $::lxdebug->leave_sub and return if !$ENV{HTTP_USER_AGENT} || $self->{header}++;
+
+ if ($params{no_layout}) {
+ $::request->{layout} = SL::Layout::Dispatcher->new(style => 'none');
+ }
+
+ my $layout = $::request->{layout};
+
+ # standard css for all
+ # this should gradually move to the layouts that need it
+ $layout->use_stylesheet("$_.css") for qw(
+ common main menu list_accounts jquery.autocomplete
+ jquery.multiselect2side
+ ui-lightness/jquery-ui
+ jquery-ui.custom
+ tooltipster themes/tooltipster-light
+ );
+
+ $layout->use_javascript("$_.js") for (qw(
+ jquery jquery-ui jquery.cookie jquery.checkall jquery.download
+ jquery/jquery.form jquery/fixes client_js
+ jquery/jquery.tooltipster.min
+ common part_selection
+ ), "jquery/ui/i18n/jquery.ui.datepicker-$::myconfig{countrycode}");
+
+ $self->{favicon} ||= "favicon.ico";
+ $self->{titlebar} = join ' - ', grep $_, $self->{title}, $self->{login}, $::myconfig{dbname}, $self->{version} if $self->{title} || !$self->{titlebar};
+
+ # build includes
+ if ($self->{refresh_url} || $self->{refresh_time}) {
+ my $refresh_time = $self->{refresh_time} || 3;
+ my $refresh_url = $self->{refresh_url} || $ENV{REFERER};
+ push @header, "<meta http-equiv='refresh' content='$refresh_time;$refresh_url'>";
+ }
+
+ my $auto_reload_resources_param = $layout->auto_reload_resources_param;
+
+ push @header, map { qq|<link rel="stylesheet" href="${_}${auto_reload_resources_param}" type="text/css" title="Stylesheet">| } $layout->stylesheets;
+ push @header, "<style type='text/css'>\@page { size:landscape; }</style> " if $self->{landscape};
+ push @header, "<link rel='shortcut icon' href='$self->{favicon}' type='image/x-icon'>" if -f $self->{favicon};
+ push @header, map { qq|<script type="text/javascript" src="${_}${auto_reload_resources_param}"></script>| } $layout->javascripts;
+ push @header, $self->{javascript} if $self->{javascript};
+ push @header, map { $_->show_javascript } @{ $self->{AJAX} || [] };
+
+ my %doctypes = (
+ strict => qq|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">|,
+ transitional => qq|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">|,
+ frameset => qq|<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">|,
+ html5 => qq|<!DOCTYPE html>|,
+ );
+
+ # output
+ print $self->create_http_response(content_type => 'text/html', charset => 'UTF-8');
+ print $doctypes{$params{doctype} || 'transitional'}, $/;
+ print <<EOT;