Prechádzať zdrojové kódy

增加对三级目录的支持

star7th 9 rokov pred
rodič
commit
25e22cdb44

+ 38 - 1
Application/Home/Controller/CatalogController.class.php

@@ -14,6 +14,10 @@ class CatalogController extends BaseController {
             $this->assign("Catalog" , $Catalog);
         }
 
+        if ($Catalog['parent_cat_id']) {
+            $this->assign("default_parent_cat_id" , $Catalog['parent_cat_id']);
+        }
+        
         $item_id = $Catalog['item_id'] ? $Catalog['item_id'] : I("item_id");
 
         $login_user = $this->checkLogin();
@@ -32,6 +36,7 @@ class CatalogController extends BaseController {
         $cat_name = I("cat_name");
         $s_number = I("s_number/d") ? I("s_number/d") : 99 ;
         $cat_id = I("cat_id/d")? I("cat_id/d") : 0;
+        $parent_cat_id = I("parent_cat_id/d")? I("parent_cat_id/d") : 0;
         $item_id =  I("item_id/d");
 
         $login_user = $this->checkLogin();
@@ -43,7 +48,10 @@ class CatalogController extends BaseController {
         $data['cat_name'] = $cat_name ;
         $data['s_number'] = $s_number ;
         $data['item_id'] = $item_id ;
-        
+        $data['parent_cat_id'] = $parent_cat_id ;
+        if ($parent_cat_id > 0 ) {
+           $data['level'] = 3;
+        }
 
         if ($cat_id > 0 ) {
             
@@ -79,6 +87,35 @@ class CatalogController extends BaseController {
         }
     }
 
+    //获取二级目录列表
+    public function secondCatList(){
+        $item_id = I("item_id/d");
+        if ($item_id > 0 ) {
+            $ret = D("Catalog")->where(" item_id = '$item_id' and level =2  ")->order(" 's_number', addtime asc  ")->select();
+        }
+        if ($ret) {
+           $this->sendResult($ret);
+        }else{
+            $return['error_code'] = 10103 ;
+            $return['error_message'] = 'request  fail' ;
+            $this->sendResult($return);
+        }
+    }
+
+    //获取一个目录的子目录列表(如果存在的话)
+    public function childCatList(){
+        $cat_id = I("cat_id/d");
+        if ($cat_id > 0 ) {
+            $ret = D("Catalog")->where(" parent_cat_id = '$cat_id' ")->order(" 's_number', addtime asc  ")->select();
+        }
+        if ($ret) {
+           $this->sendResult($ret);
+        }else{
+            $return['error_code'] = 10103 ;
+            $return['error_message'] = 'request  fail' ;
+            $this->sendResult($return);
+        }      
+    }
     //删除目录
     public function delete(){
         $cat_id = I("cat_id/d")? I("cat_id/d") : 0;

+ 50 - 5
Application/Home/Controller/ItemController.class.php

@@ -90,16 +90,28 @@ class ItemController extends BaseController {
         }else{
             //获取所有父目录id为0的页面
             $pages = D("Page")->where("cat_id = '0' and item_id = '$item_id' ")->order(" `s_number` asc  ")->select();
-            //获取所有目录
-            $catalogs = D("Catalog")->where("item_id = '$item_id' ")->order(" `s_number` asc  ")->select();
+            //获取所有二级目录
+            $catalogs = D("Catalog")->where("item_id = '$item_id' and level = 2  ")->order(" `s_number` asc  ")->select();
             if ($catalogs) {
                 foreach ($catalogs as $key => &$catalog) {
+                    //该二级目录下的所有子页面
                     $temp = D("Page")->where("cat_id = '$catalog[cat_id]' ")->order(" `s_number` asc  ")->select();
                     $catalog['pages'] = $temp ? $temp: array();
+
+                    //该二级目录下的所有子目录
+                    $temp = D("catalog")->where("parent_cat_id = '$catalog[cat_id]' ")->order(" `s_number` asc  ")->select();
+                    $catalog['catalogs'] = $temp ? $temp: array();
+                    if($catalog['catalogs']){
+                        //获取所有三级目录的子页面
+                        foreach ($catalog['catalogs'] as $key3 => &$catalog3) {
+                            //该二级目录下的所有子页面
+                            $temp = D("Page")->where("cat_id = '$catalog3[cat_id]' ")->order(" `s_number` asc  ")->select();
+                            $catalog3['pages'] = $temp ? $temp: array();
+                        }                        
+                    }               
                 }
             }
         }
-
         $share_url = get_domain().__APP__.'/'.$item_id;
 
         $ItemPermn = $this->checkItemPermn($uid , $item_id) ;
@@ -198,14 +210,28 @@ class ItemController extends BaseController {
         }
 
         $item = D("Item")->where("item_id = '$item_id' ")->find();
+
         //获取所有父目录id为0的页面
         $pages = D("Page")->where("cat_id = '0' and item_id = '$item_id' ")->order(" `s_number` asc  ")->select();
-        //获取所有目录
-        $catalogs = D("Catalog")->where("item_id = '$item_id' ")->order(" `s_number` asc  ")->select();
+        //获取所有二级目录
+        $catalogs = D("Catalog")->where("item_id = '$item_id' and level = 2  ")->order(" `s_number` asc  ")->select();
         if ($catalogs) {
             foreach ($catalogs as $key => &$catalog) {
+                //该二级目录下的所有子页面
                 $temp = D("Page")->where("cat_id = '$catalog[cat_id]' ")->order(" `s_number` asc  ")->select();
                 $catalog['pages'] = $temp ? $temp: array();
+
+                //该二级目录下的所有子目录
+                $temp = D("catalog")->where("parent_cat_id = '$catalog[cat_id]' ")->order(" `s_number` asc  ")->select();
+                $catalog['catalogs'] = $temp ? $temp: array();
+                if($catalog['catalogs']){
+                    //获取所有三级目录的子页面
+                    foreach ($catalog['catalogs'] as $key3 => &$catalog3) {
+                        //该二级目录下的所有子页面
+                        $temp = D("Page")->where("cat_id = '$catalog3[cat_id]' ")->order(" `s_number` asc  ")->select();
+                        $catalog3['pages'] = $temp ? $temp: array();
+                    }                        
+                }               
             }
         }
 
@@ -236,6 +262,25 @@ class ItemController extends BaseController {
                             $child ++;
                         }
                     }
+                    if ($value['catalogs']) {
+                        $parent2 = 1 ;
+                        foreach ($value['catalogs'] as $key3 => $value3) {
+                            $data .= "<h2>{$parent}.{$parent2}、{$value3['cat_name']}</h2>";
+                            $data .= '<div style="margin-left:20px;">';
+                                $child2 = 1 ;
+                                if ($value3['pages']) {
+                                    foreach ($value3['pages'] as $page3) {
+                                        $data .= "<h3>{$parent}.{$parent2}.{$child2}、{$page3['page_title']}</h3>";
+                                        $data .= '<div style="margin-left:30px;">';
+                                            $data .= htmlspecialchars_decode($Parsedown->text($page3['page_content']));
+                                        $data .= '</div>';
+                                        $child2 ++;
+                                    }
+                                }
+                            $data .= '</div>';
+                            $parent2 ++;
+                        }
+                    }
                 $data .= '</div>';
                 $parent ++;
             }

+ 10 - 1
Application/Home/Controller/PageController.class.php

@@ -69,10 +69,19 @@ class PageController extends BaseController {
             return;
         }
 
+        $Catalog = D("Catalog")->where(" cat_id = '$default_cat_id' ")->find();
+        if ($Catalog['parent_cat_id']) {
+            $default_second_cat_id = $Catalog['parent_cat_id'];
+            $default_child_cat_id = $default_cat_id;
+
+        }else{
+            $default_second_cat_id = $default_cat_id;
+        }
 
         $this->assign("page" , $page);
         $this->assign("item_id" , $item_id);
-        $this->assign("default_cat_id" , $default_cat_id);
+        $this->assign("default_second_cat_id" , $default_second_cat_id);
+        $this->assign("default_child_cat_id" , $default_child_cat_id);
 
 
         $this->display();        

+ 59 - 1
Application/Home/Controller/UpdateController.class.php

@@ -139,12 +139,70 @@ class UpdateController extends BaseController {
     		}
     	}
 
