00001 <?php 00026 require_once "ZendX/JQuery/View/Helper/UiWidget.php"; 00027 00037 class ZendX_JQuery_View_Helper_TabContainer extends ZendX_JQuery_View_Helper_UiWidget 00038 { 00044 protected $_tabs = array(); 00045 00055 public function addPane($id, $name, $content, array $options=array()) 00056 { 00057 if(!isset($this->_tabs[$id])) { 00058 $this->_tabs[$id] = array(); 00059 } 00060 if(strlen($name) == 0 && isset($options['title'])) { 00061 $name = $options['title']; 00062 } 00063 00064 $this->_tabs[$id][] = array('name' => $name, 'content' => $content, 'options' => $options); 00065 return $this; 00066 } 00067 00081 public function tabContainer($id=null, $params=array(), $attribs=array()) 00082 { 00083 if(func_num_args() === 0) { 00084 return $this; 00085 } 00086 00087 if(!isset($attribs['id'])) { 00088 $attribs['id'] = $id; 00089 } 00090 00091 $content = ""; 00092 if(isset($this->_tabs[$id])) { 00093 $list = '<ul class="ui-tabs-nav">'.PHP_EOL; 00094 $html = ''; 00095 $fragment_counter = 1; 00096 foreach($this->_tabs[$id] AS $k => $v) { 00097 $frag_name = sprintf('%s-frag-%d', $attribs['id'], $fragment_counter++); 00098 $opts = $v['options']; 00099 if(isset($opts['contentUrl'])) { 00100 $list .= '<li class="ui-tabs-nav-item"><a href="'.$opts['contentUrl'].'"><span>'.$v['name'].'</span></a></li>'.PHP_EOL; 00101 } else { 00102 $list .= '<li class="ui-tabs-nav-item"><a href="#'.$frag_name.'"><span>'.$v['name'].'</span></a></li>'.PHP_EOL; 00103 $html .= '<div id="'.$frag_name.'" class="ui-tabs-panel">'.$v['content'].'</div>'.PHP_EOL; 00104 } 00105 } 00106 $list .= '</ul>'.PHP_EOL; 00107 00108 $content = $list.$html; 00109 unset($this->_tabs[$id]); 00110 } 00111 00112 if(count($params)) { 00113 $params = ZendX_JQuery::encodeJson($params); 00114 } else { 00115 $params = '{}'; 00116 } 00117 00118 $js = sprintf('%s("#%s").tabs(%s);', 00119 ZendX_JQuery_View_Helper_JQuery::getJQueryHandler(), 00120 $attribs['id'], 00121 $params 00122 ); 00123 $this->jquery->addOnLoad($js); 00124 00125 $html = '<div' 00126 . $this->_htmlAttribs($attribs) 00127 . '>'.PHP_EOL 00128 . $content 00129 . '</div>'.PHP_EOL; 00130 return $html; 00131 } 00132 }