X-Git-Url: http://www.wagner.pp.ru/gitweb/?p=oss%2Fstilllife.git;a=blobdiff_plain;f=templates%2Fbelstyle%2Fpage.js;fp=templates%2Fbelstyle%2Fpage.js;h=f321c312ca5af08c67d0d81d755906c18b471cfa;hp=0000000000000000000000000000000000000000;hb=b8a4f08b92828db2ea6ec0e3d99267bcdb52d6d0;hpb=f52b1318b20cf6a7d8942692467863acad45a7c9 diff --git a/templates/belstyle/page.js b/templates/belstyle/page.js new file mode 100644 index 0000000..f321c31 --- /dev/null +++ b/templates/belstyle/page.js @@ -0,0 +1,276 @@ +// Библиотека стандартных функций, используемых на страницах форума +// +// Извлекает из кук имя текущего пользователя и возвращает его, а также +// сохраняет в глобальной переменной forumUser; +var forumUser; +var userStatus; +function getUserName() { + var cookietext =document.cookie; + var pos = cookietext.indexOf("sluser="); + if (pos == -1) { + return undefined; + } + var start = pos+7; + var end = cookietext.indexOf(";",start); + if (end == -1) end=cookietext.length; + var value= cookietext.substring(start,end); + 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 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; + } + window.setTimeout(function() {f.elements["text"].focus();},250); + linktext = document.location.href; + var anchor = linktext.indexOf("#"); + if (anchor!=-1) { + linktext=linktext.substring(0,anchor); + } + document.location.href=linktext+"#replyform"; + 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; +} +