声明:本文非我所写,只是为了方便阅读和整理资料的需要,写在空间里.文章版权归原作者所有.
安装:
安装是非常容易的,首先你要做的就是把eWebEditor文件上传到你的网站,请按以下步骤进行:
- 从eWebEditor产品网站下载最新的版本。
- 解压下载下来的压缩文件到你本机(确定eWebEditor内的目录文件结构层次保持与压缩文件内一致)。
- 在你的站点上建一个新文件夹,如:/eWebEditor/(最好在要目录下,调用更方便)。
- 把eWebEditor在的所有文件及目录上传到你站点刚才建立的文件夹中。
- 运行例子文件(http://www.yoursite.com/ewebeditor/example/test.asp),看是否运行正常。OK。
设置:
eWebEditor带有后台管理功能,你可以方便对样式,上传文件等进行管理。设置请注意:
- 后台管理的登录地址:http://www.yoursite.com/ewebeditor/admin_login.asp
- 第一次安装请用默认用户admin和密码admin登陆后台,并进入管理页面更改管理用户和密码
- 建议安装好后,更改数据库名字,以免别人恶意下载,默认数据名为db/ewebeditor.mdb,更改名字后请修改include/startup.asp文件中相关连接
- 系统自带有几个标准样式,不允许修改,在你新增样式时,最好先预览,然后通过“拷贝标准样式”的方式,以达到快速新增样式的目的,且不易出错
调用:
eWebEditor的调用是非常简单,基本上只是在原来的使用中加入一行代码。
标准调用:
<iframe ID="eWebEditor1" src="/ewebeditor.asp?id=content1&style=standard" frameborder="0" scrolling="no" width="500" HEIGHT="350"></iframe>
参数说明:
- /ewebeditor.asp应改为你实际安装的路径
- 参数id:相关联的表单项名,也就是提交保存页要引用的表单项名,多个调用时,请保证id不同,可参见后面例子
- 参数style:使用的样式名,可以是标准的样式名或自定义的样式名,如果使用标准standard可留空
- width,height:根据实际需要设置,eWebEditor将自动调整与其适应
- 在后台管理中,可以得到每个样式的最佳调用代码
所有入口参数:(即:eWebEditor.asp?后面的参数)
- id:相关联的保存编辑内容的表单项名,也就是提交保存页要引用的表单项名
- style:使用的样式名,可以是标准的样式名或自定义的样式名,如果使用标准standard可留空
- originalfilename:相关联的保存上传原文件名列表的表单项名,必须是input类型,可以带onchange事件[例子]
- savefilename:相关联的保存上传保存文件名列表的表单项名,必须是input类型,可以带onchange事件[例子]
- savepathfilename:相关联的保存上传保存文件名(带路径)列表的表单项名,必须是input类型,可以带onchange事件[例子]
例子:新增表单
你原来可能是:
<textarea name="content1" rows=10 cols=50></textarea>
现在是:
<input type="hidden" name="content1" value=""> <iframe ID="eWebEditor1" src="/ewebeditor.asp?id=content1&style=standard" frameborder="0" scrolling="no" width="500" HEIGHT="350"></iframe>
或者
<textarea name="content1" style="display:none"></textarea> <iframe ID="eWebEditor1" src="/ewebeditor.asp?id=content1&style=standard" frameborder="0" scrolling="no" width="500" HEIGHT="350"></iframe>
例子:修改表单
你原来可能是:
<textarea name="content1" rows=10 cols=50><%=Server.HTMLEncode(oRs("D_Content"))%></textarea>
现在是:
<input type="hidden" name="content1" value="<%=Server.HTMLEncode(oRs("D_Content"))%>"> <iframe ID="eWebEditor1" src="/ewebeditor.asp?id=content1&style=standard" frameborder="0" scrolling="no" width="500" HEIGHT="350"></iframe>
或者
<textarea name="content1" style="display:none"><%=Server.HTMLEncode(oRs("D_Content"))%></textarea> <iframe ID="eWebEditor1" src="/ewebeditor.asp?id=content1&style=standard" frameborder="0" scrolling="no" width="500" HEIGHT="350"></iframe>
注意事项:
- eWebEditor允许在同一表单里有多个,但请保证id在整个网页中是唯一的。即如果已经用了input name=content1第二个调用就要input name=content2之类的。
- 在使用textarea作为原表单项时,要加入style="display:none"。
- 在input修改时一定要用value="",而不是value=''。
- 一定要在动态加入value值时用Server.HTMLEncode()进行处理,否则有可能内容被截掉。
高级调用:
eWebEditor还提供了一些高级调用的方法,如下,但请保证大小写一致:
- getHTML():返回编辑器的内容
- setHTML( html ):设置编辑器的内容
- insertHTML( html ):在当前选择处插入内容
- appendHTML( html ):在文档末尾追加内容
- setMode( NewMode ):改变当前编辑状态
参数NewMode:
- "CODE":代码状态
- "EDIT":编辑状态
- "TEXT":文本状态
- "VIEW":预览状态
使用例子如下:[在线演示]
<Script Language=javascript> // 取编辑器内容 var sHTML = eWebEditor1.getHTML(); // 设置编辑器内容 eWebEditor1.setHTML('<b>Hello My World!</b>'); // 在当前选择处理插入 eWebEditor1.insertHTML('This is Insert Function!'); // 在尾部追加内容 eWebEditor1.appendHTML('This is Append Function!'); // 改变编辑器状态为代码编辑状态 eWebEditor1.setMode('CODE'); </Script>
取值说明:
由于eWebEditor有对大表单进行自动处理,所以在取值时有些不同,具体如下:
原来是
<% sContent = Request.Form("content1") %>
现在是
<% For i = 1 To Request.Form("content1").Count sContent = sContent & Request.Form("content1")(i) Next %>
接口:弹窗调用说明:
v2.7.5版本后加入了弹窗调用接口的扩充功能,能实现通过一个链接弹窗打开编辑器,并将编辑的内容保存入指定的表单域。
在eWebEditor根目录下文件名为PopUp.asp,提供的接口传入参数如下:
- style : 样式名
- form : 要返回或设置值的表单form名
- field : 要返回或设置值的表单项textarea名
使用例子如下:[在线演示]
<HTML> <BODY> <Script Language=javascript> function eWebEditorPopUp(style, form, field) { var oPopUp = window.open("PopUp.asp?style="+style+"&form="+form+"&field="+field, "PopUp"+form+field, "toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes"); } </Script> <FORM ACTION="" METHOD="" NAME="myForm"> <TEXTAREA NAME="myField" COLS="50" ROWS="5"></TEXTAREA> <INPUT TYPE="BUTTON" VALUE="HTML编辑" onCLICK="eWebEditorPopUp('s_popup', 'myForm', 'myField')"> </FORM> </BODY> </HTML>
接口:前台解释(限制)扩充功能说明:
此功能禁用某些标签,如出于安全考虑的Script标签,等。各版本可能有所不同,请参看实际文件中的说明:
Function eWebEditor_DeCode(s_Content, sFilters)
- s_Content : 要转换的数据字符串
- s_Filters : 要过滤掉的格式集,用逗号分隔多个
使用例子如下:
先包含扩展功能文件,以下路径相应更改 <!--#include file = "Include/DeCode.asp"-->
<% ' 此例只过滤SCRIPT标签,即意味着内容中的客户端脚本不会生效,您可根据实际的需要加入其它标签。 sContent = eWebEditor_DeCode(sContent, "SCRIPT") %>
更多使用说明请参看[代码实例],每个程序文件中都有足够详细的注释。
在这里我们通过一个简单的新闻系统,对eWebEditor的使用进行详尽的实例代码说明。之所以把新闻系统作为eWebEditor功能使用的一个例子,原因在于新闻系统很具有代表性,基本上eWebEditor所具有的功能都能在此系统上给予体现。
此例子专门使用系统自带样式s_newssystem,此样式使用相对路径保存上传文件,所有上传的文件或远程获取的文件都存在文件夹下的NewsFile文件夹下,所有路径的格式都类似为"NewsFile/XXX.gif",此样式的远程获取模式为自动打开状态,即说明当提交表单时,编辑内容中的所有远程图片将自动上传到本地服务器。 在例子中文件中都有对每一步骤进行详细的注释,您可以根据实际使用的需要对某些操作步骤或功能进行增删改。 此例子以ACCESS 2000作为数据库保存新闻内容,数据库文件db.mdb中,表的每个字段都有注释,以便于您更好的了解eWebEditor的功能及使用方法。(附:系统数据库ewebeditor.mdb表字段也是有注释的,注释是我们的规定作法,希望您能更了解我们的系统) 此实例打包在 eWebEditor Version 2.7.5 压缩包中
在线演示地址:http://eWebEditor.webasp.net/eWebEditor/Example/NewsSystem/List.asp
实例安装说明: [顶部]
此实例打包在系统下载压缩包中,在目录Example/NewsSystem/下。要使用此例子,请按如下步骤:
您必须把下载的压缩包eWebEditor目录设为虚拟目录,且虚拟目录名必须为eWebEditor,之所以有此要求,是因为此新闻例子默认设置的上传文件路径的要求。 设置完后访问以下地址: http://Localhost/eWebEditor/Example/NewsSystem/List.asp
实例文件结构说明: [顶部]
所有文件存放在Example/NewsSystem目录下,各文件的说明如下:
DB.mdb:ACCESS数据库文件 Startup.asp:每页公用包含文件,包括数据库连接,公用基本函数,头尾部内容 Add.asp:增加新闻表单页 AddSave.asp:增加新闻保存页 Modify.asp:修改新闻表单页 ModifySave.asp:修改新闻保存页 List.asp:新闻列表页 Delete.asp:删除新闻操作页 Show.asp:显示新闻内容页
实例数据结构说明: [顶部]
此例子以ACCESS 2000作为数据库,数据库中只有一个表。新闻数据表:用于存入新闻的内容数据,如新闻标题、新闻内容、上传文件名及路径等。具体表结构如下:
新闻数据表:[NewsData]
字段名类型大小主键可空说明 D_ID 自动编号长整型是 唯一识别ID D_Title 文本 200 新闻标题 D_Content 备注 新闻内容 D_Picture 文本 50 是新闻标题图片 D_OriginalFileName 备注 是上传或远程获取前原文件名,多个以"|"分隔 D_SaveFileName 备注 是上传后保存的文件名,多个以"|"分隔 D_SavePathFileName 备注 是上传后保存的路径文件名(带路径),多个以"|"分隔
公用文件:Startup.asp [顶部][目录]
<%@ Language=VBScript CODEPAGE=936%> <% Option Explicit %>
<%
' ============================================ ' 常用全局变量 ' ============================================ ' 数据库对象 Dim oConn, oRs, sSql
' ============================================ ' 初始数据处理 ' ============================================ ' 初始化数据库连接 Call DBConnBegin()
' ******************************************** ' 以下为数据库相关函数 ' ******************************************** ' ============================================ ' 初始化数据库连接对象 ' 使用原则:最迟调用,最早释放 ' ============================================ Sub DBConnBegin() ' 如果数据库对象已打开,不要再打开 If IsObject(oConn) = True Then Exit Sub
' 你可以不需要打开数据库连接对象而直接打开记录集对象,但如果你需要打开多个记录集对象的话,效率是很低的。 ' 如果你不创建一个数据库连接对象,ADO会在每个记录集打开时自动创建一个新的数据库连接对象,就算你用的是相同的SQL语句。 Set oConn = Server.CreateObject("ADODB.Connection")
On Error Resume Next ' Access数据库 oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db.mdb") If Err.Number > 0 Then ' 显示错误信息,并且发送邮件通知管理员 'Call DBConnError(Err) ' 完全地退出正在运行的脚本 Response.End End If
' 创建一个记录集 Set oRs = Server.CreateObject( "ADODB.Recordset" ) End Sub
' ============================================ ' 释放数据库连接对象 ' ============================================ Sub DBConnEnd() On Error Resume Next oRs.Close Set oRs = Nothing oConn.Close Set oConn = Nothing End Sub
' ******************************************** ' 以下为常用函数 ' ******************************************** ' ============================================ ' 错误返回处理 ' ============================================ Sub GoError(str) Call DBConnEnd() Response.Write "<script language=javascript>alert('" & str & "\n\n系统将自动返回前一页面...');history.back();</script>" Response.End End Sub
' ============================================ ' 得到安全字符串,在查询中或有必要强行替换的表单中使用 ' ============================================ Function GetSafeStr(str) GetSafeStr = Replace(Replace(Replace(Trim(str), "'", ""), Chr(34), ""), ";", "") End Function
' ============================================ ' 把字符串进行HTML解码,替换server.htmlencode ' 去除Html格式,用于显示输出 ' ============================================ Function outHTML(str) Dim sTemp sTemp = str outHTML = "" If IsNull(sTemp) = True Then Exit Function End If sTemp = Replace(sTemp, "&", "&") sTemp = Replace(sTemp, "<", "<") sTemp = Replace(sTemp, ">", ">") sTemp = Replace(sTemp, Chr(34), """) sTemp = Replace(sTemp, Chr(10), "<br>") outHTML = sTemp End Function
' ============================================ ' 去除Html格式,用于从数据库中取出值填入输入框时 ' 注意:value="?"这边一定要用双引号 ' ============================================ Function inHTML(str) Dim sTemp sTemp = str inHTML = "" If IsNull(sTemp) = True Then Exit Function End If sTemp = Replace(sTemp, "&", "&") sTemp = Replace(sTemp, "<", "<") sTemp = Replace(sTemp, ">", ">") sTemp = Replace(sTemp, Chr(34), """) inHTML = sTemp End Function
' =============================================== ' 初始化下拉框 ' s_FieldName : 返回的下拉框名 ' a_Name : 定值名数组 ' a_Value : 定值值数组 ' v_InitValue : 初始值 ' s_Sql : 从数据库中取值时,select name,value from table ' s_AllName : 空值的名称,如:"全部","所有","默认" ' =============================================== Function InitSelect(s_FieldName, a_Name, a_Value, v_InitValue, s_Sql, s_AllName) Dim i InitSelect = "<select name='" & s_FieldName & "' size=1>" If s_AllName <> "" Then InitSelect = InitSelect & "<option value=''>" & s_AllName & "</option>" End If If s_Sql <> "" Then oRs.Open s_Sql, oConn, 0, 1 Do While Not oRs.Eof InitSelect = InitSelect & "<option value=""" & inHTML(oRs(1)) & """" If oRs(1) = v_InitValue Then InitSelect = InitSelect & " selected" End If InitSelect = InitSelect & ">" & outHTML(oRs(0)) & "</option>" oRs.MoveNext Loop oRs.Close Else For i = 0 To UBound(a_Name) InitSelect = InitSelect & "<option value=""" & inHTML(a_Value(i)) & """" If a_Value(i) = v_InitValue Then InitSelect = InitSelect & " selected" End If InitSelect = InitSelect & ">" & outHTML(a_Name(i)) & "</option>" Next End If InitSelect = InitSelect & "</select>" End Function
' ============================================ ' 每页头部内容 ' ============================================ Sub Header(str) Response.Write "<HTML><HEAD><TITLE>eWebEditor在线编辑器 - 例子:新闻系统</TITLE><style>body,p,td,input {font-size:9pt}</style></HEAD><BODY>" Response.Write "<p align=center><a href='list.asp'>新闻列表</a> | <a href='add.asp'>增加新闻</a></p>" Response.Write "<p align=center><b>" & str & "</b></p>" End Sub
' ============================================ ' 每页底部内容 ' ============================================ Sub Footer() Call DBConnEnd() Response.Write "</BODY></HTML>" End Sub
%>
增加新闻:Add.asp [顶部][目录]
<!--#include file = "Startup.asp"-->
<%
' ====================== ' 功能:增加新闻 ' 描述:提供一个新增表单,包括新闻标题和新闻内容,新闻内容使用eWebEditor进行编辑; ' 同时接收上传文件,以便删除新闻时,同时删除上传文件; ' 并由编辑区中上传的文件,提供标题新闻的图片选择。 ' ======================
Call Header("增加新闻") Call Content() Call Footer()
' 本页内容区 Sub Content() %>
<Script Language=javascript> // 当上传图片等文件时,往下拉框中填入图片路径,可根据实际需要更改此函数 function doChange(objText, objDrop){ if (!objDrop) return; var str = objText.value; var arr = str.split("|"); var nIndex = objDrop.selectedIndex; objDrop.length=1; for (var i=0; i<arr.length; i++){ objDrop.options[objDrop.length] = new Option(arr[i], arr[i]); } objDrop.selectedIndex = nIndex; }
// 表单提交客户端检测 function doSubmit(){ if (document.myform.d_title.value==""){ alert("新闻标题不能为空!"); return false; } // getHTML()为eWebEditor自带的接口函数,功能为取编辑区的内容 if (eWebEditor1.getHTML()==""){ alert("新闻内容不能为空!"); return false; } document.myform.submit(); } </Script> <form action="addsave.asp" method="post" name="myform"> <% '取源文件名 %> <input type=hidden name=d_originalfilename> <% '取保存的方件名,如果不要带路径的填充下拉框,可以在下面的表单项加入onchange事件 %> <input type=hidden name=d_savefilename> <% '取保存的文件名(带路径),使用带路径的填充下拉框 %> <input type=hidden name=d_savepathfilename onchange="doChange(this,document.myform.d_picture)">
<table cellspacing=3 align=center> <tr> <td>新闻标题:</td> <td><input type="text" name="d_title" value="" size="90"></td> </tr> <tr> <td>标题图片:</td> <td><select name="d_picture" size=1><option value=''>无</option></select> 当编辑区有插入图片时,将自动填充此下拉框</td> </tr> <tr> <td>新闻内容:</td> <td> <% ' ewebeditor.asp文件调用的参数: ' id:下面表单项textarea的名称,在此表单中是d_content,注意大小写 ' style:编辑器的样式名称,可在eWebEditor的后台设置 ' originalfilename:用于获取源文件名的表单项名,在此表单中是d_originalfilename ' savefilename:用于获取保存文件名的表单项名,在此表单中是d_savefilename ' savepathfilename:用于获取保存带路径文件名的表单项名,在此表单中是d_savepathfilename %> <textarea name="d_content" style="display:none"></textarea> <iframe ID="eWebEditor1" src="ewebeditor.asp?id=d_content &style=s_newssystem &originalfilename=d_originalfilename &savefilename=d_savefilename &savepathfilename=d_savepathfilename" frameborder="0" scrolling="no" width="550" HEIGHT="350"></iframe> </td> </tr> </table> <p align=center><input type=button name=btnSubmit value=" 提 交 " onclick="doSubmit()"> <input type=reset name=btnReset value=" 重 填 "></p> </form>
<% End Sub
%>
增加新闻保存:AddSave.asp [顶部][目录]
<!--#include file = "Startup.asp"--> <%
' ====================== ' 功能:增加新闻保存页 ' 描述:对add.asp文件提交过来的表单数据进行保存操作,有保存新闻标题,新闻内容,新闻标题图片; ' 同时保存所有此篇新闻所有相关的上传或远程获取的文件信息,有源文件名,保存文件名,保存路径文件名。 ' ======================
Call Header("增加新闻保存") Call Content() Call Footer()
' 本页内容区 Sub Content() Dim i
' 取提交过来的数据 ' 注意取新闻内容的方法,因为对大表单的自动处理,一定要使用循环,否则大于100K的内容将取不到,单个表单项的限制为102399字节(100K左右) Dim sTitle, sContent, sPicture sTitle = Request.Form("d_title") sPicture = Request.Form("d_picture")
' 开始:eWebEditor编辑区取值----------------- sContent = "" For i = 1 To Request.Form("d_content").Count sContent = sContent & Request.Form("d_content")(i) Next ' 结束:eWebEditor编辑区取值-----------------
' 以下为所有通过编辑器上传的所有文件相关信息,包括编辑区手动上传的和自动远程上传的 ' GetSafeStr函数为过滤一些特殊字符,防止有些人恶意的破坏此演示程序 ' 上传或远程获取前的原文件名,多个以"|"分隔 Dim sOriginalFileName ' 上传后保存到本地服务器的文件名(不带路径),多个以"|"分隔 Dim sSaveFileName ' 上传后保存到本地服务器的路径文件名,多个以"|"分隔 Dim sSavePathFileName sOriginalFileName = GetSafeStr(Request.Form("d_originalfilename")) sSaveFileName = GetSafeStr(Request.Form("d_savefilename")) sSavePathFileName = GetSafeStr(Request.Form("d_savepathfilename"))
' 保存新闻内容,同时取出自增的新闻ID Dim sNewsID sSql = "SELECT * FROM NewsData WHERE D_ID=0" oRs.Open sSql, oConn, 1, 3 oRs.AddNew oRs("D_Title") = sTitle oRs("D_Content") = sContent oRs("D_Picture") = sPicture oRs("D_OriginalFileName") = sOriginalFileName oRs("D_SaveFileName") = sSaveFileName oRs("D_SavePathFileName") = sSavePathFileName oRs.Update sNewsID = oRs("D_ID") oRs.Close ' 输出成功保存信息 Response.Write "新闻(ID:" & sNewsID & ")增加保存成功!"
End Sub
%>
修改新闻:Modify.asp [顶部][目录]
<!--#include file = "Startup.asp"-->
<%
' ====================== ' 功能:修改新闻 ' 描述:提供一个修改表单,包括新闻标题和新闻内容,新闻内容使用eWebEditor进行编辑; ' 同时接收上传文件,以便删除新闻时,同时删除上传文件; ' 并由编辑区中上传的文件,提供标题新闻的图片选择; ' 功能与新增相同,不同在于只是修改表单具有初始值。 ' ======================
Call Header("修改新闻") Call Content() Call Footer()
' 本页内容区 Sub Content() ' 传入参数:新闻ID Dim sNewsID sNewsID = Trim(Request("id"))
' 新闻ID有效性验证,防止有些人恶意的破坏此演示程序 If IsNumeric(sNewsID) = False Then GoError "请通过页面上的链接进行操作,不要试图破坏此演示系统。" End If
' 从数据库中取初始值 Dim sTitle, sContent, sPicture, sOriginalFileName, sSaveFileName, sSavePathFileName sSql = "SELECT * FROM NewsData WHERE D_ID=" & sNewsID oRs.Open sSql, oConn, 0, 1 If Not oRs.Eof Then sTitle = oRs("D_Title") sContent = oRs("D_Content") sPicture = oRs("D_Picture") sOriginalFileName = oRs("D_OriginalFileName") sSaveFileName = oRs("D_SaveFileName") sSavePathFileName = oRs("D_SavePathFileName") Else GoError "无效的新闻ID,请点页面上的链接进行操作!" End If oRs.Close ' 把带"|"的字符串转为数组,用于初始下拉框表单
Dim aSavePathFileName aSavePathFileName = Split(sSavePathFileName, "|")
' 根据新闻内容中相关上传文件为数据,初始下拉框表单 ' 函数InitSelect,根据数组值及初始值返回下拉框输出字串,具体请见startup.asp文件中函数的说明部分 Dim sOptionSavePath sOptionSavePath = InitSelect("d_picture", aSavePathFileName, aSavePathFileName, sPicture, "", "无")
%>
<Script Language=javascript> // 当上传图片等文件时,往下拉框中填入图片路径,可根据实际需要更改此函数 function doChange(objText, objDrop){ if (!objDrop) return; var str = objText.value; var arr = str.split("|"); var nIndex = objDrop.selectedIndex; objDrop.length=1; for (var i=0; i<arr.length; i++){ objDrop.options[objDrop.length] = new Option(arr[i], arr[i]); } objDrop.selectedIndex = nIndex; }
// 表单提交客户端检测 function doSubmit(){ if (document.myform.d_title.value==""){ alert("新闻标题不能为空!"); return false; } // getHTML()为eWebEditor自带的接口函数,功能为取编辑区的内容 if (eWebEditor1.getHTML()==""){ alert("新闻内容不能为空!"); return false; } document.myform.submit(); } </Script> <form action="modifysave.asp?id=<%=sNewsID%>" method="post" name="myform"> <% '取源文件名 %> <input type=hidden name=d_originalfilename value="<%=sOriginalFileName%>"> <% '取保存的方件名(带路径),如果不要带路径的填充下拉框,可以在下面的表单项加入onchange事件 %> <input type=hidden name=d_savefilename value="<%=sSaveFileName%>"> <% '取保存的文件名,使用带路径的填充下拉框 %> <input type=hidden name=d_savepathfilename onchange="doChange(this,document.myform.d_picture)" value="<%=sSavePathFileName%>">
<table cellspacing=3 align=center> <tr> <td>新闻标题:</td> <% ' 函数inHTML:去除Html格式,用于从数据库中取出值填入输入框时,具体请见startup.asp文件中函数的说明 %> <td><input type="text" name="d_title" value="<%=inHTML(sTitle)%>" size="90"></td> </tr> <tr> <td>标题图片:</td> <td><%=sOptionSavePath%> 当编辑区有插入图片时,将自动填充此下拉框</td> </tr> <tr> <td>新闻内容:</td> <td> <% ' ewebeditor.asp文件调用的参数: ' id:下面表单项textarea的名称,在此表单中是d_content,注意大小写 ' style:编辑器的样式名称,可在eWebEditor的后台设置 ' originalfilename:用于获取源文件名的表单项名,在此表单中是d_originalfilename ' savefilename:用于获取保存文件名的表单项名,在此表单中是d_savefilename ' savepathfilename:用于获取保存带路径文件名的表单项名,在此表单中是d_savepathfilename
' 请一定要用Server.HtmlEncode()函数对内容进行转换,否则将有可以出现某些内容出了编辑区的情况 %> <textarea name="d_content" style="display:none"><%=Server.HtmlEncode(sContent)%></textarea> <iframe ID="eWebEditor1" src="ewebeditor.asp?id=d_content &style=s_newssystem &originalfilename=d_originalfilename &savefilename=d_savefilename &savepathfilename=d_savepathfilename" frameborder="0" scrolling="no" width="550" HEIGHT="350"></iframe> </td> </tr> </table> <p align=center><input type=button name=btnSubmit value=" 提 交 " onclick="doSubmit()"> <input type=reset name=btnReset value=" 重 填 "></p> </form>
<% End Sub
%>
修改新闻保存:ModifySave.asp [顶部][目录]
<!--#include file = "Startup.asp"--> <%
' ====================== ' 功能:修改新闻保存页 ' 描述:对modify.asp文件提交过来的表单数据进行保存操作,有保存新闻标题,新闻内容,新闻标题图片; ' 同时保存所有此篇新闻所有相关的上传或远程获取的文件信息,有源文件名,保存文件名,保存路径文件名。 ' ======================
Call Header("修改新闻保存") Call Content() Call Footer()
' 本页内容区 Sub Content() Dim i
' 传入参数:新闻ID Dim sNewsID sNewsID = Trim(Request("id"))
' 新闻ID有效性验证,防止有些人恶意的破坏此演示程序 If IsNumeric(sNewsID) = False Then GoError "请通过页面上的链接进行操作,不要试图破坏此演示系统。" End If
' 取提交过来的数据 ' 注意取新闻内容的方法,因为对大表单的自动处理,一定要使用循环,否则大于100K的内容将取不到,单个表单项的限制为102399字节(100K左右) Dim sTitle, sContent, sPicture sTitle = Request.Form("d_title") sPicture = Request.Form("d_picture")
' 开始:eWebEditor编辑区取值----------------- sContent = "" For i = 1 To Request.Form("d_content").Count sContent = sContent & Request.Form("d_content")(i) Next ' 结束:eWebEditor编辑区取值-----------------
' 以下为所有通过编辑器上传的所有文件相关信息,包括编辑区手动上传的和自动远程上传的 ' GetSafeStr函数为过滤一些特殊字符,防止有些人恶意的破坏此演示程序 ' 上传或远程获取前的原文件名,多个以"|"分隔 Dim sOriginalFileName ' 上传后保存到本地服务器的文件名(不带路径),多个以"|"分隔 Dim sSaveFileName ' 上传后保存到本地服务器的路径文件名,多个以"|"分隔 Dim sSavePathFileName sOriginalFileName = GetSafeStr(Request.Form("d_originalfilename")) sSaveFileName = GetSafeStr(Request.Form("d_savefilename")) sSavePathFileName = GetSafeStr(Request.Form("d_savepathfilename"))
' 修改指定新闻内容 sSql = "SELECT * FROM NewsData WHERE D_ID=" & sNewsID oRs.Open sSql, oConn, 1, 3 If Not oRs.Eof Then oRs("D_Title") = sTitle oRs("D_Content") = sContent oRs("D_Picture") = sPicture oRs("D_OriginalFileName") = sOriginalFileName oRs("D_SaveFileName") = sSaveFileName oRs("D_SavePathFileName") = sSavePathFileName oRs.Update Else GoError "无效的新闻ID,请点页面上的链接进行操作!" End If oRs.Close
' 输出成功保存信息 Response.Write "新闻(ID:" & sNewsID & ")修改保存成功!"
End Sub
%>
新闻列表:List.asp [顶部][目录]
<!--#include file = "Startup.asp"-->
<%
' ====================== ' 功能:新闻列表 ' 描述:本页代码没有使用到eWebEditor相关的内容,只提供新闻列表,及显示、修改、删除新闻页的链接。 ' ======================
Call Header("新闻列表") Call Content() Call Footer()
' 本页内容区 Sub Content()
' 从新闻库中取出所有新闻,按ID倒排序 sSql = "SELECT * FROM NewsData ORDER BY D_ID DESC" oRs.Open sSql, oConn, 0, 1 If Not oRs.Eof Then Do While Not oRs.Eof Response.Write "<li>" ' 是否有新闻标题图片,如有则输出显示 If oRs("D_Picture") <> "" Then Response.Write "<img border=0 src='" & oRs("D_Picture") & "'>" End If ' 显示标题 ' 函数outHTML:去除Html格式,用于显示输出,具体请见startup.asp文件中的说明 Response.Write "<a href='show.asp?id=" & oRs("d_id") & "'>" & outHTML(oRs("d_title")) & "</a> " ' 显示修改链接 Response.Write "[<a href='modify.asp?id=" & oRs("d_id") & "'>修改</a>]" ' 显示删除链接 Response.Write "[<a href='delete.asp?id=" & oRs("d_id") & "'>删除</a>]" oRs.MoveNext Loop Else Response.Write "现在数据库中还没有新闻!" End If oRs.Close
End Sub
%>
删除新闻:Delete.asp [顶部][目录]
<!--#include file = "Startup.asp"-->
<%
' ====================== ' 功能:删除新闻 ' 描述:新闻删除后,页面转向新闻列表页。 ' 删除新闻的同时,删除此新闻相关的上传文件。 ' ======================
Call Header("删除新闻") Call Content() Call Footer()
' 本页内容区 Sub Content()
' 取参数:新闻ID Dim sNewsID sNewsID = Trim(Request("id"))
' 新闻ID有效性验证,防止有些人恶意的破坏此演示程序 If IsNumeric(sNewsID) = False Then GoError "请通过页面上的链接进行操作,不要试图破坏此演示系统。" End If
' 从新闻数据表中取出相关的上传文件 ' 上传后保存到本地服务器的路径文件名,多个以"|"分隔 ' 删除文件,要取带路径的文件名才可以,并且只要这个就可以了,原来存的原文件名或不带路径的保存文件名可用于其它地方使用 Dim sSavePathFileName sSql = "SELECT D_SavePathFileName FROM NewsData WHERE D_ID=" & sNewsID oRs.Open sSql, oConn, 0, 1 If Not oRs.Eof Then sSavePathFileName = oRs("D_SavePathFileName") Else GoError "无效的新闻ID,请点页面上的链接进行操作!" End If oRs.Close
' 把带"|"的字符串转为数组 Dim aSavePathFileName aSavePathFileName = Split(sSavePathFileName, "|")
' 删除新闻相关的文件,从文件夹中 Dim i For i = 0 To UBound(aSavePathFileName) ' 按路径文件名删除文件 Call DoDelFile(aSavePathFileName(i)) Next
' 删除新闻 sSql = "DELETE FROM NewsData WHERE D_ID=" & sNewsID oConn.Execute sSql
' 3秒转向新闻列表页 response.write "<p align=center>新闻删除成功,3秒后自动返回新闻列表页!<script>window.setTimeout(""location.href='list.asp'"",3000);</script></p>"
End Sub
' 删除指定的文件 Sub DoDelFile(sPathFile) On Error Resume Next Dim oFSO Set oFSO = Server.CreateObject("Scripting.FileSystemObject") oFSO.DeleteFile(Server.MapPath(sPathFile)) Set oFSO = Nothing End Sub
%>
显示新闻:Show.asp [顶部][目录]
<!--#include file = "Startup.asp"--> <!--#include file = "Include/DeCode.asp"-->
<%
' ====================== ' 功能:显示新闻 ' 描述:显示编辑的内容页,此页注意一下DeCode接口函数的调用。 ' ======================
Call Header("显示新闻内容") Call Content() Call Footer()
' 本页内容区 Sub Content()
' 传入参数:新闻ID Dim sNewsID sNewsID = Trim(Request("id"))
' 新闻ID有效性验证,防止有些人恶意的破坏此演示程序 If IsNumeric(sNewsID) = False Then GoError "请通过页面上的链接进行操作,不要试图破坏此演示系统。" End If
' 从数据库中取初始值 Dim sTitle, sContent, sPicture, sOriginalFileName, sSaveFileName, sSavePathFileName sSql = "SELECT * FROM NewsData WHERE D_ID=" & sNewsID oRs.Open sSql, oConn, 0, 1 If Not oRs.Eof Then sTitle = oRs("D_Title") sContent = oRs("D_Content") sPicture = oRs("D_Picture") sOriginalFileName = oRs("D_OriginalFileName") sSaveFileName = oRs("D_SaveFileName") sSavePathFileName = oRs("D_SavePathFileName") Else GoError "无效的新闻ID,请点页面上的链接进行操作!" End If oRs.Close
' 禁用某些标签,如出于安全考虑的Script标签,等 ' 要使用此功能需要先包含"Include/DeCode.asp"文件。 ' 此例只过滤SCRIPT标签,即意味着内容中的客户端脚本不会生效,您可根据实际的需要加入其它标签。 ' 当前支持过滤的标签,可以查看DeCode.asp文件中的说明。 sContent = eWebEditor_DeCode(sContent, "SCRIPT")
' 输出新闻 Response.Write "<table border=0 cellpadding=5 width='90%' align=center>" & _ "<tr><td align=center><b>" & sTitle & "</b></td></tr>" & _ "<tr><td>" & sContent & "</td></tr>" & _ "</table>"
' 输出相关文件信息 Response.Write "<p><b>此新闻的相关上传文件信息如下:</b></p>"
' 把带"|"的字符串转为数组,用于列出显示 Dim aOriginalFileName, aSaveFileName, aSavePathFileName aOriginalFileName = Split(sOriginalFileName, "|") aSaveFileName = Split(sSaveFileName, "|") aSavePathFileName = Split(sSavePathFileName, "|")
Response.Write "<table border=1 cellpadding=3 cellspacing=0>" & _ "<tr>" & _ "<td>序号</td>" & _ "<td>原文件名(接口:d_originalfilename)</td>" & _ "<td>保存文件名(接口:d_savefilename)</td>" & _ "<td>保存路径文件名(接口:d_savepathfilename)</td>" & _ "</tr>" Dim i For i = 0 To UBound(aOriginalFileName) Response.Write "<tr>" & _ "<td>" & CStr(i + 1) & "</td>" & _ "<td>" & aOriginalFileName(i) & "</td>" & _ "<td>" & aSaveFileName(i) & "</td>" & _ "<td>" & aSavePathFileName(i) & "</td>" & _ "</tr>" Next Response.Write "</table>"
End Sub
%> |