📄 sectree.js
字号:
function startMenu() {
// 菜单参数
imageDirectory = '../../../img'; ////图片目录
menuTree = new obj_collection()
defineMenuItems(menuTree)
if (definitionsHaveErrors(menuTree) == false) {createAppearanceArray(menuTree,menuTree.itemWithID('root'));
treeVariable = menuTree;
expandNode('root');
expandNode('ioffice')
expandNode('sysset')
}
}
// OBJ_NODE - 定义结点对象
// ID = 每个结点的绝对标记
// NAME = 菜单上显示的结点名称
// PARENTID = 父结点的标记
// TYPE = 可以是文档,文件夹或者根结点
// URL = 结点对应的连接
// ALTIMAGE = 16x16 GIF文件(不用于文件夹folders)
// POSITION = 结点的位置
// TARGET = 需要在Frame打开时,为空表示在当前页面打开。
// _top 表示整页面打开。
function obj_node(id,name,parentID,type,url,altImage,position,target) {
this.id = id.toLowerCase();
this.name = name;
this.parentID = parentID.toLowerCase();
this.type = type.toLowerCase();
this.url = url;
this.altImage = altImage;
this.position = position;
this.target = target;
}
// OBJ_COLLECTION function - defines a new collection
function obj_collection() {
this.addItem = addItem;
this.itemWithID = itemWithID;
this.itemIDExists = itemIDExists;
this.extractExpandableNodes = extractExpandableNodes;
this.posOfItemWithID = posOfItemWithID;
this.length = 0;
return this
}
// OBJ_ARRAY function - defines a fixed size array
function obj_array(size) {
this.length = size;
this.itemWithID = itemWithID;
this.itemIDExists = itemIDExists;
this.posOfItemWithID = posOfItemWithID;
return this
}
// OBJ_NODEAPPEARANCE - defines the appearance of a menu node (using images)
function obj_appearanceNode(id,imageSequence,name,parentID,type,url,target,visable) {
this.id = id;
this.imageSequence = imageSequence;
this.name = name;
this.parentID = parentID;
this.type = type;
this.url = url;
this.target = target;
this.visable = visable;
return this
}
// createAppearanceArray() function - this function looks at the menu node definitions,
// works out how they all fit together, and determines the
// image sequence needed to show their position on the menu
// tree. This is then stored in the appearanceArray.
function createAppearanceArray(treeVariable,startNode) {
appearanceArray = new obj_array(treeVariable.length);
appearancePos = 1;
if (startNode.type == 'page') {alert("The createAppearanceArray() function can only be called on a root or folder node.")}
else {createAppearanceBranch(treeVariable,startNode)}
}
function createAppearanceBranch(treeVariable,startNode) {
if (startNode.type == 'root') {if (startNode.altImage == '') {var iconImage = 'img-globe.gif'}
else {var iconImage = startNode.altImage}
var newAppNode = new obj_appearanceNode(startNode.id,iconImage,startNode.name,'',startNode.type,startNode.url,startNode.target,true)
appearanceArray[appearancePos] = newAppNode;
appearancePos = appearancePos + 1}
if (startNode.type == 'folder') {var newAppNode = new obj_appearanceNode(startNode.id,'',startNode.name,startNode.parentID,startNode.type,startNode.url,startNode.target,false);
var appearanceStr = addStringToStart('','img-folder.gif');
var lengthOfBranch = extractChildren(treeVariable,treeVariable.itemWithID(startNode.parentID)).length;
if (startNode.position == lengthOfBranch) {appearanceStr = addStringToStart(appearanceStr,'img-plus-end.gif|')}
else {appearanceStr = addStringToStart(appearanceStr,'img-plus-cont.gif|')}
appearanceStr = addStringToStart(appearanceStr,createParentalStructure(treeVariable,startNode.id));
newAppNode.imageSequence = appearanceStr;
appearanceArray[appearancePos] = newAppNode;
appearancePos = appearancePos + 1}
if (startNode.type == 'page') {var newAppNode = new obj_appearanceNode(startNode.id,'',startNode.name,startNode.parentID,startNode.type,startNode.url,startNode.target,false);
if (startNode.altImage == '') {var appearanceStr = 'img-page.gif'}
else {var appearanceStr = startNode.altImage}
var lengthOfBranch = extractChildren(treeVariable,treeVariable.itemWithID(startNode.parentID)).length;
if (startNode.position == lengthOfBranch) {appearanceStr = addStringToStart(appearanceStr,'img-branch-end.gif|')}
else {appearanceStr = addStringToStart(appearanceStr,'img-branch-cont.gif|')}
appearanceStr = addStringToStart(appearanceStr,createParentalStructure(treeVariable,startNode.id));
newAppNode.imageSequence = appearanceStr;
appearanceArray[appearancePos] = newAppNode;
appearancePos = appearancePos + 1
}
else {
var nodeChildren = extractAndSortChildren(treeVariable,startNode);
var lengthOfBranch = nodeChildren.length;
var currentIndex = 1;
while (currentIndex <= lengthOfBranch) {createAppearanceBranch(treeVariable,nodeChildren[currentIndex])
currentIndex = currentIndex + 1}
}
}
function collapseNode(nodeID) {
var startingPos = appearanceArray.posOfItemWithID(nodeID) + 1;
childCount = 0;
countChildrenOf(treeVariable,nodeID);
var endPos = (startingPos + childCount) - 1;
if (endPos < startingPos) {endPos = startingPos + ((extractChildren(treeVariable,treeVariable.itemWithID(nodeID)).length) - 1) }
currentIndex = startingPos
while (currentIndex <= endPos) {
if (appearanceArray[currentIndex].type == 'folder') {if ((appearanceArray[currentIndex].imageSequence).indexOf("img-folder-open.gif") != -1) {collapseAppearance(appearanceArray[currentIndex]); appearanceArray[currentIndex].visable = false}
else {appearanceArray[currentIndex].visable = false}
}
else {appearanceArray[currentIndex].visable = false}
currentIndex = currentIndex + 1
}
collapseAppearance(appearanceArray.itemWithID(nodeID))
timeOutId = setTimeout("drawMenu(appearanceArray)",100);
}
function collapseAppearance(arrayNode) {
var imageSequence = arrayNode.imageSequence;
var newImage = "img-plus-cont.gif";
var oldCont = "img-minus-cont.gif";
var oldEnd = "img-minus-end.gif";
var oldLength = oldCont.length;
var plusPosition = imageSequence.indexOf(oldCont)
if (plusPosition == -1) {plusPosition = imageSequence.indexOf(oldEnd); newImage = "img-plus-end.gif"; oldLength = oldEnd.length}
var newAppearance = imageSequence.substring(0,plusPosition) + newImage + "|img-folder.gif"
arrayNode.imageSequence = newAppearance;
}
// expandNode() function - expands and displays the given node
function expandNode(nodeID) {
var lengthOfArray = appearanceArray.length;
var currentIndex = 1;
while (currentIndex <= lengthOfArray) {
if ((appearanceArray[currentIndex].id == nodeID) || (appearanceArray[currentIndex].parentID == nodeID)) {appearanceArray[currentIndex].visable = true;
if (appearanceArray[currentIndex].id == nodeID) {var parentIndex = currentIndex}
}
currentIndex = currentIndex + 1;
}
if (appearanceArray[parentIndex].type != 'root') {
expandAppearance(appearanceArray[parentIndex])}
timeOutId = setTimeout("drawMenu(appearanceArray)",100);
}
function expandAppearance(arrayNode) {
var imageSequence = arrayNode.imageSequence;
var newImage = "img-minus-cont.gif";
var oldCont = "img-plus-cont.gif";
var oldEnd = "img-plus-end.gif";
var oldLength = oldCont.length;
var plusPosition = imageSequence.indexOf(oldCont)
if (plusPosition == -1) {plusPosition = imageSequence.indexOf(oldEnd); newImage = "img-minus-end.gif"; oldLength = oldEnd.length}
var newAppearance = imageSequence.substring(0,plusPosition) + newImage + "|img-folder-open.gif";
arrayNode.imageSequence = newAppearance;
}
// drawMenu() 函数 - 生成explorer外观的菜单,使用document.write书写相关的页面,自己修改。
function drawMenu(appearanceArray) {
var lengthOfArray = appearanceArray.length;
var currentIndex = 1;
var uname;
top.MenuFrame.document.open("text/html");
top.MenuFrame.document.write("<HTML><head><link rel='stylesheet' href='../../../css/tree.css'></head><BODY>")
while (currentIndex <= lengthOfArray) {
if (appearanceArray[currentIndex].visable == true){drawNode(appearanceArray[currentIndex])}
currentIndex = currentIndex + 1;
}
top.MenuFrame.document.close();
window.status = '欢迎你使用 Hongfan iOffice.Net 2001!';
}
function getcookieval(offset)
{
var endstr=document.cookie.indexOf(";",offset)
if (endstr==-1)
endstr=document.cookie.length
return unescape(document.cookie.substring(offset,endstr))
}
function getcookie(name)
{
var arg=name+"="
var alen=arg.length
var clen=document.cookie.length
var i=0
while (i<clen)
{
var j=i+alen
if (document.cookie.substring(i,j)==arg)
return getcookieval(j)
i=document.cookie.indexOf(" ",i)+1
if (i==0)
break
}
return null
}
function drawNode(node) {
var imageSequence = node.imageSequence;
writeImageSequence(node,imageSequence);
top.MenuFrame.document.write(" ")
if (node.type == 'root')
{
nodeName = node.name
}else {
nodeName = node.name
}
if (node.target == '')
{
var nodeTarget = 'PageFrame'
}else {
nodeTarget = node.target
}
if (node.type!='folder')
{
top.MenuFrame.document.writeln("<A HREF='" + node.url + "' TARGET='" + nodeTarget + "'>" + nodeName + "</A><BR>")
}else{
nodeIdent = "'" + node.id + "'"
switch (imgstyle)
{
case 'close':
top.MenuFrame.document.writeln("<A HREF=javascript:top.expandNode(" + nodeIdent + ")>" + nodeName +"</A><BR>")
break
default:
top.MenuFrame.document.writeln("<A HREF=javascript:top.collapseNode(" + nodeIdent + ")>" + nodeName +"</A><BR>")
}
}
}
function writeImageSequence(node,sequence) {
var finished = false;
var lengthOfString = sequence.length;
var imageSeq = sequence;
if (node.target == '')
{
var nodeTarget = 'PageFrame'
}else {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -