.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "OpenGuides::Template 3pm" .TH OpenGuides::Template 3pm "2021-01-30" "perl v5.32.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" OpenGuides::Template \- Do Template Toolkit related stuff for OpenGuides applications. .SH "DESCRIPTION" .IX Header "DESCRIPTION" Does all the Template Toolkit stuff for OpenGuides. Distributed and installed as part of the OpenGuides project, not intended for independent installation. This documentation is probably only useful to OpenGuides developers. .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 3 \& use OpenGuides::Config; \& use OpenGuides::Utils; \& use OpenGuides::Template; \& \& my $config = OpenGuides::Config\->new( file => "wiki.conf" ); \& my $wiki = OpenGuides::Utils\->make_wiki_object( config => $config ); \& \& print OpenGuides::Template\->output( wiki => $wiki, \& config => $config, \& template => "node.tt", \& vars => { foo => "bar" } \& ); .Ve .SH "METHODS" .IX Header "METHODS" .IP "\fBoutput\fR" 4 .IX Item "output" .Vb 8 \& print OpenGuides::Template\->output( wiki => $wiki, \& config => $config, \& template => "node.tt", \& content_type => "text/html", \& cookies => $cookie, \& vars => {foo => "bar"}, \& noheaders => 1 \& ); .Ve .Sp Returns everything you need to send to \s-1STDOUT,\s0 including the Content-Type: header. Croaks unless \f(CW\*(C`template\*(C'\fR is supplied. .Sp The config object and variables supplied in \f(CW\*(C`vars\*(C'\fR are passed through to the template specified. Additional Template Toolkit variables are automatically set and passed through as well, as described below. \&\fBNote:\fR variables set in \f(CW\*(C`vars\*(C'\fR will over-ride any variables of the same name in the config object or the user cookies. .RS 4 .IP "\(bu" 4 \&\f(CW\*(C`openguides_version\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`site_name\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`cgi_url\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`full_cgi_url\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`enable_page_deletion\*(C'\fR (gets set to true or false \- defaults to false) .IP "\(bu" 4 \&\f(CW\*(C`contact_email\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`stylesheet\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`home_link\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`formatting_rules_link\*(C'\fR (unless \f(CW\*(C`omit_formatting_link\*(C'\fR is set in user cookie) .IP "\(bu" 4 \&\f(CW\*(C`navbar_on_home_page\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`home_name\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`gmaps_api_key\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`licence_name\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`licence_url\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`licence_info_url\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`prefs\*(C'\fR (the preferences from the user cookie) .RE .RS 4 .Sp If \f(CW\*(C`node\*(C'\fR is supplied: .IP "\(bu" 4 \&\f(CW\*(C`node_name\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`node_param\*(C'\fR (the node name escaped for use in URLs) .RE .RS 4 .Sp Content-Type: defaults to \f(CW\*(C`text/html\*(C'\fR and is omitted if the \&\f(CW\*(C`content_type\*(C'\fR arg is explicitly set to the blank string. .Sp However, what you more often need is the \f(CW\*(C`noheaders\*(C'\fR option, which suppresses all \s-1HTTP\s0 headers, not just the Content-Type. .Sp The \s-1HTTP\s0 response code may be explictly set with the \f(CW\*(C`http_status\*(C'\fR arg. .RE .IP "\fBextract_metadata_vars\fR" 4 .IX Item "extract_metadata_vars" .Vb 1 \& my %node_data = $wiki\->retrieve_node( "Home Page" ); \& \& my %metadata_vars = OpenGuides::Template\->extract_metadata_vars( \& wiki => $wiki, \& config => $config, \& metadata => $node_data{metadata} \& ); \& \& # \-\- or \-\- \& \& my %metadata_vars = OpenGuides::Template\->extract_metadata_vars( \& wiki => $wiki, \& config => $config, \& cgi_obj => $q \& ); \& \& # \-\- then \-\- \& \& print OpenGuides::Template\->output( \& wiki => $wiki, \& config => $config, \& template => "node.tt", \& vars => { foo => "bar", \& %metadata_vars } \& ); .Ve .Sp Picks out things like categories, locales, phone number etc from \&\s-1EITHER\s0 the metadata hash returned by Wiki::Toolkit \s-1OR\s0 the query parameters in a \s-1CGI\s0 object, and packages them nicely for passing to templates or storing in Wiki::Toolkit datastore. If you supply both \&\f(CW\*(C`metadata\*(C'\fR and \f(CW\*(C`cgi_obj\*(C'\fR then \f(CW\*(C`metadata\*(C'\fR will take precedence, but don't do that. .Sp The variables \f(CW\*(C`dist_field\*(C'\fR, \f(CW\*(C`coord_field_1\*(C'\fR, \f(CW\*(C`coord_field_1_name\*(C'\fR, \&\f(CW\*(C`coord_field_1_value\*(C'\fR, \f(CW\*(C`coord_field_2\*(C'\fR, \f(CW\*(C`coord_field_2_name\*(C'\fR, and \&\f(CW\*(C`coord_field_2_value\*(C'\fR, which are used to create various forms, will only be set if \fIeither\fR \f(CW\*(C`metadata\*(C'\fR is supplied \fIor\fR \&\f(CW\*(C`set_coord_field_vars\*(C'\fR is true, to prevent these values from being stored in the database on a node commit. .SH "AUTHOR" .IX Header "AUTHOR" The OpenGuides Project (openguides\-dev@lists.openguides.org) .SH "COPYRIGHT" .IX Header "COPYRIGHT" .Vb 1 \& Copyright (C) 2003\-2013 The OpenGuides Project. All Rights Reserved. .Ve .PP This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.