기본 마이그레이션용 XML및 ttxml에 대해 importing 100% 가능하도록 수정. importer 0.2 commit

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3947 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-03-17 13:41:56 +00:00
parent 1b8c765148
commit c37932cc71
27 changed files with 1593 additions and 1294 deletions

View file

@ -1,3 +1,9 @@
@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; }

View file

@ -0,0 +1,18 @@
<!--%import("js/importer_admin.js")-->
<!--%import("css/importer.css")-->
{@ $type_list = array('module'=>$lang->type_module, 'ttxml'=>$lang->type_ttxml, 'member'=>$lang->type_member, 'sync'=>$lang->type_syncmember, 'message'=>$lang->type_message) }
<h3>{$lang->importer} <span class="gray">{$lang->cmd_management}</span></h3>
<!-- 설명 -->
<div class="infoText">{nl2br($lang->about_importer)}</div>
<div class="header4">
<ul class="localNavigation">
<!--@foreach($type_list as $key => $val)-->
<li <!--@if($source_type==$key)-->class="on"<!--@end-->><a href="{getUrl('source_type',$key)}">{$val}</a></li>
<!--@end-->
</ul>
</div>

View file

@ -16,25 +16,25 @@
<col />
<caption>{$lang->import_step_title[1]} - {$lang->import_step_desc[1]}</caption>
<tr>
<th scope="col"><label for="source_type_module">{$lang->type_module}</label></th>
<th scope="col"><label for="source_type_module">1. {$lang->type_module}</label></th>
<td class="left"><input type="radio" name="source_type" value="module" id="source_type_module" /> <label for="source_type_module">{$lang->about_type_module}</label></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" /> <label for="source_type_member">{$lang->about_type_member}</label></td>
</tr>
<tr>
<th scope="col"><label for="source_type_message">{$lang->type_message}</label></th>
<td class="left"><input type="radio" name="source_type" value="message" id="source_type_message" /> <label for="source_type_message">{$lang->about_type_message}</label></td>
</tr>
<tr>
<th scope="col"><label for="source_type_ttxml">{$lang->type_ttxml}</label></th>
<th scope="col"><label for="source_type_ttxml">1. {$lang->type_ttxml}</label></th>
<td class="left"><input type="radio" name="source_type" value="ttxml" id="source_type_ttxml" /> <label for="source_type_ttxml">{$lang->about_type_ttxml}</label></td>
</tr>
<tr>
<th scope="col"><label for="source_type_syncmember">{$lang->type_syncmember}</label></th>
<th scope="col"><label for="source_type_member">2. {$lang->type_member}</label></th>
<td class="left"><input type="radio" name="source_type" value="member" id="source_type_member" /> <label for="source_type_member">{$lang->about_type_member}</label></td>
</tr>
<tr>
<th scope="col"><label for="source_type_syncmember">3. {$lang->type_syncmember}</label></th>
<td class="left"><input type="radio" name="source_type" value="sync" id="source_type_syncmember" /> <label for="source_type_syncmember">{$lang->about_type_syncmember}</label></td>
</tr>
<tr>
<th scope="col"><label for="source_type_message">4. {$lang->type_message}</label></th>
<td class="left"><input type="radio" name="source_type" value="message" id="source_type_message" /> <label for="source_type_message">{$lang->about_type_message}</label></td>
</tr>
<tr>
<th scope="row" colspan="2" class="button">
<span class="button"><input type="submit" value="{$lang->cmd_next}" /></span>

View file

@ -3,7 +3,10 @@
* @author zero (zero@nzeo.com)
* @brief importer에서 사용하는 javascript
**/
/* 회원정보와 게시물의 싱크 */
/**
* 회원정보와 게시글/댓글등의 동기화 요청 결과 처리 함수
**/
function doSync(fo_obj) {
exec_xml('importer','procImporterAdminSync', new Array(), completeSync);
return false;
@ -15,203 +18,144 @@ function completeSync(ret_obj) {
}
/* 회원정보 데이터 import */
function doImportMember(fo_obj) {
/**
* xml파일을 DB입력전에 extract를 통해 분할 캐싱을 요청하는 함수
**/
var prepared = false;
function doPreProcessing(fo_obj) {
var xml_file = fo_obj.xml_file.value;
if(!xml_file) return false;
var type = fo_obj.type.value;
xDisplay('importForm','none');
xDisplay('process','block');
xInnerHtml('status','');
setTimeout(doPrepareDot, 50);
var params = new Array();
params['xml_file'] = xml_file;
params['total_count'] = fo_obj.total_count.value;
params['success_count'] = fo_obj.success_count.value;
params['readed_line'] = fo_obj.readed_line.value;
params['type'] = type;
var response_tags = new Array("error","message", "total_count", "success_count", "readed_line", "is_finished");
exec_xml('importer','procImporterAdminMemberImport', params, completeImportMember, response_tags);
var response_tags = new Array('error','message','type','total','cur','key','status');
exec_xml('importer','procImporterAdminPreProcessing', params, completePreProcessing, response_tags);
return false;
}
function completeImportMember(ret_obj) {
var total_count = ret_obj['total_count'];
var success_count = ret_obj['success_count'];
var readed_line = ret_obj['readed_line'];
var is_finished = ret_obj['is_finished'];
/* 준비중일때 .(dot) 찍어주는.. */
function doPrepareDot() {
if(prepared) return;
if(is_finished == '1') {
var fo_obj = xGetElementById("fo_import");
fo_obj.total_count.value = 0;
fo_obj.success_count.value = 0;
fo_obj.readed_line.value = 0;
fo_obj.xml_file.disabled = false;
xGetElementById("status").style.display = "none";
xGetElementById("status_button_prev").style.display = "block";
xGetElementById("status_button").style.display = "none";
xInnerHtml("status", ret_obj['message']);
alert(ret_obj['message']);
} else {
var fo_obj = xGetElementById("fo_import");
fo_obj.total_count.value = total_count;
fo_obj.success_count.value = success_count;
fo_obj.readed_line.value = readed_line;
fo_obj.xml_file.disabled = true;
xGetElementById("status").style.display = "block";
xGetElementById("status_button_prev").style.display = "none";
xGetElementById("status_button").style.display = "block";
xInnerHtml("status", ret_obj['message']);
doImportMember(fo_obj);
}
var str = xInnerHtml('status');
if(str.length<1 || str.length - preProcessingMsg.length > 50) str = preProcessingMsg;
else str += ".";
xInnerHtml('status', str);
setTimeout(doPrepareDot, 50);
}
/* 쪽지 데이터 import */
function doImportMessage(fo_obj) {
var xml_file = fo_obj.xml_file.value;
if(!xml_file) return false;
/* 준비가 끝났을때 호출되는 함수 */
function completePreProcessing(ret_obj, response_tags) {
prepared = true;
xInnerHtml('status','');
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;
}
xDisplay('btn_reload','none');
xDisplay('btn_continue','block');
var fo_obj = xGetElementById('fo_process');
fo_obj.type.value = type;
fo_obj.total.value = total;
fo_obj.cur.value = cur;
fo_obj.key.value = key;
var fo_import = xGetElementById('fo_import');
if(fo_import && fo_import.target_module) fo_obj.target_module.value = fo_import.target_module.options[fo_import.target_module.selectedIndex].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 임포트 시작 */
function doImport() {
var fo_obj = xGetElementById('fo_process');
var params = new Array();
params['xml_file'] = xml_file;
params['total_count'] = fo_obj.total_count.value;
params['success_count'] = fo_obj.success_count.value;
params['readed_line'] = fo_obj.readed_line.value;
var response_tags = new Array("error","message", "total_count", "success_count", "readed_line", "is_finished");
exec_xml('importer','procImporterAdminMessageImport', params, completeImportMessage, response_tags);
return false;
}
function completeImportMessage(ret_obj) {
var total_count = ret_obj['total_count'];
var success_count = ret_obj['success_count'];
var readed_line = ret_obj['readed_line'];
var is_finished = ret_obj['is_finished'];
if(is_finished == '1') {
var fo_obj = xGetElementById("fo_import");
fo_obj.total_count.value = 0;
fo_obj.success_count.value = 0;
fo_obj.readed_line.value = 0;
fo_obj.xml_file.disabled = false;
xGetElementById("status").style.display = "none";
xGetElementById("status_button_prev").style.display = "block";
xGetElementById("status_button").style.display = "none";
xInnerHtml("status", ret_obj['message']);
alert(ret_obj['message']);
} else {
var fo_obj = xGetElementById("fo_import");
fo_obj.total_count.value = total_count;
fo_obj.success_count.value = success_count;
fo_obj.readed_line.value = readed_line;
fo_obj.xml_file.disabled = true;
xGetElementById("status").style.display = "block";
xGetElementById("status_button_prev").style.display = "none";
xGetElementById("status_button").style.display = "block";
xInnerHtml("status", ret_obj['message']);
doImportMessage(fo_obj);
}
}
/* 모듈 데이터 import */
function doImportModule(fo_obj) {
var target_module = fo_obj.target_module.options[fo_obj.target_module.selectedIndex].value;
if(!target_module) return false;
var xml_file = fo_obj.xml_file.value;
if(!xml_file) return false;
var params = new Array();
params['xml_file'] = xml_file;
params['target_module'] = target_module;
params['total_count'] = fo_obj.total_count.value;
params['success_count'] = fo_obj.success_count.value;
params['readed_line'] = fo_obj.readed_line.value;
var response_tags = new Array("error","message", "total_count", "success_count", "readed_line", "is_finished");
exec_xml('importer','procImporterAdminModuleImport', params, completeImportModule, response_tags);
return false;
}
function completeImportModule(ret_obj, response_tags) {
var total_count = ret_obj['total_count'];
var success_count = ret_obj['success_count'];
var readed_line = ret_obj['readed_line'];
var is_finished = ret_obj['is_finished'];
if(is_finished == '1') {
var fo_obj = xGetElementById("fo_import");
fo_obj.target_module.disabled = false;
fo_obj.xml_file.disabled = false;
fo_obj.total_count.value = 0;
fo_obj.success_count.value = 0;
fo_obj.readed_line.value = 0;
xGetElementById("status").style.display = "none";
xGetElementById("status_button_prev").style.display = "block";
xGetElementById("status_button").style.display = "none";
xInnerHtml("status", ret_obj['message']);
alert(ret_obj['message']);
} else {
var fo_obj = xGetElementById("fo_import");
fo_obj.target_module.disabled = true;
fo_obj.xml_file.disabled = true;
fo_obj.total_count.value = total_count;
fo_obj.success_count.value = success_count;
fo_obj.readed_line.value = readed_line;
xGetElementById("status").style.display = "block";
xGetElementById("status_button_prev").style.display = "none";
xGetElementById("status_button").style.display = "block";
xInnerHtml("status", ret_obj['message']);
doImportModule(fo_obj);
}
}
/* TTXML 데이터 import */
function doImportTTXML(fo_obj) {
var target_module = fo_obj.target_module.options[fo_obj.target_module.selectedIndex].value;
if(!target_module) return false;
var xml_file = fo_obj.xml_file.value;
if(!xml_file) return false;
var params = new Array();
params['xml_file'] = xml_file;
params['target_module'] = target_module;
params['total_count'] = fo_obj.total_count.value;
params['success_count'] = fo_obj.success_count.value;
params['readed_line'] = fo_obj.readed_line.value;
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['unit_count'] = fo_obj.unit_count.value;
params['user_id'] = fo_obj.user_id.value;
var response_tags = new Array("error","message", "total_count", "success_count", "readed_line", "is_finished");
displayProgress(params['total'], params['cur']);
exec_xml('importer','procImporterAdminTTXMLImport', params, completeImportTTXML, response_tags);
var response_tags = new Array('error','message','type','total','cur','key');
show_waiting_message = false;
exec_xml('importer','procImporterAdminImport', params, completeImport, response_tags);
show_waiting_message = true;
return false;
}
function completeImportTTXML(ret_obj, response_tags) {
var total_count = ret_obj['total_count'];
var success_count = ret_obj['success_count'];
var readed_line = ret_obj['readed_line'];
var is_finished = ret_obj['is_finished'];
xGetElementById("status").style.display = 'block';
xInnerHtml("status", ret_obj['message']);
/* 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'];
alert(ret_obj['message']);
displayProgress(total, cur);
var fo_obj = xGetElementById('fo_process');
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();
xDisplay('process','none');
xDisplay('importForm','block');
xGetElementById('fo_import').reset();
}
}
/* 상태 표시 함수 */
function displayProgress(total, cur) {
// 진행률 구함
var per = 0;
if(total > 0) per = Math.round(cur/total*100);
else per = 100;
if(!per) per = 1;
var status = '<div class="progressBox"><div class="progress1" style="width:'+per+'%;">'+per+'%&nbsp;</div>';
status += '<div class="progress2">'+cur+'/'+total+'</div>';
status += '<div class="clear"></div></div>';
xInnerHtml('status', status);
}

View file

@ -1,33 +1,34 @@
<!--%import("js/importer_admin.js")-->
<!--%import("css/importer.css")-->
<!--#include("header.html")-->
<h3>{$lang->importer} <span class="gray">{$lang->cmd_management}</span></h3>
<div class="infoText">{nl2br($lang->about_importer)}</div>
<div>
<form action="./" method="get" onsubmit="return doImportMember(this)" id="fo_import">
<input type="hidden" name="total_count" value="0" />
<input type="hidden" name="success_count" value="0" />
<input type="hidden" name="readed_line" value="0" />
<div id="importForm">
<form action="./" method="get" onsubmit="return doPreProcessing(this)" id="fo_import">
<input type="hidden" name="type" value="member" />
<table cellspacing="0" class="adminTable">
<caption>{$lang->import_step_title[2]} - {$lang->import_step_desc[2]}</caption>
<tr>
<td>
<input type="text" name="xml_file" value="./" class="inputTypeText w400" />
<input type="text" name="xml_file" value="./" class="inputTypeText w700" />
<p>ex1) ../member.xml</p>
<p>ex2) http://...../member.xml</p>
</td>
</tr>
<tr>
<th class="button">
<div id="status_button_prev"><span class="button"><input type="submit" value="{$lang->cmd_next}" /></span></div>
<div id="status_button" style="display:none"><span class="button"><input type="submit" value="{$lang->cmd_continue}" /></span></div>
<select name="unit_count">
<option value="50">50</option>
<option value="100">100</option>
<option value="200">200</option>
<option value="300" selected="selected">300</option>
<option value="400">400</option>
<option value="500">500</option>
<option value="1000">1000</option>
</select>
<span class="button"><input type="submit" value="{$lang->cmd_next}" /></span>
</th>
</tr>
</table>
<div id="status" style="display:none"></div>
</form>
</div>
<!--#include("./process.html")-->

View file

@ -1,33 +1,34 @@
<!--%import("js/importer_admin.js")-->
<!--%import("css/importer.css")-->
<!--#include("header.html")-->
<h3>{$lang->importer} <span class="gray">{$lang->cmd_management}</span></h3>
<div class="infoText">{nl2br($lang->about_importer)}</div>
<div>
<form action="./" method="get" onsubmit="return doImportMessage(this)" id="fo_import">
<input type="hidden" name="total_count" value="0" />
<input type="hidden" name="success_count" value="0" />
<input type="hidden" name="readed_line" value="0" />
<div id="importForm">
<form action="./" method="get" onsubmit="return doPreProcessing(this)" id="fo_import">
<input type="hidden" name="type" value="message" />
<table cellspacing="0" class="adminTable">
<caption>{$lang->import_step_title[2]} - {$lang->import_step_desc[2]}</caption>
<tr>
<td>
<input type="text" name="xml_file" value="./" class="inputTypeText w400" />
<input type="text" name="xml_file" value="./" class="inputTypeText w700" />
<p>ex1) ../message.xml</p>
<p>ex2) http://...../message.xml</p>
</td>
</tr>
<tr>
<th class="button">
<div id="status_button_prev"><span class="button"><input type="submit" value="{$lang->cmd_next}" /></span></div>
<div id="status_button" style="display:none"><span class="button"><input type="submit" value="{$lang->cmd_continue}" /></span></div>
<select name="unit_count">
<option value="50">50</option>
<option value="100">100</option>
<option value="200">200</option>
<option value="300" selected="selected">300</option>
<option value="400">400</option>
<option value="500">500</option>
<option value="1000">1000</option>
</select>
<span class="button"><input type="submit" value="{$lang->cmd_next}" /></span>
</th>
</tr>
</table>
<div id="status" style="display:none"></div>
</form>
</div>
<!--#include("./process.html")-->

View file

@ -1,23 +1,15 @@
<!--%import("js/importer_admin.js")-->
<!--%import("css/importer.css")-->
<h3>{$lang->importer} <span class="gray">{$lang->cmd_management}</span></h3>
<!-- 설명 -->
<div class="infoText">{nl2br($lang->about_importer)}</div>
<!--#include("header.html")-->
<!-- step 1-2. 대상이 게시물 정보일 경우 대상 모듈 목록을 선택하도록 함 -->
<div>
<form action="./" method="get" onsubmit="return doImportModule(this)" id="fo_import">
<input type="hidden" name="total_count" value="0" />
<input type="hidden" name="success_count" value="0" />
<input type="hidden" name="readed_line" value="0" />
<div id="importForm">
<form action="./" method="get" onsubmit="return doPreProcessing(this)" id="fo_import">
<input type="hidden" name="type" value="module" />
<table cellspacing="0" class="adminTable">
<caption>{$lang->import_step_title[1]} - {$lang->import_step_desc[12]}</caption>
<tr>
<td>
<select name="target_module">
<select name="target_module" class="w400">
<option value="">====================</option>
<!--@foreach($mid_list as $key => $val)-->
<option value="{$val->module_srl}">{$val->browser_title}</option>
@ -31,21 +23,31 @@
<caption>{$lang->import_step_title[2]} - {$lang->import_step_desc[2]}</caption>
<tr>
<td>
<input type="text" name="xml_file" value="./" class="inputTypeText w400" />
<input type="text" name="xml_file" value="./" class="inputTypeText w700" />
<p>ex1) ../module.xml</p>
<p>ex2) http://...../module.xml</p>
</td>
</tr>
<tr>
<th class="button">
<div id="status_button_prev"><span class="button"><input type="submit" value="{$lang->cmd_next}" /></span></div>
<div id="status_button" style="display:none"><span class="button"><input type="submit" value="{$lang->cmd_continue}" /></span></div>
<select name="unit_count">
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100" selected="select">100</option>
<option value="200">200</option>
<option value="300">300</option>
<option value="400">400</option>
<option value="500">500</option>
<option value="1000">1000</option>
</select>
<span class="button"><input type="submit" value="{$lang->cmd_next}" /></span>
</th>
</tr>
</table>
<div id="status" style="display:none"></div>
</form>
</div>
<!--#include("./process.html")-->

View file

@ -0,0 +1,30 @@
<script type="text/javascript">
var preProcessingMsg = "{$lang->preprocessing}";
</script>
<div id="process" style="display:none;">
<form action="./" method="get" onsubmit="return doImport()" id="fo_process">
<input type="hidden" name="type" value="" />
<input type="hidden" name="total" value="" />
<input type="hidden" name="cur" value="" />
<input type="hidden" name="key" value="" />
<input type="hidden" name="target_module" value="" />
<input type="hidden" name="unit_count" value="" />
<input type="hidden" name="user_id" value="" />
<table cellspacing="0" class="adminTable">
<caption>{$lang->import_step_title[99]} - {$lang->import_step_desc[99]}</caption>
<tr>
<td>
<div id="status"></div>
</td>
</tr>
<tr>
<th class="button">
<div id="btn_reload" style="display:block;"><span class="button"><input type="button" value="{$lang->cmd_reload}" onclick="location.reload(); return false;"/></span></div>
<div id="btn_continue" style="display:none;"><span class="button"><input type="submit" value="{$lang->cmd_continue}" /></span></div>
</th>
</tr>
</table>
</form>
</div>

View file

@ -1,16 +1,10 @@
<!--%import("js/importer_admin.js")-->
<!--%import("css/importer.css")-->
<!--#include("header.html")-->
<h3>{$lang->importer} <span class="gray">{$lang->cmd_management}</span></h3>
<!-- 설명 -->
<div class="infoText">{nl2br($lang->about_importer)}</div>
<form action="./" method="get" onsubmit="return doSync(this)">
<table cellspacing="0" class="adminTable">
<caption>{$lang->import_step_title[3]} - {$lang->import_step_desc[3]}</caption>
<tr>
<td><span class="button"><input type="submit" value="{$lang->cmd_sync_member}" /></span></td>
</tr>
</table>
</form>
<form action="./" method="get" onsubmit="return doSync(this)">
<table cellspacing="0" class="adminTable">
<caption>{$lang->import_step_title[3]} - {$lang->import_step_desc[3]}</caption>
<tr>
<td><span class="button"><input type="submit" value="{$lang->cmd_sync_member}" /></span></td>
</tr>
</table>
</form>

