~ubuntu-branches/ubuntu/lucid/jwchat/lucid

« back to all changes in this revision

Viewing changes to groupchat_modifylist.html.sr

  • 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 - Modify</title>
5
 
    <script src="switchStyle.js"></script>
6
 
    <script src="shared.js"></script>
7
 
    <script src="xmlextras.js"></script>
8
 
    <script src="JSJaCPacket.js"></script>
9
 
                <script>
10
 
var deltaItems = new Array(); // contains table rows
11
 
 
12
 
function add2deltaItems(row,state) {
13
 
        var item = new Object();
14
 
        if (row.childNodes.item(0).innerHTML == '' && row.childNodes.item(1).innerHTML == '') // neither nick nor jid supplied
15
 
                return;
16
 
        if (row.childNodes.item(0).innerHTML != '')
17
 
                item.nick = row.childNodes.item(0).innerHTML;
18
 
        if (row.childNodes.item(1).innerHTML != '')
19
 
                item.jid = row.childNodes.item(1).innerHTML;
20
 
        if (row.childNodes.item(2).innerHTML != '')
21
 
                item.reason = row.childNodes.item(2).innerHTML;
22
 
        
23
 
        if (queryType == 'role_based')
24
 
                item.state = "role="+state;
25
 
        else
26
 
                item.state = "affiliation="+state;
27
 
        
28
 
        deltaItems[deltaItems.length] = item;
29
 
}
30
 
 
31
 
function deltaAddItem(row,state) {
32
 
        var statExp = /(.+)=(.+)/;
33
 
        statExp.exec(state);
34
 
        add2deltaItems(row,RegExp.$2);
35
 
}
36
 
 
37
 
function deltaDelItem(row) {
38
 
        add2deltaItems(row,'none');
39
 
}
40
 
 
41
 
function handleIQSetList(iq) {
42
 
        // check for errors
43
 
 
44
 
        if (iq && iq.getType() == 'result') { // sucess
45
 
                srcW.Debug.log(iq.getDoc().xml,2);
46
 
                window.close();
47
 
                return true;
48
 
        }
49
 
 
50
 
        var html = '';
51
 
        if (iq && iq.getType() == 'error') {
52
 
                srcW.Debug.log(iq.getDoc().xml,1);
53
 
                for (var i=0; i<iq.getNode().getElementsByTagName('item').length; i++) {
54
 
                        var item = iq.getNode().getElementsByTagName('item').item(i);
55
 
                        if (item.getAttribute('jid'))
56
 
                                html += "Item: "+item.getAttribute('jid')+"<br>";
57
 
                        else if (item.getAttribute('nick'))
58
 
                                html += "Nick: "+item.getAttribute('nick')+"<br>";
59
 
                }
60
 
                for (var j=0; j<iq.getNode().getElementsByTagName('error').length; j++)
61
 
                        var error = iq.getNode().getElementsByTagName('error').item(j);
62
 
                html += "Error" + " " + error.getAttribute('code');
63
 
                if (error.getElementsByTagName('text').item(0))
64
 
                        html += ": " + error.getElementsByTagName('text').item(0).firstChild.nodeValue;
65
 
        }       
66
 
        
67
 
        document.getElementById('hint').innerHTML = '';
68
 
        document.getElementById('hint').innerHTML = html;
69
 
        
70
 
        deltaItems = new Array();
71
 
        
72
 
        updateListFrame(modItems);
73
 
}
74
 
 
75
 
function doSub() {
76
 
        var iq = new JSJaCIQ();
77
 
        iq.setType('set');
78
 
        iq.setTo(opener.parent.jid);
79
 
        var query = iq.setQuery(args[1]);
80
 
        
81
 
        for (var i in deltaItems) {
82
 
                var item = query.appendChild(iq.getDoc().createElement('item'));
83
 
                item.setAttribute(deltaItems[i].state.split('=')[0],deltaItems[i].state.split('=')[1]);
84
 
                if (deltaItems[i].nick)
85
 
                        item.setAttribute('nick',deltaItems[i].nick);
86
 
                if (deltaItems[i].jid)
87
 
                        item.setAttribute('jid',deltaItems[i].jid);
88
 
                if (deltaItems[i].reason)
89
 
                        item.appendChild(iq.getDoc().createElement('reason')).appendChild(iq.getDoc().createTextNode(deltaItems[i].reason));
90
 
        }
91
 
 
92
 
        srcW.Debug.log(iq.getDoc().xml,2);
93
 
        srcW.con.send(iq,me.handleIQSetList);
94
 
        
95
 
        return false;
96
 
}
97
 
 
98
 
