/**
  * Marshall a HotspotChoice/AssociableHotspot object into a DOMElement object.
  * 
  * @param QtiComponent $component A HotspotChoice/AssociableHotspot object.
  * @return DOMElement The according DOMElement object.
  * @throws MarshallingException
  */
 protected function marshall(QtiComponent $component)
 {
     $element = self::getDOMCradle()->createElement($component->getQtiClassName());
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     self::setDOMElementAttribute($element, 'shape', Shape::getNameByConstant($component->getShape()));
     self::setDOMElementAttribute($element, 'coords', $component->getCoords()->__toString());
     if ($component->isFixed() === true) {
         self::setDOMElementAttribute($element, 'fixed', true);
     }
     if ($component->hasTemplateIdentifier() === true) {
         self::setDOMElementAttribute($element, 'templateIdentifier', $component->getTemplateIdentifier());
     }
     if ($component->getShowHide() === ShowHide::HIDE) {
         self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant($component->getShowHide()));
     }
     if ($component->hasHotspotLabel() === true) {
         self::setDOMElementAttribute($element, 'hotspotLabel', $component->getHotspotLabel());
     }
     if ($component instanceof AssociableHotspot) {
         self::setDOMElementAttribute($element, 'matchMax', $component->getMatchMax());
         if ($component->getMatchMin() !== 0) {
             self::setDOMElementAttribute($element, 'matchMin', $component->getMatchMin());
         }
     }
     self::fillElement($element, $component);
     return $element;
 }
Ejemplo n.º 2
0
 /**
  * Marshall a Gap object into a DOMElement object.
  *
  * @param \qtism\data\QtiComponent $component A Gap object.
  * @return \DOMElement The according DOMElement object.
  * @throws \qtism\data\storage\xml\marshalling\MarshallingException
  */
 protected function marshall(QtiComponent $component)
 {
     $version = $this->getVersion();
     $element = self::getDOMCradle()->createElement('gap');
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     if ($component->isFixed() === true) {
         self::setDOMElementAttribute($element, 'fixed', true);
     }
     if (Version::compare($version, '2.1.0', '>=') === true && $component->hasTemplateIdentifier() === true) {
         self::setDOMElementAttribute($element, 'templateIdentifier', $component->getTemplateIdentifier());
     }
     if (Version::compare($version, '2.1.0', '>=') === true && $component->getShowHide() === ShowHide::HIDE) {
         self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant(ShowHide::HIDE));
     }
     if (Version::compare($version, '2.1.0', '>=') === true && $component->isRequired() === true) {
         self::setDOMElementAttribute($element, 'required', true);
     }
     if (Version::compare($version, '2.1.0', '<') === true) {
         $matchGroup = $component->getMatchGroup();
         if (count($matchGroup) > 0) {
             self::setDOMElementAttribute($element, 'matchGroup', implode(' ', $matchGroup->getArrayCopy()));
         }
     }
     $this->fillElement($element, $component);
     return $element;
 }
Ejemplo n.º 3
0
 /**
  * Marshall a TestFeedbackRef object to its XML counterpart.
  *
  * @param \qtism\data\QtiComponent $component
  * @return \DOMElement
  */
 public function marshall(QtiComponent $component)
 {
     $element = self::getDOMCradle()->createElement('testFeedbackRef');
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     self::setDOMElementAttribute($element, 'outcomeIdentifier', $component->getOutcomeIdentifier());
     self::setDOMElementAttribute($element, 'access', TestFeedbackAccess::getNameByConstant($component->getAccess()));
     self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant($component->getShowHide()));
     self::setDOMElementAttribute($element, 'href', $component->getHref());
     return $element;
 }
 protected function appendAttributes(DOMDocumentFragment $fragment, QtiComponent $component, $base = '')
 {
     parent::appendAttributes($fragment, $component, $base);
     $this->additionalClass('qti-feedbackElement');
     $fragment->firstChild->setAttribute('data-outcome-identifier', $component->getOutcomeIdentifier());
     $fragment->firstChild->setAttribute('data-show-hide', ShowHide::getNameByConstant($component->getShowHide()));
     $fragment->firstChild->setAttribute('data-identifier', $component->getIdentifier());
     if ($this->getRenderingEngine()->getFeedbackShowHidePolicy() === XhtmlRenderingEngine::CONTEXT_STATIC) {
         $this->additionalClass($component->getShowHide() === ShowHide::SHOW ? 'qti-hide' : 'qti-show');
     }
 }
 /**
  * Marshall a ModalFeedbackRule object to its XML counterpart.
  *
  * @param \qtism\data\QtiComponent $component
  * @return \DOMElement
  */
 public function marshall(QtiComponent $component)
 {
     $element = self::getDOMCradle()->createElement('modalFeedbackRule');
     self::setDOMElementAttribute($element, 'outcomeIdentifier', $component->getOutcomeIdentifier());
     self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant($component->getShowHide()));
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     if ($component->hasTitle() === true) {
         self::setDOMElementAttribute($element, 'title', $component->getTitle());
     }
     return $element;
 }
 protected function marshallChildrenKnown(QtiComponent $component, array $elements)
 {
     $element = self::getDOMCradle()->createElement($component->getQtiClassName());
     self::setDOMElementAttribute($element, 'outcomeIdentifier', $component->getOutcomeIdentifier());
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant($component->getShowHide()));
     if ($component->hasTitle() === true) {
         self::setDOMElementAttribute($element, 'title', $component->getTitle());
     }
     foreach ($elements as $e) {
         $element->appendChild($e);
     }
     return $element;
 }
 protected function marshallChildrenKnown(QtiComponent $component, array $elements)
 {
     $element = self::getDOMCradle()->createElement($component->getQtiClassName());
     self::fillElement($element, $component);
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     if ($component->isFixed() === true) {
         self::setDOMElementAttribute($element, 'fixed', true);
     }
     if ($component->hasTemplateIdentifier() === true) {
         self::setDOMElementAttribute($element, 'templateIdentifier', $component->getTemplateIdentifier());
     }
     if ($component->getShowHide() !== ShowHide::SHOW) {
         self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant(ShowHide::HIDE));
     }
     foreach ($elements as $e) {
         $element->appendChild($e);
     }
     return $element;
 }
Ejemplo n.º 8
0
 /**
  * Marshall a HotspotChoice/AssociableHotspot object into a DOMElement object.
  *
  * @param \qtism\data\QtiComponent $component A HotspotChoice/AssociableHotspot object.
  * @return \DOMElement The according DOMElement object.
  * @throws \qtism\data\storage\xml\marshalling\MarshallingException
  */
 protected function marshall(QtiComponent $component)
 {
     $version = $this->getVersion();
     $element = self::getDOMCradle()->createElement($component->getQtiClassName());
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     self::setDOMElementAttribute($element, 'shape', QtiShape::getNameByConstant($component->getShape()));
     self::setDOMElementAttribute($element, 'coords', $component->getCoords()->__toString());
     if ($component->isFixed() === true) {
         self::setDOMElementAttribute($element, 'fixed', true);
     }
     if (Version::compare($version, '2.1.0', '>=') === true && $component->hasTemplateIdentifier() === true) {
         self::setDOMElementAttribute($element, 'templateIdentifier', $component->getTemplateIdentifier());
     }
     if (Version::compare($version, '2.1.0', '>=') === true && $component->getShowHide() === ShowHide::HIDE) {
         self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant($component->getShowHide()));
     }
     if ($component->hasHotspotLabel() === true) {
         self::setDOMElementAttribute($element, 'hotspotLabel', $component->getHotspotLabel());
     }
     if ($component instanceof AssociableHotspot) {
         if (Version::compare($version, '2.1.0', '<') === true) {
             $matchGroup = $component->getMatchGroup();
             if (count($matchGroup) > 0) {
                 self::setDOMElementAttribute($element, 'matchGroup', implode(' ', $matchGroup->getArrayCopy()));
             }
         }
         if (Version::compare($version, '2.1.0', '>=') === true) {
             if ($component->getMatchMin() !== 0) {
                 self::setDOMElementAttribute($element, 'matchMin', $component->getMatchMin());
             }
         }
     }
     if ($component instanceof AssociableHotspot) {
         self::setDOMElementAttribute($element, 'matchMax', $component->getMatchMax());
     }
     $this->fillElement($element, $component);
     return $element;
 }
Ejemplo n.º 9
0
 /**
  * @see \qtism\data\storage\xml\marshalling\RecursiveMarshaller::marshallChildrenKnown()
  */
 protected function marshallChildrenKnown(QtiComponent $component, array $elements)
 {
     $version = $this->getVersion();
     $element = self::getDOMCradle()->createElement($component->getQtiClassName());
     $this->fillElement($element, $component);
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     if ($component->isFixed() === true) {
         self::setDOMElementAttribute($element, 'fixed', true);
     }
     if (Version::compare($version, '2.1.0', '>=') === true && $component->hasTemplateIdentifier() === true) {
         self::setDOMElementAttribute($element, 'templateIdentifier', $component->getTemplateIdentifier());
     }
     if (Version::compare($version, '2.1.0', '>=') === true && $component->getShowHide() !== ShowHide::SHOW) {
         self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant(ShowHide::HIDE));
     }
     foreach ($elements as $e) {
         if (Version::compare($version, '2.1.0', '>=') || Version::compare($version, '2.1.0', '<') && $e instanceof DOMCharacterData) {
             $element->appendChild($e);
         }
     }
     return $element;
 }
Ejemplo n.º 10
0
 /**
  * @see \qtism\data\storage\xml\marshalling\RecursiveMarshaller::marshallChildrenKnown()
  */
 protected function marshallChildrenKnown(QtiComponent $component, array $elements)
 {
     $version = $this->getVersion();
     $element = self::getDOMCradle()->createElement($component->getQtiClassName());
     $this->fillElement($element, $component);
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     self::setDOMElementAttribute($element, 'matchMax', $component->getMatchMax());
     if (Version::compare($version, '2.1.0', '>=') === true && $component->getMatchMin() !== 0) {
         self::setDOMElementAttribute($element, 'matchMin', $matchMin);
     }
     if ($component->isFixed() === true) {
         self::setDOMElementAttribute($element, 'fixed', true);
     }
     if (Version::compare($version, '2.1.0', '>=') === true && $component->hasTemplateIdentifier() === true) {
         self::setDOMElementAttribute($element, 'templateIdentifier', $component->getTemplateIdentifier());
     }
     if (Version::compare($version, '2.1.0', '>=') === true && $component->getShowHide() !== ShowHide::SHOW) {
         self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant(ShowHide::HIDE));
     }
     if ($element->localName === 'gapImg' && $component->hasObjectLabel() === true) {
         self::setDOMElementAttribute($element, 'objectLabel', $component->getObjectLabel());
     }
     foreach ($elements as $e) {
         if ($element->localName === 'gapImg') {
             $element->appendChild($e);
         } else {
             // 'gapText'...
             if (Version::compare($version, '2.1.0', '>=') || Version::compare($version, '2.1.0', '<') && $e instanceof DOMCharacterData) {
                 // In QTI 2.0, only plain text is allowed...
                 $element->appendChild($e);
             }
         }
     }
     if (Version::compare($version, '2.1.0', '<') === true) {
         $matchGroup = $component->getMatchGroup();
         if (count($matchGroup) > 0) {
             self::setDOMElementAttribute($element, 'matchGroup', implode(' ', $matchGroup->getArrayCopy()));
         }
     }
     return $element;
 }
 /**
  * @see \qtism\data\storage\xml\marshalling\RecursiveMarshaller::marshallChildrenKnown()
  */
 protected function marshallChildrenKnown(QtiComponent $component, array $elements)
 {
     $version = $this->getVersion();
     $element = self::getDOMCradle()->createElement($component->getQtiClassName());
     $this->fillElement($element, $component);
     self::setDOMElementAttribute($element, 'identifier', $component->getIdentifier());
     self::setDOMElementAttribute($element, 'matchMax', $component->getMatchMax());
     if ($component->isFixed() === true) {
         self::setDOMElementAttribute($element, 'fixed', true);
     }
     if ($component->hasTemplateIdentifier() === true && Version::compare($version, '2.1.0', '>=') === true) {
         self::setDOMElementAttribute($element, 'templateIdentifier', $component->getTemplateIdentifier());
     }
     if ($component->getShowHide() !== ShowHide::SHOW && Version::compare($version, '2.1.0', '>=') === true) {
         self::setDOMElementAttribute($element, 'showHide', ShowHide::getNameByConstant(ShowHide::HIDE));
     }
     if ($component->getMatchMin() !== 0 && Version::compare($version, '2.1.0', '>=') === true) {
         self::setDOMElementAttribute($element, 'matchMin', $component->getMatchMin());
     }
     if (Version::compare($version, '2.1.0', '<') === true) {
         $matchGroup = $component->getMatchGroup();
         if (count($matchGroup) > 0) {
             self::setDOMElementAttribute($element, 'matchGroup', implode(' ', $matchGroup->getArrayCopy()));
         }
     }
     foreach ($elements as $e) {
         $element->appendChild($e);
     }
     return $element;
 }