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

Тема в разделе "Lotus - Программирование", создана пользователем Idea, 23 мар 2007.

  1. Idea

    Idea Гость

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

    oshmianski Гость

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

    GROMILA Well-Known Member

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

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

    Idea Гость

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

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

    oshmianski Гость

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

    Idea Гость

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

    oshmianski Гость

    Для: Idea
    search in help "file Upload control"
     
  8. Idea

    Idea Гость

    Спасибо огромное!!!
     
  9. Idea

    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 в календаре пользователя, если нужно, и Создает новый документ-лог, переписывая в него значения некоторых полей.
     
  10. oshmianski

    oshmianski Гость

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

    Idea Гость

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

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

    oshmianski Гость

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

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

    Вложения:

    • Forms_CSS.rar
      Размер файла:
      305,5 КБ
      Просмотров:
      53
  13. Idea

    Idea Гость

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

    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'+'редактируется поле название_поля';
    тут опять же нюанс - сколько раз будет редактироваться поле, столько раз будет писаться об этом в историю.

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

    Idea Гость

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

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

    oshmianski Гость

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

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

    Idea Гость

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

    Idea Гость

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

    oshmianski Гость

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

    Idea Гость

    Спасибо большое. Такая штука меня вполне устраивает.
     
Загрузка...

Поделиться этой страницей