Introduction
Server Platform
Application Server
Content Generation
Class Library API
   Runtime System
   WebServer
   Process
   Database
   Page
   Context
   Elements
   Templates
   Menu
   User
   CGI
   Form
   Table
   TreeAdmin
   DirectoryTree
   Application
Manual Index

next | previous

Content Database Templates Class

Templates are used to specify the general layout of documents or document parts. Elements could easily be embedded in those templates, representing dynamic or complex content.

Template Types

Template Types are used, to define classes of documents working on a similar set of elements and application functions, but having a different design and layout. Currently the following types are predefined:

ElementTemplate
plainTemplate
StyleTemplate/
UserTemplate/
standardTemplate/

Accessing Template Elements

Templates may be accessed via the following member function calls. They takes parameters of the form 'parameter name' => 'parameter value'

Template Name
Returns the name of the $i's element
my $Name = $Page->TemplateName ('Number' => $i);
Template Attribute
Returns the attribute of the $i's element
my $Attribute = $PageTemplate->TemplateAttribute ('Number'=> $i);
Template Content
Returns the content of the $i's element
my $Text = $Page->TemplateContent ('type' => 'parsed', 'Number'=> $i);

For example, you can put the following code in a template. If the 'Number' paramter is omited, all elements of this name are displayed.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>

@{[
  $Maxscape::Page::printElements ($self)
}] 

</HEAD>
...

Element Generation Mainloops

The document generation actually takes place in a 'page generation mainloop'. When implementing a sites surface, the 'page generation mainloops' of the related templates must be designed to meet the special requirement.
At this point you may have a look at the file /maxscape/lib/perl/maXscape/SiteApplication/Page.pm, which is included in this distribution The mainloops are called within the template pages to generate the text out of the page elements using the server API,e.g.:

sub standardTemplateLoop {
  my ($self) = @_;
  my $i = 0;

  $::Debug && &::Log ('Page.standardTemplateLoop', "Call standardTemplateLoop");

  if ($self->{Menu})
  {
    $self->{Menu}->pushCategories($self->{Elements}->{Categories});
  }
  $self->{ElementPrintAction} =  {map { $_ =>  1 } @{$self->{ElementsToPrint}}};

  my $Text = $self->TemplateContent('Name' => 'main',
                                    'Type' => 'parsed');
  unless ($Text) {
    $Text .= "At least you must define the template element 'main' "
          .  "containing some text for your "
          .  "template (" .  $self->TemplateName . ')'
          .  " of type (" . $self->TemplateType . ')'
          .  " with number (" .  $self->TemplateMainNumber() . ')'
          .  " containing some content.";
  }
  if ($self->ErrorState()) {
    $Text .= "$self->{ClassName}\->standardTemplateLoop-err:" . $self->resetError();
  }
  return $Text;
}

nextprevioustopbecome a membercontact © Maxscape