>As I said in the preview mail data is the
XWikiContext.
I'm sorry, i didn't understand exactly what you mean by
"data is the
XWikiContext."
Thomas, i wouldn't be able to do it alone, i think i should add you as
author in the snippet, can i ?
2014-05-21 18:17 GMT+01:00 Thomas Mortagne <thomas.mortagne(a)xwiki.com>om>:
On Wed, May 21, 2014 at 6:42 PM, walid yaich
<walid.yaich(a)gmail.com>
wrote:
I finally got it ! Thanks guys :)
This is my listener, it may help someone :
{{velocity}}
{{html}}
#if ($request.confirm != "1")
<form method="get">
<input type="hidden" name="confirm" value="1"/>
<input type="submit" class="button" value="Register Event
Listener"/>
</form>
#end
{{/html}}
{{/velocity}}
{{groovy}}
import org.xwiki.observation.*
import org.xwiki.observation.event.*
import com.xpn.xwiki.web.*
import org.xwiki.bridge.event.DocumentCreatingEvent
import org.xwiki.model.reference.LocalDocumentReference
import org.xwiki.context.*
import groovy.util.logging.*
@Log
class OnDocumentCreationEventListener implements EventListener
{
OnDocumentCreationEventListener()
{
}
String getName()
{
return "OnDocumentCreationEventListener"
}
List<Event> getEvents()
{
return Arrays.asList(new DocumentCreatingEvent())
}
void onEvent(Event event, Object source, Object data)
{
log.info('onEvent begin')
// Current context
def crtContext =
Utils.getComponent(Execution.class).getContext().getProperty('xwikicontext')
As I said in the preview mail data is the XWikiContext.
// A Document Reference pointing to the space.page document in an
undefined wiki (i.e. without the wiki part)
LocalDocumentReference reference = new
LocalDocumentReference("RevisionSpace", "RevisionClass")
source.createXObject(reference, crtContext)
source.setComment("An XObject of RevisionClass was succesfully
added
!")
log.info('onEvent end')
}
}
// Only register the listener if the user has passed confirm=1 in the
URL.
This is to prevent
// from unintentially re-registering the listener against the observation
manager.
if (request.confirm == "1") {
// Register against the Observation Manager
def observation = Utils.getComponent(ObservationManager.class)
observation.removeListener("OnDocumentCreationEventListener")
def listener = new OnDocumentCreationEventListener()
observation.addListener(listener)
println "{{info}}Listener is now registered {{/info}}"
}
{{/groovy}}
It's just doesn't log to my console ("log.info" doesn't work) but
probably
it'll work for others ... but if you try to
create any new document
you'll
find your object added
2014-05-21 15:54 GMT+01:00 Thomas Mortagne <thomas.mortagne(a)xwiki.com>om>:
> On Wed, May 21, 2014 at 4:31 PM, walid yaich <walid.yaich(a)gmail.com>
> wrote:
> > I'm sorry, i'm new to xwiki API but i'm really trying to get better
;)
> >
> > I looked at the API and i find out that i should use this method:
> >
> > public int *createXObject*(EntityReference
> > <
>
http://extensions.xwiki.org/?id=org.xwiki.platform:xwiki-platform-model:::/…
> >
> > classReference,
> > XWikiContext
> > <
>
http://nexus.xwiki.org/nexus/service/local/repositories/releases/archive/or…
context)
But i can't figure out how can i create an EntityReference object and
Usually for a class the easiest is something like:
def reference = new
org.xwiki.model.reference.LocalDocumentReference("xclassspace",
"xclasspage")
See
http://extensions.xwiki.org/xwiki/bin/view/Extension/Model+Module
for more about entity references.
How can i get the context from the actual event
caller ?
The event send it as second parameter (like most events actually).
>
>
>
>
>
> 2014-05-21 13:09 GMT+01:00 Thomas Mortagne <thomas.mortagne(a)xwiki.com
:
> >
> >> On Wed, May 21, 2014 at 1:36 PM, walid yaich <walid.yaich(a)gmail.com>
> >> wrote:
> >> > Thank you,
> >> >
> >> > But i really cannot get it work,
> >> >>>As I said, you need to modiy the document comming with the event
(the
> >> >>>fist parameter).
That's the one that is going to be saved right
after
> >> > is it right like that ? :
> >> > void onEvent(Event event, Object source, Object data)
> >> > {
> >> > def currentDocument = xwiki.getDocument(source.fullName)
> >>
> >> Why are you calling getDocument ? source is already a XWikiDocument
> >> instance. I will say it again: you need to modify source itself
> >> because that's what is going to be saved, not some instance you kept
> >> from when you registered the listener, not a new instance, source.
> >>
> >> If you don't know the API of XWikiDocument you can look at
> >>
> >>
>
http://nexus.xwiki.org/nexus/service/local/repositories/releases/archive/or…
> >> (modify the link according to your
version).
> >>
> >> >
currentDocument.newObject("RevisionSpace.RevisionClass")
> >> > //currentDocument.save() //When saving, i got a
stackoverflow
> >> > //XWikiDocument
currentDocument = (XWikiDocument) source
> >> > //Cannot cast from XWikiDocument to Document
> >> > }
> >> > This code does not save the object, something wrong with it ?
> >> >
> >> > I tried just this :
> >> > {{groovy}}
> >> > doc.newObject("RevisionSpace.RevisionClass")
> >> > doc.save()
> >> > println "{{info}} Object added {{/info}}"
> >> > {{/groovy}}
> >> > it creates two objects in the current page, any explanation ?
> >> >
> >> > I'm using Admin/admin and XWIKI entreprise 6.0, some way to debug
to
> know
> >> > why it doesn't save ?
> >> >
> >> > Thanks in advance
> >> >
> >> >
> >> >
> >> > 2014-05-21 8:39 GMT+01:00 Thomas Mortagne <
thomas.mortagne(a)xwiki.com
> >:
> >> >
> >> >> On Tue, May 20, 2014 at 9:21 PM, walid yaich <
walid.yaich(a)gmail.com>
> >> >> wrote:
> >> >> > Good morning :)
> >> >> >
> >> >> > I added a listener on DocumentCreatingEvent, this listener
will
> add an
> >> >> > object of type RevisionClass to every new document.
(RevisionClass
> is
> >> >> under
> >> >> > RevisionSpace)
> >> >> > In onEvent i have
doc.newObject("XWiki.RevisionClass"), i'm sure
> >> onEvent
> >> >> is
> >> >>
> >> >> As I said, you need to modiy the document comming with the event
(the
> >> >> fist parameter). That's
the one that is going to be saved right
after
> >> >> the event (so just add the
object and don't save it yourself),
> >> >> whatever you save in your code is going to be overwritten after
it.
> >> >>
> >> >> > executed but when creating a new document, i can't find
the
object
> >> >> created
> >> >> > when doing edit-->object, in addition
doc.newObject("blablabla")
> is
> >> >> > accepted and doesn't throw any exception.
> >> >> >
> >> >> > I'm using the default Admin/admin user, should i execute
the
script
> in a
> >> > specific space or with specific rights ?
> >> > Nothing is displayed in my console, How can i make XWIKI tell me
more
> >> about
> >> > what it is doing ?
> >> >
> >> > I'm using Entreprise 6.0, would you please take a look at the
attached
>> >> > script ?
>> >> >
>> >> >
>> >> > Best Regards,
>> >> > Walid YAICH
>> >> >
>> >> >
>> >> >
>> >> > 2014-05-20 13:24 GMT+01:00 Jeremie BOUSQUET <
>> jeremie.bousquet(a)gmail.com
>> >> >:
>> >> >
>> >> >> 2014-05-20 13:38 GMT+02:00 walid yaich
<walid.yaich(a)gmail.com
:
> >> >> >>
> >> >> >> > Thanks,
> >> >> >> >
> >> >> >> > I prefer the listener, because i don't want the
user to edit
the
> >> >> object,
> >> >> >> > the object revision will be set by admin when he/she
push
> >> "approve" to
> >> >> >> set
> >> >> >> > the revision to show by default.
> >> >> >> >
> >> >> >> > The listener works fine now, but i can't find how
to add an
> object
> >> to
> >> >> a
> >> >> >> > page in groovy, i want to this in groovy : #set($obj
=
> >> $doc.newObject(
> >> >> >> > "XWiki.SomeClass")) , a helpful link as
always please ?
> >> >> >> >
> >> >> >> >
> >> >> >> Hi,
> >> >> >> Groovy has the same default bindings as velocity, so you
could
> write:
> >> >> >>
> >> >> >> def obj = doc.newObject("XWiki.SomeClass")
> >> >> >>
> >> >> >>
> >> >> >> >
> >> >> >> >
> >> >> >> >
> >> >> >> >
> >> >> >> > 2014-05-20 10:44 GMT+01:00 vincent(a)massol.net <
> vincent(a)massol.net
> >> >:
> >> >> >> >
> >> >> >> > > Hi Walid,
> >> >> >> > >
> >> >> >> > > Maybe this could help:
> >> >> >> > >
> >> >> >> > >
> >> >> >> >
> >> >> >>
> >> >>
> >>
>
http://www.xwiki.org/xwiki/bin/view/FAQ/How+can+I+create+a+new+page+based+o…
> >> >> >> > >
> >> >> >> > > If your users use this form to create pages, the
pages they
> >> create
> >> >> will
> >> >> >> > > automatically have the proper XObjects added to
them and
> they’ll
> >> >> >> directed
> >> >> >> > > in inline mode when creating the page, allowing
them to
fill
> the
> >> >> >> XObject
> >> >> >> > > data.
> >> >> >> > >
> >> >> >> > > Thanks
> >> >> >> > > -Vincent
> >> >> >> > >
> >> >> >> > > On 19 May 2014 at 22:16:01, walid yaich (
> walid.yaich(a)gmail.com)
> >> >> wrote:
> >> >> >> > >
> >> >> >> > > Hello,
> >> >> >> > >
> >> >> >> > > First of all, Merci bcp Vincent for this How to
implement
> >> "Approved
> >> >> >> > > Revisions"?<
> >> >> >> > >
> >> >> >> >
> >> >> >>
> >> >>
> >>
>
http://www.xwiki.org/xwiki/bin/view/FAQ/How+to+implement+%22Approved+Revisi…
> >> >> >> > >
> >> >> >> > >
> >> >> >> > >
> >> >> >> > >
> >> >> >> > > I was able to choose which revision to display
by following
> the
> >> "how
> >> >> >> to",
> >> >> >> > > now i need to add the object automatically to
any page in
my
wiki
> >> or at
> >> >> > > least any page in a given space
> >> >> > >
> >> >> > > Thanks in advance :)
> >> >> > >
> >> >> > >
> >> >> > _______________________________________________
> >> >> > devs mailing list
> >> >> > devs(a)xwiki.org
> >> >> >
http://lists.xwiki.org/mailman/listinfo/devs
> >> >> >
> >> >> _______________________________________________
> >> >> devs mailing list
> >> >> devs(a)xwiki.org
> >> >>
http://lists.xwiki.org/mailman/listinfo/devs
> >> >>
> >> >
> >> > _______________________________________________
> >> > devs mailing list
> >> > devs(a)xwiki.org
> >> >
http://lists.xwiki.org/mailman/listinfo/devs
> >> >
> >>
> >>
> >>
> >> --
> >> Thomas Mortagne
> >> _______________________________________________
> >> devs mailing list
> >> devs(a)xwiki.org
> >>
http://lists.xwiki.org/mailman/listinfo/devs
> >>
> > _______________________________________________
> > devs mailing list
> > devs(a)xwiki.org
> >
http://lists.xwiki.org/mailman/listinfo/devs
>
>
>
> --
> Thomas Mortagne
> _______________________________________________
> devs mailing list
> devs(a)xwiki.org
>
http://lists.xwiki.org/mailman/listinfo/devs
>
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
--
Thomas Mortagne
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
--
Thomas Mortagne
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs