Contenido in XHTML
Contenido in XHTML
Hi!
Wird das contenido CMS in einer der nächsten Versionen auf XHTML umgestellt?
Gruß
Sewid
Wird das contenido CMS in einer der nächsten Versionen auf XHTML umgestellt?
Gruß
Sewid
-
- Beiträge: 74
- Registriert: Fr 7. Nov 2003, 11:35
- Wohnort: München
- Kontaktdaten:
Hi Sewid, Timo, Community,
XHTML ist auch für ein Thema, an dem ich ein wenig rumbastele. Grundsätzlich sind hierfür html-tags in lower-case gefordert. Die eingebauten Editoren produzieren jedoch nur tags in upper-case!
Ich hab' mir schon fast 'nen Wolf gesucht. Im Quelltext..., mittels getElementsByTagName... überall, wo toUpperCase steht. Nix. Kein Erfolg.
Kann jemand von Euch sagen, wo ich etwas zu verändern habe, um die HTNL-Tags KLEINGESCHRIEBEN zu erzeugen?
Wie gesagt, ist nicht nur für mich persönlich heilfreich, sondern auch ein sehr wichtiger Schritt zur XHTML-Validierung.
Grüße
Wolfgang Garella
XHTML ist auch für ein Thema, an dem ich ein wenig rumbastele. Grundsätzlich sind hierfür html-tags in lower-case gefordert. Die eingebauten Editoren produzieren jedoch nur tags in upper-case!
Ich hab' mir schon fast 'nen Wolf gesucht. Im Quelltext..., mittels getElementsByTagName... überall, wo toUpperCase steht. Nix. Kein Erfolg.
Kann jemand von Euch sagen, wo ich etwas zu verändern habe, um die HTNL-Tags KLEINGESCHRIEBEN zu erzeugen?
Wie gesagt, ist nicht nur für mich persönlich heilfreich, sondern auch ein sehr wichtiger Schritt zur XHTML-Validierung.
Grüße
Wolfgang Garella
-
- Beiträge: 74
- Registriert: Fr 7. Nov 2003, 11:35
- Wohnort: München
- Kontaktdaten:
Hi emergence,
danke füe die schnelle Antwort.
Dann passiert das aber scheinbar nur, wenn ich den Artikel editiere, denn mein Layout, das ja auch über meinen IE in die Textarea eigefügt wurde zeigt die HTML-Tags so, wie ich sie eingeben habe: nämlich klein.
Also ein Problem im Zusammenspiel von Editor und IE?
danke füe die schnelle Antwort.
Dann passiert das aber scheinbar nur, wenn ich den Artikel editiere, denn mein Layout, das ja auch über meinen IE in die Textarea eigefügt wurde zeigt die HTML-Tags so, wie ich sie eingeben habe: nämlich klein.
Also ein Problem im Zusammenspiel von Editor und IE?
-
- Beiträge: 74
- Registriert: Fr 7. Nov 2003, 11:35
- Wohnort: München
- Kontaktdaten:
Hi timo,
o.k.: IE und JavaScript vertragen sich also bei der Textarea nicht.
Gibt es alternativ eine Möglichkeit, die Textarea "auf HTML um zu bauen"?
Ich lage im Layout dann umd den Headline-Container eine h1, um den Subheadline-Container eine h2 und der HTML-Text-Container bleibt unformattiert. Dann kann der Redakteur halt nicht überall fette Wortfetzen oder sonstwas machen.
Wie krieg ich das hin?
Gruß
Wolfgang Garella
o.k.: IE und JavaScript vertragen sich also bei der Textarea nicht.
Gibt es alternativ eine Möglichkeit, die Textarea "auf HTML um zu bauen"?
Ich lage im Layout dann umd den Headline-Container eine h1, um den Subheadline-Container eine h2 und der HTML-Text-Container bleibt unformattiert. Dann kann der Redakteur halt nicht überall fette Wortfetzen oder sonstwas machen.
Wie krieg ich das hin?
Gruß
Wolfgang Garella
-
- Beiträge: 6284
- Registriert: Do 15. Mai 2003, 18:32
- Wohnort: Da findet ihr mich nie!
- Kontaktdaten:
Verstehe ich nicht. Was genau meinst du damit?wolfganggarella hat geschrieben: Gibt es alternativ eine Möglichkeit, die Textarea "auf HTML um zu bauen"?
Von Hand die Tags aus dem eingegebenen Code entfernen. Wie gut das klappen könnte weiß ich nicht...Dann kann der Redakteur halt nicht überall fette Wortfetzen oder sonstwas machen.
Wie krieg ich das hin?
-
- Beiträge: 74
- Registriert: Fr 7. Nov 2003, 11:35
- Wohnort: München
- Kontaktdaten:
Hi timo,
hab' über's Wochenende eine praktikable Lösung gefunden:
Hierzu habe ich eine Datei tagstolower.php geschrieben (siehe unten), die sich im include-Verzeichnis befindet. Hierin ist die Funktion zur Umschreibung der Tags: function TagsToLower($value){...}
In die Datei functions.con.php binde ich sie mit
include("tagstolower.php"); ein.
Vor dem schreiben in die Tabelle con_content in der Datei functions.con.php wird die Funktion aufgerufen mit $value=TagsToLower($value); bei Zeile (ca.) 518, 531 und 1985 vor dem UPDATE- und INSERT-Befehl für die Tabelle con_content.
Et voilà: Bei mir funktioniert's.
Hier der Inhalt der tagstolower.php:
<?php
/************************************************************************************************************************
* Datei: tagstolower.php in /contenido/includes/
* erstellt von Wolfgang Garella
* 2003-11-15
*
* Verfahrensweise:
* in /contenido/includes/functions_con.php
* einbinden mit include("tagstolower.php"); bei Zeile 18,
* Funktion aufrufen mit $value=TagsToLower($value); ungefähr bei Zeilen 518, 531 und 1985
* vor den UPDATE- und INSERT- Befehlen zu $sql = "UPDATE ".$cfg["tab"]["content"]." SET value='$value'...usw.
*
* Funktion ändert die groß geschriebenen Tags aus den DHTML-Editoren in
* XHTML-konforme Tags in lower case
* schreibt in Tabelle: con_content
* erster Wert öffnender Tag <: %3C...
* zweiter Wert schließender Tag >: %3C%2F...%3E
************************************************************************************************************************/
function TagsToLower($value){
$value=preg_replace("[%3CA ]","%3Ca ",$value); //anchor
$value=preg_replace("[%3C%2FA%3E]","%3C%2Fa%3E",$value);
$value=preg_replace("[%3CB%3E]","%3Cb%3E",$value);//bold
$value=preg_replace("[%3C%2FB%3E]","%3C%2Fb%3E",$value);
$value=preg_replace("[%3CBR%3E]","%3C%2Fbr%3E",$value);//break
$value=preg_replace("[%3CFONT]","%3Cfont",$value);//font
$value=preg_replace("[%3C%2FFONT%3E]","%3C%2Ffont%3E",$value);
$value=preg_replace("[%3CHR%3E]","%3Chr%3E",$value);//horizontal line
$value=preg_replace("[%3CIMG]","%3Cimg",$value);//image
$value=preg_replace("[%3C%2FIMG%3E]","%3C%2Fimg%3E",$value);
$value=preg_replace("[%3CP]","%3Cp",$value);//paragraph
$value=preg_replace("[%3C%2FP%3E]","%3C%2Fp%3E",$value);
$value=preg_replace("[%3CUL]","%3Cul",$value);//unordered list
$value=preg_replace("[%3C%2FUL%3E]","%3C%2Ful%3E",$value);
$value=preg_replace("[%3COL]","%3Col",$value);//ordered list
$value=preg_replace("[%3C%2FOL%3E]","%3C%2Fol%3E",$value);
$value=preg_replace("[%3CLI]","%3Cli",$value);//listitems
$value=preg_replace("[%3C%2FLI%3E]","%3C%2Fli%3E",$value);
$value=preg_replace("[%3CBLOCKQUOTE]","%3Cblockquote",$value);//blockquote
$value=preg_replace("[%3C%2FBLOCKQUOTE%3E]","%3C%2Fblockquote%3E",$value);
$value=preg_replace("[%3CEM]","%3Cem",$value);//kursiv emphasized
$value=preg_replace("[%3C%2FEM%3E]","%3C%2Fem%3E",$value);
$value=preg_replace("[%3CU%3E]","%3Cu%3E",$value);//underline
$value=preg_replace("[%3C%2FU%3E]","%3C%2Fu%3E",$value);
return $value;
}
?>
Jetzt können IE und JavaScript nicht zusammenarbeiten, wie sie wollen: wir bekommen kleine HTML-Tags!
Grüße
Wolfgang Garella
hab' über's Wochenende eine praktikable Lösung gefunden:
Hierzu habe ich eine Datei tagstolower.php geschrieben (siehe unten), die sich im include-Verzeichnis befindet. Hierin ist die Funktion zur Umschreibung der Tags: function TagsToLower($value){...}
In die Datei functions.con.php binde ich sie mit
include("tagstolower.php"); ein.
Vor dem schreiben in die Tabelle con_content in der Datei functions.con.php wird die Funktion aufgerufen mit $value=TagsToLower($value); bei Zeile (ca.) 518, 531 und 1985 vor dem UPDATE- und INSERT-Befehl für die Tabelle con_content.
Et voilà: Bei mir funktioniert's.
Hier der Inhalt der tagstolower.php:
<?php
/************************************************************************************************************************
* Datei: tagstolower.php in /contenido/includes/
* erstellt von Wolfgang Garella
* 2003-11-15
*
* Verfahrensweise:
* in /contenido/includes/functions_con.php
* einbinden mit include("tagstolower.php"); bei Zeile 18,
* Funktion aufrufen mit $value=TagsToLower($value); ungefähr bei Zeilen 518, 531 und 1985
* vor den UPDATE- und INSERT- Befehlen zu $sql = "UPDATE ".$cfg["tab"]["content"]." SET value='$value'...usw.
*
* Funktion ändert die groß geschriebenen Tags aus den DHTML-Editoren in
* XHTML-konforme Tags in lower case
* schreibt in Tabelle: con_content
* erster Wert öffnender Tag <: %3C...
* zweiter Wert schließender Tag >: %3C%2F...%3E
************************************************************************************************************************/
function TagsToLower($value){
$value=preg_replace("[%3CA ]","%3Ca ",$value); //anchor
$value=preg_replace("[%3C%2FA%3E]","%3C%2Fa%3E",$value);
$value=preg_replace("[%3CB%3E]","%3Cb%3E",$value);//bold
$value=preg_replace("[%3C%2FB%3E]","%3C%2Fb%3E",$value);
$value=preg_replace("[%3CBR%3E]","%3C%2Fbr%3E",$value);//break
$value=preg_replace("[%3CFONT]","%3Cfont",$value);//font
$value=preg_replace("[%3C%2FFONT%3E]","%3C%2Ffont%3E",$value);
$value=preg_replace("[%3CHR%3E]","%3Chr%3E",$value);//horizontal line
$value=preg_replace("[%3CIMG]","%3Cimg",$value);//image
$value=preg_replace("[%3C%2FIMG%3E]","%3C%2Fimg%3E",$value);
$value=preg_replace("[%3CP]","%3Cp",$value);//paragraph
$value=preg_replace("[%3C%2FP%3E]","%3C%2Fp%3E",$value);
$value=preg_replace("[%3CUL]","%3Cul",$value);//unordered list
$value=preg_replace("[%3C%2FUL%3E]","%3C%2Ful%3E",$value);
$value=preg_replace("[%3COL]","%3Col",$value);//ordered list
$value=preg_replace("[%3C%2FOL%3E]","%3C%2Fol%3E",$value);
$value=preg_replace("[%3CLI]","%3Cli",$value);//listitems
$value=preg_replace("[%3C%2FLI%3E]","%3C%2Fli%3E",$value);
$value=preg_replace("[%3CBLOCKQUOTE]","%3Cblockquote",$value);//blockquote
$value=preg_replace("[%3C%2FBLOCKQUOTE%3E]","%3C%2Fblockquote%3E",$value);
$value=preg_replace("[%3CEM]","%3Cem",$value);//kursiv emphasized
$value=preg_replace("[%3C%2FEM%3E]","%3C%2Fem%3E",$value);
$value=preg_replace("[%3CU%3E]","%3Cu%3E",$value);//underline
$value=preg_replace("[%3C%2FU%3E]","%3C%2Fu%3E",$value);
return $value;
}
?>
Jetzt können IE und JavaScript nicht zusammenarbeiten, wie sie wollen: wir bekommen kleine HTML-Tags!
Grüße
Wolfgang Garella
ich hab mir das jetzt ein wenig angesehen... und bin dabei auf eine frage gestossen...
mir ist das bei zeile 1985 nicht ganz klar, warum dort die ersetzung rein sollte... an sich sollte es ja bei ca. zeile 530 reichen deinen code einzufügen... (da ja alle texte die erstellt werden dort drüber laufen)
dort werden ja an sich alle editiert inhalte auf kleine tags konvertiert, oder nicht ?
1. möglichkeit
ich bin mir jetzt nicht ganz sicher, aber sollte der code der für die anzeige im frontend verwendet wird... (-> con_code) nicht schon bei erstellung transformiert werden... (sprich wenn der code in die tabelle geschrieben wird oder komplett neu via force=1 neu erzeugt wird)
2. möglichkeit
dies über front_content.php zu machen...
in beiden fällen wäre es dann möglich über einen schalter zB in der mandanten konfiguration die option zu aktivieren...
mir ist das bei zeile 1985 nicht ganz klar, warum dort die ersetzung rein sollte... an sich sollte es ja bei ca. zeile 530 reichen deinen code einzufügen... (da ja alle texte die erstellt werden dort drüber laufen)
dort werden ja an sich alle editiert inhalte auf kleine tags konvertiert, oder nicht ?
1. möglichkeit
ich bin mir jetzt nicht ganz sicher, aber sollte der code der für die anzeige im frontend verwendet wird... (-> con_code) nicht schon bei erstellung transformiert werden... (sprich wenn der code in die tabelle geschrieben wird oder komplett neu via force=1 neu erzeugt wird)
2. möglichkeit
dies über front_content.php zu machen...
in beiden fällen wäre es dann möglich über einen schalter zB in der mandanten konfiguration die option zu aktivieren...
-
- Beiträge: 74
- Registriert: Fr 7. Nov 2003, 11:35
- Wohnort: München
- Kontaktdaten:
ehrlich gesagt...
ich wollte nur sicher gehen, dass beim JEDEM UPDATE oder INSERT der con_content auch garantiert kleine tags generiert werden. Eben auch bei Zeile 1985 die sich innerhalb einer CopyContent-Funktion (?)befindet.
Da die Editoren auch noch ein gewisses Eigenleben führen...
Bin halt 'n Angsthase!
ich wollte nur sicher gehen, dass beim JEDEM UPDATE oder INSERT der con_content auch garantiert kleine tags generiert werden. Eben auch bei Zeile 1985 die sich innerhalb einer CopyContent-Funktion (?)befindet.
Da die Editoren auch noch ein gewisses Eigenleben führen...
Bin halt 'n Angsthase!
soweit ich bis jetzt gesehen habe, werden die funktionen zum kopieren von artikel noch gar nicht verwendet... die funktion bei zeile 1985 wird nur innerhalb von conCopyArticle aufgerufen... (...bis jetzt)
also bis jetzt bedeutet dass die änderung bei 1985 nicht notwendig wäre, bzw für mich auch unsinnig ist...
was aber sinn ergibt ist die änderung bei 530 -> obwohl die %E2 etc. ein graus sind... ich würd deine modifikation vor zeile 508 geben (vor dem $value = urlencode($value);)
dann könntest du dein ersetzungsscript wenigstens in klartext schreiben <B> zu <b> etc...
ein bischen aufwendig ist das mit den vielen zeilen aber schon (da nicht alle html tags abgedeckt sind)
also bis jetzt bedeutet dass die änderung bei 1985 nicht notwendig wäre, bzw für mich auch unsinnig ist...
was aber sinn ergibt ist die änderung bei 530 -> obwohl die %E2 etc. ein graus sind... ich würd deine modifikation vor zeile 508 geben (vor dem $value = urlencode($value);)
dann könntest du dein ersetzungsscript wenigstens in klartext schreiben <B> zu <b> etc...
ein bischen aufwendig ist das mit den vielen zeilen aber schon (da nicht alle html tags abgedeckt sind)
-
- Beiträge: 74
- Registriert: Fr 7. Nov 2003, 11:35
- Wohnort: München
- Kontaktdaten:
hast Recht, vor'm codieren tut man sich viel leichter.
Zu Zeile 1985: eine Zeile mehr in einer (zur Zeit nicht benötigten, daher überfüssigen) Funktion kann man glaube ich ertragen. Vielleicht wird sie ja eines Tages benutzt?
Abgedeckt sind nur die Tags, die auch die DHTML-Ediroren groß schreiben außer den Tabellengeschichten.
Zu Zeile 1985: eine Zeile mehr in einer (zur Zeit nicht benötigten, daher überfüssigen) Funktion kann man glaube ich ertragen. Vielleicht wird sie ja eines Tages benutzt?
Abgedeckt sind nur die Tags, die auch die DHTML-Ediroren groß schreiben außer den Tabellengeschichten.
ebenwolfganggarella hat geschrieben:hast Recht, vor'm codieren tut man sich viel leichter.

