/files/xe-core/1.7.5.3/modules/importer/tpl/js/importer_admin.js
JavaScript | 251 lines | 184 code | 46 blank | 21 comment | 30 complexity | aff4e1a81040818af292752b35c8847f MD5 | raw file
- /**
- * @file modules/importer/js/importer_admin.js
- * @author NAVER (developers@xpressengine.com)
- * @brief importer에서 사용하는 javascript
- **/
- jQuery(function($){
- // Note : Module finder is defined modules/admin/tpl/js/admin.js
- // Check whether the xml file exists
- $('.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;
- //$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', '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');
- // hide 'sync member' block
- $('.syncmember').hide();
- });
- /**
- * 회원정보와 게시글/댓글등의 동기화 요청 및 결과 처리 함수
- **/
- function doSync(fo_obj) {
- exec_xml(
- 'importer',
- 'procImporterAdminSync',
- [],
- function(ret){
- alert(ret.message);
- location.href = location.href;
- }
- );
- return false;
- }
- /**
- * xml파일을 DB입력전에 extract를 통해 분할 캐싱을 요청하는 함수
- **/
- 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;
- // show modal window
- $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', // module
- 'procImporterAdminPreProcessing', // action
- {type:type, xml_file:xml_file}, // parameters
- on_complete, // callback
- resp=['error','message','type','total','cur','key','status'] // response tags
- );
- function on_complete(ret) {
- var $reload, $cont, fo_proc, elems, i, c, key, to_copy, fo_import;
- prepared = true;
- // when fail prepare
- 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;
- }
- /* @brief Start importing */
- 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, fo_import;
-
- for(i=0,c=resp.length; i < c; i++) {
- key = resp[i];
- //elems[key]?elems[key].value=ret_obj[key]:0;
- 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', // module
- 'procImporterAdminSync', // act
- params,
- function(ret){if(ret && (!ret.error || ret.error == '0'))resultAlertMessage()}, // callback
- resp = ['error','message'] // response tags
- );
- }
- else resultAlertMessage();
- }
- }
- show_waiting_message = false;
- 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;
- }
- /* display progress */
- 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+' ')
- .css('width', per+'%')
- .end()
- .find('div.progress2')
- .text(cur+'/'+total);
- }