为 Editor.md 编辑器插件增加预览和发布按钮
前言
一直在使用 Editor.md 插件作为博客的编辑器,用着挺好,但是在全屏下编辑时,每次想预览或者保存又必须切换到非全屏状态下才可以点击按钮,用着不舒服,所以花了一点时间在工具栏上增加了预览、保存、发布三个按钮,在此记录一下修改的过程。
开发
根据 Editor.md 设置中的 "编辑器设置 > 编辑器静态资源地址" 找到静态资源文件,我的博客是放在了 wordpress 根目录下的 assets 文件夹下,修改文件 /assets/Config/editormd.js,增加内容如下:
var toolBar;
switch (textareaID) {
case 'wp-content-editor-container' :
toolBar = fullToolBar;
break;
case 'comment' :
toolBar = simpleToolBar;
break;
case 'wp-replycontent-editor-container' :
toolBar = miniToolBar;
break;
}
+var postSaveText = $("#publish").val();
+var toolbarHandlers = {};
+if($("body").hasClass("wp-admin") && ($("body").hasClass("post-type-post") || $("body").hasClass("post-type-page")){
+ // 预览更改
+ toolBar.push('||', 'postPreview');
+ // 保存草稿
+ if($("#save-post").size() == 1){
+ toolBar.push('postSaveDraft');
+ }
+ // 发布/更新
+ toolBar.push('postSave');
+
+ toolbarHandlers = {
+ /**
+ * @param {Object} cm CodeMirror对象
+ * @param {Object} icon 图标按钮jQuery元素对象
+ * @param {Object} cursor CodeMirror的光标对象,可获取光标所在行和位置
+ * @param {String} selection 编辑器选中的文本
+ */
+ postPreview: function(cm, icon, cursor, selection){
+ $("#post-preview").click();
+ },
+ postSaveDraft: function(cm, icon, cursor, selection){
+ $("#save-post").click();
+ },
+ postSave: function(cm, icon, cursor, selection){
+ if($("#publish").attr("name") == "save"){
+ $("#publish").click();
+ }else if(confirm("您确定要" + postSaveText + "文章吗?")){
+ $("#publish").click();
+ }
+ },
+ };
+}
var wpEditormd = editormd({
id: textareaID,
path: editor.editormdUrl + '/assets/Editormd/lib/',
width: '100%', //编辑器宽度
height: textareaID === 'wp-content-editor-container' ? 640 : 320, //编辑器高度
syncScrolling: editor.syncScrolling !== 'off', //即是否开启同步滚动预览
// ........
// 其他代码
// .......
onload: function () {
//加载完成执行
if ( textareaID === 'comment' ) {
//修改评论表单name
$('textarea.editormd-markdown-textarea').attr('name', 'comment');
}
if ( textareaID === 'wp-replycontent-editor-container' ) {
$('.reply').click(function () {
setTimeout(function () {
$('.edit-comments-php .CodeMirror.cm-s-default.CodeMirror-wrap').css('margin-top',$('.editormd-toolbar').height());
},100);
})
}
if (getWidth() === 1600) {
// 1600分辨率删除编辑器编辑空白外边距
var codeMirror = $('.editormd .CodeMirror.CodeMirror-wrap');
var codeMirrorMarginTop = codeMirror.css('margin-top');
codeMirror.css('margin-top',parseInt(codeMirrorMarginTop) - 32 + "px");
}
},
+ toolbarIconsClass: {
+ // 指定一个FontAawsome的图标类
+ postPreview: "fa-chrome",
+ postSaveDraft: "fa-floppy-o",
+ postSave: "fa-paper-plane",
+ },
+ lang: {
+ toolbar: {
+ postPreview: "预览更改",
+ postSaveDraft: "保存草稿",
+ postSave: postSaveText,
+ }
+ },
+ // 自定义工具栏按钮的事件处理
+ toolbarHandlers: toolbarHandlers
});
压缩
将编写好后的代码压缩,然后替换掉同级目录下的 editormd.min.js,就大功告成了!
效果
部署好后,工具栏右上角就会多出三个按钮,然后就可以愉快的在全屏下写文章了~

参考资料
原文链接:https://acme.top/blog-feature-editor-md-add-btns
为 Editor.md 编辑器插件增加预览和发布按钮的更多相关文章
- 自己动手开发更好用的markdown编辑器-04(实时预览)
这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/04/25/hexomd-04/ 程序打包 文章目录 1. 打开新窗口 ...
- 使用pdfjs插件在线预览PDF文件
前言 本文介绍在html中使用 pdfjs插件在线预览PDF文件的方法. 实现步骤 下载 pdfjs 并引入项目中 到PDFJS官网 http://mozilla.github.io/pdf.js/g ...
- ubuntu自带的gedit编辑器添加Markdown预览插件
gedit安装Markdown Preview Ubuntu自带的gedit编辑器也是有很强大的功能的,且支持插件的安装.对于喜欢用Markdown的我来说,这当然是很好的了,gedit本身 就支持M ...
- markown编辑器截图粘贴预览,并将图片传至七牛云
最近在做一个项目,需要实现类似QQ截图后,就是能够在富文本编辑器中粘贴截图并预览. 先看一下效果: 分析一下实现步骤: QQ截图后在编辑器中粘贴,肯定会有一个粘贴事件,即 paste 事件 在事件回调 ...
- PHP专业开发IDE——Zend Studio 10.5预览版发布
Zend Studio是新一代的PHP IDE,高效的开发和维护PHP代码是它的核心.Zend公司目前已发布了Zend Studio 10.5预览版,预览版中提高了快速响应能力和时时误差检查.因此使用 ...
- sql server 2014预览版发布
MSDN发布sql server2014预览版,如下图: SQL Server 2014新特性: 微软SQL Server部门主管Eron Kelly介绍,通过将交易处理放到内存中进行,新的SQL S ...
- vs2015下载及预览与发布
VS2015 RC发布下载,通用Windows平台必备神器! 几个月前微软发布了Visual Studio 2015的技术预览版本,之后又先后发布了6个更新版本.如今,微软已在其官方页面中公布了最新开 ...
- Window 7 平台的IE11浏览器预览版发布
继之前Windows 8.1 带来了IE11浏览器之后,今天Window 7 以及Windows Server 2008 R2平台的IE11浏览器预览版也已经发布. 当然这还只是一个开发者预览版,可能 ...
- UEditor百度富文本编辑器--preview在线预览时头部被挡住的解决方案
问题截图: 正常情况应该是如下显示: 解决方案: 1.打开ueditor/dialogs/preview/preview.html 2.找到body节点下面这一句 document.getElemen ...
随机推荐
- 如何判断操作系统是64位还是32位(GetNativeSystemInfo和IsWow64Process两种方法)
64位Wnidows 里面有个叫Wow64的模拟器技术,可以使32位的程序在64位Windows 上运行. 当你想在程序里面针对32b位/ 64位系统执行不同代码的时候, 需要判断操作系统是32位还是 ...
- ABP开发框架前后端开发系列---(13)高级查询功能及界面的处理
在一般的检索界面中,基于界面易用和美观方便的考虑,我们往往只提供一些常用的条件查询进行列表数据的查询,但是有时候一些业务表字段很多,一些不常见的条件可能在某些场景下也需要用到.因此我们在通用的查询条件 ...
- Linux命令之nohup (转)
nohup 详解 阅读目录 nohup 案例 nohup和&的区别 参考链接 正文 回到顶部 nohup nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略 ...
- CI控制器
当控制器要继承自定义的控制器的时候,有特定的定义: application/core/MY_Controller <?php class MY_Controller extends CI_Con ...
- 01-Javascript基础
一. JS介绍 JavaScript是前台语言 JavaScript是前台语言,而不是后台语言. JavaScript运行在用户的终端网页上,而不是服务器上,所以我们称为“前台语言”. JavaScr ...
- SQL中的LIKE语句的用法
SQL中的LIKE语句的用法 内容 在SQL结构化查询语言中,LIKE语句有着至关重要的作用.LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串), ...
- Log2Net日志查询网站代码解析
在前面的几节中,我们介绍了Log2Net的使用方法和代码设计.使用这个组件,我们可以方便地将日志记录到数据库中,那么,我们怎么能看到这些日志呢?于是,日志查询网站应运而生.效果图如下: 该代码已开源, ...
- 微信小程序map组件z-index的层级问题
说起微信小程序的map组件,可以说是良心之作了,一个组件解决了所以接入地图的所有麻烦,但是在实际小程序的试用过程中还是存在点问题的.如下情景:刚开始接入map组件的时候是在微信开发工具的模拟器上预览的 ...
- c++简单桶排序
c++简单桶排序 题目一样,还是排序 桶排序是排序算法里比较快的 代码 + 注释 #include <bits/stdc++.h> using namespace std; int mai ...
- 安卓学习资料推荐《深入理解Android:卷2》下载
下载地址:百度云下载地址 编辑推荐 <深入理解Android:卷2>编辑推荐:经典畅销书<深入理解Android:卷I>姊妹篇,51CTO移动开发频道和开源中国社区一致鼎力推荐 ...