merge from 1.7.3.5(r13153:r13167)

git-svn-id: http://xe-core.googlecode.com/svn/trunk@13168 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ngleader 2013-09-29 23:32:39 +00:00
parent cc47d2b247
commit 2d3f149b5a
2042 changed files with 129266 additions and 126243 deletions

View file

@ -1,8 +1,7 @@
<!--@if(__DEBUG__)-->
<load target="js/importer_admin.js" usecdn="true" />
<!--@else-->
<load target="js/importer_admin.min.js" usecdn="true" />
<!--@end-->
<load cond="__DEBUG__" target="js/importer_admin.js" usecdn="true" />
<load cond="!__DEBUG__" target="js/importer_admin.min.js" usecdn="true" />
{@ $type_list = array('module'=>$lang->type_module, 'ttxml'=>$lang->type_ttxml, 'member'=>$lang->type_member, 'sync'=>$lang->type_syncmember, 'message'=>$lang->type_message) }
<h1 class="h1">{$lang->importer}</h1>
<div class="x_page-header">
<h1>{$lang->importer} <a class="x_icon-question-sign" href="./admin/help/index.html#UMAN_content_importer" target="_blank">{$lang->help}</a></h1>
</div>
<p>{nl2br($lang->about_importer)}</p>

View file

@ -1,118 +1,83 @@
<include target="./header.html" />
<load target="js/importer_admin.js" usecdn="true" />
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/importer/tpl/index/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form action="./" class="form" method="get" onsubmit="return doPreProcessing(this, 'documentForm')" id="documentForm">
<form class="section" action="./" method="get" onsubmit="return doPreProcessing(this, 'documentForm')" id="documentForm">
<input type="hidden" name="act" value="" />
<input type="hidden" name="type" value="module" />
<input type="hidden" name="unit_count" value="10" />
<h2 class="h2">{$lang->type_module}</h2>
<ul>
<li>
<p class="q">{$lang->xml_path} {$lang->path_info}</p>
<p class="a checkxml">
<input type="text" name="xml_file" value="./" />
<button type="button">{$lang->cmd_check_path}</button>
<em class="desc"></em><!--//class="error|success"-->
</p>
</li>
<li class="xml ttxml modulefinder">
<p class="q">{$lang->data_destination} <br />{$lang->import_desc}</p>
<div class="a">
<input type="text" name="site_keyword" /> <a href="#suggestion1" class="tgAnchor findsite">{$lang->find_site}</a>
<div id="suggestion1" class="tgContent suggestion">
<ul></ul>
</div>
</div>
<p class="a">
<select class="moduleList" style="width:290px">
<option>{$lang->select_module}</option>
</select>
</p>
<p class="a">
<select class="moduleIdList" style="width:290px" name="target_module">
<option>{$lang->select_module_id}</option>
</select>
</p>
</li>
<li class="ttxml modulefinder">
<p class="q">{$lang->guestbook_destination}</p>
<div class="a">
<input type="text" name="site_keyword" /> <a href="#suggestion3" class="tgAnchor findsite">{$lang->find_site}</a>
<div id="suggestion3" class="tgContent suggestion">
<ul></ul>
</div>
</div>
<p class="a">
<select class="moduleList" style="width:290px">
<option>{$lang->select_module}</option>
</select>
</p>
<p class="a">
<select class="moduleIdList" style="width:290px" name="guestbook_target_module">
<option>{$lang->select_module_id}</option>
</select>
</p>
</li>
<li class="ttxml">
<p class="q">{$lang->about_ttxml_user_id}</p>
<p class="a"><input type="text" name="user_id" value="{$logged_info->user_id}" /></p>
</li>
<li class="syncmember">
<p class="q">{$lang->import_step_desc[3]}</p>
<p class="a"><input type="checkbox" name="isSync" value="Y" /> {$lang->type_syncmember}</p>
</li>
</ul>
<input type="hidden" name="xe_validator_id" value="modules/importer/tpl/index/1" />
<h2>{$lang->type_module}</h2>
<div class="x_control-group checkxml">
<span class="x_input-append">
<label>{$lang->xml_path}</label>
<input type="text" name="xml_file" value="./" style="width:280px;font:11px Tahoma, Geneva, sans-serif" />
<button type="button" class="x_btn">{$lang->cmd_check_path}</button>
</span>
<p class="x_help-inline" style="line-height:26px"></p>
</div>
<div class="x_control-group xml ttxml">
<label>{$lang->data_destination}</label>
<input type="text" name="target_module" class="module_search" />
</div>
<div class="x_control-group ttxml">
<label>{$lang->guestbook_destination}</label>
<input type="text" name="guestbook_target_module" class="module_search" />
</div>
<div class="ttxml x_control-group">
<label>{$lang->about_ttxml_user_id}</label>
<input type="text" name="user_id" value="{$logged_info->user_id}" />
</div>
<div class="syncmember x_control-group">
<label><input type="checkbox" name="isSync" value="Y" /> {$lang->type_syncmember}</label>
<p class="x_help-block">{$lang->import_step_desc[3]}</p>
</div>
<div class="btnArea">
<span class="btn"><input type="submit" value="{$lang->importer}" /></span>
<button type="submit" class="x_btn x_btn-primary">{$lang->importer}</button>
</div>
</form>
<form action="./" class="form" method="get" onsubmit="return doPreProcessing(this, 'memberForm')" id="memberForm">
<form class="section" action="./" method="get" onsubmit="return doPreProcessing(this, 'memberForm')" id="memberForm">
<input type="hidden" name="type" value="member" />
<input type="hidden" name="unit_count" value="100" />
<h2 class="h2">{$lang->type_member}</h2>
<ul>
<li>
<p class="q">{$lang->xml_path} {$lang->path_info}</p>
<p class="a checkxml">
<input type="text" name="xml_file" value="./" />
<button type="button">{$lang->cmd_check_path}</button>
<em class="desc">{$lang->msg_no_xml_file}</em>
</p>
</li>
<li class="syncmember">
<p class="q">{$lang->import_step_desc[3]}</p>
<p class="a"><input type="checkbox" name="isSync" value="Y" /> {$lang->type_syncmember}</p>
</li>
</ul>
<input type="hidden" name="xe_validator_id" value="modules/importer/tpl/index/1" />
<h2>{$lang->type_member}</h2>
<div class="x_control-group checkxml">
<span class="x_input-append">
<label>{$lang->xml_path}</label>
<input type="text" name="xml_file" value="./" style="width:280px;font:11px Tahoma, Geneva, sans-serif" />
<button type="button" class="x_btn">{$lang->cmd_check_path}</button>
</span>
<p class="x_help-inline" style="line-height:26px">{$lang->msg_no_xml_file}</p>
</div>
<div class="x_control-group syncmember">
<label><input type="checkbox" name="isSync" value="Y" /> {$lang->type_syncmember}</label>
<p class="x_help-block">{$lang->import_step_desc[3]}</p>
</div>
<div class="btnArea">
<span class="btn"><input type="submit" value="{$lang->importer}" /></span>
<button type="submit" class="x_btn x_btn-primary">{$lang->importer}</button>
</div>
</form>
<form action="./" class="form" method="get" onsubmit="return doPreProcessing(this)" id="fo_import">
<form class="section" action="./" method="get" onsubmit="return doPreProcessing(this)" id="fo_import">
<input type="hidden" name="type" value="message" />
<input type="hidden" name="unit_count" value="100" />
<h2 class="h2">{$lang->type_message}</h2>
<ul>
<li>
<p class="q">{$lang->xml_path} {$lang->path_info}</p>
<p class="a checkxml">
<input type="text" name="xml_file" value="./" />
<button type="button">{$lang->cmd_check_path}</button>
<em class="desc"></em><!--//class="error|success"-->
</p>
</li>
</ul>
<input type="hidden" name="xe_validator_id" value="modules/importer/tpl/index/1" />
<h2>{$lang->type_message}</h2>
<div class="x_control-group checkxml">
<span class="x_input-append">
<label>{$lang->xml_path}</label>
<input type="text" name="xml_file" value="./" style="width:280px;font:11px Tahoma, Geneva, sans-serif" />
<button type="button" class="x_btn">{$lang->cmd_check_path}</button>
</span>
<p class="x_help-inline" style="line-height:26px"></p>
</div>
<div class="btnArea">
<span class="btn"><input type="submit" value="{$lang->importer}" /></span>
<button type="submit" class="x_btn x_btn-primary">{$lang->importer}</button>
</div>
</form>
<a href="#process" class="modalAnchor"></a>
<div class="modal" id="process" style="display:none;">
<form action="./" method="get" onsubmit="return doImport()" id="fo_process" class="fg">
<div class="x_modal" id="process">
<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="" />
@ -121,22 +86,22 @@
<input type="hidden" name="guestbook_target_module" value="" />
<input type="hidden" name="unit_count" value="100" />
<input type="hidden" name="user_id" value="" />
<p style="text-align:center">
<span class="prgrs prgrsMedium">
<strong id="preProgressMsg">{$lang->preprocessing}</strong>
<strong id="progressMsg" style="display:none;">{$lang->import_step_desc[99]}</strong>
<span class="pBar" style="width:300px;text-align:left">
<span class="pAction" id="progressBar" style="width:0%"><!-- Progress status --></span>
<span class="pNum"><span id="completeCount">0</span>/<span id="totalCount">0</span></span>
</span>
<strong id="progressPercent">0%</strong>
</span>
</p>
<div class="x_modal-header">
<h1 id="preProgressMsg">{$lang->preprocessing}</h1>
<h1 id="progressMsg" hidden>{$lang->import_step_desc[99]}</h1>
</div>
<div class="x_modal-body">
<div class="x_progress x_progress-striped x_active">
<div class="x_bar" id="progressBar" style="width: 0%"></div>
</div>
<strong id="progressPercent">0%</strong>
(<span id="completeCount">0</span>/<span id="totalCount">0</span>)
</div>
</form>
</div>
<script type="text/javascript">
<script>
jQuery('a.modalAnchor')
.bind('before-close.mw', function(event){
return false;
});
.bind('before-close.mw', function(event){
return false;
});
</script>

