Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Всё о задаче AdminP. Часть вторая   Во второй части мы завершаем рассмотрение AdminP. В ней рассмотрены запросы междоменного администрирования и способы управления функциями AdminP с помощью настроек документа сервера, команд консоли сервера, файла Notes.ini и интервалов очистки базы данных. В этой статье предполагается, что вы опытный администратор Domino и прочитали первую часть
О Notes Читать статью
 
Всё о задаче AdminP. Proxy-действия в R5 и Domino 6   Приложение к статье об административном процессе
О Notes Читать статью
 
Всё о задаче AdminP. Часть первая   Перевод классической статьи 2003-его года о задаче административного процесса (AdminP). Очень полезна для понимания работы механизма этой задачи. В первой части статьи описаны компоненты задачи AdminP, как они работают, и как их использование помогает сделать работу администратора Domino проще. Задача AdminP (сакращённо от Administration Process, Административный процесс) работает с базой административных запросов (Administration Requests, admin4.nsf)
О Notes Читать статью
 


Шаблоны и примеры

Главная   Библиотека   Шаблоны и примеры

Диалоговые окна в web-приложениях. Выбор значений из справочников


Николай Норкин, CLP R5
Вятские Информационные Технологии
nickanor@mail.ru

В предлагаемом вниманию материале читатель может познакомиться с одним из приемов разработки интерактивных элементов для интерфейса web-приложения
Ниже будет показано, как предоставить пользователю приложения возможность выбора из справочника ранее введенных значений
В отличие от комбобокса, строка ввода с "диалоговым" окном не ограничивает пользователя конечным списком, список может варьироваться в зависимости от ранее выбранных значений

Структура примера
Прилагаемый к материалу архив (скачать >>>) содержит две базы: базу справочника (Dictionary.nsf) и базу с формой ввода
Разместите их в каталоге Test. В случае иного размещения базы Dictionary.nsf, задайте это расположение в формуле общего поля Dict_DB базы заявок
Для открытия используйте URL вида: http://host/Test/ITsource.nsf/welcome!openpage


Страница заявки в IT-службы соответствует форме базы данных Domino SoftSetup
Функции Javascript, используемые для описываемого интерфейса, вынесены для удобства подключения к любой web-странице в элемент дизайна страница (page) head.js

Открытие окна с выбором значений с использованием запроса методом GET

JS-функция, открывающая диалог, приведена ниже (см. код страницы head.js):
function getValueFromDictionary(key, fieldname) {
window.open( '/temp/ITsource.nsf/DictionaryChoose?ReadForm&key=' + key + '&field=' + fieldname,'abWindow', 'width=485,height=520,scrollbars=yes,status=no,location=no,toolbar=no,resizable=yes');
return;
}
Для указания абсолютного пути URL-запроса код страницы вычисляется в элементе дизайна Computed Text с использованием @-функции @DbName
Переменные, передаваемые в функцию и, позднее в ней - в URL-запрос:
key - ключ словаря
fieldname - имя поля, в которое возвращается результат
Аналогичным образом через Computed Text создается и код тега <A> вокруг иконки с треугольником:
@If(@IsNewDoc; "<A onClick=\"getValueFromDictionary('" + @URLEncode("Domino"; "Программное обеспечение") + "', 'SoftName'); return false;\"><IMG SRC=\"/" + dbpath + "/blackcol.gif?OpenImageResource\" WIDTH=16 HEIGHT=16></A>"; "")
Поскольку для URL-запроса методом GET необходимо преобразование русских символов, оно выполняется @-функцией @URLEncode

