/**
* 仿OfficeXP风格的左边版面列表
* --------------------------------------------------------------------------------
* blood 于 2/19/2002 4:47:11 PM 加贴在 Visual Basic
*
* 徐祖宁(唠叨) 移植于 3/2/2002
* OOP 版
*
*/
class Frame {
function run() {
global $PHP_SELF;
echo <<
if (window != top) top.location.href = location.href;
EOD;
}
}
class About {
function run() {
echo << body { font-size: 9pt; font-family:"Verdana", "Arial", "宋体"; }
关于此菜单
说明,此菜单程序只能使用在IE 5以上的版本使用,NetSpace下不能使用,推荐使用IE 6正式中文版
EOD;
}
}
class Page {
function run($id1) {
global $id;
echo << body { font-size: 9pt; font-family:"Verdana", "Arial", "宋体"; }
欢迎访问 $id
EOD;
}
}
class Menu {
var $MenuOn = 0; //定义分类菜单数目
var $MenuBackColor = "lightgrey"; //定义分类菜单背景颜色
var $MenuFontSize = "9pt"; //定义分类菜单字体
var $MenuBarHeight = 20; //定义分类菜单高度
var $ItemTextColor = "#000000"; //定义分类菜单项目文字颜色
var $ItemBackColor = "lightgrey"; //定义分类菜单项目背景颜色
var $TopMenuHeight = 0; //定义分类菜单与顶部的间距
var $SelectedItemDarkBorder = "#08246B"; //定义分类菜单项目在鼠标移动到上面时的暗边框颜色
var $SelectedItemLightBorder = "#08246B"; //定义分类菜单项目在鼠标移动到上面时的亮边框颜色
var $SelectedItemBackgroundColor = "#B5BED6"; //定义分类菜单项目在鼠标移动到上面时的背景颜色
var $menuSubSectionBackColor = "darkgray"; //定义二级菜单背景颜色
var $menuSubSectionFontColor = "black"; //定义二级菜单菜单字体颜色
var $defTarget = "main"; //定义菜单项目超连接默认目标框架
/**
* menuStartSection($Seq, $Label)
* 制作分类菜单
* $Seq = 分类菜单序列号,使用菜单序列号控制启动是显示顺序
* $Label = 分类菜单标题
*/
function menuStartSection($SectionSeq, $SectionName) {
$menuBackColor = $this->menuBackColor;
$MenuBarHeight = $this->MenuBarHeight;
$MenuFontSize = $this->MenuFontSize;
$menuSection = $this->menuSection;
$ItemBackColor = $this->ItemBackColor;
$mh = $this->MenuBarHeight-2;
echo <<
| $SectionName |
EOD;
}
/**
* menuSectionAsItem($Label, $Description, $URL, $Target="")
* 制作带超连接的分类菜单,类似菜单项目,可以直接使用
* $Label = 分类菜单标题
* $Description = 分类菜单简介
* $URL = 超连接地址
* $Target = 超连接目标框架,默认为$defTarget
*/
function menuSectionAsItem($SectionSeq, $SectionName, $SectionDesc, $URL, $target="") {
$menuBackColor = $this->menuBackColor;
$MenuBarHeight = $this->MenuBarHeight;
if($target == "") $target = $this->defTarget;
$URL = $this->buildURL($URL);
$mh = $this->MenuBarHeight-2;
echo <<
| $SectionName |
EOD;
}
/**
* 将超连接中的空格替换为+号
*/
function buildURL($inURL) {
return str_replace(" ","+",$inURL);
}
/**
* 输出javascript脚本
*/
function scriptOut() {
$dh = $this->TopMenuHeight+($this->MenuBarHeight * $this->menuOn);
echo << var AvailHeight // 定义可利用的高度 var LastSection // 定义将要打开的菜单关闭 var ThisSection // 定义当前需要打开的菜单 var timerDelay=15 // 定义并设置延时 var menuActive=false // 测定当前活动的菜单 var VisibleHeight // 定义显示高度,确定是否显示滚动条 var AniRatio // 定义菜单显示滑动的速度 function getSizing() { // 菜单打开时得到的可利用的高度 AvailHeight=document.body.clientHeight-$dh if(AvailHeight<=0) { LastSection.style.display='none'; }else { // 改变菜单显示滑动速度的比率 AniRatio=0.75; // 设定速度 if (AvailHeight>200) {AniRatio=0.667;} if (AvailHeight>500) {AniRatio=0.5;} // 根据可利用高度调整速度 LastSection.style.height=AvailHeight; LastSection.style.overflow='visible'; LastSection.style.display=''; VisibleHeight=parseInt(LastSection.clientHeight); if (VisibleHeight>AvailHeight) {LastSection.style.overflow='auto';}else{LastSection.style.overflow='hidden';}; } } function slideMenu() { // 菜单滑动函数 if(parseInt(LastSection.style.height)>1) { LastSection.style.height=parseInt(parseInt(LastSection.style.height)*AniRatio); ThisSection.style.height=AvailHeight-parseInt(LastSection.style.height); var movetimer=setTimeout("slideMenu()",timerDelay) ; }else { // 完成菜单滑动,显示新打开的菜单,隐藏前面以打开的菜单 LastSection.style.display='none'; ThisSection.style.height=AvailHeight; menuActive=false; if (VisibleHeight>AvailHeight) {ThisSection.style.overflow='auto';}; ThisSection.style.marginRight=0; LastSection=ThisSection; clearTimeout(movetimer); } } function StartSection(theSection) { // 开始滑动菜单,检测是否对菜单进行单击 if(menuActive==false) { if(LastSection!=theSection) { menuActive=true; ThisSection=theSection; LastSection.style.overflow='hidden'; ThisSection.style.overflow='visible'; ThisSection.style.display=''; VisibleHeight=parseInt(ThisSection.clientHeight); ThisSection.style.overflow='hidden'; ThisSection.style.display='none'; ThisSection.style.height=1; LastSection.style.height=AvailHeight-1; LastSection.style.display=''; ThisSection.style.display=''; slideMenu() } } } window.onresize=getSizing // 启动时打开默认的序号为第一个的菜单 LastSection=document.all.menuSection1; LastSection.style.display=''; getSizing(); EOD; } function run() { global $PHP_SELF; $MenuFontSize = $this->MenuFontSize; $MenuBackColor = $this->MenuBackColor; echo << td { font-size: $MenuFontSize; font-family:"Verdana", "Arial", "宋体"; } EOD; /** * 创建菜单 */ $this->menuStartSection(2, "代码世界"); $this->menuAddItem("Joy ASP", "欢迎访问Joy ASP", "$PHP_SELF?key=page&id=Joy ASP"); $this->menuAddItem("Java 世界", "欢迎访问Java 世界", "$PHP_SELF?key=page&id=Java 世界"); $this->menuAddItem("DotNet 时代", "欢迎访问DotNet 时代", "$PHP_SELF?key=page&id=DotNet 时代"); $this->menuAddItem("Visual Basic", "欢迎访问Visual Basic", "$PHP_SELF?key=page&id=Visual Basic"); $this->menuAddItem("Delphi", "欢迎访问Delphi", "$PHP_SELF?key=page&id=Delphi"); $this->menuEndSection(); $this->menuStartSection(3, "开心一刻"); $this->menuAddItem("传统笑话", "传统笑话", "$PHP_SELF?key=page&id=传统笑话"); $this->menuAddItem("近代笑话", "近代笑话", "$PHP_SELF?key=page&id=近代笑话"); $this->menuAddSubSection("儿童类"); $this->menuAddItem("校园笑话", "校园笑话", "$PHP_SELF?key=page&id=校园笑话"); $this->menuAddItem("幼儿笑话", "幼儿笑话", "$PHP_SELF?key=page&id=幼儿笑话"); $this->menuAddItem("少年笑话", "少年笑话", "$PHP_SELF?key=page&id=少年笑话"); $this->menuAddSubSectionLine(); $this->menuAddItem("中学时代笑话", "中学时代笑话", "$PHP_SELF?key=page&id=中学时代笑话"); $this->menuAddSubSection("成人笑话"); $this->menuAddItem("带颜色的笑话", "带颜色的笑话", "$PHP_SELF?key=page&id=带颜色的笑话"); $this->menuAddItem("笑话林", "笑话林", "$PHP_SELF?key=page&id=笑话林"); $this->menuEndSection(); $this->menuSectionAsItem(3, "菜单简介", "菜单简介", "$PHP_SELF?key=about"); $this->menuStartSection(1, "个人收藏夹"); $this->menuAddItem("DotNet 时代", "欢迎访问DotNet 时代", "$PHP_SELF?key=page&id=DotNet 时代"); $this->menuEndSection(); // 将个人收藏夹定为启动菜单 $this->menuOn = 4; $this->scriptOut(); echo "\n"; } } class Application { var $frame; var $menu; var $page; var $about; function Application() { $this->frame = new Frame; $this->about = new About; $this->page = new Page; $this->menu = new Menu; } function run($key,$id="") { switch($key) { case "menu": $this->menu->run(); break; case "page": $this->page->run($id); break; case "about": $this->about->run(); break; default: $this->frame->run(); } } } ?>
/** 运行 **/ $app = new Application; $app->run($key,$id); ?>

