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/02 10:03:16 UTC

svn commit: r1781363 [1/2] - in /openmeetings/application: branches/3.2.x/ branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/ branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/ b...

Author: solomax
Date: Thu Feb  2 10:03:15 2017
New Revision: 1781363

URL: http://svn.apache.org/viewvc?rev=1781363&view=rev
Log:
[OPENMEETINGS-1548] EmoticonsBehavior is removed

Added:
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
      - copied unchanged from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java
      - copied, changed from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
      - copied, changed from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
      - copied, changed from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/EmotionsResources.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
      - copied, changed from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.css
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.js
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.min.js
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/BootstrapFileUploadBehavior.java
      - copied, changed from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/fileinput.css
      - copied unchanged from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.css
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/fileinput.js
      - copied unchanged from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.js
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/fileinput.min.css
      - copied unchanged from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.css
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/fileinput.min.js
      - copied unchanged from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
      - copied unchanged from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java
      - copied, changed from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
      - copied, changed from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
      - copied, changed from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/EmotionsResources.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
      - copied, changed from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.css
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.min.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/BootstrapFileUploadBehavior.java
      - copied, changed from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/fileinput.css
      - copied unchanged from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.css
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/fileinput.js
      - copied unchanged from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/fileinput.min.css
      - copied unchanged from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.css
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/fileinput.min.js
      - copied unchanged from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.js
Removed:
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.css
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.js
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.css
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.css
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.css
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.js
Modified:
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
    openmeetings/application/branches/3.2.x/pom.xml
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
    openmeetings/application/trunk/pom.xml

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java Thu Feb  2 10:03:15 2017
@@ -34,7 +34,7 @@ import org.apache.openmeetings.util.OmFi
 import org.apache.openmeetings.web.admin.AdminPanel;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.util.AjaxDownload;
-import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
+import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java Thu Feb  2 10:03:15 2017
@@ -40,7 +40,7 @@ import org.apache.openmeetings.web.data.
 import org.apache.openmeetings.web.data.OmOrderByBorder;
 import org.apache.openmeetings.web.data.SearchableDataProvider;
 import org.apache.openmeetings.web.util.AjaxDownload;
-import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
+import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java Thu Feb  2 10:03:15 2017
@@ -54,9 +54,9 @@ import org.apache.openmeetings.web.commo
 import org.apache.openmeetings.web.common.menu.MenuPanel;
 import org.apache.openmeetings.web.room.menu.RoomMenuPanel;
 import org.apache.openmeetings.web.user.AboutDialog;
-import org.apache.openmeetings.web.user.ChatPanel;
 import org.apache.openmeetings.web.user.MessageDialog;
 import org.apache.openmeetings.web.user.UserInfoDialog;
+import org.apache.openmeetings.web.user.chat.ChatPanel;
 import org.apache.openmeetings.web.util.ContactsHelper;
 import org.apache.openmeetings.web.util.OmUrlFragment;
 import org.apache.wicket.Component;

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java Thu Feb  2 10:03:15 2017
@@ -26,7 +26,7 @@ import java.util.List;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.util.StoredFile;
-import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
+import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
 import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java Thu Feb  2 10:03:15 2017
@@ -36,7 +36,7 @@ import org.apache.openmeetings.util.proc
 import org.apache.openmeetings.util.process.ConverterProcessResultList;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.room.RoomPanel;
-import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
+import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
 import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;

Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java (from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/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?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java&r1=1781362&r2=1781363&rev=1781363&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java Thu Feb  2 10:03:15 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.user;
+package org.apache.openmeetings.web.user.chat;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasAdminLevel;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_CHAT;
@@ -29,6 +29,8 @@ import static org.apache.openmeetings.we
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.room.RoomPanel.isModerator;
+import static org.apache.openmeetings.web.user.chat.EmotionsResources.EMOTIONS_CSS_REFERENCE;
+import static org.apache.openmeetings.web.user.chat.EmotionsResources.EMOTIONS_JS_REFERENCE;
 import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
 import static org.apache.openmeetings.web.util.ProfileImageResourceReference.getUrl;
 import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
@@ -78,7 +80,6 @@ import org.red5.logging.Red5LoggerFactor
 import org.slf4j.Logger;
 
 import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
-import com.googlecode.wicket.jquery.ui.plugins.emoticons.EmoticonsBehavior;
 import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
 
 @AuthorizeInstantiation({"Dashboard", "Room"})
@@ -184,7 +185,6 @@ public class ChatPanel extends BasePanel
 				super.renderHead(component, response);
 			}
 		});
-		add(new EmoticonsBehavior(".messageArea"));
 		add(new ChatForm("sendForm"));
 	}
 
@@ -235,7 +235,9 @@ public class ChatPanel extends BasePanel
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(EMOTIONS_JS_REFERENCE)));
 		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(ChatPanel.class, "chat.js"))));
