/** * Get the CSS style attribute for the specified HTML element * * @param string $which * @param array $additionalStyles An array of additional styles to merge * @return string */ public function getCss($which, $additionalStyles = null) { $output = ''; $rules = array(); // Merge in the form style settings switch ($which) { case 'input': case 'textarea': if (($backgroundColour = $this->_form->getElementBackgroundColour()) !== null) { $rules = array_merge($rules, $backgroundColour); } if (($borderColour = $this->_form->getElementBorderColour()) !== null) { $rules = array_merge($rules, $borderColour); } if (($textColour = $this->_form->getElementTextColour()) !== null) { $rules = array_merge($rules, $textColour); } break; case 'label': if (($textColour = $this->_form->getLabelTextColour()) !== null) { $rules = array_merge($rules, $textColour); } break; } // Merge in the global styles if (($globalStyle = $this->_form->getStyle($which)) !== null) { $rules = array_merge($rules, $globalStyle); } // Merge in the element styles if (($style = $this->getStyle($which)) !== null) { $rules = array_merge($rules, $style); } // Merge in extra element-specific styles $rules = $this->getExtraCss($which, $rules); // Merge in additional styles if (is_array($additionalStyles)) { foreach ($additionalStyles as $key => $value) { $additionalStyles[$key] = new CSSRule($key); $additionalStyles[$key]->addValue(array($value)); } $rules = array_merge($rules, $additionalStyles); } // Generate the style tag if we have any rules if (count($rules)) { $output = "style='"; foreach ($rules as $rule) { $output .= $rule->__toString(); } $output .= "'"; } return $output; }