You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/02/22 06:02:14 UTC
svn commit: r1783969 - in /openmeetings/application:
branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/
branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/
branches/3.2.x/openmeetings-...
Author: solomax
Date: Wed Feb 22 06:02:13 2017
New Revision: 1783969
URL: http://svn.apache.org/viewvc?rev=1783969&view=rev
Log:
[OPENMEETINGS-1572] activities are made resizable, chat is isolated
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html Wed Feb 22 06:02:13 2017
@@ -9,7 +9,7 @@
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
@@ -21,7 +21,7 @@
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div class="ui-widget-header">
- <div onclick="toggleActivities();" class="clickable control block ui-widget-header ui-state-active"><div class="ui-icon ui-icon-carat-1-n sort-icon"></div><div class="label"><wicket:message key="1363"/></div></div>
+ <div onclick="Activities.toggle();" class="clickable control block ui-widget-header ui-state-active"><div class="ui-icon ui-icon-carat-1-n sort-icon"></div><div class="label"><wicket:message key="1363"/></div></div>
</div>
<div wicket:id="container" class="area ui-widget-content">
<div wicket:id="activities" class="activity item ui-helper-clearfix ui-corner-all">
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java Wed Feb 22 06:02:13 2017
@@ -247,7 +247,7 @@ public class ActivitiesPanel extends Bas
activities.put(a.getId(), a);
update(handler);
if (isVisible()) {
- handler.appendJavaScript("hightlightActivities();");
+ handler.appendJavaScript("Activities.hightlight();");
}
}
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js Wed Feb 22 06:02:13 2017
@@ -16,35 +16,59 @@
* specific language governing permissions and limitations
* under the License.
*/
-var closedHeight = "20px", openedHeight = "345px";
-function activitiesClosed(activities) {
- return activities.height() < 24;
-}
-function openActivities() {
- var activities = $('#activities');
- if (activitiesClosed(activities)) {
- $('.control.block .ui-icon', activities).removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
- $('.control.block', activities).removeClass('ui-state-highlight');
- activities.animate({height: openedHeight}, 1000);
+var Activities = function() {
+ var closedHeight = "20px", openedHeight = "345px";
+
+ function isInited(activities) {
+ return !!activities.resizable("instance");
}
-}
-function closeActivities() {
- var activities = $('#activities');
- if (!activitiesClosed(activities)) {
- $('.control.block .ui-icon', activities).removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
- activities.animate({height: closedHeight}, 1000);
+ function isClosed(activities) {
+ return activities.height() < 24;
}
-}
-function toggleActivities() {
- if (activitiesClosed($('#activities'))) {
- openActivities();
- } else {
- closeActivities();
+ function open() {
+ var activities = $('#activities');
+ if (!isInited(activities)) {
+ activities.resizable({
+ handles: "n, e"
+ , disabled: isClosed(activities)
+ , alsoResize: "#activities .area"
+ , minHeight: 195
+ , minWidth: 260
+ , stop: function(event, ui) {
+ activities.css({'top': '', 'right': ''});
+ openedHeight = ui.size.height + "px";
+ }
+ });
+ }
+ if (isClosed(activities)) {
+ $('.control.block .ui-icon', activities).removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
+ $('.control.block', activities).removeClass('ui-state-highlight');
+ activities.animate({height: openedHeight}, 1000);
+ activities.resizable("option", "disabled", false);
+ }
}
-}
-function hightlightActivities() {
- var activities = $('#activities');
- if (activitiesClosed(activities)) {
- $('.control.block', activities).addClass('ui-state-highlight');
+ function close() {
+ var activities = $('#activities');
+ if (!isClosed(activities)) {
+ $('.control.block .ui-icon', activities).removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
+ activities.animate({height: closedHeight}, 1000);
+ activities.resizable("option", "disabled", false);
+ }
}
-}
+
+ return {
+ hightlight: function() {
+ var activities = $('#activities');
+ if (isClosed(activities)) {
+ $('.control.block', activities).addClass('ui-state-highlight');
+ }
+ }
+ , toggle: function() {
+ if (isClosed($('#activities'))) {
+ open();
+ } else {
+ close();
+ }
+ }
+ };
+}();
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js Wed Feb 22 06:02:13 2017
@@ -71,8 +71,8 @@ function roomUnload() {
Wicket.Event.unsubscribe("/websocket/closed", roomClosed);
}
function startPrivateChat(el) {
- addChatTab('chatTab-u' + el.parent().parent().data("userid"), el.parent().parent().find('.user.name').text());
- openChat();
+ Chat.addTab('chatTab-u' + el.parent().parent().data("userid"), el.parent().parent().find('.user.name').text());
+ Chat.open();
$('#chatMessage .wysiwyg-editor').click();
}
/***** functions required by SIP ******/
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java Wed Feb 22 06:02:13 2017
@@ -119,7 +119,7 @@ public class Chat extends Panel {
}
public static CharSequence getReinit() {
- StringBuilder sb = new StringBuilder("chatReinit(");
+ StringBuilder sb = new StringBuilder("Chat.reinit(");
sb.append('\'').append(Application.getString(1494)).append('\'')
.append(',').append('\'').append(Application.getString(406)).append('\'');
return sb.append("); ");
@@ -127,10 +127,10 @@ public class Chat extends Panel {
public CharSequence addRoom(Room r) {
StringBuilder sb = new StringBuilder();
- sb.append(String.format("addChatTab('%1$s%2$d', '%3$s %2$d');", ID_ROOM_PREFIX, r.getId(), Application.getString(406)));
+ sb.append(String.format("Chat.addTab('%1$s%2$d', '%3$s %2$d');", ID_ROOM_PREFIX, r.getId(), Application.getString(406)));
List<ChatMessage> list = getBean(ChatDao.class).getRoom(r.getId(), 0, 30, !r.isChatModerated() || isModerator(getUserId(), r.getId()));
if (list.size() > 0) {
- sb.append("addChatMessage(").append(getMessage(list).toString()).append(");");
+ sb.append("Chat.addMessage(").append(getMessage(list).toString()).append(");");
}
return sb;
}
@@ -154,7 +154,7 @@ public class Chat extends Panel {
list.addAll(dao.getUserRecent(getUserId(), Date.from(Instant.now().minus(Duration.ofHours(1L))), 0, 30));
StringBuilder sb = new StringBuilder(getReinit());
if (list.size() > 0) {
- sb.append("addChatMessage(").append(getMessage(list).toString()).append(");");
+ sb.append("Chat.addMessage(").append(getMessage(list).toString()).append(");");
}
response.render(OnDomReadyHeaderItem.forScript(sb.toString()));
}
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html Wed Feb 22 06:02:13 2017
@@ -21,9 +21,8 @@
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div id="chat" class="ui-state-default">
- <div onclick="toggleChat();" class="control block clickable ui-widget-header ui-state-active"><div class="ui-icon ui-icon-caret-1-n sort-icon"></div><div class="label"><wicket:message key="244"/></div></div>
+ <div onclick="Chat.toggle();" class="control block clickable ui-widget-header ui-state-active"><div class="ui-icon ui-icon-caret-1-n sort-icon"></div><div class="label"><wicket:message key="244"/></div></div>
<div wicket:id="chat"></div>
</div>
</wicket:panel>
</html>
-
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java Wed Feb 22 06:02:13 2017
@@ -58,7 +58,7 @@ public class ChatPanel extends BasePanel
sb.append("$('#chat').show();");
}
sb.append(chat.addRoom(r));
- sb.append(r.isChatOpened() ? "openChat();" : "closeChat();");
+ sb.append(r.isChatOpened() ? "Chat.open();" : "Chat.close();");
sb.append("});");
target.appendJavaScript(sb);
}
@@ -67,7 +67,7 @@ public class ChatPanel extends BasePanel
if (r.isHidden(RoomElement.Chat)) {
return;
}
- handler.appendJavaScript(String.format("if (typeof removeChatTab == 'function') { removeChatTab('%1$s%2$d'); }", ID_ROOM_PREFIX, r.getId()));
+ handler.appendJavaScript(String.format("if (typeof Chat == 'object') { Chat.removeTab('%1$s%2$d'); }", ID_ROOM_PREFIX, r.getId()));
if (!showDashboardChat) {
StringBuilder sb = new StringBuilder();
sb.append("$(function() {");
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html Wed Feb 22 06:02:13 2017
@@ -31,36 +31,6 @@
left: -50px;
}
</style>
- <script type="text/javascript">
- function emtClick(emoticon) {
- var editor = $('#chatMessage .wysiwyg-editor');
- editor.html(editor.html() + ' ' + emoticon + ' ');
- }
- function initChatToolbar() {
- var emtBtn = $('#emoticons');
- emtBtn.html('');
- emtBtn.append(' ' + emoticon.emoticonize(':)') + ' <b class="caret"></b>');
- var emots = [].concat.apply([], [emoticon.threeCharEmoticons, emoticon.twoCharEmoticons]);
- for (var ei in emoticon.specialEmoticons) {
- emots.push(ei);
- }
- var emotMenuList = $('#emotMenuList');
- emotMenuList.html('');
- var rowSize = 20;
- var row = $('<tr></tr>');
- for (var i = 0; i < emots.length; ++i) {
- row.append('<td><div class="emt" onclick="emtClick(\'' + emots[i] + '\');">'
- + emoticon.emoticonize(emots[i]) + '</div></td>');
- if (i != 0 && i % rowSize == 0) {
- emotMenuList.append(row);
- row = $('<tr></tr>');
- }
- }
- }
- $(function() {
- initChatToolbar();
- });
- </script>
</wicket:head>
<wicket:panel>
<div wicket:id="toolbar" class="btn-toolbar" data-role="editor-toolbar">
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js Wed Feb 22 06:02:13 2017
@@ -16,18 +16,175 @@
* specific language governing permissions and limitations
* under the License.
*/
-var chatTabs, tabTemplate = "<li><a href='#{href}'>#{label}</a></li>"
- , 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";
-var emoticon = new CSSEmoticon();
-var allPrefix = "All", roomPrefix = "Room ";
+var Chat = function() {
+ var chatTabs
+ , tabTemplate = "<li><a href='#{href}'>#{label}</a></li>"
+ , 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"
+ , allPrefix = "All"
+ , roomPrefix = "Room "
+ , emoticon = new CSSEmoticon();
+
+ function emtClick(emoticon) {
+ var editor = $('#chatMessage .wysiwyg-editor');
+ editor.html(editor.html() + ' ' + emoticon + ' ');
+ }
+ function initToolbar() {
+ var emtBtn = $('#emoticons');
+ emtBtn.html('');
+ emtBtn.append(' ' + emoticon.emoticonize(':)') + ' <b class="caret"></b>');
+ var emots = [].concat.apply([], [emoticon.threeCharEmoticons, emoticon.twoCharEmoticons]);
+ for (var ei in emoticon.specialEmoticons) {
+ emots.push(ei);
+ }
+ var emotMenuList = $('#emotMenuList');
+ emotMenuList.html('');
+ var rowSize = 20;
+ var row = $('<tr></tr>');
+ for (var i = 0; i < emots.length; ++i) {
+ row.append('<td><div class="emt" onclick="emtClick(\'' + emots[i] + '\');">'
+ + emoticon.emoticonize(emots[i]) + '</div></td>');
+ if (i != 0 && i % rowSize == 0) {
+ emotMenuList.append(row);
+ row = $('<tr></tr>');
+ }
+ }
+ }
+ function isClosed() {
+ return $('#chatPanel').height() < 24;
+ }
+ function activateTab(id) {
+ chatTabs.tabs("option", "active", chatTabs.find('a[href="#' + id + '"]').parent().index());
+ }
+ function isInited() {
+ return !!$("#chatTabs").data("ui-tabs");
+ }
+ return {
+ reinit: function(_allPrefix, _roomPrefix) {
+ allPrefix = _allPrefix;
+ roomPrefix = _roomPrefix;
+ initToolbar();
+ chatTabs = $("#chatTabs").tabs({
+ activate: function(event, ui) {
+ $('#activeChatTab').val(ui.newPanel[0].id);
+ }
+ });
+ // close icon: removing the tab on click
+ chatTabs.delegate("span.ui-icon-close", "click", function() {
+ var panelId = $(this).closest("li").remove().attr("aria-controls");
+ $("#" + panelId).remove();
+ chatTabs.tabs("refresh");
+ });
+ $('#chatPanel').resizable({
+ handles: "n, w"
+ , disabled: isClosed()
+ , alsoResize: "#chat, #chat .ui-tabs .ui-tabs-panel.messageArea"
+ , minHeight: 195
+ , minWidth: 260
+ , stop: function(event, ui) {
+ $('#chatPanel').css({'top': '', 'left': ''});
+ openedHeight = ui.size.height + "px";
+ }
+ });
+ }
+ , removeTab: function(id) {
+ $('li[aria-controls="' + id + '"]').remove();
+ $('#' + id).remove();
+ if (isInited()) {
+ chatTabs.tabs("refresh");
+ }
+ }
+ , addTab: function(id, label) {
+ if (!isInited()) {
+ this.reinit();
+ }
+ if ($('#chat').length < 1 || $('#' + id).length) {
+ return;
+ }
+ if (!label) {
+ label = id == "chatTab-all" ? allPrefix : roomPrefix + id.substr(9);
+ }
+ var li = $(tabTemplate.replace(/#\{href\}/g, "#" + id).replace(/#\{label\}/g, label));
+ if (id.indexOf("chatTab-r") != 0) {
+ li.append(closeBlock);
+ }
+ chatTabs.find(".ui-tabs-nav").append(li);
+ chatTabs.append("<div class='messageArea' id='" + id + "'></div>");
+ chatTabs.tabs("refresh");
+ activateTab(id);
+ }
+ , addMessage: function(m) {
+ if ($('#chat').length > 0 && m && m.type == "chat") {
+ if (isClosed()) {
+ $('#chat .control.block').addClass('ui-state-highlight');
+ }
+ var msg;
+ for (var i = 0; i < m.msg.length; ++i) {
+ var cm = m.msg[i];
+ 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, emoticon.emoticonize(!!cm.message ? cm.message : "")));
+ var date = msg.children('.date');
+ date.after(infoTemplate.replace(/#\{userId\}/g, cm.from.id));
+ if ("full" == cm.actions) {
+ 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)));
+ }
+ if (!$('#' + cm.scope).length) {
+ this.addTab(cm.scope, cm.scopeName);
+ }
+ if (m.mode == "accept") {
+ $('#chat-msg-id-' + cm.id).remove();
+ }
+ msg.append(clearBlock);
+ $('#' + cm.scope).append(msg);
+ }
+ if (msg[0]) {
+ msg[0].scrollIntoView();
+ }
+ }
+ }
+ , open: function() {
+ if (isClosed()) {
+ $('#chat .control.block .ui-icon').removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
+ $('#chat .control.block').removeClass('ui-state-highlight');
+ $('#chatPanel, #chat').animate({height: openedHeight}, 1000);
+ $('#chatPanel').resizable("option", "disabled", false);
+ }
+ }
+ , close: function() {
+ if (!isClosed()) {
+ $('#chat .control.block .ui-icon').removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
+ $('#chatPanel').animate({height: closedHeight}, 1000);
+ $('#chatPanel, #chat').animate({height: closedHeight}, 1000);
+ $('#chatPanel').resizable("option", "disabled", true);
+ }
+ }
+ , toggle: function() {
+ if (isClosed()) {
+ this.open();
+ } else {
+ this.close();
+ }
+ }
+ };
+}();
+
$(function() {
Wicket.Event.subscribe("/websocket/message", function(jqEvent, msg) {
try {
@@ -35,7 +192,7 @@ $(function() {
if (m) {
switch(m.type) {
case "chat":
- addChatMessage(m);
+ Chat.addMessage(m);
break;
}
}
@@ -44,126 +201,3 @@ $(function() {
}
});
});
-function chatReinit(_allPrefix, _roomPrefix) {
- allPrefix = _allPrefix;
- roomPrefix = _roomPrefix;
- initChatToolbar();
- chatTabs = $("#chatTabs").tabs({
- activate: function(event, ui) {
- $('#activeChatTab').val(ui.newPanel[0].id);
- }
- });
- // close icon: removing the tab on click
- chatTabs.delegate("span.ui-icon-close", "click", function() {
- var panelId = $(this).closest("li").remove().attr("aria-controls");
- $("#" + panelId).remove();
- chatTabs.tabs("refresh");
- });
- $('#chatPanel').resizable({
- handles: "n, w"
- , disabled: chatClosed()
- , alsoResize: "#chat, #chat .ui-tabs .ui-tabs-panel.messageArea"
- , minHeight: 195
- , minWidth: 260
- , stop: function(event, ui) {
- $('#chatPanel').css({'top': '', 'left': ''});
- openedHeight = ui.size.height + "px";
- }
- });
-}
-function chatClosed() {
- return $('#chatPanel').height() < 24;
-}
-function openChat() {
- if (chatClosed()) {
- $('#chat .control.block .ui-icon').removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
- $('#chat .control.block').removeClass('ui-state-highlight');
- $('#chatPanel, #chat').animate({height: openedHeight}, 1000);
- $('#chatPanel').resizable("option", "disabled", false);
- }
-}
-function closeChat() {
- if (!chatClosed()) {
- $('#chat .control.block .ui-icon').removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
- $('#chatPanel').animate({height: closedHeight}, 1000);
- $('#chatPanel, #chat').animate({height: closedHeight}, 1000);
- $('#chatPanel').resizable("option", "disabled", true);
- }
-}
-function toggleChat() {
- if (chatClosed()) {
- openChat();
- } else {
- closeChat();
- }
-}
-function activateTab(id) {
- chatTabs.tabs("option", "active", chatTabs.find('a[href="#' + id + '"]').parent().index());
-}
-function chatInited() {
- return !!$("#chatTabs").data("ui-tabs");
-}
-function addChatTab(id, label) {
- if (!chatInited()) {
- chatReinit();
- }
- if ($('#chat').length < 1 || $('#' + id).length) {
- return;
- }
- if (!label) {
- label = id == "chatTab-all" ? allPrefix : roomPrefix + id.substr(9);
- }
- var li = $(tabTemplate.replace(/#\{href\}/g, "#" + id).replace(/#\{label\}/g, label));
- if (id.indexOf("chatTab-r") != 0) {
- li.append(closeBlock);
- }
- chatTabs.find(".ui-tabs-nav").append(li);
- chatTabs.append("<div class='messageArea' id='" + id + "'></div>");
- chatTabs.tabs("refresh");
- activateTab(id);
-}
-function removeChatTab(id) {
- $('li[aria-controls="' + id + '"]').remove();
- $('#' + id).remove();
- if (chatInited()) {
- chatTabs.tabs("refresh");
- }
-}
-function addChatMessage(m) {
- if ($('#chat').length > 0 && m && m.type == "chat") {
- if (chatClosed()) {
- $('#chat .control.block').addClass('ui-state-highlight');
- }
- var msg;
- for (var i = 0; i < m.msg.length; ++i) {
- var cm = m.msg[i];
- 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, emoticon.emoticonize(!!cm.message ? cm.message : "")));
- var date = msg.children('.date');
- date.after(infoTemplate.replace(/#\{userId\}/g, cm.from.id));
- if ("full" == cm.actions) {
- 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)));
- }
- if (!$('#' + cm.scope).length) {
- addChatTab(cm.scope, cm.scopeName);
- }
- if (m.mode == "accept") {
- $('#chat-msg-id-' + cm.id).remove();
- }
- msg.append(clearBlock);
- $('#' + cm.scope).append(msg);
- }
- if (msg[0]) {
- msg[0].scrollIntoView();
- }
- }
-}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html Wed Feb 22 06:02:13 2017
@@ -9,7 +9,7 @@
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
@@ -21,7 +21,7 @@
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div class="ui-widget-header">
- <div onclick="toggleActivities();" class="clickable control block ui-widget-header ui-state-active"><div class="ui-icon ui-icon-carat-1-n sort-icon"></div><div class="label"><wicket:message key="1363"/></div></div>
+ <div onclick="Activities.toggle();" class="clickable control block ui-widget-header ui-state-active"><div class="ui-icon ui-icon-carat-1-n sort-icon"></div><div class="label"><wicket:message key="1363"/></div></div>
</div>
<div wicket:id="container" class="area ui-widget-content">
<div wicket:id="activities" class="activity item ui-helper-clearfix ui-corner-all">
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java Wed Feb 22 06:02:13 2017
@@ -247,7 +247,7 @@ public class ActivitiesPanel extends Bas
activities.put(a.getId(), a);
update(handler);
if (isVisible()) {
- handler.appendJavaScript("hightlightActivities();");
+ handler.appendJavaScript("Activities.hightlight();");
}
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js Wed Feb 22 06:02:13 2017
@@ -16,35 +16,59 @@
* specific language governing permissions and limitations
* under the License.
*/
-var closedHeight = "20px", openedHeight = "345px";
-function activitiesClosed(activities) {
- return activities.height() < 24;
-}
-function openActivities() {
- var activities = $('#activities');
- if (activitiesClosed(activities)) {
- $('.control.block .ui-icon', activities).removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
- $('.control.block', activities).removeClass('ui-state-highlight');
- activities.animate({height: openedHeight}, 1000);
+var Activities = function() {
+ var closedHeight = "20px", openedHeight = "345px";
+
+ function isInited(activities) {
+ return !!activities.resizable("instance");
}
-}
-function closeActivities() {
- var activities = $('#activities');
- if (!activitiesClosed(activities)) {
- $('.control.block .ui-icon', activities).removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
- activities.animate({height: closedHeight}, 1000);
+ function isClosed(activities) {
+ return activities.height() < 24;
}
-}
-function toggleActivities() {
- if (activitiesClosed($('#activities'))) {
- openActivities();
- } else {
- closeActivities();
+ function open() {
+ var activities = $('#activities');
+ if (!isInited(activities)) {
+ activities.resizable({
+ handles: "n, e"
+ , disabled: isClosed(activities)
+ , alsoResize: "#activities .area"
+ , minHeight: 195
+ , minWidth: 260
+ , stop: function(event, ui) {
+ activities.css({'top': '', 'right': ''});
+ openedHeight = ui.size.height + "px";
+ }
+ });
+ }
+ if (isClosed(activities)) {
+ $('.control.block .ui-icon', activities).removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
+ $('.control.block', activities).removeClass('ui-state-highlight');
+ activities.animate({height: openedHeight}, 1000);
+ activities.resizable("option", "disabled", false);
+ }
}
-}
-function hightlightActivities() {
- var activities = $('#activities');
- if (activitiesClosed(activities)) {
- $('.control.block', activities).addClass('ui-state-highlight');
+ function close() {
+ var activities = $('#activities');
+ if (!isClosed(activities)) {
+ $('.control.block .ui-icon', activities).removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
+ activities.animate({height: closedHeight}, 1000);
+ activities.resizable("option", "disabled", false);
+ }
}
-}
+
+ return {
+ hightlight: function() {
+ var activities = $('#activities');
+ if (isClosed(activities)) {
+ $('.control.block', activities).addClass('ui-state-highlight');
+ }
+ }
+ , toggle: function() {
+ if (isClosed($('#activities'))) {
+ open();
+ } else {
+ close();
+ }
+ }
+ };
+}();
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js Wed Feb 22 06:02:13 2017
@@ -111,8 +111,8 @@ function roomUnload() {
Wicket.Event.unsubscribe("/websocket/closed", roomClosed);
}
function startPrivateChat(el) {
- addChatTab('chatTab-u' + el.parent().parent().data("userid"), el.parent().parent().find('.user.name').text());
- openChat();
+ Chat.addTab('chatTab-u' + el.parent().parent().data("userid"), el.parent().parent().find('.user.name').text());
+ Chat.open();
$('#chatMessage .wysiwyg-editor').click();
}
/***** functions required by SIP ******/
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java Wed Feb 22 06:02:13 2017
@@ -119,7 +119,7 @@ public class Chat extends Panel {
}
public static CharSequence getReinit() {
- StringBuilder sb = new StringBuilder("chatReinit(");
+ StringBuilder sb = new StringBuilder("Chat.reinit(");
sb.append('\'').append(Application.getString(1494)).append('\'')
.append(',').append('\'').append(Application.getString(406)).append('\'');
return sb.append("); ");
@@ -127,10 +127,10 @@ public class Chat extends Panel {
public CharSequence addRoom(Room r) {
StringBuilder sb = new StringBuilder();
- sb.append(String.format("addChatTab('%1$s%2$d', '%3$s %2$d');", ID_ROOM_PREFIX, r.getId(), Application.getString(406)));
+ sb.append(String.format("Chat.addTab('%1$s%2$d', '%3$s %2$d');", ID_ROOM_PREFIX, r.getId(), Application.getString(406)));
List<ChatMessage> list = getBean(ChatDao.class).getRoom(r.getId(), 0, 30, !r.isChatModerated() || isModerator(getUserId(), r.getId()));
if (list.size() > 0) {
- sb.append("addChatMessage(").append(getMessage(list).toString()).append(");");
+ sb.append("Chat.addMessage(").append(getMessage(list).toString()).append(");");
}
return sb;
}
@@ -154,7 +154,7 @@ public class Chat extends Panel {
list.addAll(dao.getUserRecent(getUserId(), Date.from(Instant.now().minus(Duration.ofHours(1L))), 0, 30));
StringBuilder sb = new StringBuilder(getReinit());
if (list.size() > 0) {
- sb.append("addChatMessage(").append(getMessage(list).toString()).append(");");
+ sb.append("Chat.addMessage(").append(getMessage(list).toString()).append(");");
}
response.render(OnDomReadyHeaderItem.forScript(sb.toString()));
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html Wed Feb 22 06:02:13 2017
@@ -21,9 +21,8 @@
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div id="chat" class="ui-state-default">
- <div onclick="toggleChat();" class="control block clickable ui-widget-header ui-state-active"><div class="ui-icon ui-icon-caret-1-n sort-icon"></div><div class="label"><wicket:message key="244"/></div></div>
+ <div onclick="Chat.toggle();" class="control block clickable ui-widget-header ui-state-active"><div class="ui-icon ui-icon-caret-1-n sort-icon"></div><div class="label"><wicket:message key="244"/></div></div>
<div wicket:id="chat"></div>
</div>
</wicket:panel>
</html>
-
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java Wed Feb 22 06:02:13 2017
@@ -58,7 +58,7 @@ public class ChatPanel extends BasePanel
sb.append("$('#chat').show();");
}
sb.append(chat.addRoom(r));
- sb.append(r.isChatOpened() ? "openChat();" : "closeChat();");
+ sb.append(r.isChatOpened() ? "Chat.open();" : "Chat.close();");
sb.append("});");
target.appendJavaScript(sb);
}
@@ -67,7 +67,7 @@ public class ChatPanel extends BasePanel
if (r.isHidden(RoomElement.Chat)) {
return;
}
- handler.appendJavaScript(String.format("if (typeof removeChatTab == 'function') { removeChatTab('%1$s%2$d'); }", ID_ROOM_PREFIX, r.getId()));
+ handler.appendJavaScript(String.format("if (typeof Chat == 'object') { Chat.removeTab('%1$s%2$d'); }", ID_ROOM_PREFIX, r.getId()));
if (!showDashboardChat) {
StringBuilder sb = new StringBuilder();
sb.append("$(function() {");
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html Wed Feb 22 06:02:13 2017
@@ -31,36 +31,6 @@
left: -50px;
}
</style>
- <script type="text/javascript">
- function emtClick(emoticon) {
- var editor = $('#chatMessage .wysiwyg-editor');
- editor.html(editor.html() + ' ' + emoticon + ' ');
- }
- function initChatToolbar() {
- var emtBtn = $('#emoticons');
- emtBtn.html('');
- emtBtn.append(' ' + emoticon.emoticonize(':)') + ' <b class="caret"></b>');
- var emots = [].concat.apply([], [emoticon.threeCharEmoticons, emoticon.twoCharEmoticons]);
- for (var ei in emoticon.specialEmoticons) {
- emots.push(ei);
- }
- var emotMenuList = $('#emotMenuList');
- emotMenuList.html('');
- var rowSize = 20;
- var row = $('<tr></tr>');
- for (var i = 0; i < emots.length; ++i) {
- row.append('<td><div class="emt" onclick="emtClick(\'' + emots[i] + '\');">'
- + emoticon.emoticonize(emots[i]) + '</div></td>');
- if (i != 0 && i % rowSize == 0) {
- emotMenuList.append(row);
- row = $('<tr></tr>');
- }
- }
- }
- $(function() {
- initChatToolbar();
- });
- </script>
</wicket:head>
<wicket:panel>
<div wicket:id="toolbar" class="btn-toolbar" data-role="editor-toolbar">
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js?rev=1783969&r1=1783968&r2=1783969&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js Wed Feb 22 06:02:13 2017
@@ -16,18 +16,175 @@
* specific language governing permissions and limitations
* under the License.
*/
-var chatTabs, tabTemplate = "<li><a href='#{href}'>#{label}</a></li>"
- , 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";
-var emoticon = new CSSEmoticon();
-var allPrefix = "All", roomPrefix = "Room ";
+var Chat = function() {
+ var chatTabs
+ , tabTemplate = "<li><a href='#{href}'>#{label}</a></li>"
+ , 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"
+ , allPrefix = "All"
+ , roomPrefix = "Room "
+ , emoticon = new CSSEmoticon();
+
+ function emtClick(emoticon) {
+ var editor = $('#chatMessage .wysiwyg-editor');
+ editor.html(editor.html() + ' ' + emoticon + ' ');
+ }
+ function initToolbar() {
+ var emtBtn = $('#emoticons');
+ emtBtn.html('');
+ emtBtn.append(' ' + emoticon.emoticonize(':)') + ' <b class="caret"></b>');
+ var emots = [].concat.apply([], [emoticon.threeCharEmoticons, emoticon.twoCharEmoticons]);
+ for (var ei in emoticon.specialEmoticons) {
+ emots.push(ei);
+ }
+ var emotMenuList = $('#emotMenuList');
+ emotMenuList.html('');
+ var rowSize = 20;
+ var row = $('<tr></tr>');
+ for (var i = 0; i < emots.length; ++i) {
+ row.append('<td><div class="emt" onclick="emtClick(\'' + emots[i] + '\');">'
+ + emoticon.emoticonize(emots[i]) + '</div></td>');
+ if (i != 0 && i % rowSize == 0) {
+ emotMenuList.append(row);
+ row = $('<tr></tr>');
+ }
+ }
+ }
+ function isClosed() {
+ return $('#chatPanel').height() < 24;
+ }
+ function activateTab(id) {
+ chatTabs.tabs("option", "active", chatTabs.find('a[href="#' + id + '"]').parent().index());
+ }
+ function isInited() {
+ return !!$("#chatTabs").data("ui-tabs");
+ }
+ return {
+ reinit: function(_allPrefix, _roomPrefix) {
+ allPrefix = _allPrefix;
+ roomPrefix = _roomPrefix;
+ initToolbar();
+ chatTabs = $("#chatTabs").tabs({
+ activate: function(event, ui) {
+ $('#activeChatTab').val(ui.newPanel[0].id);
+ }
+ });
+ // close icon: removing the tab on click
+ chatTabs.delegate("span.ui-icon-close", "click", function() {
+ var panelId = $(this).closest("li").remove().attr("aria-controls");
+ $("#" + panelId).remove();
+ chatTabs.tabs("refresh");
+ });
+ $('#chatPanel').resizable({
+ handles: "n, w"
+ , disabled: isClosed()
+ , alsoResize: "#chat, #chat .ui-tabs .ui-tabs-panel.messageArea"
+ , minHeight: 195
+ , minWidth: 260
+ , stop: function(event, ui) {
+ $('#chatPanel').css({'top': '', 'left': ''});
+ openedHeight = ui.size.height + "px";
+ }
+ });
+ }
+ , removeTab: function(id) {
+ $('li[aria-controls="' + id + '"]').remove();
+ $('#' + id).remove();
+ if (isInited()) {
+ chatTabs.tabs("refresh");
+ }
+ }
+ , addTab: function(id, label) {
+ if (!isInited()) {
+ this.reinit();
+ }
+ if ($('#chat').length < 1 || $('#' + id).length) {
+ return;
+ }
+ if (!label) {
+ label = id == "chatTab-all" ? allPrefix : roomPrefix + id.substr(9);
+ }
+ var li = $(tabTemplate.replace(/#\{href\}/g, "#" + id).replace(/#\{label\}/g, label));
+ if (id.indexOf("chatTab-r") != 0) {
+ li.append(closeBlock);
+ }
+ chatTabs.find(".ui-tabs-nav").append(li);
+ chatTabs.append("<div class='messageArea' id='" + id + "'></div>");
+ chatTabs.tabs("refresh");
+ activateTab(id);
+ }
+ , addMessage: function(m) {
+ if ($('#chat').length > 0 && m && m.type == "chat") {
+ if (isClosed()) {
+ $('#chat .control.block').addClass('ui-state-highlight');
+ }
+ var msg;
+ for (var i = 0; i < m.msg.length; ++i) {
+ var cm = m.msg[i];
+ 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, emoticon.emoticonize(!!cm.message ? cm.message : "")));
+ var date = msg.children('.date');
+ date.after(infoTemplate.replace(/#\{userId\}/g, cm.from.id));
+ if ("full" == cm.actions) {
+ 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)));
+ }
+ if (!$('#' + cm.scope).length) {
+ this.addTab(cm.scope, cm.scopeName);
+ }
+ if (m.mode == "accept") {
+ $('#chat-msg-id-' + cm.id).remove();
+ }
+ msg.append(clearBlock);
+ $('#' + cm.scope).append(msg);
+ }
+ if (msg[0]) {
+ msg[0].scrollIntoView();
+ }
+ }
+ }
+ , open: function() {
+ if (isClosed()) {
+ $('#chat .control.block .ui-icon').removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
+ $('#chat .control.block').removeClass('ui-state-highlight');
+ $('#chatPanel, #chat').animate({height: openedHeight}, 1000);
+ $('#chatPanel').resizable("option", "disabled", false);
+ }
+ }
+ , close: function() {
+ if (!isClosed()) {
+ $('#chat .control.block .ui-icon').removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
+ $('#chatPanel').animate({height: closedHeight}, 1000);
+ $('#chatPanel, #chat').animate({height: closedHeight}, 1000);
+ $('#chatPanel').resizable("option", "disabled", true);
+ }
+ }
+ , toggle: function() {
+ if (isClosed()) {
+ this.open();
+ } else {
+ this.close();
+ }
+ }
+ };
+}();
+
$(function() {
Wicket.Event.subscribe("/websocket/message", function(jqEvent, msg) {
try {
@@ -35,7 +192,7 @@ $(function() {
if (m) {
switch(m.type) {
case "chat":
- addChatMessage(m);
+ Chat.addMessage(m);
break;
}
}
@@ -44,126 +201,3 @@ $(function() {
}
});
});
-function chatReinit(_allPrefix, _roomPrefix) {
- allPrefix = _allPrefix;
- roomPrefix = _roomPrefix;
- initChatToolbar();
- chatTabs = $("#chatTabs").tabs({
- activate: function(event, ui) {
- $('#activeChatTab').val(ui.newPanel[0].id);
- }
- });
- // close icon: removing the tab on click
- chatTabs.delegate("span.ui-icon-close", "click", function() {
- var panelId = $(this).closest("li").remove().attr("aria-controls");
- $("#" + panelId).remove();
- chatTabs.tabs("refresh");
- });
- $('#chatPanel').resizable({
- handles: "n, w"
- , disabled: chatClosed()
- , alsoResize: "#chat, #chat .ui-tabs .ui-tabs-panel.messageArea"
- , minHeight: 195
- , minWidth: 260
- , stop: function(event, ui) {
- $('#chatPanel').css({'top': '', 'left': ''});
- openedHeight = ui.size.height + "px";
- }
- });
-}
-function chatClosed() {
- return $('#chatPanel').height() < 24;
-}
-function openChat() {
- if (chatClosed()) {
- $('#chat .control.block .ui-icon').removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
- $('#chat .control.block').removeClass('ui-state-highlight');
- $('#chatPanel, #chat').animate({height: openedHeight}, 1000);
- $('#chatPanel').resizable("option", "disabled", false);
- }
-}
-function closeChat() {
- if (!chatClosed()) {
- $('#chat .control.block .ui-icon').removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
- $('#chatPanel').animate({height: closedHeight}, 1000);
- $('#chatPanel, #chat').animate({height: closedHeight}, 1000);
- $('#chatPanel').resizable("option", "disabled", true);
- }
-}
-function toggleChat() {
- if (chatClosed()) {
- openChat();
- } else {
- closeChat();
- }
-}
-function activateTab(id) {
- chatTabs.tabs("option", "active", chatTabs.find('a[href="#' + id + '"]').parent().index());
-}
-function chatInited() {
- return !!$("#chatTabs").data("ui-tabs");
-}
-function addChatTab(id, label) {
- if (!chatInited()) {
- chatReinit();
- }
- if ($('#chat').length < 1 || $('#' + id).length) {
- return;
- }
- if (!label) {
- label = id == "chatTab-all" ? allPrefix : roomPrefix + id.substr(9);
- }
- var li = $(tabTemplate.replace(/#\{href\}/g, "#" + id).replace(/#\{label\}/g, label));
- if (id.indexOf("chatTab-r") != 0) {
- li.append(closeBlock);
- }
- chatTabs.find(".ui-tabs-nav").append(li);
- chatTabs.append("<div class='messageArea' id='" + id + "'></div>");
- chatTabs.tabs("refresh");
- activateTab(id);
-}
-function removeChatTab(id) {
- $('li[aria-controls="' + id + '"]').remove();
- $('#' + id).remove();
- if (chatInited()) {
- chatTabs.tabs("refresh");
- }
-}
-function addChatMessage(m) {
- if ($('#chat').length > 0 && m && m.type == "chat") {
- if (chatClosed()) {
- $('#chat .control.block').addClass('ui-state-highlight');
- }
- var msg;
- for (var i = 0; i < m.msg.length; ++i) {
- var cm = m.msg[i];
- 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, emoticon.emoticonize(!!cm.message ? cm.message : "")));
- var date = msg.children('.date');
- date.after(infoTemplate.replace(/#\{userId\}/g, cm.from.id));
- if ("full" == cm.actions) {
- 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)));
- }
- if (!$('#' + cm.scope).length) {
- addChatTab(cm.scope, cm.scopeName);
- }
- if (m.mode == "accept") {
- $('#chat-msg-id-' + cm.id).remove();
- }
- msg.append(clearBlock);
- $('#' + cm.scope).append(msg);
- }
- if (msg[0]) {
- msg[0].scrollIntoView();
- }
- }
-}