diff --git a/src/main/java/org/olat/course/nodes/vitero/ViteroPeekViewController.java b/src/main/java/org/olat/course/nodes/vitero/ViteroPeekViewController.java index e7d8f7d93ef083e02300c33a2a146f7dae7f0765..95c4e28923616ec86ca62201bcf429006601aa6c 100644 --- a/src/main/java/org/olat/course/nodes/vitero/ViteroPeekViewController.java +++ b/src/main/java/org/olat/course/nodes/vitero/ViteroPeekViewController.java @@ -85,6 +85,7 @@ public class ViteroPeekViewController extends BasicController { listenTo(tableCtrl); // dummy header key, won't be used since setDisplayTableHeader is set to false + tableCtrl.addColumnDescriptor(new DefaultColumnDescriptor("vc.table.group", ViteroBookingDataModel.Column.name.ordinal(), null, ureq.getLocale())); tableCtrl.addColumnDescriptor(new DefaultColumnDescriptor("vc.table.begin", ViteroBookingDataModel.Column.begin.ordinal(), null, ureq.getLocale())); tableCtrl.addColumnDescriptor(new DefaultColumnDescriptor("vc.table.end", ViteroBookingDataModel.Column.end.ordinal(), null, ureq.getLocale())); tableCtrl.setTableDataModel(new ViteroBookingDataModel(bookings)); diff --git a/src/main/java/org/olat/modules/vitero/manager/ViteroManager.java b/src/main/java/org/olat/modules/vitero/manager/ViteroManager.java index 406c2c18bc18376c988bd78eb954ffe63c0291da..513926750e01a430a9b34b49dce5416a9b6e1343 100644 --- a/src/main/java/org/olat/modules/vitero/manager/ViteroManager.java +++ b/src/main/java/org/olat/modules/vitero/manager/ViteroManager.java @@ -669,13 +669,13 @@ public class ViteroManager extends BasicManager implements UserDataDeletable { return roomSizes; } - public int createGroup() + public int createGroup(String groupName) throws VmsNotAvailableException { try { GroupServiceStub groupWs = getGroupWebService(); GroupServiceStub.CreateGroupRequest createRequest = new GroupServiceStub.CreateGroupRequest(); GroupServiceStub.Groupnamecustomerid groupInfos = new GroupServiceStub.Groupnamecustomerid(); - groupInfos.setGroupname("OLAT-" + UUID.randomUUID().toString().replace("-", "")); + groupInfos.setGroupname(groupName + "_OLAT_" + UUID.randomUUID().toString().replace("-", "")); groupInfos.setCustomerid(viteroModule.getCustomerId()); createRequest.setGroup(groupInfos); @@ -878,7 +878,8 @@ public class ViteroManager extends BasicManager implements UserDataDeletable { try { //a group per meeting - int groupId = createGroup(); + String groupName = vBooking.getGroupName(); + int groupId = createGroup(groupName); if(groupId < 0) { return new ViteroStatus(ErrorCode.unkown); } diff --git a/src/main/java/org/olat/modules/vitero/model/ViteroBooking.java b/src/main/java/org/olat/modules/vitero/model/ViteroBooking.java index b27b68df7222831d3a1daebe002404a3a18f8cf7..df64e26d2bc950e10e7be9efd10316186ec4d61a 100644 --- a/src/main/java/org/olat/modules/vitero/model/ViteroBooking.java +++ b/src/main/java/org/olat/modules/vitero/model/ViteroBooking.java @@ -36,6 +36,7 @@ public class ViteroBooking { private int bookingId; private int groupId; + private String groupName; private Date start; private int startBuffer; private Date end; @@ -85,6 +86,14 @@ public class ViteroBooking { this.groupId = groupId; } + public String getGroupName() { + return groupName; + } + + public void setGroupName(String groupName) { + this.groupName = groupName; + } + public int getRoomSize() { return roomSize; } diff --git a/src/main/java/org/olat/modules/vitero/ui/ViteroAdminBookingRawInfosController.java b/src/main/java/org/olat/modules/vitero/ui/ViteroAdminBookingRawInfosController.java index 9b63e7a99c9ce90c325e142da2b208c0a98dede7..4c4dcd6d651cc4cfbf96f6eb2a37e931ea142da4 100644 --- a/src/main/java/org/olat/modules/vitero/ui/ViteroAdminBookingRawInfosController.java +++ b/src/main/java/org/olat/modules/vitero/ui/ViteroAdminBookingRawInfosController.java @@ -68,7 +68,13 @@ public class ViteroAdminBookingRawInfosController extends FormBasicController { uifactory.addStaticTextElement("booking.roomSize", Integer.toString(booking.getRoomSize()), formLayout); uifactory.addStaticTextElement("group.numOfParticipants", Integer.toString(group.getNumOfParticipants()), formLayout); uifactory.addStaticTextElement("group.id", Integer.toString(group.getGroupId()), formLayout); - uifactory.addStaticTextElement("group.name", group.getName(), formLayout); + + String name = group.getName(); + int sepIndex = name.indexOf("_OLAT_"); + if(sepIndex > 0) { + name = name.substring(0, sepIndex); + } + uifactory.addStaticTextElement("group.name", name, formLayout); MultipleSelectionElement autoSignIn = uifactory.addCheckboxesHorizontal("booking.autoSignIn", formLayout, autoSignInKeys, autoSignInValues, null); if(booking.isAutoSignIn()) { diff --git a/src/main/java/org/olat/modules/vitero/ui/ViteroBookingDataModel.java b/src/main/java/org/olat/modules/vitero/ui/ViteroBookingDataModel.java index 64b733659a4e40351c3362d4f76ed136ef117e6a..3730ea38ecd32be22b84b01548e27d00e2e45904 100644 --- a/src/main/java/org/olat/modules/vitero/ui/ViteroBookingDataModel.java +++ b/src/main/java/org/olat/modules/vitero/ui/ViteroBookingDataModel.java @@ -73,6 +73,10 @@ public class ViteroBookingDataModel implements TableDataModel { public Object getValueAt(int row, int col) { ViteroBooking booking = getObject(row); switch(Column.values()[col]) { + case name: { + String name = booking.getGroupName(); + return name; + } case begin: return booking.getStart(); case end: return booking.getEnd(); case roomSize: { @@ -122,6 +126,7 @@ public class ViteroBookingDataModel implements TableDataModel { } public enum Column { + name, begin, end, roomSize, diff --git a/src/main/java/org/olat/modules/vitero/ui/ViteroBookingEditController.java b/src/main/java/org/olat/modules/vitero/ui/ViteroBookingEditController.java index 22cb7b5773db4b3eb46c269e611e1bb4f2448347..7d49c78ce7cf7ea3262bff154707915d14d9b8e1 100644 --- a/src/main/java/org/olat/modules/vitero/ui/ViteroBookingEditController.java +++ b/src/main/java/org/olat/modules/vitero/ui/ViteroBookingEditController.java @@ -29,12 +29,14 @@ import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.DateChooser; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; import org.olat.core.gui.components.form.flexible.elements.SingleSelection; +import org.olat.core.gui.components.form.flexible.elements.TextElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; 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.id.OLATResourceable; +import org.olat.core.util.StringHelper; import org.olat.group.BusinessGroup; import org.olat.modules.vitero.manager.ViteroManager; import org.olat.modules.vitero.manager.VmsNotAvailableException; @@ -52,6 +54,7 @@ import org.olat.modules.vitero.model.ViteroStatus; */ public class ViteroBookingEditController extends FormBasicController { + private TextElement groupName; private DateChooser beginChooser; private DateChooser endChooser; private SingleSelection beginBufferEl; @@ -106,6 +109,11 @@ public class ViteroBookingEditController extends FormBasicController { setFormWarning("new.booking.warning"); } + String name = booking.getGroupName(); + groupName = uifactory.addTextElement("group.name", "group.name", 32, name, formLayout); + groupName.setMandatory(true); + groupName.setEnabled(editable); + //begin beginChooser = uifactory.addDateChooser("booking.begin", "", formLayout); beginChooser.setDisplaySize(21); @@ -161,6 +169,18 @@ public class ViteroBookingEditController extends FormBasicController { @Override protected boolean validateFormLogic(UserRequest ureq) { boolean allOk = true; + + String name = groupName.getValue(); + groupName.clearError(); + if(StringHelper.containsNonWhitespace(name)) { + if(name.contains("_")) { + groupName.setErrorKey("error.bookingName", null); + allOk &= false; + } + } else { + groupName.setErrorKey("form.legende.mandatory", null); + allOk &= false; + } Date begin = beginChooser.getDate(); if(beginChooser.isEnabled()) { @@ -200,6 +220,9 @@ public class ViteroBookingEditController extends FormBasicController { @Override protected void formOK(UserRequest ureq) { + String name = groupName.getValue(); + booking.setGroupName(name); + Date begin = beginChooser.getDate(); booking.setStart(begin); diff --git a/src/main/java/org/olat/modules/vitero/ui/ViteroBookingsAdminController.java b/src/main/java/org/olat/modules/vitero/ui/ViteroBookingsAdminController.java index 8d878f911b82de436f1429979aa3603df6185915..528c87df923728307f112497b6702348f2aa36fd 100644 --- a/src/main/java/org/olat/modules/vitero/ui/ViteroBookingsAdminController.java +++ b/src/main/java/org/olat/modules/vitero/ui/ViteroBookingsAdminController.java @@ -83,7 +83,8 @@ public class ViteroBookingsAdminController extends BasicController { tableCtr = new TableController(tableConfig, ureq, getWindowControl(), getTranslator()); listenTo(tableCtr); - + + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("group.name", ViteroBookingDataModel.Column.name.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("booking.begin", ViteroBookingDataModel.Column.begin.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("booking.end", ViteroBookingDataModel.Column.end.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("booking.roomSize", ViteroBookingDataModel.Column.roomSize.ordinal(), null, ureq.getLocale())); diff --git a/src/main/java/org/olat/modules/vitero/ui/ViteroBookingsController.java b/src/main/java/org/olat/modules/vitero/ui/ViteroBookingsController.java index ab2bf2c5f011e10c9fb702e6bf40cb820eb6659e..d57152fb533896f934da0b8153f613e1387ffd65 100644 --- a/src/main/java/org/olat/modules/vitero/ui/ViteroBookingsController.java +++ b/src/main/java/org/olat/modules/vitero/ui/ViteroBookingsController.java @@ -75,6 +75,7 @@ public class ViteroBookingsController extends BasicController { tableConfig.setColumnMovingOffered(true); tableConfig.setSortingEnabled(true); tableCtr = new TableController(tableConfig, ureq, wControl, getTranslator()); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("group.name", ViteroBookingDataModel.Column.name.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("booking.begin", ViteroBookingDataModel.Column.begin.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("booking.end", ViteroBookingDataModel.Column.end.ordinal(), null, ureq.getLocale())); diff --git a/src/main/java/org/olat/modules/vitero/ui/ViteroBookingsEditController.java b/src/main/java/org/olat/modules/vitero/ui/ViteroBookingsEditController.java index 6e3f693d770c98d462d59e72a6b8026f41894e74..c2e6f15cba34bc7503db61936d67bb9bc488b3e1 100644 --- a/src/main/java/org/olat/modules/vitero/ui/ViteroBookingsEditController.java +++ b/src/main/java/org/olat/modules/vitero/ui/ViteroBookingsEditController.java @@ -39,6 +39,7 @@ import org.olat.core.gui.control.generic.closablewrapper.CloseableModalControlle import org.olat.core.gui.control.generic.modal.DialogBoxController; import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; import org.olat.core.id.OLATResourceable; +import org.olat.core.util.StringHelper; import org.olat.course.editor.NodeEditController; import org.olat.group.BusinessGroup; import org.olat.modules.vitero.manager.ViteroManager; @@ -249,6 +250,14 @@ public class ViteroBookingsEditController extends FormBasicController { public ViteroBooking getMeeting() { return meeting; } + + public String getGroupName() { + String name = meeting.getGroupName(); + if(StringHelper.containsNonWhitespace(name)) { + return name; + } + return ""; + } public Date getBegin() { return meeting.getStart(); diff --git a/src/main/java/org/olat/modules/vitero/ui/ViteroRoomsOverviewController.java b/src/main/java/org/olat/modules/vitero/ui/ViteroRoomsOverviewController.java index 9f94432c171b32c05e939d22e4425436186ff2b6..a3c0c86bcfb520553ad9052d44c651baeb76235f 100644 --- a/src/main/java/org/olat/modules/vitero/ui/ViteroRoomsOverviewController.java +++ b/src/main/java/org/olat/modules/vitero/ui/ViteroRoomsOverviewController.java @@ -67,7 +67,8 @@ public class ViteroRoomsOverviewController extends BasicController { tableCtr = new TableController(tableConfig, ureq, getWindowControl(), getTranslator()); listenTo(tableCtr); - + + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("group.name", ViteroBookingDataModel.Column.name.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("booking.begin", ViteroBookingDataModel.Column.begin.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("booking.end", ViteroBookingDataModel.Column.end.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("booking.roomSize", ViteroBookingDataModel.Column.roomSize.ordinal(), null, ureq.getLocale())); diff --git a/src/main/java/org/olat/modules/vitero/ui/ViteroUserToGroupController.java b/src/main/java/org/olat/modules/vitero/ui/ViteroUserToGroupController.java index 783743379a3ec206ac5eaf765f3477ca12f8d781..9575c935a86fa8da51c536d3bb13e2343b380d67 100644 --- a/src/main/java/org/olat/modules/vitero/ui/ViteroUserToGroupController.java +++ b/src/main/java/org/olat/modules/vitero/ui/ViteroUserToGroupController.java @@ -299,14 +299,14 @@ public class ViteroUserToGroupController extends BasicController { this.selfParticipants.addAll(selfParticipants); //remove duplicates - coaches.removeAll(owners); + this.coaches.removeAll(owners); - participants.removeAll(owners); - participants.removeAll(coaches); + this.participants.removeAll(owners); + this.participants.removeAll(coaches); - selfParticipants.remove(owners); - selfParticipants.remove(coaches); - selfParticipants.remove(participants); + this.selfParticipants.removeAll(owners); + this.selfParticipants.removeAll(coaches); + this.selfParticipants.removeAll(participants); } public List<Identity> getOwners() { diff --git a/src/main/java/org/olat/modules/vitero/ui/_content/edit.html b/src/main/java/org/olat/modules/vitero/ui/_content/edit.html index eb6a5b57775e7f29331db819eb14d23d1810f880..d072157d5a0401b594d7c5b3e05ad20022150a7f 100644 --- a/src/main/java/org/olat/modules/vitero/ui/_content/edit.html +++ b/src/main/java/org/olat/modules/vitero/ui/_content/edit.html @@ -3,6 +3,7 @@ $r.contextHelpWithWrapper("org.olat.modules.vitero.ui","ced-vitero-config.html","help.hover.vitero") <table> <tr> + <td>$r.translate("group.name")</td> <td>$r.translate("booking.begin")</td> <td>$r.translate("booking.end")</td> <td colspan="3"></td> @@ -10,6 +11,7 @@ #foreach($bookingDisplay in $bookingDisplays) <tr> + <td>$bookingDisplay.groupName</td> <td>$r.formatDateAndTime($bookingDisplay.begin)</td> <td>$r.formatDateAndTime($bookingDisplay.end)</td> <td>