1
0
forked from x/ContextOS

tce add base.html

This commit is contained in:
shaoying 2018-05-30 23:28:39 +08:00
parent 2b834d28e0
commit 5348baeb2b
5 changed files with 196 additions and 174 deletions

View File

@ -2382,7 +2382,9 @@ var Index = &Context{Name: "ctx", Help: "模块中心",
} }
if len(arg) > 3 { if len(arg) > 3 {
for _, v := range group.Commands[item].Shares[arg[2]] { for _, v := range group.Commands[item].Shares[arg[2]] {
if arg[3] == v { match, e := regexp.MatchString(v, arg[3])
m.Assert(e)
if match {
m.Echo("ok") m.Echo("ok")
return return
} }

View File

@ -602,17 +602,16 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
r := m.Data["request"].(*http.Request) // {{{ r := m.Data["request"].(*http.Request) // {{{
w := m.Data["response"].(http.ResponseWriter) w := m.Data["response"].(http.ResponseWriter)
m.Option("message", "")
if !m.Options("file") { if !m.Options("file") {
m.Option("file", m.Cap("directory")) m.Option("file", m.Cap("directory"))
} }
dir := m.Option("file")
if !m.Options("username") { if !m.Options("username") {
m.Option("username", "") m.Option("username", "")
} }
m.Option("right", "") m.Option("right", "")
m.Option("message", "")
aaa := m.Find("aaa").Cmd("login", m.Option("sessid")) aaa := m.Find("aaa").Cmd("login", m.Option("sessid"))
if aaa.Result(0) == "error: " { if aaa.Result(0) == "error: " {
m.Option("sessid", "") m.Option("sessid", "")
@ -620,15 +619,20 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
} else { } else {
m.Option("username", aaa.Result(0)) m.Option("username", aaa.Result(0))
msg := m.Spawn(m.Target()) msg := m.Spawn(m.Target())
msg.Cmd("right", "check", aaa.Cap("group"), "command", "/upload", "file", dir) msg.Cmd("right", "check", aaa.Cap("group"), "command", "/upload", "file", m.Option("file"))
if msg.Result(0) == "ok" { if msg.Result(0) == "ok" {
m.Option("right", aaa.Cap("group")) m.Option("right", aaa.Cap("group"))
} else { } else {
m.Option("message", "your do not have the right of", dir) m.Option("message", "your do not have the right of", m.Option("file"))
} }
} }
if m.Option("method") == "POST" { if m.Option("method") == "POST" {
if !m.Options("right") {
m.Echo("you do not have the rightt, please contact manager!")
return
}
if m.Options("notshareto") { if m.Options("notshareto") {
msg := m.Spawn(m.Target()) msg := m.Spawn(m.Target())
msg.Cmd("right", "del", m.Option("notshareto"), "command", "/upload", "file", m.Option("sharefile")) msg.Cmd("right", "del", m.Option("notshareto"), "command", "/upload", "file", m.Option("sharefile"))
@ -641,7 +645,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
m.Append("link", "hello") m.Append("link", "hello")
return return
} else if m.Options("content") { } else if m.Options("content") {
name := path.Join(dir, m.Option("filename")) name := path.Join(m.Option("file"), m.Option("filename"))
if _, e := os.Stat(name); e != nil { if _, e := os.Stat(name); e != nil {
f, e := os.Create(name) f, e := os.Create(name)
m.Assert(e) m.Assert(e)
@ -657,7 +661,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
file, header, e := r.FormFile("file") file, header, e := r.FormFile("file")
m.Assert(e) m.Assert(e)
name := path.Join(dir, header.Filename) name := path.Join(m.Option("file"), header.Filename)
if _, e := os.Stat(name); e != nil { if _, e := os.Stat(name); e != nil {
f, e := os.Create(name) f, e := os.Create(name)
@ -672,6 +676,19 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
} }
} }
if !m.Options("right") {
w.Header().Add("Content-Type", "text/html")
tmpl := template.Must(template.Must(template.ParseGlob(m.Conf("template_dir") + "/common/*.html")).ParseGlob(m.Conf("template_dir") + "upload.html"))
m.Assert(tmpl)
tmpl.ExecuteTemplate(w, "head", m.Meta)
tmpl.ExecuteTemplate(w, "login", m.Meta)
m.Option("message", "your do not have the right, please contact manager")
tmpl.ExecuteTemplate(w, "message", m.Meta)
tmpl.ExecuteTemplate(w, "tail", m.Meta)
return
}
file := m.Option("file") file := m.Option("file")
s, e := os.Stat(file) s, e := os.Stat(file)
if m.Assert(e); !s.IsDir() { if m.Assert(e); !s.IsDir() {
@ -736,46 +753,41 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
m.Assert(tmpl) m.Assert(tmpl)
tmpl.ExecuteTemplate(w, "head", m.Meta) tmpl.ExecuteTemplate(w, "head", m.Meta)
if m.Options("right") { tmpl.ExecuteTemplate(w, "userinfo", m.Meta)
tmpl.ExecuteTemplate(w, "userinfo", m.Meta)
msg := m.Spawn(m.Target()) msg := m.Spawn(m.Target())
index := msg.Target().Index index := msg.Target().Index
if index != nil && index[m.Option("right")] != nil { if index != nil && index[m.Option("right")] != nil {
for k, v := range index[m.Option("right")].Index { for k, v := range index[m.Option("right")].Index {
// for k, v := range index { // for k, v := range index {
for i, j := range v.Commands { for i, j := range v.Commands {
for v, n := range j.Shares { for v, n := range j.Shares {
for _, nn := range n { for _, nn := range n {
match, e := regexp.MatchString(nn, dir) match, e := regexp.MatchString(nn, m.Option("file"))
m.Log("fuck", nil, "why %s %s", nn, dir) m.Log("fuck", nil, "why %s %s", nn, m.Option("file"))
m.Assert(e) m.Assert(e)
if match { if match {
msg.Add("append", "group", k) msg.Add("append", "group", k)
msg.Add("append", "command", i) msg.Add("append", "command", i)
msg.Add("append", "argument", v) msg.Add("append", "argument", v)
msg.Add("append", "value", nn) msg.Add("append", "value", nn)
msg.Add("append", "delete", "delete") msg.Add("append", "delete", "delete")
}
} }
} }
} }
} }
} }
tmpl.ExecuteTemplate(w, "share", msg.Meta)
tmpl.ExecuteTemplate(w, "upload", m.Meta)
} else {
tmpl.ExecuteTemplate(w, "login", m.Meta)
} }
tmpl.ExecuteTemplate(w, "share", msg.Meta)
tmpl.ExecuteTemplate(w, "upload", m.Meta)
switch m.Option("cmd") { switch m.Option("cmd") {
case "git": case "git":
branch := m.Find("nfs").Cmd("git", "-C", dir, "branch") branch := m.Find("nfs").Cmd("git", "-C", m.Option("file"), "branch")
m.Option("branch", branch.Result(0)) m.Option("branch", branch.Result(0))
status := m.Find("nfs").Cmd("git", "-C", dir, "status") status := m.Find("nfs").Cmd("git", "-C", m.Option("file"), "status")
m.Option("status", status.Result(0)) m.Option("status", status.Result(0))
tmpl.ExecuteTemplate(w, "git", m.Meta) tmpl.ExecuteTemplate(w, "git", m.Meta)
} }
@ -785,9 +797,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
} }
tmpl.ExecuteTemplate(w, "list", m.Meta) tmpl.ExecuteTemplate(w, "list", m.Meta)
if m.Options("right") { tmpl.ExecuteTemplate(w, "create", m.Meta)
tmpl.ExecuteTemplate(w, "create", m.Meta)
}
tmpl.ExecuteTemplate(w, "tail", m.Meta) tmpl.ExecuteTemplate(w, "tail", m.Meta)
delete(m.Meta, "result") delete(m.Meta, "result")
delete(m.Meta, "append") delete(m.Meta, "append")
@ -899,6 +909,16 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
msg.Cmd("get", "method", "POST", "evaluating_add/", "questions", qs) msg.Cmd("get", "method", "POST", "evaluating_add/", "questions", qs)
m.Add("append", "hi", "hello") m.Add("append", "hi", "hello")
}}, }},
"/demo": &ctx.Command{Name: "/demo", Help: "应用示例", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
w := m.Data["response"].(http.ResponseWriter)
w.Header().Add("Content-Type", "text/html")
tmpl := template.Must(template.ParseGlob(m.Conf("template_dir") + "/common/*.html"))
m.Assert(tmpl)
tmpl.ExecuteTemplate(w, "head", m.Meta)
tmpl.ExecuteTemplate(w, "tail", m.Meta)
}},
}, },
} }

