172 lines
5.5 KiB
JavaScript
172 lines
5.5 KiB
JavaScript
var tree = {
|
||
fileTree: undefined,
|
||
newFile: function() {
|
||
$("#dirRMenu ul").hide();
|
||
var name = prompt("Name", "");
|
||
if (!name) {
|
||
return false;
|
||
}
|
||
|
||
var request = {
|
||
path: wide.curNode.path + '/' + name,
|
||
fileType: "f"
|
||
};
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: '/file/new',
|
||
data: JSON.stringify(request),
|
||
dataType: "json",
|
||
success: function(data) {
|
||
if (!data.succ) {
|
||
return false;
|
||
}
|
||
tree.fileTree.addNodes(wide.curNode, [{
|
||
"name": name
|
||
}]);
|
||
}
|
||
});
|
||
},
|
||
newDir: function() {
|
||
$("#dirRMenu ul").hide();
|
||
var name = prompt("Name", "");
|
||
if (!name) {
|
||
return false;
|
||
}
|
||
|
||
var request = {
|
||
path: wide.curNode.path + '/' + name,
|
||
fileType: "d"
|
||
};
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: '/file/new',
|
||
data: JSON.stringify(request),
|
||
dataType: "json",
|
||
success: function(data) {
|
||
if (!data.succ) {
|
||
return false;
|
||
}
|
||
tree.fileTree.addNodes(wide.curNode, [{
|
||
"name": name
|
||
}]);
|
||
}
|
||
});
|
||
},
|
||
removeIt: function() {
|
||
$("#dirRMenu ul").hide();
|
||
$("#fileRMenu ul").hide();
|
||
|
||
if (!confirm("Remove it?")) {
|
||
return;
|
||
}
|
||
var request = {
|
||
path: wide.curNode.path
|
||
};
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: '/file/remove',
|
||
data: JSON.stringify(request),
|
||
dataType: "json",
|
||
success: function(data) {
|
||
if (!data.succ) {
|
||
return false;
|
||
}
|
||
tree.fileTree.removeNode(wide.curNode);
|
||
}
|
||
});
|
||
},
|
||
init: function() {
|
||
$.ajax({
|
||
type: 'GET',
|
||
url: '/files',
|
||
dataType: "json",
|
||
success: function(data) {
|
||
if (data.succ) {
|
||
var dirRMenu = $("#dirRMenu");
|
||
var fileRMenu = $("#fileRMenu");
|
||
var setting = {
|
||
view: {
|
||
selectedMulti: false
|
||
},
|
||
callback: {
|
||
onRightClick: function(event, treeId, treeNode) {
|
||
if (treeNode) {
|
||
wide.curNode = treeNode;
|
||
if ("f" === treeNode.type) { // 如果右击了文件
|
||
$("#fileRMenu ul").show();
|
||
fileRMenu.css({
|
||
"top": event.clientY - 10 + "px",
|
||
"left": event.clientX + "px",
|
||
"display": "block"
|
||
});
|
||
} else { // 右击了目录
|
||
$("#dirRMenu ul").show();
|
||
dirRMenu.css({
|
||
"top": event.clientY - 10 + "px",
|
||
"left": event.clientX + "px",
|
||
"display": "block"
|
||
});
|
||
}
|
||
}
|
||
},
|
||
onClick: function(event, treeId, treeNode, clickFlag) {
|
||
tree._onClick(treeNode);
|
||
}
|
||
}
|
||
};
|
||
tree.fileTree = $.fn.zTree.init($("#files"), setting, data.root.children);
|
||
}
|
||
}
|
||
});
|
||
},
|
||
_onClick: function(treeNode) {
|
||
if (wide.curNode) {
|
||
var id = wide.curNode.tId;
|
||
if (id === treeNode.tId) {
|
||
// 再次点击当前选中节点
|
||
return false;
|
||
}
|
||
|
||
|
||
for (var i = 0, ii = editors.data.length; i < ii; i++) {
|
||
// 该节点文件已经打开
|
||
if (editors.data[i].id === treeNode.tId) {
|
||
editors.tabs.setCurrent(treeNode.tId);
|
||
wide.curNode = treeNode;
|
||
wide.curEditor = editors.data[i].editor;
|
||
return false;
|
||
}
|
||
}
|
||
}
|
||
|
||
wide.curNode = treeNode;
|
||
|
||
if ("f" === treeNode.type) { // 如果单击了文件
|
||
var request = {
|
||
path: treeNode.path
|
||
};
|
||
$.ajax({
|
||
type: 'POST',
|
||
url: '/file',
|
||
data: JSON.stringify(request),
|
||
dataType: "json",
|
||
success: function(data) {
|
||
if (!data.succ) {
|
||
alert(data.msg);
|
||
|
||
return false;
|
||
}
|
||
|
||
if ("img" === data.mode) { // 是图片文件的话新建 tab 打开
|
||
// 最好是开 tab,但这个最终取决于浏览器设置
|
||
var w = window.open(data.path);
|
||
|
||
return false;
|
||
}
|
||
|
||
editors.newEditor(data);
|
||
}
|
||
});
|
||
}
|
||
}
|
||
}; |