Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webbroker. PageProducer und transparente HTML-Tags (https://www.delphipraxis.net/189600-webbroker-pageproducer-und-transparente-html-tags.html)

Delbor 28. Jun 2016 21:17

AW: Webbroker. PageProducer und transparente HTML-Tags
 
Hi Sir Rufo

Zitat:

Bei mir funktiniert das mit dem PageProducer nur dann, wenn ich <#TAG> im Template schreibe, dann wird auch der Event passend gefeuert.
Interessant. Scheint also eine Sache der Optionen zu sein.

Zitat:

Ausgaben wie z.B. />--> sind eher ein Hinweis, dass dein Template schon mal etwas durcheinander ist.
Das sind keine Ausgaben, sondern die HTML-Auskommentierungszeichen. Die brauchte ich eigentlich ausschliesslich bei der Entwicklung. Und da diese noch nicht wirklich abgeschlossen ist, hab ich einge davon stehen lassen (erspart nervende Tipparbeit).


Gruss
Delbor

Sir Rufo 28. Jun 2016 22:14

AW: Webbroker. PageProducer und transparente HTML-Tags
 
Aha, und die sollen beim Rendern auch tatsächlich angezeigt werden?

Öh, Optionen, öh, PageProducer auf die Form geklatscht, das war es mit den Optionen

Delbor 29. Jun 2016 05:57

AW: Webbroker. PageProducer und transparente HTML-Tags
 
Hi Sir Rufo
Zitat:

Aha, und die sollen beim Rendern auch tatsächlich angezeigt werden?
Nein, latürnich nicht - aber mir fällt ein, da war/ist ein einzelnes 'Winkeleisen', das tatsächlich angezeigt wird. Und das muss natürlich weg.
Vergessen ging das, weils momentan wichtigeres gibt, als so ein kleines 'Winkeleisen' das unverschämt frech hinter dem Bühnenvorhang hervorlugt.
Aber Danke für den Hinweis!

Zitat:

Öh, Optionen, öh, PageProducer auf die Form geklatscht, das war es mit den Optionen
Hast recht - Optionsmöglichkeiten gibt es zumindest unter den Projectoptionen nicht sehr viele, und ob es unter <Tools/Optionen> überhaupt sowas für HTML gibt, müsste ich erst nacchsehen, bezweifle das aber (könnte aber auch genau umgekehrt sein...).

Aber manchmal hilfte es, ein Problem zu überschlafen dann könnte einem etwa einfallen, das sämtliche neue Actionitems erst mal Enabled sind und somit abgearbeitet werden. Zumindest glaube ich, die Help so in Erinnerung zu haben. Werde ich austesten, wenn ich wirklich wach bin...

Gruss
Delbor

Sir Rufo 29. Jun 2016 06:42

AW: Webbroker. PageProducer und transparente HTML-Tags
 
Dieses "unwichtige Winkeleisen" sollte eigentlich der Abschluss von einem Kommentar in deiner Html Seite sein
Delphi-Quellcode:
<!-- Kommentar -->
ist er aber nicht mehr (darum wird das beim Rendern ausgegeben).

Ergo passt etwas an deiner Struktur nicht und es befinden sich Teile darin, die eigentlich auskommentiert werden sein sollten, es aber nicht sind.

Du fragst dich, warum da irgendwas doppelt erscheint und tust so einen Hinweis auf einen Strukturfehler (der alles Mögliche bewirken kann) als unwichtig ab. :roll:

Na denn, wenn du bereit bist für einen lösungsorientierten Ansatz dann gib einfach Laut.

Delbor 29. Jun 2016 10:34

AW: Webbroker. PageProducer und transparente HTML-Tags
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hi Sir Rufo
Nachdem ich nun bei den Kommentaren etwas aufgeräumt habe, habe ich auch mal Tests mit der Formatierung des Tagnamens duchgeführt. Dabei öffnete ich die Datei im Explorer.
Das erste Bild zeigt dabei den Quellcode, wie er per <Quellcode anzeigen> angezeigt wird. Das einleitende rote Kommentarzeichen steht so nicht in der Originaldatei, sondern wird offensichtlich durch den falsch formatierten Tagnamen erzeugt (<XXX<!).
Das zweite Jpeg zeigt die Seite, wie sie per Doppelklick im Explorer geöffnet wird, wenn der Tagname mit der abschliessenden Spitzklammer geschrieben wird. Und das dritte Bild zeigt schliesslich das Resultat im Browser.

Zitat:

...das sämtliche neue Actionitems erst mal Enabled sind und somit abgearbeitet werden. Zumindest glaube ich, die Help so in Erinnerung zu haben.
Da hat mir meine Erinnerung einen Streich gespielt.

Gruss
Delbor

Jumpy 29. Jun 2016 10:58

AW: Webbroker. PageProducer und transparente HTML-Tags
 
Also ein Tag für den Page-Producer muss definitiv so aussehen: <#Irgendwas>.
Das ist dann kein HTML-Tag, hat auch nichts mit HTML zu tun, sondern ist nur sowas wie eine "Textmarke" für den PageProducer, wo er irgendwas im Text ersetzen muss/soll. Nur für den Fall, dass das irgendwie noch verwechselt wurde.

Der Page-Producer parst ja denke ich mal das HTML-File, dass er als Vorlage bekommt, und der parser kommt dann schwer durcheinander, wenn da wilde < oder # oder > in Kommentaren oder ausserhalb stehen und produziert seltsame Ergebnisse.

Deswegen wie Sir Rufo sagte: In der HTML-Vorlagen-Datei: Alle Kommentare raus. Nur das minimale was man haben möchte rein, so dass es geht. Dann nach und nach neue Dinge einbauen. Sonst kommt man nur durcheinander und findet vor lauter Tags dem Fehler nicht.

In deinem HTML weiß ich z.B. auch nicht was <#Image/> sein soll. Auch ein Tag für den PageProducer? Soll da der Bildname nur eingesetzt werden, dann vllt. eher: <img <#MyImage>/>. Wobei den Slash brauchst eigentlich auch nur bei XHTML mein ich.

Sir Rufo 29. Jun 2016 11:38

AW: Webbroker. PageProducer und transparente HTML-Tags
 
Nun ja, Kommentare kann man da schon rein machen - wenn man sich die HTML-Struktur nicht zerhaut.
(siehe meine Signatur :stupid:)

Ich hatte nur keine Lust für ihn die Vorlage zu entlausen ;)

