git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2327 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2007-08-12 03:59:52 +00:00
commit 8326004cb2
2773 changed files with 91485 additions and 0 deletions

View file

@ -0,0 +1,3 @@
@charset "utf-8";
#step2_position { height:150px; overflow-y:scroll; border:2px solid #DDDDDD; }

View file

@ -0,0 +1,14 @@
<filter name="import_xml" module="importer" act="procImporterAdminImport">
<form>
<node target="xml_file" required="true" />
</form>
<parameter />
<response callback_func="completeImport">
<tag name="error" />
<tag name="message" />
<tag name="is_finished" />
<tag name="position" />
<tag name="file_point" />
<tag name="total_count" />
</response>
</filter>

View file

@ -0,0 +1,12 @@
<filter name="step1" module="importer" act="procImporterAdminStep1">
<form>
<node target="source_type" required="true" filter="alpha" />
</form>
<parameter />
<response callback_func="completeStep1">
<tag name="error" />
<tag name="message" />
<tag name="next_step" />
<tag name="module_list" />
</response>
</filter>

View file

@ -0,0 +1,13 @@
<filter name="step12" module="importer" act="procImporterAdminStep12">
<form>
<node target="target_module" required="true" />
<node target="target_path" required="true" />
</form>
<parameter />
<response callback_func="completeStep12">
<tag name="error" />
<tag name="message" />
<tag name="next_step" />
<tag name="category_list" />
</response>
</filter>

View file

@ -0,0 +1,136 @@
<!--%import("js/importer_admin.js")-->
<!--%import("css/importer.js")-->
<!--%import("filter/step1.xml")-->
<!--%import("filter/step12.xml")-->
<!--%import("filter/import_xml.xml")-->
<h3>{$lang->importer} <span class="gray">{$lang->cmd_management}</span></h3>
<!-- 설명 -->
<div class="infoText">{nl2br($lang->about_importer)}</div>
<!-- step 1. import하려는 XML파일의 성격 및 대상 모듈을 지정 -->
<div id="step1">
<form action="./" method="get" onsubmit="return procFilter(this, step1);">
<div class="title" >{$lang->import_step_title[1]}</div>
<div class="desc">{$lang->import_step_desc[1]}</div>
<table cellspacing="0" class="tableType3 gap1">
<tr>
<th scope="col"><label for="source_type_module">{$lang->type_module}</label></th>
<td class="left"><input type="radio" name="source_type" value="module" id="source_type_module" /> {$lang->about_type_module}</td>
</tr>
<tr>
<th scope="col"><label for="source_type_member">{$lang->type_member}</label></th>
<td class="left"><input type="radio" name="source_type" value="member" id="source_type_member" /> {$lang->about_type_member}</td>
</tr>
<tr>
<th scope="col"><label for="source_type_syncmember">{$lang->type_syncmember}</label></th>
<td class="left"><input type="radio" name="source_type" value="syncmember" id="source_type_syncmember" /> {$lang->about_type_syncmember}</td>
</tr>
</table>
<div class="tRight gap1">
<span class="button"><input type="submit" value="{$lang->cmd_next}" /></span>
</div>
</form>
</div>
<!-- step 1-2. 대상이 게시물 정보일 경우 대상 모듈 목록을 선택하도록 함 -->
<div id="step12" style="display:none">
<form action="./" method="get" onsubmit="return procFilter(this, step12);">
<div class="title">{$lang->import_step_title[12]}</div>
<div class="desc">{$lang->import_step_desc[12]}</div>
<div>
<select name="target_module" id="target_module">
</select>
</div>
<br />
<div class="desc">{nl2br($lang->about_target_path)}</div>
<div>
Path/URL : <input type="text" name="target_path" id="target_path" class="inputTypeText w400" />
</div>
<div class="tRight gap1">
<span class="button"><input type="submit" value="{$lang->cmd_next}" /></span>
</div>
</form>
</div>
<!-- step 1-3. 대상이 게시물 정보일 경우 모듈 선택후 분류가 있으면 분류 선택을 하도록 함 -->
<div id="step13" style="display:none">
<form action="./" method="get" onsubmit="return doStep13(this)">
<div class="title">{$lang->import_step_title[13]}</div>
<div class="desc">{$lang->import_step_desc[13]}</div>
<div>
<select name="target_category" id="target_category">
<option value=""></option>
</select>
</div>
<div class="tRight gap1">
<span class="button"><input type="submit" value="{$lang->cmd_next}" /></span>
</div>
</form>
</div>
<!-- step 2. XML 파일 지정 -->
<div id="step2" style="display:none">
<form action="./" method="get" onsubmit="return doStep2(this)" id="fo_step2">
<input type="hidden" name="module_srl" value="" />
<input type="hidden" name="target_path" value="" />
<input type="hidden" name="category_srl" value="" />
<input type="hidden" name="position" value="0" />
<input type="hidden" name="file_point" value="0" />
<input type="hidden" name="total_count" value="0" />
<div class="title">{$lang->import_step_title[2]}</div>
<div class="desc">{$lang->import_step_desc[2]}</div>
<table cellspacing="0" class="tableType4 gap1">
<tr>
<td class="left">
<input type="text" name="xml_file" value="./" class="inputTypeText w100" />
</td>
</tr>
</table>
<div class="tRight gap1">
<span class="button"><input type="submit" value="{$lang->cmd_next}" /></span>
</div>
<div id="step2_status" style="display:none;" class="gap1">
<table border="0" cellspacing="0" cellpadding="0" width="100%" style="margin-bottom:10px;">
<col />
<col width="120" />
<tr>
<td><div id="bar" style="width:1px;height:10px;background-color:#EFEFEF;border:1px solid #888888"></div></td>
<td class="tRight"><span id="bar_status"></span>
</tr>
</table>
<div id="step2_position" style="height:100px;overflow-y:scroll;border:2px solid #DDDDDD;padding:10px;" class="desc"></div>
<div class="tRight gap1">
<span class="button"><input type="button" value="{$lang->cmd_continue}" onclick="doManualProcess(); return false" /></span>
</div>
</div>
</form>
</div>
<!-- step 3. 회원 동기화 시작 버튼 -->
<div id="step3" style="display:none">
<form action="./" method="get" onsubmit="return doStep3(this)">
<div class="title">{$lang->import_step_title[3]}</div>
<div class="desc">{$lang->import_step_desc[3]}<br />{$lang->msg_sync_member}</div>
<div class="tRight gap1">
<span class="button"><input type="submit" value="{$lang->cmd_sync_member}" /></span>
</div>
</form>
</div>
<!-- final step. 진행 완료 또는 실패 메세지 -->
<div id="step_finish" style="display:none;"></div>

