aboutsummaryrefslogtreecommitdiff
path: root/views/default/js/strophe.muc.js
diff options
context:
space:
mode:
Diffstat (limited to 'views/default/js/strophe.muc.js')
-rw-r--r--views/default/js/strophe.muc.js300
1 files changed, 0 insertions, 300 deletions
diff --git a/views/default/js/strophe.muc.js b/views/default/js/strophe.muc.js
deleted file mode 100644
index 954ca8730..000000000
--- a/views/default/js/strophe.muc.js
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
-Plugin to implement the MUC extension. http://xmpp.org/extensions/xep-0045.html
-*/
-/* jslint configuration: */
-/* global document, window, setTimeout, clearTimeout, console,
- XMLHttpRequest, ActiveXObject,
- Base64, MD5,
- Strophe, $build, $msg, $iq, $pres
-*/
-
-Strophe.addConnectionPlugin('muc', {
- _connection: null,
- // The plugin must have the init function
- /***Function
- Initialize the MUC plugin. Sets the correct connection object and
- extends the namesace.
- */
- init: function(conn) {
- this._connection = conn;
- /* extend name space
- * NS.MUC - XMPP Multi-user chat namespace
- * from XEP 45.
- *
- */
- Strophe.addNamespace('MUC_OWNER', Strophe.NS.MUC+"#owner");
- Strophe.addNamespace('MUC_ADMIN', Strophe.NS.MUC+"#admin");
- },
- /***Function
- Join a multi-user chat room
- Parameters:
- (String) room - The multi-user chat room to join.
- (String) nick - The nickname to use in the chat room. Optional
- (Function) msg_handler_cb - The function call to handle messages from the
- specified chat room.
- (Function) pres_handler_cb - The function call back to handle presence
- in the chat room.
- (String) password - The optional password to use. (password protected
- rooms only)
- */
- join: function(room, nick, msg_handler_cb, pres_handler_cb, password) {
- var room_nick = this.test_append_nick(room, nick);
- var msg = $pres({from: this._connection.jid,
- to: room_nick})
- .c("x",{xmlns: Strophe.NS.MUC});
- if (password)
- {
- var password_elem = Strophe.xmlElement("password",
- [],
- password);
- msg.cnode(password_elem);
- }
- if (msg_handler_cb)
- {
- this._connection.addHandler(function(stanza) {
- var from = stanza.getAttribute('from');
- var roomname = from.split("/");
- // filter on room name
- if (roomname.length > 1 && roomname[0] == room)
- {
- return msg_handler_cb(stanza);
- }
- else
- {
- return true;
- }
- },
- null,
- "message",
- null,
- null,
- null);
- }
- if (pres_handler_cb)
- {
- this._connection.addHandler(function(stanza) {
- var xquery = stanza.getElementsByTagName("x");
- if (xquery.length > 0)
- {
- //Handle only MUC user protocol
- for (var i = 0; i < xquery.length; i++)
- {
- var xmlns = xquery[i].getAttribute("xmlns");
-
- if (xmlns && xmlns.match(Strophe.NS.MUC))
- {
- return pres_handler_cb(stanza);
- }
- }
- }
- return true;
- },
- null,
- "presence",
- null,
- null,
- null);
- }
- this._connection.send(msg);
- },
- /***Function
- Leave a multi-user chat room
- Parameters:
- (String) room - The multi-user chat room to leave.
- (String) nick - The nick name used in the room.
- (Function) handler_cb - Optional function to handle the successful leave.
- Returns:
- iqid - The unique id for the room leave.
- */
- leave: function(room, nick, handler_cb) {
- var room_nick = this.test_append_nick(room, nick);
- var presenceid = this._connection.getUniqueId();
- var presence = $pres({type: "unavailable",
- id: presenceid,
- from: this._connection.jid,
- to: room_nick})
- .c("x",{xmlns: Strophe.NS.MUC});
- this._connection.addHandler(handler_cb,
- null,
- "presence",
- null,
- presenceid,
- null);
- this._connection.send(presence);
- return presenceid;
- },
- /***Function
- Parameters:
- (String) room - The multi-user chat room name.
- (String) nick - The nick name used in the chat room.
- (String) message - The message to send to the room.
- Returns:
- msgiq - the unique id used to send the message
- */
- message: function(room, nick, message) {
- var room_nick = this.test_append_nick(room, nick);
- var msgid = this._connection.getUniqueId();
- var msg = $msg({to: room_nick,
- from: this._connection.jid,
- type: "groupchat",
- id: msgid}).c("body",
- {xmlns: Strophe.NS.CLIENT}).t(message);
- msg.up().c("x", {xmlns: "jabber:x:event"}).c("composing");
- this._connection.send(msg);
- return msgid;
- },
- /***Function
- Start a room configuration.
- Parameters:
- (String) room - The multi-user chat room name.
- Returns:
- id - the unique id used to send the configuration request
- */
- configure: function(room) {
- //send iq to start room configuration
- var config = $iq({to:room,
- type: "get"}).c("query",
- {xmlns: Strophe.NS.MUC_OWNER});
- var stanza = config.tree();
- return this._connection.sendIQ(stanza,
- function(){},
- function(){});
- },
- /***Function
- Cancel the room configuration
- Parameters:
- (String) room - The multi-user chat room name.
- Returns:
- id - the unique id used to cancel the configuration.
- */
- cancelConfigure: function(room) {
- //send iq to start room configuration
- var config = $iq({to: room,
- type: "set"})
- .c("query", {xmlns: Strophe.NS.MUC_OWNER})
- .c("x", {xmlns: "jabber:x:data", type: "cancel"});
- var stanza = config.tree();
- return this._connection.sendIQ(stanza,
- function(){},
- function(){});
- },
- /***Function
- Save a room configuration.
- Parameters:
- (String) room - The multi-user chat room name.
- (Array) configarray - an array of form elements used to configure the room.
- Returns:
- id - the unique id used to save the configuration.
- */
- saveConfiguration: function(room, configarray) {
- var config = $iq({to: room,
- type: "set"})
- .c("query", {xmlns: Strophe.NS.MUC_OWNER})
- .c("x", {xmlns: "jabber:x:data", type: "submit"});
- for (var i = 0; i >= configarray.length; i++) {
- config.cnode(configarray[i]);
- }
- var stanza = config.tree();
- return this._connection.sendIQ(stanza,
- function(){},
- function(){});
- },
- /***Function
- Parameters:
- (String) room - The multi-user chat room name.
- Returns:
- id - the unique id used to create the chat room.
- */
- createInstantRoom: function(room) {
- var roomiq = $iq({to: room,
- type: "set"})
- .c("query", {xmlns: Strophe.NS.MUC_OWNER})
- .c("x", {xmlns: "jabber:x:data",
- type: "submit"});
- return this._connection.sendIQ(roomiq.tree(),
- function() {},
- function() {});
- },
- /***
- Set the topic of the chat room.
- Parameters:
- (String) room - The multi-user chat room name.
- (String) topic - Topic message.
- */
- setTopic: function(room, topic) {
- var msg = $msg({to: room,
- from: this._connection.jid,
- type: "groupchat"})
- .c("subject", {xmlns: "jabber:client"}).t(topic);
- this._connection.send(msg.tree());
- },
- /***Function
- Changes the role and affiliation of a member of a MUC room.
- The modification can only be done by a room moderator. An error will be
- returned if the user doesn't have permission.
- Parameters:
- (String) room - The multi-user chat room name.
- (String) nick - The nick name of the user to modify.
- (String) role - The new role of the user.
- (String) affiliation - The new affiliation of the user.
- (String) reason - The reason for the change.
- Returns:
- iq - the id of the mode change request.
- */
- modifyUser: function(room, nick, role, affiliation, reason) {
- var item_attrs = {nick: Strophe.escapeNode(nick)};
- if (role !== null)
- {
- item_attrs.role = role;
- }
- if (affiliation !== null)
- {
- item_attrs.affiliation = affiliation;
- }
- var item = $build("item", item_attrs);
- if (reason !== null)
- {
- item.cnode(Strophe.xmlElement("reason", reason));
- }
- var roomiq = $iq({to: room,
- type: "set"})
- .c("query", {xmlns: Strophe.NS.MUC_OWNER}).cnode(item.tree());
- return this._connection.sendIQ(roomiq.tree(),
- function() {},
- function() {});
- },
- /***Function
- Change the current users nick name.
- Parameters:
- (String) room - The multi-user chat room name.
- (String) user - The new nick name.
- */
- changeNick: function(room, user) {
- var room_nick = this.test_append_nick(room, user);
- var presence = $pres({from: this._connection.jid,
- to: room_nick})
- .c("x",{xmlns: Strophe.NS.MUC});
- this._connection.send(presence.tree());
- },
- /***Function
- List all chat room available on a server.
- Parameters:
- (String) server - name of chat server.
- (String) handle_cb - Function to call for room list return.
- */
- listRooms: function(server, handle_cb) {
- var iq = $iq({to: server,
- from: this._connection.jid,
- type: "get"})
- .c("query",{xmlns: Strophe.NS.DISCO_ITEMS});
- this._connection.sendIQ(iq, handle_cb, function(){});
- },
- test_append_nick: function(room, nick) {
- var room_nick = room;
- if (nick)
- {
- room_nick += "/" + Strophe.escapeNode(nick);
- }
- return room_nick;
- }
-}); \ No newline at end of file