SEBSERV-259

This commit is contained in:
anhefti 2022-01-24 11:13:07 +01:00
parent 7a71839124
commit fad3810ba8
2 changed files with 37 additions and 3 deletions

View file

@ -572,6 +572,11 @@ public enum ActionDefinition {
ImageIcon.IMPORT,
ActionCategory.FORM),
SEB_EXAM_CONFIG_COPY_CONFIG_FROM_LIST(
new LocTextKey("sebserver.examconfig.action.copy"),
ImageIcon.COPY,
// PageStateDefinitionImpl.SEB_EXAM_CONFIG_PROP_EDIT,
ActionCategory.SEB_EXAM_CONFIG_LIST),
SEB_EXAM_CONFIG_COPY_CONFIG(
new LocTextKey("sebserver.examconfig.action.copy"),
ImageIcon.COPY,

View file

@ -13,6 +13,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.EntityType;
import ch.ethz.seb.sebserver.gbl.model.Domain;
import ch.ethz.seb.sebserver.gbl.model.Entity;
@ -68,6 +69,7 @@ public class SEBExamConfigList implements TemplateComposer {
private final PageService pageService;
private final SEBExamConfigImportPopup sebExamConfigImportPopup;
private final SEBExamConfigCreationPopup sebExamConfigCreationPopup;
private final CurrentUser currentUser;
private final ResourceService resourceService;
private final int pageSize;
@ -75,10 +77,12 @@ public class SEBExamConfigList implements TemplateComposer {
protected SEBExamConfigList(
final PageService pageService,
final SEBExamConfigImportPopup sebExamConfigImportPopup,
final SEBExamConfigCreationPopup sebExamConfigCreationPopup,
@Value("${sebserver.gui.list.page.size:20}") final Integer pageSize) {
this.pageService = pageService;
this.sebExamConfigImportPopup = sebExamConfigImportPopup;
this.sebExamConfigCreationPopup = sebExamConfigCreationPopup;
this.currentUser = pageService.getCurrentUser();
this.resourceService = pageService.getResourceService();
this.pageSize = pageSize;
@ -149,7 +153,8 @@ public class SEBExamConfigList implements TemplateComposer {
.withSelectionListener(this.pageService.getSelectionPublisher(
pageContext,
ActionDefinition.SEB_EXAM_CONFIG_VIEW_PROP_FROM_LIST,
ActionDefinition.SEB_EXAM_CONFIG_MODIFY_PROP_FROM_LIST))
ActionDefinition.SEB_EXAM_CONFIG_MODIFY_PROP_FROM_LIST,
ActionDefinition.SEB_EXAM_CONFIG_COPY_CONFIG_FROM_LIST))
.compose(pageContext.copyOf(content));
@ -160,14 +165,38 @@ public class SEBExamConfigList implements TemplateComposer {
.publishIf(examConfigGrant::iw)
.newAction(ActionDefinition.SEB_EXAM_CONFIG_VIEW_PROP_FROM_LIST)
.withSelect(configTable::getSelection, PageAction::applySingleSelectionAsEntityKey,
.withSelect(
configTable::getSelection,
PageAction::applySingleSelectionAsEntityKey,
EMPTY_SELECTION_TEXT_KEY)
.publish(false)
.newAction(ActionDefinition.SEB_EXAM_CONFIG_MODIFY_PROP_FROM_LIST)
.withSelect(
configTable.getGrantedSelection(this.currentUser, NO_MODIFY_PRIVILEGE_ON_OTHER_INSTITUTION),
PageAction::applySingleSelectionAsEntityKey, EMPTY_SELECTION_TEXT_KEY)
PageAction::applySingleSelectionAsEntityKey,
EMPTY_SELECTION_TEXT_KEY)
.publishIf(() -> examConfigGrant.im(), false)
.newAction(ActionDefinition.SEB_EXAM_CONFIG_COPY_CONFIG_FROM_LIST)
//.withEntityKey(entityKey)
.withSelect(
configTable.getGrantedSelection(this.currentUser, NO_MODIFY_PRIVILEGE_ON_OTHER_INSTITUTION),
pageAction -> {
this.sebExamConfigCreationPopup.configCreationFunction(
pageAction.pageContext()
.withEntityKey(pageAction.getSingleSelection())
.withAttribute(
PageContext.AttributeKeys.COPY_AS_TEMPLATE,
Constants.FALSE_STRING)
.withAttribute(
PageContext.AttributeKeys.CREATE_FROM_TEMPLATE,
Constants.FALSE_STRING))
.apply(pageAction);
return pageAction;
},
EMPTY_SELECTION_TEXT_KEY)
.noEventPropagation()
.publishIf(() -> examConfigGrant.im(), false)
.newAction(ActionDefinition.SEB_EXAM_CONFIG_IMPORT_TO_NEW_CONFIG)