You are here

cumulus.module in Cumulus 6.2

Same filename and directory in other branches
  1. 5 cumulus.module
  2. 6 cumulus.module
  3. 7 cumulus.module

The brain of Cumulus.

Provides a Flash-based 3D tag cloud. Based on WP-Cumulus for WordPress, by Roy Tanck.

File

cumulus.module
View source
<?php

/**
 * @file
 * The brain of Cumulus.
 *
 * Provides a Flash-based 3D tag cloud.
 * Based on WP-Cumulus for WordPress, by Roy Tanck.
 */

/**
 * Implementation of hook_enable().
 */
function cumulus_enable() {
  drupal_set_message(t('Cumulus has now been enabled. You need to !add a view with cumulus selected as output style to display the cloud. Or !activate the example view for a taxonomy cumulus block.', array(
    '!add' => l(t('add'), 'admin/build/views/add'),
    '!activate' => l(t('activate'), 'admin/build/views'),
  )));
  if (!module_exists('views_ui')) {
    drupal_set_message('If you need to activate the cumulus views make sure views UI is active as well.');
  }
}

/**
 * Implementation of hook_views_api().
 * Notifies the Views module that we're compatible with a particular API revision.
 */
function cumulus_views_api() {
  return array(
    'api' => 2,
    'path' => drupal_get_path('module', 'cumulus') . '/includes/views',
  );
}

/**
 * Template function for cumulus style plugin.
 *
 * @param array $vars
 *  Array of template variables.
 */
function template_preprocess_views_view_cumulus(&$vars) {
  dpm($vars['view']->style_plugin->rendered_fields);
}

/**
 * Implementation of hook_help().
 */
