From 36b9dc2f8a228548bdbeb3f45a6e3a4f5f0293db Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Wed, 26 Aug 2020 12:11:12 +0200
Subject: [PATCH] OO-4874: add export to questions list in question pool

---
 .../qpool/ui/AbstractItemListController.java  | 21 +++++++++++++------
 .../ui/CreateTestOverviewController.java      |  2 +-
 .../modules/qpool/ui/ItemListController.java  |  4 +++-
 .../ui/ItemListMyCompetencesController.java   |  4 +++-
 .../qpool/ui/ItemListMyListsController.java   |  4 +++-
 .../qpool/ui/ItemListMySharesController.java  |  4 +++-
 .../qpool/ui/QuestionStatusCellRenderer.java  |  8 ++++++-
 7 files changed, 35 insertions(+), 12 deletions(-)

diff --git a/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java b/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java
index cf3afdf59bb..85ddd0a22fe 100644
--- a/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/AbstractItemListController.java
@@ -172,14 +172,20 @@ public abstract class AbstractItemListController extends FormBasicController
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		//add the table
 		FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("quickview", "<i class='o_icon o_icon_quickview'> </i>", "quick-view"));
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.mark));
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, Cols.editable.i18nHeaderKey(), Cols.editable.ordinal(),
+		DefaultFlexiColumnModel quickViewCol = new DefaultFlexiColumnModel("quickview", "<i class='o_icon o_icon_quickview'> </i>", "quick-view");
+		quickViewCol.setExportable(false);
+		columnsModel.addFlexiColumnModel(quickViewCol);
+		DefaultFlexiColumnModel markCol = new DefaultFlexiColumnModel(Cols.mark);
+		markCol.setExportable(false);
+		columnsModel.addFlexiColumnModel(markCol);
+		DefaultFlexiColumnModel editableCol = new DefaultFlexiColumnModel(true, Cols.editable.i18nHeaderKey(), Cols.editable.ordinal(),
 				false, null, FlexiColumnModel.ALIGNMENT_LEFT,
 				new BooleanCellRenderer(
 						new CSSIconFlexiCellRenderer(CSS_ICON_READWRITE),
 						new CSSIconFlexiCellRenderer(CSS_ICON_READONLY))
-		));
+		);
+		editableCol.setExportable(false);
+		columnsModel.addFlexiColumnModel(editableCol);
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.key));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.identifier, "select-item"));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.title, "select-item"));
@@ -204,7 +210,7 @@ public abstract class AbstractItemListController extends FormBasicController
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.rating));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.numberOfRatings));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.itemVersion));
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.status, new QuestionStatusCellRenderer()));
+		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.status, new QuestionStatusCellRenderer(getTranslator())));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.statusLastModified));	
 		if (licenseModule.isEnabled(licenseHandler)) {
 			columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, false, Cols.license.i18nHeaderKey(), null, Cols.license.ordinal(), "license", false, null, FlexiColumnModel.ALIGNMENT_LEFT,
@@ -221,6 +227,7 @@ public abstract class AbstractItemListController extends FormBasicController
 		itemsTable.setSortSettings(new FlexiTableSortOptions(true));
 		itemsTable.setExtendedSearch(extendedSearchCtrl);
 		itemsTable.setColumnIndexForDragAndDropLabel(Cols.title.ordinal());
+		itemsTable.setExportEnabled(true);
 		itemsTable.setAndLoadPersistedPreferences(ureq, "qpool-list-" + prefsKey);
 		listenTo(extendedSearchCtrl);
 		
@@ -236,7 +243,9 @@ public abstract class AbstractItemListController extends FormBasicController
 	}
 	
 	protected void initActionColumns(FlexiTableColumnModel columnsModel) {
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("details", translate("details"), "select-item"));
+		DefaultFlexiColumnModel detailsCol = new DefaultFlexiColumnModel("details", translate("details"), "select-item");
+		detailsCol.setExportable(false);
+		columnsModel.addFlexiColumnModel(detailsCol);
 	}
 	
 	protected abstract void initButtons(UserRequest ureq, FormItemContainer formLayout);
diff --git a/src/main/java/org/olat/modules/qpool/ui/CreateTestOverviewController.java b/src/main/java/org/olat/modules/qpool/ui/CreateTestOverviewController.java
index e09a8e7776b..7a3816fbf2c 100644
--- a/src/main/java/org/olat/modules/qpool/ui/CreateTestOverviewController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/CreateTestOverviewController.java
@@ -111,7 +111,7 @@ public class CreateTestOverviewController extends FormBasicController {
 		}
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.type));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.format));
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.status, new QuestionStatusCellRenderer()));
+		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.status, new QuestionStatusCellRenderer(getTranslator())));
 		if(withLicenses) {
 			columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.license));
 		}
