========
epoz API
========

This document explains the epoz API for Zope based applications. 
The target audience is people who want to customize or extend Epoz
in Zope on a macro level. A description of the ECMA script API can 
be found in API.txt for larger customizations.

Overview
--------

Most of the epoz magic happens client side in the browser. That's why
epoz is above-all a skin containing code interpreted by the browser.
While the ECMAScripts and the button images are static, the HTML is
meant to be internationalized. That is the only dynamic part of epoz
core.

The real customization is done through custom CSS styles for the looks
and custom configuration for the logic. That concept - separating
configuration and presentation from the actual application - allows us
to use epoz with Apache, Lenya, Silva, Zope2, CMF, and many others.

The 'common' layer contains epoz core elements and default styles and
configuration. Target platform layers such as 'silva' or 'zope3' contain
styles and configuration specific to that platform, and are set up on
top of the 'common' layer.

ZPT macros and slots
--------------------

The markup necessary to display the editor widget is generated in
epozmacros.html. This template defines the following macros:

* epoz_styles

  Contains the necessary default CSS includes for epoz.

* epoz_jsincludes

  Includes the java scripts necessary for epoz. Slots:

  - jsincludes: Fill this slot to provide all ECMAScript includes
    yourself.

  - extra_scripts: Fill this slot if you want to include custom
    ECMAScripts to override/extend epoz's scripts.

* epoz_fulleditor

  Contains the full editor, i.e. buttons and the rich text widget. No
  slots are defined on this level. All of the slots of the submacros
  can be filled, though.

  Submacros:

  * epoz_toolboxes

    Contains epoz tools, such as a search box for making links to
    other content objects. Slots:

    - extra_toolbox: Fill this slot if you want to add another toolbox

  * epoz_toolbar

    Displays the epoz toolbar containing the format selector and
    buttons. Slots:

      - extra_buttons: Fill this slot if you want to add more buttons
        to the toolbar

      - extra_toolbar: Fill this slot if you want to add another widget
        to the toolbar (which is not a button; use extra_buttons for
        adding buttons)

  * epoz_editorframe

    Contains the editor iframe and the invisible textarea. Slots::

     - epoz_inputfield: Fill this slot to include your custom input
       field (typically a text area). This is usefull for telling epoz
       the name of the field, for example.

