Pārlūkot izejas kodu

课程管理静态页面代码

ariyamaggika 3 gadi atpakaļ
vecāks
revīzija
909d4cd114

+ 2 - 1
dashboard-fluent/src/locales/zh-Hans/forms.ts

@@ -4,12 +4,13 @@ const items = {
 	"forms.fields.id.label": "ID",
 	"forms.fields.message.label": "消息",
 	"forms.fields.created-at.label": "创建时间",
-	"forms.fields.update-at.label": "创建时间",
+	"forms.fields.update-at.label": "更新时间",
 	"forms.fields.lang.label": "语言",
 	"forms.create.message.no.lang": "请选择一种语言",
 	"forms.fields.title.label": "标题",
 	"forms.create.message.no.title": "请输入标题",
 	"forms.fields.subtitle.label": "副标题",
+	"forms.fields.teacher.label": "主讲人",
 	"forms.fields.summary.label": "简介",
 	"forms.fields.content.label": "内容",
 	"forms.fields.tag.label": "标签",

+ 2 - 2
dashboard/.env.orig

@@ -2,10 +2,10 @@ GENERATE_SOURCEMAP=false
 BROWSER=none
 PUBLIC_URL=/my
 HOST=0.0.0.0
-PORT=20080
+PORT=20139
 
 #REACT_APP_GRPC_HOST=http://127.0.0.1:10012
 REACT_APP_DEFAULT_LOCALE=zh-Hans
 REACT_APP_LANGUAGES=en-US,zh-Hans,zh-Hant
-REACT_APP_API_HOST=https://jeremy.spring.wikipali.org
+REACT_APP_API_HOST=https://crixus.spring.wikipali.org
 REACT_APP_ENABLE_LOCAL_TOKEN=true

+ 9 - 2
dashboard/src/Router.tsx

@@ -27,6 +27,7 @@ import LibraryCourse from "./pages/library/course";
 import LibraryCourseList from "./pages/library/course/list";
 import LibraryCourseShow from "./pages/library/course/course";
 import LibraryLessonShow from "./pages/library/course/lesson";
+//import LibraryCourseManage from "./pages/library/course/courseManage";
 import LibraryTerm from "./pages/library/term/show";
 import LibraryDict from "./pages/library/dict";
 import LibraryDictShow from "./pages/library/dict/show";
@@ -65,6 +66,9 @@ import StudioDictList from "./pages/studio/dict/list";
 import StudioTerm from "./pages/studio/term";
 import StudioTermList from "./pages/studio/term/list";
 
+import StudioCourse from "./pages/studio/course";
+import StudioCourseList from "./pages/studio/course/list";
+
 import StudioArticle from "./pages/studio/article";
 import StudioArticleList from "./pages/studio/article/list";
 import StudioArticleEdit from "./pages/studio/article/edit";
@@ -124,8 +128,8 @@ const Widget = () => {
       </Route>
       <Route path="course" element={<LibraryCourse />}>
         <Route path="list" element={<LibraryCourseList />}></Route>
-        <Route path="show/:id" element={<LibraryCourseShow />}></Route>
-        <Route path="lesson/:id" element={<LibraryLessonShow />}></Route>
+        <Route path="show" element={<LibraryCourseShow />}></Route>
+        <Route path="lesson" element={<LibraryLessonShow />}></Route>
       </Route>
 
       <Route path="term/:word" element={<LibraryTerm />} />
@@ -175,6 +179,9 @@ const Widget = () => {
         <Route path="term" element={<StudioTerm />}>
           <Route path="list" element={<StudioTermList />} />
         </Route>
+        <Route path="course" element={<StudioCourse />}>
+          <Route path="list" element={<StudioCourseList />} />
+        </Route>
         <Route path="article" element={<StudioArticle />}>
           <Route path="list" element={<StudioArticleList />} />
           <Route path=":articleid/edit" element={<StudioArticleEdit />} />

+ 11 - 0
dashboard/src/components/studio/LeftSider.tsx

@@ -29,6 +29,7 @@ const Widget = ({ selectedKeys = "" }: IWidgetHeadBar) => {
 	const linkGroup = "/studio/" + studioname + "/group/list";
 	const linkUserdict = "/studio/" + studioname + "/dict/list";
 	const linkTerm = "/studio/" + studioname + "/term/list";
+	const linkCourse = "/studio/" + studioname + "/course/list";
 	const linkArticle = "/studio/" + studioname + "/article/list";
 	const linkAnthology = "/studio/" + studioname + "/anthology/list";
 	const linkAnalysis = "/studio/" + studioname + "/analysis/list";
@@ -106,6 +107,16 @@ const Widget = ({ selectedKeys = "" }: IWidgetHeadBar) => {
 					),
 					key: "term",
 				},
+				{
+					label: (
+						<Link to={linkCourse}>
+							{intl.formatMessage({
+								id: "columns.studio.course.title",
+							})}
+						</Link>
+					),
+					key: "course",
+				},
 				{
 					label: (
 						<Link to={linkArticle}>

+ 2 - 1
dashboard/src/locales/zh-Hans/forms.ts

@@ -4,7 +4,7 @@ const items = {
   "forms.fields.id.label": "ID",
   "forms.fields.message.label": "消息",
   "forms.fields.created-at.label": "创建时间",
-  "forms.fields.update-at.label": "创建时间",
+  "forms.fields.update-at.label": "更新时间",
   "forms.fields.lang.label": "语言",
   "forms.message.lang.required": "请选择一种语言",
   "forms.fields.title.label": "标题",
@@ -20,6 +20,7 @@ const items = {
   "forms.fields.publicity.disable.label": "禁用",
   "forms.fields.publicity.private.label": "私有",
   "forms.fields.publicity.public.label": "公开",
+  "forms.fields.teacher.label": "主讲人",
   "forms.fields.note.label": "注解",
   "forms.fields.confidence.label": "信心指数",
   "forms.fields.confidence.0.label": "不靠谱",

+ 1 - 0
dashboard/src/locales/zh-Hans/index.ts

@@ -35,6 +35,7 @@ const items = {
   "columns.studio.group.title": "群组",
   "columns.studio.userdict.title": "用户字典",
   "columns.studio.term.title": "术语",
+  "columns.studio.course.title": "课程",
   "columns.studio.article.title": "文章",
   "columns.studio.anthology.title": "文集",
   "columns.studio.analysis.title": "分析",

+ 0 - 78
dashboard/src/pages/library/course/Course.tsx

@@ -1,78 +0,0 @@
-//课程详情页面
-import { Link } from "react-router-dom";
-import { useParams } from "react-router-dom";
-import { Layout, Col, Row,Divider } from "antd";
-import CourseShow from "../../../components/library/course/CourseShow";
-import CourseIntro from "../../../components/library/course/CourseIntro";
-import TocTree from "../../../components/article/TocTree";
-import { ListNodeData } from "../../../components/article/EditableTree";
-import ReactMarkdown from 'react-markdown'
-import rehypeRaw from 'rehype-raw'
-const { Content, Header } = Layout;
-
-let arrTocTree: ListNodeData[] = [];
-let  i = 0;
-do {
-  ++i
-  arrTocTree.push({
-    key: i.toString(),
-    title: `课程 ${i}`,
-    level: 1,
-  });
-   }while(i<10)  // 在循环的尾部检查条件
-
-
-   let markdown='# 这是标题\n' +
-   '[ **M** ] arkdown + E [ **ditor** ] = **Mditor**  \n' +
-   '> Mditor 是一个简洁、易于集成、方便扩展、期望舒服的编写 markdown 的编辑器,仅此而已... \n\n' +
-  '**这是加粗的文字**\n\n' +
-   '*这是倾斜的文字*`\n\n' +
-   '***这是斜体加粗的文字***\n\n' +
-   '~~这是加删除线的文字~~ \n\n'+
-   '\`console.log(Hello World)\` \n\n'+
-   '```const a=2; ```'
-
-const Widget = () => {
-  // TODO
-  const { courseid } = useParams(); //url 参数
-  
-  return (
-    <Layout>
-
-
-    <Content>
-      <Row>
-          <Col flex="auto"></Col>
-          <Col flex="1760px">
-    <div>
-      <div>
-      <CourseShow />
-      <Divider />   
-      <ReactMarkdown rehypePlugins={[rehypeRaw]} children={markdown} />
-      <CourseIntro />
-      <Divider />   
-      <TocTree treeData={arrTocTree} />
-        </div>
-
-    </div>
-    </Col>
-    </Row>
-      </Content>
-    </Layout>
-  );
-};
-
-export default Widget;
-
-
-/*
-  return (
-    <div>
-      <div>课程{courseid} 详情</div>
-      <div>
-        <Link to="/course/lesson/12345">lesson 1</Link>
-        <Link to="/course/lesson/23456">lesson 2</Link>
-      </div>
-    </div>
-  );
-*/

+ 71 - 11
dashboard/src/pages/library/course/course.tsx

@@ -1,18 +1,78 @@
+//课程详情页面
 import { Link } from "react-router-dom";
 import { useParams } from "react-router-dom";
+import { Layout, Col, Row,Divider } from "antd";
+import CourseShow from "../../../components/library/course/CourseShow";
+import CourseIntro from "../../../components/library/course/CourseIntro";
+import TocTree from "../../../components/article/TocTree";
+import { ListNodeData } from "../../../components/article/EditableTree";
+import ReactMarkdown from 'react-markdown'
+import rehypeRaw from 'rehype-raw'
+const { Content, Header } = Layout;
+
+let arrTocTree: ListNodeData[] = [];
+let  i = 0;
+do {
+  ++i
+  arrTocTree.push({
+    key: i.toString(),
+    title: `课程 ${i}`,
+    level: 1,
+  });
+   }while(i<10)  // 在循环的尾部检查条件
+
+
+   let markdown='# 这是标题\n' +
+   '[ **M** ] arkdown + E [ **ditor** ] = **Mditor**  \n' +
+   '> Mditor 是一个简洁、易于集成、方便扩展、期望舒服的编写 markdown 的编辑器,仅此而已... \n\n' +
+  '**这是加粗的文字**\n\n' +
+   '*这是倾斜的文字*`\n\n' +
+   '***这是斜体加粗的文字***\n\n' +
+   '~~这是加删除线的文字~~ \n\n'+
+   '\`console.log(Hello World)\` \n\n'+
+   '```const a=2; ```'
 
 const Widget = () => {
-	// TODO
-	const { courseid } = useParams(); //url 参数
-	return (
-		<div>
-			<div>课程{courseid} 详情</div>
-			<div>
-				<Link to="/course/lesson/12345">lesson 1</Link>
-				<Link to="/course/lesson/23456">lesson 2</Link>
-			</div>
-		</div>
-	);
+  // TODO
+  const { courseid } = useParams(); //url 参数
+  
+  return (
+    <Layout>
+
+
+    <Content>
+      <Row>
+          <Col flex="auto"></Col>
+          <Col flex="1760px">
+    <div>
+      <div>
+      <CourseShow />
+      <Divider />   
+      <ReactMarkdown rehypePlugins={[rehypeRaw]} children={markdown} />
+      <CourseIntro />
+      <Divider />   
+      <TocTree treeData={arrTocTree} />
+        </div>
+
+    </div>
+    </Col>
+    </Row>
+      </Content>
+    </Layout>
+  );
 };
 
 export default Widget;
+
+
+/*
+  return (
+    <div>
+      <div>课程{courseid} 详情</div>
+      <div>
+        <Link to="/course/lesson/12345">lesson 1</Link>
+        <Link to="/course/lesson/23456">lesson 2</Link>
+      </div>
+    </div>
+  );
+*/