diff --git a/classes/module/ModuleObject.class.php b/classes/module/ModuleObject.class.php
index bf67c53bd..6c5840476 100644
--- a/classes/module/ModuleObject.class.php
+++ b/classes/module/ModuleObject.class.php
@@ -49,6 +49,17 @@
$this->add('redirect_url', $url);
}
+ /**
+ * @brief 현재 페이지를 refresh시킴
+ *
+ * 공통 tpl중 refresh.html을 실행할 뿐..
+ **/
+ function setRefreshPage() {
+ $this->setTemplatePath('./common/tpl');
+ $this->setTemplateFile('refresh');
+ }
+
+
/**
* @brief act값 지정
**/
diff --git a/common/js/xml_handler.js b/common/js/xml_handler.js
index dbee5c73c..7e7546820 100644
--- a/common/js/xml_handler.js
+++ b/common/js/xml_handler.js
@@ -15,8 +15,10 @@ function exec_xml(module, act, params, callback_func, response_tags, callback_fu
}
oXml.addParam("module", module);
oXml.addParam("act", act);
+ oXml.addParam("referer_url", location.href);
if(typeof(response_tags)=="undefined" || response_tags.length<1) response_tags = new Array('error','message');
+
response_tags[response_tags.length] = "redirect_url";
if(show_waiting_message) {
diff --git a/common/tpl/refresh.html b/common/tpl/refresh.html
new file mode 100644
index 000000000..2f4983d1d
--- /dev/null
+++ b/common/tpl/refresh.html
@@ -0,0 +1,3 @@
+
diff --git a/modules/member/conf/module.xml b/modules/member/conf/module.xml
index f513e0df8..5fbf4d941 100644
--- a/modules/member/conf/module.xml
+++ b/modules/member/conf/module.xml
@@ -22,6 +22,8 @@
+
+
diff --git a/modules/member/lang/ko.lang.php b/modules/member/lang/ko.lang.php
index 0d7e57ea3..58062ab1a 100644
--- a/modules/member/lang/ko.lang.php
+++ b/modules/member/lang/ko.lang.php
@@ -30,7 +30,11 @@
$lang->group_srl = '그룹번호';
$lang->image_name = '이미지 이름';
+ $lang->image_name_max_width = '가로 제한 크기';
+ $lang->image_name_max_height = '세로 제한 크기';
$lang->image_mark = '이미지 마크';
+ $lang->image_mark_max_width = '가로 제한 크기';
+ $lang->image_mark_max_height = '세로 제한 크기';
$lang->enable_join = '회원 가입 허가';
$lang->redirect_url = '회원 가입후 이동할 페이지';
$lang->agreement = '회원 가입 약관';
@@ -54,6 +58,9 @@
$lang->msg_exists_email_address = '이미 존재하는 메일주소입니다. 다른 메일주소를 입력해주세요';
$lang->msg_exists_nick_name = '이미 존재하는 닉네임입니다. 다른 닉네임을 입력해주세요';
+ $lang->msg_not_uploaded_image_name = '이미지 이름을 등록할 수가 없습니다';
+ $lang->msg_not_uploaded_image_mark = '이미지 마크를 등록할 수가 없습니다';
+
$lang->about_user_id = '사용자 ID는 3~20자 사이의 영문+숫자로 이루어져야 하며 영문으로 시작되어야 합니다';
$lang->about_password = '비밀번호는 6~20자로 되어야 합니다';
$lang->about_user_name = '이름은 2~20자 이내여야 합니다';
diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php
index 56ca72ff0..7c342bdeb 100644
--- a/modules/member/member.controller.php
+++ b/modules/member/member.controller.php
@@ -135,8 +135,10 @@
**/
function procInsertConfig() {
// 기본 정보를 받음
- $args = Context::gets('enable_join','redirect_url','agreement','image_name','image_mark');
+ $args = Context::gets('enable_join','redirect_url','agreement','image_name','image_mark', 'image_name_max_width', 'image_name_max_height','image_mark_max_width','image_mark_max_height');
if($args->enable_join!='Y') $args->enable_join = 'N';
+ if($args->image_name!='Y') $args->image_name = 'N';
+ if($args->image_mark!='Y') $args->image_mark = 'N';
// module Controller 객체 생성하여 입력
$oModuleController = &getController('module');
@@ -648,6 +650,76 @@
return new Object();
}
+ /**
+ * @brief 이미지 이름을 추가
+ **/
+ function procInsertImageName() {
+ // 정상적으로 업로드 된 파일인지 검사
+ $file = $_FILES['image_name'];
+ if(!is_uploaded_file($file['tmp_name'])) return $this->stop('msg_not_uploaded_image_name');
+
+ // 회원 정보를 검사해서 회원번호가 없거나 관리자가 아니고 회원번호가 틀리면 무시
+ $member_srl = Context::get('member_srl');
+ if(!$member_srl) return $this->stop('msg_not_uploaded_image_name');
+
+ $logged_info = Context::get('logged_info');
+ if($logged_info->is_admin != 'Y' && $logged_info->member_srl != $member_srl) return $this->stop('msg_not_uploaded_image_name');
+
+ // 회원 모듈 설정에서 이미지 이름 사용 금지를 하였을 경우 관리자가 아니면 return;
+ $oModuleModel = &getModel('module');
+ $config = $oModuleModel->getModuleConfig('member');
+ if($logged_info->is_admin != 'Y' && $config->image_name != 'Y') return $this->stop('msg_not_uploaded_image_name');
+
+ // 정해진 사이즈를 구함
+ $max_width = $config->image_name_max_width;
+ if(!$max_width) $max_width = "80";
+ $max_height = $config->image_name_max_height;
+ if(!$max_height) $max_height = "20";
+
+ // 이미지 정보를 구함
+ list($width, $height, $type, $attrs) = getimagesize($file['tmp_name']);
+
+ // 이미지 정보가 정해진 크기보다 크면 크기를 바꿈
+ if($width>$max_width) $new_width = $max_width;
+ else $new_width = $width;
+ if($height>$max_height) $new_height = $max_height;
+ else $new_height = $height;
+
+ // 업로드한 파일을 옮기지 않고 gd를 이용해서 gif 이미지를 만듬 (gif, jpg, png, bmp가 아니면 역시 무시)
+ $thumb = imagecreatetruecolor($new_width, $new_height);
+ switch($type) {
+ // gif
+ case 1 :
+ $source = imagecreatefromgif($file['tmp_name']);
+ break;
+ // jpg
+ case 2 :
+ $source = imagecreatefromjpeg($file['tmp_name']);
+ break;
+ // png
+ case 3 :
+ $source = imagecreatefrompng($file['tmp_name']);
+ break;
+ // bmp
+ case 6 :
+ $source = imagecreatefromwbmp($file['tmp_name']);
+ break;
+ }
+
+ if(!$source) return $this->stop('msg_not_uploaded_image_name');
+
+ if(function_exists('imagecopyresampled')) imagecopyresampled($thumb, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
+ else imagecopyresized($thumb, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
+
+ // 파일을 쓰고 끝냄
+ $target_filename = sprintf('files/attach/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl);
+ imagegif($thumb, $target_filename, 100);
+ @unlink($file['tmp_name']);
+
+ // 페이지 리프레쉬
+ $this->setRefreshPage();
+ }
+
/**
* @brief 이미지 이름을 삭제
**/
@@ -655,6 +727,10 @@
$member_srl = Context::get('member_srl');
if(!$member_srl) return new Object(0,'success');
+ $oModuleModel = &getModel('module');
+ $config = $oModuleModel->getModuleConfig('member');
+ if($config->image_mark == 'N') return new Object(0,'success');
+
$logged_info = Context::get('logged_info');
if($logged_info->is_admin == 'Y' || $logged_info->member_srl == $member_srl) {
$oMemberModel = &getModel('member');
@@ -664,6 +740,75 @@
return new Object(0,'success');
}
+ /**
+ * @brief 이미지 마크를 추가
+ **/
+ function procInsertImageMark() {
+ // 정상적으로 업로드 된 파일인지 검사
+ $file = $_FILES['image_mark'];
+ if(!is_uploaded_file($file['tmp_name'])) return $this->stop('msg_not_uploaded_image_mark');
+
+ // 회원 정보를 검사해서 회원번호가 없거나 관리자가 아니고 회원번호가 틀리면 무시
+ $member_srl = Context::get('member_srl');
+ if(!$member_srl) return $this->stop('msg_not_uploaded_image_mark');
+
+ $logged_info = Context::get('logged_info');
+ if($logged_info->is_admin != 'Y' && $logged_info->member_srl != $member_srl) return $this->stop('msg_not_uploaded_image_mark');
+
+ // 회원 모듈 설정에서 이미지 마크 사용 금지를 하였을 경우 관리자가 아니면 return;
+ $oModuleModel = &getModel('module');
+ $config = $oModuleModel->getModuleConfig('member');
+ if($logged_info->is_admin != 'Y' && $config->image_mark != 'Y') return $this->stop('msg_not_uploaded_image_mark');
+
+ // 정해진 사이즈를 구함
+ $max_width = $config->image_mark_max_width;
+ if(!$max_width) $max_width = "80";
+ $max_height = $config->image_mark_max_height;
+ if(!$max_height) $max_height = "20";
+
+ // 이미지 정보를 구함
+ list($width, $height, $type, $attrs) = getimagesize($file['tmp_name']);
+
+ // 이미지 정보가 정해진 크기보다 크면 크기를 바꿈
+ if($width>$max_width) $new_width = $max_width;
+ else $new_width = $width;
+ if($height>$max_height) $new_height = $max_height;
+ else $new_height = $height;
+
+ // 업로드한 파일을 옮기지 않고 gd를 이용해서 gif 이미지를 만듬 (gif, jpg, png, bmp가 아니면 역시 무시)
+ $thumb = imagecreatetruecolor($new_width, $new_height);
+ switch($type) {
+ // gif
+ case 1 :
+ $source = imagecreatefromgif($file['tmp_name']);
+ break;
+ // jpg
+ case 2 :
+ $source = imagecreatefromjpeg($file['tmp_name']);
+ break;
+ // png
+ case 3 :
+ $source = imagecreatefrompng($file['tmp_name']);
+ break;
+ // bmp
+ case 6 :
+ $source = imagecreatefromwbmp($file['tmp_name']);
+ break;
+ }
+
+ if(!$source) return $this->stop('msg_not_uploaded_image_mark');
+
+ if(function_exists('imagecopyresampled')) imagecopyresampled($thumb, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
+ else imagecopyresized($thumb, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
+
+ // 파일을 쓰고 끝냄
+ $target_filename = sprintf('files/attach/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl);
+ imagegif($thumb, $target_filename, 100);
+
+ // 페이지 리프레쉬
+ $this->setRefreshPage();
+ }
+
/**
* @brief 이미지 마크를 삭제
**/
diff --git a/modules/member/member.view.php b/modules/member/member.view.php
index b81f49211..2e8b73060 100644
--- a/modules/member/member.view.php
+++ b/modules/member/member.view.php
@@ -127,6 +127,10 @@
// 설정 정보를 받아옴 (module model 객체를 이용)
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('member');
+ if(!$config->image_name_max_width) $config->image_name_max_width = 80;
+ if(!$config->image_name_max_height) $config->image_name_max_height = 20;
+ if(!$config->image_mark_max_width) $config->image_mark_max_width = 20;
+ if(!$config->image_mark_max_height) $config->image_mark_max_height = 20;
Context::set('config',$config);
// 회원 관리 모듈의 스킨 목록을 구함
diff --git a/modules/member/tpl.admin/member_config.html b/modules/member/tpl.admin/member_config.html
index b2016daab..40d6c584c 100644
--- a/modules/member/tpl.admin/member_config.html
+++ b/modules/member/tpl.admin/member_config.html
@@ -22,14 +22,22 @@
| {$lang->image_name} |
- image_name=='Y')-->checked="true"/> |
+
+ image_name=='Y')-->checked="true"/>
+ {$lang->image_name_max_width} : px
+ {$lang->image_name_max_height} : px
+ |
| {$lang->about_image_name} |
| {$lang->image_mark} |
- image_mark=='Y')-->checked="true"/> |
+
+ image_mark=='Y')-->checked="true"/>
+ {$lang->image_mark_max_width} : px
+ {$lang->image_mark_max_height} : px
+ |
| {$lang->about_image_mark} |
diff --git a/modules/member/tpl.admin/member_info.html b/modules/member/tpl.admin/member_info.html
index 5862a6a99..e01c0c7a4 100644
--- a/modules/member/tpl.admin/member_info.html
+++ b/modules/member/tpl.admin/member_info.html
@@ -24,18 +24,40 @@
{$lang->image_name} |
+
+
+
+
|
| {$lang->image_mark} |
+
+
+
+
|
@@ -90,3 +112,5 @@
+
+