Autor Thema: Richtext-Feld bearbeiten im FrontEnd..  (Gelesen 2349 mal)

Offline debaser

  • Frischling
  • *
  • Beiträge: 5
  • Geschlecht: Männlich
Richtext-Feld bearbeiten im FrontEnd..
« am: 31.10.11 - 09:31:10 »
Hallo zusammen,
ich bin ziemlich neu im Bereich Notes Entwicklung.. Eigentlich wurde ich einfach ins kalte Wasser geworfen mit einer Anpassung, die ich machen soll..

Es geht darum:
Wir haben in einer Datenbank eine Ansicht, in der verschiedene Dokumente nach Kunde geordnet sind. Das können Tickets, Mails, Aufgaben, Anleitungen usw. sein.
Wenn man jetzt eine Mail markiert hat und auf "Ausgehende Korrespodenz" klickt, erscheint eine Maske zum Verfassen einer Mail-Antwort.

Bisher war dann der Body-Bereich dieser Maske einfach leer, gewünscht ist jetzt, dass wie bei gewöhnlichen Mailprogrammen, die ursprüngliche Nachricht angezeigt wird und darüber halt ein Kopf mit "Ursprüngliche Nachricht vom xx.xx.2011:" steht.

Über eine Formel (@If(@IsAvailable(BODY);BODY;"")) hab ich's jetzt schonmal geschafft, den Body der markierten Mail in die neue Maske zu kopieren.
Jetzt fehlt eigentlich "nur" noch, etwas oben an dieses Richttext-Feld anzufügen.

Also dacht ich mir, ich mach einfach ein Script ins OnLoad Event, mit dem ich das Feld bearbeite.

Nach viel googlen hab ich dann herausgefundne, dass man RT-Felder im Frontend nur bearbeiten (sehen) kann, wenn das zugehörige Dokument vorher gespeichert wurde..

Wenn ich jetzt aber in meinem OnLoad Skript vorher ein "source.save" mache, springt er ja direkt zu den Querysave und Postsave Events, und bricht den Rest des Skriptes ab..

Und an dieser Stelle fehlt mir einfach Notes-Wissen, wie ich das lösen kann :(

Kann mir jemand auf die Sprünge helfen?

Danke schonmal,
Gruß
Tobi

Driri

  • Gast
Re: Richtext-Feld bearbeiten im FrontEnd..
« Antwort #1 am: 31.10.11 - 09:42:19 »
Folgendes Prozedere sollte zum Ziel führen :

- Backend-Dokument anlegen (NotesDocument)
- RichTextItem erzeugen (NotesRichTextItem)
- zusätzlichen Text einfügen (AppendText)
- Mail-Dokument holen (z.B. via UnprocessedDocuments aus der Ansicht oder als NotesUIDocument wenn es aktuell geöffnet ist)
- Übernahme des Mail-Body in das RichTextItem (AppendRTItem)
- Öffnen des Backend-Dokuments als UI-Dokument (via NotesUIWorkspace.EditDocument)

Offline debaser

  • Frischling
  • *
  • Beiträge: 5
  • Geschlecht: Männlich
Re: Richtext-Feld bearbeiten im FrontEnd..
« Antwort #2 am: 31.10.11 - 13:17:27 »
ok, danke, das klingt doch schonmal recht vielversprechend ;)

Und wo (bzw. wann) mach ich das am Besten? OnLoad wäre ja schon zu spät, oder?
Initialize?

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Richtext-Feld bearbeiten im FrontEnd..
« Antwort #3 am: 31.10.11 - 13:25:47 »
Im OnClick des Buttons "Ausgehende Korrespodenz"
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline debaser

  • Frischling
  • *
  • Beiträge: 5
  • Geschlecht: Männlich
Re: Richtext-Feld bearbeiten im FrontEnd..
« Antwort #4 am: 02.11.11 - 10:59:07 »
So, bis zum letzten Punkt bin ich jetzt schonmal gekommen..

Wie krieg ich jetzt mein fertiges RTItem in die Maske und öffne diese ?

Mit
   Set uidoc = uiws.ComposeDocument("","","Outgoing")
kann ich die Maske öffnen, kann man dabei vllt das Feld mit übergeben ?

Mit NotesUIWorkspace.EditDocument weiß ich leider nicht so recht etwas anzufangen, da mir das ja das alte Dokument öffnet..

Danke und Gruß
Tobi

Driri

  • Gast
Re: Richtext-Feld bearbeiten im FrontEnd..
« Antwort #5 am: 02.11.11 - 11:35:32 »
Du mußt das temporär im Backend erzeugte NotesDocument-Objekt an EditDocument übergeben. Dann wird Dir das auch im Frontend geöffnet.

Was ich vergessen habe, Du mußt im Backend-Dokument das Item "Form" mit dem Namen der Maske befüllen.

Offline debaser

  • Frischling
  • *
  • Beiträge: 5
  • Geschlecht: Männlich
Re: Richtext-Feld bearbeiten im FrontEnd..
« Antwort #6 am: 02.11.11 - 13:53:01 »
ok..

