Meine persönliche XHTML-Final-Lösung

kptkip
Beiträge: 192
Registriert: Mi 8. Jun 2005, 18:02
Kontaktdaten:

Meine persönliche XHTML-Final-Lösung

Beitrag von kptkip » Di 6. Sep 2005, 00:19

Nachdem ich viele Threads zum Thema XHTML gefunden habe und ehrlich gesagt von keiner der dort vorgestellten Lösungen angetan war, bin ich eher durch Zufall über folgende Lösung gestolpert, die mir sehr schnell alle Probleme im Mehr-domain-Betrieb löste.

Um ehrlich zu sein ist das Originalskript aus dem 4.4.4-mod-rewrite-Paket von stese übernommen, allerdings von mir um eine andere Einbettung und ein Tuning an der einen oder oanderen Stelle erweitert worden.

Generell sieht es folgendermaßen aus:
In der front_content.php wird exakt vor dem Ausspucken des HTML-Textes an den Browser der komplette Code überprüft. Also egal ob Layout-Tags, Modul-Outputs, oder Editor-genrierter Code. Alles wird an einer Stelle überprüft und korrigiert.
Das hat den Vorteil, dass man den Kram nicht an mehreren Stellen machen muß und darüber hinaus verändert das nicht den Code in der DB - das war meine Änderung gegenüber stese - er schrieb die Korrekturen direkt nach dem Editor in die DB.

Aber nun konkret zur Vorgehensweise:
In Zeile ~638 in der front_content.php steht folgende Zeile:

Code: Alles auswählen

print ($str_all);
davor(!) packt Ihr folgendes:

Code: Alles auswählen

if(strstr($str_all,"W3C//DTD XHTML")!=FALSE) $str_all = TagsToXHTML($str_all);
Das hat den Sinn, daß nur in Layout-Dateien, die XHTML-codiert sind die Tags ersetzt werden. HTML 4.01-Code bleibt wie er ist.


Die in der front_content.php aufgerufene function TagsToXHTML()(Code s.u.) packt man entweder ebenfalls in die front_content.php ans Ende oder (wie in meinem Fall) in die /contenido/includes/functions.con.php. Für beide Arten gibt es meiner Meinung nach Vor- aber auch Nachteile. Entscheidet selbst!


hier der code der function:

Code: Alles auswählen

/* ##########################################
gesamter code wird übernommen und im der variable 
$value gespeichert - diese wird nun umformatiert
########################################### */
# neu - getestet und ok
function TagsToXHTML($value) {
    if($value != "") {
 ########## vorhandene, groß geschriebene tags klein schreiben
 $value = preg_replace(',<(/?)([a-zA-Z]+)([^>]+)?(/?)>,ie', '"<\1".strtolower("\2")."\3\4>"', $value); 
 
 ############## HEAD-Tags
 // Meta-Tags
    $value = preg_replace( "/<meta([^>]*)>/i" , "<meta\\1 />" , $value);
 // Link-Tags
    $value = preg_replace( "/<link([^>]*)>/i" , "<link\\1 />" , $value);

 ############## allg. tags  
    // hspace, vspace raus
    $value = preg_replace( "/(h|v)space='.'|border=0/i" , "" , $value);
    // img xhtml <img> -> <img />
    $value = preg_replace( "/<img([^>]*)>/i" , "<img\\1 />" , $value);
    // align -> style float
    $value = preg_replace( "/align=\"([a-z]*)\"/i" , "style=\"float:\\1;\"" , $value);
    // valign -> style
    $value = preg_replace( "/valign=\"([a-z]*)\"/i" , "style=\"vertical-align:\\1;\"" , $value);
    // <br> -> <br />
    $value = preg_replace( "/<br>/i" , "<br />" , $value);
    // <b> -> <strong> und <i> -> <em>
 $value = preg_replace( "/(<b>|<strong>)/i" , "<span style=\"font-weight:bold\">" , $value);
 $value = preg_replace( "/(<i>|<em>)/i" , "<span style=\"font-style:italic\">" , $value);
 $value = preg_replace( "/(<\/b>|<\/strong>|<\/i>|<\/em>)/i" , "</span>" , $value);
 $value = preg_replace( "/<\/i>/i" , "</em>" , $value);
  
 ############## formulare  
 // name durch id ersetzen
 $value = preg_replace("/(<form.*?)(name=)(.*?>)/", "\\1id=\\3", "$value");
 // input-tag
 $value = preg_replace("/(<input.*?)(>)/", "\\1 />", "$value");
 // wrap-tag
 $value = preg_replace("/(<textarea.*?)( wrap=hard| wrap=soft| wrap=off)(.*?>)/", "\\1\\3", "$value");   

 ############ Behebt Probleme mit bereitsexistierenden XHTML-Tags
 $value = str_replace("/ />","/>",$value);
    }    
    // fertig
    return $value;
}
Danach solltet Ihr sauberen XHTML-Code aus Contenido bekommen - egal ob bereits maskierter Code existiert, oder nicht.


Die function ist evtl noch nicht komplett - XHTML-Gurus dürfen sich also berufen fühlen, weitere Ersetzungen hinzuzufügen bzw. zu korrigieren. Mit meinem Firefox-Tidy hat es bisher in allen Fällen funktioniert.

So long
Euer Kpt|Kip!
Zuletzt geändert von kptkip am Di 13. Sep 2005, 21:53, insgesamt 1-mal geändert.

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Meine Persönliche XHTML-Endlösung

Beitrag von emergence » Di 6. Sep 2005, 08:25

kptkip hat geschrieben:Aber nun konkret zur Vorgehensweise:
In Zeile ~638 in der front_content.php steht folgende Zeile:

Code: Alles auswählen

print ($str_all);
ähm nur als info -> ohne die erweiterung von stese wird man diese zeile nicht in der front_content.php finden...
*** make your own tools (wishlist :: thx)

kptkip
Beiträge: 192
Registriert: Mi 8. Jun 2005, 18:02
Kontaktdaten:

Beitrag von kptkip » Di 6. Sep 2005, 23:21

Ach jetzt guck an! :D
Na dann werde ich wohl nochmal suchen müssen, um das für die normale Version auch hinzubekommen.

Danke für den Tipp!

andrej
Beiträge: 333
Registriert: Mi 8. Okt 2003, 09:46
Kontaktdaten:

Beitrag von andrej » Mi 7. Sep 2005, 11:53

Hmm, zwar gut das sich jemand noch darüber Gedanken macht. Es geht aber auch auf dem Normalweg. Als Editor einfach den von emergence angepassten tinyMCE verwenden, die Änderung von mir beim tinyMCE durchführen. Und nun hast Du XHTML Strict.

Bei Bildermodulen eventuell noch die ein oder andere Erweiterung, und fertig ist Contenido XHTML Strict valid.

Snoopy
Beiträge: 239
Registriert: Mo 15. Sep 2003, 18:45
Kontaktdaten:

Beitrag von Snoopy » Do 8. Sep 2005, 09:20

Wegen der Vollständigkeit:
den TAG <hr /> nicht vergessen
Gruß aus Hamburg :wink:

kptkip
Beiträge: 192
Registriert: Mi 8. Jun 2005, 18:02
Kontaktdaten:

Beitrag von kptkip » Do 8. Sep 2005, 22:56

@snoopy - stimmt! fast vergessen ;-) danke!

@andrej
stimmt! geht, allerdings finde ich das nicht gerade elegant, da
- man an diversen stellen rumschrauben muß, um zum Ergebnis zu kommen.
- man die von Contenido (außerhalb der Module) automatisch erzeugten Elemente nicht beeinflussen kann (z.b. META-Tags, die das system macht) - außer mit hardcoding, klar.
- man auf einen speziellen Editor angewiesen ist - bin nunmal kein Freund mehr vom tinyMCE (gehört als Thema aber sicher in einen anderen Thread :))
- man per Editoranpassung ausschließlich XHTML-Datenhaltung hat. Das ist mir zu wenig universell. Ich will die Konvertierung dort haben, wo sie nötig ist: im Browser und nicht in der DB.

