Click here to Skip to main content
15,896,557 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 174K   728   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
'##
'#################################################################################

setup_ServerName = Request.ServerVariables("SERVER_NAME")
setup_SiteLocation = replace(site,"/","")

'function InplaceEdit(strPageText) 
'	if(isAllowed(rsPage("permissions"))>=2)then
'		InitEdit
'			response.Write strPageText
'		CloseEdit
'	else 
'		response.Write "<table width=500 cellpadding=0 cellspacing=0><tr><td>"
'		response.Write strPageText
'		response.Write "</td></tr></table>"
'	end if	
'end function
closingTag = "</div>"



function InitEdit
	if(isAllowed(rsPage("permissions"))>=2)then
		Dim Browser
		Browser = Request.ServerVariables("HTTP_USER_AGENT")

		version = 0
		If InStr(Browser, "MSIE") Then
			dim temp
			temp = split(Browser,"MSIE")
			version = split(temp(1),";")(0)
		end if
		if (not CInt(version) >= 5.5) then	
			response.Write "<table width=500 cellpadding=0 cellspacing=0>"
			response.Write "<tr><td align=right><font size=1><a href=""http://www.microsoft.com"">Microsoft Internet Explorer 5.5</a><br>or better is needed to edit this page.</font></td><tr><td>"
			closingTag = "</td></tr></table>"
		else
			StartEdit("full")
			closingTag = "</div>"
		end if
	else
		response.Write "<table width=600 cellpadding=0 cellspacing=0><tr><td>"
		closingTag = "</td></tr></table>"
	end if 
end function

function StartEdit(editversion)
	toolbarx = request.Cookies("toolbarx")
	toolbary = request.Cookies("toolbary")

	if(toolbarx = "")then
		toolbarx = setup_ToolBarX
		toolbary = setup_ToolBarY
	end if


%>
<script language=Javascript src="<%=site%>InplaceEditor/InplaceEdit.js"></script>
<script language=Javascript>
editMode = "design";
editorvisible = false;


