annotate admin.js @ 82:0a57d5321383

admin.php: Correction d'un short open tag
author Franck Deroche <franck@defr.org>
date Tue, 20 Nov 2018 00:59:57 +0100
parents 49b0a2f3a118
children
rev   line source
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@75 40 else if(elt["on" + evt])
webmaster@75 41 elt["on" + evt] = function() {elt["on" + evt](); func();}
webmaster@0 42 else
webmaster@0 43 elt["on" + evt] = func;
webmaster@75 44 },
webmaster@75 45 getTextContent: function(node) {
webmaster@75 46 if(node.textContent)
webmaster@75 47 return node.textContent;
webmaster@75 48 if(node.innerText)
webmaster@75 49 return node.innerText;
webmaster@75 50 // We tried hard to use something fast, it didn't work, so we'll recurse
webmaster@75 51 if(node.nodeType == 3 || node.nodeType == 4)
webmaster@75 52 return node.data;
webmaster@75 53 var textContent = '', i;
webmaster@75 54 for(i = 0; i < node.childNodes.length; i++)
webmaster@75 55 textContent += t.getTextContent(node.childNodes[i]);
webmaster@75 56 return textContent;
webmaster@75 57 },
webmaster@75 58 empty: function(node) {
webmaster@75 59 while(node.firstChild)
webmaster@75 60 node.removeChild(node.firstChild);
webmaster@0 61 }
webmaster@0 62 }
webmaster@0 63
webmaster@0 64 t.evtListener(window, "load", xmlRequest.init, false);
webmaster@0 65 t.evtListener(window, "load", hideForms, false);
webmaster@75 66 t.evtListener(window, "load", init, false);
webmaster@0 67
webmaster@0 68 var editFilter = {
webmaster@75 69 accept: function(node) {
webmaster@75 70 if(node.nodeName.toLowerCase() == 'a' &&
webmaster@75 71 node.firstChild &&
webmaster@75 72 node.firstChild.nodeValue == 'Editer')
webmaster@75 73 return true;
webmaster@75 74 return false;
webmaster@75 75 },
webmaster@75 76
webmaster@0 77 acceptNode: function(node) {
webmaster@75 78 return this.accept(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
webmaster@0 79 }
webmaster@0 80 }
webmaster@0 81
webmaster@0 82 var brouillonsFilter = {
webmaster@75 83 accept: function(node) {
webmaster@75 84 if(node.nodeName.toLowerCase() == 'a' && node.firstChild && (
webmaster@0 85 node.firstChild.nodeValue == 'Editer' ||
webmaster@0 86 node.firstChild.nodeValue == 'Publier' ||
webmaster@0 87 node.firstChild.nodeValue == 'Supprimer'))
webmaster@75 88 return true;
webmaster@75 89 return false;
webmaster@75 90 },
webmaster@75 91
webmaster@75 92 acceptNode: function(node) {
webmaster@75 93 return this.accept(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
webmaster@0 94 }
webmaster@0 95 }
webmaster@0 96
webmaster@0 97
webmaster@0 98
webmaster@75 99 function init() {
webmaster@0 100 var ar=document.getElementsByTagName('li');
webmaster@0 101 for(var i=0; i<ar.length; i++) {
webmaster@0 102 if(ar[i].parentNode.id=='Menu') {
webmaster@0 103 arLIMenu[arLIMenu.length]=ar[i];
webmaster@0 104 if(ar[i].firstChild.id=='Brouillons') {
webmaster@0 105 ar[i].className="Actif";
webmaster@0 106 document.getElementById('Gest' + ar[i].firstChild.id).style.display='block';
webmaster@0 107 }
webmaster@0 108 t.evtListener(ar[i], 'click', switchSection, true);
webmaster@0 109 }
webmaster@0 110 if(ar[i].className=='Add')
webmaster@0 111 t.evtListener(ar[i].firstChild, 'click', showAddForm, true);
webmaster@0 112 }
webmaster@0 113
webmaster@0 114 try { dp = new DOMParser();}
webmaster@75 115 catch(e) {
webmaster@75 116 dp = {
webmaster@75 117 obj: new ActiveXObject("Microsoft.XMLDOM"),
webmaster@75 118 parseFromString: function(text, type)
webmaster@75 119 {
webmaster@75 120 if(!this.obj.loadXML(text))
webmaster@75 121 {
webmaster@75 122 var error = this.obj.parseError.reason, errorNode;
webmaster@75 123 this.obj.loadXML('<error />');
webmaster@75 124 errorNode = this.obj.createElement('parsererror');
webmaster@75 125 errorNode.appendChild(this.obj.createTextNode(error));
webmaster@75 126 this.obj.documentElement.appendChild(errorNode);
webmaster@75 127 }
webmaster@75 128 return this.obj;
webmaster@75 129 }
webmaster@75 130 }
webmaster@75 131 }
webmaster@0 132 t.evtListener(document.getElementById("editPost").Save, "click", saveFormContent, false);
webmaster@0 133 // TreeWalkers in all their glory
webmaster@0 134 try {
webmaster@75 135 wEdit = document.createTreeWalker(document.getElementById("GestPosts"), NodeFilter.SHOW_ELEMENT, editFilter, true);
webmaster@0 136 while(wEdit.nextNode()) {
webmaster@0 137 t.evtListener(wEdit.currentNode, "click", editPubl, false);
webmaster@0 138 }
webmaster@0 139
webmaster@75 140 wBr = document.createTreeWalker(document.getElementById("GestBrouillons"), NodeFilter.SHOW_ELEMENT, brouillonsFilter, true);
webmaster@0 141 while(wBr.nextNode()) {
webmaster@0 142 if(wBr.currentNode.firstChild.nodeValue == 'Editer') t.evtListener(wBr.currentNode,"click", editBrouillon, false);
webmaster@0 143 else if(wBr.currentNode.firstChild.nodeValue == 'Publier') t.evtListener(wBr.currentNode, "click", pubBrouillon, false);
webmaster@0 144 }
webmaster@0 145 } catch(e) {
webmaster@29 146 var tmpLinks = document.getElementById("GestPosts")
webmaster@29 147 .getElementsByTagName("a");
webmaster@29 148 for(var i = 0; i < tmpLinks.length; i++) {
webmaster@75 149 if(editFilter.accept(tmpLinks[i])) {
webmaster@29 150 t.evtListener(tmpLinks[i], "click", editPubl, false)
webmaster@29 151 }
webmaster@29 152 }
webmaster@29 153
webmaster@29 154 tmpLinks = document.getElementById("GestBrouillons")
webmaster@29 155 .getElementsByTagName("a");
webmaster@29 156 for(var i = 0; i < tmpLinks.length; i++) {
webmaster@75 157 if(brouillonsFilter.accept(tmpLinks[i])) {
webmaster@75 158 if(tmpLinks[i].firstChild.nodeValue == 'Editer')
webmaster@75 159 t.evtListener(tmpLinks[i], "click", editBrouillon, false);
webmaster@75 160 else if(tmpLinks[i].firstChild.nodeValue == 'Publier')
webmaster@75 161 t.evtListener(tmpLinks[i], "click", pubBrouillon, false);
webmaster@29 162 }
webmaster@29 163 }
webmaster@0 164 }
webmaster@0 165 }
webmaster@0 166
webmaster@0 167 function switchSection(e) {
webmaster@0 168 var targetAc = bpEvt(e, 'li').rTarget;
webmaster@0 169 for(i=0; i<arLIMenu.length; i++) {
webmaster@0 170 tmpObj=document.getElementById('Gest' + arLIMenu[i].firstChild.id);
webmaster@0 171 if(arLIMenu[i]==targetAc) {
webmaster@0 172 arLIMenu[i].className='Actif';
webmaster@0 173 tmpObj.style.display='block';
webmaster@0 174 } else {
webmaster@0 175 arLIMenu[i].className='';
webmaster@0 176 tmpObj.style.display='none';
webmaster@0 177 }
webmaster@0 178 }
webmaster@0 179 }
webmaster@0 180
webmaster@0 181
webmaster@0 182 function pubBrouillon(e) {
webmaster@0 183 var whichVersion = document.getElementById("whichVersion");
webmaster@0 184 var pubComment = document.getElementById("pubComment");
webmaster@0 185 var el = bpEvt(e).rTarget;
webmaster@0 186 if(el != curBPShown) {
webmaster@0 187 if(curBPShown != 0) curBPShown.parentNode.parentNode.className = '';
webmaster@0 188 curBPShown = el;
webmaster@0 189 el.parentNode.parentNode.className = 'Pinned';
webmaster@0 190 var pos = el.href.indexOf("#");
webmaster@0 191 whichVersion.pubButton.disabled = true;
webmaster@0 192 pubComment.textContent = "Vérification en cours de la validité XML du post";
webmaster@0 193 whichVersion.id.value = el.href.substring(pos + 4, el.href.length);
webmaster@0 194 el.parentNode.appendChild(whichVersion);
webmaster@0 195 whichVersion.style.display='block';
webmaster@0 196 el.pubIsShown = true;
webmaster@0 197 var data = xmlRequest.get("admin_xml.php?type=brouillon&id=" + whichVersion.id.value);
webmaster@75 198 var doc = dp.parseFromString("<post>" + t.getTextContent(data.getElementsByTagName("contenu")[0]) + "</post>", "text/xml");
webmaster@75 199 t.empty(pubComment);
webmaster@75 200 if(doc.getElementsByTagName('parsererror').length > 0) {
webmaster@75 201 var textNode = document.createTextNode(t.getTextContent(doc.documentElement) + "\n");
webmaster@75 202 pubComment.appendChild(textNode);
webmaster@0 203 }
webmaster@0 204 else {
webmaster@75 205 var textNode = document.createTextNode("Le post est fait de XML valide, bon pour être poster");
webmaster@75 206 pubComment.appendChild(textNode);
webmaster@0 207 whichVersion.pubButton.disabled = false;
webmaster@0 208 }
webmaster@0 209 } else {
webmaster@0 210 curBPShown = 0;
webmaster@0 211 el.parentNode.parentNode.className = '';
webmaster@0 212 hideForms();
webmaster@0 213 el.pubIsShown = false;
webmaster@0 214 }
webmaster@0 215 return false;
webmaster@0 216 }
webmaster@0 217
webmaster@0 218 function editBrouillon(e) {
webmaster@0 219 edit(e, "brouillon");
webmaster@0 220 }
webmaster@0 221
webmaster@0 222 function editPubl(e) {
webmaster@0 223 edit(e, "post");
webmaster@0 224 }
webmaster@0 225
webmaster@0 226 function edit(e, type) {
webmaster@0 227 var editPost = document.getElementById("editPost");
webmaster@0 228 editPost.type = type;
webmaster@0 229 var el = bpEvt(e).rTarget;
webmaster@0 230 if(el.editPostIsShown !=1) {
webmaster@0 231 var id = el.href.substring(el.href.indexOf("#") + 4, el.href.length);
webmaster@0 232 var data = xmlRequest.get("admin_xml.php?type=" + type + "&id=" + id);
webmaster@0 233 el.parentNode.appendChild(editPost);
webmaster@0 234 el.editPostIsShown = 1;
webmaster@52 235 el.parentNode.parentNode.className = 'Pinned';
webmaster@0 236 editPost.style.display = 'block';
webmaster@75 237 editPost.Titre.value = t.getTextContent(data.getElementsByTagName('titre')[0]);
webmaster@75 238 editPost.Contenu.value = t.getTextContent(data.getElementsByTagName('contenu')[0]);
webmaster@0 239 if(type == 'post') {
webmaster@0 240 editPost.mood.style.display = '';
webmaster@75 241 editPost.mood.value = t.getTextContent(data.getElementsByTagName('mood')[0]);
webmaster@0 242 editPost.Tags.style.display = '';
webmaster@0 243 editPost.Tags.value = '';
webmaster@75 244 var tags = data.getElementsByTagName('tag'), tag;
webmaster@0 245 for(var i = 0; i < tags.length; i++)
webmaster@0 246 {
webmaster@75 247 tag = t.getTextContent(tags[i]);
webmaster@75 248 if(tag.indexOf(' ') > -1)
webmaster@0 249 {
webmaster@75 250 editPost.Tags.value += '"' + tag + '"';
webmaster@0 251 } else {
webmaster@75 252 editPost.Tags.value += tag;
webmaster@0 253 }
webmaster@0 254 editPost.Tags.value += ' ';
webmaster@0 255 }
webmaster@0 256 } else {
webmaster@0 257 editPost.mood.style.display = 'none';
webmaster@0 258 editPost.Tags.style.display = 'none';
webmaster@0 259 }
webmaster@0 260
webmaster@0 261 } else {
webmaster@52 262 hideForms();
webmaster@52 263 el.parentNode.parentNode.className = '';
webmaster@52 264 el.editPostIsShown = 0;
webmaster@0 265 }
webmaster@0 266 }
webmaster@0 267
webmaster@0 268 function showAddForm(e) {
webmaster@0 269 var targetAc = bpEvt(e, "a").rTarget;
webmaster@0 270 while(targetAc.nodeName.toLowerCase()!='form') targetAc=targetAc.nextSibling; // Permet d'avoir eventuellement des espaces
webmaster@0 271 targetAc.style.display = (targetAc.style.display=='block')?'none':'block';
webmaster@0 272 }
webmaster@0 273
webmaster@0 274 function saveFormContent(e) {
webmaster@75 275 var el = bpEvt(e).rTarget.form; // Should be the form...
webmaster@0 276 var toggleLink = el.parentNode.firstChild;
webmaster@0 277 var id=toggleLink.href.substring(toggleLink.href.indexOf("#") + 4, toggleLink.href.length);
webmaster@0 278 if(xmlRequest.send('admin_xml.php?id=' + id + '&mode=edit&type=' + el.type,
webmaster@0 279 'title=' + postValue(el.Titre.value) +
webmaster@0 280 '&content=' + postValue(el.Contenu.value) +
webmaster@0 281 '&mood=' + postValue(el.mood.value) +
webmaster@0 282 '&tags=' + postValue(el.Tags.value)))
webmaster@0 283 {
webmaster@0 284 toggleLink.editPostIsShown = 0;
webmaster@56 285 toggleLink.parentNode.parentNode.className = '';
webmaster@0 286 hideForms();
webmaster@0 287 } else {
webmaster@0 288 el.submit();
webmaster@0 289 }
webmaster@0 290 return true;
webmaster@0 291 }
webmaster@0 292
webmaster@0 293 function hideForms() {
webmaster@0 294 document.getElementById('whichVersion').style.display='none';
webmaster@0 295 document.getElementById('editPost').style.display='none';
webmaster@0 296 }
webmaster@0 297
webmaster@0 298 /* Bullet-Proofing of the event variable... Needed because of the huge mess out there */
webmaster@0 299 function bpEvt(eIni, tag) {
webmaster@0 300 var e = (eIni)?eIni:window.event;
webmaster@0 301 e.rTarget = (e.target)?e.target:e.srcElement;
webmaster@0 302 if(tag != undefined)
webmaster@0 303 while(e.rTarget.parentNode && e.rTarget.nodeName.toLowerCase() != tag) e.rTarget = e.rTarget.parentNode;
webmaster@0 304 return e;
webmaster@0 305 }
webmaster@0 306
webmaster@0 307 function postValue(str)
webmaster@0 308 {
webmaster@0 309 str = str.replace(/&/g, "%26");
webmaster@0 310 str = str.replace(/\+/g, "%2B");
webmaster@0 311 return str;
webmaster@29 312 }