Changes for page Export To Markdown
Last modified by Tobias Wintrich on 2026/03/27 13:39
From version 5.1
edited by Tobias Wintrich
on 2026/03/27 13:28
on 2026/03/27 13:28
Change comment:
There is no comment for this version
To version 2.1
edited by René Vögeli
on 2026/03/25 10:30
on 2026/03/25 10:30
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. twintrich1 +XWiki.rvoegeli - Content
-
... ... @@ -1,62 +1,20 @@ 1 1 {{groovy}} 2 +import org.xwiki.environment.* 2 2 import org.xwiki.model.reference.* 3 -import org.xwiki.model.EntityType 4 -import java.io.File 5 5 6 6 if (request.confirm == '1') { 7 - 8 - // Zielverzeichnis 9 - def exportDir = new File("/usr/local/xwiki/data/md-export") 10 - exportDir.mkdirs() 11 - 12 - // Serializer für saubere Ordnerstruktur 13 - def pathSerializer = services.component.getInstance( 14 - EntityReferenceSerializer.TYPE_STRING, 'fspath' 15 - ) 16 - 17 - // Nur veröffentlichte Dokumente (hidden = false) 18 - def query = """ 19 - select doc.fullName from Document doc 20 - where (doc.space like 'HowTos' or doc.space like 'HowTos.%') 21 - and doc.hidden = false 22 - """ 23 - 24 - services.query.xwql(query).execute().each { fullName -> 25 - 26 - println "* Exporting ${fullName}..." 27 - 28 - def doc = xwiki.getDocument(fullName) 29 - 30 - if (doc.isHidden()) { 31 - return 32 - } 33 - 34 - // Markdown rendern 35 - def markdown = services.rendering.render(doc.getXDOM(), 'markdown/1.2') 36 - 37 - // Verzeichnisstruktur erzeugen 38 - def relativePath = pathSerializer.serialize(doc.documentReference) 39 - def outputFile = new File(exportDir, relativePath + ".md") 40 - 6 + services.query.xwql("select distinct doc.fullName from Document doc where doc.space like 'Sandbox' or doc.space like 'Sandbox.%'").execute().each() { 7 + print "* Converting ${it} to MD..." 8 + def itemDoc = xwiki.getDocument(it) 9 + def newContent = services.rendering.render(itemDoc.getXDOM(), 'markdown/1.2') 10 + def tmpDir = new File(services.component.getInstance(Environment.class).temporaryDirectory, 'md-export') 11 + def pathSerializer = services.component.getInstance(EntityReferenceSerializer.TYPE_STRING, 'fspath') 12 + def outputFile = new File(tmpDir, pathSerializer.serialize(itemDoc.documentReference)) 41 41 outputFile.parentFile.mkdirs() 42 - outputFile.text = markdown 43 - 44 - println " -> Saved page to ${outputFile}" 45 - 46 - // Anhänge exportieren 47 - doc.attachmentList.each { attachment -> 48 - 49 - def attachmentDir = outputFile.parentFile 50 - def attachmentFile = new File(attachmentDir, attachment.filename) 51 - 52 - attachmentFile.withOutputStream { os -> 53 - os << attachment.contentInputStream 54 - } 55 - 56 - println " -> Exported attachment ${attachment.filename}" 57 - } 14 + outputFile << newContent 15 + println "Saved in ${outputFile.toString()}" 58 58 } 59 59 } 60 60 61 -println "[[Export starten>>||queryString='confirm=1']]"19 +println "[[Export>>||queryString='confirm=1']]" 62 62 {{/groovy}}