1 block.module block_custom_block_form($edit = array(), $stand_alone = TRUE)

Form constructor for the custom block form.

Parameters

$edit: (optional) An associative array of information retrieved by block_custom_get_block() if an existing block is being edited, or an empty array otherwise. Defaults to array().

$stand_alone: (optional) Set to FALSE if this form is used when displaying as part of a form within the Layout UI. The default value of TRUE should be used if this is a stand-alone form, such as when editing a block at it's own URL.

Related topics

File

core/modules/block/block.module, line 243
Provides the ability to create reusable custom blocks.

Code

function block_custom_block_form($edit = array(), $stand_alone = TRUE) {
  $edit += array(
    'delta' => NULL,
    'info' => '',
    'title' => '',
    'description' => '',
    'body' => array('value' => '', 'format' => NULL),
    'default_langcode' => LANGUAGE_NONE,
  );
  // If the description is the default from hook_block_info(), leave blank.
  if ($edit['description'] === t('A reusable custom block.')) {
    $edit['description'] = '';
  }

  $form['info'] = array(
    '#type' => 'textfield',
    '#title' => t('Admin label'),
    '#default_value' => $edit['info'],
    '#maxlength' => 64,
    '#description' => t('This text is used only in administrative interfaces. It will not be shown to site visitors.'),
    '#required' => TRUE,
    '#id' => 'block-info',
  );
  $form['delta'] = array(
    '#type' => 'machine_name',
    '#default_value' => $edit['delta'],
    '#maxlength' => 128,
    '#machine_name' => array(
      'exists' => 'block_custom_block_load',
      'source' => array('info'),
    ),
    '#description' => t('A unique machine-readable name for this Block. It must only contain lowercase letters, numbers, and underscores.'),
    '#disabled' => isset($edit['delta']),
  );
  $form['description'] = array(
    '#type' => 'textfield',
    '#title' => t('Admin description'),
    '#default_value' => $edit['description'],
    '#maxlength' => 128,
    '#description' => t('This text is used only in administrative interfaces. It will not be shown to site visitors.<br />Allowed HTML tags: @tags', array('@tags' => _filter_xss_display_allowed_tags())),
    '#id' => 'block-description',
  );
  $form['title'] = array(
    '#type' => 'textfield',
    '#title' => t('Display title'),
    '#default_value' => $edit['title'],
    '#maxlength' => 255,
    '#description' => t('The title of the block as shown to the user. This will affect all places where this block is used.'),
  );
  $form['body'] = array(
    '#type' => 'text_format',
    '#title' => t('Block content'),
    '#default_value' => $edit['body']['value'],
    '#format' => $edit['body']['format'],
    '#editor_uploads' => TRUE,
    '#rows' => 8,
    '#required' => TRUE,
  );

  // Add default language select dropdown on the stand-alone config form only.
  // Not shown on the translation forms at all.
  if ($stand_alone && module_exists('locale') && empty($edit['langcode'])) {
    $language_options = array(LANGUAGE_NONE => t('- None -'));
    $language_options += language_list(TRUE, TRUE);

    $form['default_langcode'] = array(
      '#type' => 'select',
      '#title' => t('Language'),
      '#description' => 'If assigned a language, options will be shown to translate this block into other languages.',
      '#options' => $language_options,
      '#default_value' => $edit['default_langcode'],
    );
  }

  // When displaying as part of the Layout UI.
  if (!$stand_alone) {
    // The Layout UI may show the translated block admin title and description,
    // but this form will only show the source translation contents. Notify
    // the user that they may be about to edit something they weren't expecting.
    if (!empty($edit['translations'])) {
      $form['translation_help'] = array(
        '#type' => 'help',
        '#markup' => '<strong>' . t('Translation notice') . ':</strong> ' . t('The settings in this form are for the source translation only. Translations may be modified on the <a href="!url">block\'s translation settings page</a>.', array('!url' => url('admin/structure/block/manage/' . $edit['delta'] . '/translation'))),
        '#weight' => -99,
      );
    }

    $form['title']['#states'] = array(
      'visible' => array(
        '[name=title_display]' => array('value' => LAYOUT_TITLE_DEFAULT),
      ),
    );
    $form['reusable'] = array(
      '#type' => 'checkbox',
      '#title' => t('Make this block reusable'),
      '#description' => t('This option may not be unchecked once enabled. You may configure or delete this reusable block from the !block_link page.', array('!block_link' => l(t('Custom blocks'), 'admin/structure/block'))),
      '#weight' => 4,
      '#default_value' => TRUE,
      '#disabled' => TRUE,
    );
    $form['info']['#weight'] = 5;
    $form['delta']['#weight'] = 6;
    $form['delta']['#machine_name']['source'] = array('block_settings', 'info');
    $form['description']['#weight'] = 7;
  }

  return $form;
}