Исходный код вики Large export on disk by space

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

Последние авторы
1 {{groovy}}
2
3 import com.xpn.xwiki.*;
4 import com.xpn.xwiki.doc.*;
5 import com.xpn.xwiki.plugin.packaging.*;
6 import java.util.zip.*;
7 import com.xpn.xwiki.util.Util;
8
9 def getXAR(String filename, XWikiContext context) {
10 def request = xcontext.getRequest();
11 def export = xcontext.getXWiki().getPluginApi("package", xcontext.getContext());
12 spaces = request.getParameterMap().get("spaces");
13 export.setWithVersions(true);
14 export.setAuthorName("XWiki.Admin");
15 export.setDescription("");
16 export.setLicence("");
17 export.setVersion("");
18 export.setBackupPack(true);
19 export.setName("backup");
20 def pack = export.getPackage();
21 for(space in spaces) {
22 query = services.query.xwql('where doc.space=:space')
23 query.bindValue('space',space)
24 for(docName in query.execute()){
25 println "* Exported ${docName} page of space ${space}."
26 pack.add(docName, com.xpn.xwiki.plugin.packaging.DocumentInfo.ACTION_OVERWRITE, xcontext.getContext());
27 }
28 }
29 if(request.dir){
30 pack.exportToDir(new File(filename), xcontext.getContext());
31 }else{
32 pack.export(new FileOutputStream(new File(filename)), xcontext.getContext());
33 }
34 }
35
36 if (request.filename) {
37 getXAR(request.filename,xcontext.getContext())
38 xcontext.put('displayForm',false)
39 println "{{success}}Export is now finished. Check in the logs for any error{{/success}}"
40 } else {
41 println "== Large Export =="
42 xcontext.put('displayForm',true)
43 }
44 {{/groovy}}
45
46 {{velocity}}
47
48 #set($displayForm = $xcontext.get('displayForm'))
49 #if($displayForm)
50 {{html clean="false" wiki="true"}}
51 <form action="" method="post">
52 <table border="0">
53 <tr>
54 <td>File/directory to write to:</td><td><input type="text" name="filename" size="60" /></td>
55 </tr>
56 </table>
57 #foreach($space in $xwiki.getSpaces())
58 * $space <input type="checkbox" name="spaces" value="$escapetool.html($space)"/>
59 #end
60
61 * **Don't zip files, output to directory.** <input type="checkbox" name="dir"/>
62 <br/>
63 <input type="submit" name="Export" />
64 </form>
65 {{/html}}
66 #end
67 {{/velocity}}