Browse Source

Merge pull request #146 from visuddhinanda/master

多语言维护,界面优化
Bhikkhu-Kosalla 5 years ago
parent
commit
ceab7f8212

+ 1 - 1
app/article/add_to_collect_dlg.js

@@ -2,7 +2,7 @@ function add_to_collect_dlg_init() {
   $("[vui='collect-dlg']").each(function () {
   $("[vui='collect-dlg']").each(function () {
     $(this).css("position", "relative");
     $(this).css("position", "relative");
     $(this).html(
     $(this).html(
-      "<span class='button_add_to_collect'>添加到文集</span><div class='float_dlg'></div>"
+      "<button class='button_add_to_collect icon_btn' title='" + gLocal.gui.add_to + gLocal.gui.anthology + "'><svg class='icon'><use xlink:href='../studio/svg/icon.svg#add_to_anthology'></use></svg></button><div class='float_dlg'></div>"
     );
     );
   });
   });
 
 

+ 6 - 6
app/article/collect_add_dlg.js

@@ -4,7 +4,7 @@ function collect_add_dlg_init(div) {
   let html = "";
   let html = "";
   html += "<div id='collect_add_dlg'>";
   html += "<div id='collect_add_dlg'>";
   html += "<div >";
   html += "<div >";
-  html += "<div >Collect Title</div>";
+  html += "<div >" + gLocal.gui.anthology + gLocal.gui.title + "</div>";
   html += "<input type='input' id='collect_add_title' />";
   html += "<input type='input' id='collect_add_title' />";
   html += "</div>";
   html += "</div>";
   html += "<div>";
   html += "<div>";
@@ -13,15 +13,15 @@ function collect_add_dlg_init(div) {
     "<div style='display:flex;justify-content: space-between;padding-top: 1em;'>";
     "<div style='display:flex;justify-content: space-between;padding-top: 1em;'>";
   html += "<div>";
   html += "<div>";
   html += "<select id='collect_add_dlg_status'>";
   html += "<select id='collect_add_dlg_status'>";
-  html += "<option value='1'>私有</option>";
-  html += "<option value='2'>不公开列出</option>";
-  html += "<option value='3'>公开</option>";
+  html += "<option value='1'>" + gLocal.gui.private + "</option>";
+  html += "<option value='2'>" + gLocal.gui.unlisted + "</option>";
+  html += "<option value='3'>" + gLocal.gui.public + "</option>";
   html += "</select>";
   html += "</select>";
 
 
   html += "</div>";
   html += "</div>";
   html += "<div>";
   html += "<div>";
-  html += "<button onclick='collect_add_cancel()'>Cancel</button>";
-  html += "<button onclick='collect_add_new()'>New</button>";
+  html += "<button onclick='collect_add_cancel()'>" + gLocal.gui.cancel + "</button>";
+  html += "<button onclick='collect_add_new()'>" + gLocal.gui.new + "</button>";
   html += "</div>";
   html += "</div>";
   html += "</div>";
   html += "</div>";
   html += "</div>";
   html += "</div>";

+ 1 - 1
app/article/index.php

@@ -313,7 +313,7 @@ term_word_link_fun("wiki_goto_word");
 		<span>
 		<span>
 		<?php
 		<?php
 		echo "<button class='icon_btn'><a href='../article/my_article_edit.php?id=".$_GET["id"];
 		echo "<button class='icon_btn'><a href='../article/my_article_edit.php?id=".$_GET["id"];
-		echo "'>Open in Studio</a></button>";
+		echo "'>{$_local->gui->edit_now}</a></button>";
 		echo "<button class='icon_btn'><a href='../article/?id=".$_GET["id"];
 		echo "<button class='icon_btn'><a href='../article/?id=".$_GET["id"];
 		echo "&display=para";
 		echo "&display=para";
 		echo "'>{$_local->gui->each_paragraph}</a></button>";
 		echo "'>{$_local->gui->each_paragraph}</a></button>";

+ 18 - 14
app/article/my_article.js

@@ -26,15 +26,15 @@ function my_article_list() {
               "<div style='flex:2;'>" +
               "<div style='flex:2;'>" +
               render_status(iterator.status) +
               render_status(iterator.status) +
               "</div>";
               "</div>";
-            html += "<div style='flex:1;'>Copy Link</div>";
+            html += "<div style='flex:1;'>" + gLocal.gui.copy_link + "</div>";
             html +=
             html +=
               "<div style='flex:1;'><a href='../article/my_article_edit.php?id=" +
               "<div style='flex:1;'><a href='../article/my_article_edit.php?id=" +
               iterator.id +
               iterator.id +
-              "'>Edit</a></div>";
+              "'>" + gLocal.gui.edit + "</a></div>";
             html +=
             html +=
               "<div style='flex:1;'><a href='../article/?id=" +
               "<div style='flex:1;'><a href='../article/?id=" +
               iterator.id +
               iterator.id +
-              "' target='_blank'>Preview</a></div>";
+              "' target='_blank'>" + gLocal.gui.preview + "</a></div>";
             html += "<div style='flex:1;'>15</div>";
             html += "<div style='flex:1;'>15</div>";
             html += "</div>";
             html += "</div>";
           }
           }
@@ -49,15 +49,16 @@ function my_article_list() {
   );
   );
 }
 }
 
 
