فهرست منبع

快速复制链接

star7th 7 سال پیش
والد
کامیت
846d3908f1

+ 1 - 1
web/index.html

@@ -4,4 +4,4 @@
       "server": window.location.protocol +'//'+ window.location.host + window.location.pathname+ '../server/index.php?s=',
       //"lang" :'en'
       "lang" :'zh-cn'
-  }</script><link href=./static/css/app.1cb500ad6c8f1b16dee2cabd0882c710.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.f90606b8a5e325130082.js></script><script type=text/javascript src=./static/js/vendor.25875d6925504ab7ff8d.js></script><script type=text/javascript src=./static/js/app.27dbf33648c9bf007c59.js></script></body></html>
+  }</script><link href=./static/css/app.33c7b0c49b238b6ac026215a5070c009.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.a8d7cad26e542f4d4c80.js></script><script type=text/javascript src=./static/js/vendor.89634a082eb5b01cb6e2.js></script><script type=text/javascript src=./static/js/app.826641635460d71a8c7e.js></script></body></html>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
web/static/css/app.33c7b0c49b238b6ac026215a5070c009.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
web/static/js/app.27dbf33648c9bf007c59.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
web/static/js/app.826641635460d71a8c7e.js


+ 1 - 1
web/static/js/manifest.f90606b8a5e325130082.js → web/static/js/manifest.a8d7cad26e542f4d4c80.js

@@ -1 +1 @@
-!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var i,u,f,s=0,l=[];s<t.length;s++)u=t[s],o[u]&&l.push(o[u][0]),o[u]=0;for(i in c)Object.prototype.hasOwnProperty.call(c,i)&&(e[i]=c[i]);for(r&&r(t,c,a);l.length;)l.shift()();if(a)for(s=0;s<a.length;s++)f=n(n.s=a[s]);return f};var t={},o={2:0};n.e=function(e){function r(){i.onerror=i.onload=null,clearTimeout(u);var n=o[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),o[e]=void 0)}var t=o[e];if(0===t)return new Promise(function(e){e()});if(t)return t[2];var c=new Promise(function(n,r){t=o[e]=[n,r]});t[2]=c;var a=document.getElementsByTagName("head")[0],i=document.createElement("script");i.type="text/javascript",i.charset="utf-8",i.async=!0,i.timeout=12e4,n.nc&&i.setAttribute("nonce",n.nc),i.src=n.p+"static/js/"+e+"."+{0:"25875d6925504ab7ff8d",1:"27dbf33648c9bf007c59"}[e]+".js";var u=setTimeout(r,12e4);return i.onerror=i.onload=r,a.appendChild(i),c},n.m=e,n.c=t,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="./",n.oe=function(e){throw console.error(e),e}}([]);
+!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var i,u,f,s=0,l=[];s<t.length;s++)u=t[s],o[u]&&l.push(o[u][0]),o[u]=0;for(i in c)Object.prototype.hasOwnProperty.call(c,i)&&(e[i]=c[i]);for(r&&r(t,c,a);l.length;)l.shift()();if(a)for(s=0;s<a.length;s++)f=n(n.s=a[s]);return f};var t={},o={2:0};n.e=function(e){function r(){i.onerror=i.onload=null,clearTimeout(u);var n=o[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),o[e]=void 0)}var t=o[e];if(0===t)return new Promise(function(e){e()});if(t)return t[2];var c=new Promise(function(n,r){t=o[e]=[n,r]});t[2]=c;var a=document.getElementsByTagName("head")[0],i=document.createElement("script");i.type="text/javascript",i.charset="utf-8",i.async=!0,i.timeout=12e4,n.nc&&i.setAttribute("nonce",n.nc),i.src=n.p+"static/js/"+e+"."+{0:"89634a082eb5b01cb6e2",1:"826641635460d71a8c7e"}[e]+".js";var u=setTimeout(r,12e4);return i.onerror=i.onload=r,a.appendChild(i),c},n.m=e,n.c=t,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="./",n.oe=function(e){throw console.error(e),e}}([]);

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
web/static/js/vendor.25875d6925504ab7ff8d.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
web/static/js/vendor.89634a082eb5b01cb6e2.js


+ 2 - 0
web/static/lang/en.js

@@ -240,4 +240,6 @@ exports.default = {
     "itemCount":"itemCount",
     "empty_team_tips":"Welcome to the team management function. This function is well suited for collaborative management of Team leader for multi person and cross team projects. Please click the top left button to add the team. After adding teams, team members can be added or deleted at any time, allocated to different projects in batches, and members'rights can be set in different projects. Compared with simple membership management mode, team management function can add and delete personnel in batches, which is more convenient for complex team cooperation.",
 
+    "copy_link":"copy link",
+    "copy_success":"copy success",
 };

+ 4 - 1
web/static/lang/zh-CN.js

@@ -245,5 +245,8 @@ exports.default = {
     "memberCount":"成员数",
     "itemCount":"分配项目数",
     "empty_team_tips":"欢迎使用团队管理功能。此功能非常适合Team leader对多人员、跨团队项目的协作管理。请先点击左上方按钮添加团队。添加团队后,可以随时增加/删除团队成员、批量分配到不同项目,并且可以设置不同项目里的成员权限。相比简单成员管理模式,团队管理功能可以批量地进行人员的增删,更方便复杂团队的协作。",
- 
+
+    "copy_link":"复制链接",
+    "copy_success":"复制成功",
+    
 };

+ 11 - 4
web_src/src/components/item/show/show_regular_item/Index.vue

@@ -56,7 +56,7 @@
         </el-container>
 
         <div class="page-bar" v-show="show_page_bar && item_info.ItemPermn && item_info.is_archived < 1 " >
-          <PageBar v-if="page_id" :page_id="page_id" :item_id='item_info.item_id' :page_info="page_info"></PageBar>
+          <PageBar v-if="page_id" :page_id="page_id" :item_id='item_info.item_id' :item_info='item_info'  :page_info="page_info"></PageBar>
         </div>
         
       </el-container>
@@ -66,12 +66,13 @@
   <el-dialog
     title="分享项目"
     :visible.sync="dialogVisible"
-    width="400px"
+    width="600px"
     :modal="false"
     class="text-center"
     >
     
     <p>项目地址:<code >{{share_item_link}}</code></p>
+    <p><a href="javascript:;" class="home-phone-butt" v-clipboard:copyhttplist="copyText" v-clipboard:success="onCopy">{{$t('copy_link')}}</a></p>
         <p style="border-bottom: 1px solid #eee;"><img id="" style="width:114px;height:114px;" :src="qr_item_link"> </p>
     <span slot="footer" class="dialog-footer">
       <el-button type="primary" @click="dialogVisible = false">{{$t('confirm')}}</el-button>
@@ -104,7 +105,8 @@
         share_item_link:'',
         qr_item_link:'',
         page_info:'',
-        show_page_bar:true
+        show_page_bar:true,
+        copyText:"",
       }
     },
   components:{
@@ -157,6 +159,7 @@
       this.share_item_link =  this.getRootPath()+"#/"+this.item_info.item_id  ;
       this.qr_item_link = DocConfig.server +'/api/common/qrcode&size=3&url='+encodeURIComponent(this.share_item_link);
       this.dialogVisible = true;
+      this.copyText = this.item_info.item_name+"  -- ShowDoc \r\n"+ this.share_item_link;
     },
     //根据屏幕宽度进行响应(应对移动设备的访问)
     AdaptToMobile(){
@@ -189,7 +192,11 @@
 
       }
 
-    }
+    },
+    onCopy(){
+      this.$message(this.$t("copy_success"));
+    },
+    
   },
   mounted () {
     //根据屏幕宽度进行响应(应对移动设备的访问)

+ 13 - 3
web_src/src/components/item/show/show_regular_item/PageBar.vue

@@ -30,17 +30,19 @@
   <el-dialog
     :title="$t('share_page')"
     :visible.sync="dialogVisible"
-    width="500px"
+    width="600px"
     :modal="false"
     class="text-center"
     >
     
     <p>{{$t('item_page_address')}} : <code >{{share_page_link}}</code>
     </p>
+    <p><a href="javascript:;" class="home-phone-butt" v-clipboard:copyhttplist="copyText1" v-clipboard:success="onCopy">{{$t('copy_link')}}</a></p>
         <p style="border-bottom: 1px solid #eee;"><img  id="qr-page-link" style="width:114px;height:114px;" :src="qr_page_link"> </p>
         
       <p >{{$t('single_page_address')}} : <code id="share-single-link">{{share_single_link}}</code>
       </p>
+        <p><a href="javascript:;" class="home-phone-butt" v-clipboard:copyhttplist="copyText2" v-clipboard:success="onCopy">{{$t('copy_link')}}</a></p>
         <p style="border-bottom: 1px solid #eee;"><img  id="qr-single-link" style="width:114px;height:114px;" :src="qr_single_link"> </p>
      <p><a href="https://www.showdoc.cc/page/63882" target="_blank">{{$t('page_diff_tips')}}</a></p><p>
       </p>
@@ -71,7 +73,8 @@
   props:{
     item_id:'',
     page_id:'',
-    page_info:{}
+    page_info:{},
+    item_info:'',
   },
     data() {
       return {
@@ -80,7 +83,9 @@
         qr_page_link:"#",
         qr_single_link:"#",
         share_page_link:"",
-        share_single_link:""
+        share_single_link:"",
+        copyText1:'',
+        copyText2:'',
       }
     },
   components:{
@@ -99,6 +104,8 @@
       this.qr_page_link = DocConfig.server +'/api/common/qrcode&size=3&url='+encodeURIComponent(this.share_page_link);
       this.qr_single_link = DocConfig.server +'/api/common/qrcode&size=3&url='+encodeURIComponent(this.share_single_link);
       this.dialogVisible = true;
+      this.copyText1 = this.item_info.item_name+' - '+this.page_info.page_title+"\r\n"+ this.share_page_link;
+      this.copyText2 = this.page_info.page_title+"\r\n"+ this.share_single_link;
     },
     dropdown_callback(data){
       if (data) {
@@ -138,6 +145,9 @@
         }); 
       });
     },
