GUI improvements 2 and wording first part
This commit is contained in:
parent
8698800c34
commit
59030d4bbd
24 changed files with 478 additions and 266 deletions
|
@ -167,13 +167,10 @@ public class ConfigTemplateAttributeForm implements TemplateComposer {
|
|||
valSpace.setLayout(new GridLayout());
|
||||
valSpace.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
|
||||
|
||||
widgetFactory.label(content, StringUtils.EMPTY);
|
||||
widgetFactory.labelLocalized(
|
||||
widgetFactory.addFormSubContextHeader(
|
||||
valSpace,
|
||||
CustomVariant.TEXT_H3,
|
||||
FORM_VALUE_TEXT_KEY,
|
||||
FORM_VALUE_TOOLTIP_TEXT_KEY);
|
||||
widgetFactory.labelSeparator(valSpace);
|
||||
FORM_VALUE_TOOLTIP_TEXT_KEY );
|
||||
|
||||
final Composite grid = new Composite(valSpace, SWT.NONE);
|
||||
grid.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
|
||||
|
|
|
@ -177,13 +177,10 @@ public class ConfigTemplateForm implements TemplateComposer {
|
|||
|
||||
if (isReadonly) {
|
||||
|
||||
widgetFactory.label(content, StringUtils.EMPTY);
|
||||
widgetFactory.labelLocalized(
|
||||
widgetFactory.addFormSubContextHeader(
|
||||
content,
|
||||
WidgetFactory.CustomVariant.TEXT_H3,
|
||||
ATTRIBUTES_LIST_TITLE_TEXT_KEY,
|
||||
ATTRIBUTES_LIST_TITLE_TOOLTIP_TEXT_KEY);
|
||||
widgetFactory.labelSeparator(content);
|
||||
|
||||
final TableFilterAttribute viewFilter = new TableFilterAttribute(
|
||||
CriteriaType.SINGLE_SELECTION,
|
||||
|
|
|
@ -688,7 +688,7 @@ public class ExamForm implements TemplateComposer {
|
|||
final EntityKey examConfigMappingKey = action.getSingleSelection();
|
||||
if (examConfigMappingKey != null) {
|
||||
action.withEntityKey(examConfigMappingKey);
|
||||
return SebExamConfigPropForm
|
||||
return SebExamConfigForm
|
||||
.getConfigKeyFunction(this.pageService)
|
||||
.apply(action);
|
||||
}
|
||||
|
|
|
@ -84,9 +84,11 @@ public class InstitutionList implements TemplateComposer {
|
|||
|
||||
@Override
|
||||
public void compose(final PageContext pageContext) {
|
||||
final Composite content = this.pageService.getWidgetFactory().defaultPageLayout(
|
||||
pageContext.getParent(),
|
||||
TITLE_TEXT_KEY);
|
||||
final Composite content = this.pageService
|
||||
.getWidgetFactory()
|
||||
.defaultPageLayout(
|
||||
pageContext.getParent(),
|
||||
TITLE_TEXT_KEY);
|
||||
|
||||
final PageActionBuilder pageActionBuilder =
|
||||
this.pageService.pageActionBuilder(pageContext.clearEntityKeys());
|
||||
|
|
|
@ -8,10 +8,16 @@
|
|||
|
||||
package ch.ethz.seb.sebserver.gui.content;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.function.BooleanSupplier;
|
||||
import java.util.function.Function;
|
||||
|
||||
import ch.ethz.seb.sebserver.gbl.model.sebconfig.SebClientConfig;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
@ -79,15 +85,26 @@ public class LmsSetupForm implements TemplateComposer {
|
|||
new LocTextKey("sebserver.lmssetup.form.institution");
|
||||
private static final LocTextKey FORM_PROXY_KEY =
|
||||
new LocTextKey("sebserver.lmssetup.form.proxy");
|
||||
private static final LocTextKey FORM_PROXY_CHECK_KEY =
|
||||
new LocTextKey("sebserver.lmssetup.form.proxy.check");
|
||||
private static final LocTextKey FORM_PROXY_HOST_KEY =
|
||||
new LocTextKey("sebserver.lmssetup.form.proxy.host");
|
||||
private static final LocTextKey FORM_PROXY_PORT_KEY =
|
||||
new LocTextKey("sebserver.lmssetup.form.proxy.port");
|
||||
private static final LocTextKey FORM_PROXY_AUTH_CREDENTIALS_KEY =
|
||||
new LocTextKey("sebserver.lmssetup.form.proxy.auth-credentials");
|
||||
private static final LocTextKey FORM_PROXY_NAME_KEY =
|
||||
new LocTextKey("sebserver.lmssetup.form.proxy.name");
|
||||
private static final LocTextKey FORM_PROXY_PWD_KEY =
|
||||
new LocTextKey("sebserver.lmssetup.form.proxy.password");
|
||||
public static final LocTextKey LMS_SETUP_TEST_OK =
|
||||
new LocTextKey("sebserver.lmssetup.action.test.ok");
|
||||
|
||||
private static final Set<String> PROXY_ATTRIBUTES = new HashSet<>(Arrays.asList(
|
||||
Domain.LMS_SETUP.ATTR_LMS_PROXY_HOST,
|
||||
Domain.LMS_SETUP.ATTR_LMS_PROXY_PORT,
|
||||
Domain.LMS_SETUP.ATTR_LMS_PROXY_AUTH_USERNAME,
|
||||
Domain.LMS_SETUP.ATTR_LMS_PROXY_AUTH_SECRET
|
||||
));
|
||||
|
||||
private final PageService pageService;
|
||||
private final ResourceService resourceService;
|
||||
|
||||
|
@ -145,6 +162,9 @@ public class LmsSetupForm implements TemplateComposer {
|
|||
.call()
|
||||
.map(inst -> inst.active)
|
||||
.getOr(false);
|
||||
final boolean withProxy = StringUtils.isNotBlank(lmsSetup.proxyHost) ||
|
||||
StringUtils.isNotBlank(lmsSetup.proxyAuthUsername) ||
|
||||
lmsSetup.proxyPort != null;
|
||||
|
||||
// The LMS Setup form
|
||||
final LmsType lmsType = lmsSetup.getLmsType();
|
||||
|
@ -207,17 +227,18 @@ public class LmsSetupForm implements TemplateComposer {
|
|||
.asPasswordField()
|
||||
.mandatory(!readonly))
|
||||
|
||||
.addFieldIf(
|
||||
() -> readonly,
|
||||
() -> FormBuilder.text(
|
||||
Domain.LMS_SETUP.ATTR_LMS_PROXY_HOST,
|
||||
FORM_PROXY_KEY,
|
||||
(StringUtils.isNotBlank(lmsSetup.getProxyHost()))
|
||||
? lmsSetup.getProxyHost() + Constants.URL_PORT_SEPARATOR + lmsSetup.proxyPort
|
||||
: null))
|
||||
|
||||
.addFieldIf(
|
||||
isEdit,
|
||||
() -> FormBuilder.checkbox(
|
||||
"FORM_PROXY_CHECK",
|
||||
FORM_PROXY_CHECK_KEY,
|
||||
withProxy
|
||||
? Constants.TRUE_STRING
|
||||
: Constants.FALSE_STRING))
|
||||
|
||||
.addFieldIf(
|
||||
() -> !readonly || withProxy,
|
||||
() -> FormBuilder.text(
|
||||
Domain.LMS_SETUP.ATTR_LMS_PROXY_HOST,
|
||||
FORM_PROXY_HOST_KEY,
|
||||
|
@ -225,7 +246,7 @@ public class LmsSetupForm implements TemplateComposer {
|
|||
.withInputSpan(3)
|
||||
.withEmptyCellSpan(0))
|
||||
.addFieldIf(
|
||||
isEdit,
|
||||
() -> !readonly || withProxy,
|
||||
() -> FormBuilder.text(
|
||||
Domain.LMS_SETUP.ATTR_LMS_PROXY_PORT,
|
||||
FORM_PROXY_PORT_KEY,
|
||||
|
@ -240,26 +261,47 @@ public class LmsSetupForm implements TemplateComposer {
|
|||
.withEmptyCellSeparation(false)
|
||||
.withEmptyCellSpan(0))
|
||||
.addFieldIf(
|
||||
isEdit,
|
||||
() -> !readonly || withProxy,
|
||||
() -> FormBuilder.text(
|
||||
Domain.LMS_SETUP.ATTR_LMS_PROXY_AUTH_USERNAME,
|
||||
FORM_PROXY_AUTH_CREDENTIALS_KEY,
|
||||
FORM_PROXY_NAME_KEY,
|
||||
lmsSetup.getProxyAuthUsername())
|
||||
.withInputSpan(3)
|
||||
.withEmptyCellSpan(0))
|
||||
.addFieldIf(
|
||||
isEdit,
|
||||
() -> FormBuilder.text(Domain.LMS_SETUP.ATTR_LMS_PROXY_AUTH_SECRET)
|
||||
() -> !readonly,
|
||||
() -> FormBuilder.text(
|
||||
Domain.LMS_SETUP.ATTR_LMS_PROXY_AUTH_SECRET,
|
||||
FORM_PROXY_PWD_KEY)
|
||||
.asPasswordField()
|
||||
.withInputSpan(2)
|
||||
.withLabelSpan(0)
|
||||
.withEmptyCellSeparation(false)
|
||||
.withEmptyCellSpan(0))
|
||||
.withInputSpan(3)
|
||||
.withLabelSpan(2)
|
||||
.withEmptyCellSeparation(true)
|
||||
.withEmptyCellSpan(3))
|
||||
|
||||
.buildFor((entityKey == null)
|
||||
? restService.getRestCall(NewLmsSetup.class)
|
||||
: restService.getRestCall(SaveLmsSetup.class));
|
||||
|
||||
if (!readonly) {
|
||||
formHandle.process(
|
||||
PROXY_ATTRIBUTES::contains,
|
||||
ffa -> ffa.setVisible(withProxy)
|
||||
);
|
||||
formHandle.getForm().getFieldInput("FORM_PROXY_CHECK")
|
||||
.addListener(SWT.Selection, event -> formHandle.process(
|
||||
PROXY_ATTRIBUTES::contains,
|
||||
ffa -> {
|
||||
boolean selected = ((Button) event.widget).getSelection();
|
||||
ffa.setVisible(selected);
|
||||
if (!selected) {
|
||||
ffa.resetError();
|
||||
ffa.setStringValue("");
|
||||
}
|
||||
}
|
||||
));
|
||||
}
|
||||
|
||||
// propagate content actions to action-pane
|
||||
this.pageService.pageActionBuilder(formContext.clearEntityKeys())
|
||||
|
||||
|
|
|
@ -174,16 +174,16 @@ final class SebExamConfigCreationPopup {
|
|||
entityKey.getModelId())
|
||||
.addField(FormBuilder.text(
|
||||
Domain.CONFIGURATION_NODE.ATTR_NAME,
|
||||
SebExamConfigPropForm.FORM_NAME_TEXT_KEY))
|
||||
SebExamConfigForm.FORM_NAME_TEXT_KEY))
|
||||
.addField(FormBuilder.text(
|
||||
Domain.CONFIGURATION_NODE.ATTR_DESCRIPTION,
|
||||
SebExamConfigPropForm.FORM_DESCRIPTION_TEXT_KEY)
|
||||
SebExamConfigForm.FORM_DESCRIPTION_TEXT_KEY)
|
||||
.asArea())
|
||||
.addFieldIf(
|
||||
() -> !this.copyAsTemplate && !this.createFromTemplate,
|
||||
() -> FormBuilder.checkbox(
|
||||
ConfigCreationInfo.ATTR_COPY_WITH_HISTORY,
|
||||
SebExamConfigPropForm.FORM_HISTORY_TEXT_KEY))
|
||||
SebExamConfigForm.FORM_HISTORY_TEXT_KEY))
|
||||
.build();
|
||||
|
||||
return () -> formHandle;
|
||||
|
|
|
@ -13,7 +13,6 @@ import java.util.HashSet;
|
|||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.rap.rwt.RWT;
|
||||
import org.eclipse.rap.rwt.client.service.UrlLauncher;
|
||||
import org.eclipse.swt.SWT;
|
||||
|
@ -68,7 +67,7 @@ import ch.ethz.seb.sebserver.gui.widget.WidgetFactory.CustomVariant;
|
|||
@Lazy
|
||||
@Component
|
||||
@GuiProfile
|
||||
public class SebExamConfigPropForm implements TemplateComposer {
|
||||
public class SebExamConfigForm implements TemplateComposer {
|
||||
|
||||
static final LocTextKey FORM_TITLE_NEW =
|
||||
new LocTextKey("sebserver.examconfig.form.title.new");
|
||||
|
@ -108,7 +107,7 @@ public class SebExamConfigPropForm implements TemplateComposer {
|
|||
private final DownloadService downloadService;
|
||||
private final String downloadFileName;
|
||||
|
||||
protected SebExamConfigPropForm(
|
||||
protected SebExamConfigForm(
|
||||
final PageService pageService,
|
||||
final CurrentUser currentUser,
|
||||
final DownloadService downloadService,
|
||||
|
@ -225,24 +224,7 @@ public class SebExamConfigPropForm implements TemplateComposer {
|
|||
.withAttribute(PageContext.AttributeKeys.READ_ONLY, String.valueOf(!modifyGrant))
|
||||
.publishIf(() -> modifyGrant && isReadonly)
|
||||
|
||||
.newAction(ActionDefinition.SEB_EXAM_CONFIG_EXPORT_PLAIN_XML)
|
||||
.withEntityKey(entityKey)
|
||||
.withExec(action -> {
|
||||
final String downloadURL = this.downloadService.createDownloadURL(
|
||||
entityKey.modelId,
|
||||
SebExamConfigPlaintextDownload.class,
|
||||
this.downloadFileName);
|
||||
urlLauncher.openURL(downloadURL);
|
||||
return action;
|
||||
})
|
||||
.noEventPropagation()
|
||||
.publishIf(() -> modifyGrant && isReadonly)
|
||||
|
||||
.newAction(ActionDefinition.SEB_EXAM_CONFIG_GET_CONFIG_KEY)
|
||||
.withEntityKey(entityKey)
|
||||
.withExec(SebExamConfigPropForm.getConfigKeyFunction(this.pageService))
|
||||
.noEventPropagation()
|
||||
.publishIf(() -> modifyGrant && isReadonly)
|
||||
|
||||
.newAction(ActionDefinition.SEB_EXAM_CONFIG_IMPORT_TO_EXISTING_CONFIG)
|
||||
.withEntityKey(entityKey)
|
||||
|
@ -275,6 +257,25 @@ public class SebExamConfigPropForm implements TemplateComposer {
|
|||
.noEventPropagation()
|
||||
.publishIf(() -> modifyGrant && isReadonly)
|
||||
|
||||
.newAction(ActionDefinition.SEB_EXAM_CONFIG_EXPORT_PLAIN_XML)
|
||||
.withEntityKey(entityKey)
|
||||
.withExec(action -> {
|
||||
final String downloadURL = this.downloadService.createDownloadURL(
|
||||
entityKey.modelId,
|
||||
SebExamConfigPlaintextDownload.class,
|
||||
this.downloadFileName);
|
||||
urlLauncher.openURL(downloadURL);
|
||||
return action;
|
||||
})
|
||||
.noEventPropagation()
|
||||
.publishIf(() -> modifyGrant && isReadonly)
|
||||
|
||||
.newAction(ActionDefinition.SEB_EXAM_CONFIG_GET_CONFIG_KEY)
|
||||
.withEntityKey(entityKey)
|
||||
.withExec(SebExamConfigForm.getConfigKeyFunction(this.pageService))
|
||||
.noEventPropagation()
|
||||
.publishIf(() -> modifyGrant && isReadonly)
|
||||
|
||||
.newAction(ActionDefinition.SEB_EXAM_CONFIG_PROP_SAVE)
|
||||
.withEntityKey(entityKey)
|
||||
.withExec(formHandle::processFormSave)
|
||||
|
@ -289,13 +290,10 @@ public class SebExamConfigPropForm implements TemplateComposer {
|
|||
|
||||
if (isAttachedToExam && isReadonly) {
|
||||
|
||||
widgetFactory.label(content, StringUtils.EMPTY);
|
||||
widgetFactory.labelLocalized(
|
||||
widgetFactory.addFormSubContextHeader(
|
||||
content,
|
||||
CustomVariant.TEXT_H3,
|
||||
FORM_ATTACHED_EXAMS_TITLE_TEXT_KEY,
|
||||
FORM_ATTACHED_EXAMS_TITLE_TOOLTIP_TEXT_KEY);
|
||||
widgetFactory.labelSeparator(content);
|
||||
|
||||
final EntityTable<ExamConfigurationMap> table =
|
||||
this.pageService.entityTableBuilder(this.restService.getRestCall(GetExamConfigMappingsPage.class))
|
|
@ -69,7 +69,7 @@ final class SebExamConfigImportPopup {
|
|||
newConfig);
|
||||
|
||||
dialog.open(
|
||||
SebExamConfigPropForm.FORM_IMPORT_TEXT_KEY,
|
||||
SebExamConfigForm.FORM_IMPORT_TEXT_KEY,
|
||||
(Predicate<FormHandle<ConfigurationNode>>) formHandle -> doImport(
|
||||
pageService,
|
||||
formHandle,
|
||||
|
@ -151,7 +151,7 @@ final class SebExamConfigImportPopup {
|
|||
.call();
|
||||
|
||||
if (!configuration.hasError()) {
|
||||
context.publishInfo(SebExamConfigPropForm.FORM_IMPORT_CONFIRM_TEXT_KEY);
|
||||
context.publishInfo(SebExamConfigForm.FORM_IMPORT_CONFIRM_TEXT_KEY);
|
||||
if (newConfig) {
|
||||
|
||||
final PageAction action = pageService.pageActionBuilder(context)
|
||||
|
@ -184,7 +184,7 @@ final class SebExamConfigImportPopup {
|
|||
}
|
||||
|
||||
formHandle.getContext().notifyError(
|
||||
SebExamConfigPropForm.FORM_TITLE,
|
||||
SebExamConfigForm.FORM_TITLE,
|
||||
configuration.getError());
|
||||
|
||||
}
|
||||
|
@ -198,7 +198,7 @@ final class SebExamConfigImportPopup {
|
|||
|
||||
return false;
|
||||
} catch (final Exception e) {
|
||||
formHandle.getContext().notifyError(SebExamConfigPropForm.FORM_TITLE, e);
|
||||
formHandle.getContext().notifyError(SebExamConfigForm.FORM_TITLE, e);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -234,7 +234,7 @@ final class SebExamConfigImportPopup {
|
|||
.readonly(false)
|
||||
.addField(FormBuilder.fileUpload(
|
||||
API.IMPORT_FILE_ATTR_NAME,
|
||||
SebExamConfigPropForm.FORM_IMPORT_SELECT_TEXT_KEY,
|
||||
SebExamConfigForm.FORM_IMPORT_SELECT_TEXT_KEY,
|
||||
null,
|
||||
API.SEB_FILE_EXTENSION))
|
||||
|
||||
|
@ -242,24 +242,24 @@ final class SebExamConfigImportPopup {
|
|||
() -> this.newConfig,
|
||||
() -> FormBuilder.text(
|
||||
Domain.CONFIGURATION_NODE.ATTR_NAME,
|
||||
SebExamConfigPropForm.FORM_NAME_TEXT_KEY))
|
||||
SebExamConfigForm.FORM_NAME_TEXT_KEY))
|
||||
.addFieldIf(
|
||||
() -> this.newConfig,
|
||||
() -> FormBuilder.text(
|
||||
Domain.CONFIGURATION_NODE.ATTR_DESCRIPTION,
|
||||
SebExamConfigPropForm.FORM_DESCRIPTION_TEXT_KEY)
|
||||
SebExamConfigForm.FORM_DESCRIPTION_TEXT_KEY)
|
||||
.asArea())
|
||||
.addFieldIf(
|
||||
() -> this.newConfig && !examConfigTemplateResources.isEmpty(),
|
||||
() -> FormBuilder.singleSelection(
|
||||
Domain.CONFIGURATION_NODE.ATTR_TEMPLATE_ID,
|
||||
SebExamConfigPropForm.FORM_TEMPLATE_TEXT_KEY,
|
||||
SebExamConfigForm.FORM_TEMPLATE_TEXT_KEY,
|
||||
null,
|
||||
resourceService::getExamConfigTemplateResources))
|
||||
|
||||
.addField(FormBuilder.text(
|
||||
API.IMPORT_PASSWORD_ATTR_NAME,
|
||||
SebExamConfigPropForm.FORM_IMPORT_PASSWORD_TEXT_KEY,
|
||||
SebExamConfigForm.FORM_IMPORT_PASSWORD_TEXT_KEY,
|
||||
"").asPasswordField())
|
||||
.build();
|
||||
|
||||
|
|
|
@ -214,7 +214,7 @@ public class SebExamConfigSettingsForm implements TemplateComposer {
|
|||
throw e;
|
||||
} catch (final Exception e) {
|
||||
log.error("Unexpected error while trying to fetch exam configuration data and create views", e);
|
||||
pageContext.notifyError(SebExamConfigPropForm.FORM_TITLE, e);
|
||||
pageContext.notifyError(SebExamConfigForm.FORM_TITLE, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -63,19 +63,29 @@ public class UserActivityLogs implements TemplateComposer {
|
|||
new LocTextKey("sebserver.userlogs.list.column.user");
|
||||
private static final LocTextKey DATE_TEXT_KEY =
|
||||
new LocTextKey("sebserver.userlogs.list.column.dateTime");
|
||||
private static final LocTextKey DETAILS_DATE_TEXT_KEY =
|
||||
new LocTextKey("sebserver.seblogs.details.dateTime");
|
||||
private static final LocTextKey ACTIVITY_TEXT_KEY =
|
||||
new LocTextKey("sebserver.userlogs.list.column.activityType");
|
||||
private static final LocTextKey ENTITY_TYPE_TEXT_KEY =
|
||||
new LocTextKey("sebserver.userlogs.list.column.entityType");
|
||||
private static final LocTextKey ENTITY_ID_TEXT_KEY =
|
||||
new LocTextKey("sebserver.userlogs.list.column.entityId");
|
||||
private static final LocTextKey MESSAGE_TEXT_KEY =
|
||||
new LocTextKey("sebserver.userlogs.list.column.message");
|
||||
private final static LocTextKey EMPTY_SELECTION_TEXT =
|
||||
new LocTextKey("sebserver.userlogs.info.pleaseSelect");
|
||||
|
||||
private static final LocTextKey FORM_USER_TEXT_KEY =
|
||||
new LocTextKey("sebserver.userlogs.form.user");
|
||||
private static final LocTextKey FORM_DATE_TEXT_KEY =
|
||||
new LocTextKey("sebserver.userlogs.form.dateTime");
|
||||
private static final LocTextKey FORM_DETAILS_DATE_TEXT_KEY =
|
||||
new LocTextKey("sebserver.userlogs.form.dateTime");
|
||||
private static final LocTextKey FORM_ACTIVITY_TEXT_KEY =
|
||||
new LocTextKey("sebserver.userlogs.form.activityType");
|
||||
private static final LocTextKey FORM_ENTITY_TYPE_TEXT_KEY =
|
||||
new LocTextKey("sebserver.userlogs.form.entityType");
|
||||
private static final LocTextKey FORM_ENTITY_ID_TEXT_KEY =
|
||||
new LocTextKey("sebserver.userlogs.form.entityId");
|
||||
private static final LocTextKey FORM_MESSAGE_TEXT_KEY =
|
||||
new LocTextKey("sebserver.userlogs.form.message");
|
||||
|
||||
|
||||
private final TableFilterAttribute institutionFilter;
|
||||
private final TableFilterAttribute userNameFilter =
|
||||
new TableFilterAttribute(CriteriaType.TEXT, UserActivityLog.FILTER_ATTR_USER_NAME);
|
||||
|
@ -248,29 +258,29 @@ public class UserActivityLogs implements TemplateComposer {
|
|||
.readonly(true)
|
||||
.addField(FormBuilder.text(
|
||||
UserActivityLog.ATTR_USER_NAME,
|
||||
USER_TEXT_KEY,
|
||||
FORM_USER_TEXT_KEY,
|
||||
String.valueOf(userActivityLog.getUsername())))
|
||||
.addField(FormBuilder.text(
|
||||
Domain.USER_ACTIVITY_LOG.ATTR_ACTIVITY_TYPE,
|
||||
ACTIVITY_TEXT_KEY,
|
||||
FORM_ACTIVITY_TEXT_KEY,
|
||||
this.resourceService.getUserActivityTypeName(userActivityLog)))
|
||||
.addField(FormBuilder.text(
|
||||
Domain.USER_ACTIVITY_LOG.ATTR_ENTITY_TYPE,
|
||||
ENTITY_TYPE_TEXT_KEY,
|
||||
FORM_ENTITY_TYPE_TEXT_KEY,
|
||||
this.resourceService.getEntityTypeName(userActivityLog)))
|
||||
.addField(FormBuilder.text(
|
||||
Domain.USER_ACTIVITY_LOG.ATTR_ENTITY_ID,
|
||||
ENTITY_ID_TEXT_KEY,
|
||||
FORM_ENTITY_ID_TEXT_KEY,
|
||||
userActivityLog.entityId))
|
||||
.addField(FormBuilder.text(
|
||||
Domain.USER_ACTIVITY_LOG.ATTR_TIMESTAMP,
|
||||
DETAILS_DATE_TEXT_KEY,
|
||||
FORM_DETAILS_DATE_TEXT_KEY,
|
||||
this.widgetFactory.getI18nSupport()
|
||||
.formatDisplayDateTime(Utils.toDateTimeUTC(userActivityLog.timestamp)) + " " +
|
||||
this.i18nSupport.getUsersTimeZoneTitleSuffix()))
|
||||
.addField(FormBuilder.text(
|
||||
Domain.USER_ACTIVITY_LOG.ATTR_MESSAGE,
|
||||
MESSAGE_TEXT_KEY,
|
||||
FORM_MESSAGE_TEXT_KEY,
|
||||
String.valueOf(userActivityLog.message))
|
||||
.asArea())
|
||||
.build();
|
||||
|
|
|
@ -12,6 +12,7 @@ import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey;
|
|||
|
||||
public enum ActionCategory {
|
||||
FORM(null, 0),
|
||||
LIST_VARIA(null, 10),
|
||||
INSTITUTION_LIST(new LocTextKey("sebserver.institution.list.actions"), 1),
|
||||
USER_ACCOUNT_LIST(new LocTextKey("sebserver.useraccount.list.actions"), 1),
|
||||
LMS_SETUP_LIST(new LocTextKey("sebserver.lmssetup.list.actions"), 1),
|
||||
|
|
|
@ -26,7 +26,7 @@ public enum ActionDefinition {
|
|||
new LocTextKey("sebserver.institution.action.new"),
|
||||
ImageIcon.INSTITUTION,
|
||||
PageStateDefinitionImpl.INSTITUTION_EDIT,
|
||||
ActionCategory.FORM),
|
||||
ActionCategory.LIST_VARIA),
|
||||
INSTITUTION_VIEW_FROM_LIST(
|
||||
new LocTextKey("sebserver.institution.action.list.view"),
|
||||
ImageIcon.SHOW,
|
||||
|
@ -54,7 +54,7 @@ public enum ActionDefinition {
|
|||
PageStateDefinitionImpl.INSTITUTION_VIEW,
|
||||
ActionCategory.FORM),
|
||||
INSTITUTION_SAVE_AND_ACTIVATE(
|
||||
new LocTextKey("sebserver.form.action.save.activate"),
|
||||
new LocTextKey("sebserver.institution.action.activate"),
|
||||
ImageIcon.ACTIVE,
|
||||
PageStateDefinitionImpl.INSTITUTION_VIEW,
|
||||
ActionCategory.FORM),
|
||||
|
@ -83,7 +83,8 @@ public enum ActionDefinition {
|
|||
USER_ACCOUNT_NEW(
|
||||
new LocTextKey("sebserver.useraccount.action.new"),
|
||||
ImageIcon.USER,
|
||||
PageStateDefinitionImpl.USER_ACCOUNT_EDIT),
|
||||
PageStateDefinitionImpl.USER_ACCOUNT_EDIT,
|
||||
ActionCategory.FORM.LIST_VARIA),
|
||||
USER_ACCOUNT_VIEW_FROM_LIST(
|
||||
new LocTextKey("sebserver.useraccount.action.view"),
|
||||
ImageIcon.SHOW,
|
||||
|
@ -110,7 +111,7 @@ public enum ActionDefinition {
|
|||
PageStateDefinitionImpl.USER_ACCOUNT_VIEW,
|
||||
ActionCategory.FORM),
|
||||
USER_ACCOUNT_SAVE_AND_ACTIVATE(
|
||||
new LocTextKey("sebserver.form.action.save.activate"),
|
||||
new LocTextKey("sebserver.useraccount.action.activate"),
|
||||
ImageIcon.ACTIVE,
|
||||
PageStateDefinitionImpl.USER_ACCOUNT_VIEW,
|
||||
ActionCategory.FORM),
|
||||
|
@ -147,7 +148,8 @@ public enum ActionDefinition {
|
|||
LMS_SETUP_NEW(
|
||||
new LocTextKey("sebserver.lmssetup.action.new"),
|
||||
ImageIcon.LMS_SETUP,
|
||||
PageStateDefinitionImpl.LMS_SETUP_EDIT),
|
||||
PageStateDefinitionImpl.LMS_SETUP_EDIT,
|
||||
ActionCategory.LIST_VARIA),
|
||||
LMS_SETUP_VIEW_FROM_LIST(
|
||||
new LocTextKey("sebserver.lmssetup.action.list.view"),
|
||||
ImageIcon.SHOW,
|
||||
|
@ -224,6 +226,11 @@ public enum ActionDefinition {
|
|||
new LocTextKey("sebserver.exam.action.import"),
|
||||
ImageIcon.IMPORT,
|
||||
PageStateDefinitionImpl.QUIZ_LIST),
|
||||
EXAM_VIEW_FROM_CONFIG(
|
||||
new LocTextKey("sebserver.exam.action.list.view"),
|
||||
ImageIcon.SHOW,
|
||||
PageStateDefinitionImpl.SEB_EXAM_CONFIG_PROP_VIEW,
|
||||
ActionCategory.LIST_VARIA),
|
||||
EXAM_VIEW_FROM_LIST(
|
||||
new LocTextKey("sebserver.exam.action.list.view"),
|
||||
ImageIcon.SHOW,
|
||||
|
@ -343,12 +350,13 @@ public enum ActionDefinition {
|
|||
ActionCategory.FORM),
|
||||
|
||||
SEB_CLIENT_CONFIG_LIST(
|
||||
new LocTextKey("sebserver.clientconfig.action.list"),
|
||||
new LocTextKey("sebserver.clientconfig.list.title"),
|
||||
PageStateDefinitionImpl.SEB_CLIENT_CONFIG_LIST),
|
||||
SEB_CLIENT_CONFIG_NEW(
|
||||
new LocTextKey("sebserver.clientconfig.action.list.new"),
|
||||
ImageIcon.NEW,
|
||||
PageStateDefinitionImpl.SEB_CLIENT_CONFIG_EDIT),
|
||||
PageStateDefinitionImpl.SEB_CLIENT_CONFIG_EDIT,
|
||||
ActionCategory.LIST_VARIA),
|
||||
SEB_CLIENT_CONFIG_VIEW_FROM_LIST(
|
||||
new LocTextKey("sebserver.clientconfig.action.list.view"),
|
||||
ImageIcon.SHOW,
|
||||
|
@ -375,7 +383,7 @@ public enum ActionDefinition {
|
|||
PageStateDefinitionImpl.SEB_CLIENT_CONFIG_VIEW,
|
||||
ActionCategory.FORM),
|
||||
SEB_CLIENT_CONFIG_SAVE_AND_ACTIVATE(
|
||||
new LocTextKey("sebserver.form.action.save.activate"),
|
||||
new LocTextKey("sebserver.clientconfig.action.activate"),
|
||||
ImageIcon.ACTIVE,
|
||||
PageStateDefinitionImpl.SEB_CLIENT_CONFIG_VIEW,
|
||||
ActionCategory.FORM),
|
||||
|
@ -406,7 +414,8 @@ public enum ActionDefinition {
|
|||
SEB_EXAM_CONFIG_NEW(
|
||||
new LocTextKey("sebserver.examconfig.action.list.new"),
|
||||
ImageIcon.NEW,
|
||||
PageStateDefinitionImpl.SEB_EXAM_CONFIG_PROP_EDIT),
|
||||
PageStateDefinitionImpl.SEB_EXAM_CONFIG_PROP_EDIT,
|
||||
ActionCategory.LIST_VARIA),
|
||||
SEB_EXAM_CONFIG_VIEW_PROP_FROM_LIST(
|
||||
new LocTextKey("sebserver.examconfig.action.list.view"),
|
||||
ImageIcon.SHOW,
|
||||
|
@ -421,7 +430,7 @@ public enum ActionDefinition {
|
|||
new LocTextKey("sebserver.examconfig.action.import-config"),
|
||||
ImageIcon.IMPORT,
|
||||
PageStateDefinitionImpl.SEB_EXAM_CONFIG_LIST,
|
||||
ActionCategory.VARIA),
|
||||
ActionCategory.LIST_VARIA),
|
||||
|
||||
SEB_EXAM_CONFIG_MODIFY_PROP_FROM_LIST(
|
||||
new LocTextKey("sebserver.examconfig.action.list.modify.properties"),
|
||||
|
@ -496,7 +505,7 @@ public enum ActionDefinition {
|
|||
new LocTextKey("sebserver.configtemplate.action.list.new"),
|
||||
ImageIcon.TEMPLATE,
|
||||
PageStateDefinitionImpl.SEB_EXAM_CONFIG_TEMPLATE_EDIT,
|
||||
ActionCategory.VARIA),
|
||||
ActionCategory.LIST_VARIA),
|
||||
SEB_EXAM_CONFIG_TEMPLATE_VIEW_FROM_LIST(
|
||||
new LocTextKey("sebserver.configtemplate.action.list.view"),
|
||||
ImageIcon.SHOW,
|
||||
|
|
|
@ -79,7 +79,7 @@ public class ActionPane implements TemplateComposer {
|
|||
PageEventListener.LISTENER_ATTRIBUTE_KEY,
|
||||
(ActionPublishEventListener) event -> {
|
||||
final Composite parent = pageContext.getParent();
|
||||
final Tree treeForGroup = getTreeForGroup(parent, event.action.definition);
|
||||
final Tree treeForGroup = getTreeForGroup(parent, event.action.definition, true);
|
||||
final TreeItem actionItem = ActionPane.this.widgetFactory.treeItemLocalized(
|
||||
treeForGroup,
|
||||
event.action.definition.title);
|
||||
|
@ -141,7 +141,7 @@ public class ActionPane implements TemplateComposer {
|
|||
}
|
||||
|
||||
private TreeItem findAction(final Composite parent, final ActionDefinition actionDefinition) {
|
||||
final Tree treeForGroup = getTreeForGroup(parent, actionDefinition);
|
||||
final Tree treeForGroup = getTreeForGroup(parent, actionDefinition, false);
|
||||
if (treeForGroup == null) {
|
||||
return null;
|
||||
}
|
||||
|
@ -165,11 +165,15 @@ public class ActionPane implements TemplateComposer {
|
|||
return null;
|
||||
}
|
||||
|
||||
private Tree getTreeForGroup(final Composite parent, final ActionDefinition actionDefinition) {
|
||||
private Tree getTreeForGroup(
|
||||
final Composite parent,
|
||||
final ActionDefinition actionDefinition,
|
||||
boolean create) {
|
||||
|
||||
clearDisposedTrees();
|
||||
|
||||
final ActionCategory category = actionDefinition.category;
|
||||
if (!this.actionTrees.containsKey(category.name())) {
|
||||
if (!this.actionTrees.containsKey(category.name()) && create) {
|
||||
final Tree actionTree = createActionTree(parent, actionDefinition.category);
|
||||
this.actionTrees.put(category.name(), actionTree);
|
||||
}
|
||||
|
@ -210,7 +214,7 @@ public class ActionPane implements TemplateComposer {
|
|||
// action tree
|
||||
final Tree actions = this.widgetFactory.treeLocalized(
|
||||
composite,
|
||||
SWT.SINGLE | SWT.FULL_SELECTION);
|
||||
SWT.SINGLE | SWT.FULL_SELECTION | SWT.NO_SCROLL);
|
||||
actions.setData(RWT.CUSTOM_VARIANT, "actions");
|
||||
final GridData gridData = new GridData(SWT.FILL, SWT.TOP, true, false);
|
||||
actions.setLayoutData(gridData);
|
||||
|
@ -225,7 +229,7 @@ public class ActionPane implements TemplateComposer {
|
|||
imageCell.setBindingIndex(0);
|
||||
final TextCell textCell = new TextCell(template);
|
||||
textCell.setLeft(0, 30)
|
||||
.setWidth(150)
|
||||
.setWidth(SWT.DEFAULT)
|
||||
.setTop(7)
|
||||
.setBottom(0, 0)
|
||||
.setHorizontalAlignment(SWT.LEFT);
|
||||
|
|
|
@ -21,7 +21,7 @@ public enum ActivityDefinition implements Activity {
|
|||
EXAM_ADMINISTRATION(new LocTextKey("sebserver.overall.activity.title.examadmin")),
|
||||
EXAM(new LocTextKey("sebserver.exam.action.list")),
|
||||
SEB_CONFIGURATION(new LocTextKey("sebserver.overall.activity.title.sebconfig")),
|
||||
SEB_CLIENT_CONFIG(new LocTextKey("sebserver.clientconfig.action.list")),
|
||||
SEB_CLIENT_CONFIG(new LocTextKey("sebserver.clientconfig.list.title")),
|
||||
SEB_EXAM_CONFIG(new LocTextKey("sebserver.examconfig.action.list")),
|
||||
SEB_EXAM_CONFIG_TEMPLATE(new LocTextKey("sebserver.configtemplate.action.list")),
|
||||
MONITORING(new LocTextKey("sebserver.overall.activity.title.monitoring")),
|
||||
|
|
|
@ -26,7 +26,7 @@ import ch.ethz.seb.sebserver.gui.content.SebClientConfigForm;
|
|||
import ch.ethz.seb.sebserver.gui.content.SebClientConfigList;
|
||||
import ch.ethz.seb.sebserver.gui.content.SebClientLogs;
|
||||
import ch.ethz.seb.sebserver.gui.content.SebExamConfigList;
|
||||
import ch.ethz.seb.sebserver.gui.content.SebExamConfigPropForm;
|
||||
import ch.ethz.seb.sebserver.gui.content.SebExamConfigForm;
|
||||
import ch.ethz.seb.sebserver.gui.content.SebExamConfigSettingsForm;
|
||||
import ch.ethz.seb.sebserver.gui.content.UserAccountChangePasswordForm;
|
||||
import ch.ethz.seb.sebserver.gui.content.UserAccountForm;
|
||||
|
@ -64,8 +64,8 @@ public enum PageStateDefinitionImpl implements PageStateDefinition {
|
|||
SEB_CLIENT_CONFIG_EDIT(Type.FORM_EDIT, SebClientConfigForm.class, ActivityDefinition.SEB_CLIENT_CONFIG),
|
||||
|
||||
SEB_EXAM_CONFIG_LIST(Type.LIST_VIEW, SebExamConfigList.class, ActivityDefinition.SEB_EXAM_CONFIG),
|
||||
SEB_EXAM_CONFIG_PROP_VIEW(Type.FORM_VIEW, SebExamConfigPropForm.class, ActivityDefinition.SEB_EXAM_CONFIG),
|
||||
SEB_EXAM_CONFIG_PROP_EDIT(Type.FORM_EDIT, SebExamConfigPropForm.class, ActivityDefinition.SEB_EXAM_CONFIG),
|
||||
SEB_EXAM_CONFIG_PROP_VIEW(Type.FORM_VIEW, SebExamConfigForm.class, ActivityDefinition.SEB_EXAM_CONFIG),
|
||||
SEB_EXAM_CONFIG_PROP_EDIT(Type.FORM_EDIT, SebExamConfigForm.class, ActivityDefinition.SEB_EXAM_CONFIG),
|
||||
SEB_EXAM_CONFIG_EDIT(Type.FORM_IN_TIME_EDIT, SebExamConfigSettingsForm.class, ActivityDefinition.SEB_EXAM_CONFIG),
|
||||
SEB_EXAM_CONFIG_VIEW(Type.FORM_VIEW, SebExamConfigSettingsForm.class, ActivityDefinition.SEB_EXAM_CONFIG),
|
||||
|
||||
|
|
|
@ -483,7 +483,7 @@ public final class Form implements FormBinding {
|
|||
this.listValue = listValue;
|
||||
}
|
||||
|
||||
abstract String getStringValue();
|
||||
public abstract String getStringValue();
|
||||
|
||||
public void setStringValue(final String value) {
|
||||
throw new UnsupportedOperationException();
|
||||
|
|
|
@ -144,6 +144,7 @@ public class EntityTable<ROW extends Entity> {
|
|||
layout.marginHeight = 0;
|
||||
this.composite.setLayout(layout);
|
||||
GridData gridData = new GridData(SWT.FILL, SWT.TOP, true, false);
|
||||
gridData.horizontalIndent = 2;
|
||||
this.composite.setLayoutData(gridData);
|
||||
this.staticQueryParams = staticQueryParams;
|
||||
this.rowDecorator = rowDecorator;
|
||||
|
|
|
@ -66,7 +66,7 @@ public class TableFilter<ROW extends Entity> {
|
|||
final GridData gridData = new GridData(SWT.FILL, SWT.TOP, true, false);
|
||||
this.composite.setLayoutData(gridData);
|
||||
final RowLayout layout = new RowLayout(SWT.HORIZONTAL);
|
||||
layout.spacing = 5;
|
||||
layout.marginLeft = 0;
|
||||
layout.wrap = false;
|
||||
layout.center = false;
|
||||
layout.fill = true;
|
||||
|
@ -137,7 +137,7 @@ public class TableFilter<ROW extends Entity> {
|
|||
|
||||
boolean adaptColumnWidth(final int columnIndex, final int width) {
|
||||
if (columnIndex < this.components.size()) {
|
||||
final boolean adaptWidth = this.components.get(columnIndex).adaptWidth(width);
|
||||
final boolean adaptWidth = this.components.get(columnIndex).adaptWidth(width + 2);
|
||||
if (adaptWidth) {
|
||||
this.composite.layout();
|
||||
}
|
||||
|
|
|
@ -8,15 +8,17 @@
|
|||
|
||||
package ch.ethz.seb.sebserver.gui.widget;
|
||||
|
||||
import static ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService.POLYGLOT_WIDGET_FUNCTION_KEY;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import ch.ethz.seb.sebserver.gbl.model.exam.Indicator.IndicatorType;
|
||||
import ch.ethz.seb.sebserver.gbl.model.exam.Indicator.Threshold;
|
||||
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
|
||||
import ch.ethz.seb.sebserver.gbl.util.Tuple;
|
||||
import ch.ethz.seb.sebserver.gbl.util.Utils;
|
||||
import ch.ethz.seb.sebserver.gui.service.i18n.I18nSupport;
|
||||
import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey;
|
||||
import ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService;
|
||||
import ch.ethz.seb.sebserver.gui.service.page.PageService;
|
||||
import ch.ethz.seb.sebserver.gui.service.page.impl.DefaultPageLayout;
|
||||
import ch.ethz.seb.sebserver.gui.service.push.ServerPushService;
|
||||
import org.eclipse.rap.rwt.RWT;
|
||||
import org.eclipse.rap.rwt.client.service.JavaScriptExecutor;
|
||||
import org.eclipse.rap.rwt.widgets.WidgetUtil;
|
||||
|
@ -26,38 +28,20 @@ import org.eclipse.swt.graphics.Image;
|
|||
import org.eclipse.swt.graphics.ImageData;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.ColorDialog;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.DateTime;
|
||||
import org.eclipse.swt.widgets.Group;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Listener;
|
||||
import org.eclipse.swt.widgets.TabFolder;
|
||||
import org.eclipse.swt.widgets.TabItem;
|
||||
import org.eclipse.swt.widgets.Table;
|
||||
import org.eclipse.swt.widgets.TableColumn;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
import org.eclipse.swt.widgets.Tree;
|
||||
import org.eclipse.swt.widgets.TreeItem;
|
||||
import org.eclipse.swt.widgets.Widget;
|
||||
import org.eclipse.swt.widgets.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import ch.ethz.seb.sebserver.gbl.model.exam.Indicator.IndicatorType;
|
||||
import ch.ethz.seb.sebserver.gbl.model.exam.Indicator.Threshold;
|
||||
import ch.ethz.seb.sebserver.gbl.profile.GuiProfile;
|
||||
import ch.ethz.seb.sebserver.gbl.util.Tuple;
|
||||
import ch.ethz.seb.sebserver.gbl.util.Utils;
|
||||
import ch.ethz.seb.sebserver.gui.content.action.ActionDefinition;
|
||||
import ch.ethz.seb.sebserver.gui.service.i18n.I18nSupport;
|
||||
import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey;
|
||||
import ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService;
|
||||
import ch.ethz.seb.sebserver.gui.service.page.PageService;
|
||||
import ch.ethz.seb.sebserver.gui.service.page.impl.DefaultPageLayout;
|
||||
import ch.ethz.seb.sebserver.gui.service.push.ServerPushService;
|
||||
import java.io.InputStream;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static ch.ethz.seb.sebserver.gui.service.i18n.PolyglotPageService.POLYGLOT_WIDGET_FUNCTION_KEY;
|
||||
|
||||
@Lazy
|
||||
@Service
|
||||
|
@ -66,6 +50,7 @@ public class WidgetFactory {
|
|||
|
||||
private static final String ADD_HTML_ATTR_ARIA_ROLE = "role";
|
||||
private static final String ADD_HTML_ATTR_TEST_ID = "test-id";
|
||||
private static final String SUB_TITLE_TExT_SUFFIX = ".subtitle";
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(WidgetFactory.class);
|
||||
|
||||
|
@ -166,6 +151,7 @@ public class WidgetFactory {
|
|||
TEXT_H1("h1"),
|
||||
TEXT_H2("h2"),
|
||||
TEXT_H3("h3"),
|
||||
SUBTITLE( "subtitle"),
|
||||
IMAGE_BUTTON("imageButton"),
|
||||
TEXT_ACTION("action"),
|
||||
TEXT_READONLY("readonlyText"),
|
||||
|
@ -225,6 +211,7 @@ public class WidgetFactory {
|
|||
final Composite content = new Composite(parent, SWT.NONE);
|
||||
final GridLayout contentLayout = new GridLayout();
|
||||
contentLayout.marginLeft = 10;
|
||||
contentLayout.marginHeight = 0;
|
||||
content.setLayout(contentLayout);
|
||||
final GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
|
||||
content.setLayoutData(gridData);
|
||||
|
@ -236,18 +223,36 @@ public class WidgetFactory {
|
|||
final Label labelLocalizedTitle = labelLocalizedTitle(defaultPageLayout, title);
|
||||
final GridData gridData = new GridData(SWT.FILL, SWT.TOP, true, false);
|
||||
labelLocalizedTitle.setLayoutData(gridData);
|
||||
|
||||
// sub title if defined in language properties
|
||||
LocTextKey subTitleTextKey = new LocTextKey(title.name + SUB_TITLE_TExT_SUFFIX);
|
||||
if (i18nSupport.hasText(subTitleTextKey)) {
|
||||
final GridData gridDataSub = new GridData(SWT.FILL, SWT.FILL, true, false);
|
||||
final Label labelLocalizedSubTitle = labelLocalized(
|
||||
defaultPageLayout,
|
||||
CustomVariant.SUBTITLE,
|
||||
subTitleTextKey);
|
||||
labelLocalizedSubTitle.setLayoutData(gridDataSub);
|
||||
}
|
||||
|
||||
return defaultPageLayout;
|
||||
}
|
||||
|
||||
public Composite defaultPageLayout(
|
||||
final Composite parent,
|
||||
final LocTextKey title,
|
||||
final ActionDefinition actionDefinition) {
|
||||
|
||||
final Composite defaultPageLayout = defaultPageLayout(parent);
|
||||
final Label labelLocalizedTitle = labelLocalizedTitle(defaultPageLayout, title);
|
||||
labelLocalizedTitle.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
|
||||
return defaultPageLayout;
|
||||
public void addFormSubContextHeader(final Composite parent, final LocTextKey titleTextKey, final LocTextKey tooltipTextKey) {
|
||||
GridData gridData = new GridData(SWT.FILL, SWT.BOTTOM, true, false);
|
||||
gridData.horizontalIndent = 8;
|
||||
gridData.verticalIndent = 10;
|
||||
Label subContextLabel = labelLocalized(
|
||||
parent,
|
||||
CustomVariant.TEXT_H3,
|
||||
titleTextKey,
|
||||
tooltipTextKey);
|
||||
subContextLabel.setLayoutData(gridData);
|
||||
GridData gridData1 = new GridData(SWT.FILL, SWT.BOTTOM, true, false);
|
||||
gridData1.heightHint = 5;
|
||||
gridData1.horizontalIndent = 8;
|
||||
Label subContextSeparator = labelSeparator(parent);
|
||||
subContextSeparator.setLayoutData(gridData1);
|
||||
}
|
||||
|
||||
public Composite formGrid(final Composite parent, final int rows) {
|
||||
|
@ -256,8 +261,8 @@ public class WidgetFactory {
|
|||
layout.horizontalSpacing = 10;
|
||||
layout.verticalSpacing = 10;
|
||||
layout.marginBottom = 10;
|
||||
layout.marginLeft = 10;
|
||||
layout.marginTop = 0;
|
||||
layout.marginLeft = 4;
|
||||
layout.marginTop = 10;
|
||||
grid.setLayout(layout);
|
||||
grid.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
|
||||
return grid;
|
||||
|
@ -370,7 +375,8 @@ public class WidgetFactory {
|
|||
|
||||
public Label labelLocalizedTitle(final Composite content, final LocTextKey locTextKey) {
|
||||
final Label labelLocalized = labelLocalized(content, CustomVariant.TEXT_H1, locTextKey);
|
||||
labelLocalized.setLayoutData(new GridData(SWT.TOP, SWT.LEFT, true, false));
|
||||
GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, false);
|
||||
labelLocalized.setLayoutData(gridData);
|
||||
return labelLocalized;
|
||||
}
|
||||
|
||||
|
|
|
@ -137,6 +137,9 @@ public class LmsSetupDAOImpl implements LmsSetupDAO {
|
|||
|
||||
checkUniqueName(lmsSetup);
|
||||
|
||||
LmsSetupRecord savedRecord = recordById(lmsSetup.id)
|
||||
.getOrThrow();
|
||||
|
||||
final ClientCredentials lmsCredentials = createAPIClientCredentials(lmsSetup);
|
||||
final ClientCredentials proxyCredentials = createProxyClientCredentials(lmsSetup);
|
||||
final LmsSetupRecord newRecord = new LmsSetupRecord(
|
||||
|
@ -152,9 +155,9 @@ public class LmsSetupDAOImpl implements LmsSetupDAO {
|
|||
lmsSetup.getProxyPort(),
|
||||
proxyCredentials.clientIdAsString(),
|
||||
proxyCredentials.secretAsString(),
|
||||
null);
|
||||
savedRecord.getActive());
|
||||
|
||||
this.lmsSetupRecordMapper.updateByPrimaryKeySelective(newRecord);
|
||||
this.lmsSetupRecordMapper.updateByPrimaryKey(newRecord);
|
||||
return this.lmsSetupRecordMapper.selectByPrimaryKey(lmsSetup.id);
|
||||
})
|
||||
.flatMap(this::toDomainModel)
|
||||
|
|
|
@ -35,7 +35,7 @@ sebserver.overall.date.to=To
|
|||
sebserver.overall.action.add=Add;
|
||||
sebserver.overall.action.remove=Remove
|
||||
sebserver.overall.action.select=Please Select
|
||||
sebserver.overall.action.toggle-activity=Switch Activity
|
||||
sebserver.overall.action.toggle-activity=Switch Status
|
||||
|
||||
sebserver.overall.types.activityType.REGISTER=Register new Account
|
||||
sebserver.overall.types.activityType.CREATE=Create New
|
||||
|
@ -90,7 +90,6 @@ sebserver.error.unexpected=Unexpected Error
|
|||
sebserver.page.message=Information
|
||||
sebserver.dialog.confirm.title=Confirmation
|
||||
sebserver.form.mandatory=This field is mandatory.
|
||||
sebserver.form.action.save.activate=Save and Activate
|
||||
sebserver.table.column.sort.default.tooltip=Click on the column header to sort the table within this column.
|
||||
|
||||
sebserver.dialog.confirm.deactivation=Note that there are {0} other entities that belongs to this entity.<br/>Those will also be deactivated by deactivating this entity.<br/><br/>Are You sure to deactivate this entity?
|
||||
|
@ -141,6 +140,7 @@ sebserver.actionpane.title=
|
|||
sebserver.institution.list.actions=
|
||||
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.title.subtitle=
|
||||
sebserver.institution.list.column.name=Name
|
||||
sebserver.institution.list.column.name.tooltip=The name of the institution.<br/><br/>Use the filter above to narrow down a specific name.<br/>{0}
|
||||
sebserver.institution.list.column.urlSuffix=URL Suffix
|
||||
|
@ -163,6 +163,7 @@ sebserver.institution.action.delete=Delete Institution
|
|||
sebserver.institution.info.pleaseSelect=Please select first an institution from the list.
|
||||
sebserver.institution.form.title.new=Add Institution
|
||||
sebserver.institution.form.title=Institution
|
||||
sebserver.institution.form.title.subtitle=
|
||||
|
||||
sebserver.institution.form.name=Name
|
||||
sebserver.institution.form.name.tooltip=The name of the institution
|
||||
|
@ -189,6 +190,7 @@ sebserver.useraccount.role.EXAM_SUPPORTER.tooltip=An exam supporter can only see
|
|||
|
||||
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.title.subtitle=
|
||||
sebserver.useraccount.list.column.institution=Institution
|
||||
sebserver.useraccount.list.column.institution.tooltip=The institution of the user account.<br/><br/>Use the filter above to specify the institution.<br/>{0}
|
||||
sebserver.useraccount.list.column.name=First Name
|
||||
|
@ -206,10 +208,10 @@ 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.modify=Edit User Account
|
||||
sebserver.useraccount.action.save=Save User Account
|
||||
sebserver.useraccount.action.activate=Activate Account
|
||||
sebserver.useraccount.action.deactivate=Deactivate Account
|
||||
sebserver.useraccount.action.activate=Activate User Account
|
||||
sebserver.useraccount.action.deactivate=Deactivate User Account
|
||||
sebserver.useraccount.action.delete=Delete User Account
|
||||
sebserver.useraccount.action.change.password=Change Password
|
||||
sebserver.useraccount.action.change.password.save=Save New Password
|
||||
|
@ -218,6 +220,7 @@ sebserver.useraccount.info.pleaseSelect=Please select first a User Account from
|
|||
sebserver.useraccount.info.notEditable=You have no edit rights for this User Account.
|
||||
|
||||
sebserver.useraccount.form.title=User Account
|
||||
sebserver.useraccount.form.title.subtitle=
|
||||
sebserver.useraccount.form.title.new=Add User Account
|
||||
sebserver.useraccount.form.institution=Institution
|
||||
sebserver.useraccount.form.institution.tooltip=The institution the user belongs to.
|
||||
|
@ -251,7 +254,7 @@ sebserver.useraccount.form.password.new.confirm.tooltip=Please confirm the passw
|
|||
# LMS Setup
|
||||
################################
|
||||
|
||||
sebserver.lmssetup.type.MOCKUP=Mock-up
|
||||
sebserver.lmssetup.type.MOCKUP=Testing
|
||||
sebserver.lmssetup.type.MOODLE=Moodle
|
||||
sebserver.lmssetup.type.OPEN_EDX=Open edX
|
||||
|
||||
|
@ -259,6 +262,7 @@ sebserver.lmssetup.list.actions=
|
|||
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.title.subtitle=List of connection settings to the LMS.
|
||||
sebserver.lmssetup.list.column.institution=Institution
|
||||
sebserver.lmssetup.list.column.institution.tooltip=The institution of the LMS setup.<br/><br/>Use the filter above to specify the institution.<br/>{0}
|
||||
sebserver.lmssetup.list.column.name=Name
|
||||
|
@ -268,7 +272,7 @@ sebserver.lmssetup.list.column.type.tooltip=The type of the LMS.<br/><br/>Use th
|
|||
sebserver.lmssetup.list.column.active=Active
|
||||
sebserver.lmssetup.list.column.active.tooltip=The activity of the LMS Setup.<br/><br/>Use the filter above to specify the activity.<br/>{0}
|
||||
|
||||
sebserver.lmssetup.action.list=LMS Connection Settings
|
||||
sebserver.lmssetup.action.list=LMS Setups
|
||||
sebserver.lmssetup.action.form=LMS Setup
|
||||
sebserver.lmssetup.action.new=Add LMS Setup
|
||||
sebserver.lmssetup.action.list.view=View LMS Setup
|
||||
|
@ -290,6 +294,7 @@ sebserver.lmssetup.action.delete=Delete LMS Setup
|
|||
sebserver.lmssetup.info.pleaseSelect=Please select first a LMS Setup from the list
|
||||
|
||||
sebserver.lmssetup.form.title=Learning Management System Setup
|
||||
sebserver.lmssetup.form.title.subtitle=
|
||||
sebserver.lmssetup.form.title.new=Add Learning Management System Setup
|
||||
sebserver.lmssetup.form.institution=Institution
|
||||
sebserver.lmssetup.form.institution.tooltip=The institution where the LMS setup belongs to
|
||||
|
@ -304,66 +309,72 @@ sebserver.lmssetup.form.clientname.lms.tooltip=The client name of the API client
|
|||
sebserver.lmssetup.form.secret.lms=LMS Server Password
|
||||
sebserver.lmssetup.form.secret.lms.tooltip=The secret or password of the API client access to the LMS.<br/><br/>This is usually provided by an LMS administrator that has created a API access account for SEB Server binding within the LMS server.
|
||||
sebserver.lmssetup.form.proxy=Proxy
|
||||
sebserver.lmssetup.form.proxy.check=With Proxy
|
||||
sebserver.lmssetup.form.proxy.check.tooltip=Check and give detailed information if the SEB Server runs behind a proxy<br/>and need proxy settings to connect to the internet.
|
||||
sebserver.lmssetup.form.proxy.tooltip=The proxy details of a proxy is needed to connect to a LMS server
|
||||
sebserver.lmssetup.form.proxy.host=Proxy Host
|
||||
sebserver.lmssetup.form.proxy.host.tooltip=The server name of the proxy host to connect to
|
||||
sebserver.lmssetup.form.proxy.port=Proxy Port
|
||||
sebserver.lmssetup.form.proxy.port.tooltip=The proxy server port to connect to
|
||||
sebserver.lmssetup.form.proxy.auth-credentials=Proxy Name/Password
|
||||
sebserver.lmssetup.form.proxy.name=Proxy Name
|
||||
sebserver.lmssetup.form.proxy.name.tooltip=Proxy authentication name, needed if the proxy requests authentication
|
||||
sebserver.lmssetup.form.proxy.password=Proxy Password
|
||||
sebserver.lmssetup.form.proxy.password.tooltip=Proxy authentication password, needed if the proxy requests authentication
|
||||
sebserver.lmssetup.form.proxy.auth-credentials.tooltip=The proxy authentication credentials (name and password)<br/>to authenticate the connection within the proxy server
|
||||
|
||||
################################
|
||||
# Quiz Discovery
|
||||
#LMS Exam
|
||||
################################
|
||||
|
||||
sebserver.quizdiscovery.list.actions=
|
||||
|
||||
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.title=LMS Exams
|
||||
sebserver.quizdiscovery.list.title.subtitle=List of exams found in connected LMS.
|
||||
sebserver.quizdiscovery.list.empty=No LMS exam has been found. Please adapt the filter or create a new LMS Setup
|
||||
sebserver.quizdiscovery.list.column.institution=Institution
|
||||
sebserver.quizdiscovery.list.column.institution.tooltip=The institution of the LMS setup that defines LMS of the quiz.<br/><br/>Use the filter above to specify the institution.<br/>{0}
|
||||
sebserver.quizdiscovery.list.column.institution.tooltip=The institution filter.<br/><br/>Use the filter above to specify the institution.<br/>{0}
|
||||
sebserver.quizdiscovery.list.column.lmssetup=LMS
|
||||
sebserver.quizdiscovery.list.column.lmssetup.tooltip=The LMS setup that defines the LMS of the quiz<br/><br/>Use the filter above to specify the LMS setup.<br/>{0}
|
||||
sebserver.quizdiscovery.list.column.lmssetup.tooltip=The LMS setup filter<br/><br/>Use the filter above to find all LMS exams of a specific LMS setup.<br/>{0}
|
||||
sebserver.quizdiscovery.list.column.name=Name
|
||||
sebserver.quizdiscovery.list.column.name.tooltip=The name of the quiz.<br/><br/>Use the filter above to narrow down a specific quiz name.<br/>{0}
|
||||
sebserver.quizdiscovery.list.column.name.tooltip=The name of the LMS exam.<br/><br/>Use the filter above to narrow down a specific name.<br/>{0}
|
||||
sebserver.quizdiscovery.list.column.starttime=Start Time {0}
|
||||
sebserver.quizdiscovery.list.column.starttime.tooltip=The start time of the quiz.<br/><br/>Use the filter above to set a specific from date.<br/>{0}
|
||||
sebserver.quizdiscovery.list.column.starttime.tooltip=The start time of the LMS exam.<br/><br/>Use the filter above to set a specific from date.<br/>{0}
|
||||
sebserver.quizdiscovery.list.column.endtime=End Time {0}
|
||||
sebserver.quizdiscovery.list.column.endtime.tooltip=The end time of the quiz.<br/><br/>{0}
|
||||
sebserver.quizdiscovery.list.column.endtime.tooltip=The end time of the LMS exam.<br/><br/>{0}
|
||||
sebserver.quizdiscovery.info.pleaseSelect=Please select first a Quiz from the list
|
||||
|
||||
sebserver.quizdiscovery.action.list=LMS Exam Discovery
|
||||
sebserver.quizdiscovery.action.list=LMS Exam Lookup
|
||||
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.import.out.dated=The Selected LMS exam is is already finished and can't be imported
|
||||
sebserver.quizdiscovery.action.details=Show LMS Exam Details
|
||||
|
||||
sebserver.quizdiscovery.quiz.details.title=Quiz Details
|
||||
sebserver.quizdiscovery.quiz.details.title=LMS Exam Details
|
||||
sebserver.quizdiscovery.quiz.details.institution=Institution
|
||||
sebserver.quizdiscovery.quiz.details.institution.tooltip=The institution of the LMS setup that defines the LMS of the quiz.
|
||||
sebserver.quizdiscovery.quiz.details.institution.tooltip=The institution of the LMS setup.
|
||||
sebserver.quizdiscovery.quiz.details.lmssetup=LMS Setup
|
||||
sebserver.quizdiscovery.quiz.details.lmssetup.tooltip=The LMS setup that defines the LMS of the quiz.
|
||||
sebserver.quizdiscovery.quiz.details.lmssetup.tooltip=The LMS setup that defines the LMS where the exam is defined.
|
||||
sebserver.quizdiscovery.quiz.details.name=Name
|
||||
sebserver.quizdiscovery.quiz.details.name.tooltip=The name of the quiz.<br/><br/>This name is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.name.tooltip=The name of the LMS exam.<br/><br/>This name is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.description=Description
|
||||
sebserver.quizdiscovery.quiz.details.description.tooltip=The description of the quiz.<br/><br/>This description is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.description.tooltip=The description of the LMS exam.<br/><br/>This description is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.starttime=Start Time
|
||||
sebserver.quizdiscovery.quiz.details.starttime.tooltip=The start time of the quiz.<br/><br/>This time is set on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.starttime.tooltip=The start time of the LMS exam.<br/><br/>This time is set on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.endtime=End Time
|
||||
sebserver.quizdiscovery.quiz.details.endtime.tooltip=The end time of the quiz.<br/><br/>This time is set on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.endtime.tooltip=The end time of the LMS exam.<br/><br/>This time is set on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.url=Start URL
|
||||
sebserver.quizdiscovery.quiz.details.url.tooltip=The start URL on the LMS for the quiz.<br/><br/>This is defined by the LMS setup and the quiz URL
|
||||
sebserver.quizdiscovery.quiz.details.url.tooltip=The start URL on the LMS for the exam.<br/><br/>This is defined by the LMS setup and the exam URL
|
||||
sebserver.quizdiscovery.quiz.details.additional.timecreated=Creation Time
|
||||
sebserver.quizdiscovery.quiz.details.additional.timecreated.tooltip=The time when the quiz was first created<br/><br/>This time is defined by the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.additional.timecreated.tooltip=The time when the LMS exam was first created<br/><br/>This time is defined by the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.additional.course_shortname=Short Name
|
||||
sebserver.quizdiscovery.quiz.details.additional.course_shortname.tooltip=The short name of the quiz<br/><br/>This is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.additional.course_shortname.tooltip=The short name of the LMS exam<br/><br/>This is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.additional.course_fullname=Full Name
|
||||
sebserver.quizdiscovery.quiz.details.additional.course_fullname.tooltip=The full name of the quiz<br/><br/>This is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.additional.course_fullname.tooltip=The full name of the LMS exam<br/><br/>This is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.additional.course_displayname=Display Name
|
||||
sebserver.quizdiscovery.quiz.details.additional.course_displayname.tooltip=The display name of the quiz<br/><br/>This is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.additional.course_displayname.tooltip=The display name of the LMS exam<br/><br/>This is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.additional.course_summary=Summary
|
||||
sebserver.quizdiscovery.quiz.details.additional.course_summary.tooltip=The summary of the quiz<br/><br/>This is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.additional.course_summary.tooltip=The summary of the LMS exam<br/><br/>This is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.additional.timelimit=Time Limit
|
||||
sebserver.quizdiscovery.quiz.details.additional.timelimit.toolitp=The time limit of the quiz<br/><br/>This is defined on the corresponding LMS
|
||||
sebserver.quizdiscovery.quiz.details.additional.timelimit.toolitp=The time limit of the LMS exam<br/><br/>This is defined on the corresponding LMS
|
||||
|
||||
################################
|
||||
# Exam
|
||||
|
@ -393,7 +404,7 @@ sebserver.exam.consistency.missing-config= - There is no configuration defined f
|
|||
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.<br/> 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<br/>where connecting SEB clients cannot download the configuration for the exam.<br/><br/>Are you sure to remove the Configuration?
|
||||
|
||||
sebserver.exam.action.list=SEB Exam Settings
|
||||
sebserver.exam.action.list=SEB Exams
|
||||
sebserver.exam.action.list.view=View Exam
|
||||
sebserver.exam.action.list.modify=Edit Exam
|
||||
sebserver.exam.action.modify=Edit Exam
|
||||
|
@ -569,72 +580,70 @@ sebserver.exam.indicator.thresholds.list.add=Add a new threshold
|
|||
sebserver.exam.indicator.thresholds.list.remove=Delete this threshold
|
||||
|
||||
################################
|
||||
# SEB client configuration
|
||||
# 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.empty=There is currently no client configuration available. Please create a new one.
|
||||
sebserver.clientconfig.list.title=Client Configurations
|
||||
sebserver.clientconfig.list.title.subtitle=
|
||||
sebserver.clientconfig.list.actions=
|
||||
sebserver.clientconfig.list.column.institution=Institution
|
||||
sebserver.clientconfig.list.column.institution.tooltip=The institution of the SEB client configuration.<br/><br/>Use the filter above to specify the institution.<br/>{0}
|
||||
sebserver.clientconfig.list.column.institution.tooltip=The institution of the client configuration.<br/><br/>Use the filter above to specify the institution.<br/>{0}
|
||||
sebserver.clientconfig.list.column.name=Name
|
||||
sebserver.clientconfig.list.column.name.tooltip=The name of the SEB client configuration.<br/><br/>Use the filter above to narrow down a specific name.<br/>{0}
|
||||
sebserver.clientconfig.list.column.name.tooltip=The name of the client configuration.<br/><br/>Use the filter above to narrow down a specific name.<br/>{0}
|
||||
sebserver.clientconfig.list.column.date=Creation Date {0}
|
||||
sebserver.clientconfig.list.column.date.tooltip=The date when the SEB client configuration was first created.<br/><br/>Use the filter above to specify a from-date.<br/>{0}
|
||||
sebserver.clientconfig.list.column.date.tooltip=The date when the client configuration was first created.<br/><br/>Use the filter above to specify a from-date.<br/>{0}
|
||||
sebserver.clientconfig.list.column.active=Active
|
||||
sebserver.clientconfig.list.column.active.tooltip=The activity of SEB client configuration.<br/><br/>Use the filter above to specify the activity.<br/>{0}
|
||||
sebserver.clientconfig.list.column.active.tooltip=The activity of client configuration.<br/><br/>Use the filter above to specify the activity.<br/>{0}
|
||||
sebserver.clientconfig.info.pleaseSelect=Please select first a Client Configuration from the list
|
||||
sebserver.clientconfig.list.action.no.modify.privilege=No Access: A SEB client configuration from other institution cannot be modified.
|
||||
sebserver.clientconfig.list.action.no.modify.privilege=No Access: A 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.title=Client Configuration
|
||||
sebserver.clientconfig.form.title.subtitle=
|
||||
sebserver.clientconfig.form.name=Name
|
||||
sebserver.clientconfig.form.name.tooltip=The name of the SEB client configuration.<br/>Can be any name that not already exists for another SEB client configuration
|
||||
sebserver.clientconfig.form.name.tooltip=The name of the client configuration.<br/>Can be any name that not already exists for another client configuration
|
||||
sebserver.clientconfig.form.fallback=With Fallback
|
||||
sebserver.clientconfig.form.fallback.tooltip=Indicates whether this SEB client configuration has a fallback definition or not
|
||||
sebserver.clientconfig.form.fallback.tooltip=Indicates whether this client configuration has a fallback definition or not
|
||||
sebserver.clientconfig.form.fallback-url=Fallback Start URL
|
||||
sebserver.clientconfig.form.fallback-url.tooltip=A fallback URL that tells the SEB where to go when the SEB Server service is unavailable.
|
||||
sebserver.clientconfig.form.sebServerFallbackTimeout=Fallback Timeout
|
||||
sebserver.clientconfig.form.sebServerFallbackTimeout.tooltip=Defines the fallback timeout for the SEB client in milli-seconds.
|
||||
sebserver.clientconfig.form.sebServerFallbackTimeout.tooltip=Defines the fallback timeout for the SEB in milli-seconds.
|
||||
sebserver.clientconfig.form.sebServerFallbackAttempts=Connection Attempts
|
||||
sebserver.clientconfig.form.sebServerFallbackAttempts.tooltip=The number of connection attempts a SEB client is trying before switching to fallback case.
|
||||
sebserver.clientconfig.form.sebServerFallbackAttempts.tooltip=The number of connection attempts a SEB is trying before switching to fallback case.
|
||||
sebserver.clientconfig.form.sebServerFallbackAttemptInterval=Interval
|
||||
sebserver.clientconfig.form.sebServerFallbackAttemptInterval.tooltip=The interval (in milli-seconds) between connection attempts a SEB client shall use.
|
||||
sebserver.clientconfig.form.sebServerFallbackAttemptInterval.tooltip=The interval (in milli-seconds) between connection attempts a SEB shall use.
|
||||
sebserver.clientconfig.form.sebServerFallbackPasswordHash=Fallback Password
|
||||
sebserver.clientconfig.form.sebServerFallbackPasswordHash.tooltip=A password if set a SEB Client user must provide before the SEB client starts the fallback procedure.
|
||||
sebserver.clientconfig.form.sebServerFallbackPasswordHash.tooltip=A password if set a SEB Client user must provide before the SEB starts the fallback procedure.
|
||||
sebserver.clientconfig.form.sebServerFallbackPasswordHash.confirm=Confirm Password
|
||||
sebserver.clientconfig.form.sebServerFallbackPasswordHash.tooltip.confirm=Please confirm the fallback password
|
||||
sebserver.clientconfig.form.hashedQuitPassword=Quit Password
|
||||
sebserver.clientconfig.form.hashedQuitPassword.tooltip=A password if set a SEB client user must provide to be able to quit the SEB client.
|
||||
sebserver.clientconfig.form.hashedQuitPassword.tooltip=A password if set a SEB user must provide to be able to quit the SEB.
|
||||
sebserver.clientconfig.form.hashedQuitPassword.confirm=Confirm Password
|
||||
sebserver.clientconfig.form.hashedQuitPassword.tooltip.confirm=Please confirm the quit password
|
||||
|
||||
sebserver.clientconfig.form.date=Creation Date
|
||||
sebserver.clientconfig.form.date.tooltip=The date when the SEB client configuration was first created.
|
||||
sebserver.clientconfig.form.date.tooltip=The date when the client configuration was first created.
|
||||
sebserver.clientconfig.form.encryptSecret=Configuration Password
|
||||
sebserver.clientconfig.form.encryptSecret.tooltip=Define a password if the SEB client configuration shall be password-encrypted
|
||||
sebserver.clientconfig.form.encryptSecret.tooltip=Define a password if the client configuration shall be password-encrypted
|
||||
sebserver.clientconfig.form.encryptSecret.confirm=Confirm Password
|
||||
sebserver.clientconfig.form.encryptSecret.confirm.tooltip=Please retype the given password for confirmation
|
||||
sebserver.clientconfig.form.sebConfigPurpose=Configuration Purpose
|
||||
sebserver.clientconfig.form.sebConfigPurpose.tooltip=This indicates whether this client configuration shall be used to configure the SEB Client or to start an exam
|
||||
|
||||
sebserver.clientconfig.config.purpose.START_EXAM=Starting an Exam
|
||||
sebserver.clientconfig.config.purpose.START_EXAM.tooltip=If the SEB client configuration is loaded via a SEB-Link, the local configuration will not be overwritten.
|
||||
sebserver.clientconfig.config.purpose.START_EXAM.tooltip=If the client configuration is loaded via a SEB-Link, the local configuration will not be overwritten.
|
||||
sebserver.clientconfig.config.purpose.CONFIGURE_CLIENT=Configure a Client
|
||||
sebserver.clientconfig.config.purpose.CONFIGURE_CLIENT.tooltip=If the SEB client configuration is loaded via a SEB-Link, the local configuration will be overwritten by this configuration.
|
||||
sebserver.clientconfig.config.purpose.CONFIGURE_CLIENT.tooltip=If the client configuration is loaded via a SEB-Link, the local configuration will be overwritten by this configuration.
|
||||
|
||||
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
|
||||
sebserver.clientconfig.action.list.new=Add Client Configuration
|
||||
sebserver.clientconfig.action.list.view=View Client Configuration
|
||||
sebserver.clientconfig.action.list.modify=Edit Client Configuration
|
||||
sebserver.clientconfig.action.modify=Edit Client Configuration
|
||||
sebserver.clientconfig.action.save=Save Client Configuration
|
||||
sebserver.clientconfig.action.activate=Activate Client Configuration
|
||||
sebserver.clientconfig.action.deactivate=Deactivate Client Configuration
|
||||
sebserver.clientconfig.action.export=Export Client Configuration
|
||||
|
||||
################################
|
||||
# SEB Exam Configuration
|
||||
|
@ -642,6 +651,7 @@ sebserver.clientconfig.action.deactivate=Deactivate Configuration
|
|||
|
||||
sebserver.examconfig.action.list=Exam Configuration
|
||||
sebserver.examconfig.list.title=Exam Configurations
|
||||
sebserver.examconfig.list.title.subtitle=
|
||||
sebserver.examconfig.list.column.institution=Institution
|
||||
sebserver.examconfig.list.column.institution.tooltip=The institution of the SEB exam configuration.<br/><br/>Use the filter above to specify the institution.<br/>{0}
|
||||
sebserver.examconfig.list.column.name=Name
|
||||
|
@ -658,33 +668,34 @@ sebserver.examconfig.info.pleaseSelect=Please select first an Exam Configuration
|
|||
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=Configuration Settings
|
||||
sebserver.examconfig.action.list.modify.properties=Edit Configuration
|
||||
sebserver.examconfig.action.modify=Configuration Settings
|
||||
sebserver.examconfig.action.modify.properties=Edit Configuration
|
||||
sebserver.examconfig.action.view.properties=View Configuration
|
||||
sebserver.examconfig.action.save=Save
|
||||
sebserver.examconfig.action.saveToHistory=Save / Publish
|
||||
sebserver.examconfig.action.saveToHistory.success=Successfully saved in history
|
||||
sebserver.examconfig.action.list.view=View Exam Configuration
|
||||
sebserver.examconfig.action.list.modify=Exam Configuration Settings
|
||||
sebserver.examconfig.action.list.modify.properties=Edit Exam Configuration
|
||||
sebserver.examconfig.action.modify=Exam Configuration Settings
|
||||
sebserver.examconfig.action.modify.properties=Edit Exam Configuration
|
||||
sebserver.examconfig.action.view.properties=View Exam Configuration
|
||||
sebserver.examconfig.action.save=Save Exam Configuration
|
||||
sebserver.examconfig.action.saveToHistory=Save / Publish Settings
|
||||
sebserver.examconfig.action.saveToHistory.success=Exam configuration settings 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.<br/>Modify of a configuration that is currently in use would lead to inconsistency and is therefore not allowed.<br/><br/>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.undo.success=Successfully reverted exam configuration settings to last saved state
|
||||
sebserver.examconfig.action.copy=Copy Exam 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.export.plainxml=Export Exam 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.<br/><br/>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.<br/><br/>Please note that changing an attached configuration will take effect on the exam when the configuration changes are saved<br/><br/>Are you sure to change this configuration to an editable state?
|
||||
sebserver.examconfig.action.import-config.confirm=Exam Configuration successfully imported
|
||||
sebserver.examconfig.action.import.missing-password=Missing Password: The chosen exam configuration is password-protected.<br/><br/>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.<br/>Please note that changing an attached configuration will take effect on the exam when the configuration changes are saved<br/><br/>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.title.subtitle=
|
||||
sebserver.examconfig.form.name=Name
|
||||
sebserver.examconfig.form.name.tooltip=The name of the SEB exam configuration.
|
||||
sebserver.examconfig.form.description=Description
|
||||
|
@ -693,7 +704,7 @@ sebserver.examconfig.form.with-history=With History
|
|||
sebserver.examconfig.form.template=Template
|
||||
sebserver.examconfig.form.template.tooltip=The template this SEB exam configuration depends on.
|
||||
sebserver.examconfig.form.status=Status
|
||||
sebserver.examconfig.form.status.tooltip=The status of this SEB exam configuration.<br/><br/>Under Construction marks a SEB exam configuration to not be able to attach to an exam so far.<br/><br/>Ready to use marks an SEB exam configuration to be able to attach to an exam.<br/><br/>In Use marks a SEB exam configuration is already been used from one or more exam(s)
|
||||
sebserver.examconfig.form.status.tooltip=The status of this SEB exam configuration.<br/><br/>Under Construction marks a SEB exam configuration to not be able to attach to an exam so far.<br/>Ready to use marks an SEB exam configuration to be able to attach to an exam.<br/>In Use marks a SEB exam configuration is already been used from one or more exam(s)
|
||||
sebserver.examconfig.form.config-key.title=Config Key
|
||||
sebserver.examconfig.form.attached-to=Attached To Exam
|
||||
sebserver.examconfig.form.attached-to.tooltip=This SEB exam configuration is currently attached to the following exams.<br/><br/>Select an exam from the list and use the "View Exam" or Double-Click on the list to go to a specific exam.
|
||||
|
@ -1178,6 +1189,7 @@ sebserver.examconfig.props.validation.WindowsSizeValidator=Invalid number
|
|||
|
||||
sebserver.configtemplate.action.list=Configuration Templates
|
||||
sebserver.configtemplate.list.title=Configuration Templates
|
||||
sebserver.configtemplate.list.title.subtitle=
|
||||
sebserver.configtemplate.list.empty=There is currently no SEB-Exam configuration template available. Please create a new one
|
||||
sebserver.configtemplate.list.actions=
|
||||
|
||||
|
@ -1185,19 +1197,20 @@ sebserver.configtemplate.info.pleaseSelect=Please select first an Exam Configura
|
|||
|
||||
sebserver.configtemplate.action.list.new=Add Configuration Template
|
||||
sebserver.configtemplate.action.list.view=View 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.view=View Configuration Template
|
||||
sebserver.configtemplate.action.list.modify=Edit Configuration Template
|
||||
sebserver.configtemplate.action.modify=Edit Configuration Template
|
||||
sebserver.configtemplate.action.create-config=Create Exam Configuration
|
||||
sebserver.configtemplate.action.create-config.dialog=Exam Configuration
|
||||
|
||||
sebserver.configtemplate.form.title.new=Add Template
|
||||
sebserver.configtemplate.form.title.new=Add Configuration Template
|
||||
sebserver.configtemplate.form.title=Configuration Template
|
||||
sebserver.configtemplate.form.title.subtitle=
|
||||
sebserver.configtemplate.form.name=Name
|
||||
sebserver.configtemplate.form.name.tooltip=The name of the SEB exam configuration template
|
||||
sebserver.configtemplate.form.description=Description
|
||||
sebserver.configtemplate.form.description.tooltip=The description of the SEB exam configuration template
|
||||
sebserver.configtemplate.action.save=Save Template
|
||||
sebserver.configtemplate.action.save=Save Configuration Template
|
||||
|
||||
sebserver.configtemplate.attr.type.TEXT_FIELD=Text Field
|
||||
sebserver.configtemplate.attr.type.PASSWORD_FIELD=Password Field
|
||||
|
@ -1216,16 +1229,16 @@ 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.title.tooltip=Table of all SEB exam configuration attributes of this template
|
||||
sebserver.configtemplate.attrs.list.title=Exam Configuration Attributes
|
||||
sebserver.configtemplate.attrs.list.title.subtitle=Table of all exam configuration attributes of this template
|
||||
sebserver.configtemplate.attrs.list.name=Name
|
||||
sebserver.configtemplate.attrs.list.name.tooltip=The technical name of the SEB exam configuration attribute with the display name in brackets if available.<br/><br/>{0}
|
||||
sebserver.configtemplate.attrs.list.name.tooltip=The technical name of the exam configuration attribute with the display name in brackets if available.<br/><br/>{0}
|
||||
sebserver.configtemplate.attrs.list.view=View
|
||||
sebserver.configtemplate.attrs.list.view.tooltip=The view/tab where the SEB exam configuration attribute belongs to.<br/><br/>{0}
|
||||
sebserver.configtemplate.attrs.list.view.tooltip=The view/tab where the exam configuration attribute belongs to.<br/><br/>{0}
|
||||
sebserver.configtemplate.attrs.list.group=Group
|
||||
sebserver.configtemplate.attrs.list.group.tooltip=The group on the view/tab where the SEB exam configuration attribute belongs to.<br/><br/>{0}
|
||||
sebserver.configtemplate.attrs.list.group.tooltip=The group on the view/tab where the exam configuration attribute belongs to.<br/><br/>{0}
|
||||
sebserver.configtemplate.attrs.list.type=Type
|
||||
sebserver.configtemplate.attrs.list.type.tooltip=The type of the SEB exam configuration attribute.<br/><br/>{0}
|
||||
sebserver.configtemplate.attrs.list.type.tooltip=The type of the exam configuration attribute.<br/><br/>{0}
|
||||
|
||||
sebserver.configtemplate.attr.list.actions=
|
||||
sebserver.configtemplate.attr.list.actions.modify=Edit Attribute
|
||||
|
@ -1234,20 +1247,21 @@ 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 first an Attribute from the list
|
||||
|
||||
sebserver.configtemplate.attr.form.title=Template Attribute
|
||||
sebserver.configtemplate.attr.form.title=Configuration Template Attribute
|
||||
sebserver.configtemplate.attr.form.title.subtitle=
|
||||
sebserver.configtemplate.attr.form.name=Name
|
||||
sebserver.configtemplate.attr.form.name.tooltip=The technical name of the SEB exam configuration attribute with the display name in brackets if available.
|
||||
sebserver.configtemplate.attr.form.name.tooltip=The technical name of the exam configuration attribute with the display name in brackets if available.
|
||||
sebserver.configtemplate.attr.form.type=Type
|
||||
sebserver.configtemplate.attr.form.type.tooltip=The type of the SEB exam configuration attribute.
|
||||
sebserver.configtemplate.attr.form.type.tooltip=The type of the exam configuration attribute.
|
||||
sebserver.configtemplate.attr.form.view=View
|
||||
sebserver.configtemplate.attr.form.view.tooltip=The view/tab where the SEB exam configuration attribute belongs to.
|
||||
sebserver.configtemplate.attr.form.view.tooltip=The view/tab where the exam configuration attribute belongs to.
|
||||
sebserver.configtemplate.attr.form.group=Group
|
||||
sebserver.configtemplate.attr.form.group.tooltip=The group on the view/tab where the SEB exam configuration attribute belongs to.
|
||||
sebserver.configtemplate.attr.form.value=Template Attribute Value
|
||||
sebserver.configtemplate.attr.form.group.tooltip=The group on the view/tab where the exam configuration attribute belongs to.
|
||||
sebserver.configtemplate.attr.form.value=Configuration Template Attribute Value
|
||||
sebserver.configtemplate.attr.form.value.tooltip=The SEB exam configuration attribute value that can be set as default for this template
|
||||
|
||||
sebserver.configtemplate.attr.action.setdefault=Set Default Values
|
||||
sebserver.configtemplate.attr.action.template=View Template
|
||||
sebserver.configtemplate.attr.action.template=View Configuration Template
|
||||
|
||||
|
||||
################################
|
||||
|
@ -1362,8 +1376,19 @@ sebserver.userlogs.list.column.activityType=User Activity
|
|||
sebserver.userlogs.list.column.activityType.tooltip=The type of the user activity.<br/><br/>Use the filter above to specify a activity type.<br/>{0}
|
||||
sebserver.userlogs.list.column.entityType=Domain Type
|
||||
sebserver.userlogs.list.column.entityType.tooltip=The domain type of the user activity.<br/><br/>Use the filter above to specify a domain type.<br/>{0}
|
||||
sebserver.userlogs.list.column.entityId=Entity-ID
|
||||
sebserver.userlogs.list.column.message=Message
|
||||
|
||||
sebserver.userlogs.form.user=User
|
||||
sebserver.userlogs.form.user.tooltip=The user account of the user activity log.
|
||||
sebserver.userlogs.form.dateTime=Date {0}
|
||||
sebserver.userlogs.form.dateTime.tooltip=The date when the user activity log happened.
|
||||
sebserver.userlogs.form.activityType=User Activity
|
||||
sebserver.userlogs.form.activityType.tooltip=The type of the user activity.
|
||||
sebserver.userlogs.form.entityType=Domain Type
|
||||
sebserver.userlogs.form.entityType.tooltip=The domain type of the user activity.
|
||||
sebserver.userlogs.form.entityId=Entity-ID
|
||||
sebserver.userlogs.form.entityId.tooltip=The internal entity identifier of the domain object
|
||||
sebserver.userlogs.form.message=Message
|
||||
sebserver.userlogs.form.message.tooltip=The user activity log message.<br/>This is usually a data model representation of the domain object
|
||||
|
||||
sebserver.userlogs.details.title=User Activity Log Details
|
||||
sebserver.userlogs.info.pleaseSelect=Please select first a User Log from the list
|
||||
|
|
|
@ -68,8 +68,7 @@ Label.list-nav {
|
|||
|
||||
Label.h1 {
|
||||
font: 25px Arial, Helvetica, sans-serif;
|
||||
height: 28px;
|
||||
padding: 0px 12px 6px 12px;
|
||||
padding: 0px 0px 0px 5px;
|
||||
color: #1f407a;
|
||||
}
|
||||
|
||||
|
@ -87,6 +86,12 @@ Label.h3 {
|
|||
color: #1f407a;
|
||||
}
|
||||
|
||||
Label.subtitle {
|
||||
font: 14px Arial, Helvetica, sans-serif;
|
||||
padding: 0px 0px 0px 5px;
|
||||
color: #4a4a4a;
|
||||
}
|
||||
|
||||
Label.error {
|
||||
font: 10px Arial, Helvetica, sans-serif;
|
||||
color: #aa0000;
|
||||
|
@ -628,7 +633,11 @@ Tree[BORDER] {
|
|||
border: 1px solid #eceeef;
|
||||
}
|
||||
|
||||
TreeItem, TreeItem.treesection, Tree-RowOverlay:hover.treesection, Tree-RowOverlay:selected.treesection, Tree-RowOverlay:selected:hover.treesection {
|
||||
TreeItem,
|
||||
TreeItem.treesection,
|
||||
Tree-RowOverlay:hover.treesection,
|
||||
Tree-RowOverlay:selected.treesection,
|
||||
Tree-RowOverlay:selected:hover.treesection {
|
||||
font: bold 14px Arial, Helvetica, sans-serif;
|
||||
color: #1f407a;
|
||||
background-color: transparent;
|
||||
|
@ -657,18 +666,18 @@ Tree-RowOverlay:hover {
|
|||
|
||||
|
||||
Tree-RowOverlay:selected {
|
||||
background-color: #82be1e;
|
||||
color: #1F407A;
|
||||
background-color: #b5b5b5;
|
||||
color: #303030;
|
||||
}
|
||||
|
||||
Tree-RowOverlay:selected:unfocused {
|
||||
background-color: #82be1e;
|
||||
color: #1f407a;
|
||||
background-color: #b5b5b5;
|
||||
color: #303030;
|
||||
}
|
||||
|
||||
Tree-RowOverlay:selected:hover {
|
||||
background-color: #82be1e;
|
||||
color: #000000;
|
||||
color: #1f407a;
|
||||
}
|
||||
|
||||
Tree.actions {
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -23,6 +23,8 @@ import java.util.Map;
|
|||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import ch.ethz.seb.sebserver.gbl.model.institution.LmsSetupTestResult;
|
||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.lmssetup.TestLmsSetup;
|
||||
import org.apache.commons.codec.Charsets;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
|
@ -140,6 +142,7 @@ import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.useraccount.GetUs
|
|||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.useraccount.GetUserAccountNames;
|
||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.useraccount.NewUserAccount;
|
||||
import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.useraccount.SaveUserAccount;
|
||||
import org.springframework.web.servlet.DispatcherServlet;
|
||||
|
||||
public class UseCasesIntegrationTest extends GuiIntegrationTest {
|
||||
|
||||
|
@ -658,6 +661,57 @@ public class UseCasesIntegrationTest extends GuiIntegrationTest {
|
|||
.call();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(6)
|
||||
// *************************************
|
||||
// Use Case 5.5: Login as TestInstAdmin and create new Open edX LMS setup and activate
|
||||
// - login as TestInstAdmin : 987654321
|
||||
public void testUsecase5_5() {
|
||||
final RestServiceImpl restService = createRestServiceForUser(
|
||||
"TestInstAdmin",
|
||||
"987654321",
|
||||
new NewLmsSetup(),
|
||||
new TestLmsSetup(),
|
||||
new GetLmsSetupNames(),
|
||||
new GetLmsSetup(),
|
||||
new SaveLmsSetup(),
|
||||
new ActivateLmsSetup(),
|
||||
new DeactivateLmsSetup(),
|
||||
new GetQuizPage());
|
||||
|
||||
// create new LMS Setup Mockup
|
||||
Result<LmsSetup> newLMSCall = restService
|
||||
.getBuilder(NewLmsSetup.class)
|
||||
.withFormParam(Domain.LMS_SETUP.ATTR_NAME, "Test Open edx")
|
||||
.withFormParam(Domain.LMS_SETUP.ATTR_LMS_TYPE, LmsType.OPEN_EDX.name())
|
||||
.withFormParam(Domain.LMS_SETUP.ATTR_LMS_URL, "http://localhost:8080/openedxtest")
|
||||
.withFormParam(Domain.LMS_SETUP.ATTR_LMS_CLIENTNAME, "test")
|
||||
.withFormParam(Domain.LMS_SETUP.ATTR_LMS_CLIENTSECRET, "test")
|
||||
.call();
|
||||
|
||||
assertNotNull(newLMSCall);
|
||||
assertFalse(newLMSCall.hasError());
|
||||
LmsSetup lmsSetup = newLMSCall.get();
|
||||
assertEquals("Test Open edx", lmsSetup.name);
|
||||
assertFalse(lmsSetup.isActive());
|
||||
|
||||
// activate lms setup
|
||||
LmsSetupTestResult testResult = restService
|
||||
.getBuilder(TestLmsSetup.class)
|
||||
.withURIVariable(API.PARAM_MODEL_ID, lmsSetup.getModelId())
|
||||
.call()
|
||||
.getOrThrow();
|
||||
|
||||
DispatcherServlet dispatcherServlet = mockMvc.getDispatcherServlet();
|
||||
|
||||
assertNotNull(testResult);
|
||||
assertFalse(testResult.isOk());
|
||||
assertEquals("[Error [errorType=TOKEN_REQUEST, message=Failed to gain access token from OpenEdX Rest API:\n" +
|
||||
" tried token endpoints: [/oauth2/access_token]]]", String.valueOf(testResult.errors));
|
||||
|
||||
// TODO how to mockup a Open edX response
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(6)
|
||||
// *************************************
|
||||
|
@ -1717,6 +1771,27 @@ public class UseCasesIntegrationTest extends GuiIntegrationTest {
|
|||
assertNotNull(newTemplValue);
|
||||
assertEquals("123", newTemplValue.value);
|
||||
|
||||
// reset template values
|
||||
TemplateAttribute attribute = restService
|
||||
.getBuilder(ResetTemplateValues.class)
|
||||
.withURIVariable(API.PARAM_PARENT_MODEL_ID, String.valueOf(template.id))
|
||||
.withURIVariable(API.PARAM_MODEL_ID, templateAttr.getModelId())
|
||||
.call()
|
||||
.getOrThrow();
|
||||
|
||||
assertNotNull(attribute);
|
||||
assertEquals("hashedAdminPassword", attribute.getConfigAttribute().name);
|
||||
|
||||
restService
|
||||
.getBuilder(GetConfigurationValues.class)
|
||||
.withQueryParam(ConfigurationValue.FILTER_ATTR_CONFIGURATION_ID, String.valueOf(fallow_up.id))
|
||||
.withQueryParam(ConfigurationValue.FILTER_ATTR_CONFIGURATION_ATTRIBUTE_ID, savedTAttribute.getModelId())
|
||||
.call()
|
||||
.getOrThrow()
|
||||
.stream()
|
||||
.filter(cValue -> cValue.attributeId.equals(attribute.getConfigAttribute().id))
|
||||
.findFirst()
|
||||
.ifPresent(cValue -> assertNull(cValue.value));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue