1
0
mirror of https://shylinux.com/x/icebergs synced 2025-07-01 04:14:42 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2025-06-30 19:36:00 +08:00
parent 1a63572b28
commit 7c3af575c7
16 changed files with 110 additions and 75 deletions

View File

@ -87,21 +87,23 @@ func _dream_list_more(m *ice.Message) *ice.Message {
return
}
value[mdb.TEXT] = kit.JoinLine(value[nfs.MODULE], value[mdb.TEXT])
button = append(button, GETTOKEN, OPEN)
kit.If(value[aaa.ACCESS] == "", func() { button = []ice.Any{PORTAL, OPEN} })
kit.If(aaa.IsTechOrRoot(m), func() { button = append(button, GETTOKEN) })
kit.If(value[aaa.ACCESS] == "", func() { button = []ice.Any{PORTAL} })
button = append(button, OPEN)
case SERVER:
if !m.IsCliUA() {
value[mdb.TEXT] = kit.JoinLine(value[nfs.MODULE], value[mdb.TEXT])
} else if !strings.HasPrefix(value[mdb.TEXT], ice.HTTP) {
return
}
button = append(button, SETTOKEN, OPEN)
kit.If(aaa.IsTechOrRoot(m), func() { button = append(button, SETTOKEN) })
button = append(button, OPEN)
case aaa.LOGIN:
if m.IsCliUA() {
return
}
value[mdb.TEXT] = kit.JoinWord(value[AGENT], value[cli.SYSTEM], value[aaa.IP], kit.Format(PublicIP(m, value[aaa.IP])))
button = []ice.Any{GRANT}
defer func() { button = []ice.Any{GRANT} }()
default:
return
}

View File

