1
0
mirror of https://shylinux.com/x/ContextOS synced 2025-04-25 16:58:06 +08:00

add favor.note

This commit is contained in:
shaoying 2019-08-25 17:52:19 +08:00
parent b39fc0a342
commit 4eb290d72c
10 changed files with 86 additions and 30 deletions

View File

@ -4,5 +4,5 @@ var version = struct {
host string
self int
}{
"2019-08-24 17:10:37", "ZYB-20190522USI.centos", 402,
"2019-08-25 17:36:48", "mac", 429,
}

View File

@ -619,6 +619,7 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
return sed(m, arg[0], args)
}
skip, find := false, false
m.Confm("pwd", func(index int, value string) bool {
// p := path.Join(value, m.Option("dir_root"), arg[0])
p := path.Join(value, arg[0])
@ -650,12 +651,25 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
m.Append("file", p)
m.Append("size", s.Size())
m.Append("time", s.ModTime().Format(m.Conf("time", "format")))
skip = true
}
find = true
return true
}
return false
})
if !find && arg[0] != "" {
if strings.HasSuffix(arg[0], "/") {
m.Assert(os.MkdirAll(arg[0], 0777))
m.Echo(arg[0])
} else if f, p, e := kit.Create(arg[0]); m.Assert(e) {
f.Close()
m.Echo(p)
}
}
if m.Has("dir_sort") {
m.Sort(m.Meta["dir_sort"][0], m.Meta["dir_sort"][1:]...)
}
@ -664,7 +678,7 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
for _, v := range m.Meta[m.Meta["append"][0]] {
m.Echo(v).Echo(" ")
}
} else {
} else if !skip {
m.Table()
}
return

View File

@ -408,6 +408,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
m.Push("init", "")
}
m.Push("inputs", kit.Format(value["inputs"]))
m.Push("feature", kit.Format(value["feature"]))
m.Push("exports", kit.Format(value["exports"]))
m.Push("display", kit.Format(value["display"]))
})

View File

