Hello all,
I finally am glad that I can publish my work on the plugin system.
The idea for this happened before the ICCM, when some of the OpenPetra Team met in the German office.
We came to the conclusion that OpenPetra cannot fit all requirements by all offices. For the german office, we had to add functionality and change the standard behaviour of OpenPetra.
The problem is that these changes directly in OpenPetra make the code harder to maintain for everyone.
The solution is a plugin system.
At the moment, I have only worked on functionality that has its own screens. Therefore, only changes to the client and server config files and the UINavigation.yml file are necessary.
In the future, I will work on defined interfaces that are implemented by a plugin. The plugin will be called depending on a config parameter.
This work is already based on the web services remoting branch.
The 2 Plugins that I have implemented already are published here:
github.com/SolidCharity/OpenPetraPlugin_SEPA
github.com/SolidCharity/OpenPet ... trationFee
My modified remoting branch is here:
code.launchpad.net/tpokorra/op ... gin_system
It is possible when working with git, to use git submodules, to link selected plugins into a OpenPetra working directory.
This is how I will implement it for the German office: I will have a private branch of OpenPetra hosted on Github, that includes the modified config files, the modified UINavigation.yml, and the selected plugins as submodules.
But it is also possible to manually download the plugins as zip or tar.gz files and extract them into the directory: csharp/ICT/Petra/Plugins/
I have extended our build tools, so that nant generateSolution will build csproj files, generate winforms included in the plugins, do the glue stuff, even does build typed datasets, etc
The plugin dlls and *.asmx files are included in the installer.
Manual modifications are needed, as mentioned above, for config files and UINavigation.yml
The next steps will be to move more of my modifications for the German office into public plugins. This means that I will remove some code from OpenPetra core, which will make maintenance and testing easier.
Please have a look at the code, and let me know what you think!
Timotheus