Re: [xwiki-users] Blog application Document creator

2010-04-10 Thread Gerritjan Koekkoek
Hi,
Most of your advise was accurate and has helped,
Thank you,

XWikiDocument articleDoc = vArticle.getDocument();
articleDoc.setAuthor(user);
articleDoc.setCreator(user);
aticleDoc.setContentDirty(false);
aticleDoc.setMetaDataDirty(false);
xwiki.getXWiki().saveDocument(articleDoc, xcontext.getContext);

In Groovy; should I add the semicolon at the end of each line?
Should I add this piece of code after the vArticle.save() statement?
When I did I get the following error:
Script22.groovy: 73: unable to resolve class XWikiDocument 
 @ line 73, column 15.
   XWikiDocument articleDoc = vArticle.getDocument();
 ^
the category and hidden tip did work

Op 6 apr 2010, om 21:45 heeft Sergiu Dumitriu het volgende geschreven:

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 ( = title of the post)
 {{groovy}}
 vArticle = xwiki.getDocument(CdlsArticle.XX)
 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 = X
vObjArticle.set(title,vTitle)
 ...
 def vExtractHeader = ''
 def vExtractText = ''
 def vExtractPicture = 'image:photo.cdl...@.jpg
 vObjArticle.set(extract,vExtractHeader + vExtractText + 
 vExtractPicture)
 .. etcetera
 ..
 vObjArticle.set(published,'1')
 vArticle.save()
 {{/groovy}}

-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
___
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users

___
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users


Re: [xwiki-users] Blog application Document creator

2010-04-10 Thread Sergiu Dumitriu
On 04/10/2010 10:41 PM, Gerritjan Koekkoek wrote:
 Hi,
 Most of your advise was accurate and has helped,
 Thank you,

 XWikiDocument articleDoc = vArticle.getDocument();
 articleDoc.setAuthor(user);
 articleDoc.setCreator(user);
 aticleDoc.setContentDirty(false);
 aticleDoc.setMetaDataDirty(false);
 xwiki.getXWiki().saveDocument(articleDoc, xcontext.getContext);

 In Groovy; should I add the semicolon at the end of each line?

I think it's optional. I prefer adding them.

 Should I add this piece of code after the vArticle.save() statement?

You should not keep the vArticle.save() line, since the block that I 
gave you is exactly for saving the document.

 When I did I get the following error:
 Script22.groovy: 73: unable to resolve class XWikiDocument
   @ line 73, column 15.
 XWikiDocument articleDoc = vArticle.getDocument();

You should import com.xpn.xwiki.doc.XWikiDocument;

   ^
 the category and hidden tip did work

 Op 6 apr 2010, om 21:45 heeft Sergiu Dumitriu het volgende geschreven:

 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 ( = title of the post)
 {{groovy}}
  vArticle = xwiki.getDocument(CdlsArticle.XX)
  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 = X
 vObjArticle.set(title,vTitle)
 ...
  def vExtractHeader = ''
  def vExtractText = ''
  def vExtractPicture = 'image:photo.cdl...@.jpg
  vObjArticle.set(extract,vExtractHeader + vExtractText + 
 vExtractPicture)
 .. etcetera
 ..
  vObjArticle.set(published,'1')
  vArticle.save()
 {{/groovy}}



-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
___
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users