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

FXOLAT-282: sign in/out, peek view, filter for my bookings

--HG--
branch : FXOLAT-282-virtualclassroom
parent c6216e09
No related branches found
No related tags found
No related merge requests found
Showing
with 695 additions and 73 deletions
...@@ -49,6 +49,7 @@ import org.olat.repository.RepositoryEntry; ...@@ -49,6 +49,7 @@ import org.olat.repository.RepositoryEntry;
import org.olat.repository.RepositoryManager; import org.olat.repository.RepositoryManager;
import com.frentix.olat.course.nodes.vitero.ViteroEditController; import com.frentix.olat.course.nodes.vitero.ViteroEditController;
import com.frentix.olat.course.nodes.vitero.ViteroPeekViewController;
import com.frentix.olat.course.nodes.vitero.ViteroRunController; import com.frentix.olat.course.nodes.vitero.ViteroRunController;
import com.frentix.olat.vitero.manager.ViteroManager; import com.frentix.olat.vitero.manager.ViteroManager;
...@@ -125,9 +126,8 @@ public class ViteroCourseNode extends AbstractAccessableCourseNode { ...@@ -125,9 +126,8 @@ public class ViteroCourseNode extends AbstractAccessableCourseNode {
} }
@Override @Override
public Controller createPeekViewRunController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv, public Controller createPeekViewRunController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv, NodeEvaluation ne) {
NodeEvaluation ne) { return new ViteroPeekViewController(ureq, wControl, userCourseEnv);
return null;
} }
@Override @Override
......
...@@ -20,10 +20,8 @@ ...@@ -20,10 +20,8 @@
*/ */
package com.frentix.olat.course.nodes.vitero; package com.frentix.olat.course.nodes.vitero;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import org.olat.core.extensions.ExtensionResource;
import org.olat.core.gui.translator.Translator; import org.olat.core.gui.translator.Translator;
import org.olat.core.util.Util; import org.olat.core.util.Util;
import org.olat.course.nodes.AbstractCourseNodeConfiguration; import org.olat.course.nodes.AbstractCourseNodeConfiguration;
...@@ -70,24 +68,7 @@ public class ViteroCourseNodeConfiguration extends AbstractCourseNodeConfigurati ...@@ -70,24 +68,7 @@ public class ViteroCourseNodeConfiguration extends AbstractCourseNodeConfigurati
return super.isEnabled(); return super.isEnabled();
} }
public ExtensionResource getExtensionCSS() {
return null;
}
public List getExtensionResources() {
return null;
}
public String getName() { public String getName() {
return getAlias(); return getAlias();
} }
public void setup() {
// no special setup necessary
}
public void tearDown() {
// no special tear down necessary
}
} }
\ No newline at end of file
...@@ -74,7 +74,6 @@ public class ViteroEditController extends ActivateableTabbableDefaultController ...@@ -74,7 +74,6 @@ public class ViteroEditController extends ActivateableTabbableDefaultController
super(ureq, wControl); super(ureq, wControl);
this.courseNode = courseNode; this.courseNode = courseNode;
editVc = this.createVelocityContainer("edit");
Condition accessCondition = courseNode.getPreConditionAccess(); Condition accessCondition = courseNode.getPreConditionAccess();
accessibilityCondContr = new ConditionEditController(ureq, wControl, course.getCourseEnvironment().getCourseGroupManager(), accessibilityCondContr = new ConditionEditController(ureq, wControl, course.getCourseEnvironment().getCourseGroupManager(),
...@@ -85,7 +84,9 @@ public class ViteroEditController extends ActivateableTabbableDefaultController ...@@ -85,7 +84,9 @@ public class ViteroEditController extends ActivateableTabbableDefaultController
OLATResourceable ores = OresHelper.createOLATResourceableInstance(course.getResourceableTypeName(), course.getResourceableId()); OLATResourceable ores = OresHelper.createOLATResourceableInstance(course.getResourceableTypeName(), course.getResourceableId());
editForm = new ViteroBookingsEditController(ureq, wControl, null, ores); editForm = new ViteroBookingsEditController(ureq, wControl, null, ores);
listenTo(editForm); listenTo(editForm);
editVc.put("editForm", editForm.getInitialComponent());
editVc = createVelocityContainer("edit");
editVc.put("editRooms", editForm.getInitialComponent());
} }
@Override @Override
......
/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Copyright (c) frentix GmbH<br>
* http://www.frentix.com<br>
* <p>
*/
package com.frentix.olat.course.nodes.vitero;
import java.util.Collections;
import java.util.List;
import org.olat.core.CoreSpringFactory;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.table.DefaultColumnDescriptor;
import org.olat.core.gui.components.table.TableController;
import org.olat.core.gui.components.table.TableGuiConfiguration;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.controller.BasicController;
import org.olat.core.id.OLATResourceable;
import org.olat.core.util.resource.OresHelper;
import org.olat.course.CourseModule;
import org.olat.course.run.userview.UserCourseEnvironment;
import com.frentix.olat.vitero.manager.ViteroManager;
import com.frentix.olat.vitero.model.StartBookingComparator;
import com.frentix.olat.vitero.model.ViteroBooking;
import com.frentix.olat.vitero.ui.FilterBookings;
import com.frentix.olat.vitero.ui.ViteroBookingDataModel;
/**
*
* Description:<br>
*
* <P>
* Initial Date: 11 oct. 2011 <br>
*
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*/
public class ViteroPeekViewController extends BasicController {
private TableController tableController;
private final ViteroManager viteroManager;
private final OLATResourceable ores;
public ViteroPeekViewController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv) {
super(ureq, wControl);
viteroManager = (ViteroManager)CoreSpringFactory.getBean("viteroManager");
ores = OresHelper.createOLATResourceableInstance(CourseModule.class,
userCourseEnv.getCourseEnvironment().getCourseResourceableId());
init(ureq);
putInitialPanel(tableController.getInitialComponent());
}
@Override
protected void doDispose() {
//
}
@Override
protected void event(UserRequest ureq, Component source, Event event) {
//
}
private void init(UserRequest ureq) {
List<ViteroBooking> bookings = viteroManager.getBookings(null, ores);
List<ViteroBooking> myBookings = viteroManager.getBookingInFutures(getIdentity());
FilterBookings.filterMyFutureBookings(bookings, myBookings);
Collections.sort(bookings, new StartBookingComparator());
TableGuiConfiguration tableConfig = new TableGuiConfiguration();
tableConfig.setTableEmptyMessage(translate("vc.table.empty"));
tableConfig.setDisplayTableHeader(false);
tableConfig.setCustomCssClass("b_portlet_table");
tableConfig.setDisplayRowCount(false);
tableConfig.setPageingEnabled(false);
tableConfig.setDownloadOffered(false);
tableConfig.setSortingEnabled(false);
removeAsListenerAndDispose(tableController);
tableController = new TableController(tableConfig, ureq, getWindowControl(), getTranslator());
listenTo(tableController);
// dummy header key, won't be used since setDisplayTableHeader is set to
// false
tableController.addColumnDescriptor(new DefaultColumnDescriptor("vc.table.begin", ViteroBookingDataModel.Column.begin.ordinal(), null, ureq.getLocale()));
tableController.addColumnDescriptor(new DefaultColumnDescriptor("vc.table.end", ViteroBookingDataModel.Column.end.ordinal(), null, ureq.getLocale()));
tableController.setTableDataModel(new ViteroBookingDataModel(bookings));
}
}
...@@ -34,31 +34,30 @@ import com.frentix.olat.vitero.ui.ViteroBookingsController; ...@@ -34,31 +34,30 @@ import com.frentix.olat.vitero.ui.ViteroBookingsController;
* Description:<br> * Description:<br>
* *
* <P> * <P>
* Initial Date: 6 oct. 2011 <br> * Initial Date: 6 oct. 2011 <br>
* *
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*/ */
public class ViteroRunController extends BasicController { public class ViteroRunController extends BasicController {
private final ViteroBookingsController bookingsController; private final ViteroBookingsController bookingsController;
public ViteroRunController(UserRequest ureq, WindowControl wControl, OLATResourceable ores) {
super(ureq, wControl);
bookingsController = new ViteroBookingsController(ureq, wControl, null, ores);
listenTo(bookingsController);
public ViteroRunController(UserRequest ureq, WindowControl wControl, OLATResourceable ores) { putInitialPanel(bookingsController.getInitialComponent());
super(ureq, wControl); }
bookingsController = new ViteroBookingsController(ureq, wControl, null, ores);
listenTo(bookingsController);
putInitialPanel(bookingsController.getInitialComponent());
}
@Override @Override
protected void event(UserRequest ureq, Component source, Event event) { protected void event(UserRequest ureq, Component source, Event event) {
//nothing to do // nothing to do
} }
@Override @Override
protected void doDispose() { protected void doDispose() {
//nothing to do // nothing to do
} }
} }
\ No newline at end of file
$r.render('editForm')
$r.render('editRooms')
Hello world (by Vitero)
\ No newline at end of file
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
package com.frentix.olat.vitero.manager; package com.frentix.olat.vitero.manager;
import java.io.File; import java.io.File;
import java.io.StringWriter;
import java.math.BigInteger; import java.math.BigInteger;
import java.rmi.RemoteException; import java.rmi.RemoteException;
import java.text.ParseException; import java.text.ParseException;
...@@ -28,7 +29,9 @@ import java.text.SimpleDateFormat; ...@@ -28,7 +29,9 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.TimeZone;
import java.util.UUID; import java.util.UUID;
import javax.activation.DataHandler; import javax.activation.DataHandler;
...@@ -70,6 +73,7 @@ import com.frentix.olat.vitero.manager.stubs.UserServiceStub.Userid; ...@@ -70,6 +73,7 @@ import com.frentix.olat.vitero.manager.stubs.UserServiceStub.Userid;
import com.frentix.olat.vitero.model.ViteroBooking; import com.frentix.olat.vitero.model.ViteroBooking;
import com.ibm.icu.util.Calendar; import com.ibm.icu.util.Calendar;
import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.CompactWriter;
/** /**
* *
...@@ -151,6 +155,23 @@ public class ViteroManager extends BasicManager { ...@@ -151,6 +155,23 @@ public class ViteroManager extends BasicManager {
} }
} }
public boolean canGoBooking(ViteroBooking booking) {
Date now = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(booking.getStart());
cal.add(Calendar.MINUTE, -booking.getStartBuffer());
Date start = cal.getTime();
cal.setTime(booking.getEnd());
cal.add(Calendar.MINUTE, booking.getEndBuffer());
Date end = cal.getTime();
if(start.before(now) && end.after(now)) {
return true;
}
return false;
}
public List<ViteroBooking> getBookingInFutures(Identity identity) { public List<ViteroBooking> getBookingInFutures(Identity identity) {
int userId = getVmsUserId(identity); int userId = getVmsUserId(identity);
Booking[] bookings = getBookingInFutureByCustomerId(userId); Booking[] bookings = getBookingInFutureByCustomerId(userId);
...@@ -186,7 +207,10 @@ public class ViteroManager extends BasicManager { ...@@ -186,7 +207,10 @@ public class ViteroManager extends BasicManager {
} }
public String serializeViteroBooking(ViteroBooking booking) { public String serializeViteroBooking(ViteroBooking booking) {
return xStream.toXML(booking); StringWriter writer = new StringWriter();
xStream.marshal(booking, new CompactWriter(writer));
writer.flush();
return writer.toString();
} }
public ViteroBooking deserializeViteroBooking(String booking) { public ViteroBooking deserializeViteroBooking(String booking) {
...@@ -258,7 +282,7 @@ public class ViteroManager extends BasicManager { ...@@ -258,7 +282,7 @@ public class ViteroManager extends BasicManager {
protected int createVmsUser(Identity identity) { protected int createVmsUser(Identity identity) {
try { try {
UserServiceStub userWs = this.getUserWebService(); UserServiceStub userWs = getUserWebService();
UserServiceStub.CreateUserRequest createRequest = new UserServiceStub.CreateUserRequest(); UserServiceStub.CreateUserRequest createRequest = new UserServiceStub.CreateUserRequest();
UserServiceStub.Newusertype user = new UserServiceStub.Newusertype(); UserServiceStub.Newusertype user = new UserServiceStub.Newusertype();
...@@ -313,6 +337,9 @@ public class ViteroManager extends BasicManager { ...@@ -313,6 +337,9 @@ public class ViteroManager extends BasicManager {
user.setCompany(""); user.setCompany("");
user.setTimezone(""); user.setTimezone("");
*/ */
TimeZone.getDefault().getID();
user.setTechnicalnote("Generated by OpenOLAT"); user.setTechnicalnote("Generated by OpenOLAT");
createRequest.setUser(user); createRequest.setUser(user);
...@@ -435,9 +462,88 @@ public class ViteroManager extends BasicManager { ...@@ -435,9 +462,88 @@ public class ViteroManager extends BasicManager {
} }
} }
public boolean updateBooking(BusinessGroup group, OLATResourceable ores, ViteroBooking vBooking) { public boolean addToRoom(ViteroBooking booking, Identity identity) {
//TODO try {
return false; int userId = getVmsUserId(identity);
if(userId < 0) {
return false;
}
GroupServiceStub groupWs = getGroupWebService();
GroupServiceStub.AddUserToGroupRequest addRequest = new GroupServiceStub.AddUserToGroupRequest();
GroupServiceStub.Groupiduserid groupuserId = new GroupServiceStub.Groupiduserid();
groupuserId.setGroupid(booking.getGroupId());
groupuserId.setUserid(userId);
addRequest.setAddUserToGroupRequest(groupuserId);
groupWs.addUserToGroup(addRequest);
return true;
} catch(AxisFault f) {
String msg = f.getFaultDetailElement().toString();
if(msg.contains("<errorCode>53</errorCode>")) {
logError("The user doesn ́t exist!", f);
} else if(msg.contains("<errorCode>103</errorCode>")) {
logError("The user is not attached to the customer (to which this group belongs)", f);
} else if(msg.contains("<errorCode>151</errorCode>")) {
logError("The group doesn ́t exist", f);
} else if(msg.contains("<errorCode>303</errorCode>")) {
logError("An id <= 0", f);
} else {
logError(msg, f);
}
return false;
} catch (RemoteException e) {
logError("Cannot add an user to a group", e);
return false;
}
}
public boolean removeFromRoom(ViteroBooking booking, Identity identity) {
try {
int userId = getVmsUserId(identity);
if(userId < 0) {
return true;//nothing to remove
}
GroupServiceStub groupWs = getGroupWebService();
GroupServiceStub.RemoveUserFromGroupRequest removeRequest = new GroupServiceStub.RemoveUserFromGroupRequest();
GroupServiceStub.Groupiduserid groupuserId = new GroupServiceStub.Groupiduserid();
groupuserId.setGroupid(booking.getGroupId());
groupuserId.setUserid(userId);
removeRequest.setRemoveUserFromGroupRequest(groupuserId);
groupWs.removeUserFromGroup(removeRequest);
return true;
} catch(AxisFault f) {
String msg = f.getFaultDetailElement().toString();
if(msg.contains("<errorCode>53</errorCode>")) {
logError("The user doesn ́t exist!", f);
} else if(msg.contains("<errorCode>151</errorCode>")) {
logError("The group doesn ́t exist", f);
} else if(msg.contains("<errorCode>303</errorCode>")) {
logError("An id <= 0", f);
} else {
logError(msg, f);
}
return false;
} catch (RemoteException e) {
logError("Cannot add an user to a group", e);
return false;
}
}
public ViteroBooking updateBooking(BusinessGroup group, OLATResourceable ores, ViteroBooking vBooking) {
Bookingtype bookingType = getBookingById(vBooking.getBookingId());
if(bookingType == null) {
logInfo("Booking doesn't exist: " + vBooking.getBookingId());
return null;
}
Booking booking = bookingType.getBooking();
//set the vms values
update(vBooking, booking);
//update the property
updateProperty(group, ores, vBooking);
return vBooking;
} }
public boolean createBooking(BusinessGroup group, OLATResourceable ores, ViteroBooking vBooking) { public boolean createBooking(BusinessGroup group, OLATResourceable ores, ViteroBooking vBooking) {
...@@ -482,8 +588,11 @@ public class ViteroManager extends BasicManager { ...@@ -482,8 +588,11 @@ public class ViteroManager extends BasicManager {
newBooking.setPcstateokrequired(false); newBooking.setPcstateokrequired(false);
newBooking.setRepetitionpattern("once"); newBooking.setRepetitionpattern("once");
newBooking.setRepetitionenddate(""); newBooking.setRepetitionenddate("");
newBooking.setTimezone("Africa/Ceuta");
*/ */
//newBooking.setTimezone("Africa/Ceuta");
newBooking.setTimezone("Africa/Ceuta");
createRequest.setBooking(newBooking); createRequest.setBooking(newBooking);
BookingServiceStub.CreateBookingResponse response = bookingWs.createBooking(createRequest); BookingServiceStub.CreateBookingResponse response = bookingWs.createBooking(createRequest);
...@@ -509,6 +618,8 @@ public class ViteroManager extends BasicManager { ...@@ -509,6 +618,8 @@ public class ViteroManager extends BasicManager {
logError("Booking collision!", f); logError("Booking collision!", f);
} else if(msg.contains("<errorCode>703</errorCode>")) { } else if(msg.contains("<errorCode>703</errorCode>")) {
logError("License/customer expired!", f); logError("License/customer expired!", f);
} else if(msg.contains("<errorCode>304</errorCode>")) {
logError("Invalid time zone!", f);
} else { } else {
logError(msg, f); logError(msg, f);
} }
...@@ -581,16 +692,34 @@ public class ViteroManager extends BasicManager { ...@@ -581,16 +692,34 @@ public class ViteroManager extends BasicManager {
propertyManager.deleteProperties(null, null, null, VMS_CATEGORY, bookingId); propertyManager.deleteProperties(null, null, null, VMS_CATEGORY, bookingId);
} }
public String getTimeZoneId() {
return "Africa/Ceuta";
}
protected Booking[] getBookingInFutureByCustomerId(int userId) { protected Booking[] getBookingInFutureByCustomerId(int userId) {
try { try {
BookingServiceStub bookingWs = getBookingWebService(); BookingServiceStub bookingWs = getBookingWebService();
BookingServiceStub.GetBookingListByUserInFutureRequest request = new BookingServiceStub.GetBookingListByUserInFutureRequest(); BookingServiceStub.GetBookingListByUserInFutureRequest request = new BookingServiceStub.GetBookingListByUserInFutureRequest();
request.setUserid(userId); request.setUserid(userId);
request.setTimezone(getTimeZoneId());
BookingServiceStub.GetBookingListByUserInFutureResponse response = bookingWs.getBookingListByUserInFuture(request); BookingServiceStub.GetBookingListByUserInFutureResponse response = bookingWs.getBookingListByUserInFuture(request);
Bookinglist bookingList = response.getGetBookingListByUserInFutureResponse(); Bookinglist bookingList = response.getGetBookingListByUserInFutureResponse();
return bookingList.getBooking(); return bookingList.getBooking();
} catch(AxisFault f) {
String msg = f.getFaultDetailElement().toString();
if(msg.contains("<errorCode>304</errorCode>")) {
logError("Invalid time zone!", f);
} else if(msg.contains("<errorCode>53</errorCode>")) {
logError("The user does not exist!", f);
} else if(msg.contains("<errorCode>303</errorCode>")) {
logError("ids <= 0!", f);
} else {
logError(msg, f);
}
logError(msg, f);
return null;
} catch (RemoteException e) { } catch (RemoteException e) {
logError("", e); logError("", e);
return null; return null;
...@@ -611,6 +740,10 @@ public class ViteroManager extends BasicManager { ...@@ -611,6 +740,10 @@ public class ViteroManager extends BasicManager {
protected ViteroBooking convert(Booking booking) { protected ViteroBooking convert(Booking booking) {
ViteroBooking vb = new ViteroBooking(); ViteroBooking vb = new ViteroBooking();
return update(vb, booking);
}
protected ViteroBooking update(ViteroBooking vb, Booking booking) {
vb.setBookingId(booking.getBookingid()); vb.setBookingId(booking.getBookingid());
vb.setGroupId(booking.getGroupid()); vb.setGroupId(booking.getGroupid());
vb.setRoomSize(booking.getRoomsize()); vb.setRoomSize(booking.getRoomsize());
...@@ -621,22 +754,39 @@ public class ViteroManager extends BasicManager { ...@@ -621,22 +754,39 @@ public class ViteroManager extends BasicManager {
return vb; return vb;
} }
protected Property getProperty(final BusinessGroup group, final OLATResourceable courseResource) { protected Property getProperty(final BusinessGroup group, final OLATResourceable courseResource, final ViteroBooking booking) {
return propertyManager.findProperty(null, group, courseResource, VMS_CATEGORY, null); String propertyName = Integer.toString(booking.getBookingId());
return propertyManager.findProperty(null, group, courseResource, VMS_CATEGORY, propertyName);
} }
protected Property getOrCreateProperty(final BusinessGroup group, final OLATResourceable courseResource, ViteroBooking booking) { protected Property getOrCreateProperty(final BusinessGroup group, final OLATResourceable courseResource, final ViteroBooking booking) {
Property property = getProperty(group, courseResource); Property property = getProperty(group, courseResource, booking);
if(property == null) { if(property == null) {
String serialized = serializeViteroBooking(booking); property = createProperty(group, courseResource, booking);
String bookingId = Integer.toString(booking.getBookingId());
Long groupId = new Long(booking.getGroupId());
property = propertyManager.createPropertyInstance(null, group, courseResource, VMS_CATEGORY, bookingId, null, groupId, null, serialized);
propertyManager.saveProperty(property); propertyManager.saveProperty(property);
} }
return property; return property;
} }
protected Property updateProperty(final BusinessGroup group, final OLATResourceable courseResource, ViteroBooking booking) {
Property property = getProperty(group, courseResource, booking);
if(property == null) {
property = createProperty(group, courseResource, booking);
propertyManager.saveProperty(property);
} else {
String serialized = serializeViteroBooking(booking);
property.setTextValue(serialized);
propertyManager.updateProperty(property);
}
return property;
}
protected Property createProperty(final BusinessGroup group, final OLATResourceable courseResource, ViteroBooking booking) {
String serialized = serializeViteroBooking(booking);
String bookingId = Integer.toString(booking.getBookingId());
Long groupId = new Long(booking.getGroupId());
return propertyManager.createPropertyInstance(null, group, courseResource, VMS_CATEGORY, bookingId, null, groupId, null, serialized);
}
protected Bookingtype getBookingById(int id) { protected Bookingtype getBookingById(int id) {
if(id < 0) return null; if(id < 0) return null;
......
/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Copyright (c) frentix GmbH<br>
* http://www.frentix.com<br>
* <p>
*/
package com.frentix.olat.vitero.model;
import java.util.Comparator;
import java.util.Date;
/**
*
* Description:<br>
*
* <P>
* Initial Date: 11 oct. 2011 <br>
*
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*/
public class StartBookingComparator implements Comparator<ViteroBooking> {
@Override
public int compare(ViteroBooking b1, ViteroBooking b2) {
Date d1 = b1.getStart();
Date d2 = b2.getStart();
if(d1 == null) return -1;
if(d2 == null) return 1;
return d1.compareTo(d2);
}
}
...@@ -40,6 +40,8 @@ public class ViteroBooking { ...@@ -40,6 +40,8 @@ public class ViteroBooking {
private Date end; private Date end;
private int endBuffer; private int endBuffer;
private int roomSize; private int roomSize;
private boolean autoSignIn;
private String timeZoneId;
public ViteroBooking() { public ViteroBooking() {
// nothing to do // nothing to do
...@@ -68,8 +70,6 @@ public class ViteroBooking { ...@@ -68,8 +70,6 @@ public class ViteroBooking {
public void setRoomSize(int roomSize) { public void setRoomSize(int roomSize) {
this.roomSize = roomSize; this.roomSize = roomSize;
} }
public int getStartBuffer() { public int getStartBuffer() {
return startBuffer; return startBuffer;
...@@ -87,8 +87,6 @@ public class ViteroBooking { ...@@ -87,8 +87,6 @@ public class ViteroBooking {
this.start = start; this.start = start;
} }
public int getEndBuffer() { public int getEndBuffer() {
return endBuffer; return endBuffer;
} }
...@@ -104,4 +102,20 @@ public class ViteroBooking { ...@@ -104,4 +102,20 @@ public class ViteroBooking {
public void setEnd(Date end) { public void setEnd(Date end) {
this.end = end; this.end = end;
} }
public String getTimeZoneId() {
return timeZoneId;
}
public void setTimeZoneId(String timeZoneId) {
this.timeZoneId = timeZoneId;
}
public boolean isAutoSignIn() {
return autoSignIn;
}
public void setAutoSignIn(boolean autoSignIn) {
this.autoSignIn = autoSignIn;
}
} }
\ No newline at end of file
package com.frentix.olat.vitero.ui;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import com.frentix.olat.vitero.model.ViteroBooking;
/**
*
* Description:<br>
*
* <P>
* Initial Date: 11 oct. 2011 <br>
*
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*/
public class FilterBookings {
public static void filterMyFutureBookings(final List<ViteroBooking> bookings, final List<ViteroBooking> signedInBookings) {
//only the bookings in the future
Date now = new Date();
for(Iterator<ViteroBooking> it=bookings.iterator(); it.hasNext(); ) {
ViteroBooking booking = it.next();
Date end = booking.getEnd();
if(end.before(now)) {
it.remove();
} else if(!booking.isAutoSignIn()) {
boolean in = false;
for(ViteroBooking signedInBooking:signedInBookings) {
if(signedInBooking.getBookingId() == booking.getBookingId()) {
in = true;//already in
}
}
if(!in) {
it.remove();
}
}
}
}
}
/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Copyright (c) frentix GmbH<br>
* http://www.frentix.com<br>
* <p>
*/
package com.frentix.olat.vitero.ui;
import java.util.Locale;
import org.olat.core.gui.components.table.DefaultColumnDescriptor;
import org.olat.core.gui.render.Renderer;
import org.olat.core.gui.render.StringOutput;
import org.olat.core.gui.translator.Translator;
/**
*
* Description:<br>
*
* <P>
* Initial Date: 11 oct. 2011 <br>
*
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*/
public class SignColumnDescriptor extends DefaultColumnDescriptor {
private final Translator translator;
public SignColumnDescriptor(final String headerKey, final int dataColumn, final Locale locale, final Translator translator) {
super(headerKey, dataColumn, null, locale);
this.translator = translator;
}
@Override
public String getAction(int row) {
Object state = getTable().getTableDataModel().getValueAt(row, getDataColumn());
if(state instanceof ViteroBookingDataModel.Sign) {
ViteroBookingDataModel.Sign sign = (ViteroBookingDataModel.Sign)state;
switch(sign) {
case signin: return sign.name();
case signout: return sign.name();
default: return null;
}
}
return null;
}
@Override
public void renderValue(StringOutput sb, int row, Renderer renderer) {
Object state = getTable().getTableDataModel().getValueAt(row, getDataColumn());
if(state instanceof ViteroBookingDataModel.Sign) {
ViteroBookingDataModel.Sign sign = (ViteroBookingDataModel.Sign)state;
switch(sign) {
case signin: sb.append(translator.translate("signin")); break;
case signout: sb.append(translator.translate("signout")); break;
}
}
}
}
/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Copyright (c) frentix GmbH<br>
* http://www.frentix.com<br>
* <p>
*/
package com.frentix.olat.vitero.ui;
import java.util.Locale;
import org.olat.core.gui.components.table.DefaultColumnDescriptor;
import org.olat.core.gui.render.Renderer;
import org.olat.core.gui.render.StringOutput;
import org.olat.core.gui.translator.Translator;
import com.frentix.olat.vitero.manager.ViteroManager;
import com.frentix.olat.vitero.model.ViteroBooking;
/**
*
* Description:<br>
*
* <P>
* Initial Date: 11 oct. 2011 <br>
*
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*/
public class StartColumnDescriptor extends DefaultColumnDescriptor {
private final ViteroManager viteroManager;
private final Translator translator;
public StartColumnDescriptor(final String headerKey, String action, final Locale locale, ViteroManager viteroManager, Translator translator) {
super(headerKey, 1, action, locale);
this.viteroManager = viteroManager;
this.translator = translator;
}
@Override
public String getAction(int row) {
ViteroBooking booking = (ViteroBooking)getTable().getTableDataModel().getObject(row);
if(viteroManager.canGoBooking(booking)) {
Object state = getTable().getTableDataModel().getValueAt(row, ViteroBookingDataModel.Column.sign.ordinal());
if(ViteroBookingDataModel.Sign.signout.equals(state)) {
return super.getAction(row);
}
}
return null;
}
@Override
public void renderValue(StringOutput sb, int row, Renderer renderer) {
ViteroBooking booking = (ViteroBooking)getTable().getTableDataModel().getObject(row);
if(viteroManager.canGoBooking(booking)) {
Object state = getTable().getTableDataModel().getValueAt(row, ViteroBookingDataModel.Column.sign.ordinal());
if(ViteroBookingDataModel.Sign.signout.equals(state)) {
sb.append(translator.translate(getHeaderKey()));
}
}
}
}
...@@ -38,6 +38,8 @@ import com.frentix.olat.vitero.model.ViteroBooking; ...@@ -38,6 +38,8 @@ import com.frentix.olat.vitero.model.ViteroBooking;
public class ViteroBookingDataModel implements TableDataModel { public class ViteroBookingDataModel implements TableDataModel {
private List<ViteroBooking> bookings; private List<ViteroBooking> bookings;
private List<ViteroBooking> signedInBookings;
public ViteroBookingDataModel() { public ViteroBookingDataModel() {
// //
...@@ -46,6 +48,11 @@ public class ViteroBookingDataModel implements TableDataModel { ...@@ -46,6 +48,11 @@ public class ViteroBookingDataModel implements TableDataModel {
public ViteroBookingDataModel(List<ViteroBooking> bookings) { public ViteroBookingDataModel(List<ViteroBooking> bookings) {
this.bookings = bookings; this.bookings = bookings;
} }
public ViteroBookingDataModel(List<ViteroBooking> bookings, List<ViteroBooking> signedInBookings) {
this.bookings = bookings;
this.signedInBookings = signedInBookings;
}
@Override @Override
public int getColumnCount() { public int getColumnCount() {
...@@ -68,6 +75,20 @@ public class ViteroBookingDataModel implements TableDataModel { ...@@ -68,6 +75,20 @@ public class ViteroBookingDataModel implements TableDataModel {
switch(Column.values()[col]) { switch(Column.values()[col]) {
case begin: return booking.getStart(); case begin: return booking.getStart();
case end: return booking.getEnd(); case end: return booking.getEnd();
case sign: {
boolean auto = booking.isAutoSignIn();
if(auto) {
if(signedInBookings != null) {
for(ViteroBooking signedInBooking: signedInBookings) {
if(booking.getBookingId() == signedInBooking.getBookingId()) {
return Sign.signout;
}
}
}
return Sign.signin;
}
return Sign.no;
}
default: return ""; default: return "";
} }
} }
...@@ -81,10 +102,17 @@ public class ViteroBookingDataModel implements TableDataModel { ...@@ -81,10 +102,17 @@ public class ViteroBookingDataModel implements TableDataModel {
public Object createCopyWithEmptyList() { public Object createCopyWithEmptyList() {
return new ViteroBookingDataModel(); return new ViteroBookingDataModel();
} }
public enum Sign {
signin,
signout,
no,
}
public enum Column { public enum Column {
begin, begin,
end, end,
open, open,
sign,
} }
} }
\ No newline at end of file
...@@ -27,6 +27,7 @@ import org.olat.core.CoreSpringFactory; ...@@ -27,6 +27,7 @@ import org.olat.core.CoreSpringFactory;
import org.olat.core.gui.UserRequest; import org.olat.core.gui.UserRequest;
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.DateChooser; 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.SingleSelection;
import org.olat.core.gui.components.form.flexible.impl.FormBasicController; 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.components.form.flexible.impl.FormLayoutContainer;
...@@ -56,9 +57,13 @@ public class ViteroBookingEditController extends FormBasicController { ...@@ -56,9 +57,13 @@ public class ViteroBookingEditController extends FormBasicController {
private SingleSelection endBufferEl; private SingleSelection endBufferEl;
private SingleSelection roomSizeEl; private SingleSelection roomSizeEl;
private MultipleSelectionElement autoSignIn;
private static final String[] bufferKeys = new String[]{"0", "15", "30", "45", "60"}; private static final String[] bufferKeys = new String[]{"0", "15", "30", "45", "60"};
private static final String[] bufferValues = bufferKeys; private static final String[] bufferValues = bufferKeys;
private final String[] roomSizes; private final String[] roomSizes;
private static final String[] autoSignInKeys = new String[]{"on"};
private final String[] autoSignInValues;
private final BusinessGroup group; private final BusinessGroup group;
private final OLATResourceable ores; private final OLATResourceable ores;
...@@ -81,37 +86,51 @@ public class ViteroBookingEditController extends FormBasicController { ...@@ -81,37 +86,51 @@ public class ViteroBookingEditController extends FormBasicController {
roomSizes[i++] = size.toString(); roomSizes[i++] = size.toString();
} }
autoSignInValues = new String[]{ translate("enabled") };
initForm(ureq); initForm(ureq);
} }
@Override @Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
boolean editable = booking.getBookingId() <= 0;
//begin //begin
beginChooser = uifactory.addDateChooser("vc.table.begin", "", formLayout); beginChooser = uifactory.addDateChooser("vc.table.begin", "", formLayout);
beginChooser.setDisplaySize(21); beginChooser.setDisplaySize(21);
beginChooser.setDateChooserTimeEnabled(true); beginChooser.setDateChooserTimeEnabled(true);
beginChooser.setMandatory(true); beginChooser.setMandatory(true);
beginChooser.setDate(booking.getStart()); beginChooser.setDate(booking.getStart());
beginChooser.setEnabled(editable);
//end //end
endChooser = uifactory.addDateChooser("vc.table.end", "", formLayout); endChooser = uifactory.addDateChooser("vc.table.end", "", formLayout);
endChooser.setDisplaySize(21); endChooser.setDisplaySize(21);
endChooser.setDateChooserTimeEnabled(true); endChooser.setDateChooserTimeEnabled(true);
endChooser.setMandatory(true); endChooser.setMandatory(true);
endChooser.setDate(booking.getEnd()); endChooser.setDate(booking.getEnd());
endChooser.setEnabled(editable);
//buffer start //buffer start
beginBufferEl = uifactory.addDropdownSingleselect("vc.table.beginBuffer", formLayout, bufferKeys, bufferValues, null); beginBufferEl = uifactory.addDropdownSingleselect("vc.table.beginBuffer", formLayout, bufferKeys, bufferValues, null);
beginBufferEl.select(Integer.toString(booking.getStartBuffer()), true); beginBufferEl.select(Integer.toString(booking.getStartBuffer()), true);
beginBufferEl.setEnabled(editable);
//buffer end //buffer end
endBufferEl = uifactory.addDropdownSingleselect("vc.table.endBuffer", formLayout, bufferKeys, bufferValues, null); endBufferEl = uifactory.addDropdownSingleselect("vc.table.endBuffer", formLayout, bufferKeys, bufferValues, null);
endBufferEl.select(Integer.toString(booking.getEndBuffer()), true); endBufferEl.select(Integer.toString(booking.getEndBuffer()), true);
endBufferEl.setEnabled(editable);
//room size //room size
roomSizeEl = uifactory.addDropdownSingleselect("vc.table.roomSize", formLayout, roomSizes, roomSizes, null); roomSizeEl = uifactory.addDropdownSingleselect("vc.table.roomSize", formLayout, roomSizes, roomSizes, null);
if(booking.getRoomSize() > 0) { if(booking.getRoomSize() > 0) {
roomSizeEl.select(Integer.toString(booking.getRoomSize()), true); roomSizeEl.select(Integer.toString(booking.getRoomSize()), true);
} }
roomSizeEl.setEnabled(editable);
autoSignIn = uifactory.addCheckboxesHorizontal("vc.autoSignIn", formLayout, autoSignInKeys, autoSignInValues, null);
if(booking.isAutoSignIn()) {
autoSignIn.select(autoSignInKeys[0], true);
}
FormLayoutContainer buttonCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); FormLayoutContainer buttonCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator());
formLayout.add(buttonCont); formLayout.add(buttonCont);
...@@ -133,9 +152,33 @@ public class ViteroBookingEditController extends FormBasicController { ...@@ -133,9 +152,33 @@ public class ViteroBookingEditController extends FormBasicController {
boolean allOk = true; boolean allOk = true;
Date begin = beginChooser.getDate(); Date begin = beginChooser.getDate();
beginChooser.clearError();
if(begin == null) {
beginChooser.setErrorKey("form.legende.mandatory", null);
allOk = false;
} else if(new Date().after(begin)) {
beginChooser.setErrorKey("vc.check.bookingInPast", null);
allOk = false;
}
Date end = endChooser.getDate(); Date end = endChooser.getDate();
endChooser.clearError();
if(end == null) {
endChooser.setErrorKey("form.legende.mandatory", null);
allOk = false;
} else if(new Date().after(begin)) {
beginChooser.setErrorKey("vc.check.bookingInPast", null);
allOk = false;
} else if(end.before(begin)) {
beginChooser.setErrorKey("vc.check.bookingInPast", null);
allOk = false;
}
roomSizeEl.clearError();
if(!roomSizeEl.isOneSelected()) {
roomSizeEl.setErrorKey("form.legende.mandatory", null);
allOk = false;
}
return allOk && super.validateFormLogic(ureq); return allOk && super.validateFormLogic(ureq);
} }
...@@ -166,17 +209,26 @@ public class ViteroBookingEditController extends FormBasicController { ...@@ -166,17 +209,26 @@ public class ViteroBookingEditController extends FormBasicController {
} }
booking.setRoomSize(roomSize); booking.setRoomSize(roomSize);
boolean auto = autoSignIn.isMultiselect() && autoSignIn.isSelected(0);
booking.setAutoSignIn(auto);
if(booking.getBookingId() >= 0) { if(booking.getBookingId() >= 0) {
viteroManager.updateBooking(group, ores, booking); ViteroBooking updatedBooking = viteroManager.updateBooking(group, ores, booking);
if(updatedBooking != null) {
showInfo("vc.check.ok");
fireEvent(ureq, Event.DONE_EVENT);
} else {
showError("vc.check.nok");
}
} else { } else {
if(viteroManager.createBooking(group, ores, booking)) { if(viteroManager.createBooking(group, ores, booking)) {
showInfo("vc.check.ok"); showInfo("vc.check.ok");
fireEvent(ureq, Event.DONE_EVENT);
} else { } else {
showError("vc.check.nok"); showError("vc.check.nok");
} }
} }
fireEvent(ureq, Event.DONE_EVENT);
} }
@Override @Override
......
...@@ -26,7 +26,6 @@ import org.olat.core.CoreSpringFactory; ...@@ -26,7 +26,6 @@ import org.olat.core.CoreSpringFactory;
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.Component;
import org.olat.core.gui.components.table.DefaultColumnDescriptor; import org.olat.core.gui.components.table.DefaultColumnDescriptor;
import org.olat.core.gui.components.table.StaticColumnDescriptor;
import org.olat.core.gui.components.table.TableController; import org.olat.core.gui.components.table.TableController;
import org.olat.core.gui.components.table.TableDataModel; import org.olat.core.gui.components.table.TableDataModel;
import org.olat.core.gui.components.table.TableEvent; import org.olat.core.gui.components.table.TableEvent;
...@@ -41,8 +40,11 @@ import org.olat.core.id.OLATResourceable; ...@@ -41,8 +40,11 @@ import org.olat.core.id.OLATResourceable;
import org.olat.group.BusinessGroup; import org.olat.group.BusinessGroup;
import com.frentix.olat.vitero.manager.ViteroManager; import com.frentix.olat.vitero.manager.ViteroManager;
import com.frentix.olat.vitero.model.StartBookingComparator;
import com.frentix.olat.vitero.model.ViteroBooking; import com.frentix.olat.vitero.model.ViteroBooking;
import edu.emory.mathcs.backport.java.util.Collections;
/** /**
* *
* Description:<br> * Description:<br>
...@@ -56,17 +58,19 @@ public class ViteroBookingsController extends BasicController { ...@@ -56,17 +58,19 @@ public class ViteroBookingsController extends BasicController {
private final VelocityContainer runVC; private final VelocityContainer runVC;
private final TableController tableCtr; private final TableController tableCtr;
private final BusinessGroup group;
private final OLATResourceable ores;
private final ViteroManager viteroManager; private final ViteroManager viteroManager;
public ViteroBookingsController(UserRequest ureq, WindowControl wControl, public ViteroBookingsController(UserRequest ureq, WindowControl wControl,
BusinessGroup group, OLATResourceable ores) { BusinessGroup group, OLATResourceable ores) {
super(ureq, wControl); super(ureq, wControl);
this.ores = ores;
this.group = group;
viteroManager = (ViteroManager) CoreSpringFactory.getBean("viteroManager"); viteroManager = (ViteroManager) CoreSpringFactory.getBean("viteroManager");
List<ViteroBooking> bookings = viteroManager.getBookings(group, ores);
TableDataModel tableData = new ViteroBookingDataModel(bookings);
TableGuiConfiguration tableConfig = new TableGuiConfiguration(); TableGuiConfiguration tableConfig = new TableGuiConfiguration();
tableConfig.setTableEmptyMessage(translate("vc.table.empty")); tableConfig.setTableEmptyMessage(translate("vc.table.empty"));
tableConfig.setColumnMovingOffered(true); tableConfig.setColumnMovingOffered(true);
...@@ -75,11 +79,14 @@ public class ViteroBookingsController extends BasicController { ...@@ -75,11 +79,14 @@ public class ViteroBookingsController extends BasicController {
tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("vc.table.begin", ViteroBookingDataModel.Column.begin.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("vc.table.begin", ViteroBookingDataModel.Column.begin.ordinal(), null, ureq.getLocale()));
tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("vc.table.end", ViteroBookingDataModel.Column.end.ordinal(), null, ureq.getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("vc.table.end", ViteroBookingDataModel.Column.end.ordinal(), null, ureq.getLocale()));
StaticColumnDescriptor startRoom = new StaticColumnDescriptor("start", "start", translate("start")); StartColumnDescriptor startRoom = new StartColumnDescriptor("start", "start", ureq.getLocale(), viteroManager, getTranslator());
startRoom.setIsPopUpWindowAction(true, ""); startRoom.setIsPopUpWindowAction(true, "");
tableCtr.addColumnDescriptor(startRoom); tableCtr.addColumnDescriptor(startRoom);
tableCtr.addColumnDescriptor(new SignColumnDescriptor("signin", ViteroBookingDataModel.Column.sign.ordinal(), ureq.getLocale(), getTranslator()));
tableCtr.setTableDataModel(tableData); loadModel();
tableCtr.setSortColumn(1, true);// timeframe tableCtr.setSortColumn(1, true);// timeframe
listenTo(tableCtr); listenTo(tableCtr);
...@@ -108,12 +115,45 @@ public class ViteroBookingsController extends BasicController { ...@@ -108,12 +115,45 @@ public class ViteroBookingsController extends BasicController {
ViteroBooking booking = (ViteroBooking)tableCtr.getTableDataModel().getObject(row); ViteroBooking booking = (ViteroBooking)tableCtr.getTableDataModel().getObject(row);
if("start".equals(e.getActionId())) { if("start".equals(e.getActionId())) {
openVitero(ureq, booking); openVitero(ureq, booking);
} else if("signin".equals(e.getActionId())) {
signInVitero(ureq, booking);
} else if("signout".equals(e.getActionId())) {
signOutVitero(ureq, booking);
} }
} }
} }
super.event(ureq, source, event); super.event(ureq, source, event);
} }
protected void loadModel() {
List<ViteroBooking> bookings = viteroManager.getBookings(group, ores);
List<ViteroBooking> myBookings = viteroManager.getBookingInFutures(getIdentity());
FilterBookings.filterMyFutureBookings(bookings, myBookings);
Collections.sort(bookings, new StartBookingComparator());
TableDataModel tableData = new ViteroBookingDataModel(bookings, myBookings);
tableCtr.setTableDataModel(tableData);
}
protected void signInVitero(UserRequest ureq, ViteroBooking booking) {
boolean ok = viteroManager.addToRoom(booking, ureq.getIdentity());
if(ok) {
showInfo("signin.ok");
} else {
showError("signin.nok");
}
loadModel();
}
protected void signOutVitero(UserRequest ureq, ViteroBooking booking) {
boolean ok = viteroManager.removeFromRoom(booking, ureq.getIdentity());
if(ok) {
showInfo("signout.ok");
} else {
showError("signout.nok");
}
loadModel();
}
protected void openVitero(UserRequest ureq, ViteroBooking booking) { protected void openVitero(UserRequest ureq, ViteroBooking booking) {
String url = viteroManager.getURLToBooking(ureq.getIdentity(), booking); String url = viteroManager.getURLToBooking(ureq.getIdentity(), booking);
RedirectMediaResource redirect = new RedirectMediaResource(url); RedirectMediaResource redirect = new RedirectMediaResource(url);
......
...@@ -5,7 +5,12 @@ vitero.intro=Hiermit kann die gesamte Vitero-Funktionalit ...@@ -5,7 +5,12 @@ vitero.intro=Hiermit kann die gesamte Vitero-Funktionalit
vitero.module.enabled=Vitero einschalten vitero.module.enabled=Vitero einschalten
vitero.account=Konto vitero.account=Konto
enabled=Ein enabled=Ein
signin=Sign in
signin.ok=Sign in ok
signin.nok=Sign in not ok
signout=Sign out
signout.ok=Sign out ok
signout.nok=Sign out not ok
vc.booking.title=Termin f\u00fcr Meeting vc.booking.title=Termin f\u00fcr Meeting
vc.booking.new=Neu Booking vc.booking.new=Neu Booking
...@@ -22,7 +27,9 @@ vc.check.ok=OK ...@@ -22,7 +27,9 @@ vc.check.ok=OK
vc.check.nok=Nicht OK! vc.check.nok=Nicht OK!
vc.check.url.invalid=URL ist nicht gltig vc.check.url.invalid=URL ist nicht gltig
vc.check.customer.invalid=Benutzer ID ist nicht gltig vc.check.customer.invalid=Benutzer ID ist nicht gltig
vc.check.bookingInPast=Booking in the past
vc.check.bookingDatesInverted=End is before begin
vc.autoSignIn=Auto sign-in
vc.table.begin=Start vc.table.begin=Start
vc.table.beginBuffer=Start buffer vc.table.beginBuffer=Start buffer
vc.table.end=Ende vc.table.end=Ende
......
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