AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CSS mit Webbroker

Ein Thema von Delbor · begonnen am 12. Apr 2014 · letzter Beitrag vom 27. Apr 2014
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

CSS mit Webbroker

  Alt 12. Apr 2014, 10:53
Hi zusammen

Zur Zeit arbeite ich mich in die Webbroker-Technologie ein. Dabei ist es ja möglich, einer TPageProducer-Komponente entweder einen TString in HTMLDoc oder ein File in HTMLFile zu übergeben. Nun muss ich ja ausser den HTML-Anweisungen auch CSS-Formatierungen und - wie mir gerade einfällt - allenfalls auch Javascript übergeben. Solches sollte, denke ich, als File nicht möglich sein; ich nehme an, dass das Property HTMLFile auch eine HTML-Datei erwartet und also weder eine *.css- noch eine *.js-Datei akzeptieren würde.

Aktuell habe ich CSS-Anweisungen per Stringeditor in HTMLDoc eingelesen. Das gefällt mir aber deswegen nicht, weil allfällige Änderungen ein Neukompilieren erfordern.
Wie gesagt, bin ich daran, mich einzuarbeiten. Das heisst, ich gehe zurzeit den Weg über vorliegende Dateien (im Falle von HTMLFile), in der Endgültigen Version sollen diese Inhalte aber per Stream aus einer DB kommen.

Irgendwie denk ich, stehe ich mit wohl mehr als beiden Beinen auf dem Schlauch. Um mal die Help zu zitieren:
Zitat:
Weisen Sie HTMLDoc die Strings für die HTML-Vorlage zu. Jeder String besteht aus einer Folge von HTML-Befehlen und HTML-transparenten Tags. Diese speziellen Tags haben folgendes Format:

<#TagName Param1=Value1 Param2=Value2 ...>
Abgesehen davon, dass ich bislang nirgends etwas darüber gefunden habe, was man mit parametrisierten Tagnamen alles anstellen kann, glaube ich mich zu erinnern, irgendwo in dem Zusammenhang mal etwas von 'TStrings-Objekt' gelesen zu haben - also einer Zuweisung zur Laufzeit.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: CSS mit Webbroker

  Alt 12. Apr 2014, 11:39
Dieser ominöse Delphi-Referenz durchsuchenTPageProducer hat ein Event Delphi-Referenz durchsuchenTPageProcuer.OnHTMLTag.

Dieses Event wird aufgerufen, wenn beim Parsen einer dieser transparenten Html-Tags gefunden wird.
Im Event bekommst du den Tag-Namen und die Parameter geliefert und kannst dafür einen passenden Inhalt ausliefern.
Code:
<b>Firstname:</b>&nbsp;<#Firstname>
Delphi-Quellcode:
if TagName = 'Firstnamethen
  ReplaceText := 'Walter';
