forked from x/ContextOS
tce add funcmap.msg
This commit is contained in:
parent
8fa1cfe077
commit
5a30fc6bb9
@ -85,70 +85,88 @@ type WEB struct {
|
|||||||
*ctx.Context
|
*ctx.Context
|
||||||
}
|
}
|
||||||
|
|
||||||
var funcmap = template.FuncMap{"meta": func(arg ...interface{}) string {
|
var funcmap = template.FuncMap{
|
||||||
if len(arg) == 0 {
|
"meta": func(arg ...interface{}) string { // {{{
|
||||||
return ""
|
if len(arg) == 0 {
|
||||||
}
|
|
||||||
|
|
||||||
up := ""
|
|
||||||
if m, ok := arg[0].(*ctx.Message); ok {
|
|
||||||
if len(arg) == 1 {
|
|
||||||
return fmt.Sprintf("%v", m)
|
|
||||||
} else {
|
|
||||||
arg[0] = m.Meta
|
|
||||||
if key, ok := arg[1].(string); ok {
|
|
||||||
switch key {
|
|
||||||
case "context":
|
|
||||||
msg := m.Spawn(m.Target())
|
|
||||||
msg.Cmd("context")
|
|
||||||
up = strings.Join(msg.Meta["result"], "")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
list := []string{}
|
|
||||||
switch data := arg[0].(type) {
|
|
||||||
case map[string][]string:
|
|
||||||
if len(arg) == 1 {
|
|
||||||
list = append(list, fmt.Sprintf("detail: %s\n", data["detail"]))
|
|
||||||
list = append(list, fmt.Sprintf("option: %s\n", data["option"]))
|
|
||||||
list = append(list, fmt.Sprintf("result: %s\n", data["result"]))
|
|
||||||
list = append(list, fmt.Sprintf("append: %s\n", data["append"]))
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if key, ok := arg[1].(string); ok {
|
|
||||||
if list, ok = data[key]; ok {
|
|
||||||
arg = arg[1:]
|
|
||||||
} else {
|
|
||||||
return up
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return fmt.Sprintf("%v", data)
|
|
||||||
}
|
|
||||||
case []string:
|
|
||||||
list = data
|
|
||||||
default:
|
|
||||||
if data == nil {
|
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("%v", data)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(arg) == 1 {
|
up := ""
|
||||||
return strings.Join(list, "")
|
|
||||||
}
|
|
||||||
|
|
||||||
index, ok := arg[1].(int)
|
list := []string{}
|
||||||
if !ok {
|
switch data := arg[0].(type) {
|
||||||
return strings.Join(list, "")
|
case map[string][]string:
|
||||||
}
|
if len(arg) == 1 {
|
||||||
|
list = append(list, fmt.Sprintf("detail: %s\n", data["detail"]))
|
||||||
|
list = append(list, fmt.Sprintf("option: %s\n", data["option"]))
|
||||||
|
list = append(list, fmt.Sprintf("result: %s\n", data["result"]))
|
||||||
|
list = append(list, fmt.Sprintf("append: %s\n", data["append"]))
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if key, ok := arg[1].(string); ok {
|
||||||
|
if list, ok = data[key]; ok {
|
||||||
|
arg = arg[1:]
|
||||||
|
} else {
|
||||||
|
return up
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return fmt.Sprintf("%v", data)
|
||||||
|
}
|
||||||
|
case []string:
|
||||||
|
list = data
|
||||||
|
default:
|
||||||
|
if data == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("%v", data)
|
||||||
|
}
|
||||||
|
|
||||||
if index >= len(list) {
|
if len(arg) == 1 {
|
||||||
|
return strings.Join(list, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
index, ok := arg[1].(int)
|
||||||
|
if !ok {
|
||||||
|
return strings.Join(list, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
if index >= len(list) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return list[index]
|
||||||
|
}, // }}}
|
||||||
|
"msg": func(arg ...interface{}) string { // {{{
|
||||||
|
if len(arg) == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if m, ok := arg[0].(*ctx.Message); ok {
|
||||||
|
if len(arg) == 1 {
|
||||||
|
return fmt.Sprintf("%v", m)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch action := arg[1].(type) {
|
||||||
|
case string:
|
||||||
|
switch action {
|
||||||
|
case "option":
|
||||||
|
if len(arg) == 2 {
|
||||||
|
return fmt.Sprintf("%v", m.Meta["option"])
|
||||||
|
}
|
||||||
|
|
||||||
|
key, _ := arg[2].(string)
|
||||||
|
if len(arg) == 3 {
|
||||||
|
return m.Option(key)
|
||||||
|
}
|
||||||
|
value, _ := arg[3].(string)
|
||||||
|
if len(arg) == 4 {
|
||||||
|
return m.Option(key, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case int:
|
||||||
|
}
|
||||||
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}, // }}}
|
||||||
return list[index]
|
}
|
||||||
}}
|
|
||||||
|
|
||||||
func (web *WEB) generate(m *ctx.Message, uri string, arg ...string) string { // {{{
|
func (web *WEB) generate(m *ctx.Message, uri string, arg ...string) string { // {{{
|
||||||
add, e := url.Parse(uri)
|
add, e := url.Parse(uri)
|
||||||
@ -671,10 +689,6 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
m.Option("file", m.Cap("directory"))
|
m.Option("file", m.Cap("directory"))
|
||||||
}
|
}
|
||||||
|
|
||||||
if !m.Options("username") {
|
|
||||||
m.Option("username", "")
|
|
||||||
}
|
|
||||||
|
|
||||||
m.Option("right", "")
|
m.Option("right", "")
|
||||||
m.Option("message", "")
|
m.Option("message", "")
|
||||||
aaa := m.Find("aaa").Cmd("login", m.Option("sessid"))
|
aaa := m.Find("aaa").Cmd("login", m.Option("sessid"))
|
||||||
@ -714,9 +728,9 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
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)
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
_, e = f.WriteString(m.Option("content"))
|
_, e = f.WriteString(m.Option("content"))
|
||||||
defer f.Close()
|
|
||||||
m.Assert(e)
|
m.Assert(e)
|
||||||
m.Option("message", name, "upload success!")
|
m.Option("message", name, "upload success!")
|
||||||
} else {
|
} else {
|
||||||
@ -731,6 +745,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
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)
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
_, e = io.Copy(f, file)
|
_, e = io.Copy(f, file)
|
||||||
m.Assert(e)
|
m.Assert(e)
|
||||||
@ -741,27 +756,25 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tmpl := template.Must(template.Must(template.New("fuck").Funcs(funcmap).ParseGlob(m.Conf("template_dir") + "/common/*.html")).ParseGlob(m.Conf("template_dir") + "upload.html"))
|
||||||
|
m.Assert(tmpl)
|
||||||
|
|
||||||
if !m.Options("right") {
|
if !m.Options("right") {
|
||||||
w.Header().Add("Content-Type", "text/html")
|
w.Header().Add("Content-Type", "text/html")
|
||||||
tmpl := template.Must(template.Must(template.New("fuck").Funcs(funcmap).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, "head", m.Meta)
|
||||||
tmpl.ExecuteTemplate(w, "login", 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, "message", m.Meta)
|
||||||
tmpl.ExecuteTemplate(w, "tail", m.Meta)
|
tmpl.ExecuteTemplate(w, "tail", m.Meta)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
file := m.Option("file")
|
s, e := os.Stat(m.Option("file"))
|
||||||
s, e := os.Stat(file)
|
|
||||||
if m.Assert(e); !s.IsDir() {
|
if m.Assert(e); !s.IsDir() {
|
||||||
http.ServeFile(w, r, file)
|
http.ServeFile(w, r, m.Option("file"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
fs, e := ioutil.ReadDir(file)
|
fs, e := ioutil.ReadDir(m.Option("file"))
|
||||||
m.Assert(e)
|
m.Assert(e)
|
||||||
|
|
||||||
max := true
|
max := true
|
||||||
@ -798,6 +811,30 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
share := m.Spawn(m.Target())
|
||||||
|
index := share.Target().Index
|
||||||
|
if index != nil && index[m.Option("right")] != nil {
|
||||||
|
for k, v := range index[m.Option("right")].Index {
|
||||||
|
for i, j := range v.Commands {
|
||||||
|
for v, n := range j.Shares {
|
||||||
|
for _, nn := range n {
|
||||||
|
match, e := regexp.MatchString(nn, m.Option("file"))
|
||||||
|
m.Assert(e)
|
||||||
|
if match {
|
||||||
|
share.Add("append", "group", k)
|
||||||
|
share.Add("append", "command", i)
|
||||||
|
share.Add("append", "argument", v)
|
||||||
|
share.Add("append", "value", nn)
|
||||||
|
share.Add("append", "delete", "delete")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
list := m.Spawn(m.Target())
|
||||||
|
list.Option("file", m.Option("file"))
|
||||||
for _, v := range fs {
|
for _, v := range fs {
|
||||||
name := v.Name()
|
name := v.Name()
|
||||||
if v.IsDir() {
|
if v.IsDir() {
|
||||||
@ -807,46 +844,21 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
m.Add("append", "time", v.ModTime().Format("2006-01-02 15:04:05"))
|
list.Add("append", "time", v.ModTime().Format("2006-01-02 15:04:05"))
|
||||||
m.Add("append", "size", kit.FmtSize(v.Size()))
|
list.Add("append", "size", kit.FmtSize(v.Size()))
|
||||||
m.Add("append", "name", name)
|
list.Add("append", "name", name)
|
||||||
m.Add("append", "path", path.Join(m.Option("file"), name))
|
list.Add("append", "path", path.Join(m.Option("file"), name))
|
||||||
}
|
}
|
||||||
|
|
||||||
w.Header().Add("Content-Type", "text/html")
|
w.Header().Add("Content-Type", "text/html")
|
||||||
tmpl := template.Must(template.Must(template.New("fuck").Funcs(funcmap).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, "head", m.Meta)
|
||||||
tmpl.ExecuteTemplate(w, "userinfo", m.Meta)
|
if m.Options("message") {
|
||||||
|
tmpl.ExecuteTemplate(w, "message", m.Meta)
|
||||||
msg := m.Spawn(m.Target())
|
|
||||||
|
|
||||||
index := msg.Target().Index
|
|
||||||
if index != nil && index[m.Option("right")] != nil {
|
|
||||||
for k, v := range index[m.Option("right")].Index {
|
|
||||||
// for k, v := range index {
|
|
||||||
for i, j := range v.Commands {
|
|
||||||
for v, n := range j.Shares {
|
|
||||||
for _, nn := range n {
|
|
||||||
match, e := regexp.MatchString(nn, m.Option("file"))
|
|
||||||
m.Log("fuck", nil, "why %s %s", nn, m.Option("file"))
|
|
||||||
m.Assert(e)
|
|
||||||
if match {
|
|
||||||
msg.Add("append", "group", k)
|
|
||||||
msg.Add("append", "command", i)
|
|
||||||
msg.Add("append", "argument", v)
|
|
||||||
msg.Add("append", "value", nn)
|
|
||||||
msg.Add("append", "delete", "delete")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tmpl.ExecuteTemplate(w, "share", msg.Meta)
|
tmpl.ExecuteTemplate(w, "userinfo", m.Meta)
|
||||||
tmpl.ExecuteTemplate(w, "upload", m.Meta)
|
tmpl.ExecuteTemplate(w, "share", share)
|
||||||
|
tmpl.ExecuteTemplate(w, "list", list.Meta)
|
||||||
|
|
||||||
switch m.Option("cmd") {
|
switch m.Option("cmd") {
|
||||||
case "git":
|
case "git":
|
||||||
@ -857,15 +869,9 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
tmpl.ExecuteTemplate(w, "git", m.Meta)
|
tmpl.ExecuteTemplate(w, "git", m.Meta)
|
||||||
}
|
}
|
||||||
|
|
||||||
if m.Options("message") {
|
tmpl.ExecuteTemplate(w, "upload", m.Meta)
|
||||||
tmpl.ExecuteTemplate(w, "message", m.Meta)
|
|
||||||
}
|
|
||||||
|
|
||||||
tmpl.ExecuteTemplate(w, "list", m.Meta)
|
|
||||||
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, "append")
|
|
||||||
// }}}
|
// }}}
|
||||||
}},
|
}},
|
||||||
"/travel": &ctx.Command{Name: "/travel", Help: "文件上传", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
"/travel": &ctx.Command{Name: "/travel", Help: "文件上传", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||||
|
@ -14,22 +14,20 @@
|
|||||||
code {
|
code {
|
||||||
font-size:14px;
|
font-size:14px;
|
||||||
}
|
}
|
||||||
.message {
|
|
||||||
color:red;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<pre>
|
|
||||||
{{meta .Meta}}<br/>
|
|
||||||
{{meta . "context"}}<br/>
|
|
||||||
</pre>
|
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
{{define "message"}}
|
{{define "message"}}
|
||||||
<fieldset class="message"><legend>message</legend>
|
<fieldset class="message"><legend>message</legend>
|
||||||
<pre>{{meta . "message"}}</pre>
|
<pre>{{meta .message}}</pre>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
<style>
|
||||||
|
.message {
|
||||||
|
color:red;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
{{define "tail"}}
|
{{define "tail"}}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{{define "login"}}
|
{{define "login"}}
|
||||||
<fieldset><legend>login</legend>
|
<fieldset><legend>login</legend>
|
||||||
<form method="POST" action="/login" onsubmit="return login(event)">
|
<form method="POST" onsubmit="return login(event)">
|
||||||
<label>username:</label><input type="text" name="username" value="{{meta .username}}" required autofocus>
|
<label>username:</label><input type="text" name="username" value="{{meta .username}}" required autofocus>
|
||||||
<label>password:</label><input type="password" name="password" required>
|
<label>password:</label><input type="password" name="password" required>
|
||||||
<input type="submit">
|
<input type="submit">
|
||||||
@ -24,9 +24,15 @@
|
|||||||
|
|
||||||
{{define "userinfo"}}
|
{{define "userinfo"}}
|
||||||
<fieldset><legend>userinfo</legend>
|
<fieldset><legend>userinfo</legend>
|
||||||
welcome {{index .username 0}}
|
welcome <span class="username">{{meta .username}}</span> to context world
|
||||||
<button onclick="return logout(event)">logout</button>
|
<button onclick="return logout(event)">logout</button>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
<style>
|
||||||
|
.username {
|
||||||
|
color:red;
|
||||||
|
font-weight:bold;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
<script>
|
<script>
|
||||||
function logout(event) {
|
function logout(event) {
|
||||||
ctx.Cookie("sessid", "");
|
ctx.Cookie("sessid", "");
|
||||||
@ -38,43 +44,35 @@
|
|||||||
|
|
||||||
{{define "share"}}
|
{{define "share"}}
|
||||||
<fieldset><legend>share</legend>
|
<fieldset><legend>share</legend>
|
||||||
<form method="POST" onsubmit="return share(event)">
|
<form method="POST" onsubmit="return share(event, '{{msg . "option" "file"}}')">
|
||||||
<label>share to:</label><input type="text" name="shareto" required>
|
<label>share to:</label><input type="text" name="shareto" required>
|
||||||
<input type="submit">
|
<input type="submit">
|
||||||
</form>
|
</form>
|
||||||
<table>
|
<table>
|
||||||
<colgroup>
|
<colgroup>{{range .Meta.append}}<col class="{{.}}">{{end}}</colgroup>
|
||||||
{{range .append}}
|
<tr>{{range .Meta.append}}<th class="{{.}}">{{.}}</th>{{end}}</tr>
|
||||||
<col class="{{.}}">
|
|
||||||
{{end}}
|
|
||||||
</colgroup>
|
|
||||||
<tr>
|
|
||||||
{{range .append}}
|
|
||||||
<th class="{{.}}">{{.}}</th>
|
|
||||||
{{end}}
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
{{$meta := .}}
|
{{if .Meta.append}}
|
||||||
{{if .append}}
|
{{$meta := .Meta}}
|
||||||
{{$first := index .append 0}}
|
{{$first := index .Meta.append 0}}
|
||||||
{{range $i, $k := index . $first}}
|
{{range $i, $k := index $meta $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}}
|
|
||||||
</td>
|
|
||||||
{{end}}
|
{{end}}
|
||||||
</tr>
|
</td>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
</tr>
|
||||||
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<script>
|
<script>
|
||||||
function share(event) {
|
function share(event, file) {
|
||||||
var fields = event.target.elements;
|
var fields = event.target.elements;
|
||||||
var shareto = fields["shareto"].value
|
var shareto = fields["shareto"].value
|
||||||
ctx.POST("/upload", {
|
ctx.POST("/upload", {
|
||||||
|
@ -7,25 +7,14 @@
|
|||||||
</fieldset>
|
</fieldset>
|
||||||
{{end}}
|
{{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"}}
|
{{define "list"}}
|
||||||
<fieldset><legend><input type="text" id="dir" value="{{index .file 0}}" onkeydown="return Change(event)"></legend>
|
<fieldset><legend><input type="text" id="dir" value="{{meta .file}}" onkeydown="return Change(event)"></legend>
|
||||||
<table>
|
<table>
|
||||||
<colgroup>
|
<colgroup>{{range .append}}<col class="{{.}}">{{end}}</colgroup>
|
||||||
{{range .append}}
|
|
||||||
<col class="{{.}}">
|
|
||||||
{{end}}
|
|
||||||
</colgroup>
|
|
||||||
<tr>
|
<tr>
|
||||||
{{$sort := index . "sort" 0}}
|
{{$sort := meta .sort}}
|
||||||
{{$reverse := index . "reverse" 0}}
|
{{$reverse := meta .reverse}}
|
||||||
{{range .append}}
|
{{range .append}}
|
||||||
{{if eq $sort .}}
|
{{if eq $sort .}}
|
||||||
<th class="{{.}} sort" onclick="list('{{.}}')">{{.}}</th>
|
<th class="{{.}} sort" onclick="list('{{.}}')">{{.}}</th>
|
||||||
@ -38,25 +27,25 @@
|
|||||||
{{end}}
|
{{end}}
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
{{$meta := .}}
|
|
||||||
{{if .append}}
|
{{if .append}}
|
||||||
{{$first := index .append 0}}
|
{{$meta := .}}
|
||||||
{{range $i, $k := index . $first}}
|
{{$first := index .append 0}}
|
||||||
<tr>
|
{{range $i, $k := index . $first}}
|
||||||
{{range $key := index $meta "append"}}
|
<tr>
|
||||||
{{if eq $key "name"}}
|
{{range $key := index $meta "append"}}
|
||||||
<td class="{{$key}}">
|
{{if eq $key "name"}}
|
||||||
<a href="/upload?file={{index $meta "path" $i}}"><code>{{index $meta $key $i}}</code></a>
|
<td class="{{$key}}">
|
||||||
</td>
|
<a href="/upload?file={{index $meta "path" $i}}"><code>{{index $meta $key $i}}</code></a>
|
||||||
{{else if eq $key "path"}}
|
</td>
|
||||||
{{else}}
|
{{else if eq $key "path"}}
|
||||||
<td class="{{$key}}">
|
{{else}}
|
||||||
<code>{{index $meta $key $i}}</code>
|
<td class="{{$key}}">
|
||||||
</td>
|
<code>{{index $meta $key $i}}</code>
|
||||||
{{end}}
|
</td>
|
||||||
{{end}}
|
{{end}}
|
||||||
</tr>
|
|
||||||
{{end}}
|
{{end}}
|
||||||
|
</tr>
|
||||||
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
</table>
|
</table>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
@ -80,7 +69,6 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<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);
|
||||||
@ -88,13 +76,21 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function list(what) {
|
function list(what) {
|
||||||
|
ctx.Cookie("order", ctx.Cookie("order")*1 + 1);
|
||||||
ctx.Cookie("list", what);
|
ctx.Cookie("list", what);
|
||||||
ctx.Cookie("order", ctx.Cookie("order")*1 + 1)
|
ctx.Refresh();
|
||||||
location.assign(location.href)
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{{end}}
|
{{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 "create"}}
|
{{define "create"}}
|
||||||
<fieldset><legend>create</legend>
|
<fieldset><legend>create</legend>
|
||||||
<form method="POST" action="/upload">
|
<form method="POST" action="/upload">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user