function deleteItem() {
99
 
        if (!modifylistF.selectedRow) {
100
 
                alert("Nothing selected");
101
 
                return;
102
 
        }
103
 
        
104
 
        deltaDelItem(modifylistF.selectedRow);
105
 
        
106
 
        var modTableBody = modifylistF.document.getElementById('modTable').getElementsByTagName("TBODY").item(0);
107
 
        modTableBody.removeChild(modifylistF.selectedRow);
108
 
        
109
 
        // reset form
110
 
        modifylistF.selectedRow = null;
111
 
        document.getElementById('delete_button').disabled = true;
112
 
        return false;
113
 
}
114
 
 
115
 
function addItem() {
116
 
        var row = modifylistF.document.createElement("TR");
117
 
        
118
 
        var cell = modifylistF.document.createElement("TD");
119
 
        var textN = modifylistF.document.createTextNode(document.forms['add_item'].nick.value);
120
 
        cell.appendChild(textN);
121
 
        row.appendChild(cell);
122
 
        
123
 
        cell = modifylistF.document.createElement("TD");
124
 
        textN = modifylistF.document.createTextNode(document.forms['add_item'].jid.value);
125
 
        cell.appendChild(textN);
126
 
        row.appendChild(cell);
127
 
        
128
 
        cell = modifylistF.document.createElement("TD");
129
 
        textN = modifylistF.document.createTextNode(document.forms['add_item'].reason.value);
130
 
        cell.appendChild(textN);
131
 
        row.appendChild(cell);
132
 
        
133
 
        deltaAddItem(row,args[0]);
134
 
        
135
 
        modifylistF.document.getElementById('modTable').getElementsByTagName('TBODY').item(0).appendChild(row);
136
 
        
137
 
        // tell frame about it
138
 
        modifylistF.init();
139
 
        
140
 
        // clear form
141
 
        document.forms['add_item'].reset();
142
 
        document.getElementById('add_button').disabled = true;
143
 
        return false;
144
 
}
145
 
 
146
 
function activateAddButton() {
147
 
        document.getElementById('add_button').disabled = false;
148
 
}
149
 
 
150
 
function updateListFrame(modItems) {
151
 
        // clear frame
152
 
        modifylistF.document.body.innerHTML = '';
153
 
        
154
 
        var myTable = modifylistF.document.createElement("TABLE");
155
 
        
156
 
        var myTableHead = modifylistF.document.createElement("THEAD");
157
 
        var myTableBody = modifylistF.document.createElement("TBODY");
158
 
        
159
 
        var row = modifylistF.document.createElement("TR");
160
 
        var header = new Array("Nick","JID","Reason");
161
 
        var cell; 
162
 
        for (var i in header) {
163
 
                cell = modifylistF.document.createElement("TH");
164
 
                cell.appendChild(modifylistF.document.createTextNode(header[i]));
165
 
                row.appendChild(cell);
166
 
        }
167
 
        myTableHead.appendChild(row);
168
 
        myTable.appendChild(myTableHead);
169
 
        
170
 
        for (var i=0; i<modItems.length; i++) {
171
 
                var item = modItems.item(i);
172
 
                row = modifylistF.document.createElement("TR");
173
 
                        
174
 
                cell = modifylistF.document.createElement("TD");
175
 
                textN = modifylistF.document.createTextNode((typeof(item.getAttribute('nick')) != 'undefined')?item.getAttribute('nick'):'');
176
 
                cell.appendChild(textN);
177
 
                row.appendChild(cell);
178
 
                
179
 
                cell = modifylistF.document.createElement("TD");
180
 
                textN = modifylistF.document.createTextNode((typeof(item.getAttribute('jid')) != 'undefined')?item.getAttribute('jid'):'');
181
 
                cell.appendChild(textN);
182
 
                row.appendChild(cell);
183
 
                        
184
 
                cell = modifylistF.document.createElement("TD");
185
 
                textN = modifylistF.document.createTextNode((item.firstChild && item.firstChild.nodeName == 'reason' && item.firstChild.firstChild)?item.firstChild.firstChild.nodeValue:'');
186
 
                cell.appendChild(textN);
187
 
                row.appendChild(cell);
188
 
                
189
 
                myTableBody.appendChild(row);
190
 
        }
191
 
        
192
 
        myTable.appendChild(myTableBody);
193
 
        
194
 
        myTable.setAttribute("id","modTable");
195
 
        myTable.setAttribute("WIDTH","100%");
196
 
        myTable.setAttribute("BORDER","0");
197
 
        myTable.setAttribute("CELLSPACING","0");
198
 
        myTable.setAttribute("CELLPADDING","0");
199
 
        myTable.setAttribute("RULES","rows");
200
 
        
201
 
        // add table
202
 
        modifylistF.document.body.appendChild(myTable);
203
 
        
204
 
        // tell frame about it
205
 
        modifylistF.init();
206
 
}
207
 
 
208
 
var modItems;
209
 
function handleIQGetList(iq) {
210
 
        if (!iq || iq.getType() == 'error') {
211
 
                document.getElementById('hint').innerHTML = "An Error has occured";
212
 
                if (iq)
213
 
                        srcW.Debug.log(iq.getDoc().xml,1);
214
 
                return;
215
 
        }
216
 
 
217
 
        srcW.Debug.log(iq.getDoc().xml,2);
218
 
        
219
 
        if (!iq.getQuery().childNodes.length) {
220
 
                document.getElementById('hint').innerHTML = "No items found";
221
 
        }
222
 
        
223
 
        modItems = iq.getQuery().getElementsByTagName('item');
224
 
        
225
 
        updateListFrame(modItems);
226
 
        
227
 
}
228
 
 
229
 
var srcW;
230
 
var queryType;
231
 
function init() {
232
 
        srcW = opener.parent.top.srcW;
233
 
        
234
 
        // get args
235
 
        search = self.location.href;
236
 
        search = search.split('?');
237
 
        
238
 
        if(search.length>1){
239
 
                args = search[1];
240
 
                args = args.split('&');
241
 
                args[2] = unescape(args[2]);
242
 
        } else
243
 
                return;
244
 
        
245
 
        if (args[0].indexOf("role") != 0 && args[0].indexOf("affiliation") != 0)
246
 
                return; // it's your fault
247
 
        
248
 
        
249
 
        if (args[0].indexOf("role") == 0)
250
 
                queryType = 'role_based';
251
 
        else
252
 
                queryType = 'affiliation_based';
253
 
        
254
 
        roster = srcW.roster;
255
 
 
256
 
        var iq = new JSJaCIQ();
257
 
        iq.setType('get');
258
 
        iq.setTo(opener.parent.jid);
259
 
        var query = iq.setQuery(args[1]);
260
 
        query.appendChild(iq.getDoc().createElement('item')).setAttribute(args[0].split('=')[0],args[0].split('=')[1]);
261
 
        srcW.Debug.log(iq.getDoc().xml,2);
262
 
        me = this;
263
 
        srcW.con.send(iq,me.handleIQGetList);
264
 
        
265
 
        document.getElementById('title').innerHTML = "Modify "+args[2];
266
 
        document.title += " " + args[2];
267
 
        
268
 
        // reset selector
269
 
        opener.document.getElementById('list_selector').selectedIndex = 0;
270
 
        
271
 
        // disable buttons on start
272
 
        document.getElementById('add_button').disabled = true;
273
 
        document.getElementById('delete_button').disabled = true;
274
 
}
275
 
onload = init;
276
 
function keyPressed(e) {
277
 
        if (e.keyCode == 13)
278
 
                return doSub();
279
 
        if (e.keyCode == 27)
280
 
                window.close();
281
 
        return true;
282
 
}
283
 
 
284
 
onload = init;
285
 
onkeydown = keyPressed;
286
 
    </script>
287
 
    <script for="document" event="onkeydown()" language="JScript">
288
 
      <!--
289
 
      return keyPressed(window.event);
290
 
      //-->
291
 
    </script>
292
 
                <style type="text/css">
293
 
                        h1 { font-size: 1.5em; }
294
 
                        th { font-size: 0.8em; text-align: right; }
295
 
                </style>
296
 
  </head>
297
 
  <body style="margin:8px;">
298
 
                <table width="100%" height="100%">
299
 
                <tr><td><h1 id="title">&nbsp;</h1></td></tr>
300
 
                <tr><td><span id="hint">&nbsp;</span></td></tr>
301
 
                <tr><td width="100%" height="100%"><iframe src="groupchat_modifylist_iframe.html" id="modifylistF" name="modifylistF" scrolling="auto" style="width: 100%; height: 100%"></iframe></td></tr>
302
 
                <tr><td><form name="add_item">
303
 
                <table>
304
 
                <tr><th>Nick</th><td><input type="text" name="nick" onkeydown="activateAddButton();"></td></tr>
305
 
                <tr><th>JID</th><td><input type="text" name="jid" style="width: 100%;" onkeydown="activateAddButton();"></td></tr>
306
 
                <tr><th>Reason</th><td><input type="text" name="reason" style="width: 100%;" onkeydown="activateAddButton();"></td></tr>
307
 
                </table></form>
308
 
                </td></tr>
309
 
                <tr><td><hr noshade size=1></td></tr>
310
 
                <tr><td align="right">
311
 
                <button id="add_button" onClick="return addItem();">Add</button>&nbsp;<button id="delete_button" onClick="return deleteItem();">Delete</button>&nbsp;<button type="submit" id="save_button" onClick="return doSub();">Save</button>
312
 
                </td>
313
 
                </tr>
314
 
                </table>
315
 
  </body>
316
 
</html>