Click here to Skip to main content
15,894,017 members
Articles / Programming Languages / SQL

A Free Website Management System - Nukedit

Rate me:
Please Sign up or sign in to vote.
3.38/5 (25 votes)
9 Sep 2010CPOL3 min read 173.9K   93  
Realtime page editing, simple, "on-the-fly" menu construction, modifiable permissions for users and groups, built-in search engine optimisation
<% 
'#################################################################################
'## 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> &nbsp;<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>&nbsp;&nbsp;<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")%>"> &nbsp;<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>&nbsp;&nbsp;<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  "">&nbsp;&nbsp;&nbsp;<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">
		&nbsp;<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 %>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
Australia Australia
From Brisbane, Australia.

Likes building stuff.

Comments and Discussions