diff --git a/modules/importer/tpl/css/importer.min.css b/modules/importer/tpl/css/importer.min.css new file mode 100644 index 000000000..2b0da7358 --- /dev/null +++ b/modules/importer/tpl/css/importer.min.css @@ -0,0 +1 @@ +@charset "utf-8";#step2_position{height:150px;overflow-y:scroll;border:2px solid #DDDDDD}div.progressBox{width:700px;margin:30px auto;border:1px solid #DDDDDD;white-space:nowrap;overflow:hidden;height:20px}div.progress1{float:left;border-right:1px solid #DDDDDD;text-align:right;overflow:hidden;background-color:#361DB5;color:#FFFFFF;font-family:tahoma;font-family:tahoma;font-size:9pt;white-space:nowrap;height:20px}div.progress2{float:left;text-align:left;overflow:hidden;white-space:nowrap;color:#444444;font-family:tahoma;font-size:9pt;height:20px}.w700{width:700px} \ No newline at end of file diff --git a/modules/importer/tpl/header.html b/modules/importer/tpl/header.html index 9650b8eda..c9bb3df26 100644 --- a/modules/importer/tpl/header.html +++ b/modules/importer/tpl/header.html @@ -1,5 +1,10 @@ - - + + + + + + + {@ $type_list = array('module'=>$lang->type_module, 'ttxml'=>$lang->type_ttxml, 'member'=>$lang->type_member, 'sync'=>$lang->type_syncmember, 'message'=>$lang->type_message) } @@ -10,9 +15,7 @@
diff --git a/modules/importer/tpl/index.html b/modules/importer/tpl/index.html index 4eb61309d..2c0b66e25 100644 --- a/modules/importer/tpl/index.html +++ b/modules/importer/tpl/index.html @@ -1,5 +1,10 @@ - - + + + + + + +

{$lang->importer} {$lang->cmd_management}

