`

利用FCKEditor作为邮件内容编辑器

阅读更多

废话少说,我现在要在FCKEditor工具栏上自定义三个按钮:添加附件,选择邮件模版,发送邮件。
我用的是java版本的editor,将下载的war包在tomcat下解开,有如下目录结构:


一、开发添加附件插件
1,将fckeditor/_samples/_plugins/findreplace拷贝到fckeditor/editor/plugins/下,将findreplace重命名为attachfiles,将里面相应的文件修改,请看修改后的目录:




1)修改en.js内容:FCKLang.AttachFilesDlgTitle = 'Attach Files' ;其余类推
2)为按钮准备一张图片attach.jpg
3)添加attachfiles.jsp文件内容如下:

<%@ page language="java" import="java.util.*"
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
String uploadPath = "D:\\upload\\"; // 用于存放上传文件的目录
String tempPath = "D:\\upload\\tmp\\"; // 用于存放临时文件的目录

request.setCharacterEncoding("UTF-8");

try {
// 文件上传示例程序
// 判断表单是否是 enctype="multipart/form-data"
if (ServletFileUpload.isMultipartContent(request)) {

DiskFileItemFactory dfif = new DiskFileItemFactory();
dfif.setSizeThreshold(5 * 1024 * 1024); // 设定使用内存超过5M时,将产生临时文件并存储于临时目录中。
dfif.setRepository(new File(tempPath)); // 设定存储临时文件的目录。

ServletFileUpload fileupload = new ServletFileUpload(
dfif);
fileupload.setSizeMax(50 * 1024 * 1024); // 设定最大允许上传50M的文件。

List<FileItem> files = (List<FileItem>) fileupload
.parseRequest(request);
System.out.println("filesize:" + files.size());
String attachments = "";
String filenames="";
for (FileItem f : files) {
// if(f.isFormField()){ //如果该项是表单项,不是文件上传项
// out.print(f.getFieldName());
// }

if (!f.isFormField() && f.getSize() > 0) {
String filename = f.getName();
System.out.println("f:" + f.toString());
//filename = filename
// .substring(filename.lastIndexOf("."));
f.write(new File(uploadPath
+ filename.substring(filename
.lastIndexOf("\\") + 1)));
if (attachments.equals("")){
attachments = uploadPath
+ filename.substring(filename
.lastIndexOf("\\") + 1);
filenames=filename.substring(filename
.lastIndexOf("\\") + 1);
}
else{
attachments += ","
+ uploadPath
+ filename.substring(filename
.lastIndexOf("\\") + 1);
filenames+=","+filename.substring(filename
.lastIndexOf("\\") + 1);
}
}
}
String fileString=(String)session.getAttribute("attach");
if(fileString!=null&&fileString.length()>0)
attachments=fileString+","+attachments;
session.setAttribute("attach", attachments);
String filenamesString=(String)session.getAttribute("attachString");
if(filenamesString!=null&& filenamesString.length()>0)
filenames=filenamesString+","+filenames;
session.setAttribute("attachString",filenames);
System.out.println("<script>parent.hiddenAttachDialog(\""+attachments+"\");</script>");
System.out.println("<script>parent.hiddenAttachDialog(\""+filenames+"\");</script>");
//out.print("<script>self.hiddenAttachDialog(\""+filenames+"\");</script>");
//request.getRequestDispatcher("a").forward(request,response);
}

} catch (Exception e) {
// 可以跳转出错页面
e.printStackTrace();
}


if("delete".equals(request.getParameter("flag"))){
String pos=request.getParameter("index");
int index=Integer.parseInt(pos);
String filenames=(String)request.getSession().getAttribute("attach");

String files[] =filenames.split(",");
String returnfilenames="";
filenames="";
if(files.length>0){
for(int i=0;i<files.length;i++){
  if(!"".equals(files[i])){
if(index!=i){
filenames+=files[i]+",";
returnfilenames+=files[i].substring(files[i]
.lastIndexOf("\\") + 1)+",";


}
else{
//delete file on disc
File f=new File(files[i]);
f.delete();
}
}

}

//System.out.println(filenames.substring(0,filenames.length()-1)+":"+returnfilenames.substring(0,returnfilenames.length()-1));
request.getSession().setAttribute("attach", filenames.equals("")?"":filenames.substring(0,filenames.length()-1));
request.getSession().setAttribute("attachString", returnfilenames.equals("")?"":returnfilenames.substring(0,returnfilenames.length()-1));

}else{
request.getSession().setAttribute("attach", null);
request.getSession().setAttribute("attachString", null);

}

response.sendRedirect("attachfiles.jsp");

}

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>


<title>My JSP 'upload.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script language="javascript">

var oEditor = window.parent.InnerDialogLoaded() ;
var FCK = oEditor.FCK ;
var FCKLang = oEditor.FCKLang ;
var FCKInsertLink = oEditor.FCKInsertLink ;



</script> 
</head>

<body scroll="no" style="OVERFLOW: hidden">
<div id="attachments">
<%
String filenames=(String)session.getAttribute("attachString");
if(filenames!=null){
String files[]=filenames.split(",");
for(int i=0;i<files.length;i++){
  if(!files[i].equals("")&&!files[i].equals("null"))
  {
%><li><%=files[i] %>     &nbsp;&nbsp;&nbsp;<a href="attachfiles.jsp?flag=delete&index=<%=i %>">Delete</a></li>
<%}}} %>
</div>
<table border="1"  style="border-color: blue;" width="100%">
<tr>
<td>
<form action="" method="post" enctype="multipart/form-data"
name="fileForm">
<input type="file" name="file1" />
<br />
<input type="file" name="file2" />
<br />
<input type="file" name="file3" />
<br><br />

<input type="submit" value="Upload" />

</form>
</td>
</tr>
</table>

</body>
</html>

4)修改fckplugin.js内容如下
/*
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
* Copyright (C) 2003-2008 Frederico Caldeira Knabben
*
* == BEGIN LICENSE ==
*
* Licensed under the terms of any of the following licenses at your
* choice:
*
*  - GNU General Public License Version 2 or later (the "GPL")
*    http://www.gnu.org/licenses/gpl.html
*
*  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
*    http://www.gnu.org/licenses/lgpl.html
*
*  - Mozilla Public License Version 1.1 or later (the "MPL")
*    http://www.mozilla.org/MPL/MPL-1.1.html
*
* == END LICENSE ==
*
* Plugin to insert "Placeholders" in the editor.
*/

// Register the related command.
FCKCommands.RegisterCommand( 'attachfiles', new FCKDialogCommand('attachfiles',FCKLang.AttachFilesDlgTitle, FCKPlugins.Items['attachfiles'].Path + 'attachfiles.jsp', 400, 400 ) ) ;


// Create the "Plaholder" toolbar button.


var oAttachFileItem = new FCKToolbarButton( 'attachfiles', FCKLang.AttachFilesDlgTitle ) ;
oAttachFileItem.IconPath = FCKPlugins.Items['attachfiles'].Path + 'attach.jpg' ;
FCKToolbarItems.RegisterItem( 'attachfiles', oAttachFileItem ) ;


5)修改fckconfig.js
添加:FCKConfig.Plugins.Add('attachfiles');
修改default菜单:
FCKConfig.ToolbarSets["Default"] = [
['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
'/',
['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
['Link','Unlink','Anchor'],
['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
'/',
['Style','FontFormat','FontName','FontSize'],
['TextColor','BGColor'],
['FitWindow','ShowBlocks','-','About'],
'/',
['InsertTemplate','attachfiles','sendmail'] // No comma for the last row.
] ;

 

二、开发其余两个类似,我将其源码附上

相关文件:MailServlet,MailService,sample02.jsp(此文件覆盖原来的文件即可)

  • 大小: 15.5 KB
  • 大小: 6.2 KB
分享到:
评论

相关推荐

    FCKeditor在线编辑器

    总的来说,FCKeditor是一个强大且灵活的在线编辑器,它简化了Web内容的创建过程,同时也为开发者提供了深入研究和扩展的可能。无论是对于初学者还是经验丰富的开发者,理解并掌握FCKeditor的使用和开发都能提升Web...

    fckeditor压缩包

    - **博客系统**:许多博客平台如WordPress曾使用FCKeditor作为默认的文本编辑器,方便用户撰写和编辑文章。 - **内容管理系统**:如Drupal、Joomla等CMS系统也集成FCKeditor,提升用户编辑内容的体验。 - **论坛软件...

    fckeditor中添加自动排版功能

    在IT领域,FCKeditor是一款曾经非常流行的开源富文本编辑器,它允许用户在网页上进行类似Word的文本编辑操作。这个编辑器以其强大的功能和灵活性受到开发者的喜爱。现在,我们将深入探讨如何在FCKeditor中添加自动...

    html在线编辑器(是用js编写的)

    HTML在线编辑器是一种基于Web的文本编辑工具,它允许用户在浏览器中编辑HTML内容,而无需安装任何桌面...通过理解和掌握这些编辑器的工作原理和使用方法,开发者可以更好地构建和维护具有丰富内容编辑功能的Web应用。

    fck网页编辑器终极配置 asp.net版本

    3. **链接管理**:用户可以创建内部和外部链接,也可以添加电子邮件链接,编辑器提供友好的链接编辑界面。 4. **多媒体支持**:除了文本,FCKeditor还支持嵌入音频、视频等多媒体内容,丰富了网页的表达形式。 5. ...

    FCKEditor2.6使用小示例完全示例

    **FCKEditor 2.6 全面指南** FCKEditor 是一款开源的富文本编辑器,广泛应用于网站开发,允许用户在网页上编辑文本,提供类似...通过实践和探索,你将能够充分利用FCKEditor的功能,打造高质量的内容编辑平台。

    FCKeditor模板

    通过学习和利用提供的资源,无论是开发者还是内容创作者,都能够充分利用FCKeditor构建出符合需求的富文本编辑界面。如果在使用过程中遇到困难,可以借助社区资源或直接联系提供支持的邮件地址。

    Fckeditor工具包

    总结,Fckeditor作为一款强大的Web富文本编辑器,其易用性、灵活性和广泛的兼容性使其在Web开发领域占据了一席之地。通过合理利用其各项功能和API,开发者可以构建出功能完善的在线编辑平台,满足新闻发布、内容创作...

    FCKeditor 原版

    总的来说,FCKeditor 2.6作为一个全功能的文本编辑器,不仅提供了丰富的编辑功能,还具备优秀的扩展性和高度的自定义性,是构建富文本内容的理想选择。无论是个人开发者还是企业级应用,都能从中受益。不过需要注意...

    网页编辑器

    总之,FCKeditor作为一款强大的网页编辑器,与J2EE的结合使得企业级Web应用的内容管理和编辑变得更加高效和灵活,降低了内容创作的技术门槛,提高了用户体验。开发者可以充分利用FCKeditor提供的各种功能,构建出...

    fck编辑器 教程 demo

    **FCKeditor** 是一款非常著名的开源富文本编辑器,广泛应用于网站开发中,允许用户在网页上编辑内容,提供类似Microsoft Word的界面体验。它支持多种浏览器,包括Internet Explorer、Firefox、Chrome和Safari等,...

    html在线编辑器ckeditor_3.6

    - **API交互**:利用CKEditor提供的JavaScript API,可以实现与编辑器内容的交互,例如获取或设置编辑器内容,监听编辑事件等。 4. **与其他编辑器的比较**: - **与TinyMCE对比**:CKEditor在界面友好度和可定制...

    FCK使用文档

    总结,FCKEditor作为一款强大的富文本编辑器,其易用性和灵活性使其成为开发者们构建网页内容编辑功能的首选。了解和掌握其安装、使用、配置以及扩展方法,能够帮助我们更好地利用这一工具提升网页内容编辑的用户...

    asp-jmail 邮件发送组件

    配合在线编辑器,如FCKeditor或CKEditor,开发者可以提供用户友好的界面来创建和编辑邮件内容。用户在编辑器中完成邮件编写后,后台可以通过JMail组件发送用户编辑的邮件,从而实现交互式的邮件发送功能。 在提供的...

    FCKeditorV2的包

    FCKeditorV2是一款历史悠久的开源富文本编辑器,它为网页内容的创建提供了强大的功能。这个编辑器在Web开发领域曾经广泛使用,特别是在需要用户输入格式化文本的场景下,比如在线日记、博客写作、电子邮件编辑等。...

    FCKeditor 新闻组件的一些程序漏洞

    FCKeditor是一款广泛使用的网页文本编辑器组件,常用于在线网站中,提供用户友好的文字编辑功能。然而,FCKeditor新闻组件在某些版本中存在安全漏洞,尤其是与文件上传功能相关的connector.aspx文件的漏洞。下面将...

    FckEditorv2 完整代码

    FCKEditor 是一款开源的富文本编辑器,主要用于在Web应用程序中提供类似于Microsoft Word的文本编辑体验。它允许用户在网页上创建、编辑和格式化文本,支持HTML元素、图片上传、链接创建等操作。FCKeditorv2是该编辑...

    NewsMailer-开源

    FCKeditor是一款非常流行的开源富文本编辑器,广泛应用于网页内容编辑。它提供了丰富的文字格式化、图片、链接、表格等编辑功能,使得非程序员也能轻松创建和编辑内容。在NewsMailer中,FCKEditor作为新闻邮件内容...

Global site tag (gtag.js) - Google Analytics