| [ Index ] |
PHP Cross Reference of Quick Form DataBase |
[Summary view] [Print] [Text view]
1 <?php 2 if (!defined('QFDB_SECURITY')) { 3 die("You can't access this file directly..."); 4 } 5 6 7 /** 8 * Graphics QFDB Object: Build a Drop Down Left Menu 9 * 10 * @author Everaldo Wanderlei Uavniczak <everaldouav [at] gmail.com> 11 * @since 0.5 12 * @package quickformdb 13 * @see http://www.qfdb.net/ 14 * @license BSD License <http://www.qfdb.net/bsd_license.txt> 15 * @todo Insert reference to maujor.com in this file 16 * @todo generate critical error in self::obj_debug() and document it 17 * @todo generate critical error if "is_array($qfdb->m['menu_matrix']) or variable don't exists 18 */ 19 20 21 22 class qfdbobj_dropdownleftmenu { 23 24 static function obj_struct(&$qfdb) 25 { 26 $qfdb->m['object'] = 'dropdownleftmenu'; 27 $qfdb->m['status'] = '12345'; 28 $qfdb->m['if'] = ''; 29 $qfdb->m['alias'] = ''; 30 31 $qfdb->m['menu_matrix'] = array(); 32 $qfdb->m['indent'] = $qfdb->get_indent(); 33 $qfdb->m['image'] = ''; 34 $qfdb->m['image_alt'] = 'Arrow'; 35 $qfdb->m['arrow'] = '→'; 36 $qfdb->m['id'] = 'qfdbobj_ddlm_primary-nav'; 37 38 $qfdb->m['object_properties'] = count($qfdb->m) +2; 39 } // end func 40 41 42 43 static function obj_html(&$qfdb) 44 { 45 // add a js func to qfdb js output var 46 if (!defined('QFDBOBJ_DROPDOWNLEFTMENU_JS')) { 47 $qfdb->add_output('jsall', 48 "// function of DropDownLeftmenu QFDB Object\n". 49 "function qfdbobj_ddlm_IEHoverPseudo() {\n". 50 $qfdb->i(1)."var navItems = document.getElementById(\"".$qfdb->m['id']."\").getElementsByTagName(\"li\");\n". 51 $qfdb->i(1)."for (var i=0; i<navItems.length; i++) {\n". 52 $qfdb->i(2)."if (navItems[i].className == \"menuparent\") {\n". 53 $qfdb->i(3)."navItems[i].onmouseover=function() { this.className += \" over\";}\n". 54 $qfdb->i(3)."navItems[i].onmouseout=function() { this.className = \"menuparent\"; }\n". 55 $qfdb->i(2)."}\n". 56 $qfdb->i(1)."}\n". 57 "} // end qfdbobj_ddlm_IEHoverPseudo()\n\n\n" 58 ); 59 $qfdb->add_output('jsonload', $qfdb->i(1)."qfdbobj_ddlm_IEHoverPseudo;\n"); 60 define('QFDBOBJ_DROPDOWNLEFTMENU_JS', true); 61 } 62 63 if (file_exists($qfdb->m['image'])) { 64 $qfdb->m['image'] = '<img class="ddlm_img" alt="'.$qfdb->m['image_alt'].'" src="'.$qfdb->m['image'].'" />'; 65 // style="float: right; border: 0; background: transparent;" 66 } else { 67 $qfdb->m['image'] = '<spam style="float: right; width: 10px;"/>'.$qfdb->m['arrow'].'</spam>'; 68 } 69 70 71 // make a object var 72 $object = "\n\n<ul id=\"".$qfdb->m['id']."\">\n"; 73 foreach ($GLOBALS[ $qfdb->m['menu_matrix'] ] as $value) { 74 $object .= self::print_menu($qfdb, $value, $qfdb->m['indent'], 0); 75 } 76 $object .= "\n</ul>\n\n"; 77 78 $qfdb->add_output('html', $object); 79 } // end func 80 81 82 static function obj_db(&$qfdb) 83 { 84 self::obj_html($qfdb); 85 } // end func 86 87 88 89 static function obj_debug(&$qfdb) 90 { 91 if (!isset($GLOBALS[ $qfdb->m['menu_matrix'] ])) { 92 // todo : define error message 93 return; 94 } elseif (!is_array($GLOBALS[ $qfdb->m['menu_matrix'] ])) { 95 // todo: define error message 96 return; 97 } 98 99 } // end func 100 101 102 103 static function obj_fixed(&$qfdb) 104 { 105 $qfdb->m['indent'] = intval($qfdb->m['indent']); 106 if ($qfdb->m['indent'] < 0 || $qfdb->m['indent'] > 16) { 107 $qfdb->m['indent'] = 2; 108 } 109 $aux = ''; 110 for ($i=0; $i<$qfdb->m['indent']; $i++) { 111 $aux .= ' '; 112 } 113 $qfdb->m['indent'] = $aux; 114 115 // image_alt 116 $qfdb->m['image_alt'] = str_replace('"', '"', $qfdb->m['image_alt']); 117 } // end func 118 119 120 static private function get_menu_link($value) 121 { 122 $menu_link = explode('|||', $value); 123 $menu_link[1] = (isset($menu_link[1])) ? trim($menu_link[1]) : '#'; 124 $menu_link[2] = (isset($menu_link[2]) && trim($menu_link[2])) ? ' '.trim($menu_link[2]).' ' : ''; 125 $menu_link[3] = (isset($menu_link[3]) && trim($menu_link[3])) ? ' '.trim($menu_link[3]).' ' : ''; 126 return $menu_link; 127 } // end func 128 129 130 static private function print_menu(&$qfdb, $menu, $indent='', $i=0) 131 { 132 133 $return = ''; 134 135 // Print the first level of menu (last index of matrix equal 0) 136 if (isset($menu[0]) && count($menu) == 1) { 137 $menu_link = self::get_menu_link($menu[0]); 138 $return .= "\n".$indent.'<li'.$menu_link[2].'><a href="'.trim($menu_link[1]).'">'.$menu_link[3].trim($menu_link[0])."</a></li>\n"; 139 } else { 140 $menu_link = self::get_menu_link($menu[0]); 141 $aux = ($i<1) ? "\n" : ''; 142 $return .= $aux.$indent.'<li class="menuparent"'.$menu_link[2].'><a href="'.trim($menu_link[1]).'">'.$qfdb->m['image'].$menu_link[3].trim($menu_link[0]).'</a>'; 143 $indent .= $qfdb->m['indent']; 144 } 145 146 unset($menu[0]); 147 148 // print the others level (last index of matrix great then 0) 149 if (is_array($menu) && count($menu) > 0) { 150 $return .= "\n".$indent."<ul>\n"; 151 foreach ($menu as $value) { 152 if (is_array($value)) { 153 $return .= self::print_menu($qfdb, $value, $indent.$qfdb->m['indent'], ++$i); 154 } else { 155 $menu_link = self::get_menu_link($value); 156 $return .= $indent.$qfdb->m['indent'].'<li'.$menu_link[2].'><a href="'.trim(str_replace('&', '&', $menu_link[1])).'">'.$menu_link[3].trim($menu_link[0])."</a></li>\n"; 157 } 158 } 159 $aux = -1 * intval(strlen($qfdb->m['indent'])); 160 $return .= $indent."</ul>\n".substr($indent, 0, $aux)."</li>\n"; 161 } 162 return $return; 163 }// end func 164 165 } // end class
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Fri Nov 14 17:48:13 2008 | Cross-referenced by PHPXref 0.7 |