Das mit dem Image würde ich eher so lösen:
  • Im Template:
    Delphi-Quellcode:
    <#IMAGE foo>
  • In der Tag-Methode:
    Delphi-Quellcode:
    procedure TFoo.PageProducer1HTMLTag(
      Sender        : TObject;
      Tag           : TTag;
      const TagString: string;
      TagParams     : TStrings;
      var ReplaceText: string );
    begin

      case Tag of
        tgCustom:
          ReplaceText := GetCustomTag( TagString, TagParams );
        tgLink:
          ReplaceText := GetLinkTag( TagParams );
        tgImage:
          ReplaceText := GetImageTag( TagParams );
        tgTable:
          ReplaceText := GetTableTag( TagParams );
        tgImageMap:
          ReplaceText := GetImageMapTag( TagParams );
        tgObject:
          ReplaceText := GetObjectTag( TagParams );
        tgEmbed:
          ReplaceText := GetEmbedTag( TagParams );    
      end;

    end;
Der Aufruf der Methode erfolgt für den Tag mit den Werten
  • Tag: tgImage
  • TagString: IMAGE
  • TagParams: foo
Die Dokumentation könnte einen dazu veranlassen zu glauben, dass die Tags für img, table, etc. automatisch dazugefügt werden: Dem ist nicht so, man muss genau das zurückliefern, was man in der HTML-Datei stehen haben möchte.

Für den Tag oben kann amn also z.B. ein
Delphi-Quellcode:
<img src="./images/foo.jpg"/>
zurückliefern.

Delbor 29. Jun 2016 12:26

AW: Webbroker. PageProducer und transparente HTML-Tags
 
Hi Jumpie
Woher das Image-Tag genau kommt, weiss ich nicht mehr. Wie schon angedeutet, stammen diese Dateien aus meinen ersten Webbroker-Test; ich denke, dieses Tag hat sich damals "eingeschlichen", als ich versuchte, ein Logo im Header einzufügen.

Mit dem Image-Tag, das Delphi vordefiniert, werde ich wohl nicht viel anfangen können, da ich mehrere Bilder in eine Seite einbinden muss.

Die jetzt unmittelbar bevorstehenden Aufgaben sind: Für jede Seite den selben Hintergrund aber mit angepasstem Inhalt sowie die Bilder laden (Logos, Galeriebilder etc.).
Eine Herausforderung dürfte wohl sein, dass Bilder in den Contentstream geladen werden müssen. Zumindest meiner Erinnerung nach funktonieren die noramelen Bildverweise nicht mehr, wenn das HTML via Pageproducer ausgegeben werden. Aber auch da kann mich meine Erinnerung täuschen.

