Skip to content
  1. Jul 06, 2008
  2. Apr 23, 2007
  3. Mar 07, 2007
  4. Dec 17, 2006
  5. Dec 10, 2006
  6. Nov 23, 2006
  7. Nov 21, 2006
  8. Oct 30, 2006
  9. Oct 22, 2006
  10. Oct 05, 2006
  11. Aug 31, 2006
  12. Aug 27, 2006
  13. Aug 26, 2006
  14. Aug 23, 2006
  15. Aug 20, 2006
  16. Aug 18, 2006
  17. Aug 10, 2006
  18. Aug 07, 2006
  19. Aug 06, 2006
  20. Jul 31, 2006
  21. Jul 27, 2006
  22. Jul 19, 2006
  23. Jul 04, 2006
  24. May 18, 2006
  25. May 15, 2006
  26. May 07, 2006
  27. May 04, 2006
  28. Mar 27, 2006
  29. Feb 21, 2006
  30. Jan 26, 2006
  31. Jan 20, 2006
    • Dries Buytaert's avatar
      - Patch #45530 by Morbus: filter_form shouldn't default to #weight 0 · 8c02d4ec
      Dries Buytaert authored
      When a form element doesn't specify a #weight, it is assumed internally as #weight 0. However, to ensure that our form elements display visually *as they were defined in the array* we, in form_builder, count the number of elements, divide by 1000, and set that as the weight:
      
      # Assign a decimal placeholder weight to preserve original array order
      if (!isset($form[$key]['#weight'])) {
        $form[$key]['#weight'] = $count/1000;
      }
      
      The above code will set the #weights of elements that have not defined a weight to something like 0 (first element in array definition), 0.001, 0.002, and so on. However, anytime a form element *explicitly* defines a #weight of 0, that #weight is kept at exactly 0, which would cause that form element to appear BEFORE the elements that didn't have a #weight defined (and thus received a #weight such as 0.002).
      
      Consider the following pseudo example:
      
      $form['game_title'] = array(
          '#type' => 'textfield',
          ...
          );
      $form['game_description'] = array(
          '#type' => 'textarea',
          ...
          );
      $form['game_format'] = filter_form(variable_get('game_format', NULL));
      return $form;
      
      Here, we're not definiing weights on our two textfields. We then add an filter_form. The second parameter of the filter_form is $weight, which defaults to 0. After this $form hits form_builder, we have weights 0 (game_title), 0.001 (game_description), and 0 (filter_form) respectively. This is then sorted by weight, which causes filter_form (the third element in the array) to appear BEFORE game_description (0 is lighter than 0.001).
      
      The short lesson is: explicitly defining #weight 0 for a form element is probably a bad idea. This patch changes the default #weight of filter_form to NULL, instead of 0, and also removes any other explicit setting of #weight to 0 in core.
      8c02d4ec
  32. Jan 19, 2006
  33. Jan 18, 2006
  34. Dec 29, 2005
  35. Dec 05, 2005