Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

初始化评论框方案讨论 #8

Open
ystyle opened this issue Apr 11, 2017 · 15 comments

Comments

@ystyle
Copy link

@ystyle ystyle commented Apr 11, 2017

我不太建议使用插件或cli工具之类的. 插件的话, 博客不止hexo, Jekyll. 这样照顾不了那么多博客工具.

cli的话. 有些博客还得抓取所有连接才行. 所有我写了个简单的方案, 大家一起讨论一下.

加载部分

  1. 加载评论框[不管有没有初始化都加载][可自定义在评论上边还是下边]
  2. GET /repos/:owner/:repo/issues 利用 [标签] 列出当前文章标题的issues
  3. 判断每个issue的[body|body_html]中是否存在当前页面连接[可自定义连接]

    <a href="http://demo.com/post/1" data-url="/post/1">http://demo.com/post/1</a>
    可增加功能, 判断href和当前页面域名不一致时更新issue , 当更换域名时所有用

  4. 找到了就使用GET /repos/:owner/:repo/issues/:number/comments加载评论内容, 并记录当前评论为初始化成功
  5. 没找到就不加载评论, 也不提示没初始化什么的. 并记录当前评论为未初始化[未创建issue]

评论部分

  1. 用户评论, 判断 [初始化状态] 已初始化的直接提交评论
  2. 如果未初始化, 则先调用POST /repos/:owner/:repo/issues 创建issue[初始化], 创建成功后提交评论
@ystyle

This comment has been minimized.

Copy link
Author

@ystyle ystyle commented Apr 11, 2017

其实评论中的issue谁来创建都没什么关系的吧?

@imsun

This comment has been minimized.

Copy link
Owner

@imsun imsun commented Apr 11, 2017

如果是其他人创建的 issue,那他可以任意修改 issue 的内容,其他用户就无法知道页面对应的是哪个 issue。而且还能 lock conversation。

@ystyle

This comment has been minimized.

Copy link
Author

@ystyle ystyle commented Apr 11, 2017

搜索接口的第二个建议:
利用 GET /search/issues 的(高阶搜索接口中的)project=repo&q=in:title 应该可以做到只搜索标题, 这样就不会创建太多标签.

@ystyle

This comment has been minimized.

Copy link
Author

@ystyle ystyle commented Apr 11, 2017

@imsun 确实是个问题, 并不是所有人都那么的尊守规则.

@imsun

This comment has been minimized.

Copy link
Owner

@imsun imsun commented Apr 11, 2017

标题也都是可以改的。而且搜索 API 是有限制的。

@ystyle

This comment has been minimized.

Copy link
Author

@ystyle ystyle commented Apr 11, 2017

那创建issue的接口里, 标签是可以填的吧? 把这些元数据都扔标签里? 创建后是不是标签只能由所有者才能改?

@imsun

This comment has been minimized.

Copy link
Owner

@imsun imsun commented Apr 11, 2017

普通用户没有创建新标签的权限。

@dontpanic92

This comment has been minimized.

Copy link

@dontpanic92 dontpanic92 commented Apr 11, 2017

反正owner的key什么的都有,初始化时应该可以直接让owner创建吧?

@ystyle

This comment has been minimized.

Copy link
Author

@ystyle ystyle commented Apr 12, 2017

@dontpanic92 不一样的, 那个key只是属于应用的身份, 并不是所有者的登陆凭证, 无法用来操作的

要登陆后才可以, 但别人评论时登陆的并不是所有者的帐号

@ystyle

This comment has been minimized.

Copy link
Author

@ystyle ystyle commented Apr 20, 2017

  1. 由仓库所有者创建一个标题为博客域名的issue,以下称索引页
  2. 内容[body]为文章列表连接评论issue的#id号,以下称(评论)索引,第一楼的内容可以自行写些提示语,比如禁止在本issue回复任何内容
  3. 一篇博客可以有多个issue评论,多个时在文章索引列表下新建的子级列表
    示例
## [文章标题](文章链接)//这里用顶级列表也行, 这里还是建议加个上唯一文章标记, 因为换域名时真的好麻烦.. 
- [博客第一楼回复内容](对应issue的链接)
- [博客第二楼回复内容](对应issue的链接)
  1. 新的issue评论相当于贴吧中的一楼,回复相当于楼中楼,close评论也加载到页面, 新建的issue还是按以前的方法(在一楼添加对应文章的标记)

  2. 所有者查看评论列表每个主楼层(issue)有个按钮同步楼层数据到索引页。

  3. 索引的issue页每篇文章的索引可以直接占用一个回复,并在同步索引时删除创建者不是所有者的回复

  4. 评论加载查询顺序变为:

    1. 用当前博客域名查询索引页的issue地址, 并在索引页评论中查询到当前url的评论连接(只查所有者创建的回复).
    2. 同时也查询没有同步在索引页的新issue, 建议优先显示未同步索引的数据
  5. 所有者查看时, 在主楼层添加删除按钮, 以便在索引页删除索引, 并close掉issue, 删除索引用另一种列表表示. 然后7.2时不加载删除列表中的评论

这样应该就可以做到控制了, #id号的链接并不能修改. 做过索引之后原issue想怎么改都没关系了. 回复者解决问题后的乱改了的话, 可以把该回复删除掉, 毕竟回复者这么做的原因也可能是不希望再显示吧.

@ystyle

This comment has been minimized.

Copy link
Author

@ystyle ystyle commented Apr 20, 2017

@imsun 这个方案怎么样? 应该可以实现吧

@panxw

This comment has been minimized.

Copy link

@panxw panxw commented Jul 7, 2017

能否自动初始化呢,手工显得麻烦。

@newdee

This comment has been minimized.

Copy link

@newdee newdee commented Sep 18, 2017

现在有自动初始化的方案么?我看隔壁的Gitalk貌似是自动的。

@ithack

This comment has been minimized.

Copy link

@ithack ithack commented Oct 19, 2017

同问,有自动初始化方案吗?

@madordie

This comment has been minimized.

Copy link

@madordie madordie commented Aug 30, 2018

来个自动化的:gitment自动初始化

主要是做了2点:

  • 自动初始化(注意token的保存。。)
  • 使用md5(window.location.pathname)作为KEY,以保证50字符
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
7 participants
You can’t perform that action at this time.