База и для клиента и для Веба

  • Автор темы Idea
  • Дата начала
I

Idea

Имеется рабочая база, замечательно работающая под клиентом. И тут начальство потребовало, чтоб она могла всё делать и под вебом.
Так вот вопросы, есть у меня поля на форме, например типа DialogList, чтоб пользователь мог и значения из списка выбрать и свое дописать, в веб оно стало просто текстовым, как это поправить можно?
Ещё есть поля типа Names, как их "научить" под вебом брать значения из ACL?
И ещё такой принципиальный вопрос - как вообще делается переход под веб? Мне в голову не пришло ничего умнее, как продублировать все элементы формы, настроить их под веб, и хранить в документе информацию одну и ту же в двух видах полей - настроенном для клиента и для веба. Сказать, что это огромные трудозатраты - это не сказать вообще ничего. Есть ли выход с малой кровью?
Основная загвоздка в том, что события обрабатываю как правило на Лотус скрипте, а под вебом, на сколько я поняла местами можно только на Джава скрипте, который в глаза не видела. То есть большая проблема, как перевести с "английского на албанский" )
 
O

oshmianski

Для: Idea
обычно используются две формы. называются одинаково, но одна используется для Notes, другая для Web - галочки у элемента дизайна в списке справа.
а вообще, если хотите полноценный веб дизайн нарисовать, то скачайте с BlogSphere и разберитесь с ней.
 
G

GROMILA

Я не спец в лотусе под Web,
но по опыту разработки на PHP могу сказать, что некоторые подходы взаимодействия с пользователем прийдется перепрограммировать даже с усечением функционала.

Заявленные чудеса о легкой разработке в Lotus под Web думаю сведутся к написанию двух программ. Две формы, Два диалога, Два обработчика, но в одной единой среде разработки :)
 
I

Idea

Ограничение функциональности-то допускается. Есть просто несколько ключевых моментов, которые под веб обязаны в работать. Так например системка уведомлений (создание в базе мейл Ремаиндера и Линк месседжа) и прикрепление файлов.

Смотрю вот примеры всяких вещей как будто для веба (Blog Sphere и сайтик на лотусе) - всё на собаках и лотус скрипт - как так? Если собаки работают нормально, то почему Button
Код:
@Command([EditGotoField]; "Description");
@Command([EditInsertFileAttachment]);
@Command([ViewRefreshFields])
ну или хотя бы
Код:
@Command([EditGotoField]; "Description");
@Command( [FileImport] );
@Command([ViewRefreshFields])
ничего не делает в браузере?
Видимо я чего-то не понимаю.
 
O

oshmianski

Для: Idea
эти собаки не работают в web. почитайте внимательно хелп по ним на предмет наличия фразы "This command does not work on the Web."
 
I

Idea

Для: Idea
эти собаки не работают в web. почитайте внимательно хелп по ним на предмет наличия фразы "This command does not work on the Web."

а как же тогда файлы прикрепить?
я вот который день роюсь в хелпе и не могу понять вещь - если мне нужно работать в вебе с полями документа, предварительно соответственно открыв его на редактирование, я должна написать на собаках открытие дока и вызвать агент, чтоб он ну например тот же файлик прикрепил? просто сколько я не смотрела в хелпе, все примеры даны с созданием нового файла, а как обратится к текущему документу в JS - я так и не нашла(
 
I

Idea

Продолжаю издеваться над базой. Решила попробовать что-нибудь сотворить с агентами.
Вопрос: могут ли агенты, вызываемые WebQuerySave вообще быть написаны на LotusScript?
и если да, что может быть причиной ошибки
HTTP Web Server: Lotus Notes Exception - Error validating user's agent execution access
(агент Shared, On event, Target - None, Allow restricted operations,доступ All readers and above)?
Вообще агент создает Reminder в календаре пользователя, если нужно, и Создает новый документ-лог, переписывая в него значения некоторых полей.
 
O

oshmianski

Для: Idea
пользователь, которым подписывается агент, должен обладать соответствующими правами. см. в конфигурационном документе сервера "Run unrestricted methods and operations:" и "Run restricted LotusScript/Java agents:"
 
I

Idea

Для: oshmianski
ещё раз спасибо, надеюсь с админом разберемся...как только он на работе появится...)

