KodExplorer/static/js/_dev/common/pathOperate.js

554 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

define(function(require, exports) {
var tpl = require('../tpl/fileinfo');
var path_not_allow = ['/','\\',':','*','?','"','<','>','|'];//win文件名命不允许的字符
//检测文件名是否合法,根据操作系统,规则不一样
//win 不允许 / \ : * ? " < > |lin* 不允许 ‘、’
var _pathAllow = function(path){
//字符串中检验是否出现某些字符check=['-','=']
var _strHasChar = function(str,check){
var len=check.length;
var reg="";
for (var i=0; i<len; i++){
if(str.indexOf(check[i])>0) return true;
}
return false;
};
if (_strHasChar(path,path_not_allow)){
core.tips.tips(LNG.path_not_allow+':/ \ : * ? " < > |',false);
return false;
}
return true;
};
//组装数据
var _json = function(json){
var send = 'list=[';
for (var i in json) {
send += '{"type":"'+json[i].type+'","path":"'+urlEncode2(json[i].path)+'"}';
if (i != json.length-1) send+= ',';
};
return send+']';
}
// 新建文件
var newFile = function(path,callback){
if (!path) return;
var filename = core.pathThis(path);
if (!_pathAllow(filename)){
if (typeof(callback) == 'function')callback();
return;
}
$.ajax({
dataType:'json',
url: 'index.php?explorer/mkfile&path='+urlEncode2(path),
beforeSend:function(){
core.tips.loading();
},
error:core.ajaxError,
success: function(data) {
core.tips.close(data);
if (typeof(callback) == 'function')callback(data);
}
});
};
// 新建文件夹
var newFolder = function(path,callback){
if (!path) return;
var filename = core.pathThis(path);
if (!_pathAllow(filename)){
if (typeof(callback) == 'function')callback();
return;
}
$.ajax({
dataType:'json',
url: 'index.php?explorer/mkdir&path='+urlEncode2(path),
beforeSend:function(){
core.tips.loading();
},
error:core.ajaxError,
success: function(data) {
core.tips.close(data);
if (typeof (callback) == 'function')callback(data);
}
});
};
// 树目录重命名文件夹
var rname = function(from,to,callback){
if (!from || !to) return;
if (from == to) return;
if (!_pathAllow(core.pathThis(to))){
if (typeof(callback) == 'function')callback();
return;
}
$.ajax({
type: "POST",
dataType:'json',
url: 'index.php?explorer/pathRname',
data: 'path='+urlEncode(from)+'&rname_to='+urlEncode(to),
beforeSend:function(){
core.tips.loading();
},
error:core.ajaxError,
success: function(data) {
core.tips.close(data);
if (typeof(callback) == 'function')callback(data);
//ui.tree.refresh(treeNode.getParentNode());
}
});
};
//多条数据操作
//参数形如list=[{"type":"file","file":"D:/test/a.txt"}]
//删除 文件|文件夹 & 包含批量删除
var remove = function(param,callback){
if (param.length<1) return;
var name = param[0]['path'];
if (name.length > 20) {
name = '...'+name.substr(-20);
};
$.dialog({
id:'dialog_path_remove',
fixed: true,//不跟随页面滚动
icon:'question',
title:LNG.remove_title,
padding:40,
lock:true,
background:"#000",
opacity:0.5,
content:name+'<br/>'+LNG.remove_info+'【'+param.length+'】',
ok:function() {
$.ajax({
url: 'index.php?explorer/pathDelete',
type:'POST',
dataType:'json',
data:_json(param),
beforeSend:function(){
core.tips.loading();
},
error:core.ajaxError,
success: function(data) {
core.tips.close(data);
if (typeof(callback) == 'function')callback(data);
}
});
},
cancel: true
});
};
//复制
var copy = function(param){
if (param.length<1) return;
$.ajax({
url:'index.php?explorer/pathCopy',
type:'POST',
dataType:'json',
data:_json(param),
error:core.ajaxError,
success: function(data) {
core.tips.tips(data);
}
});
};
//剪切
var cute = function(param){
if (param.length<1) return;
$.ajax({
url:'index.php?explorer/pathCute',
type:'POST',
dataType:'json',
data:_json(param),
error:core.ajaxError,
success:function(data){
core.tips.tips(data);
}
});
};
// 粘贴
var past = function(path,callback){
if (!path) return;
var url='index.php?explorer/pathPast&path='+urlEncode2(path);
$.ajax({
url:url,
dataType:'json',
beforeSend: function(){
core.tips.loading(LNG.moving);
},
error:core.ajaxError,
success:function(data){
if (data.code){
core.tips.close(data);
}else{
core.tips.close(data.info,false);
}
if (typeof(callback) == 'function')callback(data);
}
});
};
//获取文件夹属性
var info = function(param){
if (param.length<1) param = [{path:G.this_path,type:"folder"}];//当前目录属性
$.ajax({
url:'index.php?explorer/pathInfo',
type:'POST',
dataType:'json',
data:_json(param),
beforeSend: function(){
core.tips.loading(LNG.getting);
},
error:core.ajaxError,
success:function(data){
if (!data.code){
core.tips.close(data);return;
}
core.tips.close(LNG.get_success,true);
var tpl_file = 'path_info_more';
var title = LNG.info;
if (param.length ==1) {
tpl_file = ((param[0].type =='folder')?'path_info':'file_info');
title = core.pathThis(param[0].path);
if (title.length>15) {
title = title.substr(0,15)+"... "+LNG.info
}
}
var render = template.compile(tpl[tpl_file]);
var dialog_id = UUID();
data.data.LNG = LNG;//模板中的多语言注入
$.dialog({
id:dialog_id,
padding:5,
ico:core.ico('info'),
fixed: true,//不跟随页面滚动
title:title,
content:render(data.data),
width:'350px',
cancel: true
});
_chmod(dialog_id,param);
}
});
};
var _chmod = function(dialog_id,param){
$('.'+dialog_id).find('.edit_chmod').click(function(){
var $input = $(this).parent().find('input');
var $button = $(this);
$.ajax({
url:'index.php?explorer/pathChmod&mod='+$input.val(),
type:'POST',
data:_json(param),
beforeSend: function(){
$button.text(LNG.loading);
},
error:function(data){
$button.text(LNG.button_save);
},
success:function(data){
$button.text(data.data)
.animate({opacity:0.6},400,0)
.delay(1000)
.animate({opacity:1},200,0,function(){
$button.text(LNG.button_save);
});
}
});
});
}
var zip = function(param,callback){
if (param.length<1) return;
$.ajax({
url:'index.php?explorer/zip',
type:'POST',
dataType:'json',
data:_json(param),
beforeSend: function(){
core.tips.loading(LNG.ziping);
},
error:core.ajaxError,
success:function(data){
core.tips.close(data);
core.tips.tips(data);
if (typeof (callback) == 'function') callback(data);
}
});
};
var unZip = function(path,callback){
if (!path) return;
var url='index.php?explorer/unzip&path='+urlEncode2(path);
$.ajax({
url:url,
beforeSend: function(){
core.tips.loading(LNG.unziping);
},
error:core.ajaxError,
success:function(data){
core.tips.close(data);
if (typeof (callback) == 'function') callback(data);
}
});
};
// 粘贴
var cuteDrag = function(param,dragTo,callback){
if (!dragTo) return;
$.ajax({
url:'index.php?explorer/pathCuteDrag',
type:'POST',
dataType:'json',
data:_json(param)+'&path='+urlEncode2(dragTo),
beforeSend: function(){
core.tips.loading(LNG.moving);
},
error:core.ajaxError,
success:function(data){
core.tips.close(data);
if (typeof (callback) == 'function') callback(data);
}
});
};
// 创建副本
var copyDrag = function(param,dragTo,callback){
if (!dragTo) return;
$.ajax({
url:'index.php?explorer/pathCopyDrag',
type:'POST',
dataType:'json',
data:_json(param)+'&path='+urlEncode2(dragTo),
beforeSend: function(){
core.tips.loading(LNG.moving);
},
error:core.ajaxError,
success:function(data){
core.tips.close(data);
if (typeof (callback) == 'function') callback(data);
}
});
};
//==查看剪贴板
var clipboard = function(){
$.ajax({
url:'index.php?explorer/clipboard',
dataType:'json',
error:core.ajaxError,
success:function(data){
if (!data.code) return;
$.dialog({
title:LNG.clipboard,
padding:0,
height:200,
width:400,
content:data.data
});
}
});
};
//==添加收藏夹
var fav = function(path){
if (!path) return;
var pram='&name='+urlEncode(core.pathThis(path))+'&path='+urlEncode(path);
core.setting('fav'+pram);
};
//获取数据
var _app_param = function(dom) {
var param ={};
param.type = dom.find("input[type=radio]:checked").val();
param.content = dom.find("textarea").val();
param.group = dom.find("[name=group]").val();
dom.find('input[type=text]').each(function(){
var name = $(this).attr('name');
param[name]=$(this).val();
});
dom.find('input[type=checkbox]').each(function(){
var name = $(this).attr('name');
param[name] = $(this).attr('checked')=='checked'?1:0;
});
return param;
}
var _bindAppEvent = function(dom) {
dom.find('.type input').change(function() {
var val = $(this).attr('apptype');
dom.find('[data-type]').addClass('hidden');
dom.find('[data-type='+val+']').removeClass('hidden');
});
}
//应用添加、修改——创建文件appstore 添加、修改——修改数据
var appEdit = function(path,callback,action){//path——path/jsondata
//action:user_add user_edit root_add root_edit
var title = LNG.app_create,dom,
url,html,
uuid = UUID(),
editpath,
tpl = require('../tpl/app'),
iconpath = G.basic_path+'static/images/app/',
render = template.compile(tpl.html);
if (action == undefined) {action= 'user_edit'};
if (action == 'root_edit') {path = json_decode(path);};
if (action == 'user_edit' || action == 'root_edit'){
title = LNG.app_edit;
html = render({LNG:LNG,iconPath:iconpath,uuid:uuid,data:path});
}else{
html = render({LNG:LNG,iconPath:iconpath,uuid:uuid,data:{}});
}
$.dialog({
fixed: true,//不跟随页面滚动
width:450,
height:310,
id:uuid,
padding:15,
title:title,
content:html,
button:[
{name:LNG.preview,callback:function(){
var data = _app_param(dom);
core.openApp(data);
return false;
}},
{name:LNG.button_save,focus:true,callback:function(){
var data = _app_param(dom);
switch(action){
case 'user_add':
var filename = urlEncode2(G.this_path+data.name);
url = './index.php?app/user_app&action=add&path='+filename;
break;
case 'user_edit':
url = './index.php?app/user_app&path='+urlEncode2(path.path);
break;
case 'root_add':url = './index.php?app/add&name='+data.name;break;
case 'root_edit':url = './index.php?app/edit&name='+data.name+'&old_name='+path.name;break;
default:break;
}
$.ajax({
url: url,
type:'POST',
dataType:'json',
data:'data='+urlEncode2(json_encode(data)),
beforeSend:function(){
core.tips.loading();
},
error:core.ajaxError,
success: function(data) {
core.tips.close(data);
if (!data.code) return;
if (action == 'root_edit' || action == 'root_add') {
//刷新应用列表
if (!data.code) {return;};
FrameCall.top('Openapp_store','App.reload','""');
}else{
if (typeof (callback) == 'function'){
callback();
}else{
ui.f5();
}
}
}
});
}}
]
});
dom = $('.'+uuid);
//init 选中、初始化数据、显示隐藏
if (path.group) {
dom.find('option').eq(path.group).attr('selected',1);
}
dom.find('.aui_content').css('overflow','inherit');
switch(action){
case 'user_edit' :
dom.find('.name').addClass('hidden');
dom.find('.desc').addClass('hidden');
dom.find('.group').addClass('hidden');
dom.find('option[value='+path.group+']').attr('checked',true);
break;
case 'user_add':
dom.find('.desc').addClass('hidden');
dom.find('.group').addClass('hidden');
dom.find('[apptype=url]').attr('checked',true);
dom.find('[data-type=url] input[name=resize]').attr('checked',true);
dom.find('input[name=width]').attr('value','800');
dom.find('input[name=height]').attr('value','600');
dom.find('input[name=icon]').attr('value','oexe.png');
break;
case 'root_add':
dom.find('[apptype=url]').attr('checked',true);
dom.find('[data-type=url] input[name=resize]').attr('checked',true);
dom.find('input[name=width]').attr('value','800');
dom.find('input[name=height]').attr('value','600');
dom.find('input[name=icon]').attr('value','oexe.png');
break;
case 'root_edit':
dom.find('option[value='+path.group+']').attr('selected',true);
break;
default:break;
}
_bindAppEvent(dom);
};
var appList = function(){
core.appStore();
};
//ui.path.pathOperate.appAddURL('http://www.baidu.com');
var appAddURL = function(url){
if (url && url.length<4 && url.substring(0,4)!='http') return;
$.ajax({
url: './index.php?app/get_url_title&url='+url,
dataType:'json',
beforeSend:function(){
core.tips.loading();
},
success: function(result) {
var name = result.data;
core.tips.close(result);
var data = {
content:"window.open('"+url+"');",
desc: "",
group: "others",
type: "app",
icon: "internet.png",
name: name,
resize: 1,
simple: 0,
height: "",
width: ""
};
var filename = urlEncode2(G.this_path+name);
url = './index.php?app/user_app&action=add&path='+filename;
$.ajax({
url: url,
type:'POST',
dataType:'json',
data:'data='+urlEncode2(json_encode(data)),
success: function(data) {
core.tips.close(data);
if (!data.code) return;
ui.f5();
}
});
}
});
};
return{
appEdit:appEdit,
appList:appList,
appAddURL:appAddURL,
newFile:newFile,
newFolder:newFolder,
rname:rname,
unZip:unZip,
//参数为json数据可以操作多个对象
zip:zip,
copy:copy,
cute:cute,
info:info,
remove:remove,
cuteDrag:cuteDrag,
copyDrag:copyDrag,
past:past,
clipboard:clipboard,
fav:fav
}
});