Modifications pour le document Export To Markdown
Modifié par Tobias Wintrich le 2026/03/27 13:39
Depuis la version 3.1
modifié par René Vögeli
sur 2026/03/25 10:32
sur 2026/03/25 10:32
Commentaire de modification :
Il n'y a aucun commentaire pour cette version
À la version 6.1
modifié par Tobias Wintrich
sur 2026/03/27 13:30
sur 2026/03/27 13:30
Commentaire de modification :
Il n'y a aucun commentaire pour cette version
Résumé
-
Propriétés de la Page (2 modifications, 0 ajouts, 0 suppressions)
Détails
- Propriétés de la Page
-
- Auteur du document
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki.r voegeli1 +XWiki.twintrich - Contenu
-
... ... @@ -1,20 +1,60 @@ 1 1 {{groovy}} 2 -import org.xwiki.e nvironment.*3 -import org.xwiki.model.reference.*2 +import org.xwiki.model.reference.EntityReferenceSerializer 3 +import java.io.File 4 4 5 -if (request.confirm == '1') { 6 - services.query.xwql("select distinct doc.fullName from Document doc where doc.space like 'HowTos' or doc.space like 'HowTos.%'").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)) 5 +if (request.get('confirm') == '1') { 6 + 7 + // Zielverzeichnis 8 + def exportDir = new File("/usr/local/xwiki/data/md-export") 9 + exportDir.mkdirs() 10 + 11 + // Serializer für Ordnerstruktur 12 + def pathSerializer = services.component.getInstance( 13 + EntityReferenceSerializer.TYPE_STRING, "fspath" 14 + ) 15 + 16 + // Query (einzeilig!) 17 + def query = "select doc.fullName from Document doc " + 18 + "where (doc.space like 'HowTos' or doc.space like 'HowTos.%') " + 19 + "and doc.hidden = false" 20 + 21 + def results = services.query.xwql(query).execute() 22 + 23 + for (fullName in results) { 24 + 25 + println("* Exporting " + fullName) 26 + 27 + def doc = xwiki.getDocument(fullName) 28 + 29 + if (doc.isHidden()) { 30 + continue 31 + } 32 + 33 + // Markdown erzeugen 34 + def markdown = services.rendering.render(doc.getXDOM(), "markdown/1.2") 35 + 36 + // Dateipfad erzeugen 37 + def relativePath = pathSerializer.serialize(doc.documentReference) 38 + def outputFile = new File(exportDir, relativePath + ".md") 39 + 13 13 outputFile.parentFile.mkdirs() 14 - outputFile << newContent 15 - println "Saved in ${outputFile.toString()}" 41 + outputFile.write(markdown, "UTF-8") 42 + 43 + println(" -> Saved page to " + outputFile) 44 + 45 + // Anhänge exportieren 46 + for (attachment in doc.getAttachmentList()) { 47 + 48 + def attachmentFile = new File(outputFile.parentFile, attachment.getFilename()) 49 + 50 + attachmentFile.withOutputStream { os -> 51 + os << attachment.getContentInputStream() 52 + } 53 + 54 + println(" -> Exported attachment " + attachment.getFilename()) 55 + } 16 16 } 17 17 } 18 18 19 -println "[[Export>>||queryString='confirm=1']]"59 +println("[[Export starten>>||queryString='confirm=1']]") 20 20 {{/groovy}}