CssToHead abschaltbar? - zumindest für'n Test

DarkViper

Zur Zeit ist mir persönlich die Wohnungssuche und alle Stunde ein kaltes Fussbad mit Abstand das Wichtigste...

Und bevor Dietmar die 2.12.2 nicht fertig und veröffentlicht hat, wird es von der Seite wohl auch keine Änderungen mehr geben.
[url=http://www.youtube.com/watch?v=tmzDAz6ZvFQ]Der blaue Planet[/url] - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen[br]
[i]"You have to take the men as they are... but you can not leave them like that !" :-P [/i]
[i]Das tägliche Stoßgebet: [b]Oh Herr, wirf Hirn vom Himmel ![/b][/i]

dbs

Tja, sieht nicht so aus als ob hier jemand antwortet.
Sieht auch so aus als ob die Logik schon drin ist. Nennt sich Exception.
Ich fürchte damit hat es sich dann.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

#12
Quotedenn die Devs lieben Logik.
Jep, auch wenn ich kritisiere, bohre, und naheliegende Lösungen andenke - mehr kann ich selbst ja meist auch nicht -, weiß ich, daß die DEV dann doch abgesehen vom Durchblick, natürlich den Überblick, also den Blick auf's System haben. Somit warte ich immer neugierig auf Antworten der DEV auf das Vorgetragene, und freue mich auf die oft darauf folgenden Einsichten/Erkenntnisse. So haben wir alle etwas davon.
MfG. Evaki

dbs

Da sind 2 Funktionen in dem Filter.
Innerhalb dieser Funktionen könnte man zuerst fragen ob es head gibt. Wenn nicht, dann kommt es ungefiltert wieder raus.
Beispiel erste Funktion. Die if-Abfrage umschließt alles außer return $sContent;

<?php
    
function _doFilterCssToHead($sContent) {
        if ( 
stripos($sContent,'</head>') !== false ) {
            
// move css definitions into head section
            
$regexPattern "#<body.*(?P<css_tag>(?:<style[^>]+>.*?</style>)|(?:<link[^>]+/{0,1}>)|(?:<link[^>]+>.*?</link>))#isxU";
            
$cssStyles = [];

            
//save all <style/link>-tags in $cssStyles and remove from content
            
$sContent preg_replace_callba ck($regexPattern, function($match) use(&$cssStyles){ $cssStyles[] = $match['css_tag']; return str_replace($match['css_tag'],'',$match[0]); }, $sContent, -1);

            
//append contents from $cssStyles to <head>-section
            
$sContent preg_replace('#</head>#i'PHP_EOL.implode(PHP_EOL$cssStyles).PHP_EOL.'</head>'$sContent);
        }
        return 
$sContent;
    }


Analog auch in der zweiten Funktion machen.
Ist eigentlich sowas von logisch, dass man es einbauen müsste im Core.
Aber irgendwas muss ich übersehen, denn die Devs lieben Logik.  :)
Wahrscheinlich noch logischer erst zu fragen ob vorhanden und dann erst in die Funktion. Also einmal nur außenrum statt zweimal drinnen.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

#10
Sehr gute Idee!  (Y)
Das Naheliegende sieht man nicht immer sofort. Das ist wenigstens konstruktiv.
"Geht nicht" kenn ich eigentlich nur von deutschen Handwerkern.  :-D
Besser als im Core rum zu machen. Wir wollen keine separate WB-Version.
Weiß zwar noch nicht wie, hoffe aber, daß sich jemand findet.
Wer Droplets basteln kann, könnte möglicherweise auch so'n Filter...
-----------------
Ups, bekam soeben die Rückmeldung, daß CssToHead grundsätzlich nicht gebraucht wird, wenn CSS richtig - sprich valide - plaziert wird/ist.
Bei den aktuellen Versuchen um mixed-content's geht's in diesem Zusammenhang anscheinend auch um zusammengesetzte Templates, Abschnitte werden jeweils unterschiedlich generiert bzw. zusammengefügt. Das scheint dann den Fehler auszulösen.

