visuddhinanda 5 лет назад
Родитель
Сommit
b4ab84797f
5 измененных файлов с 140 добавлено и 51 удалено
  1. 18 0
      app/lang/lang.js
  2. 2 28
      app/ucenter/get_setting.php
  3. 64 22
      app/ucenter/setting.js
  4. 8 1
      app/ucenter/setting.php
  5. 48 0
      app/ucenter/setting_function.php

+ 18 - 0
app/lang/lang.js

@@ -0,0 +1,18 @@
+var lang_list = new Array();
+$.getJSON("../lang/lang_list.json", function (json) {
+  lang_list = json;
+});
+function lang_load_list() {
+  $.getJSON("../lang/lang_list.json", function (json) {
+    lang_list = json;
+  });
+}
+
+function lang_get_org_name(code) {
+  for (const iterator of lang_list) {
+    if (iterator.code == code) {
+      return iterator.name;
+    }
+  }
+  return code;
+}

+ 2 - 28
app/ucenter/get_setting.php

@@ -1,30 +1,4 @@
 <?php
-require_once '../path.php';
-if(!isset($_COOKIE["userid"])){
-    $setting = array();
-}
-else{
-    $setting=json_decode(file_get_contents("../ucenter/default.json"),TRUE);
-    //打开数据库
-    $dns = "sqlite:"._FILE_DB_USERINFO_;
-    $dbh = new PDO($dns, "", "",array(PDO::ATTR_PERSISTENT=>true));
-    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);  
-
-    $query = "select setting from user where userid = ? ";
-    $stmt = $dbh->prepare($query);
-    $stmt->execute(array($_COOKIE["userid"]));
-    $fUser = $stmt->fetchAll(PDO::FETCH_ASSOC);
-    $dbh=null;      
-    if(isset($fUser[0]["setting"])){
-        $my_setting=json_decode($fUser[0]["setting"],TRUE);
-        foreach ($setting as $key => $value) {
-            if(isset($my_setting[$key])){
-                $setting[$key] = $my_setting[$key];
-            }
-        }
-    }
-}
-
-echo json_encode($setting, JSON_UNESCAPED_UNICODE);
-
+    require_once '../ucenter/setting_function.php';
+echo json_encode(get_setting(), JSON_UNESCAPED_UNICODE);
 ?>

+ 64 - 22
app/ucenter/setting.js

@@ -7,31 +7,81 @@ function setting_onload() {
 
       html = "";
       html += "常用界面语言:";
-      html +=
-        "<input type='input' value='" +
-        setting["ui.lang.load"].join() +
-        "' /><button>保存</button>";
       $("#setting_general").html(html);
 
       html = "";
       html += "常用译文语言:";
-      html +=
-        "<input type='input' value='" +
-        setting["studio.translation.lang"].join() +
-        "' /><button>保存</button>";
+
       $("#setting_studio").html(html);
 
+      let dict_lang_others = new Array();
+      for (const iterator of setting["_dict.lang"]) {
+        if (setting["dict.lang"].indexOf(iterator) == -1) {
+          dict_lang_others.push(iterator);
+        }
+      }
       html = "";
       html += "自动查词词典语言:";
-      html +=
-        "<input id='dict_lang' type='input' value='" +
-        setting["dict.lang"].join() +
-        "' /><button onclick=\"save('dict_lang','dict.lang',true)\">保存</button>";
+      html += "<div style='display:flex;'>";
+
+      html += "<div style='width:10em;'>顺序";
+      html += "<ul id='ul_dict_lang1' class='dict_lang'>";
+      let i = 0;
+      for (const iterator of setting["dict.lang"]) {
+        html +=
+          "<li id='dict_lang1_li_" +
+          i +
+          "' value='" +
+          iterator +
+          "'>" +
+          lang_get_org_name(iterator) +
+          "</li>";
+        i++;
+      }
+      html += "</ul>";
+      html += "</div>";
+
+      html += "<div style='width:10em;'>不展示";
+      html += "<ul id='ul_dict_lang2' class='dict_lang'>";
+      i = 0;
+      for (const iterator of dict_lang_others) {
+        html +=
+          "<li id='dict_lang2_li_" +
+          i +
+          "' value='" +
+          iterator +
+          "'>" +
+          lang_get_org_name(iterator) +
+          "</li>";
+        i++;
+      }
+      html += "</ul>";
+      html += "</div>";
+      html += "</div>";
       $("#setting_dictionary").html(html);
+
+      $("#ul_dict_lang1, #ul_dict_lang2")
+        .sortable({
+          connectWith: ".dict_lang",
+        })
+        .disableSelection();
+      $("#ul_dict_lang1").sortable({
+        update: function (event, ui) {
+          let sortedIDs = $("#ul_dict_lang1").sortable("toArray");
+          let newLang = new Array();
+          for (const iSorted of sortedIDs) {
+            newLang.push($("#" + iSorted).attr("value"));
+          }
+          setting["dict.lang"] = newLang;
+          setting_save();
+        },
+      });
     } catch (e) {}
   });
 }
-
+function li_remove() {
+  $(this).parent().remove();
+}
 var get_callback;
 function setting_get(key, callback) {
   get_callback = callback;
@@ -55,15 +105,7 @@ function setting_get(key, callback) {
   );
 }
 
-function save(obj, key, array = false) {
-  if (array) {
-    setting[key] = $("#" + obj)
-      .val()
-      .split(",");
-  } else {
-    setting[key] = $("#" + obj).val();
-  }
-
+function setting_save() {
   $.post(
     "set_setting.php",
     {

+ 8 - 1
app/ucenter/setting.php

@@ -14,10 +14,12 @@ require_once '../public/function.php';
 	<link type="text/css" rel="stylesheet" href="../pcdl/css/reader_mob.css" media="screen and (max-width:767px)">
 	<title id="page_title">PCD Reader</title>
 
-	<script src="../public/js/jquery.js"></script>
+	<script src="../public/js/jquery-3.5.1.js"></script>
 	<script src="../public/js/fixedsticky.js"></script>
 	<script src="./setting.js"></script>
+	<script src="../lang/lang.js"></script>
 	<script src="../public/js/comm.js"></script>
+	<script src="../public/js/jquery-ui-1.12.1/jquery-ui.js"></script>
 
 </head>
 <body class="reader_body" >
@@ -168,6 +170,11 @@ para:hover{
 	font-family: Noto serif;
     font-size: 150%;
 }
+.dict_lang{
+	border: 1px solid gray;
+    min-height: 4em;
+	margin:0.5em;
+}
 </style>
 		<!-- tool bar begin-->
 		<div id="main_tool_bar" class='reader_toolbar'>

+ 48 - 0
app/ucenter/setting_function.php

@@ -0,0 +1,48 @@
+<?php
+    require_once '../path.php';
+function get_setting(){
+
+    if(!isset($_COOKIE["userid"])){
+        $setting = array();
+    }
+    else{
+        $setting=json_decode(file_get_contents("../ucenter/default.json"),TRUE);
+        //打开数据库
+        $dns = "sqlite:"._FILE_DB_USERINFO_;
+        $dbh = new PDO($dns, "", "",array(PDO::ATTR_PERSISTENT=>true));
+        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);  
+
+        $query = "select setting from user where userid = ? ";
+        $stmt = $dbh->prepare($query);
+        $stmt->execute(array($_COOKIE["userid"]));
+        $fUser = $stmt->fetchAll(PDO::FETCH_ASSOC);
+        $dbh=null;
+        if(isset($fUser[0]["setting"])){
+            $my_setting=json_decode($fUser[0]["setting"],TRUE);
+            foreach ($setting as $key => $value) {
+                if(mb_substr($key,0,1,"UTF-8") !== '_' && isset($my_setting[$key])){
+                    $setting[$key] = $my_setting[$key];
+                }
+            }
+        }
+    }
+    return($setting);
+}
+
+function inLangSetting($lang,$mySetting){
+    foreach ($mySetting as $key => $value) {
+        if(strpos($lang,"-")==false){
+            if($lang===$value){
+                return true;
+            }
+        }
+        else{
+            $befor = strstr($lang,"-" , TRUE);
+            if($lang===$value || $befor===$value){
+                return true;
+            }
+        }
+    }
+    return false;
+}
+?>