사용자의 전체 하드 드라이브에 대한 폴더 선택을 제시해야합니다 (스크립트는 사용자 PC에서 실행 됨). 이 목록에서 사용자는 하나 이상의 폴더를 선택할 수 있습니다. 프리젠 테이션을 위해 jquery 라이브러리 dynatree (http://code.google.com/p/dynatree/)를 사용하고 있습니다. 지정된 드라이브 문자 또는 경로의폴더 선택 대화 상자의 성능
1.List 모든 폴더를이 재귀 함수를 통해 Dynatree 읽을 수있는 형식으로 구문 분석 :
내 스크립트는 다음과 같이 작동
코드 :
function getDirectory($path = '.', $level = 0, $id = 0){
$ignore = array('cgi-bin', '.', '..' , 'windows', 'user_folders', 'user_profiles');
$dh = @opendir($path);
$zaehl = 0;
if($level != 0) echo(', children: [ ');
while(false !== ($file = readdir($dh))){
$zaehl++;
if(!in_array(strtolower($file), $ignore)){
$spaces = str_repeat(' ', ($level * 4));
if(is_dir("$path/$file")){
echo('{title: "'.$file.'", isFolder: true, key: "'.$path.'/'.$file.'"');
echo("\n");
getDirectory("$path/$file", ($level+1), $id.'.'.$zaehl);
echo('},');
echo("\n");
}
}
}
if($level != 0)
{
echo(']');
}
closedir($dh);
}
2.Present 목록 사용 Dynatree :
$("#tree3").dynatree({
checkbox: true,
selectMode: 3,
children: treeData,
onSelect: function(select, node) {
var selKeys = $.map(node.tree.getSelectedNodes(), function(node){
return node.data.key;
});
var selRootNodes = node.tree.getSelectedNodes(true);
var selRootKeys = $.map(selRootNodes, function(node){
return node.data.key;
});
$("#echoSelectionRootKeys3").text(selRootKeys.join(", "));
$("#echoSelectionRoots3").text(selRootNodes.join(", "));
},
onDblClick: function(node, event) {
node.toggleSelect();
},
onKeydown: function(node, event) {
if(event.which == 32) {
node.toggleSelect();
return false;
}
}
});
내가 생을하지는 nk 프로세스 번호 2는 문제입니다. 기본적으로 제작자 자습서에서 복사했습니다. 폴더를 나열하는 동안 프로세스 1에서 실수를 저질렀다고 생각합니다.
몇 개의 폴더가있는 하드 드라이브 매개 변수로 getDirectory 스크립트를 실행하면 매력처럼 작동합니다. 중첩 된 폴더가 많은 (일반적으로) 하드 드라이브의 경우 몇 분 정도 지속됩니다.
누구나 폴더를 나열하는 더 좋은 방법이나 서버 측 폴더 만들기 대화 상자를 표시하는 완전한 해결책을 알고 있습니까?