Skip to content
Snippets Groups Projects
Commit b6edef60 authored by uhensler's avatar uhensler
Browse files

Merge branch 'OpenOLAT_15.2'

parents f74ad81f f3dd2f87
No related branches found
No related tags found
No related merge requests found
Showing
with 61 additions and 339 deletions
......@@ -177,7 +177,7 @@ public class SurveyCourseNode extends AbstractAccessableCourseNode {
RepositoryEntry ores = userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
SurveyRunSecurityCallback secCallback = new SurveyRunSecurityCallback(getModuleConfiguration(), userCourseEnv);
Identity identity = userCourseEnv.getIdentityEnvironment().getIdentity();
return new SurveyStatisticResourceResult(of(ores, getIdent()), identity, secCallback);
return new SurveyStatisticResourceResult(ores, this, identity, secCallback);
}
return null;
}
......
......@@ -140,7 +140,9 @@ public class DirectoryController extends BasicController implements Activateable
linkNames.add(new DocumentInfos(link.getComponentName(), uploadedBy, lastModified));
}
mainVC.contextPut("linkNames", linkNames);
bulkReviewLink.setVisible(!linkNames.isEmpty());
if(bulkReviewLink != null) {
bulkReviewLink.setVisible(!linkNames.isEmpty());
}
putInitialPanel(mainVC);
}
......
......@@ -19,6 +19,8 @@
*/
package org.olat.course.nodes.st;
import java.util.stream.Collectors;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.form.flexible.FormItem;
import org.olat.core.gui.components.form.flexible.FormItemContainer;
......@@ -269,12 +271,7 @@ public class STCourseNodeDisplayConfigFormController extends FormBasicController
if (selectedPeekviewChildren == null || selectedPeekviewChildren.getSelectedKeys().isEmpty()) {
moduleConfig.remove(STCourseNodeEditController.CONFIG_KEY_PEEKVIEW_CHILD_NODES);
} else {
StringBuilder config = new StringBuilder();
for (String childKey : selectedPeekviewChildren.getSelectedKeys()) {
if (selectedPeekviewChildNodesConfig.length() > 0) config.append(",");
config.append(childKey);
}
selectedPeekviewChildNodesConfig = config.toString();
selectedPeekviewChildNodesConfig = selectedPeekviewChildren.getSelectedKeys().stream().collect(Collectors.joining(","));
moduleConfig.set(STCourseNodeEditController.CONFIG_KEY_PEEKVIEW_CHILD_NODES, selectedPeekviewChildNodesConfig);
}
} else if (STCourseNodeEditController.CONFIG_VALUE_DISPLAY_DELEGATE.equals(displayType)) {
......
/**
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at the
* <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Initial code contributed and copyrighted by<br>
* frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.course.nodes.survey;
import static org.olat.modules.forms.EvaluationFormSurveyIdentifier.of;
import java.util.UUID;
import org.apache.logging.log4j.Logger;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.link.Link;
import org.olat.core.gui.components.link.LinkFactory;
import org.olat.core.gui.components.velocity.VelocityContainer;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.controller.BasicController;
import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
import org.olat.core.gui.control.generic.messages.MessageUIFactory;
import org.olat.core.gui.translator.Translator;
import org.olat.core.id.Identity;
import org.olat.core.id.OLATResourceable;
import org.olat.core.logging.Tracing;
import org.olat.core.util.UserSession;
import org.olat.core.util.Util;
import org.olat.course.assessment.AssessmentManager;
import org.olat.course.nodes.SurveyCourseNode;
import org.olat.course.nodes.survey.ui.SurveyDeleteDataConfirmationController;
import org.olat.course.nodes.survey.ui.SurveyReportingController;
import org.olat.course.run.userview.UserCourseEnvironment;
import org.olat.modules.assessment.Role;
import org.olat.modules.forms.EvaluationFormManager;
import org.olat.modules.forms.EvaluationFormParticipation;
import org.olat.modules.forms.EvaluationFormParticipationIdentifier;
import org.olat.modules.forms.EvaluationFormSession;
import org.olat.modules.forms.EvaluationFormSurvey;
import org.olat.modules.forms.ui.EvaluationFormExecutionController;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
* Initial date: 24.04.2018<br>
* @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
*
*/
public class SurveyRunController extends BasicController {
private static final Logger log = Tracing.createLoggerFor(SurveyRunController.class);
private VelocityContainer mainVC;
private Link resetLink;
private CloseableModalController cmc;
private SurveyDeleteDataConfirmationController deleteDataConfirmationCtrl;
private EvaluationFormExecutionController executionCtrl;
private final UserCourseEnvironment userCourseEnv;
private final SurveyCourseNode courseNode;
private final OLATResourceable ores;
private final String subIdent;
private final SurveyRunSecurityCallback secCallback;
private EvaluationFormSurvey survey;
private EvaluationFormParticipation participation;
@Autowired
private EvaluationFormManager evaluationFormManager;
public SurveyRunController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv,
SurveyCourseNode courseNode, SurveyRunSecurityCallback secCallback) {
super(ureq, wControl);
this.userCourseEnv = userCourseEnv;
this.courseNode = courseNode;
this.ores = userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
this.subIdent = courseNode.getIdent();
this.secCallback = secCallback;
mainVC = createVelocityContainer("run");
putInitialPanel(mainVC);
initVelocityContainer(ureq);
}
private void initVelocityContainer(UserRequest ureq) {
mainVC.clear();
if (secCallback.canRunCommands()) {
resetLink = LinkFactory.createButtonSmall("run.reset", mainVC, this);
resetLink.setIconLeftCSS("o_icon o_icon-fw o_icon_surv_reset");
mainVC.contextPut("withCmds", Boolean.TRUE);
}
survey = evaluationFormManager.loadSurvey(of(ores, subIdent));
if (survey == null) {
String title = getTranslator().translate("run.no.survey.title");
String message = getTranslator().translate("run.no.survey.message");
doShowMessage(ureq, title, message);
log.warn("Published survey course node has no survey in the database!");
return;
}
doShowView(ureq);
}
private void doShowView(UserRequest ureq) {
if (secCallback.canParticipate()) {
participation = loadOrCreateParticipation(ureq);
}
if (secCallback.canViewReporting(participation)) {
doShowReporting(ureq);
} else if (secCallback.hasParticipated(participation)) {
doShowParticipationDone(ureq);
} else if (secCallback.isReadOnly()) {
doShowReadOnly(ureq);
} else if (secCallback.canExecute(participation)) {
doShowExecution(ureq);
} else {
doShowNoAccess(ureq);
}
}
private EvaluationFormParticipation loadOrCreateParticipation(UserRequest ureq) {
if (secCallback.isGuestOnly()) {
UserSession usess = ureq.getUserSession();
String anonymousIdentifier = getAnonymousIdentifier(usess);
EvaluationFormParticipationIdentifier identifier = new EvaluationFormParticipationIdentifier("course-node", anonymousIdentifier);
return loadOrCreateParticipation(identifier);
}
return loadOrCreateParticipation(getIdentity());
}
private String getAnonymousIdentifier(UserSession usess) {
String sessionId = usess.getSessionInfo().getSession().getId();
Object id = usess.getEntry(sessionId);
if (id instanceof String) {
return (String) id;
}
String newId = UUID.randomUUID().toString();
usess.putEntryInNonClearedStore(sessionId, newId);
return newId;
}
private EvaluationFormParticipation loadOrCreateParticipation(EvaluationFormParticipationIdentifier identifier) {
EvaluationFormParticipation loadedParticipation = evaluationFormManager.loadParticipationByIdentifier(survey, identifier);
if (loadedParticipation == null) {
loadedParticipation = evaluationFormManager.createParticipation(survey, identifier);
loadedParticipation.setAnonymous(true);
loadedParticipation = evaluationFormManager.updateParticipation(loadedParticipation);
}
return loadedParticipation;
}
private EvaluationFormParticipation loadOrCreateParticipation(Identity executor) {
EvaluationFormParticipation loadedParticipation = evaluationFormManager.loadParticipationByExecutor(survey, executor);
if (loadedParticipation == null) {
loadedParticipation = evaluationFormManager.createParticipation(survey, executor);
loadedParticipation.setAnonymous(true);
loadedParticipation = evaluationFormManager.updateParticipation(loadedParticipation);
}
return loadedParticipation;
}
private EvaluationFormSession loadOrCreateSesssion(EvaluationFormParticipation participation) {
EvaluationFormSession session = evaluationFormManager.loadSessionByParticipation(participation);
if (session == null) {
session = evaluationFormManager.createSession(participation);
}
return session;
}
@Override
protected void event(UserRequest ureq, Component source, Event event) {
if (source == resetLink) {
doConfirmDeleteAllData(ureq);
}
}
@Override
protected void event(UserRequest ureq, Controller source, Event event) {
if (source == executionCtrl && event == Event.DONE_EVENT) {
doPostExecution(ureq);
} else if(source == deleteDataConfirmationCtrl) {
if (event == Event.DONE_EVENT) {
doDeleteAllData(ureq);
}
cmc.deactivate();
cleanUp();
}
super.event(ureq, source, event);
}
private void cleanUp() {
removeAsListenerAndDispose(deleteDataConfirmationCtrl);
removeAsListenerAndDispose(cmc);
deleteDataConfirmationCtrl = null;
cmc = null;
}
private void doPostExecution(UserRequest ureq) {
AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
Identity mySelf = userCourseEnv.getIdentityEnvironment().getIdentity();
am.incrementNodeAttempts(courseNode, mySelf, userCourseEnv, Role.auto);
doShowView(ureq);
}
private void doConfirmDeleteAllData(UserRequest ureq) {
long countOfSessions = evaluationFormManager.getCountOfSessions(survey);
deleteDataConfirmationCtrl = new SurveyDeleteDataConfirmationController(ureq, getWindowControl(), countOfSessions);
listenTo(deleteDataConfirmationCtrl);
cmc = new CloseableModalController(getWindowControl(), translate("close"),
deleteDataConfirmationCtrl.getInitialComponent(), true, translate("run.command.delete.data.all.title"), true);
listenTo(cmc);
cmc.activate();
}
private void doDeleteAllData(UserRequest ureq) {
evaluationFormManager.deleteAllData(survey);
initVelocityContainer(ureq);
}
private void doShowExecution(UserRequest ureq) {
removeAllComponents();
EvaluationFormSession session = loadOrCreateSesssion(participation);
executionCtrl = new EvaluationFormExecutionController(ureq, getWindowControl(), session);
listenTo(executionCtrl);
mainVC.put("execution", executionCtrl.getInitialComponent());
}
private void doShowReporting(UserRequest ureq) {
removeAllComponents();
participation = loadOrCreateParticipation(ureq);
Controller reportingCtrl = new SurveyReportingController(ureq, getWindowControl(), survey);
mainVC.put("reporting", reportingCtrl.getInitialComponent());
}
private void doShowNoAccess(UserRequest ureq) {
String title = getTranslator().translate("run.noaccess.title");
String message = getTranslator().translate("run.noaccess.message");
doShowMessage(ureq, title, message);
}
private void doShowReadOnly(UserRequest ureq) {
Translator trans = Util.createPackageTranslator(SurveyCourseNode.class, getLocale());
String title = trans.translate("freezenoaccess.title");
String message = trans.translate("freezenoaccess.message");
doShowMessage(ureq, title, message);
}
private void doShowParticipationDone(UserRequest ureq) {
String title = getTranslator().translate("run.participation.done.title");
String message = getTranslator().translate("run.participation.done.message");
doShowMessage(ureq, title, message);
}
private void doShowMessage(UserRequest ureq, String title, String message) {
removeAllComponents();
Controller ctrl = MessageUIFactory.createInfoMessage(ureq, getWindowControl(), title, message);
mainVC.put("message", ctrl.getInitialComponent());
}
private void removeAllComponents() {
mainVC.remove("message");
mainVC.remove("execution");
mainVC.remove("reporting");
}
@Override
protected void doDispose() {
removeAsListenerAndDispose(executionCtrl);
executionCtrl = null;
}
}
......@@ -25,13 +25,17 @@ import org.olat.core.gui.components.velocity.VelocityContainer;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.controller.BasicController;
import org.olat.course.nodes.SurveyCourseNode;
import org.olat.course.nodes.survey.SurveyManager;
import org.olat.modules.ceditor.DataStorage;
import org.olat.modules.forms.EvaluationFormSurvey;
import org.olat.modules.forms.Figures;
import org.olat.modules.forms.FiguresBuilder;
import org.olat.modules.forms.SessionFilter;
import org.olat.modules.forms.SessionFilterFactory;
import org.olat.modules.forms.model.xml.Form;
import org.olat.modules.forms.ui.EvaluationFormReportsController;
import org.olat.repository.RepositoryEntry;
import org.springframework.beans.factory.annotation.Autowired;
/**
......@@ -47,14 +51,20 @@ public class SurveyReportingController extends BasicController {
@Autowired
private SurveyManager surveyManager;
public SurveyReportingController(UserRequest ureq, WindowControl wControl, EvaluationFormSurvey survey) {
public SurveyReportingController(UserRequest ureq, WindowControl wControl, RepositoryEntry courseEntry,
SurveyCourseNode courseNode, EvaluationFormSurvey survey) {
super(ureq, wControl);
mainVC = createVelocityContainer("reporting");
Form form = surveyManager.loadForm(survey);
DataStorage storage = surveyManager.loadStorage(survey);
SessionFilter filter = SessionFilterFactory.createSelectDone(survey);
EvaluationFormReportsController reportsCtrl = new EvaluationFormReportsController(ureq, wControl, form, storage, filter);
Figures figures = FiguresBuilder.builder()
.addCustomFigure(translate("figure.course"), courseEntry.getDisplayname())
.addCustomFigure(translate("figure.course.node"), courseNode.getShortTitle())
.build();
EvaluationFormReportsController reportsCtrl = new EvaluationFormReportsController(ureq, wControl, form, storage, filter, figures);
mainVC.put("report", reportsCtrl.getInitialComponent());
putInitialPanel(mainVC);
......
......@@ -65,6 +65,7 @@ public class SurveyRunController extends BasicController {
private EvaluationFormExecutionController executionCtrl;
private final UserCourseEnvironment userCourseEnv;
private final RepositoryEntry courseEntry;
private final SurveyCourseNode courseNode;
private final SurveyRunSecurityCallback secCallback;
private final EvaluationFormSurveyIdentifier surveyIdent;
......@@ -79,7 +80,7 @@ public class SurveyRunController extends BasicController {
super(ureq, wControl);
this.userCourseEnv = userCourseEnv;
this.courseNode = courseNode;
RepositoryEntry courseEntry = userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
this.courseEntry = userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
this.surveyIdent = surveyManager.getSurveyIdentifier(courseNode, courseEntry);
this.secCallback = secCallback;
......@@ -204,7 +205,7 @@ public class SurveyRunController extends BasicController {
private void doShowReporting(UserRequest ureq) {
removeAllComponents();
participation = loadOrCreateParticipation(ureq);
Controller reportingCtrl = new SurveyReportingController(ureq, getWindowControl(), survey);
Controller reportingCtrl = new SurveyReportingController(ureq, getWindowControl(), courseEntry, courseNode, survey);
mainVC.put("reporting", reportingCtrl.getInitialComponent());
}
......
......@@ -30,12 +30,14 @@ import org.olat.core.gui.control.generic.messages.SimpleMessageController;
import org.olat.core.gui.translator.Translator;
import org.olat.core.id.Identity;
import org.olat.core.util.Util;
import org.olat.course.nodes.SurveyCourseNode;
import org.olat.course.nodes.survey.SurveyRunSecurityCallback;
import org.olat.course.statistic.StatisticResourceResult;
import org.olat.modules.forms.EvaluationFormManager;
import org.olat.modules.forms.EvaluationFormParticipation;
import org.olat.modules.forms.EvaluationFormSurvey;
import org.olat.modules.forms.EvaluationFormSurveyIdentifier;
import org.olat.repository.RepositoryEntry;
import org.springframework.beans.factory.annotation.Autowired;
/**
......@@ -46,16 +48,18 @@ import org.springframework.beans.factory.annotation.Autowired;
*/
public class SurveyStatisticResourceResult implements StatisticResourceResult {
private final EvaluationFormSurveyIdentifier surveyIdent;
private final RepositoryEntry courseEntry;
private final SurveyCourseNode courseNode;
private final Identity identity;
private final SurveyRunSecurityCallback secCallback;
@Autowired
private EvaluationFormManager evaluationFormManager;
public SurveyStatisticResourceResult(EvaluationFormSurveyIdentifier surveyIdent, Identity identity,
public SurveyStatisticResourceResult(RepositoryEntry courseEntry, SurveyCourseNode courseNode, Identity identity,
SurveyRunSecurityCallback secCallback) {
this.surveyIdent = surveyIdent;
this.courseEntry = courseEntry;
this.courseNode = courseNode;
this.identity = identity;
this.secCallback = secCallback;
CoreSpringFactory.autowireObject(this);
......@@ -69,10 +73,10 @@ public class SurveyStatisticResourceResult implements StatisticResourceResult {
@Override
public Controller getController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel,
TreeNode selectedNode) {
EvaluationFormSurvey survey = evaluationFormManager.loadSurvey(surveyIdent);
EvaluationFormSurvey survey = evaluationFormManager.loadSurvey(EvaluationFormSurveyIdentifier.of(courseEntry, courseNode.getIdent()));
EvaluationFormParticipation participation = evaluationFormManager.loadParticipationByExecutor(survey, identity);
if (secCallback.canViewReporting(participation)) {
return new SurveyReportingController(ureq, wControl, survey);
return new SurveyReportingController(ureq, wControl, courseEntry, courseNode, survey);
}
Translator translator = Util.createPackageTranslator(SurveyReportingController.class, ureq.getLocale());
String noAccess = translator.translate("report.noaccess");
......
course.node.link.text=Umfrage
edit.choose=W\u00E4hlen, erstellen oder importieren
edit.choose.evaluation.form=Fragebogen ausw\u00E4hlen
edit.choose=W\u00e4hlen, erstellen oder importieren
edit.choose.evaluation.form=Fragebogen ausw\u00e4hlen
edit.edit=Bearbeiten
edit.execution=Teilnahme durch
edit.execution.by.owner=Besitzer
edit.execution.by.coach=Betreuer
edit.execution.by.participant=Teilnehmer
edit.execution.by.guest=G\u00E4ste
edit.execution.by.guest=G\u00e4ste
edit.preview=Vorschau
edit.evaluation.form=Fragebogen
edit.evaluation.form.link={0}
edit.evaluation.form.not.choosen=Kein Fragebogen ausw\u00E4hlt
edit.evaluation.form.not.choosen=Kein Fragebogen ausw\u00e4hlt
edit.replace=Ersetzen
edit.report=Resultate sichtbar f\u00FCr
edit.report=Resultate sichtbar f\u00fcr
edit.report.for.owner=Besitzer
edit.report.for.coach=Betreuer
edit.report.for.participant=Teilnehmer
edit.report.for.guest=G\u00E4ste
edit.report.for.guest=G\u00e4ste
edit.title=Umfrage
error.repo.no.key.long=F\u00FCr "{0}" muss in der Konfiguration ein Fragebogen im Reiter "Umfrage" ausgew\u00E4hlt werden.
error.repo.no.key.short=Es ist kein Fragebogen ausw\u00E4hlt.
error.repo.entry.missing=Der Fragebogen, welchen Sie anzeigen m\u00F6chten, wurde in der Zwischenzeit aus der Ablage der Lernressourcen gel\u00F6scht.
error.repo.entry.not.replaceable=Der Fragebogen kann nicht mehr ge\u00E4ndert werden.
error.repo.no.key.long=F\u00fcr "{0}" muss in der Konfiguration ein Fragebogen im Reiter "Umfrage" ausgew\u00e4hlt werden.
error.repo.no.key.short=Es ist kein Fragebogen ausw\u00e4hlt.
error.repo.entry.missing=Der Fragebogen, welchen Sie anzeigen m\u00f6chten, wurde in der Zwischenzeit aus der Ablage der Lernressourcen gel\u00f6scht.
error.repo.entry.not.replaceable=Der Fragebogen kann nicht mehr ge\u00e4ndert werden.
figure.course=Kurs
figure.course.node=Kursbaustein
fully.assessed.trigger.status.done=Fragebogen eingereicht
pane.tab.config=Umfrage
report.noaccess=Sie haben keinen Zugang zu den Statistiken dieser Umfrage. Entweder fehlen ihnen die entsprechenden Berechtigungen oder Sie haben an der Umfrage noch nicht teilgenommen.
run.command.delete.data.all=Umfrage zur\u00FCksetzen
run.command.delete.data.all.confirmation.error=Best\u00E4tigen Sie bitte das L\u00F6schen.
run.command.delete.data.all.button=L\u00F6schen
run.command.delete.data.all.check=Alle Antworten l\u00F6schen
run.command.delete.data.all.message=Wollen Sie wirklich alle Antworten l\u00F6schen? Es haben bereits {0} Benutzer/innen an dieser Umfrage teilgenommen. Die Antworten k\u00F6nnen nicht wieder hergestellt werden!
run.command.delete.data.all.title=Alle Antworten l\u00F6schen
run.participation.done.message=Sie haben den Fragebogen bereits ausgef\u00FCllt. Vielen Dank f\u00FCr Ihre Teilnahme.
run.participation.done.title=Fragebogen ausgef\u00FCllt
run.noaccess.message=Dieser Teil des Kurses ist f\u00FCr Sie nicht zug\u00E4nglich.
run.command.delete.data.all=Umfrage zur\u00fcksetzen
run.command.delete.data.all.confirmation.error=Best\u00e4tigen Sie bitte das L\u00f6schen.
run.command.delete.data.all.button=L\u00f6schen
run.command.delete.data.all.check=Alle Antworten l\u00f6schen
run.command.delete.data.all.message=Wollen Sie wirklich alle Antworten l\u00f6schen? Es haben bereits {0} Benutzer/innen an dieser Umfrage teilgenommen. Die Antworten k\u00f6nnen nicht wieder hergestellt werden!
run.command.delete.data.all.title=Alle Antworten l\u00f6schen
run.participation.done.message=Sie haben den Fragebogen bereits ausgef\u00fcllt. Vielen Dank f\u00fcr Ihre Teilnahme.
run.participation.done.title=Fragebogen ausgef\u00fcllt
run.noaccess.message=Dieser Teil des Kurses ist f\u00fcr Sie nicht zug\u00e4nglich.
run.noaccess.title=Kein Zugang
run.no.survey.title=Umfrage nicht bereit.
run.no.survey.message=Diese Umfrage steht nicht zur Teilnahme bereit.
run.reset=Zur\u00FCcksetzen
run.reset=Zur\u00fccksetzen
......@@ -22,6 +22,8 @@ error.repo.no.key.long=For "{0}" you have to select a questionnaire in the tab "
error.repo.no.key.short=No questionnaire chosen.
error.repo.entry.missing=This survey has been deleted in the meantime within the storage folder of learning resources.
error.repo.entry.not.replaceable=The questionnaire can not be replaced anymore.
figure.course=Course
figure.course.node=Course element
fully.assessed.trigger.status.done=Survey finished
pane.tab.config=Survey
report.noaccess=You do not have access to the statistics of this survey. Either you do not have the required rights or you do not have finished your participation.
......
......@@ -71,13 +71,9 @@ public class EvaluationFormReportsController extends BasicController {
@Autowired
private PdfModule pdfModule;
public EvaluationFormReportsController(UserRequest ureq, WindowControl wControl, Form form, DataStorage storage, SessionFilter filter) {
this(ureq, wControl, form, storage, filter, null);
}
public EvaluationFormReportsController(UserRequest ureq, WindowControl wControl, Form form, DataStorage storage, SessionFilter filter,
ReportSegment show) {
this(ureq, wControl, form, storage, filter, show, null, null, null);
public EvaluationFormReportsController(UserRequest ureq, WindowControl wControl, Form form, DataStorage storage,
SessionFilter filter, Figures figures) {
this(ureq, wControl, form, storage, filter, null, null, figures, null);
}
public EvaluationFormReportsController(UserRequest ureq, WindowControl wControl, Form form, DataStorage storage, SessionFilter filter,
......
......@@ -536,11 +536,10 @@ public class CourseEditorPageFragment {
* @return
*/
public PublisherPageFragment publish() {
WebElement publishButton = browser.findElement(publishButtonBy);
Assert.assertTrue(publishButton.isDisplayed());
publishButton.click();
OOGraphene.waitElement(publishButtonBy, browser);
browser.findElement(publishButtonBy).click();
OOGraphene.waitBusyAndScrollTop(browser);
OOGraphene.waitElement(By.cssSelector("div.o_sel_publish_nodes"), 5, browser);
OOGraphene.waitElement(By.cssSelector("div.o_sel_publish_nodes"), browser);
return new PublisherPageFragment(browser);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment