From 62387a364b868cc5a1d90283879dd307a8143eec Mon Sep 17 00:00:00 2001 From: taggon Date: Wed, 6 Jan 2010 05:30:21 +0000 Subject: [PATCH] =?UTF-8?q?#18592325=20xml=20js=20filter=EC=97=90=20?= =?UTF-8?q?=ED=99=95=EC=9E=A5=20=EB=B3=80=EC=88=98=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7126 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/xml_js_filter.js | 43 ++++++++++++++++-------- modules/document/document.controller.php | 35 ++++++++++--------- 2 files changed, 49 insertions(+), 29 deletions(-) diff --git a/common/js/xml_js_filter.js b/common/js/xml_js_filter.js index 2bbe9d8c2..46ae8afa5 100644 --- a/common/js/xml_js_filter.js +++ b/common/js/xml_js_filter.js @@ -12,6 +12,7 @@ var messages = []; var rules = []; var filters = []; var callbacks = []; +var extras = {}; var Validator = xe.createApp('Validator', { init : function() { @@ -48,7 +49,7 @@ var Validator = xe.createApp('Validator', { this.cast('ADD_RULE', ['alpha_number', regAlphaNum]); // number - var regNum = /^[0-9]*$/i; + var regNum = /^[0-9]*$/; this.cast('ADD_RULE', ['number', regNum]); // }}} add filters }, @@ -72,7 +73,7 @@ var Validator = xe.createApp('Validator', { } }) .submit(function(){ - var legacyFn = this['xe:onsubmit']; + var legacyFn = this['xe:onsubmit']; var hasLegacyFn = $.isFunction(legacyFn); var bResult = hasLegacyFn?legacyFn.apply(this):self.run(this); @@ -85,7 +86,7 @@ var Validator = xe.createApp('Validator', { if (form.elements['_filter']) filter = form.elements['_filter'].value; if (!filter) return true; if ($.isFunction(callbacks[filter])) callback = callbacks[filter]; - filter = filters[filter.toLowerCase()] || null; + filter = $.extend({}, filters[filter.toLowerCase()] || {}, extras); $.each(filter, function(name) { var _el = form.elements[name]; @@ -158,6 +159,20 @@ var Validator = xe.createApp('Validator', { return null; } }, + API_ADD_EXTRA_FIELD : function(sender, params) { + var name = params[0].toLowerCase(); + var prop = params[1]; + + extras[name] = prop; + }, + API_GET_EXTRA_FIELD : function(sender, params) { + var name = params[0].toLowerCase(); + return extras[name]; + }, + API_DEL_EXTRA_FIELD : function(sender, params) { + var name = params[0].toLowerCase(); + delete extras[name]; + }, API_APPLY_RULE : function(sender, params) { var name = params[0].toLowerCase(); var value = params[1]; @@ -235,10 +250,10 @@ oValidator.registerPlugin(new EditorStub); // functions function get_value(elem) { + var vals = []; if (elem.is(':radio')){ return elem.filter(':checked').val(); } else if (elem.is(':checkbox')) { - var vals = []; elem.filter(':checked').each(function(){ vals.push(this.value); }); @@ -255,20 +270,20 @@ function get_value(elem) { * @brief ajax로 서버에 요청후 결과를 처리할 callback_function을 지정하지 않았을 시 호출되는 기본 함수 **/ function filterAlertMessage(ret_obj) { - var error = ret_obj["error"]; - var message = ret_obj["message"]; - var act = ret_obj["act"]; - var redirect_url = ret_obj["redirect_url"]; - var url = location.href; + var error = ret_obj["error"]; + var message = ret_obj["message"]; + var act = ret_obj["act"]; + var redirect_url = ret_obj["redirect_url"]; + var url = location.href; - if(typeof(message)!="undefined"&&message&&message!="success") alert(message); + if(typeof(message)!="undefined"&&message&&message!="success") alert(message); - if(typeof(act)!="undefined" && act) url = current_url.setQuery("act", act); - else if(typeof(redirect_url)!="undefined" && redirect_url) url = redirect_url; + if(typeof(act)!="undefined" && act) url = current_url.setQuery("act", act); + else if(typeof(redirect_url)!="undefined" && redirect_url) url = redirect_url; - if(url == location.href) url = url.replace(/#(.*)$/,''); + if(url == location.href) url = url.replace(/#(.*)$/,''); - location.href = url; + location.href = url; } /** diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 897b7708b..43ea33b1d 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -1002,25 +1002,30 @@ /** * @brief 특정 module_srl에 해당하는 document_extra_keys type, required등의 값을 체크하여 header에 javascript 코드 추가 **/ - function addXmlJsFilter($module_srl) { - $oDocumentModel = &getModel('document'); - $extra_keys = $oDocumentModel->getExtraKeys($module_srl); - if(!count($extra_keys)) return; + function addXmlJsFilter($module_srl) { + $oDocumentModel = &getModel('document'); + $extra_keys = $oDocumentModel->getExtraKeys($module_srl); + if(!count($extra_keys)) return; - $js_code = ""; + $js_code = array(); + $js_code[] = '"; - Context::addHtmlHeader($js_code); - } + $js_code[] = '})(jQuery);'; + $js_code[] = '//]]>'; + $js_code = implode("\n", $js_code); + + Context::addHtmlHeader($js_code); + } /** * @brief 카테고리 추가