git-svn-id: http://xe-core.googlecode.com/svn/trunk@46 201d5d3c-b55e-5fd7-737f-ddc643e51545

This commit is contained in:
zero 2007-02-15 06:30:42 +00:00
parent cf9066af62
commit 11292f7bf2
3 changed files with 236 additions and 205 deletions

View file

@ -1,7 +1,7 @@
/**
* @file : common/js/xml_js_filter.js
* @author : zero <zero@nzeo.com>
* @desc : xml filter에서 사용될 js
* @file common/js/xml_js_filter.js
* @author zero (zero@nzeo.com)
* @brief xml filter에서 사용될 js
**/
var alertMsg = new Array();
@ -9,233 +9,238 @@ var alertMsg = new Array();
/**
* @function filterAlertMessage
* @brief ajax로 서버에 요청후 결과를 처리할 callback_function을 지정하지 않았을 호출되는 기본 함수
**/
function filterAlertMessage(ret_obj) {
var error = ret_obj["error"];
var message = ret_obj["message"];
var redirect_url = ret_obj["redirect_url"];
var url = location.href;
if(typeof(message)!='undefined'&&message) alert(message);
if(typeof(redirect_url)!='undefined'&&redirect_url) url = redirect_url;
location.href = url;
var error = ret_obj["error"];
var message = ret_obj["message"];
var redirect_url = ret_obj["redirect_url"];
var url = location.href;
if(typeof(message)!='undefined'&&message) alert(message);
if(typeof(redirect_url)!='undefined'&&redirect_url) url = redirect_url;
location.href = url;
}
// filtering
/**
* @class XmlJsFilter
* @authro zero (zero@nzeo.com)
* @brief form elements, module/act, callback_user_func을 이용하여 서버에 ajax로 form 데이터를 넘기고 결과를 받아오는 js class
**/
function XmlJsFilter(form_object, module, act, callback_user_func) {
this.field = new Array();
this.parameter = new Array();
this.response = new Array();
this.field = new Array();
this.parameter = new Array();
this.response = new Array();
this.fo_obj = form_object;
this.module = module;
this.act = act;
this.user_func = callback_user_func;
this.fo_obj = form_object;
this.module = module;
this.act = act;
this.user_func = callback_user_func;
this.addFieldItem = XmlJsFilterAddFieldItem;
this.addParameterItem = XmlJsFilterAddParameterItem;
this.addResponseItem = XmlJsFilterAddResponseItem;
this.getValue = XmlJsFilterGetValue;
this.executeFilter = XmlJsFilterExecuteFilter;
this.checkFieldItem = XmlJsFilterCheckFieldItem;
this.getParameterParam = XmlJsFilterGetParameterParam;
this.alertMsg = XmlJsFilterAlertMsg;
this.proc = XmlJsFilterProc;
this.addFieldItem = XmlJsFilterAddFieldItem;
this.addParameterItem = XmlJsFilterAddParameterItem;
this.addResponseItem = XmlJsFilterAddResponseItem;
this.getValue = XmlJsFilterGetValue;
this.executeFilter = XmlJsFilterExecuteFilter;
this.checkFieldItem = XmlJsFilterCheckFieldItem;
this.getParameterParam = XmlJsFilterGetParameterParam;
this.alertMsg = XmlJsFilterAlertMsg;
this.proc = XmlJsFilterProc;
}
function XmlJsFilterAddFieldItem(target, required, minlength, maxlength, equalto, filter) {
var obj = new Array(target, required, minlength, maxlength, equalto, filter);
this.field[this.field.length] = obj;
var obj = new Array(target, required, minlength, maxlength, equalto, filter);
this.field[this.field.length] = obj;
}
function XmlJsFilterAddParameterItem(param, target) {
var obj = new Array(param, target);
this.parameter[this.parameter.length] = obj;
var obj = new Array(param, target);
this.parameter[this.parameter.length] = obj;
}
function XmlJsFilterAddResponseItem(name) {
this.response[this.response.length] = name;
this.response[this.response.length] = name;
}
function XmlJsFilterGetValue(target_name) {
var obj = this.fo_obj[target_name];
if(typeof(obj)=='undefined') return '';
var value = '';
var length = obj.length;
var type = obj.type;
var obj = this.fo_obj[target_name];
if(typeof(obj)=='undefined') return '';
var value = '';
var length = obj.length;
var type = obj.type;
if(length) type = obj[0].type;
if(length) type = obj[0].type;
switch(type) {
case 'checkbox' :
if(typeof(length)!='undefined') {
value_list = new Array();
for(var i=0;i<obj.length;i++) {
if(obj[i].checked) value_list[value_list.length] = obj[i].value;
switch(type) {
case 'checkbox' :
if(typeof(length)!='undefined') {
value_list = new Array();
for(var i=0;i<obj.length;i++) {
if(obj[i].checked) value_list[value_list.length] = obj[i].value;
}
value = value_list.join(",");
} else {
if(obj.checked) value = obj.value;
else value = '';
}
value = value_list.join(",");
} else {
if(obj.checked) value = obj.value;
else value = '';
}
break;
case 'radio' :
if(typeof(length)!='undefined') {
for(var i=0;i<obj.length;i++) {
if(obj[i].checked) value = obj[i].value;
break;
case 'radio' :
if(typeof(length)!='undefined') {
for(var i=0;i<obj.length;i++) {
if(obj[i].checked) value = obj[i].value;
}
} else {
if(obj.checked) value = obj.value;
else value = '';
}
} else {
if(obj.checked) value = obj.value;
else value = '';
}
break;
case 'select' :
case 'select-one' :
value = obj.options[obj.selectedIndex].value;
break;
default :
value = obj.value;
break;
}
if(typeof(value)=='undefined'||!value) return '';
return value.trim();
break;
case 'select' :
case 'select-one' :
value = obj.options[obj.selectedIndex].value;
break;
default :
value = obj.value;
break;
}
if(typeof(value)=='undefined'||!value) return '';
return value.trim();
}
function XmlJsFilterExecuteFilter(filter, value) {
switch(filter) {
case "email" :
case "email_address" :
var regx = /^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*$/;
return regx.test(value);
break;
case "userid" :
case "user_id" :
var regx = /^[a-zA-Z]+([_0-9a-zA-Z]+)*$/;
return regx.test(value);
break;
case "homepage" :
var regx = /(^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*$)/;
return regx.test(value);
break;
case "korean" :
var regx = /^[가-힣]*$/;
return regx.test(value);
break;
case "korean_number" :
var regx = /^[가-힣0-9]*$/;
return regx.test(value);
break;
case "alpha" :
var regx = /^[a-zA-Z]*$/;
return regx.test(value);
break;
case "alpha_number" :
var regx = /^[a-zA-Z0-9]*$/;
return regx.test(value);
break;
case "number" :
return !isNaN(value);
break;
}
switch(filter) {
case "email" :
case "email_address" :
var regx = /^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*$/;
return regx.test(value);
break;
case "userid" :
case "user_id" :
var regx = /^[a-zA-Z]+([_0-9a-zA-Z]+)*$/;
return regx.test(value);
break;
case "homepage" :
var regx = /(^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*$)/;
return regx.test(value);
break;
case "korean" :
var regx = /^[가-힣]*$/;
return regx.test(value);
break;
case "korean_number" :
var regx = /^[가-힣0-9]*$/;
return regx.test(value);
break;
case "alpha" :
var regx = /^[a-zA-Z]*$/;
return regx.test(value);
break;
case "alpha_number" :
var regx = /^[a-zA-Z0-9]*$/;
return regx.test(value);
break;
case "number" :
return !isNaN(value);
break;
}
}
function XmlJsFilterAlertMsg(target, msg_code, minlength, maxlength) {
var target_msg = "";
var target_msg = "";
if(alertMsg[target]!='undefined') target_msg = alertMsg[target];
else target_msg = target;
if(alertMsg[target]!='undefined') target_msg = alertMsg[target];
else target_msg = target;
var msg = "";
if(typeof(alertMsg[msg_code])!='undefined') {
if(alertMsg[msg_code].indexOf('%s')>=0) msg = alertMsg[msg_code].replace('%s',target_msg);
else msg = target_msg+alertMsg[msg_code];
} else {
msg = msg_code;
}
var msg = "";
if(typeof(alertMsg[msg_code])!='undefined') {
if(alertMsg[msg_code].indexOf('%s')>=0) msg = alertMsg[msg_code].replace('%s',target_msg);
else msg = target_msg+alertMsg[msg_code];
} else {
msg = msg_code;
}
if(typeof(minlength)!='undefined' && typeof(maxlength)!='undefined') msg += "("+minlength+"~"+maxlength+")";
if(typeof(minlength)!='undefined' && typeof(maxlength)!='undefined') msg += "("+minlength+"~"+maxlength+")";
alert(msg);
try {
this.fo_obj[target].focus();
} catch(e) {
}
return false;
alert(msg);
try {
this.fo_obj[target].focus();
} catch(e) {
}
return false;
}
function XmlJsFilterCheckFieldItem() {
for(var i=0; i<this.field.length;i++) {
var item = this.field[i];
var target = item[0];
var required = item[1];
var minlength = item[2];
var maxlength = item[3];
var equalto = item[4];
var filter = item[5].split(",");
for(var i=0; i<this.field.length;i++) {
var item = this.field[i];
var target = item[0];
var required = item[1];
var minlength = item[2];
var maxlength = item[3];
var equalto = item[4];
var filter = item[5].split(",");
var value = this.getValue(target);
if(!required && !value) return true;
if(required && !value) return this.alertMsg(target,'isnull');
var value = this.getValue(target);
if(!required && !value) return true;
if(required && !value) return this.alertMsg(target,'isnull');
if(minlength>0 && maxlength>0 && (value.length < minlength || value.length > maxlength)) return this.alertMsg(target, 'outofrange', minlength, maxlength);
if(minlength>0 && maxlength>0 && (value.length < minlength || value.length > maxlength)) return this.alertMsg(target, 'outofrange', minlength, maxlength);
if(equalto) {
var equalto_value = this.getValue(equalto);
if(equalto_value != value) return this.alertMsg(target, 'equalto');
}
if(equalto) {
var equalto_value = this.getValue(equalto);
if(equalto_value != value) return this.alertMsg(target, 'equalto');
}
if(filter.length && filter[0]) {
for(var j=0;j<filter.length;j++) {
var filter_item = filter[j];
if(!this.executeFilter(filter_item, value)) return this.alertMsg(target, "invalid_"+filter_item);
if(filter.length && filter[0]) {
for(var j=0;j<filter.length;j++) {
var filter_item = filter[j];
if(!this.executeFilter(filter_item, value)) return this.alertMsg(target, "invalid_"+filter_item);
}
}
}
}
return true;
return true;
}
function XmlJsFilterGetParameterParam() {
var prev_name = '';
if(this.parameter.length<1) {
for(var i=0;i<this.fo_obj.length;i++) {
var name = this.fo_obj[i].name;
if(typeof(name)=='undefined'||!name||name==prev_name) continue;
this.addParameterItem(name, name);
prev_name = name;
var prev_name = '';
if(this.parameter.length<1) {
for(var i=0;i<this.fo_obj.length;i++) {
var name = this.fo_obj[i].name;
if(typeof(name)=='undefined'||!name||name==prev_name) continue;
this.addParameterItem(name, name);
prev_name = name;
}
}
}
var params = new Array();
for(var i=0; i<this.parameter.length;i++) {
var item = this.parameter[i];
var param = item[0];
var target = item[1];
var value = this.getValue(target);
params[param] = value;
}
return params;
var params = new Array();
for(var i=0; i<this.parameter.length;i++) {
var item = this.parameter[i];
var param = item[0];
var target = item[1];
var value = this.getValue(target);
params[param] = value;
}
return params;
}
function XmlJsFilterProc(confirm_msg) {
var result = this.checkFieldItem();
if(!result) return false;
var result = this.checkFieldItem();
if(!result) return false;
if(typeof(confirm_msg)=='undefined') confirm_msg = '';
if(typeof(confirm_msg)=='undefined') confirm_msg = '';
var params = this.getParameterParam();
var response = this.response;
var params = this.getParameterParam();
var response = this.response;
if(confirm_msg && !confirm(confirm_msg)) return false;
if(confirm_msg && !confirm(confirm_msg)) return false;
if(!this.act) {
this.user_func(this.fo_obj, params);
return true;
}
if(!this.act) {
this.user_func(this.fo_obj, params);
return true;
}
exec_xml(this.module, this.act, params, this.user_func, response, params);
exec_xml(this.module, this.act, params, this.user_func, response, params);
}
// form proc
function procFilter(fo_obj, filter_func) {
filter_func(fo_obj);
return false;
filter_func(fo_obj);
return false;
}

View file

@ -78,35 +78,35 @@
$output = $this->makeTable();
if(!$output->toBool()) return $output;
// 관리자 정보 입력 (member 모듈을 찾아서 method 실행)
$oMember = getModule('member', 'controller');
// 멤버 컨트롤러 객체 생성
$oMemberController = getModule('member', 'controller');
// 그룹을 입력
$group_args->title = Context::getLang('default_group_1');
$group_args->is_default = 'Y';
$oMember->insertGroup($group_args);
$oMemberController->insertGroup($group_args);
$group_args->title = Context::getLang('default_group_2');
$group_args->is_default = 'N';
$oMember->insertGroup($group_args);
$oMemberController->insertGroup($group_args);
// 금지 아이디 등록
$oMember->insertDeniedID('www','');
$oMember->insertDeniedID('root','');
$oMember->insertDeniedID('admin','');
$oMember->insertDeniedID('administrator','');
$oMember->insertDeniedID('telnet','');
$oMember->insertDeniedID('ftp','');
$oMember->insertDeniedID('http','');
$oMemberController->insertDeniedID('www','');
$oMemberController->insertDeniedID('root','');
$oMemberController->insertDeniedID('admin','');
$oMemberController->insertDeniedID('administrator','');
$oMemberController->insertDeniedID('telnet','');
$oMemberController->insertDeniedID('ftp','');
$oMemberController->insertDeniedID('http','');
// 관리자 정보 세팅
$admin_info = Context::gets('user_id','password','nick_name','user_name', 'email_address');
// 관리자 정보 입력
$oMember->insertAdmin($admin_info);
$oMemberController->insertAdmin($admin_info);
// 로그인 처리시킴
$oMember->doLogin($admin_info->user_id, $admin_info->password);
$oMemberController->doLogin($admin_info->user_id, $admin_info->password);
// 기본 모듈을 생성
$oModule = getModule('module_manager', 'controller');
@ -116,10 +116,10 @@
if(!$this->makeConfigFile()) return new Object(-1, 'msg_install_failed');
// 설치 완료 메세지 출력
$this->add('redirect_url','./');
$this->setMessage('msg_install_completed');
}
/**
* @brief files 하위 디렉토리 생성
* DB 정보를 바탕으로 실제 install하기 전에 로컬 환경 설저d

View file

@ -36,9 +36,11 @@
* @brief user_id에 해당하는 사용자 정보 return
**/
function getMemberInfoByUserID($user_id) {
$args->user_id = $user_id;
// DB 객체 생성
$oDB = &DB::getInstance();
$output = $this->executeQuery('member.getMemberInfo', $args);
$args->user_id = $user_id;
$output = $oDB->executeQuery('member.getMemberInfo', $args);
if(!$output) return $output;
$member_info = $output->data;
@ -51,9 +53,11 @@
* @brief member_srl로 사용자 정보 return
**/
function getMemberInfoByMemberSrl($member_srl) {
$args->member_srl = $member_srl;
// DB 객체 생성
$oDB = &DB::getInstance();
$output = $this->executeQuery('member.getMemberInfoByMemberSrl', $args);
$args->member_srl = $member_srl;
$output = $oDB->executeQuery('member.getMemberInfoByMemberSrl', $args);
if(!$output) return $output;
$member_info = $output->data;
@ -66,9 +70,11 @@
* @brief userid에 해당하는 member_srl을 구함
**/
function getMemberSrlByUserID($user_id) {
$args->user_id = $user_id;
// DB 객체 생성
$oDB = &DB::getInstance();
$output = $this->executeQuery('member.getMemberSrl', $args);
$args->user_id = $user_id;
$output = $oDB->executeQuery('member.getMemberSrl', $args);
return $output->data->member_srl;
}
@ -76,9 +82,11 @@
* @brief userid에 해당하는 member_srl을 구함
**/
function getMemberSrlByEmailAddress($email_address) {
$args->email_address = $email_address;
// DB 객체 생성
$oDB = &DB::getInstance();
$output = $this->executeQuery('member.getMemberSrl', $args);
$args->email_address = $email_address;
$output = $oDB->executeQuery('member.getMemberSrl', $args);
return $output->data->member_srl;
}
@ -86,9 +94,11 @@
* @brief userid에 해당하는 member_srl을 구함
**/
function getMemberSrlByNickName($nick_name) {
$args->nick_name = $nick_name;
// DB 객체 생성
$oDB = &DB::getInstance();
$output = $this->executeQuery('member.getMemberSrl', $args);
$args->nick_name = $nick_name;
$output = $oDB->executeQuery('member.getMemberSrl', $args);
return $output->data->member_srl;
}
@ -113,8 +123,11 @@
* @brief member_srl이 속한 group 목록을 가져옴
**/
function getMemberGroups($member_srl) {
// DB 객체 생성
$oDB = &DB::getInstance();
$args->member_srl = $member_srl;
$output = $this->executeQuery('member.getMemberGroups', $args);
$output = $oDB->executeQuery('member.getMemberGroups', $args);
if(!$output->data) return;
$group_list = $output->data;
@ -130,7 +143,10 @@
* @brief 기본 그룹을 가져옴
**/
function getDefaultGroup() {
$output = $this->executeQuery('member.getDefaultGroup');
// DB 객체 생성
$oDB = &DB::getInstance();
$output = $odB->executeQuery('member.getDefaultGroup');
return $output->data;
}
@ -138,9 +154,11 @@
* @brief group_srl에 해당하는 그룹 정보 가져옴
**/
function getGroup($group_srl) {
$args->group_srl = $group_srl;
// DB 객체 생성
$oDB = &DB::getInstance();
$output = $this->executeQuery('member.getGroup', $args);
$args->group_srl = $group_srl;
$output = $oDB->executeQuery('member.getGroup', $args);
return $output->data;
}
@ -148,7 +166,10 @@
* @brief 그룹 목록을 가져옴
**/
function getGroups() {
$output = $this->executeQuery('member.getGroups');
// DB 객체 생성
$oDB = &DB::getInstance();
$output = $oDB->executeQuery('member.getGroups');
if(!$output->data) return;
$group_list = $output->data;
@ -164,12 +185,15 @@
* @brief 금지 아이디 목록 가져오기
**/
function getDeniedIDList() {
// DB 객체 생성
$oDB = &DB::getInstance();
$args->sort_index = "list_order";
$args->page = Context::get('page');
$args->list_count = 40;
$args->page_count = 10;
$output = $this->executeQuery('member.getDeniedIDList', $args);
$output = $oDB->executeQuery('member.getDeniedIDList', $args);
return $output;
}
@ -177,9 +201,11 @@
* @brief 금지 아이디인지 확인
**/
function isDeniedID($user_id) {
$args->user_id = $user_id;
// DB 객체 생성
$oDB = &DB::getInstance();
$output = $this->executeQuery('member.chkDeniedID', $args);
$args->user_id = $user_id;
$output = $oDB->executeQuery('member.chkDeniedID', $args);
if($output->data->count) return true;
return false;
}