XML实现WEB动态菜单3--菜单的管理

该博客展示了金帝风采内容管理界面的代码实现。包含权限验证、文本转换函数、标签转换函数,以及对 XML 文件的节点删除和添加操作。还实现了菜单和项目的选择、删除、新增功能,通过 JavaScript 函数进行交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!--菜单管理-->
<%@ Language=VBScript %>
<HTML>
 <HEAD>
  <title>金帝风采内容管理界面</title>
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
  <%
dim userip,sAuthorIp,userip2
 userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
 userip2 = Request.ServerVariables("REMOTE_ADDR")

 if userip = ""  then
       sAuthorIP=userip2
    else
       sAuthorIP=userip
    end if
    sAuthorIp=left(sAuthorIp,3)
   
    if sAuthorIp <> "192" or Session("load") <> 1 then
       response.Write "没有权限"
       response.End
    end if
     
Function TransText(sTmp)
 dim ns
 If Len(sTmp)=0 Then Exit Function
 'ns=Replace(sTmp,"&","&amp;")
 ns=Replace(sTmp,"<","&lt;")
 ns=Replace(ns,">","&gt;")
 ns=Replace(ns,chr(13),"")
 ns=Replace(ns,chr(10),"<br>" )
 ns=Replace(ns,chr(34),"&quot;")
 ns=Replace(ns,chr(9),"&quot;")
    'ns=Replace(ns,chr(63),"&nbsp;")
 ns=Replace(ns," ","&nbsp;")
 TransText=ns
End Function

Sub TransTag(sTmp, iType)
 If Len(sTmp)=0 Then Exit Sub

    Dim sTag_Open
    Dim sTag_Close

    Select Case iType
        Case 1
            sTag_Open = "[LINK]"
            sTag_Close = "[/LINK]"
        Case 2
            sTag_Open = "[LIMGG]"
            sTag_Close = "[/LIMGG]"
        Case 3
            sTag_Open = "[RIMGG]"
            sTag_Close = "[/RIMGG]"
        Case 4
            sTag_Open = "[LIMGY]"
            sTag_Close = "[/LIMGY]"
        Case 5
            sTag_Open = "[RIMGY]"
            sTag_Close = "[/RIMGY]"
        Case 6
            sTag_Open = "[CIMGG]"
            sTag_Close = "[/CIMGG]"
        Case 7
            sTag_Open = "[CIMGY]"
            sTag_Close = "[/CIMGY]"                      
        Case 8
            sTag_Open = "[EMB]"
            sTag_Close = "[/EMB]"
    End Select

    Dim iPos
    Dim iPosEnd

    Dim sPartL
    Dim sPartM
    Dim sPartR

    iPos = 1
    Do
        iPos = InStr(iPos, sTmp, sTag_Open, 1)
        If iPos > 0 Then
            iPosEnd = InStr(iPos, sTmp, sTag_Close, 1)
            If iPosEnd = 0 Then
                iPos = 0
            Else
                sPartL = Mid(sTmp, 1, iPos - 1)
                sPartM = Mid(sTmp, iPos + Len(sTag_Open), iPosEnd - iPos - Len(sTag_Open))
                sPartR = Mid(sTmp, iPosEnd + Len(sTag_Close))
                Select Case iType
                    Case 1
                        sTmp = sPartL & _
                               "<a href='" & sPartM & "' target='_blank'>" & sPartM & "</a>" & _
                               sPartR
                    Case 2
                        sTmp = sPartL & _
                               "<a href='" & sPartM & "' target='_blank'>" & _
                               "<img alt='点击查看大图' src='" & sPartM & "' border='0' width='400' style='float:left'>" & _
                               "</a>" & _
                               sPartR
                    Case 3
                        sTmp = sPartL & _
                               "<a href='" & sPartM & "' target='_blank'>" & _
                               "<img alt='点击查看大图' src='" & sPartM & "' border='0' width='400' style='float:right'>" & _
                               "</a>" & _
                               sPartR
                    Case 4
                        sTmp = sPartL & _
                               "<a href='" & sPartM & "' target='_blank'>" & _
                               "<img alt='点击查看大图' src='" & sPartM & "' border='0' style='float:left'>" & _
                               "</a>" & _
                               sPartR
                    Case 5
                        sTmp = sPartL & _
                               "<a href='" & sPartM & "' target='_blank'>" & _
                               "<img alt='点击查看大图' src='" & sPartM & "' border='0' style='float:right'>" & _
                               "</a>" & _
                               sPartR
                    Case 6
                        sTmp = sPartL & _
                               "<a href='" & sPartM & "' target='_blank'>" & _
                               "<center><img alt='点击查看大图' src='" & sPartM & "' border='0' width='400'></center>" & _
                               "</a>" & _
                               sPartR
                    Case 7
                        sTmp = sPartL & _
                               "<a href='" & sPartM & "' target='_blank'>" & _
                               "<center><img alt='点击查看大图' src='" & sPartM & "' border='0' ></center>" & _
                               "</a>" & _
                               sPartR
                    Case 8
                        sTmp = sPartL & _
                               "<a href='" & sPartM & "' target='_blank'>" & sPartM & "</a>" & _
                               "<p><embed alt='点击在新窗口中浏览' src='" & sPartM & "' width='400'></p>" & _
                               sPartR
                End Select
                iPos = iPosEnd + Len(sTag_Close)
            End If
        End If
    Loop While iPos > 0