Code:
<b>Firstname:</b>&nbsp;Walter
Die *.css und *.js speicherst und lieferst du aus wie *.png oder *.jpg, denn die hast du auch nicht im Programm gespeichert
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (12. Apr 2014 um 11:42 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: CSS mit Webbroker

  Alt 12. Apr 2014, 12:56
Hi Sir Rufo

Danke für deine schnelle Antwort!
[QUOTE=Sir Rufo;1255414]Dieser ominöse Delphi-Referenz durchsuchenTPageProducer hat ein Event Delphi-Referenz durchsuchenTPageProcuer.OnHTMLTag.

Danke, das hab ich soweit begriffen:
Delphi-Quellcode:
procedure TWebModule1.PageproducerImageHTMLTag(Sender: TObject; Tag: TTag;
  const TagString: string; TagParams: TStrings; var ReplaceText: string);
begin
  if TagString = 'UserNamethen ReplaceText := 'Herr Braun';
  if Tagstring = 'Herkunftthen ReplaceText := Self.Request.UserAgent;

end;

procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  Response.Content := '<html><heading/><body>Webserver-Anwendung</body></html>' + '<P>' + PageproducerImage.Content ;
end;
Die *.css und *.js speicherst und lieferst du aus wie *.png oder *.jpg, denn die hast du auch nicht im Programm gespeichert
Sorry, wenn ich da nochmal nachhake, aber je länger desto mehr habe ich das Gefühl, dieOnline-Help hat mir etwas die Sinne vernebelt. Irgendwo steht da was, man müsse die Anwendung neu kompilieren, wenn man das Propety HTMLDoc ändert. Nun erwartet HTMLDoc ja einen String, der die (Html-)Vorlage enthält, ist also selbst ein TStrings-Objekt. Und einem solchen kann zur Laufzeit ein beliebiger String zugewiesen werden.
Das mit dem Neukompilieren stimmt nur dann, wenn zur Designzeit eine Zuweisung mit dem Stringlisteneditor erfolgt.

Ich muss da nochmal über die Bücher, aber soweit ich das bis jetzt verstanden habe, akzeptiert 'src' nur gerade einen Dateipfad.
Erstmal das, was zu ersetzen wäre - erstellt werden sollen diverse Seiten einer Fotogallerie:
Delphi-Quellcode:
      <div id="img1">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5751.jpg"/></div>
      <div id="img2">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5752.jpg"/></div>
      <div id="img3">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5753.jpg"/></div>
      <div id="img4">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5754.jpg"/></div>
      <div id="img5">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5755.jpg"/></div>
      <div id="img6">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5756.jpg"/></div>
      <div id="img7">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5757.jpg"/></div>
      <div id="img8">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5758.jpg"/></div>
      <div id="img9">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5759.jpg"/></div>
      <div id="img10">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5760.jpg"/></div>
      <div id="img11">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5761.jpg"/></div>
      <div id="img12">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5762.jpg"/></div>
Nach deiner Aussage bleibt mir also nichts anderes übrig, als die *.jpgs, *.css etc auf der Platte zu speichern (per Filestream aus der DB geholt) und obigen HTML-Code dynamisch (mit anderen Pfaden) zu ersetzen.
Obiger Code ist übrigens überholt; er stammt aus meinen allerersten CSS-Versuche. Neu wirds wohl eine CSS-Klasse geben, die an die 'div's zugewiesen wird.
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: CSS mit Webbroker

  Alt 12. Apr 2014, 13:13
Du bekommst für jede Datei eine Anforderung.

Die erste Anforderung ist eine *.html Datei.
Dazu lädst du das passende Template, jagst es durch den PageProducernd lieferst das Resultat aus.
Die nächsten Anforderungen sind dann *.css, *.js, *.jpg, ...

Die Daten/Dateien werden als Stream übertragen, ob du also erst eine Datei erzeugst und diese dann als FileStream auslieferst, oder einen MemoryStream, who cares, dem Empfänger ist es wurscht, den bekommt einen Stream und fertig.

siehe http://docwiki.embarcadero.com/Libra....ContentStream

Natürlich kannst du die Templates fest einkompilieren, aber wenn du das nicht willst, dann eben nicht einkompilieren.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (12. Apr 2014 um 13:15 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: CSS mit Webbroker

  Alt 17. Apr 2014, 10:30
Hi zusammen

@Sir Rufo: Etwas spät zwar, aber trotzdem Danke für deine Antwort! Ich hab mir seither noch etwas Theorie um die Ohren geschlagen und bin dabei auf einen Widerspruch gestossen:
  1. Zum einen heeisst es, eine Webanwendung könne nur ein einziges Webmodul gleichzeitig besitzen/verwalten.
  2. Zum andern verfügt TWebApplication über Propertys, um mehrere Webverbindungen-/Anfragen zu verwalten.
Dabei bin ich auch auf CacheConnections gestossen, was meine Frage schonmal zu beantworten scheint.
Nur "scheint", weil ich im Wesentlichen auch danach suche, wie unter Webbroker Sessions verwaltet werden. Irgendwie hab ich im Hinterkopf, ich hätt bei Embarcadero mal was von einer Sessionlist im Zusammenhang mit Webbroker gelesen, aber ich kann die Seite nicht mehr finden.
Es gibt zwar ein Objekt TSession, aber das ist offensichtlich die gleichnamige BDE-Komponente...
So ist denn meine Frage: wie verwaltet Webbroker Websessions?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: CSS mit Webbroker

  Alt 27. Apr 2014, 19:00
Hi Sir Rufo
Du bekommst für jede Datei eine Anforderung.

Die erste Anforderung ist eine *.html Datei.
Dazu lädst du das passende Template, jagst es durch den PageProducernd lieferst das Resultat aus.
Die nächsten Anforderungen sind dann *.css, *.js, *.jpg, ...
Kann es sein, dass hier der erste Satz die Lösung enthält, die ich auch hier schon suche?

Bislang bin ich immer davon ausgegangen, dass eine Anforderung die komplette Webseite betrifft. Desshalb hab ich diesen Satz auch als nicht wirklich verstanden immmer wieder überlesen. Interpretiere ich den aber neu, so bedeutet das, dass ein Verweis in einer HTML-Seite (src=...) eine neue Anforderung des Clients (Browsers) auslöst. Ist diese Interpretation richtig?

Ausserdem würde dies bedeuten, dass ich für jedes Bild (oder Audiodatei etc.) eine neue Anforderung losgeschickt wird. Und das erhöht den Traffic...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: CSS mit Webbroker

  Alt 27. Apr 2014, 19:12
Ich hätte es nicht schöner ausdrücken können

Und ist ja auch (irgendwie) logisch. Die erste Anfrage ist ja z.B. nach der "/index.html" und genau die (also der Inhalt - der nur aus text besteht) wird übertragen. Dort befindet sich die Beschreibung, wie die Seite anzuzeigen ist, teilweise durch Bilder, die als Link dort hinterlegt sind ... ja, und dann lädt der Browser die (wenn er die nicht schon im Cache hat).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: CSS mit Webbroker

  Alt 27. Apr 2014, 19:32
Hi Sir Rufo

Ich sage ja: wer (richtig) lesen kann, ist klar im Vorteil
Zitat:
Und ist ja auch (irgendwie) logisch.
Ja - wobei ich den Fehler gemacht habe, mir das irgendwie so vorzustellen, wie das abläuft, wenn ich auf Reisen gehe:
  1. Ich nehm den Koffer (die Index)
  2. packe Schuhe und
  3. Zahnbürste und erst
  4. dann gehts los
Ich hab einfach nicht daran gedacht, dass zwischen meiner Logik und der des Computers ein riesen Unterschied besteht


Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz