Hi Walid,

What would be awesome is if you could contribute it on 
http://extensions.xwiki.org/xwiki/bin/view/Main/WebHome as a snippet :)  

Thanks  
-Vincent

On 21 May 2014 at 18:43:30, walid yaich 
([email protected](mailto:[email protected])) wrote:

> I finally got it ! Thanks guys :)
>  
> This is my listener, it may help someone :
>  
> {{velocity}}
> {{html}}
> #if ($request.confirm != "1")
>

>  
>  
>

> #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 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')
>  
>  
> // 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 :
>  
> > On Wed, May 21, 2014 at 4:31 PM, walid yaich  
> > 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 :
> > >
> > >> On Wed, May 21, 2014 at 1:36 PM, walid yaich  
> > >> 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 > > >:
> > >> >
> > >> >> On Tue, May 20, 2014 at 9:21 PM, walid yaich  
> > >> >> 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 :
> > >> >> >>
> > >> >> >> > 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
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to