View file

@ -0,0 +1,137 @@
/**
* @file modules/importer/js/importer_admin.js
* @author zero (zero@nzeo.com)
* @brief importer에서 사용하는 javascript
**/
/* Step 1 처리 */
function completeStep1(ret_obj) {
var error = ret_obj['error'];
var message = ret_obj['message'];
var next_step = ret_obj['next_step'];
var module_list = ret_obj['module_list'];
if(module_list) {
var sel = xGetElementById("target_module");
var module_list_arr = module_list.split("\n");
for(var i=0;i<module_list_arr.length;i++) {
var pos = module_list_arr[i].indexOf(',');
var value = module_list_arr[i].substr(0,pos);
var text = module_list_arr[i].substr(pos+1);
var opt_obj = new Option(text, value, true, true);
sel.options[sel.options.length] = opt_obj;
}
sel.selectedIndex = 0;
}
xGetElementById('step1').style.display = 'none';
xGetElementById('step'+next_step).style.display = 'block';
}
/* Step 1-2 모듈선택 처리 (카테고리 있으면 카테고리 선택으로, 아니면 바로 파일 업로드로) */
function completeStep12(ret_obj) {
var error = ret_obj['error'];
var message = ret_obj['message'];
var next_step = ret_obj['next_step'];
var category_list = ret_obj['category_list'];
if(category_list) {
var sel = xGetElementById("target_category");
var category_list_arr = category_list.split("\n");
for(var i=0;i<category_list_arr.length;i++) {
var pos = category_list_arr[i].indexOf(',');
var value = category_list_arr[i].substr(0,pos);
var text = category_list_arr[i].substr(pos+1);
var opt_obj = new Option(text, value, true, true);
sel.options[sel.options.length] = opt_obj;
}
sel.selectedIndex = 0;
}
xGetElementById('step12').style.display = 'none';
xGetElementById('step'+next_step).style.display = 'block';
}
/* Step 1-3 카테고리 선택후 파일 업로드 보여주기 */
function doStep13(fo_obj) {
xGetElementById('step13').style.display = 'none';
xGetElementById('step2').style.display = 'block';
return false;
}
/* Step 2 XML파일을 입력받아서 처리~ */
function doStep2(fo_obj) {
var sel_module = xGetElementById("target_module");
if(sel_module.options.length>0) {
var module_srl = sel_module.options[sel_module.selectedIndex].value;
fo_obj.module_srl.value = module_srl;
}
var sel_category = xGetElementById("target_category");
if(sel_category.options.length>1) {
var category_srl = sel_category.options[sel_category.selectedIndex].value;
fo_obj.category_srl.value = category_srl;
}
var target_path = xGetElementById("target_path").value;
fo_obj.target_path.value = target_path;
procFilter(fo_obj, import_xml);
xGetElementById('step2_status').style.display = 'block';
return false;
}
/* Step Complete Import */
function completeImport(ret_obj) {
var message = ret_obj['message'];
var is_finished = ret_obj['is_finished'];
var position = ret_obj['position'];
var file_point = ret_obj['file_point'];
var total_count = ret_obj['total_count'];
if(total_count>0) {
var bar = xGetElementById('bar');
var status = xGetElementById('bar_status');
var per = parseInt(position/total_count*100,10)
xInnerHtml(status, position+'/'+total_count+' ('+per+'%)');
bar.style.width = per+'%';
}
if(is_finished=='Y') {
alert(ret_obj["message"]);
location.href = location.href;
} else {
var fo_obj = xGetElementById('fo_step2');
fo_obj.position.value = position;
fo_obj.file_point.value = file_point;
fo_obj.total_count.value = total_count;
message = message.replace(/&lt;/g,"<").replace(/&gt;/g,">");
var obj = xGetElementById('step2_position');
var txt = xInnerHtml(obj);
if(txt.length > 1024*10) txt = '';
if(message != "success") xInnerHtml(obj, txt+message);
obj.scrollTop += xHeight(obj);
procFilter(fo_obj, import_xml);
}
}
function doManualProcess() {
var fo_obj = xGetElementById('fo_step2');
procFilter(fo_obj, import_xml);
}
/* 회원정보와 게시물의 싱크 */
function doStep3(fo_obj) {
exec_xml('importer','procImporterAdminSync', new Array(), completeStep3);
return false;
}
function completeStep3(ret_obj) {
alert(ret_obj['message']);
location.href=location.href;
}