웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
회원정보 이미지 항목 추가
2008.12.22 16:26
회원정보를 보면 이미지를 입력할수 있는 항목이 3개가 있습니다.
프로필 사진
이미지 이름
이미지 마크
여기에 하나를 더 추가하고 싶다면??
남들에게는 굳이 보일 필요가 없지만 서비스상 필요한 이미지가 있어서 입력항목을 추가해봤습니다.
이넘의 커스텀 작업은 할때마다 까먹어서 개인 위키에다가 수정되는 내용을 하나 하나 정리하면서 하다보니 이왕 정리한거 공유하고자 하는 마음에 요즘 자주 올리게 되네요 ㅎㅎ;;
=================================================================================================
* 참고사항 - 개인적으로 커스텀 한 항목이 많아서 line 위치가 조금 어긋날 수 있습니다. 이 부부은 양해 바랍니다.
(이부분 맞추고 싶으시면 아래 올린 주민등록 번호 등록의 수정내용 다 적용하고 하시면 얼추 맞을 듯 하네요 ㅎㅎ;;)
저는 추가되는 항목의 이름을 recruit 으로 지정하였습니다.
대부분 profile관련 항목을 그대로 복사해서 recruit으로 바꾼정도인데 이게 엄청 많네요.
- /xe/modules/member/member.class.php
- /xe/modules/member/conf/module.xml
- /xe/modules/member/skins/default/filter/delete_recruit_image.xml 파일 생성
- /xe/modules/member/tpl/filter/delete_recruit_image.xml 파일 생성 ( 두 파일의 내용은 동일합니다.)
- /xe/modules/member/tpl/js/member_admin.js
- /xe/modules/member/skins/default/js/member.js
- /xe/modules/member/lang/ko.lang.php
- /xe/modules/member/member.model.php
- /xe/modules/member/member.controller.php
- /xe/modules/importer/inporter.admin.controller.php
- /xe/modules/comment.item.php
- /xe/modules/document/document.item.php
- /xe/modules/member/member.admin.controller.php
- /xe/modules/member/skins/default/member_info.html
- /xe/modules/member/tpl/member_config.html
- /xe/modules/member/tpl/member_info.html
몇번 수정해 본 결과 tpl 폴더의 내용은 관리자 페이지에서 사용하고 skins 폴더는 유저 페이지에서 사용하는 것같더군요
각각 별도로 수정 / 추가가 이루어 지는 부분이 많아 손이 많이 갔습니다.
보시다 시피 대부분 코딩 노가다 .. 붙여넣기만 잘해도 되지만요.
이렇게 하고 테스트 한 결과
이미지 업로드 / 삭제가 회원 정보 및 관리자 페이지 에서 정상적으로 추가 되었습니다.
이를 활용한 게시판 생성을 하려면 또 커스텀에 죽어나게 생겼네요
프로필 사진
이미지 이름
이미지 마크
여기에 하나를 더 추가하고 싶다면??
남들에게는 굳이 보일 필요가 없지만 서비스상 필요한 이미지가 있어서 입력항목을 추가해봤습니다.
이넘의 커스텀 작업은 할때마다 까먹어서 개인 위키에다가 수정되는 내용을 하나 하나 정리하면서 하다보니 이왕 정리한거 공유하고자 하는 마음에 요즘 자주 올리게 되네요 ㅎㅎ;;
=================================================================================================
* 참고사항 - 개인적으로 커스텀 한 항목이 많아서 line 위치가 조금 어긋날 수 있습니다. 이 부부은 양해 바랍니다.
(이부분 맞추고 싶으시면 아래 올린 주민등록 번호 등록의 수정내용 다 적용하고 하시면 얼추 맞을 듯 하네요 ㅎㅎ;;)
저는 추가되는 항목의 이름을 recruit 으로 지정하였습니다.
대부분 profile관련 항목을 그대로 복사해서 recruit으로 바꾼정도인데 이게 엄청 많네요.
- /xe/modules/member/member.class.php
+ line 64 추가 -> $oModuleController->insertActionForward('member', 'controller', 'procMemberInsertRecruitImage');
+ line 68 추가 -> $oModuleController->insertActionForward('member', 'controller', 'procMemberDeleteRecruitImage');
+ line 85 추가 -> if(!$args->recruit_image) $args->recruit_image = 'Y';
+ line 92 추가 ->
if(!$args->recruit_image_max_width) $args->recruit_image_max_width = '80';
if(!$args->recruit_image_max_height) $args->recruit_image_max_height = '80';
+ line 153 추가 -> FileHandler::makeDir('./files/member_extra_info/recruit_image');
+ line 194 추가
if(!is_dir("./files/member_extra_info/recruit_image")) return true;
$act = $oModuleModel->getActionForward('procMemberInsertRecruitImage');
if(!$act) return true;
$act = $oModuleModel->getActionForward('procMemberDeleteRecruitImage');
if(!$act) return true;
+ line 234 추가 -> $oModuleController->insertActionForward('member', 'controller', 'procMemberInsertRecruitImage');
+ line 242 추가 -> FileHandler::makeDir('./files/member_extra_info/recruit_image');
+ line 68 추가 -> $oModuleController->insertActionForward('member', 'controller', 'procMemberDeleteRecruitImage');
+ line 85 추가 -> if(!$args->recruit_image) $args->recruit_image = 'Y';
+ line 92 추가 ->
if(!$args->recruit_image_max_width) $args->recruit_image_max_width = '80';
if(!$args->recruit_image_max_height) $args->recruit_image_max_height = '80';
+ line 153 추가 -> FileHandler::makeDir('./files/member_extra_info/recruit_image');
+ line 194 추가
if(!is_dir("./files/member_extra_info/recruit_image")) return true;
$act = $oModuleModel->getActionForward('procMemberInsertRecruitImage');
if(!$act) return true;
$act = $oModuleModel->getActionForward('procMemberDeleteRecruitImage');
if(!$act) return true;
+ line 234 추가 -> $oModuleController->insertActionForward('member', 'controller', 'procMemberInsertRecruitImage');
+ line 242 추가 -> FileHandler::makeDir('./files/member_extra_info/recruit_image');
- /xe/modules/member/conf/module.xml
+ line 44 추가 -> <action name="procMemberInsertRecruitImage" type="controller" standalone="true" />
+ line 48 추가 -> <action name="procMemberDeleteRecruitImage" type="controller" standalone="true" />
+ line 48 추가 -> <action name="procMemberDeleteRecruitImage" type="controller" standalone="true" />
- /xe/modules/member/skins/default/filter/delete_recruit_image.xml 파일 생성
- /xe/modules/member/tpl/filter/delete_recruit_image.xml 파일 생성 ( 두 파일의 내용은 동일합니다.)
+ <filter name="delete_recruit_image" module="member" act="procMemberDeleteRecruitImage" confirm_msg_code="confirm_delete" />
- /xe/modules/member/tpl/js/member_admin.js
+ line 256 추가
function doDeleteRecruitImage(member_srl) {
var fo_obj = xGetElementById("fo_image");
fo_obj.member_srl.value = member_srl;
procFilter(fo_obj, delete_recruit_image);
}
function doDeleteRecruitImage(member_srl) {
var fo_obj = xGetElementById("fo_image");
fo_obj.member_srl.value = member_srl;
procFilter(fo_obj, delete_recruit_image);
}
- /xe/modules/member/skins/default/js/member.js
+ line 69 추가
function doUploadRecruitImage() {
var fo_obj = xGetElementById("fo_insert_member");
if(!fo_obj.recruit_image.value) return;
_doUploadImage(fo_obj, 'procMemberInsertRecruitImage');
}
+ line 129 추가
function doDeleteRecruitImage(member_srl) {
var fo_obj = xGetElementById("fo_insert_member");
fo_obj.member_srl.value = member_srl;
procFilter(fo_obj, delete_recruit_image);
}
function doUploadRecruitImage() {
var fo_obj = xGetElementById("fo_insert_member");
if(!fo_obj.recruit_image.value) return;
_doUploadImage(fo_obj, 'procMemberInsertRecruitImage');
}
+ line 129 추가
function doDeleteRecruitImage(member_srl) {
var fo_obj = xGetElementById("fo_insert_member");
fo_obj.member_srl.value = member_srl;
procFilter(fo_obj, delete_recruit_image);
}
- /xe/modules/member/lang/ko.lang.php
+ line 31 추가 -> $lang->recruit_image = '입사지원 사진'; //해당 이름을 입력하시면 됩니다.
+ line 34 추가 -> $lang->recruit_image_max_width = '가로 제한 크기';
$lang->recruit_image_max_height = '세로 제한 크기';
+ line 147 -> $lang->msg_not_uploaded_recruit_image = '입사지원 이미지를 등록할 수가 없습니다';
+ line 194 -> $lang->about_recruit_image = '입사지원 이미지를 사용할 수 있게 합니다';
+ line 34 추가 -> $lang->recruit_image_max_width = '가로 제한 크기';
$lang->recruit_image_max_height = '세로 제한 크기';
+ line 147 -> $lang->msg_not_uploaded_recruit_image = '입사지원 이미지를 등록할 수가 없습니다';
+ line 194 -> $lang->about_recruit_image = '입사지원 이미지를 사용할 수 있게 합니다';
- /xe/modules/member/member.model.php
+ line 182 추가 -> $info->recruit_image = $this->getRecruitImage($info->member_srl);
+ line 215 추가
/**
* @brief userid에 해당하는 member_srl을 구함
**/
function getMemberSrlByJumin($jumin) {
$args->jumin = $jumin;
$output = executeQuery('member.getMemberSrl', $args);
return $output->data->member_srl;
}
+ line 543 추가
/**
* @brief 입사지원 이미지의 정보를 구함
**/
function getRecruitImage($member_srl) {
if(!isset($GLOBALS['__member_info__']['recruit_image'][$member_srl])) {
$GLOBALS['__member_info__']['recruit_image'][$member_srl] = null;
$exts = array('gif','jpg','png');
for($i=0;$i<3;$i++) {
$image_name_file = sprintf('files/member_extra_info/recruit_image/%s%d.%s', getNumberingPath($member_srl), $member_srl, $exts[$i]);
if(file_exists($image_name_file)) {
list($width, $height, $type, $attrs) = getimagesize($image_name_file);
$info = null;
$info->width = $width;
$info->height = $height;
$info->src = Context::getRequestUri().$image_name_file;
$info->file = './'.$image_name_file;
$GLOBALS['__member_info__']['recruit_image'][$member_srl] = $info;
break;
}
}
}
return $GLOBALS['__member_info__']['recruit_image'][$member_srl];
}
+ line 215 추가
/**
* @brief userid에 해당하는 member_srl을 구함
**/
function getMemberSrlByJumin($jumin) {
$args->jumin = $jumin;
$output = executeQuery('member.getMemberSrl', $args);
return $output->data->member_srl;
}
+ line 543 추가
/**
* @brief 입사지원 이미지의 정보를 구함
**/
function getRecruitImage($member_srl) {
if(!isset($GLOBALS['__member_info__']['recruit_image'][$member_srl])) {
$GLOBALS['__member_info__']['recruit_image'][$member_srl] = null;
$exts = array('gif','jpg','png');
for($i=0;$i<3;$i++) {
$image_name_file = sprintf('files/member_extra_info/recruit_image/%s%d.%s', getNumberingPath($member_srl), $member_srl, $exts[$i]);
if(file_exists($image_name_file)) {
list($width, $height, $type, $attrs) = getimagesize($image_name_file);
$info = null;
$info->width = $width;
$info->height = $height;
$info->src = Context::getRequestUri().$image_name_file;
$info->file = './'.$image_name_file;
$GLOBALS['__member_info__']['recruit_image'][$member_srl] = $info;
break;
}
}
}
return $GLOBALS['__member_info__']['recruit_image'][$member_srl];
}
- /xe/modules/member/member.controller.php
+ line 598 추가
/**
* @brief 입사지원 이미지 추가
**/
function procMemberInsertRecruitImage() {
// 정상적으로 업로드 된 파일인지 검사
$file = $_FILES['recruit_image'];
if(!is_uploaded_file($file['tmp_name'])) return $this->stop('msg_not_uploaded_recruit_image');
// 회원 정보를 검사해서 회원번호가 없거나 관리자가 아니고 회원번호가 틀리면 무시
$member_srl = Context::get('member_srl');
if(!$member_srl) return $this->stop('msg_not_uploaded_recruit_image');
$logged_info = Context::get('logged_info');
if($logged_info->is_admin != 'Y' && $logged_info->member_srl != $member_srl) return $this->stop('msg_not_uploaded_recruit_image');
// 회원 모듈 설정에서 이미지 이름 사용 금지를 하였을 경우 관리자가 아니면 return;
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('member');
if($logged_info->is_admin != 'Y' && $config->recruit_image != 'Y') return $this->stop('msg_not_uploaded_recruit_image');
$this->insertRecruitImage($member_srl, $file['tmp_name']);
// 페이지 리프레쉬
$this->setRefreshPage();
}
+ line 624 추가
function insertRecruitImage($member_srl, $target_file) {
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('member');
// 정해진 사이즈를 구함
$max_width = $config->recruit_image_max_width;
if(!$max_width) $max_width = "80";
$max_height = $config->recruit_image_max_height;
if(!$max_height) $max_height = "80";
// 저장할 위치 구함
$target_path = sprintf('files/member_extra_info/recruit_image/%s', getNumberingPath($member_srl));
FileHandler::makeDir($target_path);
// 파일 정보 구함
list($width, $height, $type, $attrs) = @getimagesize($target_file);
if($type == 3) $ext = 'png';
elseif($type == 2) $ext = 'jpg';
else $ext = 'gif';
$target_filename = sprintf('%s%d.%s', $target_path, $member_srl, $ext);
// 지정된 사이즈보다 크거나 gif가 아니면 변환
if($width > $max_width || $height > $max_height || $type!=1) FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, $ext);
else @copy($target_file, $target_filename);
}
/**
* @brief 입사지원 이미지 추가
**/
function procMemberInsertRecruitImage() {
// 정상적으로 업로드 된 파일인지 검사
$file = $_FILES['recruit_image'];
if(!is_uploaded_file($file['tmp_name'])) return $this->stop('msg_not_uploaded_recruit_image');
// 회원 정보를 검사해서 회원번호가 없거나 관리자가 아니고 회원번호가 틀리면 무시
$member_srl = Context::get('member_srl');
if(!$member_srl) return $this->stop('msg_not_uploaded_recruit_image');
$logged_info = Context::get('logged_info');
if($logged_info->is_admin != 'Y' && $logged_info->member_srl != $member_srl) return $this->stop('msg_not_uploaded_recruit_image');
// 회원 모듈 설정에서 이미지 이름 사용 금지를 하였을 경우 관리자가 아니면 return;
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('member');
if($logged_info->is_admin != 'Y' && $config->recruit_image != 'Y') return $this->stop('msg_not_uploaded_recruit_image');
$this->insertRecruitImage($member_srl, $file['tmp_name']);
// 페이지 리프레쉬
$this->setRefreshPage();
}
+ line 624 추가
function insertRecruitImage($member_srl, $target_file) {
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('member');
// 정해진 사이즈를 구함
$max_width = $config->recruit_image_max_width;
if(!$max_width) $max_width = "80";
$max_height = $config->recruit_image_max_height;
if(!$max_height) $max_height = "80";
// 저장할 위치 구함
$target_path = sprintf('files/member_extra_info/recruit_image/%s', getNumberingPath($member_srl));
FileHandler::makeDir($target_path);
// 파일 정보 구함
list($width, $height, $type, $attrs) = @getimagesize($target_file);
if($type == 3) $ext = 'png';
elseif($type == 2) $ext = 'jpg';
else $ext = 'gif';
$target_filename = sprintf('%s%d.%s', $target_path, $member_srl, $ext);
// 지정된 사이즈보다 크거나 gif가 아니면 변환
if($width > $max_width || $height > $max_height || $type!=1) FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, $ext);
else @copy($target_file, $target_filename);
}
- /xe/modules/importer/inporter.admin.controller.php
+ line 212 -> $obj->recruit_image = base64_decode($xmlObj->member->recruit_image->buff->body);
+ line 257 추가
if($obj->recruit_image) {
$target_path = sprintf('files/member_extra_info/recruit_image/%s/', getNumberingPath($obj->member->srl));
$target_filename = sprintf('%s%d.gif', $target_path, $obj->member_srl);
FileHandler::writeFile($target_filename, $obj->recruit_image);
}
+ line 257 추가
if($obj->recruit_image) {
$target_path = sprintf('files/member_extra_info/recruit_image/%s/', getNumberingPath($obj->member->srl));
$target_filename = sprintf('%s%d.gif', $target_path, $obj->member_srl);
FileHandler::writeFile($target_filename, $obj->recruit_image);
}
- /xe/modules/comment.item.php
+ line 291 추가
/**
* @brief 작성자의 입사지원 이미지를 return
**/
function getRecruitImage() {
if(!$this->isE xists() || !$this->get('member_srl')) return; // 금지 단어라 띄워 쓰기 해놨습니다 ;;
$oMemberModel = &getModel('member');
$recruit_info = $oMemberModel->getRecruitImage($this->get('member_srl'));
if(!$recruit_info) return;
return $recruit_info->src;
}
/**
* @brief 작성자의 입사지원 이미지를 return
**/
function getRecruitImage() {
if(!$this->isE xists() || !$this->get('member_srl')) return; // 금지 단어라 띄워 쓰기 해놨습니다 ;;
$oMemberModel = &getModel('member');
$recruit_info = $oMemberModel->getRecruitImage($this->get('member_srl'));
if(!$recruit_info) return;
return $recruit_info->src;
}
- /xe/modules/document/document.item.php
+ line 646 추가
/**
* @brief 작성자의 입사지원 이미지를 return
**/
function getRecruitImage() {
if(!$this->is Exists() || !$this->get('member_srl')) return; // 금지 단어라 띄워 쓰기 해놨습니다 ;;
$oMemberModel = &getModel('member');
$recruit_info = $oMemberModel->getRecruitImage($this->get('member_srl'));
if(!$recruit_info) return;
return $recruit_info->src;
}
/**
* @brief 작성자의 입사지원 이미지를 return
**/
function getRecruitImage() {
if(!$this->is Exists() || !$this->get('member_srl')) return; // 금지 단어라 띄워 쓰기 해놨습니다 ;;
$oMemberModel = &getModel('member');
$recruit_info = $oMemberModel->getRecruitImage($this->get('member_srl'));
if(!$recruit_info) return;
return $recruit_info->src;
}
- /xe/modules/member/member.admin.controller.php
+ line 94 추가 -> if($args->recruit_image !='Y') $args->recruit_image = 'N';
+ line 78 추가
if(!$config->recruit_image_max_width) $config->recruit_image_max_width = 80;
if(!$config->recruit_image_max_height) $config->recruit_image_max_height = 80;
+ line 78 추가
if(!$config->recruit_image_max_width) $config->recruit_image_max_width = 80;
if(!$config->recruit_image_max_height) $config->recruit_image_max_height = 80;
- /xe/modules/member/skins/default/member_info.html
+ line 11 추가
<!--@if($member_config->recruit_image == 'Y')-->
<!--%import("filter/delete_recruit_image.xml")-->
<!--@end-->
+ line 27 수정
<form id="fo_insert_member" action="{getUrl()}" method="post" onsubmit="return procFilter(this, modify_info)" <!--@if($member_config->profile_image == 'Y' || $member_config->image_name=='Y' || $member_config->image_mark=='Y'enctype="multipart/form-data"<!--@end-->>
<form id="fo_insert_member" action="{getUrl()}" method="post" onsubmit="return procFilter(this, modify_info)" <!--@if($member_config->profile_image == 'Y' || $member_config->image_name=='Y' || $member_config->image_mark=='Y'||$member_config->recruit_image == 'Y')-->enctype="multipart/form-data"<!--@end-->>
+ line 31 추가
<!--@if($member_info->recruit_image->src)-->
<tr>
<th scope="row">{$lang->recruit_image}</th>
<td><img src="{$member_info->recruit_image->src}" border="0" alt="recruit_image" /></td>
</tr>
<!--@end-->
+ line 77 추가
<!--@if($member_config->recruit_image == 'Y')-->
<tr>
<th scope="row">{$lang->recruit_image}</th>
<td>
<!--@if($member_info->recruit_image->src)-->
<div class="memberImage">
<div class="info"><img src="{$member_info->recruit_image->src}" border="0" alt="recruit_image" /></div>
<a href="#" onclick="doDeleteRecruitImage({$member_info->member_srl});return false;" class="button"><span>{$lang->cmd_delete}</span></a>
</div>
<!--@end-->
<div class="memberImage">
<div class="form"><input type="file" name="recruit_image" value="" /></div>
<a href="#" onclick="doUploadRecruitImage();return false;" class="button"><span>{$lang->cmd_registration}</span></a>
</div>
<p>{$lang->recruit_image_max_width} : {$member_config->recruit_image_max_width}px, {$lang->recruit_image_max_height} : {$member_config->recruit_image_max_height}px</p>
</td>
</tr>
<!--@end-->
<!--@if($member_config->recruit_image == 'Y')-->
<!--%import("filter/delete_recruit_image.xml")-->
<!--@end-->
+ line 27 수정
<form id="fo_insert_member" action="{getUrl()}" method="post" onsubmit="return procFilter(this, modify_info)" <!--@if($member_config->profile_image == 'Y' || $member_config->image_name=='Y' || $member_config->image_mark=='Y'enctype="multipart/form-data"<!--@end-->>
<form id="fo_insert_member" action="{getUrl()}" method="post" onsubmit="return procFilter(this, modify_info)" <!--@if($member_config->profile_image == 'Y' || $member_config->image_name=='Y' || $member_config->image_mark=='Y'||$member_config->recruit_image == 'Y')-->enctype="multipart/form-data"<!--@end-->>
+ line 31 추가
<!--@if($member_info->recruit_image->src)-->
<tr>
<th scope="row">{$lang->recruit_image}</th>
<td><img src="{$member_info->recruit_image->src}" border="0" alt="recruit_image" /></td>
</tr>
<!--@end-->
+ line 77 추가
<!--@if($member_config->recruit_image == 'Y')-->
<tr>
<th scope="row">{$lang->recruit_image}</th>
<td>
<!--@if($member_info->recruit_image->src)-->
<div class="memberImage">
<div class="info"><img src="{$member_info->recruit_image->src}" border="0" alt="recruit_image" /></div>
<a href="#" onclick="doDeleteRecruitImage({$member_info->member_srl});return false;" class="button"><span>{$lang->cmd_delete}</span></a>
</div>
<!--@end-->
<div class="memberImage">
<div class="form"><input type="file" name="recruit_image" value="" /></div>
<a href="#" onclick="doUploadRecruitImage();return false;" class="button"><span>{$lang->cmd_registration}</span></a>
</div>
<p>{$lang->recruit_image_max_width} : {$member_config->recruit_image_max_width}px, {$lang->recruit_image_max_height} : {$member_config->recruit_image_max_height}px</p>
</td>
</tr>
<!--@end-->
- /xe/modules/member/tpl/member_config.html
+ line 65 추가
<tr>
<th scope="row"><div>{$lang->recruit_image}</div></th>
<td>
<p>
<input type="checkbox" name="recruit_image" value="Y" <!--@if($config->recruit_image=='Y')-->checked="checked"<!--@end--> class="checkbox" />
{$lang->about_recruit_image}
</p>
{$lang->recruit_image_max_width} : <input type="text" name="recruit_image_max_width" size="3" value="{$config->recruit_image_max_width}" class="inputTypeText" />px<br />
{$lang->recruit_image_max_height} : <input type="text" name="recruit_image_max_height" size="3" value="{$config->recruit_image_max_height}" class="inputTypeText" />px<br />
</td>
</tr>
<tr>
<th scope="row"><div>{$lang->recruit_image}</div></th>
<td>
<p>
<input type="checkbox" name="recruit_image" value="Y" <!--@if($config->recruit_image=='Y')-->checked="checked"<!--@end--> class="checkbox" />
{$lang->about_recruit_image}
</p>
{$lang->recruit_image_max_width} : <input type="text" name="recruit_image_max_width" size="3" value="{$config->recruit_image_max_width}" class="inputTypeText" />px<br />
{$lang->recruit_image_max_height} : <input type="text" name="recruit_image_max_height" size="3" value="{$config->recruit_image_max_height}" class="inputTypeText" />px<br />
</td>
</tr>
- /xe/modules/member/tpl/member_info.html
+ line 2 추가 -> <!--%import("filter/delete_recruit_image.xml")-->
+ line 48 추가
<tr>
<th scope="row" rowspan="2"><div>{$lang->recruit_image}</div></th>
<td>
<!--@if($member_info->recruit_image->src)-->
<img src="{$member_info->recruit_image->src}" border="0" alt="recruit_image" />
<a href="#" onclick="doDeleteRecruitImage({$member_info->member_srl});return false;" class="button"><span>{$lang->cmd_delete}</span></a>
<!--@else-->
<!--@end-->
</td>
</tr>
<tr class="row2">
<td>
<form action="./" method="post" enctype="multipart/form-data" target="hidden_iframe">
<input type="hidden" name="member_srl" value="{$member_info->member_srl}" />
<input type="hidden" name="module" value="member" />
<input type="hidden" name="act" value="procMemberInsertRecruitImage" />
<input type="file" name="recruit_image" value="" />
<span class="button"><input type="submit" value="{$lang->cmd_submit}" /></span>
</form>
<p>{$lang->recruit_image_max_width} : {$member_config->recruit_image_max_width}px, {$lang->recruit_image_max_height} : {$member_config->recruit_image_max_height}px</p>
</td>
</tr>
+ line 48 추가
<tr>
<th scope="row" rowspan="2"><div>{$lang->recruit_image}</div></th>
<td>
<!--@if($member_info->recruit_image->src)-->
<img src="{$member_info->recruit_image->src}" border="0" alt="recruit_image" />
<a href="#" onclick="doDeleteRecruitImage({$member_info->member_srl});return false;" class="button"><span>{$lang->cmd_delete}</span></a>
<!--@else-->
<!--@end-->
</td>
</tr>
<tr class="row2">
<td>
<form action="./" method="post" enctype="multipart/form-data" target="hidden_iframe">
<input type="hidden" name="member_srl" value="{$member_info->member_srl}" />
<input type="hidden" name="module" value="member" />
<input type="hidden" name="act" value="procMemberInsertRecruitImage" />
<input type="file" name="recruit_image" value="" />
<span class="button"><input type="submit" value="{$lang->cmd_submit}" /></span>
</form>
<p>{$lang->recruit_image_max_width} : {$member_config->recruit_image_max_width}px, {$lang->recruit_image_max_height} : {$member_config->recruit_image_max_height}px</p>
</td>
</tr>
몇번 수정해 본 결과 tpl 폴더의 내용은 관리자 페이지에서 사용하고 skins 폴더는 유저 페이지에서 사용하는 것같더군요
각각 별도로 수정 / 추가가 이루어 지는 부분이 많아 손이 많이 갔습니다.
보시다 시피 대부분 코딩 노가다 .. 붙여넣기만 잘해도 되지만요.
이렇게 하고 테스트 한 결과
이미지 업로드 / 삭제가 회원 정보 및 관리자 페이지 에서 정상적으로 추가 되었습니다.
이를 활용한 게시판 생성을 하려면 또 커스텀에 죽어나게 생겼네요
댓글 3
제목 | 글쓴이 | 날짜 |
---|---|---|
프로필이미지, 이미지마크, 이미지이름 수정, 추가시 포인트 삭감 [1] | lattente | 2009.11.02 |
제로보드4->XE 데이터 이전 시 회원 정보 오류 / 포인트 문제 [10] | 개돌 | 2009.10.08 |
추천과 추천포인트 관련 팁 [8] | 고진감래 | 2009.09.30 |
이미지마크 쓸 경우 레벨아이콘 위치 바꾸기 | 고진감래 | 2009.09.30 |
까오천사님의 만기일 팁을 1.2.4에 맞게 수정했어요.
[15]
![]() | 도파 | 2009.08.27 |
회원정보 손쉽게 엑셀 파일로 저장하기 [34] | thejeon | 2009.08.05 |
확장변수에 회원정보를 넣어보자
[10]
![]() | 개돌 | 2009.06.30 |
로그인 페이지 만드는 방법 [5] | 산토 | 2009.06.12 |
별도 페이지 로그인방법 | cornet | 2009.05.21 |
주민등록 입력 폼 1.2.0
[55]
![]() | 개돌 | 2009.04.10 |
클릭마다 조회수 올리기 [1.4.0]
[12]
![]() | 지B | 2009.04.04 |
제로보드의 아이콘을 내 맘대로 변경하기...(2)
[2]
![]() | winter548 | 2009.03.23 |
제로보드의 아이콘을 내 맘대로 변경하기...(1)
[3]
![]() | winter548 | 2009.03.23 |
테스트용 아이디 탈퇴 막기 [1] | SMaker | 2009.02.26 |
주민등록번호 입력 폼 추가 (1.1.5 기준) [39] | 개돌 | 2009.02.16 |
관리자 여러명 만들기 팁
[1]
![]() | 만쓰별(정만) | 2009.02.03 |
회원약관 추가
[7]
![]() | 애치티 | 2009.01.15 |
회원정보 이미지 항목 추가 [3] | 개돌 | 2008.12.22 |
[초간단]회원팝업메뉴에 메뉴넣기 [1] | Pw-NET | 2008.11.30 |
회원 관리 리스트에 생일/설명/활동량 추가하기
[16]
![]() | 老姜君 | 2008.11.21 |