diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java index 21de182e35dac9b3611f5147eb24b067ba88c425..5c434a6300be759ca3fb52e14eb4b6c9653ea462 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java @@ -155,6 +155,7 @@ public class RichTextConfiguration implements Disposable { private boolean allowCustomMediaFactory = true; private boolean inline = false; private boolean sendOnBlur; + private boolean readOnly; private CustomLinkTreeModel linkBrowserCustomTreeModel; // DOM ID of the flexi form element private String domID; @@ -454,6 +455,15 @@ public class RichTextConfiguration implements Disposable { public void setPathInStatusBar(boolean pathInStatusBar) { this.pathInStatusBar = pathInStatusBar; } + + + public boolean isReadOnly() { + return readOnly; + } + + public void setReadOnly(boolean readOnly) { + this.readOnly = readOnly; + } public RichTextConfigurationDelegate getAdditionalConfiguration() { return additionalConfiguration; @@ -988,6 +998,9 @@ public class RichTextConfiguration implements Disposable { .append("statusbar:").append(true).append(",\n") .append("resize:").append(true).append(",\n") .append("menubar:").append(tinyConfig.hasMenu()).append(",\n"); + if(isReadOnly()) { + tinyMenuSb.append("readonly: 1,\n"); + } String leftAndClear = "Left and clear"; String rightAndClear = "Right and clear"; diff --git a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java index 43ac1cca8d5343a2e236191f7f270caaade266d9..baaec9eb8a8775536b4a6cbdf3336116f0b721f2 100644 --- a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java +++ b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java @@ -76,7 +76,7 @@ public class IFrameDeliveryMapper implements Mapper { private String frameId; private String customCssURL; - private CustomCSSDelegate customCssDelegate; + private transient CustomCSSDelegate customCssDelegate; private String themeBaseUri; private String customHeaderContent; @@ -174,6 +174,9 @@ public class IFrameDeliveryMapper implements Mapper { public void setCustomCssDelegate(CustomCSSDelegate customCssDelegate) { this.customCssDelegate = customCssDelegate; + if(customCssDelegate.getCustomCSS() != null) { + customCssURL = customCssDelegate.getCustomCSS().getCSSURLIFrame(); + } } @Override @@ -328,14 +331,14 @@ public class IFrameDeliveryMapper implements Mapper { //add olat content css as used in html editor sb.appendOpenolatCss();//css only loaded once in HtmlOutput } - if (customCssURL != null) { - // add the custom CSS, e.g. the course css that overrides the standard content css - sb.appendCss(customCssURL, "customcss"); - } else if(customCssDelegate != null && customCssDelegate.getCustomCSS() != null + if(customCssDelegate != null && customCssDelegate.getCustomCSS() != null && customCssDelegate.getCustomCSS().getCSSURLIFrame() != null) { String customCssURL = customCssDelegate.getCustomCSS().getCSSURLIFrame(); sb.appendCss(customCssURL, "customcss"); - } + } else if (customCssURL != null) { + // add the custom CSS, e.g. the course css that overrides the standard content css + sb.appendCss(customCssURL, "customcss"); + } } if (enableTextmarking) { diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java index cf9ae4dba43c11a25cd427f510c8c3e845bb7999..ad059503a1f95b7d25347260efe366cb6061a944 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java @@ -93,8 +93,8 @@ public class FIBEditorController extends FormBasicController { textEl = uifactory.addRichTextElementForQTI21("desc", "form.imd.descr", question, 16, -1, itemContainer, formLayout, ureq.getUserSession(), getWindowControl()); textEl.addActionListener(FormEvent.ONCLICK); - textEl.setEnabled(!restrictedEdit); RichTextConfiguration richTextConfig = textEl.getEditorConfiguration(); + richTextConfig.setReadOnly(restrictedEdit); boolean hasNumericals = itemBuilder.hasNumericalInputs(); boolean hasTexts = itemBuilder.hasTextEntry(); @@ -221,14 +221,14 @@ public class FIBEditorController extends FormBasicController { } if(interaction instanceof TextEntry) { - textEntrySettingsCtrl = new FIBTextEntrySettingsController(ureq, getWindowControl(), (TextEntry)interaction); + textEntrySettingsCtrl = new FIBTextEntrySettingsController(ureq, getWindowControl(), (TextEntry)interaction, restrictedEdit); listenTo(textEntrySettingsCtrl); cmc = new CloseableModalController(getWindowControl(), translate("close"), textEntrySettingsCtrl.getInitialComponent(), true, translate("title.add") ); cmc.activate(); listenTo(cmc); } else if(interaction instanceof NumericalEntry) { - numericalEntrySettingsCtrl = new FIBNumericalEntrySettingsController(ureq, getWindowControl(), (NumericalEntry)interaction); + numericalEntrySettingsCtrl = new FIBNumericalEntrySettingsController(ureq, getWindowControl(), (NumericalEntry)interaction, restrictedEdit); listenTo(numericalEntrySettingsCtrl); cmc = new CloseableModalController(getWindowControl(), translate("close"), numericalEntrySettingsCtrl.getInitialComponent(), true, translate("title.add") ); 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 98211760de2c6325d987dccdbbe1d3ad3eb9f741..1976f11b7da2a47679e74f96d9c28740ebe48d50 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 @@ -55,11 +55,13 @@ public class FIBNumericalEntrySettingsController extends FormBasicController { private SingleSelection toleranceModeEl; private TextElement lowerToleranceEl, upperToleranceEl; + private final boolean restrictedEdit; private final NumericalEntry interaction; - public FIBNumericalEntrySettingsController(UserRequest ureq, WindowControl wControl, NumericalEntry interaction) { + public FIBNumericalEntrySettingsController(UserRequest ureq, WindowControl wControl, NumericalEntry interaction, boolean restrictedEdit) { super(ureq, wControl, Util.createPackageTranslator(AssessmentTestEditorController.class, ureq.getLocale())); this.interaction = interaction; + this.restrictedEdit = restrictedEdit; initForm(ureq); } @@ -68,17 +70,21 @@ public class FIBNumericalEntrySettingsController extends FormBasicController { Double solution = interaction.getSolution(); String solString = solution == null ? "" : solution.toString(); solutionEl = uifactory.addTextElement("fib.solution", "fib.solution", 256, solString, formLayout); + solutionEl.setEnabled(!restrictedEdit); String placeholder = interaction.getPlaceholder(); placeholderEl = uifactory.addTextElement("fib.placeholder", "fib.placeholder", 256, placeholder, formLayout); + placeholderEl.setEnabled(!restrictedEdit); Integer expectedLength = interaction.getExpectedLength(); String expectedLengthStr = expectedLength == null ? null : expectedLength.toString(); expectedLengthEl = uifactory.addTextElement("fib.expectedLength", "fib.expectedLength", 256, expectedLengthStr, formLayout); + expectedLengthEl.setEnabled(!restrictedEdit); String[] toleranceModeValues = new String[] { translate("fib.tolerance.mode.exact"), translate("fib.tolerance.mode.absolute"), translate("fib.tolerance.mode.relative") }; toleranceModeEl = uifactory.addDropdownSingleselect("fib.tolerance.mode", "fib.tolerance.mode", formLayout, toleranceModeKeys, toleranceModeValues, null); + toleranceModeEl.setEnabled(!restrictedEdit); if(interaction.getToleranceMode() != null) { for(String toleranceModeKey:toleranceModeKeys) { if(toleranceModeKey.equals(interaction.getToleranceMode().name())) { @@ -95,11 +101,13 @@ public class FIBNumericalEntrySettingsController extends FormBasicController { String lowerToleranceString = lowerTolerance == null ? "" : lowerTolerance.toString(); lowerToleranceEl = uifactory.addTextElement("fib.tolerance.low", "fib.tolerance.low", 8, lowerToleranceString, formLayout); lowerToleranceEl.setExampleKey("fib.tolerance.mode.absolute.example", null); + lowerToleranceEl.setEnabled(!restrictedEdit); Double upperTolerance = interaction.getUpperTolerance(); String upperToleranceString = upperTolerance == null ? "" : upperTolerance.toString(); upperToleranceEl = uifactory.addTextElement("fib.tolerance.up", "fib.tolerance.up", 8, upperToleranceString, formLayout); upperToleranceEl.setExampleKey("fib.tolerance.mode.absolute.example", null); + upperToleranceEl.setEnabled(!restrictedEdit); updateToleranceUpAndLow(); @@ -107,7 +115,9 @@ public class FIBNumericalEntrySettingsController extends FormBasicController { FormLayoutContainer buttonsContainer = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); buttonsContainer.setRootForm(mainForm); formLayout.add(buttonsContainer); - uifactory.addFormSubmitButton("submit", buttonsContainer); + if(!restrictedEdit) { + uifactory.addFormSubmitButton("submit", buttonsContainer); + } uifactory.addFormCancelButton("cancel", buttonsContainer, ureq, getWindowControl()); } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java index 6297b3a572651b0a9268eb3eba382f9f4da440ea..46b441687d0244fdef3bd30aab773a5cc4810cfe 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java @@ -49,12 +49,14 @@ public class FIBTextEntrySettingsController extends FormBasicController { private TextElement expectedLengthEl; private MultipleSelectionElement caseSensitiveEl; + private final boolean restrictedEdit; private final TextEntry interaction; - public FIBTextEntrySettingsController(UserRequest ureq, WindowControl wControl, TextEntry interaction) { + public FIBTextEntrySettingsController(UserRequest ureq, WindowControl wControl, TextEntry interaction, boolean restrictedEdit) { super(ureq, wControl); setTranslator(Util.createPackageTranslator(AssessmentTestEditorController.class, getLocale())); this.interaction = interaction; + this.restrictedEdit = restrictedEdit; initForm(ureq); } @@ -62,18 +64,23 @@ public class FIBTextEntrySettingsController extends FormBasicController { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { String solution = interaction.getSolution(); solutionEl = uifactory.addTextElement("fib.solution", "fib.solution", 256, solution, formLayout); + solutionEl.setEnabled(!restrictedEdit); String placeholder = interaction.getPlaceholder(); placeholderEl = uifactory.addTextElement("fib.placeholder", "fib.placeholder", 256, placeholder, formLayout); + placeholderEl.setEnabled(!restrictedEdit); String alternatives = interaction.alternativesToString(); alternativeEl = uifactory.addTextElement("fib.alternative", "fib.alternative", 256, alternatives, formLayout); alternativeEl.setHelpText(translate("fib.alternative.help")); alternativeEl.setHelpUrlForManualPage("Test editor QTI 2.1 in detail#details_testeditor_fragetypen_fib"); + alternativeEl.setEnabled(!restrictedEdit); Integer expectedLength = interaction.getExpectedLength(); String expectedLengthStr = expectedLength == null ? null : expectedLength.toString(); expectedLengthEl = uifactory.addTextElement("fib.expectedLength", "fib.expectedLength", 256, expectedLengthStr, formLayout); - + expectedLengthEl.setEnabled(!restrictedEdit); + caseSensitiveEl = uifactory.addCheckboxesHorizontal("fib.caseSensitive", "fib.caseSensitive", formLayout, onKeys, new String[]{ "" }); + caseSensitiveEl.setEnabled(!restrictedEdit); if(interaction.isCaseSensitive()) { caseSensitiveEl.select(onKeys[0], true); } @@ -82,7 +89,9 @@ public class FIBTextEntrySettingsController extends FormBasicController { FormLayoutContainer buttonsContainer = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); buttonsContainer.setRootForm(mainForm); formLayout.add(buttonsContainer); - uifactory.addFormSubmitButton("submit", buttonsContainer); + if(!restrictedEdit) { + uifactory.addFormSubmitButton("submit", buttonsContainer); + } uifactory.addFormCancelButton("cancel", buttonsContainer, ureq, getWindowControl()); } diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticResourceResult.java b/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticResourceResult.java index 4842d9cdef1c21aa89ce78e23cef0dd7dd14dc96..b5eff08a55b25cd0aca9f8a3d879dfd7f276921b 100644 --- a/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticResourceResult.java +++ b/src/main/java/org/olat/ims/qti21/ui/statistics/QTI21StatisticResourceResult.java @@ -231,7 +231,7 @@ public class QTI21StatisticResourceResult implements StatisticResourceResult { } private void buildRecursively(TestPart part, int pos, TreeNode parentNode) { - GenericTreeNode partNode = new GenericTreeNode(part.getIdentifier().toString()); + GenericTreeNode partNode = new GenericTreeNode(); partNode.setTitle(pos + ". Test part"); partNode.setIconCssClass("o_icon o_qtiassessment_icon"); partNode.setUserObject(part); @@ -249,7 +249,7 @@ public class QTI21StatisticResourceResult implements StatisticResourceResult { } private TreeNode buildRecursively(AssessmentSection section, TreeNode parentNode) { - GenericTreeNode sectionNode = new GenericTreeNode(section.getIdentifier().toString()); + GenericTreeNode sectionNode = new GenericTreeNode(); sectionNode.setTitle(section.getTitle()); sectionNode.setIconCssClass("o_icon o_mi_qtisection"); sectionNode.setUserObject(section); @@ -274,7 +274,7 @@ public class QTI21StatisticResourceResult implements StatisticResourceResult { } private TreeNode buildRecursively(AssessmentItemRef itemRef, TreeNode parentNode) { - GenericTreeNode itemNode = new GenericTreeNode(itemRef.getIdentifier().toString()); + GenericTreeNode itemNode = new GenericTreeNode(); ResolvedAssessmentItem resolvedAssessmentItem = resolvedAssessmentTest.getResolvedAssessmentItem(itemRef); BadResourceException ex = resolvedAssessmentItem.getItemLookup().getBadResourceException(); diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java b/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java index e245434d5cc9d5884191ec04c215cbee262ac395..5ad79b061aec7963698688e9e6d566ddfedbe2b5 100644 --- a/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java +++ b/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java @@ -19,15 +19,14 @@ */ package org.olat.modules.qpool.ui.admin; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.olat.admin.securitygroup.gui.GroupController; import org.olat.admin.securitygroup.gui.IdentitiesAddEvent; import org.olat.admin.securitygroup.gui.IdentitiesRemoveEvent; -import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.ResultInfos; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; @@ -38,14 +37,15 @@ import org.olat.core.gui.components.form.flexible.impl.FormEvent; import org.olat.core.gui.components.form.flexible.impl.elements.table.BooleanCellRenderer; import org.olat.core.gui.components.form.flexible.impl.elements.table.CSSIconFlexiCellRenderer; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel; -import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiColumnModel; +import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiTableDataModel; +import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiSortableColumnDef; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; -import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableRendererType; import org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent; +import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableDataModel; +import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableModelDelegate; import org.olat.core.gui.components.link.Link; -import org.olat.core.gui.components.table.TableDataModel; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; @@ -60,6 +60,7 @@ import org.olat.modules.qpool.QPoolService; import org.olat.modules.qpool.model.PoolImpl; import org.olat.modules.qpool.ui.QuestionsController; import org.olat.modules.qpool.ui.events.QPoolEvent; +import org.springframework.beans.factory.annotation.Autowired; /** * @@ -81,12 +82,12 @@ public class PoolsAdminController extends FormBasicController { private PoolEditController poolEditCtrl; private DialogBoxController confirmDeleteCtrl; - private final QPoolService qpoolService; + @Autowired + private QPoolService qpoolService; public PoolsAdminController(UserRequest ureq, WindowControl wControl) { super(ureq, wControl, null, "pools_admin", Util.createPackageTranslator(QuestionsController.class, ureq.getLocale())); - - qpoolService = CoreSpringFactory.getImpl(QPoolService.class); + initForm(ureq); } @@ -99,14 +100,13 @@ public class PoolsAdminController extends FormBasicController { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { //add the table FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.id.i18nKey(), Cols.id.ordinal(), true, "key")); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, Cols.publicPool.i18nKey(), Cols.publicPool.ordinal(), - true, "publicPool", FlexiColumnModel.ALIGNMENT_LEFT, + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.id)); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.publicPool, new BooleanCellRenderer( new CSSIconFlexiCellRenderer("o_icon_pool_public"), new CSSIconFlexiCellRenderer("o_icon_pool_private")) )); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.name.i18nKey(), Cols.name.ordinal(), true, "name")); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.name)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("edit", translate("edit"), "edit-pool")); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("pool.owners", translate("pool.owners"), "owners-pool")); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("delete", translate("delete"), "delete-pool")); @@ -234,7 +234,7 @@ public class PoolsAdminController extends FormBasicController { } } - private enum Cols { + private enum Cols implements FlexiSortableColumnDef { id("pool.key"), publicPool("pool.public"), name("pool.name"); @@ -244,63 +244,41 @@ public class PoolsAdminController extends FormBasicController { private Cols(String i18nKey) { this.i18nKey = i18nKey; } - - public String i18nKey() { + + @Override + public String i18nHeaderKey() { return i18nKey; } + + @Override + public boolean sortable() { + return true; + } + + @Override + public String sortKey() { + return name(); + } } - private static class PoolDataModel implements FlexiTableDataModel<Pool>, TableDataModel<Pool> { - - private List<Pool> rows; + private static class PoolDataModel extends DefaultFlexiTableDataModel<Pool> implements SortableFlexiTableDataModel<Pool> { + private FlexiTableColumnModel columnModel; private final Translator translator; public PoolDataModel(FlexiTableColumnModel columnModel, Translator translator) { - this.columnModel = columnModel; + super(columnModel); this.translator = translator; } @Override - public FlexiTableColumnModel getTableColumnModel() { - return columnModel; - } - - @Override - public void setTableColumnModel(FlexiTableColumnModel tableColumnModel) { - this.columnModel = tableColumnModel; - } - - @Override - public int getRowCount() { - return rows == null ? 0 : rows.size(); - } - - @Override - public boolean isSelectable(int row) { - return true; + public void sort(SortKey orderBy) { + if(orderBy != null) { + List<Pool> views = new SortableFlexiTableModelDelegate<Pool>(orderBy, this, translator.getLocale()).sort(); + super.setObjects(views); + } } - @Override - public boolean isRowLoaded(int row) { - return rows != null && row < rows.size(); - } - - @Override - public Pool getObject(int row) { - return rows.get(row); - } - - @Override - public void setObjects(List<Pool> objects) { - rows = new ArrayList<Pool>(objects); - } - - @Override - public int getColumnCount() { - return columnModel.getColumnCount(); - } - @Override public PoolDataModel createCopyWithEmptyList() { return new PoolDataModel(columnModel, translator); @@ -308,11 +286,16 @@ public class PoolsAdminController extends FormBasicController { @Override public Object getValueAt(int row, int col) { - Pool item = getObject(row); + Pool pool = getObject(row); + return getValueAt(pool, col); + } + + @Override + public Object getValueAt(Pool pool, int col) { switch(Cols.values()[col]) { - case id: return item.getKey(); - case publicPool: return new Boolean(item.isPublicPool()); - case name: return item.getName(); + case id: return pool.getKey(); + case publicPool: return new Boolean(pool.isPublicPool()); + case name: return pool.getName(); default: return ""; } } diff --git a/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_de.properties index f482654e37b42178ed1ac25d428456c7607f9e96..82f509adee9cba5b2d2d26da864c51a6a9d8661c 100644 --- a/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_de.properties @@ -423,6 +423,7 @@ table.name.privateEmail=E-Mail (Privat) table.name.rank=Dienstgrad / Amtsbezeichnung table.name.region=Region table.name.skype=Skype ID +table.name.smsTelMobile=SMS Nummer table.name.street=Strasse table.name.studySubject=Studienfach table.name.telMobile=Telefon Mobil diff --git a/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_en.properties index fd0748cfc5f957db7b2651884dfc943ba3e57e5d..0d2ad752cdea35509a4af2a3059c70bb6045951b 100644 --- a/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_en.properties @@ -423,6 +423,7 @@ table.name.privateEmail=E-mail (private) table.name.rank=Service grade / employment title table.name.region=Region table.name.skype=Skype ID +table.name.smsTelMobile=SMS number table.name.street=Street table.name.studySubject=Field of studies table.name.telMobile=Phone mobile