123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513 |
- /**
- * Created by lifei6671 on 2017/4/29 0029.
- */
- /**
- * 打开最后选中的节点
- */
- function openLastSelectedNode() {
- //如果文档树或编辑器没有准备好则不加载文档
- if (window.treeCatalog == null || window.editor == null) {
- return false;
- }
- var $isSelected = false;
- if (window.localStorage) {
- var $selectedNodeId = window.sessionStorage.getItem("MinDoc::LastLoadDocument:" + window.book.identify);
- try {
- if ($selectedNodeId) {
- //遍历文档树判断是否存在节点
- $.each(window.documentCategory, function (i, n) {
- if (n.id == $selectedNodeId && !$isSelected) {
- var $node = {"id": n.id};
- window.treeCatalog.deselect_all();
- window.treeCatalog.select_node($node);
- $isSelected = true;
- }
- });
- }
- } catch ($ex) {
- console.log($ex)
- }
- }
- //如果节点不存在,则默认选中第一个节点
- if (!$isSelected && window.documentCategory.length > 0) {
- var doc = window.documentCategory[0];
- if (doc && doc.id > 0) {
- var node = {"id": doc.id};
- $("#sidebar").jstree(true).select_node(node);
- $isSelected = true;
- }
- }
- return $isSelected;
- }
- /**
- * 设置最后选中的文档
- * @param $node
- */
- function setLastSelectNode($node) {
- if (window.localStorage) {
- if (typeof $node === "undefined" || !$node) {
- window.sessionStorage.removeItem("MinDoc::LastLoadDocument:" + window.book.identify);
- } else {
- var nodeId = $node.id ? $node.id : $node.node.id;
- window.sessionStorage.setItem("MinDoc::LastLoadDocument:" + window.book.identify, nodeId);
- }
- }
- }
- /**
- * 保存排序
- * @param node
- * @param parent
- */
- function jstree_save(node, parent) {
- var parentNode = window.treeCatalog.get_node(parent.parent);
- var nodeData = window.getSiblingSort(parentNode);
- if (parent.parent !== parent.old_parent) {
- parentNode = window.treeCatalog.get_node(parent.old_parent);
- var newNodeData = window.getSiblingSort(parentNode);
- if (newNodeData.length > 0) {
- nodeData = nodeData.concat(newNodeData);
- }
- }
- var index = layer.load(1, {
- shade: [0.1, '#fff'] //0.1透明度的白色背景
- });
- locales = {
- 'zh-CN': {
- saveSortSucc: '保存排序成功',
- },
- 'en': {
- saveSortSucc: 'Save sort success',
- }
- }
- $.ajax({
- url: window.sortURL,
- type: "post",
- data: JSON.stringify(nodeData),
- success: function (res) {
- layer.close(index);
- if (res.errcode === 0) {
- layer.msg(locales[lang].saveSortSucc);
- } else {
- layer.msg(res.message);
- }
- }
- })
- }
- /**
- * 创建文档
- */
- function openCreateCatalogDialog($node) {
- var $then = $("#addDocumentModal");
- var doc_id = $node ? $node.id : 0;
- $then.find("input[name='parent_id']").val(doc_id);
- $then.find("input[name='doc_id']").val('');
- $then.find("input[name='doc_name']").val('');
- $then.modal("show");
- }
- /**
- * 处理排序
- * @param node
- * @returns {Array}
- */
- function getSiblingSort(node) {
- var data = [];
- for (var key in node.children) {
- var index = data.length;
- data[index] = {
- "id": parseInt(node.children[key]),
- "sort": parseInt(key),
- "parent": Number(node.id) ? Number(node.id) : 0
- };
- }
- return data;
- }
- /**
- * 删除一个文档
- * @param $node
- */
- function openDeleteDocumentDialog($node) {
- locales = {
- 'zh-CN': {
- saveSortSucc: '保存排序成功',
- confirmDeleteDoc: '你确定要删除该文档吗?',
- confirm: '确定',
- cancel: '取消',
- deleteFailed: '删除失败',
- confirmLeave: '您输入的内容尚未保存,确定离开此页面吗?'
- },
- 'en': {
- saveSortSucc: 'Save sort success',
- confirmDeleteDoc: 'Are you sure you want to delete this document?',
- confirm: 'Confirm',
- cancel: 'Cancel',
- deleteFailed: 'Delete Failed',
- confirmLeave: 'The content you entered has not been saved. Are you sure you want to leave this page?'
- }
- }
- langs = locales[lang];
- var index = layer.confirm(langs.confirmDeleteDoc, {
- btn: [langs.confirm, langs.cancel] //按钮
- }, function () {
- $.post(window.deleteURL, {"identify": window.book.identify, "doc_id": $node.id}).done(function (res) {
- layer.close(index);
- if (res.errcode === 0) {
- window.treeCatalog.delete_node($node);
- window.documentCategory.remove(function (item) {
- return item.id == $node.id;
- });
- // console.log(window.documentCategory)
- setLastSelectNode();
- } else {
- layer.msg(lang.deleteFailed, {icon: 2})
- }
- }).fail(function () {
- layer.close(index);
- layer.msg(lang.deleteFailed, {icon: 2})
- });
- });
- }
- /**
- * 打开文档编辑界面
- * @param $node
- */
- function openEditCatalogDialog($node) {
- var $then = $("#addDocumentModal");
- var doc_id = parseInt($node ? $node.id : 0);
- var text = $node ? $node.text : '';
- var parentId = $node && $node.parent !== '#' ? $node.parent : 0;
- $then.find("input[name='doc_id']").val(doc_id);
- $then.find("input[name='parent_id']").val(parentId);
- $then.find("input[name='doc_name']").val(text);
- var open = $node.a_attr && $node.a_attr.opened ? $node.a_attr.opened : 0;
- console.log($node)
- $then.find("input[name='is_open'][value='" + open + "']").prop("checked", "checked");
- for (var index in window.documentCategory) {
- var item = window.documentCategory[index];
- if (item.id === doc_id) {
- $then.find("input[name='doc_identify']").val(item.identify);
- break;
- }
- }
- $then.modal({show: true});
- }
- /**
- * 将一个节点推送到现有数组中
- * @param $node
- */
- function pushDocumentCategory($node) {
- for (var index in window.documentCategory) {
- var item = window.documentCategory[index];
- if (item.id === $node.id) {
- window.documentCategory[index] = $node;
- return;
- }
- }
- window.documentCategory.push($node);
- }
- /**
- * 将数据重置到Vue列表中
- * @param $lists
- */
- function pushVueLists($lists) {
- window.vueApp.lists = [];
- $.each($lists, function (i, item) {
- window.vueApp.lists.push(item);
- });
- }
- /**
- * 发布项目
- */
- function releaseBook() {
- locales = {
- 'zh-CN': {
- publishToQueue: '发布任务已推送到任务队列,稍后将在后台执行。',
- },
- 'en': {
- publishToQueue: 'The publish task has been pushed to the queue</br> and will be executed soon.',
- }
- }
- $.ajax({
- url: window.releaseURL,
- data: {"identify": window.book.identify},
- type: "post",
- dataType: "json",
- success: function (res) {
- if (res.errcode === 0) {
- layer.msg(locales[lang].publishToQueue);
- } else {
- layer.msg(res.message);
- }
- }
- });
- }
- //实现小提示
- $("[data-toggle='tooltip']").hover(function () {
- var title = $(this).attr('data-title');
- var direction = $(this).attr("data-direction");
- var tips = 3;
- if (direction === "top") {
- tips = 1;
- } else if (direction === "right") {
- tips = 2;
- } else if (direction === "bottom") {
- tips = 3;
- } else if (direction === "left") {
- tips = 4;
- }
- index = layer.tips(title, this, {
- tips: tips
- });
- }, function () {
- layer.close(index);
- });
- //弹出创建文档的遮罩层
- $("#btnAddDocument").on("click", function () {
- $("#addDocumentModal").modal("show");
- });
- //用于还原创建文档的遮罩层
- $("#addDocumentModal").on("hidden.bs.modal", function () {
- $(this).find("form").html(window.sessionStorage.getItem("MinDoc::addDocumentModal"));
- var $then = $("#addDocumentModal");
- $then.find("input[name='parent_id']").val('');
- $then.find("input[name='doc_id']").val('');
- $then.find("input[name='doc_name']").val('');
- }).on("shown.bs.modal", function () {
- $(this).find("input[name='doc_name']").focus();
- }).on("show.bs.modal", function () {
- window.sessionStorage.setItem("MinDoc::addDocumentModal", $(this).find("form").html())
- });
- function showError($msg, $id) {
- if (!$id) {
- $id = "#form-error-message"
- }
- $($id).addClass("error-message").removeClass("success-message").text($msg);
- return false;
- }
- function showSuccess($msg, $id) {
- if (!$id) {
- $id = "#form-error-message"
- }
- $($id).addClass("success-message").removeClass("error-message").text($msg);
- return true;
- }
- window.documentHistory = function () {
- locales = {
- 'zh-CN': {
- hisVer: '历史版本',
- },
- 'en': {
- hisVer: 'Historic version',
- }
- }
- layer.open({
- type: 2,
- title: locales[lang].hisVer,
- shadeClose: true,
- shade: 0.8,
- area: ['700px', '80%'],
- content: window.historyURL + "?identify=" + window.book.identify + "&doc_id=" + window.selectNode.id,
- end: function () {
- if (window.SelectedId) {
- var selected = {
- node: {
- id: window.SelectedId
- }
- };
- window.loadDocument(selected);
- window.SelectedId = null;
- }
- }
- });
- };
- function uploadImage($id, $callback) {
- locales = {
- 'zh-CN': {
- unsupportType: '不支持的图片格式',
- uploadFailed: '图片上传失败'
- },
- 'en': {
- unsupportType: 'Unsupport image type',
- uploadFailed: 'Upload image failed'
- }
- }
- /** 粘贴上传图片 **/
- document.getElementById($id).addEventListener('paste', function (e) {
- if (e.clipboardData && e.clipboardData.items) {
- var clipboard = e.clipboardData;
- for (var i = 0, len = clipboard.items.length; i < len; i++) {
- if (clipboard.items[i].kind === 'file' || clipboard.items[i].type.indexOf('image') > -1) {
- var imageFile = clipboard.items[i].getAsFile();
- var fileName = String((new Date()).valueOf());
- switch (imageFile.type) {
- case "image/png" :
- fileName += ".png";
- break;
- case "image/jpg" :
- fileName += ".jpg";
- break;
- case "image/jpeg" :
- fileName += ".jpeg";
- break;
- case "image/gif" :
- fileName += ".gif";
- break;
- default :
- layer.msg(locales[lang].unsupportType);
- return;
- }
- var form = new FormData();
- form.append('editormd-image-file', imageFile, fileName);
- var layerIndex = 0;
- $.ajax({
- url: window.imageUploadURL,
- type: "POST",
- dataType: "json",
- data: form,
- processData: false,
- contentType: false,
- beforeSend: function () {
- layerIndex = $callback('before');
- },
- error: function () {
- layer.close(layerIndex);
- $callback('error');
- layer.msg(locales[lang].uploadFailed);
- },
- success: function (data) {
- layer.close(layerIndex);
- $callback('success', data);
- if (data.errcode !== 0) {
- layer.msg(data.message);
- }
- }
- });
- e.preventDefault();
- }
- }
- }
- });
- }
- /**
- * 初始化代码高亮
- */
- function initHighlighting() {
- $('pre code,pre.ql-syntax').each(function (i, block) {
- hljs.highlightBlock(block);
- });
- }
- $(function () {
- window.vueApp = new Vue({
- el: "#attachList",
- data: {
- lists: []
- },
- delimiters: ['${', '}'],
- methods: {
- removeAttach: function ($attach_id) {
- var $this = this;
- var item = $this.lists.filter(function ($item) {
- return $item.attachment_id == $attach_id;
- });
- if (item && item[0].hasOwnProperty("state")) {
- $this.lists = $this.lists.filter(function ($item) {
- return $item.attachment_id != $attach_id;
- });
- return;
- }
- $.ajax({
- url: window.removeAttachURL,
- type: "post",
- data: {"attach_id": $attach_id},
- success: function (res) {
- if (res.errcode === 0) {
- $this.lists = $this.lists.filter(function ($item) {
- return $item.attachment_id != $attach_id;
- });
- } else {
- layer.msg(res.message);
- }
- }
- });
- }
- },
- watch: {
- lists: function ($lists) {
- $("#attachInfo").text(" " + $lists.length + " 个附件")
- }
- }
- });
- /**
- * 启动自动保存,默认30s自动保存一次
- */
- if (window.book && window.book.auto_save) {
- setTimeout(function () {
- setInterval(function () {
- var $then = $("#markdown-save");
- if (!window.saveing && $then.hasClass("change")) {
- $then.trigger("click");
- }
- }, 30000);
- }, 30000);
- }
- /**
- * 当离开窗口时存在未保存的文档会提示保存
- */
- $(window).on("beforeunload", function () {
- if ($("#markdown-save").hasClass("change")) {
- return '您输入的内容尚未保存,确定离开此页面吗?';
- }
- });
- });
|