You are here

function autosave_form_alter in Autosave 5.3

Same name and namespace in other branches
  1. 5 autosave.module \autosave_form_alter()
  2. 5.2 autosave.module \autosave_form_alter()
  3. 6.2 autosave.module \autosave_form_alter()
  4. 6 autosave.module \autosave_form_alter()
  5. 7.2 autosave.module \autosave_form_alter()
  6. 7 autosave.module \autosave_form_alter()

Implementation of hook_form_alter().

File

./autosave.module, line 59
Automatically saves a node after a period of time.

Code

function autosave_form_alter(&$form, &$form_state, $form_id) {

  // TODO: Allow user to configure which forms can be autosaved.
  if (end(explode('/', $_GET['q'])) == 'configure-autosave') {
    drupal_add_js('var configure_autosave = true;', 'inline');
    drupal_add_js(AUTOSAVE_PATH . '/autosave.js');
    drupal_add_js(AUTOSAVE_PATH . '/jquery.field.js');
    drupal_add_css(AUTOSAVE_PATH . '/autosave.css');
  }
  if (isset($form['type']['#value']) && $form_id == $form['type']['#value'] . '_node_form') {

    // check if this content_type has the autosave function enabled and make sure it's a node edit or add form
    if (variable_get('autosave_' . $form['type']['#value'], 0) == 1 && (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) == 'edit' || arg(0) == 'node' && arg(1) == 'add')) {
      global $user;
      $path = $_GET['q'];
      drupal_add_js(AUTOSAVE_PATH . '/autosave.js');
      drupal_add_js(AUTOSAVE_PATH . '/jquery.field.js');
      drupal_add_css(AUTOSAVE_PATH . '/autosave.css');
      if ($form['type']['#value'] . '_node_form' == $form_id) {
        $settings['form_id'] = 'node_form';
      }
      else {
        $settings['form_id'] = $form_id;
      }
      $settings['period'] = variable_get('autosave_period', 10);
      $settings['autosave_url'] = url('admin/autosave');
      $settings['q'] = $path;

      // If an autosaved version of the form exists, make it available via javascript.
      if ($autosaved_form = autosave_get_autosaved_form($form_id, $path, $user->uid)) {
        $autosaved_form_id = $form['type']['#value'] . '_node_form' == $form_id ? 'node_form' : $form_id;
        $settings['autosaved_form'][] = array(
          'form_id' => $autosaved_form_id,
          'serialized' => unserialize($autosaved_form['serialized']),
          'saved_date' => format_date($autosaved_form['timestamp'], 'medium'),
        );
      }
      drupal_add_js($settings, 'setting');
    }
  }
}