1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4
<title>JWChat - Modifier</title>
5
<script src="switchStyle.js"></script>
6
<script src="shared.js"></script>
7
<script src="jsjac.js"></script>
9
var deltaItems = new Array(); // contains table rows
11
function add2deltaItems(row,state) {
12
var item = new Object();
13
if (row.childNodes.item(0).innerHTML == '' && row.childNodes.item(1).innerHTML == '') // neither nick nor jid supplied
15
if (row.childNodes.item(0).innerHTML != '')
16
item.nick = row.childNodes.item(0).innerHTML;
17
if (row.childNodes.item(1).innerHTML != '')
18
item.jid = row.childNodes.item(1).innerHTML;
19
if (row.childNodes.item(2).innerHTML != '')
20
item.reason = row.childNodes.item(2).innerHTML;
22
if (queryType == 'role_based')
23
item.state = "role="+state;
25
item.state = "affiliation="+state;
27
deltaItems[deltaItems.length] = item;
30
function deltaAddItem(row,state) {
31
var statExp = /(.+)=(.+)/;
33
add2deltaItems(row,RegExp.$2);
36
function deltaDelItem(row) {
37
add2deltaItems(row,'none');
40
function handleIQSetList(iq) {
43
if (iq && iq.getType() == 'result') { // sucess
44
srcW.Debug.log(iq.getDoc().xml,2);
50
if (iq && iq.getType() == 'error') {
51
srcW.Debug.log(iq.getDoc().xml,1);
52
for (var i=0; i<iq.getNode().getElementsByTagName('item').length; i++) {
53
var item = iq.getNode().getElementsByTagName('item').item(i);
54
if (item.getAttribute('jid'))
55
html += "Item: "+item.getAttribute('jid')+"<br>";
56
else if (item.getAttribute('nick'))
57
html += "Nick: "+item.getAttribute('nick')+"<br>";
59
for (var j=0; j<iq.getNode().getElementsByTagName('error').length; j++)
60
var error = iq.getNode().getElementsByTagName('error').item(j);
61
html += "Erreur" + " " + error.getAttribute('code');
62
if (error.getElementsByTagName('text').item(0))
63
html += ": " + error.getElementsByTagName('text').item(0).firstChild.nodeValue;
66
document.getElementById('hint').innerHTML = '';
67
document.getElementById('hint').innerHTML = html;
69
deltaItems = new Array();
71
updateListFrame(modItems);
75
var iq = new JSJaCIQ();
77
iq.setTo(opener.parent.jid);
78
var query = iq.setQuery(args[1]);
80
for (var i=0; i<deltaItems.length; i++) {
81
var item = query.appendChild(iq.getDoc().createElement('item'));
82
item.setAttribute(deltaItems[i].state.split('=')[0],deltaItems[i].state.split('=')[1]);
83
if (deltaItems[i].nick)
84
item.setAttribute('nick',deltaItems[i].nick);
85
if (deltaItems[i].jid)
86
item.setAttribute('jid',deltaItems[i].jid);
87
if (deltaItems[i].reason)
88
item.appendChild(iq.getDoc().createElement('reason')).appendChild(iq.getDoc().createTextNode(deltaItems[i].reason));
91
srcW.Debug.log(iq.getDoc().xml,2);
92
srcW.con.send(iq,me.handleIQSetList);
97
function deleteItem() {
98
if (!modifylistF.selectedRow) {
99
alert("Nothing selected");
103
deltaDelItem(modifylistF.selectedRow);
105
var modTableBody = modifylistF.document.getElementById('modTable').getElementsByTagName("TBODY").item(0);
106
modTableBody.removeChild(modifylistF.selectedRow);
109
modifylistF.selectedRow = null;
110
document.getElementById('delete_button').disabled = true;
115
var row = modifylistF.document.createElement("TR");
117
var cell = modifylistF.document.createElement("TD");
118
var textN = modifylistF.document.createTextNode(document.forms['add_item'].nick.value);
119
cell.appendChild(textN);
120
row.appendChild(cell);
122
cell = modifylistF.document.createElement("TD");
123
textN = modifylistF.document.createTextNode(document.forms['add_item'].jid.value);
124
cell.appendChild(textN);
125
row.appendChild(cell);
127
cell = modifylistF.document.createElement("TD");
128
textN = modifylistF.document.createTextNode(document.forms['add_item'].reason.value);
129
cell.appendChild(textN);
130
row.appendChild(cell);
132
deltaAddItem(row,args[0]);
134
modifylistF.document.getElementById('modTable').getElementsByTagName('TBODY').item(0).appendChild(row);
136
// tell frame about it
140
document.forms['add_item'].reset();
141
document.getElementById('add_button').disabled = true;
145
function activateAddButton() {
146
document.getElementById('add_button').disabled = false;
149
function updateListFrame(modItems) {
151
modifylistF.document.body.innerHTML = '';
153
var myTable = modifylistF.document.createElement("TABLE");
155
var myTableHead = modifylistF.document.createElement("THEAD");
156
var myTableBody = modifylistF.document.createElement("TBODY");
158
var row = modifylistF.document.createElement("TR");
159
var header = new Array("Pseudo","JID","Raison");
161
for (var i=0; i<header.length; i++) {
162
cell = modifylistF.document.createElement("TH");
163
cell.appendChild(modifylistF.document.createTextNode(header[i]));
164
row.appendChild(cell);
166
myTableHead.appendChild(row);
167
myTable.appendChild(myTableHead);
169
for (var i=0; i<modItems.length; i++) {
170
var item = modItems.item(i);
171
row = modifylistF.document.createElement("TR");
173
cell = modifylistF.document.createElement("TD");
174
textN = modifylistF.document.createTextNode((typeof(item.getAttribute('nick')) != 'undefined')?item.getAttribute('nick'):'');
175
cell.appendChild(textN);
176
row.appendChild(cell);
178
cell = modifylistF.document.createElement("TD");
179
textN = modifylistF.document.createTextNode((typeof(item.getAttribute('jid')) != 'undefined')?item.getAttribute('jid'):'');
180
cell.appendChild(textN);
181
row.appendChild(cell);
183
cell = modifylistF.document.createElement("TD");
184
textN = modifylistF.document.createTextNode((item.firstChild && item.firstChild.nodeName == 'reason' && item.firstChild.firstChild)?item.firstChild.firstChild.nodeValue:'');
185
cell.appendChild(textN);
186
row.appendChild(cell);
188
myTableBody.appendChild(row);
191
myTable.appendChild(myTableBody);
193
myTable.setAttribute("id","modTable");
194
myTable.setAttribute("WIDTH","100%");
195
myTable.setAttribute("BORDER","0");
196
myTable.setAttribute("CELLSPACING","0");
197
myTable.setAttribute("CELLPADDING","0");
198
myTable.setAttribute("RULES","rows");
201
modifylistF.document.body.appendChild(myTable);
203
// tell frame about it
208
function handleIQGetList(iq) {
209
if (!iq || iq.getType() == 'error') {
210
document.getElementById('hint').innerHTML = "Erreur détectée";
212
srcW.Debug.log(iq.getDoc().xml,1);
216
srcW.Debug.log(iq.getDoc().xml,2);
218
if (!iq.getQuery().childNodes.length) {
219
document.getElementById('hint').innerHTML = "Aucun résultat";
222
modItems = iq.getQuery().getElementsByTagName('item');
224
updateListFrame(modItems);
231
srcW = opener.parent.top.srcW;
234
search = self.location.href;
235
search = search.split('?');
239
args = args.split('&');
240
args[2] = unescape(args[2]);
244
if (args[0].indexOf("role") != 0 && args[0].indexOf("affiliation") != 0)
245
return; // it's your fault
248
if (args[0].indexOf("role") == 0)
249
queryType = 'role_based';
251
queryType = 'affiliation_based';
253
roster = srcW.roster;
255
var iq = new JSJaCIQ();
257
iq.setTo(opener.parent.jid);
258
var query = iq.setQuery(args[1]);
259
query.appendChild(iq.getDoc().createElement('item')).setAttribute(args[0].split('=')[0],args[0].split('=')[1]);
260
srcW.Debug.log(iq.getDoc().xml,2);
262
srcW.con.send(iq,me.handleIQGetList);
264
document.getElementById('title').innerHTML = "Modifier "+args[2];
265
document.title += " " + args[2];
268
opener.document.getElementById('list_selector').selectedIndex = 0;
270
// disable buttons on start
271
document.getElementById('add_button').disabled = true;
272
document.getElementById('delete_button').disabled = true;
275
function keyPressed(e) {
284
onkeydown = keyPressed;
286
<script for="document" event="onkeydown()" language="JScript">
288
return keyPressed(window.event);
291
<style type="text/css">
292
h1 { font-size: 1.5em; }
293
th { font-size: 0.8em; text-align: right; }
296
<body style="margin:8px;">
297
<table width="100%" height="100%">
298
<tr><td><h1 id="title"> </h1></td></tr>
299
<tr><td><span id="hint"> </span></td></tr>
300
<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>
301
<tr><td><form name="add_item">
303
<tr><th>Nick</th><td><input type="text" name="nick" onkeydown="activateAddButton();"></td></tr>
304
<tr><th>JID</th><td><input type="text" name="jid" style="width: 100%;" onkeydown="activateAddButton();"></td></tr>
305
<tr><th>Reason</th><td><input type="text" name="reason" style="width: 100%;" onkeydown="activateAddButton();"></td></tr>
308
<tr><td><hr noshade size=1></td></tr>
309
<tr><td align="right">
310
<button id="add_button" onClick="return addItem();">Ajouter</button> <button id="delete_button" onClick="return deleteItem();">Supprimer</button> <button type="submit" id="save_button" onClick="return doSub();">Sauve</button>