Commit df3b3c46 authored by Karthik Kumar D K's avatar Karthik Kumar D K
Browse files

Issue #3022582 by heykarthikwithu: Link image to content/file

parent e7ec7e63
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ function imagefield_slideshow_theme() {
        'speed' => NULL,
        'timeout' => NULL,
        'pager' => NULL,
        'link_image_to' => NULL,
      ],
    ],
  ];
+28 −0
Original line number Diff line number Diff line
@@ -112,6 +112,7 @@ class ImagefieldSlideshowFieldFormatter extends ImageFormatterBase implements Co
      'imagefield_slideshow_transition_speed' => 100,
      'imagefield_slideshow_timeout' => 100,
      'imagefield_slideshow_pager' => TRUE,
      'imagefield_slideshow_link_image_to' => '',
    ] + parent::defaultSettings();
  }

@@ -217,6 +218,13 @@ class ImagefieldSlideshowFieldFormatter extends ImageFormatterBase implements Co
      '#default_value' => $this->getSetting('imagefield_slideshow_pager'),
      '#description' => $this->t('This will show the Pager on slideshow.'),
    ];
    $link_image_to = ['' => 'Nothing', 'content' => 'Content', 'file' => 'File'];
    $element['imagefield_slideshow_link_image_to'] = [
      '#type' => 'select',
      '#title' => t("Link image to"),
      '#options' => $link_image_to,
      '#default_value' => $this->getSetting('imagefield_slideshow_link_image_to'),
    ];
    return $element;
  }

@@ -281,6 +289,13 @@ class ImagefieldSlideshowFieldFormatter extends ImageFormatterBase implements Co
      ]);
    }

    $link_image_to = $this->getSetting('imagefield_slideshow_link_image_to');
    if ($link_image_to) {
      $summary[] .= $this->t("Link Image to: @link_image_to", [
        "@link_image_to" => $link_image_to,
      ]);
    }

    return $summary;
  }

@@ -338,6 +353,18 @@ class ImagefieldSlideshowFieldFormatter extends ImageFormatterBase implements Co
      $prev_next = FALSE;
    }

    $imagefield_slideshow_link_image_to = $this->getSetting('imagefield_slideshow_link_image_to');
    $link_image_to = [];
    $link_image_to['type'] = $imagefield_slideshow_link_image_to;
    if ($imagefield_slideshow_link_image_to == 'content') {
      $link_image_to['type'] = 'content';
      $content_url = '/node/' . $file['nid'][0]['value'];
      $link_image_to['path'] = \Drupal::service('path_alias.manager')->getAliasByPath($content_url);
    }
    else if ($imagefield_slideshow_link_image_to == '') {
      $link_image_to = FALSE;
    }

    $elements[] = [
      '#theme' => 'imagefield_slideshow',
      '#url' => $image_uri_values,
@@ -347,6 +374,7 @@ class ImagefieldSlideshowFieldFormatter extends ImageFormatterBase implements Co
      '#speed' => $this->getSetting('imagefield_slideshow_transition_speed'),
      '#timeout' => $this->getSetting('imagefield_slideshow_timeout'),
      '#pager' => $this->getSetting('imagefield_slideshow_pager'),
      '#link_image_to' => $link_image_to,
    ];

    // Attach the image field slide show library.
+10 −1
Original line number Diff line number Diff line
@@ -28,7 +28,16 @@
            <div class="cycle-pager"></div>
        {% endif %}
        {% for key,value in url %}
            {% if link_image_to %}
                {% if link_image_to.type == 'content' %}
                    <img title="{{ value.title }}" alt="{{ value.alt }}" src="{{ value.uri }}" onclick="window.open('{{ link_image_to.path }}', '_self')" />
                {% endif %}
                {% if link_image_to.type == 'file' %}
                    <img title="{{ value.title }}" alt="{{ value.alt }}" src="{{ value.uri }}" onclick="window.open('{{ value.uri }}', '_self')" />
                {% endif %}
            {% else %}
                <img title="{{ value.title }}" alt="{{ value.alt }}" src="{{ value.uri }}" />
            {% endif %}
        {% endfor %}
    </div>
    {% if prev_next %}