Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / перенос страницы login.csp в класс csp.logincsp Extends %CSP.Page / 3 сообщений из 3, страница 1 из 1
22.01.2011, 19:16
    #37073249
Елена151
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос страницы login.csp в класс csp.logincsp Extends %CSP.Page
Привет

Решили csp странички, которые раньше лежали в папках csp перенести в классы.
Начали со странички логина, и сразу столкнулись с проблемой: перестал работать метод verifyPassword который находится за </html> и вызывается java функцией при обработке нажатой кнопки. В документации решения проблемы не нашли (а может не поняли где искать :)). Может подскажете как с этим зверем бороться??

Class csp.logincsp Extends %CSP.Page
{

ClassMethod OnPage() As %Status
{
s serverName=##class(csp.logincsp).ServerName()
&html<<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<link rel="STYLESHEET" type="text/css" href="css/login.css">
<TITLE></TITLE>
<script language="JavaScript" type="text/javascript">
var remote_host="#(%request.GetCgiEnv("REMOTE_HOST"))#";
var remote_address="#(%request.GetCgiEnv("REMOTE_ADDR"))#";
function verifyPassword() {
#server(..verifyPassword(Password.value,ServerName.value,screen.height,screen.width,remote_host,remote_address,Login.value))#;
}
</SCRIPT>
</head>
<body BGCOLOR="#AED3FF">
<table WIDTH="100%" HEIGHT="100%" BORDER="0">
<tr>
<td ALIGN="center">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0" id="qqq" WIDTH="400">
<TR>
<TD STYLE="padding-top: 5px;" ALIGN="center">База</td>
<TD ROWSPAN="2" ALIGN="left"><IMG SRC="img/key.gif"></TD>
</tr>
<tr>
<TD STYLE="padding-top: 5px;" ALIGN="left">Виберите сервер:  
<select name="ServerName" TYPE="text" ID="ServerName" size="1">
<option value=#(serverName)# SELECTED>#(serverName)#</option>
<option value="localhost" >localhost</option>
</select></td>
</tr>
<tr>
<td>Имя пользователя: <INPUT class="txt" TYPE="text" title="" ID="Login" value=""></td>
</tr>
<tr>
<td>Пароль:                 <INPUT TYPE="password" title="" ID="Password"></TD>
</TR>
<TR>
<TD COLSPAN="2" ALIGN="center" STYLE="padding-bottom: 5px;"><BUTTON CLASS="but" onClick="verifyPassword();">Войти</BUTTON> <BUTTON CLASS="but" onClick="window.close();">Отмена</BUTTON></TD>
</TR>
</TABLE>
</td>
</tr>
</table>

>

&html<

</html>>

&html<
<csp:method name="verifyPassword" ARGUMENTS="password, serverName, screenHeight, screenWidth, host, address, login">
// метод проверки пароля и имени
</csp:method>>

Quit $$$OK
}

ClassMethod ServerName() As %String
{
s serverName=$g(^["%SYS"]NET(0,"THISCO"))
q serverName
}
...
Рейтинг: 0 / 0
22.01.2011, 21:32
    #37073324
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос страницы login.csp в класс csp.logincsp Extends %CSP.Page
Елена151,

перенос csp в классы в целом возможен, но я бы не рекомендовал этого делать без особой необходимости, так как вы получите кучу дополнительной работы и риск получить несовместимость с другими версиями каше (в разных версиях это может компилироваться по разному).
Дело в том, что что компилятор csp страниц делает много неявных преобразований.
Многие вещи в каше существуют только в пределах CSP страниц, а внутри класса они не могут существать и заменяются другими более низкоуровневыми командами. Например, в классах не существуют CSR-теги, #()#, #server()#.
Чтобы посмотреть, на что они заменяются, можно нажать в студии, находясь в csp странице,
меню "Просмотр->Просмотр другого кода" или ctrl+shift+V.

В частности, если у вас страница превращается в класс и там есть гиперевенты, обязательно в методе OnPageHEAD
нужно вызвать ..HyperEventHead(0,0)
а непосредственно вместо вызова используйте ..HyperEventCall класса %CSP.Page.
(Кстати, сейчас посмотрел - стандартный компилятор перекручивать #server не в HyperEventCall, а во что-то похожее на результат его работы. Но вам нужно использовать HyperEventCall)
...
Рейтинг: 0 / 0
22.01.2011, 22:43
    #37073370
Елена 151
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перенос страницы login.csp в класс csp.logincsp Extends %CSP.Page
Блок А.Н., спасибо, вы мне очень помогли.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / перенос страницы login.csp в класс csp.logincsp Extends %CSP.Page / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]