function party_hat_form in Party 7
Same name and namespace in other branches
- 8.2 modules/party_hat/party_hat.admin.inc \party_hat_form()
Entity form for party hats.
Parameters
$hat: A hat object.
File
- modules/
party_hat/ party_hat.admin.inc, line 13 - Contains admin page callbacks for the party hats module.
Code
function party_hat_form($form, &$form_state, $hat, $op = 'edit') {
$form['#hat'] = $hat;
if (isset($hat->hid)) {
$form['hid'] = array(
'#type' => 'hidden',
'#value' => $hat->hid,
);
drupal_set_title(t('Edit hat: @label', array(
'@label' => $hat->label,
)));
}
$form['label'] = array(
'#type' => 'textfield',
'#title' => t('Hat name'),
'#required' => TRUE,
'#default_value' => isset($hat->label) ? $hat->label : '',
);
$form['name'] = array(
'#type' => 'machine_name',
'#title' => t('Hat machine name'),
'#default_value' => isset($hat->name) ? $hat->name : '',
'#description' => t('A unique, machine readable name for the hat'),
'#machine_name' => array(
'exists' => 'party_hat_hat_machine_name_exists',
'source' => array(
'label',
),
),
'#disabled' => isset($hat->name),
);
$form['description'] = array(
'#type' => 'textarea',
'#title' => t('Description'),
'#default_value' => isset($hat->description) ? $hat->description : '',
);
$parents = party_hat_get_tree();
$descendants = isset($hat->name) ? party_hat_get_tree($hat->name) : array();
$options = array(
'' => t('--No Parent--'),
);
foreach ($parents as $parent) {
// Don't include this hat in the options.
if (isset($hat->name) && $parent->name == $hat->name) {
continue;
}
// Don't include hats that are descendents of this hat in the options.
if (isset($descendants[$parent->name])) {
continue;
}
$options[$parent->name] = str_repeat('-', $parent->depth) . $parent->label;
}
$form['parent'] = array(
'#type' => 'select',
'#title' => t('Parent'),
'#options' => $options,
'#default_value' => isset($hat->parent) ? $hat->parent : NULL,
'#description' => t('The parent hat for this hat.'),
);
field_attach_form('party_hat', $hat, $form, $form_state);
$form['required'] = array(
'#type' => 'checkbox',
'#title' => t('Required'),
'#default_value' => isset($hat->required) ? $hat->required : 0,
'#description' => 'If enabled, all parties require this hat.',
'#weight' => 1,
);
$form['data_set_rules'] = array(
'#type' => 'fieldset',
'#title' => t('Data rules'),
'#description' => 'Set rules for which data set these hats give.',
'#weight' => 3,
'#tree' => TRUE,
'#theme' => 'crm_hat_data_set_rules_form',
);
foreach (party_get_data_set_info() as $data_set_name => $data_set) {
// Get the rule.
if (isset($hat->name)) {
$default = party_hat_get_data_set_rule($hat, $data_set_name);
foreach ($default as $key => $var) {
if ($var == 1) {
$default[$key] = $key;
}
}
}
else {
$default = array(
'has' => 0,
);
}
$form['data_set_rules'][$data_set_name] = array(
'#type' => 'checkboxes',
'#title' => check_plain($data_set['label']),
'#default_value' => $default,
'#options' => array(
// We have to use different keys to what the access hook expects for
// FormAPI radio values to work.
'has' => t('Allowed'),
),
);
}
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
'#weight' => 99,
);
return $form;
}