Skip to content
  1. Feb 25, 2011
  2. Dec 01, 2006
  3. Nov 22, 2006
  4. Sep 24, 2006
  5. Sep 05, 2006
  6. Aug 17, 2006
  7. Jul 03, 2006
  8. Jul 02, 2006
  9. Jun 26, 2006
  10. Jun 05, 2006
  11. Jun 03, 2006
  12. May 24, 2006
  13. May 13, 2006
  14. May 03, 2006
  15. Apr 17, 2006
  16. Apr 13, 2006
  17. Mar 27, 2006
  18. Mar 26, 2006
  19. Mar 23, 2006
  20. Mar 18, 2006
  21. Mar 14, 2006
  22. Mar 02, 2006
  23. Mar 01, 2006
  24. Feb 21, 2006
  25. Feb 14, 2006
  26. Feb 09, 2006
  27. Feb 01, 2006
  28. Jan 29, 2006
  29. Jan 27, 2006
  30. Jan 24, 2006
  31. Jan 22, 2006
  32. 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
  33. Jan 19, 2006
  34. Jan 18, 2006
  35. Dec 31, 2005
  36. Dec 15, 2005
  37. Dec 05, 2005