/** * Marshall a PrintedVariable object into a DOMElement object. * * @param \qtism\data\QtiComponent $component A PrintedVariable object. * @return \DOMElement The according DOMElement object. * @throws \qtism\data\storage\xml\marshalling\MarshallingException */ protected function marshall(QtiComponent $component) { $element = self::getDOMCradle()->createElement('printedVariable'); $version = $this->getVersion(); self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier()); self::setDOMElementAttribute($element, 'base', $component->getBase()); if (Version::compare($version, '2.1.0', '>=') === true) { self::setDOMElementAttribute($element, 'powerForm', $component->mustPowerForm()); self::setDOMElementAttribute($element, 'delimiter', $component->getDelimiter()); self::setDOMElementAttribute($element, 'mappingIndicator', $component->getMappingIndicator()); } if ($component->hasFormat() === true) { self::setDOMElementAttribute($element, 'format', $component->getFormat()); } if ($component->hasIndex() === true) { self::setDOMElementAttribute($element, 'index', $component->getIndex()); } if ($component->hasField() === true) { self::setDOMElementAttribute($element, 'field', $component->getField()); } if ($component->hasXmlBase() === true) { self::setXmlBase($element, $component->getXmlBase()); } $this->fillElement($element, $component); return $element; }
/** * @see \qtism\runtime\rendering\markup\xhtml\AbstractXhtmlRenderer::appendChildren() */ protected function appendChildren(DOMDocumentFragment $fragment, QtiComponent $component, $base = '') { $renderingEngine = $this->getRenderingEngine(); if ($renderingEngine !== null) { switch ($renderingEngine->getPrintedVariablePolicy()) { case AbstractMarkupRenderingEngine::CONTEXT_AWARE: $value = Utils::printVariable($this->getRenderingEngine()->getState(), $component->getIdentifier(), $component->getFormat(), $component->mustPowerForm(), $component->getBase(), $component->getIndex(), $component->getDelimiter(), $component->getField(), $component->getMappingIndicator()); $fragment->firstChild->appendChild($fragment->ownerDocument->createTextNode($value)); break; case AbstractMarkupRenderingEngine::TEMPLATE_ORIENTED: $base = $component->getBase(); $index = $component->getIndex(); $params = array('$' . $renderingEngine->getStateName(), PhpUtils::doubleQuotedPhpString($component->getIdentifier()), PhpUtils::doubleQuotedPhpString($component->getFormat()), $component->mustPowerForm() === true ? 'true' : 'false', is_int($base) === true ? $base : PhpUtils::doubleQuotedPhpString($base), is_int($index) === true ? $index : PhpUtils::doubleQuotedPhpString($index), PhpUtils::doubleQuotedPhpString($component->getDelimiter()), PhpUtils::doubleQuotedPhpString($component->getField()), PhpUtils::doubleQuotedPhpString($component->getMappingIndicator())); $value = " qtism-printVariable(" . implode(', ', $params) . ") "; $fragment->firstChild->appendChild($fragment->ownerDocument->createComment($value)); break; } } }