Ich werde also das Ziel weiterverfolgen: Die Stelle in der front_content.php suchen, an der der komplette Code ausgegeben wird. Dort wird dann die Umwandlung gemacht. Fertig ist der Fisch! ;-)

Kann mir jemand sagen, wo in der "normalen" 4.4.5/4.5.3-Version diese Stelle zu finden ist?

Viele Grüße

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Do 8. Sep 2005, 22:59

kptkip hat geschrieben:- man die von Contenido (außerhalb der Module) automatisch erzeugten Elemente nicht beeinflussen kann (z.b. META-Tags, die das system macht) - außer mit hardcoding, klar.
In der Version 4.6 bzw in den jetzigen Snapshotversionen geht das.
- man auf einen speziellen Editor angewiesen ist - bin nunmal kein Freund mehr vom tinyMCE (gehört als Thema aber sicher in einen anderen Thread :))
Warum dieses?

Snoopy
Beiträge: 239
Registriert: Mo 15. Sep 2003, 18:45
Kontaktdaten:

Beitrag von Snoopy » Sa 10. Sep 2005, 10:24

Anmerkung zum Seitentitel :!:


Der Begriff Endlösung ist historisch deutlich negativ vorbelastetet und deswegen aus dem aktuellen Sprachgebrauch verdrängt. Da es sich um einen geschichtlichen Fachbegriff handelt, kann dieser Begriff nicht für die endgültige Lösung eines anderen Sachverhalts genutzt werden.
Gruß aus Hamburg :wink:

kptkip
Beiträge: 192
Registriert: Mi 8. Jun 2005, 18:02
Kontaktdaten:

Beitrag von kptkip » Di 13. Sep 2005, 21:52

Es ist sehr wohl war, dass sich dieser Begriff im Kontext einer politischen respektive geschichtlichen Diskussion sehr vorbelastet verhält. Dort würde auch ich sagen, dass man z.B. in tagesaktueller politischen Diskussion auf solche Redewendungen verzichten sollte.

Allerdings in anderen, themenfernen Kontexten wie hier ist meiner Meinung nach nur mit dem expliziten Willen zur Assoziation mit dem Begriff und seines menschenverachtenden Sachverhaltes eine mutwillige Verbindung oder Respektlosigkeit des Benutzers zu unterstellen.

Außerdem handelt es sich dabei nicht um den exakten Fachbegriff. Dieser lautet "Die Endlösung der Judenfrage" und wird auch nur in dieser kompletten Phrase als die Schlußphase des Holocaust bezeichnet.

Sollte dies dennoch von dem einen oder anderen als pietätlos aufgenommen werden, so kann ich nur sagen, dass dies nicht mit Absicht geschah.

Um jedoch die Gemüter nicht unnötig zu erhitzen, habe ich den Titel so abgeändert, dass der Begriff nicht mehr auftaucht.

kptkip
Beiträge: 192
Registriert: Mi 8. Jun 2005, 18:02
Kontaktdaten:

Beitrag von kptkip » Di 13. Sep 2005, 22:18

timo hat geschrieben:In der Version 4.6 bzw in den jetzigen Snapshotversionen geht das.
Das mag sein, aber so lange diese Versionen noch im Alpha bzw. im Beta-Stadium sind, werde ich sie im Produktiveinsatz sicher nicht benutzen und dort benötige ich dieses Feature nunmal.

TinyMCE:
timo hat geschrieben:Warum dieses?
Um es nicht in epischer Breite darzulegen, hier in Kürze:
- er ist buggy
- er ist langsam
- es können keine styles und classes bei bildern, links etc. eingegeben werden und ich benutze eben keine parameter wie "valign","align", etc mehr, da könnte ich mir ja wieder den XHTML-Part sparen
- er bis auf die aktuellen Snapshot-Versionen keine vernünftige Anbindung an das System bietet.
- der Imagemanager keine grundlegenden Manipulationen anbietet (ausser mit hydrogen und das ist total buggy)

Aber wie gesagt, es ging mir hierbei nicht um ein tinyMCE-bashing. Was ich lediglich erläutern wollte: Ich möchte mich nicht auf einen speziellen Editor versteifen, dazu gibt es ja nunmal diverse Programme, sodaß sich jeder das aussuchen kann das er möchte. Ich benutze den, den ich für gut empfinde und jemand anderes eben den tiny - ist gut so!

ABER: Das sollte mit dem Problem von XHTML rein garnichts zu tun haben.

Ich verstehe ehrlich gesagt nicht, warum ich mir die Arbeit machen soll, erst einen Editor zu suchen, der das (anscheinend) kann, um dann immer noch in einem oder mehreren Schritten (je nach Version - und in der 4.4.5 muss man noch alles von Hand geradebügeln) danach den Rest auch noch justieren? Das halte ich nunmal für einen denkbar schlechten Weg.

Das ist der einzige Grund für diesen Schritt. Einmal vernünftig suchen, einmal programmieren und Ruhe haben.

So long

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Di 13. Sep 2005, 22:35

Kannst du buggy etwas genauer erklären? Ich habe jetzt noch nicht so intensiv damit gearbeitet, aber aufgefallen ist mir auf den ersten Blick noch nichts. Langsam war er bei mir auch nicht unbedingt, das mit den Styles und Classes bei den Bildern und Links sehe ich nochmal an

Wir hatten eigentlich geplant, den tinyMCE als Standardeditor für die Version 4.6 anzubieten.

Der Imagemanager soll IMHO auch keine Manipulationsmöglichkeiten bieten (hat ein Redakteur im Normalfall auch nicht zu erledigen).

dampfradio
Beiträge: 62
Registriert: Do 2. Jun 2005, 09:41
Wohnort: BaWü
Kontaktdaten:

Beitrag von dampfradio » Mo 10. Okt 2005, 08:58

Ich kann mich mit dem TinyMCE ebenfalls überhaupt nicht anfreunden. Das Teil wurschtelt mir etwas zu extrem im Code rum. Außerdem ist er auffallend langsam. Vor allem auf etwas älteren Systemen. Und die Geschichte mit dem Quellcode-"Fensterchen" hat mich genervt. Und auch das Grafik-Rendering war irgendwie nicht ganz so sauber..
Ich nutze nach wie vor den FCK.

Snoopy
Beiträge: 239
Registriert: Mo 15. Sep 2003, 18:45
Kontaktdaten:

Beitrag von Snoopy » Mo 10. Okt 2005, 14:34

Auch wenn es das Thema nochmal aufwärmt.
kptkip hat geschrieben: TinyMCE:
Um es nicht in epischer Breite darzulegen, hier in Kürze:
- er ist buggy
- er ist langsam
- es können keine styles und classes bei bildern, links etc. eingegeben werden und ich benutze eben keine parameter wie "valign","align", etc mehr, da könnte ich mir ja wieder den XHTML-Part sparen
- ich habe noch keinen Bug bemerkt :-(
- TinyMCE ist bei mir schneller als XHINA
- Ich arbeite ebenso wenig mit "valign","align", etc. Aber dank der tollen Anpassung von emergence verpasse ich Bildern und Links und Hor. Linien Styles und Klassen. Der "buggy" Tiny zeigt mir im Edit-Modus das gleiche wie das Resultat im Frontend. :-) .

Siehe Bild:Bild

Frontend dieser Site http://www.eigenbrodt.de .
Gruß aus Hamburg :wink:

dampfradio
Beiträge: 62
Registriert: Do 2. Jun 2005, 09:41
Wohnort: BaWü
Kontaktdaten:

Beitrag von dampfradio » Mo 10. Okt 2005, 17:20

@kptkip

Wäre so einen Rund-um-XHTML-Lösungsansatz auch für die v4.5.3b MR von stese machbar? Da gibt's die von dir bezeichnete Stelle in der front_content.php auch nicht..

@timo

Wo geht das?

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mo 10. Okt 2005, 18:30

dampfradio hat geschrieben: @timo

Wo geht das?
Ähm wo geht was?

Gesperrt