View File

@ -0,0 +1,35 @@
{{define "head"}}
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<link rel="icon" href="favicon.ico" type="image/x-icon"/>
<style>
legend {
font-size:16px;
font-weight:bold;
}
th {
cursor:pointer;
background-color:lightgray;
}
code {
font-size:14px;
}
.message {
color:red;
}
</style>
</head>
<body>
{{end}}
{{define "message"}}
<fieldset class="message"><legend>message</legend>
<pre>{{index . "message"}}</pre>
</fieldset>
{{end}}
{{define "tail"}}
<script src="library/context.js"></script>
</body>
{{end}}

View File

@ -43,34 +43,34 @@
<input type="submit"> <input type="submit">
</form> </form>
<table> <table>
<colgroup> <colgroup>
{{range .append}} {{range .append}}
<col class="{{.}}"> <col class="{{.}}">
{{end}} {{end}}
</colgroup> </colgroup>
<tr> <tr>
{{range .append}} {{range .append}}
<th class="{{.}}">{{.}}</th> <th class="{{.}}">{{.}}</th>
{{end}} {{end}}
</tr> </tr>
{{$meta := .}} {{$meta := .}}
{{if .append}} {{if .append}}
{{$first := index .append 0}} {{$first := index .append 0}}
{{range $i, $k := index . $first}} {{range $i, $k := index . $first}}
<tr> <tr>
{{range $key := index $meta "append"}} {{range $key := index $meta "append"}}
<td class="{{$key}}"> <td class="{{$key}}">
{{if eq $key "delete"}} {{if eq $key "delete"}}
<button onclick="return deleteshare(event, '{{index $meta "value" $i}}', '{{index $meta "group" $i}}')">delete</button> <button onclick="return deleteshare(event, '{{index $meta "value" $i}}', '{{index $meta "group" $i}}')">delete</button>
{{else}} {{else}}
<code>{{index $meta $key $i}}</code> <code>{{index $meta $key $i}}</code>
{{end}} {{end}}
</td> </td>
{{end}} {{end}}
</tr> </tr>
{{end}}
{{end}} {{end}}
{{end}}
</table> </table>
</fieldset> </fieldset>
<script> <script>

View File

@ -1,16 +1,66 @@
{{define "head"}} {{define "git"}}
<!DOCTYPE html> <fieldset><legend>branch</legend>
<head> <pre>{{index . "branch"}}</pre>
<meta charset="UTF-8"> </fieldset>
<fieldset><legend>status</legend>
<pre>{{index . "status"}}</pre>
</fieldset>
{{end}}
{{define "upload"}}
<fieldset><legend>upload</legend>
<form method="POST" action="/upload" enctype="multipart/form-data">
<input type="file" name="file"><input type="submit">
</form>
</fieldset>
{{end}}
{{define "list"}}
<fieldset><legend><input type="text" id="dir" value="{{index .file 0}}" onkeydown="return Change(event)"></legend>
<table>
<colgroup>
{{range .append}}
<col class="{{.}}">
{{end}}
</colgroup>
<tr>
{{$sort := index . "sort" 0}}
{{$reverse := index . "reverse" 0}}
{{range .append}}
{{if eq $sort .}}
<th class="{{.}} sort" onclick="list('{{.}}')">{{.}}</th>
{{else if eq $reverse .}}
<th class="{{.}} reverse" onclick="list('{{.}}')">{{.}}</th>
{{else if eq . "path"}}
{{else}}
<th class="{{.}}" onclick="list('{{.}}')">{{.}}</th>
{{end}}
{{end}}
</tr>
{{$meta := .}}
{{if .append}}
{{$first := index .append 0}}
{{range $i, $k := index . $first}}
<tr>
{{range $key := index $meta "append"}}
{{if eq $key "name"}}
<td class="{{$key}}">
<a href="/upload?file={{index $meta "path" $i}}"><code>{{index $meta $key $i}}</code></a>
</td>
{{else if eq $key "path"}}
{{else}}
<td class="{{$key}}">
<code>{{index $meta $key $i}}</code>
</td>
{{end}}
{{end}}
</tr>
{{end}}
{{end}}
</table>
</fieldset>
<style> <style>
legend {
font-size:16px;
font-weight:bold;
}
th {
cursor:pointer;
background-color:lightgray;
}
.time { .time {
padding-right:20px; padding-right:20px;
} }
@ -28,104 +78,9 @@
.reverse { .reverse {
color:green; color:green;
} }
.message {
color:red;
}
code {
font-size:14px;
}
</style> </style>
</head>
<body>
{{end}}
{{define "git"}}
<fieldset><legend>branch</legend>
<pre>{{index . "branch"}}</pre>
</fieldset>
<fieldset><legend>status</legend>
<pre>{{index . "status"}}</pre>
</fieldset>
{{end}}
{{define "upload"}}
<fieldset><legend>upload</legend>
<form method="POST" action="/upload" enctype="multipart/form-data">
<input type="file" name="file"><input type="submit">
</form>
</fieldset>
{{end}}
{{define "message"}}
<fieldset class="message"><legend>message</legend>
<pre>{{index . "message"}}</pre>
</fieldset>
{{end}}
{{define "list"}}
<fieldset><legend><input type="text" id="dir" value="{{index .file 0}}" onkeydown="return Change(event)"></legend>
<table>
<colgroup>
{{range .append}}
<col class="{{.}}">
{{end}}
</colgroup>
<tr>
{{$sort := index . "sort" 0}}
{{$reverse := index . "reverse" 0}}
{{range .append}}
{{if eq $sort .}}
<th class="{{.}} sort" onclick="list('{{.}}')">{{.}}</th>
{{else if eq $reverse .}}
<th class="{{.}} reverse" onclick="list('{{.}}')">{{.}}</th>
{{else if eq . "path"}}
{{else}}
<th class="{{.}}" onclick="list('{{.}}')">{{.}}</th>
{{end}}
{{end}}
</tr>
<script>
var file = '{{index .file 0}}';
</script>
{{$meta := .}}
{{if .append}}
{{$first := index .append 0}}
{{range $i, $k := index . $first}}
<tr>
{{range $key := index $meta "append"}}
{{if eq $key "name"}}
<td class="{{$key}}">
<a href="/upload?file={{index $meta "path" $i}}"><code>{{index $meta $key $i}}</code></a>
</td>
{{else if eq $key "path"}}
{{else}}
<td class="{{$key}}">
<code>{{index $meta $key $i}}</code>
</td>
{{end}}
{{end}}
</tr>
{{end}}
{{end}}
</table>
</fieldset>
{{end}}
{{define "create"}}
<fieldset><legend>create</legend>
<form method="POST" action="/upload">
<table>
<tr><td>filename:</td><td><input type="text" name="filename" required><input type="submit"></td></tr>
<tr><td>content:</td><td><textarea rows="5" cols="80" name="content" required></textarea></td></tr>
</table>
</form>
</fieldset>
{{end}}
{{define "tail"}}
<script src="library/context.js"></script>
<script> <script>
var file = '{{index .file 0}}';
function Change(event) { function Change(event) {
if (event.keyCode == 13) { if (event.keyCode == 13) {
ctx.Search("file", event.target.value); ctx.Search("file", event.target.value);
@ -138,5 +93,15 @@
location.assign(location.href) location.assign(location.href)
} }
</script> </script>
</body> {{end}}
{{define "create"}}
<fieldset><legend>create</legend>
<form method="POST" action="/upload">
<table>
<tr><td>filename:</td><td><input type="text" name="filename" required><input type="submit"></td></tr>
<tr><td>content:</td><td><textarea rows="5" cols="80" name="content" required></textarea></td></tr>
</table>
</form>
</fieldset>
{{end}} {{end}}