Skip to content
Snippets Groups Projects
  1. Jul 13, 2006
  2. Jul 11, 2006
  3. Jul 10, 2006
  4. Jul 05, 2006
  5. Jul 04, 2006
  6. Jun 12, 2006
  7. Jun 06, 2006
  8. May 29, 2006
  9. May 18, 2006
  10. May 08, 2006
  11. May 07, 2006
  12. Apr 13, 2006
  13. Apr 07, 2006
  14. Apr 06, 2006
  15. Mar 31, 2006
  16. Mar 27, 2006
  17. Mar 25, 2006
  18. Mar 24, 2006
  19. Mar 23, 2006
  20. Mar 08, 2006
  21. Mar 07, 2006
  22. Mar 03, 2006
  23. Feb 28, 2006
  24. Feb 23, 2006
  25. Feb 21, 2006
  26. Feb 15, 2006
  27. Feb 10, 2006
  28. Feb 09, 2006
  29. Feb 04, 2006
  30. Feb 01, 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. Jan 10, 2006
  35. Jan 09, 2006
Loading