You are here

function fivestar_field_widget_form in Fivestar 7.2

Implements hook_field_widget_form().

File

includes/fivestar.field.inc, line 300
Provides CCK integration for fivestar module.

Code

function fivestar_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
  $element['#tree'] = TRUE;
  $i18n = function_exists('i18n_field_translate_property');
  if ($instance['widget']['type'] == 'fivestar_select' || $instance['widget']['type'] == 'stars' && isset($form['#title']) && $form['#title'] == 'Default value') {
    $options = array(
      0 => t('No stars'),
    );
    if (empty($instance['settings']['stars'])) {
      $instance['settings']['stars'] = 5;
    }
    for ($i = 1; $i <= $instance['settings']['stars']; $i++) {
      $percentage = ceil($i * 100 / $instance['settings']['stars']);
      $options[$percentage] = format_plural($i, '1 star', '@count stars');
    }
    $element['rating'] = array(
      '#type' => 'select',
      '#title' => check_plain(isset($instance['label']) ? $i18n ? i18n_field_translate_property($instance, 'label') : t($instance['label']) : FALSE),
      '#options' => $options,
      '#default_value' => isset($items[$delta]['rating']) ? $items[$delta]['rating'] : NULL,
      '#description' => check_plain(isset($instance['description']) ? $i18n ? i18n_field_translate_property($instance, 'description') : t($instance['description']) : FALSE),
      '#required' => isset($instance['required']) ? $instance['required'] : FALSE,
    );
  }
  elseif ($instance['widget']['type'] == 'stars') {
    $widgets = module_invoke_all('fivestar_widgets');
    $active = isset($instance['widget']['settings']['widget']['fivestar_widget']) ? $instance['widget']['settings']['widget']['fivestar_widget'] : 'default';
    $widget = array(
      'name' => isset($widgets[$active]) ? strtolower($widgets[$active]) : 'default',
      'css' => $active,
    );
    $values = array(
      'user' => 0,
      'average' => 0,
      'count' => 0,
    );
    $settings = array(
      'stars' => $instance['settings']['stars'],
      'allow_clear' => !empty($instance['settings']['allow_clear']) ? $instance['settings']['allow_clear'] : FALSE,
      'allow_revote' => !empty($instance['settings']['allow_revote']) ? $instance['settings']['allow_revote'] : FALSE,
      'allow_ownvote' => !empty($instance['settings']['allow_ownvote']) ? $instance['settings']['allow_ownvote'] : FALSE,
      'style' => 'user',
      'text' => 'none',
      'widget' => $widget,
    );
    $element['rating'] = array(
      '#type' => 'fivestar',
      '#title' => check_plain(isset($instance['label']) ? $i18n ? i18n_field_translate_property($instance, 'label') : t($instance['label']) : FALSE),
      '#stars' => isset($instance['settings']['stars']) ? $instance['settings']['stars'] : 5,
      '#allow_clear' => isset($instance['settings']['allow_clear']) ? $instance['settings']['allow_clear'] : FALSE,
      '#allow_revote' => isset($instance['settings']['allow_revote']) ? $instance['settings']['allow_revote'] : FALSE,
      '#allow_ownvote' => isset($instance['settings']['allow_ownvote']) ? $instance['settings']['allow_ownvote'] : FALSE,
      '#default_value' => isset($items[$delta]['rating']) ? $items[$delta]['rating'] : (isset($instance['default_value'][$delta]['rating']) ? $instance['default_value'][$delta]['rating'] : 0),
      '#widget' => $widget,
      '#settings' => $settings,
      '#values' => $values,
      '#description' => check_plain(isset($instance['description']) ? $i18n ? i18n_field_translate_property($instance, 'description') : t($instance['description']) : FALSE),
      '#required' => isset($instance['required']) ? $instance['required'] : FALSE,
    );
  }
  return array(
    $element,
  );
}