powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вопросы новичка по ZEN.
22 сообщений из 22, страница 1 из 1
Вопросы новичка по ZEN.
    #34923933
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этой теме мне бы хотелось получать Ваши ценные советы по ZEN. Так как я только начал знакомиться с ZEN, просьба ногами сильно не пинать.
Начну с самого простого:
Почему не работатет этот код?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Class Webdev.Page Extends %ZEN.Component.page
{
Parameter APPLICATION = "Webdev.Academy";
Parameter PAGENAME = "Page";
Parameter DOMAIN = "Webdev";

XData Style
{
<style type="text/css">
</style>
}
XData Contents
{
<page>
<html>
<h3 align="center">Today is: #($zd($h))#</h3>
</html>
<label align="center" label="Today is: #($zd($h))#"/>
</page>
}
}
На #($zd($h))# выдает "Expression Error"
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #34927361
Erick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня похожий вопрос. Как вывести на страницу значение глобала?
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #34927388
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да... Что пока одни вопросы, а ответов нет...

Новый вопрос. К примеру, со страницы авторизации, при условии успешной проверки, осуществляется переход на другую страницу. Необходимо передать туда логин и пароль (да и вообще любые данные).
У меня так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ClassMethod SubmitForm(pSubmit As %ZEN.Submit) As %Status
{
	if (/*некоторая проверка логина и пароля*/)
	{
                      set %session.Data("login")=pSubmit.%GetValue("login")
		set %session.Data("password")= $system.Encryption.MD5Encode(pSubmit.%GetValue("password"))
  		
                      set %response.ServerSideRedirect = "Some.SomePage.cls"
  		quit  1 
	}
	quit  1 
}
Данные в сессии передаются. А вот как, к примеру, вывести значение %session.Data("login") в поле text?
Вот так ничего не выдает:
Код: plaintext
<text align="center" id="login" name="login" value="#(%session.Data('login'))#"/>

Как сделать правильно?
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #34927668
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дополнение к вышесказанному:
В классе страницы определены два свойства
Код: plaintext
1.
Property IsValidLogin As %ZEN.Datatype.boolean;
Property IsValidPassword As %ZEN.Datatype.boolean;
Теперь вместо
Код: plaintext
/*некоторая проверка логина и пароля*/
я использую
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
if (%page.IsValidLogin)
{
		
		set %session.Data("login")=pSubmit.%GetValue("login")
		set %session.Data("password")=$system.Encryption.MD5Encode(pSubmit.%GetValue("password"))
  		
  		set %response.ServerSideRedirect = "Dilers.ChangePassword.cls?login=123"
  		q  1 
	}
	quit  1 
На что получаю такой ответ:
Error code returned by submit handler:
ERROR #5001: <UNDEFINED>zSubmitForm+2^Dilers.Authorization.2 *%page

Т.е., на сколько я понял, не определен объект страницы. Как получить доступ к странице и ее свойству из SubmitForm?
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #34929282
''
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
''
Гость
13-й Пилигрим
Почему не работатет этот код?
На #($zd($h))# выдает "Expression Error"

Потому что существуют ограничения на использование подстановочных выражений.
Посмотрите документацию
http://localhost:?/csp/docbook/DocBook.UI.Page.cls?KEY=GZEN_page_programming#GZEN_runtime_expressions

Ответы на остальные вопросы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
Class Webdev.Page Extends %ZEN.Component.page
{

Parameter APPLICATION = "Webdev.Academy";
Parameter PAGENAME = "Page";
Parameter DOMAIN = "Webdev";

Property day As %ZEN.Datatype.string [ InitialExpression = {$zd($H)} ];
Property IsValidLogin As %ZEN.Datatype.boolean(ZENURL = "IsValidLogin") [ InitialExpression = "0" ];

XData Style
{
<style type="text/css">
</style>
}

XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<page xmlns="http://www.intersystems.com/zen" title="">
<html id="html1">
<h3 align="center">Today is: bla-bla-bla</h3>
</html>
<label id="label1" align="center" label="Today is: bla-bla-bla"/>
<label id="label2" align="center" label="bla-bla-bla"/>
<label id="label3" align="center" label="#(%page.day)#"/>
<label id="label4" align="center" label="bla-bla-bla"/>


<form id="LoginForm">
<text hidden="true" id="IsValidLogin" name="IsValidLogin" value="#(%page.IsValidLogin)#"/>
<submit caption="Save" action="save" id="Submit" name="Submit"/>
</form>
</page>
}