+    onCopy(){
+      this.$message(this.$t("copy_success"));
+    },
   },
   mounted () {
     var that = this ;

+ 8 - 3
web_src/src/components/item/show/show_single_page_item/Index.vue

@@ -36,12 +36,13 @@
   <el-dialog
     :title="$t('share')"
     :visible.sync="dialogVisible"
-    width="400px"
+    width="600px"
     :modal="false"
     class="text-center"
     >
     
     <p>{{$t('item_address')}} :  <code >{{share_item_link}}</code></p>
+    <p><a href="javascript:;" class="home-phone-butt" v-clipboard:copyhttplist="copyText" v-clipboard:success="onCopy">{{$t('copy_link')}}</a></p>
         <p style="border-bottom: 1px solid #eee;"><img   id="" style="width:114px;height:114px;" :src="qr_item_link"> </p>
     <span slot="footer" class="dialog-footer">
       <el-button type="primary" @click="dialogVisible = false">{{$t('confirm')}}</el-button>
@@ -143,7 +144,8 @@ export default {
       page_id:'',
       dialogVisible:false,
       share_item_link:'',
-      qr_item_link:''
+      qr_item_link:'',
+      copyText:'',
     };
   },
   components:{
@@ -185,7 +187,7 @@ export default {
       this.share_item_link =  this.getRootPath()+"#/"+this.item_info.item_id  ;
       this.qr_item_link = DocConfig.server +'/api/common/qrcode&size=3&url='+encodeURIComponent(this.share_item_link);
       this.dialogVisible = true;
-      
+      this.copyText = this.item_info.item_name+"  -- ShowDoc \r\n"+ this.share_item_link;
     },
     AdaptToMobile(){
       var doc_container = document.getElementById('doc-container') ;
@@ -193,6 +195,9 @@ export default {
       doc_container.style.padding = '5px';
       var header = document.getElementById('header') ;
       header.style.height = '10px';
+    },
+    onCopy(){
+      this.$message(this.$t("copy_success"));
     }
   },
   mounted () {

+ 3 - 0
web_src/src/main.js

@@ -16,6 +16,8 @@ import myZhLocale from '../static/lang/zh-CN'
 import myEnLocale from '../static/lang/en'
 import 'url-search-params-polyfill'
 import "babel-polyfill";
+import VueClipboard from 'vue-clipboard2';
+
 
 Vue.use(util);
 Vue.config.productionTip = false
@@ -23,6 +25,7 @@ Vue.component('Header', Header);
 Vue.component('Footer', Footer);
 Vue.use(ElementUI)
 Vue.use(VueI18n)
+Vue.use(VueClipboard)
 
 //多语言相关
 var allZhLocale = Object.assign(zhLocale,myZhLocale);

+ 2 - 0
web_src/static/lang/en.js

@@ -240,4 +240,6 @@ exports.default = {
     "itemCount":"itemCount",
     "empty_team_tips":"Welcome to the team management function. This function is well suited for collaborative management of Team leader for multi person and cross team projects. Please click the top left button to add the team. After adding teams, team members can be added or deleted at any time, allocated to different projects in batches, and members'rights can be set in different projects. Compared with simple membership management mode, team management function can add and delete personnel in batches, which is more convenient for complex team cooperation.",
 
+    "copy_link":"copy link",
+    "copy_success":"copy success",
 };

+ 4 - 1
web_src/static/lang/zh-CN.js

@@ -245,5 +245,8 @@ exports.default = {
     "memberCount":"成员数",
     "itemCount":"分配项目数",
     "empty_team_tips":"欢迎使用团队管理功能。此功能非常适合Team leader对多人员、跨团队项目的协作管理。请先点击左上方按钮添加团队。添加团队后,可以随时增加/删除团队成员、批量分配到不同项目,并且可以设置不同项目里的成员权限。相比简单成员管理模式,团队管理功能可以批量地进行人员的增删,更方便复杂团队的协作。",
- 
+
+    "copy_link":"复制链接",
+    "copy_success":"复制成功",
+    
 };

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است