diff --git a/src/main/java/org/olat/admin/user/UserAdminController.java b/src/main/java/org/olat/admin/user/UserAdminController.java index a3e1c5db1577157bae6d07ac6406ab436769e4d4..8742a1cd33f9f9f5f136a2457cf35a018c7adf8d 100644 --- a/src/main/java/org/olat/admin/user/UserAdminController.java +++ b/src/main/java/org/olat/admin/user/UserAdminController.java @@ -37,7 +37,7 @@ import org.olat.basesecurity.Constants; import org.olat.basesecurity.SecurityGroup; import org.olat.core.commons.modules.bc.FolderConfig; import org.olat.core.commons.persistence.DBFactory; -import org.olat.core.commons.services.notifications.NotificationUIFactory; +import org.olat.core.commons.services.notifications.ui.NotificationSubscriptionController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.link.Link; @@ -329,7 +329,7 @@ public class UserAdminController extends BasicController implements Activateable Boolean canSubscriptions = BaseSecurityModule.USERMANAGER_CAN_MODIFY_SUBSCRIPTIONS; if (canSubscriptions.booleanValue() || isOlatAdmin) { - Controller subscriptionsCtr = NotificationUIFactory.createSubscriptionListingController(identity, ureq, getWindowControl()); + Controller subscriptionsCtr = new NotificationSubscriptionController(ureq, getWindowControl(), identity, true); listenTo(subscriptionsCtr); // auto-dispose userTabP.addTab(translate(NLS_VIEW_SUBSCRIPTIONS), subscriptionsCtr.getInitialComponent()); } diff --git a/src/main/java/org/olat/core/commons/services/notifications/NotificationUIFactory.java b/src/main/java/org/olat/core/commons/services/notifications/NotificationUIFactory.java index 4409c41f6181a396340b782f0d9be05290a1fcde..efe2ab48354872ecc6086d9af0f061e38f86ed8f 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/NotificationUIFactory.java +++ b/src/main/java/org/olat/core/commons/services/notifications/NotificationUIFactory.java @@ -29,7 +29,6 @@ import java.util.Date; import org.olat.NewControllerFactory; import org.olat.core.commons.services.notifications.ui.NotificationNewsController; import org.olat.core.commons.services.notifications.ui.NotificationSubscriptionAndNewsController; -import org.olat.core.commons.services.notifications.ui.NotificationSubscriptionController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.translator.Translator; @@ -48,19 +47,6 @@ import org.olat.core.util.Util; */ public class NotificationUIFactory { - /** - * Create a controller that displays the subscriptions for a specific user - * - * @param subscriberIdentity - * @param ureq - * @param windowControl - * @return - */ - public static NotificationSubscriptionController createSubscriptionListingController(Identity subscriberIdentity, UserRequest ureq, - WindowControl windowControl) { - return new NotificationSubscriptionController(subscriberIdentity, ureq, windowControl); - } - /** * Create a controller that displays the users news from his subscriptions * diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionAndNewsController.java b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionAndNewsController.java index 766b7c71dde073e96d42232b8961369f1576f03a..37d2f4ed431e810975141948f0f1dcb6f68bcefd 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionAndNewsController.java +++ b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionAndNewsController.java @@ -103,7 +103,7 @@ public class NotificationSubscriptionAndNewsController extends BasicController i // Lazy initialize the notification subscription controller when the // user clicks the tab the first time if (tabbedEvent.getNewComponent() == subscriptionPanel && subscriptionCtr == null) { - subscriptionCtr = NotificationUIFactory.createSubscriptionListingController(subscriberIdentity, ureq, getWindowControl()); + subscriptionCtr = new NotificationSubscriptionController(ureq, getWindowControl(), subscriberIdentity, false); listenTo(subscriptionCtr); subscriptionPanel.setContent(subscriptionCtr.getInitialComponent()); } diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionController.java b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionController.java index 211ea9db2a0ca4ee89465e690a98f34c9ed62377..966bfdf175ff06ebc3dc55b44c9ba1bb0601674f 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionController.java +++ b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionController.java @@ -64,16 +64,18 @@ public class NotificationSubscriptionController extends BasicController { private DialogBoxController delYesNoC; private Identity subscriberIdentity; - public NotificationSubscriptionController(Identity subscriberIdentity, UserRequest ureq, WindowControl wControl) { + public NotificationSubscriptionController(UserRequest ureq, WindowControl wControl, + Identity subscriberIdentity, boolean adminColumns) { // use home fallback for rss translations super(ureq, wControl, Util.createPackageTranslator(HomeMainController.class, ureq.getLocale())); this.subscriberIdentity = subscriberIdentity; // Build the table that contains all the subscriptions TableGuiConfiguration tableGuiPrefs = new TableGuiConfiguration(); tableGuiPrefs.setTableEmptyMessage(translate("subscriptions.no.subscriptions")); + tableGuiPrefs.setPreferencesOffered(true, "notifications-" + adminColumns); subscriptionsTableCtr = new TableController(tableGuiPrefs, ureq, wControl, getTranslator()); subscriptionsTableModel = new NotificationSubscriptionTableDataModel(getTranslator()); - subscriptionsTableModel.addTableColumns(subscriptionsTableCtr); + subscriptionsTableModel.addTableColumns(subscriptionsTableCtr, adminColumns); updateSubscriptionsDataModel(); listenTo(subscriptionsTableCtr); // Main view is a velocity container diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionTableDataModel.java b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionTableDataModel.java index 7ee74ef1e66ec1b6c0f78a999d8835957e7d1861..e1a4aac387246356eba795c49e0c41251e2cd258 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionTableDataModel.java +++ b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionTableDataModel.java @@ -54,10 +54,13 @@ class NotificationSubscriptionTableDataModel extends DefaultTableDataModel<Subsc * * @param subscriptionsTableCtr */ - void addTableColumns(TableController subscriptionsTableCtr) { - subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.type", 0, "launch", getLocale())); - subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.resname", 1, null, getLocale())); - subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.subidentifier", 2, null, getLocale())); + void addTableColumns(TableController subscriptionsTableCtr, boolean admin) { + subscriptionsTableCtr.addColumnDescriptor(false, new DefaultColumnDescriptor("overview.column.key", 0, "launch", getLocale())); + subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.type", 1, "launch", getLocale())); + subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.resname", 2, null, getLocale())); + subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.subidentifier", 3, null, getLocale())); + subscriptionsTableCtr.addColumnDescriptor(admin, new DefaultColumnDescriptor("overview.column.creationDate", 4, null, getLocale())); + subscriptionsTableCtr.addColumnDescriptor(admin, new DefaultColumnDescriptor("overview.column.lastEmail", 5, null, getLocale())); subscriptionsTableCtr.addColumnDescriptor(new StaticColumnDescriptor("del", "overview.column.action", trans .translate("overview.column.action.cellvalue"))); } @@ -80,13 +83,14 @@ class NotificationSubscriptionTableDataModel extends DefaultTableDataModel<Subsc Publisher pub = sub.getPublisher(); switch (col) { - case 0: + case 0: return sub.getKey(); + case 1: String innerType = pub.getType(); return NewControllerFactory.translateResourceableTypeName(innerType, getLocale()); - case 1: + case 2: String containerType = pub.getResName(); return NewControllerFactory.translateResourceableTypeName(containerType, getLocale()); - case 2: + case 3: NotificationsHandler handler = NotificationsManager.getInstance().getNotificationsHandler(pub); if(handler == null){ return ""; @@ -96,6 +100,8 @@ class NotificationSubscriptionTableDataModel extends DefaultTableDataModel<Subsc return ""; } return title; + case 4: return sub.getCreationDate(); + case 5: return sub.getLatestEmailed(); default: return "ERROR"; } diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties index 9775dfad370e3ab1d18737d2b451a5a9593fceaf..e4dd2f6e414fee18ec56ed4e8ed6462e5851fb7c 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties @@ -45,6 +45,9 @@ notificationsPortlet.multiple.news.in = {0} notificationsPortlet.single.news.in = 1 Ă„nderung in {0} overview.column.action=Aktion overview.column.action.cellvalue=L\u00F6schen +overview.column.creationDate=Erstellt am +overview.column.lastEmail=Letztes E-Mail +overview.column.key=ID overview.column.resname=Art overview.column.subidentifier=Titel overview.column.type=Typ diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties index f2909503157ef896d341ba1074f9d8a4e655ba4d..4f833807b6643e7869b6aa920de7e8f60378e989 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties @@ -58,6 +58,9 @@ notificationsPortlet.single.news.in=1 modification in {0} notificationsPortlet.title=My notifications overview.column.action=Action overview.column.action.cellvalue=Delete +overview.column.creationDate=Created on +overview.column.key=ID +overview.column.lastEmail=Last e-mail overview.column.resname=Type overview.column.subidentifier=Title overview.column.type=Type diff --git a/src/main/java/org/olat/course/nodes/TitledWrapperHelper.java b/src/main/java/org/olat/course/nodes/TitledWrapperHelper.java index 1dac8485ea80a4562167b0dbf548b5d0f97f3b33..de723be7443f30a787e6e4bdf51288f2726dade7 100644 --- a/src/main/java/org/olat/course/nodes/TitledWrapperHelper.java +++ b/src/main/java/org/olat/course/nodes/TitledWrapperHelper.java @@ -47,7 +47,7 @@ public class TitledWrapperHelper { if (StringHelper.containsNonWhitespace(iconCssClass)) { titleInfo.setIconCssClass(iconCssClass); } - controller = new TitledWrapperController(ureq, wControl, controller, "o_course_run", titleInfo); + controller = new TitledWrapperController(ureq, wControl, controller, null, titleInfo); } } else if (CourseNode.DISPLAY_OPTS_TITLE_CONTENT.equals(displayOption)) { if(StringHelper.containsNonWhitespace(courseNode.getLongTitle())) { @@ -56,7 +56,7 @@ public class TitledWrapperHelper { if (StringHelper.containsNonWhitespace(iconCssClass)) { titleInfo.setIconCssClass(iconCssClass); } - controller = new TitledWrapperController(ureq, wControl, controller, "o_course_run", titleInfo); + controller = new TitledWrapperController(ureq, wControl, controller, null, titleInfo); } } else if (CourseNode.DISPLAY_OPTS_SHORT_TITLE_DESCRIPTION_CONTENT.equals(displayOption)) { String title = courseNode.getShortTitle(); @@ -73,7 +73,7 @@ public class TitledWrapperHelper { if (StringHelper.containsNonWhitespace(iconCssClass)) { titleInfo.setIconCssClass(iconCssClass); } - controller = new TitledWrapperController(ureq, wControl, controller, "o_course_run", titleInfo); + controller = new TitledWrapperController(ureq, wControl, controller, null, titleInfo); } } else if (CourseNode.DISPLAY_OPTS_TITLE_DESCRIPTION_CONTENT.equals(displayOption)) { @@ -89,7 +89,7 @@ public class TitledWrapperHelper { if (StringHelper.containsNonWhitespace(iconCssClass)) { titleInfo.setIconCssClass(iconCssClass); } - controller = new TitledWrapperController(ureq, wControl, controller, "o_course_run", titleInfo); + controller = new TitledWrapperController(ureq, wControl, controller, null, titleInfo); } } return controller; diff --git a/src/main/java/org/olat/course/run/_content/index.html b/src/main/java/org/olat/course/run/_content/index.html index 139e73892404caef0e8feabc1b03e16db38de42d..6690446357d68bed623e29c6631ef3656f5fabf6 100644 --- a/src/main/java/org/olat/course/run/_content/index.html +++ b/src/main/java/org/olat/course/run/_content/index.html @@ -13,4 +13,6 @@ function o_activateCourseNode(nodeid) { } /* ]]> */ </script> -$r.render("coursemain") \ No newline at end of file +<div class="o_course_run"> + $r.render("coursemain") +</div> \ No newline at end of file