/// This callback is called after the server-side page 
/// object and all of its children are created.<br>
/// Subclasses can override this to add, remove, or modify 
/// items within the page object model, or to provide values
/// for controls.
Method %OnAfterCreatePage() As %Status
{
  Set t = %page.%GetComponentById("label1")
  set t.label="Label Today is: "_$zd($h)
  
  Set t = %page.%GetComponentById("label2")
  set t.label=%session.Data("login")
  
  Set t = %page.%GetComponentById("html1")
  set t.content="<h3 align='center'>html Today is: "_$zd($h)_"</h3>"
  
  Quit $$$OK
}

/// This callback is called when a form on this page is submitted.
/// <var>pSubmit</var> is a <class>%ZEN.Submit</class> object
/// containing details of the form submit.<br>
/// Subclasses override this method.
ClassMethod %OnSubmit(pSubmit As %ZEN.Submit) As %Status
{
 if (pSubmit.%Action = "save") 
 {
  if (pSubmit.%GetValue("IsValidLogin")="1"){ //вместо (%page.IsValidLogin)
	  //Что-то делаем
             set %session.Data("login")=pSubmit.%GetValue("login")
	set %session.Data("password")=$system.Encryption.MD5Encode(pSubmit.%GetValue("password"))
 	
  		set %response.ServerSideRedirect = "Dilers.ChangePassword.cls?login=123"
  		q $$$OK
  }
 }
 
	Quit $$$OK
}

}


Erick
Как вывести на страницу значение глобала?

См. выше

PS: Я привел только некоторые варианты решения, хотя их гораздо больше.
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #34934636
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы. Новая порция вопросов.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
ClassMethod SubmitForm(pSubmit As %ZEN.Submit) As %Status
{
	s pswlngth=$L(pSubmit.%GetValue("password"))
		
	if (pSubmit.%GetValue("login")? 1 .3U1"-"1.N && (pSubmit.%GetValue("password")?.ANP1NP.ANP1NP.ANP)&&(pswlngth> 7 ))
	{		
		if (pSubmit.%GetValue("password")="password00")
		{
			set %session.Data("login")=pSubmit.%GetValue("login")
			set %session.Data("password")=$system.Encryption.MD5Encode(pSubmit.%GetValue("password"))
  			set %session.Data("AllowAccess")= 1 
  			set %response.ServerSideRedirect = ..Link("Dilers.ChangePassword.cls")
  			q  1 
		}
		else 
		{
			set %session.Data("AllowAccess")= 0 
			set %response.ServerSideRedirect = ..Link("Dilers.Login.cls")
  			q  1 
		}
	}
	quit  1 
}

Method %OnAfterCreatePage() As %Status
{
	if $Get(%session.Data("AllowAccess"))= 0 
	{
		set t = %page.%GetComponentById("errorTitle")
		set t.content = "<h3 align='center'>Неверный пароль</h3>"
		Quit $$$OK
	}
	Quit $$$OK
}

Т.е. мне нужно, чтобы по Submit формы проверялся логин и пароль по шаблону, и, если шаблону соответствуют, и пароль при этом равен паролю по умолчанию ("password00"), то перенаправляется на ChangePassword.cls. Иначе же AllowAccess %session устанавливается в 0 и возвращается на эту же страницу Login.cls. При формировании Login.cls проверяется AllowAccess, и если равен 0, то выводится сообщение об ошибке.
Вся проблема в том, что при возвращении на Login.cls, Submit формы считается сработавшим, со всеми предыдущими значениями, и опять происходи редирект на Login.cls. Т.е. происходит зацикливание. Как сделать правильно?
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #34934906
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й Пилигрим , почему вы не используете JS?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #34935096
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa 13-й Пилигрим , почему вы не используете JS?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

Ткните, пожалуйста, носом - как можно использовать JS.
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #34935408
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверняка как и раньше...
Пишите JS функцию... Вешаете ее на событие... Из нее вызываете кащейский метод, который возвращает что-то, по чему можно понять успех/не_успех... Оформляете нужный вам переход.
В обычном же csp это работало. Наверняка работает и теперь...
В качестве примера на csp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
<HTML>
<HEAD>
<title>Киоск</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="stylesheet" type="text/css" href="/prt/css/standart.css">

<script language='JavaScript'>

// Переход на другую страницу
function Go(Page,Lgn) {
	if (Lgn== 1 ) {
		var ok=#server(..cLogin())#
		if (ok=='') {
			alert('Даный пункт доступен только после авторизации...')
			return false
		}
	}
	top.location=Page
}

// Выход пользователя
function Exit() {
	var ok=#server(..cExit())#
	obj.submit()
}

