/** * Catlair JS * Набор функций расширений для работы с интерфейсами авторизации Catlair * * still@itserv.ru */ /** * функциия вывода диалога о правах пользователя */ TCatlair.prototype.SessionPopup = function() { var that = this; var lContent = decodeURIComponent('%3Cdiv%3E%0D%0A%20%20%20%20%3Cdiv%20class%3D%22Group%22%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%3Ch2%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F%20%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F%20%D0%BE%20%D1%81%D0%B5%D1%81%D1%81%D0%B8%D0%B8%0D%0A%20%20%20%20%20%20%20%20%3C%2Fh2%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Line%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Caption%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%D0%9B%D0%BE%D0%B3%D0%B8%D0%BD%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Data%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%25Login%25%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Line%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Caption%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Data%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%25CaptionUser%25%20(%25IDUser%25)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Line%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Caption%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%D0%AF%D0%B7%D1%8B%D0%BA%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Data%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%25CaptionLang%25%20(%25IDLanguage%25)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Line%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Caption%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%D0%A1%D0%B0%D0%B9%D1%82%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Data%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%25CaptionSite%25%20(%25IDSite%25)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%3C%2Fdiv%3E%0D%0A%3C%2Fdiv%3E%0D%0A'); this.SessionInfo ( { OnAfterInfo: function(AParam) { lContent = clContentFromObject(AParam.Result.Params, lContent); that.Popup({TypeContent:tcText, Content:lContent}); } } ); return this; }; /** * функциия вывода диалога о правах пользователя */ TCatlair.prototype.UserPopup = function() { var that = this; var lContent = decodeURIComponent('%3Cdiv%3E%0D%0A%20%20%20%20%3Cdiv%20class%3D%22Group%22%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%3Ch2%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%0D%0A%20%20%20%20%20%20%20%20%3C%2Fh2%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Line%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Caption%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%D0%9B%D0%BE%D0%B3%D0%B8%D0%BD%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22CaptionCell%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%25Login%25%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Line%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Caption%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Data%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%25CaptionUser%25%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Toolbar%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20type%3D%22button%22%20class%3D%22ImageMan%22%20id%3D%22BtnLogout%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%D0%92%D1%8B%D1%85%D0%BE%D0%B4%20%D1%81%20%D1%81%D0%B0%D0%B9%D1%82%D0%B0%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fbutton%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20type%3D%22button%22%20class%3D%22ImageCancel%22%20id%3D%22BtnCancel%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%D0%97%D0%B0%D0%BA%D1%80%D1%8B%D1%82%D1%8C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fbutton%3E%0D%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%0D%0A%20%20%20%20%3C%2Fdiv%3E%0D%0A%3C%2Fdiv%3E%0D%0A'); this.SessionInfo ( { OnAfterInfo: function(AParam) { // Построение контента lContent = clContentFromObject(AParam.Result.Params, lContent); var Popup = that.Popup({TypeContent:tcText, Content:lContent}); /*Создание действия кнопки ОК*/ var BtnLogout = Popup.ChildByID('BtnLogout'); BtnLogout.onclick = function() { that.Logout({}); Popup.Close(); }; /*Создание действия кнопки Cancel*/ var BtnCancel = Popup.ChildByID('BtnCancel'); BtnCancel.onclick = function() { Popup.Close(); }; } } ); return this; }; /** * функция проверки сесионных данных * AParams.OnAfterLoad - on after load */ TCatlair.prototype.SessionInfo = function(AParams) { var that = this; AParams.Pars = true; AParams.Call = 'Session.Info'; AParams.OnAfterLoad = function() { if (that.PostResult(AParams) && AParams.OnAfterInfo) AParams.OnAfterInfo(AParams); }; this.Post(AParams); return this; }; /** * функция проверки является ли пользователь авторизованным */ TCatlair.prototype.AuthorizeStatus = function(AParams) { var that = this; AParams.Pars = true; AParams.Call = 'Session.Info'; AParams.OnAfterLoad = function() { if (that.PostResult(AParams)) { if (AParams.Result.Params.Login !== "") { /*Пользователь является авторизованным*/ if (AParams.OnUser) AParams.OnUser(AParams); } else { /*Пользователь не авторизован*/ if (AParams.OnGuest) AParams.OnGuest(AParams); } } }; this.Post(AParams); return this; }; /** * */ TCatlair.prototype.TransparentAuthorization = function(AParams) { SessionInfo(); }; /** * Вызов формы авторизации * AParams.OnAfterLogin - функция обратного вызова при успешной авторизации */ TCatlair.prototype.Authorization = function(AParams) { var that = this; /*контроль парметров*/ if (!AParams.Content) AParams.Content = decodeURIComponent('%3Cform%20method%3D%22post%22%20enctype%3D%22multipart%2Fform-data%22%3E%0D%0A%20%20%20%20%3Cdiv%20class%3D%22Group%22%3E%0D%0A%20%20%20%20%20%20%20%20%3Ch1%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%0D%0A%20%20%20%20%20%20%20%20%3C%2Fh1%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Line%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Caption%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%D0%A1%D0%B0%D0%B9%D1%82%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Data%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22text%22%20name%3D%22IDSite%22%20value%3D%22%22%20placeholder%3D%22%D1%81%D0%B0%D0%B9%D1%82%22%20autocomplete%3D%22off%22%2F%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Line%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Caption%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%D0%9B%D0%BE%D0%B3%D0%B8%D0%BD%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Data%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22text%22%20name%3D%22UserLogin%22%20value%3D%22%22%20placeholder%3D%22%D0%BB%D0%BE%D0%B3%D0%B8%D0%BD%22%20autocomplete%3D%22off%22%2F%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Line%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Caption%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%D0%9F%D0%B0%D1%80%D0%BE%D0%BB%D1%8C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22Data%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinput%20type%3D%22password%22%20id%3D%22Pass%22%20name%3D%22UserPassword%22%20value%3D%22%22%20placeholder%3D%22%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8C%22%20autocomplete%3D%22off%22%2F%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%0D%0A%20%20%20%20%3C%2Fdiv%3E%0D%0A%0D%0A%20%20%20%20%3Cdiv%20class%3D%22Toolbar%22%3E%0D%0A%20%20%20%20%20%20%20%20%3Cbutton%20class%3D%22ImageOk%20Unselected%22%20id%3D%22BtnOk%22%20type%3D%22button%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%D0%9E%D0%BA%0D%0A%20%20%20%20%20%20%20%20%3C%2Fbutton%3E%0D%0A%20%20%20%20%20%20%20%20%3Cbutton%20class%3D%22ImageCancel%20Unselected%22%20id%3D%22BtnCancel%22%20type%3D%22button%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%D0%97%D0%B0%D0%BA%D1%80%D1%8B%D1%82%D1%8C%0D%0A%20%20%20%20%20%20%20%20%3C%2Fbutton%3E%0D%0A%20%20%20%20%3C%2Fdiv%3E%0D%0A%3C%2Fform%3E%0D%0A'); if (!AParams.TypeContent) AParams.TypeContent = tcText; var Popup = this.Popup(AParams); /*Создание формы Popup*/ var LoginParams = {}; LoginParams.Form = Popup.ChildByTag('FORM'); /*Обработка успешной авторизации*/ LoginParams.OnAfterLogin =function() { Popup.Close(); if (AParams.OnAfterLogin) AParams.OnAfterLogin(AParams); }; /*Создание действия кнопки ОК*/ Popup.ChildByID('BtnOk').onclick = function() { that.Login(LoginParams); }; /* Check ENTER button on password */ Popup.ChildByID('Pass').onkeyup = function(AEvent) { if (AEvent.keyCode==13) that.Login(LoginParams); }; /*Создание действия кнопки Cancel*/ Popup.ChildByID('BtnCancel').onclick = function() { Popup.Close(); }; return this; }; /** * Log in user by password */ TCatlair.prototype.Login = function(AParams) { var that = this; var Params = { Pars:true, Form:AParams.Form, Call:'Session.Login', OnAfterLoad:function(p) { if (that.PostResult(p)) { if (AParams.OnAfterLogin) AParams.OnAfterLogin(AParams); } } }; this.Post(Params); return this; }; /** * Log out user. Close current session. */ TCatlair.prototype.Logout = function(AParams) { var that = this; AParams.Pars = true; AParams.Call = 'Session.Logout'; AParams.OnAfterLoad = function() { if (that.PostResult(AParams) && AParams.OnAfterLogout) AParams.OnAfterLogout(AParams); }; this.Post(AParams); return this; }; /** * Процедура переключения языка */ TCatlair.prototype.Lang = function(AParams) { var that = this; AParams.URL='?&IDLang='+AParams.IDLang; AParams.OnAfterLoad = function() { if (AParams.OnAfterLogout) AParams.OnAfterLogout(AParams); else location.reload(); }; this.Post(AParams); return this; };