On 04/03/2010 01:34 PM, Gerritjan Koekkoek wrote:
Hi,
I try to convert a website in xwiki.blog application For each page I create a groovy script that creates a blog post The script is successful with three exceptions;
1) Would like to maintain the original author So I create a xwiki.user (this works) Then I would like to set the document property with {{groovy}} ... (the first part of the script) vArticle.set("creator",'XWiki.FamilievandenMeulengraaf') vArticle.save() {{/groovy}}
But looking at the post it still has creator as the user running the code
Using the public API it's impossible to set a different creator/author than the current user. You need to get into the internal objects, and do something like: XWikiDocument articleDoc = vArticle.getDocument(); articleDoc.setAuthor(user); articleDoc.setCreator(user); aticleDoc.setContentDirty(false); aticleDoc.setMetaDataDirty(false); xwiki.getXWiki().saveDocument(articleDoc, xcontext.getContext);
2) Categories I've created a few categories in the blog application So I would like to set the category attribute, where the class-attribute definition of the post = Database Tree
{{groovy}} ... vObjArticle.set("Category",'???') ... {{/groovy}} Does any body know what to put in '???', since a category can be multiple entries ???
If you want to put just one category, you can use the document name where the category is defined (in the blog each category is a document, look at the existing categories to see how they look like): vObjArticle.set('Category', 'Blog.MyNiceCategory') If you want to put multiple entries, you can use an array: vObjArticle.set('Category', ['Blog.Cat1', 'Blog.Cat2'])
3) When I run the script a postpage is created, I see a link in the new documents frame. When I go to it it displays OK, but when I go to the blog application it does not show in the blog indexes (recently, categories (explained under 2)) or historical) Only when I go to the page, click edit object and directly click save it will show up in he blog What could be the reason for this,
Try also setting a value for the 'isHidden' property.
The code looks like (XXXX = title of the post) {{groovy}} vArticle = xwiki.getDocument("CdlsArticle.XXXXXX") vArticle.setContent('{{include document="CdlsArticle.ArticlePostSheet"/}}') vArticle.setParent("CdlsArticle.WebHome") vArticle.set("language","nl") vArticle.set("translation","1") vObjArticle = vArticle.getObject("CdlsArticle.ArticlePostClass",true) ... def vTitle = "XXXXX" vObjArticle.set("title",vTitle) ... def vExtractHeader = '....' def vExtractText = '....' def vExtractPicture = 'image:[email protected] vObjArticle.set("extract",vExtractHeader + vExtractText + vExtractPicture) .. etcetera .. vObjArticle.set("published",'1') vArticle.save() {{/groovy}}
-- Sergiu Dumitriu http://purl.org/net/sergiu/