--- uc_attribute.module +++ (clipboard) @@ -557,7 +557,7 @@ foreach ($data['attributes'] as $aid => $selected) { $attribute = $node->attributes[$aid]; // Only discrete options can affect the price of an item. - if ($attribute->display && count($attribute->options)) { + if (in_array($attribute->display, array(1, 2, 3)) && count($attribute->options)) { // There may be many selected options, or just one. foreach ((array)$selected as $oid) { if ($oid > 0) { @@ -568,7 +568,7 @@ } } else { - // Handle textfield attributes. + // Handle textfield and textarea attributes. $options[$index] = array( 'attribute' => _uc_attribute_get_name($attribute), 'oid' => 0, @@ -655,7 +655,7 @@ $options[$option->oid] .= $display_price; } - if (count($attribute->options) && $attribute->display > 0) { + if (count($attribute->options) && in_array($attribute->display, array(1, 2, 3))) { if ($attribute->required) { if ($attribute->display == 1) { $options = array('' => t('Please select')) + $options; @@ -683,7 +683,7 @@ } else { $form_attributes[$attribute->aid] = array( - '#type' => 'textfield', + '#type' => $attribute->display == 0 ? 'textfield' : 'textarea', '#description' => check_markup($attribute->description), '#default_value' => $attribute->required == FALSE ? $attribute->options[$attribute->default_option]->name : '', '#required' => $attribute->required, @@ -707,6 +707,7 @@ 1 => t('Select box'), 2 => t('Radio buttons'), 3 => t('Checkboxes'), + 4 => t('Text area (multiple rows)'), ); } @@ -719,7 +720,7 @@ * Array of attribute ids that have price affecting options. */ function uc_attribute_priced_attributes($nid) { - $attributes = db_query("SELECT DISTINCT (pa.aid) FROM {uc_product_attributes} AS pa INNER JOIN {uc_attribute_options} AS ao ON ao.aid = pa.aid INNER JOIN {uc_product_options} AS po ON (po.oid = ao.oid AND po.nid = pa.nid) WHERE pa.nid = %d AND po.price <> 0 AND pa.display <> 0", $nid); + $attributes = db_query("SELECT DISTINCT (pa.aid) FROM {uc_product_attributes} AS pa INNER JOIN {uc_attribute_options} AS ao ON ao.aid = pa.aid INNER JOIN {uc_product_options} AS po ON (po.oid = ao.oid AND po.nid = pa.nid) WHERE pa.nid = %d AND po.price <> 0 AND pa.display IN (1,2,3)", $nid); $aids = array(); while ($attribute = db_fetch_array($attributes)) { $aids[] = $attribute['aid'];