diff --git a/src/main/java/de/bps/course/nodes/ll/LLEditForm.java b/src/main/java/de/bps/course/nodes/ll/LLEditForm.java index 8a0d04e21d6934b9def5974eead061beb3cf74ff..64c46a7bd3d568577e97f4d97ced3c628d23acfc 100644 --- a/src/main/java/de/bps/course/nodes/ll/LLEditForm.java +++ b/src/main/java/de/bps/course/nodes/ll/LLEditForm.java @@ -322,7 +322,8 @@ public class LLEditForm extends FormBasicController { lTarget.setUserObject(link); lTargetInputList.add(index, lTarget); //add html target - SingleSelection htmlTargetSelection = uifactory.addDropdownSingleselect("html_target" + counter, flc, new String[]{BLANK_KEY, SELF_KEY}, new String[]{translate("ll.table.html_target"), translate("ll.table.html_target.self")}, null); + SingleSelection htmlTargetSelection = uifactory.addDropdownSingleselect("html_target" + counter, null, flc, + new String[]{BLANK_KEY, SELF_KEY}, new String[]{translate("ll.table.html_target"), translate("ll.table.html_target.self")}, null); htmlTargetSelection.setUserObject(link); htmlTargetSelection.select((SELF_KEY.equals(link.getHtmlTarget()) ? SELF_KEY : BLANK_KEY), true); lHtmlTargetInputList.add(index, htmlTargetSelection); diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/FormUIFactory.java b/src/main/java/org/olat/core/gui/components/form/flexible/FormUIFactory.java index d94737e00edbe62eedb85f6e73489c36e3f9ee64..0d2e2406d147b2120618a2d03c119457013db824 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/FormUIFactory.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/FormUIFactory.java @@ -270,6 +270,10 @@ public class FormUIFactory { return addCheckboxesVertical(name, name, formLayout, keys, values, null, iconLeftCSS, columns); } + public MultipleSelectionElement addCheckboxesVertical(String name, String i18nLabel, FormItemContainer formLayout, String[] keys, String[] values, String[] iconLeftCSS, int columns) { + return addCheckboxesVertical(name, i18nLabel, formLayout, keys, values, null, iconLeftCSS, columns); + } + public MultipleSelectionElement addCheckboxesVertical(String name, String i18nLabel, FormItemContainer formLayout, String[] keys, String[] values, int columns) { return addCheckboxesVertical(name, i18nLabel, formLayout, keys, values, null, null, columns); } diff --git a/src/main/java/org/olat/core/util/i18n/ui/TranslationToolI18nItemEditCrumbController.java b/src/main/java/org/olat/core/util/i18n/ui/TranslationToolI18nItemEditCrumbController.java index 68eeffefc8b0905a7b8b093e4b74428836df720a..1157507358e62e2eba56b97fac05fa613742d30b 100644 --- a/src/main/java/org/olat/core/util/i18n/ui/TranslationToolI18nItemEditCrumbController.java +++ b/src/main/java/org/olat/core/util/i18n/ui/TranslationToolI18nItemEditCrumbController.java @@ -179,20 +179,20 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo } String[] bundlesListArray = ArrayHelper.toArray(bundlesList); String[] keysListArray = ArrayHelper.toArray(keysList); - bundlesSelection = uifactory.addDropdownSingleselect("bundlesSelection", this.flc, bundlesListArray, bundlesListArray, null); + bundlesSelection = uifactory.addDropdownSingleselect("bundlesSelection", null, flc, bundlesListArray, bundlesListArray, null); bundlesSelection.setDomReplacementWrapperRequired(false); bundlesSelection.addActionListener(FormEvent.ONCHANGE); bundlesSelection.select(currentItem.getBundleName(), true); - keysSelection = uifactory.addDropdownSingleselect("keysSelection", this.flc, keysListArray, keysListArray, null); + keysSelection = uifactory.addDropdownSingleselect("keysSelection", null, flc, keysListArray, keysListArray, null); keysSelection.setDomReplacementWrapperRequired(false); keysSelection.addActionListener(FormEvent.ONCHANGE); keysSelection.select(currentItem.getKey(), true); // Add reference box - referenceArea = uifactory.addTextAreaElement("referenceArea", "edit.referenceArea", -1, 1, -1, true, false, null, flc); + referenceArea = uifactory.addTextAreaElement("referenceArea", null, -1, 1, -1, true, false, null, flc); referenceArea.setEnabled(false); // read only // Add compare box Boolean compareEnabledPrefs = (Boolean) guiPrefs.get(I18nModule.class, I18nModule.GUI_PREFS_COMPARE_LANG_ENABLED, Boolean.FALSE); - compareArea = uifactory.addTextAreaElement("compareArea", "edit.compareArea", -1, 1, -1, true, false, null, this.flc); + compareArea = uifactory.addTextAreaElement("compareArea", null, -1, 1, -1, true, false, null, flc); compareArea.setEnabled(false); // read only compareArea.setVisible(compareEnabledPrefs.booleanValue()); @@ -221,7 +221,7 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo .getDefaultLocale().toString()); compareLocale = i18nMgr.getLocaleOrNull(comparePrefs); if (compareLocale == null) compareLocale = I18nModule.getDefaultLocale(); - compareLangSelection = uifactory.addDropdownSingleselect("compareLangSelection", flc, comparelangKeys, compareLangValues, null); + compareLangSelection = uifactory.addDropdownSingleselect("compareLangSelection", null, flc, comparelangKeys, compareLangValues, null); compareLangSelection.setDomReplacementWrapperRequired(false); compareLangSelection.select(i18nModule.getLocaleKey(compareLocale), true); flc.contextPut("compareLanguageKey", i18nModule.getLocaleKey(compareLocale)); @@ -231,9 +231,9 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo // Add target box flc.contextPut("targetLanguageKey", i18nModule.getLocaleKey(currentItem.getLocale())); flc.contextPut("targetLanguage", i18nMgr.getLanguageTranslated(i18nModule.getLocaleKey(currentItem.getLocale()), false)); - targetArea = uifactory.addTextAreaElement("targetArea", "edit.targetArea", -1, 5, -1, true, false, null, flc); + targetArea = uifactory.addTextAreaElement("targetArea", null, -1, 5, -1, true, false, null, flc); // Add annotation box - annotationArea = uifactory.addTextAreaElement("annotationArea", "edit.annotationArea", -1, 1, -1, true, false, null, flc); + annotationArea = uifactory.addTextAreaElement("annotationArea", null, -1, 1, -1, true, false, null, flc); // Add progress bar // init with values progressBarBundle = new ProgressBar("progressBarBundle", 300, 1, bundlesList.size(), translate("generic.bundles")); @@ -278,7 +278,7 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo // still in same bundle, just select the currentItemPosition key keysSelection.select(currentItem.getKey(), true); // Update key progress bar - progressBarKey.setActual(keysSelection.getSelected() + 1); + progressBarKey.setActual(keysSelection.getSelected() + 1.0f); } else { // in new bundle, load new keys updateKeysSelectionAndProgress(); @@ -343,11 +343,11 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo keysSelection.select(currentItem.getKey(), true); // Update key progress bar progressBarKey.setMax(keysListArray.length); - progressBarKey.setActual(keysSelection.getSelected()+1); + progressBarKey.setActual(keysSelection.getSelected() + 1.0f); // Set currentItemPosition bundle bundlesSelection.select(currentItem.getBundleName(), true); // Update bundle progress bar - progressBarBundle.setActual(bundlesSelection.getSelected()+1); + progressBarBundle.setActual(bundlesSelection.getSelected() + 1.0f); } private void doPrevious(UserRequest ureq) { @@ -384,16 +384,9 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo } } - /* - * (non-Javadoc) - * - * @see - * org.olat.core.gui.components.form.flexible.impl.FormBasicController#formOK - * (org.olat.core.gui.UserRequest) - */ @Override protected void formOK(UserRequest ureq) { - // no form ok events to catch + // no form ok events to catch } @Override @@ -411,14 +404,6 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo return allOk; } - /* - * (non-Javadoc) - * - * @seeorg.olat.core.gui.components.form.flexible.impl.FormBasicController# - * formInnerEvent(org.olat.core.gui.UserRequest, - * org.olat.core.gui.components.form.flexible.FormItem, - * org.olat.core.gui.components.form.flexible.impl.FormEvent) - */ @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if (source == bundlesSelection) { @@ -490,12 +475,7 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo } } - /* - * (non-Javadoc) - * - * @seeorg.olat.core.gui.control.generic.breadcrumb.CrumbController# - * getCrumbLinkHooverText() - */ + @Override public String getCrumbLinkHooverText() { if (customizingMode) { return translate("edit.customize.crumb.hoover"); @@ -503,24 +483,11 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo return translate("edit.crumb.hoover"); } - /* - * (non-Javadoc) - * - * @see - * org.olat.core.gui.control.generic.breadcrumb.CrumbController#getCrumbLinkText - * () - */ + @Override public String getCrumbLinkText() { return translate("edit.crumb.link"); } - /* - * (non-Javadoc) - * - * @see - * org.olat.core.gui.components.form.flexible.impl.FormBasicController#doDispose - * () - */ @Override protected void doDispose() { i18nItems = null; diff --git a/src/main/java/org/olat/core/util/i18n/ui/TranslationToolStartCrumbController.java b/src/main/java/org/olat/core/util/i18n/ui/TranslationToolStartCrumbController.java index 8922a7484b909efd9cef260320098aee272dbceb..c5a5ca6c8b678188a64156d1fde17a4954981de5 100644 --- a/src/main/java/org/olat/core/util/i18n/ui/TranslationToolStartCrumbController.java +++ b/src/main/java/org/olat/core/util/i18n/ui/TranslationToolStartCrumbController.java @@ -260,7 +260,7 @@ class TranslationToolStartCrumbController extends CrumbFormBasicController { private void initMissingItemsElements(FormUIFactory formFactory, FormItemContainer formLayout, String[] bundlesKeys, String[] bundlesValues) { // Add missing bundles selector - missingBundlesSelection = formFactory.addDropdownSingleselect("missingBundlesSelection", this.flc, bundlesKeys, bundlesValues, null); + missingBundlesSelection = formFactory.addDropdownSingleselect("missingBundlesSelection", null, flc, bundlesKeys, bundlesValues, null); missingBundlesSelection.addActionListener(FormEvent.ONCHANGE); missingBundlesSelection.select(ALL_BUNDLES_IDENTIFYER, true); // Add missing bundles children switch @@ -288,7 +288,7 @@ class TranslationToolStartCrumbController extends CrumbFormBasicController { private void initExistingItemsElements(FormUIFactory formFactory, FormItemContainer formLayout, String[] bundlesKeys, String[] bundlesValues) { // Add existing bundles selector - existingBundlesSelection = formFactory.addDropdownSingleselect("existingBundlesSelection", this.flc, bundlesKeys, bundlesValues, null); + existingBundlesSelection = formFactory.addDropdownSingleselect("existingBundlesSelection", null, flc, bundlesKeys, bundlesValues, null); existingBundlesSelection.addActionListener(FormEvent.ONCHANGE); existingBundlesSelection.select(ALL_BUNDLES_IDENTIFYER, true); // Add existing bundles children switch @@ -316,7 +316,7 @@ class TranslationToolStartCrumbController extends CrumbFormBasicController { private void initAllItemsElements(FormUIFactory formFactory, FormItemContainer formLayout, String[] bundlesKeys, String[] bundlesValues) { // Add all bundles selector - allBundlesSelection = formFactory.addDropdownSingleselect("allBundlesSelection", this.flc, bundlesKeys, bundlesValues, null); + allBundlesSelection = formFactory.addDropdownSingleselect("allBundlesSelection", null, flc, bundlesKeys, bundlesValues, null); allBundlesSelection.addActionListener(FormEvent.ONCHANGE); allBundlesSelection.select(ALL_BUNDLES_IDENTIFYER, true); // Add all bundles children switch @@ -366,7 +366,7 @@ class TranslationToolStartCrumbController extends CrumbFormBasicController { searchReferenceTargetKeys, searchReferenceTargetValues); searchReferenceTargetSelection.select(KEYS_TARGET, true); // Add search bundles selector : reuse keys from above - searchBundlesSelection = formFactory.addDropdownSingleselect("searchBundlesSelection", searchLayoutContainer, bundlesKeys, + searchBundlesSelection = formFactory.addDropdownSingleselect("searchBundlesSelection", null, searchLayoutContainer, bundlesKeys, bundlesValues, null); searchBundlesSelection.setLabel("generic.limit.bundles", null); searchBundlesSelection.addActionListener(FormEvent.ONCHANGE); diff --git a/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java b/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java index 2a96f228b0475d798cf9fb65ec8ed7f2fc851c0f..86a9409175b9443125d9ddb37067fe696d2c30b0 100644 --- a/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java +++ b/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java @@ -37,6 +37,7 @@ import org.olat.core.commons.modules.bc.commands.FolderCommand; import org.olat.core.commons.modules.bc.commands.FolderCommandHelper; import org.olat.core.commons.modules.bc.commands.FolderCommandStatus; import org.olat.core.commons.modules.bc.components.FolderComponent; +import org.olat.core.commons.modules.bc.meta.MetaInfoController; import org.olat.core.commons.services.vfs.VFSMetadata; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; @@ -111,7 +112,8 @@ public class SendDocumentsByEMailController extends FormBasicController implemen private BaseSecurity securityManager; public SendDocumentsByEMailController(UserRequest ureq, WindowControl wControl) { - super(ureq, wControl, null, Util.createPackageTranslator(MailModule.class, ureq.getLocale())); + super(ureq, wControl, null, Util.createPackageTranslator(MailModule.class, ureq.getLocale(), + Util.createPackageTranslator(MetaInfoController.class, ureq.getLocale()))); setBasePackage(MailModule.class); allowAttachments = !FolderConfig.getSendDocumentLinkOnly(); diff --git a/src/main/java/org/olat/course/disclaimer/ui/CourseDisclaimerController.java b/src/main/java/org/olat/course/disclaimer/ui/CourseDisclaimerController.java index 979c8ace97bdf3784ac9e99b04ce738206b047d3..f6d54f367db04145e1d50811302546e3a1f21fc6 100644 --- a/src/main/java/org/olat/course/disclaimer/ui/CourseDisclaimerController.java +++ b/src/main/java/org/olat/course/disclaimer/ui/CourseDisclaimerController.java @@ -110,7 +110,7 @@ public class CourseDisclaimerController extends FormBasicController { uifactory.addSpacerElement("course.disclaimer.spacer.1", formLayout, false); // Disclaimer 1 - disclaimer1HeaderEl = uifactory.addStaticTextElement("course.disclaimer.1.section", translate("course.disclaimer.1"), formLayout); + disclaimer1HeaderEl = uifactory.addStaticTextElement("course.disclaimer.1.section", null, translate("course.disclaimer.1"), formLayout); disclaimer1HeaderEl.showLabel(false); disclaimer1HeaderEl.setElementCssClass("o_static_textelement_bold"); @@ -129,7 +129,7 @@ public class CourseDisclaimerController extends FormBasicController { spacer = uifactory.addSpacerElement("course.disclaimer.spacer.2", formLayout, false); // Disclaimer 2 - disclaimer2HeaderEl = uifactory.addStaticTextElement("course.disclaimer.2.section", translate("course.disclaimer.2"), formLayout); + disclaimer2HeaderEl = uifactory.addStaticTextElement("course.disclaimer.2.section", null, translate("course.disclaimer.2"), formLayout); disclaimer2HeaderEl.showLabel(false); disclaimer2HeaderEl.setElementCssClass("o_static_textelement_bold"); diff --git a/src/main/java/org/olat/course/editor/MultiSPController.java b/src/main/java/org/olat/course/editor/MultiSPController.java index ba4e7bf7133efd171799dd654c7a4033dd8e195b..d4aeeda22400d0c77e076f72940671a347ad467b 100644 --- a/src/main/java/org/olat/course/editor/MultiSPController.java +++ b/src/main/java/org/olat/course/editor/MultiSPController.java @@ -121,7 +121,8 @@ public class MultiSPController extends FormBasicController { String[] singleKey = new String[]{ node.getId() }; String[] singleValue = new String[]{ node.getName() }; String[] iconCSS = new String[]{ "o_icon o_icon-fw " + node.getIconCssClass() }; - MultipleSelectionElement nodeSelection = uifactory.addCheckboxesVertical("print.node.list." + nodeSelections.size(), layoutcont, singleKey, singleValue, iconCSS, 1); + MultipleSelectionElement nodeSelection = uifactory.addCheckboxesVertical("print.node.list." + nodeSelections.size(), null, layoutcont, + singleKey, singleValue, iconCSS, 1); nodeSelection.setLabel("multi.sps.file", null); nodeSelection.setUserObject(node); diff --git a/src/main/java/org/olat/ims/qti21/resultexport/QTI21ResultsExportMediaResource.java b/src/main/java/org/olat/ims/qti21/resultexport/QTI21ResultsExportMediaResource.java index 6e9bfe6c17787235110857d5a4bbc6c6e3a42fb3..8f5557cf53ee4bc5d7011f8e923db223a2d5505a 100644 --- a/src/main/java/org/olat/ims/qti21/resultexport/QTI21ResultsExportMediaResource.java +++ b/src/main/java/org/olat/ims/qti21/resultexport/QTI21ResultsExportMediaResource.java @@ -41,6 +41,7 @@ import java.util.zip.ZipOutputStream; import javax.servlet.http.HttpServletResponse; +import org.apache.logging.log4j.Logger; import org.apache.velocity.VelocityContext; import org.olat.admin.user.imp.TransientIdentity; import org.olat.core.CoreSpringFactory; @@ -63,7 +64,6 @@ import org.olat.core.gui.util.WindowControlMocker; import org.olat.core.id.Identity; import org.olat.core.id.Roles; import org.olat.core.id.UserConstants; -import org.apache.logging.log4j.Logger; import org.olat.core.logging.Tracing; import org.olat.core.util.FileUtils; import org.olat.core.util.Formatter; diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties index d3543aba1cf320ffb9173c8d32ea900fbe81046e..3e3a21dc0c491cc081de866e849ee734e9873aad 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties @@ -80,6 +80,7 @@ confirm.suspend.test=$org.olat.modules.iq\:confirmSuspend confirmation=Best\u00E4tigung correct.solution=Korrekte L\u00F6sung correction=Korrigieren +correction.alternatives=Varianten correction.readonly=Korrektur nur sehen correction.workflow=Korrekturworkflow correction.workflow.anonymous=Anonym diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties index 9f6a8b8914332fdc413c8d1e19b40e4d508d20cf..15fd21fdf051b84bee32c58938557083291fe71f 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties @@ -80,6 +80,7 @@ confirm.suspend.test=$org.olat.modules.iq\:confirmSuspend confirmation=Confirmation correct.solution=Correct solution correction=Grade +correction.alternatives=Alternative correction.readonly=See correction read only correction.workflow=Correction workflow correction.workflow.anonymous=Anonymous diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_fr.properties index 262b81fbb5e5023503428e7f42905d52c61e5a04..c0f5931c698683bcd960457ee3d977b389c5c7fa 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_fr.properties @@ -80,6 +80,7 @@ confirm.suspend.test=$org.olat.modules.iq\:confirmSuspend confirmation=Confirmation correct.solution=Solution correcte correction=Corriger +correction.alternatives=Alternatives correction.readonly=Corrections en lecture seule correction.workflow=Corrections correction.workflow.anonymous=Anonymis\u00E9 diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties index 8cba37429b84c9ae2cc6fc19e973bb4d4ce98d6b..4817155cdc0be19487c49796857d5326b9ebf491 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties @@ -86,7 +86,8 @@ fib.tolerance.mode.absolute.help=Die Schranke stellt eine absolute Zahl dar. Bei fib.tolerance.mode.exact=Genau fib.tolerance.mode.exact.help=Die L\u00F6sung entspricht exakt der eingegebenen L\u00F6sung unter "L\u00F6sung" fib.tolerance.mode.relative=Relativ -fib.tolerance.mode.relative.example=Prozent, zum Beispiel 15 oder 99.0 +fib.tolerance.mode.relative.low.example=Prozent Abweichung nach unten, example 15 +fib.tolerance.mode.relative.up.example=Prozent Abweichung nach oben, example 15 fib.tolerance.mode.relative.help=Die Schranke stellt eine relative Zahl in Prozent dar.\u2028Beispiel\: L\u00F6sung 20, Untere Schranke 10, Obere Schranke 10 → Alle L\u00F6sungen zwischen 18 und 22 sind g\u00FCltig, denn die untere Schranke bedeutet minus 10% (20-2) und die obere Schranke plus 10% (20+2). fib.tolerance.up=Obere Schranke file=Datei diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties index 73c88a05be274d4384259ab222a51e0848b6fa97..0681fa493498f830c81279bb384110a1371830a2 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties @@ -86,7 +86,8 @@ fib.tolerance.mode.absolute.help=The solution is accepted until a lower and an u fib.tolerance.mode.exact=Exact fib.tolerance.mode.exact.help=The solution correlates exactly with the inserted solution in "Solution" fib.tolerance.mode.relative=Relative -fib.tolerance.mode.relative.example=Percentage, example 15 or 99.0 +fib.tolerance.mode.relative.low.example=Lower tolerance in percent, example 15 +fib.tolerance.mode.relative.up.example=Upper tolerance in percent, example 15 fib.tolerance.mode.relative.help=The solution is accepted until a lower and an upper bound. The bound is a relative number in percent. Example\: Solution 20, lower bound 10, upper bound 10 → all solutions between 18 and 22 are correct, as the lower bound means minus 10% (20-2) and the upper bound plus 10% (20+2). fib.tolerance.up=Upper bound file=File diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties index afbe9a781c932b2c93d8322f3bdc4b5e34102a5e..a7e39153e2bc8dcbdba2df136b8744392e995dd1 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties @@ -87,7 +87,8 @@ fib.tolerance.mode.absolute.help=La solution est accept\u00E9 si elle se trouve fib.tolerance.mode.exact=Exact fib.tolerance.mode.exact.help=La solution doit \u00EAtre exactement celle entr\u00E9e sous "Solution". fib.tolerance.mode.relative=Relatif -fib.tolerance.mode.relative.example=Pourcentage, par example 15 ou 99.0 +fib.tolerance.mode.relative.low.example=Tol\u00E9rance sup\u00E9rieure en pourcent, example 15 +fib.tolerance.mode.relative.up.example=Tol\u00E9rance inf\u00E9rieure en pourcent, example 15 fib.tolerance.mode.relative.help=Le solution est accept\u00E9 entre la limite inf\u00E9rieure et sup\u00E9rieure. La limite peut \u00EAtre un nombre relatif exprim\u00E9 en pour cent, exemple, la solution est 20, limite inf\u00E9rieure 10, limite sup\u00E9rieure 10 → toutes les r\u00E9ponses entre 18 et 22 sont correctes. La limite inf\u00E9rieure signifie moins 10% (20-2) and la limite sup\u00E9rieur plus 10% (20+2). fib.tolerance.up=Limite sup\u00E9rieur file=Fichier diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_it.properties index 8e5fb6483ee6a84fbb1bd661a96f1f69b51e8755..9322ca2e61e8f18bb2a182a38ff91f938e61cf73 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_it.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_it.properties @@ -37,7 +37,6 @@ fib.tolerance.mode.absolute=Assoluto fib.tolerance.mode.absolute.example=Un numero, ad esempio 1.5 oppure 1322 fib.tolerance.mode.exact=Esatto fib.tolerance.mode.relative=Relativo -fib.tolerance.mode.relative.example=Percentuale, ad esempio 15 oppure 99.0 fib.tolerance.up=Limite superiore file=File form.choice=Scelta diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_pt_BR.properties index 35cfbcc65fdfe1d6b5542096d4ecd4d59aa05cb8..f5644ca97006ea57d08866375c09264fdaf1bcee 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_pt_BR.properties @@ -85,7 +85,6 @@ fib.tolerance.mode.absolute.help=A solu\u00E7\u00E3o \u00E9 aceita at\u00E9 um l fib.tolerance.mode.exact=Exato fib.tolerance.mode.exact.help=A solu\u00E7\u00E3o correlaciona-se exatamente com a solu\u00E7\u00E3o inserida em "Solu\u00E7\u00E3o" fib.tolerance.mode.relative=Relativo -fib.tolerance.mode.relative.example=Porcentagem, exemplo 15 ou 99.0 fib.tolerance.mode.relative.help=A solu\u00E7\u00E3o \u00E9 aceita at\u00E9 um limite inferior e um limite superior. O limite \u00E9 um n\u00FAmero relativo em porcentagem. Exemplo\: Solu\u00E7\u00E3o 20, limite inferior 10, limite superior 10 & rarr; Todas as solu\u00E7\u00F5es entre 18 e 22 s\u00E3o corretas, j\u00E1 que o limite inferior significa menos 10% (20-2) e o limite superior mais 10% (20 + 2). fib.tolerance.up=Limite superior file=Arquivo diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_zh_CN.properties index ce785e29021694db924583b8850868848a630ed6..e473defae1926bdd7cc2285ad2836f4d65e16ed3 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_zh_CN.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_zh_CN.properties @@ -36,7 +36,6 @@ fib.tolerance.mode.absolute=\u7EDD\u5BF9 fib.tolerance.mode.absolute.example=\u6570\u503C\uFF0C\u4F8B\u59821.5\u62161322 fib.tolerance.mode.exact=\u7CBE\u786E fib.tolerance.mode.relative=\u76F8\u5BF9 -fib.tolerance.mode.relative.example=\u767E\u5206\u6570\uFF0C\u4F8B\u598215\u621699.0 fib.tolerance.up=\u4E0A\u9650 file=\u6587\u4EF6 form.choice=\u9009\u62E9 diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBNumericalEntrySettingsController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBNumericalEntrySettingsController.java index ba3d2371da524787ec848165bb597401c957dd41..7ff1d43551d06562e63a31806e42afa083e27d04 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBNumericalEntrySettingsController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBNumericalEntrySettingsController.java @@ -189,8 +189,8 @@ public class FIBNumericalEntrySettingsController extends FormBasicController { lowerToleranceEl.setVisible(visible); upperToleranceEl.setVisible(visible); if(mode == ToleranceMode.RELATIVE) { - lowerToleranceEl.setExampleKey("fib.tolerance.mode.relative.example", null); - upperToleranceEl.setExampleKey("fib.tolerance.mode.relative.example", null); + lowerToleranceEl.setExampleKey("fib.tolerance.mode.relative.low.example", null); + upperToleranceEl.setExampleKey("fib.tolerance.mode.relative.up.example", null); } else if(mode == ToleranceMode.ABSOLUTE) { lowerToleranceEl.setExampleKey("fib.tolerance.mode.absolute.example", null); upperToleranceEl.setExampleKey("fib.tolerance.mode.absolute.example", null); diff --git a/src/main/java/org/olat/modules/opencast/OpencastEventProvider.java b/src/main/java/org/olat/modules/opencast/OpencastEventProvider.java index e9ec5a2ae66b9c5ed8c235a212a1afa291060d6d..c1a75cbb68573c5f1ba9e73b653053b5003ac124 100644 --- a/src/main/java/org/olat/modules/opencast/OpencastEventProvider.java +++ b/src/main/java/org/olat/modules/opencast/OpencastEventProvider.java @@ -20,6 +20,7 @@ package org.olat.modules.opencast; import java.util.List; +import java.util.function.Function; import java.util.stream.Collectors; import org.olat.core.CoreSpringFactory; @@ -35,6 +36,7 @@ import org.olat.core.id.Identity; */ public class OpencastEventProvider implements ListProvider { + private static final Function<Object, String> EVENT_TITLE_STINGIFIER = new EventTitleStingifier(); private static final int LIMIT = 15; private final String moreKey; @@ -63,7 +65,7 @@ public class OpencastEventProvider implements ListProvider { } List<OpencastEvent> matchingEvents = events.stream() - .filter(e -> e.getTitle().toLowerCase().indexOf(searchValue.toLowerCase()) > -1) + .filter(new WildcardFilter(searchValue, EVENT_TITLE_STINGIFIER)) .sorted((e1, e2) -> e1.getTitle().compareToIgnoreCase(e2.getTitle())) .collect(Collectors.toList()); List<OpencastEvent> limitedEvents = matchingEvents.stream() @@ -75,5 +77,17 @@ public class OpencastEventProvider implements ListProvider { receiver.addEntry(moreKey, moreKey); } } + + private static final class EventTitleStingifier implements Function<Object, String> { + + @Override + public String apply(Object object) { + if (object instanceof OpencastEvent) { + return ((OpencastEvent)object).getTitle(); + } + return null; + } + + } } diff --git a/src/main/java/org/olat/modules/opencast/OpencastSeriesProvider.java b/src/main/java/org/olat/modules/opencast/OpencastSeriesProvider.java index 157f0ef581ed17e8fd59503625b00c592174dcc1..6005fca6b45402ce46b0f0e3d6c871577b9fab35 100644 --- a/src/main/java/org/olat/modules/opencast/OpencastSeriesProvider.java +++ b/src/main/java/org/olat/modules/opencast/OpencastSeriesProvider.java @@ -20,6 +20,7 @@ package org.olat.modules.opencast; import java.util.List; +import java.util.function.Function; import java.util.stream.Collectors; import org.olat.core.CoreSpringFactory; @@ -35,6 +36,7 @@ import org.olat.core.id.Identity; */ public class OpencastSeriesProvider implements ListProvider { + private static final Function<Object, String> SERIES_TITLE_STINGIFIER = new SeriesTitleStingifier(); private static final int LIMIT = 15; private final String moreKey; @@ -63,7 +65,7 @@ public class OpencastSeriesProvider implements ListProvider { } List<OpencastSeries> matchingSeries = series.stream() - .filter(s -> s.getTitle().toLowerCase().indexOf(searchValue.toLowerCase()) > -1) + .filter(new WildcardFilter(searchValue, SERIES_TITLE_STINGIFIER)) .sorted((s1, s2) -> s1.getTitle().compareToIgnoreCase(s2.getTitle())) .collect(Collectors.toList()); List<OpencastSeries> limitedSeries = matchingSeries.stream() @@ -75,5 +77,17 @@ public class OpencastSeriesProvider implements ListProvider { receiver.addEntry(moreKey, moreKey); } } + + private static final class SeriesTitleStingifier implements Function<Object, String> { + + @Override + public String apply(Object object) { + if (object instanceof OpencastSeries) { + return ((OpencastSeries)object).getTitle(); + } + return null; + } + + } } diff --git a/src/main/java/org/olat/modules/opencast/WildcardFilter.java b/src/main/java/org/olat/modules/opencast/WildcardFilter.java new file mode 100644 index 0000000000000000000000000000000000000000..bf7e13ef6ffbfbda3c20fc907baa85d00ed22343 --- /dev/null +++ b/src/main/java/org/olat/modules/opencast/WildcardFilter.java @@ -0,0 +1,60 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.opencast; + +import java.util.function.Function; +import java.util.function.Predicate; + +import org.olat.core.util.StringHelper; + +/** + * + * Initial date: 19 Aug 2020<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +class WildcardFilter implements Predicate<Object> { + + private final String searchValue; + private final Function<Object, String> stringifier; + private final boolean wildcard; + + WildcardFilter(String searchValue, Function<Object, String> stringifier) { + this.stringifier = stringifier; + this.wildcard = searchValue.contains("*"); + this.searchValue = wildcard + ? ".*" + searchValue.toLowerCase().replaceAll("\\*", ".*") + ".*" + : searchValue.toLowerCase(); + } + + @Override + public boolean test(Object object) { + // No search value + if (!StringHelper.containsNonWhitespace(searchValue)) return true; + + String value = stringifier.apply(object); + if (value != null) { + String lowerCaseValue = value.toLowerCase(); + return wildcard? lowerCaseValue.matches(searchValue): lowerCaseValue.indexOf(searchValue) > -1; + } + return false; + } + +} diff --git a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties index 87dc8175635f6d2878e0dbc9b57744e3a1d7dae8..823a3fb953cd79c49ef5c0d7f4efb2e966cfb8c2 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties @@ -144,6 +144,7 @@ item.type.matchdraganddrop=Drag and Drop item.type.matchtruefalse=True/false item.type.mc=Multiple Choice item.type.numerical=Numerische Eingabe +item.type.order=Reihenfolge item.type.sc=Single Choice item.type.unkown=Unbekannt item.type.upload=Datei hochladen diff --git a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_en.properties index 809f53f31eb896bdc0f5dd4d40a710345d3c06c9..725275af04e3457aa7dc77d7c7e2a50be5cd8d81 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_en.properties @@ -144,6 +144,7 @@ item.type.matchdraganddrop=Drag and Drop item.type.matchtruefalse=True/false item.type.mc=Multiple-Choice item.type.numerical=Numerical input +item.type.order=Order item.type.sc=Single-Choice item.type.unkown=Unknown item.type.upload=Upload file diff --git a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties index 248d146503508f4854370e4d04b9101cf9d8b32d..864d241606f3fd969e21de40fb85b9e67c3f07f8 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties @@ -144,6 +144,7 @@ item.type.matchdraganddrop=Drag and Drop item.type.matchtruefalse=Juste/faux item.type.mc=Choix multiple item.type.numerical=Entr\u00E9e num\u00E9rique +item.type.order=Ordre item.type.sc=Choix unique item.type.unkown=Inconnu item.type.upload=T\u00E9l\u00E9verser un fichier diff --git a/src/main/java/org/olat/search/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/search/ui/_i18n/LocalStrings_de.properties index afd74a3b2a8afef1eed0ac9728183aa4c0532cba..15404d7acc2369d1e6d9f97737e8d67f8502ebd6 100644 --- a/src/main/java/org/olat/search/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/search/ui/_i18n/LocalStrings_de.properties @@ -77,6 +77,7 @@ type.course.node.iqtest=Kursbaustein, Test type.course.node.forum.message=Kursbaustein, Forum type.course.node.gotomeeting=Kursbaustein, GoToMeeting type.course.node.gta=Kursbaustein, Aufgabe +type.course.node.info.message=Kursbaustein, Mitteilungen type.course.node.ll=Kursbaustein, Linkliste type.course.node.lti=Kursbaustein, LTI-Seite type.course.node.membersCourseNodeConf=Kursbaustein, Teilnehmerliste @@ -98,6 +99,7 @@ type.course.node.projectbroker=Kursbaustein, Themenb\u00F6rse type.course.node.blog=Kursbaustein, Blog type.course.node.podcast=Kursbaustein, Podcast type.course.node.scorm=Kursbaustein, SCORM +HomePage=Homepage HomeSite=Home Portfolio=Portfolio LibrarySite=Bibliothek diff --git a/src/main/java/org/olat/search/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/search/ui/_i18n/LocalStrings_en.properties index 6ecbcf32e42e28dc0f1656e75c394a35ad56a480..c9c0d9c011c9599d0c18a495932d3336165a956b 100644 --- a/src/main/java/org/olat/search/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/search/ui/_i18n/LocalStrings_en.properties @@ -30,6 +30,7 @@ form.search.label.title=Title form.search.label.tooltip=Search in\: "{0}" Forum=Forum found.no.result.try.fuzzy.search=No results found; search has been modified to find similar terms. +HomePage=Homepage invalid.search.query=This query is not valid. invalid.search.query.empty=This search query is not valid--there should not be an empty string\! invalid.search.query.with.wildcard=This query is too short for wildcard ('*'). Please specify your search. @@ -83,6 +84,7 @@ type.course.node.ep=Course element, portfolio task type.course.node.forum.message=Course element, forum type.course.node.gotomeeting=Course element, GoToMeeting type.course.node.gta=Course element, task +type.course.node.info.message=Course element, info message type.course.node.iqself=Course element, self-test type.course.node.iqsurv=Course element, survey type.course.node.iqtest=Course element, test diff --git a/src/main/java/org/olat/search/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/search/ui/_i18n/LocalStrings_fr.properties index 30f4f7d23a546e118bff248be114a25c0f68586b..524520070c34d2b8b24dd6272fa173153b70fdff 100644 --- a/src/main/java/org/olat/search/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/search/ui/_i18n/LocalStrings_fr.properties @@ -1,7 +1,6 @@ #Mon Apr 16 21:25:19 CEST 2018 DocumentPool=Banque de documents DocumentPoolSite=Banque de documents -HomeSite=Home LibrarySite=Biblioth\u00E8que Portfolio=Portfolio Taxonomy=Taxonomie @@ -33,6 +32,8 @@ form.search.label.title=Titre form.search.label.tooltip=Recherche dans\: "{0}" Forum=Forum found.no.result.try.fuzzy.search=Aucun r\u00E9sultat trouv\u00E9, recherche \u00E9largie sur des termes semblables +HomePage=Page d'accueil +HomeSite=Home invalid.search.query=La demande de recherche n'est pas valable. invalid.search.query.empty=L'entr\u00E9e pour la recherche n'est valable - ne peut pas \u00EAtre vide\! invalid.search.query.with.wildcard=La demande de recherche est trop courte pour le joker ('*'). Veuillez d\u00E9finir la recherche plus pr\u00E9cis\u00E9ment. @@ -83,6 +84,7 @@ type.course.node.ep=\u00C9l\u00E9ment de cours, devoir portfolio type.course.node.forum.message=El\u00E9ment de cours, forum type.course.node.gotomeeting=El\u00E9ment de cours, GoToMeeting type.course.node.gta=El\u00E9ment de cours, devoir +type.course.node.info.message=El\u00E9ment de cours, communications type.course.node.iqself=El\u00E9ment de cours, auto-test type.course.node.iqsurv=El\u00E9ment de cours, questionnaire type.course.node.iqtest=El\u00E9ment de cours, test diff --git a/src/main/java/org/olat/user/propertyhandlers/GenderPropertyHandler.java b/src/main/java/org/olat/user/propertyhandlers/GenderPropertyHandler.java index 01838c2ffa9a316ed0b2d2328ca8ef2caf7399b5..575128006fa4c2a26ed4f9d8ff326053ec009967 100644 --- a/src/main/java/org/olat/user/propertyhandlers/GenderPropertyHandler.java +++ b/src/main/java/org/olat/user/propertyhandlers/GenderPropertyHandler.java @@ -47,7 +47,10 @@ import org.olat.user.UserManager; public class GenderPropertyHandler extends AbstractUserPropertyHandler { - private static final String[] keys = new String[] { "male", "female", "-" }; + private static final String MALE = "male"; + private static final String FEMALE = "female"; + private static final String OTHER = "-"; + private static final String[] keys = new String[] { MALE, FEMALE, OTHER }; /** * Helper method to create translated values that correspond with the static keys @@ -78,13 +81,16 @@ public class GenderPropertyHandler extends AbstractUserPropertyHandler { @Override public String getUserProperty(User user, Locale locale) { + String internalValue = getInternalValue(user); + if(!FEMALE.equals(internalValue) && !MALE.equals(internalValue) && !OTHER.equals(internalValue)) { + internalValue = OTHER; + } Translator myTrans; if (locale == null) { myTrans = Util.createPackageTranslator(this.getClass(), I18nModule.getDefaultLocale()); } else { myTrans = Util.createPackageTranslator(this.getClass(), locale); } - String internalValue = getInternalValue(user); return myTrans.translate("form.name.gender." + internalValue); } @@ -112,7 +118,7 @@ public class GenderPropertyHandler extends AbstractUserPropertyHandler { @Override public FormItem addFormItem(Locale locale, User user, String usageIdentifyer, boolean isAdministrativeUser, FormItemContainer formItemContainer) { SingleSelection genderElem = FormUIFactory.getInstance().addRadiosVertical(getName(), i18nFormElementLabelKey(), formItemContainer, keys, getTranslatedValues(locale)); - String key = user == null ? "-" : getInternalValue(user); + String key = user == null ? OTHER : getInternalValue(user); for(int i=keys.length; i-->0; ) { if(keys[i].equals(key)) { genderElem.select(keys[i], true); @@ -132,7 +138,7 @@ public class GenderPropertyHandler extends AbstractUserPropertyHandler { @Override public String getInternalValue(User user) { String value = super.getInternalValue(user); - return (StringHelper.containsNonWhitespace(value) ? value : "-"); // default + return (StringHelper.containsNonWhitespace(value) ? value : OTHER); // default } @Override diff --git a/src/main/java/org/olat/user/propertyhandlers/ui/UsrPropCfgTableController.java b/src/main/java/org/olat/user/propertyhandlers/ui/UsrPropCfgTableController.java index 6471ddda91b8dd7e62c12a5d167576176097c46a..593e479d5a2c67c5e09985c4febf83c56e7679ab 100644 --- a/src/main/java/org/olat/user/propertyhandlers/ui/UsrPropCfgTableController.java +++ b/src/main/java/org/olat/user/propertyhandlers/ui/UsrPropCfgTableController.java @@ -138,7 +138,7 @@ public class UsrPropCfgTableController extends FormBasicController { for (UserPropertyHandler handler : myHandlerList) { handlerName = handler.getName(); // the group field - groupDropdown = uifactory.addDropdownSingleselect(FT_NAME_PREFIX_GRPN + handlerName, propTableFlc, selectableGroups, + groupDropdown = uifactory.addDropdownSingleselect(FT_NAME_PREFIX_GRPN + handlerName, null, propTableFlc, selectableGroups, selectableGroups, null); if (Arrays.asList(selectableGroups).contains(handler.getGroup())) { @@ -162,23 +162,23 @@ public class UsrPropCfgTableController extends FormBasicController { // the "translate" link if (isPropertyHandlerTranslated(handler)) { - translateLink = uifactory.addFormLink(FT_NAME_PREFIX_TRANSL + handlerName, "upc.edittranslate", "label", propTableFlc, Link.LINK); + translateLink = uifactory.addFormLink(FT_NAME_PREFIX_TRANSL + handlerName, "upc.edittranslate", null, propTableFlc, Link.LINK); } else { - translateLink = uifactory.addFormLink(FT_NAME_PREFIX_TRANSL + handlerName, "upc.translate", "label", propTableFlc, Link.LINK); + translateLink = uifactory.addFormLink(FT_NAME_PREFIX_TRANSL + handlerName, "upc.translate", null, propTableFlc, Link.LINK); translateLink.setCustomEnabledLinkCSS("o_ochre"); } translateLink.setUserObject(handler); // the "handler-config" link if (handlerConfigCtrlFactory.hasConfig(handler)) { - handlerLink = uifactory.addFormLink(FT_NAME_PREFIX_HDNL + handlerName, "upc.hndlconfig", "label", propTableFlc, Link.LINK); + handlerLink = uifactory.addFormLink(FT_NAME_PREFIX_HDNL + handlerName, "upc.hndlconfig", null, propTableFlc, Link.LINK); handlerLink.setUserObject(handler); } // put the translation (in the current language) for the property translatedName = I18nManager.getInstance().getLocalizedString(UserPropertyHandler.class.getPackage().getName(), handler.i18nFormElementLabelKey(), null, getLocale(), true, true); - uifactory.addStaticTextElement(FT_NAME_PREFIX_TRANSNAME + handlerName, (translatedName == null ? "-" : translatedName) , + uifactory.addStaticTextElement(FT_NAME_PREFIX_TRANSNAME + handlerName, null, (translatedName == null ? "-" : translatedName), propTableFlc); } propTableFlc.contextPut("rows", myHandlerList); diff --git a/src/test/java/org/olat/modules/opencast/WildcardFilterTest.java b/src/test/java/org/olat/modules/opencast/WildcardFilterTest.java new file mode 100644 index 0000000000000000000000000000000000000000..18ca6af8cfd7841202c00fb7a8c0aaa79389b1e2 --- /dev/null +++ b/src/test/java/org/olat/modules/opencast/WildcardFilterTest.java @@ -0,0 +1,85 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.opencast; + +import org.assertj.core.api.SoftAssertions; +import org.junit.Test; + +/** + * + * Initial date: 19 Aug 2020<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class WildcardFilterTest { + + @Test + public void shouldFilterWithoutWildcard() { + WildcardFilter sut = new WildcardFilter("abc", o -> (String)o); + + SoftAssertions softly = new SoftAssertions(); + assertThat(softly, sut, "abc", true); + assertThat(softly, sut, "abc1", true); + assertThat(softly, sut, "1abc", true); + assertThat(softly, sut, "ABC", true); + assertThat(softly, sut, "Abc", true); + assertThat(softly, sut, "UaBc%", true); + assertThat(softly, sut, "a1bc", false); + assertThat(softly, sut, "ab2c", false); + softly.assertAll(); + } + + @Test + public void shouldFilterWithWildcard() { + WildcardFilter sut = new WildcardFilter("ab*c", o -> (String)o); + + SoftAssertions softly = new SoftAssertions(); + assertThat(softly, sut, "abc", true); + assertThat(softly, sut, "abc1", true); + assertThat(softly, sut, "1abc", true); + assertThat(softly, sut, "ABC", true); + assertThat(softly, sut, "Abc", true); + assertThat(softly, sut, "UaBc%", true); + assertThat(softly, sut, "a1bc", false); + assertThat(softly, sut, "ab2c", true); + softly.assertAll(); + } + + @Test + public void shouldFilterWithWildcardOnly() { + WildcardFilter sut = new WildcardFilter("*", o -> (String)o); + + SoftAssertions softly = new SoftAssertions(); + assertThat(softly, sut, "abc", true); + assertThat(softly, sut, "abc1", true); + assertThat(softly, sut, "1abc", true); + assertThat(softly, sut, "ABC", true); + assertThat(softly, sut, "Abc", true); + assertThat(softly, sut, "UaBc%", true); + assertThat(softly, sut, "a1bc", true); + assertThat(softly, sut, "ab2c", true); + softly.assertAll(); + } + + private void assertThat(SoftAssertions softly, WildcardFilter sut, String value, boolean expected) { + softly.assertThat(sut.test(value)).as(value).isEqualTo(expected); + } + +} diff --git a/src/test/java/org/olat/test/AllTestsJunit4.java b/src/test/java/org/olat/test/AllTestsJunit4.java index b7bec76f6549bddffccac49635c789febef981e6..9dba2145156120c88c94143ba15c786f9040ffe1 100644 --- a/src/test/java/org/olat/test/AllTestsJunit4.java +++ b/src/test/java/org/olat/test/AllTestsJunit4.java @@ -520,6 +520,7 @@ import org.junit.runners.Suite; org.olat.modules.forms.manager.RubricStatisticCalculatorTest.class, org.olat.modules.forms.model.xml.ScaleTypeTest.class, org.olat.modules.forms.RubricsComparisonTest.class, + org.olat.modules.opencast.WildcardFilterTest.class, org.olat.modules.qpool.manager.QuestionPoolServiceImplTest.class, org.olat.modules.qpool.manager.QuestionPoolUserDataDeletableTest.class, org.olat.modules.qpool.manager.review.LowerLimitProviderTest.class,