ich schätzte schon das die funktion mal verwendet wird (aber ich glaube eher die wird sich noch etwas ändern, wenn sie funktionieren würde wäre sie vermutlich schon aktiviert worden...)wolfganggarella hat geschrieben:Zu Zeile 1985: eine Zeile mehr in einer (zur Zeit nicht benötigten, daher überfüssigen) Funktion kann man glaube ich ertragen. Vielleicht wird sie ja eines Tages benutzt?
hmm ich hab da was nettes das die ganze funktion die du geschrieben hast vermutlich komplett auseinander nimmt... (hab mich gerade mit regulären ausdrücken etwas herumgespielt... und das ganze in einer zeile erledigt)wolfganggarella hat geschrieben:Abgedeckt sind nur die Tags, die auch die DHTML-Ediroren groß schreiben außer den Tabellengeschichten.
also vor dem urlencode (zeile 508)
Code: Alles auswählen
$value = TagsToLower($value); // convert all html tags to lower case
weiteres wie alle attribute mit quotes zu versehen könnte man dann dazu einbauen...
Code: Alles auswählen
/**
* Convert all tags To lowercase (xhtml - conform)
*
* @param string $value Content
*
* @return $value
*
* @author Martin Horwath <horwath@dayside.net>
* @copyright DAYSIDE.net <www.dayside.net>
*/
function TagsToLower($value){
$value = preg_replace(',<(/?)([a-zA-Z]+)([^>]+)?(/?)>,ie', '"<\1".strtolower("\2")."\3\4>"', $value);
return $value;
}
an sich werden jetzt alle tags transformiert die folgendes format haben
<TAG>, </TAG>, <TAG/>, <TAG class="any" /> etc...
(zeilenumbrüche sind beim beispiel mit class ebenso erlaubt...
folgendes wird nicht transformiert <!-- //-->, <php ?> etc...
viel spass beim testen...
-
- Beiträge: 74
- Registriert: Fr 7. Nov 2003, 11:35
- Wohnort: München
- Kontaktdaten:
Hi emergence
der Ausdruck passt für den spaw optimal (soweit ist das bis jetzt testen konnte...). Hier sind nämlich -seltsamerweise- die Attribute klein geschrieben.
Um Deinen Anspruch gerecht zu werden (convert all tags to lower case) müsste man noch die Attribute ändern. Ich hab das mal versucht, komme aber nur zu dem Ergebnis, dass nur das erste vorkommende Attribut klein geschrieben wird. Versuch's aber weiterhin.
Gruß
Wolfgang
der Ausdruck passt für den spaw optimal (soweit ist das bis jetzt testen konnte...). Hier sind nämlich -seltsamerweise- die Attribute klein geschrieben.
Um Deinen Anspruch gerecht zu werden (convert all tags to lower case) müsste man noch die Attribute ändern. Ich hab das mal versucht, komme aber nur zu dem Ergebnis, dass nur das erste vorkommende Attribut klein geschrieben wird. Versuch's aber weiterhin.
Gruß
Wolfgang