• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

PassThruHTML перестаёт работать

  • Автор темы wowa
  • Дата начала
W

wowa

На кнопку прописал код из хелпа
Код:
Dim richStyle As NotesRichTextStyle
Set richStyle = s.CreateRichTextStyle
Dim richText As New NotesRichTextItem(doc, "поле1")
richStyle.PassThruHTML = True
Call richText.AppendStyle(richStyle)
Call richText.AppendText("<B>Hello</B>")

В рич-текст поле "поле1" занесено "<B>Hello</B>" Насколько я понимаю должно быть "Hello"
Что я неправильно сделал?
 
Последнее редактирование модератором:
G

Guest

Насколько я понимаю, ты просматририваешь док в вебе ? Хм..попробуй заковать код в [], это альтернативное решение:[<B>Hello</B>].
 
W

wowa

Наугад сделал поле Computed и оно сработало )
В Editable отображается html код!!!
 
Последнее редактирование модератором:

Gandliar

Lotus Team
16.02.2004
556
26
BIT
40
Привет!

Есть форма с ричтекстовым полем.
Агент при открытии через веб, заполняет это поле html кодом.
перед заполнением к полю применяю стиль PassThruHTML = true

открываю форму через веб ?readForm

Отображается отлично. Однако после какого то числа открытий 50-100 форма перестает показывать правильно и показывает так, как будто PassThruHTML = false, то есть показывает сам html.
лечится рестартом http задачи.

Причем пробовал заполнять <b>hello world</b> - все равно слетает.

сервер 5.05.

Можно ли как то побороть такую проблему?
заранее благодарю.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
помню что подобное связано когда в РТ начинается какое-то форматирование
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
мх... может разобраться с этим самым html кодом?
Ну или повысить версию сервера
 

Gandliar

Lotus Team
16.02.2004
556
26
BIT
40
Повысить в планах, но пока приходиться жить с чем есть ;)

От кода не зависит. Вот такой на очередном обновлении страницы выдает без пасс тру

Код:
Sub report_createWeb
'Функция формирует отчет под веб
Dim session As New NotesSession
Dim doc_context As NotesDocument
Set doc_context = session.DocumentContext	
Dim rtStyle As NotesRichTextStyle
Set rtStyle = session.CreateRichTextStyle
rtStyle.PassThruHTML = True	
Dim rtItem2 As New NotesRichTextItem(doc_context, "body")	
Call rtItem2.AppendStyle(rtStyle)	
Call rtitem2.AppendText("<b>helloWorld</b>")		

End Sub
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
не делать пассру в дизайне, а попытаться сделать квадратными скобками
 
A

afest

а может перезагрузку сессии/кэша? давно с таким не работал, точно не помню...
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
53
Раньше под 8-ку писал код, rtStyle.PassThruHTML = True норм работало, сейчас LN 9 FP8 - не пашет. Причём вообще, при открытии в клиенте отображает html.

Выставление MIME в свойствах поля также не помогает.

Перевод поля в Computed тоже не помогает.

Может кто-то понял причину и поборол?
 
Последнее редактирование:

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
@VladSh у меня такое после синхронизации с ODP постоянно происходит, когда с ветки на ветку переключаюсь в гите.
иногда просто помогает пересохранить элемент в UI если мы про дизайн говорим, а если про письма, то у нас так:
Set header = entity.CreateHeader("From")
Call header.AddValText(strFrom, "windows-1251")
....
Call stream.WriteText(strInText)
Call entity.SetContentFromText (stream, "text/html;charset=windows-1251", ENC_NONE)
session.ConvertMime = True

НО при этом используется тот же код:
Dim richStyle As NotesRichTextStyle
Set richStyle = doc.ParentDatabase.Parent.CreateRichTextStyle
richStyle.PassThruHTML = True
Call rtitem.AppendStyle(richStyle)

но блоки текста с тэгами, этим кодом не обрабатывается, только текст.
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
53
@savl
Не понял, как первая часть кода с MIME связана со второй.

Задача такая - получаем html, который нужно каким-то образом вставить в RT-поле. Отправлять никуда потом ненужно, чисто для документооборота.
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
Есть форма с ричтекстовым полем.
Агент при открытии через веб, заполняет это поле html кодом.
перед заполнением к полю применяю стиль PassThruHTML = true
Хм. Просто формирую текст с палочками |<tr>| и на поле показывать как HTML и все работает, уж не помню, годами.
Если надо это RTF скрыть, запихните в подформу.
1579691502300.png

'Get a handle on the fields to "print" to
Dim HTMLTable As New HTMLArea("HTMLTable")
и поехали

Код:
Const NEW_LINE = |
| 'literally a new line!

Const A_TAB = |    |

'This class makes it dead easy to get started writing a web agent.
'First line of agent is like
' Dim web as New WebSession()
'then we can call
' msgbox web.document.universalid
' etc
Class WebSession
    Public session As Notessession
    Public database As NotesDatabase
    Public agent As NotesAgent
    Public document As NotesDocument
    Public user As NotesName
    Public query As String
    Public path As String
   
    Sub New
        Set Me.session = New NotesSession
        Set Me.database = Me.session.CurrentDatabase
        Set Me.agent = Me.session.CurrentAgent
        Set Me.document = Me.session.DocumentContext
        Set Me.user = New NotesName(Me.session.commonusername) 'only any good if "Run as web user"!
        Let Me.query = Me.document.Query_String_Decoded(0)
        Let Me.path = Replace(Me.database.FilePath, "\", "/")
    End Sub
   
    Sub setUser(uname As String)
        Set Me.user = New NotesName(uname)  
    End Sub
   
    'This function borrowed from the 7.0.2 RSS template
    Function URLQueryString(sParamName) As String
        Dim sRtn As String, sTmp As String, i As Integer
        If (Len(Me.query)>1) Then
            sTmp = "&" & sParamName & "="
            i = Instr(Me.query, sTmp)
            If (i > 0) Then
                '// strip value from name=value pair
                sRtn = Mid(Me.query, i + Len(sTmp))
                i = Instr(sRtn,"&")
                If (i>0) Then
                    sRtn = Left(sRtn,i-1)
                End If
            End If
        End If
        URLQueryString = sRtn
    End Function
   
    Sub return(URL As String)
        If Left(URL, 1)<>"/" Then
            URL = "/"+URL
        End If
       
        Print "Location: " + URL
    End Sub
   
End Class

Class HtmlArea
    Private session As NotesSession
    Private doc As NotesDocument
    Private rtitem As NotesRichTextItem
    Private item As NotesItem
   
    Sub New(Byval FieldName As String)
        Set session = New NotesSession
        Set doc = session.DocumentContext
        Set item = doc.GetFirstItem(FieldName)
       
        If item.type=1 Then 'Rich text
            Set rtitem = doc.GetFirstItem(FieldName)
           
            Dim richStyle As NotesRichTextStyle
            Set richStyle = session.CreateRichTextStyle
            richStyle.PassThruHTML = True
            Call rtitem.AppendStyle(richStyle)
        End If
       
    End Sub
   
    Public Sub add(Byval snip As String)
        If item.Type=1 Then
            rtitem.AppendText snip + NEW_LINE
        Else
            item.AppendToTextList snip + NEW_LINE
        End If
    End Sub
End Class
 
Мы в соцсетях:

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