[development] Code freeze reminder
David Strauss
david at fourkitchens.com
Thu Jun 21 16:50:09 UTC 2007
Derek Wright wrote:
>> 5. The node render patch that Eaton started work on a while ago. I
>> don't think that is been committed yet, but Eaton recently reminded me
>> about how important this is to further unify and clean-up the CCK and
>> core.
>
> Eaton and I spoke about this at length last week. We decided the next
> step for both node rendering and killing the evil $node namespace bugs I
> was ranting about earlier is to convert $node from an object into a
> #FAPI-style array. This is a huge undertaking, but will solve a *bunch*
> of issues and open up tons of new possibilities. I've been so busy with
> update_status that I haven't had a chance to work on the initial patch
> for this. If anyone else wants to get the ball rolling, that'd be great:
> http://drupal.org/node/148420
I think this would be a bad idea, too. $nodes should be ultra-clean
representations of data. I often digest several form widgets to a single
item in the $node and perform a corresponding expansion to allow the
user to edit the node again.
If any simplification is to be had, it would be working with node data
in five hooks:
* Load $node from DB
* Render $node
* Convert $node to FAPI
* Convert FAPI to $node
* Save $node to DB
The only way I'd go for a FAPI-based $node is if we have a really clean
system for modules creating custom controls:
$form['complex_option'] = array(
'#type' => 'module_control_callback',
...
);
function module_control_callback(Contents of $form['complex_option']) {
$form['yes_no'] = array(
'#type' => 'checkbox',
'#title' => 'Custom etching',
...
);
$form['text'] = array(
'#type' => 'textfield',
'#title' => 'Custom etching text',
...
);
// FAPI prefixes the items returned here to control the namespace
return $form;
}
function module_control_callback_validate(Form state within namespace) {
// Return an error if "Custom etching" is checked
// but the text is empty
}
function module_control_callback_submit(Form state within namespace) {
// Returns NULL if "Custom etching" is unchecked or the text
// from "Custom etching text"
return $value_from_control;
}
It'd basically be a recursive Form API, but it would allow easy control
reuse, validation, and digestion.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 186 bytes
Desc: OpenPGP digital signature
Url : http://lists.drupal.org/pipermail/development/attachments/20070621/e5145a6b/attachment-0001.pgp
More information about the development
mailing list