From 8f7656b42f82048d25ba815393eb0dde415944b0 Mon Sep 17 00:00:00 2001 From: uhensler <none@none> Date: Mon, 5 Mar 2018 14:23:38 +0100 Subject: [PATCH] OO-3170: Add default license to created files and to with WebDAV uploaded files. --- .../modules/bc/commands/CmdCreateFile.java | 20 +++++++++++++++++++ .../modules/bc/meta/MetaInfoFileImpl.java | 8 ++++++-- .../bc/meta/MetaInfoFormController.java | 2 +- .../services/license/ui/LicenseRenderer.java | 3 ++- .../webdav/manager/VFSResourceRoot.java | 20 +++++++++++++++++++ 5 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/olat/core/commons/modules/bc/commands/CmdCreateFile.java b/src/main/java/org/olat/core/commons/modules/bc/commands/CmdCreateFile.java index 4fa8890da1d..da8357b0c43 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/commands/CmdCreateFile.java +++ b/src/main/java/org/olat/core/commons/modules/bc/commands/CmdCreateFile.java @@ -29,9 +29,14 @@ import org.olat.core.commons.editor.htmleditor.HTMLEditorController; import org.olat.core.commons.editor.htmleditor.WysiwygFactory; import org.olat.core.commons.editor.plaintexteditor.PlainTextEditorController; import org.olat.core.commons.modules.bc.FolderEvent; +import org.olat.core.commons.modules.bc.FolderLicenseHandler; import org.olat.core.commons.modules.bc.components.FolderComponent; import org.olat.core.commons.modules.bc.meta.MetaInfo; import org.olat.core.commons.modules.bc.meta.tagged.MetaTagged; +import org.olat.core.commons.services.license.License; +import org.olat.core.commons.services.license.LicenseModule; +import org.olat.core.commons.services.license.LicenseService; +import org.olat.core.commons.services.license.ui.LicenseUIFactory; import org.olat.core.commons.services.notifications.NotificationsManager; import org.olat.core.commons.services.notifications.SubscriptionContext; import org.olat.core.gui.UserRequest; @@ -53,6 +58,7 @@ import org.olat.core.util.vfs.VFSLeaf; import org.olat.core.util.vfs.VFSManager; import org.olat.core.util.vfs.callbacks.VFSSecurityCallback; import org.olat.core.util.vfs.util.ContainerAndFile; +import org.springframework.beans.factory.annotation.Autowired; /** * @@ -71,6 +77,13 @@ public class CmdCreateFile extends FormBasicController implements FolderCommand private Controller editorCtr; private TextElement textElement; private FolderComponent folderComponent; + + @Autowired + private LicenseService licenseService; + @Autowired + private LicenseModule licenseModule; + @Autowired + private FolderLicenseHandler licenseHandler; protected CmdCreateFile(UserRequest ureq, WindowControl wControl) { super(ureq, wControl); @@ -182,6 +195,13 @@ public class CmdCreateFile extends FormBasicController implements FolderCommand if(item instanceof MetaTagged) { MetaInfo meta = ((MetaTagged)item).getMetaInfo(); meta.setAuthor(ureq.getIdentity()); + if (licenseModule.isEnabled(licenseHandler)) { + License license = licenseService.createDefaultLicense(licenseHandler, getIdentity()); + meta.setLicenseTypeKey(String.valueOf(license.getLicenseType().getKey())); + meta.setLicenseTypeName(license.getLicenseType().getName()); + meta.setLicensor(license.getLicensor()); + meta.setLicenseText(LicenseUIFactory.getLicenseText(license)); + } meta.write(); } diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java index 2eca8d3ea27..954901aebf4 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java +++ b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java @@ -258,7 +258,7 @@ public class MetaInfoFileImpl extends DefaultHandler implements MetaInfo { } /** - * Copy values from froMeta into this object except name. + * Copy values from fromMeta into this object except name. * @param fromMeta */ @Override @@ -274,6 +274,10 @@ public class MetaInfoFileImpl extends DefaultHandler implements MetaInfo { this.setSource(fromMeta.getSource()); this.setTitle(fromMeta.getTitle()); this.setUrl(fromMeta.getUrl()); + this.setLicenseTypeKey(fromMeta.getLicenseTypeKey()); + this.setLicenseTypeName(fromMeta.getLicenseTypeName()); + this.setLicensor(fromMeta.getLicensor()); + this.setLicenseText(fromMeta.getLicenseText()); } public boolean isLocked() { @@ -809,7 +813,7 @@ public class MetaInfoFileImpl extends DefaultHandler implements MetaInfo { @Override public void setLicensor(String licensor) { - this.licensor = licensor; + this.licensor = licensor != null? licensor: ""; } @Override diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFormController.java b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFormController.java index e3d7fc03f9f..0fa6d5f7fe5 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFormController.java +++ b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFormController.java @@ -475,7 +475,7 @@ public class MetaInfoFormController extends FormBasicController { License license = getLicenseFromFormItems(); meta.setLicenseTypeKey(license.getLicenseType() != null? String.valueOf(license.getLicenseType().getKey()): ""); meta.setLicenseTypeName(license.getLicenseType() != null? license.getLicenseType().getName(): ""); - meta.setLicensor(license.getLicensor()); + meta.setLicensor(license.getLicensor() != null? license.getLicensor(): ""); meta.setLicenseText(LicenseUIFactory.getLicenseText(license)); return meta; } diff --git a/src/main/java/org/olat/core/commons/services/license/ui/LicenseRenderer.java b/src/main/java/org/olat/core/commons/services/license/ui/LicenseRenderer.java index c71bd271774..ed4379908fd 100644 --- a/src/main/java/org/olat/core/commons/services/license/ui/LicenseRenderer.java +++ b/src/main/java/org/olat/core/commons/services/license/ui/LicenseRenderer.java @@ -73,7 +73,8 @@ public class LicenseRenderer implements FlexiCellRenderer { // popup with license informations sb.append("<div id='o_lic_pop_").append(id).append("' style='display:none;'><div>"); appendStaticcontrol(sb, "license.popup.type", LicenseUIFactory.translate(licenseType, locale)); - appendStaticcontrol(sb, "license.popup.licensor", license.getLicensor()); + String licensor = license.getLicensor() != null? license.getLicensor(): ""; + appendStaticcontrol(sb, "license.popup.licensor", licensor); appendStaticcontrol(sb, "license.popup.text", LicenseUIFactory.getFormattedLicenseText(license)); sb.append("</div>"); diff --git a/src/main/java/org/olat/core/commons/services/webdav/manager/VFSResourceRoot.java b/src/main/java/org/olat/core/commons/services/webdav/manager/VFSResourceRoot.java index 39cc4712b5d..dd5c8ea0759 100644 --- a/src/main/java/org/olat/core/commons/services/webdav/manager/VFSResourceRoot.java +++ b/src/main/java/org/olat/core/commons/services/webdav/manager/VFSResourceRoot.java @@ -27,8 +27,14 @@ import java.util.Collections; import java.util.List; import org.apache.commons.io.IOUtils; +import org.olat.core.CoreSpringFactory; +import org.olat.core.commons.modules.bc.FolderLicenseHandler; import org.olat.core.commons.modules.bc.meta.MetaInfo; import org.olat.core.commons.modules.bc.meta.tagged.MetaTagged; +import org.olat.core.commons.services.license.License; +import org.olat.core.commons.services.license.LicenseModule; +import org.olat.core.commons.services.license.LicenseService; +import org.olat.core.commons.services.license.ui.LicenseUIFactory; import org.olat.core.commons.services.notifications.NotificationsManager; import org.olat.core.commons.services.notifications.SubscriptionContext; import org.olat.core.commons.services.webdav.servlets.WebResource; @@ -231,6 +237,7 @@ public class VFSResourceRoot implements WebResourceRoot { MetaInfo infos = ((MetaTagged)childLeaf).getMetaInfo(); if(infos != null && !infos.hasAuthorIdentity()) { infos.setAuthor(identity); + addLicense(infos, identity); infos.clearThumbnails(); //infos.write(); the clearThumbnails call write() } @@ -248,6 +255,19 @@ public class VFSResourceRoot implements WebResourceRoot { return true; } + private void addLicense(MetaInfo meta, Identity identity) { + LicenseService licenseService = CoreSpringFactory.getImpl(LicenseService.class); + LicenseModule licenseModule = CoreSpringFactory.getImpl(LicenseModule.class); + FolderLicenseHandler licenseHandler = CoreSpringFactory.getImpl(FolderLicenseHandler.class); + if (licenseModule.isEnabled(licenseHandler)) { + License license = licenseService.createDefaultLicense(licenseHandler, identity); + meta.setLicenseTypeKey(String.valueOf(license.getLicenseType().getKey())); + meta.setLicenseTypeName(license.getLicenseType().getName()); + meta.setLicensor(license.getLicensor()); + meta.setLicenseText(LicenseUIFactory.getLicenseText(license)); + } + } + private void copyVFS(VFSLeaf file, InputStream is) throws IOException { // Try to get Quota long quotaLeft = -1; -- GitLab