- Patch #914792 by sun, moshe weitzman, effulgentsia: custom element properties entirely override default element info properties.
parent
fd37414f45
commit
566c39e7a3
|
@ -5754,6 +5754,9 @@ function element_sort_by_title($a, $b) {
|
|||
|
||||
/**
|
||||
* Retrieve the default properties for the defined element type.
|
||||
*
|
||||
* @param $type
|
||||
* An element type as defined by hook_element_info().
|
||||
*/
|
||||
function element_info($type) {
|
||||
// Use the advanced drupal_static() pattern, since this is called very often.
|
||||
|
@ -5775,6 +5778,21 @@ function element_info($type) {
|
|||
return isset($cache[$type]) ? $cache[$type] : array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a single property for the defined element type.
|
||||
*
|
||||
* @param $type
|
||||
* An element type as defined by hook_element_info().
|
||||
* @param $property_name
|
||||
* The property within the element type that should be returned.
|
||||
* @param $default
|
||||
* (Optional) The value to return if the element type does not specify a
|
||||
* value for the property. Defaults to NULL.
|
||||
*/
|
||||
function element_info_property($type, $property_name, $default = NULL) {
|
||||
return (($info = element_info($type)) && array_key_exists($property_name, $info)) ? $info[$property_name] : $default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function used by uasort to sort structured arrays by weight, without the property weight prefix.
|
||||
*/
|
||||
|
|
|
@ -1745,13 +1745,7 @@ function field_ui_field_edit_form($form, &$form_state, $instance) {
|
|||
$bundles = field_info_bundles();
|
||||
|
||||
// Create a form structure for the instance values.
|
||||
// @todo Fieldset element info needs to be merged in order to not skip the
|
||||
// default element definition for #pre_render. While the current default
|
||||
// value could simply be hard-coded, we'd possibly forget this location
|
||||
// when system_element_info() is updated. See also form_builder(). This
|
||||
// particular #pre_render, field_ui_field_edit_instance_pre_render(), might
|
||||
// as well be entirely needless though.
|
||||
$form['instance'] = array_merge(element_info('fieldset'), array(
|
||||
$form['instance'] = array(
|
||||
'#tree' => TRUE,
|
||||
'#type' => 'fieldset',
|
||||
'#title' => t('%type settings', array('%type' => $bundles[$entity_type][$bundle]['label'])),
|
||||
|
@ -1759,8 +1753,10 @@ function field_ui_field_edit_form($form, &$form_state, $instance) {
|
|||
'%field' => $instance['label'],
|
||||
'%type' => $bundles[$entity_type][$bundle]['label'],
|
||||
)),
|
||||
'#pre_render' => array('field_ui_field_edit_instance_pre_render'),
|
||||
));
|
||||
// Ensure field_ui_field_edit_instance_pre_render() gets called in addition
|
||||
// to, not instead of, the #pre_render function(s) needed by all fieldsets.
|
||||
'#pre_render' => array_merge(array('field_ui_field_edit_instance_pre_render'), element_info_property('fieldset', '#pre_render', array())),
|
||||
);
|
||||
|
||||
// Build the non-configurable instance values.
|
||||
$form['instance']['field_name'] = array(
|
||||
|
|
Loading…
Reference in New Issue