+		response.render(CssHeaderItem.forReference(EMOTIONS_CSS_REFERENCE));
 		response.render(CssHeaderItem.forUrl("css/chat.css"));
 		response.render(new PriorityHeaderItem(getNamedFunction("acceptMessage", acceptMessage, explicit(PARAM_ROOM_ID), explicit(PARAM_MSG_ID))));
 		if (!showDashboardChat) {

Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html (from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/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?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.html&r1=1781362&r2=1781363&rev=1781363&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html Thu Feb  2 10:03:15 2017
@@ -32,28 +32,28 @@
 		}
 	</style>
 	<script type="text/javascript">
-	    function emtClick(emoticon) {
-	        var editor = $('#chatMessage .wysiwyg-editor');
-	        editor.html(editor.html() + ' ' + emoticon + ' ');
-	    }
+		function emtClick(emoticon) {
+			var editor = $('#chatMessage .wysiwyg-editor');
+			editor.html(editor.html() + ' ' + emoticon + ' ');
+		}
 		$(function() {
-			 var emots = [":-)", ":)", ":o)", ":c)", ":^)", ":-D", ":-(", ":-9", ";-)", ":-P", ":-p", ":-Þ", ":-b"
-			 	, ":-O", ":-/", ":-X", ":-#", ":'(", "B-)", "8-)", ":-\\", ";*(", ":-*", ":]", ":>", "=]", "=)", "8)"
-			 	, ":}", ":D", "8D", "XD", "xD", "=D", ":(", ":<", ":[", ":{", "=(", ";)", ";]", ";D", ":P", ":p"
-			 	, "=P", "=p", ":b", ":Þ", ":O", "8O", ":/", "=/", ":S", ":#", ":X", "B)", "O:)", "<3", ";(", ">:)"
-			 	, ">;)", ">:(", "O_o", "O_O", "o_o", "0_o", "T_T", "^_^", "?-)"];
-			 var emotMenuList = $('#emotMenuList');
-			 var rowSize = 15;
-			 var row = $('<tr></tr>');
-			 for (var i = 0; i < emots.length; ++i) {
-			 	row.append('<td><div class="emt" onclick="emtClick(\'' + emots[i] + '\');">'
-			 		+ emots[i] + '</div></td>');
-			 	if (i != 0 && i % rowSize == 0) {
-			 		emotMenuList.append(row);
-			 		row = $('<tr></tr>');
-			 	}
-			 }
-			 $('.emt').emoticonize();
+			var emots = [":-)", ":)", ":o)", ":c)", ":^)", ":-D", ":-(", ":-9", ";-)", ":-P", ":-p", ":-Þ", ":-b"
+				, ":-O", ":-/", ":-X", ":-#", ":'(", "B-)", "8-)", ":-\\", ";*(", ":-*", ":]", ":>", "=]", "=)", "8)"
+				, ":}", ":D", "8D", "XD", "xD", "=D", ":(", ":<", ":[", ":{", "=(", ";)", ";]", ";D", ":P", ":p"
+				, "=P", "=p", ":b", ":Þ", ":O", "8O", ":/", "=/", ":S", ":#", ":X", "B)", "O:)", "<3", ";(", ">:)"
+				, ">;)", ">:(", "O_o", "O_O", "o_o", "0_o", "T_T", "^_^", "?-)"];
+			var emotMenuList = $('#emotMenuList');
+			var rowSize = 15;
+			var row = $('<tr></tr>');
+			for (var i = 0; i < emots.length; ++i) {
+				row.append('<td><div class="emt" onclick="emtClick(\'' + emots[i] + '\');">'
+					+ emots[i] + '</div></td>');
+				if (i != 0 && i % rowSize == 0) {
+					emotMenuList.append(row);
+					row = $('<tr></tr>');
+				}
+			}
+			//$('.emt').emoticonize();
 		});
 	</script>
 </wicket:head>
@@ -75,11 +75,10 @@
 				<li><a data-edit="fontSize 3"><font size="2">Normal</font></a></li>
 				<li><a data-edit="fontSize 1"><font size="1">Small</font></a></li>
 			</ul>
-			<a id="bold" class="chat btn" data-edit="bold" title="Bold (Ctrl/Cmd+B)"> B
-			</a> <a id="italic" class="chat btn" data-edit="italic" title="Italic (Ctrl/Cmd+I)" style="font-style: italic;"> I
-			</a> <a id="strikethrough" class="chat btn" data-edit="strikethrough" title="Strikethrough" style="text-decoration: line-through;"> S
-			</a> <a id="underline" class="chat btn" data-edit="underline" title="Underline (Ctrl/Cmd+U)" style="text-decoration: underline;"> U
-			</a>
+			<a id="bold" class="chat btn" data-edit="bold" title="Bold (Ctrl/Cmd+B)"> B </a> <a
+			id="italic" class="chat btn" data-edit="italic" title="Italic (Ctrl/Cmd+I)" style="font-style: italic;"> I </a> <a
+			id="strikethrough" class="chat btn" data-edit="strikethrough" title="Strikethrough" style="text-decoration: line-through;"> S </a> <a
+			id="underline" class="chat btn" data-edit="underline" title="Underline (Ctrl/Cmd+U)" style="text-decoration: underline;"> U </a>
 		</div>
 	</div>
 </wicket:panel>

Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java (from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.java&r1=1781362&r2=1781363&rev=1781363&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java Thu Feb  2 10:03:15 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.user;
+package org.apache.openmeetings.web.user.chat;
 
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/EmotionsResources.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/EmotionsResources.java?rev=1781363&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/EmotionsResources.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/EmotionsResources.java Thu Feb  2 10:03:15 2017
@@ -0,0 +1,28 @@
+/*
+ * 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.chat;
+
+import org.apache.wicket.request.resource.CssResourceReference;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
+
+public class EmotionsResources {
+	public final static ResourceReference EMOTIONS_JS_REFERENCE = new JavaScriptResourceReference(EmotionsResources.class, "cssemoticons.js");
+	public final static ResourceReference EMOTIONS_CSS_REFERENCE = new CssResourceReference(EmotionsResources.class, "cssemoticons.css");
+}

Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js (from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/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?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js&r1=1781362&r2=1781363&rev=1781363&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js Thu Feb  2 10:03:15 2017
@@ -26,6 +26,7 @@ var chatTabs, tabTemplate = "<li><a href
 	, clearBlock = "<div class='clear'></div>"
 	, closeBlock = "<span class='ui-icon ui-icon-close' role='presentation'></span>"
 	, closedHeight = "20px", openedHeight = "345px";
+var emoticon = new CSSEmoticon();
 $(function() {
 	Wicket.Event.subscribe("/websocket/message", function(jqEvent, msg) {
 		try {
@@ -117,7 +118,7 @@ function addChatMessage(m) {
 					.replace(/#\{imgSrc\}/g, cm.from.img)
 					.replace(/#\{from\}/g, cm.from.name)
 					.replace(/#\{sent\}/g, cm.sent)
-					.replace(/#\{msg\}/g, cm.message));
+					.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) {
@@ -140,6 +141,5 @@ function addChatMessage(m) {
 		if (msg[0]) {
 			msg[0].scrollIntoView();
 		}
-		$('.messageArea').emoticonize();
 	}
 }

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.css
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.css?rev=1781363&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.css (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.css Thu Feb  2 10:03:15 2017
@@ -0,0 +1,295 @@
+/*
+ * jQuery CSSEmoticons plugin 0.2.9
+ *
+ * Copyright (c) 2010 Steve Schwartz (JangoSteve)
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ *
+ * Date: Sun Oct 22 1:00:00 2010 -0500
+ */
+ 
+ /* Basic styles for emoticons */
+span.css-emoticon {
+  font-family: "Trebuchet MS"; /* seems to give the best and most consistent emoticon appearance */
+  font-size: 0.65em;
+  font-weight: bold;
+  color: #000000;
+  display: inline-block;
+  overflow: hidden;
+  vertical-align: middle;
+  transform: rotate(90deg);
+  -webkit-transform: rotate(90deg);
+  -moz-transform: rotate(90deg);
+  -o-transform: rotate(90deg);
+  width: 1.54em; /* note that this is a multiple of this span's font-size, not containing text font-size */
+  height: 1.54em; /* so, relative to containing text, width and height are 0.9 x 1.6 = 1.44em */
+  text-align: center;
+  padding: 0;
+  line-height: 1.34em;
+  -moz-border-radius: 1.54em;
+  -webkit-border-radius: 1.54em;
+  border-radius: 1.54em;
+  -moz-box-shadow: 1px -1px 2px rgba(0,0,0,0.5);
+  -webkit-box-shadow: 1px -1px 2px rgba(0,0,0,0.5);
+  box-shadow: 1px -1px 2px rgba(0,0,0,0.5);
+  border: 1px solid rgba(0,0,0,0.25);
+  background-color: #ffcc00;
+  background-image: -webkit-gradient(
+    linear,
+    right top,
+    left top,
+    color-stop(0.41, rgb(255,204,0)),
+    color-stop(0.56, rgb(255,221,85)),
+    color-stop(1, rgb(255,238,170))
+  );
+  background-image: -moz-linear-gradient(
+    center right,
+    rgb(255,204,0) 41%,
+    rgb(255,221,85) 56%,
+    rgb(255,238,170) 100%
+  );
+  -webkit-transition-property:color, background, transform;  
+  -webkit-transition-duration: 1s, 1s;  
+  -webkit-transition-timing-function: linear, ease-in;
+}
+
+/* Styles for two-character emoticons that need more letter-spacing for proportionality */
+span.css-emoticon.spaced-emoticon {
+  padding-left: 0.2em;
+  width: 1.34em;
+  letter-spacing: 0.2em;
+}
+
+/* This is a dirty dirty hack, because webkit doesn't properly do the padding+width=total-width as it should
+   I think the width of the border may be throwing things off, because it's more noticable for small icons */
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+  span.css-emoticon.spaced-emoticon {
+    width: 1.4em;
+  }
+}
+
+/* Styles for emoticons that need to have smaller characters to fit inside the circle */
+span.css-emoticon.small-emoticon {
+  font-size: 0.55em;
+  width: 1.82em;
+  height: 1.82em;
+  line-height: 1.72em;
+  -moz-border-radius: 1.82em;
+  -webkit-border-radius: 1.82em;
+  border-radius: 1.82em;
+}
+
+span.css-emoticon.small-emoticon.spaced-emoticon {
+  padding-left: 0;
+  width: 1.82em;
+  letter-spacing: 0.1em;
+}
+
+/* Styles for additional colors */
+span.css-emoticon.red-emoticon {
+  background-color: #eb0542;
+  background-image: -webkit-gradient(
+    linear,
+    right top,
+    left top,
+    color-stop(0.41, rgb(235,5,66)),
+    color-stop(0.56, rgb(235,38,90)),
+    color-stop(1, rgb(250,55,110))
+  );
+  background-image: -moz-linear-gradient(
+    center right,
+    rgb(235,5,66) 41%,
+    rgb(235,38,90) 56%,
+    rgb(250,55,110) 100%
+  );
+}
+
+span.css-emoticon.pink-emoticon {
+  background-color: #ff8fd4;
+  background-image: -webkit-gradient(
+    linear,
+    right top,
+    left top,
+    color-stop(0.41, rgb(255,143,212)),
+    color-stop(0.56, rgb(255,153,216)),
+    color-stop(1,    rgb(255,173,225))
+  );
+  background-image: -moz-linear-gradient(
+    center right,
+    rgb(255,143,212) 41%,
+    rgb(255,153,216) 56%,
+    rgb(255,173,225) 100%
+  );
+}
+
+/* styles for emoticons that need no rotation, like O_o */
+span.css-emoticon.no-rotate { 
+  transform: rotate(0deg);
+  -webkit-transform: rotate(0deg);
+  -moz-transform: rotate(0deg);
+  -o-transform: rotate(0deg);
+  -moz-box-shadow: 1px 1px 2px rgba(0,0,0,0.5);
+  -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.5);
+  box-shadow: 1px 1px 2px rgba(0,0,0,0.5);
+  font-size: 0.45em;
+  width: 2.2em;
+  height: 2.2em;
+  line-height: 1.9em;
+  -moz-border-radius: 2.2em;
+  -webkit-border-radius: 2.2em;
+  border-radius: 2.2em;
+  background-image: -webkit-gradient(
+    linear,
+    right bottom,
+    right top,
+    color-stop(0.41, rgb(255,204,0)),
+    color-stop(0.56, rgb(255,221,85)),
+    color-stop(1, rgb(255,238,170))
+  );
+  background-image: -moz-linear-gradient(
+    center bottom,
+    rgb(255,204,0) 41%,
+    rgb(255,221,85) 56%,
+    rgb(255,238,170) 100%
+  );
+}
+
+span.css-emoticon.no-rotate.red-emoticon {
+  background-image: -webkit-gradient(
+    linear,
+    right bottom,
+    right top,
+    color-stop(0.41, rgb(235,5,66)),
+    color-stop(0.56, rgb(235,38,90)),
+    color-stop(1, rgb(250,55,110))
+  );
+  background-image: -moz-linear-gradient(
+    center bottom,
+    rgb(235,5,66) 41%,
+    rgb(235,38,90) 56%,
+    rgb(250,55,110) 100%
+  );
+}
+
+span.css-emoticon.no-rotate.pink-emoticon {
+  background-image: -webkit-gradient(
+    linear,
+    right bottom,
+    right top,
+    color-stop(0.41, rgb(255,143,212)),
+    color-stop(0.56, rgb(255,153,216)),
+    color-stop(1,    rgb(255,173,225))
+  );
+  background-image: -moz-linear-gradient(
+    center bottom,
+    rgb(255,143,212) 41%,
+    rgb(255,153,216) 56%,
+    rgb(255,173,225) 100%
+  );
+}
+
+/* Styles for emoticons that need to be rotated counter-clockwise, like <3 */
+span.css-emoticon.counter-rotated { 
+  transform: rotate(-90deg);
+  -webkit-transform: rotate(-90deg);
+  -moz-transform: rotate(-90deg);
+  -o-transform: rotate(-90deg);
+  -moz-box-shadow: -1px 1px 2px rgba(0,0,0,0.5);
+  -webkit-box-shadow: -1px 1px 2px rgba(0,0,0,0.5);
+  box-shadow: -1px 1px 2px rgba(0,0,0,0.5);
+  background-image: -webkit-gradient(
+    linear,
+    left top,
+    right top,
+    color-stop(0.41, rgb(255,204,0)),
+    color-stop(0.56, rgb(255,221,85)),
+    color-stop(1, rgb(255,238,170))
+  );
+  background-image: -moz-linear-gradient(
+    center left,
+    rgb(255,204,0) 41%,
+    rgb(255,221,85) 56%,
+    rgb(255,238,170) 100%
+  );
+}
+
+span.css-emoticon.counter-rotated.red-emoticon {
+  background-image: -webkit-gradient(
+    linear,
+    left top,
+    right top,
+    color-stop(0.41, rgb(235,5,66)),
+    color-stop(0.56, rgb(235,38,90)),
+    color-stop(1, rgb(250,55,110))
+  );
+  background-image: -moz-linear-gradient(
+    center left,
+    rgb(235,5,66) 41%,
+    rgb(235,38,90) 56%,
+    rgb(250,55,110) 100%
+  );
+}
+
+span.css-emoticon.counter-rotated.pink-emoticon {
+  background-image: -webkit-gradient(
+    linear,
+    left top,
+    right top,
+    color-stop(0.41, rgb(255,143,212)),
+    color-stop(0.56, rgb(255,153,216)),
+    color-stop(1,    rgb(255,173,225))
+  );
+  background-image: -moz-linear-gradient(
+    center left,
+    rgb(255,143,212) 41%,
+    rgb(255,153,216) 56%,
+    rgb(255,173,225) 100%
+  );
+}
+
+/* Styles for animated states */
+span.css-emoticon.un-transformed-emoticon, span.css-emoticon.animated-emoticon:hover {
+    /* font-size: inherit;
+    font-weight: inherit;
+    vertical-align: inherit;
+    line-height: inherit;
+    font-family: inherit; */
+    letter-spacing: inherit;
+    color: inherit;
+    overflow: visible;
+    transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    background: none;
+    background-image: none;
+    box-shadow: none;
+    -moz-box-shadow: none;
+    -webkit-box-shadow: none;
+    border-color: transparent;
+}
+
+span.css-emoticon.nintendo-controller {
+  font-size: .8em;
+  height: 1.2em;
+  line-height: 1em;
+  width: 2.7em;
+  vertical-align: bottom;
+  border-radius: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  background: -webkit-gradient(
+      linear,
+      left bottom,
+      left top,
+      color-stop(0.09, rgb(116,121,140)),
+      color-stop(0.55, rgb(165,170,189))
+  );
+  background: -moz-linear-gradient(
+      center bottom,
+      rgb(116,121,140) 9%,
+      rgb(165,170,189) 55%
+  );
+}
\ No newline at end of file

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.js
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.js?rev=1781363&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.js (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.js Thu Feb  2 10:03:15 2017
@@ -0,0 +1,125 @@
+/*
+ * jQuery CSSEmoticons plugin 0.2.9
+ *
+ * Copyright (c) 2010 Steve Schwartz (JangoSteve)
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ *
+ * Date: Sun Oct 22 1:00:00 2010 -0500
+ */
+var CSSEmoticon = function() {
+	this.escapeCharacters = [")", "(", "*", "[", "]", "{", "}", "|", "^", "<", ">", "\\", "?", "+", "=", "."];
+
+	this.threeCharacterEmoticons = [
+		":-)", ":o)", ":c)", ":^)", ":-D", ":-(", ":-9", ";-)", ":-P", ":-p", ":-Þ", ":-b", ":-O", ":-/", ":-X", ":-#", ":'(", "B-)", "8-)", ";*(", ":-*", ":-\\",
+		"?-)" // <== This is my own invention, it's a smiling pirate (with an eye-patch)!
+	];
+
+	this.twoCharacterEmoticons = [ // separate these out so that we can add a letter-spacing between the characters for better proportions
+		":)", ":]", "=]", "=)", "8)", ":}", ":D", ":(", ":[", ":{", "=(", ";)", ";]", ";D", ":P", ":p", "=P", "=p", ":b", ":Þ", ":O", ":/", "=/", ":S", ":#", ":X", "B)", ":|", ":\\", "=\\", ":*", ":&gt;", ":&lt;"
+	];
+
+	this.specialEmoticons = { // emoticons to be treated with a special class, hash specifies the additional class to add, along with standard css-emoticon class
+		"&gt;:)": {cssClass: "red-emoticon small-emoticon spaced-emoticon"},
+		"&gt;;)": {cssClass: "red-emoticon small-emoticon spaced-emoticon"},
+		"&gt;:(": {cssClass: "red-emoticon small-emoticon spaced-emoticon"},
+		"&gt;: )": {cssClass: "red-emoticon small-emoticon"},
+		"&gt;; )": {cssClass: "red-emoticon small-emoticon"},
+		"&gt;: (": {cssClass: "red-emoticon small-emoticon"},
+		";(": {cssClass: "red-emoticon spaced-emoticon"},
+		"&lt;3": {cssClass: "pink-emoticon counter-rotated"},
+		"O_O": {cssClass: "no-rotate"},
+		"o_o": {cssClass: "no-rotate"},
+		"0_o": {cssClass: "no-rotate"},
+		"O_o": {cssClass: "no-rotate"},
+		"T_T": {cssClass: "no-rotate"},
+		"^_^": {cssClass: "no-rotate"},
+		"O:)": {cssClass: "small-emoticon spaced-emoticon"},
+		"O: )": {cssClass: "small-emoticon"},
+		"8D": {cssClass: "small-emoticon spaced-emoticon"},
+		"XD": {cssClass: "small-emoticon spaced-emoticon"},
+		"xD": {cssClass: "small-emoticon spaced-emoticon"},
+		"=D": {cssClass: "small-emoticon spaced-emoticon"},
+		"8O": {cssClass: "small-emoticon spaced-emoticon"},
+		"[+=..]": {cssClass: "no-rotate nintendo-controller"}
+	};
+
+	var specialRegex = new RegExp('(\\' + this.escapeCharacters.join('|\\') + ')', 'g');
+	// One of these characters must be present before the matched emoticon, or the matched emoticon must be the first character in the container HTML
+	//  This is to ensure that the characters in the middle of HTML properties or URLs are not matched as emoticons
+	//  Below matches ^ (first character in container HTML), \s (whitespace like space or tab), or \0 (NULL character)
+	// (<\\S+.*>) matches <\\S+.*> (matches an HTML tag like <span> or <div>), but haven't quite gotten it working yet, need to push this fix now
+	var preMatch = '(^|[\\s\\0])';
+
+	for (var i = this.threeCharacterEmoticons.length - 1; i >= 0; --i) {
+		this.threeCharacterEmoticons[i] = this.threeCharacterEmoticons[i].replace(specialRegex, '\\$1');
+		this.threeCharacterEmoticons[i] = new RegExp(preMatch + '(' + this.threeCharacterEmoticons[i] + ')', 'g');
+	}
+
+	for (var i = this.twoCharacterEmoticons.length - 1; i >= 0; --i) {
+		this.twoCharacterEmoticons[i] = this.twoCharacterEmoticons[i].replace(specialRegex, '\\$1');
+		this.twoCharacterEmoticons[i] = new RegExp(preMatch + '(' + this.twoCharacterEmoticons[i] + ')', 'g');
+	}
+
+	for (var emoticon in this.specialEmoticons) {
+		this.specialEmoticons[emoticon].regexp = emoticon.replace(specialRegex, '\\$1');
+		this.specialEmoticons[emoticon].regexp = new RegExp(preMatch + '(' + this.specialEmoticons[emoticon].regexp + ')', 'g');
+	}
+
+	this.defaults = {animate: true, delay: 500, exclude: 'pre,code,.no-emoticons'}
+};
+
+CSSEmoticon.prototype.emoticonize = function (str, options) {
+	// $.extend({}, this.defaults, options);
+	var opts = {};
+
+	for (var key in this.defaults) {
+		opts[key] = this.defaults[key];
+	}
+
+	for (var key in options) {
+		opts[key] = options[key];
+	}
+
+	var exclude = 'span.css-emoticon';
+	if (opts.exclude) {
+		exclude += ',' + opts.exclude;
+	}
+	var excludeArray = exclude.split(',');
+
+	var cssClass = 'css-emoticon';
+	if (opts.animate) {
+		cssClass += ' un-transformed-emoticon animated-emoticon';
+	}
+
+	for (var emoticon in this.specialEmoticons) {
+		var specialCssClass = cssClass + " " + this.specialEmoticons[emoticon].cssClass;
+		str = str.replace(this.specialEmoticons[emoticon].regexp, "$1<span class='" + specialCssClass + "'>$2</span>");
+	}
+
+	for (var key in this.threeCharacterEmoticons) {
+		var regexp = this.threeCharacterEmoticons[key];
+		str = str.replace(regexp, "$1<span class='" + cssClass + "'>$2</span>");
+	}
+
+	for (var key in this.twoCharacterEmoticons) {
+		var regexp = this.twoCharacterEmoticons[key];
+		str = str.replace(regexp, "$1<span class='" + cssClass + " spaced-emoticon'>$2</span>");
+	}
+
+	// animate emoticons
+	if (opts.animate) {
+		setTimeout(function () {
+			var untransformed = document.body.getElementsByClassName("un-transformed-emoticon");
+			for(var key in untransformed) {
+				if(typeof untransformed[key] == "object") {
+					untransformed[key].classList.remove("un-transformed-emoticon");
+				}
+			}
+		}, opts.delay);
+	}
+
+	return str;
+};

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.min.js
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.min.js?rev=1781363&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.min.js (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.min.js Thu Feb  2 10:03:15 2017
@@ -0,0 +1,2 @@
+/* Dual licensed under the MIT and GPL licenses */
+var CSSEmoticon=function(){this.escapeCharacters=[")","(","*","[","]","{","}","|","^","<",">","\\","?","+","=","."];this.threeCharacterEmoticons=[":-)",":o)",":c)",":^)",":-D",":-(",":-9",";-)",":-P",":-p",":-Þ",":-b",":-O",":-/",":-X",":-#",":'(","B-)","8-)",";*(",":-*",":-\\","?-)"];this.twoCharacterEmoticons=[":)",":]","=]","=)","8)",":}",":D",":(",":[",":{","=(",";)",";]",";D",":P",":p","=P","=p",":b",":Þ",":O",":/","=/",":S",":#",":X","B)",":|",":\\","=\\",":*",":&gt;",":&lt;"];this.specialEmoticons={"&gt;:)":{cssClass:"red-emoticon small-emoticon spaced-emoticon"},"&gt;;)":{cssClass:"red-emoticon small-emoticon spaced-emoticon"},"&gt;:(":{cssClass:"red-emoticon small-emoticon spaced-emoticon"},"&gt;: )":{cssClass:"red-emoticon small-emoticon"},"&gt;; )":{cssClass:"red-emoticon small-emoticon"},"&gt;: (":{cssClass:"red-emoticon small-emoticon"},";(":{cssClass:"red-emoticon spaced-emoticon"},"&lt;3":{cssClass:"pink-emoticon counter-rotated"},"O_O":{cssClass:"no-rotate"},"o
 _o":{cssClass:"no-rotate"},"0_o":{cssClass:"no-rotate"},"O_o":{cssClass:"no-rotate"},"T_T":{cssClass:"no-rotate"},"^_^":{cssClass:"no-rotate"},"O:)":{cssClass:"small-emoticon spaced-emoticon"},"O: )":{cssClass:"small-emoticon"},"8D":{cssClass:"small-emoticon spaced-emoticon"},"XD":{cssClass:"small-emoticon spaced-emoticon"},"xD":{cssClass:"small-emoticon spaced-emoticon"},"=D":{cssClass:"small-emoticon spaced-emoticon"},"8O":{cssClass:"small-emoticon spaced-emoticon"},"[+=..]":{cssClass:"no-rotate nintendo-controller"}};var a=new RegExp('(\\'+this.escapeCharacters.join('|\\')+')','g');var b='(^|[\\s\\0])';for(var c=this.threeCharacterEmoticons.length-1;c>=0;--c){this.threeCharacterEmoticons[c]=this.threeCharacterEmoticons[c].replace(a,'\\$1');this.threeCharacterEmoticons[c]=new RegExp(b+'('+this.threeCharacterEmoticons[c]+')','g');}for(var c=this.twoCharacterEmoticons.length-1;c>=0;--c){this.twoCharacterEmoticons[c]=this.twoCharacterEmoticons[c].replace(a,'\\$1');this.twoCharacterEm
 oticons[c]=new RegExp(b+'('+this.twoCharacterEmoticons[c]+')','g');}for(var d in this.specialEmoticons){this.specialEmoticons[d].regexp=d.replace(a,'\\$1');this.specialEmoticons[d].regexp=new RegExp(b+'('+this.specialEmoticons[d].regexp+')','g');}this.defaults={animate:true,delay:500,exclude:'pre,code,.no-emoticons'};};CSSEmoticon.prototype.emoticonize=function(a,b){var c={};for(var d in this.defaults)c[d]=this.defaults[d];for(var d in b)c[d]=b[d];var e='span.css-emoticon';if(c.exclude)e+=','+c.exclude;var f=e.split(',');var g='css-emoticon';if(c.animate)g+=' un-transformed-emoticon animated-emoticon';for(var h in this.specialEmoticons){var i=g+" "+this.specialEmoticons[h].cssClass;a=a.replace(this.specialEmoticons[h].regexp,"$1<span class='"+i+"'>$2</span>");}for(var d in this.threeCharacterEmoticons){var j=this.threeCharacterEmoticons[d];a=a.replace(j,"$1<span class='"+g+"'>$2</span>");}for(var d in this.twoCharacterEmoticons){var j=this.twoCharacterEmoticons[d];a=a.replace(j,"$1<
 span class='"+g+" spaced-emoticon'>$2</span>");}if(c.animate)setTimeout(function(){var a=document.body.getElementsByClassName("un-transformed-emoticon");for(var b in a)if(typeof a[b]=="object")a[b].classList.remove("un-transformed-emoticon");},c.delay);return a;};
\ No newline at end of file

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java Thu Feb  2 10:03:15 2017
@@ -30,11 +30,11 @@ import org.apache.openmeetings.db.dao.us
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Type;
 import org.apache.openmeetings.db.util.FormatHelper;
-import org.apache.wicket.ajax.json.JSONException;
-import org.apache.wicket.ajax.json.JSONWriter;
 import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.validation.Validatable;
+import org.json.JSONException;
+import org.json.JSONStringer;
 import org.wicketstuff.select2.ChoiceProvider;
 import org.wicketstuff.select2.Response;
 
@@ -42,7 +42,7 @@ public class UserChoiceProvider extends
 	private static final long serialVersionUID = 1L;
 	private final static int PAGE_SIZE = 10;
 	private Map<String, User> newContacts = new Hashtable<String, User>();
-	
+
 	public static User getUser(String value) {
 		User u = null;
 		if (!Strings.isEmpty(value)) {
@@ -55,7 +55,7 @@ public class UserChoiceProvider extends
 				int idx1 = value.indexOf('>', idx);
 				if (idx1 > -1) {
 					email = value.substring(idx + 1, idx1);
-					
+
 					String name = value.substring(0, idx).replace("\"", "");
 					int idx2 = name.indexOf(' ');
 					if (idx2 > -1) {
@@ -65,7 +65,7 @@ public class UserChoiceProvider extends
 						fName = "";
 						lName = name;
 					}
-					 
+
 				}
 			} else {
 				email = value;
@@ -120,9 +120,9 @@ public class UserChoiceProvider extends
 	}
 
 	@Override
-	public void toJson(User choice, JSONWriter writer) throws JSONException {
-		super.toJson(choice, writer);
-		writer.key("contact").value(choice.getType() == Type.contact);
+	public void toJson(User choice, JSONStringer stringer) throws JSONException {
+		super.toJson(choice, stringer);
+		stringer.key("contact").value(choice.getType() == Type.contact);
 	}
 
 	@Override

Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/BootstrapFileUploadBehavior.java (from r1781362, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/BootstrapFileUploadBehavior.java?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/BootstrapFileUploadBehavior.java&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java&r1=1781362&r2=1781363&rev=1781363&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/upload/BootstrapFileUploadBehavior.java Thu Feb  2 10:03:15 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.util;
+package org.apache.openmeetings.web.util.upload;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.behavior.Behavior;

Modified: openmeetings/application/branches/3.2.x/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/pom.xml?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/pom.xml (original)
+++ openmeetings/application/branches/3.2.x/pom.xml Thu Feb  2 10:03:15 2017
@@ -913,6 +913,7 @@
 								<patterns>
 									<pattern>Licensed MIT</pattern>
 									<pattern>MIT/GPL2 Licensed</pattern>
+									<pattern>licensed under the MIT and GPL</pattern>
 								</patterns>
 							</license>
 						</licenses>

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java Thu Feb  2 10:03:15 2017
@@ -34,7 +34,7 @@ import org.apache.openmeetings.util.OmFi
 import org.apache.openmeetings.web.admin.AdminPanel;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.util.AjaxDownload;
-import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
+import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java Thu Feb  2 10:03:15 2017
@@ -40,7 +40,7 @@ import org.apache.openmeetings.web.data.
 import org.apache.openmeetings.web.data.OmOrderByBorder;
 import org.apache.openmeetings.web.data.SearchableDataProvider;
 import org.apache.openmeetings.web.util.AjaxDownload;
-import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
+import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java Thu Feb  2 10:03:15 2017
@@ -54,9 +54,9 @@ import org.apache.openmeetings.web.commo
 import org.apache.openmeetings.web.common.menu.MenuPanel;
 import org.apache.openmeetings.web.room.menu.RoomMenuPanel;
 import org.apache.openmeetings.web.user.AboutDialog;
-import org.apache.openmeetings.web.user.ChatPanel;
 import org.apache.openmeetings.web.user.MessageDialog;
 import org.apache.openmeetings.web.user.UserInfoDialog;
+import org.apache.openmeetings.web.user.chat.ChatPanel;
 import org.apache.openmeetings.web.util.ContactsHelper;
 import org.apache.openmeetings.web.util.OmUrlFragment;
 import org.apache.wicket.Component;

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java Thu Feb  2 10:03:15 2017
@@ -26,7 +26,7 @@ import java.util.List;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.util.StoredFile;
-import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
+import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
 import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java Thu Feb  2 10:03:15 2017
@@ -63,7 +63,7 @@ import org.apache.openmeetings.web.room.
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.json.JSONObject;
+import org.json.JSONObject;
 import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.event.IEvent;

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java?rev=1781363&r1=1781362&r2=1781363&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java Thu Feb  2 10:03:15 2017
@@ -36,7 +36,7 @@ import org.apache.openmeetings.util.proc
 import org.apache.openmeetings.util.process.ConverterProcessResultList;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.room.RoomPanel;
-import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
+import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
 import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;

Copied: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java (from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java?p2=openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java&p1=openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java&r1=1781362&r2=1781363&rev=1781363&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.java Thu Feb  2 10:03:15 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.user;
+package org.apache.openmeetings.web.user.chat;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasAdminLevel;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_CHAT;
@@ -29,6 +29,8 @@ import static org.apache.openmeetings.we
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.room.RoomPanel.isModerator;
+import static org.apache.openmeetings.web.user.chat.EmotionsResources.EMOTIONS_CSS_REFERENCE;
+import static org.apache.openmeetings.web.user.chat.EmotionsResources.EMOTIONS_JS_REFERENCE;
 import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
 import static org.apache.openmeetings.web.util.ProfileImageResourceReference.getUrl;
 import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
@@ -78,7 +80,6 @@ import org.red5.logging.Red5LoggerFactor
 import org.slf4j.Logger;
 
 import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
-import com.googlecode.wicket.jquery.ui.plugins.emoticons.EmoticonsBehavior;
 import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
 
 @AuthorizeInstantiation({"Dashboard", "Room"})
@@ -184,7 +185,6 @@ public class ChatPanel extends BasePanel
 				super.renderHead(component, response);
 			}
 		});
-		add(new EmoticonsBehavior(".messageArea"));
 		add(new ChatForm("sendForm"));
 	}
 
@@ -235,7 +235,9 @@ public class ChatPanel extends BasePanel
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(EMOTIONS_JS_REFERENCE)));
 		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(ChatPanel.class, "chat.js"))));
