Pustefix Reference Documentation

Jens T. Lautenbacher

Martin Leidig

Sebastian Marsching

Stephan Schmidt


Table of Contents

Introduction
1. Installation
1.1. Requirements
1.2. Prepare the project directory
1.3. Unpack the skeleton
1.4. Configure Eclipse
1.5. Build parameters & first build
2. Architecture
2.1. High Level View
2.2. The Pustefix backend system
2.3. Recursive XSL Transformations
2.3.1. XSL Targets
3. Configuring Pustefix
3.1. Overview
3.2. Customization tools
3.3. Global configuration files
3.3.1. XML property files syntax
3.3.2. Factory loader configuration (factory.xml)
3.3.3. Global properties (pustefix.xml)
3.3.4. Global projects configuration (projects.xml)
3.4. Project configuration files
3.4.1. Project descriptor (project.xml)
3.4.2. Page Configuration (depend.xml)
3.4.3. ContextXMLService configuration file
3.4.4. DirectOutputService configuration file
3.4.5. WebServices
3.4.6. Configuration Fragments
4. Core Pustefix tag library
4.1. Defining the structure of a document
4.1.1. Structure of a Type 1 document
4.1.2. Structure of a Type 2 document
4.2. Creating links to internal and external pages
4.2.1. pfx:button
4.2.2. pfx:url
4.2.3. pfx:elink
4.3. Including text and images
4.3.1. Include parts (<pfx:include>)
4.3.2. Generated include requests (<pfx:maincontent>)
4.3.3. Displaying images (<pfx:image>)
4.4. Handling HTML forms
4.4.1. Form creation
4.4.2. Submitting forms
4.4.3. Arguments, comands and anchors
4.4.4. Form elements
4.4.5. Handling error conditions
4.4.6. Avoiding duplicate form submission
4.5. Miscellaneous utility tags
4.5.1. Checking page status
4.5.2. Displaying content based on the language
4.5.3. Displaying content based on the theme
4.5.4. Using the Pustefix console
5. Important Concepts
5.1. HTTP request handling
5.1.1. HttpRequestHandlers provided by the core framework
5.2. Processing of Requests
5.2.1. The Context
5.2.2. PageFlow
5.2.3. States
5.2.4. Influencing the page request cycle
5.2.5. The basic Pustefix Request Cycle
5.2.6. Pustefix State implementations
5.2.7. Pustefix PageFlow implementation: DataDrivenPageFlow
5.3. The data model: Context resources
5.4. Wrappers and Handlers
5.4.1. IWrappers
5.4.2. The IHandler interface
5.5. StatusCodes
6. Advanced topics
6.1. Variants and Themes
6.1.1. Themes
6.1.2. Variants
6.2. Internationalisation
6.2.1. Internationalisation in the presentation layer
6.2.2. Internationalisation in the business logic
6.3. Authentication and authorization
6.3.1. Managing Roles
6.3.2. Custom conditions
6.3.3. Custom RoleProvider
6.4. AJAX services
6.4.1. Service configuration
6.4.2. Exception handling
6.4.3. Development tools
6.4.4. Callback mechanisms
6.4.5. Type mapping
6.5. Object-to-XML mapping
6.5.1. Serialization process
6.5.2. Built-in serializers
6.5.3. Custom serializers
6.6. Annotation-based IWrapper creation
6.6.1. IWrapper annotations
6.7. Scripted workflows
6.7.1. Parameters and Variables
6.7.2. Statements
6.8. Scripting Langauge support
6.8.1. IHandler
6.8.2. State
6.8.3. Implementation Details
6.9. Servlet Filters
6.9.1. Servlet Filter Implementation details
6.9.2. Servlet Filter Configuration
6.10. The Pustefix Editor
7. Module Support
7.1. Different module types
7.1.1. Resources within library JARs
7.1.2. Resources placed in modules/ directory
7.2. Actions applied on module resources after unpacking
7.3. Creating new modules using the Maven archetype
Glossary

List of Figures

2.1. High Level View of the system
2.2. The Pustefix backend system
2.3. Recursive XSL transformations
5.1. Pustefix HTTP request handlers

List of Tables

3.1. Exception processor properties
3.2. Attributes of the <make> tag
3.3. Attributes of the <page> tag
3.4. Attributes of the <target> tag
3.5. Attributes of the <target> tag
4.1. The Core Pustefix XSLT Tags
4.2. Attributes of the pfx:button tag
4.3. Attributes of the pfx:include tag
4.4. Attributes of the pfx:maincontent tag
4.5. Attributes of the pfx:image tag
4.6. Attributes of the pfx:forminput tag
4.7. Attributes of form submit controls
4.8. Attributes of pfx:anchor
4.9. Attributes of pfx:argument
4.10. Attributes of pfx:command
4.11. Attributes of pfx:xinp[@type="text"]
4.12. Attributes of pfx:xinp[@type="radio|check"]
4.13. Attributes of pfx:xinp[@type="select"]
4.14. Attributes of pfx:option
4.15. Attributes of the pfx:checkactive and pfx:checknotactive tags
5.1. Variables of the context during processing
5.2. Attributes of an iwrp parameter

List of Examples

4.1. Using <pfx:checkfield>
6.1. Configuring roles