End Sub

const xmlpath = "d:/webdoc/magazine/jdfc/fcitem.xml"
dim xmldoc,xmlroot,o,id,ntext,nmenu,ntitle
dim newnode
o = request.QueryString("o")
id = request.QueryString("id")
ntitle = TransText(request.Form("fcitemtext"))
ntext = TransText(request.Form("fccontent"))

call TransTag(ntitle,1)

call TransTag(ntext,1)
call TransTag(ntext,2)
call TransTag(ntext,3)
call TransTag(ntext,4)
call TransTag(ntext,5)
call TransTag(ntext,6)
call TransTag(ntext,7)
call TransTag(ntext,8)

nmenu = request.Form("Select2")

set xmldoc = Server.CreateObject("Microsoft.XMLDOM")
xmldoc.validateOnParse = true
xmldoc.async = false
xmldoc.load(xmlpath)
set nroot = xmldoc.documentElement

sub delnode()
    for each node1 in nroot.childNodes
          set node2 = xmldoc.documentElement.selectNodes(node1.nodeName + "/childitem/@id")
          set node22 = xmldoc.documentElement.selectNodes(node1.nodeName + "/childitem")
          i = 0
          for each node3 in node2
              if node3.text = id then
                 node1.removechild(node22.item(i))
                 xmldoc.save(xmlpath)
                 exit sub
              end if
              i = i + 1
          next
    next
end sub

sub addnode()
   set tmpnode = xmldoc.documentElement.selectNodes("maxid")
   for each node1 in nroot.childNodes
        if node1.nodeName = nmenu then
           set newnode = node1.appendChild(xmldoc.createElement("childitem"))
           newnode.text = ntext
           newnode.setAttribute "id",tmpnode.item(0).text
           newnode.setAttribute "title" , ntitle         
           exit for
        end if
   next
   tmpnode.item(0).text = Cstr(CInt(tmpnode.item(0).text) + 1)
   xmldoc.save(xmlpath)
end sub
if request.QueryString.Count > 0 and  o = "0" then
   delnode()
   response.Redirect "fcmenumanage.asp"
end if
if nmenu <> "" then
   addnode()
   response.Redirect "fcmenumanage.asp"
end if

%>
  <xml id="fcmenu" src="fcmenu.xml"></xml>
  <xml id="xmldoc" src="fcitem.xml"></xml>

  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <script id="clientEventHandlersJS" language="javascript">
<!--
function setfcmenu(mname)
{
   for(i=form1.Select2.length-1;i>=0;i--)
       form1.Select2.remove(i);
   fcmenu.recordset.movefirst();
   for(i=0;i<fcmenu.recordset.recordcount;i++)
   {
      if(fcmenu.recordset.fields(mname)+"" ==  "null" || fcmenu.recordset.fields(mname) + ""  == "")
         break;
      var oOption=document.createElement("OPTION");
      oOption.value = fcmenu.recordset.fields(mname);
      oOption.text = fcmenu.recordset.fields(mname);
      form1.Select2.add(oOption,form1.Select2.length);
      fcmenu.recordset.movenext();
   }
   form1.Select2.selectedIndex = 0;
   form1.Select2.options(0).Selected = true;
   setfcitem(form1.Select2.item(form1.Select2.selectedIndex).text);
   form1.Select3.selectedIndex = 0;
   form1.Select3.options(0).Selected = true;
}