В форме DictionaryChoose, открываемой по данному URL-запросу размещаются:
Поле Query_String_Decoded, в котором в форму передаются параметры URL-запроса (с восстановлением русского текста) с формулой CGI-переменной Query_String_Decoded
Общее (shared) поле Dict_DB, задающее местоположение базы справочника
Поля, соответствующие передаваемым параметрам URL-запроса, формулы вычисления которых разбирают значение Query_String_Decoded
Поле SelectList с результатом обращения @DbLookup к справочнику
js-функция linkClick() передает выбранное из списка значение в поле главного окна и закрывает диалог
function linkClick(value)
{
if(window.opener)
{
window.opener.document.forms[0].SoftName.value = value;
}
self.close();
}
Функция setValue() производит передачу в главное окно введенного Нового значения по кнопке Продолжить. Если стоит флажок на checkbox'е Добавить в справочник происходит обработка сохранения значений web-формы в базе справочника
function setValue()
{
if(window.opener)
{
window.opener.document.forms[0].SoftName.value = self.document.forms[0].Value.value;
}
if(self.document.forms[0].addValue.checked)
{
return;
}
self.close();
return false;
}


Открытие окна с выбором значений с использованием запроса методом POST

Использование запроса методом POST обусловлено некоторыми ограничениями на запрос методом GET, как то:
- ограничение длины строки передаваемого запроса (256 символов)
- невозможность передачи русских символов без предварительного преобразования
Вместе с тем, использование метода POST может вызывать следующее предупреждение защиты до открытия окна выбора из справочника:

JavaScript'овая функция getSubValueFromDictionary() перекладывает значения параметров в скрытые поля второй web-формы, размещенной на странице, затем вызывает диалоговое окно с страницей DictionaryChoose.
function getSubValueFromDictionary(key, subkeyfields, fieldname) {
var subkey = '';
for (i=0;i<subkeyfields.length;i++)
{
var f = 'document.forms[0].' + subkeyfields[i] + '.value';
subkey = subkey + eval(f);
if(i<subkeyfields.length - 1) subkey = subkey + ' - ';
};
var form = document.forms[1];
form.Category.value = key;
form.Subkey.value = subkey;
form.fieldname.value = fieldname;
var dialog = window.open( '/test/ITsource.nsf/DictionaryChoose2!OpenPage','abWindow', 'width=485,height=520,scrollbars=yes,status=no,location=no,toolbar=no,resizable=yes');
return;
}
JS-функция, обрабатываемая на открытие страницы DictionaryChoose, вписывает содержимое скрытых полей в поля формы страницы и отсылает их на сервер методом POST
Окно диалога выбора, представляемое пользователю, "рисуется" при обработке формы DictionaryChoose3 в системном поле $$Return
Код диалогового окна во многом аналогичен коду окна, описанному в первом случае
 
  Опубликовано — 11/26/2004 |    

Дмитрий, 10.06.2011 10:44:44:
Николай, Спасибо за ответ!
Что бы обеспечить безопасность NAB я использую расширенную dircat, где публикуются ограниченное кол-во полей .
Почтовый шаблон смотрел, чуть с ума не сошел пока пытался разобраться в их коде.
Я нашел много ссылок на Sandbox, где должны быть примеры как раз которые мне нужны, но доступ к этому проекту зачем-то в 2010г. закрыли. В других местах я этих примеров так и не нашел.

С уважением,
Дмитрий

Ник Норкин, 25.05.2011 14:04:52:
Дмитрий, добрый день!
Очень старый пример был в своё время в лотусовой песочнице (тогда это был сайт notes.net)
про работу с адресной книгой - не всё так просто, всё-таки она имеет стратегическое значение, и выставлять её в открытый интернет нельзя
может быть, для интранет-решений это и можно использовать
Кстати, а в шаблоне почтовой базы запрашиваемого Вами примера нет?
Николай

Дмитрий, 15.05.2011 19:24:30:
Доброе время суток, Николай!
Великолепный пример!
У вас случайно нет аналогичного примера с выбором пользователя из NAB или может подскажите где такой можно найти?



Добавить комментарий
Имя * :
e-mail
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
16.04.2015 16:49:58
 
© LOGOSPHERE.RU