Create Uneditable CCK Text Fields

Following is a little gem I found here - http://www.coderintherye.com/disabled-cck-fields-in-node-forms

I actually have a need for this in an upcoming project so it's right on time.

The goal: Create two uneditable text fields that would display in the node edit form with default values and in the node view and be saved in the node object.

//$Id:

/**
* Implementation of hook_form_alter().
* For the news story content type
* Make some fields not editable and have default values
*/

function formedits_form_alter(&$form, &$form_state, $form_id) {
  if (($form_id == 'news_node_form' && arg(2) == 'edit') || ($form_id == 'news_node_form' && arg(1) == 'add')) {
    drupal_add_js(drupal_get_path('module', 'formedits') .'/formedits.js');
    $form['#after_build'][] = 'formedits_after_build';
  }
}

function formedits_after_build($form, &$form_state) {
  $form['field_email'][0]['value']['#value'] = $_SERVER['mail'];
  $form['field_email'][0]['#value']['value'] = $_SERVER['mail'];
  $form['field_name'][0]['value']['#value'] = $_SERVER['fname'] .' '. $_SERVER['lname'];
  $form['field_name'][0]['#value']['value'] = $_SERVER['fname'] .' '. $_SERVER['lname'];
  $form_state['values']['field_email'][0]['value'] = $_SERVER['mail'];
  $form_state['values']['field_name'][0]['value'] = $_SERVER['fname'] .' '. $_SERVER['lname'];
  return $form;
}

Then also our JavaScript file:


// $Id: $
if (Drupal.jsEnabled) {
  $(document).ready(function() {
    $("#edit-field-email-0-value").attr("disabled","disabled")
    $("#edit-field-name-0-value").attr("disabled", "disabled")
  });
}

Contact Me

Feel free to contact me.

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.