PageRenderTime 44ms CodeModel.GetById 11ms RepoModel.GetById 1ms app.codeStats 0ms

/templates/ja_zeolite_ii/libs/menu/mega.class.php

http://vanphongphamdm.googlecode.com/
PHP | 234 lines | 206 code | 13 blank | 15 comment | 76 complexity | f741e9d3fbad5f37e0466544d7b968d2 MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.1, Apache-2.0
  1. <?php
  2. /*
  3. #------------------------------------------------------------------------
  4. T3 Framework for Joomla 1.5
  5. #------------------------------------------------------------------------
  6. #Copyright (C) 2004-2009 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
  7. #@license - GNU/GPL, http://www.gnu.org/copyleft/gpl.html
  8. #Author: J.O.O.M Solutions Co., Ltd
  9. #Websites: http://www.joomlart.com - http://www.joomlancers.com
  10. #------------------------------------------------------------------------
  11. */
  12. defined( '_VALID_MOS' ) or defined('_JEXEC') or die('Restricted access');
  13. if (!defined ('_JA_MEGA_MENU_CLASS')) {
  14. define ('_JA_MEGA_MENU_CLASS', 1);
  15. require_once (dirname(__FILE__).DS."base.class.php");
  16. class JAMenuMega extends JAMenuBase{
  17. function __construct (&$params) {
  18. $params->set('megamenu', 1);
  19. parent::__construct($params);
  20. }
  21. function beginMenu($startlevel=0, $endlevel = 10){
  22. echo "<div class=\"ja-megamenu\">\n";
  23. }
  24. function endMenu($startlevel=0, $endlevel = 10){
  25. //If rtl, not allow slide and fading effect
  26. $rtl = $this->getParam ('rtl');
  27. $animation = $this->_tmpl->getParam ('ja_menu-mega-animation', 'none');
  28. $duration = $this->_tmpl->getParam ('ja_menu-mega-duration', 300);
  29. $fade = 0;
  30. $slide = 0;
  31. if (!$rtl) {
  32. if (preg_match ('/slide/', $animation)) $slide = 1;
  33. if (preg_match ('/fade/', $animation)) $fade = 1;
  34. }
  35. echo "\n</div>";
  36. //Create menu
  37. ?>
  38. <script type="text/javascript">
  39. var megamenu = new jaMegaMenuMoo ('ja-mainnav', {
  40. 'bgopacity': 0,
  41. 'delayHide': 1000,
  42. 'slide': <?php echo $slide ?>,
  43. 'fading': <?php echo $fade ?>,
  44. 'direction':'down',
  45. 'action':'mouseover',
  46. 'tips': false,
  47. 'duration': <?php echo $duration ?>,
  48. 'hidestyle': 'fastwhenshow'
  49. });
  50. </script>
  51. <?php
  52. }
  53. function beginMenuItems($pid=0, $level=0, $return=false){
  54. if ($level) {
  55. if ($this->items[$pid]->megaparams->get('group')) {
  56. $data = "<div class=\"group-content\">";
  57. } else {
  58. $style = $this->getParam ('mega-style', 1);
  59. if (!method_exists($this, "beginMenuItems$style")) $style = 1; //default
  60. $data = call_user_func_array(array($this, "beginMenuItems$style"), array ($pid, $level, true));
  61. }
  62. if ($return) return $data; else echo $data;
  63. }
  64. }
  65. function endMenuItems($pid=0, $level=0, $return=false){
  66. if ($level) {
  67. if ($this->items[$pid]->megaparams->get('group')) {
  68. $data = "</div>";
  69. }else{
  70. $style = $this->getParam ('mega-style', 1);
  71. if (!method_exists($this, "endMenuItems$style")) $style = 1; //default
  72. $data = call_user_func_array(array($this, "endMenuItems$style"), array ($pid, $level, true));
  73. }
  74. if ($return) return $data; else echo $data;
  75. }
  76. }
  77. function beginSubMenuItems($pid=0, $level=0, $pos, $i, $return = false){
  78. $data = '';
  79. if (isset ($this->items[$pid]) && $level) {
  80. if ($this->items[$pid]->megaparams->get('group')) {
  81. }else {
  82. $colw = $this->items[$pid]->megaparams->get('colw'.($i+1), 0);
  83. if (!$colw) $colw = $this->items[$pid]->megaparams->get('colw', $this->getParam ('mega-colwidth',200));
  84. $style = $colw?" style=\"width: {$colw}px;\"":"";
  85. $data .= "<div class=\"megacol column".($i+1).($pos?" $pos":"")."\"$style>";
  86. }
  87. }
  88. if (@$this->children[$pid]) $data .= "<ul class=\"megamenu level$level\">";
  89. if ($return) return $data; else echo $data;
  90. }
  91. function endSubMenuItems($pid=0, $level=0, $return = false){
  92. $data = '';
  93. if (@$this->children[$pid]) $data .= "</ul>";
  94. if (isset ($this->items[$pid]) && $level) {
  95. if ($this->items[$pid]->megaparams->get('group')) {
  96. }else
  97. $data .= "</div>";
  98. }
  99. if ($return) return $data; else echo $data;
  100. }
  101. function beginSubMenuModules($item, $level=0, $pos, $i, $return = false){
  102. $data = '';
  103. if ($level) {
  104. if ($item->megaparams->get('group')) {
  105. }else {
  106. $colw = $item->megaparams->get('colw'.($i+1), 0);
  107. if (!$colw) $colw = $item->megaparams->get('colw', $this->getParam ('mega-colwidth',200));
  108. $style = $colw?" style=\"width: {$colw}px;\"":"";
  109. $data .= "<div class=\"megacol column".($i+1).($pos?" $pos":"")."\"$style>";
  110. }
  111. }
  112. if ($return) return $data; else echo $data;
  113. }
  114. function endSubMenuModules($item, $level=0, $return = false){
  115. $data = '';
  116. if ($level) {
  117. if ($item->megaparams->get('group')) {
  118. }else
  119. $data .= "</div>";
  120. }
  121. if ($return) return $data; else echo $data;
  122. }
  123. function genClass ($mitem, $level, $pos) {
  124. $iParams = new JParameter ( $mitem->params );
  125. $active = in_array($mitem->id, $this->open);
  126. $cls = "mega".($active?" active":"").($pos?" $pos":"");
  127. if (@$this->children[$mitem->id] || (isset($mitem->content) && $mitem->content)) {
  128. if ($mitem->megaparams->get('group')) $cls .= " group";
  129. else if ($level < $this->getParam('endlevel')) $cls .= " haschild";
  130. }
  131. if ($mitem->megaparams->get('class')) $cls .= " ".$mitem->megaparams->get('class');
  132. return $cls?"class=\"$cls\"":"";
  133. }
  134. function beginMenuItem($mitem=null, $level = 0, $pos = ''){
  135. $active = $this->genClass ($mitem, $level, $pos);
  136. echo "<li $active>";
  137. if ($mitem->megaparams->get('group')) echo "<div class=\"group\">";
  138. }
  139. function endMenuItem($mitem=null, $level = 0, $pos = ''){
  140. if ($mitem->megaparams->get('group')) echo "</div>";
  141. echo "</li>";
  142. }
  143. /*Sub nav style - 1 - basic (default)*/
  144. function beginMenuItems1($pid=0, $level=0, $return=false){
  145. $cols = $pid && $this->getParam('megamenu') && isset($this->items[$pid]->cols) && $this->items[$pid]->cols ? $this->items[$pid]->cols : 1;
  146. $width = $this->items[$pid]->megaparams->get('width', 0);
  147. if (!$width) {
  148. for ($col=0;$col<$cols;$col++) {
  149. $colw = $this->items[$pid]->megaparams->get('colw'.($col+1), 0);
  150. if (!$colw) $colw = $this->items[$pid]->megaparams->get('colw', $this->getParam ('mega-colwidth',200));
  151. $width += $colw;
  152. }
  153. }
  154. $style = $width?" style=\"width: {$width}px;\"":"";
  155. $right = $this->items[$pid]->megaparams->get('right') ? 'right':'';
  156. $data = "<div class=\"childcontent cols$cols $right\">\n";
  157. $data .= "<div class=\"childcontent-inner-wrap\">\n"; //Add wrapper
  158. $data .= "<div class=\"childcontent-inner clearfix\"$style>"; //Move width into inner
  159. if ($return) return $data; else echo $data;
  160. }
  161. function endMenuItems1($pid=0, $level=0, $return=false){
  162. $data = "</div>\n"; //Close of childcontent-inner
  163. $data .= "</div></div>"; //Close wrapper and childcontent
  164. if ($return) return $data; else echo $data;
  165. }
  166. /*Sub nav style - 2 - advanced*/
  167. function beginMenuItems2($pid=0, $level=0, $return=false){
  168. $cols = $pid && $this->getParam('megamenu') && isset($this->items[$pid]->cols) && $this->items[$pid]->cols ? $this->items[$pid]->cols : 1;
  169. $width = $this->items[$pid]->megaparams->get('width', 0);
  170. if (!$width) {
  171. for ($col=0;$col<$cols;$col++) {
  172. $colw = $this->items[$pid]->megaparams->get('colw'.($col+1), 0);
  173. if (!$colw) $colw = $this->items[$pid]->megaparams->get('colw', $this->getParam ('mega-colwidth',200));
  174. $width += $colw;
  175. }
  176. }
  177. $style = $width?" style=\"width: {$width}px;\"":"";
  178. $right = $this->items[$pid]->megaparams->get('right') ? 'right':'';
  179. $data = "<div class=\"childcontent cols$cols $right\">\n";
  180. $data .= "<div class=\"childcontent-inner-wrap\">\n"; //Add wrapper
  181. $data .= "<div class=\"l\"></div>\n"; //Left border
  182. $data .= "<div class=\"childcontent-inner clearfix\"$style>"; //Childcontent-inner - Move width into inner
  183. if ($return) return $data; else echo $data;
  184. }
  185. function endMenuItems2($pid=0, $level=0, $return=false){
  186. $data = "</div>\n"; //Close of childcontent-inner
  187. $data .= "<div class=\"r\" ></div>\n"; //Right border
  188. $data .= "</div></div>"; //Close wrapper and childcontent
  189. if ($return) return $data; else echo $data;
  190. }
  191. /*Sub nav style - 3 - complex*/
  192. function beginMenuItems3 ($pid=0, $level=0, $return=false){
  193. $cols = $pid && $this->getParam('megamenu') && isset($this->items[$pid]->cols) && $this->items[$pid]->cols ? $this->items[$pid]->cols : 1;
  194. $width = $this->items[$pid]->megaparams->get('width', 0);
  195. if (!$width) {
  196. for ($col=0;$col<$cols;$col++) {
  197. $colw = $this->items[$pid]->megaparams->get('colw'.($col+1), 0);
  198. if (!$colw) $colw = $this->items[$pid]->megaparams->get('colw', $this->getParam ('mega-colwidth',200));
  199. $width += $colw;
  200. }
  201. }
  202. $style = $width?" style=\"width: {$width}px;\"":"";
  203. $right = $this->items[$pid]->megaparams->get('right') ? 'right':'';
  204. $data = "<div class=\"childcontent cols$cols $right\">\n";
  205. $data .= "<div class=\"childcontent-inner-wrap\">\n"; //Add wrapper
  206. $data .= "<div class=\"top\" ><div class=\"tl\"></div><div class=\"tr\"></div></div>\n"; //Top
  207. $data .= "<div class=\"mid\">\n"; //Middle
  208. $data .= "<div class=\"ml\"></div>\n"; //Middle left
  209. $data .= "<div class=\"childcontent-inner clearfix\"$style>"; //Move width into inner
  210. if ($return) return $data; else echo $data;
  211. }
  212. function endMenuItems3($pid=0, $level=0, $return=false){
  213. $data = "</div>\n"; //Close of childcontent-inner
  214. $data .= "<div class=\"mr\"></div>\n"; //Middle right
  215. $data .= "</div>"; //Close Middle
  216. $data .= "<div class=\"bot\" ><div class=\"bl\"></div><div class=\"br\"></div></div>\n"; //Bottom
  217. $data .= "</div></div>"; //Close wrapper and childcontent
  218. if ($return) return $data; else echo $data;
  219. }
  220. }
  221. }