-    	echo "OK!";
 
+        //catalog表增加parent_cat_id字段
+        $columns = M("catalog")->getDbFields();
+        if ($columns) {
+            $has_it = 0 ;//是否存在该字段
+            foreach ($columns as $key => $value) {
+                if ($value == 'parent_cat_id') {
+                    $has_it = 1 ;
+                }
+            }
+            if ($has_it === 0) {
+                $sql = "ALTER TABLE ".C('DB_PREFIX')."catalog ADD parent_cat_id INT( 10 ) NOT NULL DEFAULT '0' COMMENT '上一级目录的id';";
+                D("catalog")->execute($sql);
+            }
+        }
+
+        //catalog表增加level字段
+        $columns = M("catalog")->getDbFields();
+        if ($columns) {
+            $has_it = 0 ;//是否存在该字段
+            foreach ($columns as $key => $value) {
+                if ($value == 'level') {
+                    $has_it = 1 ;
+                }
+            }
+            if ($has_it === 0) {
+                $sql = "ALTER TABLE ".C('DB_PREFIX')."catalog ADD level INT( 10 ) NOT NULL DEFAULT '2' COMMENT '2为二级目录,3为三级目录';";
+                D("catalog")->execute($sql);
+            }
+        }
 
+        echo "OK!";
     }
 
     public function sqlite(){
+        //catalog表增加parent_cat_id字段
+        $columns = M("catalog")->getDbFields();
+        if ($columns) {
+            $has_it = 0 ;//是否存在该字段
+            foreach ($columns as $key => $value) {
+                if ($value == 'parent_cat_id') {
+                    $has_it = 1 ;
+                }
+            }
+            if ($has_it === 0) {
+                $sql = "ALTER TABLE ".C('DB_PREFIX')."catalog ADD parent_cat_id INT( 10 ) NOT NULL DEFAULT '0' ;";
+                D("catalog")->execute($sql);
+            }
+        }
+
+        //catalog表增加level字段
+        $columns = M("catalog")->getDbFields();
+        if ($columns) {
+            $has_it = 0 ;//是否存在该字段
+            foreach ($columns as $key => $value) {
+                if ($value == 'level') {
+                    $has_it = 1 ;
+                }
+            }
+            if ($has_it === 0) {
+                $sql = "ALTER TABLE ".C('DB_PREFIX')."catalog ADD level INT( 10 ) NOT NULL DEFAULT '2'  ;";
+                D("catalog")->execute($sql);
+            }
+        }    
         echo 'OK!';
     }
 

