support-chat/js/supportchat.js

Thu, 08 Apr 2010 17:01:02 +0100

author
matthew@heavyhorse.vm.bytemark.co.uk
date
Thu, 08 Apr 2010 17:01:02 +0100
changeset 51
7f893f429760
parent 50
53bfdcb686f7
child 53
5cb47f4087a8
permissions
-rw-r--r--

Suppress enter key press so it doesn't reach the textbox

12
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
1 /* Config */
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
2
16
ebc14a22a0c1 Switch to using a table of config options (will allow for easier configuration later)
Matthew Wild <mwild1@gmail.com>
parents: 15
diff changeset
3 var support_config = {
ebc14a22a0c1 Switch to using a table of config options (will allow for easier configuration later)
Matthew Wild <mwild1@gmail.com>
parents: 15
diff changeset
4 login_domain: "anon.localhost",
ebc14a22a0c1 Switch to using a table of config options (will allow for easier configuration later)
Matthew Wild <mwild1@gmail.com>
parents: 15
diff changeset
5 bosh_url: "/http-bind",
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
6 muc_server: "support.localhost",
16
ebc14a22a0c1 Switch to using a table of config options (will allow for easier configuration later)
Matthew Wild <mwild1@gmail.com>
parents: 15
diff changeset
7 team_rooms: {
ebc14a22a0c1 Switch to using a table of config options (will allow for easier configuration later)
Matthew Wild <mwild1@gmail.com>
parents: 15
diff changeset
8 "Sales": "sales@support.localhost",
ebc14a22a0c1 Switch to using a table of config options (will allow for easier configuration later)
Matthew Wild <mwild1@gmail.com>
parents: 15
diff changeset
9 "Technical": "technical@support.localhost"
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
10 },
37
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
11 send_invites: true,
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
12 offline_support: "support@localhost",
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
13 alternative_url: "http://www.google.co.uk/"
16
ebc14a22a0c1 Switch to using a table of config options (will allow for easier configuration later)
Matthew Wild <mwild1@gmail.com>
parents: 15
diff changeset
14 };
12
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
15
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
16 /*** XMPP handling */
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
17 var conn = null;
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
18
37
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
19 /*** Query information */
39
0b18fb969bd3 Remove part of a comment accidentally copy/pasted
Matthew Wild <mwild1@gmail.com>
parents: 38
diff changeset
20 var question_type; // E.g. "Sales", "Technical"
37
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
21 var question_name; // Name of the submitter
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
22 var question_text; // The query itself
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
23
12
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
24 /* Called by Strophe when status of connection changes
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
25 (from disconnected to connected, vice-versa, etc.)
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
26 */
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
27 function handle_connection_status(status, err)
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
28 {
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
29 if(err)
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
30 set_ui_state("error");
12
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
31 }
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
32
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
33 /* Initiate the connection to the XMPP server */
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
34 function start_connection()
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
35 {
16
ebc14a22a0c1 Switch to using a table of config options (will allow for easier configuration later)
Matthew Wild <mwild1@gmail.com>
parents: 15
diff changeset
36 conn = new Strophe.Connection(support_config.bosh_url);
12
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
37 var ret = true;
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
38 try
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
39 {
16
ebc14a22a0c1 Switch to using a table of config options (will allow for easier configuration later)
Matthew Wild <mwild1@gmail.com>
parents: 15
diff changeset
40 conn.connect(support_config.login_domain, null, handle_connection_status, 50);
12
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
41 }
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
42 catch(e)
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
43 {
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
44 ret = false;
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
45 }
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
46 return ret;
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
47 }
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
48
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
49 /*** UI handling */
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
50
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
51 /* Initial UI state */
23
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
52 var ui_state = "question";
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
53
37
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
54 /* Called to change the UI state (question, wait, converse) */
23
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
55 function set_ui_state(new_state)
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
56 {
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
57 if(ui_state != new_state)
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
58 {
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
59 $("#support-"+ui_state).hide();
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
60 $("#support-"+(ui_state=new_state)).show();
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
61 }
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
62 }
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
63
12
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
64 /* Handle the user submitting the question form */
7
53201a5347f9 Add dummy event handler for question submit
Matthew Wild <mwild1@gmail.com>
parents: 4
diff changeset
65 function on_question_submit()
53201a5347f9 Add dummy event handler for question submit
Matthew Wild <mwild1@gmail.com>
parents: 4
diff changeset
66 {
37
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
67 question_type = $("#support-question-type").val();
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
68 question_name = $("#support-question-name").val();
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
69 question_text = $("#support-question-text").val();
9
6677316d8834 Example question submit handler until BOSH backend integrated
Matthew Wild <mwild1@gmail.com>
parents: 7
diff changeset
70
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
71 var our_nick = question_name;
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
72
23
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
73 set_ui_state("wait");
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
74
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
75 // Create our question room
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
76 var question_muc = new MUC(conn, {
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
77 // Handle room joins
43
a3febc43e4e9 Changes to work with new callback syntax
Matthew Wild <mwild1@gmail.com>
parents: 39
diff changeset
78 joined: function (stanza, muc, occupant)
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
79 {
43
a3febc43e4e9 Changes to work with new callback syntax
Matthew Wild <mwild1@gmail.com>
parents: 39
diff changeset
80 if(occupant.nick == our_nick)
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
81 // We joined the question room, now join the team room and tell them
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
82 team_muc.join(support_config.team_rooms[question_type], our_nick);
23
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
83 else if(ui_state == "wait")
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
84 {
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
85 // We were waiting for an assistant, and one just joined
43
a3febc43e4e9 Changes to work with new callback syntax
Matthew Wild <mwild1@gmail.com>
parents: 39
diff changeset
86 var html = "<span class='muc-message'><span class='muc-nick'>" + htmlescape(occupant.nick) + "</span>" + " is answering your query</span><br/>\n";
34
510ca613996a Add support for sending messages from the converse UI
Matthew Wild <mwild1@gmail.com>
parents: 33
diff changeset
87 $("#support-log").append(html).scrollTop($("#support-log")[0].scrollHeight);
510ca613996a Add support for sending messages from the converse UI
Matthew Wild <mwild1@gmail.com>
parents: 33
diff changeset
88 $("#support-send-button").click(function ()
510ca613996a Add support for sending messages from the converse UI
Matthew Wild <mwild1@gmail.com>
parents: 33
diff changeset
89 {
510ca613996a Add support for sending messages from the converse UI
Matthew Wild <mwild1@gmail.com>
parents: 33
diff changeset
90 question_muc.send_message($("#support-input").val());
510ca613996a Add support for sending messages from the converse UI
Matthew Wild <mwild1@gmail.com>
parents: 33
diff changeset
91 $("#support-input").val("");
510ca613996a Add support for sending messages from the converse UI
Matthew Wild <mwild1@gmail.com>
parents: 33
diff changeset
92 });
23
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
93 set_ui_state("converse");
ee84e7c22600 New logic for controlling the current UI state
Matthew Wild <mwild1@gmail.com>
parents: 22
diff changeset
94 }
28
85fb6653b6e0 Display incoming messages in the UI
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
95 },
85fb6653b6e0 Display incoming messages in the UI
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
96
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
97 // Handle incoming messages
28
85fb6653b6e0 Display incoming messages in the UI
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
98 message: function (stanza, muc, nick, message)
85fb6653b6e0 Display incoming messages in the UI
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
99 {
85fb6653b6e0 Display incoming messages in the UI
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
100 var html = "<span class='muc-message'><span class='muc-nick'>" + htmlescape(nick) + "</span>" + ": " + htmlescape(message) + "</span><br/>\n";
85fb6653b6e0 Display incoming messages in the UI
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
101 $("#support-log").append(html).scrollTop($("#support-log")[0].scrollHeight);
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
102 }
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
103 });
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
104
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
105 // Get a unique room name from the server and then join the question MUC
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
106 conn.sendIQ($iq({to: support_config.muc_server, type: "get"})
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
107 .c("query", { xmlns: "http://jabber.org/protocol/muc#unique" }),
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
108 function (result) // Success
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
109 {
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
110 var unique = Strophe.getText(result.getElementsByTagName("unique")[0]);
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
111 question_muc.join(unique + "@" + support_config.muc_server, our_nick);
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
112 },
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
113 function (result) // Failure to get unique room name
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
114 {
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
115 var unique = "support-"+Math.floor(Math.random()*512);
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
116 question_muc.join(unique + "@" + support_config.muc_server, our_nick);
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
117 });
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
118
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
119 // Create the team MUC object (it will be joined after we join the question MUC)
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
120 var team_muc = new MUC(conn, {
37
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
121 // Someone joined the team MUC
43
a3febc43e4e9 Changes to work with new callback syntax
Matthew Wild <mwild1@gmail.com>
parents: 39
diff changeset
122 joined: function (stanza, muc, occupant)
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
123 {
43
a3febc43e4e9 Changes to work with new callback syntax
Matthew Wild <mwild1@gmail.com>
parents: 39
diff changeset
124 if(occupant.nick != our_nick)
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
125 return;
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
126
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
127 var sent = false;
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
128 for(var nick in team_muc.occupants)
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
129 {
43
a3febc43e4e9 Changes to work with new callback syntax
Matthew Wild <mwild1@gmail.com>
parents: 39
diff changeset
130 if(team_muc.occupants[nick].affiliation == "none" || nick == our_nick)
37
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
131 continue;
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
132 sent = true;
37
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
133 if(support_config.send_invites)
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
134 team_muc.send_invite(team_muc.jid+"/"+nick, question_text + "\n" + question_muc.jid);
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
135 else
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
136 team_muc.send_private_message(nick, question_text + "\n" + question_muc.jid);
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
137 }
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
138 if(!sent)
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
139 {
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
140 set_ui_state("offline");
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
141 }
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
142 },
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
143
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
144 error: function (stanza, muc, error)
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
145 {
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
146 if(error == "conflict")
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
147 {
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
148 our_nick += "_";
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
149 muc.join(support_config.team_rooms[question_type], our_nick);
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
150 }
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
151 else
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
152 set_ui_state("error");
21
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
153 }
b691536ed125 Support for joining the question and team MUCs, and notifying team members of the question
Matthew Wild <mwild1@gmail.com>
parents: 16
diff changeset
154 });
7
53201a5347f9 Add dummy event handler for question submit
Matthew Wild <mwild1@gmail.com>
parents: 4
diff changeset
155 }
53201a5347f9 Add dummy event handler for question submit
Matthew Wild <mwild1@gmail.com>
parents: 4
diff changeset
156
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
157 function build_ui()
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
158 {
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
159 return $(" \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
160 <div id='support-chat'> \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
161 <div id='support-question'> \
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
162 <h2>What is the nature of your question?</h2> \
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
163 <select id='support-question-type'> \
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
164 <option>Sales</option> \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
165 <option>Technical</option> \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
166 </select> \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
167 <h2>What is your name?</h2> \
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
168 <input id='support-question-name' type='text' /> \
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
169 <h2>Your question:</h2> \
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
170 <textarea id='support-question-text'></textarea><br/> \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
171 <input id='support-question-submit' type='submit' /> \
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
172 </div> \
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
173 <div id='support-wait'> \
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
174 Please wait while we find someone to \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
175 answer your query... \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
176 <br/><br/><br/><br/> \
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
177 <center><img src='waiting.gif' alt='Waiting' /></center> \
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
178 </div> \
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
179 <div id='support-converse'> \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
180 <div id='support-log'></div> \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
181 <div id='support-input-container'><textarea id='support-input' type='text' value=''></textarea></div> \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
182 <input id='support-send-button' type='submit' value='Send' /> \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
183 <div style='clear:right;'></div> \
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
184 </div> \
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
185 <div id='support-offline'> \
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
186 <p>Sorry, there are no assistants available \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
187 to answer your question at the moment. \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
188 </p> \
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
189 <div id='support-offline-form'> \
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
190 <p>To receive a reply to your question via \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
191 email, please enter your email address \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
192 below: \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
193 </p> \
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
194 <input id='support-offline-email' type='text' /> \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
195 <input id='support-offline-submit-button' type='submit' value='Submit' /> \
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
196 </div> \
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
197 <div id='support-offline-thanks'> \
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
198 <p>Thank you. Your question has been submitted \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
199 and will be replied to as soon as an assistant \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
200 becomes available.</p> \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
201 </div> \
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
202 </div> \
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
203 <div id='support-error'> \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
204 <p>Sorry, there is a problem with the live support \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
205 service at the moment. Please see our \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
206 <a href='"+support_config.alternative_url+"'>alternative \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
207 support channels</a> to receive assistance. \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
208 </p> \
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
209 </div> \
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
210 </div> \
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
211 ");
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
212 }
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
213
3
de7fbf06cfa5 Add skeleton supportchat.js
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
214 function display_ui()
de7fbf06cfa5 Add skeleton supportchat.js
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
215 {
de7fbf06cfa5 Add skeleton supportchat.js
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
216 // Display pop-up, showing question form
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
217 var ui = build_ui();
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
218
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
219 ui.appendTo("body");
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
220
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
221 $("#support-question-submit").click(on_question_submit);
50
53bfdcb686f7 Bind enter to the send button in the chat UI
Matthew Wild <mwild1@gmail.com>
parents: 48
diff changeset
222 $("#support-input").keypress(function (event) {
53bfdcb686f7 Bind enter to the send button in the chat UI
Matthew Wild <mwild1@gmail.com>
parents: 48
diff changeset
223 if(event.keyCode == 13)
51
7f893f429760 Suppress enter key press so it doesn't reach the textbox
matthew@heavyhorse.vm.bytemark.co.uk
parents: 50
diff changeset
224 {
7f893f429760 Suppress enter key press so it doesn't reach the textbox
matthew@heavyhorse.vm.bytemark.co.uk
parents: 50
diff changeset
225 event.preventDefault();
50
53bfdcb686f7 Bind enter to the send button in the chat UI
Matthew Wild <mwild1@gmail.com>
parents: 48
diff changeset
226 $("#support-send-button").click();
51
7f893f429760 Suppress enter key press so it doesn't reach the textbox
matthew@heavyhorse.vm.bytemark.co.uk
parents: 50
diff changeset
227 }
50
53bfdcb686f7 Bind enter to the send button in the chat UI
Matthew Wild <mwild1@gmail.com>
parents: 48
diff changeset
228 });
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
229 $("#support-offline-submit-button").click(function ()
12
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
230 {
38
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
231 $("#support-offline-form").hide();
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
232 conn.send($msg({to: support_config.offline_support, type: "normal"})
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
233 .c("subject").t("Support query from " + question_name).up()
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
234 .c("body").t(question_text + "\n\nReply via email to: "+
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
235 $("#support-offline-email").val()));
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
236 $("#support-offline-thanks").show();
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
237 });
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
238
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
239 ui.dialog({
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
240 title:"Live Support",
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
241 height: 400,
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
242 width: 285
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
243 });
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
244
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
245 if(!start_connection())
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
246 {
536e0a618d4a Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents: 37
diff changeset
247 set_ui_state("error");
12
7b0df9aad29c Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents: 9
diff changeset
248 }
3
de7fbf06cfa5 Add skeleton supportchat.js
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
249 }
de7fbf06cfa5 Add skeleton supportchat.js
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
250
27
8ca116c827cf Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents: 26
diff changeset
251 /*** Helper functions */
8ca116c827cf Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents: 26
diff changeset
252 function htmlescape(s)
8ca116c827cf Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents: 26
diff changeset
253 {
8ca116c827cf Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents: 26
diff changeset
254 return s.replace(/&/g,'&amp;').
8ca116c827cf Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents: 26
diff changeset
255 replace(/>/g,'&gt;').
8ca116c827cf Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents: 26
diff changeset
256 replace(/</g,'&lt;').
8ca116c827cf Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents: 26
diff changeset
257 replace(/"/g,'&quot;');
8ca116c827cf Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents: 26
diff changeset
258 }
8ca116c827cf Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents: 26
diff changeset
259
36
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
260 function activate_links()
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
261 {
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
262 $("[href='#support-chat']").click(display_ui);
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
263 }
562ff07a3968 Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
264
37
010783d24970 Commit the rest of the assistants-offline handling code, now check the affiliations of assistants
Matthew Wild <mwild1@gmail.com>
parents: 36
diff changeset
265 $(activate_links);

mercurial