~ubuntu-branches/ubuntu/trusty/jwchat/trusty

« back to all changes in this revision

Viewing changes to groupchat.html.gr

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2008-08-24 15:02:53 UTC
  • mfrom: (3.1.4 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080824150253-h0z39rzjmo4lc1k5
Tags: 1.0beta3-3
* Clean up README.Debian. (Closes: #481320)
* Add brazilian debconf messages translation. (Closes: #481522)
* Add swedish debconf messages translation. (Closes: #494887)
* Add italian debconf messages translation. (Closes: #495780)
* Add russian debconf messages translation. (Closes: #495573)
* Add finnish debconf messages translation. (Closes: #496227)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
 
<html>
3
 
  <head>
4
 
    <title>JWChat - Groupchat</title>
5
 
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
6
 
<script>
7
 
var JABBERSERVER = opener.JABBERSERVER;
8
 
</script>
9
 
    <script src="shared.js"></script>
10
 
    <script src="browsercheck.js"></script>
11
 
    <script src="emoticons.js"></script>
12
 
    <script src="config.js"></script>
13
 
    <script src="statusLed.js"></script>
14
 
    <script src="xmlextras.js"></script>
15
 
    <script src="JSJaCPacket.js"></script>
16
 
    <script src="roster.js"></script>
17
 
    <script language="JavaScript1.2">
18
 
<!--
19
 
var colors = new Array('maroon','green','olive','navy','purple','teal','red','blue');
20
 
 
21
 
var scrollHeight = 0;
22
 
function putMsgHTML(msg,mtime,user,usercolor,err) {
23
 
  var msgHTML = '';
24
 
  
25
 
  msg = msgFormat(msg);
26
 
 
27
 
  msgHTML += "<div><span class=time>["+mtime+"] </span>";    
28
 
  
29
 
  if (msg.match(/^\/me /)) {
30
 
    msg = msg.replace(/^\/me /,"<span style=\"color:green;font-weight:bold;\" class=msgnick title='@ "+mtime+"'>*&nbsp;"+user+"</span> ");
31
 
  } else if (user != group) {
32
 
    msgHTML += "<span style=\"color:"+usercolor+";\" class=msgnick title='@ "+mtime+"'>&lt;" + user + "&gt;</span>";
33
 
  }
34
 
 
35
 
  if (user == group) {/* channel status messages */
36
 
                if (err)
37
 
                        msgHTML += "<span style=\"font-weight:bold;color:red;\">"+msg+"</span>";
38
 
                else
39
 
                        msgHTML += "<span style=\"font-weight:bold;\">"+msg+"</span>";
40
 
  } else {
41
 
                if (user != nick && meRegExp.test(msg) && !notHREFMeRegExp.test(msg))
42
 
                        msgHTML += "&nbsp;" + msg.replace(meRegExp,"<span class='highlighted'>$1</span>");
43
 
                else 
44
 
                        msgHTML += "&nbsp;" + msg;
45
 
        }
46
 
 
47
 
        msgHTML += "</div>";
48
 
 
49
 
        var scroll_bottom = false;
50
 
        if (cFrame.body.scrollTop+cFrame.body.clientHeight >= cFrame.body.scrollHeight)
51
 
                scroll_bottom = true;
52
 
                                
53
 
  cFrame.body.innerHTML += msgHTML;
54
 
 
55
 
        if (scroll_bottom)
56
 
                                frames.groupchatChat.groupchatIChat.scrollTo(0,cFrame.body.scrollHeight);
57
 
}
58
 
 
59
 
function popMsgs() {
60
 
 
61
 
  if (!user) 
62
 
    user = srcW.roster.getUserByJID(group);
63
 
 
64
 
  while (user.chatmsgs.length>0) {
65
 
    var msg;
66
 
    if (is.ie5||is.op) {
67
 
      msg = user.chatmsgs[0];
68
 
      user.chatmsgs = user.chatmsgs.slice(1,user.chatmsgs.length);
69
 
    } else
70
 
      msg = user.chatmsgs.shift();
71
 
 
72
 
                var from = msg.getFrom();
73
 
    if (msg.getFrom().indexOf('/') != -1)
74
 
      from = msg.getFrom().substring(msg.getFrom().indexOf('/')+1);
75
 
 
76
 
                /* get date */
77
 
                var timestamp;
78
 
                if (msg.jwcTimestamp)
79
 
                        timestamp = msg.jwcTimestamp;
80
 
                else
81
 
                        timestamp = new Date();
82
 
 
83
 
                var mtime = '';
84
 
                if (new Date() - timestamp > 24*3600*1000)
85
 
                        mtime += timestamp.toLocaleDateString() + " ";
86
 
                
87
 
                mtime += timestamp.toLocaleTimeString();
88
 
    
89
 
    /* look for a subject */
90
 
    if (msg.getSubject()) { // set topic
91
 
      user.roster.subject = msg.getSubject();
92
 
      frames.groupchatTop.document.forms[0].elements['subject'].value = msg.getSubject();
93
 
                        putMsgHTML("/me has set the topic to: "+msg.getSubject(), mtime, from);
94
 
                        return;
95
 
    }
96
 
 
97
 
    if(!msg.getBody() || msg.getBody() == '')
98
 
                                return;
99
 
        
100
 
    /* calculate color */
101
 
    var charSum = 0;
102
 
    for (var i=0; i<from.length; i++)
103
 
      charSum += from.charCodeAt(i);
104
 
    
105
 
    putMsgHTML(msg.getBody(),mtime,from,colors[charSum%(colors.length)]);
106
 
  }
107
 
 
108
 
        /* disabled: it's annoying */
109
 
        //  if (srcW.focusWindows) frames.groupchatBottom.document.forms[0].msgbox.focus();
110
 
}
111
 
 
112
 
function displayTimestamp() {
113
 
  var tstyle;
114
 
  if (is.ie) {
115
 
    tstyle = cFrame.styleSheets('timestampstyle');
116
 
    tstyle.disabled = opener.top.timestamps;
117
 
  } else {
118
 
    tstyle = cFrame.getElementById("timestampstyle");
119
 
    tstyle.sheet.disabled = opener.top.timestamps;
120
 
  }
121
 
}
122
 
 
123
 
function updateMe() {
124
 
 
125
 
        frames.groupchatTop.document.forms[0].subject.disabled = (roster.me.role == 'none');
126
 
        frames.groupchatBottom.document.forms[0].submit.disabled = (roster.me.role == 'none');
127
 
 
128
 
        if (roster.me.affiliation == 'owner')
129
 
                frames.groupchatBottom.document.getElementById('config_chan_button').style.display = '';
130
 
        else
131
 
                frames.groupchatBottom.document.getElementById('config_chan_button').style.display = 'none';
132
 
 
133
 
        if (roster.me.role == 'none') {// seems we left
134
 
                cFrame.body.innerHTML += "<span style='color:red';>"+"Disconnected."+"</span><br>";
135
 
                frames.groupchatChat.groupchatIChat.scrollTo(0,cFrame.body.scrollHeight);
136
 
        }
137
 
 
138
 
        if (frames.groupchatRoster.updateMe)
139
 
                frames.groupchatRoster.updateMe();
140
 
}
141
 
 
142
 
function changeUserStat(jid,stat,val,confirm,reason) {
143
 
  var user = roster.getUserByJID(jid);
144
 
        var iq = new JSJaCIQ();
145
 
        iq.setType('set');
146
 
        iq.setTo(group);
147
 
 
148
 
        var query = iq.setQuery('http://jabber.org/protocol/muc#admin');
149
 
        var item = query.appendChild(iq.getDoc().createElement('item'));
150
 
        item.setAttribute('nick',user.name);
151
 
 
152
 
        item.setAttribute(stat,val);
153
 
        
154
 
  if (reason || (confirm && (reason = prompt("Reason","")) != ''))
155
 
                item.appendChild(iq.getDoc().createElement('reason')).appendChild(iq.getDoc().createTextNode(reason));
156
 
 
157
 
        me = this;
158
 
        srcW.con.send(iq,me.handleError);
159
 
}
160
 
 
161
 
function handleError(iq) {
162
 
        // handle error
163
 
        if (iq && iq.getType() == 'error') {
164
 
                srcW.Debug.log(iq.getDoc().xml,1);
165
 
                var error = iq.getNode().getElementsByTagName('error').item(0);
166
 
                if (error) {
167
 
                        var msg = '';
168
 
                        for (var i=0; i<error.childNodes.length; i++) {
169
 
                                switch (error.childNodes.item(i).nodeName) {
170
 
                                case 'not-allowed':
171
 
                                        putMsgHTML("Not Allowed",new Date(),group,null,true);
172
 
                                        break;
173
 
                                case 'forbidden':
174
 
                                        putMsgHTML("Forbidden",new Date(),group,null,true);
175
 
                                        break;
176
 
                                case 'item-not-found':
177
 
                                        putMsgHTML("Not Found",new Date(),group,null,true);
178
 
                                        break;
179
 
                                default:
180
 
                                        putMsgHTML(error.childNodes.item(i).nodeName,new Date(),group,null,true);
181
 
                                        break;
182
 
                                }
183
 
                        }
184
 
                }
185
 
        }
186
 
}
187
 
 
188
 
function changeRole(jid,role,confirm,reason) {
189
 
  changeUserStat(jid,"role",role,confirm,reason);
190
 
}
191
 
 
192
 
function changeAffiliation(jid,affil,confirm,reason) {
193
 
  changeUserStat(jid,"affiliation",affil,confirm);
194
 
}
195
 
 
196
 
var configW
197
 
function openConfig() {
198
 
        if (!configW || configW.closed)
199
 
                configW = open("groupchatconfig.html","gccW"+makeWindowName(jid),"width=480,height=380,resizable=yes,scrollbars=yes");
200
 
                configW.focus();
201
 
        return false;
202
 
}
203
 
 
204
 
function cleanUp() {
205
 
        if (configW && !configW.closed)
206
 
                configW.close();
207
 
}
208
 
 
209
 
function part() {
210
 
        cleanUp();
211
 
 
212
 
  if (srcW.con) {
213
 
                var presence = new JSJaCPresence();
214
 
                presence.setType('unavailable');
215
 
                presence.setTo(group);
216
 
                srcW.con.syncSend(presence);
217
 
        }
218
 
 
219
 
  if (!user.messages.length && !user.chatmsgs.length && srcW && srcW.roster) {
220
 
    srcW.roster.removeUser(user);
221
 
    srcW.roster.print();
222
 
  }
223
 
}
224
 
 
225
 
/* global vars */
226
 
var srcW,user,roster,cFrame,jid,nick,pass,meRegExp,notHREFMeRegExp;
227
 
 
228
 
function init() {
229
 
        alert("init");
230
 
  getArgs();
231
 
  
232
 
  srcW = opener;
233
 
 
234
 
  jid = passedArgs['jid'];
235
 
        group = jid;
236
 
 
237
 
        if (typeof(passedArgs['nick']) != 'undefined')
238
 
                nick = passedArgs['nick'];
239
 
        if(typeof(nick) == 'undefined' || nick == '')
240
 
                nick = srcW.roster.nick; // guess a nick
241
 
 
242
 
//      meRegExp = new RegExp("\\b("+nick+")\\b","i");
243
 
//      notHREFMeRegExp = new RegExp("href=\"\\S*\\b"+nick+"\\b\\S*\"","i");
244
 
 
245
 
        if (passedArgs['pass'] != 'undefined')
246
 
                pass = passedArgs['pass'];
247
 
 
248
 
  srcW.Debug.log("groupchat room: "+jid+", nick: "+nick + ", pass: "+pass ,2);
249
 
  
250
 
        // send presence
251
 
        var aPresence = new JSJaCPresence();
252
 
        aPresence.setTo(group+'/'+nick);
253
 
 
254
 
        var x = aPresence.getDoc().createElement('x');
255
 
        x.setAttribute('xmlns','http://jabber.org/protocol/muc');
256
 
        if (typeof(pass) != 'undefined' && pass != '')
257
 
                x.appendChild(aPresence.getDoc().createElement('password')).appendChild(aPresence.getDoc().createTextNode(pass));
258
 
 
259
 
        aPresence.getNode().appendChild(x);
260
 
 
261
 
        if (srcW.onlstat != 'available' && srcW.onlstat != 'invisible')
262
 
                aPresence.setShow(srcW.onlstat);
263
 
 
264
 
        if (srcW.onlmsg != '')
265
 
                aPresence.setStatus(srcW.onlmsg);
266
 
 
267
 
        srcW.Debug.log("sending muc presence:\n"+aPresence.getDoc().xml,3);
268
 
 
269
 
        srcW.con.send(aPresence);
270
 
  
271
 
  cFrame = frames.groupchatChat.groupchatIChat.document;
272
 
 
273
 
  user = srcW.roster.getUserByJID(group);
274
 
  if(!user) {
275
 
    user = srcW.roster.addUser(new RosterUser(group,'',["Chat Rooms"],group.substring(0,group.indexOf('@'))));
276
 
    user.chatW = window.self;
277
 
  }
278
 
  user.status = 'available';
279
 
  srcW.roster.print();
280
 
  
281
 
  user.roster = new GroupchatRoster(window.self);
282
 
  user.roster.nick = nick; // remember my nickname
283
 
  roster = user.roster;
284
 
  //        user.roster.print();
285
 
  
286
 
        //  document.title += " - " + group;
287
 
  document.title = group+'/'+nick;
288
 
 
289
 
  popMsgs();
290
 
  displayTimestamp();
291
 
}
292
 
 
293
 
function keyPressed(e) {
294
 
  if (e.keyCode == 27)
295
 
    window.close();
296
 
}
297
 
 
298
 
function updateStyleIE() {
299
 
  if (user)
300
 
    user.roster.updateStyleIE();
301
 
}
302
 
 
303
 
onkeydown = keyPressed;
304
 
onload = init;
305
 
onunload = part;
306
 
onresize = updateStyleIE;
307
 
//-->
308
 
    </script>
309
 
 
310
 
    <script for="document" event="onkeydown()" language="JScript">
311
 
      <!--
312
 
      if (window.event.keyCode == 27)
313
 
      window.close();
314
 
      //-->
315
 
    </script>
316
 
  </head>
317
 
 
318
 
                <frameset cols="75%,*" frameborder=2 framespacing=2 border=2 bordercolor=black>
319
 
                        <frameset rows="40,*,90" frameborder=2 framespacing=2 border=2 bordercolor=black>
320
 
                                <frame src="groupchat_top.html" name="groupchatTop" scrolling="no" />
321
 
                                <frame src="groupchat_chat.html" name="groupchatChat" scrolling="no" />
322
 
                                <frame src="groupchat_bottom.html" name="groupchatBottom" scrolling="no" />
323
 
      </frameset>
324
 
      <frame src="groupchat_roster.html" name="groupchatRoster" scrolling="no" />
325
 
    </frameset>
326
 
</html>