protected function configureSubProperty($component, $name, $value)
{
if (is_array($value)) {
switch ($value[0]) {
case self::CONFIG_DATABIND:
// databinding
$component->bindProperty($name, $value[1]);
break;
case self::CONFIG_EXPRESSION:
// expression
if ($component instanceof TControl) {
$component->autoBindProperty($name, $value[1]);
} else {
$component->setSubProperty($name, $this->_tplControl->evaluateExpression($value[1]));
}
break;
case self::CONFIG_TEMPLATE:
$component->setSubProperty($name, $value[1]);
break;
case self::CONFIG_ASSET:
// asset URL
$url = $this->publishFilePath($this->_contextPath . DIRECTORY_SEPARATOR . $value[1]);
$component->setSubProperty($name, $url);
break;
case self::CONFIG_PARAMETER:
// application parameter
$component->setSubProperty($name, $this->getApplication()->getParameters()->itemAt($value[1]));
break;
case self::CONFIG_LOCALIZATION:
$component->setSubProperty($name, Prado::localize($value[1]));
break;
default:
// an error if reaching here
throw new TConfigurationException('template_tag_unexpected', $name, $value[1]);
break;
}
} else {
$component->setSubProperty($name, $value);
}
}