+ 8 - 1
Application/Home/View/Catalog/edit.html

@@ -25,6 +25,12 @@
               <div class="controls">
                 <input type="text" id="s_number" placeholder="可选:顺序数字" value="{$Catalog.s_number}">
               </div>
+            </div>
+             <div class="control-group">
+              <label class="control-label" for="inputPassword">上级目录:</label>
+              <div class="controls">
+                  <select name="parent_cat_id" id="parent_cat_id" ></select>
+              </div>
             </div>
             <div class="control-group">
               <div class="controls">
@@ -53,5 +59,6 @@
     </div>
  </div>
 
+<input type="hidden" id="default_parent_cat_id"  value="{$default_parent_cat_id}">
  <include file="Common/footer" />
- <script src="__PUBLIC__/js/catalog/edit.js?v=1.1.1"></script>
+ <script src="__PUBLIC__/js/catalog/edit.js?v=1.1.10third"></script>

+ 18 - 2
Application/Home/View/Item/show.html

@@ -1,5 +1,5 @@
 <include file="Common/header" />
-<link rel="stylesheet" href="__PUBLIC__/css/item/show.css" />
+<link rel="stylesheet" href="__PUBLIC__/css/item/show.css?1.1.1third" />
 
 
 <div class="doc-head row" >
@@ -60,17 +60,33 @@
 
       <ul class="nav nav-list bs-docs-sidenav">
 
+        <!-- 一级目录的页面在前面 -->
         <foreach name="pages" item="page">
           <li ><a href="{:U('Home/Page/index')}&page_id={$page.page_id}" data-page-id="{$page.page_id}" ><i class="icon-blank"></i>{$page.page_title}</a></li>
         </foreach>
 
         <foreach name="catalogs" item="catalog">
 
+        
           <li><a href="#"><i class="icon-chevron-right"></i>{$catalog.cat_name}</a>
             <ul class="child-ul nav-list hide">
+              <!-- 二级目录的页面们 -->
               <foreach name="catalog.pages" item="catalog_page">
                 <li><a href="{:U('Home/Page/index')}&page_id={$catalog_page.page_id}" data-page-id="{$catalog_page.page_id}" >{$catalog_page.page_title}</a></li>
               </foreach>
