0 Votes

Changes for page sidebyside

Last modified by Ryan C on 2025/05/09 05:52

From version 2.1
edited by Ryan C
on 2025/05/09 05:52
Change comment: There is no comment for this version
To version 1.1
edited by Ryan C
on 2025/05/09 05:42
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,27 +1,51 @@
1 -{{velocity}}
2 -#set ($cutoffMillis = $datetool.toDate("now").time - 1000 * 60 * 60 * 48) ## 48h ago
3 -#set ($adminUser = "XWiki.AdminAngriff")
4 -#set ($events = $services.activitystream.getEvents(0, 1000, [], [], [], "", false))
5 -#set ($changes = [])
6 -#set ($dateFormat = $services.localization.render('yyyy-MM-dd HH:mm:ss'))
1 +{{groovy}}
2 +import java.text.SimpleDateFormat
7 7  
8 -#foreach ($event in $events)
9 - #set ($author = $event.user)
10 - #set ($type = $event.type)
11 - #set ($when = $event.date)
12 - #set ($page = $event.page)
13 - #if ($when.time > $cutoffMillis && $author != $adminUser)
14 - #set ($void = $changes.add("* **$type** by **$author** on page **$page** at $when"))
15 - #end
16 -#end
4 +def guestId = "XWiki.XWikiGuest"
5 +def cutoff = new Date(System.currentTimeMillis() - (1000L * 60 * 60 * 48)) // last 48 hours
6 +def dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
7 +def context = xcontext.getContext()
8 +def results = []
17 17  
18 -#if ($changes.size() > 0)
19 -== 🔍 Changes by Other Users in Last 48h ==
20 -#foreach ($entry in $changes)
21 -$entry
22 -#end
23 -#else
24 -✅ No changes made by users other than $adminUser in the last 48 hours.
25 -#end
26 -{{/velocity}}
10 +xwiki.searchDocuments("where 1=1").each { docName ->
11 + def doc = xwiki.getDocument(docName)
12 + def lastMod = doc.getDate()
27 27  
14 + if (lastMod && lastMod.after(cutoff) && doc.author == guestId) {
15 + def archive = doc.getDocumentArchive()
16 + def versions = archive.getRevisionList().sort()
17 +
18 + if (versions.size() >= 2) {
19 + def prevVersion = archive.loadXWikiDocument(versions[-2], context)
20 + def currVersion = archive.loadXWikiDocument(versions[-1], context)
21 +
22 + def oldContent = prevVersion.getContent()
23 + def newContent = currVersion.getContent()
24 +
25 + if (oldContent != newContent) {
26 + results << """
27 +=== [[${currVersion.displayTitle}>>path:/bin/view/${currVersion.space}/${currVersion.name}]] — edited at ${dateFormat.format(lastMod)} ===
28 +
29 +**📝 Before (v${versions[-2]}):**
30 +----
31 +${oldContent.take(3000)}
32 +----
33 +
34 +**🆕 After (v${versions[-1]}):**
35 +----
36 +${newContent.take(3000)}
37 +----
38 +"""
39 + }
40 + }
41 + }
42 +}
43 +
44 +if (results) {
45 + println "== 🚨 Content Changes by XWiki.XWikiGuest (last 48h) ==\\n"
46 + results.each { println it }
47 +} else {
48 + println "✅ No content changes by guest in the last 48 hours."
49 +}
50 +{{/groovy}}
51 +