'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); }