friends-of-contao / contao-privacy

This extension provides some privacy features to Contao 3.5.x and 4.4.x (4.5.x). If you have some ideas which we should add or change in the mentioned Contao versions, feel free to create an issue.
22 stars 5 forks source link

Support youtube-iframe within template #47

Closed Aybee closed 5 years ago

Aybee commented 5 years ago

Related https://github.com/fritzmg/contao-youtube-iframe/issues/9

Kann man das ce_youtube Template bitte wie folgt erweitern? (Wenn gewünscht mache ich noch einen Pull Request.)


<?php $this->extend('block_unsearchable'); ?>

<?php $this->block('content'); ?>
<!-- new wrapper -->
  <div class="video-wrapper<?= $this->arClass ?>">
    <?php if ($this->videoSplash): ?>
      <figure id="videoSplash<?= $this->id ?>" class="image_container" data-video="<?= $this->src ?>">
        <?php $this->insert('picture_default', $this->splashImage->picture); ?>
      </figure>
      <script>
        document.getElementById('videoSplash<?= $this->id ?>').addEventListener('click', function(e) {
          var iframe = document.createElement('iframe');
// ytStrParams
          iframe.src = this.dataset['video'] + '<?= $this->ytStrParams ?>';
          iframe.width = <?= $this->width ?>;
          iframe.height = <?= $this->height ?>;
          iframe.setAttribute('allowfullscreen', '');
          this.parentNode.replaceChild(iframe, this);
        });
      </script>
    <?php else: ?>
<!-- ytStrParams -->
      <iframe width="<?= $this->width ?>" height="<?= $this->height ?>" src="<?= $this->src ?><?= $this->ytStrParams ?>" allowfullscreen></iframe>
    <?php endif; ?>
    </div>

<?php $this->endblock(); ?>

Hintergrund ist, dass die Parameter $this->ytStrParams und der Wrapper div.video-wrapper<?= $this->arClass ?>", welche für die youtube-iframe Erweiterung benötigt werden nicht in dem Template sind.

Die Eränzung dürfte keinen Fehler hervorrufen, wenn youtube-iframe nicht installiert ist.

Wie sieht das ganze in der nächsten LTS aus. Ich habe gehört, dass youtube-iframe da bereits integriert ist. Dann müsste das Template sowieso dementsprechend angepasst werden.

Wie in dem related ticket zu sehen ist, muss man jetzt nur noch dafür sorgen, dass das Template von privacy genommen wird, wenn beide Erweiterungen installiert sind. Momentan wird das von youtube-iframe genommen.

fritzmg commented 5 years ago

Das Template einer Extension in einer anderen Extension zu integrieren (ohne eine Abhängigkeit zu haben), macht keinen Sinn. Du musst in so einem Fall immer selbst ein entsprechend angepasstes Template im /templates Ordner erzeugen.

Selbst wenn man es übernehmen würde: die Funktion ist bereits in Contao enthalten und es würde daher mehr Sinn machen die HTML Struktur des Core zu übernehmen - nicht von einer Extension. Und das wiederum wäre nicht mit der Extension "kompatibel".

Warum aber die entsprechenden Template Variablen nicht verfügbar sind muss ich mir ansehen.

Aybee commented 5 years ago

muss ich mir ansehen

Die Variablen, z.B. $this->ytStrParams sind über das Template verfügbar, sie stehen aber nocht nicht im Template, so wie in meinem Beispielcode oben.

Mir ist gestern Nacht aber noch was besseres eingefallen, was auch das Problem mit dem Template lösen würde. Das DSGVO Feature für YouTube sollte einfach hier aus privacy entfernt werden und direkt in youtube-iframe integriert werden. Siehe wieder mal dlh_googlemaps - das Feature gehört einfach zu der Erweiterung und nicht ausgelagert nach privacy.

fritzmg commented 5 years ago

Die Variablen, z.B. $this->ytStrParams sind über das Template verfügbar, sie stehen aber nocht nicht im Template, so wie in meinem Beispielcode oben.

Ah ok - dann passt es ja. Du musst wie gesagt das Template selbst erzeugen - einen anderen Weg gibt es meines Erachtens nicht.

Mir ist gestern Nacht aber noch was besseres eingefallen, was auch das Problem mit dem Template lösen würde. Das DSGVO Feature für YouTube sollte einfach hier aus privacy entfernt werden und direkt in youtube-iframe integriert werden. Siehe wieder mal dlh_googlemaps - das Feature gehört einfach zu der Erweiterung und nicht ausgelagert nach privacy.

Mit dlh_googlemaps kannst du das nicht vergleichen. dlh_googlemaps ist eine eigenständige Extension, die keine bestehenden Inhaltselemente aus dem Core erweitert oder verändert. contao-privacy hingegen erweitert/verändert Dinge aus dem Core. Es macht keinen Sinn, das in die youtube-iframe Extension zu verpacken, da diese Extension eigentlich nur dafür sorgt, dass man YouTube Videos als iframe einbinden kann in Contao 3 - und zusätzlich in Contao 4 ein paar mehr Features mitbringt.

Aybee commented 5 years ago

Ja, ok, aber im Endeffekt geht es doch darum, dass man eine On-Board-Lösung findet ohne ein Template anzupassen.

Ich denke, dass jeder die youtube-iframe feature möchte und dann noch ein Overlay mit Hinweis, dass eine Verbindung zu YouTube aufgebaut wird, wenn man klickt, also das Iframe erst dann erstellt wird.

Jetzt muss ich youtube-iframe und privacy installieren und zusätzlich ein Template anpassen.

Wie sieht das in der nächsten LTS 4.9 im August 2020 aus? Da habe ich wahrscheinlich die Feature von youtube-iframe bereits on board? Und muss dann nur noch privacy installieren? Das wäre OK für mich, auch wenn ich es gerne jetzt schon so hätte. Muss ich halt 16 Monate angepasste Templates benutzen ;)

Evtl. werde ich dann im Core nochmal ein Ticket erstellen, ob es möglich wäre einen Overlay-Hint und das mit der Iframe-Erzeugung erst nach Klick mit in den Core zu nehmen. IMHO finde ich, dass dies einfach zusammen gehört, da ja im FE eine externe Ressource aufgerufen wird.

fritzmg commented 5 years ago

Evtl. werde ich dann im Core nochmal ein Ticket erstellen, ob es möglich wäre einen Overlay-Hint und das mit der Iframe-Erzeugung erst nach Klick mit in den Core zu nehmen.

Video Splash wird es voraussichtlich geben ;) https://github.com/contao/contao/pull/300