标签作为气泡注释
popup_init();
//刷新句子链接递归,有加层数限制。
//note_refresh_new();
//将新的数据添加到数据总表
_arrData = _arrData.concat(sentData);
note_ref_init();
//获取术语字典
term_get_dict();
//刷新channel列表
note_channal_list();
//显示不同的巴利语脚本
refresh_pali_script();
//把巴利语单词用分隔用于点词查询等
splite_pali_word();
} catch (e) {
console.error(e);
}
}
}
);
} else {
//term_get_dict();
}
}
//生成channel列表
function note_channal_list() {
console.log("note_channal_list start");
let arrSentInfo = new Array();
$("note").each(function () {
let info = $(this).attr("info");
if (info && info != "") {
arrSentInfo.push({ id: "", data: info });
}
});
if (arrSentInfo.length > 0) {
$.post(
"../term/channal_list.php",
{
setting: "",
data: JSON.stringify(arrSentInfo),
},
function (data, status) {
if (status == "success") {
try {
let active = JSON.parse(data);
_channalData = active;
for (const iterator of _my_channal) {
let found = false;
for (const one of active) {
if (iterator.id == one.id) {
found = true;
break;
}
}
if (found == false) {
_channalData.push(iterator);
}
}
let strHtml = "";
for (const iterator of _channalData) {
if (_channal.indexOf(iterator.id) >= 0) {
strHtml += render_channal_list(iterator);
}
}
for (const iterator of _channalData) {
if (_channal.indexOf(iterator.id) == -1) {
strHtml += render_channal_list(iterator);
}
}
$("#channal_list").html(strHtml);
set_more_button_display();
} catch (e) {
console.error(e);
}
}
}
);
}
}
function find_channal(id) {
for (const iterator of _channalData) {
if (id == iterator.id) {
return iterator;
}
}
return false;
}
function render_channal_list(channalinfo) {
let output = "";
let checked = "";
let selected = "noselect";
if (_channal.indexOf(channalinfo.id) >= 0) {
checked = "checked";
selected = "selected";
}
output += "";
output +=
'";
output += "";
output += "";
if (parseInt(channalinfo.power) == 30) {
output += gLocal.gui.your.slice(0, 1);
} else {
output += channalinfo.nickname.slice(0, 1);
}
output += "";
output += "";
output += "";
output += "";
return output;
}
function onChannelMultiSelectStart() {
$(".channel_select").show();
}
function onChannelMultiSelectCancel() {
$(".channel_select").hide();
}
function onChannelChange() {
let channal_list = new Array();
$("[channal_id]").each(function () {
if (this.checked) {
channal_list.push($(this).attr("channal_id"));
}
});
set_channal(channal_list.join());
}
//点击引用 需要响应的事件
function note_ref_init() {
$("chapter").click(function () {
let bookid = $(this).attr("book");
let para = $(this).attr("para");
window.open("../reader/?view=chapter&book=" + bookid + "¶=" + para, "_blank");
});
$("para").click(function () {
let bookid = $(this).attr("book");
let para = $(this).attr("para");
window.open("../reader/?view=para&book=" + bookid + "¶=" + para, "_blank");
});
}
/*
id
palitext
tran
ref
*/
function note_json_html(in_json) {
let output = "";
output += '";
output += "" + in_json.palitext + "";
output += "";
output += "";
//output += "";
for (const iterator of in_json.translation) {
output += render_one_sent_tran_a(iterator);
//output += render_one_sent_tran(in_json.book, in_json.para, in_json.begin, in_json.end, iterator);
}
//所选全部译文结束
//output += "";
//未选择的其他译文开始
output += "";
output += "";
//工具栏结束
//未选择的其他译文开始
output += "";
output += "";
output += "";
return output;
}
function sent_tran_edit(obj) {
let jqObj = $(obj);
while (!jqObj.hasClass("sent_tran")) {
jqObj = jqObj.parent();
if (!jqObj) {
return;
}
}
if (jqObj.hasClass("edit_mode")) {
jqObj.removeClass("edit_mode");
} else {
$(".sent_tran").removeClass("edit_mode");
jqObj.addClass("edit_mode");
}
}
function sent_pr_merge(id) {
$.post(
"../usent/sent_pr_merge.php",
{
id: id,
},
function (data) {
let result = JSON.parse(data);
if (result.status > 0) {
alert("error" + result.message);
} else {
ntf_show("成功采纳");
}
}
);
}
function sent_commit(src, id) {
commit_init({
src: src,
sent: [id],
express: true,
});
}
function render_one_sent_tran_a(iterator) {
let mChannel = get_channel_by_id(iterator.channal);
let tranText;
let sid = iterator.book + "-" + iterator.para + "-" + iterator.begin + "-" + iterator.end;
if (iterator.text == "") {
if (typeof iterator.channalinfo == "undefined") {
tranText =
"" +
"空" +
"@" +
iterator.editor_name.nickname +
"";
} else {
tranText =
"" +
iterator.channalinfo.name +
"-" +
iterator.channalinfo.lang +
"";
}
} else {
//note_init处理句子链接
tranText = note_init(term_std_str_to_tran(iterator.text, iterator.channal, iterator.editor, iterator.lang));
}
let html = "";
html += "";
html += "";
html += '";
//tool_bar 结束
html += '";
html += '';
html += '";
html += '';
html += '';
html += "";
html += "";
html += '';
if (parseInt(iterator.mypower) < 20) {
html += "提交修改建议 ";
}
html += "点击输入框外面自动" + gLocal.gui.save + " 支持markdown语法";
html += "";
html += "";
html += '"; //end of foot bar
html += "";
html += "";
//sent_tran_inner结束
html += '';
html += "";
return html;
}
function render_one_sent_tran(book, para, begin, end, iterator) {
let output = "";
output += "";
//译文工具按钮开始
output += "";
output +=
"";
//译文工具栏开始
output += "";
//译文工具栏结束
output += "";
//译文工具按钮结束
//译文正文开始
output +=
"";
if (iterator.text == "") {
output +=
"" +
iterator.channalinfo.name +
"-" +
iterator.channalinfo.lang +
"";
} else {
//note_init处理句子链接
output += note_init(term_std_str_to_tran(iterator.text, iterator.channal, iterator.editor, iterator.lang));
}
output += "";
//译文正文结束
output += "";
//单个channal译文框结束
return output;
}
function add_new_tran_button_click(obj) {
let html = ""
var first_lang = ""
for (const iterator of _my_channal) {
if(iterator.lang){
first_lang=iterator.lang
break;
}
}
html += "";
html += '- ';
html += first_lang;
html += "
";
for (const iterator of _my_channal) {
if (iterator.status > 0 && first_lang.indexOf(iterator.lang)!=-1 && iterator.lang!=0) {
if (_channal.indexOf(iterator.id) < 0) {
html += '- ' + iterator.name;
if (parseInt(iterator.power) < 20) {
html += "(建议)";
}
html += "
";
}
}
}
html += "
";
html+="";
html += '- ';
html += gLocal.gui.other;
html += "
";
for (const iterator of _my_channal) {
if (iterator.status > 0 && first_lang.indexOf(iterator.lang)==-1 && iterator.lang!=0) {
if (_channal.indexOf(iterator.id) < 0) {
html += '- ' + iterator.name;
if (parseInt(iterator.power) < 20) {
html += "(建议)";
}
html += "
";
}
}
}
html += "
";
html+="";
html += '- ';
html += gLocal.gui.collaborate;
html += "
";
for (const iterator of _my_channal) {
if (iterator.status > 0 && iterator.lang==0) {
if (_channal.indexOf(iterator.id) < 0) {
html += '- ' + iterator.name;
if (parseInt(iterator.power) < 20) {
html += "(建议)";
}
html += "
";
}
}
}
html += "
";
html += "";
$(obj).parent().children(".tran_text_tool_bar").first().html(html);
if ($(obj).parent().children(".tran_text_tool_bar").css("display") == "block") {
$(obj).parent().children(".tran_text_tool_bar").first().hide();
} else {
$(obj).parent().children(".tran_text_tool_bar").first().show();
$(document).one("click", function () {
$(obj).parent().children(".tran_text_tool_bar").first().hide();
});
event.stopPropagation();
$(obj).parent().show();
}
}
function tool_bar_show(element) {
if ($(element).find(".tran_text_tool_bar").css("display") == "none") {
$(element).find(".tran_text_tool_bar").css("display", "flex");
$(element).find(".icon_expand").css("transform", "rotate(-180deg)");
$(element).css("background-color", "var(--btn-bg-color)");
$(element).css("visibility", "visible");
$(document).one("click", function () {
$(element).find(".tran_text_tool_bar").hide();
$(element).css("background-color", "var(--nocolor)");
$(element).find(".icon_expand").css("transform", "unset");
$(element).css("visibility", "");
});
event.stopPropagation();
} else {
$(element).find(".tran_text_tool_bar").hide();
$(element).css("background-color", "var(--nocolor)");
$(element).find(".icon_expand").css("transform", "unset");
$(element).css("visibility", "");
}
}
function new_sentence(book, para, begin, end, channel, obj) {
let newsent = { id: "", text: "", lang: "", channal: channel };
for (let iterator of _arrData) {
if (iterator.book == book && iterator.para == para && iterator.begin == begin && iterator.end == end) {
let found = false;
for (const tran of iterator.translation) {
if (tran.channal == channel) {
found = true;
break;
}
}
if (!found) {
iterator.translation.push(newsent);
}
}
}
if ($(obj).parent().parent().css("display") == "block") {
$(obj).parent().parent().hide();
}
note_edit_sentence(book, para, begin, end, channel);
}
//显示更多译文按钮动作
function set_more_button_display() {
$(".other_tran_div").each(function () {
const sentid = $(this).attr("sent").split("-");
const book = sentid[0];
const para = sentid[1];
const begin = sentid[2];
const end = sentid[3];
let count = 0;
for (const iterator of _channalData) {
if (iterator.final) {
for (const onesent of iterator.final) {
let id = onesent.id.split("-");
if (book == id[0] && para == id[1] && begin == id[2] && end == id[3] && onesent.final) {
if (_channal.indexOf(iterator.id) == -1) {
count++;
}
}
}
}
}
if (count > 0) {
$(this).find(".other_tran_num").html(count);
$(this).find(".other_tran_num").attr("style", "display:inline-flex;");
$(this)
.find(".other_bar")
.click(function () {
const sentid = $(this).parent().parent().attr("sent").split("-");
const book = sentid[0];
const para = sentid[1];
const begin = sentid[2];
const end = sentid[3];
let sentId = $(this).parent().parent().attr("sent");
if ($(this).parent().parent().siblings(".other_tran").first().css("display") == "none") {
$(".other_tran_div[sent='" + sentId + "']")
.children(".other_tran")
.slideDown();
$(this).siblings(".more_tran ").css("transform", "unset");
$.get(
"../usent/get.php",
{
book: book,
para: para,
begin: begin,
end: end,
},
function (data, status) {
let arrSent = JSON.parse(data);
let html = "";
for (const iterator of arrSent) {
if (_channal.indexOf(iterator.channal) == -1) {
html += render_one_sent_tran_a(iterator);
//html += "" + marked(iterator.text) + "";
}
}
html += "";
let sentId =
arrSent[0].book +
"-" +
arrSent[0].paragraph +
"-" +
arrSent[0].begin +
"-" +
arrSent[0].end;
$(".other_tran_div[sent='" + sentId + "']")
.children(".other_tran")
.html(html);
}
);
} else {
$(".other_tran_div[sent='" + sentId + "']")
.children(".other_tran")
.slideUp();
$(this).siblings(".more_tran ").css("transform", "rotate(-90deg)");
}
});
} else {
//隐藏自己
//$(this).hide();
$(this).find(".other_tran_span").addClass("disable"); //gLocal.gui.no + gLocal.gui.other + gLocal.gui.translation
//$(this).find(".more_tran").hide();
}
});
}
function note_edit_sentence(book, para, begin, end, channal) {
let channalInfo;
for (const iterator of _channalData) {
if (iterator.id == channal) {
channalInfo = iterator;
break;
}
}
for (const iterator of _arrData) {
if (iterator.book == book && iterator.para == para && iterator.begin == begin && iterator.end == end) {
for (const tran of iterator.translation) {
if (tran.channal == channal) {
let html = "";
html += "" + channalInfo.name + "@" + channalInfo.nickname + "";
html +=
"";
$("#edit_dialog_content").html(html);
$("#note_sent_edit_dlg").dialog("open");
return;
}
}
}
}
alert("未找到句子");
}
function update_note_sent_tran(obj) {}
//保存pr句子 新
function note_pr_save(obj) {
let id = $(obj).attr("dbid");
let sid = $(obj).attr("sid").split("-");
let book = sid[0];
let para = sid[1];
let begin = sid[2];
let end = sid[3];
let channel = $(obj).attr("channel");
let text = $(obj).val();
let sent_tran_div = find_sent_tran_div(obj);
$.post(
"../usent/pr_post.php",
{
id: id,
book: book,
para: para,
begin: begin,
end: end,
channel: channel,
text: text,
},
sent_save_callback
);
if (sent_tran_div) {
$(sent_tran_div).find(".preview").addClass("loading");
}
}
//保存译文句子 新
function note_sent_save_a(obj) {
let id = $(obj).attr("dbid");
let sid = $(obj).attr("sid").split("-");
let book = sid[0];
let para = sid[1];
let begin = sid[2];
let end = sid[3];
let channal = $(obj).attr("channel");
let text = $(obj).val();
let sent_tran_div = find_sent_tran_div(obj);
$.post(
"../usent/sent_post.php",
{
id: id,
book: book,
para: para,
begin: begin,
end: end,
channal: channal,
text: text,
lang: "zh",
},
sent_save_callback
);
if (sent_tran_div) {
$(sent_tran_div).find(".preview").addClass("loading");
}
}
function sent_save_callback(data) {
let result = JSON.parse(data);
if (result.status > 0) {
alert("error" + result.message);
} else {
let sid = result.book + "-" + result.para + "-" + result.begin + "-" + result.end;
let sent_tran_div = $(
".sent_tran[dbid='" + result.id + "'][channel='" + result.channal + "'][sid='" + sid + "']"
);
if (result.commit_type == 1 || result.commit_type == 2) {
ntf_show("成功修改");
if (sent_tran_div) {
let divPreview = sent_tran_div.find(".preview").first();
if (result.text == "") {
let channel_info = "Empty";
let thisChannel = find_channal(result.channal);
if (thisChannel) {
channel_info = thisChannel.name + "-" + thisChannel.nickname;
}
divPreview.html("" + channel_info + "");
} else {
divPreview.html(
marked(term_std_str_to_tran(result.text, result.channal, result.editor, result.lang))
);
term_updata_translation();
popup_init();
for (const iterator of _arrData) {
if (
iterator.book == result.book &&
iterator.para == result.para &&
iterator.begin == result.begin &&
iterator.end == result.end
) {
for (const tran of iterator.translation) {
if (tran.channal == result.channal) {
tran.text = result.text;
break;
}
}
}
}
}
sent_tran_div.find(".preview").removeClass("loading");
}
} else if (result.commit_type == 3) {
ntf_show("已经提交修改建议");
} else {
ntf_show("未提交");
}
}
}
//保存译文句子
function note_sent_save() {
let id = $("#edit_dialog_text").attr("sent_id");
let book = $("#edit_dialog_text").attr("book");
let para = $("#edit_dialog_text").attr("para");
let begin = $("#edit_dialog_text").attr("begin");
let end = $("#edit_dialog_text").attr("end");
let channal = $("#edit_dialog_text").attr("channal");
let text = $("#edit_dialog_text").val();
$.post(
"../usent/sent_post.php",
{
id: id,
book: book,
para: para,
begin: begin,
end: end,
channal: channal,
text: text,
lang: "zh",
},
function (data) {
let result = JSON.parse(data);
if (result.status > 0) {
alert("error" + result.message);
} else {
if (result.commit_type == 1 || result.commit_type == 2) {
ntf_show("成功修改");
if (result.text == "") {
let channel_info = "Empty";
let thisChannel = find_channal(result.channal);
if (thisChannel) {
channel_info = thisChannel.name + "-" + thisChannel.nickname;
}
$(
"#tran_text_" +
result.book +
"_" +
result.para +
"_" +
result.begin +
"_" +
result.end +
"_" +
result.channal
).html("" + channel_info + "");
} else {
$(
"#tran_text_" +
result.book +
"_" +
result.para +
"_" +
result.begin +
"_" +
result.end +
"_" +
result.channal
).html(marked(term_std_str_to_tran(result.text, result.channal, result.editor, result.lang)));
term_updata_translation();
for (const iterator of _arrData) {
if (
iterator.book == result.book &&
iterator.para == result.para &&
iterator.begin == result.begin &&
iterator.end == result.end
) {
for (const tran of iterator.translation) {
if (tran.channal == result.channal) {
tran.text = result.text;
break;
}
}
}
}
}
} else if (result.commit_type == 3) {
ntf_show("已经提交修改建议");
} else {
ntf_show("未提交");
}
}
}
);
}
function copy_ref(book, para, begin, end) {
let strRef = "{{" + book + "-" + para + "-" + begin + "-" + end + "}}";
copy_to_clipboard(strRef);
}
function goto_nissaya(book, para, begin = 0, end = 0) {
window.open("../nissaya/index.php?book=" + book + "¶=" + para + "&begin=" + begin + "&end=" + end, "nissaya");
}
function edit_in_studio(book, para, begin, end) {
wbw_channal_list_open(book, [para]);
}
//显示和隐藏某个内容 如 巴利文
function setVisibility(key, value) {
switch (key) {
case "palitext":
if ($(value).is(":checked")) {
$(".palitext").show();
} else {
$(".palitext").hide();
}
break;
default:
break;
}
}
function note_show_pali_sim(SentId) {
pali_sim_dlg_open(SentId, 0, 20);
}
function set_pali_script(pos, script) {
if (script == "none") {
$(".palitext" + pos).html("");
} else {
$(".palitext" + pos).each(function () {
let html = $(this).siblings(".palitext_roma").first().html();
$(this).html(html);
});
$(".palitext" + pos)
.find("*")
.contents()
.filter(function () {
return this.nodeType != 1;
})
.wrap(" ");
$(".palitext" + pos)
.contents()
.filter(function () {
return this.nodeType != 1;
})
.wrap(" ");
$("pl" + pos).html(function (index, oldcontent) {
return roman_to_my(oldcontent);
});
}
}
function splite_pali_word() {
$("pali")
.contents()
.filter(function () {
return this.nodeType != 1;
})
.wrap(" ");
$("pl").each(function () {
let html = $(this).html();
$(this).html("" + html.replace(/\s/g, " ") + " ");
});
$("w").click(function () {
let word = com_getPaliReal($(this).text());
if (gBuildinDictIsOpen) {
window.open("../dict/index.php?builtin=true&key=" + word, "dict");
}
});
}
function refresh_pali_script() {
if (_display && _display == "para") {
//段落模式
} else {
//句子模式
setting_get("lib.second_script", set_second_scrip);
}
}
function set_second_scrip(value) {
set_pali_script(2, value);
}
function slider_show(obj) {
$(obj).parent().parent().parent().parent().parent().toggleClass("slider_show_shell");
}
function find_sent_tran_div(obj) {
let parent = obj.parentNode;
while (parent.nodeType == 1) {
if ($(parent).hasClass("sent_tran")) {
return parent;
} else if (parent.nodeName == "BODY") {
return false;
}
parent = parent.parentNode;
}
return false;
}
//显示或隐藏pr数据
function note_pr_show(channel, id) {
let obj = $(".sent_tran[channel='" + channel + "'][sid='" + id + "']").find(".pr_content");
let prHtml = obj.first().html();
if (prHtml == "") {
note_get_pr(channel, id);
} else {
obj.slideUp();
obj.html("");
}
}
//获取pr数据并显示
function note_get_pr(channel, id) {
let sid = id.split("-");
let book = sid[0];
let para = sid[1];
let begin = sid[2];
let end = sid[3];
$.post(
"../usent/get_pr.php",
{
book: book,
para: para,
begin: begin,
end: end,
channel: channel,
},
function (data) {
let result = JSON.parse(data);
if (result.length > 0) {
let html = "";
for (const iterator of result) {
html += render_one_sent_tran_a(iterator);
}
html += "";
$(".sent_tran[channel='" + channel + "'][sid='" + id + "']")
.find(".pr_content")
.html(html);
$(".sent_tran[channel='" + channel + "'][sid='" + id + "']")
.find(".pr_content")
.slideDown();
} else {
}
}
);
$(".sent_tran[channel='" + channel + "'][sid='" + id + "']")
.find(".pr_content")
.html("loading");
$(".sent_tran[channel='" + channel + "'][sid='" + id + "']")
.find(".pr_content")
.show();
}
function get_channel_by_id(id) {
if (typeof _channalData != "undefined") {
for (const iterator of _channalData) {
if (iterator.id == id) {
return iterator;
}
}
}
if (typeof _my_channal != "undefined") {
for (const iterator of _my_channal) {
if (iterator.id == id) {
return iterator;
}
}
}
return false;
}