API:perl lib/EPrints/Apache/Template.pm

From EPrints Documentation
Jump to: navigation, search

EPrints 3 Reference: Directory Structure - Metadata Fields - Repository Configuration - XML Config Files - XML Export Format - EPrints data structure - Core API - Data Objects


API: Core API

Latest Source Code (3.4, 3.3) | Revision Log | Before editing this page please read Pod2Wiki


NAME

EPrints::Apache::Template - Template Applying Module


SYNOPSIS

<?xml version="1.0" standalone="no"?>
<!DOCTYPE html SYSTEM "entities.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epc="http://eprints.org/ep3/control">
  <head>
	  <title><epc:pin ref="title" textonly="yes"/> - <epc:phrase ref="archive_name"/></title>
  ...


DESCRIPTION

This module renders HTML page content using a template.

Templates are parsed and rendered at server start-up, expanding phrases and any EPC. If you need to include dynamic content in the page use use a pin generated via perl_lib/EPrints/Apache/Template.pm/Dynamic Pins.

The page title, content and other core page structures are supplied via perl_lib/EPrints/Apache/Template.pm/Default Pins.


Static HTML Pages

Static files with the .xpage extension are rendered using templates:

  <?xml version="1.0" encoding="utf-8"  standalone="no"  ?>
  <!DOCTYPE page SYSTEM "entities.dtd" >
  <xpage:page xmlns="http://www.w3.org/1999/xhtml" xmlns:xpage="http://eprints.org/ep3/xpage" xmlns:epc="http://eprints.org/ep3/control">
    <xpage:template>default</xpage:template>
    <xpage:head>
      <style type="text/css">h1 { text-weight: bold }</style>
    </xpage:head>
    <xpage:title>My first XPage</xpage:title>
    <xpage:body>
      Writing XPages is easy.
    </xpage:body>
  </xpage:page>

<xpage:template> is a special pin that, instead of supplying content to the template, changes the template used for rendering. The content is just the template name (without the .xml extension).


Default Pins

  • title
The title of the page.
  • page
The page content.
  • login_status_header
HTML <head> includes for the login status of the user - currently just some JavaScript variables.
  • head
Page-specific HTML <head> contents.
  • pagetop
(Unused?)
  • login_status
A menu containing EPrints::Plugin::Screens that appear in key_tools. The content from each plugin's render_action_link is rendered as a HTML <ul> list.
Historically this was the login/logout links plus key_tools but since 3.3 login/logout are Screen plugins as well.
  • languages
The render_action_link from EPrints::Plugin::Screen::SetLang.


Dynamic Pins

In cfg.d/dynamic_template.pl:

  $c->{dynamic_template}->{function} = sub {
    my( $repo, $parts ) = @_;
  
    $parts->{mypin} = $repo->xml->create_text_node( "Hello, World!" );
  };

In archives/[archiveid]/cfg/templates/default.xml (copy from lib/templates/default.xml if not already exists):

  <epc:pin ref="mypin" />

Or, for just the text content of a pin:

  <epc:pin ref="mypin" textonly="yes" />


METHODS

SEE ALSO

The directories scanned for template sources are in EPrints::Repository/template_dirs.


COPYRIGHT

Copyright 2000-2011 University of Southampton.

This file is part of EPrints http://www.eprints.org/.

EPrints is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

EPrints is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with EPrints. If not, see http://www.gnu.org/licenses/.