+              <!-- 二级目录的子目录们(三级目录) -->
+                <foreach name="catalog.catalogs" item="catalog3">   
+                  <li class="third-child-catalog"><a href="#"><i class="icon-chevron-right"></i>{$catalog3.cat_name}</a>
+                    <ul class="child-ul nav-list hide">
+                      <!-- 二级目录的页面们 -->
+                      <foreach name="catalog3.pages" item="catalog3_page">
+                        <li><a href="{:U('Home/Page/index')}&page_id={$catalog3_page.page_id}" data-page-id="{$catalog3_page.page_id}" >{$catalog3_page.page_title}</a></li>
+                      </foreach>
+                    </ul>
+                  </li>
+
+                </foreach>
+
             </ul>
           </li>
 
@@ -144,4 +160,4 @@
 <script src="__PUBLIC__/js/jquery.goup.min.js"></script>
 <script src="__PUBLIC__/js/jquery.hotkeys.js"></script>
 
-<script src="__PUBLIC__/js/item/show.js?v=1.12"></script>
+<script src="__PUBLIC__/js/item/show.js?v=1.12third"></script>

+ 9 - 4
Application/Home/View/Page/edit.html

@@ -1,5 +1,5 @@
 <include file="Common/header" />
-<link rel="stylesheet" href="__PUBLIC__/css/page/edit.css" />
+<link rel="stylesheet" href="__PUBLIC__/css/page/edit.css?1.1third" />
 <link rel="stylesheet" href="__PUBLIC__/editor.md/css/editormd.css" />
 <style type="text/css">
 
@@ -13,9 +13,13 @@
                     <input type="text" name="page_title" id="page_title" placeholder="请输入页面标题" value="{$page.page_title}" tabindex="1">
                 </li>
                 <li>
-                    级目录:
+                    级目录:
                     <select name="cat_id" id="cat_id" tabindex="2"></select>
                 </li>
+                <li id="li_parent_cat">
+                    三级目录:
+                    <select name="parent_cat_id" id="parent_cat_id" ></select>
+                </li>
                 <li>
                     <input type="text" name="s_number" id="s_number" value="{$page.s_number}" placeholder="可选:顺序数字"  tabindex="3" >
                 </li>
@@ -45,7 +49,8 @@
     </div>
     <input type="hidden" id="item_id" value="{$item_id}">
     <input type="hidden" id="page_id" value="{$page.page_id}">
-    <input type="hidden" id="default_cat_id" value="{$default_cat_id}">
+    <input type="hidden" id="default_second_cat_id" value="{$default_second_cat_id}">
+    <input type="hidden" id="default_child_cat_id" value="{$default_child_cat_id}">
 </div>
 <!-- 模板存放的地方 -->
 <div id="api-doc-templ" style="display:none">
@@ -86,4 +91,4 @@
 <script src="__PUBLIC__/editor.md/plugins/table-dialog/table-dialog.js"></script>
 <script src="__PUBLIC__/editor.md/plugins/reference-link-dialog/reference-link-dialog.js"></script>
 
-<script src="__PUBLIC__/js/page/edit.js?v=1.1.1"></script>
+<script src="__PUBLIC__/js/page/edit.js?v=1.1.2third"></script>

+ 5 - 2
Public/css/item/show.css

@@ -18,6 +18,7 @@
     padding-right: 40px;
   }
   .doc-left{
+    width: 240px;
     position: relative;
     padding-top: 10px;
     min-height: 100%;
@@ -76,9 +77,11 @@
   }
 
   .search-query-input{
-    width: 130px;
+    width: 140px;
   }
-
+.third-child-catalog{
+  margin-left: -16px;
+}
 
 @media screen and (min-width:1200px){
   .doc-right{ width: 930px;} 

+ 2 - 2
Public/css/page/edit.css

@@ -111,11 +111,11 @@ body {
     height: 30px;
 }
 
-#cat_id {
+#cat_id ,#parent_cat_id {
     width: 150px;
 }
 
-#order {
+#s_number {
     width: 120px;
     margin-right: 20px;
 }

+ 38 - 1
Public/js/catalog/edit.js

@@ -31,20 +31,57 @@ $(function(){
         );
   }
 