View file

@ -11,7 +11,7 @@ jQuery(function($){
$('.checkxml')
.find('input:text')
.change(function(){
$(this).closest('.checkxml').find('.desr').hide();
$(this).closest('.checkxml').find('.x_help-inline').hide();
})
.end()
.find('button')
@ -22,20 +22,20 @@ $('.checkxml')
$form = $this.closest('form');
$container = $this.closest('.checkxml');
$input = $container.find('input').prop('disabled', true).addClass('loading');
$message = $container.find('.desc').hide();
$message = $container.find('.x_help-inline').hide();
function on_complete(data) {
var $ul, $ttxml, $xml;
$ul = $this.closest('ul');
$xml = $ul.find('>.xml');
$ttxml = $ul.find('>.ttxml');
//$ul = $this.closest('ul');
$xml = $form.find('>.xml');
$ttxml = $form.find('>.ttxml');
$message.text(data.result_message);
// when the file doesn't exists or any other error occurs
if(data.error || data.exists != 'true') {
$message.attr('class', 'desc error').fadeIn(300);
$message.attr('class', 'x_help-inline').fadeIn(300);
$ttxml = $ttxml.filter(':visible');
$ttxml.eq(-1).slideUp(100, function(){
$ttxml = $ttxml.slice(0,-1).eq(-1).slideUp(100,arguments.callee);
@ -44,7 +44,7 @@ $('.checkxml')
return restore();
}
$message.attr('class', 'desc success').fadeIn(300);
$message.attr('class', 'x_help-inline').fadeIn(300);
$form.find(':submit').removeAttr('disabled');
$syncmember = $form.find('.syncmember:hidden');
@ -71,8 +71,8 @@ $('.checkxml')
$.exec_json('importer.procImporterAdminCheckXmlFile', {filename:$.trim($input.val())}, on_complete);
})
.end()
.find('.desc').hide().end()
.closest('ul').find('>li.ttxml').hide().end().end()
.find('.x_help-inline').hide().end()
.closest('form').find('>.ttxml').hide().end().end()
.closest('form').find(':submit').attr('disabled','disabled');
// hide 'sync member' block
@ -109,7 +109,7 @@ function doPreProcessing(form, formId) {
// show modal window
$process = $('#process');
if(!$process.find('.bg').length) $process.prepend('<span class="bg" />').appendTo('body');
if(!$('body').children('.x_modal-backdrop').length) $('body').append('<div class="x_modal-backdrop" />');
$('a[href="#process"].modalAnchor').trigger('open.mw');
exec_xml(

View file

@ -3,12 +3,12 @@
* @author NHN (developers@xpressengine.com)
* @brief importer에서 사용하는 javascript
**/
jQuery(function($){$('.checkxml').find('input:text').change(function(){$(this).closest('.checkxml').find('.desr').hide()}).end().find('button').click(function(){var $this,$container,$input,$messages,$loading,$form,$syncmember,count;$this=$(this).prop('disabled',true);$form=$this.closest('form');$container=$this.closest('.checkxml');$input=$container.find('input').prop('disabled',true).addClass('loading');$message=$container.find('.desc').hide()
function on_complete(data){var $ul,$ttxml,$xml;$ul=$this.closest('ul');$xml=$ul.find('>.xml');$ttxml=$ul.find('>.ttxml');$message.text(data.result_message);if(data.error||data.exists!='true'){$message.attr('class','desc error').fadeIn(300);$ttxml=$ttxml.filter(':visible');$ttxml.eq(-1).slideUp(100,function(){$ttxml=$ttxml.slice(0,-1).eq(-1).slideUp(100,arguments.callee)});$form.find(':submit').attr('disabled','disabled');return restore()};restore();$message.attr('class','desc success').fadeIn(300);$form.find(':submit').removeAttr('disabled');$syncmember=$form.find('.syncmember:hidden');if(data.type=='XML'){$xml.not(':visible').add($syncmember).slideDown(300)}else if(data.type=='TTXML'){$ttxml.not(':visible').add($syncmember).slideDown(300);$form.find('input[name=type]').val('ttxml')}}
function restore(){$input.prop('disabled',false).removeClass('loading');$this.prop('disabled',false);$form.find('.syncmember:visible').slideUp(100);return false};show_waiting_message=false;$.exec_json('importer.procImporterAdminCheckXmlFile',{filename:$.trim($input.val())},on_complete)}).end().find('.desc').hide().end().closest('ul').find('>li.ttxml').hide().end().end().closest('form').find(':submit').attr('disabled','disabled');$('.syncmember').hide()})
jQuery(function($){$('.checkxml').find('input:text').change(function(){$(this).closest('.checkxml').find('.x_help-inline').hide()}).end().find('button').click(function(){var $this,$container,$input,$messages,$loading,$form,$syncmember,count;$this=$(this).prop('disabled',true);$form=$this.closest('form');$container=$this.closest('.checkxml');$input=$container.find('input').prop('disabled',true).addClass('loading');$message=$container.find('.x_help-inline').hide()
function on_complete(data){var $ul,$ttxml,$xml;$xml=$form.find('>.xml');$ttxml=$form.find('>.ttxml');$message.text(data.result_message);if(data.error||data.exists!='true'){$message.attr('class','x_help-inline').fadeIn(300);$ttxml=$ttxml.filter(':visible');$ttxml.eq(-1).slideUp(100,function(){$ttxml=$ttxml.slice(0,-1).eq(-1).slideUp(100,arguments.callee)});$form.find(':submit').attr('disabled','disabled');return restore()};$message.attr('class','x_help-inline').fadeIn(300);$form.find(':submit').removeAttr('disabled');$syncmember=$form.find('.syncmember:hidden');$input.prop('disabled',false).removeClass('loading');$this.prop('disabled',false);if(data.type=='XML'){$xml.not(':visible').add($syncmember).slideDown(300)}else if(data.type=='TTXML'){$ttxml.not(':visible').add($syncmember).slideDown(300);$form.find('input[name=type]').val('ttxml')}}
function restore(){$input.prop('disabled',false).removeClass('loading');$this.prop('disabled',false);$form.find('.syncmember:visible').slideUp(100);return false};show_waiting_message=false;$.exec_json('importer.procImporterAdminCheckXmlFile',{filename:$.trim($input.val())},on_complete)}).end().find('.x_help-inline').hide().end().closest('form').find('>.ttxml').hide().end().end().closest('form').find(':submit').attr('disabled','disabled');$('.syncmember').hide()})
function doSync(fo_obj){exec_xml('importer','procImporterAdminSync',[],function(ret){alert(ret.message);location.href=location.href});return false}
function doPreProcessing(form,formId){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;$process=$('#process');if(!$process.find('.bg').length)$process.prepend('<span class="bg" />').appendTo('body');$('a[href="#process"].modalAnchor').trigger('open.mw');exec_xml('importer','procImporterAdminPreProcessing',{type:type,xml_file:xml_file},on_complete,resp=['error','message','type','total','cur','key','status'])
function on_complete(ret){var $reload,$cont,fo_proc,elems,i,c,key,to_copy;prepared=true;if(ret.status==-1)return alert(ret.message);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(formId);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}};jQuery('#preProgressMsg').hide();jQuery('#progressMsg').show();doImport(formId)};return false}
function doPreProcessing(form,formId){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;$process=$('#process');if(!$('body').children('.x_modal-backdrop').length)$('body').append('<div class="x_modal-backdrop" />');$('a[href="#process"].modalAnchor').trigger('open.mw');exec_xml('importer','procImporterAdminPreProcessing',{type:type,xml_file:xml_file},on_complete,resp=['error','message','type','total','cur','key','status'])
function on_complete(ret){var $reload,$cont,fo_proc,elems,i,c,key,to_copy,fo_import;prepared=true;if(ret.status==-1)return alert(ret.message);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(formId);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}};jQuery('#preProgressMsg').hide();jQuery('#progressMsg').show();doImport(formId)};return false}
function doImport(formId){var form=get_by_id('fo_process'),elems=form.elements,i,c,params={},resp;for(i=0,c=elems.length;i<c;i++)params[elems[i].name]=elems[i].value
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[key]:0};ret.total=parseInt(ret.total,10)||0;ret.cur=parseInt(ret.cur,10)||0;percent=parseInt((ret.cur/ret.total)*100);jQuery('#totalCount').text(ret.total);jQuery('#completeCount').text(ret.cur);jQuery('#progressBar').width(percent+'%');jQuery('#progressPercent').html(percent+"%");if(ret.total>ret.cur){doImport(formId)}else{function resultAlertMessage(){alert(ret.message);jQuery('a[href="#process"].modalAnchor').unbind('before-close.mw').trigger('close.mw').find('#progressBar').width(1).end().find('#progressPercent').html('0%').end();try{form.reset();get_by_id(formId).reset()}catch(e){};jQuery('span.btn > input[type=submit]').attr('disabled','disabled')};fo_import=get_by_id(formId);if(fo_import!=null&&fo_import.isSync.checked){exec_xml('importer','procImporterAdminSync',params,function(ret){if(ret&&(!ret.error||ret.error=='0'))resultAlertMessage()},resp=['error','message'])}else resultAlertMessage()}};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 on_complete(ret,response_tags){var i,c,key,fo_import;for(i=0,c=resp.length;i<c;i++){key=resp[i];elems[key]?elems[key].value=ret[key]:0};ret.total=parseInt(ret.total,10)||0;ret.cur=parseInt(ret.cur,10)||0;percent=parseInt((ret.cur/ret.total)*100);jQuery('#totalCount').text(ret.total);jQuery('#completeCount').text(ret.cur);jQuery('#progressBar').width(percent+'%');jQuery('#progressPercent').html(percent+"%");if(ret.total>ret.cur){doImport(formId)}else{function resultAlertMessage(){alert(ret.message);jQuery('a[href="#process"].modalAnchor').unbind('before-close.mw').trigger('close.mw').find('#progressBar').width(1).end().find('#progressPercent').html('0%').end();try{form.reset();get_by_id(formId).reset()}catch(e){};jQuery('span.btn > input[type=submit]').attr('disabled','disabled')};fo_import=get_by_id(formId);if(fo_import!=null&&fo_import.isSync.checked){exec_xml('importer','procImporterAdminSync',params,function(ret){if(ret&&(!ret.error||ret.error=='0'))resultAlertMessage()},resp=['error','message'])}else resultAlertMessage()}};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('<div class="progressBox"><div class="progress1"></div><div class="progress2"></div></div>');$stat.find('div.progress1').html(per+'&nbsp;').css('width',per+'%').end().find('div.progress2').text(cur+'/'+total)}

View file

@ -1,4 +1,4 @@
<script type="text/javascript">
<script>
var preProcessingMsg = "{$lang->preprocessing}";
</script>
<div id="process" style="display:none;">
@ -14,8 +14,8 @@
<h3 class="h3">{$lang->import_step_title[99]} - {$lang->import_step_desc[99]}</h3>
<div id="status"></div>
<div class="btnArea">
<span class="btn" id="btn_continue" style="display:none;"><input type="submit" value="{$lang->cmd_continue}" /></span>
<span class="btn" id="btn_reload" style="display:block;"><input type="button" value="{$lang->cmd_reload}" onclick="location.reload(); return false;"/></span>
<input class="btn" id="btn_continue" style="display:none;" type="submit" value="{$lang->cmd_continue}" />
<input class="btn" id="btn_reload" style="display:block;" type="button" value="{$lang->cmd_reload}" onclick="location.reload()"/>
</div>
</form>
</div>