Такой вопрос: делаю Onchange обработку полей для веб. Суть такая - когда док открываем на редактирование, в служебное поле должно писаться "док редактировался", дальше, если меняется какое-то поле, то в событии onchange я прописываю - дописать в это служебное поле, что конкретно изменили.
На кнопку редактирования висит
Код:
 @Command([EditDocument]);
@SetField("HistText"; "Документ редактировался:");
@Command([ViewRefreshFields]);
@Command([RefreshHideFormulas])
но так как ViewRefreshFields в веб срабатывает судя по хелпу, только если все написано на JS (явно не мой случай), становится вопрос - как быть?
Само поле HistText вычисляемое с вот таким значением: @If(@IsNewDoc;"Документ создан";HistText)
В форме на JSHeader повесила
Код:
 var Note
function raLog(editText)
{
Note.HistText.value += editText;
}
а в Onchange вызываю например raLog("Тип документа был изменен")
В итоге получаю ошибку: Note.HistText - есть null или не является объектом.
Как выйти из этого порочного круга?
 
O

oshmianski

Для: Idea
1. разберитель с механизмом обращеня к полям на JS.
2. нужно учесть, что если у формы не выставлено свойство генерации HTML для всех полей, то скрытые лотусовыми средствами (hide when) поля не будут видны в вебе для JS, поэтому их скрывать нужно с помощью CSS (display).

зы: в прикрепленном файле описание работы с полями формы и описание CSS
зызы: особо обратите внимание на то, что JS - регистрозависим. я кучу дров на этом наломал :)
 

Вложения

  • Forms_CSS.rar
    305,5 КБ · Просмотры: 198
I

Idea

Для: Idea
1. разберитель с механизмом обращеня к полям на JS.
2. нужно учесть, что если у формы не выставлено свойство генерации HTML для всех полей, то скрытые лотусовыми средствами (hide when) поля не будут видны в вебе для JS, поэтому их скрывать нужно с помощью CSS (display).

Спасибо ещё раз, учла на будущее на счет скрытого поля, но в данном случае я проверяла все с видимым полем HistText, у меня сложилось впечатление, что все это безобразие из-за того, как прописано вычисляемое значение и не срабатывания @SetField. Как мне можно по-другому установить значение поля при открытии документа на редактирование в веб?
 
O

oshmianski

Для: Idea
1. для отслеживания перевода формы на редактирование в onLoad формы запишите
if(document.forms[0].HistText){
document.forms[0].HistText.value=document.forms[0].history.HistText+'\n'+'Документ редактировался';
}
честно говоря, это никогда не использовал и за правильность работы не могу ответить.
поле HistText должно быть многозначным и строки должны разделяться новой строкой.

2. для отслеживания редактирования поля, в onChange этого контролируемого поля напишите
document.forms[0].HistText.value=document.forms[0].history.HistText+'\n'+'редактируется поле название_поля';
тут опять же нюанс - сколько раз будет редактироваться поле, столько раз будет писаться об этом в историю.

зы: а зачем такие извраты нужны то?
 
I

Idea

зы: а зачем такие извраты нужны то?

Знаете ли не раз уже у меня это спрашивали, в общем начальник считает, что надо так)
а что значит в document.forms[0].history.HistText часть history? для чего она?

прописала, похоже OnLoad не срабатывает - значение поля не меняется, соответственно далее выдал щас ту же фигню - document.forms[0].HistText - null или не является объектом
 
O

oshmianski

Для: Idea
1. document.forms[0].history.HistText - это я просто у себя тестировал, а у меня поле называется history, вот и осталось после Ctrl+C Ctrl+V. конечно же нужно document.forms[0].HistText...

2. onLoad срабатывает. у вас на форме есть поле с названем HistText? оно должно быть редактируетмое.
 
I

Idea

Ещё раз спасибо, кажется с полями все получилось! :rolleyes: ура!
 
I

Idea

Запасаемся валерьянкой) новое извращение с полями)
как можно реализовать в вебе поле аналогичное Names, чтоб список пользователей был (если можно было бы подрубить че-нить стандартное, типа ACL или адресной книги - было бы вообще зашибись) и множественная выборка?
 
O

oshmianski

Для: Idea
нет стандартного решения. по крайней мере, я не знаю. вот почитайте
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!