// Проверка регистрации
function Login() {
	var ok=#server(..cLogin())#
	if (ok!='') {
		return true
	}
	var log=obj.log.value
	if (log=='') {
		alert('Укажите логин...')
		return false
	}
	var pas=obj.pas.value
	if (pas=='') {
		alert('Укажите пароль...')
		return false
	}
	ok=#server(..cLogin(log,pas))#
	if (ok=='') {
		alert('Такой пользователь не зарегистрирован...')
		return false
	}
	return true
}
	
</script>

</HEAD>

<csp:method name="cLogin" arguments="Log:%String,Pas:%String" returntype="">  
   // Проверка регистрации
   n set,id
   s set=$$Set^sysNAME
   if $g(Log)="" {
	   q $g(@set@("Login"))
   }
   s id=##class(prt.Users).GetId(Log)
   q:id="" ""
   s @set@("Login")=Log
   s @set@("Login","Id")=id
   q Log
</csp:method>

<csp:method name="cExit" arguments="" returntype="">  
   // Выход пользователя
   n set
   s set=$$Set^sysNAME
   k @set@("Login")
   q  1 
</csp:method>

<BODY>
<form action='/ksk/menu.csp' method='post' onsubmit='return Login()'>

<!--#include virtual="/prt/inc/scrbeg.csp"-->

<script language='Cache' runat='Server'>
	s set=$$Set^sysNAME
	s @set@("Task")="ksk"
	s @set@("Csp")="/ksk/menu.csp"
	s buf=$$Temp^sysNAME()
	d TITLE^kskSTAND
	d TITLE^prtHTML(zkl,val)
</script>

<table width="100%"  border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="187" valign="top">
<!--#include virtual="/prt/inc/navmenu.csp"-->

<!-- Табличка авторизации -->
<table width="187"  border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="187" height="26" class="mb_t">АВТОРИЗАЦИЯ
<tr>
<td width="187" class="mb_m" align="center">

<csp:If CONDITION='..cLogin()=""'>
	<table cellspacing="0" cellpadding="0" border="0">
	<tr>
	<td>Логин:
	<td><input class="if" name="log" type="text" maxlength="26" size="8" style='padding:0px;'>
	<tr>
	<td>Пароль:
	<td><input class="if" name="pas" type="password" maxlength="26" size="8">
	<tr>
	<td colspan="2" align="right"><input class="ib" type="submit" value="Вход">
	<tr>
	<td colspan='2' align='left'>
	<a href='javascript:Go("/ksk/reg/info.csp")' class='normallink1'>Регистрация</a>