+  /*加载二级目录,让用户选择上级目录*/
+  secondCatList();
+
+  function secondCatList() {
+    var default_parent_cat_id = $("#default_parent_cat_id").val();
+    var item_id = $("#item_id").val();
+    $.get(
+      "./", {
+        "item_id": item_id,
+        "s": "home/catalog/secondCatList",
+      },
+      function(data) {
+        $("#parent_cat_id").html('<OPTION value="0">无</OPTION>');
+        if (data.error_code == 0) {
+          json = data.data;
+          console.log(json);
+          for (var i = 0; i < json.length; i++) {
+            cat_html = '<OPTION value="' + json[i].cat_id + '" ';
+            if (default_parent_cat_id == json[i].cat_id) {
+              cat_html += ' selected ';
+            }
+
+            cat_html += ' ">' + json[i].cat_name + '</OPTION>';
+            $("#parent_cat_id").append(cat_html);
+          };
+        };
+
+      },
+      "json"
+
+    );
+  }
+
+
   //保存目录
   $("#save-cat").click(function(){
       var cat_name = $("#cat_name").val();
       var s_number = $("#s_number").val();
       var cat_id = $("#cat_id").val();
+      var parent_cat_id = $("#parent_cat_id").val();
       $.post(
         "?s=home/catalog/save",
-        {"cat_name": cat_name , "s_number": s_number , "item_id": item_id , "cat_id": cat_id  },
+        {"cat_name": cat_name , "s_number": s_number , "item_id": item_id , "cat_id": cat_id, "parent_cat_id": parent_cat_id  },
         function(data){
           if (data.error_code == 0) {
             $("#delete-cat").hide();
             $("#cat_name").val('');
             $("#s_number").val('');
             $("#cat_id").val('');
+            $("#parent_cat_id").val('');
+            secondCatList();
             alert("保存成功!");
           }else{
             alert("保存失败!");

+ 48 - 6
Public/js/page/edit.js

@@ -5,15 +5,15 @@ var json_table_data='|参数名|类型|说明|\n'+
 
 $(function() {
   /*加载目录*/
-  getCatList();
+  secondCatList();
 
-  function getCatList() {
-    var default_cat_id = $("#default_cat_id").val();
+  function secondCatList() {
+    var default_second_cat_id = $("#default_second_cat_id").val();
     var item_id = $("#item_id").val();
     $.get(
       "./", {
         "item_id": item_id,
-        "s": "home/catalog/catList",
+        "s": "home/catalog/secondCatList",
       },
       function(data) {
         $("#cat_id").html('<OPTION value="0">无</OPTION>');
@@ -22,12 +22,13 @@ $(function() {
           console.log(json);
           for (var i = 0; i < json.length; i++) {
             cat_html = '<OPTION value="' + json[i].cat_id + '" ';
-            if (default_cat_id == json[i].cat_id) {
+            if (default_second_cat_id == json[i].cat_id) {
               cat_html += ' selected ';
             }
 
             cat_html += ' ">' + json[i].cat_name + '</OPTION>';
             $("#cat_id").append(cat_html);
+            getChildCatList();
           };
         };
 
@@ -37,6 +38,43 @@ $(function() {
     );
   }
 
+  function getChildCatList() {
+    var cat_id = $("#cat_id").val();
+    var default_child_cat_id = $("#default_child_cat_id").val();
+    $.get(
+      "./", {
+        "cat_id": cat_id,
+        "s": "home/catalog/childCatList",
+      },
+      function(data) {
+        $("#parent_cat_id").html('<OPTION value="0">无</OPTION>');
+        if (data.error_code == 0) {
+          json = data.data;
+          console.log(json);
+          for (var i = 0; i < json.length; i++) {
+            cat_html = '<OPTION value="' + json[i].cat_id + '" ';
+            if (default_child_cat_id == json[i].cat_id) {
+              cat_html += ' selected ';
+            }
+
+            cat_html += ' ">' + json[i].cat_name + '</OPTION>';
+            $("#parent_cat_id").append(cat_html);
+            $("#li_parent_cat").show();
+          };
+        }else{
+          $("#li_parent_cat").hide();
+        }
+
+      },
+      "json"
+
+    );
+  }
+  //监听是否选择了目录。如果选择了,则跟后台判断是否还子目录
+  $("#cat_id").change(function(){
+    getChildCatList();
+  });
+
   var keyMap = {
     // 保存
     "Ctrl-S": function() {
@@ -142,11 +180,15 @@ $(function() {
     if (saving) return false;
     var page_id = $("#page_id").val();
     var item_id = $("#item_id").val();
-    var cat_id = $("#cat_id").val();
     var page_title = $("#page_title").val();
     var page_content = $("#page_content").val();
     var item_id = $("#item_id").val();
     var s_number = $("#s_number").val();
+    var cat_id = $("#cat_id").val();
+    var parent_cat_id = $("#parent_cat_id").val();
+    if (parent_cat_id > 0 ) {
+      cat_id = parent_cat_id ;
+    };
     saving = true;
     $.post(
       "?s=home/page/save", {

BIN
Sqlite/showdoc.db.php