[geeklog-devel] Re: Geeklog 2 Module API

Tony Bibbs tony at tonybibbs.com
Mon Oct 20 19:25:59 EDT 2003

Related to this, I'd like to see modules be more flexible than simply 
supporting center blocks.  I have been reading a bit on the Java Portlet 
technology that basically allows you to break a single page up into 
portlets or little windows.  The size of the portlets are configurable 
and it is up to the module to return the content for the individual 
portlet.  I don't feel we should make our solution near as complicated 
as the Java version (otherwise where is our value-add) but I do think we 
should support more flexible layout types.

I will think about how this might effect the API.


Blaine Lang wrote:
> Vinny,
> I like the idea of having the plugin register itself with their capabilties.
> As Tom notes, there may also be a way for a plugin to advertise new services
> that may be available.
> - Examples that I have close to release are:
> 1) Support for Smilies - Add/Edit Admin plus the replace functions but
> standard Story Edit and Comment functions could also use this
> 2) Private Messenger - The one in chatterblock was a quick hack compared to
> the new one I have now but other plugins may want to leverage this feature.
> Example, I created a Project Mgmt Plugin for a client and they wanted the
> options to received task notifications via the Private Messenger.
> Another example is an image mgmt plugin that would provide a service to
> allow users to add images to stories or other plugins that have content
> functionality.
> But as Tom notes, we will need someway to facilite or mediate over
> conflicts.
> Would there be a need to have or want a plugin function replace a core
> function ?
> I was not sure if you have used the most recent release when you reviewed
> the PLG API functions. Dirk has added a number of new ones for syndication.
> What about an internal Messaging protocal or service for plugins and Core
> compoents to share or exchange information ?
> GL 1.3.8 Added the new functions to extend the User and Account Profiles -
> this was a great addition. If only now we had a way to auto extend or modify
> the templates. GL2 will need to support a much improved template engine as
> noted many times < but I digress off topic>
> Is there a need to add an API to add/edit information to the cookie or
> session variables ?
> I can't think of any new API's that are needed. The 1.3.x framework has been
> very good at fleshing this out and it's been nicely extended over the past
> year.  I have not looked at XOOPS2 to see what they have done -  that may be
> helpfull for ideas.
> I'd like to see a way to import in a new plugin. Similar to a JAR file - a
> zip file with the defined structure. The Plugin installer would un-archive
> the contents, create the directories and run the installer script. I'd put
> my hand up to work on that one. I think we need to also look at the Block
> admin and have a similar feature.
> Note: We may want to move some of the GL2 Discussion to the Geeklog.net
> Forum. I can create a Developers Category and Forums that are restricted.
> ----- Original Message -----
> From: "Vincent Furia" <vmf at abtech.org>
> To: "Tony Bibbs" <tony at tonybibbs.com>
> Cc: "Geeklog Development" <geeklog-devel at lists.geeklog.net>
> Sent: Monday, October 20, 2003 2:29 AM
> Subject: [geeklog-devel] Re: Geeklog 2 Module API
>>OK, here is a first go at the module/plugin API to get things started.
>>I thought that I would start by recommending that plugins "register"
>>themselves during install with geeklog, including whether they use the
>>different plugin APIs (moderation, comments, ratings, search, etc) so as
>>to eliminate the "doesXXXX" type functions that may be needed otherwise
>>(should also make things more efficient when calling functions for
>>multiple plugins).
>>In any case, please make lots of recommendations.  This doesn't really
>>add much to what a plugin can do in GL 1.3.x, any new ideas would be
>>very much appreciated.
>>interface glPlugin {
>>    /* installation functions */
>>    function install();                /* install the plugin */
>>    function uninstall();            /* uninstall the plugin */
>>    function upgrade();                /* upgrade the plugin from a
>>previous version */
>>    function getVersion();            /* return plugin name and version
>>(author(s)?, website?)*/
>>    /* user modifications */
>>    function onNewUser();            /* process new user */
>>    function onDeleteUser();        /* process user deletion */
>>    /* moderation */
>>    function getSubmissionForm();    /* return the form for plugin
>>submission */
>>    function getModerationList();    /* return list of items for
>>moderation */
>>    function onApproveSubmission();    /* process a submission approval */
>>    function onDeleteSubmission();    /* delete a submission */
>>    function onEditSubmission();    /* return the form to edit a
>>submission */
>>    function getSubmissionCount();  /* return count of current
>>submissions */
>>    /* search functions */
>>    function getSearchResults();    /* search items for keywords */
>>    function getSearchTypes();        /* return plugin search options */
>>    /* comment functions */
>>    function onCommentAction();        /* plugin action on comment
>>submit, delete, etc */
>>    function getCommentParent();    /* for display of the parent above
>>comments */
>>    /* ratings functions */
>>    function onRatingAction();        /* plugin action  on ratings
>>actions (submit rating) */
>>    /* menu/display items */
>>    function getMenuItems();        /* return menu items related to the
>>plugin */
>>    function getUserMenu();            /* return user menu options */
>>    function getAdminMenu();        /* return admin menu options */
>>    function getControlMenu();        /* return control menu options */
>>    function getCenterBlock();        /* return centerblock */
>>    /* profile */
>>    function getProfileBlock();        /* display plugin block profile
>>values */
>>    function getEditProfileBlock();    /* return form to edit block
>>profile values */
>>    function getProfileVar();        /* display plugin variable profile
>>values */
>>    function getEditProfileVar();    /* return form to edit variable
>>profile values */
>>    function saveProfileOptions();  /* save plugin profile options */
>>    /* export files (rdf feeds, ical files, etc) */
>>    function getExportNames();        /* return export file names the
>>plugin uses */
>>    function getExportContent();    /* return export file content */
>>    function getExportCurrent();    /* return if exports are current */
>>    /* other */
>>    function getHeaderCode();        /* return plugin JS or Meta Data */
>>    function getStats();            /* return plugin stats information */
>>geeklog-devel mailing list
>>geeklog-devel at lists.geeklog.net
> _______________________________________________
> geeklog-devel mailing list
> geeklog-devel at lists.geeklog.net
> http://lists.geeklog.net/listinfo/geeklog-devel

|Tony Bibbs         |[R]egardless of what you may think of our penal   |
|tony at tonybibbs.com |system, the fact is that every man in jail is one |
|                   |less potential fisherman to clutter up your       |
|                   |favorite pool or pond. --Ed Zern                  | 


More information about the geeklog-devel mailing list