X-Git-Url: http://www.wagner.pp.ru/gitweb/?p=oss%2Fstilllife.git;a=blobdiff_plain;f=templates%2Fbasicset%2Fpage.js;fp=templates%2Fbasicset%2Fpage.js;h=ed9e6778b131f15d85ba4551a98864e5cd6439fc;hp=ec6ed9c1dae65cd24ebd1d3633c5bd63e3f2ad87;hb=7b8c6e94eb769b0fe9f8ed52f0c35a9937f9f402;hpb=60eca0837da884487ccb28e0f88ee5159b1ce693 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