Thu, 08 Apr 2010 16:41:23 +0100
Bind enter to the send button in the chat UI
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 | 214 | function display_ui() |
215 | { | |
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) |
53bfdcb686f7
Bind enter to the send button in the chat UI
Matthew Wild <mwild1@gmail.com>
parents:
48
diff
changeset
|
224 | $("#support-send-button").click(); |
53bfdcb686f7
Bind enter to the send button in the chat UI
Matthew Wild <mwild1@gmail.com>
parents:
48
diff
changeset
|
225 | }); |
38
536e0a618d4a
Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents:
37
diff
changeset
|
226 | $("#support-offline-submit-button").click(function () |
12
7b0df9aad29c
Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents:
9
diff
changeset
|
227 | { |
38
536e0a618d4a
Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents:
37
diff
changeset
|
228 | $("#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
|
229 | 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
|
230 | .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
|
231 | .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
|
232 | $("#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
|
233 | $("#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
|
234 | }); |
536e0a618d4a
Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents:
37
diff
changeset
|
235 | |
536e0a618d4a
Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents:
37
diff
changeset
|
236 | ui.dialog({ |
536e0a618d4a
Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents:
37
diff
changeset
|
237 | 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
|
238 | height: 400, |
536e0a618d4a
Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents:
37
diff
changeset
|
239 | width: 285 |
536e0a618d4a
Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents:
37
diff
changeset
|
240 | }); |
536e0a618d4a
Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents:
37
diff
changeset
|
241 | |
536e0a618d4a
Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents:
37
diff
changeset
|
242 | 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
|
243 | { |
536e0a618d4a
Add error page to the UI, and use it on connection errors
Matthew Wild <mwild1@gmail.com>
parents:
37
diff
changeset
|
244 | set_ui_state("error"); |
12
7b0df9aad29c
Connecting to the XMPP server
Matthew Wild <mwild1@gmail.com>
parents:
9
diff
changeset
|
245 | } |
3 | 246 | } |
247 | ||
27
8ca116c827cf
Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents:
26
diff
changeset
|
248 | /*** Helper functions */ |
8ca116c827cf
Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents:
26
diff
changeset
|
249 | function htmlescape(s) |
8ca116c827cf
Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents:
26
diff
changeset
|
250 | { |
8ca116c827cf
Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents:
26
diff
changeset
|
251 | return s.replace(/&/g,'&'). |
8ca116c827cf
Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents:
26
diff
changeset
|
252 | replace(/>/g,'>'). |
8ca116c827cf
Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents:
26
diff
changeset
|
253 | replace(/</g,'<'). |
8ca116c827cf
Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents:
26
diff
changeset
|
254 | replace(/"/g,'"'); |
8ca116c827cf
Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents:
26
diff
changeset
|
255 | } |
8ca116c827cf
Add htmlescape() helper function
Matthew Wild <mwild1@gmail.com>
parents:
26
diff
changeset
|
256 | |
36
562ff07a3968
Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents:
34
diff
changeset
|
257 | function activate_links() |
562ff07a3968
Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents:
34
diff
changeset
|
258 | { |
562ff07a3968
Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents:
34
diff
changeset
|
259 | $("[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
|
260 | } |
562ff07a3968
Large commit - reorganises directory structure, lots of small fixes
Matthew Wild <mwild1@gmail.com>
parents:
34
diff
changeset
|
261 | |
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
|
262 | $(activate_links); |