<?php /** * PradoVTMDocument class * * @author Stanislav Yordanov <stanprog[at]stanprog.com> * @author Qiang Xue <qiang.xue@gmail.com> */ class PradoVTMDocument { private $_document; private $_attributes; public function __construct($controlName) { $this->_document = new DOMDocument('1.0', 'utf-8'); $this->prepareDocument($controlName); } protected function prepareDocument($controlName) { $this->_document->formatOutput = true; //--- add <tag> $tag = $this->_document->createElement('tag'); $tag->setAttribute('name',$controlName); $tag->setAttribute('casesensitive','yes'); $this->_document->appendChild($tag); //--- add <tagformat> $tagFormat = $this->_document->createElement('tagformat'); $tagFormat->setAttribute('nlbeforetag','1'); $tagFormat->setAttribute('nlaftertag','1'); $tagFormat->setAttribute('indentcontents','yes'); $tag->appendChild($tagFormat); //--- add <tagdialog file="Control.htm" /> //$tagDialog = $this->_document->createElement('tagdialog'); //$tagDialog->setAttribute('file',$controlName.'.htm'); //$tag->appendChild($tagDialog); $this->_attributes = $this->_document->createElement('attributes'); $tag->appendChild($this->_attributes); } public function getDocument() { return $this->_document; } public function addAttribute($attribName, $attribType) { //--- add <attrib> $attrib = $this->_document->createElement('attrib'); $attrib->setAttribute('name',$attribName); if (is_array($attribType)) { $attrib->setAttribute('type','Enumerated'); foreach ($attribType as $value) { $option = $this->_document->createElement('attriboption'); $option->setAttribute('value',$value); $option->setAttribute('caption',''); $attrib->appendChild($option); } } else if($attribType!=='') { $attrib->setAttribute('type',$attribType); } $attrib->setAttribute('casesensitive','yes'); $this->_attributes->appendChild($attrib); } public function addEvent($eventName) { //--- add <attrib> $this->addAttribute($eventName,''); //--- add <event> $event = $this->_document->createElement('event'); $event->setAttribute('name',$eventName); $this->_attributes->appendChild($event); } public function getXML() { return $this->_document->saveXML(); } } /** * PradoMXIDocument class * * @author Stanislav Yordanov <stanprog@stanprog.com> * @author Qiang Xue <qiang.xue@gmail.com> */ class PradoMXIDocument { private $_tagLibraryElement; private $_filesElement; private $_document; public function __construct($version) { $this->_document = new DOMDocument('1.0', 'utf-8'); $this->prepareDocument($version); } protected function prepareDocument($version) { $this->_document->formatOutput = true; //--- add root element $rootElement = $this->_document->createElement('macromedia-extension'); $rootElement->setAttribute('name','PRADO Taglib'); $rootElement->setAttribute('version',$version); $rootElement->setAttribute('type','Suite'); $rootElement->setAttribute('requires-restart','true'); $this->_document->appendChild($rootElement); //--- add <author> $element = $this->_document->createElement('author'); $element->setAttribute('name','Stanislav Yordanov, Qiang Xue'); $rootElement->appendChild($element); $time = date('F j, Y, h:i:s a',time()); //--- add <description> $description = <<<EOD PRADO $version Tag Library Authors: Stanislav Yordanov <stanprog@stanprog.com> and Qiang Xue <qiang.xue@gmail.com> Time: $time Requirement: Macromedia Dreamweaver MX/MX 2004/8.0 or above Description: This suite adds PRADO tag library. The tag library contains PRADO component tags, properties and events that are commonly used on PRADO templates. EOD; $element = $this->_document->createElement('description'); $element->appendChild($this->_document->createCDATASection($description)); $rootElement->appendChild($element); //--- add <products> $productsElement = $this->_document->createElement('products'); $rootElement->appendChild($productsElement); //--- add <product> $product = $this->_document->createElement('product'); $product->setAttribute('name','Dreamweaver'); $product->setAttribute('version','6'); $product->setAttribute('primary','false'); $productsElement->appendChild($product); //--- add <ui-access> $element = $this->_document->createElement('ui-access'); $element->appendChild($this->_document->createCDATASection("PRADO")); $rootElement->appendChild($element); //--- add <files> $this->_filesElement = $this->_document->createElement('files'); $rootElement->appendChild($this->_filesElement); //--- add <configuration-changes> $configChangeElement = $this->_document->createElement('configuration-changes'); $rootElement->appendChild($configChangeElement); //--- add <taglibrary-changes> $tagLibChangeElement = $this->_document->createElement('taglibrary-changes'); $configChangeElement->appendChild($tagLibChangeElement); //--- add <taglibrary-insert> $tagLibInsertElement = $this->_document->createElement('taglibrary-insert'); $tagLibChangeElement->appendChild($tagLibInsertElement); //--- add <taglibrary> $this->_tagLibraryElement = $element = $this->_document->createElement('taglibrary'); $element->setAttribute('doctypes','HTML,DWTemplate'); $element->setAttribute('id','DWTagLibrary_PRADO_tags'); $element->setAttribute('name','PRADO tags'); $element->setAttribute('prefix','<com:'); $element->setAttribute('tagchooser','PRADO/TagChooser.xml'); $tagLibInsertElement->appendChild($element); $element = $this->_document->createElement('file'); $element->setAttribute('name','Configuration/TagLibraries/PRADO/TagChooser.xml'); $element->setAttribute('destination','$dreamweaver/Configuration/TagLibraries/PRADO/TagChooser.xml'); $this->_filesElement->appendChild($element); } public function addTag($tagName) { $element = $this->_document->createElement('file'); $element->setAttribute('name','Configuration/TagLibraries/PRADO/'.$tagName.'.vtm'); $element->setAttribute('destination','$dreamweaver/Configuration/TagLibraries/PRADO/'.$tagName.'.vtm'); $this->_filesElement->appendChild($element); $element = $this->_document->createElement('tagref'); $element->setAttribute('file','PRADO/'.$tagName.'.vtm'); $element->setAttribute('name',$tagName); $this->_tagLibraryElement->appendChild($element); } public function getDocument() { return $this->_document; } public function getXML() { return $this->_document->saveXML(); } } /** * PradoTagChooser class * * @author Stanislav Yordanov <stanprog[at]stanprog.com> * @author Qiang Xue <qiang.xue@gmail.com> */ class PradoTagChooser { private $_document; private $_tclibrary; private $_category; public function __construct() { $this->_document = new DOMDocument('1.0', 'utf-8'); $this->prepareDocument(); } protected function prepareDocument() { $this->_document->standalone = true; $this->_document->formatOutput = true; $tclibrary = $this->_document->createElement('tclibrary'); $tclibrary->setAttribute('name','PRADO tags'); $tclibrary->setAttribute('desc','A collection of all PRADO tags.'); $tclibrary->setAttribute('reference','PRADO'); $this->_document->appendChild($tclibrary); $this->_category = $this->_document->createElement('category'); $this->_category->setAttribute('name','General'); $this->_category->setAttribute('icon','Configuration/TagLibraries/Icons/Elements.gif'); $tclibrary->appendChild($this->_category); } public function addElement($elementName) { $element = $this->_document->createElement('element'); $element->setAttribute('name','com:'.$elementName); $element->setAttribute('value','<com:'.$elementName.'>'); $element->setAttribute('reference','PRADO,COM:'.strtoupper($elementName)); $this->_category->appendChild($element); } public function getXML() { $this->_document->normalize(); /* $resultXML = $this->_document->saveXML(); $resultXML = str_replace('>','>',$resultXML); $resultXML = str_replace('<','<',$resultXML); return $resultXML; */ return $this->_document->saveXML(); } }