Jelajahi Sumber

添加是否公开单词本参数

visuddhinanda 2 tahun lalu
induk
melakukan
f42794255e

+ 14 - 2
dashboard/src/components/template/Wbw/WbwDetail.tsx

@@ -16,6 +16,8 @@ import {
 import { IAttachmentRequest } from "../../api/Attachments";
 import WbwDetailAttachment from "./WbwDetailAttachment";
 import CommentBox from "../../discussion/DiscussionDrawer";
+import { useAppSelector } from "../../../hooks";
+import { currentUser } from "../../../reducers/current-user";
 
 interface IWidget {
   data: IWbw;
@@ -38,6 +40,7 @@ const WbwDetailWidget = ({
     JSON.parse(JSON.stringify(data))
   );
   const [tabKey, setTabKey] = useState<string>("basic");
+  const currUser = useAppSelector(currentUser);
 
   useEffect(() => {
     console.debug("input data", data);
@@ -266,14 +269,23 @@ const WbwDetailWidget = ({
           menu={{
             items: [
               {
-                key: "user-dict",
+                key: "user-dict-public",
                 label: intl.formatMessage({ id: "buttons.save.publish" }),
+                disabled: currUser?.roles?.includes("basic"),
+              },
+              {
+                key: "user-dict-private",
+                label: intl.formatMessage({ id: "buttons.save.my.dict" }),
               },
             ],
             onClick: (e) => {
               if (typeof onSave !== "undefined") {
                 //保存并发布
-                onSave(currWbwData, true);
+                if (e.key === "user-dict-public") {
+                  onSave(currWbwData, true, true);
+                } else {
+                  onSave(currWbwData, true, false);
+                }
               }
             },
           }}

+ 2 - 2
dashboard/src/components/template/Wbw/WbwPali.tsx

@@ -174,9 +174,9 @@ const WbwPaliWidget = ({ data, channelId, mode, display, onSave }: IWidget) => {
         setPaliColor("unset");
         setPopOpen(false);
       }}
-      onSave={(e: IWbw, isPublish: boolean) => {
+      onSave={(e: IWbw, isPublish: boolean, isPublic: boolean) => {
         if (typeof onSave !== "undefined") {
-          onSave(e, isPublish);
+          onSave(e, isPublish, isPublic);
           setPopOpen(false);
           setPaliColor("unset");
         }

+ 2 - 2
dashboard/src/components/template/Wbw/WbwWord.tsx

@@ -249,11 +249,11 @@ const WbwWordWidget = ({
           channelId={channelId}
           mode={mode}
           display={display}
-          onSave={(e: IWbw, isPublish: boolean) => {
+          onSave={(e: IWbw, isPublish: boolean, isPublic: boolean) => {
             const newData: IWbw = JSON.parse(JSON.stringify(e));
             setWordData(newData);
             if (typeof onChange !== "undefined") {
-              onChange(e, isPublish);
+              onChange(e, isPublish, isPublic);
             }
           }}
         />

+ 11 - 5
dashboard/src/components/template/WbwSent.tsx

@@ -23,6 +23,7 @@ import { GetUserSetting } from "../auth/setting/default";
 import { getGrammar } from "../../reducers/term-vocabulary";
 import modal from "antd/lib/modal";
 import { UserWbwPost } from "../dict/MyCreate";
+import { currentUser } from "../../reducers/current-user";
 
 export const paraMark = (wbwData: IWbw[]): IWbw[] => {
   //处理段落标记,支持点击段落引用弹窗
@@ -176,6 +177,7 @@ export const WbwSentCtl = ({
   const [loading, setLoading] = useState(false);
   const [progress, setProgress] = useState(0);
   const [showProgress, setShowProgress] = useState(false);
+  const user = useAppSelector(currentUser);
 
   console.debug("wbw sent lang", channelLang);
 
@@ -479,7 +481,7 @@ export const WbwSentCtl = ({
     }
   };
 
-  const wbwPublish = (wbwData: IWbw[]) => {
+  const wbwPublish = (wbwData: IWbw[], isPublic: boolean) => {
     let wordData: IDictRequest[] = [];
 
     wbwData.forEach((data) => {
@@ -507,6 +509,7 @@ export const WbwSentCtl = ({
           note: data.note?.value,
           confidence: conf,
           language: channelLang,
+          status: isPublic ? 30 : 5,
         });
       }
     });
@@ -534,7 +537,7 @@ export const WbwSentCtl = ({
         mode={displayMode}
         display={wbwMode}
         fields={fieldDisplay}
-        onChange={(e: IWbw, isPublish?: boolean) => {
+        onChange={(e: IWbw, isPublish: boolean, isPublic: boolean) => {
           let newData = [...wordData];
           newData.forEach((value, index, array) => {
             //把新的数据更新到数组
@@ -582,8 +585,8 @@ export const WbwSentCtl = ({
           }
           update(newData);
           saveWord(newData, e.sn[0]);
-          if (isPublish) {
-            wbwPublish([e]);
+          if (isPublish === true) {
+            wbwPublish([e], isPublic);
           }
         }}
         onSplit={() => {
@@ -708,7 +711,10 @@ export const WbwSentCtl = ({
                   magicDictLookup();
                   break;
                 case "wbw-dict-publish-all":
-                  wbwPublish(wordData);
+                  wbwPublish(
+                    wordData,
+                    user?.roles?.includes("basic") ? false : true
+                  );
                   break;
                 case "copy-text":
                   const paliText = wordData