? maxlength-466396.patch ? maxlength-profile.patch ? maxlength_multistep.patch Index: maxlength.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/maxlength/maxlength.module,v retrieving revision 1.11.4.11.2.5 diff -u -p -r1.11.4.11.2.5 maxlength.module --- maxlength.module 6 Jun 2009 16:35:30 -0000 1.11.4.11.2.5 +++ maxlength.module 6 Jun 2009 17:47:56 -0000 @@ -51,6 +51,10 @@ function maxlength_form_alter(&$form, &$ variable_del(MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_js'); variable_del(MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_text'); } + + elseif ($form_id == 'profile_field_form') { + _maxlength_profile_form_alter($form, $form_state); + } } function _maxlength_content_form_alter(&$form, &$form_state, $form_id) { @@ -153,6 +157,101 @@ function _maxlength_cck_form_submit($for variable_set(MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_text', $form['#post'][MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_text']); } +function _maxlength_profile_form_alter(&$form, $form_state) { + //dsm($form); + // only allow this feature of type: textfield, textarea + $fid = isset($form['fid']['#value']) ? $form['fid']['#value'] : 0; + $type_enabled = FALSE; + if (arg(3) == 'add' && in_array($form['type']['#value'], array('textfield', 'textarea'))) { + $type_enabled = TRUE; + } + else { + $edit = db_fetch_array(db_query('SELECT * FROM {profile_fields} WHERE fid = %d', $fid)); + $type_enabled = in_array($edit['type'], array('textfield', 'textarea')); + } + + // load the config + // @TODO this lines can be done much cleaner. + if ($type_enabled) { + $value = array(); + if (arg(3) == 'add') { + $value = array(); + $value['enabled'] = FALSE; + $value['js'] = FALSE; + $value['text'] = 'Content limited to !limit characters, remaining: !remaining'; + } + else { + $value = array(); + $value['enabled'] = variable_get(MAXLENGTH_NODE_TYPE .'_profile_'. $fid .'_limit', 0) > 0; + $value['limit'] = variable_get(MAXLENGTH_NODE_TYPE .'_profile_'. $fid .'_limit', 0); + $value['js'] = variable_get(MAXLENGTH_NODE_TYPE .'_profile_'. $fid .'_js', FALSE); + $value['text'] = variable_get(MAXLENGTH_NODE_TYPE .'_profile_'. $fid .'_text', 'Content limited to !limit characters, remaining: !remaining'); + + } + + $form['fields'][MAXLENGTH_NODE_TYPE .'_profile'] = array( + '#type' => 'fieldset', + '#weight' => $weight, + '#title' => t('Limit !type length', array('!type ' => $label)), + '#collapsible' => TRUE, + '#collapsed' => $value['enabled'], + ); + + $form['fields'][MAXLENGTH_NODE_TYPE .'_profile'][MAXLENGTH_NODE_TYPE .'_profile'] = array( + '#type' => 'textfield', + '#title' => t('!label max length', array('!label' => ucwords($label))), + '#field_suffix' => t('characters'), + '#return_value' => 1, + '#size' => 4, + '#default_value' => $value['enabled'], + '#description' => t('Maximum number of characters allowed for the !type field of this content type. Leave blank for an unlimited size.', array('!type' => $label)) .'
'. + ''. t('Please remember, it counts all characters, including HTML, so may not work as expected with rich text editors e.g. FCKeditor / tinyMCE.') .'', + ); + $form['fields'][MAXLENGTH_NODE_TYPE .'_profile'][MAXLENGTH_NODE_TYPE .'_profile'.'_js'] = array( + '#type' => 'checkbox', + '#title' => t('Enable remaining characters countdown for the !label', array('!label' => ucwords($label))), + '#default_value' => $value['js'], + '#description' => t('This will enable a Javascript based count down, as well as the client side validation for the !type field of this content type. If no limit set this is ignored.', array('!type' => $label)), + ); + $form['fields'][MAXLENGTH_NODE_TYPE .'_profile'][MAXLENGTH_NODE_TYPE .'_profile'.'_text'] = array( + '#type' => 'textarea', + '#title' => t('!label count down message', array('!label' => ucwords($label))), + '#default_value' => $value['text'], + '#description' => t('The text used in the Javascript message under the !type input, where "!limit" and "!remaining" are replaced by the appropriate numbers.', array('!type' => $label)), + ); + $form['#submit'][] = '_maxlength_profile_form_submit'; + } +} + +function _maxlength_profile_form_submit($form, &$form_state) { + // if we edit a field + if ($fid = $form_state['values']['fid']) { + } + else { + $fid = ''; + } + dsm($fid); + + $values = array(); + $values['limit'] = $form_state['values'][MAXLENGTH_NODE_TYPE .'_'. $fid .'_'. 'profile_'.'limit']; + $values['js'] = $form_state['values'][MAXLENGTH_NODE_TYPE .'_'. $fid .'_'. 'profile_'.'js']; + $values['text'] = $form_state['values'][MAXLENGTH_NODE_TYPE .'_'. $fid .'_'. 'profile_'.'text']; + + // get last fid if fid is not set + if ($fid == '') { + $fid = db_result(db_query("SELECT fid FROM {profile_fields} WHERE ")); + } + + dsm($values); + dsm($fid); + dsm($form_state); + + //variable_set(MAXLENGTH_NODE_TYPE . $form['field_name']['#value'], $form['#post']['max_length']); + //variable_set(MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_js', $form['#post'][MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_js']); + //variable_set(MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_text', $form['#post'][MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_text']); + +} + /** * Formats a form element to use maxlength value and use js. *