Vincent Massol wrote:
> On Sep 5, 2008, at 12:08 PM, Jean-Vincent Drean wrote:
> 
>> On Fri, Sep 5, 2008 at 11:58 AM, Vincent Massol <[EMAIL PROTECTED]>  
>> wrote:
>>>> The second proposal is a temporary hack for hiding documents. The  
>>>> idea
>>>> is to add a new field in the XWikiDocument class, 'hidden', which  
>>>> will
>>>> be automatically used in searchDocuments and countDocuments to  
>>>> filter
>>>> out special documents. This is a workaround until we will be able to
>>>> tag
>>>> special documents or spaces, and will allow to create special
>>>> documents
>>>> needed for an application inside the main application's space,  
>>>> instead
>>>> of the generic XWiki space. Such hidden pages won't appear in normal
>>>> search results, the index page or the navigation panel.
>>> -0 (close to -1) till you explain what is wrong with the solution
>>> below :)
>>>
>>> This could also be implemented using a special Tag (like:
>>> "xwiki:hidden" for example).
>>>
>>> I was going to say: "In general I think we need the ability to add
>>> generic metadata to a document.". however this already exists: it's
>>> called Objects! :)
>>> So I think instead of adding more and more fixed metadata we might
>>> instead want to use Objects. Either reuse the existing Tag or  
>>> create a
>>> new Visibility class/objects.
>>>
>>> What are the cons of using Objects for this feature?
>>>
>> At first sight I'd say that using objects (including current tag
>> feature) would lead to complex queries.
> 
> Yes but that's an API problem not a design one.
> 
> If our API makes it complex to do queries on objects then we should  
> fix it.  Not do workarounds! Because if we do this then we acknowledge  
> that the whole foundation of XWiki is bad (i.e. Class/Objects don't  
> work). That would be a shame :)

New XWiki Query Language is targets this problem.
There is easy to query objects on xwql.
example:

If XWiki.Hidden is just a document flag:
  "from Document as doc, doc.object(XWiki.Hidden) as h"

If not:
"from Document as doc left join doc.object(XWiki.Visibility) as v
  where v is null  or  v.hidden=false"

We can also introduce special syntax "doc.object?(XWiki.Visibility)" for 
left joins:

"from Document as doc, doc.object?(XWiki.Visibility) as v
  where v is null  or  v.hidden=false"

or even:
"where doc.object?(XWiki.Visibility).hidden=false"

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

Reply via email to