@@ -8,7 +13,7 @@
-
+ diff --git a/modules/importer/tpl/js/importer_admin.js b/modules/importer/tpl/js/importer_admin.js index dd97835bc..4a23c17c6 100644 --- a/modules/importer/tpl/js/importer_admin.js +++ b/modules/importer/tpl/js/importer_admin.js @@ -8,163 +8,166 @@ * 회원정보와 게시글/댓글등의 동기화 요청 및 결과 처리 함수 **/ function doSync(fo_obj) { - exec_xml('importer','procImporterAdminSync', new Array(), completeSync); + exec_xml( + 'importer', + 'procImporterAdminSync', + [], + function(ret){ + alert(ret.message); + location.href = location.href; + } + ); return false; } -function completeSync(ret_obj) { - alert(ret_obj['message']); - location.href=location.href; -} - - /** * xml파일을 DB입력전에 extract를 통해 분할 캐싱을 요청하는 함수 **/ -var prepared = false; -function doPreProcessing(fo_obj) { - var xml_file = fo_obj.xml_file.value; +function doPreProcessing(form) { + var xml_file, type, resp, prepared = false, $ = jQuery, $status, $process, $form; + + xml_file = form.elements['xml_file'].value; + type = form.elements['type'].value; + if(!xml_file) return false; - var type = fo_obj.type.value; + $form = $('#importForm').hide(); + $process = $('#process').show(); + $status = $('#status').empty(); + + // display dots while preparing + (function(){ + if(prepared) return; + + var str = $status.html(); + (!str.length || str.length - preProcessingMsg.length > 50)?str=preProcessingMsg:str+='.'; + + $status.html(str); + + setTimeout(arguments.callee, 50); + })(); - jQuery('#importForm').hide(); - jQuery('#process').show(); - jQuery('#status').empty(); - prepared = false; setTimeout(doPrepareDot, 50); - var params = new Array(); - params['xml_file'] = xml_file; - params['type'] = type; + function on_complete(ret) { + var $reload, $cont, fo_proc, fo_import, elems, i, c, key, to_copy; - var response_tags = new Array('error','message','type','total','cur','key','status'); - exec_xml('importer','procImporterAdminPreProcessing', params, completePreProcessing, response_tags); + prepared = true; + $status.empty(); + + $reload = $('#btn_reload'); + $cont = $('#btn_continue'); + + if(ret.status == -1) { + $form.show(); + $reload.show(); + $process.hide(); + $cont.hide(); + return alert(ret.message); + } + + $reload.hide(); + $cont.show(); + + fo_proc = get_by_id('fo_process'); + elems = fo_proc.elements; + + for(i=0,c=resp.length; i < c; i++) { + key = resp[i]; + elems[key]?elems[key].value=ret[key]:0; + } + + fo_import = get_by_id('fo_import'); + if(fo_import) { + to_copy = ['target_module','guestbook_target_module','user_id', 'unit_count']; + for(i=0,c=to_copy.length; i < c; i++) { + key = to_copy[i]; + if(fo_import.elements[key]) fo_proc.elements[key].value = fo_import.elements[key].value; + } + } + + doImport(); + } + + exec_xml( + 'importer', // module + 'procImporterAdminPreProcessing', // action + {type:type, xml_file:xml_file}, // parameters + on_complete, // callback + resp=['error','message','type','total','cur','key','status'] // response tags + ); return false; } -/* 준비중일때 .(dot) 찍어주는.. */ -function doPrepareDot() { - if(prepared) return; - - var str = jQuery('#status').html(); - if(str.length < 1 || str.length - preProcessingMsg.length > 50) str = preProcessingMsg; - else str += "."; - - jQuery('#status').html(str); - setTimeout(doPrepareDot, 50); -} - -/* 준비가 끝났을때 호출되는 함수 */ -function completePreProcessing(ret_obj, response_tags) { - prepared = true; - jQuery('#status').empty(); - - var status = ret_obj['status']; - var message = ret_obj['message']; - var type = ret_obj['type']; - var total = parseInt(ret_obj['total'],10); - var cur = parseInt(ret_obj['cur'],10); - var key = ret_obj['key']; - - if(status == -1) { - xDisplay('importForm','block'); - xDisplay('process','none'); - xDisplay('btn_reload','block'); - xDisplay('btn_continue','none'); - alert(message); - return; - } - - jQuery('#btn_reload').hide(); - jQuery('#btn_continue').show(); - - var fo_obj = jQuery('#fo_process').get(0); - fo_obj.type.value = type; - fo_obj.total.value = total; - fo_obj.cur.value = cur; - fo_obj.key.value = key; - - var fo_import = jQuery('#fo_import').get(0); - if(fo_import && fo_import.target_module) fo_obj.target_module.value = fo_import.target_module.value; - if(fo_import && fo_import.guestbook_target_module) fo_obj.guestbook_target_module.value = fo_import.guestbook_target_module.value; - if(fo_import && fo_import.user_id) fo_obj.user_id.value = fo_import.user_id.value; - - fo_obj.unit_count.value = fo_import.unit_count.options[fo_import.unit_count.selectedIndex].value; - - // extract된 파일을 이용해서 import - doImport(); -} - -/* @brief 임포트 시작 */ +/* @brief Start importing */ function doImport() { - var fo_obj = jQuery('#fo_process').get(0); + var form = get_by_id('fo_process'), elems = form.elements, i, c, params={}, resp; - var params = new Array(); - params['type'] = fo_obj.type.value; - params['total'] = fo_obj.total.value; - params['cur'] = fo_obj.cur.value; - params['key'] = fo_obj.key.value; - params['target_module'] = fo_obj.target_module.value; - params['guestbook_target_module'] = fo_obj.guestbook_target_module.value; - params['unit_count'] = fo_obj.unit_count.value; - params['user_id'] = fo_obj.user_id.value; + for(i=0,c=elems.length; i < c; i++) { + params[elems[i].name] = elems[i].value; + } - displayProgress(params['total'], params['cur']); + displayProgress(params.total, params.cur); - var response_tags = new Array('error','message','type','total','cur','key'); + function on_complete(ret, response_tags) { + var i, c, key; + + for(i=0,c=resp.length; i < c; i++) { + key = resp[i]; + elems[key]?elems[key].value=ret_obj[key]:0; + } + + ret.total = parseInt(ret.total, 10) || 0; + ret.cur = parseInt(ret.cur, 10) || 0; + + if(ret.total > ret.cur) { + doImport(); + } else { + alert(ret.message); + try { + form.reset(); + get_by_id('fo_import').reset(); + jQuery('#process').hide(); + jQuery('#importForm').show(); + } catch(e){}; + } + } show_waiting_message = false; - exec_xml('importer','procImporterAdminImport', params, completeImport, response_tags); + exec_xml( + 'importer', // module + 'procImporterAdminImport', // act + params, + on_complete, // callback + resp = ['error','message','type','total','cur','key'] // response tags + ); show_waiting_message = true; return false; } - -/* import중 표시 */ -function completeImport(ret_obj, response_tags) { - var message = ret_obj['message']; - var type = ret_obj['type']; - var total = parseInt(ret_obj['total'], 10); - var cur = parseInt(ret_obj['cur'], 10); - var key = ret_obj['key']; - - displayProgress(total, cur); - - var fo_obj = jQuery('#fo_process').get(0); - fo_obj.type.value = type; - fo_obj.total.value = total; - fo_obj.cur.value = cur; - fo_obj.key.value = key; - - // extract된 파일을 이용해서 import - if(total > cur) doImport(); - else { - alert(message); - fo_obj.reset(); - jQuery('#process').hide(); - jQuery('#importForm').show(); - jQuery('#fo_import').get(0).reset(); - } -} - -/* 상태 표시 함수 */ +/* display progress */ function displayProgress(total, cur) { - // 진행률 구함 - var per = 0; - if(total > 0) per = Math.round(cur / total * 100); - else per = 100; - if(!per) per = 1; + var per, stat, $stat; - var status = '
'+per+'% 
'; - status += '
'+cur+'/'+total+'
'; - status += '
'; - jQuery('#status').html(status); + per = Math.max(total?Math.round(cur/total*100):100, 1); + + $stat = jQuery('#status'); + if(!$stat.find('div.progress1').length) { + $stat.html( '
' ); + } + + $stat + .find('div.progress1') + .html(per+' ') + .css('width', per+'%') + .end() + .find('div.progress2') + .text(cur+'/'+total); } function insertSelectedModule(id, module_srl, mid, browser_title) { - jQuery('#' + id).val(module_srl); - jQuery('#_' + id).val(browser_title+' ('+mid+')'); + get_by_id(id).value = module_srl; + get_by_id('_'+id).value = browser_title + ' ('+mid+')'; } diff --git a/modules/importer/tpl/js/importer_admin.min.js b/modules/importer/tpl/js/importer_admin.min.js new file mode 100644 index 000000000..b3a10cd18 --- /dev/null +++ b/modules/importer/tpl/js/importer_admin.min.js @@ -0,0 +1,12 @@ +/** + * @file modules/importer/js/importer_admin.js + * @author NHN (developers@xpressengine.com) + * @brief importer에서 사용하는 javascript + **/ +function doSync(fo_obj){exec_xml('importer','procImporterAdminSync',[],function(ret){alert(ret.message);location.href=location.href});return false} +function doPreProcessing(form){var xml_file,type,resp,prepared=false,$=jQuery,$status,$process,$form;xml_file=form.elements['xml_file'].value;type=form.elements['type'].value;if(!xml_file)return false;$form=$('#importForm').hide();$process=$('#process').show();$status=$('#status').empty();(function(){if(prepared)return;var str=$status.html();(!str.length||str.length-preProcessingMsg.length>50)?str=preProcessingMsg:str+='.';$status.html(str);setTimeout(arguments.callee,50)})();setTimeout(doPrepareDot,50) +function on_complete(ret){var $reload,$cont,fo_proc,fo_import,elems,i,c,key,to_copy;prepared=true;$status.empty();$reload=$('#btn_reload');$cont=$('#btn_continue');if(ret.status==-1){$form.show();$reload.show();$process.hide();$cont.hide();return alert(ret.message)};$reload.hide();$cont.show();fo_proc=get_by_id('fo_process');elems=fo_proc.elements;for(i=0,c=resp.length;iret.cur){doImport()}else{alert(ret.message);try{form.reset();get_by_id('fo_import').reset();jQuery('#process').hide();jQuery('#importForm').show()}catch(e){}}};show_waiting_message=false;exec_xml('importer','procImporterAdminImport',params,on_complete,resp=['error','message','type','total','cur','key']);show_waiting_message=true;return false} +function displayProgress(total,cur){var per,stat,$stat;per=Math.max(total?Math.round(cur/total*100):100,1);$stat=jQuery('#status');if(!$stat.find('div.progress1').length)$stat.html('
');$stat.find('div.progress1').html(per+' ').css('width',per+'%').end().find('div.progress2').text(cur+'/'+total)} +function insertSelectedModule(id,module_srl,mid,browser_title){get_by_id(id).value=module_srl;get_by_id('_'+id).value=browser_title+' ('+mid+')'} \ No newline at end of file