contao / core

Contao 3 → see contao/contao for Contao 4
GNU Lesser General Public License v3.0
492 stars 213 forks source link

r742 - Templates aus xhtml/html5 #3103

Closed ghost closed 12 years ago

ghost commented 12 years ago

Es koennen nicht gleichzeitig Templates fuer xhtml und html5 angepasst werden.

Bsp.: fe_page.tpl existiert in beiden Versionen.

Im Theme kann ich nur einen Ordner definieren. Kopiere ich nun ein Theme, wird dies ohne die Pfadangabe standardmaessig in templates kopiert. Jedoch mit dem Verlust XHTML | HTML5

Erst durch manuelles Erstellen von Zusatzordnern im Templateverzeichnis (ueber FTP z.B.) koennen nun die PFade im Kopierordner angepasst werden.

Loesung : Defaultmaessig im Templatesverzeichnis jeweils den HTML5 und den XHTML Ordner erstellen

Related issues: #3087

--- Originally created by lindesbs on May 24th, 2011, at 06:02pm (ID 3103)

leofeyer commented 12 years ago

Gut, dass Du es noch mal ansprichst. Lass uns kurz über "best practice" nachdenken. Momentan ist die Logik wie folgt:

templates-Ordner

Theme-Ordner

Es gibt etliche Templates, bei denen es sich nicht lohnt, die Unterscheidung HTML5/XHTML zu machen. In diesem Fall ist es praktisch, beide Templates gleichzeitig überschreiben zu können. Habe ich zumindest so angenommen :)

Ich habe auch schon darüber nachgedacht, die Unterordner komplett wegzulassen und stattdessen die Dateiendungen .html5 und .xhtml einzuführen. Das Problem daran ist, dass weder der Apache noch die gängigen PHP-IDEs diese Dateien standardmäßig handeln können.

--- Originally created on May 25th, 2011, at 09:31am

ghost commented 12 years ago

Deshalb habe ich ja primaer ein anderes Verfahren favorisiert, welches sich einfach in das System eingliedert, und zwar nicht das Trennen in Verzeichnisse, sondern ausschlieslich das Anpassen des Dateinamens. Also im Sinne von

Dies funktionert mit alles Webservern und Systemen, und es ist auch ohne Core-Anpassungen machbar. Zumal man dann auch recht einfach weitere AusgabeFormate unterstuetzen kann, ohne im Core irgendentwas anpassen zu muessen.

--- Originally created by lindesbs on May 25th, 2011, at 09:35am

Toflar commented 12 years ago

Zudem liesse sich im BE die visuelle Unterscheidung immer noch realisieren. Ich denke da an Icons vor den Templatenamen und dem bekannten panelLayout-Filter. Dann kann man sich auf Wunsch nur alle xhtml oder html5 oder xy formatierten Templates ausgeben lassen.

--- Originally created on May 25th, 2011, at 09:53am

leofeyer commented 12 years ago

und es ist auch ohne Core-Anpassungen machbar

Dafür ist es nicht rückwärtskompatibel, denn alle angepassten .tpl-Dateien müssten entsprechend umbenannt werden. Und auch wenn man im BE mit Icons oder ähnlichem arbeitet, ist es im FTP-Programm sehr unübersichtlich.

Aber gut, ich werde mal sehen, ob sich das ändern lässt. Bei einer Dateiendung a la .html5.tpl sehe ich jedoch schon jetzt Probleme, weil z.B. der Template-Editor das als die Datei fe_page.html5 mit der Endung .tpl interpretieren wird :)

--- Originally created on May 25th, 2011, at 09:59am

ghost commented 12 years ago

die "alten" TPL koennen ja so bleiben.

Dann ist halt "altes" HTML immernoch fe_page.tpl Und die "neuen" haben halt den Zusatz Suffix.

Und der TemplateEditor macht jedenfalls in der 79357d1a049389811a22e4c22bb9fdf8 die Arbeit mit diesem Verfahren richtig. Beim Editieren als auch beim Umbenennen bleibt der initiale Suffix erhalten.

--- Originally created by lindesbs on May 25th, 2011, at 10:04am

Toflar commented 12 years ago

Dafür ist es nicht rückwärtskompatibel, denn alle angepassten .tpl-Dateien müssten entsprechend umbenannt werden. Könnte man nicht bei der Installroutine beim Update auf die 2.10 einfach alle Template-Ordner scannen und xy.tpl in xy.xhtml.tpl umbenennen?

Nur mal so als Idee, die ich gerne in die Runde werfen möchte :)

--- Originally created on May 25th, 2011, at 10:36am

leofeyer commented 12 years ago

So, in cb8a08fb30c01e45875ed4cd4293bf42 habe ich mal den anderen Ansatz implementiert.

--- Originally created on May 25th, 2011, at 12:42pm

ghost commented 12 years ago

Hm, in cb8a08fb30c01e45875ed4cd4293bf42 machst du genau das, was du du in #5 bemaengelt hast. Absolut keinerlei rueckwaertskompatibilitaet mehr vorhanden.

Du hast dreimal die fileTypes definiert

http://dev.contao.org/projects/typolight/repository/entry/branches/contao-2.10/system/modules/tpl_editor/dca/tl_templates.php#L42 http://dev.contao.org/projects/typolight/repository/entry/branches/contao-2.10/system/modules/tpl_editor/dca/tl_templates.php#L55 http://dev.contao.org/projects/typolight/repository/entry/branches/contao-2.10/system/modules/tpl_editor/dca/tl_templates.php#L203

Du laesst ausschliesslich xhtml und html5 zu. Somit sind ALLE Erweiterungen ausgesperrt, die mit tpl arbeiten.

--- Originally created by lindesbs on May 25th, 2011, at 01:11pm

Toflar commented 12 years ago

Jetzt ist es aber nicht mehr rückwärtskompatibel oder? Du suchst ja jetzt effektiv nach

$strKey = $strTemplate . '.' . $strFormat;

oder habe ich was übersehen? Testen kann ich leider im Moment nicht, werde das aber auf jeden Fall noch nachholen.

Ausserdem, was mir noch aufgefallen ist, beim Anlegen eines neuen Templates führst Du folgende Prüfung durch:

!preg_match('/\.(html5|xhtml)$/', $strTemplate)

War nicht irgendwie ursprünglich angedacht, dass man die Möglichkeit bietet, weitere Template-Typen zu unterstützen? Also evtl. da direkt auf $GLOBALS['TL_DCA']['tl_templates']['config']['validFileTypes'] zurückgreifen?

Dann bin ich aber immer noch der Meinung, dass ein Filtern nach Output-Format ganz praktisch wäre, nicht?

--- Originally created on May 25th, 2011, at 01:18pm

Toflar commented 12 years ago

Hmpf, zu spät^^ :D

--- Originally created on May 25th, 2011, at 01:18pm

leofeyer commented 12 years ago

Ok, das werde ich noch anpassen.

--- Originally created on May 25th, 2011, at 02:23pm

leofeyer commented 12 years ago

Der Theme-Manager ist auch noch auf .tpl beschränkt.

--- Originally created on May 25th, 2011, at 02:24pm

ghost commented 12 years ago

Das System war halt komplett auf tpl ausgelegt, weshalb ich ja auch das Verfahren wie in #3 vorgeschlagen hatte

--- Originally created by lindesbs on May 25th, 2011, at 02:28pm

leofeyer commented 12 years ago

So, in der 0260a738b3957c2a6d6af7ed6488863e sollte es nun passen.

--- Originally created on May 25th, 2011, at 03:18pm

xchs commented 12 years ago

Lokal auf meinem Rechner hat sich jetzt der gute Firefox den Frontend-Templates "*.xhtml" angenommen. :)

(Stört mich aber auch nicht weiter, zumal ich die Templates ohnedies anders öffne...)

--- Originally created on May 25th, 2011, at 03:34pm

leofeyer commented 12 years ago

Hast Du den entsprechenden Eintrag aus der .htaccess.default übernommen?

AddHandler application/x-httpd-php .tpl .html5 .xhtml

--- Originally created on May 25th, 2011, at 03:44pm

ghost commented 12 years ago

Aber Dir ist schon klar, das du durch diesen htaccess Eintrag

Einfach im tl_files eine datei erzeugen info.tpl mit Schadcode, oder dem auslesen von Daten.

Diese koennen dann naemlich ganz einfach im Browser von extern aufgerufen werden und werden natuerlich als PHP ausgewertet.

Meiner Meinung nach ein NO GO

--- Originally created by lindesbs on May 25th, 2011, at 03:51pm

leofeyer commented 12 years ago

Zum einen sind alle Templates-Ordner durch entsprechende .htaccess-Dateien geschützt. Zum anderen wurden die entsprechenden Dateien bisher bei direktem Aufruf im Klartext angezeigt, was meiner Meinung nach noch viel schlimmer ist, denn nicht selten werden in eigenen Templates Zugangsdaten für die Datenbank etc. angegeben. Der Umweg über den PHP-Parser sorgt wenigstens dafür, dass diese Ausgabe verschwindet.

Du hast aber insofern Recht, als dass vermutlich niemand diese Dateien direkt aufrufen wird. Wir können also genauso gut folgendes verwenden:

<FilesMatch "\.(tpl|html5|xhtml)$">
  Order allow,deny
  Deny from all
</FilesMatch>

--- Originally created on May 25th, 2011, at 03:56pm

xchs commented 12 years ago

Jepp, das habe ich. Nicht, dass wir uns hier missverstehen: Gemeint war lediglich die MIME-Verknüpfung der registrierten Dateitypen im Windows Explorer. Die Erweiterung ".xhtml" wird nun mal standardmäßig durch den Webbrowser (in meinem Fall "Firefox") im Betriebssystem registriert und infolgedessen beim Öffnen eben durch den XML-Parser interpretiert.

Who cares? Stören tut mich das nicht wirklich, da ich - wie gesagt - die Templates sowieso mit meinem Editor öffne und bearbeite...

--- Originally created on May 25th, 2011, at 04:01pm

leofeyer commented 12 years ago

In 0f4a6914ebd1e709039efffa576840c6 werden jetzt auch wieder die .tpl-Dateien geladen (Rückwärtskompatibilität).

--- Originally created on May 25th, 2011, at 08:10pm

xchs commented 12 years ago

Ist es jetzt eigentlich notwendig, eigene neue Templateendungen ("Einstellungen" > "Unterstützte Templateformate") in der .htaccess zu ergänzen?

--- Originally created on October 22nd, 2011, at 12:13am

leofeyer commented 12 years ago

--- Originally completed on May 25th, 2011, at 03:18pm