This adds a new method that capsulates the access check that has to be
done to decide if an admin plugin's page should be shown to the user.
The default implementation is the same as before, relying only on the
forAdminOnly() method and the users' isadmin or ismanager status.
Admin plugins themselves can override the method to do additional
checks. In this patch, I added that to the usermanager plugin which will
only return true if the current auth backend can list users.
However the real idea behind this change is that the new method emits a
new event called ADMINPLUGIN_ACCESS_CHECK which would allow plugins to
overwrite it. This way it could be possible to give certain user groups
access to certain admin plugins without giving them admin or manager
permissions.
Note: this does not change how the "Admin" link is shown, it still
depends on ismanager or isadmin. A plugin as mentioned above would need
to influence the display via the MENU_ITEMS_ASSEMBLY event.
Note: this only covers the basic access check. Admin plugins may need
further adjustments for access to other parts of the plugin (like AJAX
components). An additional commit will update this for the bundled
plugins.
This was previously carried out in three separate places. Refactor
that code to use the new function.
Update tpl_pageTitle test to use a manager level admin plugin.
Classes are loaded throug PHP5's class autoloader, all other
includes are just loaded by default. This skips a lot of
require_once calls.
Parser and Plugin stuff isn't handled by the class loader yet.
This patch completely reworks pluginutils to:
- reduce the number of file accesses to enumerate and load plugins
- change the way disabled plugins are recorded.
a disabled plugin will now have ".disabled" added to its directory name
(this halves the number of file accesses required to enumerate installed plugins)
- place the guts of pluginutils code inside a class, Doku_Plugin_Controller,
the existing access routines are preserved and no changes are required.
- add two globals, $plugin_controller_class & $plugin_controller
this allows preload.php to define its own plugin controller class
- update config plugin to support new plugin structure
config plugin now issues a PLUGIN_CONFIG_PLUGINLIST event before it
finalizes the list of plugins it will be working with. Handlers of this
event can remove plugins from the list.
- update plugin manager plugin to support new plugin structure
plugin manager now issues a PLUGIN_PLUGINMANAGER_PLUGINLIST event similarly
to config plugin.
- plugin manager updated to redirect after changes to plugins and to use msg()
Finally, this patch contains a one-shot action plugin which will automatically
convert a plugins directory from the old style disabled file to the new style.
Note for darcs users, the new disabled format will mean a couple of old oneshot
plugins, importoldchangelog and importoldindex, will have their directory names
changed, which could lead to darcs wanting to record the change.
darcs-hash:20090118190143-f07c6-d2e79af546a49a4af5817dd0c5cc27066e67c4d0.gz
The namingscheme for renderer plugins now matches the other types, the plugin
manager now returns info on renderer plugins, too
darcs-hash:20070120002731-7ad00-fcea93a6a6da807103b6aa82d6472196125cb3ec.gz
This patch adds events and a third plugin type, "action" plugins, to DokuWiki.
The patch doesn't include any event signalling, that will be added in later patches.
Action plugins are loaded before most Dokuwiki processing takes place and at the
same time are given the opportunity to register handlers (or hooks) to receive
specific dokuwiki events.
Other parts of Dokuwiki (e.g. templates and syntax plugins) can also register
handlers to receive events.
Any part of Dokuwiki can create and signal events, including templates and plugins.
This patch also revises the admin plugin class by making it an extension of a
new class, DokuWiki_Plugin. The DokuWiki_Plugin_Action class also extends this
new class.
Further details of events, their signalling and handling, and of action plugins will
be added to wiki.splitbrain.org in due course :-)
darcs-hash:20060414193737-9b6ab-f23d3d9b93e4c50a3ad97ced03eabc6c0363650b.gz
This patch cleans up the source code to satisfy the coding guidelines (see
http://wiki.splitbrain.org/wiki:development#coding_style)
It converts files to UNIX lineendings and removes tabs and trailing
whitespace. Not all files were cleaned yet.
darcs-hash:20060217222040-7ad00-bba3d2bee3b5aa7cbb5184258abd50805cd071bf.gz
Plugins can use their own styleheets now. They are loaded in the tpl_metaheader
function.
The following files are used if existing in the plugin's directory:
style.css - overall style used always
screen.css - only used in normal view (media
darcs-hash:20050731073521-7ad00-dcece7a255d3b08a1d2da9f2444b31e628ee76ea.gz
This patch allows the use of $this in syntax plugins to set internal variables
and let them remain between handle and render calls. Even when it is possible
now to use this method you should exchange data betwenn handler and render calls
by using the $data array only.
darcs-hash:20050730215156-7ad00-69ea79859360d9902533633395de3e1b677f6e46.gz
Syntax plugins now need to implement getSort() which should return a number.
This number is used to add all syntax modes in the correct order. To see a
list in which order current modes are loaded you can use the info plugin like
this:
~~INFO:syntaxmodes~~ lists all known modes (includes existing plugins) with
their sorting score
~~INFO:syntaxtypes~~ lists all syntax types and their registered modes (useful
for implementing the getType() function.
darcs-hash:20050521210430-9977f-2baaf6043afc6ea3fed41cdca97564218fb519c2.gz