Skip to content
Snippets Groups Projects
Commit 0f0535fb authored by srosse's avatar srosse
Browse files

OO-4774: open group/folder in a new window in vitero edit bookings panel

parent e4ebd241
No related branches found
No related tags found
No related merge requests found
...@@ -79,10 +79,10 @@ public class ViteroBookingsController extends BasicController { ...@@ -79,10 +79,10 @@ public class ViteroBookingsController extends BasicController {
tableConfig.setTableEmptyMessage(translate("table.empty")); tableConfig.setTableEmptyMessage(translate("table.empty"));
tableConfig.setSortingEnabled(true); tableConfig.setSortingEnabled(true);
tableCtr = new TableController(tableConfig, ureq, wControl, getTranslator()); tableCtr = new TableController(tableConfig, ureq, wControl, getTranslator());
tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("group.name", ViteroBookingDataModel.Column.name.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("group.name", ViteroBookingDataModel.Column.name.ordinal(), null, getLocale()));
tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("booking.begin", ViteroBookingDataModel.Column.begin.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("booking.begin", ViteroBookingDataModel.Column.begin.ordinal(), null, getLocale()));
tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("booking.end", ViteroBookingDataModel.Column.end.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("booking.end", ViteroBookingDataModel.Column.end.ordinal(), null, getLocale()));
tableCtr.addColumnDescriptor(new OpenGroupColumnDescriptor("booking.group", ViteroBookingDataModel.Column.group.ordinal(), ureq.getLocale(), getTranslator())); tableCtr.addColumnDescriptor(new OpenGroupColumnDescriptor("booking.group", ViteroBookingDataModel.Column.group.ordinal(), getLocale(), getTranslator()));
if(!readOnly) { if(!readOnly) {
StartColumnDescriptor startRoom = new StartColumnDescriptor("start", "start", ureq.getLocale(), viteroManager, getTranslator()); StartColumnDescriptor startRoom = new StartColumnDescriptor("start", "start", ureq.getLocale(), viteroManager, getTranslator());
......
...@@ -20,11 +20,11 @@ ...@@ -20,11 +20,11 @@
package org.olat.modules.vitero.ui; package org.olat.modules.vitero.ui;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import org.olat.core.gui.UserRequest; import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItem;
import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.FormItemContainer;
import org.olat.core.gui.components.form.flexible.elements.FormLink; import org.olat.core.gui.components.form.flexible.elements.FormLink;
...@@ -32,13 +32,15 @@ import org.olat.core.gui.components.form.flexible.impl.FormBasicController; ...@@ -32,13 +32,15 @@ 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.FormEvent;
import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
import org.olat.core.gui.components.link.Link; import org.olat.core.gui.components.link.Link;
import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.components.link.LinkFactory;
import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event; import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
import org.olat.core.gui.control.generic.modal.DialogBoxController; import org.olat.core.gui.control.generic.modal.DialogBoxController;
import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
import org.olat.core.gui.media.MediaResource;
import org.olat.core.gui.media.RedirectMediaResource;
import org.olat.core.id.OLATResourceable; import org.olat.core.id.OLATResourceable;
import org.olat.core.util.StringHelper; import org.olat.core.util.StringHelper;
import org.olat.course.editor.NodeEditController; import org.olat.course.editor.NodeEditController;
...@@ -69,13 +71,14 @@ public class ViteroBookingsEditController extends FormBasicController { ...@@ -69,13 +71,14 @@ public class ViteroBookingsEditController extends FormBasicController {
private ViteroBookingEditController bookingController; private ViteroBookingEditController bookingController;
private ViteroRoomsOverviewController roomsOverviewController; private ViteroRoomsOverviewController roomsOverviewController;
private ViteroUserToGroupController usersController; private ViteroUserToGroupController usersController;
private VelocityContainer viteroGroupVC;
private int count = 0;
private final boolean readOnly; private final boolean readOnly;
private final String resourceName; private final String resourceName;
private final BusinessGroup group; private final BusinessGroup group;
private final OLATResourceable ores; private final OLATResourceable ores;
private final String subIdentifier; private final String subIdentifier;
@Autowired @Autowired
private ViteroManager viteroManager; private ViteroManager viteroManager;
...@@ -112,15 +115,8 @@ public class ViteroBookingsEditController extends FormBasicController { ...@@ -112,15 +115,8 @@ public class ViteroBookingsEditController extends FormBasicController {
try { try {
bookingDisplays.clear(); bookingDisplays.clear();
List<ViteroBooking> bookings = viteroManager.getBookings(group, ores, subIdentifier); List<ViteroBooking> bookings = viteroManager.getBookings(group, ores, subIdentifier);
int i=0;
for(ViteroBooking booking:bookings) { for(ViteroBooking booking:bookings) {
BookingDisplay display = new BookingDisplay(booking); BookingDisplay display = forgeDisplay(booking);
if(!readOnly) {
display.setDeleteButton(uifactory.addFormLink("delete_" + i++, "delete", "delete", flc, Link.BUTTON));
display.setEditButton(uifactory.addFormLink("edit_" + i++, "edit", "edit", flc, Link.BUTTON));
}
display.setUsersButton(uifactory.addFormLink("users_" + i++, "users", "users", flc, Link.BUTTON));
display.setGroupButton(uifactory.addFormLink("group_" + i++, "group.open", "group.open", flc, Link.BUTTON));
bookingDisplays.add(display); bookingDisplays.add(display);
} }
flc.contextPut("bookingDisplays", bookingDisplays); flc.contextPut("bookingDisplays", bookingDisplays);
...@@ -128,6 +124,37 @@ public class ViteroBookingsEditController extends FormBasicController { ...@@ -128,6 +124,37 @@ public class ViteroBookingsEditController extends FormBasicController {
showError(VmsNotAvailableException.I18N_KEY); showError(VmsNotAvailableException.I18N_KEY);
} }
} }
private BookingDisplay forgeDisplay(ViteroBooking booking) {
BookingDisplay display = new BookingDisplay(booking);
if(!readOnly) {
display.setDeleteButton(uifactory.addFormLink("delete_" + count++, "delete", "delete", flc, Link.BUTTON));
display.setEditButton(uifactory.addFormLink("edit_" + count++, "edit", "edit", flc, Link.BUTTON));
}
display.setUsersButton(uifactory.addFormLink("users_" + count++, "users", "users", flc, Link.BUTTON));
FormLink groupButton = uifactory.addFormLink("group_" + count++, "group.open", "group.open", flc, Link.BUTTON);
groupButton.getComponent().setTarget("_blank");
String linkId = "group_" + count++;
Link groupLink = LinkFactory.createLink(linkId, linkId, "group.open", "group.open", getTranslator(), flc.getFormItemComponent(), this, Link.BUTTON);
groupLink.setTarget("_blank");
groupLink.setUserObject(display);
display.setGroupButton(groupLink);
return display;
}
@Override
public void event(UserRequest ureq, Component source, Event event) {
if(source instanceof Link) {
Link link = (Link)source;
if("group.open".equals(link.getCommand()) && link.getUserObject() instanceof BookingDisplay) {
BookingDisplay bookingDisplay = (BookingDisplay)link.getUserObject();
openGroup(ureq, bookingDisplay.getMeeting());
}
}
super.event(ureq, source, event);
}
@Override @Override
protected void formOK(UserRequest ureq) { protected void formOK(UserRequest ureq) {
...@@ -153,10 +180,6 @@ public class ViteroBookingsEditController extends FormBasicController { ...@@ -153,10 +180,6 @@ public class ViteroBookingsEditController extends FormBasicController {
ViteroBooking viteroBooking = display.getMeeting(); ViteroBooking viteroBooking = display.getMeeting();
usersBooking(ureq, viteroBooking); usersBooking(ureq, viteroBooking);
break; break;
} else if(display.getGroupButton() == source) {
ViteroBooking viteroBooking = display.getMeeting();
openGroup(ureq, viteroBooking);
break;
} }
} }
reloadModel(); reloadModel();
...@@ -195,18 +218,12 @@ public class ViteroBookingsEditController extends FormBasicController { ...@@ -195,18 +218,12 @@ public class ViteroBookingsEditController extends FormBasicController {
if(url == null) { if(url == null) {
showError("error.sessionCodeNull"); showError("error.sessionCodeNull");
} else { } else {
viteroGroupVC = createVelocityContainer("opengroup"); MediaResource redirect = new RedirectMediaResource(url);
viteroGroupVC.contextPut("groupUrl", url); ureq.getDispatchResult().setResultingMediaResource(redirect);
removeAsListenerAndDispose(cmc);
cmc = new CloseableModalController(getWindowControl(), translate("close"), viteroGroupVC);
listenTo(cmc);
cmc.activate();
} }
} else { } else {
String title = translate("booking.group"); showWarning("booking.group.warning");
String text = translate("booking.group.warning");
List<String> buttonLabels = Collections.singletonList(translate("ok"));
warningGroupCtr = activateGenericDialog(ureq, title, text, buttonLabels, warningGroupCtr);
} }
} catch (VmsNotAvailableException e) { } catch (VmsNotAvailableException e) {
showError(VmsNotAvailableException.I18N_KEY); showError(VmsNotAvailableException.I18N_KEY);
...@@ -214,7 +231,7 @@ public class ViteroBookingsEditController extends FormBasicController { ...@@ -214,7 +231,7 @@ public class ViteroBookingsEditController extends FormBasicController {
} }
protected void occupiedRooms(UserRequest ureq) { protected void occupiedRooms(UserRequest ureq) {
removeAsListenerAndDispose(bookingController); removeAsListenerAndDispose(roomsOverviewController);
try { try {
roomsOverviewController = new ViteroRoomsOverviewController(ureq, getWindowControl()); roomsOverviewController = new ViteroRoomsOverviewController(ureq, getWindowControl());
...@@ -288,7 +305,7 @@ public class ViteroBookingsEditController extends FormBasicController { ...@@ -288,7 +305,7 @@ public class ViteroBookingsEditController extends FormBasicController {
private FormLink deleteButton; private FormLink deleteButton;
private FormLink editButton; private FormLink editButton;
private FormLink usersButton; private FormLink usersButton;
private FormLink groupButton; private Link groupButton;
public BookingDisplay(ViteroBooking meeting) { public BookingDisplay(ViteroBooking meeting) {
this.meeting = meeting; this.meeting = meeting;
...@@ -338,11 +355,11 @@ public class ViteroBookingsEditController extends FormBasicController { ...@@ -338,11 +355,11 @@ public class ViteroBookingsEditController extends FormBasicController {
this.usersButton = usersButton; this.usersButton = usersButton;
} }
public FormLink getGroupButton() { public Link getGroupButton() {
return groupButton; return groupButton;
} }
public void setGroupButton(FormLink groupButton) { public void setGroupButton(Link groupButton) {
this.groupButton = groupButton; this.groupButton = groupButton;
} }
} }
......
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>
<th>$r.translate("group.name")</th> <th scope="col">$r.translate("group.name")</th>
<th>$r.translate("booking.begin")</th> <th scope="col">$r.translate("booking.begin")</th>
<th>$r.translate("booking.end")</th> <th scope="col">$r.translate("booking.end")</th>
<th colspan="4"></th> <th scope="col" colspan="4"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<td>$r.formatDateAndTime($bookingDisplay.end)</td> <td>$r.formatDateAndTime($bookingDisplay.end)</td>
<td>$r.render($bookingDisplay.editButton.component.componentName)</td> <td>$r.render($bookingDisplay.editButton.component.componentName)</td>
<td>$r.render($bookingDisplay.usersButton.component.componentName)</td> <td>$r.render($bookingDisplay.usersButton.component.componentName)</td>
<td>$r.render($bookingDisplay.groupButton.component.componentName)</td> <td>$r.render($bookingDisplay.groupButton.componentName)</td>
<td>$r.render($bookingDisplay.deleteButton.component.componentName)</td> <td>$r.render($bookingDisplay.deleteButton.component.componentName)</td>
</tr> </tr>
#end #end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment