Prechádzať zdrojové kódy

知识库支持使用command+s(Mac)或ctrl+s(PC)保存

kuaifan 5 rokov pred
rodič
commit
0aa1edc6b8

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
     "name": "wookteam",
-    "version": "1.5.9",
+    "version": "1.5.10",
     "description": "WookTeam是一款轻量级的开源在线团队协作工具,提供各类文档工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,知识库管理等工具。",
     "scripts": {
         "ide-helper": "php artisan ide-helper:generate",

+ 4 - 1
resources/assets/js/main/components/TEditor.vue

@@ -137,7 +137,7 @@
                         'advlist autolink lists link image charmap print preview hr anchor pagebreak imagetools',
                         'searchreplace visualblocks visualchars code',
                         'insertdatetime media nonbreaking save table contextmenu directionality',
-                        'emoticons paste textcolor colorpicker imagetools codesample'
+                        'emoticons paste textcolor colorpicker imagetools codesample save'
                     ];
                 }
             },
@@ -227,6 +227,9 @@
                     language: "zh_CN",
                     toolbar: this.toolbar,
                     plugins: this.plugins,
+                    save_onsavecallback: (e) => {
+                        this.$emit('editorSave', e);
+                    },
                     paste_data_images: true,
                     menu: {
                         view: {

+ 4 - 0
resources/assets/js/main/components/docs/flow/index.vue

@@ -82,6 +82,10 @@
                         this.$emit('input', data.params.xml);
                         break
 
+                    case 'save':
+                        this.$emit('saveData');
+                        break
+
                     case 'imageContent':
                         let pdf = new JSPDF({
                             format: [data.params.width, data.params.height]

+ 21 - 4
resources/assets/js/main/pages/docs/edit.vue

@@ -71,11 +71,11 @@
             <div class="docs-body">
                 <template v-if="docDetail.type=='document'">
                     <MDEditor v-if="docContent.type=='md'" class="body-text" v-model="docContent.content" height="100%"></MDEditor>
-                    <TEditor v-else class="body-text" v-model="docContent.content" height="100%"></TEditor>
+                    <TEditor v-else class="body-text" v-model="docContent.content" height="100%" @editorSave="handleClick('saveBefore')"></TEditor>
                 </template>
-                <minder v-else-if="docDetail.type=='mind'" ref="myMind" class="body-mind" v-model="docContent"></minder>
+                <minder v-else-if="docDetail.type=='mind'" ref="myMind" class="body-mind" v-model="docContent" @saveData="handleClick('saveBefore')"></minder>
                 <sheet v-else-if="docDetail.type=='sheet'" ref="mySheet" class="body-sheet" v-model="docContent.content"></sheet>
-                <flow v-else-if="docDetail.type=='flow'" ref="myFlow" class="body-flow" v-model="docContent.content"></flow>
+                <flow v-else-if="docDetail.type=='flow'" ref="myFlow" class="body-flow" v-model="docContent.content" @saveData="handleClick('saveBefore')"></flow>
             </div>
         </div>
 
@@ -501,6 +501,7 @@
             //
             this.refreshSid();
             this.synergy(true);
+            document.addEventListener("keydown", this.keySave);
         },
         deactivated() {
             if (this.isLock && this.docDetail.lockname == this.userInfo.username) {
@@ -514,6 +515,7 @@
             }
             //
             this.synergy(false);
+            document.removeEventListener("keydown", this.keySave);
             this.docDrawerShow = false;
             if ($A.getToken() === false) {
                 this.sid = 0;
@@ -534,7 +536,7 @@
                     this.sid = To.params.sid;
                 }
             },
-            
+
             docDrawerTab(act) {
                 switch (act) {
                     case "menu":
@@ -617,6 +619,13 @@
             }
         },
         methods: {
+            keySave(e) {
+                if ((e.ctrlKey || e.metaKey) && e.keyCode === 83) {
+                    this.handleClick('saveBefore');
+                    e.preventDefault();
+                }
+            },
+
             goBackDirect() {
                 this.bakContent = $A.jsonStringify(this.docContent);
                 this.goBack({name:'docs'});
@@ -767,6 +776,14 @@
                         });
                         break;
 
+                    case "saveBefore":
+                        if (!this.equalContent && this.loadIng == 0) {
+                            this.handleClick('save');
+                        } else {
+                            this.$Message.warning(this.$L('没有任何修改!'));
+                        }
+                        return;
+
                     case "save":
                         this.bakContent = $A.jsonStringify(this.docContent);
                         $A.apiAjax({

+ 10 - 1
resources/assets/statics/public/js/grapheditor/index.html

@@ -54,11 +54,20 @@
             this.actions.get('export').setEnabled(false);
             this.actions.get('open').setEnabled(false);
             this.actions.get('import').setEnabled(false);
-            this.actions.get('save').setEnabled(false);
+            this.actions.get('save').setEnabled(true);
             this.actions.get('saveAs').setEnabled(false);
             this.actions.get('export').setEnabled(false);
         };
 
+        EditorUi.prototype.saveFile = function () {
+            window.parent.postMessage({
+                act: 'save',
+                params: {
+
+                }
+            }, '*');
+        };
+
         EditorUi.prototype.menubarHeight = 0;
         EditorUi.prototype.footerHeight = 0;
 

+ 4 - 0
resources/lang/en/general.js

@@ -512,4 +512,8 @@ export default {
     "全部任务": "All tasks",
     "我负责的任务": "I am responsible for the task",
     "使用我上次抄送的人": "Use the person I cc'd last time",
+    "没有任何修改!": "No changes!",
+    "分享文档": "Share documents",
+    "历史版本": "Historic version",
+    "浏览文档": "View the document",
 }