You are here

function library_admin_settings in Library 7

Same name and namespace in other branches
  1. 5.2 library.admin.inc \library_admin_settings()
  2. 6.2 library.admin.inc \library_admin_settings()
  3. 6 library.admin.inc \library_admin_settings()

Menu callback: Edit Library Settings.

1 string reference to 'library_admin_settings'
library_menu in ./library.module
Implements hook_menu().

File

./library.admin.inc, line 11
Administrative settings for the library module

Code

function library_admin_settings() {
  $form = array();
  $form['library_item_barcodes'] = array(
    '#type' => 'checkbox',
    '#title' => t('Use Barcodes/Unique Identifiers for Library Items'),
    '#default_value' => variable_get('library_item_barcodes', 0),
    '#return_value' => 1,
    '#description' => t('This is recommended if you have multiple copies of an item. However, you must have unique identifiers for every instance.  If you have multiple copies but do not use barcodes, library management will be against whether any copy is available and will not track any specific copy.'),
  );
  $form['library_disable_patron_autocomplete'] = array(
    '#type' => 'checkbox',
    '#title' => t('Disable Patron Autocomplete on Transactions'),
    '#default_value' => variable_get('library_disable_patron_autocomplete', 0),
    '#return_value' => 1,
    '#description' => t('This allows patron for a transaction to be selected without autocompletion. Will only work with Drupal username, so make sure the username is the barcode if using a barcode scanner.'),
  );
  $form['library_status_display'] = array(
    '#type' => 'checkbox',
    '#title' => t('Library Status'),
    '#default_value' => variable_get('library_status_display', 0),
    '#return_value' => 1,
    '#description' => t('To display library status on individual library nodes, check this box.'),
  );
  $form['library_action_display'] = array(
    '#type' => 'fieldset',
    '#title' => t('Action Links to Display'),
    '#description' => t("Select which actions can be taken given a library item's status. If no actions are selected for a given status, no action links will be displayed on items with that status."),
  );
  $when_available = array();
  $when_unavailable = array();
  $when_reference = array();
  foreach (library_actions() as $aid => $action) {
    switch ($action['status_change']) {
      case LIBRARY_ACTION_NO_CHANGE:
        $when_available[$aid] = $action['name'];
        $when_unavailable[$aid] = $action['name'];
        $when_reference[$aid] = $action['name'];
        break;
      case LIBRARY_ACTION_TYPE_UNAVAILABLE:
        $when_available[$aid] = $action['name'];
        break;
      case LIBRARY_ACTION_TYPE_AVAILABLE:
        $when_unavailable[$aid] = $action['name'];
        break;
    }
  }
  $form['library_action_display']['library_links_display_available'] = array(
    '#type' => 'checkboxes',
    '#title' => t('On Available Items'),
    '#default_value' => variable_get('library_links_display_available', array()),
    '#options' => $when_available,
  );
  $form['library_action_display']['library_links_display_unavailable'] = array(
    '#type' => 'checkboxes',
    '#title' => t('On Unavailable Items'),
    '#default_value' => variable_get('library_links_display_unavailable', array()),
    '#options' => $when_unavailable,
  );
  $form['library_action_display']['library_links_display_reference'] = array(
    '#type' => 'checkboxes',
    '#title' => t('On Reference Only Items'),
    '#default_value' => variable_get('library_links_display_reference', array()),
    '#options' => $when_reference,
  );
  $form['library_item_list_display'] = array(
    '#type' => 'fieldset',
    '#title' => t('Library Default List Display'),
    '#description' => t('The columns chosen below will be added to the node fields that you have selected to display. Note: consider using a custom view from the views module for this instead.'),
  );
  $form['library_item_list_display']['library_quantity_display'] = array(
    '#type' => 'checkbox',
    '#title' => t('Quantity'),
    '#default_value' => variable_get('library_quantity_display', 0),
  );
  $form['library_item_list_display']['library_list_status_display'] = array(
    '#type' => 'checkbox',
    '#title' => t('Status'),
    '#default_value' => variable_get('library_list_status_display', 0),
  );
  if (module_exists('taxonomy')) {
    $vocabularies = array();
    $vocabs = taxonomy_get_vocabularies();
    if ($vocabs) {
      foreach ($vocabs as $vid => $vocab) {
        $vocabularies[$vid] = $vocab->name;
      }
      $form['library_item_list_display']['library_taxonomy_display'] = array(
        '#type' => 'checkboxes',
        '#title' => t('Display Associated Taxonomy Terms in Library View'),
        '#default_value' => variable_get('library_taxonomy_display', array()),
        '#options' => $vocabularies,
        '#description' => t('Select the vocabularies from which you would like to display taxonomy terms. If no vocabularies are selected, terms will not be displayed.'),
      );
    }
  }
  $form['library_text_display'] = array(
    '#type' => 'fieldset',
    '#title' => t('Library Text'),
    '#description' => t('Customize the text display.'),
  );
  $form['library_text_display']['library_available_text'] = array(
    '#type' => 'textfield',
    '#title' => t('Available Status Text'),
    '#default_value' => variable_get('library_available_text', 'AVAILABLE'),
    '#size' => 20,
    '#maxlength' => 20,
    '#description' => t("Examples: in, checked in"),
  );
  $form['library_text_display']['library_unavailable_noduedates_text'] = array(
    '#type' => 'textfield',
    '#title' => t('Unavailable Status Text (Without Due Dates)'),
    '#default_value' => variable_get('library_unavailable_noduedates_text', 'UNAVAILABLE'),
    '#size' => 20,
    '#maxlength' => 20,
    '#description' => t("Examples: out, checked out"),
  );
  $form['library_text_display']['library_reference_only_text'] = array(
    '#type' => 'textfield',
    '#title' => t('Reference Only Status Text'),
    '#default_value' => variable_get('library_reference_only_text', 'REFERENCE ONLY'),
    '#size' => 20,
    '#maxlength' => 20,
  );
  if (module_exists('profile')) {
    $form['library_profile'] = array(
      '#type' => 'fieldset',
      '#title' => t('Core Profile Fields'),
      // @ignore rule:sniffer_files_linelength_toolong
      '#description' => t('Choose profile fields to be used when using autocomplete to select a patron. Note: since profile fields do not allow for unique values, whatever unique identifier you are using (such as a barcode) should be the Drupal username. Barcode values below are included only to prevent data loss from previous versions of this module.'),
    );

    // @todo Refactor to db_select.
    $result = db_query("SELECT title, name FROM {profile_fields} WHERE type = :type", array(
      ':type' => 'textfield',
    ));
    foreach ($result as $field) {
      $form['library_profile']['library_profile_' . $field->name] = array(
        '#type' => 'checkbox',
        // @todo Check if there is another possibility to sending variables
        // directly to t() here.
        '#title' => t($field->title . ' (' . $field->name . ')'),
        '#default_value' => variable_get('library_profile_' . $field->name, 0),
        '#return_value' => 1,
      );
    }
  }
  return system_settings_form($form);
}