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: }