Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: schroederk am 31.08.10 - 11:44:23

Titel: HTML-Code in Body einfügen
Beitrag von: schroederk am 31.08.10 - 11:44:23
Hallo,

ich würde gerne über einen Button HTML-Code im Body einer neuen Mail einfügen, sodass dieser natürlich auch als solcher angezeigt wird.

Über
Code
@Command([EditInsertText]; @NewLine + @NewLine + "Dies ist nur ein <b>Test</b>:" + @NewLine);
wird leider der HTML-Code als Text angezeigt.

Ich denke, dass dies über das MIME-Format geregelt wird, aber wie stelle ich dies um, wenn der Body ja schon existiert?
Titel: Re: HTML-Code in Body einfügen
Beitrag von: eknori am 31.08.10 - 11:51:45
Umschliesse dein HTML mit eckigen Klammern [<b>Test</b>]
Titel: Re: HTML-Code in Body einfügen
Beitrag von: atbits am 31.08.10 - 12:03:36
@eknori: war auch meine erste Idee, funktioniert meiner Meinung nach aber nur im BE.

Für mich klingt es aber so, als wollte SchroederK das im FE machen. Warum dann eigentlich kein Richtext einfügen?

Grüße David

Jo das tut net:
Code
@Command([EditInsertText]; @NewLine + @NewLine + "[Dies ist nur ein <b>Test</b>:]" + @NewLine);
Titel: Re: HTML-Code in Body einfügen
Beitrag von: schroederk am 31.08.10 - 13:36:36
Kann ich bestätigen, funktioniert nicht. Wäre wohl auch zu einfach gewesen.  :-\

BE / FE ??

Ob Richtext oder HTML, ist mir quasi egal... Wichtig sind mir zunächst die Formatierungsmöglichkeiten wie Fett, Kursiv, unterstrichen.
Aber auch die Schriftgröße und Schriftart wechseln.

Titel: Re: HTML-Code in Body einfügen
Beitrag von: eknori am 31.08.10 - 13:48:35
Also ich füge das so und nicht anders im FE in ein RTitem ein und bei mir funktioniert das
Titel: Re: HTML-Code in Body einfügen
Beitrag von: schroederk am 31.08.10 - 13:50:01
Habe ich vielleicht noch das Problem, dass der Body bei mir noch nicht als Richtext erkannt wird und ich dies erst noch umstellen muss?
Titel: Re: HTML-Code in Body einfügen
Beitrag von: eknori am 31.08.10 - 13:51:02
Zitat
noch nicht als Richtext erkannt
Was heisst "nicht erkannt"?? Das ist eine Eigenschaft des items und wird beim Design gesetzt ...
Titel: Re: HTML-Code in Body einfügen
Beitrag von: atbits am 31.08.10 - 13:58:59
FE = FrontEnd = UI
BE = Backend

