function bat_type_edit_form in Booking and Availability Management Tools for Drupal 7
Form callback: create or edit a type.
Parameters
BatType $type: The BatType object to edit or, for a creation form, an empty type object with only a type bundle defined.
1 call to bat_type_edit_form()
- bat_type_form in modules/
bat_unit/ bat_type.admin.inc - Form callback: edit a type.
2 string references to 'bat_type_edit_form'
- bat_type_create_form_wrapper in modules/
bat_unit/ bat_type.admin.inc - Form callback wrapper: create a type.
- bat_type_form_wrapper in modules/
bat_unit/ bat_type.admin.inc - Form callback wrapper: edit a type.
File
- modules/
bat_unit/ bat_type.admin.inc, line 426 - BatType editing UI.
Code
function bat_type_edit_form($form, &$form_state, BatType $type) {
$form['#attributes']['class'][] = 'bat-management-form bat-type-edit-form';
$form['type'] = array(
'#type' => 'value',
'#value' => $type->type,
);
// Add the default field elements.
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Type name'),
'#default_value' => isset($type->name) ? $type->name : '',
'#maxlength' => 255,
'#required' => TRUE,
'#weight' => -99,
);
// Add the field related form elements.
$form_state['bat_type'] = $type;
field_attach_form('bat_type', $type, $form, $form_state, entity_language('bat_type', $type));
$form['additional_settings'] = array(
'#type' => 'vertical_tabs',
'#weight' => 99,
);
// Type author information for administrators.
$form['author'] = array(
'#type' => 'fieldset',
'#access' => user_access('bypass bat_type entities access'),
'#title' => t('Authoring information'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#group' => 'additional_settings',
'#attributes' => array(
'class' => array(
'type-form-author',
),
),
'#attached' => array(
'js' => array(
array(
'type' => 'setting',
'data' => array(
'anonymous' => variable_get('anonymous', t('Anonymous')),
),
),
),
),
'#weight' => 90,
);
$form['author']['author_name'] = array(
'#type' => 'textfield',
'#title' => t('Authored by'),
'#maxlength' => 60,
'#autocomplete_path' => 'user/autocomplete',
'#default_value' => !empty($type->author_name) ? $type->author_name : '',
'#weight' => -1,
'#description' => t('Leave blank for %anonymous.', array(
'%anonymous' => variable_get('anonymous', t('Anonymous')),
)),
);
$form['author']['date'] = array(
'#type' => 'textfield',
'#title' => t('Authored on'),
'#maxlength' => 25,
'#description' => t('Format: %time. The date format is YYYY-MM-DD and %timezone is the time zone offset from UTC. Leave blank to use the time of form submission.', array(
'%time' => !empty($type->date) ? date_format(date_create($type->date), 'Y-m-d H:i:s O') : format_date($type->created, 'custom', 'Y-m-d H:i:s O'),
'%timezone' => !empty($type->date) ? date_format(date_create($type->date), 'O') : format_date($type->created, 'custom', 'O'),
)),
'#default_value' => !empty($type->date) ? $type->date : '',
);
$form['revisions'] = array(
'#type' => 'fieldset',
'#access' => user_access('bypass bat_type entities access'),
'#title' => t('Revision information'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#group' => 'additional_settings',
'#attributes' => array(
'class' => array(
'type-form-revisions',
),
),
'#weight' => 95,
);
if (module_exists('revisioning')) {
$form['revisions']['log'] = array(
'#type' => 'textarea',
'#title' => !empty($type->type_id) ? t('Update log message') : t('Creation log message'),
'#rows' => 4,
'#description' => t('Provide an explanation of the changes you are making. This will provide a meaningful history of changes to this type.'),
);
$options = array();
if (!empty($type->type_id)) {
$options[REVISIONING_NO_REVISION] = t('Modify current revision, no moderation');
}
$options[REVISIONING_NEW_REVISION_NO_MODERATION] = t('Create new revision, no moderation');
$options[REVISIONING_NEW_REVISION_WITH_MODERATION] = t('Create new revision and moderate');
$form['revisions']['revision_operation'] = array(
'#title' => t('Revision creation and moderation options'),
'#description' => t('Moderation means that the new revision is not publicly visible until approved by someone with the appropriate permissions.'),
'#type' => 'radios',
'#options' => $options,
'#default_value' => isset($type->type_id) ? REVISIONING_NEW_REVISION_WITH_MODERATION : REVISIONING_NEW_REVISION_NO_MODERATION,
);
if (variable_get('revisioning_no_moderation_by_default', FALSE)) {
$form['revisions']['revision_operation']['#default_value'] = REVISIONING_NEW_REVISION_NO_MODERATION;
}
if (!empty($type->type_id)) {
$revision_count = bat_type_get_number_of_revisions_newer_than($type->revision_id, $type->type_id);
if ($revision_count == 1) {
drupal_set_message(t('Please note there is one revision more recent than the one you are about to edit.'), 'warning');
}
elseif ($revision_count > 1) {
drupal_set_message(t('Please note there are @count revisions more recent than the one you are about to edit.', array(
'@count' => $revision_count,
)), 'warning');
}
}
}
else {
if (!empty($type->type_id)) {
$type_bundle = bat_type_bundle_load($type->type);
$form['revisions']['revision'] = array(
'#type' => 'checkbox',
'#title' => t('Create new revision on update'),
'#description' => t('If an update log message is entered, a revision will be created even if this is unchecked.'),
'#default_value' => isset($type_bundle->data['revision']) ? $type_bundle->data['revision'] : 0,
);
}
$form['revisions']['log'] = array(
'#type' => 'textarea',
'#title' => !empty($type->type_id) ? t('Update log message') : t('Creation log message'),
'#rows' => 4,
'#description' => t('Provide an explanation of the changes you are making. This will provide a meaningful history of changes to this type.'),
);
}
// Type publishing options for administrators.
$form['options'] = array(
'#type' => 'fieldset',
'#access' => user_access('bypass bat_type entities access'),
'#title' => t('Publishing options'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#group' => 'additional_settings',
'#attributes' => array(
'class' => array(
'type-form-published',
),
),
'#weight' => 95,
);
$form['options']['status'] = array(
'#type' => 'checkbox',
'#title' => t('Published'),
'#default_value' => $type->status,
);
$form['actions'] = array(
'#type' => 'actions',
'#tree' => FALSE,
);
// We add the form's #submit array to this button along with the actual submit
// handler to preserve any submit handlers added by a form callback_wrapper.
$submit = array();
if (!empty($form['#submit'])) {
$submit += $form['#submit'];
}
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Save Type'),
'#submit' => $submit + array(
'bat_type_edit_form_submit',
),
);
if (!empty($type->name) && bat_type_access('delete', $type)) {
$form['actions']['delete'] = array(
'#type' => 'submit',
'#value' => t('Delete Type'),
'#suffix' => l(t('Cancel'), 'admin/bat/config/types'),
'#submit' => $submit + array(
'bat_type_form_submit_delete',
),
'#weight' => 45,
);
}
// We append the validate handler to #validate in case a form callback_wrapper
// is used to add validate handlers earlier.
$form['#validate'][] = 'bat_type_edit_form_validate';
return $form;
}