Auf jeden Fall bleibts erstmal spannend...

Gruss
Delbor

PS: Soeben wollte ich abschicken, da sah ich den neuen Beitrag von Sir Rufo, werde darauf aber in einem neuen Beitrag antworten.

Delbor 29. Jun 2016 13:07

AW: Webbroker. PageProducer und transparente HTML-Tags
 
Hi Sir Rufo
Delphi-Quellcode:
    Im Template:
    <#IMAGE foo>
    In der Tag-Methode:
   
    Delphi-Quellcode:
    procedure TFoo.PageProducer1HTMLTag(
      Sender : TObject;
      Tag : TTag;
      const TagString: string;
      TagParams : TStrings;
      var ReplaceText: string );
    begin

      case Tag of
        tgCustom:
          ReplaceText := GetCustomTag( TagString, TagParams );
        tgLink:
          ReplaceText := GetLinkTag( TagParams );
        tgImage:
          ReplaceText := GetImageTag( TagParams );
        tgTable:
          ReplaceText := GetTableTag( TagParams );
        tgImageMap:
          ReplaceText := GetImageMapTag( TagParams );
        tgObject:
          ReplaceText := GetObjectTag( TagParams );
        tgEmbed:
          ReplaceText := GetEmbedTag( TagParams );
      end;

    end;

Der Aufruf der Methode erfolgt für den Tag mit den Werten

    Tag: tgImage
    TagString: IMAGE
    TagParams: foo
Das ewige
Delphi-Quellcode:
if..then..
, wie ichs bislang habe, nervt mich schon llänger. Allerdings habe ich da zurzeit noch ein kleines Verständnisproblem, bzw. die Sache ist noch nicht zu Ende gedacht.
Zum einen sollen die Dateien auf der Festplatte (Später also auch derjenigen des Hosters) gespeichert werden, soweit sie Seiten und Seiteninhalte betreffen; Nur User, Sessions etc sollen in eine DB.
Ziel ist, das ich auf meinem Rechner eine Webseite erstelle, diese und allfällig dazugehörende Dateien (CSS etc) zusammen mit einer String-oder Objectliste hochlade. Das Webmodul lädt dann die Dateien nach Angabe aus der Liste. So sollte die Website beim Hoster eigentlich recht dynamisch erweitert werden können.

Zitat:

Für den Tag oben kann amn also z.B. ein <img src="./images/foo.jpg"/> zurückliefern.
Das heisst also, dass entgegen meiner Erinnerung Bilder auch durch den Pageproducer und die Angabe des Suchpfades ausgegeben werden können.
Aber ich sehe gerade, der obige Case..of-Block weist noch auf eine Reihe anderer Möglichkeiten hin.
Da muss ich mich doch noch kräftig in die Doku vertiefen.
So scheint tgObject darauf hinzuweisen, dass da ein Objekt eingefügt werden soll. Stattdessenkommt da wahrscheinlich nur der vom Objekt geliefert Inhalt rein.

Gruss
Delbor

Jumpy 29. Jun 2016 13:18

AW: Webbroker. PageProducer und transparente HTML-Tags
 
Zitat:

Zitat von Delbor (Beitrag 1341520)
Zumindest meiner Erinnerung nach funktonieren die noramelen Bildverweise nicht mehr, wenn das HTML via Pageproducer ausgegeben werden. Aber auch da kann mich meine Erinnerung täuschen.

Das hängt ja generell von deiner Konstellation ab, wie du alles auf deinem Webserver unterbringst, wie du den IIS konfigurierst usw.

Ich habe noch ein älteres Projekt in der Wartung, mit Delphi-CGI-Exe, wo ich Bilder ganz normal als Tags im HTML habe, die dann automatisch vom Browser nachgeladen werden, wie man das so erwartet. Gleiches gilt auch für die CSS-Dateien. Man muss sich da ggf. Gedanken machen was für Pfade man für die Bilder bzw. CSS angibt (s. Sir Rufos Image-Tag Beispiel), aber das ist sicher einfacher und übersichtlicher, als alle Bilder als Stream da einzubetten. Analog finde ich alle Styles in einer CSS-Datei aufzuheben auch sauberer als sie in Style-Tags im HTML einzubinden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 Uhr.
Seite 2 von 6     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz