Added: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserToRoomDialog.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserToRoomDialog.java?rev=1717837&view=auto ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserToRoomDialog.java (added) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserToRoomDialog.java Thu Dec 3 19:03:33 2015 @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.openmeetings.web.user; + +import static org.apache.openmeetings.web.app.Application.getBean; +import static org.apache.openmeetings.web.app.WebSession.getUserId; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.apache.openmeetings.db.dao.room.RoomDao; +import org.apache.openmeetings.db.dao.user.UserDao; +import org.apache.openmeetings.db.entity.room.Room; +import org.apache.openmeetings.db.entity.user.GroupUser; +import org.apache.openmeetings.web.app.Application; +import org.apache.openmeetings.web.user.rooms.RoomListPanel; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.core.request.handler.IPartialPageRequestHandler; + +import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog; +import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton; + +public class InviteUserToRoomDialog extends AbstractDialog<String> { + private static final long serialVersionUID = 1L; + private DialogButton cancel = new DialogButton("cancel", Application.getString(219)); + private final RoomListPanel publicRooms; + private final RoomListPanel privateRooms; + private final InviteUserMessageDialog inviteMsg = new InviteUserMessageDialog("inviteMsg"); + private Long userId; + + private class InviteRoomListPanel extends RoomListPanel { + private static final long serialVersionUID = 1L; + + public InviteRoomListPanel(String id, List<Room> rooms, final String label) { + super(id, rooms, label); + } + + @Override + public void onRoomEnter(AjaxRequestTarget target, Long roomId) { + //FIXME TODO only show message if other user is online + inviteMsg.open(target, roomId, userId); + } + } + + public InviteUserToRoomDialog(String id) { + super(id, Application.getString(1131)); + add(publicRooms = new InviteRoomListPanel("publicRooms", new ArrayList<Room>(), Application.getString(1135))); + add(privateRooms = new InviteRoomListPanel("privateRooms", new ArrayList<Room>(), Application.getString(1135))); + add(inviteMsg); + } + + private List<Room> getPrivateRooms(Long userId1, Long userId2, RoomDao roomDao) { + List<Long> orgIds = new ArrayList<>(); + List<Long> orgIds2 = new ArrayList<>(); + UserDao userDao = getBean(UserDao.class); + for (GroupUser gu : userDao.get(userId1).getGroupUsers()) { + orgIds.add(gu.getGroup().getId()); + } + for (GroupUser gu : userDao.get(userId2).getGroupUsers()) { + orgIds2.add(gu.getGroup().getId()); + } + orgIds.retainAll(orgIds2); + List<Room> result = new ArrayList<>(); + for (Long orgId : orgIds) { + result.addAll(roomDao.getGroupRooms(orgId)); + } + return result; + } + + public void open(IPartialPageRequestHandler handler, Long userId) { + this.userId = userId; + RoomDao roomDao = getBean(RoomDao.class); + publicRooms.update(handler, roomDao.getPublicRooms()); + privateRooms.update(handler, getPrivateRooms(getUserId(), userId, roomDao)); + open(handler); + } + + @Override + protected List<DialogButton> getButtons() { + return Arrays.asList(cancel); + } + + @Override + public void onClose(IPartialPageRequestHandler handler, DialogButton button) { + } +}
Copied: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java (from r1717714, openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java) URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java?p2=openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java&p1=openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java&r1=1717714&r2=1717837&rev=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java Thu Dec 3 19:03:33 2015 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.openmeetings.web.user.profile; +package org.apache.openmeetings.web.user; import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID; import static org.apache.openmeetings.db.entity.user.PrivateMessage.SENT_FOLDER_ID; Copied: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java (from r1717651, openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserInfoDialog.java) URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java?p2=openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java&p1=openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserInfoDialog.java&r1=1717651&r2=1717837&rev=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserInfoDialog.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/UserInfoDialog.java Thu Dec 3 19:03:33 2015 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.openmeetings.web.user.profile; +package org.apache.openmeetings.web.user; import static org.apache.openmeetings.web.app.Application.getBean; import static org.apache.openmeetings.web.app.WebSession.getUserId; @@ -26,6 +26,7 @@ import java.util.List; import org.apache.openmeetings.db.dao.user.UserContactDao; import org.apache.openmeetings.web.app.Application; +import org.apache.openmeetings.web.user.profile.UserProfilePanel; import org.apache.openmeetings.web.util.ContactsHelper; import org.apache.wicket.core.request.handler.IPartialPageRequestHandler; import org.apache.wicket.markup.html.WebMarkupContainer; Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js?rev=1717837&r1=1717836&r2=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js Thu Dec 3 19:03:33 2015 @@ -17,8 +17,13 @@ * under the License. */ var chatTabs, tabTemplate = "<li><a href='#{href}'>#{label}</a></li>" - , msgTemplate = "<div id='chat-msg-id-#{id}'><span class='from'>#{from}</span><span class='date'>#{sent}</span>#{msg}</div>" - , acceptTemplate = "<span class='tick om-icon align-right clickable' data-msgid='#{msgid}' data-roomid='#{roomid}' onclick='var e=$(this);acceptMessage(e.data(\"roomid\"),e.data(\"msgid\"));e.parent().remove();'></span>" + , msgTemplate = "<div id='chat-msg-id-#{id}'><img class='profile' src='#{imgSrc}'/><span class='from' data-user-id='#{userId}'>#{from}</span><span class='date align-right'>#{sent}</span>#{msg}</div>" + , acceptTemplate = "<div class='tick om-icon align-right clickable' data-msgid='#{msgid}' data-roomid='#{roomid}' onclick='var e=$(this);acceptMessage(e.data(\"roomid\"),e.data(\"msgid\"));e.parent().remove();'></div>" + , infoTemplate = "<div class='user om-icon align-right clickable' data-user-id='#{userId}' onclick='var e=$(this);showUserInfo(e.data(\"userId\"));'></div>" + , addTemplate = "<div class='add om-icon align-right clickable' data-user-id='#{userId}' onclick='var e=$(this);addContact(e.data(\"userId\"));'></div>" + , messageTemplate = "<div class='new-email om-icon align-right clickable' data-user-id='#{userId}' onclick='var e=$(this);privateMessage(e.data(\"userId\"));'></div>" + , inviteTemplate = "<div class='invite om-icon align-right clickable' data-user-id='#{userId}' onclick='var e=$(this);inviteUser(e.data(\"userId\"));'></div>" + , clearBlock = "<div class='clear'></div>" , closeBlock = "<span class='ui-icon ui-icon-close' role='presentation'></span>" , closedHeight = "20px", openedHeight = "345px"; $(function() { @@ -86,8 +91,17 @@ function addChatMessage(m) { var msg; for (var i = 0; i < m.msg.length; ++i) { var cm = m.msg[i]; - //needModeration - msg = $(msgTemplate.replace(/#\{id\}/g, cm.id).replace(/#\{from\}/g, cm.from).replace(/#\{sent\}/g, cm.sent).replace(/#\{msg\}/g, cm.message)); + msg = $(msgTemplate.replace(/#\{id\}/g, cm.id) + .replace(/#\{userId\}/g, cm.from.id) + .replace(/#\{imgSrc\}/g, cm.from.img) + .replace(/#\{from\}/g, cm.from.name) + .replace(/#\{sent\}/g, cm.sent) + .replace(/#\{msg\}/g, cm.message)); + var date = msg.children('.date'); + date.after(infoTemplate.replace(/#\{userId\}/g, cm.from.id)); + date.after(addTemplate.replace(/#\{userId\}/g, cm.from.id)); + date.after(messageTemplate.replace(/#\{userId\}/g, cm.from.id)); + date.after(inviteTemplate.replace(/#\{userId\}/g, cm.from.id)); if (cm.needModeration) { msg.append(acceptTemplate.replace(/#\{msgid\}/g, cm.id).replace(/#\{roomid\}/g, cm.scope.substring(9))); } @@ -97,6 +111,7 @@ function addChatMessage(m) { if (m.mode == "accept") { $('#chat-msg-id-' + cm.id).remove(); } + msg.append(clearBlock); $('#' + cm.scope).append(msg); } if (msg[0]) { Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html?rev=1717837&r1=1717836&r2=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html Thu Dec 3 19:03:33 2015 @@ -56,7 +56,8 @@ <td wicket:id="search"></td> <td style="white-space: nowrap;"><div wicket:id="add" class="add om-icon clickable" wicket:message="title:1186" ></div><div wicket:id="message" class="new-email om-icon clickable" wicket:message="title:1253" - ></div><div wicket:id="view" class="user om-icon clickable" wicket:message="title:1236"></div></td> + ></div><div wicket:id="view" class="user om-icon clickable" wicket:message="title:1236" + ></div><div wicket:id="invite" class="invite om-icon clickable" wicket:message="title:1131"></div></td> </tr> </tbody> </table> Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java?rev=1717837&r1=1717836&r2=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java Thu Dec 3 19:03:33 2015 @@ -125,6 +125,7 @@ public class UserSearchPanel extends Use item.add(new WebMarkupContainer("add").setVisible(userId != getUserId() && !contactsDao.isContact(userId, getUserId())) .add(AttributeAppender.append("onclick", String.format("addContact(%s);", userId)))); item.add(new WebMarkupContainer("message").setVisible(userId != getUserId()).add(AttributeAppender.append("onclick", String.format("privateMessage(%s);", userId)))); + item.add(new WebMarkupContainer("invite").setVisible(userId != getUserId()).add(AttributeAppender.append("onclick", String.format("inviteUser(%s);", userId)))); //item.add(new TooltipBehavior(new Options("content", "TODO:: Picture will be displayed"))); //FIXME } }; Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomEnterBehavior.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomEnterBehavior.java?rev=1717837&r1=1717836&r2=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomEnterBehavior.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomEnterBehavior.java Thu Dec 3 19:03:33 2015 @@ -27,11 +27,11 @@ import org.apache.wicket.core.request.ha public class RoomEnterBehavior extends AjaxEventBehavior { private static final long serialVersionUID = 1L; - private final long roomid; + protected final long roomId; - public RoomEnterBehavior(long roomid) { + public RoomEnterBehavior(long roomId) { super("click"); - this.roomid = roomid; + this.roomId = roomId; } public static OmUrlFragment getRoomUrlFragment(long roomId) { @@ -44,6 +44,6 @@ public class RoomEnterBehavior extends A @Override protected void onEvent(AjaxRequestTarget target) { - roomEnter((MainPage)getComponent().getPage(), target, roomid); + roomEnter((MainPage)getComponent().getPage(), target, roomId); } } Added: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html?rev=1717837&view=auto ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html (added) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html Thu Dec 3 19:03:33 2015 @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + +--> +<html xmlns:wicket="http://wicket.apache.org"> +<wicket:panel> + <table class="room-list"> + <tr wicket:id="list" class="room-row"> + <td> + <div wicket:id="roomContainer"> + <span wicket:id="roomName">[room name]</span><br/> + <wicket:message key="398" /> <span wicket:id="curUsers"></span> / <span + wicket:id="totalUsers"></span> <span wicket:id="refresh" + class="ui-icon ui-icon-arrowrefresh-1-n" style="display: inline-block"></span> + </div> + </td> + <td><button wicket:id="btn"><span wicket:id="label"></span></button></td> + </tr> + </table> +</wicket:panel> +</html> Added: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java?rev=1717837&view=auto ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java (added) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java Thu Dec 3 19:03:33 2015 @@ -0,0 +1,110 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.openmeetings.web.user.rooms; + +import java.util.List; + +import org.apache.openmeetings.db.dao.server.ISessionManager; +import org.apache.openmeetings.db.entity.room.Room; +import org.apache.openmeetings.web.app.Application; +import org.apache.openmeetings.web.common.UserPanel; +import org.apache.openmeetings.web.pages.MainPage; +import org.apache.wicket.ajax.AjaxEventBehavior; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.core.request.handler.IPartialPageRequestHandler; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.Model; + +import com.googlecode.wicket.jquery.ui.form.button.Button; + +public class RoomListPanel extends UserPanel { + private static final long serialVersionUID = 1L; + private final ListView<Room> list; + + public RoomListPanel(String id, List<Room> rooms, final String label) { + super(id); + setOutputMarkupId(true); + add(list = new ListView<Room>("list", rooms) { + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem<Room> item) { + final Room r = item.getModelObject(); + WebMarkupContainer roomContainer; + item.add((roomContainer = new WebMarkupContainer("roomContainer")).add(new AjaxEventBehavior("click"){ + private static final long serialVersionUID = 1L; + + @Override + protected void onEvent(AjaxRequestTarget target) { + onContainerClick(target, r); + } + })); + roomContainer.add(new Label("roomName", r.getName())); + final Label curUsers = new Label("curUsers", new Model<Integer>(Application.getBean(ISessionManager.class).getClientListByRoom(r.getId()).size())); + roomContainer.add(curUsers.setOutputMarkupId(true)); + roomContainer.add(new Label("totalUsers", r.getNumberOfPartizipants())); + item.add(new Button("btn").add(new Label("label", label)).add(new RoomEnterBehavior(r.getId()) { + private static final long serialVersionUID = 1L; + + @Override + protected void onEvent(AjaxRequestTarget target) { + onRoomEnter(target, roomId); + } + })); + roomContainer.add(new AjaxLink<Void>("refresh") { + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + target.add(curUsers.setDefaultModelObject(Application.getBean(ISessionManager.class).getClientListByRoom(r.getId()).size())); + onRefreshClick(target, r); + } + }); + } + }); + } + + public void update(IPartialPageRequestHandler handler, List<Room> rooms) { + list.setList(rooms); + handler.add(this); + } + + /** + * this method need to be overriden to perform custom actions on room container click + */ + public void onContainerClick(AjaxRequestTarget target, Room r) { + } + + /** + * this method need to be overriden to perform custom actions on room refresh click + */ + public void onRefreshClick(AjaxRequestTarget target, Room r) { + } + + /** + * this method need to be overriden to perform custom actions on room enter click + */ + public void onRoomEnter(AjaxRequestTarget target, Long roomId) { + RoomEnterBehavior.roomEnter((MainPage)getPage(), target, roomId); + } +} Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html?rev=1717837&r1=1717836&r2=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html Thu Dec 3 19:03:33 2015 @@ -23,19 +23,7 @@ <table> <tr> <td style="vertical-align: top"> - <table class="room-list"> - <tr wicket:id="list" class="room-row"> - <td> - <div wicket:id="roomContainer"> - <span wicket:id="roomName">[room name]</span><br/> - <wicket:message key="398" /> <span wicket:id="curUsers"></span> / <span - wicket:id="totalUsers"></span> <span wicket:id="refresh" - class="ui-icon ui-icon-arrowrefresh-1-n" style="display: inline-block"></span> - </div> - </td> - <td><button wicket:id="enter"><wicket:message key="131"/></button></td> - </tr> - </table> + <div wicket:id="list"></div> </td> <td style="vertical-align: top"> <!-- Users in this Room --> Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java?rev=1717837&r1=1717836&r2=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java Thu Dec 3 19:03:33 2015 @@ -32,9 +32,7 @@ import org.apache.openmeetings.db.entity import org.apache.openmeetings.util.OmFileHelper; import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.common.UserPanel; -import org.apache.wicket.ajax.AjaxEventBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.image.Image; @@ -45,8 +43,6 @@ import org.apache.wicket.model.Model; import org.apache.wicket.request.resource.ByteArrayResource; import org.apache.wicket.util.io.IOUtils; -import com.googlecode.wicket.jquery.ui.form.button.Button; - public class RoomsPanel extends UserPanel { private static final long serialVersionUID = 1L; private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer"); @@ -60,37 +56,20 @@ public class RoomsPanel extends UserPane public RoomsPanel(String id, List<Room> rooms) { super(id); - add(new ListView<Room>("list", rooms) { + add(new RoomListPanel("list", rooms, Application.getString(131)) { private static final long serialVersionUID = 1L; @Override - protected void populateItem(ListItem<Room> item) { - final Room r = item.getModelObject(); - WebMarkupContainer roomContainer; - item.add((roomContainer = new WebMarkupContainer("roomContainer")).add(new AjaxEventBehavior("click"){ - private static final long serialVersionUID = 1L; - - @Override - protected void onEvent(AjaxRequestTarget target) { - roomId = r.getId(); - updateRoomDetails(target); - } - })); - roomContainer.add(new Label("roomName", r.getName())); - final Label curUsers = new Label("curUsers", new Model<Integer>(Application.getBean(ISessionManager.class).getClientListByRoom(r.getId()).size())); - roomContainer.add(curUsers.setOutputMarkupId(true)); - roomContainer.add(new Label("totalUsers", r.getNumberOfPartizipants())); - item.add(new Button("enter").add(new RoomEnterBehavior(r.getId()))); - roomContainer.add(new AjaxLink<Void>("refresh") { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - roomId = r.getId(); - target.add(curUsers.setDefaultModelObject(Application.getBean(ISessionManager.class).getClientListByRoom(r.getId()).size())); - updateRoomDetails(target); - } - }); + public void onContainerClick(AjaxRequestTarget target, Room r) { + roomId = r.getId(); + updateRoomDetails(target); + } + + @Override + public void onRefreshClick(AjaxRequestTarget target, Room r) { + super.onRefreshClick(target, r); + roomId = r.getId(); + updateRoomDetails(target); } }); Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html?rev=1717837&r1=1717836&r2=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html Thu Dec 3 19:03:33 2015 @@ -19,9 +19,9 @@ --> <html xmlns:wicket="http://wicket.apache.org"> - <wicket:panel> - <div wicket:id="title" class="rooms title"></div> - <div wicket:id="desc" class="rooms desc info-text"></div> - <div wicket:id="rooms"></div> - </wicket:panel> +<wicket:panel> + <div wicket:id="title" class="rooms title"></div> + <div wicket:id="desc" class="rooms desc info-text"></div> + <div wicket:id="rooms"></div> +</wicket:panel> </html> Added: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java?rev=1717837&view=auto ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java (added) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ProfileImageResourceReference.java Thu Dec 3 19:03:33 2015 @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.openmeetings.web.util; + +import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; +import static org.apache.openmeetings.web.app.Application.getBean; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.net.URI; + +import org.apache.openmeetings.db.dao.user.UserDao; +import org.apache.openmeetings.db.entity.user.User; +import org.apache.openmeetings.util.OmFileHelper; +import org.apache.wicket.request.cycle.RequestCycle; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.request.resource.ByteArrayResource; +import org.apache.wicket.request.resource.IResource; +import org.apache.wicket.request.resource.ResourceReference; +import org.apache.wicket.util.io.IOUtils; +import org.red5.logging.Red5LoggerFactory; +import org.slf4j.Logger; + +public class ProfileImageResourceReference extends ResourceReference { + private static final long serialVersionUID = 1L; + private static final Logger log = Red5LoggerFactory.getLogger(ProfileImageResourceReference.class, webAppRootKey); + + public ProfileImageResourceReference() { + super(ProfileImageResourceReference.class, "profile"); + } + + public static String getUrl(RequestCycle rc, Long userId) { + return getUrl(rc, getBean(UserDao.class).get(userId)); + } + + public static String getUrl(RequestCycle rc, User u) { + String uri = u.getPictureuri(); + if (!isAbsolute(uri)) { + uri = rc.urlFor(new ProfileImageResourceReference(), new PageParameters().add("id", u.getId())).toString(); + } + return uri; + } + + private static boolean isAbsolute(String uri) { + boolean absolute = false; + try { + absolute = URI.create(uri).isAbsolute(); + } catch (Exception e) { + //no-op + } + return absolute; + } + + @Override + public IResource getResource() { + return new ByteArrayResource("image/jpeg") { + private static final long serialVersionUID = 1L; + private Long userId = null; + + @Override + protected ResourceResponse newResourceResponse(Attributes attributes) { + PageParameters params = attributes.getParameters(); + userId = params.get("id").toOptionalLong(); + ResourceResponse rr = super.newResourceResponse(attributes); + rr.disableCaching(); + return rr; + } + + @Override + protected byte[] getData(Attributes attributes) { + String uri = getBean(UserDao.class).get(userId).getPictureuri(); + if (!isAbsolute(uri)) { + File img = OmFileHelper.getUserProfilePicture(userId, uri); + try (InputStream is = new FileInputStream(img)) { + return IOUtils.toByteArray(is); + } catch (Exception e) { + log.error("failed to get bytes from image", e); + } + } + return null; + } + }; + } +} Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java?rev=1717837&r1=1717836&r2=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java Thu Dec 3 19:03:33 2015 @@ -49,7 +49,6 @@ import org.apache.wicket.util.io.IOUtils import org.apache.wicket.util.resource.FileResourceStream; import org.apache.wicket.util.resource.IResourceStream; import org.apache.wicket.util.resource.ResourceStreamNotFoundException; -import org.apache.wicket.util.string.StringValue; import org.apache.wicket.util.time.Time; import org.slf4j.Logger; @@ -138,16 +137,6 @@ public abstract class RecordingResourceR abstract String getFileName(Recording r); abstract File getFile(Recording r); - private Long getLong(StringValue id) { - Long result = null; - try { - result = id.toLongObject(); - } catch(Exception e) { - //no-op - } - return result; - } - private Recording getRecording(Long id) { Recording r = getBean(RecordingDao.class).get(id); // TODO should we process public? @@ -171,14 +160,13 @@ public abstract class RecordingResourceR private Recording getRecording(Attributes attributes) { PageParameters params = attributes.getParameters(); - StringValue idStr = params.get("id"); - Long id = getLong(idStr); + Long id = params.get("id").toOptionalLong(); WebSession ws = WebSession.get(); if (id != null && ws.isSignedIn()) { return getRecording(id); } else { ws.invalidate(); - if (ws.signIn(idStr.toString())) { + if (ws.signIn(params.get("id").toString())) { return getRecording(getRecordingId()); } } Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/chat.css URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/chat.css?rev=1717837&r1=1717836&r2=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/chat.css (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/chat.css Thu Dec 3 19:03:33 2015 @@ -60,6 +60,11 @@ font-style: italic; font-size: smaller; } +#chatPanel #chat .messageArea img.profile { + vertical-align: middle; + max-height: 38px; + max-width: 38px; +} #chatPanel #chat .messageArea .from { margin-left: 5px; margin-right: 5px; @@ -73,4 +78,5 @@ #chatMessage .wysiwyg-editor { height: 70px; max-height: 70px; + max-width: 500px; } Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/forms.css URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/forms.css?rev=1717837&r1=1717836&r2=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/forms.css (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/forms.css Thu Dec 3 19:03:33 2015 @@ -76,4 +76,3 @@ div.formCancelButton>div { margin-left: 2px; margin-top: 2px; } - Added: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/images/connect.png URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/images/connect.png?rev=1717837&view=auto ============================================================================== Binary file - no diff available. Propchange: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/images/connect.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css?rev=1717837&r1=1717836&r2=1717837&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css Thu Dec 3 19:03:33 2015 @@ -377,6 +377,9 @@ html, body { .doc.file.om-icon { background-image: url(images/report.png); } +.invite.om-icon { + background-image: url(images/connect.png); +} .selected .file.item { background-color: #0099FF; } @@ -629,3 +632,9 @@ form .input { #contents .btn-file>input { transform: translate(-3000px, 0) scale(1); } +.room.list.container { + height: 150px; + max-height: 150px; + overflow-y: auto; + border: 1px solid #cccccc; +}
