You are here

function log_form in Log entity 7

Log Form.

Parameters

array $form: The form array.

array $form_state: The form state array.

Log $log: The log entity.

Return value

array Returns the log form array.

2 string references to 'log_form'
log_add in ./log.pages.inc
Add new log page callback.
log_menu in ./log.module
Implements hook_menu().

File

./log.pages.inc, line 102
Log pages.

Code

function log_form(array $form, array &$form_state, Log $log) {

  // Store the log entity in the form for use later.
  $form['log'] = array(
    '#type' => 'value',
    '#value' => $log,
  );

  // Load the log type.
  $log_type = log_type_load($log->type);

  // Only display the name field if it's editable.
  if (!empty($log_type->name_edit)) {
    $form['name'] = array(
      '#type' => 'textfield',
      '#title' => t('Name'),
      '#description' => t('Leave this blank to automatically generate a name. As you type, frequently used log names will be suggested.'),
      '#default_value' => $log->name,
      '#autocomplete_path' => 'log/autocomplete/' . $log->type,
    );
  }

  // Timestamp.
  $timestamp_default = !empty($log->timestamp) ? date('Y-m-d H:i:s', $log->timestamp) : '';
  $form['timestamp'] = array(
    '#type' => 'date_select',
    '#title' => t('Date'),
    '#date_format' => 'M j Y H:i:s',
    '#date_type' => DATE_FORMAT_UNIX,
    '#date_year_range' => '-10:+3',
    '#default_value' => $timestamp_default,
    '#required' => TRUE,
  );

  // Additional settings (vertical tabs at the bottom of the form).
  $form['additional_settings'] = array(
    '#type' => 'vertical_tabs',
    '#weight' => 99,
  );

  // If the log is new, and the log type marks new logs as "done" by default,
  // mark the log as done and add some Javascript to auto-check/uncheck based
  // on the timestamp.
  if (empty($log->id) && !empty($log_type->done)) {
    $log->done = TRUE;
    drupal_add_js(drupal_get_path('module', 'log') . '/log.done.js');
  }
  $form['log_status'] = array(
    '#type' => 'fieldset',
    '#title' => t('Log status'),
    '#description' => t('Mark this log as done.'),
    '#collapsible' => TRUE,
    '#group' => 'additional_settings',
  );
  $form['log_status']['done'] = array(
    '#type' => 'checkbox',
    '#title' => t('Done'),
    '#default_value' => $log->done,
  );

  // Log user id.
  $form['uid'] = array(
    '#type' => 'value',
    '#value' => $log->uid,
  );
  field_attach_form('log', $log, $form, $form_state);
  $submit = array();
  if (!empty($form['#submit'])) {
    $submit += $form['#submit'];
  }
  $form['actions'] = array(
    '#weight' => 100,
  );
  $form['actions']['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save log'),
    '#submit' => $submit + array(
      'log_form_submit',
    ),
  );

  // Show Delete button if allowed.
  $log_id = entity_id('log', $log);
  if (!empty($log_id) && log_access('delete', $log)) {

    // Get the destination query parameter. If it is the current path, change to
    // <front> (because the current path won't exist once the log is deleted).
    $destination = drupal_get_destination();
    if ($destination['destination'] == current_path()) {
      $destination['destination'] = '<front>';
    }
    $form['actions']['delete'] = array(
      '#type' => 'markup',
      '#markup' => l(t('Delete'), 'log/' . $log_id . '/delete', array(
        'query' => $destination,
      )),
    );
  }
  return $form;
}