00001 <?PHP
00026 class HTMLTree extends MetaObject implements iUIControl
00027 {
00028 protected $m_NodesXml = null;
00029
00036 function __construct(&$xmlArr)
00037 {
00038 $this->readMetadata($xmlArr);
00039 }
00040
00046 protected function readMetadata(&$xmlArr)
00047 {
00048 $this->m_Name = $xmlArr["TREE"]["ATTRIBUTES"]["NAME"];
00049 $this->m_Package = $xmlArr["TREE"]["ATTRIBUTES"]["PACKAGE"];
00050 $this->m_Class = $xmlArr["TREE"]["ATTRIBUTES"]["CLASS"];
00051
00052 $this->m_NodesXml = $xmlArr["TREE"]["NODE"];
00053 }
00054
00060 public function render()
00061 {
00062
00063 $sHTML = "<script language=\"JavaScript\">\n".
00064 " minus = new Image();\n minus.src = \"".Resource::getImageUrl()."/minus.gif\";\n".
00065 " plus = new Image();\n plus.src = \"".Resource::getImageUrl()."/plus.gif\";\n".
00066 "</script>\n";
00067
00068
00069 $sHTML .= "<ul class='expanded'>\n";
00070 $sHTML .= $this->renderNodeItems($this->m_NodesXml);
00071 $sHTML .= "</ul>";
00072 return $sHTML;
00073 }
00074
00080 protected function renderNodeItems(&$nodeItemArray)
00081 {
00082 $sHTML = "";
00083 if (isset($nodeItemArray["ATTRIBUTES"]))
00084 {
00085 $sHTML .= $this->renderSingleNodeItem($nodeItemArray);
00086 }
00087 else
00088 {
00089 foreach ($nodeItemArray as $nodeItem)
00090 {
00091 $sHTML .= $this->renderSingleNodeItem($nodeItem);
00092 }
00093 }
00094 return $sHTML;
00095 }
00096
00103 protected function renderSingleNodeItem(&$nodeItem)
00104 {
00105 $url = $nodeItem["ATTRIBUTES"]["URL"];
00106 $caption = $this->translate($nodeItem["ATTRIBUTES"]["CAPTION"]);
00107 $target = $nodeItem["ATTRIBUTES"]["TARGET"];
00108
00109 if ($nodeItem["NODE"])
00110 $image = "<img src='".Resource::getImageUrl()."/plus.gif' class='collapsed' onclick='mouseClickHandler(this)'>";
00111 else
00112 $image = "<img src='".Resource::getImageUrl()."/topic.gif'>";
00113
00114 if ($target)
00115 if ($url)
00116 $sHTML .= "<li class='tree'>$image <a href=\"".$url."\" target='$target'>".$caption."</a>";
00117 else
00118 $sHTML .= "<li class='tree'>$image $caption";
00119 else
00120 if ($url)
00121 $sHTML .= "<li class='tree'>$image <a href=\"".$url."\">".$caption."</a>";
00122 else
00123 $sHTML .= "<li class='tree'>$image $caption";
00124 if ($nodeItem["NODE"])
00125 {
00126 $sHTML .= "\n<ul class='collapsed'>\n";
00127 $sHTML .= $this->renderNodeItems($nodeItem["NODE"]);
00128 $sHTML .= "</ul>";
00129 }
00130 $sHTML .= "</li>\n";
00131 return $sHTML;
00132 }
00133
00139 public function rerender()
00140 {
00141 return $this->render();
00142 }
00143
00144 protected function translate($caption)
00145 {
00146 $module = $this->getModuleName($this->m_Name);
00147 return I18n::t($caption, $this->getTransKey(caption), $module);
00148 }
00149
00150 protected function getTransKey($name)
00151 {
00152 $shortFormName = substr($this->m_Name,intval(strrpos($this->m_Name,'.'))+1);
00153 return strtoupper($shortFormName.'_'.$name);
00154 }
00155 }
00156
00157 ?>