| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402 |
- var share_win;
- function my_collect_init() {
- my_collect_list();
- share_win = iframe_win_init({ container: "share_win", name: "share", width: "500px" });
- collect_add_dlg_init("collect_add_div");
- }
- function my_collect_list() {
- $.get(
- "../article/collect_list.php",
- {
- userid: getCookie("userid"),
- setting: "",
- },
- function (data, status) {
- if (status == "success") {
- try {
- let html = "";
- let result = JSON.parse(data);
- let key = 1;
- for (const iterator of result) {
- html += '<div class="file_list_row" style="padding:5px;">';
- html += '<div style="max-width:2em;flex:1;"><input type="checkbox" /></div>';
- html += "<div style='flex:1;'>" + key++ + "</div>";
- html += "<div style='flex:2;'>" ;
- html += "<a href='../article/my_collect_edit.php?id=" + iterator.id + "'>" ;
- html += iterator.title ;
- html += "</a>";
- html += "</div>";
- html += "<div style='flex:2;'>" + render_status(iterator.status) + "</div>";
- //html += "<div style='flex:1;'>" + gLocal.gui.copy_to_clipboard + "</div>";
- html += "<div style='flex:1;'>";
- html += "<a href='../article/?view=collection&collection=" + iterator.id + "' target='_blank'>" + gLocal.gui.preview + "</a>";
- html += "</div>";
- html += "<div style='flex:1;'>";
- html += "<a onclick=\"collection_share('" + iterator.id + "')\">"+gLocal.gui.share+"</a>";
- html += "</div>";
- html += "</div>";
- }
- $("#article_list").html(html);
- } catch (e) {
- console.error(e);
- }
- } else {
- console.error("ajex error");
- }
- }
- );
- }
- var _arrArticleList;
- var _arrArticleOrder = new Array();
- var currSelectNode;
- function my_collect_edit(id) {
- $.get(
- "../article/collect_get.php",
- {
- id: id,
- setting: "",
- },
- function (data, status) {
- if (status == "success") {
- let html = "";
- let result;
- try {
- result = JSON.parse(data);
- } catch (e) {
- console.error(e);
- }
- $("#article_collect").attr("a_id", result.id);
- html += '<div class="" style="padding:5px;">';
- html += '<div style="max-width:2em;flex:1;"></div>';
- html += "<input type='hidden' name='id' value='" + result.id + "'/>";
- html += "<div style='display:flex;'>";
- html += "<div style='flex:2;'>" + gLocal.gui.title + "</div>";
- html += "<div style='flex:8;'>";
- html += "<input type='input' name='title' value='" + result.title + "'/>";
- html += "</div></div>";
- html += "<div style='display:flex;'>";
- html += "<div style='flex:2;'>" + gLocal.gui.sub_title + "</div>";
- html += "<div style='flex:8;'>";
- html += "<input type='input' name='subtitle' value='" + result.subtitle + "'/>";
- html += "</div></div>";
- html += "<div style='display:flex;'>";
- html += "<div style='flex:2;'>" + gLocal.gui.introduction + "</div>";
- html += "<div style='flex:8;'>";
- html += "<textarea type='input' name='summary' style='height:150px' >" + result.summary + "</textarea>";
- html += "</div></div>";
- html += "<div style='display:flex;'>";
- html += "<div style='flex:2;'>" + gLocal.gui.status + "</div>";
- html += "<div style='flex:8;'>";
- html += render_status(result.status, false);
- html += "</div></div>";
- html += "<div style='display:flex;'>";
- html += "<div style='flex:2;'>" + gLocal.gui.language + "</div>";
- html += "<div style='flex:8;'>";
- html += "<input type='input' name='lang' value='" + result.lang + "'/>";
- html += "</div></div>";
- html +=
- "<input id='form_article_list' type='hidden' name='article_list' value='" +
- result.article_list +
- "'/>";
- html += "</div>";
- html += "<div>";
- html += "<button onclick='removeTocNode()'>Delete</button>";
- html += "</div>";
- html += "<div style='display:flex;'>";
- html += "<div style='flex:4;'>";
- html += "<div id='ul_article_list'>";
- html += "</div>";
- html += "</div>";
- html += "<div id='preview_div'>";
- html += "<div id='preview_inner' ></div>";
- html += "</div>";
- html += "</div>";
- $("#article_list").html(html);
- $("#collection_title").html(result.title);
- _arrArticleList = JSON.parse(result.article_list);
- $("#ul_article_list").fancytree({
- autoScroll: true,
- selectMode: 1, // 1:single, 2:multi, 3:multi-hier
- checkbox: false, // Show checkboxes.
- extensions: ["dnd"],
- source: tocGetTreeData(_arrArticleList),
- click: function(e, data) {
- if( e.ctrlKey ){
- window.open("../article/?view=article&id="+data.node.key,"_blank");
- return false;
- }
- },
- dblclick: function(e, data) {
- editNode(data.node);
- return false;
- },
- keydown: function(e, data) {
- switch( e.which ) {
- case 113: // [F2]
- editNode(data.node);
- return false;
- case 13: // [enter]
- if( isMac ){
- editNode(data.node);
- return false;
- }
- }
- },
- dnd: {
- preventVoidMoves: true, // Prevent dropping nodes 'before self', etc.
- preventRecursiveMoves: true, // Prevent dropping nodes on own descendants
- autoExpandMS: 400,
- onDragStart: function(node) {
- return true;
- },
- onDragEnter: function(node, sourceNode) {
- return true;
- },
- onDrop: function(node, sourceNode, hitMode, ui, draggable) {
- sourceNode.moveTo(node, hitMode);
- node.setExpanded(true);
- }
- },
- activate: function(e, data) {
- // alert("activate " + );
- currSelectNode = data.node;
- },
- select: function(e, data) {
- // Display list of selected nodes
- currSelectNode = data.tree.getSelectedNodes();
- }
- });
-
- } else {
- console.error("ajex error");
- }
- }
- );
- }
- var tocActivePath;
- function tocGetTreeData(articles,active=""){
- let treeData = new Array()
- let treeParents = [];
- let rootNode = {key:0,title:"root",level:0};
- treeData.push(rootNode);
- let lastInsNode = rootNode;
- let iLastParentNodeLevel = 0;
- let currParentNode = null;
- let iCurrLevel = 0;
- for (let index = 0; index < articles.length; index++) {
- const element = articles[index];
- let newNode = {key:element.article,title:element.title,level:element.level};
- if(active==element.article){
- newNode["extraClasses"]="active";
- }
- if(newNode.level>iCurrLevel){
- //新的层级比较大,为上一个的子目录
- treeParents.push(lastInsNode);
- lastInsNode.children = new Array();
- lastInsNode.children.push(newNode);
- currParentNode = lastInsNode;
- }
- else if(newNode.level==iCurrLevel){
- //目录层级相同,为平级
- currParentNode = treeParents[treeParents.length-1];
- treeParents[treeParents.length-1].children.push(newNode);
- }
- else{
- // 小于 挂在上一个层级
- while(treeParents.length>1){
- treeParents.pop();
- if(treeParents[treeParents.length-1].level<newNode.level){
- break;
- }
- }
-
- currParentNode = treeParents[treeParents.length-1];
- treeParents[treeParents.length-1].children.push(newNode);
- iLastParentNodeLevel = treeParents[treeParents.length-1].level;
- }
- lastInsNode = newNode;
- iCurrLevel = newNode.level;
- if(active==element.article){
- tocActivePath = new Array();
- for (let index = 1; index < treeParents.length; index++) {
- treeParents[index]["expanded"]=true;
- tocActivePath.push(treeParents[index]);
- }
- }
- }
- return treeData[0].children;
- }
- function editNode(node){
- var prevTitle = node.title,
- tree = node.tree;
- // Disable dynatree mouse- and key handling
- tree.widget._unbind();
- // Replace node with <input>
- $(".fancytree-title", node.span).html("<input id='editNode' value='" + prevTitle + "'>");
- // Focus <input> and bind keyboard handler
- $("input#editNode")
- .focus()
- .keydown(function(event){
- switch( event.which ) {
- case 27: // [esc]
- // discard changes on [esc]
- $("input#editNode").val(prevTitle);
- $(this).blur();
- break;
- case 13: // [enter]
- // simulate blur to accept new value
- $(this).blur();
- break;
- }
- }).blur(function(event){
- // Accept new value, when user leaves <input>
- var title = $("input#editNode").val();
- node.setTitle(title);
- // Re-enable mouse and keyboard handlling
- tree.widget._bind();
- //node.focus();
- });
- }
- function removeTocNode(){
- if(confirm("Delete article and the sub article?")){
- currSelectNode.remove();
- }
-
- }
- var arrTocTree;
- var iTocTreeCurrLevel = 1;
- function getTocTreeData(){
- arrTocTree = new Array();
- let tree = $("#ul_article_list").fancytree("getTree");
- let d = tree.toDict(false);
- for (const iterator of d) {
- getTreeNodeData(iterator);
- }
- }
- function getTreeNodeData(node){
- let children = 0;
- if( typeof node.children != "undefined"){
- children = node.children.length;
- }
- arrTocTree.push({article:node.key,title:node.title,level:iTocTreeCurrLevel,children:children});
- if(children>0){
- iTocTreeCurrLevel++;
- for (const iterator of node.children) {
- getTreeNodeData(iterator);
- }
- iTocTreeCurrLevel--;
- }
- }
- function my_collect_render_article(index, article) {
- let html = "";
- html += "<li id='article_item_" + index + "' article_index='" + index + "' class='file_list_row'>";
- html += "<span style='flex:1;'>";
- html += "<select>";
- let selected = "";
- for (let i = 1; i < 9; i++) {
- if (parseInt(article.level) == i) {
- selected = "selected";
- } else {
- selected = "";
- }
- html += "<option " + selected + " value='" + i + "' >H " + i + "</option>";
- }
- html += "</select>";
- html += "</span>";
- html += "<span style='flex:3;'>";
- html += "<a href='../article/my_article_edit.php?id=" + article.article + "'>";
- html += article.title;
- html += "</a>";
- html += "</span>";
- html += "<span style='flex:1;' onclick=\"article_preview('" + article.article + "')\">";
- html += "Preview";
- html += "</span>";
- html += "</li>";
- return html;
- }
- function article_preview(id) {
- $.get(
- "../article/get.php",
- {
- id: id,
- setting: "",
- },
- function (data, status) {
- if (status == "success") {
- try {
- let html = "";
- let result = JSON.parse(data);
- $("#preview_inner").html(note_init(result.content));
- note_refresh_new();
- } catch (e) {
- console.error(e.message);
- }
- }
- }
- );
- }
- function my_collect_save() {
- getTocTreeData();
- $("#form_article_list").val( JSON.stringify(arrTocTree))
- $.ajax({
- type: "POST", //方法类型
- dataType: "json", //预期服务器返回的数据类型
- url: "../article/my_collect_post.php", //url
- data: $("#collect_edit").serialize(),
- success: function (result) {
- console.log(result); //打印服务端返回的数据(调试用)
- if (result.status == 0) {
- alert("保存成功");
- } else {
- alert("error:" + result.message);
- }
- },
- error: function (data, status) {
- alert("异常!" + data.responseText);
- switch (status) {
- case "timeout":
- break;
- case "error":
- break;
- case "notmodified":
- break;
- case "parsererror":
- break;
- default:
- break;
- }
- },
- });
- }
- function collection_share(id) {
- share_win.show("../share/share.php?id=" + id + "&type=4");
- }
|