<%
'#################################################################################
'## Copyright (C) 2003 Rick Eastes
'##
'## This program is free software; you can redistribute it and/or
'## modify it under the terms of the GNU General Public License
'## as published by the Free Software Foundation; either version 2
'## of the License, or any later version.
'##
'## All copyright notices regarding EzyEdit
'## must remain intact in the scripts and in the outputted HTML
'## The "powered by" text/logo with a link back to
'## http://www.ezyedit.com in the footer of the pages MUST
'## remain visible when the pages are viewed on the internet or intranet.
'##
'## This program is distributed in the hope that it will be useful,
'## but WITHOUT ANY WARRANTY; without even the implied warranty of
'## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
'## GNU General Public License for more details.
'##
'## You should have received a copy of the GNU General Public License
'## along with this program; if not, write to the Free Software
'## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
'##
'## Support can be obtained from support forums at:
'## http://www.ezyedit.com/forum
'##
'## Correspondence and Marketing Questions can be sent to:
'## rick@ezyedit.com
'## 191 Dorville Rd Carseldine.
'## Brisbane, Australia. 4034
'##
'#################################################################################
response.buffer = true
pagename = "utilities/menumanager.asp"
permissions = "DENY$R$"
response.Expires = -1
newfile = true 'for savepage
'on error goto 0
%>
<!--#include file="../utilities/savepage.asp"-->
<!--#include file="../includes/inc_main.asp"-->
<!--#include file="../includes/inc_dbfunctions.asp" -->
<!--#include file="../themes/standard.asp"-->
<script language=javascript>
var SelectedImageName;
var ImageLibWindow;
var MyFormName;
function SelectIcon(myForm)
{
MyFormName = myForm
ImageLibWindow = window.open('InplaceEdit/imageLib.asp','ImageLibrary','toolbar=no,width=600,height=400,directories=no,status=yes,resizable=yes,scrollbars=yes,menubar=no');
ImageLibWindow.location.href = 'imageLib.asp?init=true';
if (ImageLibWindow.opener == null) ImageLibWindow.opener = self;
}
function insertImage()
{
if(SelectedImageName!=null)
{
MyFormName.icon.value = SelectedImageName
}
}
</script>
<%
action = request("action")
menuid = request("menuid")
'###################################################################
if (action="") then
WriteHeader "",""
%>
<!-- MAIN CONTENT -->
<table border=0 width=600 ID="Table2" align=left><tr>
<td class=normal width=350 valign=top align=left>
<p><br><br>
<b>Menu Manager</b><br><br>
If you have permissions to do so, "Right mouse click" the menu items to the left and a context menu for that item will appear.
</td></tr>
</table><br clear=all>
<%
else
set rsMenuItem=db.execute("select * from tblMenu where menuid=" & menuid)
if(not rsMenuItem.EOF AND not rsMenuItem.BOF)then
parentid = rsMenuItem("parent")
else
WriteHeader "",""
%>
<table border=0 width=600 ID="Table1"><tr>
<td class=normal height=500 valign=top align=center>
<p><br><br>
<%
response.Write "<b>Error:</b><br>Menu Item not found.<br><Br>"
response.Write "<input type=button value=""Cancel"" onClick=""javascript:history.back();"" ID=""Button3"" NAME=""Button3""></td></tr></table>"
action=""
end if
end if
'###############################################################
if (action="deleteDB") then
set rsChildren = db.execute("SELECT count(*) as numchildren from tblMenu where parent = " & parentid)
if(rsChildren("numchildren") = 1) then
UpdateTable "tblMenu","isparent",false,"menuid="&parentid
end if
set rsChildren = nothing
DeleteFromTable "tblMenu", "menuid=" & menuid
message= "Deleted successfully"
action = "redirect"
'DELETE FILE
if(request.Form("deletefile")="true")then
DeleteIfExists(server.MapPath(site & request.Form("filename")))
end if
DeleteCache
redirect = site & "default.asp"
end if
'###############################################################
if (action="addDB") then
documentpermissions = request.Form("permissions")
permissiontype = request.Form("defaultpermissiontype")
defaultpermissions = request.Form("defaultpermission")
strFilePath = request.Form("filename")
if(len(strFilePath)>0)then
strFilePath = replace(strFilePath," ","")
if(left(strFilePath,8) = "content/") then 'Check if it is in the editable page directory
if(not FileExists(server.MapPath("../" & server.HTMLEncode(strFilePath)))=true) then 'then check if page exists in the editable page directory
pagetext = "<font size=5><b>" & encode(request("menuname")) & "</b></font><br><br><font size=2>Content for " & encode(request("menuname")) & " is currently unavailable.</b><br> Please come back soon."
'strFilePath = HTTPRequest("http://" & Request.ServerVariables("SERVER_NAME") & site & "utilties/SavePage.asp" , "name=" & strFilePath & "&pagetext=" & pagetext & "&menuid=" & menuid & "&server=true")
strFilePath = SavePage(menuid,"","","",strFilePath,pagetext)
end if
end if
end if
if(strFilePath = "false")then
error = true
message = "<b>ERROR: Page not added.</b><br>Probably did not have permission to create the file or write to database."
else
UpdateTable "tblMenu","isparent",true,"menuid="&menuid
if(request("newwindow") = "on" OR (left(strFilePath,5)="http:" OR left(strFilePath,4)="www."))then
newwindow = 2 'NEW WINDOW
else
newwindow = 1 'OWN WINDOW
end if
'Check if menu item with same name already exists.
sql = "select title from tblMenu where data='" & strFilePath & "'"
set rsExists=db.execute(sql)
if(rsExists.EOF OR rsExists.BOF OR len(strFilePath)=0)then
InsertIntoTable "tblMenu", _
"title,data,parent,type,zorder,permissions,icon,description,keywords", _
"'" & encode(request("menuname")) & "','" & strFilePath & "'," & menuid & "," & newwindow & "," & request("order") & ",'" & defaultpermissions & "$" & permissiontype & "$" & documentpermissions & "','" & request("icon") & "','" & setup_DefaultDescription & "','" & setup_DefaultKeywords & "'"
message = "New Page <b>" & request("menuname") & "</b> Added Successfully"
else
error = true
message = "<b>Error:</b><br>A link to this page already exists.<br>Contact your administrator for more information."
end if
set rsExists=nothing
DeleteCache
end if
if(not left(strFilePath,4)="http" AND not left(strFilePath,3)="www")then
redirect = "../" & strFilePath
else
redirect = "../default.asp"
end if
action = "redirect"
end if
'###############################################################
if (action="editDB") then
documentpermissions = request.Form("permissions")
permissiontype = request.Form("defaultpermissiontype")
defaultpermissions = request.Form("defaultpermission")
strFilePath = replace(request.Form("filename")," ","")
' response.Write server.MapPath("../" & server.HTMLEncode(strFilePath))
' if(left(strFilePath,4) = "content/" AND (not FileExists(server.MapPath("../" & server.HTMLEncode(strFilePath)))=true)) then
' pagetext = URLEncode("<font size=5 face=arial>" & encode(request("menuname")) & "</font><br><br><font size=2><b>Content for " & encode(request("menuname")) & " is under construction.</b><br> Please come back soon.")
' strFilePath = HTTPRequest("http://" & Request.ServerVariables("SERVER_NAME") & site & "protected/SavePage.asp" , "name=" & strFilePath & "&pagetext=" & pagetext & "&menuid=" & menuid & "&noredirect=true")
' end if
leftmenu = request.Form("leftmenu")="true"
if request.Form("propagate")="on" then
propagate = "true"
'The selected permissions need to propagate to the child menus
UpdateTable "tblMenu", _
"permissions,propagate", _
"'" & defaultpermissions & "$" & permissiontype & "$" & documentpermissions & "',false", _
"parent="&menuid
else
propagate = "false"
end if
if (request("newwindow") = "on" OR (left(strFilePath,5)="http:" OR left(strFilePath,4)="www."))then
newwindow = 2 'NEW WINDOW
else
newwindow = 1 'OWN WINDOW
end if
UpdateTable "tblMenu", _
"title,data,parent,type,zorder,permissions,leftmenu,propagate,icon,topmenu", _
"'" & encode(request("menuname")) & "','" & strFilePath & "'," & rsMenuItem("parent") & "," & newwindow & "," & request("order") & ",'" & defaultpermissions & "$" & permissiontype & "$" & documentpermissions & "'," & leftmenu & "," & propagate & ",'" & request("icon") & "'," & request("topmenu") , _
"menuid="&menuid
message = "Updated Successfully"
DeleteCache
if(not left(strFilePath,4)="http" AND not left(strFilePath,3)="www")then
redirect = "../" & strFilePath
else
redirect = "../default.asp"
end if
action = "redirect"
end if
'###################################################################
if (action="redirect") then
WriteHeader "",""
if(error = true)then
response.Write "<META HTTP-EQUIV='refresh' CONTENT='5 URL=" & redirect & "'>"
else
response.Write "<META HTTP-EQUIV='refresh' CONTENT='1 URL=" & redirect & "'>"
end if
%>
<!-- MAIN CONTENT -->
<table border=0 width=600 ID="Table3"><tr>
<td class=normal height=500 valign=top align=center>
<p><br><br>
<%=message %><br><br>
<input type=button value="Continue" onClick=location.href="<%=site%>utilities/refresh.asp?redirect=<%=redirect%>"; id="Button7" name=button2>
</td></tr>
</table>
<%
end if
'###################################################################
if (action="add") then
WriteHeader "",""
%>
<!-- MAIN CONTENT -->
<table border=0 cellspacing=0 cellpadding=8 width=600>
<tr>
<td class=normal height=500 valign=top>
<p>
<form name=frmAddMenuItem method=post action=menumanager.asp>
<input type=hidden name=action value="addDB">
<input type=hidden name=menuid value="<%=menuid%>">
<input type=hidden name=parentid value="<%=parentid%>">
<table cellpadding=5>
<tr>
<td class=tableheader colspan=3>
<% Response.write "<b>Add menu item </b><br>Fields marked with a <b>*</b> are required."
response.write("<tr><td class=tabledata width=110><b>*Menu Item Name</b><br>eg(My New Page)</td>")
response.write("<td class=tabledata><input type=text name=menuname class=textfield onBlur=""if(document.frmAddMenuItem.filename.value == '')document.frmAddMenuItem.filename.value = 'content/' + document.frmAddMenuItem.menuname.value + '.asp'""></td></tr>")
response.write("<tr><td class=tabledata valign=top><b>*Menu Link</b><br>eg(content/My New Page.asp)<br><b>OR</b><br>eg(http://www.eastes.net)</td>")
%>
<td class=tabledata>
<div id="divContent1" style="position:relative">Enter address of menu link:</div>
<input type=input name=filename class=textfield>
<%
'response.write("<select name=""contentname"" class=""selectfield""><option selected>Existing Pages</option>")
'WritePageDropDown
'response.write("</select>") %>
<br>
<!--<input type=checkbox name=createfile value=true checked=true>Yes, please <b>create</b> this file for me as it doesn't yet exist.<br>-->
<input type=checkbox name=newwindow>Always open link in a new window.
</td></tr>
<tr><td class=tabledata valign=top>
<b>Order</b>
<td class=tabledata>
<select name=order class=selectfield>
<% set rsChildren = db.execute("SELECT * from tblMenu where parent = " & rsMenuItem("menuid") & " ORDER BY zorder asc")
if (not rsChildren.EOF) AND (not rsChildren.BOF) then
Response.write "<option value=" & rsChildren("zorder")-10 & ">On Top - Above [" & rsChildren("title") & "]</option>"
rsChildren.movenext
end if
zcount = 2
while (not rsChildren.EOF AND not rsChildren.BOF)
Response.write "<option value=" & rsChildren("zorder")-1
response.write ">" & zcount & " Above [" & rsChildren("title") & "]</option>"
zcount = zcount + 1
highest = rsChildren("zorder")
rsChildren.movenext
wend
Response.write "<option value=" & highest+10 & ">On Bottom of List</option>"
%>
</select>
</td></tr>
<%
Response.Write "<tr><td class=tabledata valign=top><img src=""../gfx/icon-group.gif"" border=0 alt='Select Groups'><b> Permissions</td><td class=tabledata>"
WritePermissionsForm rsMenuItem("permissions"),"frmAddMenuItem"
Response.Write "</td></tr>"
%>
<tr><td valign=top class=tabledata>
<b>Icon</b>
</td>
<td class=tabledata>
<input type=text name=icon class=textfield> <input type=button onClick=SelectIcon(document.frmAddMenuItem) class=smallbutton value="Select Icon" id=button1 name=button1>
</td></tr>
<tr><td colspan=2 class=tabledata>
<br>
<input type=button value="Cancel" onClick="javascript:history.back();" class=button id=button2 name=button2> <input type=submit value="Add >>" class=button id=submit2 name=submit2>
</td></tr>
</table>
</form>
<%
'###################################################################
elseif (action="edit") then
WriteHeader "",""
%>
<!-- MAIN CONTENT -->
<table border=0 cellspacing=0 cellpadding=8 width=700>
<tr>
<td class=normal height=600 valign=top>
<p>
<form name=frmEditMenuItem method=post action=menumanager.asp>
<input type=hidden name=action value="editDB">
<input type=hidden name=menuid value="<%=menuid%>">
<input type=hidden name=parentid value="<%=parentid%>">
<table cellpadding=5>
<tr>
<td class=tableheader colspan=3>
<%
Response.write "<b>Edit menu item: " & rsMenuItem("title") & "</b><br>Fields marked with a <b>*</b> are required."
response.write("<tr><td class=tabledata width=110><b>* Menu item Name</b><br>eg(My New Page)</td>")
response.write("<td class=tabledata><input type=text name=menuname class=textfield value = """ & rsMenuItem("title") & """></td></tr>")
response.write("<tr><td class=tabledata valign=top><b>*Menu Link</b></td>")
%>
<td class=tabledata>
This menu item links to <input type=text class=textfield size=30 name=filename value="<%=rsMenuItem("data")%>"><br>
<!--<input type=checkbox name=createfile checked=true>Yes, please <b>recreate</b> this file for me if it doesn't exist.<br>-->
<input type=checkbox name=newwindow <% if rsMenuItem("type") = 2 then response.Write " checked=true " end if %>>Yes, always open link in a new window.
</td></tr><tr><td class=tabledata valign=top>
<b>Order</b><br></td>
<td class=tabledata>
Move to:<select name=order class=selectfield>
<%
set rsChildren = db.execute("SELECT * from tblMenu where parent = " & rsMenuItem("parent") & " ORDER BY zorder asc")
if (not rsChildren.EOF) AND (not rsChildren.BOF) then
Response.write "<option value=" & rsChildren("zorder")-10 & ">Top - Above [" & rsChildren("title") & "]</option>"
rsChildren.movenext
end if
zcount = 2
while (not rsChildren.EOF AND not rsChildren.BOF)
if(not selected=true)then
Response.write "<option value=" & rsChildren("zorder")-1
if(rsMenuItem("menuid") = rsChildren("menuid")) then
response.write " selected "
response.write ">Don't Move</option>"
selected=true
else
response.write ">" & zcount & " Above [" & rsChildren("title") & "]</option>"
end if
zcount = zcount + 1
prev = rsChildren("zorder")
else
selected=false
end if
rsChildren.movenext
wend
Response.write "<option value=" & prev+10 & ">Bottom of List</option>"
%>
</select>
</td></tr>
<%
Response.Write "<tr><td class=tabledata valign=top><img src=""../gfx/icon-group.gif"" border=0 alt='Select Groups'><b> Permissions</td><td class=tabledata>"
WritePermissionsForm rsMenuItem("permissions"),"frmEditMenuItem"
if(rsMenuItem("isparent")) then%>
<br><input type=checkbox name=propagate <% if rsMenuItem("propagate")=true then response.write " checked " end if %> >Permissions of this menu item are automatically applied to its submenu.<br>(1st Generation only)<%
end if
Response.Write "</td></tr>"
%>
<tr><td valign=top class=tabledata>
<b>Icon</b>
</td>
<td class=tabledata>
<input type=text name=icon class=textfield value="<%=rsMenuItem("icon")%>"> <input type=button onClick="SelectIcon(document.frmEditMenuItem);" class=smallbutton value="Select Icon">
</td></tr>
<tr><td class=tabledata valign=top width=150>
<b>Sub Menu Options</b><br>
<% if(not rsMenuItem("isparent"))then
response.Write "<font size=1>These options will only become applicable when a sub menu is created for """ & rsMenuItem("title") & """ .</font>"
end if %>
</td>
<td class=tabledata>
<table>
<tr><td class=normal align=right>Left Menu:</td><td>
<select name=leftmenu class=selectfield ID="Select2">
<option value=false>None</option>
<option value=true <% if rsMenuItem("leftmenu")=true then response.write " selected " end if %>>Normal</option>
</select>
</td></tr>
<tr><td class=normal align=right>Top Sub Menu:</td><td>
<select name=topmenu class=selectfield>
<option value=0>None</option>
<option value=1 <% if rsMenuItem("topmenu")=1 then response.write " selected " end if %>>Normal</option>
<option value=2 <% if rsMenuItem("topmenu")=2 then response.write " selected " end if %>>Slim</option>
<option value=3 <% if rsMenuItem("topmenu")=3 then response.write " selected " end if %>>Drop Down</option>
</select>
</td></tr>
</table>
</td></tr>
<tr><td colspan=2 class=tabledata>
<br>
<input type=button value="Cancel" onClick="javascript:history.back();" class=button id=button2 name=button2> <input type=submit value="Apply >>" class=button>
</td></tr>
</table>
</form>
<%
'###################################################################
elseif (action="delete") then
WriteHeader "",""
on error goto 0
%>
<table border=0 width=600><tr>
<td class=normal height=500 valign=top align=center>
<p><br><br>
<form name="frmDeleteMenuHeader" method="post" action="menumanager.asp">
<input type=hidden name=action value="deleteDB">
<input type=hidden name=menuid value="<%=menuid%>">
<input type=hidden name=parentid value="<%=parentid%>">
<%
set rsChildren=db.execute("select title from tblMenu where parent=" & menuid & " order by zorder asc")
if(not rsChildren.EOF)then
response.Write "You cannot delete <b>" & rsMenuItem("title") & "</b> as it still contains the items below.<Br><br>"
response.Write "<input type=button value=""Cancel"" onClick=""javascript:history.back();"" ID=""Button3"" NAME=""Button3""><br><br>"
response.Write "<table border=0 cellpadding=0 cellspacing=0>"
while(not rsChildren.EOF)
response.Write "<li>" & rsChildren("title") & "</li>"
rsChildren.movenext
wend
response.Write "</table>"
else
response.write "Are you sure you wish to delete <b>" & rsMenuItem("title") & " </b> from the menu?<br><br>"
if(left(rsMenuItem("data"),8)="content/")then
response.Write "<input type=hidden name=filename value=" & rsMenuItem("data") & ">"
response.write "<input type=checkbox name=deletefile value=true> Also delete the corrosponding """ & rsMenuItem("data") & """ file.<br><br>"
end if
response.write "<input type=submit value="" Yes ""> <input type=button value=""Cancel"" onClick=""javascript:history.back();"">"
end if
response.Write "</td></tr></table></form>"
end if
WriteFooter "", ""
'rsPage.Close()
'set rsPage = nothing
'#############################################################################################
Function WritePageDropDown
sql = "SELECT *"
sql = sql & " FROM tblMenu"
sql = sql & " ORDER BY title"
' response.write sql 'DEBUG
set rsDropDown = db.Execute(sql)
if rsDropDown.EOF or rsDropDown.BOF then
Response.Write "<option>No options to select</option>"
else
do until rsDropDown.EOF
if(IsAllowed(rsDropDown("permissions"))) then
Response.Write "<option value='" & rsDropDown("title") & strValueSuffix & "' "
Response.Write ">" & rsDropDown("title") & "</option>"
end if
rsDropDown.MoveNext
loop
end if
rsDropDown.Close
set rsDropDown = nothing
end Function
'#############################################################################################
function WritePermissionsForm(strPermissions,strFrmName)
'documentpermissions = request("permissions")
'permissiontype = request("defaultpermissiontype")
'defaultpermissions = request("defaultpermission")
'defaultpermissions & "$" & permissiontype & "$" & documentpermissions
if (strPermissions = "") OR isNull(strPermissions) then
'check if default permission (most of the time I hope)
result = 1
blocks = ""
else
aryAccess = split(strPermissions,"$") 'split default from blocks
'EXAMINE FIRST 2 BLOCKS FOR DEFAULT PERMISSION (ALLOW OR DENY)
defaultAction = aryAccess(0)
result = 0
if(defaultAction = "ALLOW") then 'default access is to allow all
if(aryAccess(1) = "W") then
result = 2
else
result = 1
end if
else
result = 0
end if
blocks = aryAccess(2)
end if
response.write("<table width=""100%"" cellpadding=0 cellspacing=0 bgcolor=white border=0>")
%>
<tr><td class=tabledata colspan=4 align=top>
<input type=radio <%if result > 0 then Response.write " checked "%> name=defaultpermission value="ALLOW" ID=Radio <%if result > 0 then response.write " checked "%>1><b>Allow</b> everyone to
<select name=defaultpermissiontype class=selectfield ID="Select1">
<option <%if result < 2 then Response.write " selected "%> value="R">Read</option>
<option <%if result >= 2 then Response.write " selected "%> value="W">Read and Write</option>
</select><br><input type=radio <%if result = 0 then Response.write " checked "%> name=defaultpermission value="DENY" ID=Radio <%if result = 0 then response.write " checked "%>1><b>Deny</b> everyone read and write access
</td>
<td valign=center class=tabledata>
<input type=hidden name=permissions value="<%=blocks%>" ID="Hidden2">
<input type=button value="Exceptions >>" class=smallbutton onClick="openPermissions();" ID="Button3" NAME="Button3">
<script language=javascript>
var strPermissions = "hello";
function SetPermissionVariables()
{
document.<%=strFrmName%>.permissions.value = strPermissions;
}
function openPermissions()
{
strPermissions = document.<%=strFrmName%>.permissions.value;
PermissionsWindow = window.open('permissions.asp','Permission','toolbar=no,left=<%=setup_MenuWidth + 10 %>,top=300,width=490,height=100,directories=no,status=no,resizable=yes,scrollbars=no,menubar=no');
PermissionsWindow.location.href = 'permissions.asp';
if (PermissionsWindow.opener == null) PermissionsWindow.opener = self;
}
</script>
</td>
</tr>
</table>
<% end function %>