function cumulus_help($path, $arg) {
  switch ($path) {
    case 'admin/help#cumulus':
      $output = '<p>' . t('Cumulus allows you to display strings like taxonomy\'s terms using a Flash movie that rotates them in 3D. This way, you can set it up like a 3D tag cloud. It works just like a regular tag cloud, but is more visually exciting!') . '</p>';
      return $output;
  }
}
function cumulus_views_options() {
  $options = array();
  $options['title_field'] = array(
    'default' => '',
  );
  $options['link_field'] = array(
    'default' => '',
  );
  $options['use_field_as_weight']['weight_text'] = array(
    'default' => 0,
  );
  $options['use_field_as_weight']['weight_field'] = array(
    'default' => '',
  );
  $options['size_interval'] = array(
    'default' => 6,
  );
  $options['flash_width'] = array(
    'default' => 200,
  );
  $options['flash_height'] = array(
    'default' => 150,
  );
  $options['flash_background'] = array(
    'default' => 'ffffff',
  );
  $options['flash_transparency'] = array(
    'default' => 'false',
  );
  $options['flash_color'] = array(
    'default' => 'ff0000',
  );
  $options['flash_color2'] = array(
    'default' => '000000',
  );
  $options['flash_hicolor'] = array(
    'default' => '666666',
  );
  $options['flash_speed'] = array(
    'default' => 100,
  );
  $options['flash_distribute'] = array(
    'default' => 'true',
  );
  $options['flash_font_size'] = array(
    'default' => 10,
  );
  $options['flash_font_size_interval'] = array(
    'default' => 2,
  );
  return $options;
}
function cumulus_views_options_form(&$form, &$form_state, $view) {
  if ($view->definition['type'] === 'normal') {
    $fields = $view->view->display_handler
      ->get_handlers('field');
    if (count($fields)) {
      $options = array(
        '' => t('<None>'),
      );
      foreach ($fields as $field => $handler) {
        if ($label = $handler
          ->label()) {
          $options[$field] = $label;
        }
        else {
          $options[$field] = $handler
            ->ui_name();
        }
      }
      $form['title_field'] = array(
        '#type' => 'select',
        '#title' => t('Title field'),
        '#options' => $options,
        '#default_value' => $view->options['title_field'],
        '#description' => t('Select the field that should be used as the items title in the cloud.'),
      );
      $form['link_field'] = array(
        '#type' => 'select',
        '#title' => t('Link field'),
        '#options' => $options,
        '#default_value' => $view->options['link_field'],
        '#description' => t('Select the field that should be used as the items link in the cloud.'),
      );
      $form['use_field_as_weight']['#tree'] = TRUE;
      $form['use_field_as_weight']['weight_text'] = array(
        '#type' => 'checkbox',
        '#title' => t('Use a field as source for weight calculation'),
        '#description' => t('If checked, you can select a field that is use as source for weight calculation instead of using the sort order.'),
        '#default_value' => $view->options['use_field_as_weight']['weight_text'],
      );
      $form['use_field_as_weight']['weight_field'] = array(
        '#type' => 'select',
        '#title' => t('Weight field'),
        '#options' => $options,
        '#default_value' => $view->options['use_field_as_weight']['weight_field'],
        '#description' => t('Select the field that should be used for weight calculation.'),
        '#process' => array(
          'views_process_dependency',
        ),
        '#dependency' => array(
          'edit-style-options-use-field-as-weight-weight-text' => array(
            1,
          ),
        ),
      );
    }
    else {
      drupal_set_message(t('You need to define at least two fields to set up a cumulus cloud view. 1. Name of the link. 2. URL for the link. And 3. Optional weight.', 'error'));
    }
  }
  $form['size_interval'] = array(
    '#type' => 'textfield',
    '#title' => t('Item size interval'),
    '#default_value' => $view->options['size_interval'],
    '#maxlength' => 2,
    '#description' => t('The number of item sizes you want to use.'),
  );
  $form['flash_transparency'] = array(
    '#type' => 'select',
    '#title' => t('Background transparency'),
    '#default_value' => $view->options['flash_transparency'],
    '#options' => array(
      'false' => t('no'),
      'true' => t('yes'),
    ),
    '#description' => t('Enabling background transparency might cause issues with some (mostly older) browsers.<br />Under Linux, transparency doesn\'t work at all due to a known limitation in the current Flash player.'),
  );
  $form['flash_width'] = array(
    '#type' => 'textfield',
    '#title' => t('Width of cumulus'),
    '#default_value' => $view->options['flash_width'],
    '#maxlength' => 3,
    '#description' => t('The width of the cumulus in pixels.'),
  );
  $form['flash_height'] = array(
    '#type' => 'textfield',
    '#title' => t('Height of cumulus'),
    '#default_value' => $view->options['flash_height'],
    '#maxlength' => 3,
    '#description' => t('The height of the cumulus in pixels.'),
  );
  $form['flash_background'] = array(
    '#type' => 'textfield',
    '#title' => t('Background color of cumulus'),
    '#default_value' => $view->options['flash_background'],
    '#maxlength' => 6,
    '#description' => t('The hex color value for the background of the cumulus. E.g. ffffff. If "Background transparency" is enabled, this option will have no effect.'),
  );
  $form['flash_color'] = array(
    '#type' => 'textfield',
    '#title' => t('Font color of cumulus'),
    '#default_value' => $view->options['flash_color'],
    '#maxlength' => 6,
    '#description' => t('The hex color value you would like to use for the items. E.g. 000000.'),
  );
  $form['flash_color2'] = array(
    '#type' => 'textfield',
    '#title' => t('Second font color of cumulus'),
    '#default_value' => $view->options['flash_color2'],
    '#maxlength' => 6,
    '#description' => t('Second item color. If supplied, items will get a color from a gradient between both colors based on their sorting.'),
  );
  $form['flash_hicolor'] = array(
    '#type' => 'textfield',
    '#title' => t('Highlight color of cumulus'),
    '#default_value' => $view->options['flash_hicolor'],
    '#maxlength' => 6,
    '#description' => t('The hex color value you would like to use for the item mouseover/hover color'),
  );
  $form['flash_speed'] = array(
    '#type' => 'textfield',
    '#title' => t('Rotation speed'),
    '#default_value' => $view->options['flash_speed'],
    '#maxlength' => 3,
    '#description' => t('Set the speed of the cumulus. Options between 25 and 500 work best.'),
  );
  $form['flash_distribute'] = array(
    '#type' => 'select',
    '#title' => t('Distribute items evenly on cumulus'),
    '#default_value' => $view->options['flash_distribute'],
    '#options' => array(
      'false' => t('no'),
      'true' => t('yes'),
    ),
    '#description' => t('When enabled, the movie will attempt to distribute the items evenly over the surface of the cumulus.'),
  );
  $form['flash_font_size'] = array(
    '#type' => 'textfield',
    '#title' => t('Font size'),
    '#default_value' => $view->options['flash_font_size'],
    '#maxlength' => 2,
    '#description' => t('Set the font size of the tag with the lowest item-size in pixels (level 1).'),
  );
  $form['flash_font_size_interval'] = array(
    '#type' => 'textfield',
    '#title' => t('Font size interval'),
    '#default_value' => $view->options['flash_font_size_interval'],
    '#maxlength' => 1,
    '#description' => t('Set the font size interval used for the different item-sizes (level 2 and higher).'),
  );
}

Functions

Namesort descending Description
cumulus_enable Implementation of hook_enable().
cumulus_help Implementation of hook_help().
cumulus_views_api Implementation of hook_views_api(). Notifies the Views module that we're compatible with a particular API revision.
cumulus_views_options
cumulus_views_options_form
template_preprocess_views_view_cumulus Template function for cumulus style plugin.