From 7b8c6e94eb769b0fe9f8ed52f0c35a9937f9f402 Mon Sep 17 00:00:00 2001 From: safir Date: Thu, 8 May 2008 05:11:02 +0000 Subject: [PATCH] =?utf8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?utf8?q?=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D1=83=20"."=20=D0=B2=20=D0=B8?= =?utf8?q?=D0=BC=D0=B5=D0=BD=D0=B8=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE?= =?utf8?q?=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F=20=D0=BD=D0=B0=20"\.",=20?= =?utf8?q?=D0=BF=D0=BE=D1=81=D0=BA=D0=BE=D0=BB=D1=8C=D0=BA=D1=83,=20=D0=BF?= =?utf8?q?=D0=BE=D0=BF=D0=B0=D0=B4=D0=B0=D1=8F=20=D0=B2=20=D1=80=D0=B5?= =?utf8?q?=D0=B3=D1=83=D0=BB=D1=8F=D1=80=D0=BD=D0=BE=D0=B5=20=D0=B2=D1=8B?= =?utf8?q?=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5,=20"."=20=D0=BD=D0=B0?= =?utf8?q?=D1=87=D0=B8=D0=BD=D0=B0=D0=B5=D1=82=20=D1=81=D0=BE=D0=BE=D1=82?= =?utf8?q?=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2=D0=BE=D0=B2=D0=B0=D1=82?= =?utf8?q?=D1=8C=20=D0=BB=D1=8E=D0=B1=D0=BE=D0=BC=D1=83=20=D1=81=D0=B8?= =?utf8?q?=D0=BC=D0=B2=D0=BE=D0=BB=D1=83,=20=D1=87=D1=82=D0=BE=20=D0=BD?= =?utf8?q?=D0=B0=D1=80=D1=83=D1=88=D0=B0=D0=B5=D1=82=20=D0=BE=D0=B4=D0=BD?= =?utf8?q?=D0=BE=D0=B7=D0=BD=D0=B0=D1=87=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20?= =?utf8?q?=D0=BD=D0=B0=D1=85=D0=BE=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?utf8?q?=D0=B8=D0=BC=D1=91=D0=BD.=20=D0=92=D1=81=D1=82=D0=B0=D0=B2=D0=B8?= =?utf8?q?=D0=BB=20=D0=BA=D0=BE=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8?= =?utf8?q?=D0=B8=20=D0=B2=20=D0=BA=D0=BE=D0=B4=20=D1=84=D1=83=D0=BD=D0=BA?= =?utf8?q?=D1=86=D0=B8=D0=B8,=20=D0=BF=D0=BE=D1=81=D0=BA=D0=BE=D0=BB=D1=8C?= =?utf8?q?=D0=BA=D1=83=20=D1=81=20=D1=82=D1=80=D1=83=D0=B4=D0=BE=D0=BC=20?= =?utf8?q?=D1=80=D0=B0=D0=B7=D0=BE=D0=B1=D1=80=D0=B0=D0=BB=D1=81=D1=8F=20?= =?utf8?q?=D0=B2=20=D1=8D=D1=82=D0=BE=D0=B9=20=D0=BA=D1=83=D1=87=D0=B5=20?= =?utf8?q?=D1=80=D0=B5=D0=B3=D1=83=D0=BB=D1=8F=D1=80=D0=BD=D1=8B=D1=85=20?= =?utf8?q?=D0=B2=D1=8B=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- templates/basicset/page.js | 53 +++++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/templates/basicset/page.js b/templates/basicset/page.js index ec6ed9c..ed9e677 100644 --- a/templates/basicset/page.js +++ b/templates/basicset/page.js @@ -83,31 +83,72 @@ 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); - } + + // 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"); + + /* + * Заменяем в имени (OpenID) пользователя "." на "\.", поскольку строка + * попадает в RegExp и наличие "." приведёт к тому, что функция не сможет + * различить "ab.cd", "ab-cd" и "abecd". + */ + var normalizedUser=user.replace(/\./,"\\."); + + /* + * С помощью регулярного выражения ищем имя мользователя и предшествующий ему + * заголовок раздела, определяющий уровень прав. + */ + var re=new RegExp("\n\\\[\s*(admins|moderators|banned)\s*\\\]\s*[^[]*\n"+normalizedUser+"\n","m"); for(var path="",i=0;i