webmaster@0
|
1 var arLIMenu = new Array(); |
webmaster@0
|
2 var curBPShown = 0; |
webmaster@0
|
3 var wEdit, wBr, dp; |
webmaster@0
|
4 |
webmaster@0
|
5 var xmlRequest = { |
webmaster@0
|
6 init: function() { |
webmaster@0
|
7 try { |
webmaster@0
|
8 xmlRequest.obj = new XMLHttpRequest(); |
webmaster@0
|
9 } catch(e) { |
webmaster@0
|
10 xmlRequest.obj = new ActiveXObject("Msxml2.XMLHTTP"); |
webmaster@0
|
11 } |
webmaster@0
|
12 }, |
webmaster@0
|
13 |
webmaster@0
|
14 get: function(url) { |
webmaster@0
|
15 xmlRequest.obj.open("GET", url, false); |
webmaster@0
|
16 xmlRequest.obj.send(null); |
webmaster@0
|
17 |
webmaster@0
|
18 return xmlRequest.obj.responseXML; |
webmaster@0
|
19 }, |
webmaster@0
|
20 |
webmaster@0
|
21 send: function(url, data) { |
webmaster@0
|
22 try { |
webmaster@0
|
23 xmlRequest.obj.open("POST", url, false); |
webmaster@0
|
24 xmlRequest.obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') |
webmaster@0
|
25 xmlRequest.obj.send(data); |
webmaster@0
|
26 return true; |
webmaster@0
|
27 } catch(e) { |
webmaster@0
|
28 return false; |
webmaster@0
|
29 } |
webmaster@0
|
30 } |
webmaster@0
|
31 |
webmaster@0
|
32 }; |
webmaster@0
|
33 |
webmaster@0
|
34 var t = { |
webmaster@0
|
35 evtListener:function(elt, evt, func, useCpt) { |
webmaster@0
|
36 if(elt.addEventListener) |
webmaster@0
|
37 elt.addEventListener(evt, func, useCpt); |
webmaster@0
|
38 else if(elt.attachEvent) |
webmaster@0
|
39 elt.attachEvent("on" + evt, func); |
webmaster@0
|
40 else |
webmaster@0
|
41 elt["on" + evt] = func; |
webmaster@0
|
42 } |
webmaster@0
|
43 } |
webmaster@0
|
44 |
webmaster@0
|
45 t.evtListener(window, "load", xmlRequest.init, false); |
webmaster@0
|
46 t.evtListener(window, "load", hideForms, false); |
webmaster@0
|
47 |
webmaster@0
|
48 var editFilter = { |
webmaster@0
|
49 acceptNode: function(node) { |
webmaster@0
|
50 if(node.nodeName == 'a' && node.firstChild && node.firstChild.nodeValue == 'Editer') return NodeFilter.FILTER_ACCEPT; |
webmaster@0
|
51 return NodeFilter.FILTER_SKIP; |
webmaster@0
|
52 } |
webmaster@0
|
53 } |
webmaster@0
|
54 |
webmaster@0
|
55 var brouillonsFilter = { |
webmaster@0
|
56 acceptNode:function(node) { |
webmaster@0
|
57 if(node.nodeName == 'a' && node.firstChild && ( |
webmaster@0
|
58 node.firstChild.nodeValue == 'Editer' || |
webmaster@0
|
59 node.firstChild.nodeValue == 'Publier' || |
webmaster@0
|
60 node.firstChild.nodeValue == 'Supprimer')) |
webmaster@0
|
61 return NodeFilter.FILTER_ACCEPT; |
webmaster@0
|
62 return NodeFilter.FILTER_SKIP; |
webmaster@0
|
63 } |
webmaster@0
|
64 } |
webmaster@0
|
65 |
webmaster@0
|
66 |
webmaster@0
|
67 |
webmaster@0
|
68 window.onload=function() { |
webmaster@0
|
69 var ar=document.getElementsByTagName('li'); |
webmaster@0
|
70 for(var i=0; i<ar.length; i++) { |
webmaster@0
|
71 if(ar[i].parentNode.id=='Menu') { |
webmaster@0
|
72 arLIMenu[arLIMenu.length]=ar[i]; |
webmaster@0
|
73 if(ar[i].firstChild.id=='Brouillons') { |
webmaster@0
|
74 ar[i].className="Actif"; |
webmaster@0
|
75 document.getElementById('Gest' + ar[i].firstChild.id).style.display='block'; |
webmaster@0
|
76 } |
webmaster@0
|
77 t.evtListener(ar[i], 'click', switchSection, true); |
webmaster@0
|
78 } |
webmaster@0
|
79 if(ar[i].className=='Add') |
webmaster@0
|
80 t.evtListener(ar[i].firstChild, 'click', showAddForm, true); |
webmaster@0
|
81 } |
webmaster@0
|
82 |
webmaster@0
|
83 try { dp = new DOMParser();} |
webmaster@0
|
84 catch(e) {dp = new ActiveXObject("Microsoft.XMLDOM");} |
webmaster@0
|
85 t.evtListener(document.getElementById("editPost").Save, "click", saveFormContent, false); |
webmaster@0
|
86 // TreeWalkers in all their glory |
webmaster@0
|
87 try { |
webmaster@0
|
88 wEdit = document.createTreeWalker(document.getElementById("GestPosts"), NodeFilter.SHOW_ALL, editFilter, true); |
webmaster@0
|
89 while(wEdit.nextNode()) { |
webmaster@0
|
90 t.evtListener(wEdit.currentNode, "click", editPubl, false); |
webmaster@0
|
91 } |
webmaster@0
|
92 |
webmaster@0
|
93 wBr = document.createTreeWalker(document.getElementById("GestBrouillons"), NodeFilter.SHOW_ALL, brouillonsFilter, true); |
webmaster@0
|
94 while(wBr.nextNode()) { |
webmaster@0
|
95 if(wBr.currentNode.firstChild.nodeValue == 'Editer') t.evtListener(wBr.currentNode,"click", editBrouillon, false); |
webmaster@0
|
96 else if(wBr.currentNode.firstChild.nodeValue == 'Publier') t.evtListener(wBr.currentNode, "click", pubBrouillon, false); |
webmaster@0
|
97 } |
webmaster@0
|
98 } catch(e) { |
webmaster@0
|
99 //Well, right now, we're sort of screwed... |
webmaster@0
|
100 } |
webmaster@0
|
101 } |
webmaster@0
|
102 |
webmaster@0
|
103 function switchSection(e) { |
webmaster@0
|
104 var targetAc = bpEvt(e, 'li').rTarget; |
webmaster@0
|
105 for(i=0; i<arLIMenu.length; i++) { |
webmaster@0
|
106 tmpObj=document.getElementById('Gest' + arLIMenu[i].firstChild.id); |
webmaster@0
|
107 if(arLIMenu[i]==targetAc) { |
webmaster@0
|
108 arLIMenu[i].className='Actif'; |
webmaster@0
|
109 tmpObj.style.display='block'; |
webmaster@0
|
110 } else { |
webmaster@0
|
111 arLIMenu[i].className=''; |
webmaster@0
|
112 tmpObj.style.display='none'; |
webmaster@0
|
113 } |
webmaster@0
|
114 } |
webmaster@0
|
115 } |
webmaster@0
|
116 |
webmaster@0
|
117 |
webmaster@0
|
118 function pubBrouillon(e) { |
webmaster@0
|
119 var whichVersion = document.getElementById("whichVersion"); |
webmaster@0
|
120 var pubComment = document.getElementById("pubComment"); |
webmaster@0
|
121 var el = bpEvt(e).rTarget; |
webmaster@0
|
122 if(el != curBPShown) { |
webmaster@0
|
123 if(curBPShown != 0) curBPShown.parentNode.parentNode.className = ''; |
webmaster@0
|
124 curBPShown = el; |
webmaster@0
|
125 el.parentNode.parentNode.className = 'Pinned'; |
webmaster@0
|
126 var pos = el.href.indexOf("#"); |
webmaster@0
|
127 whichVersion.pubButton.disabled = true; |
webmaster@0
|
128 pubComment.textContent = "Vérification en cours de la validité XML du post"; |
webmaster@0
|
129 whichVersion.id.value = el.href.substring(pos + 4, el.href.length); |
webmaster@0
|
130 el.parentNode.appendChild(whichVersion); |
webmaster@0
|
131 whichVersion.style.display='block'; |
webmaster@0
|
132 el.pubIsShown = true; |
webmaster@0
|
133 var data = xmlRequest.get("admin_xml.php?type=brouillon&id=" + whichVersion.id.value); |
webmaster@0
|
134 var doc = dp.parseFromString("<post>" + data.getElementsByTagName("contenu")[0].firstChild.data + "</post>", "text/xml"); |
webmaster@0
|
135 var parserErrors = doc.getElementsByTagName('parsererror'); |
webmaster@0
|
136 if(parserErrors.length > 0) { |
webmaster@0
|
137 pubComment.textContent = ""; |
webmaster@0
|
138 pubComment.appendChild(doc.firstChild); |
webmaster@0
|
139 } |
webmaster@0
|
140 else { |
webmaster@0
|
141 pubComment.textContent = "Le post est fait de XML valide, bon pour être poster"; |
webmaster@0
|
142 whichVersion.pubButton.disabled = false; |
webmaster@0
|
143 } |
webmaster@0
|
144 } else { |
webmaster@0
|
145 curBPShown = 0; |
webmaster@0
|
146 el.parentNode.parentNode.className = ''; |
webmaster@0
|
147 hideForms(); |
webmaster@0
|
148 el.pubIsShown = false; |
webmaster@0
|
149 } |
webmaster@0
|
150 return false; |
webmaster@0
|
151 } |
webmaster@0
|
152 |
webmaster@0
|
153 function editBrouillon(e) { |
webmaster@0
|
154 edit(e, "brouillon"); |
webmaster@0
|
155 } |
webmaster@0
|
156 |
webmaster@0
|
157 function editPubl(e) { |
webmaster@0
|
158 edit(e, "post"); |
webmaster@0
|
159 } |
webmaster@0
|
160 |
webmaster@0
|
161 function edit(e, type) { |
webmaster@0
|
162 var editPost = document.getElementById("editPost"); |
webmaster@0
|
163 editPost.type = type; |
webmaster@0
|
164 var el = bpEvt(e).rTarget; |
webmaster@0
|
165 if(el.editPostIsShown !=1) { |
webmaster@0
|
166 var id = el.href.substring(el.href.indexOf("#") + 4, el.href.length); |
webmaster@0
|
167 var data = xmlRequest.get("admin_xml.php?type=" + type + "&id=" + id); |
webmaster@0
|
168 el.parentNode.appendChild(editPost); |
webmaster@0
|
169 el.editPostIsShown = 1; |
webmaster@0
|
170 editPost.style.display = 'block'; |
webmaster@0
|
171 editPost.Titre.value = data.getElementsByTagName('titre')[0].textContent; |
webmaster@0
|
172 editPost.Contenu.value = data.getElementsByTagName('contenu')[0].firstChild.data; |
webmaster@0
|
173 if(type == 'post') { |
webmaster@0
|
174 editPost.mood.style.display = ''; |
webmaster@0
|
175 editPost.mood.value = data.getElementsByTagName('mood')[0].textContent; |
webmaster@0
|
176 editPost.Tags.style.display = ''; |
webmaster@0
|
177 editPost.Tags.value = ''; |
webmaster@0
|
178 var tags = data.getElementsByTagName('tag'); |
webmaster@0
|
179 for(var i = 0; i < tags.length; i++) |
webmaster@0
|
180 { |
webmaster@0
|
181 if(tags[i].textContent.indexOf(' ') > -1) |
webmaster@0
|
182 { |
webmaster@0
|
183 editPost.Tags.value += '"' + tags[i].textContent + '"'; |
webmaster@0
|
184 } else { |
webmaster@0
|
185 editPost.Tags.value += tags[i].textContent; |
webmaster@0
|
186 } |
webmaster@0
|
187 editPost.Tags.value += ' '; |
webmaster@0
|
188 } |
webmaster@0
|
189 } else { |
webmaster@0
|
190 editPost.mood.style.display = 'none'; |
webmaster@0
|
191 editPost.Tags.style.display = 'none'; |
webmaster@0
|
192 } |
webmaster@0
|
193 |
webmaster@0
|
194 } else { |
webmaster@0
|
195 hideForms(); |
webmaster@0
|
196 el.editPostIsShown = 0; |
webmaster@0
|
197 } |
webmaster@0
|
198 } |
webmaster@0
|
199 |
webmaster@0
|
200 function showAddForm(e) { |
webmaster@0
|
201 var targetAc = bpEvt(e, "a").rTarget; |
webmaster@0
|
202 while(targetAc.nodeName.toLowerCase()!='form') targetAc=targetAc.nextSibling; // Permet d'avoir eventuellement des espaces |
webmaster@0
|
203 targetAc.style.display = (targetAc.style.display=='block')?'none':'block'; |
webmaster@0
|
204 } |
webmaster@0
|
205 |
webmaster@0
|
206 function saveFormContent(e) { |
webmaster@0
|
207 var el = e.target.form; // Should be the form... |
webmaster@0
|
208 var toggleLink = el.parentNode.firstChild; |
webmaster@0
|
209 var id=toggleLink.href.substring(toggleLink.href.indexOf("#") + 4, toggleLink.href.length); |
webmaster@0
|
210 if(xmlRequest.send('admin_xml.php?id=' + id + '&mode=edit&type=' + el.type, |
webmaster@0
|
211 'title=' + postValue(el.Titre.value) + |
webmaster@0
|
212 '&content=' + postValue(el.Contenu.value) + |
webmaster@0
|
213 '&mood=' + postValue(el.mood.value) + |
webmaster@0
|
214 '&tags=' + postValue(el.Tags.value))) |
webmaster@0
|
215 { |
webmaster@0
|
216 toggleLink.editPostIsShown = 0; |
webmaster@0
|
217 hideForms(); |
webmaster@0
|
218 } else { |
webmaster@0
|
219 el.submit(); |
webmaster@0
|
220 } |
webmaster@0
|
221 return true; |
webmaster@0
|
222 } |
webmaster@0
|
223 |
webmaster@0
|
224 function hideForms() { |
webmaster@0
|
225 document.getElementById('whichVersion').style.display='none'; |
webmaster@0
|
226 document.getElementById('editPost').style.display='none'; |
webmaster@0
|
227 } |
webmaster@0
|
228 |
webmaster@0
|
229 /* Bullet-Proofing of the event variable... Needed because of the huge mess out there */ |
webmaster@0
|
230 function bpEvt(eIni, tag) { |
webmaster@0
|
231 var e = (eIni)?eIni:window.event; |
webmaster@0
|
232 e.rTarget = (e.target)?e.target:e.srcElement; |
webmaster@0
|
233 if(tag != undefined) |
webmaster@0
|
234 while(e.rTarget.parentNode && e.rTarget.nodeName.toLowerCase() != tag) e.rTarget = e.rTarget.parentNode; |
webmaster@0
|
235 return e; |
webmaster@0
|
236 } |
webmaster@0
|
237 |
webmaster@0
|
238 function postValue(str) |
webmaster@0
|
239 { |
webmaster@0
|
240 str = str.replace(/&/g, "%26"); |
webmaster@0
|
241 str = str.replace(/\+/g, "%2B"); |
webmaster@0
|
242 return str; |
webmaster@0
|
243 } |