diff options
author | xue <> | 2006-06-29 20:27:48 +0000 |
---|---|---|
committer | xue <> | 2006-06-29 20:27:48 +0000 |
commit | 5fe30fbe079f37443857e720550e939b7dd988e6 (patch) | |
tree | cf515202edc96c8f8a679a62d92f033066d2db79 /buildscripts/classtree/DWExtension.php | |
parent | 941925385f8aeb389cde29dc8b6831c3edb05283 (diff) |
Added Dreamweaver extension generator.
Diffstat (limited to 'buildscripts/classtree/DWExtension.php')
-rw-r--r-- | buildscripts/classtree/DWExtension.php | 255 |
1 files changed, 255 insertions, 0 deletions
diff --git a/buildscripts/classtree/DWExtension.php b/buildscripts/classtree/DWExtension.php new file mode 100644 index 00000000..f85f100d --- /dev/null +++ b/buildscripts/classtree/DWExtension.php @@ -0,0 +1,255 @@ +<?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();
+ }
+}
+?>
\ No newline at end of file |