Show last authors
1 This migration script will make visible all the forum entities (topics and answers) in order to make them visible to all the users (be able to search for a topic/answer). Also, the cryptic names (##Topic_1508480809329_23##) wich be replaced with the titles defined by the users. For more details, please see: https://jira.xwiki.org/browse/XAFORUM-144.
2
3 (F) - Forum
4 (T) - Topic
5 (A) - Answer
6
7 {{velocity}}
8 #set ($forumsQuery = "from doc.object(ForumCode.ForumClass) as forum where doc.fullName <> 'ForumCode.ForumTemplate'")
9 #set ($forums = $services.query.xwql($forumsQuery).execute())
10 #set ($forumsToFix = [])
11 #foreach ($forum in $forums)
12 ## * $forum
13 #getTopics($forum)
14 #foreach ($topic in $topics)
15 #set ($topicDoc = $xwiki.getDocument($topic))
16 #set ($topicName = $topicDoc.documentReference.lastSpaceReference.name)
17 ## The topic name should be like Topic_1508480809329_23 and have exactly 22 chars
18 #if ($topicDoc.isHidden() || $topicName.length() == 22)
19 #set ($discard = $forumsToFix.add($forum))
20 #break
21 #end
22 #end
23 #end
24 #if ($request.confirm == 'true')
25 == Result ==
26 #set ($logger = $services.logging.getLogger("com.xwiki.cloud.${doc.fullName}"))
27 #set ($discard = $logger.info('Migration 1 started...'))
28 #foreach ($forum in $forumsToFix)
29 #set ($forumDoc = $xwiki.getDocument($forum))
30 1. (F) [[$forumDoc.space>>$forumDoc.documentReference]]
31 #getTopics($forum)
32 #foreach($topic in $topics)
33 #set ($topicDoc = $xwiki.getDocument($topic))
34 #set ($isTopicHidden = $topicDoc.isHidden())
35 #set ($discard = $topicDoc.setHidden(false))
36 #set ($discard = $topicDoc.save('Marked as visible.'))
37 ## Rename the topic
38 #set ($topicSource = $topicDoc.documentReference.lastSpaceReference)
39 #set ($topicName = $topicDoc.documentReference.lastSpaceReference.name)
40 #set ($newTopicSpaceReference = $services.model.createSpaceReference($topicDoc.title, $forumDoc.documentReference.parent))
41 #set ($newTopicDocReference = $services.model.createDocumentReference('WebHome', $newTopicSpaceReference))
42 #set ($newTopicDoc = $xwiki.getDocument($newTopicDocReference))
43 #set ($discard = $services.refactoring.rename($topicSource, $topicDoc.title).join())
44 11. (T) [[$topicName>>$topicDoc.documentReference]] (is hidden: $isTopicHidden) -> [[$newTopicDoc.documentReference.lastSpaceReference.name>>$newTopicDoc.documentReference]] (is hidden: $topicDoc.isHidden())
45 #getAnswers($newTopicDoc.fullName)
46 #foreach ($answer in $answers)
47 #set ($answerDoc = $xwiki.getDocument($answer))
48 #set ($isAnswerHidden = $answerDoc.isHidden())
49 #set ($answerObj = $answerDoc.getObject('ForumCode.AnswerClass'))
50 #set ($discard = $answerDoc.setHidden(false))
51 #set ($discard = $answerDoc.save('Marked as visible.'))
52 ## Rename the answer
53 #set ($answerSource = $answerDoc.documentReference.lastSpaceReference)
54 #set ($title = $answerObj.getValue('description'))
55 ## Keep only 50 chars from the description to represent the answer's title
56 #if ($title.length() > 50)
57 #set ($title = "${title.substring(0,50)}...")
58 #end
59 #set ($newAnswerSpaceReference = $services.model.createSpaceReference($title, $topicDoc.documentReference.parent))
60 #set ($newAnswerDocReference = $services.model.createDocumentReference('WebHome', $newAnswerSpaceReference))
61 #set ($newAnswerDoc = $xwiki.getDocument($newAnswerDocReference))
62 #set ($discard = $services.refactoring.rename($answerSource, $title).join())
63 #set ($answerName = $answerDoc.documentReference.lastSpaceReference.name)
64 111. (A) [[$answerName>>$answerDoc.documentReference]] (is hidden: $isAnswerHidden) - > [[$newAnswerDoc.documentReference.lastSpaceReference.name>>$newAnswerDoc.documentReference]] (is hidden: $answerDoc.isHidden())
65 #end
66 #end
67 #end
68 #set ($discard = $logger.info('Migration complete.'))
69 #else
70 == Forums to migrate ==
71 #foreach ($forum in $forumsToFix)
72 #set ($forumDoc = $xwiki.getDocument($forum))
73 1. (F) [[$forumDoc.space>>$forumDoc.documentReference]]
74 #getTopics($forum)
75 #foreach($topic in $topics)
76 #set ($topicDoc = $xwiki.getDocument($topic))
77 #set ($topicName = $topicDoc.documentReference.lastSpaceReference.name)
78 11. (T) [[$topicName>>$topicDoc.documentReference]] (is hidden: $topicDoc.isHidden())
79 #getAnswers($topic)
80 #foreach ($answer in $answers)
81 #set ($answerDoc = $xwiki.getDocument($answer))
82 #set ($answerName = $answerDoc.documentReference.lastSpaceReference.name)
83 111. (A) [[$answerName>>$answerDoc.documentReference]] (is hidden: $answerDoc.isHidden())
84 #end
85 #end
86 #end
87 #end
88 #macro(getTopics $forum)
89 #set ($forumDoc = $xwiki.getDocument($forum))
90 #set ($topicsQuery = 'from doc.object(ForumCode.TopicClass) as topic where doc.space like :forumSpace')
91 #set ($topics = $services.query.xwql($topicsQuery).bindValue('forumSpace', "${forumDoc.space}.%").execute())
92 #end
93 #macro(getAnswers $topic)
94 #set ($topicDoc = $xwiki.getDocument($topic))
95 #set ($answersQuery = 'from doc.object(ForumCode.AnswerClass) as answer where doc.space like :topicSpace')
96 #set ($answers = $services.query.xwql($answersQuery).bindValue('topicSpace', "${topicDoc.space}.%").execute())
97 #end
98
99 #if ("$!request.confirm" != 'true')
100 {{html}}<a href="$doc.getURL('view', 'confirm=true')" class='button'>Start</a>{{/html}}
101 #end
102 {{/velocity}}
This site is funded and maintained by Fintel.io