You are here

emwave.theme.inc in Embedded Media Field 6.3

Same filename and directory in other branches
  1. 6 contrib/emwave/emwave.theme.inc
  2. 6.2 contrib/emwave/emwave.theme.inc

File

contrib/emwave/emwave.theme.inc
View source
<?php

function theme_emwave_wave($field, $item, $formatter, $node, $code, $width, $height, $bg_color, $color, $font, $font_size, $title = '', $link = NULL) {
  $url = module_invoke('emfield', 'include_invoke', 'emwave', $item['provider'], 'wave_url', $code, $width, $height, $formatter, $field, $item, $node);
  $attributes = array();
  if ($width) {
    $attributes['width'] = $width;
  }
  if ($height) {
    $attributes['height'] = $height;
  }
  if (!$width || !$height) {

    // Find out the size of the actual image file, and scale accordingly
    if ($item['data']['width'] && $item['data']['height']) {

      // The waves's width & height are known
      $scale_width = $item['data']['width'] / ($width ? $width : 1);
      $scale_height = $item['data']['height'] / ($height ? $height : 1);
      if ($scale_width > $scale_height) {
        $attributes['width'] = $width;
      }
      else {
        $attributes['height'] = $height;
      }
    }
    else {

      // We don't know the size of the image, so just make it fill the space available.
      // It will probably be stretched in one direction, making it look odd.
      $attributes['width'] = $width ? $width : NULL;
      $attributes['height'] = $height ? $height : NULL;
    }
  }

  // Setup an array of JavaScript settings.
  $js_settings = array(
    'wave_id' => $code,
    'bg_color' => $bg_color,
    'color' => $color,
    'font' => $font,
    'font_size' => $font_size . 'px',
  );
  static $added = FALSE;
  static $i = 0;
  if ($i >= 1) {
    $i++;
  }
  if ($added == FALSE) {
    drupal_set_html_head('    <script src="http://wave-api.appspot.com/public/embed.js" type="text/javascript"></script>');
    $added = TRUE;
    $i++;
  }

  // Add the JavaScript settings.
  drupal_add_js(array(
    'emwave-' . $code => $js_settings,
  ), "setting");
  $output .= <<<EOD
    <script type="text/javascript">
      Drupal.behaviors.emWave{<span class="php-variable">$i</span>} = function (context) {
        var wavePanel{<span class="php-variable">$i</span>} = new WavePanel('http://wave.google.com/a/wavesandbox.com/');
        wavePanel{<span class="php-variable">$i</span>}.loadWave('wavesandbox.com!w+{<span class="php-variable">$code</span>}');
        wavePanel{<span class="php-variable">$i</span>}.setUIConfig('{<span class="php-variable">$bg_color</span>}','{<span class="php-variable">$color</span>}','{<span class="php-variable">$font</span>}','{<span class="php-variable">$font_size</span>}');
        wavePanel{<span class="php-variable">$i</span>}.init(document.getElementById('waveframe{<span class="php-variable">$i</span>}'));
      }
    </script>
EOD;
  $output .= "\n" . '<div id="waveframe' . $i . '" style="width:';
  $output .= $attributes['width'] . 'px; height:' . $attributes['height'] . 'px;" ></div>';

  // Apparently this stuff is not implemented yet.

  //$output .= "\n" . '  <div id="add-reply-' . $i . '">';

  //$output .= "\n" . '    <button type="button" name="add-reply-';

  //$output .= $i . '" value="' . t('Reply to this wave') . '" onclick="wavePanel' . $i . '.addReply()" >';

  //$output .= 'Add Reply</button></div>';

  //$output .= "\n" . '  <div id="add-participant-' . $i . '">';

  //$output .= "\n" . '    <button type="button" name="add-participant-';

  //$output .= $i . '" value="' . t('Join this wave') . '" onclick="wavePanel' . $i . '.addParticipant()" >';

  //$output .= 'Add Participant</button></div>';

  // If being output as a link, theme a link version.
  if ($link) {
    $output = l($output, $link, array(
      'html' => true,
    ));
  }
  return $output;
}
function theme_emwave_wave_full($field, $item, $formatter, $node) {
  if ($item['value'] && $item['provider']) {
    $code = $item['value'];
    $width = $field['widget']['full_width'];
    $height = $field['widget']['full_height'];
    $bg_color = $field['widget']['bg_color'];
    $color = $field['widget']['color'];
    $font = $field['widget']['font'];
    $font_size = $field['widget']['font_size'];
    $link = $field['widget']['full_link'];
    if ($link == emwave_LINK_CONTENT) {
      $link = 'node/' . $node->nid;
    }
    else {
      if ($link == emwave_LINK_PROVIDER) {
        $link = module_invoke('emfield', 'include_invoke', 'emwave', $item['provider'], 'embedded_link', $code, $item['data']);
      }
      else {
        $link = NULL;
      }
    }
    $title = module_invoke('emfield', 'include_invoke', 'emwave', $item['provider'], 'wave_title', $code, $item['data']);
    $output = theme('emwave_wave', $field, $item, $formatter, $node, $code, $width, $height, $bg_color, $color, $font, $font_size, $title, $link);
  }
  return $output;
}
function theme_emwave_default($field, $item, $formatter, $node) {
  return theme('emwave_wave_full', $field, $item, $formatter, $node);
}
function theme_emwave_wave_preview($field, $item, $formatter, $node) {
  if ($item['value'] && $item['provider']) {
    $code = $item['value'];
    $width = $field['widget']['preview_width'];
    $height = $field['widget']['preview_height'];
    $bg_color = $field['widget']['bg_color'];
    $color = $field['widget']['color'];
    $font = $field['widget']['font'];
    $font_size = $field['widget']['font_size'];
    $link = $field['widget']['preview_link'];
    if ($link == emwave_LINK_CONTENT) {
      $link = 'node/' . $node->nid;
    }
    else {
      if ($link == emwave_LINK_PROVIDER) {
        $link = module_invoke('emfield', 'include_invoke', 'emwave', $item['provider'], 'embedded_link', $code, $item['data']);
      }
      else {
        $link = NULL;
      }
    }
    $title = module_invoke('emfield', 'include_invoke', 'emwave', $item['provider'], 'wave_title', $code, $item['data']);
    $output = theme('emwave_wave', $field, $item, $formatter, $node, $code, $width, $height, $bg_color, $color, $font, $font_size, $title, $link);
  }
  return $output;
}
function theme_emwave_formatter_wave_embed($element) {
  $field = content_fields($element['#field_name'], $element['#type_name']);
  return module_invoke('emwave', 'field_formatter', $field, $element['#item'], $element['#formatter'], $element['#node']);
}
function theme_emwave_formatter_default($element) {
  $field = content_fields($element['#field_name'], $element['#type_name']);
  return module_invoke('emwave', 'field_formatter', $field, $element['#item'], $element['#formatter'], $element['#node']);
}
function theme_emwave_formatter_wave_full($element) {
  $field = content_fields($element['#field_name'], $element['#type_name']);
  return module_invoke('emwave', 'field_formatter', $field, $element['#item'], $element['#formatter'], $element['#node']);
}
function theme_emwave_formatter_wave_preview($element) {
  $field = content_fields($element['#field_name'], $element['#type_name']);
  return module_invoke('emwave', 'field_formatter', $field, $element['#item'], $element['#formatter'], $element['#node']);
}
function theme_emwave_wave_embed($field, $item, $formatter, $node) {
  if ($item['value'] && $item['provider']) {
    $output = drupal_get_form('emwave_embed_form', $field, $item, $formatter, $node);
  }
  return $output;
}