Also mit @Command(... ging es nicht

und mit

Code
Dim ws As New NotesUIWorkspace
ws.currentdocument.InsertText("[Dies ist nur ein <b>Test</b>:]")

auch nicht.

Ich mache sowas auch ganz oft im Web, oder zum Versand von Emails im Backend, aber im Frontend hat das bei mir bisher immer nur mit RichText geklappt.
Titel: Re: HTML-Code in Body einfügen
Beitrag von: eknori am 31.08.10 - 14:06:47
Ist wahrscheinlich bei mir, wie bei der Hummel, die fliegt, weil sie nicht weiss, dass sie eigentlich gar nicht fliegen kann.

Bei mir funktioniert ein

Zitat
Call workspace.currentdocument.InsertText("[<a href="""+doc.strurl(0)+""" title="""+doc.subject(0)+""""+strTmp+">"+doc.subject(0)+"</a>]")

im RICHTEXT absolut problemlos.

Aber möglicherweise bilde ich mir ja nur ein, dass es funktioniert ...
Titel: Re: HTML-Code in Body einfügen
Beitrag von: schroederk am 31.08.10 - 14:09:09
Bevor ich mich weiter falsch ausdrücke ...
 
Was muss ich machen, damit ich über einen einfachen neuen Button in einer mail85-Standard-Schablone Text so einfügen kann,
dass dieser vom Notes 8.5.1 FP4 Standard-Client so angezeigt wird, dass Textformatierungen, wie Schriftgröße und Fettdruck zu sehen sind?

Der Standard-Button sieht momentan so aus :

Code
testtext := "[<b>Alles in fett</b>]";
@Command([EditGotoField];"Body");
@Command([EditInsertText]; @NewLine + @NewLine + "Dies ist nur  ein Test:" + @NewLine + testtext);
@Command([EditGotoField];"Body");
@Command([RefreshHideFormulas]);
@Command([ViewRefreshFields])
Titel: Re: HTML-Code in Body einfügen
Beitrag von: atbits am 31.08.10 - 14:22:26
Vermutlich bin ich eher die Hummel, die auf dem Boden rumrennt, weil sie nicht weiß, dass sie fliegen kann ...  ???

Aber Fakt ist bei mir gehts nicht, in der Mail-DB , Maske Memo, Body-Field, also definitiv RT-Field.

Sowohl unter 7 als auch unter 8.5.

Allerdings ist es noch eine 7er Schablone
Titel: Re: HTML-Code in Body einfügen
Beitrag von: schroederk am 31.08.10 - 15:04:14
Dann bin ich ja schonmal froh, dass ich nicht die einzige Hummel bin, die nicht fliegt.
Titel: Re: HTML-Code in Body einfügen
Beitrag von: koehlerbv am 31.08.10 - 15:29:07
Warum arbeitest Du nicht mit den entsprechenden @Commands wie [TextBold] und Konsorten? Den rest erledigt doch dann der Client für Dich in Richtung MIME.

Bernhard
Titel: Re: HTML-Code in Body einfügen
Beitrag von: schroederk am 31.08.10 - 16:42:18
Ich möchte einen Vorgabetext einfügen.
Dieser enthält gegebenfalls eine Reihe von Formatierungsangaben, der Einfachheit in HTML-Code.
Wenn ich den Text nun analysieren muss, um Formatierungen aus dem Text zu entfernen und daraus @Commands zu stricken, wird das ziemlich aufwändig.
Jede Leerzeile, jedes Bold, jedes Kursiv, jede Schriftgröße...

Damit schränke ich mich doch auch stark ein, da ich kaum alle möglichen HTML-Codes umsetzen kann.

Ich dachte, ich müsste vielleicht einfach nur den Content-Type umstellen, damit HMTL-Code korrekt angezeigt wird.
Titel: Re: HTML-Code in Body einfügen
Beitrag von: koehlerbv am 31.08.10 - 16:52:01
Ganz falscher Ansatz, Knud: Du kannst HTML und Notes RichText nicht derart vermischen.

Bernhard
Titel: Re: HTML-Code in Body einfügen
Beitrag von: schroederk am 01.09.10 - 07:01:23
Was wäre denn der richtige Ansatz, um HTML-Code verwenden zu können?
Wie macht das denn eine HTML-Signatur, die unter Vorgaben angegeben wurde und aus einer Datei eingefügt wird?
Wenn ich eine Mail über ein anderes System verschicke, gebe ich nur den Content-Type an und schon funktioniert HTML-Code.  :-:
Titel: Re: HTML-Code in Body einfügen
Beitrag von: m3 am 01.09.10 - 08:32:24
Option 1: Du fügst Rich Text in das Memo ein, lässt den User dann noch was schreiben und lässt Notes/Domino beim Versenden die Konvertierung in HTML machen.

Option 2: Du nimmst den Text des Users entgegen und erstellst danach selber eine MIME-Message mit Content-Type, ....

Titel: Re: HTML-Code in Body einfügen
Beitrag von: schroederk am 01.09.10 - 09:42:12
Der einzufügende Text steht in einem Profildokument und soll auf Wunsch des Benutzers als Signatur eingefügt werden.
In der Regel werden dies Text-Signaturen sein (bevorzugt) aber es gibt vereinzelt Stellen, an denen bspw. Kampagnen angezeigt werden sollen. In dem Fall sind es dann formatierte Texte und auch Bilder die eingefügt werden sollen.
Das heisst, der Benutzer hat nur beschränkt Einfluss auf das, was eingefügt wird, sondern bekommt den Text vorgegeben.
Die Pflege der Texte und Kampagnen soll von Personen durchgeführt werden können, die keine Programmierkenntnisse besitzen.

Kann man denn nicht die Content-Type nachträglich noch ändern, wenn bereits eine neue Mail geöffnet wurde?
Titel: Re: HTML-Code in Body einfügen
Beitrag von: Peter Klett am 01.09.10 - 11:09:29
Wäre es dann nicht geschickter, die Signatur bereits im Profildokument in einem Richtextfeld zu erfassen und dort die Formatierung mit noteseigenen Mitteln vorzunehmen (ohne HTML und ohne irgendwelche Programmierungen)? Den Inhalt des Richtextfeldes kannst Du dann nachher entweder beim Senden anhängen oder (z.B. über die Zwischenablage) an das Ende vom Body anhängen.
Titel: Re: HTML-Code in Body einfügen
Beitrag von: schroederk am 01.09.10 - 14:18:38
Kann und werde ich wohl auch letztlich so machen.
Bleibt die Frage unbeantwortet, wie das mit den HTML-Signaturen funktioniert, die als externer Link in den Vorgaben angegeben weden können.
Titel: Re: HTML-Code in Body einfügen
Beitrag von: umi am 03.09.10 - 11:14:23
Hallo
Evtl. liegt es daran, dass Du nicht mit HTML Code anfängst.
evtl. funktioniert folgendes:
Code
Dim ws As New NotesUIWorkspace
ws.currentdocument.InsertText("[<span>Dies ist nur ein <b>Test</b>:</span>]")

FE = FrontEnd = UI
BE = Backend

Also mit @Command(... ging es nicht

und mit

Code
Dim ws As New NotesUIWorkspace
ws.currentdocument.InsertText("[Dies ist nur ein <b>Test</b>:]")

auch nicht.

Ich mache sowas auch ganz oft im Web, oder zum Versand von Emails im Backend, aber im Frontend hat das bei mir bisher immer nur mit RichText geklappt.
Titel: Re: HTML-Code in Body einfügen
Beitrag von: schroederk am 03.09.10 - 15:48:29
Leider liegt es auch daran nicht. Es wird schlicht alles so ausgegeben wie angegeben.

Ich werde wohl, wie empfohlen, die Signatur bereits in Richtext erfassen lassen, damit sind sicherlich ein paar Funktionen nicht verfügbar, aber sicherlich die meisten.
Titel: Re: HTML-Code in Body einfügen
Beitrag von: Tode am 03.09.10 - 18:31:04
Mal ne blöde Frage: Warum speicherst Du den HTML- Code nicht als File (z.B. ins Temp- Verzeichnis) und benutzt dann die NotesUIDocument.Import:

Call uidoc.Import( "HTML File" , filePath )

natürlich muss Dein Cursor an der richtigen Stelle im Richtext- Feld stehen, aber ansonsten funktioniert das wunderbar....

Hier mal ein Auszug aus einer "dynamisch" generierten Signatur:

Code
	sigHTMLs = "<HTML>"
	sigHTMLe = "</HTML>"
	sigTITLEs = "<TITLE>"
	sigTITLEe = "</TITLE>"
	sigBODYs = "<BODY>"
	sigBODYe = "</BODY>"
	sigFONT1s = |<FONT STYLE="font-size: 10pt; color: black; font-family: 'Arial'">|
	sigFONT2s = |<FONT STYLE="font-size: 8pt; color: black; font-family: 'Arial'">|
	sigFONT3s = |<FONT STYLE="font-size: 8pt; color: #00a973; font-family: 'Arial'">|
	sigFONTe = "</FONT>"
	
	tmpPath = getTmpPath
	filePath = tmpPath & "signature.html"
	On Error Resume Next
	Kill filePath
	On Error GoTo 0
	Open filePath For Output As fileNr
	Print #fileNr , sigHTMLs
	Print #fileNr , sigTITLEs & sigTITLEe
	Print #fileNr , sigBODYs
	
	Print #fileNr , sigFONT1s			
	Print #fileNr , "<BR />"
	ForAll value In arrLongSignature
		Print #fileNr , value
		Print #fileNr , "<BR />"
	End ForAll		
	If Not docCompany Is Nothing Then
		arrLongDisclaimer = Evaluate( |@Explode( CompanyDisclaimer ; @Char( 0 ) : @Char( 10 ) : @Char( 13 ) )| , docCompany )
		arrLongDisclaimer = Replace( arrLongDisclaimer , badWords , goodWords )
		ForAll value In arrLongDisclaimer
			Print #fileNr , value
			Print #fileNr , "<BR />"
		End ForAll
	End If
	Print #fileNr , "<BR />"
	Print #fileNr , "<BR />"
	Print #fileNr , sigFONTe
	Print #fileNr , sigBODYe
	Print #fileNr , sigHTMLe
	Close #fileNr
	
	Call uidoc.Import( "HTML File" , filePath )
	Kill filePath

Deklarationen fehlen, ausserdem die Funktion "getTmpPath" sowie die Information, woher docCompany kommt, aber so vom Prinzip her sollte es klar sein..

Das ganze kann man natürlich auch mit einem Stream machen...

HTH
Tode