Spezielle Signatur

  • Hallo,
    ich bräuchte wieder mal eure Hilfe zu folgender Aufgabe:


    Bei jedem neuen Mail, neuer Antwort bzw. beim Weiterleiten soll zuerst mal eine Abfrage kommen (Wahl zw. A und B) und dann der jeweilige Text, der hinter A bzw. B steht sofort in diesem Mail rein-kopiert werden. Also so ähnlich wie die automatische Signatur, nur halt programmierfähig (der zu einfügende Text steht in einer Notes-DB und ist individuell).


    Also da ich mich mit Script relativ gut auskenne, ist die Programmierung nicht das Problem. Aber wo kann ich das einbauen? Java kann ich nicht!
    Was für eine Lösung schlagt Ihr vor?
    Wie kann ich vorgehen?


    LG

  • ok, ich schaff's doch nicht :(


    Sub Postopen(Source As Notesuidocument)
    Call cMemoObject.PostOpen(source)
    If source.editmode And Not (source.isnewdoc) Then
    Call cMemoObject.querymodechange(source)
    Call cMemoObject.postmodechange()
    End If

    '*** NEU
    Dim doc As Notesdocument
    Set doc = Source.document
    Dim richText As New NotesRichTextItem(doc, "Body")
    Call richText.AppendText("test test")
    End Sub


    Mist, das Bodyfeld bleibt leer. Was mach ich falsch?

  • Abaendern in:


    Code
    Dim doc As Notesdocument
    Set doc = Source.document
    Dim richText As New NotesRichTextItem(doc, "Body")
    Call richText.AppendText("test test")
    doc.save true,true


    Also das Speichern net vergessen und danach das Dokument schliessen und wieder oeffnen.
    Was mich nur wundert...der Code scheint bei Dir im Postopen zustehen. Wenn also jemand das Dokument im Normalfall zum Lesen oeffnet, passiert nix. Wenn er dann in den Editmode umschaltet, passiert auch nix.
    War das so gewollt??

  • Sicher, ich muß ncoh isnewdoc hinzufügen - das ist ja auch nur als grundsätzlicher Test vorgesehen.


    Doc.save kann ich nicht verwenden, da er 1. den Text in dem neuen Mail trotzdem nicht anzeigt und 2. selbst wenn ich das Mail abbreche, dieses unter den Entwürfen gespeichert ist.

  • Über das backend wird das so nicht (einfach) funktionieren. Hier ist das Frontend gefragt.
    Stichworte:
    NotesUIDocument.GotoField
    NotesUIDocument.Copy
    NotesUIDocument.Paste
    etc.


    Und da Du Dich mit LotusScript gut auskennst (aber komischweise noch nie mit ScriptLibraries gearbeitet hast), sollte das dann kein Problem mehr darstellen.
    Die zu kopierenden Texte kannst Du ohne weiteres aus beliebigen anderen (Setup-)Docs holen. Wenn es auf die Formatierung nicht ankommt, kann man auch NotesUIDocument.InsertText arbeiten. Erspart das Öffnen von Setup-Documents im EditMode.


    Bernhard


    PS: Und ja -Du musst in alle betroffenen Masken separat eingreifen - der Kontext ist ja auch jedes Mal anders.

  • warum sollte das sein?
    Und wenn ich source.Gotofield("Body"), dann bleibt er einfach im An-Feld stehen, als ob nichts wäre (ohne Fehlermeldung)
    Nur mit Call source.GotoBottom geht er ins Thema-Feld.

  • Sehr komisch! Bin aber jetzt draufgekommen, wenn ich danach ein
    Call source.GotoNextField
    Call source.InsertText( "test Test" )


    mache, dann schreibt er den Text sehr wohl ins Body-Feld, aber der Cursor bleibt im Thema-Feld???


    Na gut, soll nicht weiter tragisch sein.


    Danke nochmals

  • hab jetzt so weit alles beisammen:


    If source.IsNewDoc Then
    Dim ws As New NotesUIWorkspace
    Dim response As Variant
    Dim a As String
    Dim values(1) As Variant
    values(0) = "Deutsch"
    values(1) = "Englisch"
    Dim s As New NotesSession
    Dim notesName As New NotesName( s.username )



    Dim db As New NotesDatabase( "MeinServer", "MeineDB" )
    Dim view As NotesView
    Dim entry As NotesViewEntry
    Dim doc As NotesDocument
    Set view = db.GetView("MT")
    Set entry = view.GetEntryByKey(notesName.Common)
    Set doc = entry.Document

    response = ws.Prompt (PROMPT_OKCANCELCOMBO, "Variante", "Deutscher oder Englischer Text?", values(0), values)
    If response="Englisch" Then a=doc.MT_Text2(0) Else a=doc.MT_Text(0)
    Call source.GotoBottom
    Call source.GotoNextField
    Call source.InsertText( a )
    Call source.GotoField ("EnterSendTo")
    End If


    Funktioniert bei einem neuen Mail, Weiterleiten, Antwort und Allen Antworten.
    Wenn ich aber bei Antwort und Allen Antworten MIT Protokoll verwende, schreibt er es mir in das Thema Feld???
    Noch eine Idee?

  • Kann mir mal einer verraten, warum ihr die Verrenkungen im POSTOPEN machen wollt ? Es ist doch um Klassen einfacher, wenn man sich im QUERYOPEN bei einem neuen Dokument das SOURCE.DOCUMENT schnappt und dem einen vorbefüllten RT-ITEM BODY mitgibt. Dessen Inhalt wird dann sogar direkt angezeigt und du brauchst kein Re-Open oder das Gewurschtel im Frontend-Dokument.


    Wenn es beim Weiterleiten funktionieren soll, muß man das noch einmal testen, denn vermutlich entstehen dann zwei BODY-Felder, von denen das zuerst im QUERYOPEN erzeugte oben angezeigt wird. Dann kommst du möglicherweise tatsächlich ums POSTOPEN nicht drumherum.


    Wenn ich lese, daß der "auswählbare Inhalt" aus einer Notes-DB stammt, stelle ich mir den Außendienstler vor, der im Hotel sitzt und keine Mail erstellen kann, weil die Konstrukteure der Lösung nicht an den Offline-Betrieb gedacht haben - und das Ganze wegen eines Disclaimers in zwei Sprachen.


    Das Ganze ist irgendwie ein "Beaujolais primeur" - meint: noch nicht ganz ausgegoren.


    Gruß


    Norbert

  • Hmm, aber da ich jetzt schon so angefangen hab (und es ganz toll funktioniert) würde ich es gerne so beenden.
    Ahh, man muß nur ein 2. Call source.GotoNextField verwenden.


    Die Offline-Personen hab ich nicht vergessen, da kommt noch eine Abfrage... aber danke für den Hinweis

  • Hi Jinja!
    Ich finde Deine Idee mit der speziellen Signatur und den individuellen "Textbausteine" eine recht ansprechende Idee bzw. Lösung. Mich würde interessieren, mit welcher Schablone Du Deine "Text-Datenbank" erstellt hast und Du die einzelnen Variablen deklariert hast?


    Gruss Frank!