>>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 <[email protected]>:

> On Wed, May 21, 2014 at 6:42 PM, walid yaich <[email protected]>
> 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 <[email protected]>:
> >
> >> On Wed, May 21, 2014 at 4:31 PM, walid yaich <[email protected]>
> >> 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:::/xwiki-commons-pom/xwiki-platform/xwiki-platform-core/xwiki-platform-model/apidocs/org/xwiki/model/reference/EntityReference.html?is-external=true
> >> >
> >> > classReference,
> >> >                          XWikiContext
> >> > <
> >>
> http://nexus.xwiki.org/nexus/service/local/repositories/releases/archive/org/xwiki/platform/xwiki-platform-oldcore/5.4.4/xwiki-platform-oldcore-5.4.4-javadoc.jar/%21/com/xpn/xwiki/XWikiContext.html
> >> >
> >> > 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 <[email protected]
> >:
> >> >
> >> >> On Wed, May 21, 2014 at 1:36 PM, walid yaich <[email protected]>
> >> >> 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/org/xwiki/platform/xwiki-platform-oldcore/5.4.4/xwiki-platform-oldcore-5.4.4-javadoc.jar/!/index.html
> >> >> (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 <
> [email protected]
> >> >:
> >> >> >
> >> >> >> On Tue, May 20, 2014 at 9:21 PM, walid yaich <
> [email protected]>
> >> >> >> 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 <
> >> >> [email protected]
> >> >> >> >:
> >> >> >> >
> >> >> >> >> 2014-05-20 13:38 GMT+02:00 walid yaich <[email protected]
> >:
> >> >> >> >>
> >> >> >> >> > 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 [email protected] <
> >> [email protected]
> >> >> >:
> >> >> >> >> >
> >> >> >> >> > > Hi Walid,
> >> >> >> >> > >
> >> >> >> >> > > Maybe this could help:
> >> >> >> >> > >
> >> >> >> >> > >
> >> >> >> >> >
> >> >> >> >>
> >> >> >>
> >> >>
> >>
> http://www.xwiki.org/xwiki/bin/view/FAQ/How+can+I+create+a+new+page+based+on+a+form
> >> >> >> >> > >
> >> >> >> >> > > 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 (
> >> [email protected])
> >> >> >> 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+Revisions%22
> >> >> >> >> > >
> >> >> >> >> > >
> >> >> >> >> > >
> >> >> >> >> > >
> >> >> >> >> > > 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
> >> >> >> >> > [email protected]
> >> >> >> >> > http://lists.xwiki.org/mailman/listinfo/devs
> >> >> >> >> >
> >> >> >> >> _______________________________________________
> >> >> >> >> devs mailing list
> >> >> >> >> [email protected]
> >> >> >> >> http://lists.xwiki.org/mailman/listinfo/devs
> >> >> >> >>
> >> >> >> >
> >> >> >> > _______________________________________________
> >> >> >> > devs mailing list
> >> >> >> > [email protected]
> >> >> >> > http://lists.xwiki.org/mailman/listinfo/devs
> >> >> >> >
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> --
> >> >> >> Thomas Mortagne
> >> >> >> _______________________________________________
> >> >> >> devs mailing list
> >> >> >> [email protected]
> >> >> >> http://lists.xwiki.org/mailman/listinfo/devs
> >> >> >>
> >> >> > _______________________________________________
> >> >> > devs mailing list
> >> >> > [email protected]
> >> >> > http://lists.xwiki.org/mailman/listinfo/devs
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >> Thomas Mortagne
> >> >> _______________________________________________
> >> >> devs mailing list
> >> >> [email protected]
> >> >> http://lists.xwiki.org/mailman/listinfo/devs
> >> >>
> >> > _______________________________________________
> >> > devs mailing list
> >> > [email protected]
> >> > http://lists.xwiki.org/mailman/listinfo/devs
> >>
> >>
> >>
> >> --
> >> Thomas Mortagne
> >> _______________________________________________
> >> devs mailing list
> >> [email protected]
> >> http://lists.xwiki.org/mailman/listinfo/devs
> >>
> > _______________________________________________
> > devs mailing list
> > [email protected]
> > http://lists.xwiki.org/mailman/listinfo/devs
>
>
>
> --
> Thomas Mortagne
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to