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

SpeakerDeckやSlideShareなどのスライドを記事に直接表示したい #116

Closed
nagodon opened this issue Oct 22, 2015 · 17 comments
Closed

Comments

@nagodon
Copy link
Contributor

nagodon commented Oct 22, 2015

記事上で直接スライドが表示されると非常に便利かなと思います。
ご検討頂ければ幸いです。

@kounoike
Copy link

別件でブログにtwitter発言とか簡単に埋め込む方法を調べていたところ出てきたのですが、
Open Graphというらしいですね。

https://github.com/nfl/jquery-oembed-all を使うと色々なサイトへのリンクを埋め込むことができるみたいです。

@nagodon
Copy link
Contributor Author

nagodon commented Oct 22, 2015

@kounoike ありがとうございます。
すごい便利ですね、このライブラリ。

これをうまくmarkdownと絡めれればいけそうですね。

@koda-masaru
Copy link
Contributor

たしかに、スライドの表示などできると便利ですね。

@kounoike さんの教えていただいた方法で実現出来れば、実現したいですね。

@nagodon さん。対応してみます?

@nagodon
Copy link
Contributor Author

nagodon commented Oct 22, 2015

@koda-masaru

では対応してみたいと思います。
markedを拡張して専用のmarkdownで対応した方が良いでしょうか?
それとも直接aタグ入れてもらう方がいいでしょうか?

@kounoike
Copy link

markdownを変に拡張するよりも、まずはbookmark限定の機能として実装してみるというのはどうでしょうか?

@koda-masaru
Copy link
Contributor

直接タグを埋め込んだりすることを許すと、XSSの脆弱性が発生しそうで大丈夫でしょうか?
markdownを拡張して、ユーザが自由にiframeやscriptタグを生成できるようになると危険な気がします。

このため、 @kounoike さんのご意見のように、 bookmarkのような形で slide といった
テンプレートを作成して、その中でスライドの内容表示をハンドリングした方が良いかもです。

@nagodon
Copy link
Contributor Author

nagodon commented Oct 22, 2015

すいません、ちょっと語弊があったかもしれません。
https://github.com/nfl/jquery-oembed-all
こちらのライブラリはhtml中のaタグにclass="oembed"という属性がついたaタグがあった場合に表示を試みるのでダイレクトにiframeやscriptタグを入れてもらう前提ではありませんでした。

例えばmarkdownの拡張というのは以下の形をイメージしておりました。

[oembed http://slideshare.net/xxxxx]

この形でmarkdownを書くと画面表示する際に

<a class="oembed" href="url"></a>

という形に変換されてスライド等が表示されるイメージでした。

また直接タグを入れてもらうというのはaタグはmarkdownパーサーでも通常リンク扱いになるのでご提案させて頂いた次第です。

@koda-masaru
Copy link
Contributor

なるほど。
https://github.com/nfl/jquery-oembed-all のライブラリの使い方がわからなかったので、
食い違っていたようです。

上記のようであれば、XSS系の脆弱性も出ないので良いかと思います。

@koda-masaru
Copy link
Contributor

なお、Markdownのパース(Markdown→HTML)は、
org.support.project.knowledge.logic.MarkdownLogic
で行っています。
この部分を拡張していけば、実現出来るかと思います。

なお、MarkdownはPegDownというJavaのライブラリを使ってパースしています。
また、PegDownが失敗した場合、Markd.jsというJavascriptのMarkdownパーサーを使ってパースします。
Gitbucketの作者さんが、gitbucket/markedj [https://github.com/gitbucket/markedj] という、Markd.jsをJavaにポーティングしたパーサーを作ったので、PegDownから乗り換えも検討しています。

参考:http://takezoe.hatenablog.com/entry/2015/10/03/143930

@nagodon
Copy link
Contributor Author

nagodon commented Oct 23, 2015

ありがとうございます。
これを機にmarkedjに乗り換えますか?

@koda-masaru
Copy link
Contributor

そうですね。
markedjの方が、「GitHub Flavored Markdownのより良いサポートを提供」と書いてあるので、
乗り換えてしまって良いかもです。

その上で、Forkして上記の拡張も実装するというアイディアも良いかもしれません。

@nagodon
Copy link
Contributor Author

nagodon commented Oct 23, 2015

Forkして拡張を実装という形だと非常に助かりますね。
どうやって拡張しようかちょっと悩んでました:disappointed_relieved:

@koda-masaru
Copy link
Contributor

では、Forkのプロジェクトを用意してみようと思います。
Forkして拡張して、うまく出来たら、gitbucket/markedjの作者さまにも伝えていくということでも良いかもしれませんね。(本家でもサポートしてくれるかも?)

@nagodon
Copy link
Contributor Author

nagodon commented Oct 23, 2015

ありがとうございます。
なるほど、いいですね。

koda-masaru added a commit that referenced this issue Oct 23, 2015
- Forkしたmarkedjを参照するように設定の変更
- MarkdownLogic内のパース呼び出し処理のデフォルトを、上記Forkしたライブラリに変更
- 呼び出せてることをテスト出来るようにした
@koda-masaru
Copy link
Contributor

Forkした markedj のパーサーを Knowledge内のMarkdownLogicで呼び出せるようにしてみました。
feature/issue116_slide のブランチにすると、Forkしたmarkedj でMarkdownのパースを行うようになります。

markedjに、上記の独自拡張の実装をお願いします。

@nagodon
Copy link
Contributor Author

nagodon commented Oct 24, 2015

support-project/markedj#2 でまずmarkdown側のsyntaxの拡張行いました。

@nagodon
Copy link
Contributor Author

nagodon commented Oct 25, 2015

#121 で対応しました

koda-masaru added a commit that referenced this issue Oct 26, 2015
#116 スライドや動画を記事に表示できるように
@koda-masaru koda-masaru added this to the v0.6 milestone Oct 26, 2015
@koda-masaru koda-masaru assigned nagodon and unassigned nagodon Oct 26, 2015
@nagodon nagodon self-assigned this Oct 27, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants