You are here

function link_iframe_formatter_field_formatter_view in Link iframe formatter 7

Implements hook_field_formatter_view().

File

./link_iframe_formatter.module, line 196
Defines a formatter that renders a link like an iframe

Code

function link_iframe_formatter_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $elements = array();
  if ($display['type'] == 'link_iframe_formatter_iframe') {
    foreach ($items as $delta => $item) {
      $url = $item['url'];
      if (link_iframe_formatter_check_blacklist($url)) {

        // if it's in blacklist, show link only.
        $elements[$delta] = array(
          '#markup' => theme('link_iframe_formatter_blacklist_notice', array(
            'element' => $item,
          )),
        );
      }
      else {

        //not in blacklist, show url in iframe
        $link_options = $item;
        $settings = $display['settings'];
        unset($link_options['title']);
        unset($link_options['url']);

        // TODO: if some settings are not set, do set them.
        $iframe_element = array(
          '#type' => 'html_tag',
          '#tag' => 'iframe',
          '#attributes' => array(
            'name' => check_plain($item['title']),
            'src' => url($item['url'], $link_options),
            'height' => $settings['height'],
            'width' => $settings['width'],
            'style' => $settings['style'],
            'id' => drupal_html_id('link-iframe-' . $instance['bundle'] . '-' . $instance['field_name'] . '-' . $delta),
            'class' => drupal_html_class($settings['class']),
          ),
          '#value' => '',
        );

        // add original link if set to On.
        if ($settings['original']) {
          $elements[$delta] = array(
            'original' => array(
              '#markup' => theme('link_iframe_formatter_original', array(
                'element' => $item,
              )),
            ),
            'iframe' => $iframe_element,
          );
        }
        else {
          $elements[$delta] = $iframe_element;
        }
      }
    }
  }
  return $elements;
}