function NormaliseXML(sString)
{
	var sReturn='';
	var sTag='';
	var bTagComplete=false;
	var bInTag=false;
	var bInATag=false;
	var bAddEndingSlash=false;
	var bAddAttributeQuote=false;
	var iListItem=0;
	
	for(var i=0;i<sString.length;i++)
	{
		var ch=sString.charAt(i);
		
		switch(ch)
		{
		case '=':
			if(bInTag)
			{
				if(sString.charAt(i+1)!='"')
				{
					if(bInATag!=true)
						{ch = '="';
						bAddAttributeQuote = true;}
				}
			}
			break;
		case '<':
			if(sString.charAt(i+1)=='A')
				bInATag = true;

			bInTag = true;
			sTag = '';
			bTagComplete = false;
			break;
		case '>':
			bInATag = false;
			switch(sTag)
			{
			case 'IMG':
			case 'img':
			case 'HR':
			case 'hr':
			case 'BR':
			case 'br':
				bAddEndingSlash = true;
				break;
			}

			if(bAddAttributeQuote)
			{
				bAddAttributeQuote = false;
				while(sReturn[sReturn.length]==' ')
				{
					sReturn = sReturn.mid(1,sReturn.length-1);
				}
				sReturn += '"';
				
				//alert(sReturn);
			}
					
			if(bAddEndingSlash)
			{
				ch = ' />';
				bAddEndingSlash = false;
			}
			bInTag = false;
			sTag = '';
			bTagComplete = false;
			break;
		case ' ':
			if(bInTag)
			{
				if(!bTagComplete)
				{
					bTagComplete = true;
				}
				else
				{
					if(bAddAttributeQuote)
					{
						bAddAttributeQuote = false;
						ch = '" ';
					}
				}
			}
			break;
		}
		
		if(!bInTag)
		{
			// add other meta-character conversions here if necessary
			switch(ch)
			{
			case '"':
				ch='&quot;';
				break;
			}
		}
		else
		{
			// here we gather the name of the TAG
			// this is used in the ending tag case to work out which
			// tags require the /> ending
			if(!bTagComplete)
			{
				if(ch!='<')
				{
					sTag += ch;
				}
			}
		}
		sReturn += ch;
	}
	
	// fix up the &nbsp; problem with XML
	
	<% if(editversion="members")then%>
	sReturn = sReturn.replace(/http:\/\/<%=setup_ServerName%>\/<%=setup_SiteLocation%>\/content\//g,'../content/');
	sReturn = sReturn.replace(/http:\/\/localhost\/<%=setup_SiteLocation%>\/content\//g,'../content/');
	<%end if%>
	sReturn = sReturn.replace(/http:\/\/<%=setup_ServerName%>\/<%=setup_SiteLocation%>\/content\//g,'');
	sReturn = sReturn.replace(/http:\/\/localhost\/<%=setup_SiteLocation%>\/content\//g,'');
	sReturn = sReturn.replace(/nbsp/g,'#160');
	sReturn = sReturn.replace(/border="1"/g,'border="0"');
	
	return(sReturn);
}



function ToggleEditor(layerName){

	if(editorvisible == false){
		editorvisible = true;
		document.all['iEditor'].style.border = "1px solid #bbbbbb";
		document.all['iEditor'].style.left = "-1";
		document.all['iEditor'].style.top = "-1";
		iEditor.contentEditable = 'true';
		ShowLayer(layerName);
		iEditor.focus();
		document.body.scrollTop = 0;
	}
	else{
		if(editMode != "design")
		SetDesignMode();
		editorvisible = false;
		document.all['iEditor'].style.top = "0";		
		document.all['iEditor'].style.left = "0";
		document.all['iEditor'].style.border = "none";		
		iEditor.contentEditable = 'false';
		HideLayer(layerName);
	}
}

</script>

<style>
#myChaser {
    position:absolute;
    left:<%=setup_ToolbarLeft%>px;
    top:0px;
    width:140px;
    color:#555555; 
    font-family:verdana, arial, sans-serif;
    font-size:12px;
    z-index:1000;
}

/* Save Edit Toolbar */
div.savetoolbar{
	width:80;
	width:39;
	left:<%=toolbarx%>;
	top:<%=toolbary%>;
	position:absolute;
	z-index:4;
}

/* Save Edit Toolbar */
.seperator{
	cursor:move;
}


.contentToolbar
{
	background-color:#C0C0C0;
	font-family: Verdana, Arial, Helvetica;
	font-size: 8pt;
	border: thin outset; 
	color:menutext; 
	background-image: url(<%=site%>InplaceEditor\images\bgtoolbar.jpg);
}
</style>

<%if(editversion="members")then%>
<!-- <form name=frmSavePage> -->
<%else%>
<form name=frmSavePage action="<%=site%>utilities/SavePage.asp" method="post" ID="Form1"> 

<!-- this example uses an asp page "SavePage.asp" to handle the data but you may use cfm, cgi, php etc
	to do somthing with the following form element "pagetext" -->
<input type=hidden name=pagetext>
<input type=hidden name=menuid value="<%=rsPage("menuid")%>">
<input type=hidden name=contentid value="<%=rsPage("menuid")%>">
<input type=hidden name=name value="<%=rsPage("data")%>">
<%     

	if(not len(rsPage("keywords"))>0)then
		keywords = setup_DefaultKeywords
	else
		keywords = rsPage("keywords")
	end if
	if(not len(rsPage("description"))>0 AND not isNull(rsPage("description")) )then
		description = setup_DefaultDescription
	else
		description = rsPage("description")
	end if
	%>
<input type=hidden name=keywords value="<%=decode(keywords)%>" ID="Hidden1">
<input type=hidden name=description value="<%=decode(description)%>" ID="Hidden2">
<input type=hidden name=url value="http://<%=setup_ServerName & site & rsPage("data")%>" ID="Hidden3">
<%end if%>

<DIV ID='myChaser'>
	<div id="divToolbar" class="contentToolbar" style="Z-INDEX: 999; VISIBILITY: hidden; POSITION: absolute; HEIGHT: 100px;">
		<table>
		<!-- <tr><td class=normal><b>Edit Toolbox</b></font></td></tr>-->
		<tr><td class=normal>
		<b>Edit Mode:</b><br>
		<input type=radio name=editmode id=radiodesign checked onClick=SetDesignMode();><a href="#" class=linkdark onclick="document.frmSavePage.radiodesign.checked=true;SetDesignMode();">Design</a>
		<input type=radio name=editmode id=radiosource onClick=SetSourceMode();><a href="#" class=linkdark onclick="document.frmSavePage.radiosource.checked=true;SetSourceMode();">Source</a>
		</td></tr>
		</table>
		<div id="divSourceToolbar" style="visibility:hidden;position:absolute;">
		<table cellpadding="0" cellspacing="5" border="0" width=100 ID="Table2">
		<tr>
			<td align="left" class=normal>
			
		Source Editing:<br><br>
		<font size=1>
            <b>Basic HTML Tags:</b><br>
            &lt;br&gt; for a New Line<br><br>
            &lt;p&gt; for a Paragraph<br><br>
            &lt;b&gt;<b>example</b>&lt;/b&gt;<br><br>
            &lt;i&gt;<i>example</i>&lt;/i&gt;<br><br>
			&lt;font color=red&gt;<br>
			<font color=red>example</font>&lt;/font&gt;<br><br>
			Bullet list:<br>
			&lt;li&gt;Apples<br>
			&lt;li&gt;Oranges<br>
			&lt;li&gt;Pears<br><br>
			
		</font>
		</td></tr></table>
		</div>				

		<div id=divDesignToolbar>				
		<table cellpadding="0" cellspacing="5" border="0" width=100 >
		<tr>
			<td align="left" colspan=2 class=normal>
			<%if(not editversion="members") then
			 response.Write "Page Theme:<br>"
			 SelectTemplateList 			 
			 end if%>
						  <br><br>Font:<br>
						  <SELECT onchange="cmdExec('fontname',this[this.selectedIndex].value);this[0].selected=true;" id=select1 name=select1 class=selectfield size=1> <OPTION selected>Font Face</OPTION> <OPTION value=Arial>Arial</OPTION> 
						  <OPTION value="Arial Black">Arial Black</OPTION> <OPTION value="Arial Narrow">Arial Narrow</OPTION> <OPTION value="Comic Sans MS">Comic Sans</OPTION> <OPTION value="Courier New">Courier New</OPTION> <OPTION value=System>System</OPTION> <OPTION value=Tahoma>Tahoma</OPTION> 
						  <OPTION value="Times New Roman">Times Roman</OPTION> <OPTION value=Verdana>Verdana</OPTION> <OPTION value=Wingdings>Wingdings</OPTION>
						  </SELECT>
						  <SELECT onchange="setStyle(this[this.selectedIndex].value);this[0].selected=true;" id=select2 name=select2 class=selectfield> 
						  <OPTION selected>Font Style</OPTION>
						  <OPTION value=Normal>Normal</OPTION> 
						  <OPTION value="bigtext">Big Text</OPTION>
						  <OPTION value="reallybigtext">Really Big Text</OPTION>
						  <OPTION value="smallcaps">Small Caps</OPTION>
						  <OPTION value="Normal"></OPTION>
						  </SELECT>
						  <SELECT onchange="cmdExec('fontsize',this[this.selectedIndex].value);this[0].selected=true;" id=select3 name=select3 class=selectfield> <OPTION selected>Font Size</OPTION> <OPTION value=1>1</OPTION> <OPTION value=2>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> 
						  <OPTION value=5>5</OPTION> <OPTION value=6>6</OPTION> <OPTION value=7>7</OPTION> <OPTION value=8>8</OPTION> <OPTION value=10>10</OPTION> <OPTION value=12>12</OPTION>
						  </SELECT>
				</td>
				
		</tr>
		</table>
		
		<table cellpadding="0" cellspacing="0" border="0">
		<tr>
		<td align="right">

			<table cellspacing=1 cellpadding=3 align=left width=110>
			<tr>
			
			<td><a href="javascript:cmdExec('cut')"  class=link>
            <img hspace="0" vspace=0 border=0 align=absMiddle src="<%=site%>InplaceEditor/Images/Cut.gif" alt="Cut" border=0>
			</a></td>
				
			<td><a href="javascript:cmdExec('copy')"  class=link>
			<img hspace="0" vspace=0 border=0 align=absMiddle src="<%=site%>InplaceEditor/Images/Copy.gif" alt="Copy">
			</a></td>
				
			<td><a href="javascript:cmdExec('paste')" class=link>
			<img hspace="0" vspace="0" align=absMiddle src="<%=site%>InplaceEditor/Images/Paste.gif" alt="Paste" border=0>
			</a></td>
			</tr>
			<tr>
			<td><a href="javascript:cmdExec('bold')"  class=link>
			<IMG alt=Bold hspace=0 src="<%=site%>InplaceEditor/Images/Bold.gif" align=absMiddle vspace=0 border=0 border=0>
			</a>
			</td>
				
			<td><a href="javascript:cmdExec('italic')" class=link>
			<IMG alt=Italic hspace=0 src="<%=site%>InplaceEditor/Images/Italic.gif" align=absMiddle vspace=0 border=0 border=0>
            </a></td>
				
			<td><a href="javascript:cmdExec('underline')"  class=link>
			<IMG alt=Underline hspace=0 src="<%=site%>InplaceEditor/Images/Under.gif" align=absMiddle vspace=0 border=0>
			</a></td>
			</tr>
			<tr>
			<td><a href="javascript:cmdExec('justifyleft')"  class=link>
			<IMG alt="Justify Left" hspace=0 src="<%=site%>InplaceEditor/Images/Left.gif" align=absMiddle vspace=0 border=0>
			</a></td>
				
			<td><a href="javascript:cmdExec('justifycenter')"  class=link>
			<IMG alt=Center hspace=0 src="<%=site%>InplaceEditor/Images/Center.gif" align=absMiddle vspace=0 border=0>
			</a></td>
				
			<td><a href="javascript:cmdExec('justifyright')"  class=link>
			<IMG alt="Justify Right" hspace=0 src="<%=site%>InplaceEditor/Images/Right.gif" align=absMiddle vspace=0 border=0>
			</a></td>
			</tr>
			<tr>
			<td><a href="javascript:cmdExec('insertorderedlist')"  class=link>
			<IMG alt="Ordered List" hspace=0 src="<%=site%>InplaceEditor/Images/numlist.GIF" align=absMiddle vspace=0 border=0>
			</a></td>
				
			<td><a href="javascript:cmdExec('outdent')"  class=link>
			
			<IMG alt="Decrease Indent" hspace=0 src="<%=site%>InplaceEditor/Images/deindent.gif" align=absMiddle vspace=0 border=0>
			</a></td>
					
			<!--<td><a href="javascript:" onClick="foreColor()">-->
			<td><a href="javascript:foreColor()"  class=link>
			<IMG alt=Forecolor hspace=0 src="<%=site%>InplaceEditor/Images/fgcolor.gif" align=absMiddle vspace=0 border=0>
			</a></td>
			</tr>
			<tr>
			<td><a href="javascript:cmdExec('insertunorderedlist')"  class=link>
			<IMG alt="Unordered List" hspace=0 src="<%=site%>InplaceEditor/Images/bullist.GIF" align=absMiddle vspace=0 border=0>
			</a></td>
				
			<td><a href="javascript:cmdExec('indent')" class=link>
			<IMG alt="Increase Indent" hspace=0 src="<%=site%>InplaceEditor/Images/inindent.gif" align=absMiddle vspace=0 border=0>
			</a></td>
				
			<td><a href="javascript:createLink()" class=link>
			<IMG alt=Link hspace=0 src="<%=site%>InplaceEditor/Images/Link.gif" align=absMiddle vspace=0 border=0>
			</a></td>
			</tr>
			<tr>

			<td><a href="javascript:insertAnchor();" class=link>
			<IMG alt="Insert Anchor" hspace=0 src="<%=site%>InplaceEditor/Images/icon-anchor.gif" align=absMiddle vspace=4 border=0>
			</a></td>			
				
			<td><a href="javascript:insertTable()" class=link>
			<IMG alt=Table hspace=0 src="<%=site%>InplaceEditor/Images/table.gif" align=absMiddle vspace=0 border=0>
			</a></td>

			<td><a href="javascript:Save('iEditor');" class=link>
			<IMG alt=Save hspace=0 src="<%=site%>InplaceEditor/Images/Save.gif" align=absMiddle vspace=0 border=0>
			</a></td>			
			</tr>
			<tr>
			<td colspan=3 class=normal align=left><a href="javascript:openImageLib();" class=linkdark>
			<IMG alt=Image hspace=0 src="<%=site%>InplaceEditor/Images/Image.gif" align=absMiddle vspace=0 border=0>
			Insert Image</a></td> 
			</tr>
			<tr>
			<td colspan=3 class=normal align=left><a href="javascript:openFileLibrary();" class=linkdark>
			<IMG alt="Insert File" hspace=0 src="<%=site%>InplaceEditor/Images/icon-text.gif" border=0 align=absMiddle vspace=2 hspace=2>
			Insert File&nbsp;</a></td> 
			</tr>
			<%if(not editversion="members")then%>
			<tr>
			<td colspan=3 class=normal align=left><a href="javascript:SEO();" class=linkdark>
			<IMG alt="Search Engine Optimisation" hspace=0 src="<%=site%>InplaceEditor/Images/icon-html.gif" align=absMiddle vspace=0 border=0>
			SE Optimise</a></td> 
			</tr>			

			<% 
			response.Write "</form>"
			end if %>
			</table>
			
		</td>
		</tr></table>
		</div> 
		
		</div>
</div>

<script language=Javascript src="<%=site%>InplaceEditor/chaser.js"></script>

<!-- toolbox at to bar -->
<%if(not editversion="members")then%>

<div id=divEditSave class=savetoolbar onMouseUp="if(curElement!=null){SaveToolbarPos();}curElement=null;">
<table cellspacing=0 cellpadding=0 ID="Table1"><tr>
<td><div class=seperator onMouseDown=DoMouseDown(getObj('divEditSave'));><img src="<%=site & "gfx/toolbar-seperator.gif"%>" border=0 alt="Move Toolbar"></div></td>
<td><a href="javascript:ToggleEditor('divToolbar');" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('edit','','<%=site & "gfx/toolbar-edit-over.gif"%>',0)"><img src="<%=site & "gfx/toolbar-edit.gif"%>" name=edit border=0 alt="Edit Page (Ctrl+E)"></a></td>
<td><a href="javascript:Save('iEditor');" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('save','','<%=site & "gfx/toolbar-save-over.gif"%>',0)"><img src="<%=site & "gfx/toolbar-save.gif"%>" name=save border=0 alt="Save Page (Ctrl+S)"></a></td>
</tr></table>
</div>
<% end if %>

<%if(editversion="members")then%>
<DIV id="iEditor" style="POSITION:relative;width:600;left:0;visibility:visible;" onClick="editorvisible = false;if(isIE55()){ToggleEditor('divToolbar');}">
<%else%>
<DIV id="iEditor" style="POSITION:relative;width:600;left:0;visibility:visible;">
<% end if%>

<% 

end function 

function CloseEdit
	response.write closingTag
end function

Function SelectTemplateList()
    'Generates the directory list from a parent directory
    set fldr = FileListing(AbsPath(site & "themes"))
    strSelected = rsPage("template")
    
    if(not len(strSelected)>0)then
		strSelected = setup_StandardTemplate
	end if
    chk = ""
	%> <select class=selectfield name=template ID="Select4" onchange="Save('divContent');">
       <option value="">Page Theme</option>
	<%
    for each item in fldr
		if(right(item.name,4)=".asp")then
			if  strSelected = "../themes/" & item.name then
				response.Write "<option value=" & item.name & " selected>" & item.name & "</option>"
			else 
				response.Write "<option value=" & item.name & ">" & item.name & "</option>"
			end if
        end if
    next
  	response.write "</select>"
    Set fso = nothing
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