function _uc_dropdown_attributes_kit_build in Dropdown Attributes 7
Same name and namespace in other branches
- 8 uc_dropdown_attributes.module \_uc_dropdown_attributes_kit_build()
Form build for product kits.
Callback for $form['#after_build'] for product kits. Renders the dependent attributes and stores the html as a Javascript array.
1 string reference to '_uc_dropdown_attributes_kit_build'
- uc_dropdown_attributes_form_alter in ./
uc_dropdown_attributes.module - Implements hook_form_alter().
File
- ./
uc_dropdown_attributes.module, line 410 - Show/hide attributes based on the values of other attributes.
Code
function _uc_dropdown_attributes_kit_build($form, &$form_state) {
foreach ($form['products'] as $key => $value) {
if (is_numeric($key)) {
$type = uc_dropdown_attributes_dependency_type($key);
switch ($type) {
case 'node':
$sql = 'SELECT aid, parent_aid, parent_values, required
FROM {uc_dropdown_attributes} WHERE nid=:nid';
$id = $key;
$attributes = db_query($sql, array(
':nid' => $key,
));
break;
case 'class':
$sql = 'SELECT aid, parent_aid, parent_values, required
FROM {uc_dropdown_classes} WHERE pcid=:pcid';
$pcid = uc_dropdown_attributes_get_type($key);
$id = $pcid;
$attributes = db_query($sql, array(
':pcid' => $pcid,
));
break;
default:
$attributes = array();
}
if (isset($form_state['triggering_element'])) {
$parents = $form_state['triggering_element']['#parents'];
$parent_aid = $parents[count($parents) - 1];
$parent_value = $form_state['triggering_element']['#value'];
uc_dropdown_attributes_remove_values($parent_aid, $parent_value, $id, $type, $form_state['values']['products'][$key]);
}
foreach ($attributes as $attribute) {
$aid = $attribute->aid;
$parent_aid = $attribute->parent_aid;
$parent_value = $form_state['values']['products'][$key]['attributes'][$parent_aid];
if ($parent_value) {
// A value has been entered in parent attribute.
$values = unserialize($attribute->parent_values);
if (array_key_exists($parent_value, $values)) {
// Show dependent attribute.
if ($attribute->required) {
$form['products'][$key]['attributes'][$aid]['#required'] = TRUE;
}
}
else {
// Hide dependent attribute.
$form['products'][$key]['attributes'][$aid]['#post_render'][] = 'uc_dropdown_attributes_post_render';
if ($form['products'][$key]['attributes'][$aid]['#required'] && $form['products'][$key]['attributes'][$aid]['#value'] != '') {
$form['products'][$key]['attributes'][$aid]['#value'] = '';
}
}
}
else {
$form['products'][$key]['attributes'][$aid]['#post_render'][] = 'uc_dropdown_attributes_post_render';
if ($form['products'][$key]['attributes'][$aid]['#required'] && $form['products'][$key]['attributes'][$aid]['#value'] != '') {
$form['products'][$key]['attributes'][$aid]['#value'] = '';
}
}
}
}
}
return $form;
}