@ -232,6 +232,8 @@ func _serve_handle(key string, cmd *ice.Command, m *ice.Message, w http.Response
Info.ServeDeleteCount++
}
}()
} else {
m.RenderResult()
}
}
func _serve_domain(m *ice.Message) string {
@ -257,6 +259,9 @@ func _serve_auth(m *ice.Message, key string, cmds []string, w http.ResponseWrite
defer func() { m.Options(ice.MSG_CMDS, "") }()
if strings.Contains(m.Option(ice.MSG_SESSID), " ") {
m.Cmdy(kit.Split(m.Option(ice.MSG_SESSID)))
if m.Warn(m.Option("user.status") == "1", "此用户已封号") {
return cmds, false
}
} else if aaa.SessCheck(m, m.Option(ice.MSG_SESSID)); m.Option(ice.MSG_USERNAME) == "" {
if ls := kit.Simple(mdb.Cache(m, m.Option(ice.MSG_USERIP), func() ice.Any {
if !IsLocalHost(m) {

View File

@ -1,17 +1,10 @@
package macos
import (
"path"
"strings"
ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/ctx"
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs"
"shylinux.com/x/icebergs/base/web"
"shylinux.com/x/icebergs/core/code"
kit "shylinux.com/x/toolkits"
)
const APPLICATIONS = "applications"
@ -25,23 +18,6 @@ func init() {
}, PodCmdAction(), CmdHashAction("space,index,args"), mdb.ClearOnExitHashAction())},
})
}
func install(m *ice.Message, cmd, icon, index string, arg ...string) string {
if icon == "" {
return ""
} else if !kit.HasPrefix(icon, nfs.PS, web.HTTP) && !nfs.Exists(m, icon) && !nfs.Exists(m, ice.USR_ICONS+icon, func(p string) { icon = p }) {
if strings.Contains(kit.Path(""), nfs.USR_LOCAL_WORK) && nfs.Exists(m, path.Join(strings.Split(kit.Path(""), nfs.USR_LOCAL_WORK)[0], ice.USR_ICONS+icon)) {
icon = ice.USR_ICONS + icon
} else {
icon = path.Join(path.Dir(ctx.GetCmdFile(m, m.PrefixKey())), icon)
}
}
name := kit.TrimExt(path.Base(icon), nfs.PNG, nfs.JPG, nfs.JPEG)
if !strings.HasPrefix(icon, nfs.USR_ICONS) {
name = kit.Select("", kit.Split(index, "."), -1)
}
m.Cmd(Prefix(cmd), mdb.CREATE, mdb.NAME, name, mdb.ICON, icon, ctx.INDEX, index, arg)
return icon
}
func AppInstall(m *ice.Message, icon, index string, arg ...string) string {
return install(m, APPLICATIONS, icon, index, arg...)
}

View File

@ -27,6 +27,7 @@ fieldset.desktop>div.output>div.desktop { display:flex; flex-direction:column; f
fieldset.desktop>div.output>div.desktop:not(.select) { display:none; }
fieldset.desktop>div.output>div.desktop>div.item { text-align:center; }
fieldset.desktop>div.output>div.desktop>div.item img { object-fit:contain; height:var(--desktop-icon-size); width:var(--desktop-icon-size); }
fieldset.desktop>div.output>div.desktop>div.item.portal img { padding:8px; border-radius:20px; }
fieldset.desktop>div.output>div.desktop>div.item>div.name { color:white; white-space:pre; font-size:var(--code-font-size); width:var(--desktop-icon-size); overflow:hidden; }
fieldset.desktop>div.output>div.desktop>fieldset { border:0; position:absolute; }
fieldset.desktop>div.output>div.desktop>fieldset>legend { box-shadow:none; padding:0 var(--input-padding); margin:var(--button-margin); }
@ -68,6 +69,10 @@ fieldset.desktop>div.output>div.desktop>fieldset.web.chat.macos.finder>div.statu
fieldset.desktop>div.output>div.desktop>fieldset.web.chat.macos.finder>div.output div.item.disable { display:none; }
fieldset.desktop>div.output>div.desktop>fieldset.web.team.gonganxitong.service>form.option input { display:none; }
fieldset.desktop>div.output>div.desktop>fieldset.web.team.gonganxitong.recent>form.option input { display:none; }
fieldset.desktop>div.output>div.desktop>fieldset.web.team.portal>div.action { top:48px; }
fieldset.desktop>div.output>div.desktop>fieldset.web.team.portal>div.output div.item.card>div.action { display:none; }
fieldset.desktop>div.output>div.desktop>fieldset.web.chat.iframe>div.output { background-color:var(--output-bg-color); color:var(--output-fg-color); }
fieldset.desktop>div.output>fieldset.web.chat.macos.dock>div.output div.item.disable { display:none; }
fieldset.desktop>div.output>div.desktop>div.item.disable { display:none; }
fieldset.macos.menu>div.output>div.item { padding:0 var(--button-padding); height:var(--desktop-menu-height); float:right; }
@ -76,7 +81,9 @@ body.mobile fieldset.macos.menu>div.output>div.tabs { display:none; }
body.mobile fieldset.macos.menu>div.output>div.icon.create { display:none; }
body.mobile fieldset.macos.menu>div.output>div.item.search { display:none; }
body.mobile fieldset.macos.menu>div.output>div.item.notify { display:none; }
fieldset.macos.menu>div.output>div.item.avatar>img { padding:0; height:var(--desktop-menu-height); }
body.mobile fieldset.macos.menu>div.output>div.item.usernick { display:none; }
body.mobile fieldset.macos.menu>div.output>div.item.qrcode { display:none; }
fieldset.macos.menu>div.output>div.item.avatar>img { border-radius:20px; padding:0; height:var(--desktop-menu-height); }
fieldset.macos.menu>div.output>div.menu { padding:0 var(--button-padding); float:left; }
body.mobile fieldset.macos.menu>div.output>div.menu { padding:0 var(--input-padding); }
fieldset.macos.menu>div.output>div.tabs { font-style:italic; padding:0 var(--input-padding); float:left; }
@ -89,8 +96,8 @@ fieldset.macos.dock>div.output>div.item { text-align:center; align-self:baseline
fieldset.macos.dock>div.output>div.item img { object-fit:contain; min-height:var(--desktop-icon-size); width:var(--desktop-icon-size); transition:width 0.3s; }
fieldset.macos.dock>div.output>div.item>div.name { display:none; }
fieldset.macos.finder>div.output div.content>div.item { text-align:center; float:left; width:var(--desktop-icon-size); }
fieldset.macos.finder>div.output div.content>div.item img { object-fit:contain; width:var(--desktop-icon-size); }
fieldset.macos.finder>div.output div.content>div.item img { object-fit:contain; width:var(--desktop-icon-size); height:var(--desktop-icon-size); }
fieldset.macos.finder>div.output div.content>div.item.portal img { padding:8px; border-radius:20px; }
fieldset.macos.finder>div.output div.content>div.item div.name { font-size:var(--code-font-size); white-space:pre; text-align:center; overflow:hidden; }
fieldset.desktop>div.output>div.desktop fieldset table.content tbody tr:nth-child(odd):not(:hover) { background-color:var(--output-bg-color); }
fieldset.desktop>div.output>div.desktop fieldset table.content tbody tr:nth-child(even):not(:hover) { background-color:var(--plugin-bg-color); }
@ -99,6 +106,7 @@ body:not(.mobile) fieldset.macos.dock>div.output>div.item:hover { background-col
body:not(.mobile) fieldset.macos.dock>div.output>div.item img:hover { width:160px; transition:width 0.3s; }
body:not(.mobile) fieldset.desktop>div.output>fieldset.macos.dock:hover { margin-left:-40px; transition:margin-left 0.3s; }
body:not(.mobile) fieldset.desktop>div.output>div.desktop>div.item { margin:var(--desktop-icon-margin); }
body:not(.mobile) fieldset.desktop>div.output>div.desktop>div.item:hover { background-color:var(--hover-bg-color); }
body:not(.mobile) fieldset.desktop>div.output>fieldset.macos.searchs>form.option>div.item.keyword input { background-color:transparent; width:var(--river-width); }
body:not(.mobile) fieldset.desktop>div.output>fieldset.macos.searchs>div.action input { background-color:transparent; }
body:not(.mobile) fieldset.desktop>div.output>div.desktop>fieldset>legend:not(:hover) { background-color:transparent; }

View File

@ -20,22 +20,22 @@ func init() {
}},
ice.CTX_OPEN: {Hand: func(m *ice.Message, arg ...string) {
if m.Cmd(DESKTOP).Length() == 0 {
DeskAppend(m, "Books.png", web.WIKI_WORD)
DeskAppend(m, "Photos.png", web.WIKI_FEEL)
DeskAppend(m, "Calendar.png", web.TEAM_PLAN)
DeskAppend(m, "Messages.png", web.CHAT_MESSAGE)
DeskAppend(m, "Messages.png", web.CHAT_MESSAGE, mdb.TEXT, "消息", mdb.SCORE, "1")
DeskAppend(m, "Calendar.png", web.TEAM_PLAN, mdb.TEXT, "日历", mdb.SCORE, "2")
DeskAppend(m, "Photos.png", web.WIKI_FEEL, mdb.TEXT, "相册", mdb.SCORE, "3")
DeskAppend(m, "Books.png", web.WIKI_WORD, mdb.TEXT, "文档", mdb.SCORE, "4")
}
if m.Cmd(DOCK).Length() == 0 {
DockAppend(m, "Finder.png", Prefix(FINDER))
DockAppend(m, "Safari.png", web.CHAT_IFRAME)
DockAppend(m, "Terminal.png", web.CODE_XTERM)
DockAppend(m, "git.png", web.CODE_GIT_STATUS)
DockAppend(m, "vimer.png", web.CODE_VIMER)
DockAppend(m, "Finder.png", Prefix(FINDER), mdb.SCORE, "1")
DockAppend(m, "Safari.png", web.CHAT_IFRAME, mdb.SCORE, "2")
DockAppend(m, "vimer.png", web.CODE_VIMER, mdb.SCORE, "3")
DockAppend(m, "git.png", web.CODE_GIT_STATUS, mdb.SCORE, "4")
DockAppend(m, "Terminal.png", web.CODE_XTERM, mdb.SCORE, "5")
}
m.Travel(func(p *ice.Context, c *ice.Context, key string, cmd *ice.Command) {
kit.If(cmd.Icon, func() {
if kit.Contains(cmd.Icon, ".ico", ".png", ".jpg") {
cmd.Icon = AppInstall(m, cmd.Icon, m.PrefixKey())
cmd.Icon = AppInstall(m, cmd.Icon, m.PrefixKey(), mdb.TEXT, cmd.Help)
}
})
})
@ -50,7 +50,7 @@ func init() {
}},
// web.DREAM_ACTION: {Hand: func(m *ice.Message, arg ...string) { web.DreamProcessIframe(m, arg...) }},
// web.DREAM_ACTION: {Hand: func(m *ice.Message, arg ...string) { web.DreamProcess(m, "", arg, arg...) }},
}, web.DreamTablesAction(), PodCmdAction(), CmdHashAction(ctx.INDEX), mdb.ExportHashAction())},
}, web.DreamTablesAction(), PodCmdAction(), CmdHashAction("space,index,args"), mdb.ExportHashAction())},
})
}