function setfcitem(iname)
{
   for(i=form1.Select3.length-1;i>=0;i--)
       form1.Select3.remove(i);
    var ns,i;   
    ns = xmldoc.documentElement.selectNodes(iname + "/childitem/@title");
    ts = xmldoc.documentElement.selectNodes(iname + "/childitem/@id");  
    i = 0;
    while(true)
    {
      if(ns.item(i)==null)
         {break;}
      var oOption=document.createElement("OPTION");
      oOption.value = ts.item(i).text;
      oOption.text = ns.item(i).text;
      form1.Select3.add(oOption,form1.Select3.length);
      i = i+1;
    }
}
function Select1_onchange()
{
   setfcmenu(form1.Select1.item(form1.Select1.selectedIndex).text);
}

function Select2_onchange()
{
   setfcitem(form1.Select2.item(form1.Select2.selectedIndex).text);
}
function del_onclick()
{
    if(window.confirm('选定的项目:“' + form1.Select3.item(form1.Select3.selectedIndex).text + '”将会被删除,真的要删除吗?'))
        document.location = "fcmenumanage.asp?o=0&id=" + form1.Select3.item(form1.Select3.selectedIndex).value;
}

function new_onclick()
{
    if(form1.fcitemtext.value == "" || form1.fccontent.value == "")
    {
        window.alert("新增项目为空,操作不能继续!")
    }
    else
    {
        form1.submit();
    }
}
//-->
  </script>
 </HEAD>
 <body onload="setfcmenu('金帝经纬')" bottomMargin="0" leftMargin="0" rightMargin="0">
  <STRONG><FONT color="#ff0000" size="5">金帝风采内容管理:</FONT></STRONG>
  <form name="form1" id="form1" method="post">
   <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="700" border="1" style="WIDTH: 700px; HEIGHT: 120px">
    <TR>
     <TD style="WIDTH: 69px">现有菜单</TD>
     <TD><SELECT id="Select1" onchange="return Select1_onchange()" name="Select1">
       <OPTION value="金帝经纬" selected>金帝经纬</OPTION>
       <OPTION value="管理论坛">管理论坛</OPTION>
       <OPTION value="成长课程">成长课程</OPTION>
       <OPTION value="欣幸岁月">欣幸岁月</OPTION>
       <OPTION value="咖啡物语">咖啡物语</OPTION>
      </SELECT><SELECT id="Select2" style="WIDTH: 208px" onchange="return Select2_onchange()" name="Select2"></SELECT></TD>
    </TR>
    <TR>
     <TD style="WIDTH: 69px">现有项目</TD>
     <TD><SELECT id="Select3" style="WIDTH: 288px" name="Select3"></SELECT><FONT face="宋体">请选择一个,以便下面的删除操作</FONT></TD>
    </TR>
    <TR>
     <TD style="WIDTH: 69px">删除项目</TD>
     <TD>
      <INPUT id="del" onclick="return del_onclick()" type="button" value="删除" name="del"></TD>
    </TR>
    <TR>
     <TD style="WIDTH: 69px" vAlign="top">增加新项</TD>
     <TD>
      标题:<br>
      <INPUT id="fcitemtext" type="text" size="41" name="fcitemtext"><br>
      内容:<br>
      <TEXTAREA rows="22" cols="76" ID="fccontent" NAME="fccontent" style="WIDTH: 632px; HEIGHT: 358px"></TEXTAREA><br>
      <INPUT id="new" onclick="return new_onclick()" type="button" value="新增" name="new">
     </TD>
    </TR>
   </TABLE>
  </form>
 </body>
</HTML>
<!--转载请注明作者及出处:http://blog.youkuaiyun.com/curllion-->



相关链接
XML实现WEB动态菜单1--html文件
XML实现WEB动态菜单2--xml文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值