Brief per XmlRpc im Html-Format erstellen

  • Hallo,


    habe mir per XmlRpc gerade einen Brief mit einer vorab manuell erstellten Vorlage generiert. Die Vorlage liegt im HTML-Format vor.
    Der generierte Brief wird erst einmal als Entwurf abgelegt. Soweit funktioniert alles. Meine Absender, Empfänger, etc. stimmen.
    Den Content schreibe ich im Moment in folgende Eigenschaft des RpcDetailedItem:
    RpcDetailedItem->Properties->Letter->EditorData = "mein Content...." .


    Das dort der komplette Content ist, habe ich jedoch nur durch Auslesen eines anderen Briefes entdeckt.
    Mir erscheint meine Herangehensweise jedoch noch nicht richtig, da der Inhalt dieser Eigenschaft des ausgelesenen Briefes ein komplettes Html-Dokument darstellt.
    Ich suche eine Eigenschaft "Content" bzw. "Data" der ich den Inhalt meines Briefes zuweise. Diese habe ich noch nicht gefunden.


    Weiterhin fällt mir auf, daß ich bei meinem Brief nur den Texteditor zur Verfügung habe, wenn ich diesem im Greyhound-Client bearbeiten/anschauen möchte. Die Grafikvorschau selbst wird aber zusammen mit der Vorlage korrekt dargestellt.
    Bei einem manuell erstellten Brief mit gleicher Vorlage, habe ich sowohl den Text, als auch den HTML Editor zur Verfügung.


    Wo kann ich einstellen, bzw. welche Eigenschaft muss ich setzen, damit bei meinem generierten Brief auch der HTML-Editor erscheint?


    Vielen Dank
    Stefan

  • Hallo,


    die Variable [$Data] der verwendeten Vorlage in GREYHOUND wird durch den Body-Teil der im Element hinterlegten Editor-Daten gefüllt. Außerdem wird das Stylesheet der Editor-Daten in das Template integriert. Das heißt es findet eine Analyse der Editor-Daten statt. Im kleinsten Fall enthalten die Editor-Daten z.B. soetwas:


    HTML
    1. <html><body>Hallo Welt</body></html>


    In den Editor-Daten befindet sich also immer eine korrekte HTML-Datei.


    Die Einbettungsreihenfolge für den Inhalt sieht im Vorlagensystem so aus: "Erste Seite" bzw. "Folgeseiten" bettet den "Inhalt" ein. Der "Inhalt" bettet die "Editor-Daten" nach oben beschriebenem Prinzip ein. Die daraus generierten "Anzeige-Daten" (ViewData) entstehen also durch das Zusammenwirken von 3 HTML-Dateien. Aus den inneren (per Variable) eingefügten Dateien wird jeweils der BODY extrahiert, sowie der Stylesheet ergänzt. Tieferliegende Stylesheets werden dabei hinten angefügt, damit sie die äußeren Eigenschaften überschreiben können.


    Damit GREYHOUND den Inhalt der Editor-Daten als HTML interpretiert, muss in den Elementeigenschaften per XML-RPC Schnittstelle das Flag "ifUseHtml" gesetzt sein.

  • Hallo,


    ich muß nochmal bei diesem Thema einhaken, und zwar habe ich jetzt folgendes.
    Mein Template beinhaltet Benutzerdefinierte Felder vom Typ String. In diese Felder soll HTML-Code eingebettet werden, z.B. Anrede Herr/Frau,<br>Folgende Bestellung:<br><li>Artikel1<li>Artikel2...
    Im fertigen Dokument soll das so Benutzerdef. Feld so aussehen:


    Code
    1. Anrede Herr/Frau,
    2. Folgende Bestellung:
    3. - Artikel1
    4. - Artikel2


    Jedoch wird das fertige Dokument mit den HTML-Tags generiert.
    Wenn ich jetzt den RpcDetailedItem->Properties->Letter->EditorData nach HTML encode und wieder per Put(Item) zurück in mein Item schreibe, generiert er das als Content richtig, jedoch befindet sich dieser Content in einem weiteren Brief, der wohl bei Put() erneut generiert wird.


    Ich habe jetzt wieder einmal meine Benutzterdef. Felder mit den sichtbaren HTML-Tags und einmal den zuvor generierten Brief als Content (jedoch korrekt).


    Wo muss ich denn dabei ansetzen oder kann ich bereits beim Setzen der Benutzerdefinierten Felder die Sache beeinflussen. (HTML_Decodierung hat mir nicht weiter geholfen, dann hatte ich die HTML-Tags decodiert in den Feldern)


    Danke.

  • Dazu eine Frage meinerseits: Laut Doku kann auf Item.ViewData lesend und schreibend zugegriffen werden. Der Versuch einen einfachen Text per Quelltext in das Element rein zu bekommen scheitert jedoch und einen passenden Regelknoten gibt es nicht.


    Nachfolgendes Beispiel sollte in meiner Vorstellung das Thema des Elements in den Content-Bereich rein schreiben:


    Code
    1. Item.ViewData := (Item.TopicCache.GetNameById(Item.TopicRef));


    Geh aber nich 8|


    Lieben Gruß

  • Hallo,


    also das eine ist XML-RPC (ursprüngliches Thema) und deine Frage bezieht sich auf die Skriptsprache. Du hast recht, die Doku ist hier falsch. Habe ich entsprechend korrigiert. ViewData ist nur lesend. Wenn du die Editor-Daten verwenden willst, musst du Item.Properties entsprechend des Elementtyps casten. Zum Beispiel so:


    Code
    1. TFbmItemEmailProperties(Item.Properties).EditorData := 'Hallo Welt';
  • Sorry für das Schreiben im falschen Beitrag.


    Das was du schriebst führt zu einem Teilerfolg. Der Wert 'Hallo Welt' ist nach einem so veränderten Element in diesem nur dann zu sehen wenn man das Element öffnet (und somit den Editor offen hat). Die Vorschau zeigt nix und gefunden (oder in meinem Fall: klassifiziert) wird das Element auch nicht. Was du mit "casten" meinst habe ich natürlich auch nicht verstanden. :whistling:


    Lieben Gruß

  • Hallo,


    was casten ist, erkläre ich nun lieber nicht genauer, das würde ein längerer Beitrag. Im Grunde ist es eine Typumwandlung. Hier steht, wie es gemacht wird: http://greyhound-software.com/…/Item.TFbmItem.Properties


    Die Editor-Daten müssen HTML sein, wenn das Element das Flag/die Eigenschaft "ifUseHtml" gesetzt hat. Fehlt das Flag, dürfen die Editor-Daten nur aus Text bestehen. Das ganze war nur ein kurzes Quick-And-Dirty Beispiel.

  • Hi Oliver,


    :thumbsup: Jetzt hat es geklappt. Ich habe das Thema nun wie folgt in den Content (des Termins) reingeschrieben:


    HTML
    1. TFbmItemAppointmentProperties(Item.Properties).EditorData := '<html><body>' + Item.TopicCache.GetNameById(Item.TopicRef) + '</body></html>';


    Many Thx!