diff --git a/src/main/java/org/olat/modules/qpool/ui/ItemListController.java b/src/main/java/org/olat/modules/qpool/ui/ItemListController.java
index 9e624f4fdf8..a32578e7c15 100644
--- a/src/main/java/org/olat/modules/qpool/ui/ItemListController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/ItemListController.java
@@ -67,7 +67,9 @@ public class ItemListController extends AbstractItemListController {
 
 	@Override
 	protected void initActionColumns(FlexiTableColumnModel columnsModel) {
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("select", translate("select"), "select-item"));
+		DefaultFlexiColumnModel selectCol = new DefaultFlexiColumnModel("select", translate("select"), "select-item");
+		selectCol.setExportable(false);
+		columnsModel.addFlexiColumnModel(selectCol);
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/modules/qpool/ui/ItemListMyCompetencesController.java b/src/main/java/org/olat/modules/qpool/ui/ItemListMyCompetencesController.java
index 4aa1db1ab09..c03e1181d83 100644
--- a/src/main/java/org/olat/modules/qpool/ui/ItemListMyCompetencesController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/ItemListMyCompetencesController.java
@@ -90,7 +90,9 @@ public class ItemListMyCompetencesController extends AbstractItemListController
 	
 	@Override
 	protected void initActionColumns(FlexiTableColumnModel columnsModel) {
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("select", translate("select"), "select-item"));
+		DefaultFlexiColumnModel selectCol = new DefaultFlexiColumnModel("select", translate("select"), "select-item");
+		selectCol.setExportable(false);
+		columnsModel.addFlexiColumnModel(selectCol);
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/modules/qpool/ui/ItemListMyListsController.java b/src/main/java/org/olat/modules/qpool/ui/ItemListMyListsController.java
index 8ea1dcb1e25..a487d49d537 100644
--- a/src/main/java/org/olat/modules/qpool/ui/ItemListMyListsController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/ItemListMyListsController.java
@@ -103,7 +103,9 @@ public class ItemListMyListsController extends AbstractItemListController {
 	
 	@Override
 	protected void initActionColumns(FlexiTableColumnModel columnsModel) {
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("select", translate("select"), "select-item"));
+		DefaultFlexiColumnModel selectCol = new DefaultFlexiColumnModel("select", translate("select"), "select-item");
+		selectCol.setExportable(false);
+		columnsModel.addFlexiColumnModel(selectCol);
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/modules/qpool/ui/ItemListMySharesController.java b/src/main/java/org/olat/modules/qpool/ui/ItemListMySharesController.java
index 2080c8474a5..264d41679b6 100644
--- a/src/main/java/org/olat/modules/qpool/ui/ItemListMySharesController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/ItemListMySharesController.java
@@ -136,7 +136,9 @@ public class ItemListMySharesController extends AbstractItemListController {
 	
 	@Override
 	protected void initActionColumns(FlexiTableColumnModel columnsModel) {
-		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("select", translate("select"), "select-item"));
+		DefaultFlexiColumnModel selectCol = new DefaultFlexiColumnModel("select", translate("select"), "select-item");
+		selectCol.setExportable(false);
+		columnsModel.addFlexiColumnModel(selectCol);
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionStatusCellRenderer.java b/src/main/java/org/olat/modules/qpool/ui/QuestionStatusCellRenderer.java
index 6563c9b87f8..acc65940b72 100644
--- a/src/main/java/org/olat/modules/qpool/ui/QuestionStatusCellRenderer.java
+++ b/src/main/java/org/olat/modules/qpool/ui/QuestionStatusCellRenderer.java
@@ -30,6 +30,12 @@ import org.olat.modules.qpool.QuestionStatus;
  *
  */
 public class QuestionStatusCellRenderer extends LabelCellRenderer {
+	
+	private final Translator translator;
+	
+	public QuestionStatusCellRenderer(Translator translator) {
+		this.translator = translator;
+	}
 
 	@Override
 	protected String getElementCssClass(Object val) {
@@ -50,7 +56,7 @@ public class QuestionStatusCellRenderer extends LabelCellRenderer {
 	}
 
 	@Override
-	protected String getCellValue(Object val, Translator translator) {
+	protected String getCellValue(Object val, Translator transl) {
 		if (val instanceof QuestionStatus) {
 			QuestionStatus status = (QuestionStatus) val;
 			return translator.translate("lifecycle.status." + status.name());
-- 
GitLab