+		response.render(CssHeaderItem.forReference(EMOTIONS_CSS_REFERENCE));
 		response.render(CssHeaderItem.forUrl("css/chat.css"));
 		response.render(new PriorityHeaderItem(getNamedFunction("acceptMessage", acceptMessage, explicit(PARAM_ROOM_ID), explicit(PARAM_MSG_ID))));
 		if (!showDashboardChat) {

Copied: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html (from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.html)
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html?p2=openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html&p1=openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.html&r1=1781362&r2=1781363&rev=1781363&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html Thu Feb  2 10:03:15 2017
@@ -32,28 +32,28 @@
 		}
 	</style>
 	<script type="text/javascript">
-	    function emtClick(emoticon) {
-	        var editor = $('#chatMessage .wysiwyg-editor');
-	        editor.html(editor.html() + ' ' + emoticon + ' ');
-	    }
+		function emtClick(emoticon) {
+			var editor = $('#chatMessage .wysiwyg-editor');
+			editor.html(editor.html() + ' ' + emoticon + ' ');
+		}
 		$(function() {
-			 var emots = [":-)", ":)", ":o)", ":c)", ":^)", ":-D", ":-(", ":-9", ";-)", ":-P", ":-p", ":-Þ", ":-b"
-			 	, ":-O", ":-/", ":-X", ":-#", ":'(", "B-)", "8-)", ":-\\", ";*(", ":-*", ":]", ":>", "=]", "=)", "8)"
-			 	, ":}", ":D", "8D", "XD", "xD", "=D", ":(", ":<", ":[", ":{", "=(", ";)", ";]", ";D", ":P", ":p"
-			 	, "=P", "=p", ":b", ":Þ", ":O", "8O", ":/", "=/", ":S", ":#", ":X", "B)", "O:)", "<3", ";(", ">:)"
-			 	, ">;)", ">:(", "O_o", "O_O", "o_o", "0_o", "T_T", "^_^", "?-)"];
-			 var emotMenuList = $('#emotMenuList');
-			 var rowSize = 15;
-			 var row = $('<tr></tr>');
-			 for (var i = 0; i < emots.length; ++i) {
-			 	row.append('<td><div class="emt" onclick="emtClick(\'' + emots[i] + '\');">'
-			 		+ emots[i] + '</div></td>');
-			 	if (i != 0 && i % rowSize == 0) {
-			 		emotMenuList.append(row);
-			 		row = $('<tr></tr>');
-			 	}
-			 }
-			 $('.emt').emoticonize();
+			var emots = [":-)", ":)", ":o)", ":c)", ":^)", ":-D", ":-(", ":-9", ";-)", ":-P", ":-p", ":-Þ", ":-b"
+				, ":-O", ":-/", ":-X", ":-#", ":'(", "B-)", "8-)", ":-\\", ";*(", ":-*", ":]", ":>", "=]", "=)", "8)"
+				, ":}", ":D", "8D", "XD", "xD", "=D", ":(", ":<", ":[", ":{", "=(", ";)", ";]", ";D", ":P", ":p"
+				, "=P", "=p", ":b", ":Þ", ":O", "8O", ":/", "=/", ":S", ":#", ":X", "B)", "O:)", "<3", ";(", ">:)"
+				, ">;)", ">:(", "O_o", "O_O", "o_o", "0_o", "T_T", "^_^", "?-)"];
+			var emotMenuList = $('#emotMenuList');
+			var rowSize = 15;
+			var row = $('<tr></tr>');
+			for (var i = 0; i < emots.length; ++i) {
+				row.append('<td><div class="emt" onclick="emtClick(\'' + emots[i] + '\');">'
+					+ emots[i] + '</div></td>');
+				if (i != 0 && i % rowSize == 0) {
+					emotMenuList.append(row);
+					row = $('<tr></tr>');
+				}
+			}
+			//$('.emt').emoticonize();
 		});
 	</script>
 </wicket:head>
