WBCE CMS – Way Better Content Editing.
Du bist nicht angemeldet.
Hallo,
ich hab festgestellt, dass Module mit einem Bindestrich im Verzeichnisnamen bei der Sektionsverwaltung admin/pages/sections.php nicht hinzugefügt werden können.
Problem liegt in der sections.php bei der Zeile 89
[== PHP ==]
$module = preg_replace('/\W/', '', $module); // fix secunia 2010-91-4\W bedeutet "not word", also wird einfach der Bindestrich entfernt. Der Bindestrich wie aber auch der Unterstrich oder Zahlen sind aber bei allen Dateisystemen legitime Zeichen für Ordner- und Dateinamen. Um Zukünftige Probleme zu vermeiden, empfehle ich die obere Codezeile wie folgt zu ersetzen:
[== PHP ==]
$module = preg_replace('/[^\w\d\-\_]/', '', $module);Nun wird alles entfernt was keine Buchstaben, Zahlen, Binde- und Unterstriche sind.
Das Ganze ist reproduzierbar. Mein Fix habe ich getestet und funktioniert. Wenn einverstanden werde ich einen Pull Request erstellen. Müsst mir aber noch sagen in welchem Branch.
Gruss
Offline
Es gibt da irgendeinen Grund dafür, dass Modulnamen keine Bindestriche enthalten "sollten" (= dringend empfohlen)
Ja, lag wohl an dieser Regex-Fehlkonfiguration.
Ich kann mir echt keinen Grund vorstellen warum nur Buchstaben für Modul Verzeichnisse erlaubt sein sollen.
Ahja und eigentlich müsste in der admin/pages/sections.php beim Hinzufügen einer Sektion sowieso die ID des Moduls und nicht der Verzeichnissname übergeben werden, dann wäre diese Regex Überprüfung auch hinfällig.
Gruss
Offline
Ich habs nicht im Kopf wieso. Es war irgendwas mit einer geplanten WB.2.8.4 Funktion, mit der Bindestriche in ModulVerzeichnissen oder Namen (angebl auch Templates) nicht mehr erlaubt sein werden.
Es gab eben irgendwann mal einen Hinweis der WB-CLassic Devs.
Kann man sich dran halten - oder eben nicht.
Naja, DV wird hier wohl wenig an WBCE ändern. Geschweige bei WB classic
Bindestrich geht ja überall, ausser wenn man eine neue Sektion hinzufügt. Daher bin ich der Meinung dass man mit meinem Fix oben gut leben kann. Aber mal gucken was NorHei meint...
Offline
Wenn man zb Topics oder Itemz umbenennt, sind Bindestriche nicht erlaubt. Diese Module funktionieren sonst nicht mehr, weil die Verzeichnisnamen in den Namen der DB-Tabellen verwendet werden. Und die dürfen auch keine Bindestriche enthalten.
Ja, aber dass haben sich die Modul Entwickler selber verbockt, resp. sich selber eingeschränkt. Schlussendlich sollte WBCE einfach offen sein in Bezug auf die Dateinamen. Bei den Templates gehts ja auch ohne Bindestriche.
Gruss
Offline
Templates erzeugen ja auch keine DB-Tabellen.
Du kannst ja machen, was du willst.
Ich werde mich daran halten, dass ModulVerzeichnisse keine Bindestriche enthalten sollen. Das ist ja auch nicht schwer. _ ist die gleiche Taste, nur mit Shift. ;-)
Nebenbei: Auch Großbuchstaben können Ärger machen.
Beitrag geändert von grindbatzn (15.07.2016 15:28:22)
Das liegt historisch bedingt am Altcode von WB classic (vor der 2.8.4 Ära). Im Uralt-WB-Core (z.B. 2.7, 2.8) waren viele Datenbankabfragen nicht vernünftig gequotet, was zu Fehlern führte. Als "Workaround" wurden die Symptome mittels hier und da im Core eingestreuten Regexabfragen behoben (z.B. DB-Name, Modul- und Templatename, Seitentitel ...) um "böse" Zeichen in SQL Queries zu vermeiden. Und als Fork hat WBCE diese Altlasten erstmal mit übernommen.
@Chio: Mag sein dass es für zukünftige WB Versionen Beschränkungen dieser Art gibt, aber das sollte uns bei WBCE nicht weiter stören.
P.S.: Dafür ist WB 2.8.4 bezüglich SQL-strict etwas weiter. WBCE fährt diesbezüglich die Schiene von Wordpress und Co. Eine SQL-strict fähige WBCE Version ist aber geplant (WBCE 1.2.x, bzw. 2.0.x mal sehen).
Beitrag geändert von cwsoft (15.07.2016 15:33:56)
Account inactive since 2018/11/17.
Offline