annotate admin.js @ 51:77b3ed19aab9

Ajout d'un s, post -> posts. Les differents liens vers les posts depuis la section commentaires ne pouvaient pas marcher sans cela.
author Franck Deroche <franck@defr.org>
date Wed, 21 Nov 2007 23:33:48 +0100
parents 750613da68ec
children 829d6b0d3d0b
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@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@29 99 var tmpLinks = document.getElementById("GestPosts")
webmaster@29 100 .getElementsByTagName("a");
webmaster@29 101 for(var i = 0; i < tmpLinks.length; i++) {
webmaster@29 102 if(editFilter.acceptNode(tmpLinks[i])) {
webmaster@29 103 t.evtListener(tmpLinks[i], "click", editPubl, false)
webmaster@29 104 }
webmaster@29 105 }
webmaster@29 106
webmaster@29 107 tmpLinks = document.getElementById("GestBrouillons")
webmaster@29 108 .getElementsByTagName("a");
webmaster@29 109 for(var i = 0; i < tmpLinks.length; i++) {
webmaster@29 110 if(brouillonsFilter.acceptNode(tmpLinks[i])) {
webmaster@29 111 t.evtListener(tmpLinks[i], "click", editPubl, false)
webmaster@29 112 }
webmaster@29 113 }
webmaster@0 114 }
webmaster@0 115 }
webmaster@0 116
webmaster@0 117 function switchSection(e) {
webmaster@0 118 var targetAc = bpEvt(e, 'li').rTarget;
webmaster@0 119 for(i=0; i<arLIMenu.length; i++) {
webmaster@0 120 tmpObj=document.getElementById('Gest' + arLIMenu[i].firstChild.id);
webmaster@0 121 if(arLIMenu[i]==targetAc) {
webmaster@0 122 arLIMenu[i].className='Actif';
webmaster@0 123 tmpObj.style.display='block';
webmaster@0 124 } else {
webmaster@0 125 arLIMenu[i].className='';
webmaster@0 126 tmpObj.style.display='none';
webmaster@0 127 }
webmaster@0 128 }
webmaster@0 129 }
webmaster@0 130
webmaster@0 131
webmaster@0 132 function pubBrouillon(e) {
webmaster@0 133 var whichVersion = document.getElementById("whichVersion");
webmaster@0 134 var pubComment = document.getElementById("pubComment");
webmaster@0 135 var el = bpEvt(e).rTarget;
webmaster@0 136 if(el != curBPShown) {
webmaster@0 137 if(curBPShown != 0) curBPShown.parentNode.parentNode.className = '';
webmaster@0 138 curBPShown = el;
webmaster@0 139 el.parentNode.parentNode.className = 'Pinned';
webmaster@0 140 var pos = el.href.indexOf("#");
webmaster@0 141 whichVersion.pubButton.disabled = true;
webmaster@0 142 pubComment.textContent = "Vérification en cours de la validité XML du post";
webmaster@0 143 whichVersion.id.value = el.href.substring(pos + 4, el.href.length);
webmaster@0 144 el.parentNode.appendChild(whichVersion);
webmaster@0 145 whichVersion.style.display='block';
webmaster@0 146 el.pubIsShown = true;
webmaster@0 147 var data = xmlRequest.get("admin_xml.php?type=brouillon&id=" + whichVersion.id.value);
webmaster@0 148 var doc = dp.parseFromString("<post>" + data.getElementsByTagName("contenu")[0].firstChild.data + "</post>", "text/xml");
webmaster@0 149 var parserErrors = doc.getElementsByTagName('parsererror');
webmaster@0 150 if(parserErrors.length > 0) {
webmaster@0 151 pubComment.textContent = "";
webmaster@0 152 pubComment.appendChild(doc.firstChild);
webmaster@0 153 }
webmaster@0 154 else {
webmaster@0 155 pubComment.textContent = "Le post est fait de XML valide, bon pour être poster";
webmaster@0 156 whichVersion.pubButton.disabled = false;
webmaster@0 157 }
webmaster@0 158 } else {
webmaster@0 159 curBPShown = 0;
webmaster@0 160 el.parentNode.parentNode.className = '';
webmaster@0 161 hideForms();
webmaster@0 162 el.pubIsShown = false;
webmaster@0 163 }
webmaster@0 164 return false;
webmaster@0 165 }
webmaster@0 166
webmaster@0 167 function editBrouillon(e) {
webmaster@0 168 edit(e, "brouillon");
webmaster@0 169 }
webmaster@0 170
webmaster@0 171 function editPubl(e) {
webmaster@0 172 edit(e, "post");
webmaster@0 173 }
webmaster@0 174
webmaster@0 175 function edit(e, type) {
webmaster@0 176 var editPost = document.getElementById("editPost");
webmaster@0 177 editPost.type = type;
webmaster@0 178 var el = bpEvt(e).rTarget;
webmaster@0 179 if(el.editPostIsShown !=1) {
webmaster@0 180 var id = el.href.substring(el.href.indexOf("#") + 4, el.href.length);
webmaster@0 181 var data = xmlRequest.get("admin_xml.php?type=" + type + "&id=" + id);
webmaster@0 182 el.parentNode.appendChild(editPost);
webmaster@0 183 el.editPostIsShown = 1;
webmaster@0 184 editPost.style.display = 'block';
webmaster@0 185 editPost.Titre.value = data.getElementsByTagName('titre')[0].textContent;
webmaster@0 186 editPost.Contenu.value = data.getElementsByTagName('contenu')[0].firstChild.data;
webmaster@0 187 if(type == 'post') {
webmaster@0 188 editPost.mood.style.display = '';
webmaster@0 189 editPost.mood.value = data.getElementsByTagName('mood')[0].textContent;
webmaster@0 190 editPost.Tags.style.display = '';
webmaster@0 191 editPost.Tags.value = '';
webmaster@0 192 var tags = data.getElementsByTagName('tag');
webmaster@0 193 for(var i = 0; i < tags.length; i++)
webmaster@0 194 {
webmaster@0 195 if(tags[i].textContent.indexOf(' ') > -1)
webmaster@0 196 {
webmaster@0 197 editPost.Tags.value += '"' + tags[i].textContent + '"';
webmaster@0 198 } else {
webmaster@0 199 editPost.Tags.value += tags[i].textContent;
webmaster@0 200 }
webmaster@0 201 editPost.Tags.value += ' ';
webmaster@0 202 }
webmaster@0 203 } else {
webmaster@0 204 editPost.mood.style.display = 'none';
webmaster@0 205 editPost.Tags.style.display = 'none';
webmaster@0 206 }
webmaster@0 207
webmaster@0 208 } else {
webmaster@0 209 hideForms();
webmaster@0 210 el.editPostIsShown = 0;
webmaster@0 211 }
webmaster@0 212 }
webmaster@0 213
webmaster@0 214 function showAddForm(e) {
webmaster@0 215 var targetAc = bpEvt(e, "a").rTarget;
webmaster@0 216 while(targetAc.nodeName.toLowerCase()!='form') targetAc=targetAc.nextSibling; // Permet d'avoir eventuellement des espaces
webmaster@0 217 targetAc.style.display = (targetAc.style.display=='block')?'none':'block';
webmaster@0 218 }
webmaster@0 219
webmaster@0 220 function saveFormContent(e) {
webmaster@0 221 var el = e.target.form; // Should be the form...
webmaster@0 222 var toggleLink = el.parentNode.firstChild;
webmaster@0 223 var id=toggleLink.href.substring(toggleLink.href.indexOf("#") + 4, toggleLink.href.length);
webmaster@0 224 if(xmlRequest.send('admin_xml.php?id=' + id + '&mode=edit&type=' + el.type,
webmaster@0 225 'title=' + postValue(el.Titre.value) +
webmaster@0 226 '&content=' + postValue(el.Contenu.value) +
webmaster@0 227 '&mood=' + postValue(el.mood.value) +
webmaster@0 228 '&tags=' + postValue(el.Tags.value)))
webmaster@0 229 {
webmaster@0 230 toggleLink.editPostIsShown = 0;
webmaster@0 231 hideForms();
webmaster@0 232 } else {
webmaster@0 233 el.submit();
webmaster@0 234 }
webmaster@0 235 return true;
webmaster@0 236 }
webmaster@0 237
webmaster@0 238 function hideForms() {
webmaster@0 239 document.getElementById('whichVersion').style.display='none';
webmaster@0 240 document.getElementById('editPost').style.display='none';
webmaster@0 241 }
webmaster@0 242
webmaster@0 243 /* Bullet-Proofing of the event variable... Needed because of the huge mess out there */
webmaster@0 244 function bpEvt(eIni, tag) {
webmaster@0 245 var e = (eIni)?eIni:window.event;
webmaster@0 246 e.rTarget = (e.target)?e.target:e.srcElement;
webmaster@0 247 if(tag != undefined)
webmaster@0 248 while(e.rTarget.parentNode && e.rTarget.nodeName.toLowerCase() != tag) e.rTarget = e.rTarget.parentNode;
webmaster@0 249 return e;
webmaster@0 250 }
webmaster@0 251
webmaster@0 252 function postValue(str)
webmaster@0 253 {
webmaster@0 254 str = str.replace(/&/g, "%26");
webmaster@0 255 str = str.replace(/\+/g, "%2B");
webmaster@0 256 return str;
webmaster@29 257 }