@ -318,6 +318,7 @@ var Index = &ctx.Context{Name: "yac", Help: "语法中心",
// 表达式语句
map[string]interface{}{"page": "op1", "hash": "op1", "word": []interface{}{"mul{", "-", "+", "}"}},
map[string]interface{}{"page": "op2", "hash": "op2", "word": []interface{}{"mul{", "~", "!~", "}"}},
map[string]interface{}{"page": "op2", "hash": "op2", "word": []interface{}{"mul{", "+", "-", "*", "/", "%", "}"}},
map[string]interface{}{"page": "op2", "hash": "op2", "word": []interface{}{"mul{", "<", "<=", ">", ">=", "==", "!=", "}"}},
map[string]interface{}{"page": "val", "hash": "val", "word": []interface{}{"opt{", "op1", "}", "mul{", "num", "key", "str", "exe", "}"}},
@ -354,7 +355,6 @@ var Index = &ctx.Context{Name: "yac", Help: "语法中心",
map[string]interface{}{"page": "op1", "hash": "op1", "word": []interface{}{"mul{", "-z", "-n", "}"}},
map[string]interface{}{"page": "op1", "hash": "op1", "word": []interface{}{"mul{", "-e", "-f", "-d", "}"}},
map[string]interface{}{"page": "op2", "hash": "op2", "word": []interface{}{"mul{", ":=", "=", "+=", "}"}},
map[string]interface{}{"page": "op2", "hash": "op2", "word": []interface{}{"mul{", "~", "!~", "}"}},
map[string]interface{}{"page": "exp", "hash": "exp", "word": []interface{}{"\\{", "rep{", "map", "}", "\\}"}},
map[string]interface{}{"page": "val", "hash": "val", "word": []interface{}{"opt{", "op1", "}", "(", "exp", ")"}},
@ -374,6 +374,7 @@ var Index = &ctx.Context{Name: "yac", Help: "语法中心",
"button": true,
"select": true,
"textarea": true,
"feature": true,
"exports": true,
}, Help: "控件类型"},
"exec": &ctx.Config{Name: "info", Value: map[string]interface{}{
@ -770,7 +771,9 @@ var Index = &ctx.Context{Name: "yac", Help: "语法中心",
}
pre := map[string]int{
"=": -1,
"=": -1,
"||": 0,
"==": 1, "~": 1,
"+": 2, "-": 2,
"*": 3, "/": 3, "%": 3,
}
@ -1094,6 +1097,7 @@ var Index = &ctx.Context{Name: "yac", Help: "语法中心",
m.Log("info", "_index: %v", arg)
args := []interface{}{}
inputs := []interface{}{}
feature := map[string]interface{}{}
exports := []interface{}{}
for i := 7; i < len(arg); i++ {
if !m.Confs("input", arg[i]) {
@ -1106,7 +1110,10 @@ var Index = &ctx.Context{Name: "yac", Help: "语法中心",
continue
}
args := arg[i : j+1]
if arg[i] == "exports" {
if arg[i] == "feature" {
feature[arg[i+1]] = arg[i+2]
} else if arg[i] == "exports" {
for k := 1; k < len(args); k += 1 {
exports = append(exports, args[k])
}
@ -1150,6 +1157,7 @@ var Index = &ctx.Context{Name: "yac", Help: "语法中心",
"componet_cmd": kit.Select("", arg, 6),
"componet_args": args,
"inputs": inputs,
"feature": feature,
"exports": exports,
})
return

View File

@ -317,6 +317,7 @@ var Index = &ctx.Context{Name: "chat", Help: "会议中心",
m.Push("inputs", msg.Append("inputs"))
m.Push("exports", msg.Append("exports"))
m.Push("display", msg.Append("display"))
m.Push("feature", msg.Append("feature"))
})
m.Table()
break

View File

@ -5,7 +5,6 @@ import (
"contexts/ctx"
"contexts/web"
"toolkit"
"bytes"
"html/template"
@ -47,16 +46,17 @@ var Index = &ctx.Context{Name: "wiki", Help: "文档中心",
}, Help: "组件列表"},
"level": &ctx.Config{Name: "level", Value: "local/wiki/自然/编程", Help: "路由数量"},
"class": &ctx.Config{Name: "class", Value: "", Help: "路由数量"},
"favor": &ctx.Config{Name: "favor", Value: "index.md", Help: "路由数量"},
},
Commands: map[string]*ctx.Command{
"tree": &ctx.Command{Name: "tree", Help: "目录", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
m.Cmdy("nfs.dir", path.Join(m.Confx("level"), kit.Select(m.Option("class"), arg, 0)),
m.Cmdy("nfs.dir", path.Join(m.Confx("level"), m.Confx("class", arg, 0)),
"time", "size", "line", "file", "dir_sort", "time", "time_r")
return
}},
"text": &ctx.Command{Name: "text", Help: "文章", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
which := m.Cmdx("nfs.path", path.Join(m.Confx("level"), m.Option("class"), m.Confx("favor", arg, 0)))
which := m.Cmdx("nfs.path", path.Join(m.Confx("level"), m.Confx("class", arg, 1), m.Confx("favor", arg, 0)))
buffer := bytes.NewBuffer([]byte{})
template.Must(template.ParseFiles(which)).Funcs(ctx.CGI).Execute(buffer, m)

View File

@ -2,7 +2,7 @@
fun project "项目" "" "" \
private \
select "" values plugin values submit values review values trend values stat values init action auto \
text "" imports plugin_see action auto \
text "" name see imports plugin_see action auto \
button "执行" \
exports see name see
@ -11,7 +11,7 @@ end
fun compile "编译" "" "" \
private \
select "" values plugin values restart values windows values darwin values linux values self values all \
select "" values plugin values restart values windows values darwin values linux values self values all action auto \
text "" name see imports plugin_see \
button "编译"
@ -29,7 +29,7 @@ end
fun upgrade "升级" "" "" \
private \
text "" name pod imports plugin_pod \
select "" values script values restart values plugin values bench values portal values system \
select "" values script values restart values plugin values bench values portal values system action auto \
text "" name see imports plugin_see \
button "升级"
@ -38,8 +38,8 @@ end
fun missyou "任务" "" "" \
private \
text "" imports plugin_see \
text "" view long \
text "" name see imports plugin_see \
text "" name you view long \
button "行动" action auto \
exports you "" you
@ -48,7 +48,7 @@ end
fun pod "设备" "" "" \
private \
text "" view long \
text "" name pod view long \
button "行动" action auto \
exports pod pod
@ -69,7 +69,7 @@ fun cmd "命令" "" "" \
private \
text "" name pod imports plugin_pod \
text "nfs" name ctx imports plugin_ctx \
text "pwd" \
text "pwd" name cmd \
button "执行"
copy ssh._route _ context _ command __
@ -79,8 +79,8 @@ fun dir "目录" "" "" \
private \
text "" name pod imports plugin_pod action auto \
text "usr/script" name dir imports plugin_dir action auto view long \
button "查看" action auto \
button "回退" click Back \
button "浏览" action auto \
feature display "editor" \
exports dir "" dir
copy ssh._route _ nfs.dir _ time size line path
@ -89,7 +89,7 @@ end
fun git "版本" "" "" \
private \
text "" name pod imports plugin_pod action auto \
select "" values diff values status commit values values log values init action auto \
select "" values status values diff commit values values log values init action auto \
text "" name txt action auto \
button "查看" action auto

View File

@ -71,6 +71,20 @@ fun sys "命令行" "" "" \
copy nfs.source system __
end
fun note "记事本" "" "" \
public \
text "" name tip imports plugin_tip view long action auto \
button "创建" action auto \
feature display inner \
exports tip file tip
if $1 == "" || $1 ~ ".*/$"
copy context wiki tree __
else
copy context wiki text __
end
end
fun hello world "" "" \
public \
textarea "" \

View File

@ -684,7 +684,11 @@ function Pane(page, field) {
};
return page[name] = field, pane.Field = field, field.Pane = pane
}
function Plugin(page, pane, field, run) {
function Plugin(page, pane, field, runs) {
var run = function(event, cmds, cbs) {
event.Plugin = plugin, runs(event, cmds, cbs)
}
var option = field.querySelector("form.option")
var action = field.querySelector("div.action")
var output = field.querySelector("div.output")
@ -693,7 +697,9 @@ function Plugin(page, pane, field, run) {
var name = meta.name
var args = meta.args || []
var display = JSON.parse(meta.display||'{}')
var feature = JSON.parse(meta.feature||'{}')
var exports = JSON.parse(meta.exports||'["",""]')
var deal = (feature && feature.display) || "table"
var plugin = Meta(field, (field.Script && field.Script.init || function() {
})(run, field, option, output)||{}, {
@ -707,6 +713,8 @@ function Plugin(page, pane, field, run) {
var count = kit.Selector(option, "args").length
args && count < args.length && (item.value = value||args[count++]||item.value||"")
item.title = item.title || item.name || ""
item.placeholder = item.title
name = item.name || "input"
var input = {type: "input", name: name, data: item}
switch (item.type) {
@ -725,7 +733,7 @@ function Plugin(page, pane, field, run) {
break
}
var ui = kit.AppendChild(option, [{view: [item.view||""], list: [{type: "label", inner: item.label||""}, input]}])
var ui = kit.AppendChild(option, [{view: [item.view||""], data: {title: item.title}, list: [{type: "label", inner: item.label||""}, input]}])
var action = Meta(ui[name] || {}, item, plugin.onaction, plugin);
(typeof item.imports == "object"? item.imports: typeof item.imports == "string"? [item.imports]: []).forEach(function(imports) {
@ -812,7 +820,7 @@ function Plugin(page, pane, field, run) {
}, time)
},
Check: function(target, cb) {
option.querySelectorAll(".args").forEach(function(item, index, list) {
plugin.Select(true), option.querySelectorAll(".args").forEach(function(item, index, list) {
target == undefined && index == list.length-1 && plugin.Runs(window.event, cb)
item == target && (index == list.length-1? plugin.Runs(window.event, cb): page.plugin == field && list[index+1].focus())
})
@ -828,7 +836,7 @@ function Plugin(page, pane, field, run) {
}, 1000)
event.Plugin = plugin, run(event, args, function(msg) {
page.footer.Pane.State("ncmd", kit.History.get("cmd").length)
plugin.msg = msg, plugin.display(display.deal, cb)
plugin.msg = msg, plugin.display(deal, cb)
show = false, page.ontoast("")
})
},
@ -837,9 +845,17 @@ function Plugin(page, pane, field, run) {
output.innerHTML = ""
},
display: function(arg, cb) {
display.deal = arg, plugin.ondaemon[display.deal||"table"](plugin.msg, cb)
deal = arg, plugin.ondaemon[deal||"table"](plugin.msg, cb)
},
ondaemon: {
inner: function(msg, cb) {
output.style.maxWidth = pane.target.clientWidth-20+"px"
output.style.maxHeight = pane.target.clientHeight-60+"px"
output.innerHTML = "", msg.append? kit.OrderTable(kit.AppendTable(kit.AppendChild(output, "table"), ctx.Table(msg), msg.append), exports[1], function(event, value, name, line) {
page.Sync("plugin_"+exports[0]).set(plugin.onexport[exports[2]||""](value, name, line))
}): (output.innerHTML = msg.result.join(""))
typeof cb == "function" && cb(msg)
},
table: function(msg, cb) {
output.innerHTML = ""
!display.hide_append && msg.append && kit.OrderTable(kit.AppendTable(kit.AppendChild(output, "table"), ctx.Table(msg), msg.append), exports[1], function(event, value, name, line) {
@ -849,7 +865,7 @@ function Plugin(page, pane, field, run) {
typeof cb == "function" && cb(msg)
},
editor: function(msg, cb) {
(output.innerHTML = "", Editor(plugin, option, output, output.clientWidth-40, 400, 10, msg))
(output.innerHTML = "", Editor(run, plugin, option, output, output.clientWidth-40, 400, 10, msg))
},
canvas: function(msg, cb) {
typeof cb == "function" && !cb(msg) || (output.innerHTML = "", Canvas(plugin, option, output, pane.target.clientWidth-45, pane.target.clientHeight-175, 10, msg))
@ -882,6 +898,9 @@ function Plugin(page, pane, field, run) {
name != "path" && (value = line.path)
return value
},
tip: function(value, name, line) {
return option.tip.value + value
},
},
onaction: {
onfocus: function(event, action, type, name, item) {
@ -893,9 +912,8 @@ function Plugin(page, pane, field, run) {
onclick: function(event, action, type, name, item) {
switch (type) {
case "button":
plugin.Select(true)
action[item.click]? action[item.click](event, item, option, field):
plugin[item.click]? plugin[item.click](event, item, option, field): plugin.Runs(event)
plugin[item.click]? plugin[item.click](event, item, option, field): plugin.Check()
break
case "text":
if (event.ctrlKey) {
@ -908,7 +926,7 @@ function Plugin(page, pane, field, run) {
action.target.value = kit.History.get("txt", -1).data.trim()
},
onchange: function(event, action, type, name, item) {
plugin.Check(action)
plugin.Check(item.action == "auto"? undefined: action)
},
onkeyup: function(event, action, type, name, item) {
switch (event.key) {

View File

@ -733,7 +733,7 @@ kit = toolkit = {
},
}
function Editor(plugin, option, output, width, height, space, msg) {
function Editor(run, plugin, option, output, width, height, space, msg) {
exports = ["dir", "path", "dir"]
msg.append && kit.OrderTable(kit.AppendTable(kit.AppendChild(output, "table"), ctx.Table(msg), msg.append), exports[1], function(event, value, name, line) {
page.Sync("plugin_"+exports[0]).set(plugin.onexport[exports[2]||""](value, name, line))
@ -747,10 +747,10 @@ function Editor(plugin, option, output, width, height, space, msg) {
], function(value, event) {
switch (value) {
case "追加":
field.Run(event, args.concat(["dir_sed", "add"]))
run(event, args.concat(["dir_sed", "add"]))
break
case "提交":
field.Run(event, args.concat(["dir_sed", "put"]))
run(event, args.concat(["dir_sed", "put"]))
break
case "取消":
break