+
 function render_status(status) {
 function render_status(status) {
   status = parseInt(status);
   status = parseInt(status);
   let html = "";
   let html = "";
   let objStatus = [
   let objStatus = [
-    { id: 1, name: "私有", tip: "仅自己可见" },
-    { id: 2, name: "不公开列出", tip: "不能被搜索到,只能通过链接访问" },
-    { id: 3, name: "公开", tip: "所有人均可看到" },
+    { id: 1, name: "<svg class='icon'><use xlink:href='../studio/svg/icon.svg#ic_lock'></use></svg>" + gLocal.gui.private, tip: gLocal.gui.private_note },
+    { id: 2, name: "<svg class='icon'><use xlink:href='../studio/svg/icon.svg#eye_disable'></use></svg>" + gLocal.gui.unlisted, tip: gLocal.gui.unlisted_note },
+    { id: 3, name: "<svg class='icon'><use xlink:href='../studio/svg/icon.svg#eye_enable'></use></svg>" + gLocal.gui.public, tip: gLocal.gui.public_note },
   ];
   ];
-  html += '<div class="case_dropdown">';
+  html += "<span style='flex:3;margin:auto;'>" + gLocal.gui.privacy + '</span><div class="case_dropdown"  style="flex:7;">';
   html += '<input type="hidden" name="status"  value ="' + status + '" />';
   html += '<input type="hidden" name="status"  value ="' + status + '" />';
 
 
   for (const iterator of objStatus) {
   for (const iterator of objStatus) {
@@ -65,7 +66,7 @@ function render_status(status) {
       html += "<div >" + iterator.name + "</div>";
       html += "<div >" + iterator.name + "</div>";
     }
     }
   }
   }
-  html += '<div class="case_dropdown-content">';
+  html += '<div id="privacy_list" class="case_dropdown-content" style="background-color: var(--detail-color); color: var(--btn-color);">';
 
 
   for (const iterator of objStatus) {
   for (const iterator of objStatus) {
     let active = "";
     let active = "";
@@ -110,12 +111,15 @@ function my_article_edit(id) {
             result.status +
             result.status +
             "'/>";
             "'/>";
 
 
-          html += "<button onclick='article_preview()'>Preview</button>";
-          html += "<input type='checkbox' name='import' />Import Data";
+          html += "<input type='checkbox' name='import' />" + gLocal.gui.import + gLocal.gui.text;
           html += "<div>";
           html += "<div>";
-          html += "<div id='channal_selector' form_name='channal'></div>";
+          html += "<div style='display:flex;'>";
+          html += "<span style='flex:3;margin:auto;'>" + gLocal.gui.title + "</span>"
+          html += '<span id="article_title" style="flex:7;"></span></div>';
+          html += "<div id='channal_selector' form_name='channal' style='display:flex;'></div>";
+          html += "<div id='aritcle_status' style='display: flex; width: 100 %;'></div>";
           html +=
           html +=
-            '<div>	<input id="article_lang_select" type="input" onchange="article_lang_change()"  title="type language name/code" code="' +
+            '<div style="display:flex;width:100%;" ><span style="flex:3;margin: auto;">' + gLocal.gui.language_select + '</span>	<input id="article_lang_select"  style="flex:7;" type="input" onchange="article_lang_change()"  placeholder="' + gLocal.gui.input + " & " + gLocal.gui.language_select + ',' + gLocal.gui.example + ':Engilish" code="' +
             result.lang +
             result.lang +
             '" value="' +
             '" value="' +
             result.lang +
             result.lang +
@@ -180,7 +184,7 @@ function my_article_save() {
       console.log(result); //打印服务端返回的数据(调试用)
       console.log(result); //打印服务端返回的数据(调试用)
 
 
       if (result.status == 0) {
       if (result.status == 0) {
-        alert("保存成功");
+        alert(gLocal.gui.saved + gLocal.gui.successful);
       } else {
       } else {
         alert("error:" + result.message);
         alert("error:" + result.message);
       }
       }
@@ -216,7 +220,7 @@ function course_validate_required(field, alerttxt) {
 
 
 function course_validate_form(thisform) {
 function course_validate_form(thisform) {
   with (thisform) {
   with (thisform) {
-    if (course_validate_required(title, "Title must be filled out!") == false) {
+    if (course_validate_required(title, gLocal.gui.title_necessary + "!") == false) {
       title.focus();
       title.focus();
       return false;
       return false;
     }
     }

+ 24 - 9
app/article/my_article_edit.php

@@ -60,18 +60,34 @@ require_once '../studio/index_head.php';
 	<div class="index_inner " >
 	<div class="index_inner " >
 	<form id="article_edit" action="##" onsubmit="return false"  method="POST" >
 	<form id="article_edit" action="##" onsubmit="return false"  method="POST" >
 	<div class="file_list_block">
 	<div class="file_list_block">
-		<div class="tool_bar">
+		<div class="tool_bar" style="width:50%;">
 			<div style="display:flex;">
 			<div style="display:flex;">
-				<a href="../article/my_article_index.php">返回</a>
-				<span id="article_title"></span>
+				<button class="icon_btn" title=<?php echo $_local->gui->back ;?>>
+					<a href="../article/my_article_index.php" >
+					<svg class="icon">
+						<use xlink:href="../studio/svg/icon.svg#return"></use>
+					</svg>
+				</a></button>
+				<button onclick='article_preview()'  class="icon_btn" title=<?php echo $_local->gui->preview ;?>>
+					<svg class="icon">
+						<use xlink:href="../studio/svg/icon.svg#preview"></use>
+					</svg>
+				</button>
 				<div id="article_collect" vui='collect-dlg' ></div>
 				<div id="article_collect" vui='collect-dlg' ></div>
 			</div>
 			</div>
 			<div style="display:flex;">
 			<div style="display:flex;">
-				<div><a href="../article/index.php?id=<?php echo $_GET["id"];?>" target="_blank">Open in Library</a></div>
-				<div id="aritcle_status"></div>
-				<span class="icon_btn_div">
+				<div>
+					<button class="icon_btn" title=<?php echo $_local->gui->scan_in_reader ;?>>
+						<a href="../article/index.php?id=<?php echo $_GET["id"];?>" target="_blank">
+							<svg class="icon">
+								<use xlink:href="../studio/svg/icon.svg#library"></use>
+							</svg>
+						</a>
+					</button>
+				</div>
+					<span class="icon_btn_div">
 					<span class="icon_btn_tip"></span>
 					<span class="icon_btn_tip"></span>
-					<button id="edit_save" type="button" class="icon_btn" title=" " onclick="my_article_save()">
+					<button id="edit_save" type="button" class="icon_btn" title=<?php echo $_local->gui->save ;?> onclick="my_article_save()">
 						<svg class="icon">
 						<svg class="icon">
 							<use xlink:href="../studio/svg/icon.svg#ic_save"></use>
 							<use xlink:href="../studio/svg/icon.svg#ic_save"></use>
 						</svg>
 						</svg>
@@ -79,7 +95,7 @@ require_once '../studio/index_head.php';
 				</span>
 				</span>
 				
 				
 				<span class="icon_btn_div">				
 				<span class="icon_btn_div">				
-					<span class="icon_btn_tip">回收站</span>
+					<span class="icon_btn_tip"><?php echo $_local->gui->recycle_bin ;?></span>
 					<button id="to_recycle" type="button" class="icon_btn" onclick="article_del()" title=" ">
 					<button id="to_recycle" type="button" class="icon_btn" onclick="article_del()" title=" ">
 						<svg class="icon">
 						<svg class="icon">
 							<use xlink:href="../studio/svg/icon.svg#ic_delete"></use>
 							<use xlink:href="../studio/svg/icon.svg#ic_delete"></use>
@@ -88,7 +104,6 @@ require_once '../studio/index_head.php';
 				</span>	
 				</span>	
 			</div>
 			</div>
 		</div>
 		</div>
-
 		<div id="article_list"  class="file_list_block" style="">
 		<div id="article_list"  class="file_list_block" style="">
 
 
 		</div>
 		</div>

+ 2 - 2
app/article/my_article_index.php

@@ -38,7 +38,7 @@ require_once '../studio/index_head.php';
 	<div class="index_inner " style="margin-left: 18em;margin-top: 5em;">
 	<div class="index_inner " style="margin-left: 18em;margin-top: 5em;">
 		<div class="file_list_block">
 		<div class="file_list_block">
 			<div class="tool_bar">
 			<div class="tool_bar">
-				<div>作品列表</div>
+				<div><?php echo $_local->gui->text.$_local->gui->list ?></div>
 				<div>
 				<div>
 					<span class="icon_btn_div">
 					<span class="icon_btn_div">
 						<span class="icon_btn_tip"></span>
 						<span class="icon_btn_tip"></span>
@@ -51,7 +51,7 @@ require_once '../studio/index_head.php';
 					</span>
 					</span>
 					
 					
 					<span class="icon_btn_div">				
 					<span class="icon_btn_div">				
-						<span class="icon_btn_tip">回收站</span>
+						<span class="icon_btn_tip"><?php echo $_local->gui->recycle_bin ;?></span>
 						<button id="to_recycle" type="button" class="icon_btn" onclick="file_del()" title=" ">
 						<button id="to_recycle" type="button" class="icon_btn" onclick="file_del()" title=" ">
 							<svg class="icon">
 							<svg class="icon">
 								<use xlink:href="../studio/svg/icon.svg#ic_delete"></use>
 								<use xlink:href="../studio/svg/icon.svg#ic_delete"></use>

+ 1 - 1
app/channal/channal.js

@@ -50,7 +50,7 @@ function my_channal_list() {
             html +=
             html +=
               "<div style='flex:1;'><a href='../channal/my_channal_edit.php?id=" +
               "<div style='flex:1;'><a href='../channal/my_channal_edit.php?id=" +
               iterator.id +
               iterator.id +
-              "'>Edit</a></div>";
+              "'>" + gLocal.gui.edit + "</a></div>";
             html += "<div style='flex:1;'>15</div>";
             html += "<div style='flex:1;'>15</div>";
             html += "</div>";
             html += "</div>";
           }
           }

+ 1 - 1
app/channal/channal_select.js

@@ -2,7 +2,7 @@ function channal_select_init(div_id) {
   $.get("../channal/get.php", {}, function (data) {
   $.get("../channal/get.php", {}, function (data) {
     let channal = JSON.parse(data);
     let channal = JSON.parse(data);
     let name = $("#" + div_id).attr("form_name");
     let name = $("#" + div_id).attr("form_name");
-    let html = "Channal:<select name='" + name + "'>";
+    let html = "<span style='flex:3;margin:auto;'>" + gLocal.gui.channels + "</span><select style='flex:7;' name='" + name + "'>";
     for (const iterator of channal) {
     for (const iterator of channal) {
       html +=
       html +=
         "<option value='" + iterator.id + "'>" + iterator.name + "</option>";
         "<option value='" + iterator.id + "'>" + iterator.name + "</option>";

+ 3 - 3
app/channal/my_channal_edit.php

@@ -57,13 +57,13 @@ require_once '../studio/index_head.php';
 	<div class="file_list_block">
 	<div class="file_list_block">
 		<div class="tool_bar">
 		<div class="tool_bar">
 			<div style="display:flex;">
 			<div style="display:flex;">
-				<a href="../channal/my_channal_index.php">返回</a>
+				<a href="../channal/my_channal_index.php"><?php echo $_local->gui->back;?></a>
 				<span id="channal_title"></span>
 				<span id="channal_title"></span>
 			</div>
 			</div>
 			<div style="display:flex;">
 			<div style="display:flex;">
 				<div id="aritcle_status"></div>
 				<div id="aritcle_status"></div>
 				<span class="icon_btn_div">
 				<span class="icon_btn_div">
-					<span class="icon_btn_tip">保存</span>
+					<span class="icon_btn_tip"><?php echo $_local->gui->save;?></span>
 					<button id="edit_save" type="button" class="icon_btn" title=" " onclick="my_channal_save()">
 					<button id="edit_save" type="button" class="icon_btn" title=" " onclick="my_channal_save()">
 						<svg class="icon">
 						<svg class="icon">
 							<use xlink:href="../studio/svg/icon.svg#ic_save"></use>
 							<use xlink:href="../studio/svg/icon.svg#ic_save"></use>
@@ -72,7 +72,7 @@ require_once '../studio/index_head.php';
 				</span>
 				</span>
 				
 				
 				<span class="icon_btn_div">				
 				<span class="icon_btn_div">				
-					<span class="icon_btn_tip">回收站</span>
+					<span class="icon_btn_tip"><?php echo $_local->gui->recycle_bin;?></span>
 					<button id="to_recycle" type="button" class="icon_btn" onclick="channal_del()" title=" ">
 					<button id="to_recycle" type="button" class="icon_btn" onclick="channal_del()" title=" ">
 						<svg class="icon">
 						<svg class="icon">
 							<use xlink:href="../studio/svg/icon.svg#ic_delete"></use>
 							<use xlink:href="../studio/svg/icon.svg#ic_delete"></use>

+ 13 - 2
app/public/lang/default.json

@@ -135,7 +135,7 @@
 		"home": "Home",
 		"home": "Home",
 		"hori_ref_time": "horizontal refraction correct ",
 		"hori_ref_time": "horizontal refraction correct ",
 		"html_text_data": "HTML Text Data",
 		"html_text_data": "HTML Text Data",
-		"import": "Import",
+		"import": "Import ",
 		"import_csv": "Import CSV",
 		"import_csv": "Import CSV",
 		"import_export": "Import/Export",
 		"import_export": "Import/Export",
 		"import_the_flie_from_cscd": "Import the flie From Cattha Sangayana data base",
 		"import_the_flie_from_cscd": "Import the flie From Cattha Sangayana data base",
@@ -518,12 +518,23 @@
 		"copied_to_clipboard": "has been copied to clipboard.",
 		"copied_to_clipboard": "has been copied to clipboard.",
 		"I_know": "Got it!",
 		"I_know": "Got it!",
 		"text": "DIY text",
 		"text": "DIY text",
-		"anthology": "anthology",
+		"anthology": "anthology ",
 		"channel": "channel & style",
 		"channel": "channel & style",
 		"channels": "channels list",
 		"channels": "channels list",
 		"like": "like",
 		"like": "like",
 		"blank": "blank",
 		"blank": "blank",
 		"vocabulary_list": "words list",
 		"vocabulary_list": "words list",
+		"private": "private",
+		"private_note": "No URL for others,Unshown in Subscriber feed, search & related",
+		"unlisted": "unlisted",
+		"unlisted_note": "Can share URL,Unshown in Subscriber feed, search & related",
+		"public": "public",
+		"public_note": "Can share URL,Shows in Subscriber feed, search & related",
+		"copy_link": "copy the Link",
+		"saved": "saved ",
+		"title_necessary": "title is necessary",
+		"example": "for example ",
+		"privacy": "privacy",
 		"": ""
 		"": ""
 	},
 	},
 	"grammastr": [
 	"grammastr": [

+ 13 - 2
app/public/lang/en.json

@@ -135,7 +135,7 @@
 		"home": "Home",
 		"home": "Home",
 		"hori_ref_time": "horizontal refraction correct ",
 		"hori_ref_time": "horizontal refraction correct ",
 		"html_text_data": "HTML Text Data",
 		"html_text_data": "HTML Text Data",
-		"import": "Import",
+		"import": "Import ",
 		"import_csv": "Import CSV",
 		"import_csv": "Import CSV",
 		"import_export": "Import/Export",
 		"import_export": "Import/Export",
 		"import_the_flie_from_cscd": "Import the flie From Cattha Sangayana data base",
 		"import_the_flie_from_cscd": "Import the flie From Cattha Sangayana data base",
@@ -517,12 +517,23 @@
 		"copied_to_clipboard": "has been copied to clipboard.",
 		"copied_to_clipboard": "has been copied to clipboard.",
 		"I_know": "Got it!",
 		"I_know": "Got it!",
 		"text": "DIY text",
 		"text": "DIY text",
-		"anthology": "anthology",
+		"anthology": "anthology ",
 		"channel": "channel & style",
 		"channel": "channel & style",
 		"channels": "channels list",
 		"channels": "channels list",
 		"like": "like",
 		"like": "like",
 		"blank": "blank",
 		"blank": "blank",
 		"vocabulary_list": "words list",
 		"vocabulary_list": "words list",
+		"private": "private",
+		"private_note": "No URL for others,Unshown in Subscriber feed, search & related",
+		"unlisted": "unlisted",
+		"unlisted_note": "Can share URL,Unshown in Subscriber feed, search & related",
+		"public": "public",
+		"public_note": "Can share URL,Shows in Subscriber feed, search & related",
+		"copy_link": "copy the Link",
+		"saved": "saved ",
+		"title_necessary": "title is necessary",
+		"example": "for example ",
+		"privacy": "privacy",
 		"": ""
 		"": ""
 	},
 	},
 	"grammastr": [
 	"grammastr": [

+ 13 - 2
app/public/lang/my.json

@@ -135,7 +135,7 @@
 		"home": "Home",
 		"home": "Home",
 		"hori_ref_time": "horizontal refraction correct ",
 		"hori_ref_time": "horizontal refraction correct ",
 		"html_text_data": "HTML Text Data",
 		"html_text_data": "HTML Text Data",
-		"import": "Import",
+		"import": "Import ",
 		"import_csv": "Import CSV",
 		"import_csv": "Import CSV",
 		"import_export": "Import/Export",
 		"import_export": "Import/Export",
 		"import_the_flie_from_cscd": "Import the flie From Cattha Sangayana data base",
 		"import_the_flie_from_cscd": "Import the flie From Cattha Sangayana data base",
@@ -517,12 +517,23 @@
 		"copied_to_clipboard": "has been copied to clipboard.",
 		"copied_to_clipboard": "has been copied to clipboard.",
 		"I_know": "Got it!",
 		"I_know": "Got it!",
 		"text": "DIY text",
 		"text": "DIY text",
-		"anthology": "anthology",
+		"anthology": "anthology ",
 		"channel": "channel & style",
 		"channel": "channel & style",
 		"channels": "channels list",
 		"channels": "channels list",
 		"like": "like",
 		"like": "like",
 		"blank": "blank",
 		"blank": "blank",
 		"vocabulary_list": "words list",
 		"vocabulary_list": "words list",
+		"private": "private",
+		"private_note": "No URL for others,Unshown in Subscriber feed, search & related",
+		"unlisted": "unlisted",
+		"unlisted_note": "Can share URL,Unshown in Subscriber feed, search & related",
+		"public": "public",
+		"public_note": "Can share URL,Shows in Subscriber feed, search & related",
+		"copy_link": "copy the Link",
+		"saved": "saved ",
+		"title_necessary": "title is necessary",
+		"example": "for example ",
+		"privacy": "privacy",
 		"": "",
 		"": "",
 		"": ""
 		"": ""
 	},
 	},

+ 13 - 2
app/public/lang/si.json

@@ -136,7 +136,7 @@
 		"home": "නිවස",
 		"home": "නිවස",
 		"hori_ref_time": "horizontal refraction correct ",
 		"hori_ref_time": "horizontal refraction correct ",
 		"html_text_data": "HTML සටහන් දත්ත",
 		"html_text_data": "HTML සටහන් දත්ත",
-		"import": "ආනයන",
+		"import": "ආනයන ",
 		"import_csv": "ආනයන csv",
 		"import_csv": "ආනයන csv",
 		"import_export": "ආනයන /අපනයන ",
 		"import_export": "ආනයන /අපනයන ",
 		"import_the_flie_from_cscd": "Import the flie From Cattha Sangayana data base",
 		"import_the_flie_from_cscd": "Import the flie From Cattha Sangayana data base",
@@ -522,12 +522,23 @@
 		"copied_to_clipboard": "has been copied to clipboard.",
 		"copied_to_clipboard": "has been copied to clipboard.",
 		"I_know": "Got it!",
 		"I_know": "Got it!",
 		"text": "DIY text",
 		"text": "DIY text",
-		"anthology": "anthology",
+		"anthology": "anthology ",
 		"channel": "channel & style",
 		"channel": "channel & style",
 		"channels": "channels list",
 		"channels": "channels list",
 		"like": "like",
 		"like": "like",
 		"blank": "blank",
 		"blank": "blank",
 		"vocabulary_list": "words list",
 		"vocabulary_list": "words list",
+		"private": "private",
+		"private_note": "No URL for others,Unshown in Subscriber feed, search & related",
+		"unlisted": "unlisted",
+		"unlisted_note": "Can share URL,Unshown in Subscriber feed, search & related",
+		"public": "public",
+		"public_note": "Can share URL,Shows in Subscriber feed, search & related",
+		"copy_link": "copy the Link",
+		"saved": "saved ",
+		"title_necessary": "title is necessary",
+		"example": "for example ",
+		"privacy": "privacy",
 		"": "",
 		"": "",
 		"": ""
 		"": ""
 	},
 	},

+ 12 - 2
app/public/lang/zh-cn.json

@@ -519,13 +519,23 @@
 		"copied_to_clipboard": "已复制到剪切板",
 		"copied_to_clipboard": "已复制到剪切板",
 		"I_know": "我知道了",
 		"I_know": "我知道了",
 		"text": "著作文章",
 		"text": "著作文章",
-		"anthology": "收藏文集",
+		"anthology": "文集",
 		"channel": "版风管理",
 		"channel": "版风管理",
 		"channels": "版风列表",
 		"channels": "版风列表",
 		"like": "赞",
 		"like": "赞",
 		"blank": "空白",
 		"blank": "空白",
 		"vocabulary_list": "词汇列表",
 		"vocabulary_list": "词汇列表",
-		"": "",
+		"private": "私享",
+		"private_note": "仅自己可见,不推订阅,不可搜索",
+		"unlisted": "不公开列出",
+		"unlisted_note": "可通过链接访问,不推订阅,不可搜索",
+		"public": "公开",
+		"public_note": "可通过链接访问,推订阅,可搜索",
+		"copy_link": "复制链接",
+		"saved": "已保存",
+		"title_necessary": "必须填写标题",
+		"example": "例如",
+		"privacy": "隐私设置",
 		"": "",
 		"": "",
 		"": ""
 		"": ""
 	},
 	},

+ 12 - 1
app/public/lang/zh-tw.json

@@ -519,12 +519,23 @@
 		"copied_to_clipboard": "已複製到剪下板",
 		"copied_to_clipboard": "已複製到剪下板",
 		"I_know": "我知道了",
 		"I_know": "我知道了",
 		"text": "著作文章",
 		"text": "著作文章",
-		"anthology": "收藏文集",
+		"anthology": "文集",
 		"channel": "版風管理",
 		"channel": "版風管理",
 		"channels": "版風列表",
 		"channels": "版風列表",
 		"like": "贊",
 		"like": "贊",
 		"blank": "空白",
 		"blank": "空白",
 		"vocabulary_list": "詞彙列表",
 		"vocabulary_list": "詞彙列表",
+		"private": "私享",
+		"private_note": "僅自己可見,不推訂閱,不可搜尋",
+		"unlisted": "不公開列出",
+		"unlisted_note": "可通過連結訪問,不推訂閱,不可搜尋",
+		"public": "公開",
+		"public_note": "可通過連結訪問,推訂閱,可搜尋",
+		"copy_link": "複製連結",
+		"saved": "已儲存",
+		"title_necessary": "必須填寫標題",
+		"example": "例如",
+		"privacy": "隱私設定",
 		"": ""
 		"": ""
 	},
 	},
 	"grammastr": [
 	"grammastr": [

+ 1 - 1
app/studio/js/editor.js

@@ -2875,7 +2875,7 @@ function showModifyWin(sWordId) {
 		$("#input_case").val(sCase);
 		$("#input_case").val(sCase);
 
 
 		if (sParentGrammar != "" || sParent2 != "") {
 		if (sParentGrammar != "" || sParent2 != "") {
-			document.getElementById("edit_detail_prt_prt").style.display = "flex";
+			document.getElementById("edit_detail_prt_prt").style.display = "block";
 			document.getElementById("svg_parent2").style.transform = "rotate(90deg)";
 			document.getElementById("svg_parent2").style.transform = "rotate(90deg)";
 		}
 		}
 		else {
 		else {

+ 33 - 0
app/studio/svg/icon.svg

@@ -692,4 +692,37 @@
 			</g>
 			</g>
 		</g>
 		</g>
 	</symbol>
 	</symbol>
+	<symbol id="article" t="1603380139679" class="icon" viewBox="0 0 1072 1024" version="1.1"
+		xmlns="http://www.w3.org/2000/svg" p-id="1055">
+		<path
+			d="M93.9 123.6h76.7c24.9 0 45-20.2 45-45V1.9L93.9 123.6zM1017.2 556.2l34.1-34.1c28.1-28.1 28.1-73.7 0-101.8-28.1-28.1-73.7-28.1-101.8 0l-34.1 34.1 101.8 101.8zM880.5 489.2L625.3 744.4l-44.9 146.8 146.7-44.9 255.2-255.2z"
+			fill="#666666" p-id="1056"></path>
+		<path
+			d="M700.4 953.6L509.5 962 568 721.1 930.1 359V69.6c0-37.3-30.6-67.8-68-67.8H237.9v75.9c0 37.6-30.5 68-68 68h-76v808.7c0 37.3 30.6 67.8 68 67.8h700.2c37.4 0 68-30.5 68-67.8V743.9L700.4 953.6zM259.8 188.3h504.6c25 0 45.4 20.2 45.4 45.2s-20.3 45.2-45.4 45.2H259.7c-25 0-45.3-20.2-45.3-45.2s20.3-45.2 45.4-45.2z m0 220.6h296.9c25 0 45.4 20.2 45.4 45.2s-20.3 45.2-45.4 45.2h-297c-25-0.1-45.3-20.3-45.3-45.2 0-25 20.3-45.2 45.4-45.2z m160.1 310.8H259.7c-25 0-45.4-20.2-45.4-45.2s20.3-45.2 45.4-45.2h160.2c25.1 0 45.4 20.2 45.4 45.2s-20.3 45.2-45.4 45.2z"
+			fill="#666666" p-id="1057"></path>
+	</symbol>
+	<symbol id="add_to_anthology" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+		t="1603380648769" class="icon" viewBox="0 0 1024 1024" version="1.1" p-id="3981">
+		<defs>
+			<style type="text/css" /></defs>
+			<path d="M522.768405 966.328483c24.69205 0 44.749431-19.088552 44.749431-43.558033V97.157849c0-24.089805-20.358504-43.623495-44.749431-43.623495H386.438438c-24.69205 0.078554-44.749431 19.127829-44.749431 43.623495v825.534048c0 24.089805 20.358504 43.558033 44.749431 43.558033h136.329967v0.078553zM789.130948 966.328483c24.69205 0 44.749431-19.088552 44.749431-43.558033V529.203263c0-24.089805-20.358504-43.623495-44.749431-43.623495H652.800982c-24.69205 0.078554-44.749431 19.127829-44.749431 43.623495v393.488634c0 24.089805 20.358504 43.558033 44.749431 43.558033h136.329966v0.078553zM256.379676 966.328483c24.718235 0 44.775616-19.140921 44.775616-43.59731V97.157849c0-24.089805-20.384688-43.623495-44.775616-43.623495H120.062802c-24.705142 0.091646-44.762523 19.127829-44.762523 43.623495v825.534048c0 24.089805 20.384688 43.558033 44.762523 43.558033h136.303782v0.078553z" p-id="3982"/>
+			<path d="M945.335004 251.908661H665.749252c-10.395275 0-18.90526-8.509985-18.90526-18.90526v-41.528729c0-10.395275 8.509985-18.90526 18.90526-18.90526h279.585752c10.395275 0 18.90526 8.509985 18.90526 18.90526v41.528729c0 10.395275-8.509985 18.90526-18.90526 18.90526z" p-id="3983"/>
+			<path d="M845.218299 72.439614v279.585752c0 10.395275-8.509985 18.90526-18.90526 18.90526h-41.528729c-10.395275 0-18.90526-8.509985-18.90526-18.90526V72.439614c0-10.395275 8.509985-18.90526 18.90526-18.90526h41.528729c10.395275 0 18.90526 8.509985 18.90526 18.90526z" p-id="3984" />
+		</symbol>
+		<symbol id="return" t="1603381219001" class="icon" viewBox="0 0 1339 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9542" >
+			<path d="M1319.676948 1023.921237c-80.889778-241.802938-315.367741-414.451811-591.905238-419.335128-34.498269-0.630105-66.948696 0.078763-97.902623 2.126605v238.888701l0.23629 2.126606a10.790555 10.790555 0 0 1-10.869318 10.633028 10.633028 10.633028 0 0 1-9.294055-5.119606v1.023921L7.876317 444.539343h3.150527A10.790555 10.790555 0 0 1 0 433.906315c0-4.253211 2.520422-7.876317 6.143527-9.609107L609.863241 13.626029v1.023921A11.026844 11.026844 0 0 1 619.078532 9.609107c5.986001 0 10.948081 4.72579 10.948081 10.633028 0 0.708869-0.157526 1.417737-0.315052 2.126606v231.721252c27.56711-1.338974 56.551958-1.73279 87.033305-1.181448 343.564957 5.670948 622.229059 286.225367 622.229059 620.890086A588.518422 588.518422 0 0 1 1319.676948 1023.921237zM635.461272 3.150527v1.811553H631.68064L635.461272 3.150527z m-0.393816 869.230367l-2.835474-1.890316h2.835474v1.890316z" p-id="9543"></path>
+		</symbol>
+		<symbol id="preview" t="1603382451124" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15536">
+			<path d="M703.730499 544.578527a191.730499 191.730499 0 0 1 156.260356 302.806368l122.004508 122.004507a31.955083 31.955083 0 0 1-45.248398 45.184488l-121.940597-121.940598A191.730499 191.730499 0 1 1 703.730499 544.642437z m-6.391017-511.28133c38.857381 0 70.301183 30.67688 70.301183 68.511698v386.912146a255.640665 255.640665 0 1 0-69.022979 503.16474l-563.687667 0.06391c-38.857381 0-70.301183-30.67688-70.301183-68.447788V101.808895C64.628836 63.910166 96.072638 33.233286 134.930019 33.233286h562.409463z m6.391017 575.191496a127.820333 127.820333 0 1 0 0 255.640665 127.820333 127.820333 0 0 0 0-255.640665z m-351.505915 0h-127.820332a31.955083 31.955083 0 0 0-5.751915 63.398885l5.751915 0.511281h127.820332a31.955083 31.955083 0 0 0 0-63.910166z m0-191.730499h-127.820332a31.955083 31.955083 0 0 0-5.751915 63.398885l5.751915 0.511282h127.820332a31.955083 31.955083 0 0 0 0-63.910167z m191.730499-191.730499h-319.550831a31.955083 31.955083 0 0 0-5.751915 63.398885l5.751915 0.511282h319.550831a31.955083 31.955083 0 0 0 0-63.910167z" p-id="15537">
+			</path>
+		</symbol>
+		<symbol id="library" t="1603382761175" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16364">
+			<path d="M511.974717 475.849119a670.455197 670.455197 0 0 0-455.085828-176.914615v548.15088c175.947558 0 335.73957 67.238931 455.085828 176.85773a672.787512 672.787512 0 0 1 455.085829-176.914616V298.991389a670.455197 670.455197 0 0 0-455.085829 176.914616z m0-176.914615c83.963335 0 151.714238-66.72696 151.714239-149.438809C663.688956 66.783845 595.938053 0 511.974717 0 428.011382 0 360.260479 66.783845 360.260479 149.495695c0 82.711849 67.750903 149.438809 151.714238 149.438809z" p-id="16365"></path>
+		</symbol>
+		<symbol id="eye_disable" t="1603383513346" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3337">
+			<path d="M192.853333 253.184L59.434667 119.808l60.373333-60.373333 844.757333 844.8-60.373333 60.330666-141.226667-141.226666A467.157333 467.157333 0 0 1 512 896c-230.058667 0-421.461333-165.546667-461.610667-384a468.565333 468.565333 0 0 1 142.506667-258.816z m436.778667 436.821333l-62.464-62.464a128 128 0 0 1-170.709333-170.709333L333.994667 394.368a213.333333 213.333333 0 0 0 295.637333 295.637333zM340.224 160.426667C393.429333 139.52 451.413333 128 512 128c230.058667 0 421.461333 165.546667 461.610667 384a467.072 467.072 0 0 1-85.845334 195.925333l-164.693333-164.693333a213.333333 213.333333 0 0 0-242.346667-242.346667L340.224 160.469333z" p-id="3338"></path>
+		</symbol>
+		<symbol id="eye_enable" t="1603383594328" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3482">
+			<path d="M50.389333 512C90.496 293.546667 281.941333 128 512 128c230.058667 0 421.461333 165.546667 461.610667 384-40.106667 218.453333-231.552 384-461.610667 384-230.058667 0-421.461333-165.546667-461.610667-384zM512 725.333333a213.333333 213.333333 0 1 0 0-426.666666 213.333333 213.333333 0 0 0 0 426.666666z m0-85.333333a128 128 0 1 1 0-256 128 128 0 0 1 0 256z" p-id="3483"></path>
+		</symbol>
 </svg>
 </svg>

+ 1 - 1
app/usent/usent_ref.js

@@ -1,5 +1,4 @@
 var _usent_buffer = new Array();
 var _usent_buffer = new Array();
-var now_time = new Date()
 class USentResult {
 class USentResult {
   constructor(filter = {}) {
   constructor(filter = {}) {
     this.filter = filter;
     this.filter = filter;
@@ -137,6 +136,7 @@ class USentResult {
             function (data, status) {
             function (data, status) {
               if (status == "success") {
               if (status == "success") {
                 let result = JSON.parse(data);
                 let result = JSON.parse(data);
+                let now_time = new Date()
                 console.log(result);
                 console.log(result);
                 for (const iterator of result.update) {
                 for (const iterator of result.update) {
                   $(
                   $(