一个免费的邮件列表源程序(二)
ShowSource.asp
<%@ Language=JavaScript %>
<!--#include file = "include/SetGlobals.asp"-->
<%
// get the page to display from the URL
var sPage = "" + Request.QueryString ( "page" );
// make sure it"s a page we allow them to view!
switch ( sPage )
{
case "Wider":
case "COM":
case "Handle404":
case "Categories":
case "CategoryPage":
case "Columns":
case "ResultsPage":
case "Date":
case "Contact":
case "Subscribe":
case "MailToList":
break;
default:
Response.Redirect ( "NaughtyNaughty!" );
}
// output relevant meta tags
Init( "ASP source example" );
// output common top of page
Header( "<a href="work.asp">Work</a> --> <a href="" + sPage + ".asp">"" + sPage + ".asp"</a> --> Source", 3 );
// output page content
Content ( );
// output common bottom of page
Footer ( );
%>
<% /* standard page elements */ %>
<!--#include file = "utils/Init.asp"-->
<!--#include file = "utils/Header.asp"-->
<!--#include file = "utils/Footer.asp"-->
<!--#include file = "utils/ShowFile.asp"-->
<%
// ============================================
// the content of this page
// ============================================
function Content ( )
{
Out ( "<td width="20%"> </td>" );
Out ( "<td width="60%">" );
// create handle to FileSystemObject
var oFSO = Server.CreateObject ( "Scripting.FileSystemObject" );
// each source file that we show source for could have a related
// documentation file for us to display before and after the
// source. for now, I use a generic header and footer file. the
// "true" tells ShowFile to pass through any HTML to the browser.
ShowFile ( oFSO, "Generic.pre", true, false );
switch ( sPage )
{
case "Categories":
case "CategoryPage":
case "Columns":
Out ( "<p><img src="images/new.gif"> <a href="Categories.zip">Download</a> all the source for the category demonstration!<p>" );
break;
}
ShowSource ( oFSO, sPage + ".asp", true );
// show any extra utility file(s) too
switch ( sPage )
{
case "Wider":
ShowSource ( oFSO, "include/SetGlobals.asp", true );
ShowSource ( oFSO, "utils/Header.asp", true );
break;
case "Categories":
case "CategoryPage":
case "Columns":
case "Subscribe":
case "MailToList":
ShowSource ( oFSO, "utils/Database.asp", true );
break;
case "Categories":
case "CategoryPage":
case "Columns":
ShowSource ( oFSO, "utils/ShowCategory.asp", true );
break;
}
// show the generic footer
ShowFile ( oFSO, "Generic.pst", true, false );
// we"ve finished with the object so free the resource
oFSO = null;
Out ( "<p><center><a href="FSO.asp"><img src="images/source.gif" border=0></a></center>" );
Out ( "</td>" );
Out ( "<td width="20%"> </td>" );
}
%>
utils/ShowFile.asp
<%
// have we advertized our mailing list yet?
var bDoneLink = false;
// ============================================
// display the contents of the given file
// ============================================
function ShowFile ( oFSO, sFile, bPassHTML, bShowName )
{
var ForReading = 1;
// var ForWriting = 2;
// var ForAppending = 8;
// open asp file for reading
var fFile = oFSO.OpenTextFile ( Server.MapPath( sFile ), ForReading );
// read entire file contents into variable
var s = fFile.ReadAll ( );
if ( !bPassHTML )
{
// replace & with & so HTML displayed, not interpreted
s = s.replace ( /&/g, "&" );
// replace < with < so HTML displayed, not interpreted
s = s.replace ( /</g, "<" );
// replace newline with HTML equivalent
s = s.replace ( /
/g, "<br>" );
// replace tabs with 3 spaces
s = s.replace ( / /g, " " );
// show filename and change font color for source code
s = "<font color="black">" + s + "</font>";
if ( bShowName )
s = "<h4>" + sFile + "</h4>" + s;
}
Out ( s );
fFile.Close ( );
}
// ============================================
// show a source file outside the table
// ============================================
function ShowSource ( oFSO, sFile, bShowName )
{
// advertize our mailing list before the first source file
if ( !bDoneLink )
{
bDoneLink = true;
Out ( "<p><b>Get informed when the source code below changes!</b> <a href="subscribe.asp">Subscribe to our mailing list.</a>" );
}
Out ( "</td>" );
Out ( "<td width="20%"> </td></tr><tr><td colspan=3 width="100%" bgcolor="#ff9900">" );
// show news file
ShowFile ( oFSO, sFile, false, bShowName );
Out ( "</td></tr><tr><td width="20%"> </td>" );
Out ( "<td width="60%">" );
}
%>
|