mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-17 17:32:15 +09:00
- 사용자 커스텀 규칙을 정의할 수 있도록 변경 - <node>에서 규칙을 설정하는 속성을 filter 대신 rule로 사용하도록 변경(현재는 하위 호환성 때문에 filter도 허용) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@8118 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
fda368c553
commit
2466bb67d8
1 changed files with 35 additions and 21 deletions
|
|
@ -81,12 +81,16 @@
|
|||
// xml parsing
|
||||
$xml_obj = parent::parse($buff);
|
||||
|
||||
$attrs = $xml_obj->filter->attrs;
|
||||
$rules = $xml_obj->filter->rules;
|
||||
|
||||
// XmlJsFilter는 filter_name, field, parameter 3개의 데이터를 핸들링
|
||||
$filter_name = $xml_obj->filter->attrs->name;
|
||||
$confirm_msg_code = $xml_obj->filter->attrs->confirm_msg_code;
|
||||
$module = $xml_obj->filter->attrs->module;
|
||||
$act = $xml_obj->filter->attrs->act;
|
||||
$extend_filter = $xml_obj->filter->attrs->extend_filter;
|
||||
$filter_name = $attrs->name;
|
||||
$confirm_msg_code = $attrs->confirm_msg_code;
|
||||
$module = $attrs->module;
|
||||
$act = $attrs->act;
|
||||
$extend_filter = $attrs->extend_filter;
|
||||
|
||||
|
||||
$field_node = $xml_obj->filter->form->node;
|
||||
if($field_node && !is_array($field_node)) $field_node = array($field_node);
|
||||
|
|
@ -137,28 +141,39 @@
|
|||
$js_messages = array();
|
||||
|
||||
$fields = array();
|
||||
debugPrint('compile!');
|
||||
// create custom rule
|
||||
if ($rules && $rules->rule) {
|
||||
if (!is_array($rules->rule)) $rules->rule = array($rules->rule);
|
||||
foreach($rules->rule as $r) {
|
||||
if ($r->attrs->type == 'regex') {
|
||||
$js_rules[] = "v.cast('ADD_RULE', ['{$r->attrs->name}', {$r->body}]);";
|
||||
}
|
||||
}
|
||||
debugPrint($rules);
|
||||
}
|
||||
|
||||
// field, 즉 체크항목의 script 생성
|
||||
$node_count = count($field_node);
|
||||
if($node_count) {
|
||||
foreach($field_node as $key =>$node) {
|
||||
$attrs = $node->attrs;
|
||||
$attrs = $node->attrs;
|
||||
$target = trim($attrs->target);
|
||||
|
||||
if(!$target) continue;
|
||||
|
||||
$attrs->filter = trim($attrs->filter);
|
||||
$attrs->equalto = trim($attrs->equalto);
|
||||
$rule = trim($attrs->rule?$attrs->rule:$attrs->filter);
|
||||
$equalto = trim($attrs->equalto);
|
||||
|
||||
$field = array();
|
||||
|
||||
if($attrs->required == 'true') $field[] = 'required:true';
|
||||
if($attrs->minlength > 0) $field[] = 'minlength:'.$attrs->minlength;
|
||||
if($attrs->maxlength > 0) $field[] = 'maxlength:'.$attrs->maxlength;
|
||||
if($attrs->equalto) $field[] = "equalto:'{$attrs->equalto}'";
|
||||
if($attrs->filter) $field[] = "rule:'{$attrs->filter}'";
|
||||
if($equalto) $field[] = "equalto:'{$attrs->equalto}'";
|
||||
if($rule) $field[] = "rule:'{$rule}'";
|
||||
|
||||
$s_field = implode(',', $field);
|
||||
$fields[] = "'{$target}': {{$s_field}}";
|
||||
$fields[] = "'{$target}': {".implode(',', $field)."}";
|
||||
|
||||
if(!in_array($target, $target_list)) $target_list[] = $target;
|
||||
if(!$target_type_list[$target]) $target_type_list[$target] = $filter;
|
||||
|
|
@ -166,24 +181,23 @@
|
|||
}
|
||||
|
||||
// extend_filter_item 체크
|
||||
$rule_types = array('homepage'=>'homepage', 'email_address'=>'email');
|
||||
|
||||
for($i=0;$i<$extend_filter_count;$i++) {
|
||||
$filter_item = $extend_filter_list[$i];
|
||||
$target = trim($filter_item->name);
|
||||
|
||||
if(!$target) continue;
|
||||
|
||||
$type = $filter_item->type;
|
||||
// extend filter item의 type으로 rule을 구함
|
||||
$type = $filter_item->type;
|
||||
$rule = $rule_types[$type]?$rule_types[$type]:'';
|
||||
$required = ($filter_item->required == 'true');
|
||||
|
||||
// extend filter item의 type으로 filter를 구함
|
||||
$types = array('homepage'=>'homepage', 'email_address'=>'email');
|
||||
$filter = $types[$type]?$types[$type]:'';
|
||||
|
||||
$field = array();
|
||||
if($required) $field[] = 'required:true';
|
||||
if($filter) $field[] = "rule:'{$filter}'";
|
||||
$s_field = implode(',', $field);
|
||||
$fields[] = "\t\t'{$target}' : {{$s_field}}";
|
||||
if($rule) $field[] = "rule:'{$rule}'";
|
||||
$fields[] = "\t\t'{$target}' : {".implode(',', $field)."}";
|
||||
|
||||
if(!in_array($target, $target_list)) $target_list[] = $target;
|
||||
if(!$target_type_list[$target]) $target_type_list[$target] = $type;
|
||||
|
|
@ -200,7 +214,7 @@
|
|||
$target = trim($attrs->target);
|
||||
|
||||
//if($name && $target && ($name != $target)) $js_doc[] = "\t\tparams['{$name}'] = params['{$target}']; delete params['{$target}'];";
|
||||
if($name && $target && ($name != $target)) $rename_params[] = "'{$target}':'{$name}'";
|
||||
if($name && $target && ($name != $target)) $rename_params[] = "'{$target}':'{$name}'";
|
||||
if($name && !in_array($name, $target_list)) $target_list[] = $name;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue