diff --git a/src/main/java/org/olat/core/commons/editor/fileeditor/FileEditor.java b/src/main/java/org/olat/core/commons/editor/fileeditor/FileEditor.java index d6f631e49ea5613e8cd205167725f1ee01463726..813c7b6b51bc5525cfd3465887685e7e3d87d6ed 100644 --- a/src/main/java/org/olat/core/commons/editor/fileeditor/FileEditor.java +++ b/src/main/java/org/olat/core/commons/editor/fileeditor/FileEditor.java @@ -50,7 +50,7 @@ import org.springframework.stereotype.Service; public class FileEditor implements DocEditor { private static final List<String> HTML_EDITOR_SUFFIX = Arrays.asList("html", "htm"); - private static final List<String> TEXT_EDITOR_SUFFIX = Arrays.asList("txt", "css", "csv"); + private static final List<String> TEXT_EDITOR_SUFFIX = Arrays.asList("txt", "css", "csv", "xml"); @Autowired private VFSLockManager lockManager; diff --git a/src/main/java/org/olat/core/commons/services/doceditor/ContentProviderFactory.java b/src/main/java/org/olat/core/commons/services/doceditor/ContentProviderFactory.java index cbb528405f9652266bb65a9bf3d4ff0f4aeb7d1d..64206967b4fcb9853ed2ce9c123d841414994236 100644 --- a/src/main/java/org/olat/core/commons/services/doceditor/ContentProviderFactory.java +++ b/src/main/java/org/olat/core/commons/services/doceditor/ContentProviderFactory.java @@ -26,6 +26,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.Locale; import java.util.zip.ZipOutputStream; @@ -46,6 +47,7 @@ public class ContentProviderFactory { private static final Logger log = Tracing.createLoggerFor(ContentProviderFactory.class); private static final ContentProvider EMPTY = new EmptyContentProvider(); + private static final ContentProvider XML = new XmlContentProvider(); private static final ContentProvider DOCX = new DocxContentProvider(); private static final ContentProvider XLSX = new XlsxContentProvider(); private static final ContentProvider PPTX = new PptxContentProvider(); @@ -54,6 +56,11 @@ public class ContentProviderFactory { return EMPTY; } + public static ContentProvider emptyXml() { + return XML; + } + + public static ContentProvider emptyDocx() { return DOCX; } @@ -76,6 +83,16 @@ public class ContentProviderFactory { } } + private static final class XmlContentProvider implements ContentProvider { + + private static final String XML_CONTENT = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"; + + @Override + public InputStream getContent(Locale locale) { + return new ByteArrayInputStream(XML_CONTENT.getBytes(StandardCharsets.UTF_8)); + } + } + private static final class DocxContentProvider implements ContentProvider { @Override diff --git a/src/main/java/org/olat/core/commons/services/doceditor/DocTemplates.java b/src/main/java/org/olat/core/commons/services/doceditor/DocTemplates.java index 72f953243ad7e010b26c71d7c232fda4552669f0..a362ee18e7a823f0b8eec33197d1681f5a844a16 100644 --- a/src/main/java/org/olat/core/commons/services/doceditor/DocTemplates.java +++ b/src/main/java/org/olat/core/commons/services/doceditor/DocTemplates.java @@ -23,6 +23,7 @@ import static org.olat.core.commons.services.doceditor.ContentProviderFactory.em import static org.olat.core.commons.services.doceditor.ContentProviderFactory.emptyDocx; import static org.olat.core.commons.services.doceditor.ContentProviderFactory.emptyPptx; import static org.olat.core.commons.services.doceditor.ContentProviderFactory.emptyXlsx; +import static org.olat.core.commons.services.doceditor.ContentProviderFactory.emptyXml; import static org.olat.core.commons.services.doceditor.DocEditor.Mode.EDIT; import java.util.ArrayList; @@ -72,6 +73,9 @@ public class DocTemplates { if (docEditorService.hasEditor(identity, roles, "css", EDIT, hasMeta)) { builder.addCss(); } + if (docEditorService.hasEditor(identity, roles, "xml", EDIT, hasMeta)) { + builder.addXml(); + } if (docEditorService.hasEditor(identity, roles, "docx", EDIT, hasMeta)) { builder.addDocx(); } @@ -97,23 +101,28 @@ public class DocTemplates { this.translator = Util.createPackageTranslator(CreateDocumentController.class, locale); } - public Builder addCss() { - docTemplates.add(DocTemplate.of("css", translate("doc.type.css"), empty())); + public Builder addTxt() { + docTemplates.add(DocTemplate.of("txt", translate("doc.type.txt"), empty())); return this; } - public Builder addDocx() { - docTemplates.add(DocTemplate.of("docx", translate("doc.type.docx"), emptyDocx())); + public Builder addHtml() { + docTemplates.add(DocTemplate.of("html", translate("doc.type.html"), empty())); return this; } - public Builder addHtml() { - docTemplates.add(DocTemplate.of("html", translate("doc.type.html"), empty())); + public Builder addCss() { + docTemplates.add(DocTemplate.of("css", translate("doc.type.css"), empty())); return this; } - public Builder addTxt() { - docTemplates.add(DocTemplate.of("txt", translate("doc.type.txt"), empty())); + public Builder addXml() { + docTemplates.add(DocTemplate.of("xml", translate("doc.type.xml"), emptyXml())); + return this; + } + + public Builder addDocx() { + docTemplates.add(DocTemplate.of("docx", translate("doc.type.docx"), emptyDocx())); return this; } diff --git a/src/main/java/org/olat/core/commons/services/doceditor/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/commons/services/doceditor/ui/_i18n/LocalStrings_de.properties index 9a92ceadc8e477901704a85a77e39bbc30e37777..6266a1c4b6b85204c00a715b43b8338285566a9c 100644 --- a/src/main/java/org/olat/core/commons/services/doceditor/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/core/commons/services/doceditor/ui/_i18n/LocalStrings_de.properties @@ -23,4 +23,5 @@ doc.type.html=HTML-Dokument doc.type.pptx=PowerPoint doc.type.txt=Text doc.type.xlsx=Excel +doc.type.xml=Extensible Markup Language error.no.editor=Die Datei kann nicht angezeigt werden. diff --git a/src/main/java/org/olat/core/commons/services/doceditor/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/commons/services/doceditor/ui/_i18n/LocalStrings_en.properties index e990e2515e4fa9dccdf25be0f4697d8d9bb5fe30..b18ca53a4bf51cf1c800e857cc99374dd378cfa0 100644 --- a/src/main/java/org/olat/core/commons/services/doceditor/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/core/commons/services/doceditor/ui/_i18n/LocalStrings_en.properties @@ -23,4 +23,5 @@ doc.type.html=HTML Document doc.type.pptx=PowerPoint doc.type.txt=Text doc.type.xlsx=Excel +doc.type.xml=Extensible Markup Language error.no.editor=The content of the document cannot be displayed.