protected void onInitialize()

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);
				}
			});
	}