View File

@ -71,7 +71,7 @@ Volcanos(chat.ONIMPORT, {
}) }) },
__item: function(can, msg, target) { var index = 0; can.onimport.icon(can, msg = msg||can._msg, target, function(target, item) { can.page.Modify(can, target, {
onclick: function(event) { can.onimport._window(can, item) },
oncontextmenu: function(event) { var carte = can.user.carteRight(event, can, {
oncontextmenu: function(event) { if (!can.user.isTechOrRoot(can)) { return } var carte = can.user.carteRight(event, can, {
remove: function() { can.runAction(event, mdb.REMOVE, [item.hash]) },
}); can.page.style(can, carte._target, html.TOP, event.y) },
}) }) },
@ -79,13 +79,19 @@ Volcanos(chat.ONIMPORT, {
item.height = can.base.Max(html.DESKTOP_HEIGHT, can.ConfHeight()-125), item.width = can.base.Max(html.DESKTOP_WIDTH, can.ConfWidth())
item.left = (can.ConfWidth()-item.width)/2, item.top = can.base.Min((can.ConfHeight()-item.height-125)/4+25, 25)
var style = item.style
if (item.index == web.CHAT_IFRAME && item.style == "portal") {
if (item.index == web.CHAT_IFRAME && (item.style == "portal" || item._style == "portal") || can.base.beginWith(item.index, "web.team.") && can.base.endWith(item.index, ".portal")) {
// item.title = "ContextOS",
item.width = 390, item.height = can.base.Max(844, can.ConfHeight()-25)
item.left = can.ConfWidth()-item.width, item.top = 25
}
item.type = html.PLUGIN, item.style = {left: item.left, top: item.top, height: item.height, width: item.width}
can.onappend.plugin(can, item, function(sub) {
can.page.Select(can, sub._legend, html.SPAN, function(target) {
target.innerText = can.user.trans(can, sub.ConfIndex(), sub.ConfHelp())
})
if (can.page.tagis(sub._target, "fieldset.web.team.portal")) {
sub.onimport.size(sub, item.height = can.base.Max(844, can.ConfHeight()-25), item.width = 390, false)
}
can.onappend.style(sub, style)
var index = 0; can.core.Item({
close: {color: "#f95f57", inner: "x", onclick: function(event) { sub.onaction._close(event, sub) }},
@ -107,7 +113,12 @@ Volcanos(chat.ONIMPORT, {
sub.onexport.record = function(sub, value, key, item) { can.onimport._window(can, item) }
sub.onexport.marginTop = function() { return 25 }, sub.onexport.marginBottom = function() { return 100 }
sub.onexport.actionHeight = function(sub) { return can.page.ClassList.has(can, sub._target, html.OUTPUT)? 0: html.ACTION_HEIGHT+20 }
sub.onexport.output = function() { sub.onimport.size(sub, item.height, can.base.Min(sub._target.offsetWidth, item.width), false)
sub.onexport.output = function(_sub, msg) {
if (msg.Option("display.style") == "portal") {
sub.onimport.size(sub, item.height, can.base.Max(can.base.Min(sub._target.offsetWidth, item.width), 390), false)
} else {
sub.onimport.size(sub, item.height, can.base.Min(sub._target.offsetWidth, item.width), false)
}
sub._target._meta.args = can.base.trim(can.page.SelectArgs(can, sub._option, "", function(target) { return target.value })), can.onexport.tabs(can)
}
can.onappend.style(can, html.FLOAT, sub._target), can.ondetail.select(can, sub._target, sub)

View File

@ -14,4 +14,6 @@ func init() {
})
}
func DockAppend(m *ice.Message, icon, index string) { install(m, DOCK, icon, index) }
func DockAppend(m *ice.Message, icon, index string, arg ...string) {
install(m, DOCK, icon, index, arg...)
}

View File

@ -10,7 +10,7 @@ const FINDER = "finder"
func init() {
Index.MergeCommands(ice.Commands{
FINDER: {Name: "finder list", Help: "应用", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{
FINDER: {Name: "finder list", Help: "系统资源", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(APPLICATIONS, mdb.INPUTS, arg) }},
mdb.INSERT: {Name: "insert space index* args name* icon*@icon", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(APPLICATIONS, mdb.CREATE, arg) }},
}, CmdHashAction(mdb.NAME))},

View File

@ -1,18 +1,20 @@
Volcanos(chat.ONIMPORT, {
_init: function(can, msg) { can.ui = can.onappend.layout(can), msg.Table(function(value, index) { value._select = index == 0
can.onimport.item(can, value, function(event, item) { if (can.onmotion.cache(can, function() { return value.name }, can.ui.content)) { return }
can.runActionCommand(event, value.index, [], function(msg) {
switch (value.name) {
case ".":
case "applications": can.onimport.icons(can, msg, can.ui.content); break
default: can.onappend.table(can, msg, null, can.ui.content)
} can.onimport.layout(can)
_init: function(can, msg) {
can.ui = can.onappend.layout(can), msg.Table(function(value, index) { value._select = index == 0
can.onimport.item(can, value, function(event, item) { if (can.onmotion.cache(can, function() { return value.name }, can.ui.content)) { return }
can.runActionCommand(event, value.index, [], function(msg) {
switch (value.name) {
case ".":
case "applications": can.onimport.icons(can, msg, can.ui.content); break
default: can.onappend.table(can, msg, null, can.ui.content)
} can.onimport.layout(can)
})
})
})
}), can.onmotion.hidden(can, can.ui.project) },
}), can.onmotion.hidden(can, can.ui.project)
},
icons: function(can, msg, target) { can.onimport.icon(can, msg = msg||can._msg, target, function(target, item) { can.page.Modify(can, target, {
onclick: function(event) { can.sup.onexport.record(can.sup, item.name, mdb.NAME, item) },
oncontextmenu: function(event) { can.user.carteRight(event, can, {
oncontextmenu: function(event) { can.user.isTechOrRoot(can) && can.user.carteRight(event, can, {
"add to desktop": function() { can.sup.onappend.desktop(item) },
"add to dock": function() { can.sup.onappend.dock(item) },
}, []) }, draggable: true, ondragstart: function(event) { window._drag_item = item },

View File

@ -1,6 +1,9 @@
package macos
import (
"path"
"strings"
ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/cli"
@ -50,17 +53,35 @@ func disableApp(m *ice.Message) *ice.Message {
})
return m
}
func install(m *ice.Message, cmd, icon, index string, arg ...string) string {
if icon == "" {
return ""
} else if !kit.HasPrefix(icon, nfs.PS, web.HTTP) && !nfs.Exists(m, icon) && !nfs.Exists(m, ice.USR_ICONS+icon, func(p string) { icon = p }) {
if strings.Contains(kit.Path(""), nfs.USR_LOCAL_WORK) && nfs.Exists(m, path.Join(strings.Split(kit.Path(""), nfs.USR_LOCAL_WORK)[0], ice.USR_ICONS+icon)) {
icon = ice.USR_ICONS + icon
} else {
icon = path.Join(path.Dir(ctx.GetCmdFile(m, m.PrefixKey())), icon)
}
}
name := kit.TrimExt(path.Base(icon), nfs.PNG, nfs.JPG, nfs.JPEG)
if !strings.HasPrefix(icon, nfs.USR_ICONS) {
name = kit.Select("", kit.Split(index, "."), -1)
}
m.Cmd(Prefix(cmd), mdb.CREATE, mdb.NAME, name, mdb.ICON, icon, ctx.INDEX, index, mdb.SCORE, "1000", arg)
return icon
}
func PodCmdAction(arg ...string) ice.Actions {
file := kit.FileLine(-1, 100)
return ice.Actions{
mdb.SELECT: {Name: "list hash auto create", Hand: func(m *ice.Message, arg ...string) {
defer m.Display(m.FileURI(file))
msg := disableApp(mdb.HashSelect(m.Spawn(), arg...).Sort(mdb.NAME))
msg := disableApp(mdb.HashSelect(m.Spawn(), arg...))
web.PushPodCmd(msg, m.PrefixKey(), arg...)
has := map[string]bool{}
msg.Table(func(value ice.Maps, index int, head []string) {
kit.If(!has[value[ctx.INDEX]], func() { has[value[ctx.INDEX]] = true; m.Push("", value, head) })
kit.If(!has[value[ctx.INDEX]+value[ctx.ARGS]], func() { has[value[ctx.INDEX]+value[ctx.ARGS]] = true; m.Push("", value, head) })
})
m.Sort("score,space,index,args", ice.INT)
}},
}
}
@ -77,7 +98,7 @@ func CmdHashAction(arg ...string) ice.Actions {
}},
mdb.SELECT: {Hand: func(m *ice.Message, arg ...string) {
m.Option(html.FAVICON, m.Cmd(web.SPACE, ice.INFO).Append(mdb.ICONS))
disableApp(mdb.HashSelect(m, arg...).Sort(mdb.NAME).Display(m.FileURI(file)))
disableApp(mdb.HashSelect(m, arg...).Sort("score,space,index,args").Display(m.FileURI(file)))
}},
}, mdb.HashAction(mdb.SHORT, kit.Select("", arg, 0), mdb.FIELD, kit.Select("time,hash,icon,name,text,space,index,args", arg, 1), kit.Slice(arg, 2)))
}, mdb.HashAction(mdb.SHORT, kit.Select("", arg, 0), mdb.FIELD, kit.Select("time,hash,icon,name,text,score,space,index,args", arg, 1), kit.Slice(arg, 2)))
}

View File

@ -18,7 +18,7 @@ const MESSAGE = "message"
func init() {
Index.MergeCommands(ice.Commands{
MESSAGE: {Name: "message refresh", Help: "聊天", Icon: "Messages.png", Actions: ice.MergeActions(ice.Actions{
MESSAGE: {Name: "message refresh", Help: "聊天消息", Icon: "Messages.png", Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
MessageCreate(m, aaa.APPLY, html.ICONS_MAIL)
MessageCreate(m, web.DREAM, html.ICONS_DREAM)

View File

@ -4,8 +4,8 @@ $fieldset>div.header { display:none; }
$output { padding:0; }
$output>div.header { box-shadow:var(--box-shadow); background-color:var(--panel-bg-color); height:var(--portal-header-height); --hover-bg-color:var(--plugin-bg-color); }
$output>div.header div.list { display:flex; }
$output>div.header div.story[data-name=navmenu] { --hover-fg-color:white; }
$output>div.header div.story div.item span { white-space:pre; overflow:hidden; }
$output>div.header div.story[data-name=navmenu] { --hover-fg-color:white; }
$output>div.header div.story[data-name=navmenu] { display:flex; justify-content:center; }
$output>div.header div.story[data-name=navmenu] div.item { text-align:center; padding:var(--legend-padding); height:var(--portal-header-height); }
$output>div.header div.story[data-name=navmenu] div.item { display:flex; align-items:center; }
@ -31,13 +31,15 @@ $output>div.layout>div.aside div.item.section { padding-left:var(--legend-paddin
$output>div.layout>div.main { padding:var(--portal-main-padding); height:600px; min-width:390px; max-width:var(--portal-max-width); overflow:auto; overflow-x:hidden; }
$output>div.layout>div.main img[data-name="qrcode"] { margin-top:20px; width:240px !important; }
body.width1 $output>div.layout>div.main>div.story.flex { flex-direction:column; }
body.width1 $output>div.layout>div.main div.story.column fieldset.inner { width:100%; }
// body.width1 $output>div.layout>div.main div.story.column fieldset.inner { width:100%; }
body.width1 $output>div.layout>div.main div.story.column { flex:unset !important; }
$output>div.layout>div.main div.story.column { display:flex; flex-direction:column; justify-content:center; }
$output>div.layout>div.main div.story.column fieldset.inner>div.output>div.layout>div.layout div.content div.tips { top:5px; right:10px; }
$output>div.layout>div.main div.story.column fieldset.inner { box-shadow:none; border:var(--box-border); border-radius:0; }
$output>div.layout>div.main div.story.column fieldset.inner>div.output { width:100%; }
$output>div.layout>div.main div.story.column h1 { font-size:24px; font-style:italic; margin-top:0; }
$output>div.layout>div.main div.story.column h2 { margin:0 !important; }
$output>div.layout>div.main div.story.column p[data-type=brief] { font-size:1.5em; font-weight:bold; text-align:center; }
$output>div.layout>div.main div.story.column li { margin:10px 0; }
$output>div.layout>div.main div.story.column ul { margin:10px; }
$output>div.layout>div.main div.story.column b { font-size:22px; }

View File

@ -58,6 +58,7 @@ Volcanos(chat.ONIMPORT, {
})
},
title: function(can, meta, target) { can.isCmdMode() && can.page.tagis(target, html.H1) && can.onexport && can.onexport.title(can, meta.text) },
brief: function(can, meta, target) { can.isCmdMode() && can.user.agent.init(can, meta.text) },
button: function(can, meta, target) { var item = can.base.Obj(meta.meta); target.onclick = function(event) { can.onaction.route(event, can, item.route) } },
layout: function(can, height, width) { if (!can.ui.layout || !can.ui.main) { return }
can.ui.layout(height, width), can.ConfWidth(can.ui.main.offsetWidth), padding = can.Conf(html.PADDING)

View File

@ -99,7 +99,6 @@ func init() {
}},
PROJECT: {Hand: func(m *ice.Message, arg ...string) { _spark_project(m, arg...) }},
PRODUCT: {Hand: func(m *ice.Message, arg ...string) { _spark_product(m, arg...) }},
"raw": {Hand: func(m *ice.Message, arg ...string) { m.Echo(arg[0], kit.TransArgs(arg[1:])...) }},
"html": {Hand: func(m *ice.Message, arg ...string) { m.Echo(arg[0], kit.TransArgs(arg[1:])...) }},
}), Hand: func(m *ice.Message, arg ...string) {
m.Option(mdb.META, "")
@ -122,7 +121,7 @@ func _spark_project(m *ice.Message, arg ...string) {
func() {
defer m.Cmdy(STYLE, COLUMN).Cmdy(STYLE, END)
m.Cmdy(TITLE, ice.Info.Title())
m.Cmdy(SPARK, TITLE, arg[0]).Cmdy(ORDER, arg[1])
m.Cmdy(BRIEF, arg[0]).Cmdy(ORDER, arg[1])
func() {
defer m.Cmdy(STYLE, FLEX).Cmdy(STYLE, END)
m.Cmdy(SPARK, html.BUTTON, "体 验", ROUTE, web.SpideOrigin(m, ice.DEMO))
@ -131,7 +130,7 @@ func _spark_project(m *ice.Message, arg ...string) {
}()
}()
func() {
defer m.Cmdy(STYLE, COLUMN, FLEX, "0 0 500px", "padding", "10px").Cmdy(STYLE, END)
defer m.Cmdy(STYLE, COLUMN, FLEX, "0 0 480px").Cmdy(STYLE, END)
m.Cmdy(SPARK, INNER, ice.SRC_MAIN_GO, html.WIDTH, "480px")
m.Cmdy(SPARK, SHELL, kit.Renders(`
git clone {{ .Make.Remote }}

View File

@ -16,6 +16,7 @@ import (
)
func init() {
return
const TAGS = "tags"
Index.MergeCommands(ice.Commands{
TAGS: {Name: "tags path name auto", Actions: ice.MergeActions(ice.Actions{

View File

@ -8,13 +8,6 @@ Volcanos(chat.ONIMPORT, {
debug = false, can.onmotion.hidden(can, can._fields)
wx.config({debug: debug, signature: msg.Option("signature"), timestamp: msg.Option("timestamp"), nonceStr: msg.Option("noncestr"), appId: msg.Option("appid"),
jsApiList: can.core.Item({
getLocation: function(can, cb) { wx.getLocation({type: "gcj02", success: function (res) {
can.base.isFunc(cb) && cb({type: "gcj02", name: "当前位置", text: "当前位置", latitude: parseInt(res.latitude*100000), longitude: parseInt(res.longitude*100000) })
} }) },
openLocation: function(can, msg) { wx.openLocation({
name: msg.Option(mdb.NAME), address: msg.Option(mdb.TEXT), infoUrl: msg.Option(web.LINK),
longitude: parseFloat(msg.Option(aaa.LONGITUDE)), latitude: parseFloat(msg.Option(aaa.LATITUDE)), scale: msg.Option("scale")||14,
}) },
chooseImage: function(can, cb, count) { wx.chooseImage({count: count||9, sourceType: ["camera", "album"], sizeType: ["original", "compressed"], success: function (res) {
can.base.isFunc(cb) && cb(res.localIds)
} }) },
@ -31,6 +24,18 @@ Volcanos(chat.ONIMPORT, {
can.user.toastFailure(can, res)
} })
},
getLocation: function(can, cb) { wx.getLocation({type: "gcj02", success: function (res) {
can.base.isFunc(cb) && cb({type: "gcj02", name: can.user.info.usernick, text: can.base.Time(),
latitude: parseInt(res.latitude*100000), longitude: parseInt(res.longitude*100000),
})
} }) },
openLocation: function(can, msg) { wx.openLocation({
name: msg.Option(mdb.NAME)||can.user.info.usernick, address: msg.Option(mdb.TEXT)||can.base.Time(), infoUrl: msg.Option(web.LINK)||location.href,
longitude: parseFloat(msg.Option(aaa.LONGITUDE)/100000), latitude: parseFloat(msg.Option(aaa.LATITUDE)/100000), scale: msg.Option("scale")||14,
}) },
openAddress: function(can, cb) {
wx.openAddress({success: function(res) { cb(res) }})
},
}, function(key, value) { return can.user.agent[key] = value, key }).concat([
"updateAppMessageShareData",
], can.user.isMobile? ["updateTimelineShareData"]: []), openTagList: ["wx-open-subscribe"],
@ -52,7 +57,7 @@ Volcanos(chat.ONIMPORT, {
p = can.misc.Resource(can, icons||can.Conf(mdb.ICONS))||p; can.base.beginWith(p, "/") && (p = location.origin + p)
share(document.title, p, content, link)
}, can.user.agent.init(can.user.agent.cmd, can.user.agent._init_content, can.user.agent._init_icons)
location.pathname == "/" && can.onmotion.delay(can, function() { share(document.title, can.misc.Resource(can, can.user.info.favicon)) }, 300)
// location.pathname == "/" && can.onmotion.delay(can, function() { share(document.title, can.misc.Resource(can, can.user.info.favicon)) }, 300)
})
})
},