X-Git-Url: http://www.wagner.pp.ru/gitweb/?a=blobdiff_plain;f=templates%2Fbasicset%2Fpage.js;h=ec6ed9c1dae65cd24ebd1d3633c5bd63e3f2ad87;hb=9c945db76a9102e288f9bf6d29466786939d99be;hp=3bd4e7514b39a6713e37ddf611bf5bcb00e2b797;hpb=42c8a5e84c6ebeac790fecf2fb87b4e2b405f1de;p=oss%2Fstilllife.git diff --git a/templates/basicset/page.js b/templates/basicset/page.js index 3bd4e75..ec6ed9c 100644 --- a/templates/basicset/page.js +++ b/templates/basicset/page.js @@ -1,6 +1,9 @@ // Библиотека стандартных функций, используемых на страницах форума // -// Извлекает из кук имя текущего пользователя и возвращает его +// Извлекает из кук имя текущего пользователя и возвращает его, а также +// сохраняет в глобальной переменной forumUser; +var forumUser; +var userStatus; function getUserName() { var cookietext =document.cookie; var pos = cookietext.indexOf("sluser="); @@ -11,39 +14,201 @@ function getUserName() { var end = cookietext.indexOf(";",start); if (end == -1) end=cookietext.length; var value= cookietext.substring(start,end); - return unescape(value); + forumUser = decodeURIComponent(value); + return forumUser; } +// +// Шаблон страницы содержит два специальных тэга link с rel=forum-script +// и rel=forum-user-list +// Эта функция извлекает их в глобальные переменные forumScriptUrl +// и userListUrl; +var forumScriptUrl; +var userListUrl; +function getBaseURLs() { + var links=document.getElementsByTagName("link"); + for (i=0;i0) { + links[i].removeChild(links[i].childNodes[0]); + } + if (username.substring(0,7) == "http://") { + links[i].href=username; + username=username.substring(7,username.length); + } else { + links[i].href=userListUrl+"/" + username; + } + links[i].appendChild(document.createTextNode(username)); + links[i].className = userStatus; + } else if (links[i].href.substring(0,forumScriptUrl.length)== + forumScriptUrl && links[i].href.indexOf("login=")!=-1) { + while (links[i].childNodes.length>0) { + links[i].removeChild(links[i].childNodes[0]); + } + links[i].appendChild(document.createTextNode("Выйти")); + links[i].href=forumScriptUrl+"?logout=1"; + } + } +} + // // Добывает с сервера информацию о модераторах данного форума и // возвращает user, moderator или admin в зависисмости от статуса // указанного пользователя. // function getUserRights(user) { + var status="user"; + var xhr=getXMLHttpRequest(); + if(!xhr) return status; + // Strip http:// prefix from OpenID url + if (user.substring(0,7) == "http://") { + user=user.substring(7,user.length); + } + var hr=location.href.match(/^\w+:\/\/[^/]*\/([^?#]+)/); + if(hr==null) return status; + var depth=hr[1].split(/\//).length; + var re=new RegExp("\n\\\[\s*(admins|moderators|banned)\s*\\\]\s*[^[]*\n"+user+"\n","m"); + for(var path="",i=0;i function showForm(link, formName) { - var linktext=link.href; - // Разобрать параметры, получить значение id - var start =linktext.indexOf("id="); - var id; - if (start!=-1) { - start+=3; - var end = linktext.indexOf("&",start); - if (end==-1) end=linktext.length; - id = linktext.substring(start,end); - } - var f=document.forms[formName]; + var id; + var action; + if (link.form) { + link = link.form; + id = link.elements["id"].value; + action = link.action; + } else { + var linktext=link.href; + // Разобрать параметры, получить значение id + var start =linktext.indexOf("id="); + if (start!=-1) { + start+=3; + var end = linktext.indexOf("&",start); + if (end==-1) end=linktext.length; + id = linktext.substring(start,end); + } + start=linktext.indexOf("?"); + action=linktext.substring(0,start); + } + var block = document.getElementById(formName); + var f = block.getElementsByTagName("form")[0]; + f.action=action; if (id) { f.elements["id"].value=id; } - f.style.display="block"; // позиционируем форму под текущей ссылкой. - return false; + block.style.display="block"; + link.parentNode.insertBefore(block,link.nextSibling); + window.setTimeout(function() {f.elements["text"].focus();},250); + window + return false; +} +function hideForm(formId) { + var block = document.getElementById(formId); + block.style.display = "none"; } +/** +* Создаёт объект XMLHttpRequest, предварительно уничтожая существующий, +* если такой существует. +*/ +function getXMLHttpRequest() +{ + try { + return xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + try { + return new ActiveXObject("Microsoft.XMLHTTP"); + } catch (E) { + if (typeof XMLHttpRequest!='undefined') + return new XMLHttpRequest(); + } + } + + return false; +} +