Also so weit ist jetzt mal mein Code:
Code
Sub Click(Source As Button)
	
	Dim session As New NotesSession
	Dim db As NotesDatabase	
	Dim collection As NotesDocumentCollection
	Dim uiws As New NotesUIWorkspace	
	Dim docIn As NotesDocument
	Dim docOut As NotesDocument
	Dim uidoc As notesuidocument
	Dim bodyOut As NotesRichTextItem
	Dim bodyIn As NotesRichTextItem
	Dim tmp As NotesRichTextItem
	
	Set db = session.CurrentDatabase
	
	Set collection = db.UnprocessedDocuments
	Set docIn = collection.GetFirstDocument
	Set bodyIn = docIn.GetFirstItem("Body")
	
	Set bodyOut = New NotesRichTextItem(docIn, "bodyOut")
	
	bodyOut.AppendText("Ursprüngliche Nachricht"+Chr(10))
	Call bodyOut.AppendRTItem(bodyIn)
	
	
	Set docOut = New NotesDocument(db)
	docOut.form = "Outgoing"
	
	Call docOut.ReplaceItemValue("Body", bodyOut)
	Call docOut.Save(False, False)
	
	Call uiws.EditDocument(True,docOut,False)
	
End Sub

Es erscheint jetzt auch die richtige Maske, allerdings leer. Wie krieg ich das Body Item da rein ? :(
Mir fehlt einfach sowas wie "docOut.setItem("Body",bodyOut)"..
Text einzufügen klappt natürlich, nur bei Richtext streikts wieder..

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Richtext-Feld bearbeiten im FrontEnd..
« Antwort #7 am: 02.11.11 - 14:24:02 »
Sub Click(Source As Button)
   
   Dim session As New NotesSession
   Dim db As NotesDatabase   
   Dim collection As NotesDocumentCollection
   Dim uiws As New NotesUIWorkspace   
   Dim docIn As NotesDocument
   Dim docOut As NotesDocument
   Dim uidoc As notesuidocument
   Dim bodyOut As NotesRichTextItem
   Dim bodyIn As NotesRichTextItem
   Dim tmp As NotesRichTextItem
   
   Set db = session.CurrentDatabase
   
   Set collection = db.UnprocessedDocuments
   Set docIn = collection.GetFirstDocument
   Set bodyIn = docIn.GetFirstItem("Body")
   
   Set bodyOut = New NotesRichTextItem(docIn, "bodyOut")
   
   bodyOut.AppendText("Ursprüngliche Nachricht"+Chr(10))
   Call bodyOut.AppendRTItem(bodyIn)

   
   
   Set docOut = New NotesDocument(db)
   docOut.form = "Outgoing" "Memo"  ???
   
   Set bodyOut = New NotesRichTextItem(docOut, "bodyOut") ???
   Call bodyOut.AppendText("Ursprüngliche Nachricht"+Chr(10))
   Call bodyOut.AppendRTItem(bodyIn)

   Call docOut.ReplaceItemValue("Body", bodyOut)
   Call docOut.Save(False, False)
   
   Call uiws.EditDocument(True,docOut,False)
   
End Sub

NACHTRAG: Ich habe keine Ahnung, mit was für einer Datenbank Du da rumbastelst. Falls es die Maildatenbank ist, heißt das Richtextfeld "Body" und die Form wird wohl eher ein "Memo" sein.

NACHTRAG 2:
statt: Call bodyOut.AppendText("Ursprüngliche Nachricht"+Chr(10))
ist besser: Call bodyOut.AppendText("Ursprüngliche Nachricht"&Chr(10))
oder bei RT ganz sauber:
Call bodyOut.AppendText("Ursprüngliche Nachricht")
Call bodyOut.AddNewLine (1)


Die Erklärung dazu findest Du hier in etlichen Beiträgen
« Letzte Änderung: 02.11.11 - 14:36:45 von Peter Klett »

Offline debaser

  • Frischling
  • *
  • Beiträge: 5
  • Geschlecht: Männlich
Re: Richtext-Feld bearbeiten im FrontEnd..
« Antwort #8 am: 02.11.11 - 14:57:35 »
yeeeah, funktioniert :)

Hast recht Peter, das Feld heißt 'body', aber die Form heißt tatsächlich 'Outgoing' (warum auch immer)
In der Datenbank steckt auch alles mögliche an Kundendokumenten drin, von dem her wird das wohl keine Maildatenbank sein.. vermut ich mal.
Ich hoff ich komm in die Thematik noch besser rein, hab noch mehr Notes-Geschichten auf meiner ToDo Liste ;)

Hab natürlich gleich die 'bessere' Variante eingebaut.. wenn man schonmal dabei ist.

Jetzt muss ich nur noch ein paar andere Felder, welche vorher über Formel gefüllt wurden, über das Skript befüllen und dann kann ich das hoffenltich abhaken.


Vielen dank für eure Hilfe, wirklich klasse wie schnell und kompetent einem hier geholfen wird :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz