Html в поле

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

  1. zum

    zum Гость

    Здраствуйте, может это где уже обсуждалось только я не нашел.
    Суть проблемы такая нужно запихать некий html код в поле.
    Какой тип поля для этого выбрать?
    использую
    body:=mydoc.CreateRichTextItem
    только отображается сам код...
    что я делаю не так?
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    определенно что-то не так...
    а для какого клиента?.. если для веб, попробуй пробел перед полем и после, а затем выделив поле с пробелами укстановить Pass-Thru HTML
    к стати, если кода не много (до 30 КБайт), то обычное CFD-поле вполне подойдет
     
  3. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    выделить поле и сверху выстаить галку паштру HTML
     
  4. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    (0) так вы запутали сообщество. говорите про поле, а сами пример LS приводите.
    вот кусок LS из агента по WQS
    ----------------
    lasturl = Strleft(Strright(src.HTTP_Cookie(0), "_lasturl="),";")
    Print({<script language=Javascript>} & Chr(10))
    If Cstr(lasturl) = "" Then
    ''Редирект на корзину
    Print({location.href=location.pathname.split('.nsf')[0] + '.nsf/'+"Cart?OpenForm"} & Chr(10))
    Else
    '' Редирект на lasturl
    Print({location.href="} & lasturl & {"} & {;} & Chr(10))
    End If
    Print({</script>} & Chr(10))
     
  5. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    почему же? :)
    все ясно, он хочет свой html-код запихать в поле на форме, а на странице этот значение должно преобразоваться в действительный html, а он отображается текстом, потому что домино генерит страницу таким образом, что без пассрухтмл инфа отображается как текст.

    а ты приводишь код немного иного назначения. твой пример приведет к формированию страницы со скриптом уже при сохранении страницы.
     
  6. zum

    zum Гость

    а где этот пассрухтмл нати?
    в дизайнере? ракажите поджробна пожалуста)
    пробелы добавил ничего не изменилось. Клиент LotusNotes 8
    вот код:

    body.AppendText('<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">'+
    '<html><head>' +
    '<title>Title</title>'+
    '</head><body>' +
    '<h1>Not Found</h1>'+
    '<p>Hello!</p>'+
    '<hr>'+
    '</body></html> ');

    сохраняю документ открываю.. и там в строчку весб мой код.

    да у меня еще клиент и дизайнер на руском )
     
  7. divankin

    divankin Senjor developer

    Регистрация:
    13 авг 2009
    Сообщения:
    182
    Симпатии:
    0
    Если использовать рич-текст: Поместите код в квадратные скобки.

    Для использования Path-throw html:
    1. Выделите на форме текст, поле и/или вычисляемый текст, содержащий html
    2. Меню Text->Path-throw html (как это будет в русском дизайнере - не знаю. В моем 6-м дизайнере это четвертый пункт в меню Текст)
     
  8. zum

    zum Гость

    Это оно?
    если оно то мне не помогло
    вижу на форме мой код в скобках []

    это если выделить вместе с полем строчку перед ним или после него, а потом зати в то меню стоит галка Код html
    а если выделить поле отдельно то эту галку поставить нельзя!
    Нажимаешь а она не ставится...
    наверно причина в этом.
    может быть не то поле использую?

    вид поля:
     

    Вложения:

  9. divankin

    divankin Senjor developer

    Регистрация:
    13 авг 2009
    Сообщения:
    182
    Симпатии:
    0
    Попробуйте обычное поле.
     
  10. zum

    zum Гость

    тоже самое галочка при выделении только поля не ставится.
    отображается код в скобках
     
  11. Yakov

    Yakov Гость

    Код (Text):
        Dim session As New NotesSession()
    Dim stream As NotesStream
    Dim body As NotesMimeEntity

    Set stream = session.CreateStream()
    session.ConvertMIME = False
    Set body = document.CreateMIMEEntity("Body")

    Call stream.WriteText(|<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>Title</title>
    </head><body>
    <h1>Not Found</h1>
    <p>Hello!</p>
    <hr>
    </body></html>|)

    Call body.SetContentFromText(stream, {text/html; charset="UTF-8"}, ENC_IDENTITY_BINARY)
    Call document.CloseMIMEEntities(True)
    session.ConvertMIME = True
    + на второй вкладке свойств RT-поля поставить галку "Store content as HTML and MIME".
     
  12. divankin

    divankin Senjor developer

    Регистрация:
    13 авг 2009
    Сообщения:
    182
    Симпатии:
    0
    Попробуйте тогда вычисляемый текст. Квадратные скобки не ставьте.
     
  13. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    вообще-то квадратные скобки это аналог pass-thru html и не более :)

    zum, а для чего ты в поле пихаешь весь код страницы?
    запихни только <h1>Not Found</h1>, остальное лотус уже сгенерит сам, если Content type в свойствах формы Notes (вторая закладка, On web access)

    и сделай вычисляемым, а не редактируемым, в любом случае :)
     
  14. zum

    zum Гость

    а что означают "|" в Call stream.WriteText(

    это синтаксис lotus script такой?

    а как мне его сделать вычисляемым если, у меня вот так:
    body:=mydoc.GetFirstItem('Body');
    body.Remove;
    body:=mydoc.CreateRichTextItem('Body');

    у нового боди есть такое свойство?

    поставил вычисляемым
    я записал в поле "[<h1>!!!!!</h1>]"
    при открытии документа совственно отображается опять код
    без скобок тоже самое
     
  15. divankin

    divankin Senjor developer

    Регистрация:
    13 авг 2009
    Сообщения:
    182
    Симпатии:
    0
    1. Вычисляемость/редактируемость выставляется на форме.
    2. Почему вы используете именно рич-текст поле?
    3. Попробуйте просто на форме написать <h1>!!!!!</h1> и объявить его 'Код HTML'. Работает ли такой вариант?
    4. Вы в браузере смотрите? (глупый вопрос, но мало ли, что)
     
  16. Yakov

    Yakov Гость

    Да, это такой синтаксис. Если строковая константа занимает несколько строк, ее можно заключить либо в фигурные скобки {}, либо в "вертикальные палочки" ||.

    zum, вы пишете код в Delphi, используя COM-интерфейс к Лотусу?
     
  17. zum

    zum Гость

    Клиент LotusNotes 8!
    Ну мне всеравно что использовать просто ничего не работает
    3. Попробуйте просто на форме написать <h1>!!!!!</h1> и объявить его 'Код HTML'. Работает ли такой вариант?
    такой вариант работает
    тщесть получаю
    !!!!
    затем мое поле которое вычисляемое значени оно выдает
    <h1>!!!!!</h1>

    именно. потому новый клас из пустоты не получить. нужно из программы в поле записать html код в документ.
     
  18. Yakov

    Yakov Гость

    Ну, сессия и документ у вас уже должны быть. Попробуйте мой код переписать в Delphi.
     
  19. zum

    zum Гость

    ага счас этим и занимаюсь...


    из всего замеченно
    создал вычисляемое значение, кторое отображает мое поле боди
    в боди <h1>!!!</h1>
    открываю документ
    вижу

    <h1>!!!</h1> -из боди
    !!! -из вычисляемого значения

    меня в программе значения поля на <h1>Из проги!</h1>

    вижу
    <h1>Из проги!</h1> - из боди
    вычиляемое значение пусто уже ничего не отображает
    Кто самый умный? в чем же всетаки проблема?


    =============================================================
    перевел код
    результат 1 в 1 описанный выше
    только плюс возникает ошибка при вызове функции mydoc.Sign; (подписание документа)
    не знаю как это ваще связанно...
    раньше отрабатывала без проблем.
     
  20. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    как вариант, попробуй еще в коде RTitem.update() вызвать после того как все туда запихаешь. может не успевает все операции провести.
     
Загрузка...

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