点击,切换二级知识点:
1-: 可以点击 [上一节][下一节] 切换 二级知识点, 同时 右边的 目录也会相应的展开 和关闭.
2-: 也可以直接点击 右边的 目录 进行知识点的切换.
----------------------------------------------------------
1: 生成 知识点页面的函数.
1 public function listAction() 2 { 3 //知识点id: 4 $knowledgeId = $_REQUEST["knowledgeId"]; 5 6 $DetailsModel = new DetailsModel(); 7 $where["where"] = " knowledgeId = $knowledgeId order by orderBy asc , id asc "; 8 9 $data = $DetailsModel->getDataList($where); 10 11 //节奏: 12 $parameter["list"] = $data; 13 //知识点: 14 $parameter["KnowledgeModel"] = new KnowledgeModel($knowledgeId); 15 //知识点评价: 16 $HEvaluationProxyController = new HEvaluationProxyController(); 17 $parameter["evaluation"] = $HEvaluationProxyController->getEvaluationByKnowledgeIdService($knowledgeId); 18 19 20 if (isset($_SESSION["userId"])) 21 { 22 //给知识点增加一条学习记录: 23 $HCourseRecordProxyController = new HCourseKnowledgeRecordProxyController(); 24 25 $userId =$_SESSION["userId"]; 26 $KnowledgeModel = new KnowledgeModel($knowledgeId); 27 $courseId = $KnowledgeModel->courseId; 28 $HCourseRecordProxyController->insertRecordService($userId, $courseId, $knowledgeId); 29 } 30 31 32 //泥塑: 33 // if ($knowledgeId == 35) 34 // { 35 // $this->display("Home/Course/ns/ns00.php", $parameter); 36 // } 37 // elseif ($knowledgeId == 96 ) { 38 // //大足石刻: 39 // $this->display("Home/Course/dzsk/dzsk00.php", $parameter); 40 // } 41 // elseif ($knowledgeId == 156) { 42 // //皮影: 43 // $this->display("Home/Course/piying/piying00.php", $parameter); 44 // } 45 // else 46 // { 47 // $this->display("Home/detailsList.php", $parameter); 48 // } 49 // 50 51 52 //获取知识点中的 所有的 二级知识点.按照排序: 53 $KnowledgeModel = new KnowledgeModel($knowledgeId); 54 $courseId = $KnowledgeModel->courseId; 55 $where2["where"] = " courseId = $courseId order by orderBy asc , id asc "; 56 $data2 = $KnowledgeModel->getDataList($where2); 57 58 $HKnowledgeProxyController = new HKnowledgeProxyController(); 59 $list = $HKnowledgeProxyController->getTreeService($data2["rows"], 0, 0); 60 61 $listArr = array(); 62 $num = 1; 63 foreach ($list as $k => $model) 64 { 65 foreach ($model->child as $k2 => $model2) 66 { 67 $listArr[$num] = $model2->id; 68 $num++; 69 } 70 } 71 72 //当前知识点对应的key: 73 $now_key = array_search($knowledgeId, $listArr); 74 //总数: 75 $totalnum = count($listArr); 76 77 //上一个知识点id: 78 if ($now_key == 1) { 79 $beforeValue = $listArr[1]; 80 81 } else { 82 $beforeValue = $listArr[$now_key - 1]; 83 } 84 85 //下一个知识点id: 86 if ($now_key == $totalnum) { 87 $afterValue = $listArr[$totalnum]; 88 } else { 89 $afterValue = $listArr[$now_key + 1]; 90 } 91 92 93 // echo "<pre>"; 94 // var_dump($beforeValue); 95 // var_dump($afterValue); 96 // var_dump($listArr); 97 98 $parameter["beforeValue"] = $beforeValue; 99 $parameter["afterValue"] = $afterValue; 100 101 102 103 $this->display("Home/detailsList.php", $parameter); 104 105 106 107 108 109 110 111 112 113 114 //大足石刻 01 115 // $this->display("Home/Course/dzsk/dzsk00.php", $parameter); 116 // $this->display("Home/Course/dzsk/dzsk01.php", $parameter); 117 // $this->display("Home/Course/dzsk/dzsk02.php", $parameter); 118 // $this->display("Home/Course/dzsk/dzsk03.php", $parameter); 119 // $this->display("Home/Course/dzsk/dzsk04.php", $parameter); 120 121 }
载入的 detailList.php 页面:
1 <?php 2 3 //节奏: 4 $list = $parameter["list"]; 5 6 //知识点: 7 $KnowledgeModel = $parameter["KnowledgeModel"]; 8 9 //知识点评价: 10 $evaluation = $parameter["evaluation"]; 11 12 //课程: 13 $CourseModel = new CourseModel($KnowledgeModel->courseId); 14 15 //课程用户: 以user为主: 16 $UserModel = new UserModel($CourseModel->userId); 17 18 if ($UserModel->getDB) { 19 $userName = $UserModel->userName; 20 } 21 else 22 { 23 $AdminModel = new AdminModel($CourseModel->userId); 24 $userName = $AdminModel->adminName; 25 } 26 27 //上一个: 28 $beforeValue = $parameter["beforeValue"]; 29 30 //下一个: 31 $afterValue = $parameter["afterValue"]; 32 33 34 ?> 35 36 37 38 39 <!-- 评价 --> 40 <div class="evaluate" > 41 <span class="evaluateTitle" style="cursor:pointer;" onclick="shoucang(<?php echo $CourseModel->id; ?>)" >收藏 <span style="color:red;" class="glyphicon glyphicon-heart"></span></span> 42 <span class="evaluatePeople">(<?php echo $evaluation["peopleNum"]; ?>人评价)</span> 43 <span class="evaluateScore"><span><?php echo $evaluation["score"]; ?></span>.0</span> 44 <span class="evaluateStar" onclick="toEvaluation(<?php echo $KnowledgeModel->id; ?>)"> 45 46 <?php for ($i = 1; $i <= $evaluation["score"]; $i++): ?> 47 <span class="glyphicon glyphicon-star starColor"></span> 48 <?php endfor; ?> 49 50 <?php for ($i = 1; $i <= 5 - $evaluation["score"]; $i++): ?> 51 <span class="glyphicon glyphicon-star-empty"></span> 52 <?php endfor; ?> 53 </span> 54 <span class="evaluateTitle" >知识点评价</span> 55 56 <!-- 访问量: --> 57 <span class="numb">访问量: <?php echo $CourseModel->numb; ?> 人次</span> 58 </div> 59 60 61 62 63 <!-- 目录 --> 64 65 <?php if (!empty($list["rows"])): ?> 66 <div class="catalog" style="display: none;"> 67 <img src="<?php echo PROJECT . 'YYFramework/Public/images/ey/catalog.png'; ?>" > 68 69 <ul> 70 71 <?php foreach ($list["rows"] as $k => $v): ?> 72 <li><a href="#name<?php echo $v->id; ?>"><?php echo $v->title; ?></a></li> 73 <?php endforeach ?> 74 75 </ul> 76 </div> 77 78 <?php endif ?> 79 80 81 <!-- 节奏 --> 82 <div class="allDetails"> 83 84 <?php foreach ($list["rows"] as $k => $v): ?> 85 <div class="detail"> 86 <div class="detailTitle"><a id="name<?php echo $v->id; ?>"><?php echo $v->title; ?></a></div> 87 <div class="detailContent"> 88 89 90 <!-- 节奏的图文: --> 91 92 <?php 93 94 $DetailsWordsModel = new DetailsWordsModel(); 95 $where_1["where"] = " detailsId = " .$v->id. " order by orderBy asc ,id asc "; 96 $data_1 = $DetailsWordsModel->getDataList($where_1); 97 ?> 98 99 <?php foreach ($data_1["rows"] as $k1 => $v1): ?> 100 <?php echo $v1->imageText; ?> 101 <!-- <div class="defaultHr"></div> --> 102 <?php endforeach ?> 103 104 105 <!-- 节奏的 视频 --> 106 107 <?php 108 $DetailsVideosModel = new DetailsVideosModel(); 109 $where_2["where"] = " detailsId = " .$v->id. " order by orderBy asc ,id asc "; 110 $data_2 = $DetailsVideosModel->getDataList($where_2); 111 112 ?> 113 114 <?php foreach ($data_2["rows"] as $k2 => $v2): ?> 115 116 <?php if (substr($v2->video, stripos($v2->video, '.')+1) == 'swf'): ?> 117 <div class="videoDiv"> 118 <h4 style="float: left;"><?php echo $v2->title;?></h4> 119 <embed src="<?php echo UPLOAD_HTTP . $v2->video; ?>" > 120 </div> 121 <?php else: ?> 122 123 <div class="videoDiv"> 124 <h4 style="float: left;"><?php echo $v2->title;?></h4> 125 <video controls> 126 <source src="<?php echo UPLOAD_HTTP . $v2->video; ?>" type="video/mp4"> 127 </video> 128 </div> 129 130 <?php endif ?> 131 132 133 134 135 136 137 <!-- <div class="defaultHr"></div> --> 138 <?php endforeach ?> 139 140 141 <!-- 节奏的 H5 --> 142 <?php 143 $DetailsHModel = new DetailsHModel(); 144 $where_3["where"] = " detailsId = " .$v->id. " order by orderBy asc ,id asc "; 145 $data_3 = $DetailsHModel->getDataList($where_3); 146 147 ?> 148 149 <?php foreach ($data_3["rows"] as $k3 => $v3): ?> 150 151 <div class="iframeDiv"> 152 <iframe src="<?php echo $v3->url; ?>"></iframe> 153 </div> 154 155 156 <?php 157 $last = $data_3["total"] -1; 158 ?> 159 <?php if ($k3 < $last): ?> 160 <!-- <div class="defaultHr"></div> --> 161 <?php endif ?> 162 <?php endforeach ?> 163 164 165 166 </div> 167 </div> 168 <?php endforeach ?> 169 </div> 170 171 172 <div class="detailButton"> 173 <div class="detailButton_left"> 174 <div class="button2" onclick="changeChapter(<?php echo $beforeValue; ?>)">上一节</div> 175 </div> 176 <div class="detailButton_right"> 177 <div class="button2" onclick="changeChapter(<?php echo $afterValue; ?>)">下一节</div> 178 </div> 179 <div class="clearBoth"></div> 180 </div> 181 182 <div style="height:100px;"></div>
2 .点击 [上一节][下一节]触发的函数. changeChapter()
1 function changeChapter(knowledgeId) 2 { 3 4 5 //样式: 6 $("li[data-kid="+knowledgeId+"]").siblings("li[date-level='1']").addClass("hide"); 7 $("li[data-kid="+knowledgeId+"]").prevUntil("li[date-level='0']").removeClass("hide"); 8 $("li[data-kid="+knowledgeId+"]").nextUntil("li[date-level='0']").removeClass("hide"); 9 10 //触发点击事件: 11 $("li[data-kid="+knowledgeId+"]").click(); 12 }
3. 触发的 li 的点击事件. li的点击事件触发的函数.
1 function changeDetails(knowledgeId, node) 2 { 3 // console.log($(node).attr('date-level')); 4 5 //判断点击的是一级 还是二级. 6 // if ($(node).attr('date-level') == 0) { 7 // //显示当前节点 8 // if ($(node).find('.circleChose').hasClass('hide')) { 9 // $(node).find('.circleChose').removeClass('hide'); 10 // } 11 12 // //隐藏其他节点: 13 // $(node).siblings('li').each(function(index, el) { 14 // if (!$(this).find('.circleChose').hasClass('hide')) { 15 // $(this).find('.circleChose').addClass('hide'); 16 // } 17 // }); 18 // } else { 19 // //二级: 20 // $(node).prevUntil("li[date-level = 0]"); 21 // // console.log($(node).prevUntil("li[date-level = 0]")); 22 // //找到直到 data-level = 0 为止的所有选项. 23 // var tempList = $(node).prevUntil("li[date-level = 0]"); 24 25 // if (tempList.length == 0) { 26 // //当前是第一个子节点: 27 // //显示当前节点 28 // // console.log('222'); 29 // if ($(node).prev().find('.circleChose').hasClass('hide')) { 30 // $(node).prev().find('.circleChose').removeClass('hide'); 31 // } 32 33 // //隐藏其他节点: 34 // $(node).prev().siblings('li').each(function(index, el) { 35 // if (!$(this).find('.circleChose').hasClass('hide')) { 36 // $(this).find('.circleChose').addClass('hide'); 37 // } 38 // }); 39 // } else { 40 // // tempList.last().prev() 41 // //显示当前节点 42 // // console.log('333'); 43 // if (tempList.last().prev().find('.circleChose').hasClass('hide')) { 44 // tempList.last().prev().find('.circleChose').removeClass('hide'); 45 // } 46 47 // //隐藏其他节点: 48 // tempList.last().prev().siblings('li').each(function(index, el) { 49 // if (!$(this).find('.circleChose').hasClass('hide')) { 50 // $(this).find('.circleChose').addClass('hide'); 51 // } 52 // }); 53 54 // } 55 // } 56 57 // console.log('1111111111111111111111'); 58 if ($(node).attr('date-level') == 0) { 59 // console.log('22222222'); 60 $(node).siblings('li[date-level="0"]').nextUntil('li[date-level="0"]').addClass('hide'); 61 $(node).nextUntil('li[date-level="0"]').toggleClass('hide'); 62 }else{ 63 getDetails(knowledgeId); 64 } 65 66 67 68 }
点击的是 一级知识点, 不会获取知识点内容; 只有点击的是二级知识点 才会获取知识点内容.
1 function getDetails(knowledgeId) 2 { 3 $.ajax({ 4 url: 'action.php?c=HDetailsProxy&a=list', 5 type: 'POST', 6 dataType: 'html', 7 data: {'knowledgeId': knowledgeId}, 8 success: function(data){ 9 $(".leftDiv2").html(data); 10 11 12 } 13 }); 14 15 16 17 18 }
3 .右边 目录的 html结构:
图中红色部分是 一级知识点. daa-level = 0;
data-kid : 指的是 这个Knowledge的id.