-
- Downloads
- Patch #45530 by Morbus: filter_form shouldn't default to #weight 0
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.
Showing
- modules/block.module 0 additions, 3 deletionsmodules/block.module
- modules/block/block.module 0 additions, 3 deletionsmodules/block/block.module
- modules/blog.module 1 addition, 1 deletionmodules/blog.module
- modules/blog/blog.module 1 addition, 1 deletionmodules/blog/blog.module
- modules/book.module 1 addition, 1 deletionmodules/book.module
- modules/book/book.module 1 addition, 1 deletionmodules/book/book.module
- modules/comment.module 1 addition, 3 deletionsmodules/comment.module
- modules/comment/comment.module 1 addition, 3 deletionsmodules/comment/comment.module
- modules/filter.module 1 addition, 1 deletionmodules/filter.module
- modules/filter/filter.module 1 addition, 1 deletionmodules/filter/filter.module
- modules/forum.module 1 addition, 1 deletionmodules/forum.module
- modules/forum/forum.module 1 addition, 1 deletionmodules/forum/forum.module
- modules/node.module 0 additions, 3 deletionsmodules/node.module
- modules/node/node.module 0 additions, 3 deletionsmodules/node/node.module
- modules/page.module 1 addition, 1 deletionmodules/page.module
- modules/page/page.module 1 addition, 1 deletionmodules/page/page.module
- modules/story.module 1 addition, 1 deletionmodules/story.module
- modules/story/story.module 1 addition, 1 deletionmodules/story/story.module
- modules/user.module 1 addition, 1 deletionmodules/user.module
- modules/user/user.module 1 addition, 1 deletionmodules/user/user.module
Loading
Please register or sign in to comment