mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-28 20:38:49 +01:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
d7f56c2bb6
16 changed files with 47 additions and 14 deletions
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "كتلة المحتوى",
|
||||
"insertItemBefore": "إدراج ${x} عنصر(عناصر) قبل",
|
||||
"insertItemAfter": "إدراج ${x} عنصر(عناصر) بعد",
|
||||
"allViews": "جميع العروض",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "Inhaltsblock",
|
||||
"insertItemBefore": "${x} Element(e) davor einfügen",
|
||||
"insertItemAfter": "${x} Element(e) danach einfügen",
|
||||
"allViews": "Alle Ansichten",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "Content block",
|
||||
"insertItemBefore": "Insert ${x} item(s) before",
|
||||
"insertItemAfter": "Insert ${x} item(s) after",
|
||||
"allViews": "All views",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "Bloque de contenido",
|
||||
"insertItemBefore": "Insertar ${x} elemento(s) antes",
|
||||
"insertItemAfter": "Insertar ${x} elemento(s) después",
|
||||
"allViews": "Todas las vistas",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "Bloc de contenu",
|
||||
"insertItemBefore": "Insérer ${x} élément(s) avant",
|
||||
"insertItemAfter": "Insérer ${x} élément(s) après",
|
||||
"allViews": "Toutes les vues",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "בלוק תוכן",
|
||||
"insertItemBefore": "הוסף ${x} פריט(ים) לפני",
|
||||
"insertItemAfter": "הוסף ${x} פריט(ים) אחרי",
|
||||
"allViews": "כל התצוגות",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "Blocco di contenuto",
|
||||
"insertItemBefore": "Inserisci ${x} elemento(i) prima",
|
||||
"insertItemAfter": "Inserisci ${x} elemento(i) dopo",
|
||||
"allViews": "Tutte le viste",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "コンテンツブロック",
|
||||
"insertItemBefore": "${x}項目を前に挿入",
|
||||
"insertItemAfter": "${x}項目を後に挿入",
|
||||
"allViews": "すべてのビュー",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "Blok treści",
|
||||
"insertItemBefore": "Wstaw ${x} element(y) przed",
|
||||
"insertItemAfter": "Wstaw ${x} element(y) po",
|
||||
"allViews": "Wszystkie widoki",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "Bloco de conteúdo",
|
||||
"insertItemBefore": "Inserir ${x} item(ns) antes",
|
||||
"insertItemAfter": "Inserir ${x} item(ns) depois",
|
||||
"allViews": "Todas as visualizações",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "Блок контента",
|
||||
"insertItemBefore": "Вставить ${x} элемент(ов) перед",
|
||||
"insertItemAfter": "Вставить ${x} элемент(ов) после",
|
||||
"allViews": "Все виды",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "內容塊",
|
||||
"insertItemBefore": "在前方插入${x}條",
|
||||
"insertItemAfter": "在後方插入${x}條",
|
||||
"allViews": "所有視圖",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"contentBlock": "内容块",
|
||||
"insertItemBefore": "在前方插入${x}条",
|
||||
"insertItemAfter": "在后方插入${x}条",
|
||||
"allViews": "所有视图",
|
||||
|
|
|
|||
2
app/src/types/index.d.ts
vendored
2
app/src/types/index.d.ts
vendored
|
|
@ -850,7 +850,7 @@ interface IAVTable extends IAVView {
|
|||
}
|
||||
|
||||
interface IAVGallery extends IAVView {
|
||||
coverFrom: number; // 0:无,1:内容图,2:资源字段
|
||||
coverFrom: number; // 0:无,1:内容图,2:资源字段,3:内容块
|
||||
coverFromAssetKeyID?: string;
|
||||
cardSize: number; // 0:小卡片,1:中卡片,2:大卡片
|
||||
cardAspectRatio: number;
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@ const (
|
|||
CoverFromNone CoverFrom = iota // 无封面
|
||||
CoverFromContentImage // 内容图
|
||||
CoverFromAssetField // 资源字段
|
||||
CoverFromContentBlock // 内容块
|
||||
)
|
||||
|
||||
// ViewGalleryCardField 描述了画廊卡片字段的结构。
|
||||
|
|
|
|||
|
|
@ -195,19 +195,7 @@ func fillAttributeViewGalleryCardCover(attrView *av.AttributeView, view *av.View
|
|||
})
|
||||
|
||||
if "" == galleryCard.CoverURL {
|
||||
isDoc := ast.NodeDocument == node.Type
|
||||
if isDoc {
|
||||
node = node.FirstChild
|
||||
}
|
||||
|
||||
buf := bytes.Buffer{}
|
||||
for c := node; nil != c; c = c.Next {
|
||||
buf.WriteString(renderBlockDOMByNode(c, luteEngine))
|
||||
if !isDoc || 1024*4 < buf.Len() {
|
||||
break
|
||||
}
|
||||
}
|
||||
galleryCard.CoverContent = buf.String()
|
||||
galleryCard.CoverContent = renderCoverContentBlock(node, luteEngine)
|
||||
return
|
||||
}
|
||||
case av.CoverFromAssetField:
|
||||
|
|
@ -222,9 +210,40 @@ func fillAttributeViewGalleryCardCover(attrView *av.AttributeView, view *av.View
|
|||
|
||||
galleryCard.CoverURL = assetValue.MAsset[0].Content
|
||||
return
|
||||
case av.CoverFromContentBlock:
|
||||
blockValue := getBlockValue(cardValues)
|
||||
if blockValue.IsDetached {
|
||||
break
|
||||
}
|
||||
|
||||
tree := trees[blockValue.BlockID]
|
||||
if nil == tree {
|
||||
break
|
||||
}
|
||||
node := treenode.GetNodeInTree(tree, blockValue.BlockID)
|
||||
if nil == node {
|
||||
break
|
||||
}
|
||||
galleryCard.CoverContent = renderCoverContentBlock(node, luteEngine)
|
||||
}
|
||||
}
|
||||
|
||||
func renderCoverContentBlock(node *ast.Node, luteEngine *lute.Lute) string {
|
||||
isDoc := ast.NodeDocument == node.Type
|
||||
if isDoc {
|
||||
node = node.FirstChild
|
||||
}
|
||||
|
||||
buf := bytes.Buffer{}
|
||||
for c := node; nil != c; c = c.Next {
|
||||
buf.WriteString(renderBlockDOMByNode(c, luteEngine))
|
||||
if !isDoc || 1024*4 < buf.Len() {
|
||||
break
|
||||
}
|
||||
}
|
||||
return buf.String()
|
||||
}
|
||||
|
||||
func renderBlockDOMByNode(node *ast.Node, luteEngine *lute.Lute) string {
|
||||
tree := &parse.Tree{Root: &ast.Node{Type: ast.NodeDocument}, Context: &parse.Context{ParseOption: luteEngine.ParseOptions}}
|
||||
blockRenderer := render.NewProtyleRenderer(tree, luteEngine.RenderOptions)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue