contao-community-alliance / contao-multicolumnwizard-bundle

Contao 4 Widget - MultiColumnWizard
GNU Lesser General Public License v3.0
12 stars 12 forks source link

[Feature] Rewrite html generation #47

Open stefanheimes opened 5 years ago

stefanheimes commented 5 years ago

All of the HTML is generated inline in PHP. We don't have any templates. So it is relay difficult to rewrite the HTML or even replace it with another structure.

I have created a new feature brunch with Twig Template support. (https://github.com/menatwork/contao-multicolumnwizard-bundle/tree/features/twig)

But there are some Questions:

  1. Should we use one template for all or three (1. HTML MCW 2. Script Block 3. Outter Template for 1. and 2. Point)
  2. Should we use a div or a table structure.
  3. Any other wishes?
stefanheimes commented 5 years ago

@discordier @baumannsven @zonky2 @SvenMeierhans @davidmaack @adziemba Input is welcome :)

zonky2 commented 5 years ago

wenn wir die Templates austauschbar machen, ist das im Prinzip egal, ob table oder div - da du schon divs gemacht hast, kann das so bleiben... Das CSS würde ich mit table/table-row/table-cell machen - die einzelnen Spalten/Zeilen/Zellen sollten über CSS-Klassen ansprechbar sein.

Die wichtigste Einstellung wird die Spaltenbreite sein - die sollte flexibel als px oder % einstellbar sein. Das sollte auch ohne eine CSS-Datei möglich sein, damit man wie in MM multitable das mit einer DCA-Datei abfrühstücken kann.

stefanheimes commented 5 years ago

@zonky2 Idee wäre, dass im eval vom Widget dann solch eine Einstellung noch vornehmen, und diese dann auf jeder Spalte setzten.

zonky2 commented 5 years ago

Hauptsache wir sind nicht mehr an feste Pixel gebunden - in C4 macht das keinen Sinn mehr (bis auf die feste Breite der Icon-Spalte)

discordier commented 5 years ago

Allgemein zu twig Templates. Injecte so wenig wie möglich aber so komfortabel wie möglich. Beispiel schlecht:

$twig->render([
    'headFoo' => $translator->trans('Foo'),
    'headBar' => $translator->trans('Bar'),
    'foo' => $this->foo,
    'bar' => $this->bar,
])
{{ headFoo }}: {{ foo }}
{{ headBar }}: {{ bar }}

Beispiel besser:

$twig->render([
    'widget' => $this
])
{% trans %}Foo{% endtrans %}: {{ widget.foo }}
{% trans %}Bar{% endtrans %}: {{ widget.bar }}

Es ist geschickter, wenn das Template sich die Informationen pullen kann, denn nur es weiß was genau es braucht. Wenn z.B. ein Text nicht ausgegeben werden soll, macht es keinen Sinn diesen im Controller auch zu übersetzen.

Lasst uns das auf Mumble mal aufgreifen.

zonky2 commented 5 years ago

see https://github.com/menatwork/contao-multicolumnwizard-bundle/pull/48