/** * Sets PXE attributes on the IdmlElement object * @param IdmlElement $element * @param type $styleName */ public function setPxeAttributes(IdmlElement $element, $pxeTag, $pxeParents, $hashTag) { if ($this->shouldProcessElement($element)) { if (strlen($pxeTag) > 0) { if (strpos($pxeTag, '.') > 0) { $tagParts = explode('.', $pxeTag, 2); $tagName = $tagParts[0]; $className = $tagParts[1]; } else { $tagName = $pxeTag; $className = ""; } IdmlPxeHelper::setPxeTag($element, $tagName); if (strlen($className)) { IdmlPxeHelper::setPxeClass($element, $className); } IdmlPxeHelper::setPxeParents($element, $pxeParents); if (!is_null($hashTag)) { IdmlPxeHelper::setPxeHash($element, $hashTag); } } } }
/** * Overrides base class to determine if the content has pxe context assigned, and if so * process it accordingly. If the content element has a pxe tag (which would only be a span) then process the tag, * add the content, and close the tag.. otherwise just add the content normally * and let the pxe producer handle wrapping tags * @param IdmlContent $element * @param int $depth */ public function visitContent(IdmlContent $element, $depth = 0) { if (!$element->hasContent()) { //skip empty content tags return; } if (IdmlPxeHelper::hasPxeTag($element)) { $this->processElement($element, $depth); parent::visitContent($element, $depth); } elseif (IdmlPxeHelper::hasPxeParents($element)) { //get last parent and put this content inside it by assigning it $parents = IdmlPxeHelper::getPxeParents($element, true); if (count($parents) > 0) { $parts = explode('#', $parents[count($parents) - 1]); IdmlPxeHelper::setPxeTag($element, $parts[0]); IdmlPxeHelper::setPxeHash($element, $parts[1]); IdmlPxeHelper::setPxeParents($element, implode(' ', array_slice($parents, 0, count($parents) - 1))); $this->processElement($element, $depth); parent::visitContent($element, $depth); } } else { parent::visitContent($element, $depth); } }