Node.js(sails.js)wysiwyg编辑器 - 图像

时间:2014-01-27 10:39:09

标签: node.js editor wysiwyg sails.js

  

有没有办法在sails应用程序中使用任何WYSIWYG / html编辑器?一世   找不到任何手册来做到这一点。好像水星是   在Node中得到了很好的支持,但我找不到适应它的方法   无论是。 :(请指导我

现在好了,它变得很容易连接TinyMCE(就像在http://www.tinymce.com/wiki.php/Installation上所描述的那样简单)。所以现在又出现了另一个主要问题:是否有任何Node.js连接器可用于上传图像和内容的任何编辑器?

或者我如何允许用户上传图片并将其插入帖子正文?

由于

2 个答案:

答案 0 :(得分:11)

耶!终于做到了!

最后我使用了CKEditor并且它有效!看看:

  • http://ckeditor.com/download
  • 下载编辑器
  • 将其放入项目的assets文件夹
  • config.filebrowserUploadUrl = '/uploader';添加到您的ckeditor/config.js文件
  • 在控制器中添加上传操作:
  

upload_file:function(req,res){

var fs = require('fs');
console.log(req.files);

fs.readFile(req.files.upload.path, function (err, data) {
  var newPath = 'assets/files/' + req.files.upload.name;
    fs.writeFile(newPath, data, function (err) {
    if (err) res.view({err: err});
      html = "";
      html += "<script type='text/javascript'>";
      html += "    var funcNum = " + req.query.CKEditorFuncNum + ";";
      html += "    var url     = \"/files/" + req.files.upload.name + "\";";
      html += "    var message = \"Uploaded file successfully\";";
      html += "";
      html += "    window.parent.CKEDITOR.tools.callFunction(funcNum, url, message);";
      html += "</script>";

      res.send(html);
  });

});
     

}

  • 为此操作添加路线:
'/uploader' : {
    controller : 'post',
    action : 'upload_file'
  }
  • 为我上传文件夹(assets/files
  • 最后,将ckeditor更改为:
block body
  script(type="text/javascript", src="/ckeditor/ckeditor.js")
  form(action='/posts/create', method="post", enctype="multipart/form-data")
    p Title
    input(type='text', name='title')
    p Body
    textarea(name='body', id='ck')
    script.
      CKEDITOR.replace( 'ck' );
    hr
    input(type='submit', value='Сохранить')

(在这里玉)

这就是全部!享受WYSIWYG:)

答案 1 :(得分:3)

上面的答案会起作用(我给它进行了投票),但是如果你在网站上启用了csrf令牌,你需要做一些额外的事情(我会发表评论,但我的代表还不够高) ):

在ckeditor正在使用的表单上添加标准csrf隐藏输入:

<input type="hidden" name="_csrf" value="<%= _csrf %>" id="csrf" />

接下来,在第498行附近将以下行添加到ckeditor / ckeditor.js。

var csrf = document.getElementsByName("_csrf");
var token = csrfitems[0].defaultValue;

然后,您需要在上传者在ckeditor.js第499行使用的表单上添加隐藏的输入

<input type="hidden" name="_csrf" value="' + token + '" id="csrf" />

这是完整的499行,只是为了在上下文中看到它:

var csrf = document.getElementsByName("_csrf");var token = csrfitems[0].defaultValue;



  d.$.write(['<html dir="'+g+'" lang="'+i+'"><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">','<form enctype="multipart/form-data" method="POST" dir="'+g+'" lang="'+i+'" action="',CKEDITOR.tools.htmlEncode(f.action),
'"><label id="',a.labelId,'" for="',h,'" style="display:none">',
CKEDITOR.tools.htmlEncode(f.label),
'</label>
<input type="hidden" name="_csrf" value="' + token + '" id="csrf" /><input style="width:100%" id="',h,'" aria-labelledby="',a.labelId,'" type="file" name="',CKEDITOR.tools.htmlEncode(f.id||"cke_upload"),

希望这可以节省一些人头痛我必须经历的事情。这可能不是最优雅的解决方案,但它允许上传者现在在您的帆网站上工作。