You are here

widgets.module in Widgets 6

Same filename and directory in other branches
  1. 7 widgets.module

Implementaion of module hooks for Widgets module.

File

widgets.module
View source
<?php

/**
 * @file
 * Implementaion of module hooks for Widgets module.
 */

/**
 * Implementation of hook_menu().
 */
function widgets_menu() {
  $items = array();
  $items['admin/settings/widgets'] = array(
    'title' => t('Widgets'),
    'description' => t('Settings for Widgets module.'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'widgets_settings',
    ),
    'access arguments' => array(
      'administer site configuration',
    ),
    'file' => 'widgets.admin.inc',
    'file path' => drupal_get_path('module', 'widgets'),
  );
  return $items;
}

/**
 * Implementation of hook_form_FORM_ID_alter().
 */
function widgets_form_node_type_form_alter(&$form, $form_state) {

  // Get type name.
  $type_name = $form['#node_type']->type;
  $type_id = str_replace('_', '-', $type_name);

  // Get enabled "widget types".
  $enabled_types = variable_get('widgets_types', array());

  // Only add Widgets settings to node types not marked as "widget types".
  if (!$enabled_types[$type_name]) {
    module_load_include('inc', 'widgets');
    widgets_add_multiselect('edit-widgets-default');

    // Get widgets.
    $options = widgets_get_widgets();
    $form['widgets'] = array(
      '#type' => 'fieldset',
      '#title' => t('Widgets'),
      '#collapsible' => TRUE,
      '#collapsed' => FALSE,
    );
    $form['widgets']['widgets_enabled'] = array(
      '#type' => 'checkbox',
      '#title' => t('Enable widgets'),
      '#default_value' => variable_get("widgets_enabled_{$type_name}", 0),
    );
    $form['widgets']['widgets_default'] = array(
      '#type' => 'select',
      '#title' => t('Default widgets'),
      '#default_value' => variable_get("widgets_default_{$type_name}", array()),
      '#options' => $options,
      '#description' => t('Select widgets that should be selected per default for this node type. Drag and drop selected widgets to set the display order.'),
      '#multiple' => TRUE,
      '#attributes' => array(
        'class' => 'multiselect-widget',
      ),
    );
  }
}

/**
 * Implementation of hook_form_alter().
 */
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',
        ),
      );
    }
  }
}

/**
 * Implementation of hook_nodeapi().
 */
function widgets_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {

  // Check if widgets are enabled for node type.
  if (!variable_get("widgets_enabled_{$node->type}", 0)) {
    return;
  }

  // Insert/update.
  switch ($op) {
    case 'insert':
    case 'update':
      module_load_include('inc', 'widgets');
      widgets_write_record($node);
      break;
    case 'load':
      $data = db_fetch_object(db_query('SELECT * FROM {widgets_status} WHERE nid = %d', $node->nid));
      $node->disable_widgets = $data->disabled;
      $node->default_widgets = $data->use_default;
      break;
  }
}

/**
 * Implementation of hook_block().
 */
function widgets_block($op = 'list', $delta = 0, $edit = array()) {
  module_load_include('inc', 'widgets', 'widgets.block');
  $function = "widgets_block_{$op}";
  if (function_exists($function)) {
    return $function($delta, $edit);
  }
  else {
    return widgets_block_view($delta, $edit);
  }
}

Functions

Namesort descending Description
widgets_block Implementation of hook_block().
widgets_form_alter Implementation of hook_form_alter().
widgets_form_node_type_form_alter Implementation of hook_form_FORM_ID_alter().
widgets_menu Implementation of hook_menu().
widgets_nodeapi Implementation of hook_nodeapi().