some more information on how extensions work

This commit is contained in:
Uwe Steinmann 2014-12-08 14:31:07 +01:00
parent 44399154b8
commit 8d9d7fddd9

View File

@ -5,7 +5,8 @@ Since verson 5.0.0 SeedDMS can be extended by extensions. Extensions
can hook up functions into certain operations, e.g. can hook up functions into certain operations, e.g.
uploading, removing or displaying a document. They can also be uploading, removing or displaying a document. They can also be
used to modify some of the internal variables like the list of used to modify some of the internal variables like the list of
translations. translations and they can even replace classes in the core of
seeddms and hook up functions into certain operations in the core.
All extensions are located in the folder 'ext'. Each extension All extensions are located in the folder 'ext'. Each extension
has its own folder named by the name of the extension. The central has its own folder named by the name of the extension. The central
@ -16,7 +17,8 @@ a method init() which is called with any page request. The
configuration itself is cached and must be updated within configuration itself is cached and must be updated within
the extension manager if it was changed. the extension manager if it was changed.
The integration into SeedDMS is done by hooks. SeedDMS manages The integration into SeedDMS is done by hooks, class and file
overloading. SeedDMS manages
a globally available array of hooks ($GLOBALS['SEEDDMS_HOOKS']). a globally available array of hooks ($GLOBALS['SEEDDMS_HOOKS']).
This array has the elements 'view' and 'controller'. All entries This array has the elements 'view' and 'controller'. All entries
in those array elements contain instances of self defined classes in those array elements contain instances of self defined classes
@ -29,3 +31,23 @@ class SeedDMS_ExtExample_ViewFolder {
... ...
}; };
The same approach is implemented for hooks called from the controller
logic (the op/op.*.php files).
$GLOBALS['SEEDDMS_HOOKS']['controller']['removeFolder'][] = new SeedDMS_ExtExample_RemoveFolder;
class SeedDMS_ExtExample_RemoveFolder {
...
};
Based on these two variants of adding hooks to the seeddms application code,
the seeddms core can be extended by implementing the controller hook 'initDMS'
which is called right after the class SeedDMS_Core_DMS has been initiated.
Beside hooks and callbacks another way of modifying seeddms is given
by overloading the files in the directory 'views' and 'controllers'. Both
directories contain class files with a single class for either running
controller or view code. If an extension provides those file in its
own extension dir, they will be used instead of the files shipped with
seeddms.