@@ -75,11 +75,10 @@
 				<li><a data-edit="fontSize 3"><font size="2">Normal</font></a></li>
 				<li><a data-edit="fontSize 1"><font size="1">Small</font></a></li>
 			</ul>
-			<a id="bold" class="chat btn" data-edit="bold" title="Bold (Ctrl/Cmd+B)"> B
-			</a> <a id="italic" class="chat btn" data-edit="italic" title="Italic (Ctrl/Cmd+I)" style="font-style: italic;"> I
-			</a> <a id="strikethrough" class="chat btn" data-edit="strikethrough" title="Strikethrough" style="text-decoration: line-through;"> S
-			</a> <a id="underline" class="chat btn" data-edit="underline" title="Underline (Ctrl/Cmd+U)" style="text-decoration: underline;"> U
-			</a>
+			<a id="bold" class="chat btn" data-edit="bold" title="Bold (Ctrl/Cmd+B)"> B </a> <a
+			id="italic" class="chat btn" data-edit="italic" title="Italic (Ctrl/Cmd+I)" style="font-style: italic;"> I </a> <a
+			id="strikethrough" class="chat btn" data-edit="strikethrough" title="Strikethrough" style="text-decoration: line-through;"> S </a> <a
+			id="underline" class="chat btn" data-edit="underline" title="Underline (Ctrl/Cmd+U)" style="text-decoration: underline;"> U </a>
 		</div>
 	</div>
 </wicket:panel>

