[ Index ]

PHP Cross Reference of Quick Form DataBase

title

Body

[close]

/objects/ -> qfdbobj_dropdownleftmenu.php (source)

   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'] = '&rarr;';
  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('"', '&quot;', $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('&', '&amp;', $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


Generated: Fri Nov 14 17:48:13 2008 Cross-referenced by PHPXref 0.7