在线文档
This commit is contained in:
parent
a6034fbfd9
commit
b244c94e8f
|
@ -0,0 +1,16 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Wide - 文档首页</title>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Wide</h1>
|
||||||
|
Wide 是一个基于 Web 的 golang 在线 IDE。
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="/doc/zh_CN/keyboard_shortcuts.html">键盘快捷键</a></li>
|
||||||
|
</ul>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,3 +0,0 @@
|
||||||
# Wide
|
|
||||||
|
|
||||||
Wide 是一个基于 Web 的 golang 在线 IDE。
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Wide - 键盘快捷键</title>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>键盘快捷键</h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>F11: 编辑器全屏</li>
|
||||||
|
<li>Ctrl+G: 跳转到行</li>
|
||||||
|
<li>Ctrl+\\: 自动补全</li>
|
||||||
|
</ul>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,5 +0,0 @@
|
||||||
# 键盘快捷键
|
|
||||||
|
|
||||||
* F11: 编辑器全屏
|
|
||||||
* Ctrl+G: 跳转到行
|
|
||||||
* Ctrl+\: 自动补全
|
|
|
@ -42,12 +42,12 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetLangs(r *http.Request) map[string]interface{} {
|
func GetLangs(r *http.Request) map[string]interface{} {
|
||||||
locale := getLocale(r)
|
locale := GetLocale(r)
|
||||||
|
|
||||||
return Locales[locale].Langs
|
return Locales[locale].Langs
|
||||||
}
|
}
|
||||||
|
|
||||||
func getLocale(r *http.Request) string {
|
func GetLocale(r *http.Request) string {
|
||||||
// TODO: 从请求中获取 locale
|
// TODO: 从请求中获取 locale
|
||||||
return "zh_CN"
|
return "zh_CN"
|
||||||
}
|
}
|
||||||
|
|
23
main.go
23
main.go
|
@ -16,22 +16,22 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func indexHandler(w http.ResponseWriter, r *http.Request) {
|
func indexHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
model := map[string]interface{}{"Wide": conf.Wide, "i18n": i18n.GetLangs(r)}
|
model := map[string]interface{}{"Wide": conf.Wide, "i18n": i18n.GetLangs(r), "locale": i18n.GetLocale(r)}
|
||||||
|
|
||||||
session, _ := user.Session.Get(r, "wide-session")
|
session, _ := user.Session.Get(r, "wide-session")
|
||||||
|
|
||||||
if session.IsNew {
|
// TODO: if session.IsNew {
|
||||||
// TODO: 以 admin 作为用户登录
|
// TODO: 以 admin 作为用户登录
|
||||||
name := conf.Wide.Users[0].Name
|
name := conf.Wide.Users[0].Name
|
||||||
glog.Infof("[%s] logged in", name)
|
glog.Infof("[%s] logged in", name)
|
||||||
|
|
||||||
session.Values["username"] = name
|
session.Values["username"] = name
|
||||||
session.Values["id"] = strconv.Itoa(rand.Int())
|
session.Values["id"] = strconv.Itoa(rand.Int())
|
||||||
}
|
// }
|
||||||
|
|
||||||
session.Save(r, w)
|
session.Save(r, w)
|
||||||
|
|
||||||
t, err := template.ParseFiles("templates/index.html")
|
t, err := template.ParseFiles("view/index.html")
|
||||||
|
|
||||||
if nil != err {
|
if nil != err {
|
||||||
glog.Error(err)
|
glog.Error(err)
|
||||||
|
@ -46,30 +46,39 @@ func indexHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
func main() {
|
func main() {
|
||||||
conf.Load()
|
conf.Load()
|
||||||
|
|
||||||
|
// 静态资源
|
||||||
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
|
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
|
||||||
|
|
||||||
|
// IDE 首页
|
||||||
http.HandleFunc("/", indexHandler)
|
http.HandleFunc("/", indexHandler)
|
||||||
|
|
||||||
|
// 运行相关
|
||||||
http.HandleFunc("/build", output.BuildHandler)
|
http.HandleFunc("/build", output.BuildHandler)
|
||||||
http.HandleFunc("/run", output.RunHandler)
|
http.HandleFunc("/run", output.RunHandler)
|
||||||
http.HandleFunc("/output/ws", output.WSHandler)
|
http.HandleFunc("/output/ws", output.WSHandler)
|
||||||
|
|
||||||
|
// 文件树
|
||||||
http.HandleFunc("/files", file.GetFiles)
|
http.HandleFunc("/files", file.GetFiles)
|
||||||
http.HandleFunc("/file", file.GetFile)
|
http.HandleFunc("/file", file.GetFile)
|
||||||
http.HandleFunc("/file/save", file.SaveFile)
|
http.HandleFunc("/file/save", file.SaveFile)
|
||||||
http.HandleFunc("/file/new", file.NewFile)
|
http.HandleFunc("/file/new", file.NewFile)
|
||||||
http.HandleFunc("/file/remove", file.RemoveFile)
|
http.HandleFunc("/file/remove", file.RemoveFile)
|
||||||
|
|
||||||
|
// 编辑器
|
||||||
http.HandleFunc("/editor/ws", editor.WSHandler)
|
http.HandleFunc("/editor/ws", editor.WSHandler)
|
||||||
http.HandleFunc("/fmt", editor.FmtHandler)
|
http.HandleFunc("/fmt", editor.FmtHandler)
|
||||||
|
|
||||||
http.HandleFunc("/shell/ws", shell.WSHandler)
|
|
||||||
|
|
||||||
http.HandleFunc("/autocomplete", editor.AutocompleteHandler)
|
http.HandleFunc("/autocomplete", editor.AutocompleteHandler)
|
||||||
|
|
||||||
|
// Shell
|
||||||
|
http.HandleFunc("/shell/ws", shell.WSHandler)
|
||||||
|
|
||||||
|
// 用户
|
||||||
http.HandleFunc("/user/new", user.AddUser)
|
http.HandleFunc("/user/new", user.AddUser)
|
||||||
http.HandleFunc("/user/repos/init", user.InitGitRepos)
|
http.HandleFunc("/user/repos/init", user.InitGitRepos)
|
||||||
|
|
||||||
|
// 文档
|
||||||
|
http.Handle("/doc/", http.StripPrefix("/doc/", http.FileServer(http.Dir("doc"))))
|
||||||
|
|
||||||
glog.Infof("Wide is running [%s]", conf.Wide.Server)
|
glog.Infof("Wide is running [%s]", conf.Wide.Server)
|
||||||
|
|
||||||
err := http.ListenAndServe(conf.Wide.Server, nil)
|
err := http.ListenAndServe(conf.Wide.Server, nil)
|
||||||
|
|
|
@ -60,6 +60,8 @@
|
||||||
|
|
||||||
<textarea id="shellOutput" class="shellOutput" rows="8"></textarea>
|
<textarea id="shellOutput" class="shellOutput" rows="8"></textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<a href="/doc/{{.locale}}/index.html" target="_blank">Help</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
Loading…
Reference in New Issue