Kaynağa Gözat

new version page

Light Beacon 1 yıl önce
ebeveyn
işleme
6bd4969383

+ 1 - 0
Project/libraries/Versions/__LIBRARY__.yml

@@ -6,6 +6,7 @@ fill:
   title: ${file_name}
   #server-jar: ${@ServerJar}
   templates:
+    - VersionPage/VersionPage
     - Newra/VersionLatestCard
     - Newra/VersionMarkdownCard
     - Classic/VersionLatestCard

+ 51 - 0
Project/modules/VersionPresenter.py

@@ -0,0 +1,51 @@
+from bs4 import BeautifulSoup
+from homepagebuilder.interfaces import page_class_handles, require
+from homepagebuilder.core.page import CodeBasedPage
+from homepagebuilder.core.types import Context
+from homepagebuilder.interfaces import  require, script
+
+# region presenter
+presenter_module = require('markdown_presenter')
+parsers_module = require('markdown_parsers')
+create_node = parsers_module.create_node
+MarkdownPresenter = presenter_module.MarkdownPresenter
+
+class VersionPresenter(MarkdownPresenter):
+    def html2xaml(self, html, context:Context):
+        soup = BeautifulSoup(html,'html.parser')
+        card_list = []
+        buffer = ''
+        current_heading = ''
+        for tag in soup.find_all(recursive=False):
+            if tag.name == 'h2':
+                if len(buffer) > 0:
+                    card_list.append((current_heading, buffer))
+                current_heading = tag.contents[0]
+                buffer = ''
+            else:
+                buffer += create_node(tag,context,[]).convert()
+        if len(buffer) > 0:
+            card_list.append((current_heading, buffer))
+        xaml = ''
+        for cardname, cardcontent in card_list:
+            xaml += f'''
+            <local:MyCard Title="{cardname}" Style="{{StaticResource Card}}" CanSwap="True" IsSwaped="false">
+            <StackPanel Margin="20,28,20,10">
+            <FlowDocumentScrollViewer >
+            <FlowDocument>
+            {cardcontent}
+            </FlowDocument>
+            </FlowDocumentScrollViewer >
+            </StackPanel>
+            </local:MyCard>
+            '''
+        context.used_resources.add('Card')
+        context.used_resources.add('ContentStack')
+        return xaml
+
+presenter = VersionPresenter()
+
+@script('VersionPresenter')
+def version_presenter(card,context,**_):
+    md = card['markdown']   
+    return presenter.convert(md,context)

+ 1 - 12
Project/pages/VersionPage.yml

@@ -1,14 +1,3 @@
 name: 版本详情
-import: 
-    - name: mcv
-      file: ${ver}
-display_name: ${mcv.id} 版本详情
 cards:
-    - IF: ${mcv.image}
-      THEN: VersionPage:Image | link = ${mcv.image}
-    - VersionPage:Changelogs | document = ${mcv.markdown}
-    - IF: ${mcv.wip}
-      THEN:  VersionPage:WIP
-    - VersionPage:ActionButtons | version = ${mcv}
-    - IF: ${mcv.wip}
-      THEN: VersionPage:Translators | tanslators = ${mcv.tanslator}
+  - ${@IF|${@ExistCard|${version}}|${version}|404}|inversionpage=true

+ 4 - 0
Project/structures/templates/VersionPage/VersionPage.yml

@@ -0,0 +1,4 @@
+components:
+ - $VersionPresenter
+filter:
+   inversionpage: True