</table>
<csp:Else>
	<!-- Табличка приветствия -->
	<table width="90%" cellspacing='0' cellpadding='0' border='0'>
	<tr>
	<td class="auth_ent_msg">Вошли как:</td>
	<tr>
	<td class="auth_usr_msg"><font color='blue'>[ </font>#(..cLogin())#<font color='blue'> ]</font></td>
	<tr>
	<td class="auth_log_but"><input class="ib" type="button" onclick='Exit()' value="Выход">
	</table>
</csp:If>

<tr>
<td width="187" height="5" class="mb_b">
</table>
<!-- Табличка авторизации (окончание) -->
<table width="187" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class='leftpict'>
</table>

<td valign="top">

<script language='Cache' runat='Server'>
	s buf=$$Temp^sysNAME()
	s nam=$na(@buf@("Menu"))
	k @nam
	s @nam="Виды государственных услуг"
	s @nam@( 1 )="Вакансий"
	s @nam@( 1 ,"Url")="Go('/ksk/vks/alltype.csp',1)"
	s @nam@( 2 )="Обучение"
	s @nam@( 2 ,"Url")="Go('/ksk/lrn/alltype.csp',1)"
	s @nam@( 3 )="Нормативно-правовые вопросы"
	s @nam@( 3 ,"Url")="Go('/ksk/npv/all.csp',1)"
	s @nam@( 4 )="Адреса службы занятости"
	s @nam@( 4 ,"Url")="Go('/ksk/adr/all.csp',1)"
	d MENU^prtHTML(nam,"Go('/prt/main.csp')")
</script>

</table>

</form>
<!--#include virtual="/prt/inc/scrend.csp"-->

<script language='JavaScript'>
	obj=document.forms[ 0 ]
</script>

</BODY>
</HTML>
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #34935573
''
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
''
Гость
Попробуйте удалить строку
Код: plaintext
set %response.ServerSideRedirect = ..Link("Dilers.Login.cls")
либо заменить ее на
Код: plaintext
set %response.Redirect = ..Link("Dilers.Login.cls")

Примеры по использованию JS (и не только) можно найти по адресу:
http://www.intersystems.ru/cache/education/zen/index.html

PS: В вашем случае я бы отказался от submit и сделал бы метод по проверке логина/пароля типа ZenMethod или javascript.
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #34937400
''
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
''
Гость
Еще вариант:
Код: plaintext
set pSubmit.%NextPage=..Link("Dilers.Login.cls")
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #34938626
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за советы.
Такой вот теперь вопрос:
Проверку логина и пароля я организовал следующим образом: при нажатии Submit вызывается
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Method OnSubmitClick() [ ZenMethod ]
{
	set lgn = %page.%GetValueById("login")
	set psw = %page.%GetValueById("password")
	
	///* Здесь будет проверка логина и пароля по БД *///
	if (lgn="TST-001"&&psw="password00") 
	{
		set %session.Data("login", 1 ) = lgn
		set %session.Data("password", 1 )=psw
		set %session.Data("AllowAccess", 1 )= 1 
	}
	else
	{
		set %session.Data("AllowAccess", 1 )= 0 
	}
	quit  1 
}
А затем в %OnAfterCreatePage() я проверяю %session.Data("AllowAccess")
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Method %OnAfterCreatePage() As %Status
{
	if $D(%session.Data("AllowAccess", 1 ))
	{
		if %session.Data("AllowAccess", 1 )= 0 
		{
			set obj = %page.%GetComponentById("errorMessage")
			set obj.content="<h4 align='center' style='color:red'>В доступе отказано!</h4><h4 align='center' style='color:red'>Неверный Логин или Пароль</h4>"
			q  1 
		}
		if %session.Data("AllowAccess", 1 )= 1 
		{
			set %response.Redirect = "Dilers.ChangePassword.cls"
			quit  1 
		}
	}
	Quit $$$OK
}
Этот механизм, в принципе работает. Но в силу определенных причин мне бы хотелось вместо %session в %OnAfterCreatePage() использовать %request. Что-то вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Method %OnAfterCreatePage() As %Status
{
	if ($D(%request.Data("login", 1 ))&&$D(%request.Data("password", 1 )))
	{
		if ((%request.Data("login", 1 )'="TST-001")&&(%request.Data("password",1)'="password00"))
		{
			set obj = %page.%GetComponentById("errorMessage")
			set obj.content="<h4 align='center' style='color:red'>В доступе отказано!</h4><h4 align='center' style='color:red'>Неверный Логин или Пароль</h4>"
			q  1 
		}
		else
		{
                       set %session.Data("AllowAccess", 1 )= 1 
			set %response.Redirect = "Dilers.ChangePassword.cls"
			quit  1 
		}
	}*/
	Quit $$$OK
}

Тогда бы отдельный OnSubmitClick() не понадобился бы. Ведь, насколько я понимаю, при нажатии на subnit формы имена контролов и их значения автоматически записываются в %request, даже если нет отдельного обработчика onsubmit. Так ли это? Но я не могу получить данные из %request. if ($D(%request.Data("login",1))&&$D(%request.Data("password",1))) - выдает 0 в %OnAfterCreatePage(). Как мне достать данные из %request?
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #34939446
''
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
''
Гость
авторВедь, насколько я понимаю, при нажатии на subnit формы имена контролов и их значения автоматически записываются в %request, даже если нет отдельного обработчика onsubmit. Так ли это?

Нет, не так. Посмотрите документацию:
http://localhost:?/csp/docbook/DocBook.UI.Page.cls?KEY=GZEN_forms#GZEN_C10462

Чтобы взять значение из %request нужно либо положить его в %response (см. пример ниже), либо передать его в параметрах строки подключения (...cls?login=...&password=...).

авторНо я не могу получить данные из %request. if ($D(%request.Data("login",1))&&$D(%request.Data("password",1))) - выдает 0 в %OnAfterCreatePage(). Как мне достать данные из %request?
Зачем так усложнять? Сделайте проще. Например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<page xmlns="http://www.intersystems.com/zen" title="">

<form id="LoginForm" name="LoginForm">
<text id="login" name="login" label="Логин:"/>
<text id="password" name="password" label="Пароль:"/>
<submit id="Submit" name="Submit" action="save" caption="Войти"/>
</form>
</page>
}

