diff --git a/src/main/java/ch/ethz/seb/sebserver/gbl/model/sebconfig/ConfigCopyInfo.java b/src/main/java/ch/ethz/seb/sebserver/gbl/model/sebconfig/ConfigCreationInfo.java similarity index 77% rename from src/main/java/ch/ethz/seb/sebserver/gbl/model/sebconfig/ConfigCopyInfo.java rename to src/main/java/ch/ethz/seb/sebserver/gbl/model/sebconfig/ConfigCreationInfo.java index 6c5e6942..538924bd 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gbl/model/sebconfig/ConfigCopyInfo.java +++ b/src/main/java/ch/ethz/seb/sebserver/gbl/model/sebconfig/ConfigCreationInfo.java @@ -16,8 +16,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; import ch.ethz.seb.sebserver.gbl.api.EntityType; import ch.ethz.seb.sebserver.gbl.model.Domain.CONFIGURATION_NODE; import ch.ethz.seb.sebserver.gbl.model.Entity; +import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode.ConfigurationType; -public final class ConfigCopyInfo implements Entity { +public final class ConfigCreationInfo implements Entity { public static final String ATTR_COPY_WITH_HISTORY = "with-history"; @@ -37,16 +38,23 @@ public final class ConfigCopyInfo implements Entity { @JsonProperty(ATTR_COPY_WITH_HISTORY) public final Boolean withHistory; - protected ConfigCopyInfo( + @JsonProperty(CONFIGURATION_NODE.ATTR_TYPE) + public final ConfigurationType configurationType; + + protected ConfigCreationInfo( @JsonProperty(CONFIGURATION_NODE.ATTR_ID) final Long configurationNodeId, @JsonProperty(CONFIGURATION_NODE.ATTR_NAME) final String name, @JsonProperty(CONFIGURATION_NODE.ATTR_DESCRIPTION) final String description, - @JsonProperty(ATTR_COPY_WITH_HISTORY) final Boolean withHistory) { + @JsonProperty(ATTR_COPY_WITH_HISTORY) final Boolean withHistory, + @JsonProperty(CONFIGURATION_NODE.ATTR_TYPE) final ConfigurationType configurationType) { this.configurationNodeId = configurationNodeId; this.name = name; this.description = description; this.withHistory = withHistory; + this.configurationType = (configurationType != null) + ? configurationType + : ConfigurationType.EXAM_CONFIG; } public Long getConfigurationNodeId() { @@ -66,6 +74,10 @@ public final class ConfigCopyInfo implements Entity { return this.withHistory; } + public ConfigurationType getConfigurationType() { + return this.configurationType; + } + @Override public String getModelId() { return (this.configurationNodeId != null) @@ -89,6 +101,8 @@ public final class ConfigCopyInfo implements Entity { builder.append(this.description); builder.append(", withHistory="); builder.append(this.withHistory); + builder.append(", configurationType="); + builder.append(this.configurationType); builder.append("]"); return builder.toString(); } diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/content/ConfigTemplateForm.java b/src/main/java/ch/ethz/seb/sebserver/gui/content/ConfigTemplateForm.java index de1c200c..d495699c 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/content/ConfigTemplateForm.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/content/ConfigTemplateForm.java @@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; +import ch.ethz.seb.sebserver.gbl.Constants; import ch.ethz.seb.sebserver.gbl.api.API; import ch.ethz.seb.sebserver.gbl.model.Domain; import ch.ethz.seb.sebserver.gbl.model.EntityKey; @@ -275,6 +276,19 @@ public class ConfigTemplateForm implements TemplateComposer { .withEntityKey(entityKey) .publishIf(() -> modifyGrant && isReadonly) + .newAction(ActionDefinition.SEB_EXAM_CONFIG_TEMPLATE_CREATE_CONFIG) + .withEntityKey(entityKey) + .withExec(SebExamConfigCreationUtils.configCreationFunction( + this.pageService, + pageContext + .withAttribute( + PageContext.AttributeKeys.CREATE_FROM_TEMPLATE, + Constants.TRUE_STRING) + .withAttribute( + PageContext.AttributeKeys.COPY_AS_TEMPLATE, + Constants.FALSE_STRING))) + .publishIf(() -> modifyGrant && isReadonly) + .newAction(ActionDefinition.SEB_EXAM_CONFIG_TEMPLATE_SAVE) .withEntityKey(entityKey) .withExec(formHandle::processFormSave) diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigCopy.java b/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigCopy.java deleted file mode 100644 index d617f872..00000000 --- a/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigCopy.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 2019 ETH Zürich, Educational Development and Technology (LET) - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -package ch.ethz.seb.sebserver.gui.content; - -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.function.Supplier; - -import org.eclipse.swt.widgets.Composite; - -import ch.ethz.seb.sebserver.gbl.api.EntityType; -import ch.ethz.seb.sebserver.gbl.model.Domain; -import ch.ethz.seb.sebserver.gbl.model.EntityKey; -import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigCopyInfo; -import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode; -import ch.ethz.seb.sebserver.gbl.util.Utils; -import ch.ethz.seb.sebserver.gui.content.action.ActionDefinition; -import ch.ethz.seb.sebserver.gui.form.FormBuilder; -import ch.ethz.seb.sebserver.gui.form.FormHandle; -import ch.ethz.seb.sebserver.gui.service.page.ModalInputDialogComposer; -import ch.ethz.seb.sebserver.gui.service.page.PageContext; -import ch.ethz.seb.sebserver.gui.service.page.PageService; -import ch.ethz.seb.sebserver.gui.service.page.impl.ModalInputDialog; -import ch.ethz.seb.sebserver.gui.service.page.impl.PageAction; -import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.CopyConfiguration; - -public final class SebExamConfigCopy { - - static Function copyConfigFunction( - final PageService pageService, - final PageContext pageContext) { - - return action -> { - - final ModalInputDialog> dialog = - new ModalInputDialog>( - action.pageContext().getParent().getShell(), - pageService.getWidgetFactory()) - .setDialogWidth(600); - - final CopyFormContext formContext = new CopyFormContext( - pageService, - action.pageContext()); - - final Predicate> doCopy = formHandle -> doCopy( - pageService, - pageContext, - formHandle); - - dialog.open( - SebExamConfigPropForm.FORM_COPY_TEXT_KEY, - doCopy, - Utils.EMPTY_EXECUTION, - formContext); - - return action; - }; - } - - private static final boolean doCopy( - final PageService pageService, - final PageContext pageContext, - final FormHandle formHandle) { - - final ConfigurationNode newConfig = pageService.getRestService().getBuilder(CopyConfiguration.class) - .withFormBinding(formHandle.getFormBinding()) - .call() - .onError(formHandle::handleError) - .getOr(null); - - if (newConfig == null) { - return false; - } - - final PageAction viewNewConfig = pageService.pageActionBuilder(pageContext) - .newAction(ActionDefinition.SEB_EXAM_CONFIG_VIEW_PROP) - .withEntityKey(new EntityKey(newConfig.id, EntityType.CONFIGURATION_NODE)) - .create(); - - pageService.executePageAction(viewNewConfig); - - return true; - } - - private static final class CopyFormContext implements ModalInputDialogComposer> { - - private final PageService pageService; - private final PageContext pageContext; - - protected CopyFormContext(final PageService pageService, final PageContext pageContext) { - this.pageService = pageService; - this.pageContext = pageContext; - } - - @Override - public Supplier> compose(final Composite parent) { - - final EntityKey entityKey = this.pageContext.getEntityKey(); - final FormHandle formHandle = this.pageService.formBuilder( - this.pageContext.copyOf(parent), 4) - .readonly(false) - .putStaticValue( - Domain.CONFIGURATION_NODE.ATTR_ID, - entityKey.getModelId()) - .addField(FormBuilder.text( - Domain.CONFIGURATION_NODE.ATTR_NAME, - SebExamConfigPropForm.FORM_NAME_TEXT_KEY)) - .addField(FormBuilder.text( - Domain.CONFIGURATION_NODE.ATTR_DESCRIPTION, - SebExamConfigPropForm.FORM_DESCRIPTION_TEXT_KEY) - .asArea()) - .addField(FormBuilder.checkbox( - ConfigCopyInfo.ATTR_COPY_WITH_HISTORY, - SebExamConfigPropForm.FORM_HISTORY_TEXT_KEY)) - .build(); - - return () -> formHandle; - } - - } - -} diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigCreationUtils.java b/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigCreationUtils.java new file mode 100644 index 00000000..fa37623a --- /dev/null +++ b/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigCreationUtils.java @@ -0,0 +1,191 @@ +/* + * Copyright (c) 2019 ETH Zürich, Educational Development and Technology (LET) + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +package ch.ethz.seb.sebserver.gui.content; + +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.function.Supplier; + +import org.apache.commons.lang3.BooleanUtils; +import org.eclipse.swt.widgets.Composite; + +import ch.ethz.seb.sebserver.gbl.api.EntityType; +import ch.ethz.seb.sebserver.gbl.model.Domain; +import ch.ethz.seb.sebserver.gbl.model.EntityKey; +import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigCreationInfo; +import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode; +import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode.ConfigurationType; +import ch.ethz.seb.sebserver.gbl.util.Utils; +import ch.ethz.seb.sebserver.gui.content.action.ActionDefinition; +import ch.ethz.seb.sebserver.gui.form.FormBuilder; +import ch.ethz.seb.sebserver.gui.form.FormHandle; +import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey; +import ch.ethz.seb.sebserver.gui.service.page.ModalInputDialogComposer; +import ch.ethz.seb.sebserver.gui.service.page.PageContext; +import ch.ethz.seb.sebserver.gui.service.page.PageService; +import ch.ethz.seb.sebserver.gui.service.page.impl.ModalInputDialog; +import ch.ethz.seb.sebserver.gui.service.page.impl.PageAction; +import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.RestCall; +import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.CopyConfiguration; +import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.NewExamConfig; + +public final class SebExamConfigCreationUtils { + + static final LocTextKey FORM_COPY_TEXT_KEY = + new LocTextKey("sebserver.examconfig.action.copy.dialog"); + static final LocTextKey FORM_COPY_AS_TEMPLATE_TEXT_KEY = + new LocTextKey("sebserver.examconfig.action.copy-as-template.dialog"); + static final LocTextKey FORM_CREATE_FROM_TEMPLATE_TEXT_KEY = + new LocTextKey("sebserver.configtemplate.action.create-config.dialog"); + + static Function configCreationFunction( + final PageService pageService, + final PageContext pageContext) { + + final boolean copyAsTemplate = BooleanUtils.toBoolean( + pageContext.getAttribute(PageContext.AttributeKeys.COPY_AS_TEMPLATE)); + final boolean createFromTemplate = BooleanUtils.toBoolean( + pageContext.getAttribute(PageContext.AttributeKeys.CREATE_FROM_TEMPLATE)); + + return action -> { + + final ModalInputDialog> dialog = + new ModalInputDialog>( + action.pageContext().getParent().getShell(), + pageService.getWidgetFactory()) + .setDialogWidth(600); + + final CreationFormContext formContext = new CreationFormContext( + pageService, + pageContext, + copyAsTemplate, + createFromTemplate); + + final Predicate> doCopy = formHandle -> doCreate( + pageService, + pageContext, + copyAsTemplate, + createFromTemplate, + formHandle); + + final LocTextKey title = (copyAsTemplate) + ? FORM_COPY_AS_TEMPLATE_TEXT_KEY + : (createFromTemplate) + ? FORM_CREATE_FROM_TEMPLATE_TEXT_KEY + : FORM_COPY_TEXT_KEY; + + dialog.open( + title, + doCopy, + Utils.EMPTY_EXECUTION, + formContext); + + return action; + }; + } + + private static final boolean doCreate( + final PageService pageService, + final PageContext pageContext, + final boolean copyAsTemplate, + final boolean createFromTemplate, + final FormHandle formHandle) { + + // create either a new configuration form template or from other configuration + final Class> restCall = (createFromTemplate) + ? NewExamConfig.class + : CopyConfiguration.class; + + final ConfigurationNode newConfig = pageService + .getRestService() + .getBuilder(restCall) + .withFormBinding(formHandle.getFormBinding()) + .call() + .onError(formHandle::handleError) + .getOr(null); + + if (newConfig == null) { + return false; + } + + // view either new template or configuration + final PageAction viewCopy = (copyAsTemplate) + ? pageService.pageActionBuilder(pageContext) + .newAction(ActionDefinition.SEB_EXAM_CONFIG_TEMPLATE_VIEW) + .withEntityKey(new EntityKey(newConfig.id, EntityType.CONFIGURATION_NODE)) + .create() + : pageService.pageActionBuilder(pageContext) + .newAction(ActionDefinition.SEB_EXAM_CONFIG_VIEW_PROP) + .withEntityKey(new EntityKey(newConfig.id, EntityType.CONFIGURATION_NODE)) + .create(); + + pageService.executePageAction(viewCopy); + + return true; + } + + private static final class CreationFormContext implements ModalInputDialogComposer> { + + private final PageService pageService; + private final PageContext pageContext; + private final boolean copyAsTemplate; + private final boolean createFromTemplate; + + protected CreationFormContext( + final PageService pageService, + final PageContext pageContext, + final boolean copyAsTemplate, + final boolean createFromTemplate) { + + this.pageService = pageService; + this.pageContext = pageContext; + this.copyAsTemplate = copyAsTemplate; + this.createFromTemplate = createFromTemplate; + } + + @Override + public Supplier> compose(final Composite parent) { + + final EntityKey entityKey = this.pageContext.getEntityKey(); + final FormHandle formHandle = this.pageService.formBuilder( + this.pageContext.copyOf(parent), 4) + .readonly(false) + .putStaticValueIf( + () -> !this.createFromTemplate, + Domain.CONFIGURATION_NODE.ATTR_ID, + entityKey.getModelId()) + .putStaticValue( + Domain.CONFIGURATION_NODE.ATTR_TYPE, + (this.copyAsTemplate) + ? ConfigurationType.TEMPLATE.name() + : ConfigurationType.EXAM_CONFIG.name()) + .putStaticValueIf( + () -> this.createFromTemplate, + Domain.CONFIGURATION_NODE.ATTR_TEMPLATE_ID, + entityKey.getModelId()) + .addField(FormBuilder.text( + Domain.CONFIGURATION_NODE.ATTR_NAME, + SebExamConfigPropForm.FORM_NAME_TEXT_KEY)) + .addField(FormBuilder.text( + Domain.CONFIGURATION_NODE.ATTR_DESCRIPTION, + SebExamConfigPropForm.FORM_DESCRIPTION_TEXT_KEY) + .asArea()) + .addFieldIf( + () -> !this.copyAsTemplate && !this.createFromTemplate, + () -> FormBuilder.checkbox( + ConfigCreationInfo.ATTR_COPY_WITH_HISTORY, + SebExamConfigPropForm.FORM_HISTORY_TEXT_KEY)) + .build(); + + return () -> formHandle; + } + + } + +} diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigImport.java b/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigImportUtils.java similarity index 97% rename from src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigImport.java rename to src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigImportUtils.java index e30c3778..41a79441 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigImport.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigImportUtils.java @@ -45,7 +45,7 @@ import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.Im import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.ImportNewExamConfig; import ch.ethz.seb.sebserver.gui.widget.FileUploadSelection; -public final class SebExamConfigImport { +public final class SebExamConfigImportUtils { private final static PageMessageException MISSING_PASSWORD = new PageMessageException( new LocTextKey("sebserver.examconfig.action.import.missing-password")); diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigList.java b/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigList.java index 1eb99445..cba466e0 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigList.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigList.java @@ -208,7 +208,7 @@ public class SebExamConfigList implements TemplateComposer { .publishIf(() -> examConfigGrant.im() && configTable.hasAnyContent()) .newAction(ActionDefinition.SEB_EXAM_CONFIG_IMPORT_TO_NEW_CONFIG) - .withExec(SebExamConfigImport.importFunction(this.pageService, true)) + .withExec(SebExamConfigImportUtils.importFunction(this.pageService, true)) .noEventPropagation() .publishIf(() -> examConfigGrant.im()) diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigPropForm.java b/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigPropForm.java index 4ce61761..a7ebe31b 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigPropForm.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigPropForm.java @@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; +import ch.ethz.seb.sebserver.gbl.Constants; import ch.ethz.seb.sebserver.gbl.api.API; import ch.ethz.seb.sebserver.gbl.api.EntityType; import ch.ethz.seb.sebserver.gbl.model.Domain; @@ -99,8 +100,6 @@ public class SebExamConfigPropForm implements TemplateComposer { static final LocTextKey FORM_ATTACHED_EXAMS_TITLE_TEXT_KEY = new LocTextKey("sebserver.examconfig.form.attched-to"); - static final LocTextKey FORM_COPY_TEXT_KEY = - new LocTextKey("sebserver.examconfig.action.copy"); static final LocTextKey SAVE_CONFIRM_STATE_CHANGE_WHILE_ATTACHED = new LocTextKey("sebserver.examconfig.action.state-change.confirm"); @@ -253,13 +252,32 @@ public class SebExamConfigPropForm implements TemplateComposer { .newAction(ActionDefinition.SEB_EXAM_CONFIG_IMPORT_TO_EXISTING_CONFIG) .withEntityKey(entityKey) - .withExec(SebExamConfigImport.importFunction(this.pageService, false)) + .withExec(SebExamConfigImportUtils.importFunction(this.pageService, false)) .noEventPropagation() .publishIf(() -> modifyGrant && isReadonly && !isAttachedToExam) .newAction(ActionDefinition.SEB_EXAM_CONFIG_COPY_CONFIG) .withEntityKey(entityKey) - .withExec(SebExamConfigCopy.copyConfigFunction(this.pageService, actionContext)) + .withExec(SebExamConfigCreationUtils.configCreationFunction( + this.pageService, + actionContext + .withEntityKey(entityKey) + .withAttribute( + PageContext.AttributeKeys.COPY_AS_TEMPLATE, + Constants.FALSE_STRING) + .withAttribute( + PageContext.AttributeKeys.CREATE_FROM_TEMPLATE, + Constants.FALSE_STRING))) + .noEventPropagation() + .publishIf(() -> modifyGrant && isReadonly) + + .newAction(ActionDefinition.SEB_EXAM_CONFIG_COPY_CONFIG_AS_TEMPALTE) + .withEntityKey(entityKey) + .withExec(SebExamConfigCreationUtils.configCreationFunction( + this.pageService, + pageContext.withAttribute( + PageContext.AttributeKeys.COPY_AS_TEMPLATE, + Constants.TRUE_STRING))) .noEventPropagation() .publishIf(() -> modifyGrant && isReadonly) diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigSettingsForm.java b/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigSettingsForm.java index 8c051e4e..4eecfe9e 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigSettingsForm.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/content/SebExamConfigSettingsForm.java @@ -175,6 +175,20 @@ public class SebExamConfigSettingsForm implements TemplateComposer { .ignoreMoveAwayFromEdit() .publishIf(() -> examConfigGrant.iw() && !readonly) + .newAction(ActionDefinition.SEB_EXAM_CONFIG_COPY_CONFIG_AS_TEMPALTE) + .withEntityKey(entityKey) + .withExec(SebExamConfigCreationUtils.configCreationFunction( + this.pageService, + pageContext + .withAttribute( + PageContext.AttributeKeys.COPY_AS_TEMPLATE, + Constants.TRUE_STRING) + .withAttribute( + PageContext.AttributeKeys.CREATE_FROM_TEMPLATE, + Constants.FALSE_STRING))) + .noEventPropagation() + .publishIf(() -> examConfigGrant.iw()) + .newAction(ActionDefinition.SEB_EXAM_CONFIG_VIEW_PROP) .withEntityKey(entityKey) .ignoreMoveAwayFromEdit() diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/content/action/ActionDefinition.java b/src/main/java/ch/ethz/seb/sebserver/gui/content/action/ActionDefinition.java index 5dfe49f3..6e6169bc 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/content/action/ActionDefinition.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/content/action/ActionDefinition.java @@ -421,6 +421,10 @@ public enum ActionDefinition { new LocTextKey("sebserver.examconfig.action.copy"), ImageIcon.COPY, ActionCategory.FORM), + SEB_EXAM_CONFIG_COPY_CONFIG_AS_TEMPALTE( + new LocTextKey("sebserver.examconfig.action.copy-as-template"), + ImageIcon.TEMPLATE, + ActionCategory.FORM), SEB_EXAM_CONFIG_MODIFY_FROM_LIST( new LocTextKey("sebserver.examconfig.action.list.modify"), @@ -464,6 +468,11 @@ public enum ActionDefinition { ImageIcon.EDIT, PageStateDefinitionImpl.SEB_EXAM_CONFIG_TEMPLATE_EDIT, ActionCategory.FORM), + SEB_EXAM_CONFIG_TEMPLATE_CREATE_CONFIG( + new LocTextKey("sebserver.configtemplate.action.create-config"), + ImageIcon.NEW, + PageStateDefinitionImpl.SEB_EXAM_CONFIG_TEMPLATE_VIEW, + ActionCategory.FORM), SEB_EXAM_CONFIG_TEMPLATE_CANCEL_MODIFY( new LocTextKey("sebserver.overall.action.modify.cancel"), ImageIcon.CANCEL, diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/service/page/PageContext.java b/src/main/java/ch/ethz/seb/sebserver/gui/service/page/PageContext.java index 8253cea2..e13745a2 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/service/page/PageContext.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/service/page/PageContext.java @@ -39,6 +39,9 @@ public interface PageContext { public static final String IMPORT_FROM_QUIZ_DATA = "IMPORT_FROM_QUIZ_DATA"; + public static final String COPY_AS_TEMPLATE = "COPY_AS_TEMPLATE"; + public static final String CREATE_FROM_TEMPLATE = "CREATE_FROM_TEMPLATE"; + } /** Get the I18nSupport service diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/table/EntityTable.java b/src/main/java/ch/ethz/seb/sebserver/gui/table/EntityTable.java index ba49b9e1..e9e7cc2e 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/table/EntityTable.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/table/EntityTable.java @@ -407,7 +407,9 @@ public class EntityTable { } final GridData gridData = (GridData) this.table.getLayoutData(); - gridData.heightHint = (page.content.size() * ROW_HEIGHT) + HEADER_HEIGHT; + gridData.heightHint = (this.pageNumber > 1) + ? (this.pageSize * ROW_HEIGHT) + HEADER_HEIGHT + : (page.content.size() * ROW_HEIGHT) + HEADER_HEIGHT; for (final ROW row : page.content) { final TableItem item = new TableItem(this.table, SWT.NONE); diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/table/TableNavigator.java b/src/main/java/ch/ethz/seb/sebserver/gui/table/TableNavigator.java index b00b164e..1bc89167 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/table/TableNavigator.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/table/TableNavigator.java @@ -22,7 +22,7 @@ import ch.ethz.seb.sebserver.gui.widget.WidgetFactory.CustomVariant; public class TableNavigator { - private final static int PAGE_NAV_SIZE = 3; + private final static int PAGE_NAV_SIZE = 10; private final Composite composite; private final EntityTable entityTable; @@ -31,10 +31,6 @@ public class TableNavigator { this.composite = new Composite(entityTable.composite, SWT.NONE); final GridData gridData = new GridData(SWT.FILL, SWT.TOP, true, false); this.composite.setLayoutData(gridData); - -// TODO just for debugging, remove when tested -// this.composite.setBackground(new Color(entityTable.composite.getDisplay(), new RGB(200, 0, 0))); - final GridLayout layout = new GridLayout(3, true); layout.marginLeft = 20; this.composite.setLayout(layout); @@ -75,11 +71,20 @@ public class TableNavigator { if (numberOfPages > 1) { createBackwardLabel(pageNumber > 1, pageNumber, numNav); + final int pageNavSize = (numberOfPages > PAGE_NAV_SIZE) ? PAGE_NAV_SIZE : numberOfPages; + final int half = pageNavSize / 2; + int start = pageNumber - half; + if (start < 1) { + start = 1; + } + int end = start + pageNavSize; + if (end > numberOfPages) { + end = numberOfPages + 1; + start = end - pageNavSize; + } - for (int i = pageNumber - PAGE_NAV_SIZE; i < pageNumber + PAGE_NAV_SIZE; i++) { - if (i >= 1 && i <= numberOfPages) { - createPageNumberLabel(i, i != pageNumber, numNav); - } + for (int i = start; i < end; i++) { + createPageNumberLabel(i, i != pageNumber, numNav); } createForwardLabel(pageNumber < numberOfPages, pageNumber, numNav); @@ -94,7 +99,11 @@ public class TableNavigator { pageHeader.setText("Page " + page + "/" + of); } - private void createPageNumberLabel(final int page, final boolean selectable, final Composite parent) { + private void createPageNumberLabel( + final int page, + final boolean selectable, + final Composite parent) { + final Label pageLabel = new Label(parent, SWT.NONE); pageLabel.setText(" " + String.valueOf(page) + " "); diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/ConfigurationNodeDAO.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/ConfigurationNodeDAO.java index d4eb4aff..ee707c30 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/ConfigurationNodeDAO.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/ConfigurationNodeDAO.java @@ -8,7 +8,7 @@ package ch.ethz.seb.sebserver.webservice.servicelayer.dao; -import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigCopyInfo; +import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigCreationInfo; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode; import ch.ethz.seb.sebserver.gbl.util.Result; import ch.ethz.seb.sebserver.webservice.servicelayer.bulkaction.BulkActionSupportDAO; @@ -20,6 +20,6 @@ public interface ConfigurationNodeDAO extends Result createCopy( Long institutionId, String newOwner, - ConfigCopyInfo copyInfo); + ConfigCreationInfo copyInfo); } diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/ConfigurationDAOBatchService.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/ConfigurationDAOBatchService.java index cded5766..04204825 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/ConfigurationDAOBatchService.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/ConfigurationDAOBatchService.java @@ -34,7 +34,7 @@ import org.springframework.stereotype.Component; import ch.ethz.seb.sebserver.gbl.api.APIMessage.FieldValidationException; import ch.ethz.seb.sebserver.gbl.api.EntityType; import ch.ethz.seb.sebserver.gbl.model.sebconfig.AttributeType; -import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigCopyInfo; +import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigCreationInfo; import ch.ethz.seb.sebserver.gbl.model.sebconfig.Configuration; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationAttribute; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode; @@ -347,7 +347,7 @@ class ConfigurationDAOBatchService { Result createCopy( final Long institutionId, final String newOwner, - final ConfigCopyInfo copyInfo) { + final ConfigCreationInfo copyInfo) { return Result.tryCatch(() -> { final ConfigurationNodeRecord sourceNode = this.batchConfigurationNodeRecordMapper @@ -366,7 +366,7 @@ class ConfigurationDAOBatchService { private ConfigurationNodeRecord copyNodeRecord( final ConfigurationNodeRecord nodeRec, final String newOwner, - final ConfigCopyInfo copyInfo) { + final ConfigCreationInfo copyInfo) { final ConfigurationNodeRecord newNodeRec = new ConfigurationNodeRecord( null, @@ -375,8 +375,9 @@ class ConfigurationDAOBatchService { StringUtils.isNotBlank(newOwner) ? newOwner : nodeRec.getOwner(), copyInfo.getName(), copyInfo.getDescription(), - nodeRec.getType(), + copyInfo.configurationType.name(), ConfigurationStatus.CONSTRUCTION.name()); + this.batchConfigurationNodeRecordMapper.insert(newNodeRec); this.batchSqlSessionTemplate.flushStatements(); diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/ConfigurationNodeDAOImpl.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/ConfigurationNodeDAOImpl.java index 0957a1b8..12e91b75 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/ConfigurationNodeDAOImpl.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/dao/impl/ConfigurationNodeDAOImpl.java @@ -27,7 +27,7 @@ import org.springframework.transaction.annotation.Transactional; import ch.ethz.seb.sebserver.gbl.api.APIMessage.FieldValidationException; import ch.ethz.seb.sebserver.gbl.api.EntityType; import ch.ethz.seb.sebserver.gbl.model.EntityKey; -import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigCopyInfo; +import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigCreationInfo; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode.ConfigurationStatus; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode.ConfigurationType; @@ -197,9 +197,12 @@ public class ConfigurationNodeDAOImpl implements ConfigurationNodeDAO { public Result createCopy( final Long institutionId, final String newOwner, - final ConfigCopyInfo copyInfo) { + final ConfigCreationInfo copyInfo) { - return this.configurationDAOBatchService.createCopy(institutionId, newOwner, copyInfo); + return this.configurationDAOBatchService.createCopy( + institutionId, + newOwner, + copyInfo); } @Override diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/weblayer/api/ConfigurationNodeController.java b/src/main/java/ch/ethz/seb/sebserver/webservice/weblayer/api/ConfigurationNodeController.java index 252d9638..8b2e86ad 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/weblayer/api/ConfigurationNodeController.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/weblayer/api/ConfigurationNodeController.java @@ -44,7 +44,7 @@ import ch.ethz.seb.sebserver.gbl.model.Domain; import ch.ethz.seb.sebserver.gbl.model.Domain.EXAM; import ch.ethz.seb.sebserver.gbl.model.EntityKey; import ch.ethz.seb.sebserver.gbl.model.Page; -import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigCopyInfo; +import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigCreationInfo; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigKey; import ch.ethz.seb.sebserver.gbl.model.sebconfig.Configuration; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode; @@ -152,7 +152,7 @@ public class ConfigurationNodeController extends EntityController { + if (config.type == ConfigurationType.TEMPLATE) { + return this.createTemplate(config); + } else { + return config; + } + }) .getOrThrow(); } diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index 5b7329c0..3286dfe1 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -456,6 +456,9 @@ sebserver.examconfig.action.saveToHistory.integrity-violation=There is currently sebserver.examconfig.action.undo=Undo sebserver.examconfig.action.undo.success=Successfully reverted to last saved state sebserver.examconfig.action.copy=Copy Configuration +sebserver.examconfig.action.copy.dialog=Exam Configuration +sebserver.examconfig.action.copy-as-template=Save As Template +sebserver.examconfig.action.copy-as-template.dialog=Configuration Template sebserver.examconfig.action.export.plainxml=Export Configuration sebserver.examconfig.action.get-config-key=Export Config-Key sebserver.examconfig.action.import-config=Import Exam Configuration @@ -961,15 +964,17 @@ sebserver.configtemplate.info.pleaseSelect=Please select an exam configuration t sebserver.configtemplate.action.list.new=Add Configuration Template sebserver.configtemplate.action.list.view=View Configuration Template -sebserver.configtemplate.action.view=View Configuration Template -sebserver.configtemplate.action.list.modify=Edit Configuration Template -sebserver.configtemplate.action.modify=Edit Configuration Template +sebserver.configtemplate.action.view=View Template +sebserver.configtemplate.action.list.modify=Edit Template +sebserver.configtemplate.action.modify=Edit Template +sebserver.configtemplate.action.create-config=Create Configuration +sebserver.configtemplate.action.create-config.dialog=Exam Configuration -sebserver.configtemplate.form.title.new=Add Configuration Template +sebserver.configtemplate.form.title.new=Add Template sebserver.configtemplate.form.title=Configuration Template sebserver.configtemplate.form.name=Name sebserver.configtemplate.form.description=Description -sebserver.configtemplate.action.save=Save Configuration Template +sebserver.configtemplate.action.save=Save Template sebserver.configtemplate.attr.type.TEXT_FIELD=Text Field sebserver.configtemplate.attr.type.PASSWORD_FIELD=Password Field diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties deleted file mode 100644 index 5b7329c0..00000000 --- a/src/main/resources/messages_en.properties +++ /dev/null @@ -1,1128 +0,0 @@ -################################ -# Overall -################################ - -sebserver.overall.version=SEB Server Version : {0} -sebserver.overall.help=Documentation -sebserver.overall.help.link=https://www.safeexambrowser.org/news_en.html - -sebserver.overall.message.leave.without.save=You have unsaved changes!\nAre you sure you want to leave the page?\The changes will be lost. -sebserver.overall.upload=Please select a file -sebserver.overall.upload.unsupported.file=This file type is not supported. Supported files are: {0} -sebserver.overall.action.modify.cancel=Cancel -sebserver.overall.action.modify.cancel.confirm=Are you sure you want to cancel? Modifications will be lost. -sebserver.overall.action.filter=Apply filter -sebserver.overall.action.filter.clear=Clear filter criteria -sebserver.overall.action.ok=OK -sebserver.overall.action.cancel=Cancel -sebserver.overall.action.close=Close -sebserver.overall.action.goAwayFromEditPageConfirm=Are you sure you want to leave this page? Unsaved data will be lost. -sebserver.overall.action.category.varia=Varia - -sebserver.overall.status.active=Active -sebserver.overall.status.inactive=Inactive - -sebserver.overall.date.from=From -sebserver.overall.date.to=To - -sebserver.overall.action.add=Add; -sebserver.overall.action.remove=Remove -sebserver.overall.action.select=Please Select - -sebserver.overall.types.activityType.CREATE=Create New -sebserver.overall.types.activityType.IMPORT=Import -sebserver.overall.types.activityType.EXPORT=Export -sebserver.overall.types.activityType.MODIFY=Modify -sebserver.overall.types.activityType.PASSWORD_CHANGE=Password Change -sebserver.overall.types.activityType.DEACTIVATE=Deactivate -sebserver.overall.types.activityType.ACTIVATE=Activate -sebserver.overall.types.activityType.DELETE=Delete - -sebserver.overall.types.entityType.CONFIGURATION_ATTRIBUTE=Configuration Attribute -sebserver.overall.types.entityType.CONFIGURATION_VALUE=Configuration Value -sebserver.overall.types.entityType.VIEW=Configuration View -sebserver.overall.types.entityType.ORIENTATION=Configuration Orientation -sebserver.overall.types.entityType.CONFIGURATION=Exam Configuration History -sebserver.overall.types.entityType.CONFIGURATION_NODE=Exam Configuration -sebserver.overall.types.entityType.EXAM_CONFIGURATION_MAP=Exam Configuration Mapping -sebserver.overall.types.entityType.EXAM=Exam -sebserver.overall.types.entityType.INDICATOR=Indicator -sebserver.overall.types.entityType.THRESHOLD=Threshold -sebserver.overall.types.entityType.INSTITUTION=Institution -sebserver.overall.types.entityType.SEB_CLIENT_CONFIGURATION=Client Configuration -sebserver.overall.types.entityType.LMS_SETUP=LMS Setup -sebserver.overall.types.entityType.USER=User Account - -sebserver.overall.activity.title.serveradmin=SEB Server Administration -sebserver.overall.activity.title.sebconfig=SEB Configuration -sebserver.overall.activity.title.examadmin=Exam Administration -sebserver.overall.activity.title.monitoring=Monitoring - -################################ -# Form validation and messages -################################ - -sebserver.form.validation.error.title=Form data validation failed -sebserver.form.validation.error.message=There is missing or incorrect form data. -sebserver.form.validation.fieldError.size=The size must be between {3} and {4} -sebserver.form.validation.fieldError.name=The Name is mandatory and must have a size between {3} and {4} character -sebserver.form.validation.fieldError.urlSuffix=The URL Suffix must have a size between {3} and {4} character -sebserver.form.validation.fieldError.notNull=This field is mandatory -sebserver.form.validation.fieldError.username.notunique=This Username is already in use. Please choose another one. -sebserver.form.validation.fieldError.password.wrong=The old password is wrong -sebserver.form.validation.fieldError.password.mismatch=The re-typed password doesn't match the new password -sebserver.form.validation.fieldError.invalidURL=The input does not match the URL pattern. -sebserver.form.validation.fieldError.exists=This name already exists. Please choose another one. -sebserver.form.validation.fieldError.email=Invalid mail address -sebserver.error.unexpected=Unexpected Error -sebserver.page.message=Information -sebserver.dialog.confirm.title=Confirmation - -sebserver.dialog.confirm.deactivation=Note that there are {0} other entities that belongs to this entity.
Those will also be deactivated by deactivating this entity.

Are You sure to deactivate this entity? -sebserver.dialog.confirm.deactivation.noDependencies=Are You sure you want to deactivate? - -################################ -# Login Page -################################ - -sebserver.login.username=User Name -sebserver.login.pwd=Password -sebserver.login.login=Sign In -sebserver.login.failed.title=Login failed -sebserver.login.failed.message=Access denied: wrong username or password -sebserver.logout=Sign out -sebserver.logout.success.message=You have been successfully signed out. -sebserver.login.password.change=Information -sebserver.login.password.change.success=The password was successfully changed. Please sign in with your new password - -################################ -# Main Page -################################ - -sebserver.logout=Logout -sebserver.mainpage.maximize.tooltip=Maximize -sebserver.mainpage.minimize.tooltip=Minimize -sebserver.activitiespane.title=Administration -sebserver.actionpane.title=Actions - -################################ -# Institution -################################ - -sebserver.institution.list.actions=Selected Institution -sebserver.institution.list.empty=No institution has been found. Please adapt the filter or create a new institution -sebserver.institution.list.title=Institutions -sebserver.institution.list.column.name=Name -sebserver.institution.list.column.urlSuffix=URL Suffix -sebserver.institution.list.column.active=Status - -sebserver.institution.action.list=Institution -sebserver.institution.action.form=Institution -sebserver.institution.action.new=Add Institution -sebserver.institution.action.list.view=View Institution -sebserver.institution.action.list.modify=Edit Institution -sebserver.institution.action.modify=Edit -sebserver.institution.action.save=Save Institution -sebserver.institution.action.activate=Activate Institution -sebserver.institution.action.deactivate=Deactivate Institution -sebserver.institution.action.delete=Delete Institution - -sebserver.institution.info.pleaseSelect=Please select an institution first. -sebserver.institution.form.title.new=Add Institution -sebserver.institution.form.title=Institution - -sebserver.institution.form.name=Name -sebserver.institution.form.urlSuffix=URL Suffix -sebserver.institution.form.logoImage=Logo Image -sebserver.institution.form.logoImage.unsupportedFileType=The selected file is not supported. Supported are: PNG and JPG - - -################################ -# User Account -################################ - -sebserver.useraccount.list.actions=Selected User Account -sebserver.useraccount.role.SEB_SERVER_ADMIN=SEB Server Administrator -sebserver.useraccount.role.INSTITUTIONAL_ADMIN=Institutional Administrator -sebserver.useraccount.role.EXAM_ADMIN=Exam Administrator -sebserver.useraccount.role.EXAM_SUPPORTER=Exam Supporter - -sebserver.useraccount.list.empty=No user account has been found. Please adapt the filter or create a new user account -sebserver.useraccount.list.title=User Accounts -sebserver.useraccount.list.column.institution=Institution -sebserver.useraccount.list.column.name=Name -sebserver.useraccount.list.column.username=User Name -sebserver.useraccount.list.column.email=Mail -sebserver.useraccount.list.column.language=Language -sebserver.useraccount.list.column.active=Active - -sebserver.useraccount.action.list=User Account -sebserver.useraccount.action.form=User Account of {0} -sebserver.useraccount.action.new=Add User Account -sebserver.useraccount.action.view=View User Account -sebserver.useraccount.action.list.modify=Edit User Account -sebserver.useraccount.action.modify=Edit -sebserver.useraccount.action.save=Save User Account -sebserver.useraccount.action.activate=Activate Account -sebserver.useraccount.action.deactivate=Deactivate Account -sebserver.useraccount.action.delete=Delete User Account -sebserver.useraccount.action.change.password=Change Password -sebserver.useraccount.action.change.password.save=Save New Password - -sebserver.useraccount.info.pleaseSelect=Please Select a User Account first. -sebserver.useraccount.info.notEditable=You have no edit rights for this User Account. - -sebserver.useraccount.form.title=User Account -sebserver.useraccount.form.title.new=Add User Account -sebserver.useraccount.form.institution=Institution -sebserver.useraccount.form.name=Name -sebserver.useraccount.form.username=Username -sebserver.useraccount.form.mail=E-Mail -sebserver.useraccount.form.language=Language -sebserver.useraccount.form.timezone=Time Zone -sebserver.useraccount.form.roles=User Roles -sebserver.useraccount.form.password=Password -sebserver.useraccount.form.password.confirm=Confirm Password - -sebserver.useraccount.form.pwchange.title=Change Password : {0} -sebserver.useraccount.form.password=Password -sebserver.useraccount.form.password.new=New Password -sebserver.useraccount.form.password.new.confirm=Confirm New Password - -################################ -# LMS Setup -################################ - -sebserver.lmssetup.type.MOCKUP=Mock-up -sebserver.lmssetup.type.MOODLE=Moodle -sebserver.lmssetup.type.OPEN_EDX=Open edX - -sebserver.lmssetup.list.actions=Selected LMS Setup -sebserver.lmssetup.list.action.no.modify.privilege=No Access: A LMS Setup from other institution cannot be modified. -sebserver.lmssetup.list.empty=No LMS Setup has been found. Please adapt the filter or create a new LMS Setup -sebserver.lmssetup.list.title=Learning Management System Setups -sebserver.lmssetup.list.column.institution=Institution -sebserver.lmssetup.list.column.name=Name -sebserver.lmssetup.list.column.type=LMS Type -sebserver.lmssetup.list.column.active=Active - -sebserver.lmssetup.action.list=LMS Connection Settings -sebserver.lmssetup.action.form=LMS Setup -sebserver.lmssetup.action.new=Add LMS Setup -sebserver.lmssetup.action.list.view=View LMS Setup -sebserver.lmssetup.action.list.modify=Edit LMS Setup -sebserver.lmssetup.action.modify=Edit -sebserver.lmssetup.action.savetest=Test And Save -sebserver.lmssetup.action.testsave=Test And Save -sebserver.lmssetup.action.test.ok=Successfully connected to the course API -sebserver.lmssetup.action.test.tokenRequestError=The API access was denied: {0} -sebserver.lmssetup.action.test.quizRequestError=Unable to request courses or quizzes from the course API of the LMS. {0} -sebserver.lmssetup.action.test.quizRestrictionError=Unable to access course restriction API of the LMS. {0} -sebserver.lmssetup.action.test.missingParameter=There is one or more missing connection parameter.
Please check the connection parameter for this LMS Setup -sebserver.lmssetup.action.test.unknownError=An unexpected error happened while trying to connect to the LMS course API. {0} -sebserver.lmssetup.action.save=Save LMS Setup -sebserver.lmssetup.action.activate=Activate LMS Setup -sebserver.lmssetup.action.deactivate=Deactivate LMS Setup -sebserver.lmssetup.action.delete=Delete LMS Setup - -sebserver.lmssetup.info.pleaseSelect=Please Select a LMS Setup first - -sebserver.lmssetup.form.title=Learning Management System Setup -sebserver.lmssetup.form.title.new=Add Learning Management System Setup -sebserver.lmssetup.form.institution=Institution -sebserver.lmssetup.form.name=Name -sebserver.lmssetup.form.type=Type -sebserver.lmssetup.form.clientname.seb=SEB Auth. Name -sebserver.lmssetup.form.secret.seb=SEB Auth. Password -sebserver.lmssetup.form.url=LMS Server Address -sebserver.lmssetup.form.clientname.lms=LMS Server Username -sebserver.lmssetup.form.secret.lms=LMS Server Password -sebserver.lmssetup.form.proxy=Proxy -sebserver.lmssetup.form.proxy.host=Proxy Host -sebserver.lmssetup.form.proxy.port=Proxy Port -sebserver.lmssetup.form.proxy.auth-credentials=Proxy Name/Password - -################################ -# Quiz Discovery -################################ - -sebserver.quizdiscovery.list.actions=Selected Quiz - -sebserver.quizdiscovery.list.title=Quizzes -sebserver.quizdiscovery.list.empty=No Quiz has been found. Please adapt the filter or create a new LMS Setup -sebserver.quizdiscovery.list.column.institution=Institution -sebserver.quizdiscovery.list.column.lmssetup=LMS -sebserver.quizdiscovery.list.column.name=Name -sebserver.quizdiscovery.list.column.starttime=Start Time {0} -sebserver.quizdiscovery.list.column.endtime=End Time {0} -sebserver.quizdiscovery.info.pleaseSelect=Please Select a Quiz first - -sebserver.quizdiscovery.action.list=LMS Exam Discovery -sebserver.quizdiscovery.action.import=Import as Exam -sebserver.quizdiscovery.quiz.import.out.dated=The Selected Quiz is is already finished and can't be imported -sebserver.quizdiscovery.action.details=Show Details - -sebserver.quizdiscovery.quiz.details.title=Quiz Details -sebserver.quizdiscovery.quiz.details.lms=LMS -sebserver.quizdiscovery.quiz.details.institution=Institution -sebserver.quizdiscovery.quiz.details.name=Name -sebserver.quizdiscovery.quiz.details.description=Description -sebserver.quizdiscovery.quiz.details.starttime=Start Time -sebserver.quizdiscovery.quiz.details.endtime=End Time -sebserver.quizdiscovery.quiz.details.url=Start URL - -################################ -# Exam -################################ - -sebserver.exam.list.actions=Selected Exam -sebserver.exam.list.title=Exams -sebserver.exam.list.column.institution=Institution -sebserver.exam.list.column.lmssetup=LMS -sebserver.exam.list.column.name=Name -sebserver.exam.list.column.starttime=Start Time {0} -sebserver.exam.list.column.type=Type - -sebserver.exam.list.empty=No Exam has been found. Please adapt the filter or import one from Quiz -sebserver.exam.list.modify.out.dated=Finished exams cannot be modified. -sebserver.exam.list.action.no.modify.privilege=No Access: An Exam from other institution cannot be modified. - -sebserver.exam.consistency.title=Note: This exam is already running but has some missing settings -sebserver.exam.consistency.missing-supporter= - There are no Exam-Supporter defined for this exam. Use 'Edit Exam' on the right to add an Exam-Supporter. -sebserver.exam.consistency.missing-indicator= - There is no indicator defined for this exam. Use 'Add Indicator" on the right to add an indicator. -sebserver.exam.consistency.missing-config= - There is no configuration defined for this exam. Use 'Add Configuration' to attach one. -sebserver.exam.consistency.missing-seb-restriction= - There is currently no SEB restriction applied on the LMS side. Use 'Enable SEB Restriction' on the right to activate auto-restriction.
Or if this is not possible consider doing it manually on the LMS. -sebserver.exam.confirm.remove-config=This exam is current running. The remove of the attached configuration will led to an invalid state
where connecting SEB clients cannot download the configuration for the exam.

Are you sure to remove the Configuration? - -sebserver.exam.action.list=SEB Exam Settings -sebserver.exam.action.list.view=View Exam -sebserver.exam.action.list.modify=Edit Exam -sebserver.exam.action.modify=Edit Exam -sebserver.exam.action.import=Import From Quizzes -sebserver.exam.action.save=Save Exam -sebserver.exam.action.activate=Activate Exam -sebserver.exam.action.deactivate=Deactivate Exam -sebserver.exam.action.sebrestriction.enable=Enable SEB Restriction -sebserver.exam.action.sebrestriction.disable=Disable SEB Restriction - -sebserver.exam.info.pleaseSelect=Please Select an Exam first - -sebserver.exam.form.title.import=Import Exam -sebserver.exam.form.title=Exam -sebserver.exam.form.lmssetup=LMS Setup -sebserver.exam.form.quizid=Quiz Identifier -sebserver.exam.form.quizurl=Quiz URL -sebserver.exam.form.name=Name -sebserver.exam.form.description=Description -sebserver.exam.form.starttime=Start Time -sebserver.exam.form.endtime=End Time -sebserver.exam.form.status=Status -sebserver.exam.form.type=Exam Type -sebserver.exam.form.supporter=Exam Supporter -sebserver.exam.form.supporter.action.add=Add as supporter for this exam -sebserver.exam.form.supporter.action.remove=Remove supporter - -sebserver.exam.type.UNDEFINED=Not Defined -sebserver.exam.type.MANAGED=Managed Devices -sebserver.exam.type.BYOD=Bring Your Own Device -sebserver.exam.type.VDI=VDI (Virtual Desktop Infrastructure) - -sebserver.exam.status.UP_COMING=Up Coming -sebserver.exam.status.RUNNING=Running -sebserver.exam.status.FINISHED=Finished - -sebserver.exam.configuration.list.actions=SEB Exam Configuration -sebserver.exam.configuration.list.title=SEB Exam Configuration -sebserver.exam.configuration.list.column.name=Name -sebserver.exam.configuration.list.column.description=Description -sebserver.exam.configuration.list.column.status=Status -sebserver.exam.configuration.list.empty=There is currently no SEB Configuration defined for this Exam. Please add one -sebserver.exam.configuration.list.pleaseSelect=Please Select a SEB Configuration first -sebserver.exam.configuration.action.noconfig.message=There is currently no SEB exam configuration to select.
Please create one in SEB Configuration / Exam Configuration - -sebserver.exam.configuration.action.list.new=Add Configuration -sebserver.exam.configuration.action.list.modify=Edit Configuration -sebserver.exam.configuration.action.list.delete=Delete Configuration -sebserver.exam.configuration.action.save=Save Configuration -sebserver.exam.configuration.action.export-config=Export Configuration -sebserver.exam.configuration.action.get-config-key=Export Config-Key - -sebserver.exam.configuration.form.title.new=Add SEB Configuration Mapping -sebserver.exam.configuration.form.title=SEB Configuration Mapping -sebserver.exam.configuration.form.name=SEB Configuration -sebserver.exam.configuration.form.encryptSecret=Encryption Password -sebserver.exam.configuration.form.description=Description -sebserver.exam.configuration.form.status=Status -sebserver.exam.configuration.form.encryptSecret.confirm=Confirm Password - -sebserver.exam.indicator.list.actions=Indicator -sebserver.exam.indicator.list.title=Indicators -sebserver.exam.indicator.list.column.type=Type -sebserver.exam.indicator.list.column.name=Name -sebserver.exam.indicator.list.column.thresholds=Thresholds -sebserver.exam.indicator.list.empty=There is currently no indicator defined for this exam. Please create a new one -sebserver.exam.indicator.list.pleaseSelect=Please select an indicator first - -sebserver.exam.indicator.type.LAST_PING=Last Ping -sebserver.exam.indicator.type.ERROR_COUNT=Error Count - -sebserver.exam.indicator.info.pleaseSelect=Please select an indicator first - -sebserver.exam.indicator.action.list.new=Add Indicator -sebserver.exam.indicator.action.list.modify=Edit Selected Indicator -sebserver.exam.indicator.action.list.delete=Delete Selected Indicator -sebserver.exam.indicator.action.save=Save - -sebserver.exam.indicator.form.title=Indicator -sebserver.exam.indicator.form.title.new=Add Indicator -sebserver.exam.indicator.form.exam=Exam -sebserver.exam.indicator.form.name=Name -sebserver.exam.indicator.form.type=Type -sebserver.exam.indicator.form.color=Default Color -sebserver.exam.indicator.form.color.action=Please select a color -sebserver.exam.indicator.form.thresholds=Thresholds -sebserver.exam.indicator.thresholds.select.color=Please select a color - -sebserver.exam.indicator.thresholds.list.title=Thresholds -sebserver.exam.indicator.thresholds.list.value=Value -sebserver.exam.indicator.thresholds.list.color=Color -sebserver.exam.indicator.thresholds.list.add=Add Threshold -sebserver.exam.indicator.thresholds.list.remove=Delete Threshold - -################################ -# SEB Client Configuration -################################ - -sebserver.sebconfig.activity.name=SEB Configuration - -sebserver.clientconfig.action.list=Client Configuration -sebserver.clientconfig.action.export=Export - -sebserver.clientconfig.list.empty=There is currently no SEB-Client configuration available. Please create a new one -sebserver.clientconfig.list.title=SEB Client Configurations -sebserver.clientconfig.list.actions=Selected Configuration -sebserver.clientconfig.list.column.institution=Institution -sebserver.clientconfig.list.column.name=Name -sebserver.clientconfig.list.column.date=Creation Date -sebserver.clientconfig.list.column.active=Active -sebserver.clientconfig.info.pleaseSelect=Please Select a client configuration first -sebserver.clientconfig.list.action.no.modify.privilege=No Access: A SEB Client Configuration from other institution cannot be modified. - -sebserver.clientconfig.form.title.new=Add Client Configuration -sebserver.clientconfig.form.title=SEB Client Configuration -sebserver.clientconfig.form.name=Name -sebserver.clientconfig.form.fallback-url=Fallback Start URL -sebserver.clientconfig.form.date=Creation Date -sebserver.clientconfig.form.encryptSecret=Configuration Password -sebserver.clientconfig.form.encryptSecret.confirm=Confirm Password - -sebserver.clientconfig.action.list.new=Add Configuration -sebserver.clientconfig.action.list.view=View Configuration -sebserver.clientconfig.action.list.modify=Edit Configuration -sebserver.clientconfig.action.modify=Edit -sebserver.clientconfig.action.save=Save -sebserver.clientconfig.action.activate=Activate Configuration -sebserver.clientconfig.action.deactivate=Deactivate Configuration - -################################ -# SEB Exam Configuration -################################ - -sebserver.examconfig.action.list=Exam Configuration -sebserver.examconfig.list.title=Exam Configurations -sebserver.examconfig.list.column.institution=Institution -sebserver.examconfig.list.column.name=Name -sebserver.examconfig.list.column.description=Description -sebserver.examconfig.list.column.status=Status - -sebserver.examconfig.list.actions=Selected Configuration - -sebserver.examconfig.list.empty=There is currently no SEB-Exam configuration available. Please create a new one -sebserver.examconfig.info.pleaseSelect=Please select an exam configuration first -sebserver.examconfig.list.action.no.modify.privilege=No Access: An Exam Configuration from other institution cannot be modified. - -sebserver.examconfig.action.list.new=Add Exam Configuration -sebserver.examconfig.action.list.view=View Configuration -sebserver.examconfig.action.list.modify=Edit Settings -sebserver.examconfig.action.list.modify=View Settings -sebserver.examconfig.action.list.modify.properties=Edit Configuration -sebserver.examconfig.action.view=View Configuration -sebserver.examconfig.action.modify=Edit Settings -sebserver.examconfig.action.modify.properties=Edit Configuration -sebserver.examconfig.action.save=Save -sebserver.examconfig.action.saveToHistory=Save / Publish -sebserver.examconfig.action.saveToHistory.success=Successfully saved in history -sebserver.examconfig.action.saveToHistory.integrity-violation=There is currently at least one running Exam with active SEB client connections that uses this Configuration.
Modify of a configuration that is currently in use would lead to inconsistency and is therefore not allowed.

Please make sure that the configuration is not in use before applying changes. -sebserver.examconfig.action.undo=Undo -sebserver.examconfig.action.undo.success=Successfully reverted to last saved state -sebserver.examconfig.action.copy=Copy Configuration -sebserver.examconfig.action.export.plainxml=Export Configuration -sebserver.examconfig.action.get-config-key=Export Config-Key -sebserver.examconfig.action.import-config=Import Exam Configuration -sebserver.examconfig.action.import-file-select=Import From File -sebserver.examconfig.action.import-file-password=Password -sebserver.examconfig.action.import-config.confirm=Configuration successfully imported -sebserver.examconfig.action.import.missing-password=Missing Password: The chosen SEB Configuration is password-protected.

Please choose it again and provide the correct password within the password field. -sebserver.examconfig.action.state-change.confirm=This configuration is already attached to an exam.

Please note that changing an attached configuration will take effect on the exam when the configuration changes are saved

Are you sure to change this configuration to an editable state? - -sebserver.examconfig.form.title.new=Add Exam Configuration -sebserver.examconfig.form.title=Exam Configuration -sebserver.examconfig.form.name=Name -sebserver.examconfig.form.description=Description -sebserver.examconfig.form.with-history=With History -sebserver.examconfig.form.template=From Template -sebserver.examconfig.form.status=Status -sebserver.examconfig.form.config-key.title=Config Key -sebserver.examconfig.form.attched-to=Attached To Exam - -sebserver.examconfig.status.CONSTRUCTION=Under Construction -sebserver.examconfig.status.READY_TO_USE=Ready To Use -sebserver.examconfig.status.IN_USE=In Use - -sebserver.examconfig.props.from.title=Exam Configuration Properties -sebserver.examconfig.props.form.views.general=General -sebserver.examconfig.props.form.views.user_interface=User Interface -sebserver.examconfig.props.form.views.browser=Browser -sebserver.examconfig.props.form.views.down_upload=Down/Uploads -sebserver.examconfig.props.form.views.exam=Exam -sebserver.examconfig.props.form.views.applications=Applications -sebserver.examconfig.props.form.views.resources=Additional Resources -sebserver.examconfig.props.form.views.network=Network -sebserver.examconfig.props.form.views.security=Security -sebserver.examconfig.props.form.views.registry=Registry -sebserver.examconfig.props.form.views.hooked_keys=Hooked Keys - - -sebserver.examconfig.props.label.hashedAdminPassword=Administrator password -sebserver.examconfig.props.label.hashedAdminPassword.confirm=Confirm password -sebserver.examconfig.props.label.allowQuit=Allow user to quit SEB -sebserver.examconfig.props.label.allowQuit.tooltip=Users can quit SEB with Control-Q, window close or quit button. Otherwise use a quit link in your exam system or shutdown/restart the computer. -sebserver.examconfig.props.label.ignoreExitKeys=Ignore exit keys -sebserver.examconfig.props.label.ignoreExitKeys.tooltip=SEB ignores the exit keys and can only be quit manually by entering the quit password (click Quit button in SEB taskbar, press Ctrl-Q or click the main browser window close button). -sebserver.examconfig.props.label.hashedQuitPassword=Quit/unlock password -sebserver.examconfig.props.label.hashedQuitPassword.confirm=Confirm password -sebserver.examconfig.props.group.exitSequence=Exit Sequence - -sebserver.examconfig.props.label.exitKey.0=F1 -sebserver.examconfig.props.label.exitKey.1=F2 -sebserver.examconfig.props.label.exitKey.2=F3 -sebserver.examconfig.props.label.exitKey.3=F4 -sebserver.examconfig.props.label.exitKey.4=F5 -sebserver.examconfig.props.label.exitKey.5=F6 -sebserver.examconfig.props.label.exitKey.6=F7 -sebserver.examconfig.props.label.exitKey.7=F8 -sebserver.examconfig.props.label.exitKey.8=F9 -sebserver.examconfig.props.label.exitKey.9=F10 -sebserver.examconfig.props.label.exitKey.10=F11 -sebserver.examconfig.props.label.exitKey.11=F12 - -sebserver.examconfig.props.group.browserViewMode=Browser View Mode -sebserver.examconfig.props.label.browserViewMode.0=Use browser window -sebserver.examconfig.props.label.browserViewMode.0.tooltip=Use window for the SEB browser which can be scaled and moved around, also to another screen if available -sebserver.examconfig.props.label.browserViewMode.1=Use full screen mode -sebserver.examconfig.props.label.browserViewMode.1.tooltip=Display the SEB browser full screen. -sebserver.examconfig.props.label.browserViewMode.2=Touch optimized -sebserver.examconfig.props.label.browserViewMode.2.tooltip=Mainly to be used on Windows tablets. Not working with the Create New Desktop kiosk mode -sebserver.examconfig.props.label.enableTouchExit=Enable touch exit -sebserver.examconfig.props.label.enableTouchExit.tooltip=SEB can be quit by a swipe down from the upper display edge - -sebserver.examconfig.props.group.winsize=Main Browser Window Size And Position -sebserver.examconfig.props.label.mainBrowserWindowWidth=Width -sebserver.examconfig.props.label.mainBrowserWindowWidth.tooltip=Window width in pixel or percentage of total screen width. -sebserver.examconfig.props.label.mainBrowserWindowHeight=Height -sebserver.examconfig.props.label.mainBrowserWindowHeight.tooltip=Window height in pixel or percentage of total screen height. -sebserver.examconfig.props.label.mainBrowserWindowPositioning=Horizontal positioning -sebserver.examconfig.props.label.mainBrowserWindowPositioning.0=Left -sebserver.examconfig.props.label.mainBrowserWindowPositioning.1=Center -sebserver.examconfig.props.label.mainBrowserWindowPositioning.2=Right - -sebserver.examconfig.props.group.wintoolbar=Browser Window Toolbar -sebserver.examconfig.props.label.enableBrowserWindowToolbar=Enable browser window toolbar -sebserver.examconfig.props.label.enableBrowserWindowToolbar.tooltip=Displays a toolbar on top of the browser window which can also be hidden by the user. -sebserver.examconfig.props.label.hideBrowserWindowToolbar=Hide toolbar as default (Mac) -sebserver.examconfig.props.label.hideBrowserWindowToolbar.tooltip=Hide browser window toolbar by default. It can be unhiden using the View menu or Alt-Command-T. -sebserver.examconfig.props.label.showMenuBar=Show menu bar (Mac) -sebserver.examconfig.props.label.showMenuBar.tooltip=Show the OS X menu bar to allow to access settings like Wi-Fi. - -sebserver.examconfig.props.group.taskbar=SEB Taskbar/Dock -sebserver.examconfig.props.label.showTaskBar=Show SEB taskbar -sebserver.examconfig.props.label.showTaskBar.tooltip=The SEB task bar shows and switches between open browser windows,\n allowed resources and applications and displays additional controls -sebserver.examconfig.props.label.taskBarHeight=Taskbar/dock height -sebserver.examconfig.props.label.taskBarHeight.tooltip=Height of SEB dock/task bar in points/pixels -sebserver.examconfig.props.label.showReloadButton=Show reload button -sebserver.examconfig.props.label.showReloadButton.tooltip=Reloads current web page. Shows warning if enabled in Browser settings tab -sebserver.examconfig.props.label.showTime=Show time -sebserver.examconfig.props.label.showTime.tooltip=Show current time -sebserver.examconfig.props.label.showInputLanguage=Show keyboard layout -sebserver.examconfig.props.label.showInputLanguage.tooltip=Shows current keyboard layout and allows to switch between other active keyboard layouts - -sebserver.examconfig.props.group.zoom=Enable Zoom (Win/Mac) -sebserver.examconfig.props.label.enableZoomPage=Enable page zoom -sebserver.examconfig.props.label.enableZoomPage.tooltip=Pages can be zoomed with ctrl - cmd +/- or the commands in the view menu and browser window toolbar (Mac) -sebserver.examconfig.props.label.enableZoomText=Enable text zoom -sebserver.examconfig.props.label.enableZoomText.tooltip=Text in browser windows can be zoomed with cmd +/- or the commands in the view menu and browser window toolbar (Mac) -sebserver.examconfig.props.group.zoomMode=Zoom Mode Win (Ctrl-Mousewheel) -sebserver.examconfig.props.label.zoomMode.0=Use page zoom -sebserver.examconfig.props.label.zoomMode.0.tooltip=Zoom whole web pages using Ctrl-Mousewheel (Win)" -sebserver.examconfig.props.label.zoomMode.1=Use text zoom -sebserver.examconfig.props.label.zoomMode.1.tooltip=Zoom only text on web pages using Ctrl-Mousewheel (Win) - -sebserver.examconfig.props.group.audio=Audio Control -sebserver.examconfig.props.label.audioControlEnabled=Enable audio controls -sebserver.examconfig.props.label.audioControlEnabled.tooltip=Displays an audio control in the SEB taskbar -sebserver.examconfig.props.label.audioMute=Mute audio on startup -sebserver.examconfig.props.label.audioMute.tooltip=The autio is muted when the SEB/exam starts -sebserver.examconfig.props.label.audioSetVolumeLevel=Set initial volume level -sebserver.examconfig.props.label.audioSetVolumeLevel.tooltip=The volume level after starting SEB/exam - -sebserver.examconfig.props.group.spellcheck=Spell Checker -sebserver.examconfig.props.label.allowSpellCheck=Allow spell checking -sebserver.examconfig.props.label.allowSpellCheck.tooltip=Allow to use "Check spelling" in the SEB browser -sebserver.examconfig.props.label.allowDictionaryLookup=Allow dictionary lookup (Mac) -sebserver.examconfig.props.label.allowDictionaryLookup.tooltip=Allow to use the OS X dictionary lookup using a 3 finger tap -sebserver.examconfig.props.label.allowSpellCheckDictionary=The list below shows all dictionaries currently available for spell checking.\nSEB comes with a list of standard dictionaries that can be activated/deactivated here. -sebserver.examconfig.props.label.allowSpellCheckDictionary.da-DK=Danish (Denmark) (da-DK) -sebserver.examconfig.props.label.allowSpellCheckDictionary.en-AU=English (Australia) (en-AU) -sebserver.examconfig.props.label.allowSpellCheckDictionary.en-GB=English (United Kingdom) (en-GB) -sebserver.examconfig.props.label.allowSpellCheckDictionary.en-US=English (United States) (en-US) -sebserver.examconfig.props.label.allowSpellCheckDictionary.es-ES=Spanish (Spain) (es-ES) -sebserver.examconfig.props.label.allowSpellCheckDictionary.fr-FR=French (France) (fr-FR) -sebserver.examconfig.props.label.allowSpellCheckDictionary.pt-PT=Portuguese (Portugal) (pt-PT) -sebserver.examconfig.props.label.allowSpellCheckDictionary.sv-SE=Swedish (Sweden) -sebserver.examconfig.props.label.allowSpellCheckDictionary.sv-FI=Swedish (Finland) - -sebserver.examconfig.props.group.newBrowserWindow=Links requesting to be opened in a new browser window (Mac) -sebserver.examconfig.props.label.newBrowserWindowByLinkPolicy.0=get generally blocked -sebserver.examconfig.props.label.newBrowserWindowByLinkPolicy.1=open in same window -sebserver.examconfig.props.label.newBrowserWindowByLinkPolicy.2=open in new window -sebserver.examconfig.props.label.newBrowserWindowByLinkBlockForeign=Block when directing\nto a different server -sebserver.examconfig.props.label.newBrowserWindowByLinkBlockForeign.tooltip=USE WITH CARE: Hyperlinks invoked by JavaScript/plug-ins which direct to a different host than the one of the current main page will be ignored. - -sebserver.examconfig.props.group.newwinsize=New browser window size and position -sebserver.examconfig.props.label.newBrowserWindowByLinkWidth=Width -sebserver.examconfig.props.label.newBrowserWindowByLinkWidth.tooltip=Window width in pixel or percentage of total screen width. -sebserver.examconfig.props.label.newBrowserWindowByLinkHeight=Height -sebserver.examconfig.props.label.newBrowserWindowByLinkHeight.tooltip=Window height in pixel or percentage of total screen height. -sebserver.examconfig.props.label.newBrowserWindowByLinkPositioning=Horizontal positioning -sebserver.examconfig.props.label.newBrowserWindowByLinkPositioning.0=Left -sebserver.examconfig.props.label.newBrowserWindowByLinkPositioning.1=Center -sebserver.examconfig.props.label.newBrowserWindowByLinkPositioning.2=Right - -sebserver.examconfig.props.group.browserSecurity=Browser security -sebserver.examconfig.props.label.enablePlugIns=Enable plug-ins (Win: only Flash) -sebserver.examconfig.props.label.enablePlugIns.tooltip=Enables web plugins (Mac) or just Flash (Win). For security reasons it\'s recommended to disable this option if you don\'t use any plugin/Flash content. -sebserver.examconfig.props.label.enableJavaScript=Enable JavaScript -sebserver.examconfig.props.label.enableJavaScript.tooltip=Enables JavaScript. Please note that most modern websites need JavaScript for full functionality. -sebserver.examconfig.props.label.enableJava=Enable Java -sebserver.examconfig.props.label.enableJava.tooltip=Enables Java applets. Note: Only applets with the highest Java security level will run in SEB. -sebserver.examconfig.props.label.blockPopUpWindows=Block pop-up windows -sebserver.examconfig.props.label.blockPopUpWindows.tooltip=Disables pop-up windows (often advertisement) opened by JavaScript without an user action such as a button click. -sebserver.examconfig.props.label.allowVideoCapture=Allow video capture (webcam) -sebserver.examconfig.props.label.allowVideoCapture.tooltip=Allow web applications to access camera -sebserver.examconfig.props.label.allowAudioCapture=Allow audio capture (microphone) -sebserver.examconfig.props.label.allowAudioCapture.tooltip=Allow web applications to access microphone -sebserver.examconfig.props.label.allowBrowsingBackForward=Allow navigating back/forward in exam -sebserver.examconfig.props.label.allowBrowsingBackForward.tooltip=Disabling browsing to previously visited pages may increase security, because browsing back might allow to leave an exam -sebserver.examconfig.props.label.newBrowserWindowNavigation=Allow navigating in additional windows -sebserver.examconfig.props.label.browserWindowAllowReload=Allow reload exam -sebserver.examconfig.props.label.browserWindowAllowReload.tooltip=Allow reload in the exam window with F5 reload button (if displayed) -sebserver.examconfig.props.label.newBrowserWindowAllowReload=Allow reload in additional windows -sebserver.examconfig.props.label.newBrowserWindowAllowReload.tooltip=Allow reload in additional window with F5 reload button (if displayed) -sebserver.examconfig.props.label.showReloadWarning=Show reload warning in exam -sebserver.examconfig.props.label.showReloadWarning.tooltip=User has to confirm reloading a web page with F5 or reload button -sebserver.examconfig.props.label.newBrowserWindowShowReloadWarning=Show reload warning in additional windows -sebserver.examconfig.props.label.newBrowserWindowShowReloadWarning.tooltip=User has to confirm reloading a web page with F5 or reload button -sebserver.examconfig.props.label.removeBrowserProfile=Remove profile (Win) -sebserver.examconfig.props.label.removeBrowserProfile.tooltip=Remove XULRunner browser profile (containing caches and also local storage) when quitting SEB -sebserver.examconfig.props.label.removeLocalStorage=Disable local storage (Mac) -sebserver.examconfig.props.label.removeLocalStorage.tooltip=If your web application uses local storage, you have to be sure data is saved encrypted and removed when no longer needed as SEB doesn't remove local storage - -sebserver.examconfig.props.label.browserUserAgent=Suffix to be added to any user agent -sebserver.examconfig.props.group.userAgentDesktop=User agent for desktop mode -sebserver.examconfig.props.label.browserUserAgentWinDesktopMode.0=Desktop default -sebserver.examconfig.props.label.browserUserAgentWinDesktopMode.0.tooltip=Zoom whole web pages using Ctrl-Mousewheel (Win) -sebserver.examconfig.props.label.browserUserAgentWinDesktopMode.1=Custom -sebserver.examconfig.props.label.browserUserAgentWinDesktopMode.1.tooltip=Zoom only text on web pages using Ctrl-Mousewheel (Win) -sebserver.examconfig.props.label.browserUserAgentWinDesktopModeCustom.tooltip=Custom desktop user agent string\n(SEB appends its version number automatically) - -sebserver.examconfig.props.group.userAgentTouch=User agent for touch/table mode -sebserver.examconfig.props.label.browserUserAgentWinTouchMode.0=Touch default -sebserver.examconfig.props.label.browserUserAgentWinTouchMode.1=iPad -sebserver.examconfig.props.label.browserUserAgentWinTouchMode.2=Custom -sebserver.examconfig.props.label.browserUserAgentWinTouchMode.2.tooltip=Zoom only text on web pages using Ctrl-Mousewheel (Win) - -sebserver.examconfig.props.group.userAgentMac=User agent (Mac) -sebserver.examconfig.props.label.browserUserAgentMac.0=Default (depends on installed Safari/WebKit version) -sebserver.examconfig.props.label.browserUserAgentMac.1=Custom -sebserver.examconfig.props.label.browserUserAgentMac.1.tooltip=Zoom only text on web pages using Ctrl-Mousewheel (Win) - -sebserver.examconfig.props.label.enableSebBrowser=Enable SEB with browser window -sebserver.examconfig.props.label.enableSebBrowser.tooltip=Disable this to start another application in kiosk mode\n(for example a virtual desktop infrastructure client) -sebserver.examconfig.props.label.browserWindowTitleSuffix=Suffix to be added to every browser window - -sebserver.examconfig.props.label.allowDownUploads=Allow downloading and uploading files (Mac) -sebserver.examconfig.props.label.allowDownUpload.tooltip=Usually to be used with permitted third party applications for which you want to provide files to be downloaded. -sebserver.examconfig.props.label.downloadDirectoryWin=Download directory (Win) -sebserver.examconfig.props.label.downloadDirectoryOSX=Download directory (Mac) -sebserver.examconfig.props.label.openDownloads=Open files after downloading (Mac) -sebserver.examconfig.props.label.chooseFileToUploadPolicy=Choose file to upload (Mac) -sebserver.examconfig.props.label.chooseFileToUploadPolicy.tooltip=SEB can let users choose the file to upload or automatically use the same file which was downloaded before.\nIf not found, a file requester or an error is presented depending on this setting. -sebserver.examconfig.props.label.chooseFileToUploadPolicy.0=manually with file requester -sebserver.examconfig.props.label.chooseFileToUploadPolicy.1=by attempting to upload the same file downloaded before -sebserver.examconfig.props.label.chooseFileToUploadPolicy.2=by only allowing to upload the same file downloaded before -sebserver.examconfig.props.label.downloadPDFFiles=Download and open PDF files instead of displaying them inline (Mac) -sebserver.examconfig.props.label.downloadPDFFiles.tooltip=PDF files will not be displayed by SEB but downloaded and openend (if "Open files after downloading" is active!)\nby the application set in Finder (usually Preview or Adobe Acrobat). -sebserver.examconfig.props.label.allowPDFPlugIn=Allow using Acrobat Reader PDF plugin (insecure! Mac only) -sebserver.examconfig.props.label.allowPDFPlugIn.tooltip=The Adobe Acrobat Reader browser plugin should only be used on secured managed Mac computers,\nat it allows limited access the file system and unlimited to cloud services -sebserver.examconfig.props.label.downloadAndOpenSebConfig=Download and open SEB Config Files -sebserver.examconfig.props.label.downloadAndOpenSebConfig.tooltip=Download and open .seb config files regardless if downloading and opening other file types is allowed. - -sebserver.examconfig.props.group.quitLink=Link to quit SEB after exam -sebserver.examconfig.props.label.quitURL=Place this quit link to the 'feedback' page displayed after an exam was successfully finished.\nClicking that link will quit SEB without having to enter the quit password. -sebserver.examconfig.props.label.quitURLConfirm=Ask user to confirm quitting - -sebserver.examconfig.props.group.backToStart=Back to Start Button -sebserver.examconfig.props.group.backToStart.tooltip=The back to start button reloads the exam's Start URL -sebserver.examconfig.props.label.restartExamUseStartURL=Use Start URL -sebserver.examconfig.props.label.restartExamUseStartURL.tooltip=The back to start button reloads the exam's Start URL -sebserver.examconfig.props.label.restartExamURL=Enter custom URL or select 'Use Start URL' to display a back to start button in the SEB taskbar. -sebserver.examconfig.props.label.restartExamText=Title/tool tip text for the back to start button (leave empty for localized standard text) -sebserver.examconfig.props.label.restartExamPasswordProtected=Protect back to start button with the quit/unlock password -sebserver.examconfig.props.label.restartExamPasswordProtected.tooltip=The quit/restart password (if set) must be entered when the back to start button was pressed. - -sebserver.examconfig.props.label.allowSwitchToApplications=Allow switching to third party application (Mac) -sebserver.examconfig.props.label.allowSwitchToApplications.tooltip=Decreases security of the kiosk mode by allowing process switcher (Cmd+Tab).\nThe blacked out background of SEB also doesn't cover some alerts and modal windows in this mode. -sebserver.examconfig.props.label.allowFlashFullscreen=Allow Flash to switch to fullscreen mode (Mac) -sebserver.examconfig.props.label.permittedProcesses.add.tooltip=Add permitted process -sebserver.examconfig.props.label.permittedProcesses.remove.tooltip=Remove selected permitted process -sebserver.examconfig.props.label.permittedProcesses.row.title=Permitted Processes -sebserver.examconfig.props.label.permittedProcesses=Permitted Processes -sebserver.examconfig.props.label.permittedProcesses.active=Active -sebserver.examconfig.props.label.permittedProcesses.active.tooltip=This permitted process item is active. -sebserver.examconfig.props.label.permittedProcesses.os=OS -sebserver.examconfig.props.label.permittedProcesses.os.tooltip=Indicates on which operating system the permitted process runs. -sebserver.examconfig.props.label.permittedProcesses.os.0=OS X -sebserver.examconfig.props.label.permittedProcesses.os.1=Win -sebserver.examconfig.props.label.permittedProcesses.title=Title -sebserver.examconfig.props.label.permittedProcesses.title.tooltip=Application title which is displayed in the application chooser. Background processes don't have a title, because they can't be selected by users. -sebserver.examconfig.props.label.permittedProcesses.description=Description -sebserver.examconfig.props.label.permittedProcesses.description.tooltip=Optional, should explain what kind of process this is, because this might not be obvious only from the executable's name. -sebserver.examconfig.props.label.permittedProcesses.executable=Executable -sebserver.examconfig.props.label.permittedProcesses.executable.tooltip=File name of the executable, which should not contain any parts of a file system path, only the filename of the exe file (like calc.exe). -sebserver.examconfig.props.label.permittedProcesses.originalName=Original Name -sebserver.examconfig.props.label.permittedProcesses.allowedExecutables=Window handling process -sebserver.examconfig.props.label.permittedProcesses.path=Path -sebserver.examconfig.props.label.permittedProcesses.arguments=Arguments -sebserver.examconfig.props.label.permittedProcesses.arguments.active=Active -sebserver.examconfig.props.label.permittedProcesses.arguments.argument=Argument -sebserver.examconfig.props.label.permittedProcesses.arguments.addAction=Add new argument -sebserver.examconfig.props.label.permittedProcesses.arguments.removeAction=Remove this argument -sebserver.examconfig.props.label.permittedProcesses.identifier=Identifier -sebserver.examconfig.props.label.permittedProcesses.identifier.tooltip=(Sub) string in the title of the main window of a tricky third party application (Java, Acrobat etc.).\nMac OS X: Bundle identifier of the process in reverse domain notation. -sebserver.examconfig.props.label.permittedProcesses.iconInTaskbar=Icon in taskbar -sebserver.examconfig.props.label.permittedProcesses.iconInTaskbar.tooltip=Show icon of permitted application in task bar (not possible when 'run in background' is enabled). -sebserver.examconfig.props.label.permittedProcesses.autostart=Autostart -sebserver.examconfig.props.label.permittedProcesses.autostart.tooltip=Start the process automatically together with SEB. -sebserver.examconfig.props.label.permittedProcesses.runInBackground=Allow running in background -sebserver.examconfig.props.label.permittedProcesses.runInBackground.tooltip=Allow the permitted process to already be running when SEB starts. Such a process can't have an icon in the task bar. -sebserver.examconfig.props.label.permittedProcesses.allowUserToChooseApp=Allow user to select location of application -sebserver.examconfig.props.label.permittedProcesses.strongKill=Force quit (risk of data loss) -sebserver.examconfig.props.label.permittedProcesses.strongKill.tooltip=Terminate process in a not-nice way, which may cause data loss if the application had unsaved data - -sebserver.examconfig.props.label.prohibitedProcesses.add.tooltip=Add prohibited process -sebserver.examconfig.props.label.prohibitedProcesses.remove.tooltip=Remove selected prohibited process -sebserver.examconfig.props.label.prohibitedProcesses.row.title=Prohibited Processes -sebserver.examconfig.props.label.prohibitedProcesses=Prohibited Processes -sebserver.examconfig.props.label.prohibitedProcesses.active=Active -sebserver.examconfig.props.label.prohibitedProcesses.active.tooltip=Indicates if this prohibited process item is active. -sebserver.examconfig.props.label.prohibitedProcesses.os=OS -sebserver.examconfig.props.label.prohibitedProcesses.os.0=OS X -sebserver.examconfig.props.label.prohibitedProcesses.os.1=Win -sebserver.examconfig.props.label.prohibitedProcesses.description=Description -sebserver.examconfig.props.label.prohibitedProcesses.description.tooltip=Optional, to explain what kind of process this is, because this might not be obvious only from the executable's name. -sebserver.examconfig.props.label.prohibitedProcesses.executable=Executable -sebserver.examconfig.props.label.prohibitedProcesses.executable.tooltip=File name of the executable, which should not contain any parts of a file system path, only the filename of the exe file (like calc.exe). -sebserver.examconfig.props.label.prohibitedProcesses.originalName=Original Name -sebserver.examconfig.props.label.prohibitedProcesses.originalName.tooltip=Original file name (optional) -sebserver.examconfig.props.label.prohibitedProcesses.identifier=Identifier -sebserver.examconfig.props.label.prohibitedProcesses.identifier.tooltip=Title of the main window of a Java third party application. Mac OS X: Bundle identifier of the process in reverse domain notation. -sebserver.examconfig.props.label.prohibitedProcesses.strongKill=Force quit (risk of data loss) -sebserver.examconfig.props.label.prohibitedProcesses.strongKill.tooltip=Terminate process in a not-nice way, which may cause data loss if the application had unsaved data - -sebserver.examconfig.props.group.urlFilter=Filter -sebserver.examconfig.props.label.URLFilterEnable=Activate URL Filtering -sebserver.examconfig.props.label.URLFilterEnableContentFilter=Filter also embedded content -sebserver.examconfig.props.label.URLFilterRules=Filter -sebserver.examconfig.props.label.URLFilterRules.row.title=URL Filter -sebserver.examconfig.props.label.URLFilterRules.active=Active -sebserver.examconfig.props.label.URLFilterRules.regex=Regex -sebserver.examconfig.props.label.URLFilterRules.expression=Expression -sebserver.examconfig.props.label.URLFilterRules.action=Action -sebserver.examconfig.props.label.URLFilterRules.action.0=Block -sebserver.examconfig.props.label.URLFilterRules.action.1=Allow -sebserver.examconfig.props.label.URLFilterRules.add.tooltip=Add new URL Filter -sebserver.examconfig.props.label.URLFilterRules.remove.tooltip=Remove selected URL Filter - -sebserver.examconfig.props.group.proxies=Proxies -sebserver.examconfig.props.label.proxySettingsPolicy=proxy settings policy -sebserver.examconfig.props.label.proxySettingsPolicy.0=Use system proxy setting -sebserver.examconfig.props.label.proxySettingsPolicy.0.tooltip=System proxy settings of the exam client computer are used -sebserver.examconfig.props.label.proxySettingsPolicy.1=Use SEB proxy settings -sebserver.examconfig.props.label.proxySettingsPolicy.1.tooltip=Proxy settings provided in these SEB settings are used -sebserver.examconfig.props.label.proxies=Double-click a protocol to configure: -sebserver.examconfig.props.label.ExcludeSimpleHostnames=Exclude simple hostnames -sebserver.examconfig.props.label.ExceptionsList=Bypass proxy settings for these hosts and domains -sebserver.examconfig.props.label.ExceptionsList.tooltip=Separate hosts / domains with comma -sebserver.examconfig.props.label.FTPPassive=Use Passive FTP Mode (PASV) - -sebserver.examconfig.props.label.proxies.active=Active -sebserver.examconfig.props.label.proxies.TABLE_ENTRY=Protocol -sebserver.examconfig.props.label.autoDiscovery=Auto Proxy Discovery -sebserver.examconfig.props.label.AutoDiscoveryEnabled=Auto discovery enabled -sebserver.examconfig.props.label.autoConfiguration=Automatic Proxy Configuration -sebserver.examconfig.props.label.AutoConfigurationEnabled=Auto configuration enabeld -sebserver.examconfig.props.label.AutoConfigurationURL=Proxy configuration file URL -sebserver.examconfig.props.label.AutoConfigurationJavaScript=Proxy configuration JavaScript - -sebserver.examconfig.props.label.http=Web Proxy (HTTP) -sebserver.examconfig.props.label.HTTPEnable=Web proxy eneabled -sebserver.examconfig.props.label.HTTPProxy=Web proxy server -sebserver.examconfig.props.label.HTTPPort=Web proxy port -sebserver.examconfig.props.label.HTTPRequiresPassword=Proxy server requires password -sebserver.examconfig.props.label.HTTPUsername=Username -sebserver.examconfig.props.label.HTTPPassword=Password - -sebserver.examconfig.props.label.https=Secure Web Proxy (HTTPS) -sebserver.examconfig.props.label.HTTPSEnable=Secure web proxy eneabled -sebserver.examconfig.props.label.HTTPSProxy=Secure web proxy server -sebserver.examconfig.props.label.HTTPSPort=Secure web proxy port -sebserver.examconfig.props.label.HTTPSRequiresPassword=Proxy server requires password -sebserver.examconfig.props.label.HTTPSUsername=Username -sebserver.examconfig.props.label.HTTPSPassword=Password - -sebserver.examconfig.props.label.ftp=FTP Proxy -sebserver.examconfig.props.label.FTPEnable=FTP proxy eneabled -sebserver.examconfig.props.label.FTPProxy=FTP proxy server -sebserver.examconfig.props.label.FTPPort=FTP proxy port -sebserver.examconfig.props.label.FTPRequiresPassword=Proxy server requires password -sebserver.examconfig.props.label.FTPUsername=Username -sebserver.examconfig.props.label.FTPPassword=Password - -sebserver.examconfig.props.label.socks=SOCKS Proxy -sebserver.examconfig.props.label.SOCKSEnable=SOCKS proxy eneabled -sebserver.examconfig.props.label.SOCKSProxy=SOCKS proxy server -sebserver.examconfig.props.label.SOCKSPort=SOCKS proxy port -sebserver.examconfig.props.label.SOCKSRequiresPassword=Proxy server requires password -sebserver.examconfig.props.label.SOCKSUsername=Username -sebserver.examconfig.props.label.SOCKSPassword=Password - -sebserver.examconfig.props.label.rtsp=Streaming Proxy (RTSP) -sebserver.examconfig.props.label.RTSPEnable=RTSP proxy eneabled -sebserver.examconfig.props.label.RTSPProxy=RTSP proxy server -sebserver.examconfig.props.label.RTSPPort=RTSP proxy port -sebserver.examconfig.props.label.RTSPRequiresPassword=Proxy server requires password -sebserver.examconfig.props.label.RTSPUsername=Username -sebserver.examconfig.props.label.RTSPPassword=Password - - -sebserver.examconfig.props.group.servicePolicy=SEB Service policy -sebserver.examconfig.props.label.sebServicePolicy.0=allow to run SEB without service -sebserver.examconfig.props.label.sebServicePolicy.1=display warning when service is not running -sebserver.examconfig.props.label.sebServicePolicy.2=allow to use SEB only with service -sebserver.examconfig.props.label.sebServicePolicy.tooltip=Policy that applies when an exam client doesn't have the SEB client running - -sebserver.examconfig.props.group.kioskMode=Kiosk Mode -sebserver.examconfig.props.label.kioskMode.tooltip=The kiosk mode setting reflects how the computer is locked down into SEB. -sebserver.examconfig.props.label.kioskMode.0=Create new desktop -sebserver.examconfig.props.label.kioskMode.0.tooltip=This kiosk mode may prevent specific third party software to run correctly together with SEB, like some screen recording software or the Windows onscreen keyboard. -sebserver.examconfig.props.label.kioskMode.1=Disable explorer Shell -sebserver.examconfig.props.label.kioskMode.1.tooltip=This kiosk mode is compatible with some screen recording/proctoring software and the Windows onscreen keyboard. -sebserver.examconfig.props.label.kioskMode.2=None (for debugging only) -sebserver.examconfig.props.label.kioskMode.2.tooltip=SEB runs without kiosk mode, switching to other applications is possible. Use this for debugging purposes only. - -sebserver.examconfig.props.label.allowVirtualMachine=Allow to run inside virtual machine -sebserver.examconfig.props.label.allowVirtualMachine.tooltip=Indicates if SEB is allowed to run in a virtual machine or not (in order to prevent potential manipulation). -sebserver.examconfig.props.label.allowScreenSharing=Allow remote session/screen sharing -sebserver.examconfig.props.label.allowScreenSharing.tootlip=Allows Windows remote sessions and macOS screen sharing to be used -sebserver.examconfig.props.label.enablePrivateClipboard=Use private clipboard (Mac) -sebserver.examconfig.props.label.enablePrivateClipboard.tooltip=Private clipboard should always be used beside when working with third party application in managed/virtual machine - -sebserver.examconfig.props.group.logging=Logging -sebserver.examconfig.props.label.enableLogging=Enable logging -sebserver.examconfig.props.label.enableLogging.tooltip=The log can help debugging SEB (send it to the developers) and to find out about possible manipulations -sebserver.examconfig.props.label.logDirectoryWin=Log file directory on Windows -sebserver.examconfig.props.label.logDirectoryOSX=Log file directory on Mac - -sebserver.examconfig.props.group.macSettings=macOS specific settings -sebserver.examconfig.props.label.minMacOSVersion=Enforce minimal macOS version: -sebserver.examconfig.props.label.minMacOSVersion.0=OS X 10.7 Lion -sebserver.examconfig.props.label.minMacOSVersion.1=OS X 10.8 Mountain Lion -sebserver.examconfig.props.label.minMacOSVersion.2=OS X 10.9 Mavericks -sebserver.examconfig.props.label.minMacOSVersion.3=OS X 10.10 Yosemite -sebserver.examconfig.props.label.minMacOSVersion.4=OS X 10.11 El Capitan -sebserver.examconfig.props.label.minMacOSVersion.5=OS X 10.12 Sierra -sebserver.examconfig.props.label.minMacOSVersion.6=OS X 10.13 Hight Sierra -sebserver.examconfig.props.label.minMacOSVersion.7=OS X 10.14 Mojave -sebserver.examconfig.props.label.enableAppSwitcherCheck=Disable app switcher when starting -sebserver.examconfig.props.label.enableAppSwitcherCheck.tooltip=SEB checks for the command key being held down while SEB is starting up. This prevents using the application switcher to mess with SEB\'s kiosk mode -sebserver.examconfig.props.label.forceAppFolderInstall=Force installation in Applications folder -sebserver.examconfig.props.label.forceAppFolderInstall.tooltip=SEB enforces to be installed in an Applications folder (/Applications or ~/Applications) -sebserver.examconfig.props.label.allowUserAppFolderInstall=Allow also user's ~/Applications folder -sebserver.examconfig.props.label.allowUserAppFolderInstall.tooltip=SEB can also be installed in the Applications folder of the current user (~/Applications) -sebserver.examconfig.props.label.allowSiri=Allow to use Siri -sebserver.examconfig.props.label.allowSiri.tooltip=If enabled, Siri can be used by tapping th emenu bar icon, Touch Bar icon or shortcut set in System Preferences/Siri (default: hold command space). The Siri window won't be displayed though -sebserver.examconfig.props.label.detectStoppedProcess=Detect when SEB process was stopped -sebserver.examconfig.props.label.detectStoppedProcess.tooltip=SEB displays a lock screen (requiring to enter the quit/unlock password) if it detects its process was stopped, which can indicate manipulation -sebserver.examconfig.props.label.allowDisplayMirroring=Allow display mirroring (affects also AirPlay Display) -sebserver.examconfig.props.label.allowDisplayMirroring.tooltip=If not selected, SEB prevents to mirror the main display to another -sebserver.examconfig.props.label.allowedDisplaysMaxNumber=Maximum allowed number of connected displays -sebserver.examconfig.props.label.allowedDisplaysMaxNumber.tooltip=If more displays are connected, this are blanked with an orange full screen window -sebserver.examconfig.props.label.allowedDisplayBuiltin=Use built-in display -sebserver.examconfig.props.label.allowedDisplayBuiltin.tooltip=Use the built-in display (if available) when only one display is allowed or when switching off display mirroring -sebserver.examconfig.props.label.logLevel=Log Level -sebserver.examconfig.props.label.logLevel.tooltip=The log will contain the selected log level plus all levels with a lower value -sebserver.examconfig.props.label.logLevel.0=Error -sebserver.examconfig.props.label.logLevel.0.tooltip=Error includes fatal application and browser level errors -sebserver.examconfig.props.label.logLevel.1=Warning -sebserver.examconfig.props.label.logLevel.1.tooltip=Warning are non-fatal but non-expected or security affecting events -sebserver.examconfig.props.label.logLevel.2=Info -sebserver.examconfig.props.label.logLevel.2.tooltip=Info includes most user actions including all browser navigation actions -sebserver.examconfig.props.label.logLevel.3=Debug -sebserver.examconfig.props.label.logLevel.3.tooltip=Debug is reserved for information which is only necessary for in-deep program code debugging -sebserver.examconfig.props.label.logLevel.4=Verbose -sebserver.examconfig.props.label.logLevel.4.tooltip=Verbose level contains events of all levels - -sebserver.examconfig.props.group.registry=While running SEB -sebserver.examconfig.props.group.registry.tooltip=Options in the Windows Security Screen invoked by Ctrl-Alt-Del -sebserver.examconfig.props.label.insideSebEnableSwitchUser=Enable Switch User -sebserver.examconfig.props.label.insideSebEnableSwitchUser.tooltip=Activates the button "Switch User" -sebserver.examconfig.props.label.insideSebEnableLockThisComputer=Enable Lock this computer -sebserver.examconfig.props.label.insideSebEnableLockThisComputer.tooltip=Activates the button "Lock this computer" -sebserver.examconfig.props.label.insideSebEnableChangeAPassword=Enable Change a password -sebserver.examconfig.props.label.insideSebEnableChangeAPassword.tooltip=Activates the button "Change a password..." -sebserver.examconfig.props.label.insideSebEnableStartTaskManager=Enable Start Task Manager -sebserver.examconfig.props.label.insideSebEnableStartTaskManager.tooltip=Activates the button "Start Task Manager" -sebserver.examconfig.props.label.insideSebEnableLogOff=Enable Log off -sebserver.examconfig.props.label.insideSebEnableLogOff.tooltip=Activates the button "Log off" -sebserver.examconfig.props.label.insideSebEnableShutDown=Enable Shut down -sebserver.examconfig.props.label.insideSebEnableShutDown.tooltip=Activates the button "Shutdown" -sebserver.examconfig.props.label.insideSebEnableEaseOfAccess=Enable Ease of Access -sebserver.examconfig.props.label.insideSebEnableEaseOfAccess.tooltip=Shows options when the button "Ease of Access" in the lower left corner is clicked,\nwhich offers help e.g. to visually or aurally handicapped persons, like the Magnifier Glass. -sebserver.examconfig.props.label.insideSebEnableVmWareClientShade=Enable VMware Client Shade -sebserver.examconfig.props.label.insideSebEnableVmWareClientShade.tooltip=Activates the "Shade" bar at the upper edge of a virtual desktop, if existent. If you're not using VMware, this setting doesn't have any effect. -sebserver.examconfig.props.label.insideSebEnableNetworkConnectionSelector=Enable network connection selector -sebserver.examconfig.props.label.insideSebEnableNetworkConnectionSelector.tooltip=Activates the button which allows to connect to WiFi networks, introduces in Windows 10. - -sebserver.examconfig.props.group.specialKeys=Special Keys -sebserver.examconfig.props.group.specialKeys.tooltip=Settings to enable or block (hook) keys, key combinations and mouse buttons. -sebserver.examconfig.props.label.enableEsc=Enable Esc -sebserver.examconfig.props.label.enablePrintScreen=Enable Print Screen -sebserver.examconfig.props.label.enablePrintScreen.tooltip=Controls Print Screen and OS X screen capture, corresponds with Enable screen capture in Security settings. -sebserver.examconfig.props.label.enableCtrlEsc=Enable Ctrl-Esc -sebserver.examconfig.props.label.enableAltEsc=Enable Alt-Esc -sebserver.examconfig.props.label.enableAltTab=Enable Alt-Tap -sebserver.examconfig.props.label.enableAltF4=Enable Alt-F4 -sebserver.examconfig.props.label.enableStartMenu=Enable Start Menu -sebserver.examconfig.props.label.enableRightMouse=Enable Right Mouse -sebserver.examconfig.props.label.enableAltMouseWheel=Enable Alt-Mousewheel -sebserver.examconfig.props.label.enableAltMouseWheel.tooltip=Corresponds to 'Allow browsing back/forward' in Browser pane. Disabling browsing to previously visited pages may increase security, because browsing back might allow to leave an exam - -sebserver.examconfig.props.group.functionKeys=Function Keys -sebserver.examconfig.props.group.functionKeys.tooltip=Enable or block function keys. This doesn't have any effect on the SEB exit sequence. Depending on specific keyboards some function keys cannot be blocked. -sebserver.examconfig.props.label.enableF1=Enable F1 -sebserver.examconfig.props.label.enableF2=Enable F2 -sebserver.examconfig.props.label.enableF3=Enable F3 -sebserver.examconfig.props.label.enableF4=Enable F4 -sebserver.examconfig.props.label.enableF5=Enable F5 -sebserver.examconfig.props.label.enableF6=Enable F6 -sebserver.examconfig.props.label.enableF7=Enable F7 -sebserver.examconfig.props.label.enableF8=Enable F8 -sebserver.examconfig.props.label.enableF9=Enable F9 -sebserver.examconfig.props.label.enableF10=Enable F10 -sebserver.examconfig.props.label.enableF11=Enable F11 -sebserver.examconfig.props.label.enableF12=Enable F12 - -sebserver.examconfig.props.validation.password.confirm=Please enter correct confirm password -sebserver.examconfig.props.validation.unexpected=Unexpected error happened. Value was not set correctly -sebserver.examconfig.props.validation.IntegerTypeValidator=Invalid number -sebserver.examconfig.props.validation.DecimalTypeValidator=Invalid decimal number -sebserver.examconfig.props.validation.ExitKeySequenceValidator=Key is already in sequence -sebserver.examconfig.props.validation.WindowsSizeValidator=Invalid number - -################################ -# SEB Exam Configuration Template -################################ - -sebserver.configtemplate.list.title=Configuration Templates -sebserver.configtemplate.list.empty=There is currently no SEB-Exam configuration template available. Please create a new one -sebserver.configtemplate.list.actions=Selected Template - -sebserver.configtemplate.info.pleaseSelect=Please select an exam configuration template first - -sebserver.configtemplate.action.list.new=Add Configuration Template -sebserver.configtemplate.action.list.view=View Configuration Template -sebserver.configtemplate.action.view=View Configuration Template -sebserver.configtemplate.action.list.modify=Edit Configuration Template -sebserver.configtemplate.action.modify=Edit Configuration Template - -sebserver.configtemplate.form.title.new=Add Configuration Template -sebserver.configtemplate.form.title=Configuration Template -sebserver.configtemplate.form.name=Name -sebserver.configtemplate.form.description=Description -sebserver.configtemplate.action.save=Save Configuration Template - -sebserver.configtemplate.attr.type.TEXT_FIELD=Text Field -sebserver.configtemplate.attr.type.PASSWORD_FIELD=Password Field -sebserver.configtemplate.attr.type.TEXT_AREA=Text Area -sebserver.configtemplate.attr.type.CHECKBOX=Checkbox -sebserver.configtemplate.attr.type.SLIDER=Slider -sebserver.configtemplate.attr.type.INTEGER=Number (Integer) -sebserver.configtemplate.attr.type.DECIMAL=Number (Decimal) -sebserver.configtemplate.attr.type.SINGLE_SELECTION=Single Selection -sebserver.configtemplate.attr.type.COMBO_SELECTION=Combo Selection -sebserver.configtemplate.attr.type.RADIO_SELECTION=Radio Selection -sebserver.configtemplate.attr.type.MULTI_SELECTION=Multi Selection -sebserver.configtemplate.attr.type.MULTI_CHECKBOX_SELECTION=Multi Selection (Checkbox) -sebserver.configtemplate.attr.type.FILE_UPLOAD=File Upload -sebserver.configtemplate.attr.type.TABLE=Table -sebserver.configtemplate.attr.type.INLINE_TABLE=Table -sebserver.configtemplate.attr.type.COMPOSITE_TABLE=Table - -sebserver.configtemplate.attrs.list.title=Configuration Attributes -sebserver.configtemplate.attrs.list.name=Name -sebserver.configtemplate.attrs.list.view=View -sebserver.configtemplate.attrs.list.group=Group -sebserver.configtemplate.attrs.list.type=Type - -sebserver.configtemplate.attr.list.actions=Selected Attribute -sebserver.configtemplate.attr.list.actions.modify=Edit Attribute -sebserver.configtemplate.attr.list.actions.setdefault=Set Default Values -sebserver.configtemplate.attr.list.actions.removeview=Remove From View -sebserver.configtemplate.attr.list.actions.attach-default-view=Attach To View -sebserver.configtemplate.attr.info.pleaseSelect=Please select an attribute first - -sebserver.configtemplate.attr.form.title=Template Attribute -sebserver.configtemplate.attr.form.name=Name -sebserver.configtemplate.attr.form.type=Type -sebserver.configtemplate.attr.form.view=View -sebserver.configtemplate.attr.form.group=Group -sebserver.configtemplate.attr.form.value=Template Attribute Value - -sebserver.configtemplate.attr.action.setdefault=Set Default Values -sebserver.configtemplate.attr.action.template=View Template - - -################################ -# Monitoring -################################ - -sebserver.monitoring.action.list=Running Exams -sebserver.monitoring.exam.list.title=Running Exams -sebserver.monitoring.exam.list.actions=Selected Exam -sebserver.monitoring.exam.action.detail.view=Back To Overview -sebserver.monitoring.exam.action.list.view=Monitoring - - -sebserver.monitoring.exam.info.pleaseSelect=Please select an exam from the list -sebserver.monitoring.exam.list.empty=There are currently no running exams - -sebserver.monitoring.exam.list.column.name=Name -sebserver.monitoring.exam.list.column.type=Type -sebserver.monitoring.exam.list.column.startTime=Start Time -sebserver.monitoring.exam.list.column.endTime=End Time - -sebserver.monitoring.exam=Monitoring Exam: {0} - -sebserver.monitoring.connection.list.column.id=Client Identifier -sebserver.monitoring.connection.list.column.address=IP Address -sebserver.monitoring.connection.list.column.status=Status -sebserver.monitoring.connection.list.column.examname=Exam -sebserver.monitoring.connection.list.column.vdiAddress=IP Address (VDI) - -sebserver.monitoring.exam.connection.emptySelection=Please select a connection from the list -sebserver.monitoring.exam.connection.title=SEB Client Connection -sebserver.monitoring.exam.connection.list.actions=Selected Connection -sebserver.monitoring.exam.connection.action.view=View Details - -sebserver.monitoring.exam.connection.eventlist.title=Events -sebserver.monitoring.exam.connection.eventlist.empty=No event found -sebserver.monitoring.exam.connection.eventlist.type=Event Type -sebserver.monitoring.exam.connection.eventlist.clienttime=Client Time -sebserver.monitoring.exam.connection.eventlist.servertime=Server Time -sebserver.monitoring.exam.connection.eventlist.value=Value -sebserver.monitoring.exam.connection.eventlist.text=Text - -sebserver.monitoring.exam.connection.event.type.UNKNOWN=Unknown -sebserver.monitoring.exam.connection.event.type.DEBUG_LOG=Debug -sebserver.monitoring.exam.connection.event.type.INFO_LOG=Info -sebserver.monitoring.exam.connection.event.type.WARN_LOG=Warn -sebserver.monitoring.exam.connection.event.type.ERROR_LOG=Error -sebserver.monitoring.exam.connection.event.type.LAST_PING=Last Ping - -sebserver.monitoring.exam.connection.status.UNDEFINED=Undefined -sebserver.monitoring.exam.connection.status.CONNECTION_REQUESTED=Connection Requested -sebserver.monitoring.exam.connection.status.AUTHENTICATED=Authenticated -sebserver.monitoring.exam.connection.status.ESTABLISHED=Established -sebserver.monitoring.exam.connection.status.CLOSED=Closed -sebserver.monitoring.exam.connection.status.ABORTED=Aborted -sebserver.monitoring.exam.connection.status.RELEASED=Released - -################################ -# Logs -################################ - -sebserver.logs.activity.main=Logs -sebserver.logs.activity.userlogs=User Logs -sebserver.logs.activity.userlogs.details=Show Details -sebserver.logs.activity.seblogs=SEB Client Logs -sebserver.logs.activity.seblogs.details=Show Details - -sebserver.userlogs.list.title=User Activity Logs -sebserver.userlogs.list.column.institution=Institution -sebserver.userlogs.list.column.user=User -sebserver.userlogs.list.column.dateTime=Date -sebserver.userlogs.list.column.activityType=User Activity -sebserver.userlogs.list.column.entityType=Entity Type -sebserver.userlogs.list.column.entityId=Entity-ID -sebserver.userlogs.list.column.message=Message - -sebserver.userlogs.details.title=User Activity Log Details -sebserver.userlogs.info.pleaseSelect=Please select a log from the list -sebserver.userlogs.list.actions=Selected Log -sebserver.userlogs.list.empty=No User activity logs has been found. Please adapt or clear the filter - - -sebserver.seblogs.list.title=SEB Client Logs -sebserver.seblogs.list.actions=Selected Log -sebserver.seblogs.list.empty=No SEB client logs has been found. Please adapt or clear the filter - -sebserver.seblogs.info.pleaseSelect=Please select a log from the list -sebserver.seblogs.list.column.institution=Institution -sebserver.seblogs.list.column.exam=Exam -sebserver.seblogs.list.column.client-session=User Session-ID -sebserver.seblogs.list.column.type=Event Type -sebserver.seblogs.list.column.time=Event Time -sebserver.seblogs.list.column.value=Value - -sebserver.seblogs.details.title=SEB Client Log Details -sebserver.seblogs.details.event.title=Event -sebserver.seblogs.details.connection.title=SEB Connection Details -sebserver.seblogs.details.exam.title=Exam Details - -sebserver.seblogs.form.column.client-session=Session-ID -sebserver.seblogs.form.column.type=Event Type -sebserver.seblogs.form.column.server-time=Server Time -sebserver.seblogs.form.column.client-time=SEB Client Time -sebserver.seblogs.form.column.value=Value -sebserver.seblogs.form.column.message=Message - -sebserver.seblogs.form.column.connection.session-id=User Session-ID -sebserver.seblogs.form.column.connection.address=SEB Client Address -sebserver.seblogs.form.column.connection.token=SEB Connection Token -sebserver.seblogs.form.column.connection.status=Connection Status - -sebserver.seblogs.form.column.exam.name=Name -sebserver.seblogs.form.column.exam.description=Description -sebserver.seblogs.form.column.exam.type=Type -sebserver.seblogs.form.column.exam.startTime=Start Time -sebserver.seblogs.form.column.exam.endTime=End Time \ No newline at end of file