Copied: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java (from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java?p2=openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java&p1=openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.java&r1=1781362&r2=1781363&rev=1781363&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatToolbar.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java Thu Feb  2 10:03:15 2017
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.user;
+package org.apache.openmeetings.web.user.chat;
 
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;

Added: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/EmotionsResources.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/EmotionsResources.java?rev=1781363&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/EmotionsResources.java (added)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/EmotionsResources.java Thu Feb  2 10:03:15 2017
@@ -0,0 +1,28 @@
+/*
+ * 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.chat;
+
+import org.apache.wicket.request.resource.CssResourceReference;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
+
+public class EmotionsResources {
+	public final static ResourceReference EMOTIONS_JS_REFERENCE = new JavaScriptResourceReference(EmotionsResources.class, "cssemoticons.js");
+	public final static ResourceReference EMOTIONS_CSS_REFERENCE = new CssResourceReference(EmotionsResources.class, "cssemoticons.css");
+}

Copied: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js (from r1781362, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js)
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js?p2=openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js&p1=openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js&r1=1781362&r2=1781363&rev=1781363&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat.js (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js Thu Feb  2 10:03:15 2017
@@ -26,6 +26,7 @@ var chatTabs, tabTemplate = "<li><a href
 	, clearBlock = "<div class='clear'></div>"
 	, closeBlock = "<span class='ui-icon ui-icon-close' role='presentation'></span>"
 	, closedHeight = "20px", openedHeight = "345px";
+var emoticon = new CSSEmoticon();
 $(function() {
 	Wicket.Event.subscribe("/websocket/message", function(jqEvent, msg) {
 		try {
@@ -117,7 +118,7 @@ function addChatMessage(m) {
 					.replace(/#\{imgSrc\}/g, cm.from.img)
 					.replace(/#\{from\}/g, cm.from.name)
 					.replace(/#\{sent\}/g, cm.sent)
-					.replace(/#\{msg\}/g, cm.message));
+					.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) {
@@ -140,6 +141,5 @@ function addChatMessage(m) {
 		if (msg[0]) {
 			msg[0].scrollIntoView();
 		}
-		$('.messageArea').emoticonize();
 	}
 }

Added: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.css
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.css?rev=1781363&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.css (added)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/cssemoticons.css Thu Feb  2 10:03:15 2017
@@ -0,0 +1,295 @@
+/*
+ * jQuery CSSEmoticons plugin 0.2.9
+ *
+ * Copyright (c) 2010 Steve Schwartz (JangoSteve)
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ *
+ * Date: Sun Oct 22 1:00:00 2010 -0500
+ */
+ 
+ /* Basic styles for emoticons */
+span.css-emoticon {
+  font-family: "Trebuchet MS"; /* seems to give the best and most consistent emoticon appearance */
+  font-size: 0.65em;
+  font-weight: bold;
+  color: #000000;
+  display: inline-block;
+  overflow: hidden;
+  vertical-align: middle;
+  transform: rotate(90deg);
+  -webkit-transform: rotate(90deg);
+  -moz-transform: rotate(90deg);
+  -o-transform: rotate(90deg);
+  width: 1.54em; /* note that this is a multiple of this span's font-size, not containing text font-size */
+  height: 1.54em; /* so, relative to containing text, width and height are 0.9 x 1.6 = 1.44em */
+  text-align: center;
+  padding: 0;
+  line-height: 1.34em;
+  -moz-border-radius: 1.54em;
+  -webkit-border-radius: 1.54em;
+  border-radius: 1.54em;
+  -moz-box-shadow: 1px -1px 2px rgba(0,0,0,0.5);
+  -webkit-box-shadow: 1px -1px 2px rgba(0,0,0,0.5);
+  box-shadow: 1px -1px 2px rgba(0,0,0,0.5);
+  border: 1px solid rgba(0,0,0,0.25);
+  background-color: #ffcc00;
+  background-image: -webkit-gradient(
+    linear,
+    right top,
+    left top,
+    color-stop(0.41, rgb(255,204,0)),
+    color-stop(0.56, rgb(255,221,85)),
+    color-stop(1, rgb(255,238,170))
+  );
+  background-image: -moz-linear-gradient(
+    center right,
+    rgb(255,204,0) 41%,
+    rgb(255,221,85) 56%,
+    rgb(255,238,170) 100%
+  );
+  -webkit-transition-property:color, background, transform;  
+  -webkit-transition-duration: 1s, 1s;  
+  -webkit-transition-timing-function: linear, ease-in;
+}
+
+/* Styles for two-character emoticons that need more letter-spacing for proportionality */
+span.css-emoticon.spaced-emoticon {
+  padding-left: 0.2em;
+  width: 1.34em;
+  letter-spacing: 0.2em;
+}
+
+/* This is a dirty dirty hack, because webkit doesn't properly do the padding+width=total-width as it should
+   I think the width of the border may be throwing things off, because it's more noticable for small icons */
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+  span.css-emoticon.spaced-emoticon {
+    width: 1.4em;
+  }
+}
+
+/* Styles for emoticons that need to have smaller characters to fit inside the circle */
+span.css-emoticon.small-emoticon {
+  font-size: 0.55em;
+  width: 1.82em;
+  height: 1.82em;
+  line-height: 1.72em;
+  -moz-border-radius: 1.82em;
+  -webkit-border-radius: 1.82em;
+  border-radius: 1.82em;
+}
+
+span.css-emoticon.small-emoticon.spaced-emoticon {
+  padding-left: 0;
+  width: 1.82em;
+  letter-spacing: 0.1em;
+}
+
+/* Styles for additional colors */
+span.css-emoticon.red-emoticon {
+  background-color: #eb0542;
+  background-image: -webkit-gradient(
+    linear,
+    right top,
+    left top,
+    color-stop(0.41, rgb(235,5,66)),
+    color-stop(0.56, rgb(235,38,90)),
+    color-stop(1, rgb(250,55,110))
+  );
+  background-image: -moz-linear-gradient(
+    center right,
+    rgb(235,5,66) 41%,
+    rgb(235,38,90) 56%,
+    rgb(250,55,110) 100%
+  );
+}
+
+span.css-emoticon.pink-emoticon {
+  background-color: #ff8fd4;
+  background-image: -webkit-gradient(
+    linear,
+    right top,
+    left top,
+    color-stop(0.41, rgb(255,143,212)),
+    color-stop(0.56, rgb(255,153,216)),
+    color-stop(1,    rgb(255,173,225))
+  );
+  background-image: -moz-linear-gradient(
+    center right,
+    rgb(255,143,212) 41%,
+    rgb(255,153,216) 56%,
+    rgb(255,173,225) 100%
+  );
+}
+
+/* styles for emoticons that need no rotation, like O_o */
+span.css-emoticon.no-rotate { 
+  transform: rotate(0deg);
+  -webkit-transform: rotate(0deg);
+  -moz-transform: rotate(0deg);
+  -o-transform: rotate(0deg);
+  -moz-box-shadow: 1px 1px 2px rgba(0,0,0,0.5);
+  -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.5);
+  box-shadow: 1px 1px 2px rgba(0,0,0,0.5);
+  font-size: 0.45em;
+  width: 2.2em;
+  height: 2.2em;
+  line-height: 1.9em;
+  -moz-border-radius: 2.2em;
+  -webkit-border-radius: 2.2em;
+  border-radius: 2.2em;
+  background-image: -webkit-gradient(
+    linear,
+    right bottom,
+    right top,
+    color-stop(0.41, rgb(255,204,0)),
+    color-stop(0.56, rgb(255,221,85)),
+    color-stop(1, rgb(255,238,170))
+  );
+  background-image: -moz-linear-gradient(
+    center bottom,
+    rgb(255,204,0) 41%,
+    rgb(255,221,85) 56%,
+    rgb(255,238,170) 100%
+  );
+}
+
+span.css-emoticon.no-rotate.red-emoticon {
+  background-image: -webkit-gradient(
+    linear,
+    right bottom,
+    right top,
+    color-stop(0.41, rgb(235,5,66)),
+    color-stop(0.56, rgb(235,38,90)),
+    color-stop(1, rgb(250,55,110))
+  );
+  background-image: -moz-linear-gradient(
+    center bottom,
+    rgb(235,5,66) 41%,
+    rgb(235,38,90) 56%,
+    rgb(250,55,110) 100%
+  );
+}
+
+span.css-emoticon.no-rotate.pink-emoticon {
+  background-image: -webkit-gradient(
+    linear,
+    right bottom,
+    right top,
+    color-stop(0.41, rgb(255,143,212)),
+    color-stop(0.56, rgb(255,153,216)),
+    color-stop(1,    rgb(255,173,225))
+  );
+  background-image: -moz-linear-gradient(
+    center bottom,
+    rgb(255,143,212) 41%,
+    rgb(255,153,216) 56%,
+    rgb(255,173,225) 100%
+  );
+}
+
+/* Styles for emoticons that need to be rotated counter-clockwise, like <3 */
+span.css-emoticon.counter-rotated { 
+  transform: rotate(-90deg);
+  -webkit-transform: rotate(-90deg);
+  -moz-transform: rotate(-90deg);
+  -o-transform: rotate(-90deg);
+  -moz-box-shadow: -1px 1px 2px rgba(0,0,0,0.5);
+  -webkit-box-shadow: -1px 1px 2px rgba(0,0,0,0.5);
+  box-shadow: -1px 1px 2px rgba(0,0,0,0.5);
+  background-image: -webkit-gradient(
+    linear,
+    left top,
+    right top,
+    color-stop(0.41, rgb(255,204,0)),
+    color-stop(0.56, rgb(255,221,85)),
+    color-stop(1, rgb(255,238,170))
+  );
+  background-image: -moz-linear-gradient(
+    center left,
+    rgb(255,204,0) 41%,
+    rgb(255,221,85) 56%,
+    rgb(255,238,170) 100%
+  );
+}
+
+span.css-emoticon.counter-rotated.red-emoticon {
+  background-image: -webkit-gradient(
+    linear,
+    left top,
+    right top,
+    color-stop(0.41, rgb(235,5,66)),
+    color-stop(0.56, rgb(235,38,90)),
+    color-stop(1, rgb(250,55,110))
+  );
+  background-image: -moz-linear-gradient(
+    center left,
+    rgb(235,5,66) 41%,
+    rgb(235,38,90) 56%,
+    rgb(250,55,110) 100%
+  );
+}
+
+span.css-emoticon.counter-rotated.pink-emoticon {
+  background-image: -webkit-gradient(
+    linear,
+    left top,
+    right top,
+    color-stop(0.41, rgb(255,143,212)),
+    color-stop(0.56, rgb(255,153,216)),
+    color-stop(1,    rgb(255,173,225))
+  );
+  background-image: -moz-linear-gradient(
+    center left,
+    rgb(255,143,212) 41%,
+    rgb(255,153,216) 56%,
+    rgb(255,173,225) 100%
+  );
+}
+
+/* Styles for animated states */
+span.css-emoticon.un-transformed-emoticon, span.css-emoticon.animated-emoticon:hover {
+    /* font-size: inherit;
+    font-weight: inherit;
+    vertical-align: inherit;
+    line-height: inherit;
+    font-family: inherit; */
+    letter-spacing: inherit;
+    color: inherit;
+    overflow: visible;
+    transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    background: none;
+    background-image: none;
+    box-shadow: none;
+    -moz-box-shadow: none;
+    -webkit-box-shadow: none;
+    border-color: transparent;
+}
+
+span.css-emoticon.nintendo-controller {
+  font-size: .8em;
+  height: 1.2em;
+  line-height: 1em;
+  width: 2.7em;
+  vertical-align: bottom;
+  border-radius: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  background: -webkit-gradient(
+      linear,
+      left bottom,
+      left top,
+      color-stop(0.09, rgb(116,121,140)),
+      color-stop(0.55, rgb(165,170,189))
+  );
+  background: -moz-linear-gradient(
+      center bottom,
+      rgb(116,121,140) 9%,
+      rgb(165,170,189) 55%
+  );
+}
\ No newline at end of file