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