wCMF  3.6
 All Classes Namespaces Files Functions Variables Groups Pages
extension.doxy
Go to the documentation of this file.
1 /** @page extensionpoints
2  *
3  * @section extensionpoints Points of extension
4  *
5  * The framework offers developers the following main points of extension
6  *
7  * - @ref extpers
8  * - @ref exttype
9  * - @ref extoutput
10  * - @ref extinteraction
11  * - @ref extlayout
12  * - @ref extdataformat
13  *
14  * @subsection extpers Persistence mechanism
15  *
16  * Since the support of a persistence mechanism affects the loading, storing and deleting of
17  * domain objects, corresponding PersistenceMapper subclasses have to be defined. The storing of
18  * application data in a text file for instance requires a FileMapper for each domain class,
19  * which is able to load, delete and alter objects in a text file.
20  *
21  * @subsection exttype Domain classes
22  *
23  * Adding new domain classes first of all requires their definition in the persistence mechanism
24  * (name, attributes, contained domain classes). In a relational database this usually is achieved
25  * by one table per domain class and if necessary additional connection tables, which reflect the
26  * relations between the objects. In the next step a corresponding PersistenceMapper has to be implemented,
27  * which makes the access to the data and the construction of the accompanying domain object possible.@n
28  * If the Node class isn't sufficient for the data representation, a new domain class finally has to be
29  * defined (for details see @ref howtotype).
30  *
31  * @subsection extoutput Output formats
32  *
33  * The output formats, in which the application data is transformed, can be defined via an OutputStrategy.
34  * This strategy may be applied for example by using an OutputVisitor, to which the new format is made accessible
35  * by its method OutputVisitor::setOutputStrategy.@n
36  * If large amounts of data have to be exported, alternatively one of the subclasses of BatchController can be used,
37  * since these allow the splitting of long tasks into packages, which can be handled over multiple page calls.
38  * This is useful for example when exporting static HTML pages from a CMS.
39  *
40  * @subsection extinteraction User interaction
41  *
42  * For defining the user interaction in the simplest case solely one configuration file is needed, which
43  * establishes an order of controllers for certain actions. By that a controller for a complex action
44  * can be defined through the combination of primitive controllers (e.g. a MoveItemController from an
45  * InsertItemController and a DeleteItemController).
46  * If new actions should be added, a new controller has to be implemented (for details see @ref howtoapplication).@n
47  * Another way to vary the user interaction is given through the modification of the views, which means the
48  * modification of the form and link definitions in the templates. By defining different contexts it is also
49  * possible to assign different views to a controller while maintaining the same action (e.g. to display an
50  * input form for data in one context and the preview of the same data in another).
51  *
52  * @subsection extlayout Layout
53  *
54  * The application's appearance is completely described by the views. Since these themselves are defined in
55  * corresponding Smarty templates, modifying the templates makes it quite easy to fit the layout to the special
56  * needs of the application.
57  *
58  * @subsection extdataformat Data exchange formats
59  *
60  * Data sent to the framework and received from the framework is transported in Request and Response instances.
61  * The data is interpreted using an IFormat implementation. This allows to easily implement new data exchange formats.
62  * Already supported formats are HTML (HTMLFormat), JSON (JSONFormat) and SOAP (SOAPFormat).
63  *
64  * Back to the @ref intro | Previous section @ref architecture | Next section @ref configuration
65  *
66  */