mirror of
https://shylinux.com/x/icebergs
synced 2025-06-27 02:37:31 +08:00
add some
This commit is contained in:
parent
d7116def5b
commit
d89e143cb8
@ -63,6 +63,7 @@ const (
|
|||||||
)
|
)
|
||||||
const (
|
const (
|
||||||
AUTH = "auth"
|
AUTH = "auth"
|
||||||
|
ACCESS = "access"
|
||||||
PUBLIC = "public"
|
PUBLIC = "public"
|
||||||
PRIVATE = "private"
|
PRIVATE = "private"
|
||||||
CONFIRM = "confirm"
|
CONFIRM = "confirm"
|
||||||
|
@ -25,10 +25,7 @@ import (
|
|||||||
func _dream_list(m *ice.Message, simple bool) *ice.Message {
|
func _dream_list(m *ice.Message, simple bool) *ice.Message {
|
||||||
list := m.CmdMap(SPACE, mdb.NAME)
|
list := m.CmdMap(SPACE, mdb.NAME)
|
||||||
mdb.HashSelects(m.Spawn()).Table(func(value ice.Maps, index int, head []string) {
|
mdb.HashSelects(m.Spawn()).Table(func(value ice.Maps, index int, head []string) {
|
||||||
if value["access"] == "private" {
|
if value[aaa.ACCESS] == aaa.PRIVATE && (m.Option(ice.FROM_SPACE) != "" || !aaa.IsTechOrRoot(m)) {
|
||||||
// return
|
|
||||||
}
|
|
||||||
if value["access"] == "private" && !aaa.IsTechOrRoot(m) {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
m.Push("", value, kit.Slice(head, 0, -1))
|
m.Push("", value, kit.Slice(head, 0, -1))
|
||||||
@ -294,6 +291,7 @@ func init() {
|
|||||||
m.OptionDefault(mdb.ICONS, nfs.USR_ICONS_CONTEXTS)
|
m.OptionDefault(mdb.ICONS, nfs.USR_ICONS_CONTEXTS)
|
||||||
if mdb.HashCreate(m); ice.Info.Important == true {
|
if mdb.HashCreate(m); ice.Info.Important == true {
|
||||||
_dream_start(m, m.Option(mdb.NAME))
|
_dream_start(m, m.Option(mdb.NAME))
|
||||||
|
StreamPushRefreshConfirm(m, m.Trans("refresh for new space ", "刷新列表查看新空间 ")+m.Option(mdb.NAME))
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
DOWNLOAD: {Name: "download path link", Hand: func(m *ice.Message, arg ...string) {
|
DOWNLOAD: {Name: "download path link", Hand: func(m *ice.Message, arg ...string) {
|
||||||
@ -427,7 +425,9 @@ func init() {
|
|||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
"settings": {Name: "settings restart=manual,always access=public,private", Help: "设置", Hand: func(m *ice.Message, arg ...string) {
|
"settings": {Name: "settings restart=manual,always access=public,private", Help: "设置", Hand: func(m *ice.Message, arg ...string) {
|
||||||
mdb.HashModify(m, m.OptionSimple(mdb.NAME, "restart", "access"))
|
kit.If(m.Option(cli.RESTART) == "manual", func() { m.Option(cli.RESTART, "") })
|
||||||
|
kit.If(m.Option(aaa.ACCESS) == aaa.PUBLIC, func() { m.Option(aaa.ACCESS, "") })
|
||||||
|
mdb.HashModify(m, m.OptionSimple(mdb.NAME, cli.RESTART, aaa.ACCESS))
|
||||||
}},
|
}},
|
||||||
STATS_TABLES: {Hand: func(m *ice.Message, arg ...string) {
|
STATS_TABLES: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
if msg := _dream_list(m.Spawn(), true); msg.Length() > 0 {
|
if msg := _dream_list(m.Spawn(), true); msg.Length() > 0 {
|
||||||
|
@ -77,6 +77,7 @@ const (
|
|||||||
LAYOUT = "layout"
|
LAYOUT = "layout"
|
||||||
RESIZE = "resize"
|
RESIZE = "resize"
|
||||||
REFRESH = "refresh"
|
REFRESH = "refresh"
|
||||||
|
CONFIRM = "confirm"
|
||||||
FILTER = "filter"
|
FILTER = "filter"
|
||||||
|
|
||||||
DANGER = "danger"
|
DANGER = "danger"
|
||||||
|
@ -131,6 +131,7 @@ func init() {
|
|||||||
mdb.TYPE, aaa.TECH, mdb.ICONS, nfs.USR_ICONS_ICEBERGS,
|
mdb.TYPE, aaa.TECH, mdb.ICONS, nfs.USR_ICONS_ICEBERGS,
|
||||||
TARGET, kit.Keys(ice.OPS, m.Option(DOMAIN), m.Option(mdb.NAME)),
|
TARGET, kit.Keys(ice.OPS, m.Option(DOMAIN), m.Option(mdb.NAME)),
|
||||||
)
|
)
|
||||||
|
StreamPushRefreshConfirm(m, m.Trans("refresh for new space ", "刷新列表查看新空间 ")+kit.Keys(m.Option(DOMAIN), m.Option(mdb.NAME)))
|
||||||
}},
|
}},
|
||||||
}, ctx.ConfAction(mdb.FIELD, "time,domain,status,type,name,text,icons,repos,binary,module,version", ctx.TOOLS, kit.Simple(SPIDE, STATUS, VERSION))), Hand: func(m *ice.Message, arg ...string) {
|
}, ctx.ConfAction(mdb.FIELD, "time,domain,status,type,name,text,icons,repos,binary,module,version", ctx.TOOLS, kit.Simple(SPIDE, STATUS, VERSION))), Hand: func(m *ice.Message, arg ...string) {
|
||||||
if kit.HasPrefixList(arg, ctx.ACTION) {
|
if kit.HasPrefixList(arg, ctx.ACTION) {
|
||||||
|
@ -92,6 +92,7 @@ func _space_fork(m *ice.Message) {
|
|||||||
gdb.Event(m, SPACE_LOGIN, args)
|
gdb.Event(m, SPACE_LOGIN, args)
|
||||||
defer gdb.Event(m, SPACE_LOGIN_CLOSE, args)
|
defer gdb.Event(m, SPACE_LOGIN_CLOSE, args)
|
||||||
case PORTAL:
|
case PORTAL:
|
||||||
|
defer gdb.EventDeferEvent(m, PORTAL_OPEN, args)(PORTAL_CLOSE, args)
|
||||||
m.Go(func() { m.Cmd(SPACE, name, cli.PWD, name) })
|
m.Go(func() { m.Cmd(SPACE, name, cli.PWD, name) })
|
||||||
case WORKER:
|
case WORKER:
|
||||||
defer gdb.EventDeferEvent(m, DREAM_OPEN, args)(DREAM_CLOSE, args)
|
defer gdb.EventDeferEvent(m, DREAM_OPEN, args)(DREAM_CLOSE, args)
|
||||||
@ -267,6 +268,8 @@ const (
|
|||||||
SPACE_GRANT = "space.grant"
|
SPACE_GRANT = "space.grant"
|
||||||
SPACE_OPEN = "space.open"
|
SPACE_OPEN = "space.open"
|
||||||
SPACE_CLOSE = "space.close"
|
SPACE_CLOSE = "space.close"
|
||||||
|
PORTAL_OPEN = "portal.open"
|
||||||
|
PORTAL_CLOSE = "portal.close"
|
||||||
)
|
)
|
||||||
const SPACE = "space"
|
const SPACE = "space"
|
||||||
|
|
||||||
|
@ -1,39 +1,69 @@
|
|||||||
package web
|
package web
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
ice "shylinux.com/x/icebergs"
|
ice "shylinux.com/x/icebergs"
|
||||||
"shylinux.com/x/icebergs/base/cli"
|
"shylinux.com/x/icebergs/base/cli"
|
||||||
"shylinux.com/x/icebergs/base/ctx"
|
"shylinux.com/x/icebergs/base/ctx"
|
||||||
|
"shylinux.com/x/icebergs/base/gdb"
|
||||||
"shylinux.com/x/icebergs/base/mdb"
|
"shylinux.com/x/icebergs/base/mdb"
|
||||||
|
"shylinux.com/x/icebergs/base/web/html"
|
||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func _stream_subkey(m *ice.Message, arg ...string) *ice.Message {
|
||||||
|
kit.If(len(arg) == 0, func() { arg = append(arg, kit.Hashs(kit.Fields(m.Option(ice.MSG_SPACE), m.Option(ice.MSG_INDEX)))) })
|
||||||
|
return m.Options(mdb.SUBKEY, kit.Keys(mdb.HASH, arg[0]), ice.MSG_FIELDS, mdb.Config(m, mdb.FIELDS))
|
||||||
|
}
|
||||||
|
|
||||||
const STREAM = "stream"
|
const STREAM = "stream"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Index.MergeCommands(ice.Commands{
|
Index.MergeCommands(ice.Commands{
|
||||||
STREAM: {Name: "stream hash daemon auto", Help: "在线", Actions: ice.MergeActions(ice.Actions{
|
STREAM: {Name: "stream hash daemon auto", Help: "推送流", Actions: ice.MergeActions(ice.Actions{
|
||||||
ONLINE: {Hand: func(m *ice.Message, arg ...string) {
|
ONLINE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
mdb.HashCreate(m, SPACE, m.Option(ice.MSG_SPACE), ctx.INDEX, m.Option(ice.MSG_INDEX),
|
mdb.HashCreate(m, SPACE, m.Option(ice.MSG_SPACE), ctx.INDEX, m.Option(ice.MSG_INDEX), mdb.SHORT, cli.DAEMON, mdb.FIELD, mdb.Config(m, mdb.FIELDS))
|
||||||
mdb.SHORT, cli.DAEMON, mdb.FIELD, mdb.Config(m, mdb.FIELDS))
|
mdb.HashCreate(_stream_subkey(m), ParseUA(m))
|
||||||
m.Option(mdb.SUBKEY, kit.Keys(mdb.HASH, kit.Hashs(kit.Fields(m.Option(ice.MSG_SPACE), m.Option(ice.MSG_INDEX)))))
|
mdb.HashSelect(m)
|
||||||
mdb.HashCreate(m, ParseUA(m))
|
|
||||||
mdb.HashSelect(m.Options(ice.MSG_FIELDS, mdb.Config(m, mdb.FIELDS)))
|
|
||||||
}},
|
}},
|
||||||
"push": {Hand: func(m *ice.Message, arg ...string) {
|
"push": {Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Option(mdb.SUBKEY, kit.Keys(mdb.HASH, kit.Hashs(kit.Fields(m.Option(ice.MSG_SPACE), m.Option(ice.MSG_INDEX)))))
|
mdb.HashSelect(_stream_subkey(m)).Table(func(value ice.Maps) {
|
||||||
mdb.HashSelect(m).Table(func(value ice.Maps) { m.Cmd(SPACE, value[cli.DAEMON], arg) })
|
if value[cli.DAEMON] != m.Option(ice.MSG_DAEMON) {
|
||||||
|
m.Options(mdb.SUBKEY, "").Cmd(SPACE, value[cli.DAEMON], arg)
|
||||||
|
}
|
||||||
|
})
|
||||||
}},
|
}},
|
||||||
}, mdb.HashAction(
|
PORTAL_CLOSE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
mdb.HashSelect(m).Table(func(value ice.Maps) {
|
||||||
|
mdb.HashSelect(_stream_subkey(m, value[mdb.HASH]).Spawn()).Table(func(value ice.Maps) {
|
||||||
|
if strings.HasPrefix(value[cli.DAEMON], m.Option(mdb.NAME)) {
|
||||||
|
mdb.HashRemove(m, mdb.HASH, kit.Hashs(value[cli.DAEMON]))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}},
|
||||||
|
}, gdb.EventsAction(PORTAL_CLOSE), mdb.ClearOnExitHashAction(), mdb.HashAction(
|
||||||
mdb.SHORT, "space,index", mdb.FIELD, "time,hash,space,index",
|
mdb.SHORT, "space,index", mdb.FIELD, "time,hash,space,index",
|
||||||
mdb.FIELDS, "time,daemon,userrole,username,usernick,avatar,icons,agent,system,ip,ua",
|
mdb.FIELDS, "time,daemon,userrole,username,usernick,avatar,icons,agent,system,ip,ua",
|
||||||
)), Hand: func(m *ice.Message, arg ...string) {
|
)), Hand: func(m *ice.Message, arg ...string) {
|
||||||
if len(arg) == 0 {
|
if len(arg) == 0 {
|
||||||
mdb.HashSelect(m)
|
mdb.HashSelect(m)
|
||||||
} else {
|
} else {
|
||||||
m.Option(mdb.SUBKEY, kit.Keys(mdb.HASH, arg[0]))
|
mdb.HashSelect(_stream_subkey(m, arg[0]), arg[1:]...)
|
||||||
mdb.HashSelect(m.Options(ice.MSG_FIELDS, mdb.Config(m, mdb.FIELDS)), arg[1:]...)
|
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
func StreamPush(m *ice.Message, arg ...string) {
|
||||||
|
if ice.Info.NodeType == WORKER {
|
||||||
|
m.Option(ice.MSG_SPACE, m.Option(ice.MSG_USERPOD))
|
||||||
|
} else {
|
||||||
|
m.Option(ice.MSG_SPACE, "")
|
||||||
|
}
|
||||||
|
m.Option(ice.MSG_INDEX, m.ShortKey())
|
||||||
|
AdminCmd(m, STREAM, "push", arg)
|
||||||
|
}
|
||||||
|
func StreamPushRefreshConfirm(m *ice.Message, arg ...string) {
|
||||||
|
StreamPush(m.Spawn(ice.Maps{"space.noecho": "true"}), kit.Simple(html.REFRESH, html.CONFIRM, arg)...)
|
||||||
|
}
|
||||||
|
@ -33,20 +33,20 @@ func init() {
|
|||||||
mdb.ZoneInsert(m, append(arg, "direct", tcp.SEND, aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.AVATAR, m.Option(ice.MSG_AVATAR)))
|
mdb.ZoneInsert(m, append(arg, "direct", tcp.SEND, aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.AVATAR, m.Option(ice.MSG_AVATAR)))
|
||||||
kit.If(mdb.HashSelectField(m, arg[0], web.TARGET), func(p string) { m.Cmd(web.SPACE, p, MESSAGE, tcp.RECV, arg[1:]) })
|
kit.If(mdb.HashSelectField(m, arg[0], web.TARGET), func(p string) { m.Cmd(web.SPACE, p, MESSAGE, tcp.RECV, arg[1:]) })
|
||||||
mdb.HashSelectUpdate(m, arg[0], func(value ice.Map) { kit.Value(value, mdb.TIME, m.Time()) })
|
mdb.HashSelectUpdate(m, arg[0], func(value ice.Map) { kit.Value(value, mdb.TIME, m.Time()) })
|
||||||
|
web.StreamPushRefreshConfirm(m, m.Trans("refresh for new message ", "刷新列表查看新消息 "))
|
||||||
}},
|
}},
|
||||||
tcp.RECV: {Role: aaa.VOID, Hand: func(m *ice.Message, arg ...string) {
|
tcp.RECV: {Role: aaa.VOID, Hand: func(m *ice.Message, arg ...string) {
|
||||||
mdb.ZoneInsert(m, kit.Simple(mdb.ZONE, m.Option(ice.FROM_SPACE), arg, "direct", tcp.RECV, aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.AVATAR, m.Option(ice.MSG_AVATAR)))
|
mdb.ZoneInsert(m, kit.Simple(mdb.ZONE, m.Option(ice.FROM_SPACE), arg, "direct", tcp.RECV, aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.AVATAR, m.Option(ice.MSG_AVATAR)))
|
||||||
mdb.HashSelectUpdate(m, m.Option(ice.FROM_SPACE), func(value ice.Map) { kit.Value(value, web.TARGET, m.Option(ice.FROM_SPACE)) })
|
mdb.HashSelectUpdate(m, m.Option(ice.FROM_SPACE), func(value ice.Map) { kit.Value(value, web.TARGET, m.Option(ice.FROM_SPACE)) })
|
||||||
mdb.HashSelectUpdate(m, m.Option(ice.FROM_SPACE), func(value ice.Map) { kit.Value(value, mdb.TIME, m.Time()) })
|
mdb.HashSelectUpdate(m, m.Option(ice.FROM_SPACE), func(value ice.Map) { kit.Value(value, mdb.TIME, m.Time()) })
|
||||||
|
web.StreamPushRefreshConfirm(m, m.Trans("refresh for new message ", "刷新列表查看新消息 "))
|
||||||
}},
|
}},
|
||||||
web.DREAM_CREATE: {Hand: func(m *ice.Message, arg ...string) {
|
web.DREAM_CREATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
if ice.Info.Important {
|
if ice.Info.Important {
|
||||||
messageInsert(m, web.DREAM, mdb.TYPE, "plug", ctx.INDEX, IFRAME, ctx.ARGS, web.S(m.Option(mdb.NAME)))
|
messageInsert(m, web.DREAM, mdb.TYPE, "plug", ctx.INDEX, IFRAME, ctx.ARGS, web.S(m.Option(mdb.NAME)))
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
web.OPEN: {Hand: func(m *ice.Message, arg ...string) {
|
web.OPEN: {Hand: func(m *ice.Message, arg ...string) { m.ProcessOpen(m.MergePod(m.Option(web.TARGET))) }},
|
||||||
m.ProcessOpen(m.MergePod(m.Option(web.TARGET)))
|
|
||||||
}},
|
|
||||||
ctx.COMMAND: {Hand: func(m *ice.Message, arg ...string) {
|
ctx.COMMAND: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
if m.Option("direct") == "recv" {
|
if m.Option("direct") == "recv" {
|
||||||
m.Cmdy(web.Space(m, m.Option(web.TARGET)), ctx.COMMAND, arg[0]).ProcessField(ctx.ACTION, ctx.RUN, m.Option(web.TARGET), arg[0])
|
m.Cmdy(web.Space(m, m.Option(web.TARGET)), ctx.COMMAND, arg[0]).ProcessField(ctx.ACTION, ctx.RUN, m.Option(web.TARGET), arg[0])
|
||||||
@ -54,9 +54,7 @@ func init() {
|
|||||||
m.Cmdy(ctx.COMMAND, arg[0]).ProcessField(ctx.ACTION, ctx.RUN, "", arg[0])
|
m.Cmdy(ctx.COMMAND, arg[0]).ProcessField(ctx.ACTION, ctx.RUN, "", arg[0])
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
ctx.RUN: {Hand: func(m *ice.Message, arg ...string) {
|
ctx.RUN: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(web.Space(m, arg[0]), arg[1], arg[2:]) }},
|
||||||
m.Cmdy(web.Space(m, arg[0]), arg[1], arg[2:])
|
|
||||||
}},
|
|
||||||
}, web.DreamAction(), web.DreamTablesAction(), mdb.ZoneAction(
|
}, web.DreamAction(), web.DreamTablesAction(), mdb.ZoneAction(
|
||||||
mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,hash,type,zone,icons,title,count,target",
|
mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,hash,type,zone,icons,title,count,target",
|
||||||
mdb.FIELDS, "time,id,type,name,text,space,index,args,style,display,username,usernick,avatar,direct",
|
mdb.FIELDS, "time,id,type,name,text,space,index,args,style,display,username,usernick,avatar,direct",
|
||||||
|
@ -4,7 +4,7 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
can.ui = can.onappend.layout(can), can.onimport._project(can, msg)
|
can.ui = can.onappend.layout(can), can.onimport._project(can, msg)
|
||||||
can.onimport._online(can)
|
can.onimport._online(can)
|
||||||
},
|
},
|
||||||
_project: function(can, msg) { var select, current = can.db.hash[0]||ice.DEV
|
_project: function(can, msg) { var select, current = can.db.hash[0]||can.sup.db.current||ice.DEV
|
||||||
can.page.insertBefore(can, [{view: wiki.TITLE, list: [
|
can.page.insertBefore(can, [{view: wiki.TITLE, list: [
|
||||||
{icon: "bi bi-three-dots", onclick: function() { can._legend.onclick(event) }},
|
{icon: "bi bi-three-dots", onclick: function() { can._legend.onclick(event) }},
|
||||||
{text: "message"||can.ConfIndex(), onclick: function(event) { can._legend.onclick(event) }},
|
{text: "message"||can.ConfIndex(), onclick: function(event) { can._legend.onclick(event) }},
|
||||||
@ -17,6 +17,7 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
{view: wiki.CONTENT, list: [{text: value.target||"[未知消息]"}]},
|
{view: wiki.CONTENT, list: [{text: value.target||"[未知消息]"}]},
|
||||||
]},
|
]},
|
||||||
], onclick: function(event) { can.isCmdMode() && can.misc.SearchHash(can, value.zone), can.onimport._switch(can, false)
|
], onclick: function(event) { can.isCmdMode() && can.misc.SearchHash(can, value.zone), can.onimport._switch(can, false)
|
||||||
|
can.sup.db.current = value.zone
|
||||||
can.db.zone = value, can.db.hash = value.hash, can.onmotion.select(can, can.ui.project, html.DIV_ITEM, _target)
|
can.db.zone = value, can.db.hash = value.hash, can.onmotion.select(can, can.ui.project, html.DIV_ITEM, _target)
|
||||||
if (can.onmotion.cache(can, function(save, load) {
|
if (can.onmotion.cache(can, function(save, load) {
|
||||||
can.ui.message && save({title: can.ui.title, message: can.ui.message, scroll: can.ui.message.scrollTop})
|
can.ui.message && save({title: can.ui.title, message: can.ui.message, scroll: can.ui.message.scrollTop})
|
||||||
@ -89,6 +90,9 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
can.ui.title && can.page.style(can, can.ui.message, html.HEIGHT, can.ui.content.offsetHeight-can.ui.title.offsetHeight)
|
can.ui.title && can.page.style(can, can.ui.message, html.HEIGHT, can.ui.content.offsetHeight-can.ui.title.offsetHeight)
|
||||||
},
|
},
|
||||||
}, [""])
|
}, [""])
|
||||||
|
Volcanos(chat.ONDAEMON, {
|
||||||
|
refresh: function(can, msg, sub, arg) { can.base.isFunc(sub.Update) && sub.Update(), can.user.toast(can, "new message") },
|
||||||
|
})
|
||||||
Volcanos(chat.ONEXPORT, {
|
Volcanos(chat.ONEXPORT, {
|
||||||
plugHeight: function(can, value) { var height = can.base.Min(can.ui.content.offsetHeight-240, 240)
|
plugHeight: function(can, value) { var height = can.base.Min(can.ui.content.offsetHeight-240, 240)
|
||||||
return can.base.Max(html.STORY_HEIGHT, height, height/(can.base.isIn(value.index, html.IFRAME)? 1: 2))
|
return can.base.Max(html.STORY_HEIGHT, height, height/(can.base.isIn(value.index, html.IFRAME)? 1: 2))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user