Location: PHPKode > scripts > htRoundedMenus > htroundedmenus/class.htRoundedMenus.php
<?php
//////////////////////////////////////////////////////////////////////////////
// Class: htRoundedMenus
//
// Make sure you get the GIFs for the corners and the 1x1 transparent pixel.
// Otherwise, the menus won't look right.
// The GIFs, this file, and example usage are available at:
//    http://www.harrytravis.com/htRoundedMenus/htRoundedMenus.zip
//
// Add menus with rounded corners to your web page.
// See rounded.php for example usage.
// This is fairly procedural instead of OO, but some things should be...
//
// This is absolutely free.
// Use it at your own risk.
// Do whatever you want with it.
//
// I'd be interested to hear if you find it useful.
//
// Author: Harry Travis, hide@address.com
//////////////////////////////////////////////////////////////////////////////
class htRoundedMenus
{
   ///////////////////////////////////////////////////////////////////////////
   // Instantiate one htRoundedMenus object per page.
   function htRoundedMenus()
   {
      // overwrite these values to customize your menus
      $this->background_color = "99CCCC";
      $this->foreground_color = "FFFF99";
      $this->title_font_style = "color:ffff99; text-decoration:none; font-weight:bold; font-size:12pt; font-family:trebuchet,trebuchet MS,arial,sans-serif;";
      $this->option_font_style = "color:99cccc; text-decoration:none; font-size:12pt; font-family:trebuchet,trebuchet MS,arial,sans-serif;";

      // width of the menu (pixels)
      $this->menu_width = 150;

      // space between menus
      $this->menu_padding = 3;

      // URLs for left and right rounded corners
      $this->left_corner = "left_corner.gif";
      $this->right_corner = "right_corner.gif";
      $this->one_by_one = "1x1.gif";
   }

   ///////////////////////////////////////////////////////////////////////////
   // For each menu on your page, call this method.
   // URL is optional.
   function NewMenu($title_text,$title_url="")
   {
      $this->title_text = $title_text;
      $this->title_url = $title_url;
      $this->options = array();
      $this->inner_html = "";
   }

   ///////////////////////////////////////////////////////////////////////////
   // For each option on a menu, call this method.
   // URL is optional.
   // Do not add two options with same title to a menu.
   function AddOption($text,$url="")
   {
      $this->options[$text] = $url;
   }

   ///////////////////////////////////////////////////////////////////////////
   // Setting inner HTML replaces all options.
   // Options and inner HTML are mutually exclusive.
   function SetInnerHTML($html)
   {
      $this->inner_html = $html;
   }

   ///////////////////////////////////////////////////////////////////////////
   function OpenMenu()
   {
      if ( $this->title_url )
      {
         $title = "<a style='".$this->title_font_style."' ".
                  "href='".$this->title_url."'>".$this->title_text."</a>";
      }
      else
      {
         $title = "<font style='".$this->title_font_style."'>".
                  $this->title_text."</font>";
      }
      ?>
      <table border=0 cellpadding=0 cellspacing=0 bgcolor="<?=$this->background_color?>">
         <tr>
            <?php // each corner is 4 pixels wide, so subtract 8 from menu width for title cell ?>
            <td><img src="<?=$this->left_corner?>" width=4 height=25 border=0></td>
            <td width="<?=$this->menu_width-8?>" style="<?=$this->title_font_style?>" valign="middle">
               <?=$title?>
            </td>
            <td><img src="<?=$this->right_corner?>" width=4 height=25 border=0></td>
         </tr>
      <?php
   }

   ///////////////////////////////////////////////////////////////////////////
   function CloseMenu()
   {
      // the height of this img sets the spacing between menus
      ?>
         <tr><td colspan=3><img src="<?=$this->one_by_one?>" width="<?=$this->menu_width?>" height="<?=$this->menu_padding?>" border=0></td></tr>
      </table>
      <?php
   }
   
   ///////////////////////////////////////////////////////////////////////////
   function WriteMenuBody()
   {
      // do nothing if no options and no HTML
      if ( !$this->inner_html && count($this->options) == 0 )
      {
         return;
      }

      // open menu body
      ?>
      <tr>
         <td colspan=3>
            <table bordercolor="<?=$this->background_color?>" bgcolor="<?=$this->foreground_color?>" border=1 borderstyle="solid" cellpadding=3 cellspacing=0 width="100%">
               <tr><td>
      <?php

      // write inner HTML
      if ( $this->inner_html ) 
      {
         echo "<font style='".$this->option_font_style."'>";
         echo $this->inner_html;
         echo "</font>\n";
      }
      // write options
      else if ( count($this->options) > 0 )
      {
         foreach ($this->options as $text => $url )
         {
            if ( $url )
            {
               $op = "<a style='".$this->option_font_style."' href='$url'>$text</a>\n";
            }
            else
            {
               $op  = "<font style='".$this->option_font_style."'>$text</font>";
            }
            echo "&nbsp;$op<br>";
         }
      }

      // close menu body
      ?>
               </td></tr>
            </table>
         </td>
      </tr>
      <?php
   }

   ///////////////////////////////////////////////////////////////////////////
   // After all options have been added to a menu, call this method.
   // It prints out the HTML for the menu.
   function WriteMenu()
   {
      $this->OpenMenu();
      $this->WriteMenuBody();
      $this->CloseMenu();
      return;
   }   
}
?>
Return current item: htRoundedMenus