View file

@ -1,17 +1,9 @@
<!--%import("js/importer_admin.js")-->
<!--%import("css/importer.css")-->
<h3>{$lang->importer} <span class="gray">{$lang->cmd_management}</span></h3>
<!-- 설명 -->
<div class="infoText">{nl2br($lang->about_importer)}</div>
<!--#include("header.html")-->
<!-- step 1-2. 대상이 게시물 정보일 경우 대상 모듈 목록을 선택하도록 함 -->
<div>
<form action="./" method="get" onsubmit="return doImportTTXML(this)" id="fo_import">
<input type="hidden" name="total_count" value="0" />
<input type="hidden" name="success_count" value="0" />
<input type="hidden" name="readed_line" value="0" />
<div id="importForm">
<form action="./" method="get" onsubmit="return doPreProcessing(this)" id="fo_import">
<input type="hidden" name="type" value="ttxml" />
<table cellspacing="0" class="adminTable">
<caption>{$lang->import_step_title[1]} - {$lang->import_step_desc[12]}</caption>
@ -40,21 +32,30 @@
<caption>{$lang->import_step_title[2]} - {$lang->import_step_desc[2]}</caption>
<tr>
<td>
<input type="text" name="xml_file" value="./" class="inputTypeText w400" />
<input type="text" name="xml_file" value="./" class="inputTypeText w700" />
<p>ex1) ../module.xml</p>
<p>ex2) http://...../module.xml</p>
</td>
</tr>
<tr>
<th class="button">
<div id="status_button_prev"><span class="button"><input type="submit" value="{$lang->cmd_next}" /></span></div>
<div id="status_button" style="display:none"><span class="button"><input type="submit" value="{$lang->cmd_continue}" /></span></div>
<select name="unit_count">
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100" selected="selected">100</option>
<option value="200">200</option>
<option value="300">300</option>
<option value="400">400</option>
<option value="500">500</option>
<option value="1000">1000</option>
</select>
<span class="button"><input type="submit" value="{$lang->cmd_next}" /></span>
</th>
</tr>
</table>
<div id="status" style="display:none"></div>
</form>
</div>
<!--#include("./process.html")-->