<<InsertPage page='WidgetTrail'>>

Abfragen von Wikiseiten und referenzierenden Wikiseiten mit der Möglichkeit [[Regex]] Ausdrücke für Seitennamen zu verwenden. Man kann es sich wie das Index Plugin vorstellen, nur das man die Anzeige auf bestimmte Seitennamenmuster eingrenzen kann. Die Entsprechung von % in einer SQL Query ist hierbei '.*' in einem Regulären Ausdruck (. steht für beliebiges Zeichen, * für beliebig oft)

{{{
SQL: where pages='%Todo'
->
QueryPlugin: IS[.*Todo]
}}}

<<TableOfContents>>

== Einfache Beispiele

Alle Seiten im Wiki Anzeigen, die mit Todo im Seitennamen enden.
{{{
<<Query pages='IS[.*Todo]'>>
}}}

Alle Seiten mit "Bug" im Namen, jedoch keine Talk Seiten, ohne die Seiten "Bug", "Bugs" und "BugArchive", sowie keine Anhänge....
{{{
<<Query pages='IS[.*Bug.*] AND NOT ([Bekannte.*] OR [Talk\..*] OR [Bug] OR [Bugs] OR [BugArchive] OR [.*/.*])'>>
}}}

Alle Talk Seiten, die [[Unterschrift]]en von Christoph Sauer haben:
{{{
<<Query pages='IS[Talk\..*] AND TO[ChristophSauer]'>>
}}}

== Komplexe Beispiele

Bei Komplexeren Abfragen kann der PluginBody für die Query verwendet werden. Dort sind auch Zeilenumbrüche erlaubt, und so kann die Query lesbar strukturiert werden. Der Parameter "withdsc" ist nur im [[cciServer]] verfügbar und zeigt die erste Zeile der Seite als Beschreibung neben den Link. Hier im Beispiel wird die Zeile nach 80 Zeichen abgeschnitten.

{{{
<<Query withdsc='firstline,80'

IS[.*Todo]
>>
}}}


Komplexe Abfrage: Alle Seiten, die nicht mit einem Status getagged wurden:

{{{== Angebote ohne Status

Bitte mit Status versehen!

<<Query withdsc='firstline,80'

IS[Angebot.*] 
AND NOT 
(
    IS
    (
        [.*/.*] 
        OR [Angebot]
        OR [Angebotsnummer]
    ) 
    OR TO
    (
        [Status Entwurf] 
        OR [Status Abgegeben] 
        OR [Status Laufend] 
        OR [Status Abgeschlossen]
        OR [Status Verfallen]
    )
)
>>

== [[Status Entwurf]]

<<Query withdsc='firstline,80'

IS[Angebot.*] 
AND TO[Status Entwurf]
AND NOT IS([.*/.*] OR [Angebot] OR [Angebotsnummer]) 
>>
}}}


Man muss darauf achten, dass nur **ein** AND möglich ist, deshalb muss man leider bestimmte Queries geschickt verschachteln: Hier ein Beispiel, dass alle Angebotsseiten anzeigt, die nicht auf der Seite "Angebotsnummer" definiert wurden (so sollen Lücken herausgefunden werden). Das Beispiel zeigt auch die Verwendung von "By"(Alias From)

{{{

<<Query 

IS[Angebot.*] 
AND NOT (
    BY[Angebotsnummer] 
    OR
    (
        IS[.*/.*] 
        OR IS[Angebot]
        OR IS[Angebotsnummer]
    )

)
>>
}}}

== Parameter

[[Todo]]:Translate

The following parameters are currently supported...

* **{{{pages=}}}** Required. The page query string to be evaluated. 
* **{{{echo=}}}** Optional, echo the parsed parenthesized query string back out, default = 'false', set to 'true' to see the formalized form of your query.
* **{{{emptytext=}}}** Optional. This is the (non-markup) text returned if there is no query result. The default is "No pages found."
* **{{{output=}}}** Optional. One of 'none', 'list', 'bullet', 'number', 'space' or 'comma'. This alters the output presentation of the query result pages. The default is 'list' which generates a simple vertical list; 'none' suppresses the list output; 'bullet' and 'number' generate bulleted and numbered lists (resp.); 'space' generates a space-delimited list; 'comma' generates a comma-delimited list.


== Distribution

Das Query Plugin ist Teil der Ceryle Plugin Suite von Murray Altheim, die mit [[cci Server]] in der JSPWiki Distribution gebündelt wird. In JSPWiki selbst muss es nachinstalliert werden. Mehr unter [[JSPWiki:QueryPlugin]]. 

{{{
The Ceryle Software License, Version 1.0

Copyright 2001-2006 Murray Altheim. All Rights Reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.

 2. Redistributions in binary form must reproduce the above 
    copyright notice, this list of conditions and the following 
    disclaimer in the documentation and/or other materials provided 
    with the distribution.

 3. The end-user documentation included with the redistribution,
    if any, must include the following acknowledgment:

       "This product includes software developed by
        The Ceryle Project (http://purl.org/ceryle/)."

    Alternately, this acknowledgment may appear in the software 
    itself, if and wherever such third-party acknowledgments normally 
    appear.

 4. The names "Ceryle" and "Murray Altheim" must not be used to
    endorse or promote products derived from this software without
    prior written permission. For written permission, please 
    contact murray@altheim.com.

 5. Products derived from this software may not be called "Ceryle",
    nor may "Ceryle" appear in their name, without prior written
    permission of Murray Altheim.

THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL MURRAY ALTHEIM BE LIABLE FOR ANY DIRECT, INDIRECT, 
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
POSSIBILITY OF SUCH DAMAGE.
}}}