Html в поле

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

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#2
определенно что-то не так...
а для какого клиента?.. если для веб, попробуй пробел перед полем и после, а затем выделив поле с пробелами укстановить Pass-Thru HTML
к стати, если кода не много (до 30 КБайт), то обычное CFD-поле вполне подойдет
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#3
выделить поле и сверху выстаить галку паштру HTML
 

NetWood

Lotus team
17.04.2008
372
18
#4
(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))
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#5
так вы запутали сообщество
почему же? :)
все ясно, он хочет свой html-код запихать в поле на форме, а на странице этот значение должно преобразоваться в действительный html, а он отображается текстом, потому что домино генерит страницу таким образом, что без пассрухтмл инфа отображается как текст.

а ты приводишь код немного иного назначения. твой пример приведет к формированию страницы со скриптом уже при сохранении страницы.
 
Z
#6
а где этот пассрухтмл нати?
в дизайнере? ракажите поджробна пожалуста)
пробелы добавил ничего не изменилось. Клиент 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> ');

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

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

divankin

Senjor developer
13.08.2009
182
0
#7
Если использовать рич-текст: Поместите код в квадратные скобки.

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

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

вид поля:
 

Вложения

Z
#10
тоже самое галочка при выделении только поля не ставится.
отображается код в скобках
 
Y

Yakov

#11
Код:
	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".
 

divankin

Senjor developer
13.08.2009
182
0
#12
Попробуйте тогда вычисляемый текст. Квадратные скобки не ставьте.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#13
Если использовать рич-текст: Поместите код в квадратные скобки.
вообще-то квадратные скобки это аналог pass-thru html и не более :)

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

и сделай вычисляемым, а не редактируемым, в любом случае :)
 
Z
#14
а что означают "|" в Call stream.WriteText(

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

вообще-то квадратные скобки это аналог pass-thru html и не более :)

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

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

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

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

divankin

Senjor developer
13.08.2009
182
0
#15
1. Вычисляемость/редактируемость выставляется на форме.
2. Почему вы используете именно рич-текст поле?
3. Попробуйте просто на форме написать <h1>!!!!!</h1> и объявить его 'Код HTML'. Работает ли такой вариант?
4. Вы в браузере смотрите? (глупый вопрос, но мало ли, что)
 
Y

Yakov

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

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

zum, вы пишете код в Delphi, используя COM-интерфейс к Лотусу?
 
Z
#17
1. Вычисляемость/редактируемость выставляется на форме.
2. Почему вы используете именно рич-текст поле?
3. Попробуйте просто на форме написать <h1>!!!!!</h1> и объявить его 'Код HTML'. Работает ли такой вариант?
4. Вы в браузере смотрите? (глупый вопрос, но мало ли, что)
Клиент LotusNotes 8!
Ну мне всеравно что использовать просто ничего не работает
3. Попробуйте просто на форме написать <h1>!!!!!</h1> и объявить его 'Код HTML'. Работает ли такой вариант?
такой вариант работает
тщесть получаю
!!!!
затем мое поле которое вычисляемое значени оно выдает
<h1>!!!!!</h1>

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

zum, вы пишете код в Delphi, используя COM-интерфейс к Лотусу?
именно. потому новый клас из пустоты не получить. нужно из программы в поле записать html код в документ.
 
Z
#19
Ну, сессия и документ у вас уже должны быть. Попробуйте мой код переписать в Delphi.
ага счас этим и занимаюсь...


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

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

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

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


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

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#20
как вариант, попробуй еще в коде RTitem.update() вызвать после того как все туда запихаешь. может не успевает все операции провести.