Hi
On Mon, Aug 3, 2009 at 10:31 PM, Fabio Mancinelli <
fabio.mancinelli(a)xwiki.com> wrote:
On Aug 3, 2009, at 6:27 PM, Asiri Rathnayake wrote:
While the
"every plugin could declare to be in a given category" is
easily casted to the Macro world, I am not sure how to translate the
"every plugin is free to add new categories".
How about like this:
* Each macro has a getCategory() method.
* Macro manager calls this method and if the category is an existing
one, it
is put into that collection.
The problem with this is that a "category" is a data structure so test
for equality could be problematic.
Imagine 3 macros return:
ID:category1
Name:Foo foo foo
Icon:foo.jpg
ID:category1
Name:Bar bar bar
Icon:bar.jpg
ID:category2
name:Foo foo foo
Icon:baz.jpg
How would you handle this?
My idea was to make a "category" not a data structure but a simple string
only, I don't think there is a requirement for categories to be data
structures at this moment (IMHO).
As vincent suggested, getCategory() method of MacroDescriptor could:
1. Check if "org.xwiki.macro.<macro_name>.category" configuration option
is
set in xwiki.properties
2. If it is set, return that value.
3. Otherwise, return a default value
This would allow editing macro categories and arranging macros into
categories as admins prefer. I wonder what Guillaume thinks about this :)
Few issues with this approach arises with MacroManager::getCategories() &
MacroManager::getMacrosForCategory() method implementations. Since we have
dynamic macro registrations (wiki macros), each of these methods will have
to build the response by going through all the macros in the system.
- Asiri
Imho, getCategory() should return a simple string that
is an id of a
category defined and stored in a "registry"
The problem is how could a macro put a category inside this registry?
Maybe at initialization time it could do store new categories in the
registry (if it wants to do so) so that a subsequent call to
getCategory would return an existing id.
The registry could also be populated by default with a set of
"standard" categories (maybe defined in some wiki pages).
-Fabio
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs