public function processElement($element, $depth) { if (IdmlPxeHelper::hasPxeParents($element) || IdmlPxeHelper::elementHasContent($element)) { $cssClassNames = array(); IdmlPxeHelper::setPxeParents($element, $this->verifyParentIds(IdmlPxeHelper::getPxeParents($element))); $tagName = IdmlPxeHelper::getPxeTag($element); if (IdmlPxeHelper::hasPxeClass($element)) { $tagName .= "." . IdmlPxeHelper::getPxeClass($element); } if (!is_object($this->pxeRules)) { $this->pxeRules = new PxeRules(); } if ($this->pxeRules->requiresAttribute($tagName, "id")) { $this->verifyElementId($element, true); } else { $this->verifyElementId($element); } if (strlen($element->idAttribute) > 0) { $element->attribs["id"] = $element->idAttribute; } $element->attribs['class'] = implode(' ', $cssClassNames); $strAttr = $this->getHTMLAttributesString($element, $element->attribs); if ($this->hasDivParent) { $this->addPageElement("<span {$strAttr}>", $depth); $element->idmlTag = "span"; } else { $this->addPageElement("<div {$strAttr}>", $depth); $element->idmlTag = "div"; $this->hasDivParent = true; } } else { $element->idmlTag = "(empty)"; } }
/** * Moves the element's pxe tag, class, and hash into the parents attribute and assigns * a new pxe tag to the element. The new pxe tag is pushed onto the parent stack * @param IdmlElement $element * @param string $newTag * @param string $newHash */ public function pushTagToElement(IdmlElement $element, $newTag, $newHash) { $currentTag = IdmlPxeHelper::getPxeTag($element); if (IdmlPxeHelper::hasPxeClass($element)) { $currentClass = IdmlPxeHelper::getPxeClass($element); if (strlen($currentClass)) { $currentTag .= "." . $currentClass; } } $currentHash = $element->attributes["data-pxe-hash"]; $parentList = IdmlPxeHelper::getPxeParents($element) . " " . $currentTag . "#" . $currentHash; if (strpos($newTag, ".")) { list($tagName, $tagClass) = explode(".", $newTag); } else { $tagName = $newTag; $tagClass = ""; } IdmlPxeHelper::setPxeTag($element, $tagName); IdmlPxeHelper::setPxeClass($element, $tagClass); $element->attributes["data-pxe-hash"] = $newHash; IdmlPxeHelper::setPxeParents($element, trim($parentList)); $this->pushParentTag($newTag, $newHash, $element); //Apply this change to all the child elements if (count($element->childrenElements) > 0) { $newChildParentList = $parentList . ' ' . IdmlPxeHelper::getFullPxeTag($element); foreach ($element->childrenElements as $child) { $this->updateElementParents($child, $parentList, $newChildParentList); } } }