Commit 6657a92f authored by neffets's avatar neffets
Browse files

Issue #3253300: Allow full screen not working

parent c4dce228
Loading
Loading
Loading
Loading
+20 −12
Original line number Diff line number Diff line
@@ -43,13 +43,14 @@ class IframeDefaultFormatter extends FormatterBase {
   */
  public function viewElements(FieldItemListInterface $items, $langcode) {
    $elements = [];
    $field_settings = $this->getFieldSettings();
    // settings from type
    $settings = $this->getSettings();
    $entity = $items->getEntity();
    // field_settings on concrete field
    $field_settings = $this->getFieldSettings();
    #\iframe_debug(3, __METHOD__, $settings);
    \iframe_debug(3, __METHOD__, $field_settings);
    \iframe_debug(3, __METHOD__, $settings);
    \iframe_debug(3, __METHOD__, $entity);
    // \iframe_debug(3, __METHOD__, $items->getValue());
    \iframe_debug(3, __METHOD__, $items->getValue());
    $allow_attributes = [ 'url', 'width', 'height', 'title' ];
    foreach ($items as $delta => $item) {
      if (empty($item->url)) {
        continue;
@@ -57,6 +58,12 @@ class IframeDefaultFormatter extends FormatterBase {
      if (!isset($item->title)) {
        $item->title = '';
      }
      foreach($field_settings as $field_key => $field_val) {
        if (in_array($field_key, $allow_attributes)) {
          continue;
        }
        $item->{$field_key} = $field_val;
      }
      $elements[$delta] = self::iframeIframe($item->title, $item->url, $item);
      // Tokens can be dynamic, so its not cacheable.
      if (isset($settings['tokensupport']) && $settings['tokensupport']) {
@@ -123,18 +130,19 @@ class IframeDefaultFormatter extends FormatterBase {
    }

    // Policy attribute.
    if (!empty($item->allowfullscreen) && $item->allowfullscreen) {
      $allow[] = 'fullscreen';
    }
    $allow[] = 'accelerometer';
    $allow[] = 'autoplay';
    $allow[] = 'camera';
    $allow[] = 'microphone';
    $allow[] = 'payment';
    $allow[] = 'accelerometer';
    $allow[] = 'geolocation';
    $allow[] = 'encrypted-media';
    $allow[] = 'geolocation';
    $allow[] = 'gyroscope';
    $allow[] = 'microphone';
    $allow[] = 'payment';
    $allow[] = 'picture-in-picture';
    $options['allow'] = implode(';', $allow);
    if (!empty($item->allowfullscreen) && $item->allowfullscreen) {
      $options['allowfullscreen'] = 'allowfullscreen';
    }

    if (\Drupal::moduleHandler()->moduleExists('token')) {
      // Token Support for field "url" and "title".
+11 −0
Original line number Diff line number Diff line
@@ -21,11 +21,22 @@ class IframeOnlyFormatter extends IframeDefaultFormatter {
   */
  public function viewElements(FieldItemListInterface $items, $langcode) {
    $elements = [];
    // settings from type
    $settings = $this->getSettings();
    // field_settings on concrete field
    $field_settings = $this->getFieldSettings();

    $allow_attributes = [ 'url', 'width', 'height', 'title' ];
    foreach ($items as $delta => $item) {
      if (empty($item->url)) {
        continue;
      }
      foreach($field_settings as $field_key => $field_val) {
        if (in_array($field_key, $allow_attributes)) {
          continue;
        }
        $item->{$field_key} = $field_val;
      }
      if (!(property_exists($item, 'title') && $item->title !== null)) {
        $item->title = '';
      }