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

554 lines
14 KiB
JavaScript
Raw Normal View History

2014-09-17 16:16:17 +00:00
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
}
});