Просмотр исходного кода

在圣典栏目显示已经完成的段落

visuddhinanda@gmail.com 3 лет назад
Родитель
Сommit
876d642a08

+ 18 - 5
app/Http/Controllers/ProgressChapterController.php

@@ -16,7 +16,15 @@ class ProgressChapterController extends Controller
     public function index(Request $request)
     {
         //
-        $selectCol = ['progress_chapters.book','progress_chapters.para','progress_chapters.channel_id','progress_chapters.title','pali_texts.toc','progress','progress_chapters.created_at','progress_chapters.updated_at'];
+        $selectCol = ['progress_chapters.book',
+                      'progress_chapters.para',
+                      'progress_chapters.channel_id',
+                      'progress_chapters.title',
+                      'pali_texts.toc',
+                      'progress',
+                      'progress_chapters.created_at',
+                      'progress_chapters.updated_at'
+                      ];
         $chapters=false;
         switch ($request->get('view')) {
 			case 'studio':
@@ -54,12 +62,17 @@ class ProgressChapterController extends Controller
                 $chapters = ProgressChapter::select($selectCol)
                                         ->where('progress','>',0.85)
                                         ->leftJoin('pali_texts', function($join)
-                                                {
-                                                    $join->on('progress_chapters.book', '=', 'pali_texts.book');
-                                                    $join->on('progress_chapters.para','=','pali_texts.paragraph');
-                                                })
+                                            {
+                                                $join->on('progress_chapters.book', '=', 'pali_texts.book');
+                                                $join->on('progress_chapters.para','=','pali_texts.paragraph');
+                                            })
                                         ->orderby('progress_chapters.created_at','desc')
+                                        ->skip(0)->take(20)
                                         ->get();
+                foreach ($chapters as $key => $value) {
+                    # code...
+                    $chapters[$key]['channel_info'] = Channel::where('uid',$value->channel_id)->select(['name','owner_uid'])->first();
+                }
                 break;
         }
         if($chapters){

+ 46 - 3
public/app/palicanon/index1.php

@@ -30,8 +30,12 @@ require_once '../public/function.php';
 <script src="../tree/jquery.fancytree.js" type="text/javascript"></script>
 
 <style>
+.chapter_list ul {
+    margin-left: 0;
+}
 .head_bar{
     display:flex;
+    max-width: 30vh;
 }
 .more_info{
     font-size:80%;
@@ -56,7 +60,7 @@ require_once '../public/function.php';
     height:90px;
 }
 .chapter_list .list {
-    width: 0;
+    display: none;
 }
 .chapter_list .show {
     display: block;
@@ -65,6 +69,10 @@ require_once '../public/function.php';
 .chapter_list .grid {
     width: 100%;
 }
+.chapter_list > div {
+    max-height: unset;
+    overflow-y: unset; 
+}
 </style>
 
 <div style="display:flex;">
@@ -130,6 +138,7 @@ require_once '../public/function.php';
                     <div id="list_shell_1" class="show book_view" level="1">
                         <ul id="list-1" class="grid" level="1" >
                         </ul>
+                        <button>More</button>
                     </div>
 
                     <div id="list_shell_2" level="2">
@@ -172,7 +181,38 @@ require_once '../public/function.php';
         </div>
     </div>
     <div style="flex:2;">
-    right pannal
+    <div class='bangdan'>
+        <div class='title'>最新</div>
+        <div class='list'>
+            <ul>
+                <li>zuixin-1</li>
+            </ul>
+        </div>
+    </div>
+    <div class='bangdan'>
+        <div class='title'>新手区</div>
+        <div class='list'>
+            <ul>
+                <li>zuixin-1</li>
+            </ul>
+        </div>
+    </div>
+    <div class='bangdan'>
+        <div class='title'>周推荐</div>
+        <div class='list'>
+            <ul>
+                <li>zuixin-1</li>
+            </ul>
+        </div>
+    </div>
+    <div class='bangdan'>
+        <div class='title'>白金作者</div>
+        <div class='list'>
+            <ul>
+                <li>zuixin-1</li>
+            </ul>
+        </div>
+    </div>
     </div>
 </div>
 
@@ -193,10 +233,13 @@ require_once '../public/function.php';
                 $_view = "category";
             }
             switch ($_view) {
+                case 'community':
+                    echo "community_onload();";
+                    break;
                 case 'category':
                     echo "palicanon_onload();";
                     break;
-                
+                case 'my';
                 default:
                     # code...
                     break;

+ 125 - 19
public/app/palicanon/palicanon.js

@@ -8,6 +8,96 @@ var gBreadCrumbs=['','','','','','','','',''];
 
 palicanon_load_term();
 
+function community_onload() {
+	$("span[tag]").click(function () {
+		$(this).siblings().removeClass("select");
+		$(this).addClass("select");
+		main_tag = $(this).attr("tag");
+		list_tag = new Array();
+		tag_changed();
+		render_tag_list();
+	});
+
+	$("#tag_input").keypress(function () {
+		tag_render_others();
+	});
+    render_main_tag();
+
+    	$.getJSON(
+		"/api/v2/progress?view=done",
+		{
+			tag: '',
+			lang: '',
+            page: 0
+		},
+		function (data, status) {
+			let arrChapterData = data.data.rows;
+			let arrChapterList = new Array();
+			let html = "";
+			allTags = new Array();
+			let arrChapter = new Array();
+			for (const iterator of arrChapterData) {
+                arrChapterList.push({
+                    book:iterator.book,
+                    para:iterator.para,
+                    level:2,
+                    title:iterator.toc,
+                    progress:{lang:'en',all_trans:iterator.progress},
+                    tag:'',
+                    trans_title:iterator.title,
+                    channel_id:iterator.channel_id,
+                    type:'article',
+                    channel_info:iterator.channel_info
+                });
+            }
+			for (const iterator of arrChapterList) {
+                
+				let tag0 = "";
+				let tags = iterator.tag.split("::");
+				let currTag = new Array();
+				currTag[main_tag] = 1;
+				for (const scondTag of list_tag) {
+					currTag[scondTag] = 1;
+				}
+				for (let tag of tags) {
+					if (tag.slice(0, 1) == ":") {
+						tag = tag.slice(1);
+					}
+					if (tag.slice(-1) == ":") {
+						tag = tag.slice(0, -1);
+					}
+					if (currTagLevel0.hasOwnProperty(tag)) {
+						tag0 = tag;
+					}
+					if (!currTag.hasOwnProperty(tag)) {
+						if (allTags.hasOwnProperty(tag)) {
+							allTags[tag] += 1;
+						} else {
+							allTags[tag] = 1;
+						}
+					}
+				}
+
+                arrChapter.push(iterator);
+
+			}
+
+			let newTags = new Array();
+			for (const oneTag in allTags) {
+				if (allTags[oneTag] < arrBookList.length) {
+					newTags[oneTag] = allTags[oneTag];
+				}
+			}
+			allTags = newTags;
+			allTags.sort(sortNumber);
+			tag_render_others();
+			palicanon_chapter_list_apply(0);
+			$("#list-1").html(render_chapter_list(arrChapter));
+            
+		}
+	);
+}
+
 function palicanon_onload() {
 	$("span[tag]").click(function () {
 		$(this).siblings().removeClass("select");
@@ -303,6 +393,7 @@ function palicanon_chapter_list_apply(div_index) {
 	}
 */
 	html += "</ul>";
+	html += "<button>More</button>";
 
 	$("#list_shell_" + (iDiv + 1)).html(html);
 	$("#list_shell_" + (iDiv + 1)).removeClass();
@@ -327,14 +418,21 @@ function palicanon_chapter_list_apply(div_index) {
 function chapter_onclick(obj) {
 	let book = $(obj).attr("book");
 	let para = $(obj).attr("para");
+	let channel = $(obj).attr("channel");
+	let type = $(obj).attr("type");
 	let level =  parseInt($(obj).parent().attr("level"));
     let title1 = $(obj).find(".title_1").first().text();
-    gBreadCrumbs[level] = {title1:title1,book:book,para:para,level:level};
-    RenderBreadCrumbs();
-	$(obj).siblings().removeClass("selected");
-	$(obj).addClass("selected");
-	$("#tag_list").slideUp();
-	palicanon_load_chapter(book, para, level);
+    if(type=='article'){
+        window.open("../article/index.php?view=chapter&book="+book+"&par="+para+"&channel="+channel,);
+    }else{
+        gBreadCrumbs[level] = {title1:title1,book:book,para:para,level:level};
+        RenderBreadCrumbs();
+        $(obj).siblings().removeClass("selected");
+        $(obj).addClass("selected");
+        $("#tag_list").slideUp();
+        palicanon_load_chapter(book, para, level);
+    }
+
 }
 
 function palicanon_render_chapter_row(chapter) {
@@ -343,24 +441,26 @@ function palicanon_render_chapter_row(chapter) {
 	if (chapter.level == 1) {
 		//levelClass = " level_1";
 	}
-	html +=
-		'<li class="' +
-		levelClass +
-		'" book="' +
-		chapter.book +
-		'" para="' +
-		chapter.para +
-		'" onclick="chapter_onclick(this)">';
+	html +='<li class="' + 	levelClass +'" book="' + chapter.book + '" para="' + chapter.para + '"';
+    if(typeof chapter.type !== "undefined" && chapter.type==='article'){
+        html += ' channel="' + chapter.channel_id + '" type="' + chapter.type + '"';
+    }
+    html += ' onclick="chapter_onclick(this)">';
     
 	html += '<div class="head_bar">';
 
     html += '<span class="" style="margin-right: 1em;padding: 4px 0;">';
     html += "<svg class='icon' style='fill: var(--box-bg-color1)'>";
-    if (chapter.level == 1) {
-	    html += "<use xlink:href='../../node_modules/bootstrap-icons/bootstrap-icons.svg#journal'>";
+    if(typeof chapter.type !== "undefined" && chapter.type==='article'){
+        html += "<use xlink:href='../../node_modules/bootstrap-icons/bootstrap-icons.svg#journal-text'>";
     }else{
-        html += "<use xlink:href='../../node_modules/bootstrap-icons/bootstrap-icons.svg#folder2-open'>";
+        if (chapter.level == 1) {
+            html += "<use xlink:href='../../node_modules/bootstrap-icons/bootstrap-icons.svg#journal'>";
+        }else{
+            html += "<use xlink:href='../../node_modules/bootstrap-icons/bootstrap-icons.svg#folder2-open'>";
+        }
     }
+
 	html += "</svg>" ;
 	html += "</span>";   
 
@@ -419,7 +519,8 @@ function palicanon_render_chapter_row(chapter) {
 
     html += "<span class='item'>";
     html += "<svg class='small_icon' style='fill: var(--box-bg-color1)'>";
-	html += "<use xlink:href='../../node_modules/bootstrap-icons/bootstrap-icons.svg#journals'>";
+    html += "<use xlink:href='../../node_modules/bootstrap-icons/bootstrap-icons.svg#journals'>";
+	
 	html += "</svg>" ;
     html += "Saratadipani";
     html += "</span>"
@@ -440,7 +541,12 @@ function palicanon_render_chapter_row(chapter) {
     html += "<svg class='small_icon' style='fill: var(--box-bg-color1)'>";
 	html += "<use xlink:href='../../node_modules/bootstrap-icons/bootstrap-icons.svg#person'>";
 	html += "</svg>" ;
-    html += "简体中文(3)";
+    if(typeof chapter.type !== "undefined" && chapter.type==='article'){
+        html += chapter.channel_info.name;
+    }else{
+        html += "简体中文(3)";
+    }
+    
     html += "</span>";