mantisbt:addson_requirements
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
mantisbt:addson_requirements [2007/09/06 02:03] – Much more detailed requirements vboctor | mantisbt:addson_requirements [2008/10/29 04:25] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Mantis | + | ====== Mantis |
* **Author:** Victor Boctor | * **Author:** Victor Boctor | ||
Line 6: | Line 6: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | Mantis currently supports some extensibility features like custom fields, custom functions, custom constants, and custom strings. | + | Mantis currently supports some extensibility features like custom fields, custom functions, custom constants, and custom strings. |
===== Types of Plug-in ===== | ===== Types of Plug-in ===== | ||
Line 19: | Line 19: | ||
* Ability to detect all plug-ins in the Mantis directory structure. | * Ability to detect all plug-ins in the Mantis directory structure. | ||
- | * From the manage plug-ins page, allow administrators (configurable threshold) to install / un-install | + | * From the manage plug-ins page, allow administrators (configurable threshold) to install / un-install |
- | * Keep track of the installed | + | * Keep track of the installed |
* Extend the database scheme upgrade script to support modules. | * Extend the database scheme upgrade script to support modules. | ||
* Detailed documentation about how to implement Mantis plug-ins. | * Detailed documentation about how to implement Mantis plug-ins. | ||
Line 47: | Line 47: | ||
lang/ | lang/ | ||
modules/ | modules/ | ||
- | | + | |
- | *.css | + | |
- | images/ | + | |
- | logo.jpg (some plugins may have logos, file name is configurable) | + | images/ |
- | core/ | + | logo.jpg (some plugins may have logos, file name is configurable) |
- | | + | core/ |
- | | + | javascript/ |
- | *.js | + | *.js |
- | doc/ | + | doc/ |
- | readme.html | + | readme.html |
- | lang/ | + | lang/ |
- | strings_english.txt | + | strings_english.txt |
- | pages/ | + | pages/ |
- | (new pages - included from module_page.php based on module name and action) | + | (new pages - included from module_page.php based on module name and action) |
- | # | + | # |
- | # | + | # |
- | # | + | # |
</ | </ | ||
Line 88: | Line 88: | ||
The following pages will allow management of plug-ins and all their related details: | The following pages will allow management of plug-ins and all their related details: | ||
- | - manage_modules_page.php: | + | * manage_modules_page.php: |
- | - manage_modules_add.php: | + | |
- | - manage_modules_remove.php: | + | |
- | - module_page.php: | + | |
===== Plug-ins APIs ===== | ===== Plug-ins APIs ===== | ||
Line 97: | Line 97: | ||
This is the standard APIs that are used in managing modules and allowing modules to interact with some standard Mantis functionality. | This is the standard APIs that are used in managing modules and allowing modules to interact with some standard Mantis functionality. | ||
- | - module_event - trigger an event with the appropriate parameters. | + | * module_event - trigger an event with the appropriate parameters. |
- | - module_event_is_subscribed() - check before doing extra work for the event. | + | |
- | - module_include_all() | + | |
- | - module_include_lang() | + | |
- | - module_include_css() | + | |
- | - module_include_javascript() | + | |
- | - module_get_info( $p_module_name ); | + | |
- | - module_install( $p_module_name ); | + | |
- | - module_get_dependencies( $p_module_name ) | + | |
- | - module_can_install( $p_module_name ) | + | |
- | - module_get_depedents( $p_module ) | + | |
- | - module_can_uninstall( $p_module ) | + | |
===== Events ===== | ===== Events ===== | ||
Line 200: | Line 200: | ||
* max access level | * max access level | ||
* for each project? | * for each project? | ||
+ | |||
+ | ===== To be Spec'd ===== | ||
+ | |||
+ | * Detail the parameters sent to each of the events. | ||
+ | * How are the plug-ins going to be distributed. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
===== Feedback ===== | ===== Feedback ===== | ||
This is still in progress, but you are free to contribute ideas. | This is still in progress, but you are free to contribute ideas. | ||
+ | |||
+ | * (DGtlRift) I would say that in " | ||
+ | * plugin version - could be used by a plugin manager to query if there is an updated plugin available from the plugin' | ||
+ | * minimum mantis compatibility version - verify that this plugin will actually work with this version of mantis. | ||
+ | * (DGtlRift) I would also suggest that the " | ||
+ | * I'm also thinking that it may be easier to use a hash table to store the constants in # | ||
+ | * Perhaps XML would be better for having this info | ||
+ | * (deboutv) In my plugin manager, I have chosen to provide Mantis plugin in pkg format. This file is the result of a zip and a serialize of an array => gzcompress( serialize( array ), 9 ); The array contains the following fields: | ||
+ | < | ||
+ | $t_pkg[' | ||
+ | $t_pkg[' | ||
+ | // | ||
+ | $t_pkg[' | ||
+ | $t_pkg[' | ||
+ | $t_pkg[' | ||
+ | $t_pkg[' | ||
+ | </ | ||
+ | * (deboutv) Hacking Mantis with a plugin. We need to think about the security of the Mantis application and its data. Allowing plugins is dangerous because of the content of the plugin (it could pretend to be a BBCode interpreter but in reality it could be a BBCode interpreter and a spy). With a plugin (ie: code of third parties), you can read/write the SQL database, grant priviledges to the users... | ||
+ | * (DGtlRift) There should also be a description of how plugins themselves should generate events. | ||
+ | * (DGtlRift) Re: Distribution. | ||
+ | * The most simple way is to just have a list of tar.gz compressed archives of each plugin. | ||
+ | * The next option would be to offer the ability to install via the admin interface, where Mantis would check against a web list of available plugins and download (to the server) and install the plugin (requiring Mantis to have write privileges) to the plugins directory. | ||
+ | * Another option is to have all the plgins in RPM form - which would automate installation for the sysadmin. | ||
+ | * (DGtlRift) Should the plugins be globally " | ||
==== First implementation ==== | ==== First implementation ==== |
mantisbt/addson_requirements.1189058588.txt.gz · Last modified: 2008/10/29 04:32 (external edit)