From 5f837a83c72f33d8283b3dcb815313aa83dcca7f Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Mon, 8 Oct 2018 14:20:43 +0200 Subject: [PATCH] OO-3304: Show the saved analysis presentation name in breadcrumb --- .../analysis/AnalysisPresentation.java | 5 +- .../quality/analysis/EvaluationFormView.java | 5 +- .../model/AnalysisPresentationImpl.java | 10 ---- .../model/EvaluationFormViewImpl.java | 10 ---- .../analysis/ui/AnalysisListController.java | 53 +++++++++++++------ .../quality/analysis/ui/AnalysisRow.java | 10 ---- .../quality/ui/QualityHomeController.java | 3 +- 7 files changed, 40 insertions(+), 56 deletions(-) diff --git a/src/main/java/org/olat/modules/quality/analysis/AnalysisPresentation.java b/src/main/java/org/olat/modules/quality/analysis/AnalysisPresentation.java index c496b974901..e0f8c4b9841 100644 --- a/src/main/java/org/olat/modules/quality/analysis/AnalysisPresentation.java +++ b/src/main/java/org/olat/modules/quality/analysis/AnalysisPresentation.java @@ -21,7 +21,6 @@ package org.olat.modules.quality.analysis; import org.olat.core.id.CreateInfo; import org.olat.core.id.ModifiedInfo; -import org.olat.core.id.OLATResourceable; import org.olat.repository.RepositoryEntry; /** @@ -30,9 +29,7 @@ import org.olat.repository.RepositoryEntry; * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com * */ -public interface AnalysisPresentation extends AnalysisPresentationRef, OLATResourceable, CreateInfo, ModifiedInfo { - - public String RESOURCEABLE_TYPE = "presentation"; +public interface AnalysisPresentation extends AnalysisPresentationRef, CreateInfo, ModifiedInfo { public String getName(); diff --git a/src/main/java/org/olat/modules/quality/analysis/EvaluationFormView.java b/src/main/java/org/olat/modules/quality/analysis/EvaluationFormView.java index 4f70dab3d52..b78c5b48a47 100644 --- a/src/main/java/org/olat/modules/quality/analysis/EvaluationFormView.java +++ b/src/main/java/org/olat/modules/quality/analysis/EvaluationFormView.java @@ -21,7 +21,6 @@ package org.olat.modules.quality.analysis; import java.util.Date; -import org.olat.core.id.OLATResourceable; import org.olat.repository.RepositoryEntry; /** @@ -30,10 +29,8 @@ import org.olat.repository.RepositoryEntry; * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com * */ -public interface EvaluationFormView extends OLATResourceable { +public interface EvaluationFormView { - public String RESOURCEABLE_TYPE = "form"; - public RepositoryEntry getFormEntry(); public Long getNumberDataCollections(); diff --git a/src/main/java/org/olat/modules/quality/analysis/model/AnalysisPresentationImpl.java b/src/main/java/org/olat/modules/quality/analysis/model/AnalysisPresentationImpl.java index 4cfb37adb04..065ebc917cc 100644 --- a/src/main/java/org/olat/modules/quality/analysis/model/AnalysisPresentationImpl.java +++ b/src/main/java/org/olat/modules/quality/analysis/model/AnalysisPresentationImpl.java @@ -96,16 +96,6 @@ public class AnalysisPresentationImpl implements AnalysisPresentation, Persistab this.key = key; } - @Override - public String getResourceableTypeName() { - return AnalysisPresentation.RESOURCEABLE_TYPE; - } - - @Override - public Long getResourceableId() { - return key; - } - @Override public Date getCreationDate() { return creationDate; diff --git a/src/main/java/org/olat/modules/quality/analysis/model/EvaluationFormViewImpl.java b/src/main/java/org/olat/modules/quality/analysis/model/EvaluationFormViewImpl.java index 3e7cfe384a8..1749cf99f93 100644 --- a/src/main/java/org/olat/modules/quality/analysis/model/EvaluationFormViewImpl.java +++ b/src/main/java/org/olat/modules/quality/analysis/model/EvaluationFormViewImpl.java @@ -47,16 +47,6 @@ public class EvaluationFormViewImpl implements EvaluationFormView { this.numberParticipationsDone = numberParticipationsDone; } - @Override - public String getResourceableTypeName() { - return EvaluationFormView.RESOURCEABLE_TYPE; - } - - @Override - public Long getResourceableId() { - return formEntry.getKey(); - } - @Override public RepositoryEntry getFormEntry() { return formEntry; diff --git a/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisListController.java b/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisListController.java index 73cfd64995d..36f84b8e2c2 100644 --- a/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisListController.java +++ b/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisListController.java @@ -48,9 +48,11 @@ 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.generic.dtabs.Activateable2; +import org.olat.core.id.OLATResourceable; import org.olat.core.id.Organisation; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; +import org.olat.core.util.resource.OresHelper; import org.olat.modules.quality.QualitySecurityCallback; import org.olat.modules.quality.analysis.AnalysisPresentation; import org.olat.modules.quality.analysis.EvaluationFormView; @@ -67,6 +69,8 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class AnalysisListController extends FormBasicController implements FlexiTableComponentDelegate, Activateable2 { + private static final String ORES_TYPE_FORM = "form"; + private static final String ORES_TYPE_PRESENTATION = "presentation"; private static final String CMD_OPEN = "open"; private static final Comparator<? super EvaluationFormView> CREATED_DESC = (f1, f2) -> f2.getLatestDataCollectionFinishedDate().compareTo(f1.getLatestDataCollectionFinishedDate()); @@ -80,7 +84,7 @@ public class AnalysisListController extends FormBasicController implements Flexi private final List<Organisation> organisations; private int counter = 0; - private EvaluationFormView currentFormView; + private AnalysisPresentation presentation; @Autowired private QualityAnalysisService analysisService; @@ -97,6 +101,12 @@ public class AnalysisListController extends FormBasicController implements Flexi secCallback.getAnalysisViewRoles()); initForm(ureq); } + + public static OLATResourceable getOlatResourceable(AnalysisPresentation presentation) { + return presentation.getKey() != null + ? OresHelper.createOLATResourceableInstance(ORES_TYPE_PRESENTATION, presentation.getKey()) + : OresHelper.createOLATResourceableInstance(ORES_TYPE_FORM, presentation.getFormEntry().getKey()); + } @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { @@ -173,14 +183,14 @@ public class AnalysisListController extends FormBasicController implements Flexi if(entries == null || entries.isEmpty()) return; String type = entries.get(0).getOLATResourceable().getResourceableTypeName(); - if (EvaluationFormView.RESOURCEABLE_TYPE.equalsIgnoreCase(type)) { + if (ORES_TYPE_FORM.equalsIgnoreCase(type)) { Long formEntryKey = entries.get(0).getOLATResourceable().getResourceableId(); AnalysisRow row = dataModel.getObjectByFormEntryKey(formEntryKey); if (row != null) { - currentFormView = row; + presentation = createPresentation(row); doOpenAnalysis(ureq); } - } else if (AnalysisPresentation.RESOURCEABLE_TYPE.equalsIgnoreCase(type)) { + } else if (ORES_TYPE_PRESENTATION.equalsIgnoreCase(type)) { Long presentationKey = entries.get(0).getOLATResourceable().getResourceableId(); doOpenPresentation(ureq, presentationKey); } @@ -203,40 +213,49 @@ public class AnalysisListController extends FormBasicController implements Flexi if (source == tableEl && event instanceof SelectionEvent) { SelectionEvent se = (SelectionEvent)event; String cmd = se.getCommand(); - currentFormView = dataModel.getObject(se.getIndex()); + AnalysisRow row = dataModel.getObject(se.getIndex()); + presentation = createPresentation(row); if (CMD_OPEN.equals(cmd)) { doOpenAnalysis(ureq); } } else if (source instanceof FormLink) { FormLink link = (FormLink)source; if(CMD_OPEN.equals(link.getCmd())) { - currentFormView = (AnalysisRow)link.getUserObject(); + AnalysisRow row = (AnalysisRow)link.getUserObject(); + presentation = createPresentation(row); doOpenAnalysis(ureq); } } super.formInnerEvent(ureq, source, event); } - - private void doOpenAnalysis(UserRequest ureq) { - AnalysisPresentation presentation = analysisService.createPresentation(currentFormView.getFormEntry()); - WindowControl bwControl = addToHistory(ureq, currentFormView, null); - doOpenAnalysis(ureq, bwControl, presentation); + + private AnalysisPresentation createPresentation(EvaluationFormView formView) { + return analysisService.createPresentation(formView.getFormEntry()); } private void doOpenPresentation(UserRequest ureq, Long presentationKey) { - AnalysisPresentation presentation = analysisService.loadPresentationByKey(() -> presentationKey); - WindowControl bwControl = addToHistory(ureq, presentation, null); - doOpenAnalysis(ureq, bwControl, presentation); + presentation = analysisService.loadPresentationByKey(() -> presentationKey); + if (presentation != null) { + doOpenAnalysis(ureq); + } } - private void doOpenAnalysis(UserRequest ureq, WindowControl wControl, AnalysisPresentation presentation) { - analysisCtrl = new AnalysisSegmentsController(ureq, wControl, secCallback, stackPanel, presentation); + private void doOpenAnalysis(UserRequest ureq) { + OLATResourceable ores = getOlatResourceable(presentation); + WindowControl bwControl = addToHistory(ureq, ores, null); + analysisCtrl = new AnalysisSegmentsController(ureq, bwControl, secCallback, stackPanel, presentation); listenTo(analysisCtrl); - String title = presentation.getFormEntry().getDisplayname(); + String title = getBreadcrumbTitle(presentation); stackPanel.pushController(title, analysisCtrl); analysisCtrl.activate(ureq, null, null); } + + private String getBreadcrumbTitle(AnalysisPresentation presentation) { + return presentation.getKey() != null + ? presentation.getName() + : presentation.getFormEntry().getDisplayname(); + } @Override protected void formOK(UserRequest ureq) { diff --git a/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisRow.java b/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisRow.java index 6b34064d562..68efb2a9d50 100644 --- a/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisRow.java +++ b/src/main/java/org/olat/modules/quality/analysis/ui/AnalysisRow.java @@ -41,16 +41,6 @@ public class AnalysisRow implements EvaluationFormView { this.openLink = openLink; } - @Override - public String getResourceableTypeName() { - return formView.getResourceableTypeName(); - } - - @Override - public Long getResourceableId() { - return formView.getResourceableId(); - } - @Override public RepositoryEntry getFormEntry() { return formView.getFormEntry(); diff --git a/src/main/java/org/olat/modules/quality/ui/QualityHomeController.java b/src/main/java/org/olat/modules/quality/ui/QualityHomeController.java index cbe51f6d38f..1dc32084e70 100644 --- a/src/main/java/org/olat/modules/quality/ui/QualityHomeController.java +++ b/src/main/java/org/olat/modules/quality/ui/QualityHomeController.java @@ -234,7 +234,8 @@ public class QualityHomeController extends BasicController implements Activateab } private void doOpenPresentation(UserRequest ureq, AnalysisPresentation presentation) { - ContextEntry contextEntry = BusinessControlFactory.getInstance().createContextEntry(presentation); + OLATResourceable ores = AnalysisListController.getOlatResourceable(presentation); + ContextEntry contextEntry = BusinessControlFactory.getInstance().createContextEntry(ores); List<ContextEntry> entries = Collections.singletonList(contextEntry); doOpenAnalysis(ureq, entries); } -- GitLab