From a1cd92b317def37f19ef43b0bfad27655c3e889a Mon Sep 17 00:00:00 2001 From: aboeckle <alexander.boeckle@frentix.com> Date: Mon, 20 Apr 2020 17:23:06 +0200 Subject: [PATCH] OO-4603 Changed language chain --- .../impressum/EmptyImpressumExtension.java | 71 +++++++++++-------- .../impressum/ImpressumController.java | 27 +++++-- .../impressum/ImpressumExtension.java | 28 +++++--- .../impressum/PrivacyPolicyController.java | 21 ++++-- .../impressum/PrivacyPolicyExtension.java | 26 ++++--- .../impressum/TermsOfUseController.java | 21 ++++-- .../impressum/TermsOfUseExtension.java | 25 ++++--- .../impressum/_spring/impressumContext.xml | 4 ++ 8 files changed, 149 insertions(+), 74 deletions(-) diff --git a/src/main/java/org/olat/core/commons/controllers/impressum/EmptyImpressumExtension.java b/src/main/java/org/olat/core/commons/controllers/impressum/EmptyImpressumExtension.java index 8004ee3091f..49dee592ae6 100644 --- a/src/main/java/org/olat/core/commons/controllers/impressum/EmptyImpressumExtension.java +++ b/src/main/java/org/olat/core/commons/controllers/impressum/EmptyImpressumExtension.java @@ -27,10 +27,10 @@ import org.apache.commons.io.FileUtils; import org.olat.core.extensions.ExtensionElement; import org.olat.core.extensions.action.GenericActionExtension; import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.util.filter.FilterFactory; +import org.olat.core.util.i18n.I18nModule; import org.olat.core.util.vfs.LocalFileImpl; import org.olat.core.util.vfs.LocalFolderImpl; import org.olat.core.util.vfs.VFSContainer; @@ -44,11 +44,11 @@ import org.olat.core.util.vfs.VFSLeaf; public class EmptyImpressumExtension extends GenericActionExtension { private final ImpressumModule impressumModule; + private final I18nModule i18nModule; - private VelocityContainer vc; - - public EmptyImpressumExtension(ImpressumModule impressumModule) { + public EmptyImpressumExtension(ImpressumModule impressumModule, I18nModule i18nModule) { this.impressumModule = impressumModule; + this.i18nModule = i18nModule; } @@ -59,38 +59,33 @@ public class EmptyImpressumExtension extends GenericActionExtension { @Override public ExtensionElement getExtensionFor(String extensionPoint, UserRequest ureq) { - boolean enabled = false; + // Something is enabled (imprint, terms of use, privacy policy or contact) + // First check: Contact module + boolean enabled = impressumModule.isContactEnabled(); - if (impressumModule.isEnabled() && !impressumModule.isContactEnabled()) { + // Second check: Impressum module + if (impressumModule.isEnabled()) { VFSContainer impressumDir = new LocalFolderImpl(impressumModule.getImpressumDirectory()); VFSContainer termsOfUseDir = new LocalFolderImpl(impressumModule.getTermsOfUseDirectory()); VFSContainer privacyPoliciyDir = new LocalFolderImpl(impressumModule.getPrivacyPolicyDirectory()); - if (checkContent(impressumDir.resolve("index_" + ureq.getLocale().getLanguage() + ".html"))) { - // Nothing to do here - } else if (checkContent(impressumDir.resolve("index_en.html"))) { - // Nothing to do here - } else if (checkContent(impressumDir.resolve("index_de.html"))) { - // Nothing to do here - } else if (checkContent(termsOfUseDir.resolve("index_" + ureq.getLocale().getLanguage() + ".html"))) { - // Nothing to do here - } else if (checkContent(termsOfUseDir.resolve("index_en.html"))) { - // Nothing to do here - } else if (checkContent(termsOfUseDir.resolve("index_de.html"))) { - // Nothing to do here - } else if (checkContent(privacyPoliciyDir.resolve("index_" + ureq.getLocale().getLanguage() + ".html"))) { - // Nothing to do here - } else if (checkContent(privacyPoliciyDir.resolve("index_en.html"))) { - // Nothing to do here - } else if (checkContent(privacyPoliciyDir.resolve("index_de.html"))) { - // Nothing to do here - } else { - // Nothing found - enabled |= true; + // First check the imprint + enabled |= checkModule(impressumDir, ureq); + + // Go on if enabled is false + // and check the terms of use + if (!enabled) { + enabled |= checkModule(termsOfUseDir, ureq); + } + + // Go on if enabled is still false + // and check the privacy policy + if (!enabled) { + enabled |= checkModule(privacyPoliciyDir, ureq); } } - return enabled ? super.getExtensionFor(extensionPoint, ureq) : null; + return enabled ? null : super.getExtensionFor(extensionPoint, ureq); } private boolean checkContent(VFSItem file) { @@ -116,4 +111,24 @@ public class EmptyImpressumExtension extends GenericActionExtension { } return check; } + + private boolean checkModule(VFSContainer baseFolder, UserRequest ureq) { + boolean enabled = true; + + if (checkContent(baseFolder.resolve("index_" + ureq.getLocale().getLanguage() + ".html"))) { + // Nothing to do here + } else if (checkContent(baseFolder.resolve("index_" + I18nModule.getDefaultLocale().getLanguage() + ".html"))) { + // Nothing to do here + } else { + for (String locale : i18nModule.getEnabledLanguageKeys()) { + if (checkContent(baseFolder.resolve("index_" + locale + ".html"))) { + return enabled; + } + } + + enabled &= false; + } + + return enabled; + } } diff --git a/src/main/java/org/olat/core/commons/controllers/impressum/ImpressumController.java b/src/main/java/org/olat/core/commons/controllers/impressum/ImpressumController.java index afd13002d4c..408f7711404 100644 --- a/src/main/java/org/olat/core/commons/controllers/impressum/ImpressumController.java +++ b/src/main/java/org/olat/core/commons/controllers/impressum/ImpressumController.java @@ -27,6 +27,7 @@ import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.generic.iframe.IFrameDisplayController; +import org.olat.core.util.i18n.I18nModule; import org.springframework.beans.factory.annotation.Autowired; /** @@ -42,6 +43,8 @@ public class ImpressumController extends BasicController { @Autowired private ImpressumModule impressumModule; + @Autowired + private I18nModule i18nModule; /** * @param ureq @@ -49,20 +52,30 @@ public class ImpressumController extends BasicController { */ public ImpressumController(UserRequest ureq, WindowControl control) { super(ureq, control); - File baseFolder = impressumModule.getImpressumDirectory(); IFrameDisplayController iframe = new IFrameDisplayController(ureq, getWindowControl(), baseFolder); listenTo(iframe); - + String langCode = ureq.getLocale().getLanguage(); String fileName = "index_" + langCode + ".html"; - if (new File(baseFolder, fileName).exists()) { + if (new File (baseFolder, fileName).exists()){ iframe.setCurrentURI(fileName); - } else if(new File (baseFolder, "index_de.html").exists()) { - iframe.setCurrentURI("index_de.html"); - } else if(new File (baseFolder, "index_en.html").exists()) { - iframe.setCurrentURI("index_en.html"); + } else { + langCode = I18nModule.getDefaultLocale().getLanguage(); + fileName = "index_" + langCode + ".html"; + if (new File(baseFolder, fileName).exists()) { + iframe.setCurrentURI(fileName); + } else { + for (String lang : i18nModule.getEnabledLanguageKeys()) { + fileName = "index_" + lang + ".html"; + if (new File(baseFolder, fileName).exists()) { + iframe.setCurrentURI(fileName); + break; + } + } + } } + putInitialPanel(iframe.getInitialComponent()); } diff --git a/src/main/java/org/olat/core/commons/controllers/impressum/ImpressumExtension.java b/src/main/java/org/olat/core/commons/controllers/impressum/ImpressumExtension.java index 86e954215db..ea0f3d68df5 100644 --- a/src/main/java/org/olat/core/commons/controllers/impressum/ImpressumExtension.java +++ b/src/main/java/org/olat/core/commons/controllers/impressum/ImpressumExtension.java @@ -30,6 +30,7 @@ import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.util.filter.FilterFactory; +import org.olat.core.util.i18n.I18nModule; import org.olat.core.util.vfs.LocalFileImpl; import org.olat.core.util.vfs.LocalFolderImpl; import org.olat.core.util.vfs.VFSContainer; @@ -43,9 +44,11 @@ import org.olat.core.util.vfs.VFSLeaf; public class ImpressumExtension extends GenericActionExtension { private final ImpressumModule impressumModule; + private final I18nModule i18nModule; - public ImpressumExtension(ImpressumModule impressumModule) { + public ImpressumExtension(ImpressumModule impressumModule, I18nModule i18nModule) { this.impressumModule = impressumModule; + this.i18nModule = i18nModule; } @@ -56,22 +59,25 @@ public class ImpressumExtension extends GenericActionExtension { @Override public ExtensionElement getExtensionFor(String extensionPoint, UserRequest ureq) { - boolean enabled = false; +boolean enabled = false; if (impressumModule.isEnabled()) { VFSContainer impressumDir = new LocalFolderImpl(impressumModule.getImpressumDirectory()); - enabled = true; if (checkContent(impressumDir.resolve("index_" + ureq.getLocale().getLanguage() + ".html"))) { - // Nothing to do here - } else if (checkContent(impressumDir.resolve("index_en.html"))) { - // Nothing to do here - } else if (checkContent(impressumDir.resolve("index_de.html"))) { - // Nothing to do here + enabled |= true; + } else if (checkContent(impressumDir.resolve("index_" + I18nModule.getDefaultLocale().getLanguage() + ".html"))) { + enabled |= true; } else { - // Nothing found - enabled &= false; - } + + for (String locale : i18nModule.getEnabledLanguageKeys()) { + if (checkContent(impressumDir.resolve("index_" + locale + ".html"))) { + enabled |= true; + break; + } + } + } + } return enabled ? super.getExtensionFor(extensionPoint, ureq) : null; diff --git a/src/main/java/org/olat/core/commons/controllers/impressum/PrivacyPolicyController.java b/src/main/java/org/olat/core/commons/controllers/impressum/PrivacyPolicyController.java index d172a2b3d98..481fbae9e67 100644 --- a/src/main/java/org/olat/core/commons/controllers/impressum/PrivacyPolicyController.java +++ b/src/main/java/org/olat/core/commons/controllers/impressum/PrivacyPolicyController.java @@ -27,6 +27,7 @@ import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.generic.iframe.IFrameDisplayController; +import org.olat.core.util.i18n.I18nModule; import org.springframework.beans.factory.annotation.Autowired; /* @@ -37,6 +38,8 @@ public class PrivacyPolicyController extends BasicController { @Autowired private ImpressumModule impressumModule; + @Autowired + private I18nModule i18nModule; public PrivacyPolicyController(UserRequest ureq, WindowControl control) { super(ureq, control); @@ -48,10 +51,20 @@ public class PrivacyPolicyController extends BasicController { String fileName = "index_" + langCode + ".html"; if (new File (baseFolder, fileName).exists()){ iframe.setCurrentURI(fileName); - } else if(new File (baseFolder, "index_de.html").exists()) { - iframe.setCurrentURI("index_de.html"); - } else if(new File (baseFolder, "index_en.html").exists()) { - iframe.setCurrentURI("index_en.html"); + } else { + langCode = I18nModule.getDefaultLocale().getLanguage(); + fileName = "index_" + langCode + ".html"; + if (new File(baseFolder, fileName).exists()) { + iframe.setCurrentURI(fileName); + } else { + for (String lang : i18nModule.getEnabledLanguageKeys()) { + fileName = "index_" + lang + ".html"; + if (new File(baseFolder, fileName).exists()) { + iframe.setCurrentURI(fileName); + break; + } + } + } } putInitialPanel(iframe.getInitialComponent()); diff --git a/src/main/java/org/olat/core/commons/controllers/impressum/PrivacyPolicyExtension.java b/src/main/java/org/olat/core/commons/controllers/impressum/PrivacyPolicyExtension.java index e81d082b649..fd63d3ff42e 100644 --- a/src/main/java/org/olat/core/commons/controllers/impressum/PrivacyPolicyExtension.java +++ b/src/main/java/org/olat/core/commons/controllers/impressum/PrivacyPolicyExtension.java @@ -30,6 +30,7 @@ import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.util.filter.FilterFactory; +import org.olat.core.util.i18n.I18nModule; import org.olat.core.util.vfs.LocalFileImpl; import org.olat.core.util.vfs.LocalFolderImpl; import org.olat.core.util.vfs.VFSContainer; @@ -44,9 +45,11 @@ public class PrivacyPolicyExtension extends GenericActionExtension { private final ImpressumModule impressumModule; + private final I18nModule i18nModule; - public PrivacyPolicyExtension(ImpressumModule impressumModule) { + public PrivacyPolicyExtension(ImpressumModule impressumModule, I18nModule i18nModule) { this.impressumModule = impressumModule; + this.i18nModule = i18nModule; } @@ -61,18 +64,21 @@ public class PrivacyPolicyExtension extends GenericActionExtension { if (impressumModule.isEnabled()) { VFSContainer impressumDir = new LocalFolderImpl(impressumModule.getPrivacyPolicyDirectory()); - enabled = true; if (checkContent(impressumDir.resolve("index_" + ureq.getLocale().getLanguage() + ".html"))) { - // Nothing to do here - } else if (checkContent(impressumDir.resolve("index_en.html"))) { - // Nothing to do here - } else if (checkContent(impressumDir.resolve("index_de.html"))) { - // Nothing to do here + enabled |= true; + } else if (checkContent(impressumDir.resolve("index_" + I18nModule.getDefaultLocale().getLanguage() + ".html"))) { + enabled |= true; } else { - // Nothing found - enabled &= false; - } + + for (String locale : i18nModule.getEnabledLanguageKeys()) { + if (checkContent(impressumDir.resolve("index_" + locale + ".html"))) { + enabled |= true; + break; + } + } + } + } return enabled ? super.getExtensionFor(extensionPoint, ureq) : null; diff --git a/src/main/java/org/olat/core/commons/controllers/impressum/TermsOfUseController.java b/src/main/java/org/olat/core/commons/controllers/impressum/TermsOfUseController.java index af09b707014..a788fd9a226 100644 --- a/src/main/java/org/olat/core/commons/controllers/impressum/TermsOfUseController.java +++ b/src/main/java/org/olat/core/commons/controllers/impressum/TermsOfUseController.java @@ -27,6 +27,7 @@ import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.generic.iframe.IFrameDisplayController; +import org.olat.core.util.i18n.I18nModule; import org.springframework.beans.factory.annotation.Autowired; /** @@ -42,6 +43,8 @@ public class TermsOfUseController extends BasicController { @Autowired private ImpressumModule impressumModule; + @Autowired + private I18nModule i18nModule; /** * @param ureq @@ -57,10 +60,20 @@ public class TermsOfUseController extends BasicController { String fileName = "index_" + langCode + ".html"; if (new File (baseFolder, fileName).exists()){ iframe.setCurrentURI(fileName); - } else if(new File (baseFolder, "index_de.html").exists()) { - iframe.setCurrentURI("index_de.html"); - } else if(new File (baseFolder, "index_en.html").exists()) { - iframe.setCurrentURI("index_en.html"); + } else { + langCode = I18nModule.getDefaultLocale().getLanguage(); + fileName = "index_" + langCode + ".html"; + if (new File(baseFolder, fileName).exists()) { + iframe.setCurrentURI(fileName); + } else { + for (String lang : i18nModule.getEnabledLanguageKeys()) { + fileName = "index_" + lang + ".html"; + if (new File(baseFolder, fileName).exists()) { + iframe.setCurrentURI(fileName); + break; + } + } + } } putInitialPanel(iframe.getInitialComponent()); diff --git a/src/main/java/org/olat/core/commons/controllers/impressum/TermsOfUseExtension.java b/src/main/java/org/olat/core/commons/controllers/impressum/TermsOfUseExtension.java index d946ca7e992..38080de885c 100644 --- a/src/main/java/org/olat/core/commons/controllers/impressum/TermsOfUseExtension.java +++ b/src/main/java/org/olat/core/commons/controllers/impressum/TermsOfUseExtension.java @@ -30,6 +30,7 @@ import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.util.filter.FilterFactory; +import org.olat.core.util.i18n.I18nModule; import org.olat.core.util.vfs.LocalFileImpl; import org.olat.core.util.vfs.LocalFolderImpl; import org.olat.core.util.vfs.VFSContainer; @@ -44,9 +45,11 @@ public class TermsOfUseExtension extends GenericActionExtension { private final ImpressumModule impressumModule; + private final I18nModule i18nModule; - public TermsOfUseExtension(ImpressumModule impressumModule) { + public TermsOfUseExtension(ImpressumModule impressumModule, I18nModule i18nModule) { this.impressumModule = impressumModule; + this.i18nModule = i18nModule; } @@ -61,18 +64,20 @@ public class TermsOfUseExtension extends GenericActionExtension { if (impressumModule.isEnabled()) { VFSContainer impressumDir = new LocalFolderImpl(impressumModule.getTermsOfUseDirectory()); - enabled = true; if (checkContent(impressumDir.resolve("index_" + ureq.getLocale().getLanguage() + ".html"))) { - // Nothing to do here - } else if (checkContent(impressumDir.resolve("index_en.html"))) { - // Nothing to do here - } else if (checkContent(impressumDir.resolve("index_de.html"))) { - // Nothing to do here + enabled |= true; + } else if (checkContent(impressumDir.resolve("index_" + I18nModule.getDefaultLocale().getLanguage() + ".html"))) { + enabled |= true; } else { - // Nothing found - enabled &= false; - } + for (String locale : i18nModule.getEnabledLanguageKeys()) { + if (checkContent(impressumDir.resolve("index_" + locale + ".html"))) { + enabled |= true; + break; + } + } + } + } return enabled ? super.getExtensionFor(extensionPoint, ureq) : null; diff --git a/src/main/java/org/olat/core/commons/controllers/impressum/_spring/impressumContext.xml b/src/main/java/org/olat/core/commons/controllers/impressum/_spring/impressumContext.xml index f3540ec0a13..992359cb880 100644 --- a/src/main/java/org/olat/core/commons/controllers/impressum/_spring/impressumContext.xml +++ b/src/main/java/org/olat/core/commons/controllers/impressum/_spring/impressumContext.xml @@ -6,6 +6,7 @@ <bean class="org.olat.core.commons.controllers.impressum.ImpressumExtension" init-method="initExtensionPoints"> <constructor-arg index="0" ref="impressumModule" /> + <constructor-arg index="1" ref="i18nModule" /> <property name="actionController"> <bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype"> <property name="className" value="org.olat.core.commons.controllers.impressum.ImpressumController"/> @@ -22,6 +23,7 @@ <bean class="org.olat.core.commons.controllers.impressum.TermsOfUseExtension" init-method="initExtensionPoints"> <constructor-arg index="0" ref="impressumModule" /> + <constructor-arg index="1" ref="i18nModule" /> <property name="actionController"> <bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype"> <property name="className" value="org.olat.core.commons.controllers.impressum.TermsOfUseController"/> @@ -38,6 +40,7 @@ <bean class="org.olat.core.commons.controllers.impressum.PrivacyPolicyExtension" init-method="initExtensionPoints"> <constructor-arg index="0" ref="impressumModule" /> + <constructor-arg index="1" ref="i18nModule" /> <property name="actionController"> <bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype"> <property name="className" value="org.olat.core.commons.controllers.impressum.PrivacyPolicyController"/> @@ -54,6 +57,7 @@ <bean class="org.olat.core.commons.controllers.impressum.EmptyImpressumExtension" init-method="initExtensionPoints"> <constructor-arg index="0" ref="impressumModule" /> + <constructor-arg index="1" ref="i18nModule" /> <property name="actionController"> <bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype"> <property name="className" value="org.olat.core.commons.controllers.impressum.EmptyImpressumController"/> -- GitLab