Closed cmb69 closed 2 years ago
Jetzt weiß ich auch wieder, warum ich in die Tooltipps geschrieben habe: Pixel(!)-Angabe - mit Ausrufezeichen.
Bin dafür Padding in px
verbindlich vorzuschreiben. Das stellt auch keine wesentliche Behinderung bei der Anwendung dar.
Aber darf es denn nun nur einfaches xx.px sein, oder geht auch ww.px xx.px yy.px zz.px
Aber darf es denn nun nur einfaches xx.px sein, oder geht auch ww.px xx.px yy.px zz.px
Es darf definitv nur ein einzelner px-Wert sein oder 0
!
Alle anderen Varianten (mehrer Werte oder andere Einheiten) führen zu Fehlern bei der Höhenberechnung.
Das fällt zwar bei wenig Inhalt kaum auf, bei sehr langem Inhalt wird es aber immer den unteren Teil abschneiden.
Ist es sinnvoll, auf Werte unter 1, also i.e 0.55px zu prüfen, oder Werte wie 5.555px oder einigen wir uns darauf, nur ganze Pixelwert ab 1 bis 9999?
Wie sieht es im gleichen Zusammnehang bei bei max-height aus?
content-padding und max-height werden mit parseInt() behandelt und liefern immer nur ganze Zahlen. Es ist nicht zu erwarten, dass Dezimalzahlen (Kommazahlen) eingegeben werden. Negative Zahlen gibt es nicht für padding und max-height, also werden solche Angaben ignoriert. Das merkt man dann schon.
ok, aber bei max-height sind ja nun auch Angaben in em oder rem möglich. Da ist es ja nun nicht unwahrscheinlich, das Angaben wie 10.5em kommen. Dann sollte der Hilfetext entsprechend angepasst werden. Wenn padding generell nur in px erlaubt ist, ist es dann nicht besser, wir lassen bei der Eingabe bzw. Angabe gleich nur Ziffern zu?
... aber bei max-height sind ja nun auch Angaben in em oder rem möglich. Da ist es ja nun nicht unwahrscheinlich, das Angaben wie 10.5em kommen.
Wir haben ein Problem: Es gibt max-height
für die Berechnung der Content-Höhe (im JS) und max-height
als Parameter oder Config-Option.
In meiner letzten Antwort habe ich das dummerweise vermischt.
Also, du meinst max-height
als Parameter - stimmts?
Bei diesem Wert ist alles egal. Der wird nur in dieser Zeile als Inline-Style eingefügt ($limitheight).
https://github.com/TN03/expandcontract/blob/ec4354e27e6d07fd7b37cefa10e00e9912ec49aa/index.php#L202
Wenn padding generell nur in px erlaubt ist, ist es dann nicht besser, wir lassen bei der Eingabe bzw. Angabe gleich nur Ziffern zu?
Das scheint mir vernünftig. Man müsste das px
dann igendwie irgendwo anfügen.
Evtl. hier? @TN03
https://github.com/TN03/expandcontract/blob/ec4354e27e6d07fd7b37cefa10e00e9912ec49aa/expandcontract.js#L54
Also vielleicht so
el.style.setProperty("padding", contentPadding + "px");
Ich weiß nicht, ob die Eingaben bzw. Parameter dann noch geprüft werden müssten.
Nur positive ganze Zahlen als Eingabe zu erlauben, erscheint mir sinnvoll. Andernfalls müssten ggf. negative Paddings noch sonderbehandelt werden (parseInt("-1") === -1
).
Andernfalls müssten ggf. negative Paddings noch sonderbehandelt werden (parseInt("-1") === -1).
Wäre das nicht wieder zu übertrieben? Das macht doch sonst auch keiner. Im Gegensatz zu negativen Margins werden negative Paddings von den Browsern als invalide bewertet und ignoriert. Der Anwender würde das sofort sehen.
Ach übrigens, @cmb69: Happy birthday to you!
Ach übrigens, @cmb69: Happy birthday to you!
Möchte wissen, warum Frank sowas immer weiß. Ich schließe mich natürlich an.
https://github.com/olape-git/expandcontract/tree/Validate-input-for-max-height%2C-content-padding Damit sollten die CSS Eingaben eigentlich passen bzw unpassende ignoriert werden, auch negative. padding -> nur ganzalig und in px bzw 0 und off height -> ganzzahlig und mit Trennung (Punkt) px, em, rem, %, vh bzw. 0 und off Zusätzlich werden noch Angaben wie EM, REM, PX, VH, OFF ... korrigiert.
Edit Das betrifft sowohl Parameter als auch die Angaben in der config.
Wir sollten die Hilfsfunktionen auslagern --> ecfuncs.php
Ist das hier
Das scheint mir vernünftig. Man müsste das
px
dann igendwie irgendwo anfügen. Evtl. hier? @TN03
noch relevant nach dem letzten Verbesserungen https://github.com/TN03/expandcontract/pull/23 ? Oder können wir hier schließen?
Ach @cmb69: Alles, alles Gute!
noch relevant nach dem letzten Verbesserungen https://github.com/TN03/expandcontract/pull/23 ? Oder können wir hier schließen?
Es ist noch so, dass man px
selbst eintragen muss.
Und ich finde: so lassen und schließen.
Es wird auch nichts anders mehr zugelassen. Fehlt es, wird die Eingabe ignoriert. Von daher alles im grünen.
Es wird auch nichts anders mehr zugelassen. Fehlt es, wird die Eingabe ignoriert. Von daher alles im grünen.
Ja, genau so hatte ich den Code verstanden.
Ach @cmb69: Alles, alles Gute!
Auch von mir alles Gute, viel Glück und Gesundheit!
@lck-git , @frase-git , @olape-git Schaut euch bitte mal bei Gelegenheit diesen Branch an. Es bleibt zwar bei "px", aber jetzt universell; https://github.com/TN03/expandcontract/tree/Content-Padding_more_values
Die Idee ist gut, die Eingabe muss aber besser geprüft werden. Ich schau morgen mal, ob ich da helfen kann.
Die Idee ist gut, die Eingabe muss aber besser geprüft werden. Ich schau morgen mal, ob ich da helfen kann.
Das stimmt. Die Prüfung ist zu lax. Ich hab' das schon einmal verbessert:
if (!preg_match('/^[0-9]+(px)$/', $padding)) {
Siehe auch: https://cmsimpleforum.com/viewtopic.php?f=16&t=18315&start=460#p83526
Das sollte dann eigentlich passen :).
https://github.com/TN03/expandcontract/blob/97b2ba2354ef6f787960656c21c0df923c540f08/index.php#L118
also wenn ich das richtig sehe, dann geht hier alles daneben, was nicht dem Schema xx.px entspricht. Da stehen wir doch wieder am Anfang. Angaben wei 'wwpx xxpx' oder 'wwpx xxpx yypx zzpx' gehen daneben.
also wenn ich das richtig sehe, dann geht hier alles daneben, was nicht dem Schema xx.px entspricht.
Aber erst nach dem der String an Leerzeichen gesplittet wurde. Sollte also eigentlich passen. Evtl. könnte man dem Splitten die einzelnen Arrayelemente noch trimmen. Oder vielleicht besser statt explode()
preg_split()
nutzen, um zu verhindern, dass zusätzliche Whitespace zum Ärgernis werden (e.g. https://3v4l.org/FcnE1).
Aber erst nach dem der String an Leerzeichen gesplittet wurde. Sollte also eigentlich passen.
Stimmt, da habe ich nicht aufgepasst
Könnte man noch darüber philosophieren, ob eine Prüfung im Ganzen, vor dem Splitting performanter wäre, als 4x den einzelnen String zu prüfen. Dabei wäre es auch ohne große Umstände möglich für recht und links abweichende Einheiten zuzulassen (falls das in der Praxis überhaupt üblich ist)
'11px 12px 13px 14px 15px' ist nicht sinnvoll, aber zur Zeit möglich und wird auch so übernommen
Dabei wäre es auch ohne große Umstände möglich für recht und links abweichende Einheiten zuzulassen (falls das in der Praxis überhaupt üblich ist)
Hier muss zwingend alles in px passieren, weil ansonsten im JS die Höhenberechnung falsch sein wird.
'11px 12px 13px 14px 15px' ist nicht sinnvoll, aber zur Zeit möglich und wird auch so übernommen
Da sehe ich kein Problem. Das verursacht weder einen Laufzeit- noch eine JS - Fehler. Es verhält sich genau so, als wenn der User, wie gewünscht, die stylesheet.css des Templates mit den Styles für das Akkordeon füllt und er das dann so einträgt.
Meiner Meinung nach kann man einem User schon etwas Einarbeitung bzw. RTFM zumuten.
um zu verhindern, dass zusätzliche Whitespace zum Ärgernis werden (e.g. https://3v4l.org/FcnE1).
Das wäre vielleicht noch sinnvoll. Allerdings wird der leere Array-Eintrag sofort als falsch erkannt und der User bekommt sogar eine Meldung, dass seine Angaben Fehler enthalten.
Hier muss zwingend alles in px passieren, weil ansonsten im JS die Höhenberechnung falsch sein wird.
Aber eigentlich doch nur für oben und unten, oder? Also nur als Frage. Ich finde die Möglichkeit in px vollkommen ausreichend. Aber es wird sich immer jemand finden ...
Da sehe ich kein Problem. Das verursacht weder einen Laufzeit- noch eine JS - Fehler. Es verhält sich genau so, als wenn der User, wie gewünscht, die stylesheet.css des Templates mit den Styles für das Akkordeon füllt und er das dann so einträgt.
Ja, es steht dann eben einfach so falsch drin. Probleme macht es keine.
Meiner Meinung nach kann man einem User schon etwas Einarbeitung bzw. RTFM zumuten.
Das ist eigentlich auch immer meine Meinung. Wofür ich übrigens sehr oft kritisiert werde. Zu den beiden letzten muss ich an dieser Stelle aber sagen, wir haben hier schon so viel versucht abzufangen, dass ich es nur konsequent finde, das auch hier noch zu tun.
Das wäre vielleicht noch sinnvoll. Allerdings wird der leere Array-Eintrag sofort als falsch erkannt und der User bekommt sogar eine Meldung, dass seine Angaben Fehler enthalten
Ich glaube trotzdem, es wäre besser. Denn ein oder zwei Leerzeichen ist wirklich nicht immer unbedingt auf den ersten Blick zu erkennen. Auch falls es denn tatsächlich noch die Möglichkeit gibt, dass nicht alle Editoren es so händeln wie Tiny 4.
Alles gut :). Ich finde diese ganze Validierung hier schon sehr grenzwertig. Aber wir haben's halt übertrieben, dann sollten wir auch konsequent bleiben. Könntest Du deinen Master für Tests vielleicht mal im Board ankündigen? Es muss ja lediglich index.php getauscht werden. Und da hast du ja auch schon alle anderen Fehlerbereinigengen (on/off - die Tücke der RegExp ;-) ) mit drin? Ich kann jetzt leider erst wieder nur abends / nachts und nur begrenzt.
Auch falls es denn tatsächlich noch die Möglichkeit gibt, dass nicht alle Editoren es so händeln wie Tiny 4.
Das verstehe ich noch immer nicht. Kannst du erklären wo das Problem ist? Es ist doch egal, wie der Editor das macht. Es werden halt alle Leerzeichen vor und nach dem String entfernt - multibyte-fähig war der Punkt.
Das verstehe ich noch immer nicht. Kannst du erklären wo das Problem ist? Es ist doch egal, wie der Editor das macht. Es werden halt alle Leerzeichen vor und nach dem String entfernt - multibyte-fähig war der Punkt.
Genau, vor und nach. Aber nicht mittendrin. (Es geht ja hier nur um padding und falsche Eingaben mit mehr als einem Leerzeichen Trennung. Das zu korrigieren und nicht mit einer Fehlermeldung abzufangen.)
Und so lange das immer so ist, wie aktuell bei Tiny, dass es jeweils min. eins, aber auch nur ein "richtiges" Leerzeichen ist und der Rest irgendwas anderes (was auch immer das ist), dann wird "explode auf Leezeichen" auch funktionieren. Aber ist es immer so?
Also alles kein muss für ein korrekte Funktion. Aber Usereingaben wenigstens per Trim auf zu bererinigen ist eigentlich gängige Praxis. Bisher habe ich das auch immer für ausreichend gehalten. Bis du die Leerzeichen von Tiny ins Spiel gebracht hast. Das hatte ich noch nicht auf dem Schirm.
Mit der Option in der config kann man das ausprobieren. Wer dort mal ein 4-wertiges Padding eingibt (wirklich per Hand eingibt), mit wenigstens an einer Stelle mehr als einem Leerzeichen Trennung, der wird festellen es funktioniert nicht mehr. Korrekt, wie ich betonen möchte. Aber auch hier wieder, wir haben hier so viel abgefangen, das ich meien es auch hier noch zu Ende bringen zu können. Macht man das in Tiny funktioniert es, wei ltiny eben egal wie viel Leerzeichen hintereinander kommen, nur ein 'normales Leerzeichen schreibt'
Also statt https://github.com/TN03/expandcontract/blob/97b2ba2354ef6f787960656c21c0df923c540f08/index.php#L110
eben
$t = preg_split(`/\s+/u`, $temp);
Zur Zeit wird
contentPadding
nur als Pixelwert richtig behandelt: https://github.com/TN03/expandcontract/blob/c98c475891a8755b6171023e34798348c8f5c513/expandcontract.js#L30Ich glaube (bin nicht sicher; Überblick verloren), dass hier aber allgemeine CSS-Längen erlaubt sein sollten. Diese gehen aber durch
parseInt()
verloren, obwohl sie an anderer Stelle dann doch verwendet würden: https://github.com/TN03/expandcontract/blob/c98c475891a8755b6171023e34798348c8f5c513/expandcontract.js#L54Also entweder nur Pixelwerte akzeptieren, oder irgendwie umrechnen (dürfte nicht ganz trivial sein, aber vielleicht kann man erst das contentPadding setzen, und dann daraus die max-height berechnen; um Flackern zu verhindern, müsste das vielleicht in einem verborgenen Element durchgeführt werden).