'fieldset',
'#title' => t('Variable entity @id', array('@id' => $variable_entity->id)),
);
$elements['variable']['content'] = array(
'#prefix' => '' . t('Variable contents:') . '
',
'#markup' => is_array($variable_entity->variable) ? '
' . print_r($variable_entity->variable, TRUE) . '
' : $variable_entity->variable,
'#suffix' => '
',
);
$elements['variable']['fields'] = field_attach_view('variable_entity', $variable_entity, 'full');
$elements['form'] = drupal_get_form('variable_entity_form', $variable_entity);
return $elements;
}
/**
* Page callback for variable entity administration.
*
* Actually, just list some links, and a place for the field admin UI to attach a tab.
*/
function variable_entity_admin_page() {
$elements = array();
$variables = entity_get_controller('variable_entity')->variables;
$variable_entity_links = array();
foreach(array_keys($variables) as $id) {
$uri = entity_uri('variable_entity', variable_entity_load($id));
$variable_entity_links[] = l(t('View entity @id', array('@id' => $id)), $uri['path']);
}
$elements['variable_list'] = array(
'#theme' => 'item_list',
'#title' => t('All variable entities'),
'#items' => $variable_entity_links,
);
return $elements;
}
/**
* Form callback for a variable entity.
*/
function variable_entity_form($form, &$form_state, $variable_entity) {
global $conf;
// save the entity in a fake form property
$form['#variable_entity'] = $variable_entity;
$form['variable'] = array(
'#type' => 'fieldset',
'#title' => t('Variable entity @id form', array('@id' => $variable_entity->id)),
);
$form['variable']['variable_name'] = array(
'#type' => 'select',
'#title' => t('Variable name'),
'#options' => drupal_map_assoc(array_keys($conf)),
'#default_value' => $variable_entity->variable_name,
);
field_attach_form('variable_entity', $variable_entity, $form['variable'], $form_state);
$form['variable']['actions'] = array('#type' => 'actions');
$form['variable']['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
return $form;
}
/**
* Validate the variable entity form.
*/
function variable_entity_form_validate($form, &$form_state) {
$variable_entity = $form['#variable_entity'];
field_attach_form_validate('variable_entity', $variable_entity, $form, $form_state);
}
/**
* Variable form submit callback.
*/
function variable_entity_form_submit($form, &$form_state) {
$variable_entity = $form['#variable_entity'];
// update the variable where the entities live
$variables = entity_get_controller('variable_entity')->variables;
$variables[$variable_entity->id] = $form_state['values']['variable_name'];
variable_set('variable_entity', $variables);
field_attach_submit('variable_entity', $variable_entity, $form, $form_state);
field_attach_presave('variable_entity', $variable_entity);
field_attach_update('variable_entity', $variable_entity);
}