Ver código fonte

You can export a single page / 可以导出单个页面

star7th 5 anos atrás
pai
commit
84fea1a8f0

+ 10 - 2
server/Application/Api/Controller/ExportController.class.php

@@ -11,6 +11,7 @@ class ExportController extends BaseController {
         $Parsedown = new \Parsedown();
         $item_id =  I("item_id/d");
         $cat_id =  I("cat_id/d");
+        $page_id =  I("page_id/d");
         $login_user = $this->checkLogin();
         if (!$this->checkItemPermn($login_user['uid'] , $item_id)) {
             $this->message(L('no_permissions'));
@@ -21,7 +22,10 @@ class ExportController extends BaseController {
 
 
         $menu = D("Item")->getContent($item_id,"*","*",1);
-        if ($cat_id) {
+        if($page_id > 0 ){
+            $pages[] = D("Page")->where(" page_id = '$page_id' ")->find();
+        }
+        else if ($cat_id) {
             foreach ($menu['catalogs'] as $key => $value) {
                 if ($cat_id == $value['cat_id']) {
                     $pages = $value['pages'] ;
@@ -56,7 +60,11 @@ class ExportController extends BaseController {
 
         if ($pages) {
             foreach ($pages as $key => $value) {
-                $data .= "<h1>{$parent}、{$value['page_title']}</h1>";
+                if(count($pages) > 1){
+                    $data .= "<h1>{$parent}、{$value['page_title']}</h1>";
+                }else{
+                    $data .= "<h1>{$value['page_title']}</h1>";
+                }
                 $data .= '<div style="margin-left:20px;">';
                     $data .= htmlspecialchars_decode($Parsedown->text($value['page_content']));
                 $data .= '</div>';

+ 41 - 3
web_src/src/components/item/export/Index.vue

@@ -28,6 +28,7 @@
               class="cat"
               v-model="cat_id"
               v-if="computed_catalogs"
+              @change="get_pages"
             >
               <el-option
                 v-for="cat in computed_catalogs "
@@ -37,7 +38,16 @@
               ></el-option>
             </el-select>
           </el-form-item>
-
+          <el-form-item label v-if="export_format == 'word' && export_type == 2">
+            <el-select class="cat" v-model="page_id" v-if="pages">
+              <el-option
+                v-for="page in pages "
+                :key="page.page_title"
+                :label="page.page_title"
+                :value="page.page_id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
           <el-form-item label>
             <el-button type="primary" style="width:100%;" @click="onSubmit">{{$t('begin_export')}}</el-button>
           </el-form-item>
@@ -63,7 +73,12 @@ export default {
       cat_id: '',
       export_type: '1',
       item_id: 0,
-      export_format: 'word'
+      export_format: 'word',
+      pages: [
+        { page_id: '0',
+          page_title: this.$t('all_pages')
+        }],
+      page_id: '0'
     }
   },
   computed: {
@@ -134,7 +149,7 @@ export default {
         '/api/export/word&item_id=' +
         this.item_id +
         '&cat_id=' +
-        this.cat_id
+        this.cat_id + '&page_id=' + this.page_id
       if (this.export_format == 'markdown') {
         url = DocConfig.server + '/api/export/markdown&item_id=' + this.item_id
       }
@@ -142,6 +157,29 @@ export default {
     },
     goback() {
       this.$router.go(-1)
+    },
+    // 获取某目录下的所有页面
+    get_pages(cat_id) {
+      var that = this
+      var url = DocConfig.server + '/api/catalog/getPagesBycat'
+      var params = new URLSearchParams()
+      params.append('item_id', this.item_id)
+      params.append('cat_id', cat_id)
+      that.axios
+        .post(url, params)
+        .then(function(response) {
+          if (response.data.error_code === 0) {
+            var pages = response.data.data
+            pages.unshift({
+              page_id: '0',
+              page_title: that.$t('all_pages')
+            })
+            that.pages = pages
+            that.page_id = '0'
+          } else {
+            that.$alert(response.data.error_message)
+          }
+        })
     }
   },
   mounted() {

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

@@ -88,7 +88,7 @@ exports.default = {
 
   // item/export
   export_all: 'Export all',
-  export_cat: 'export catalog',
+  export_cat: 'export catalog/page',
   select_cat_2: 'Select catalog level2',
   select_cat_3: 'Select catalog level3',
   begin_export: 'Begin to export',
@@ -389,5 +389,7 @@ exports.default = {
   visit_times: 'visit times',
   my_attachment: 'My attachment',
   accumulated_used_sapce: 'Accumulated used space',
-  month_flow: 'Traffic has been used this month'
+  month_flow: 'Traffic has been used this month',
+
+  all_pages: 'All pages'
 }

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

@@ -86,7 +86,7 @@ exports.default = {
 
   // item/export
   export_all: '导出全部',
-  export_cat: '按目录导出',
+  export_cat: '按目录/页面',
   select_cat_2: '选择二级目录:',
   select_cat_3: '选择三级目录:',
   begin_export: '开始导出',
@@ -380,5 +380,7 @@ exports.default = {
   visit_times: '访问次数',
   my_attachment: '我的附件',
   accumulated_used_sapce: '累计已使用空间',
-  month_flow: '本月已使用流量'
+  month_flow: '本月已使用流量',
+
+  all_pages: '全部页面'
 }