in openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java [291:417]
protected void onInitialize() {
super.onInitialize();
//let's refresh user in client
Client c = getClient().updateUser(userDao);
Component accessDenied = new WebMarkupContainer(ACCESS_DENIED_ID).setVisible(false);
room.setOutputMarkupPlaceholderTag(true);
room.add(menu = new RoomMenuPanel("menu", this));
room.add(AttributeModifier.append("data-room-id", r.getId()));
if (r.isInterview()) {
room.add(new WebMarkupContainer("wb-area").add(wb));
} else {
Droppable<BaseFileItem> wbArea = new Droppable<>("wb-area") {
private static final long serialVersionUID = 1L;
@Override
public void onConfigure(JQueryBehavior behavior) {
super.onConfigure(behavior);
behavior.setOption("hoverClass", Options.asString("droppable-hover"));
behavior.setOption("accept", Options.asString(".recorditem, .fileitem, .readonlyitem"));
}
@Override
public void onDrop(AjaxRequestTarget target, Component component) {
Object o = component.getDefaultModelObject();
if (wb.isVisible() && o instanceof BaseFileItem f) {
if (sidebar.getFilesPanel().isSelected(f)) {
for (Entry<String, BaseFileItem> e : sidebar.getFilesPanel().getSelected().entrySet()) {
wb.sendFileToWb(e.getValue(), false);
}
} else {
wb.sendFileToWb(f, false);
}
}
}
};
room.add(wbArea.add(wb));
}
room.add(roomEnter);
room.add(sidebar = new RoomSidebar("sidebar", this));
add(roomClosed = new RedirectMessageDialog("room-closed", "1098", r.isClosed(), r.getRedirectURL()));
if (r.isClosed()) {
room.setVisible(false);
} else if (cm.streamByRoom(r.getId()).count() >= r.getCapacity()) {
accessDenied = new ExpiredMessageDialog(ACCESS_DENIED_ID, getString("99"), menu);
room.setVisible(false);
} else if (r.getId().equals(WebSession.get().getRoomId())) {
// secureHash/invitationHash, already checked
} else {
boolean allowed = Application.get().isRoomAllowedToUser(r, c.getUser());
String deniedMessage = null;
if (r.isAppointment()) {
Appointment a = apptDao.getByRoom(r.getId());
if (allowed) {
Calendar cal = WebSession.getCalendar();
if (a.isOwner(getUserId()) || cal.getTime().after(allowedStart(a.getStart())) && cal.getTime().before(a.getEnd())) {
eventDetail = new EventDetailDialog(EVENT_DETAILS_ID, a);
} else {
allowed = false;
deniedMessage = String.format("%s %s - %s", getString("error.hash.period"), getDateFormat().format(a.getStart()), getDateFormat().format(a.getEnd()));
}
}
}
if (!allowed) {
if (deniedMessage == null) {
deniedMessage = getString("1599");
}
accessDenied = new ExpiredMessageDialog(ACCESS_DENIED_ID, deniedMessage, menu);
room.setVisible(false);
}
}
RepeatingView groupstyles = new RepeatingView("groupstyle");
add(groupstyles.setVisible(room.isVisible() && !r.getGroups().isEmpty()));
if (room.isVisible()) {
add(new NicknameDialog("nickname", this));
add(download);
add(new BaseWebSocketBehavior("media"));
for (RoomGroup rg : r.getGroups()) {
WebMarkupContainer groupstyle = new WebMarkupContainer(groupstyles.newChildId());
groupstyle.add(AttributeModifier.append("href"
, (String)RequestCycle.get().urlFor(new GroupCustomCssResourceReference(), new PageParameters().add("id", rg.getGroup().getId()))
));
groupstyles.add(groupstyle);
}
//We are setting initial rights here
final int count = cm.addToRoom(c.setRoom(getRoom()));
SOAPLogin soap = WebSession.get().getSoapLogin();
if (soap != null && soap.isModerator()) {
c.allow(Right.SUPER_MODERATOR);
} else {
Set<Right> rr = AuthLevelUtil.getRoomRight(c.getUser(), r, r.isAppointment() ? apptDao.getByRoom(r.getId()) : null, count);
if (!rr.isEmpty()) {
c.allow(rr);
log.info("Setting rights for client:: {} -> {}", rr, c.hasRight(Right.MODERATOR));
}
}
if (r.isModerated() && r.isWaitModerator()
&& !c.hasRight(Right.MODERATOR)
&& noModerators())
{
room.setVisible(false);
createWaitModerator(true);
getMainPanel().getChat().toggle(null, false);
}
timerService.scheduleModCheck(r);
} else {
add(new WebMarkupContainer("nickname").setVisible(false));
}
cm.update(c);
if (waitModerator == null) {
createWaitModerator(false);
}
add(room, accessDenied, eventDetail, waitModerator);
add(clientKicked = new TextContentModal("client-kicked", new ResourceModel("606")));
clientKicked
.header(new ResourceModel("797"))
.setCloseOnEscapeKey(false)
.setBackdrop(Backdrop.FALSE)
.addButton(new BootstrapAjaxLink<>(BUTTON_MARKUP_ID, Model.of(""), Buttons.Type.Outline_Primary, new ResourceModel("54")) {
private static final long serialVersionUID = 1L;
public void onClick(AjaxRequestTarget target) {
clientKicked.close(target);
menu.exit(target);
}
});
}