function fckeditor_process_form in FCKeditor - WYSIWYG HTML editor 6.2        
                          
                  
                        Same name and namespace in other branches
- 5.2 fckeditor.module \fckeditor_process_form()
- 6 fckeditor.module \fckeditor_process_form()
1 string reference to 'fckeditor_process_form'
  - fckeditor_elements in ./fckeditor.module
- Implementation of hook_elements().
Replace textarea with FCKeditor using callback function (fckeditor_process_textarea)
File
 
   - ./fckeditor.module, line 196
- FCKeditor - The text editor for Internet - http://www.fckeditor.net
Copyright (C) 2003-2008 Frederico Caldeira Knabben
Code
function fckeditor_process_form(&$form) {
  global $_fckeditor_configuration, $_fckeditor_js_ids;
  static $processed_textareas = array();
  static $found_textareas = array();
  
  
  if (arg(1) == "add" || arg(1) == "reply" || !count($_fckeditor_configuration)) {
    return $form;
  }
  $fckeditor_filters = array();
  
  if ($children = array_values(element_children($form))) {
    foreach ($children as $index => $item) {
      $element =& $form[$item];
      if (isset($element['#id']) && in_array($element['#id'], array_keys($_fckeditor_js_ids))) {
        $found_textareas[$element['#id']] =& $element;
      }
      
      if ($item === 'format' && $index > 0) {
        
        if (isset($element['#type']) && $element['#type'] == 'fieldset' || isset($element['format']['guidelines'])) {
          
          $field =& $form[$children[$index - 1]];
          $textarea_id = $field['#id'];
          
          if (isset($_fckeditor_js_ids[$textarea_id])) {
            $js_id = $_fckeditor_js_ids[$textarea_id];
            array_push($processed_textareas, $js_id);
            
            if (empty($field['#attributes']['class']) || strpos($field['#attributes']['class'], "checkxss") === FALSE) {
              continue;
            }
            
            $formats = element_children($element);
            foreach ($formats as $format_id) {
              $format = !empty($element[$format_id]['#default_value']) ? $element[$format_id]['#default_value'] : $element[$format_id]['#value'];
              break;
            }
            $enabled = filter_list_format($format);
            $fckeditor_filters = array();
            
            foreach ($enabled as $id => $filter) {
              
              if (in_array($id, array_keys($_fckeditor_configuration[$textarea_id]['filters'])) && $_fckeditor_configuration[$textarea_id]['filters'][$id]) {
                if (!isset($fckeditor_filters[$js_id])) {
                  $fckeditor_filters[$js_id] = array();
                }
                $fckeditor_filters[$js_id][] = $id . "/" . $format;
              }
            }
            drupal_add_js(array(
              'fckeditor' => array(
                'settings' => array(
                  $textarea_id => array(
                    'input_format' => $format,
                  ),
                ),
              ),
            ), 'setting');
            
            if (empty($fckeditor_filters[$js_id])) {
              $field['#attributes']['class'] = preg_replace("/checkxss(1|2)/", "", $field['#attributes']['class']);
            }
            else {
              $field['#attributes']['class'] = strtr($field['#attributes']['class'], array(
                "checkxss1" => "filterxss1",
                "checkxss2" => "filterxss2",
              ));
            }
            array_pop($formats);
            unset($formats['format']);
          }
        }
        
        continue;
      }
      
      fckeditor_process_form($element);
    }
  }
  
  if (isset($form['#action'])) {
    
    if (count($processed_textareas) < count($_fckeditor_js_ids)) {
      
      foreach (array_keys($found_textareas) as $id) {
        $element =& $found_textareas[$id];
        
        if (strpos($element['#attributes']['class'], "checkxss") !== FALSE && !in_array($_fckeditor_js_ids[$element['#id']], $processed_textareas) && !empty($_fckeditor_configuration[$id]['filters']) && array_sum($_fckeditor_configuration[$id]['filters'])) {
          
          $js_id = $_fckeditor_js_ids[$element['#id']];
          $fckeditor_filters[$js_id][] = "filter/0/1";
          $element['#attributes']['class'] = strtr($element['#attributes']['class'], array(
            "checkxss1" => "filterxss1",
            "checkxss2" => "filterxss2",
          ));
        }
      }
    }
  }
  if (!empty($fckeditor_filters)) {
    drupal_add_js(array(
      'fckeditor_filters' => $fckeditor_filters,
    ), 'setting');
  }
  return $form;
}