webmaster@0: var arLIMenu = new Array(); webmaster@0: var curBPShown = 0; webmaster@0: var wEdit, wBr, dp; webmaster@0: webmaster@0: var xmlRequest = { webmaster@0: init: function() { webmaster@0: try { webmaster@0: xmlRequest.obj = new XMLHttpRequest(); webmaster@0: } catch(e) { webmaster@0: xmlRequest.obj = new ActiveXObject("Msxml2.XMLHTTP"); webmaster@0: } webmaster@0: }, webmaster@0: webmaster@0: get: function(url) { webmaster@0: xmlRequest.obj.open("GET", url, false); webmaster@0: xmlRequest.obj.send(null); webmaster@0: webmaster@0: return xmlRequest.obj.responseXML; webmaster@0: }, webmaster@0: webmaster@0: send: function(url, data) { webmaster@0: try { webmaster@0: xmlRequest.obj.open("POST", url, false); webmaster@0: xmlRequest.obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') webmaster@0: xmlRequest.obj.send(data); webmaster@0: return true; webmaster@0: } catch(e) { webmaster@0: return false; webmaster@0: } webmaster@0: } webmaster@0: webmaster@0: }; webmaster@0: webmaster@0: var t = { webmaster@0: evtListener:function(elt, evt, func, useCpt) { webmaster@0: if(elt.addEventListener) webmaster@0: elt.addEventListener(evt, func, useCpt); webmaster@0: else if(elt.attachEvent) webmaster@0: elt.attachEvent("on" + evt, func); webmaster@75: else if(elt["on" + evt]) webmaster@75: elt["on" + evt] = function() {elt["on" + evt](); func();} webmaster@0: else webmaster@0: elt["on" + evt] = func; webmaster@75: }, webmaster@75: getTextContent: function(node) { webmaster@75: if(node.textContent) webmaster@75: return node.textContent; webmaster@75: if(node.innerText) webmaster@75: return node.innerText; webmaster@75: // We tried hard to use something fast, it didn't work, so we'll recurse webmaster@75: if(node.nodeType == 3 || node.nodeType == 4) webmaster@75: return node.data; webmaster@75: var textContent = '', i; webmaster@75: for(i = 0; i < node.childNodes.length; i++) webmaster@75: textContent += t.getTextContent(node.childNodes[i]); webmaster@75: return textContent; webmaster@75: }, webmaster@75: empty: function(node) { webmaster@75: while(node.firstChild) webmaster@75: node.removeChild(node.firstChild); webmaster@0: } webmaster@0: } webmaster@0: webmaster@0: t.evtListener(window, "load", xmlRequest.init, false); webmaster@0: t.evtListener(window, "load", hideForms, false); webmaster@75: t.evtListener(window, "load", init, false); webmaster@0: webmaster@0: var editFilter = { webmaster@75: accept: function(node) { webmaster@75: if(node.nodeName.toLowerCase() == 'a' && webmaster@75: node.firstChild && webmaster@75: node.firstChild.nodeValue == 'Editer') webmaster@75: return true; webmaster@75: return false; webmaster@75: }, webmaster@75: webmaster@0: acceptNode: function(node) { webmaster@75: return this.accept(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP; webmaster@0: } webmaster@0: } webmaster@0: webmaster@0: var brouillonsFilter = { webmaster@75: accept: function(node) { webmaster@75: if(node.nodeName.toLowerCase() == 'a' && node.firstChild && ( webmaster@0: node.firstChild.nodeValue == 'Editer' || webmaster@0: node.firstChild.nodeValue == 'Publier' || webmaster@0: node.firstChild.nodeValue == 'Supprimer')) webmaster@75: return true; webmaster@75: return false; webmaster@75: }, webmaster@75: webmaster@75: acceptNode: function(node) { webmaster@75: return this.accept(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP; webmaster@0: } webmaster@0: } webmaster@0: webmaster@0: webmaster@0: webmaster@75: function init() { webmaster@0: var ar=document.getElementsByTagName('li'); webmaster@0: for(var i=0; i'); webmaster@75: errorNode = this.obj.createElement('parsererror'); webmaster@75: errorNode.appendChild(this.obj.createTextNode(error)); webmaster@75: this.obj.documentElement.appendChild(errorNode); webmaster@75: } webmaster@75: return this.obj; webmaster@75: } webmaster@75: } webmaster@75: } webmaster@0: t.evtListener(document.getElementById("editPost").Save, "click", saveFormContent, false); webmaster@0: // TreeWalkers in all their glory webmaster@0: try { webmaster@75: wEdit = document.createTreeWalker(document.getElementById("GestPosts"), NodeFilter.SHOW_ELEMENT, editFilter, true); webmaster@0: while(wEdit.nextNode()) { webmaster@0: t.evtListener(wEdit.currentNode, "click", editPubl, false); webmaster@0: } webmaster@0: webmaster@75: wBr = document.createTreeWalker(document.getElementById("GestBrouillons"), NodeFilter.SHOW_ELEMENT, brouillonsFilter, true); webmaster@0: while(wBr.nextNode()) { webmaster@0: if(wBr.currentNode.firstChild.nodeValue == 'Editer') t.evtListener(wBr.currentNode,"click", editBrouillon, false); webmaster@0: else if(wBr.currentNode.firstChild.nodeValue == 'Publier') t.evtListener(wBr.currentNode, "click", pubBrouillon, false); webmaster@0: } webmaster@0: } catch(e) { webmaster@29: var tmpLinks = document.getElementById("GestPosts") webmaster@29: .getElementsByTagName("a"); webmaster@29: for(var i = 0; i < tmpLinks.length; i++) { webmaster@75: if(editFilter.accept(tmpLinks[i])) { webmaster@29: t.evtListener(tmpLinks[i], "click", editPubl, false) webmaster@29: } webmaster@29: } webmaster@29: webmaster@29: tmpLinks = document.getElementById("GestBrouillons") webmaster@29: .getElementsByTagName("a"); webmaster@29: for(var i = 0; i < tmpLinks.length; i++) { webmaster@75: if(brouillonsFilter.accept(tmpLinks[i])) { webmaster@75: if(tmpLinks[i].firstChild.nodeValue == 'Editer') webmaster@75: t.evtListener(tmpLinks[i], "click", editBrouillon, false); webmaster@75: else if(tmpLinks[i].firstChild.nodeValue == 'Publier') webmaster@75: t.evtListener(tmpLinks[i], "click", pubBrouillon, false); webmaster@29: } webmaster@29: } webmaster@0: } webmaster@0: } webmaster@0: webmaster@0: function switchSection(e) { webmaster@0: var targetAc = bpEvt(e, 'li').rTarget; webmaster@0: for(i=0; i" + t.getTextContent(data.getElementsByTagName("contenu")[0]) + "", "text/xml"); webmaster@75: t.empty(pubComment); webmaster@75: if(doc.getElementsByTagName('parsererror').length > 0) { webmaster@75: var textNode = document.createTextNode(t.getTextContent(doc.documentElement) + "\n"); webmaster@75: pubComment.appendChild(textNode); webmaster@0: } webmaster@0: else { webmaster@75: var textNode = document.createTextNode("Le post est fait de XML valide, bon pour être poster"); webmaster@75: pubComment.appendChild(textNode); webmaster@0: whichVersion.pubButton.disabled = false; webmaster@0: } webmaster@0: } else { webmaster@0: curBPShown = 0; webmaster@0: el.parentNode.parentNode.className = ''; webmaster@0: hideForms(); webmaster@0: el.pubIsShown = false; webmaster@0: } webmaster@0: return false; webmaster@0: } webmaster@0: webmaster@0: function editBrouillon(e) { webmaster@0: edit(e, "brouillon"); webmaster@0: } webmaster@0: webmaster@0: function editPubl(e) { webmaster@0: edit(e, "post"); webmaster@0: } webmaster@0: webmaster@0: function edit(e, type) { webmaster@0: var editPost = document.getElementById("editPost"); webmaster@0: editPost.type = type; webmaster@0: var el = bpEvt(e).rTarget; webmaster@0: if(el.editPostIsShown !=1) { webmaster@0: var id = el.href.substring(el.href.indexOf("#") + 4, el.href.length); webmaster@0: var data = xmlRequest.get("admin_xml.php?type=" + type + "&id=" + id); webmaster@0: el.parentNode.appendChild(editPost); webmaster@0: el.editPostIsShown = 1; webmaster@52: el.parentNode.parentNode.className = 'Pinned'; webmaster@0: editPost.style.display = 'block'; webmaster@75: editPost.Titre.value = t.getTextContent(data.getElementsByTagName('titre')[0]); webmaster@75: editPost.Contenu.value = t.getTextContent(data.getElementsByTagName('contenu')[0]); webmaster@0: if(type == 'post') { webmaster@0: editPost.mood.style.display = ''; webmaster@75: editPost.mood.value = t.getTextContent(data.getElementsByTagName('mood')[0]); webmaster@0: editPost.Tags.style.display = ''; webmaster@0: editPost.Tags.value = ''; webmaster@75: var tags = data.getElementsByTagName('tag'), tag; webmaster@0: for(var i = 0; i < tags.length; i++) webmaster@0: { webmaster@75: tag = t.getTextContent(tags[i]); webmaster@75: if(tag.indexOf(' ') > -1) webmaster@0: { webmaster@75: editPost.Tags.value += '"' + tag + '"'; webmaster@0: } else { webmaster@75: editPost.Tags.value += tag; webmaster@0: } webmaster@0: editPost.Tags.value += ' '; webmaster@0: } webmaster@0: } else { webmaster@0: editPost.mood.style.display = 'none'; webmaster@0: editPost.Tags.style.display = 'none'; webmaster@0: } webmaster@0: webmaster@0: } else { webmaster@52: hideForms(); webmaster@52: el.parentNode.parentNode.className = ''; webmaster@52: el.editPostIsShown = 0; webmaster@0: } webmaster@0: } webmaster@0: webmaster@0: function showAddForm(e) { webmaster@0: var targetAc = bpEvt(e, "a").rTarget; webmaster@0: while(targetAc.nodeName.toLowerCase()!='form') targetAc=targetAc.nextSibling; // Permet d'avoir eventuellement des espaces webmaster@0: targetAc.style.display = (targetAc.style.display=='block')?'none':'block'; webmaster@0: } webmaster@0: webmaster@0: function saveFormContent(e) { webmaster@75: var el = bpEvt(e).rTarget.form; // Should be the form... webmaster@0: var toggleLink = el.parentNode.firstChild; webmaster@0: var id=toggleLink.href.substring(toggleLink.href.indexOf("#") + 4, toggleLink.href.length); webmaster@0: if(xmlRequest.send('admin_xml.php?id=' + id + '&mode=edit&type=' + el.type, webmaster@0: 'title=' + postValue(el.Titre.value) + webmaster@0: '&content=' + postValue(el.Contenu.value) + webmaster@0: '&mood=' + postValue(el.mood.value) + webmaster@0: '&tags=' + postValue(el.Tags.value))) webmaster@0: { webmaster@0: toggleLink.editPostIsShown = 0; webmaster@56: toggleLink.parentNode.parentNode.className = ''; webmaster@0: hideForms(); webmaster@0: } else { webmaster@0: el.submit(); webmaster@0: } webmaster@0: return true; webmaster@0: } webmaster@0: webmaster@0: function hideForms() { webmaster@0: document.getElementById('whichVersion').style.display='none'; webmaster@0: document.getElementById('editPost').style.display='none'; webmaster@0: } webmaster@0: webmaster@0: /* Bullet-Proofing of the event variable... Needed because of the huge mess out there */ webmaster@0: function bpEvt(eIni, tag) { webmaster@0: var e = (eIni)?eIni:window.event; webmaster@0: e.rTarget = (e.target)?e.target:e.srcElement; webmaster@0: if(tag != undefined) webmaster@0: while(e.rTarget.parentNode && e.rTarget.nodeName.toLowerCase() != tag) e.rTarget = e.rTarget.parentNode; webmaster@0: return e; webmaster@0: } webmaster@0: webmaster@0: function postValue(str) webmaster@0: { webmaster@0: str = str.replace(/&/g, "%26"); webmaster@0: str = str.replace(/\+/g, "%2B"); webmaster@0: return str; webmaster@29: }