Hi Guillaume,

On Oct 1, 2013, at 12:21 PM, Guillaume Louis-Marie Delhumeau 
<[email protected]> wrote:

> Hi devs !
> 
> In 5.2, we have introduced Workspace Application in XE. Now, we should go
> further and merge Wiki Application with Workspaces.
> 
> = New idea =
> * Add a "hidden" field to the Wiki. For example, I would like to be able to
> create wiki:
> ** which can not be seen by others
> ** which does not appear in searches
> ** e.g: workspacetemplate, or on a farm if I don't want people to know that
> I host a company AND its competitor

So if i understand correctly:
* This "hidden" field would be in the wiki descriptor right?
* If the user selects "show hidden documents" (which might need to be renamed 
to something more generic now) the wiki would be visible and appear in 
searches/etc, right?

> = Options =
> * In your wiki, do you want to have the "Home" menu?

See comments on http://jira.xwiki.org/browse/XWIKI-9518

> * In your wiki, do you want to create your own users?

I would not phrase it like this. Rather: "Allow local users". If enabled then 
global users would work too, in addition to the ability to create local users.

> = XARs and template =
> * The home menu is enabled only if the user want it (trivial)

How is that different from above (ie http://jira.xwiki.org/browse/XWIKI-9518)?

> * The registration button should redirect to the home wiki depending on the
> configuration (trivial)

Why based on configuration? Why not redirect automatically when the user 
doesn't allow local users?

> * Disable XWiki.AdminRegistrationSheet, XWiki.AdminUsersSheet from the
> Administration (depending on the configuration)

Ok so if the wiki doesn't allow local users then don't show admin options 
related to users. Good.

> * Create a new UI, partially based on the current WorkspaceManager and
> WikiManager spaces.

Any more details on this? :)

> = API =
> * Create a new API: xwiki-platform-wiki.
> * The old modules (xwiki-platform-wiki-manager and
> xwiki-platform-workspace) go into legacy, and we mark them as deprecated.
> * The new API will use the new modules of Vincent:
> https://github.com/xwiki/xwiki-platform/compare/feature-resource-and-wiki-modules(wiki-descriptor)
> 
> = Proposal for the API =
> * xwiki-platform-wiki
>  ** xwiki-platform-wiki-descriptor
>    *** xwiki-platform-wiki-descriptor-api
>      **** WikiDescriptor.java
>         ***** ID
>         ***** Alias
>         ***** Hidden
>         ***** Description?
>         ***** Ability to add custom data (where all will be stored)
>      **** WikiDescriptorManager.java
>         ***** getAll()
>         ***** set()
>         ***** remove()
>         ***** getByWikiAlias()
>         ***** getByWikiId()
>  ** xwiki-platform-wiki-manager (but this name conflicts with the previous
> module that we put into legacy...)
>    *** WikiManager.java
>      **** createWiki() (create an empty wiki)
>      **** deleteWiki()
>      **** copyWiki()
>  ** xwiki-platform-wiki-template
>    *** WikiTemplateManager.java
>      **** setWikiAsTemplate()
>      **** unsetWikiAsTemplate()
>      **** getWikiTemplates()
>      **** isWikiTemplate()

What is the rationale for 2 modules instead of one for 
xwiki-platform-wiki-manager and xwiki-platform-wiki-template? (not saying it's 
bad, just curious)

Is it because you want to see template wiki as something optional?

>  ** xwiki-platfrom-wiki-user (handle or not the local users)
>    *** WikiUsersManager.java
>      **** canWikiHasLocalUsers()

Bad name! Suggestion: hasLocalUsers() or supportsLocalUsers()

>      **** setCanWikiHasLocalUsers()

Ouch… Suggestion: hasLocalUsers(boolean) or supportsLocalUsers(boolean).

>      **** getWikiOwner()
>      **** setWikiOwner()
>      **** getMembershipType() (join/invite only/ask to join)
>      **** setMembershipType()
>      **** getWikiUsers() (list of the local users + those who are
> 'members' of the wiki)

Whether the wiki accepts local users or not should be stored in the wiki 
descriptor.

Since you put this in a separate module, does it mean you want to see it as 
some optional module?

>  ** xwiki-platform-wiki-script (for script services)
>    *** Wiki.java (only an helper)
>      **** getDescriptor()
>      **** getId()
>      **** getAlias()
>      **** addAlias()
>      **** removeAlias()
>      **** getReference()
>      **** IsTemplate()
>      **** setIsTemplate()
>      **** getOwner()
>      **** setOwner()
>      **** canHasLocalUsers()
>      **** setCanHasLocalUsers()
>      **** getMembershipType()
>      **** setMembershipType()
>      **** getUsers()
>      **** isHidden()
>      **** setHidden()
>      **** getDescription()
>      **** setDescription()
>    *** WikiManagerScript.java ("$services.wikimanager" but the name
> conflicts with the previous module...)
>      **** getAllWikis()
>      **** getHomeWiki()
>      **** getWikiByAlias()
>      **** getWikiById()
>      **** getWikiTemplates()
>      **** createWiki()
>      **** deleteWiki()
>      **** copyWiki()
>      **** isWikiExists()
>      **** isWikiNameAvailable()
>      **** joinWiki()?
>      **** askToJoinWiki()?

-1. All script services should be located in the modules they wrap.

So if you have 4 modules, I see 4 script services (located in a script package 
in those modules).

You cannot say that the modules are optional and then have a big script module 
that contains everything. It'll obviously not work :)

Example: I don't have xwiki-platfrom-wiki-user JAR, I shouldn't be able to call 
$services.<name>.canHasLocalUsers()

>  ** xwiki-platform-wiki-ui (pages for both the home AND the (sub)wikis)
>      *** …

Need to verify that the UI pages are not related to a given module above. If so 
then that module should have its own UI module to make it optional.

To summarize:
* Either the modules above are optional and they need to be fully optional 
(api, script service, UI) 
* Or they're not optional and why do we need to have so many modules? One would 
be enough (with possibly different packages though).

> + write tests
> + need a migration path
> + in the future:
> * Create a new wiki from a flavor:
> ** instead of creating a wiki from a template, you give an extension ID
> 
> If you like this proposal, I will try to implement it as close it is
> possible, but I may change some elements to minimize dependencies. I will
> tell you.
> 
> WDYT?

Sounds good in general.

Thanks
-Vincent

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to