You are here

function crumbs_admin_entity_parent_form in Crumbs, the Breadcrumbs suite 7.2

Form builder callback for admin/structure/crumbs/entity-parent/$type.

_state

Parameters

array $form:

string $entity_type: E.g. 'node' or 'taxonomy_term'.

Return value

array

1 string reference to 'crumbs_admin_entity_parent_form'
crumbs_menu in ./crumbs.info.inc
Implements hook_menu().

File

admin/crumbs.entity_parent.inc, line 14

Code

function crumbs_admin_entity_parent_form($form, &$form_state, $entity_type) {
  $info = entity_get_info($entity_type);
  $text = <<<EOT
<p>You may specify a pattern for the parent path for each entity bundle.</p>
EOT;
  $doc = t($text);
  $text = <<<EOT
<p>Whatever you configure here, will be available on the Crumbs settings page as<br/>
crumbs.entityParent.{<span class="php-variable">$entity_type</span>}.[type]</p>
EOT;
  $doc .= t($text);
  if (!module_exists('token')) {
    $text = <<<EOT
<p>You will get more dynamic possibilities, if you install the !token_module_link module.</p>
EOT;
    $doc .= t($text, array(
      '!token_module_link' => l('Token', 'http://drupal.org/project/token', array(
        'external' => TRUE,
      )),
    ));
  }
  elseif (!module_exists('entity_token')) {
    $text = <<<EOT
<p>You will get more interesting tokens, if you install the entity_token module.<br/>
(included in !entity_module_link module)</p>
EOT;
    $doc .= t($text, array(
      '!entity_module_link' => l('Entity', 'http://drupal.org/project/entity', array(
        'external' => TRUE,
      )),
    ));
  }
  $form = array();
  $form['intro'] = array(
    '#markup' => $doc,
  );
  $form['crumbs_' . $entity_type . '_parent_patterns'] = array(
    '#title' => t('Bundles'),
    '#tree' => TRUE,
  );
  $settings = variable_get('crumbs_' . $entity_type . '_parent_patterns', array());
  $element_defaults = array(
    '#type' => 'textfield',
    // The maximum length is quite arbitrary.
    // Pathauto has 1280, but we think that 512 is enough.
    '#maxlength' => 512,
  );
  if (module_exists('token')) {
    $element_defaults['#element_validate'][] = 'token_element_validate';
    $element_defaults['#token_types'][] = $info['token type'];
  }
  if ($entity_type === 'user') {
    foreach (user_roles(TRUE) as $rid => $role) {
      $form['crumbs_' . $entity_type . '_parent_patterns'][$role] = array(
        '#title' => $role,
        '#description' => t('Crumbs parent path for users with role "!role"', array(
          '!role' => $role,
        )),
        '#default_value' => isset($settings[$role]) ? $settings[$role] : NULL,
      ) + $element_defaults;
    }
  }
  else {
    foreach ($info['bundles'] as $bundle_key => $bundle) {
      $form['crumbs_' . $entity_type . '_parent_patterns'][$bundle_key] = array(
        '#title' => t($bundle['label']),
        '#description' => t('Crumbs parent path for !plural of type "!bundle_label" (!bundle_key)', array(
          '!plural' => isset($info['plural label']) ? t($info['plural label']) : t('!type entities', array(
            '!type' => t($info['label']),
          )),
          '!bundle_label' => t($bundle['label']),
          '!bundle_key' => $bundle_key,
        )),
        '#default_value' => isset($settings[$bundle_key]) ? $settings[$bundle_key] : NULL,
      ) + $element_defaults;
    }
  }
  if (module_exists('token')) {
    $form['token_help'] = array(
      /* @see theme_token_tree() */
      '#theme' => 'token_tree',
      '#token_types' => array(
        $info['token type'],
      ),
      '#dialog' => TRUE,
    );
  }
  $form = system_settings_form($form);
  $form['#submit'][] = '_crumbs_admin_flush_cache';
  return $form;
}