/// This callback is called when a form on this page is submitted.
/// <var>pSubmit</var> is a <class>%ZEN.Submit</class> object
/// containing details of the form submit.<br>
/// Subclasses override this method.
ClassMethod %OnSubmit(pSubmit As %ZEN.Submit) As %Status
{
 if (pSubmit.%Action = "save") 
 {
  set lgn=pSubmit.%GetValue("login")
  set psw=pSubmit.%GetValue("password")
  
  ; Здесь будет проверка логина и пароля по БД 
  ; Set %response.Context("login") = lgn
  ; Set %response.Context("password") = psw
  
	if ((lgn="TST-001") && (psw="password00")) 
	{
		set pSubmit.%NextPage=..Link("Dilers.ChangePassword.cls")
	}
	else
	{
	  Do pSubmit.%SetError("LoginForm","В доступе отказано (Неверный Логин или Пароль)")
	}
	
 }
 
	Quit $$$OK
}

/// This callback is called after the server-side page 
/// object and all of its children are created.<br>
/// Subclasses can override this to add, remove, or modify 
/// items within the page object model, or to provide values
/// for controls.
Method %OnAfterCreatePage() As %Status
{
	Quit $$$OK
}
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #35112736
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Возникла новая порция вопросов по ZEN.
Есть такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Class Webdev.Page Extends %ZEN.Component.page
{

Parameter APPLICATION = "Webdev.Academy";
Parameter PAGENAME = "Page";
Parameter DOMAIN = "Webdev";

XData Style
{
<style type="text/css">
</style>
}

XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<page>
 <form id="form" name="form">
  <combobox id="cmbx" name="cmbx" valueList="0,1" displayList="Нет,Да"/>
  <submit id="save" action="save" caption="OK"/> 
 </form>
</page>
}

ClassMethod %OnSubmit(pSubmit As %ZEN.Submit) As %Status
{
	#; this is overridden by subclasses
	d pSubmit.%SetError("form","Error")
	Quit $$$OK
}

}
Вопросы:
1. Можно ли каким-либо образом задать стиль сообщения об ошибке, которое выводится по d pSubmit.%SetError("form","Error"). В частности интересует размер шрифта. Необходимо его увеличить.
2. При выводе сообщения об ошибке в ComboBox отображается значение из valueList, а не из displayList. Т.е., к примеру, выбирается в ComboBox "Да", нажимается submit, согласно %OnSubmit в форму выводится "Error", но при этом в ComboBox отображается "1" а не "Да". Как от этого избавиться?
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #35113276
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Стили для сообщений об ошибках:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
/* @doc="Style for error messages for controls." */
.zenError {
	color: red;
	font-size:  90 %;
	padding-left: 2px;
	padding-right: 2px;
}
.zenError:before {
	content: "[";
}
.zenError:after {
	content: "]";
}

2) У меня Caché 2008.1.RC1 и такой ошибки уже не наблюдается.
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #35113496
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, стили для ошибок работают.
Насчет
2. При выводе сообщения об ошибке в ComboBox отображается значение из valueList, а не из displayList. Т.е., к примеру, выбирается в ComboBox "Да", нажимается submit, согласно %OnSubmit в форму выводится "Error", но при этом в ComboBox отображается "1" а не "Да". Как от этого избавиться?

2) У меня Caché 2008.1.RC1 и такой ошибки уже не наблюдается.
Это признанная ошибка, которая исправлена в новой версии? Что скажут пользователи Caché 2007.1 по этому поводу, проявляется ли у вас эта ошибка? Как ее можно обойти на Caché 2007.1?
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #35113754
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В версии "Cache for Windows (x86-32) 2007.1.3 (Build 607U) Tue Oct 16 2007 23:51:33 EDT" проявляется.
Решение: либо самим подправить класс %ZEN.Component.combobox, либо заказать adhoc.
Лучше заказать adhoc, так как есть нюансы по правке системной БД.
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #35113881
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас стоит Caché 2007.1.0.369.0. Не подскажите, к кому обратиться для заказа adhoc'a? Что он собой представляет? Как его потом установить в систему?
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #35114015
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adhoc - это патч. В нем есть инструкции по установке.
Заказать можно через WRC или Вашего консультанта.
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #35146990
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой вопрос: как проверить активирован ли JavaScript на конечной машине? Т.е. необходимо, чтобы при загрузке страницы выводилось сообщение о необходимости активации JavaScript в броузере в случае его отключения.
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #35147050
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й ПилигримТакой вопрос: как проверить активирован ли JavaScript на конечной машине? Т.е. необходимо, чтобы при загрузке страницы выводилось сообщение о необходимости активации JavaScript в броузере в случае его отключения.
<noscript>Включи JavaScript, а то щастя не будет</noscript>
...
Рейтинг: 0 / 0
Вопросы новичка по ZEN.
    #35147503
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за совет. Все работает.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вопросы новичка по ZEN.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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