You are here

function widgets_form_alter in Widgets 6

Implementation of hook_form_alter().

File

./widgets.module, line 75
Implementaion of module hooks for Widgets module.

Code

function widgets_form_alter(&$form, $form_state, $form_id) {

  // Widgets node settings.
  if (preg_match('/_node_form$/', $form_id) && !$form['#programmed']) {

    // Check if widgets are enabled for this node type.
    if (variable_get("widgets_enabled_{$form['type']['#value']}", 0)) {
      module_load_include('inc', 'widgets');
      widgets_add_multiselect('edit-selected-widgets');

      // Alter node form.
      $form['widgets'] = array(
        '#type' => 'fieldset',
        '#title' => t('Widgets'),
        '#collapsible' => TRUE,
        '#collapsed' => FALSE,
      );

      // Get widgets and selected widgets.
      $options = widgets_get_widgets();
      $selected = widgets_get_selected($form['nid']['#value']);
      $form['widgets']['disable_widgets'] = array(
        '#type' => 'checkbox',
        '#title' => t('Disable widgets'),
        '#default_value' => $form['#node']->disable_widgets,
        '#description' => t('Check this option if you dont want any widgets to display on this page.'),
      );
      $form['widgets']['default_widgets'] = array(
        '#type' => 'checkbox',
        '#title' => t('Use default widgets'),
        '#default_value' => $form['#node']->default_widgets,
        '#description' => t('Check this option if you want to use the default widgets as defined for this node type.'),
      );
      $defaults = variable_get("widgets_default_{$form['type']['#value']}", array());
      if (empty($defaults)) {
        unset($form['widgets']['default_widgets']['#default_value']);
        $form['widgets']['default_widgets']['#disabled'] = TRUE;
        $form['widgets']['default_widgets']['#description'] = t('No default widgets have been defined for this node type.');
      }
      $form['widgets']['selected_widgets'] = array(
        '#type' => 'select',
        '#title' => t('Available widgets'),
        '#default_value' => $selected,
        '#options' => $options,
        '#description' => t('Select widgets for this node. Drag and drop selected widgets to set the display order.'),
        '#multiple' => TRUE,
        '#attributes' => array(
          'class' => 'multiselect-widget',
        ),
      );
    }
  }
}