改造codimd项目

我现在使用的markdown编辑器是codimd,但是使用起来有些不舒服的点,于是根据自身的需求做了些修改。


修改内容

  • 历史列表改为文件列表
  • tags完善
  • 设置头像
  • 移除不必要的功能
  • 修改密码
  • 文档默认私有
  • 新增文件夹
  • 删除文件夹
  • 文件夹中查询和套娃
  • 文档转移到文件夹下

数据库中新增了四个字段
sql:

alter table Users add image text null;

alter table Notes add tags varchar(255) null;
    
alter table Notes add type varchar(10) default 'FILE' not null comment 'FILE or FOLDER';

alter table Notes add parentId char(36) null;

docker镜像

chenk01/hackmd:9970497b

我的需求

1.历史文件调整

原本用户登陆之后看到的文件都是历史记录,并非文件列表。也就是说,在首页删除历史后,文档还是存在的,但是可能没有记住文件的id,导致无法再次打开。我把历史记录改为用户实际拥有的文档列表。与之对应的是tag,之前记录的是历史记录文档的tag,并且历史记录是存在用户表中,改为一个文档对应的tag。

2.头像设置

用户默认显示的头像是根据邮箱生成的avatar头像,由于众所周知的防火墙问题,国内无法显示,这对于头像爱好者的我来说是无法忍受的。就增加了这个功能。

3.修改密码

原本修改密码只能通过命令去修改,现在可以在页面上修改。

4.文档默认为私有

原项目新建的文档是editable类型,所有用户都可以看到和编辑。这显然是不安全的。

5.删除多余功能

原项目的一些功能是我不需要的,就删除了。包括:介绍页、语言切换、删除用户、其他登陆方式(只保留邮箱登陆)、照片上传(照片默认上传到服务器中,不喜欢,建议用图床)。

6.文件夹功能

在文档多了之后,管理和查找起来就很麻烦,虽然可以通过tag和搜索找到对应的文档,但还是不够好,文件夹功能必须要加上。

历程

除了文件夹以外的改动都在八月份完成,文件夹功能迟迟没有进展。主要原因是这个项目是nodejs项目,之前我没有接触过。对于我这个后端开发来说,extjs、vue我都写过,但是这个项目的列表页的实现看起来就很奇怪。之前我想通过新增接口,然后点击文件夹重新跳转到列表页,然后加载新的数据,很简单的逻辑。但是,怎么重新跳转就是个问题,各种能想到的方法都试了,还是不行,就暂时搁置了。

在十一月份一个普通的星期一下午,闲来无事的我重新打开了这个项目。再三尝试无果后,我想该换个思路了。或许可以将原有的接口通过请求参数加上文件夹信息,查询对应的文档,不就可以展示了嘛,并且这种方式最简单,为什么这么久才想到😳。在尝试确认可行后,就开始实现功能,又加上了新增、删除和转移文件夹功能,晚上就完成了。在后续简单的优化后,足以满足我的需求。

总结

现在有很多开放的文档编辑器,我选择codimd是因为可以自建,数据和服务都由自己控制。相较于其他可以自建的项目,该项目简洁的UI、可以多人在线编辑,还能查看修改记录,这些也是加分项。之前在项目的issue里看到别人也提到希望官方增加文件夹功能,但是官方的立场是:这是文档编辑器,并不是文档管理工具。并且有人上传了自己修改后的截图,可惜的是没有找到源码,不然就可以直接拿来用了。这次的改造已经完成,新的按钮虽然丑了点,我觉得还好,毕竟是自用。以上的修改都是增量更新,后续不想用了,只需要启用官方的镜像即可,数据库无需改动。

已有 2 条评论

  1. Noah Noah

    个人本地的话,Typora这种所见即所得的markdown编辑器体验感就会更好🤔

    1. Typora确实很好,但是我需要一个可以在不同平台使用的编辑器,才选的这个。

添加新评论