From d285b5da6b315ec41b94af5e4e01ed90a7cbdfae Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Tue, 3 Jan 2017 09:37:02 +0100 Subject: [PATCH] OO-2427: only show the delete action if there is an efficiency statement to delete --- ...eAndEfficiencyStatementListController.java | 28 +++++++------- ...ficateAndEfficiencyStatementListModel.java | 38 ++++++++++++++----- 2 files changed, 42 insertions(+), 24 deletions(-) diff --git a/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java b/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java index 26853cec4e2..e1483b33aa4 100644 --- a/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java +++ b/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java @@ -33,6 +33,7 @@ import org.olat.core.gui.components.form.flexible.elements.FlexiTableElement; import org.olat.core.gui.components.form.flexible.elements.FormLink; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.components.form.flexible.impl.FormEvent; +import org.olat.core.gui.components.form.flexible.impl.elements.table.BooleanCellRenderer; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiCellRenderer; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; @@ -182,22 +183,19 @@ public class CertificateAndEfficiencyStatementListController extends FormBasicCo } FlexiTableColumnModel tableColumnModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.displayName.i18n(), Cols.displayName.ordinal(), - true, Cols.displayName.name())); - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.score.i18n(), Cols.score.ordinal(), - true, Cols.score.name())); - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.passed.i18n(), Cols.passed.ordinal(), - true, Cols.passed.name(), new PassedCellRenderer())); + tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.displayName)); + tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.score)); + tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.passed, new PassedCellRenderer())); tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.header.show", translate("table.header.show"), CMD_SHOW)); - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.lastModified.i18n(), Cols.lastModified.ordinal(), - true, Cols.lastModified.name())); - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.certificate.i18n(), Cols.certificate.ordinal(), - true, Cols.certificate.name(), new DownloadCertificateCellRenderer(assessedIdentity))); + tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.lastModified)); + tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.certificate, new DownloadCertificateCellRenderer(assessedIdentity))); tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.header.launchcourse", translate("table.header.launchcourse"), CMD_LAUNCH_COURSE)); - tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel("table.header.delete", - translate("table.action.delete"), CMD_DELETE)); + + DefaultFlexiColumnModel deleteColumn = new DefaultFlexiColumnModel(Cols.deleteEfficiencyStatement.i18nHeaderKey(), Cols.deleteEfficiencyStatement.ordinal(), CMD_DELETE, + new BooleanCellRenderer(new StaticFlexiCellRenderer(translate("table.action.delete"), CMD_DELETE), null)); + tableColumnModel.addFlexiColumnModel(deleteColumn); //artefact if(portfolioV2Module.isEnabled()) { @@ -331,8 +329,10 @@ public class CertificateAndEfficiencyStatementListController extends FormBasicCo private void doDelete(Long efficiencyStatementKey) { UserEfficiencyStatementLight efficiencyStatement = esm.getUserEfficiencyStatementLightByKey(efficiencyStatementKey); - esm.deleteEfficiencyStatement(efficiencyStatement); - + if(efficiencyStatement != null) { + esm.deleteEfficiencyStatement(efficiencyStatement); + } + loadModel(); tableEl.reset(); showInfo("info.efficiencyStatement.deleted"); diff --git a/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListModel.java b/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListModel.java index 2c9ce688edf..424c95f719c 100644 --- a/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListModel.java +++ b/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListModel.java @@ -25,6 +25,7 @@ import java.util.Locale; import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiTableDataModel; +import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiSortableColumnDef; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableDataModel; import org.olat.course.assessment.AssessmentHelper; @@ -80,28 +81,45 @@ public class CertificateAndEfficiencyStatementListModel extends DefaultFlexiTabl case certificate: return statement.getCertificate(); case efficiencyStatement: return statement.getEfficiencyStatementKey(); + case deleteEfficiencyStatement: return statement.getEfficiencyStatementKey() != null; } return null; } - public static enum Cols { + public static enum Cols implements FlexiSortableColumnDef { - displayName("table.header.course"), - score("table.header.score"), - passed("table.header.passed"), - lastModified("table.header.lastScoreDate"), - efficiencyStatement("table.header.certificate"), - certificate("table.header.certificate"); + displayName("table.header.course", true), + score("table.header.score", true), + passed("table.header.passed", true), + lastModified("table.header.lastScoreDate", true), + efficiencyStatement("table.header.certificate", true), + certificate("table.header.certificate", true), + deleteEfficiencyStatement("table.action.delete", false); private final String i18n; + private final boolean sortable; - private Cols(String i18n) { + private Cols(String i18n, boolean sortable) { this.i18n = i18n; + this.sortable = sortable; } - - public String i18n() { + + @Override + public String i18nHeaderKey() { return i18n; } + + @Override + public boolean sortable() { + return sortable; + } + + @Override + public String sortKey() { + return name(); + } + + } public static class CertificateAndEfficiencyStatement { -- GitLab