So, nun ist Wochenende (bis sich der nächste meldet  :roll:

MfG. Evaki

dbs

Zu viele Schalter können aber auch zu viel sein.
Wäre es nicht besser dem Filter zu sagen: versuch nicht in den head zu schreiben/schieben, wenn du keinen findest.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

#8
Description for Filters in Module Output-Filter - WB 2.10.0 & WB 2.8.3 SP7 + Patch
CSStoHead (removed)
this Filter is now included in the WB-Core and removed from the Output-Filter-Module. No further Action needed
Dieser Filter wurde direkt in WB eingebunden und im Modul Output-Filter entfernt. Keine weitere Aktion nötig.


Was gestern oder vorgestern noch richtig bzw. sinnvoll sein konnte, muß es heute nicht unbedingt mehr sein. Das sollte auch beim letzten DEV auf dieser Erde mittlerweile angekommen sein.

Der Trend bei diversen CMS geht eindeutig in Richtung Öffnung/Schnittstellen, Cooperation.
Man kann sich natürlich auch einbuddeln - solange noch welche mitbuddeln, geht's ja.
MfG. Evaki

ps. Der Hinweis zur Deaktivierung der entsprechenden Zeile findet sich im Forum nicht unbedingt selten. Warum kein Aufschrei: SICHERHEITSGEFÄHRDUNG? Der Russe kommt, Trumpi wg Ramstein und Dröhnung- ähm Drohnen.

evaki

#7
QuoteEntwickler Herzflimmern und normal sollte jeder Webdesigner Kopfschmerzen
Herzflimmern, nur wegen dieser Filterroutine, die nur Leute brauchen, die nicht in der Lage sind ein rudimentäres html-Template mit gescheiten css-Einträgen an der richtigen Stelle hinzubekommen?
Webdesigner wissen schon was sie tun.
Auch weil sie bei mixed Krams machmal auch auf unkonventionelle includes angewiesen sind.
html5-includes funktionieren auch nicht immer...
So zumindest die Aussagen hierzu, wie das konkret aussieht, weiß ich aktuell nicht.
Jedenfalls sollte Trennung von html und Code weiterhin Ziel bleiben, in diesem Fall wuchtet ein Filter den css-Kram nach <head>, was in Ordnung ist, wenn's gewünscht ist. Ist es aber nicht. Andere Filter sind ja auch mit Ein/Aus steuerbar.

War das "früher............." nicht auch mal so? Mir schwant da was.

Warum nun ein CSS z.B. im Footer ein Sicherheitproblem in WB darstellen soll, kann ich nicht nachvollziehen.

Ach ja, frühe Dokumente des Internets waren sehr oft nur als Textdatei mit html.extention zu sehen - fast wie heute mit html5, wo ja nur rudimentäre Angaben drin sein brauchen.
MfG. Evaki

Luisehahne

Quote from: evaki on June 22, 2019, 02:59:47 PM
There was an uncatched exception malformed document created in line (67) of (\modules\output_filter\filters\filterCssToHead.php):
Sowas erhält man bei fehlendem <head></head>.
Da in einem speziellen Fall der Abschnitt nicht vorhanden ist und auch nicht sein soll, bräuchte ich eine Lösung für das Problem. Gibt's irgendwo 'nen Schalter, oder muß man am Core rumfummeln?

Ist schon klar: <head> in html = Pflicht, Trotzdem braucht's für Experimente und Testerei manchmal "Extremtrennung" von Code und Content. (Hier wird gerad' wieder mit xml experimentiert)
Ist wieder so'n Fall, wo ich keinen Wächter für'n Code, hier Template, brauche.

Browsern war das schon immer egal, statt html-Elemente Text zu lesen.  :?
MfG. Evaki

Auch nicht fürn Test werde ich die WB Sicherheit und deren Exceptions aushebeln.
Da bekommt als Entwickler Herzflimmern und normal sollte jeder Webdesigner Kopfschmerzen bekommen.

Dietmar
Note: Once the code has been generated, it is easy to debug. It's not a bug, it's a feature!

evaki

OK.

Ist m.E. wieder so'n Fall, wo's gut gemeint (isch helf disch), aber leider nicht abschaltbar ist.
Kann man das "irgendwie" einstellbar machen? Für die meisten Anwender ist das ja nützlich, sich über sowas keine Gedanken machen zu müssen - genau!  :-D

Hier wird z.Z. viel "gespielt", so mit mixed Contend, wo dann solche Hilfen unerwünschte Auswirkungen haben, bis zu massiven Codeänderungen. Da werden dann entsprechende Vorlagen u.U. unbrauchbar, die Arbeit dann für die Tonne.
MfG. Evaki

dbs

Bin kein Dev.
Darum: alles auf eigene Gefahr.  8)
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

Danke, danke, das ging ja schnell. Dein Tip ohne "Fragen Sie Ihren Arzt oder Apotheker"?

dbs

Hatten wir letztens erst hier irgendwo im Forum.
/modules/output_filter/filters/index.php Zeile 29

// 'CssToHead',
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

#1
There was an uncatched exception malformed document created in line (67) of (\modules\output_filter\filters\filterCssToHead.php):
Sowas erhält man bei fehlendem <head></head>.
Da in einem speziellen Fall der Abschnitt nicht vorhanden ist und auch nicht sein soll, bräuchte ich eine Lösung für das Problem. Gibt's irgendwo 'nen Schalter, oder muß man am Core rumfummeln?

Ist schon klar: <head> in html = Pflicht, Trotzdem braucht's für Experimente und Testerei manchmal "Extremtrennung" von Code und Content. (Hier wird gerad' wieder mit xml experimentiert)
Ist wieder so'n Fall, wo ich keinen Wächter für'n Code, hier Template, brauche.

Browsern war das schon immer egal, statt html-Elemente Text zu lesen.  :?
MfG. Evaki