You are here

function nd_ds_fields in Display Suite 6.3

Implementation of hook_ds_fields().

File

modules/nd/nd.module, line 409
Node displays.

Code

function nd_ds_fields($type_name, $build_mode, $extra) {
  $fields = array(
    'title' => array(
      'title' => t('Title'),
      'type' => DS_FIELD_TYPE_THEME,
      'status' => DS_FIELD_STATUS_STATIC,
      'allow_formatters' => TRUE,
      'properties' => array(
        'formatters' => array(
          'nd_title_h1_nolink' => t('H1 title'),
          'nd_title_h1_link' => t('H1 title, linked to node'),
          'nd_title_h2_nolink' => t('H2 title'),
          'nd_title_h2_link' => t('H2 title, linked to node'),
          'nd_title_h2_block_nolink' => t('H2 block title'),
          'nd_title_h2_block_link' => t('H2 block title, linked to node'),
          'nd_title_p_nolink' => t('Paragraph title'),
          'nd_title_p_link' => t('Paragraph title, linked to node'),
        ),
      ),
    ),
    'author' => array(
      'title' => t('Author'),
      'type' => DS_FIELD_TYPE_THEME,
      'status' => DS_FIELD_STATUS_STATIC,
      'properties' => array(
        'formatters' => array(
          'ds_author_nolink' => t('Author'),
          'ds_author_link' => t('Author linked to profile'),
        ),
      ),
    ),
    'links' => array(
      'title' => t('Links'),
      'type' => DS_FIELD_TYPE_PREPROCESS,
      'status' => DS_FIELD_STATUS_STATIC,
    ),
    'read_more' => array(
      'title' => t('Read more'),
      'type' => DS_FIELD_TYPE_CODE,
      'status' => DS_FIELD_STATUS_DEFAULT,
      'properties' => array(
        'formatters' => array(
          'ds_eval_code' => t('Default'),
        ),
        'code' => '<?php echo l(t("Read more"), "node/$object->nid"); ?>',
      ),
    ),
  );

  // Updated and posted date formatters
  if (module_exists('date_api')) {
    $date_formats = date_get_format_types('', FALSE);
  }
  else {
    $date_formats = array(
      'small' => array(
        'title' => 'Small',
        'type' => 'small',
      ),
      'medium' => array(
        'title' => 'Medium',
        'type' => 'medium',
      ),
      'large' => array(
        'title' => 'Large',
        'type' => 'large',
      ),
    );
  }
  $date_formatters = array();
  foreach ($date_formats as $formatter) {
    $date_formatters['nd_post_date_' . $formatter['type']] = t($formatter['title']);
  }

  // Regression. People upgrading from 6.x-2.2 to 6.x-2.3 will lose
  // the post date PHP code field, we can't do that by default. The
  // update_2 will make the nd_use_date_api variable false, and
  // developers can set this variable to 1 in the variable table.
  if (variable_get('nd_use_date_api', TRUE)) {
    $fields['post_date'] = array(
      'title' => t('Post date'),
      'type' => DS_FIELD_TYPE_THEME,
      'status' => DS_FIELD_STATUS_STATIC,
      'properties' => array(
        'formatters' => $date_formatters,
      ),
    );
  }
  else {
    $fields['post_date'] = array(
      'title' => t('Post date'),
      'type' => DS_FIELD_TYPE_CODE,
      'status' => DS_FIELD_STATUS_DEFAULT,
      'properties' => array(
        'formatters' => array(
          'ds_eval_code' => t('Default'),
        ),
        'code' => '<?php echo format_date($object->created, "custom", "d/m/Y"); ?>',
      ),
    );
  }
  $fields['updated_date'] = array(
    'title' => t('Last updated date'),
    'type' => DS_FIELD_TYPE_THEME,
    'status' => DS_FIELD_STATUS_STATIC,
    'properties' => array(
      'formatters' => $date_formatters,
    ),
  );

  // Check for body.
  if (isset($extra['has_body']) && $extra['has_body'] == TRUE) {
    $fields['body'] = array(
      'title' => t('Body'),
      'type' => DS_FIELD_TYPE_THEME,
      'status' => DS_FIELD_STATUS_STATIC,
      'allow_formatters' => TRUE,
      'properties' => array(
        'formatters' => array(
          'nd_bodyfield' => t('Default'),
        ),
      ),
    );
  }

  // Taxonomy support.
  if (module_exists('taxonomy')) {
    $all = FALSE;

    // All vocabularies per content type.
    // We can't use taxonomy_get_vocabularies() here, see http://drupal.org/node/810352.
    $result = db_query("SELECT v.vid, v.*, n.type FROM {vocabulary} v LEFT JOIN {vocabulary_node_types} n ON v.vid = n.vid WHERE n.type = '%s' ORDER BY v.weight, v.name", $type_name);
    while ($vocabulary = db_fetch_object($result)) {
      $all = TRUE;
      $fields['terms_' . $vocabulary->vid] = array(
        'title' => t('Taxonomy: @vocab', array(
          '@vocab' => $vocabulary->name,
        )),
        'type' => DS_FIELD_TYPE_THEME,
        'status' => DS_FIELD_STATUS_STATIC,
        'properties' => array(
          'css-class' => 'field-terms field-terms-' . $vocabulary->vid,
          'formatters' => array(
            'nd_terms_per_vocabulary_space' => t('Separated by space'),
            'nd_terms_per_vocabulary_linked_space' => t('Separated by space, linked to term'),
            'nd_terms_per_vocabulary_comma' => t('Separated by comma'),
            'nd_terms_per_vocabulary_linked_comma' => t('Separated by comma, linked to term'),
            'nd_terms_per_vocabulary_list' => t('Unordered list'),
            'nd_terms_per_vocabulary_linked_list' => t('Unordered list, linked to term'),
          ),
        ),
      );
    }
    if ($all) {

      // All terms.
      $fields['terms'] = array(
        'title' => t('Taxonomy: all terms'),
        'type' => DS_FIELD_TYPE_PREPROCESS,
        'status' => DS_FIELD_STATUS_STATIC,
      );
    }
  }

  // Upload support.
  if (module_exists('upload') && $build_mode != 'teaser' && variable_get("upload_{$type_name}", 1)) {
    $fields['files'] = array(
      'title' => t('Core upload'),
      'type' => DS_FIELD_TYPE_IGNORE,
      'status' => DS_FIELD_STATUS_STATIC,
    );
  }

  // Book support.
  if (module_exists('book') && book_type_is_allowed($type_name)) {
    $fields['book_navigation'] = array(
      'title' => t('Book navigation'),
      'type' => DS_FIELD_TYPE_FUNCTION,
      'status' => DS_FIELD_STATUS_STATIC,
      'properties' => array(
        'formatters' => array(
          'nd_book_navigation' => t('Book navigation'),
        ),
      ),
    );
    $fields['book_add_new_child'] = array(
      'title' => t('Book: add new child'),
      'type' => DS_FIELD_TYPE_THEME,
      'status' => DS_FIELD_STATUS_STATIC,
      'properties' => array(
        'formatters' => array(
          'nd_book_add_new_child' => t('Add new child'),
        ),
      ),
    );
    $fields['book_printer_version'] = array(
      'title' => t('Book: printer version'),
      'type' => DS_FIELD_TYPE_THEME,
      'status' => DS_FIELD_STATUS_STATIC,
      'properties' => array(
        'formatters' => array(
          'nd_book_printer_version' => t('Printer version'),
        ),
      ),
    );
  }
  return array(
    'nd' => $fields,
  );
}