Исходный код вики Wiki Diff

Редактировал(а) Dmitriy Rybakov 05.08.2025, 13:07

Скрыть последних авторов
Dmitriy Rybakov 1.1 1 {{velocity}}
2 #set ($discard = $xwiki.ssx.use($doc.fullName))
3 #if ($request.source)
4 #set ($diffTool = $xwiki.parseGroovyFromPage("Admin.WikiDiffGroovy"))
5 #set ($discard = $diffTool.setContext($context, $xwiki))
6 #set ($oldURL = $request.source)
7 #set ($newURL = $request.target)
8 #set ($oldContents = $diffTool.getZipContent($oldURL))
9 #if ($newURL && $newURL != '')
10 #set ($newContents = $diffTool.getZipContent($newURL))
11 #end
12 #set ($missingTargetDocList = [])
13 #foreach ($key in $oldContents.keySet())
14 #if ($key != 'package.xml')
15 #set ($oldDoc = $diffTool.getDocument($oldContents.get($key)))
16 #if (!$oldDoc.getObject('XWiki.XWikiPreferences') && !$oldDoc.getObject('XWiki.XWikiGroups'))
17 #set ($oldContent = $diffTool.getXML($oldDoc))
18 #if ($newContents)
19 #set ($newContent = $diffTool.getXMLFromString($newContents.get($key)))
20 #else
21 #set ($page = $oldDoc.getFullName())
22 #set ($newDoc = $xwiki.getDocument($page))
23 #if ($oldDoc.getLanguage() != '')
24 #set ($newDoc = $newDoc.getTranslatedDocument($oldDoc.getLanguage()))
25 #end
26 #set ($newContent = $diffTool.getXML($newDoc))
27 #end
28 #set ($comparedContent = $diffTool.compare($oldContent, $newContent))
29 #if ($oldContent && $comparedContent)
30 #set ($diffResult = $diffTool.diff($oldContent, $newContent))
31 #set ($skipNewRev = "$!request.skipNewRev" == 'true')
32 #set ($isOtherThanNewRevDiff = $diffTool.isOtherThanNewRevisonDiff($diffResult))
33 #if (!$skipNewRev || ($skipNewRev && $isOtherThanNewRevDiff) || $request.debug)
34 #if ($newDoc.isNew())
35 #set ($discard = $missingTargetDocList.add($key))
36 #else
37 * $key has changed [[View Diff>>?page=${key}&source=${request.source}&target=${request.target}&skipNewRev=$!{request.skipNewRev}]]
38 #if ($request.page == $key)
39 **Differences**:
40
41 {{html clean="false"}}
42 $diffResult
43 {{/html}}
44
45 #if ($request.debug)
46 #set ($discard = $diffTool.save('file1.txt', $oldContent, true))
47 #set ($discard = $diffTool.save('file1b.txt', $oldContent, false))
48 #set ($discard = $diffTool.save('file2.txt', $newContent, true))
49 #set ($discard = $diffTool.save('file2b.txt', $newContent, false))
50 #end
51 #end
52 #end
53 #end
54 #end
55 #end
56 #end
57 #end
58 #if ($missingTargetDocList.size() > 0)
59
60 {{warning}}
61 Documents that don't exist in the **target** XAR
62 #foreach ($key in $missingTargetDocList)
63 * $key
64 #end
65 {{/warning}}
66 #end
67 #else
68 #set ($version = $xwiki.version)
69 #if ($services.flavor) ##that is not really correct. parse $version instead?
70 #set ($mode = 'platform')
71 ##TODO: this does not check dependencies and is pretty worthless ATM
72 #set ($artifactId = 'xwiki-platform-distribution-flavor-common')
73 #elseif ($services.wikimanager)
74 #set ($mode = 'manager')
75 #set ($artifactId = 'xwiki-manager-ui-all')
76 #else
77 #set ($mode = 'enterprise')
78 #set ($artifactId = 'xwiki-enterprise-ui-all')
79 #end
80 #set ($source = "http://maven.xwiki.org/releases/org/xwiki/${mode}/${artifactId}/${version}/${artifactId}-${version}.xar")
81 {{html clean=false}}
82 <form action="">
83 <strong>Source URL:</strong><br />
84 <input type="text" name="source" value="$source" size="120" />
85 <br />
86 <strong>Target URL:</strong><br />
87 leave empty to compare to current wiki<br />
88 <input type="text" name="target" value="" size="120" />
89 <br />
90 <input type="checkbox" name="skipNewRev" value="true"> Skip changes that reflect only new revisions of the document and nothing else
91 <br />
92 <input type="submit" value="Go" />
93 </form>
94 {{/html}}
95 #end
96 {{/velocity}}