sandbox를 beta.0.2.2배포를 위해 trunk로 copy

git-svn-id: http://xe-core.googlecode.com/svn/trunk@2784 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2007-10-15 11:54:56 +00:00
commit 2721e96083
64 changed files with 757 additions and 230 deletions

View file

@ -75,7 +75,7 @@
// 4. 자신의 쪽지함 보기 기능 추가
$menu_str = Context::getLang('cmd_view_message_box');
$menu_link = "current_url.setQuery('act','dispMemberMessages')";
$menu_link = "current_url.setQuery('act','dispMemberMessages').setQuery('message_type','')";
$menu_list .= sprintf("\n%s,%s,move_url(%s,'Y')", Context::getRequestUri().'/modules/member/tpl/images/icon_message_box.gif', $menu_str, $menu_link);
// 5. 친구 목록 보기

View file

@ -167,6 +167,8 @@
if(file_exists($db_config_file)) @include($db_config_file);
if(!$db_info->time_zone) $db_info->time_zone = date("O");
if(!$db_info->use_optimizer || $db_info->use_optimizer != 'N') $db_info->use_optimizer = 'Y';
else $db_info->use_optimizer = 'N';
$this->_setDBInfo($db_info);
@ -364,8 +366,6 @@
return $obj->str;
}
/**
* @brief response method를 강제로 지정 (기본으로는 request method를 이용함)
*

113
classes/mail/Mail.class.php Normal file
View file

@ -0,0 +1,113 @@
<?php
/**
* @brief 메일 발송
* @author zero (zero@zeroboard.com)
**/
class Mail {
var $sender_name = '';
var $sender_email = '';
var $receiptor_name = '';
var $receiptor_email = '';
var $title = '';
var $content = '';
var $content_type = 'html';
function Mail() { }
function setSender($name, $email) {
$this->sender_name = $name;
$this->sender_email = $email;
}
function getSender() {
if($this->sender_name) return sprintf("%s <%s>", '=?utf-8?b?'.base64_encode($this->sender_name).'?=', $this->sender_email);
return $this->sender_email;
}
function setReceiptor($name, $email) {
$this->receiptor_name = $name;
$this->receiptor_email = $email;
}
function getReceiptor() {
if($this->receiptor_name) return sprintf("%s <%s>", '=?utf-8?b?'.base64_encode($this->receiptor_name).'?=', $this->receiptor_email);
return $this->receiptor_email;
}
function setTitle($title) {
$this->title = $title;
}
function getTitle() {
return '=?utf-8?b?'.base64_encode($this->title).'?=';
}
function setContent($content) {
$this->content = $content;
}
function getPlainContent() {
return chunk_split(base64_encode(str_replace(array("<",">","&"), array("&lt;","&gt;","&amp;"), $this->content)));
}
function getHTMLContent() {
return chunk_split(base64_encode($this->content_type=='html'?nl2br($this->content):$this->content));
}
function setContentType($mode = 'html') {
$this->content_type = $mode=='html'?'html':'';
}
function send() {
$boundary = '----=='.uniqid(rand(),true);
$headers = sprintf(
"From: %s\r\n".
"MIME-Version: 1.0\r\n".
"Content-Type: multipart/alternative;\r\n\tboundary=\"%s\"\r\n\r\n".
"",
$this->getSender(),
$boundary
);
$body = sprintf(
"--%s\r\n".
"Content-Type: text/plain; charset=utf-8; format=flowed\r\n".
"Content-Transfer-Encoding: base64\r\n".
"Content-Disposition: inline\r\n\r\n".
"%s".
"--%s\r\n".
"Content-Type: text/html; charset=utf-8\r\n".
"Content-Transfer-Encoding: base64\r\n".
"Content-Disposition: inline\r\n\r\n".
"%s".
"--%s--".
"",
$boundary,
$this->getPlainContent(),
$boundary,
$this->getHTMLContent(),
$boundary
);
return mail($this->getReceiptor(), $this->getTitle(), $body, $headers);
}
function checkMailMX($email_address) {
if(!Mail::isVaildMailAddress($email_address)) return false;
list($user, $host) = explode("@", $email_address);
if(function_exists('checkdnsrr')) {
if (checkdnsrr($host, "MX") or checkdnsrr($host, "A")) return true;
else return false;
}
return true;
}
function isVaildMailAddress($email_address) {
if( eregi("([a-z0-9\_\-\.]+)@([a-z0-9\_\-\.]+)", $email_address) ) return $email_address;
else return '';
}
}
?>

View file

@ -26,6 +26,11 @@
* @brief optimize 대상 파일을 받아서 처리 optimize 파일이름을 return
**/
function getOptimizedFiles($source_files, $type = "js") {
if(!is_array($source_files) || !count($source_files)) return;
// $source_files의 역슬래쉬 경로를 슬래쉬로 변경 (윈도우즈 대비)
foreach($source_files as $key => $file) $source_files[$key] = str_replace("\\","/",$file);
// 관리자 설정시 설정이 되어 있지 않으면 패스
$db_info = Context::getDBInfo();
if($db_info->use_optimizer == 'N') return $source_files;
@ -69,11 +74,9 @@
function doOptimizedFile($filename, $targets, $type) {
if(!file_exists($filename)) return $this->makeOptimizedFile($filename, $targets, $type);
$file_count = count($targets);
$mtime = filemtime($filename);
for($i=0;$i<$file_count;$i++) {
if($mtime < filemtime($targets[$i])) return $this->makeOptimizedFile($filename, $targets, $type);
foreach($targets as $file) {
if($mtime < filemtime($file)) return $this->makeOptimizedFile($filename, $targets, $type);
}
}
@ -85,9 +88,7 @@
* 실제 css나 js의 내용을 합친 것을 구함
**/
// 대상 파일의 내용을 구해오고 css 파일일 경우 url()내의 경로를 변경
$file_count = count($targets);
for($i=0;$i<$file_count;$i++) {
$file = $targets[$i];
foreach($targets as $file) {
$str = FileHandler::readFile($file);
$str = Context::convertEncodingStr($str);
@ -108,8 +109,6 @@
* 압축을 지원하고 캐시 타임을 제대로 이용하기 위한 헤더 파일 구함
**/
// php의 헤더파일 생성
$modified_time = gmdate("D, d M Y H:i:s");
// gzip 압축 체크
if($type!="css" && Context::isGzEnabled()) $gzip_header = 'header("Content-Encoding: gzip");';
@ -120,10 +119,15 @@
$header_buff = <<<EndOfBuff
<?php
header("Content-Type: {$content_type}; charset=UTF-8");
header("Last-Modified: {$modified_time} GMT");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Length: ".filesize('{$content_filename}'));
{$gzip_header}
if(@file_exists("{$content_filename}")) {
@fpassthru(fopen("{$content_filename}", "rb"));
@fpassthru(fopen("{$content_filename}", "r"));
}
exit();
?>

View file

@ -20,6 +20,7 @@ IE7 & IE6 & Below
.tRight { text-align:right; }
.tLeft { text-align:left; }
.gap1 { margin-top:.8em; }
.nowrap { white-space:nowrap; }
/* default.css - Type Selector Definition */
* { margin:0; padding:0; }

View file

@ -23,7 +23,7 @@ function filterAlertMessage(ret_obj) {
var redirect_url = ret_obj["redirect_url"];
var url = location.href;
if(url.substr(-1)=="#") url = url.substr(0,url.length-1);
if(url.substr(url.length-1,1)=="#") url = url.substr(0,url.length-1);
if(typeof(message)!="undefined"&&message&&message!="success") alert(message);

View file

@ -37,6 +37,7 @@
$lang->cmd_select = '选择';
$lang->cmd_select_all = '全部选择';
$lang->cmd_unselect_all = '全部解除';
$lang->cmd_reverse_all = "反选";
$lang->cmd_close_all = '全部折叠';
$lang->cmd_open_all = '全部展开';
$lang->cmd_reload = '从新载入';

View file

@ -14,7 +14,7 @@
* 내용은 제로보드XE의 버전을 관리자 페이지에 표시하기 위한 용도이며
* config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야
**/
define('__ZBXE_VERSION__', '0.2.1');
define('__ZBXE_VERSION__', '0.2.2');
/**
* @brief 디버깅 메세지 출력
@ -81,6 +81,7 @@
require_once("./classes/module/ModuleHandler.class.php");
require_once("./classes/display/DisplayHandler.class.php");
require_once("./classes/template/TemplateHandler.class.php");
require_once("./classes/mail/Mail.class.php");
if(__DEBUG__) $GLOBALS['__elapsed_class_load__'] = getMicroTime() - __ClassLosdStartTime__;
/**

View file

@ -77,7 +77,7 @@ Jeong, Chan Myeong 070601~070630
.boardList td .thumbnailMedium img { border:1px solid #e0e1db; padding:3px;}
.thumbnailBox { border-top:none; border-bottom:1px solid #eff0ed; padding:1.5em 0 0 1.5em; overflow:hidden; padding-bottom:1em;}
.thumbnailBox div.cell { display:block; float:left; overflow:hidden; margin-bottom:1em;}
.thumbnailBox div.cell { display:block; float:left; overflow:hidden; margin-bottom:1em; margin-right:1em;}
.thumbnailBox div.cell img.thumb { padding:2px; border:1px solid #e0e1db; display:block; margin-bottom:1em; margin-left:auto;margin-right:auto;}
.thumbnailBox div.title { color:#3B96C0; margin-bottom:.2em; overflow:hidden; white-space:nowrap; text-align:center;}
.thumbnailBox div.title a { color:#3B96C0; text-decoration:none;}
@ -130,7 +130,7 @@ Jeong, Chan Myeong 070601~070630
.boardRead .titleAndCategory { float:left;}
.boardRead .titleAndCategory h4 { font-size:1.4em; display:inline; padding-left:.2em;}
.boardRead .titleAndCategory .vr { font-size:.9em; margin:0 .3em; color:#c5c7c0;}
.boardRead .titleAndCategory .cotegory { font-size:.9em; color:#999999; white-space:nowrap;}
.boardRead .titleAndCategory .category { font-size:.9em; color:#999999; white-space:nowrap;}
.boardRead .dateAndModify { float:right; white-space:nowrap; font-size:.8em; color:#999999; position:relative;}
.boardRead .dateAndModify strong { font-size:1em; font-family:Tahoma;}

View file

@ -93,7 +93,7 @@
</tbody>
</table>
{@ $height = $module_info->thumbnail_height + 40; }
{@ $height = $module_info->thumbnail_height + 50; }
<!--@if($module_info->use_category=='Y')-->{@ $height += 20 }<!--@end-->
<!--@if($module_info->display_author!='N' || $module_info->display_regdate!='N')-->{@ $height += 25 }<!--@end-->
<!--@if($module_info->display_readed_count !='N' || $module_info->display_voted_count!='N')-->{@ $height += 25 }<!--@end-->
@ -101,50 +101,53 @@
<div class="thumbnailBox">
<!--@foreach($document_list as $no => $document)-->
<!--@if(!$document->isNotice())-->
<div class="cellBox">
<div class="cell" style="width:{$module_info->thumbnail_width+30}px;height:{$height}px;">
<!--@if($document->thumbnailExists($module_info->thumbnail_width, $module_info->thumbnail_height, $module_info->thumbnail_type))-->
<a href="{getUrl('','document_srl',$document->document_srl)}"><img src="{$document->getThumbnail($module_info->thumbnail_width, $module_info->thumbnail_height, $module_info->thumbnail_type)}" border="0" alt="" class="thumb"/></a>
<!--@else-->
<img src="./images/blank.gif" border="0" alt="" class="thumb" width="{$module_info->thumbnail_width}" height="{$module_info->thumbnail_height}" />
<!--@end-->
<!--@foreach($document_list as $no => $document)-->
<!--@if(!$document->isNotice())-->
<div class="title">
<!--@if($module_info->use_category == "Y" && $document->get('category_srl'))-->
<strong class="category">{$category_list[$document->get('category_srl')]->title}</strong><br />
<div class="cell" style="width:{$module_info->thumbnail_width+30}px;height:{$height}px;">
<!--@if($document->thumbnailExists($module_info->thumbnail_width, $module_info->thumbnail_height, $module_info->thumbnail_type))-->
<a href="{getUrl('','document_srl',$document->document_srl)}"><img src="{$document->getThumbnail($module_info->thumbnail_width, $module_info->thumbnail_height, $module_info->thumbnail_type)}" border="0" alt="" class="thumb"/></a>
<!--@else-->
<img src="./images/blank.gif" border="0" alt="" class="thumb" width="{$module_info->thumbnail_width}" height="{$module_info->thumbnail_height}" />
<!--@end-->
<!--@if($grant->is_admin)-->
<input type="checkbox" name="cart" value="{$document->document_srl}" onclick="doAddDocumentCart(this)" <!--@if($document->isCarted())-->checked="checked"<!--@end--> />
<!--@end-->
<div class="title">
<!--@if($module_info->use_category == "Y" && $document->get('category_srl'))-->
<strong class="category">{$category_list[$document->get('category_srl')]->title}</strong><br />
<!--@end-->
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
<!--@if($grant->is_admin)-->
<input type="checkbox" name="cart" value="{$document->document_srl}" onclick="doAddDocumentCart(this)" <!--@if($document->isCarted())-->checked="checked"<!--@end--> />
<!--@end-->
<!--@if($document->getCommentCount())-->
<span class="replyAndTrackback" title="Replies">(<strong>{$document->getCommentCount()}</strong>)</span>
<!--@end-->
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
<!--@if($document->getTrackbackCount())-->
<span class="replyAndTrackback" title="Trackbacks">[<strong>{$document->getTrackbackCount()}</strong>]</span>
<!--@end-->
<!--@if($document->getCommentCount())-->
<span class="replyAndTrackback" title="Replies">(<strong>{$document->getCommentCount()}</strong>)</span>
<!--@end-->
<div class="nameAndDate">
<!--@if($module_info->display_author!='N')--><div class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></div><!--@end-->
<!--@if($module_info->display_regdate!='N')--><div class="date">{$document->getRegdate('Y.m.d')}</div><!--@end-->
<!--@if($document->getTrackbackCount())-->
<span class="replyAndTrackback" title="Trackbacks">[<strong>{$document->getTrackbackCount()}</strong>]</span>
<!--@end-->
<div class="nameAndDate">
<!--@if($module_info->display_author!='N')--><div class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></div><!--@end-->
<!--@if($module_info->display_regdate!='N')--><div class="date">{$document->getRegdate('Y.m.d')}</div><!--@end-->
</div>
</div>
<div class="readAndRecommend">
<!--@if($module_info->display_readed_count!='N')-->{$lang->readed_count} <span class="num">{$document->get('readed_count')}</span><!--@end-->
<!--@if($document->get('voted_count') && $module_info->display_voted_count!='N')-->
<!--@if($module_info->display_readed_count!='N')--><br /><!--@end-->
{$lang->voted_count} <strong class="num">{$document->get('voted_count')}</strong>
<!--@end-->
</div>
</div>
<div class="readAndRecommend">
<!--@if($module_info->display_readed_count!='N')-->{$lang->readed_count} <span class="num">{$document->get('readed_count')}</span><!--@end-->
<!--@if($document->get('voted_count') && $module_info->display_voted_count!='N')-->
<!--@if($module_info->display_readed_count!='N')--><span class="vr">|</span> <!--@end-->
{$lang->voted_count} <strong class="num">{$document->get('voted_count')}</strong>
<!--@end-->
</div>
<!--@end-->
<!--@end-->
</div>
<!--@end-->
<!--@end-->
</div>
</form>

View file

@ -117,18 +117,24 @@
</var>
<var name="thumbnail_type" type="select">
<title xml:lang="ko">썸네일 생성 방법</title>
<title xml:lang="zh-CN">缩略图生成方式</title>
<description xml:lang="ko">썸네일 생성 방법을 선택할 수 있습니다. (crop : 꽉 채우기, ratio : 비율 맞추기)</description>
<description xml:lang="zh-CN">可以选择缩略图生成方式。 (crop : 裁减, ratio : 比例)</description>
<default>crop</default>
<default>ratio</default>
</var>
<var name="thumbnail_width" type="text">
<title xml:lang="ko">썸네일 가로크기</title>
<title xml:lang="zh-CN">缩略图宽度</title>
<description xml:lang="ko">썸네일의 가로 크기를 지정할 수 있습니다. (기본 100px)</description>
<description xml:lang="zh-CN">可以指定缩略图宽度。 (默认为 100px)</description>
<default>100</default>
</var>
<var name="thumbnail_height" type="text">
<title xml:lang="ko">썸네일 세로크기</title>
<title xml:lang="zh-CN">缩略图高度</title>
<description xml:lang="ko">썸네일의 세로 크기를 지정할 수 있습니다. (기본 100px)</description>
<description xml:lang="zh-CN">可以指定缩略图高度。 (默认为 100px)</description>
<default>100</default>
</var>
<var name="display_author" type="select">

View file

@ -130,7 +130,7 @@ Jeong, Chan Myeong 070601~070630
.boardRead .titleAndCategory { float:left;}
.boardRead .titleAndCategory h4 { font-size:1.4em; display:inline; padding-left:.2em;}
.boardRead .titleAndCategory .vr { font-size:.9em; margin:0 .3em; color:#c5c7c0;}
.boardRead .titleAndCategory .cotegory { font-size:.9em; color:#999999; white-space:nowrap;}
.boardRead .titleAndCategory .category { font-size:.9em; color:#999999; white-space:nowrap;}
.boardRead .dateAndModify { float:right; white-space:nowrap; font-size:.8em; color:#999999; position:relative;}
.boardRead .dateAndModify strong { font-size:1em; font-family:Tahoma;}

View file

@ -135,7 +135,7 @@ Jeong, Chan Myeong 070601~070630
.boardRead .titleAndCategory { float:left;}
.boardRead .titleAndCategory h4 { font-size:1.4em; display:inline; padding-left:.2em;}
.boardRead .titleAndCategory .vr { font-size:.9em; margin:0 .3em; color:#c5c7c0;}
.boardRead .titleAndCategory .cotegory { font-size:.9em; color:#999999; white-space:nowrap;}
.boardRead .titleAndCategory .category { font-size:.9em; color:#999999; white-space:nowrap;}
.boardRead .dateAndModify { float:right; white-space:nowrap; font-size:.8em; color:#999999; position:relative;}
.boardRead .dateAndModify strong { font-size:1em; font-family:Tahoma;}

View file

@ -126,18 +126,24 @@
</var>
<var name="thumbnail_type" type="select">
<title xml:lang="ko">썸네일 생성 방법</title>
<title xml:lang="zh-CN">缩略图生成方式</title>
<description xml:lang="ko">썸네일 생성 방법을 선택할 수 있습니다. (crop : 꽉 채우기, ratio : 비율 맞추기)</description>
<description xml:lang="zh-CN">可以选择缩略图生成方式。 (crop : 裁减, ratio : 比例)</description>
<default>crop</default>
<default>ratio</default>
</var>
<var name="thumbnail_width" type="text">
<title xml:lang="ko">썸네일 가로크기</title>
<title xml:lang="zh-CN">缩略图宽度</title>
<description xml:lang="ko">썸네일의 가로 크기를 지정할 수 있습니다. (기본 100px)</description>
<description xml:lang="zh-CN">可以指定缩略图宽度。 (默认为 100px)</description>
<default>100</default>
</var>
<var name="thumbnail_height" type="text">
<title xml:lang="ko">썸네일 세로크기</title>
<title xml:lang="zh-CN">缩略图高度</title>
<description xml:lang="ko">썸네일의 세로 크기를 지정할 수 있습니다. (기본 100px)</description>
<description xml:lang="zh-CN">可以指定缩略图高度。 (默认为 100px)</description>
<default>100</default>
</var>
<var name="display_number" type="select">

View file

@ -34,7 +34,6 @@
// document model 객체 생성
$oDocumentModel = &getModel('document');
// 원본글을 가져옴
if(!$manual_inserted) {
$oDocument = $oDocumentModel->getDocument($document_srl);

View file

@ -213,6 +213,8 @@
$obj->document_srl = getNextSequence();
$obj->category_srl = $category_srl;
$obj->password_is_hashed = true;
$obj->comment_count = 0;
$obj->trackback_count = 0;
// 첨부파일 미리 등록
if($oDocument->hasUploadedFiles()) {

View file

@ -213,7 +213,7 @@
}
function getSummary($str_size = 50) {
$content = htmlspecialchars(strip_tags($this->getContent()));
$content = htmlspecialchars(strip_tags(str_replace("&nbsp;"," ",$this->getContent())));
return cut_str($content, $str_size, '...');
}

View file

@ -5,11 +5,11 @@
* @brief 文章(document)模块语言包
**/
$lang->document_list = 'Document list';
$lang->thumbnail_type = 'Thumbnail Type';
$lang->thumbnail_crop = 'Crop';
$lang->thumbnail_ratio = 'Ratio';
$lang->cmd_delete_all_thumbnail = 'Delete all thumbnails';
$lang->document_list = '主题目录';
$lang->thumbnail_type = '缩略图生成方式';
$lang->thumbnail_crop = '裁减';
$lang->thumbnail_ratio = '比例';
$lang->cmd_delete_all_thumbnail = '删除全部缩略图';
$lang->move_target_module = "移动目标模块";
$lang->cmd_toggle_checked_document = '反选';

View file

@ -75,6 +75,9 @@
if($use_folder == "Y") {
$folder_id = rand(1000000,9999999);
$folder_opener = str_replace("&amp;","&",$folder_opener);
$folder_closer = str_replace("&amp;","&",$folder_closer);
if($bold == "Y") $class = "bold";
switch($color) {
case "red" :

View file

@ -15,8 +15,8 @@ function getQuotation() {
var use_folder = node.getAttribute("use_folder");
var folder_opener = node.getAttribute("folder_opener");
var folder_closer = node.getAttribute("folder_closer");
if(folder_opener) folder_opener = folder_opener.replace(/&amp;/g,'&').replace(/&gt;/g,'>').replace(/&lt;/,'<').replace(/&quot;/,'"');
if(folder_closer) folder_closer = folder_closer.replace(/&amp;/g,'&').replace(/&gt;/g,'>').replace(/&lt;/,'<').replace(/&quot;/,'"');
if(folder_opener) folder_opener = folder_opener.replace(/&gt;/g,'>').replace(/&lt;/,'<').replace(/&quot;/,'"');
if(folder_closer) folder_closer = folder_closer.replace(/&gt;/g,'>').replace(/&lt;/,'<').replace(/&quot;/,'"');
var bold = node.getAttribute("bold");
var color = node.getAttribute("color");
var margin = node.getAttribute("margin");
@ -86,8 +86,8 @@ function insertQuotation() {
var folder_closer = xGetElementById("quotation_closer").value;
if(!folder_opener||!folder_closer) use_folder = "N";
folder_opener = folder_opener.replace(/&/g,'&amp;').replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/"/g,'&quot;');
folder_closer = folder_closer.replace(/&/g,'&amp;').replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/"/g,'&quot;');
folder_opener = folder_opener.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/"/g,'&quot;');
folder_closer = folder_closer.replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/"/g,'&quot;');
var bold = "N";
if(xGetElementById("quotation_bold").checked) bold = "Y";

View file

@ -11,6 +11,7 @@
<action name="dispMemberOpenIDLeave" type="view" standalone="true" />
<action name="dispMemberOwnDocument" type="view" standalone="true" />
<action name="dispMemberScrappedDocument" type="view" standalone="true" />
<action name="dispMemberFindAccount" type="view" standalone="true" />
<action name="dispMemberMessages" type="view" standalone="true" />
<action name="dispMemberSendMessage" type="view" standalone="true" />
@ -56,6 +57,9 @@
<action name="procMemberScrapDocument" type="controller" standalone="true" />
<action name="procMemberDeleteScrap" type="controller" standalone="true" />
<action name="procMemberFindAccount" type="controller" standalone="true" />
<action name="procMemberAuthAccount" type="controller" standalone="true" />
<action name="procMemberAddFriend" type="controller" standalone="true" />
<action name="procMemberMoveFriend" type="controller" standalone="true" />
<action name="procMemberDeleteFriend" type="controller" standalone="true" />

View file

@ -53,6 +53,12 @@
$lang->current_password = 'Current Password';
$lang->openid = 'OpenID';
$lang->webmaster_name = '웹마스터 이름';
$lang->webmaster_email = '웹마스터 메일주소';
$lang->about_webmaster_name = '인증 메일이나 기타 사이트 관리시 사용될 웹마스터의 이름을 입력해주세요. (기본 : webmaster)';
$lang->about_webmaster_email = '웹마스터의 메일 주소를 입력해주세요.';
$lang->search_target_list = array(
'user_id' => 'ID',
'user_name' => 'Name',
@ -78,6 +84,7 @@
$lang->cmd_modify_member_password = 'Change Password';
$lang->cmd_view_member_info = 'Member Info';
$lang->cmd_leave = 'Leave';
$lang->cmd_find_member_account = 'Find Account Info';
$lang->cmd_member_list = 'Member List';
$lang->cmd_module_config = 'Default Setting';
@ -97,11 +104,19 @@
$lang->cmd_add_friend_group = 'Add Friend Group';
$lang->cmd_rename_friend_group = 'Change Name of Friend Group';
$lang->msg_email_not_exists = "Email address doesn't exists";
$lang->msg_alreay_scrapped = 'This article is already scrapped';
$lang->msg_cart_is_null = 'Please select the target';
$lang->msg_checked_file_is_deleted = '%d attached files are deleted';
$lang->msg_find_account_title = 'Account Info';
$lang->msg_find_account_info = '요청하신 계정 정보는 아래와 같습니다';
$lang->msg_find_account_comment = '아래 링크를 클릭하시면 위에 적힌 비밀번호로 바뀌게 됩니다.<br />로그인 하신 후 비밀번호를 바꾸어주세요.';
$lang->msg_auth_mail_sended = '%s 메일로 인증 정보를 담은 메일이 발송되었습니다. 메일을 확인하세요.';
$lang->msg_success_authed = '인증이 정상적으로 되어 로그인 처리가 되었습니다. 꼭 인증 메일에 표시된 비밀번호를 이용하여 원하시는 비밀번호로 변경하세요.';
$lang->msg_no_message = 'There are no messages';
$lang->message_received = 'You got a new message';
@ -172,4 +187,5 @@
$lang->about_openid_leave = '오픈아이디의 탈퇴는 현 사이트에서의 회원 정보를 삭제하는 것입니다.<br />탈퇴 후 로그인하시면 새로 가입하시는 것으로 되어 작성한 글에 대한 권한을 가질 수 없게 됩니다';
$lang->about_member = "This is a module for creating/modifing/deleting members and managing group or join form.\nYou can manage members by creating new groups, and get additional information by managing join form";
$lang->about_find_member_account = '아이디/ 비밀번호는 가입시 등록한 메일 주소로 알려드립니다<br />가입할때 등록하신 메일 주소를 입력하시고 "아이디/ 비밀번호 찾기" 버튼을 클릭해주세요.<br />';
?>

View file

@ -53,6 +53,12 @@
$lang->current_password = 'Contraseña actual';
$lang->openid = 'OpenID';
$lang->webmaster_name = '웹마스터 이름';
$lang->webmaster_email = '웹마스터 메일주소';
$lang->about_webmaster_name = '인증 메일이나 기타 사이트 관리시 사용될 웹마스터의 이름을 입력해주세요. (기본 : webmaster)';
$lang->about_webmaster_email = '웹마스터의 메일 주소를 입력해주세요.';
$lang->search_target_list = array(
'user_id' => 'ID',
'user_name' => 'Nombre',
@ -78,6 +84,7 @@
$lang->cmd_modify_member_password = 'Cambiar la contraseña';
$lang->cmd_view_member_info = 'Información del usuario';
$lang->cmd_leave = 'Dejar de ser usuario';
$lang->cmd_find_member_account = 'Find Account Info';
$lang->cmd_member_list = 'Lista de los Usuarios';
$lang->cmd_module_config = 'Configuración predefinidos';
@ -97,11 +104,19 @@
$lang->cmd_add_friend_group = 'agregar grupo de amigos';
$lang->cmd_rename_friend_group = 'Cambiar el nombre del grupo de amigos';
$lang->msg_email_not_exists = "Email address doesn't exists";
$lang->msg_alreay_scrapped = 'Este documento ya esta hecho scrap';
$lang->msg_cart_is_null = 'Seleciona el objetivo';
$lang->msg_checked_file_is_deleted = '%d archivos adjuntos son eliminados';
$lang->msg_find_account_title = 'Account Info';
$lang->msg_find_account_info = '요청하신 계정 정보는 아래와 같습니다';
$lang->msg_find_account_comment = '아래 링크를 클릭하시면 위에 적힌 비밀번호로 바뀌게 됩니다.<br />로그인 하신 후 비밀번호를 바꾸어주세요.';
$lang->msg_auth_mail_sended = '%s 메일로 인증 정보를 담은 메일이 발송되었습니다. 메일을 확인하세요.';
$lang->msg_success_authed = '인증이 정상적으로 되어 로그인 처리가 되었습니다. 꼭 인증 메일에 표시된 비밀번호를 이용하여 원하시는 비밀번호로 변경하세요.';
$lang->msg_no_message = 'No hay mensajes';
$lang->message_received = 'Usted ha recibido un mensaje';
@ -172,4 +187,5 @@
$lang->about_openid_leave = '오픈아이디의 탈퇴는 현 사이트에서의 회원 정보를 삭제하는 것입니다.<br />탈퇴 후 로그인하시면 새로 가입하시는 것으로 되어 작성한 글에 대한 권한을 가질 수 없게 됩니다';
$lang->about_member = "Esto es un módulo para crear/modificar/eliminar usuarios y manejar grupos o el formato del registro.\n Usted puede manejar usuarios creando nuevos grupos, y obtener información adicional manejando el formato del registro";
$lang->about_find_member_account = '아이디/ 비밀번호는 가입시 등록한 메일 주소로 알려드립니다<br />가입할때 등록하신 메일 주소를 입력하시고 "아이디/ 비밀번호 찾기" 버튼을 클릭해주세요.<br />';
?>

View file

@ -53,6 +53,12 @@
$lang->current_password = '現在のパスワード';
$lang->openid = 'OpenID';
$lang->webmaster_name = '웹마스터 이름';
$lang->webmaster_email = '웹마스터 메일주소';
$lang->about_webmaster_name = '인증 메일이나 기타 사이트 관리시 사용될 웹마스터의 이름을 입력해주세요. (기본 : webmaster)';
$lang->about_webmaster_email = '웹마스터의 메일 주소를 입력해주세요.';
$lang->search_target_list = array(
'user_id' => 'ユーザID',
'user_name' => '名前',
@ -78,6 +84,7 @@
$lang->cmd_modify_member_password = 'パスワード変更';
$lang->cmd_view_member_info = '会員情報表示';
$lang->cmd_leave = '脱会';
$lang->cmd_find_member_account = 'Find Account Info';
$lang->cmd_member_list = '会員リスト';
$lang->cmd_module_config = '基本設定';
@ -97,11 +104,19 @@
$lang->cmd_add_friend_group = '友達グループ追加';
$lang->cmd_rename_friend_group = '友達グループ名変更';
$lang->msg_email_not_exists = "Email address doesn't exists";
$lang->msg_alreay_scrapped = '既にスクラップされたコンテンツです。';
$lang->msg_cart_is_null = '対象を選択してください。';
$lang->msg_checked_file_is_deleted = '%d個の添付ファイルが削除されました。';
$lang->msg_find_account_title = 'Account Info';
$lang->msg_find_account_info = '요청하신 계정 정보는 아래와 같습니다';
$lang->msg_find_account_comment = '아래 링크를 클릭하시면 위에 적힌 비밀번호로 바뀌게 됩니다.<br />로그인 하신 후 비밀번호를 바꾸어주세요.';
$lang->msg_auth_mail_sended = '%s 메일로 인증 정보를 담은 메일이 발송되었습니다. 메일을 확인하세요.';
$lang->msg_success_authed = '인증이 정상적으로 되어 로그인 처리가 되었습니다. 꼭 인증 메일에 표시된 비밀번호를 이용하여 원하시는 비밀번호로 변경하세요.';
$lang->msg_no_message = 'メッセージがありません。';
$lang->message_received = 'メッセージが届きました。';
@ -172,4 +187,5 @@
$lang->about_openid_leave = '오픈아이디의 탈퇴는 현 사이트에서의 회원 정보를 삭제하는 것입니다.<br />탈퇴 후 로그인하시면 새로 가입하시는 것으로 되어 작성한 글에 대한 권한을 가질 수 없게 됩니다';
$lang->about_member = "会員の作成・修正・削除することができ、グループの管理、加入フォームの管理などが行える会員管理モジュールです。デフォルトで作成されたグループにグループを追加作成して会員管理ができるようにし、加入フォーム管理では基本情報の他、フォームの入力情報を追加することができます。";
$lang->about_find_member_account = '아이디/ 비밀번호는 가입시 등록한 메일 주소로 알려드립니다<br />가입할때 등록하신 메일 주소를 입력하시고 "아이디/ 비밀번호 찾기" 버튼을 클릭해주세요.<br />';
?>

View file

@ -53,6 +53,12 @@
$lang->current_password = '현재 비밀번호';
$lang->openid = 'OpenID';
$lang->webmaster_name = '웹마스터 이름';
$lang->webmaster_email = '웹마스터 메일주소';
$lang->about_webmaster_name = '인증 메일이나 기타 사이트 관리시 사용될 웹마스터의 이름을 입력해주세요. (기본 : webmaster)';
$lang->about_webmaster_email = '웹마스터의 메일 주소를 입력해주세요.';
$lang->search_target_list = array(
'user_id' => '아이디',
'user_name' => '이름',
@ -79,6 +85,7 @@
$lang->cmd_modify_member_password = '비밀번호 변경';
$lang->cmd_view_member_info = '회원 정보 보기';
$lang->cmd_leave = '탈퇴';
$lang->cmd_find_member_account = '아이디/비밀번호 찾기';
$lang->cmd_member_list = '회원 목록';
$lang->cmd_module_config = '기본 설정';
@ -98,11 +105,20 @@
$lang->cmd_add_friend_group = '친구 그룹 추가';
$lang->cmd_rename_friend_group = '친구 그룹 이름 변경';
$lang->msg_email_not_exists = '이메일 주소가 존재하지 않습니다';
$lang->msg_alreay_scrapped = '이미 스크랩된 게시물입니다';
$lang->msg_cart_is_null = '대상을 선택해주세요';
$lang->msg_checked_file_is_deleted = '%d개의 첨부파일이 삭제되었습니다';
$lang->msg_find_account_title = '아이디/ 비밀번호 정보입니다';
$lang->msg_find_account_info = '요청하신 계정 정보는 아래와 같습니다';
$lang->msg_find_account_comment = '아래 링크를 클릭하시면 위에 적힌 비밀번호로 바뀌게 됩니다.<br />로그인 하신 후 비밀번호를 바꾸어주세요.';
$lang->msg_auth_mail_sended = '%s 메일로 인증 정보를 담은 메일이 발송되었습니다. 메일을 확인하세요.';
$lang->msg_invalid_auth_key = '잘못된 계정 인증 요청입니다.<br />아이디/비밀번호 찾기를 다시 하시거나 사이트 관리자에게 계정 정보를 문의해주세요';
$lang->msg_success_authed = '인증이 정상적으로 되어 로그인 처리가 되었습니다. 꼭 인증 메일에 표시된 비밀번호를 이용하여 원하시는 비밀번호로 변경하세요.';
$lang->msg_no_message = '쪽지가 없습니다';
$lang->message_received = '쪽지가 왔습니다';
@ -171,6 +187,7 @@
$lang->about_openid = '오픈아이디로 가입시 아이디와 메일등의 기본 정보는 이 사이트에 저장이 되지만 비밀번호와 인증을 위한 처리는 해당 오픈아이디 제공서비스에서 이루어집니다.';
$lang->about_openid_leave = '오픈아이디의 탈퇴는 현 사이트에서의 회원 정보를 삭제하는 것입니다.<br />탈퇴 후 로그인하시면 새로 가입하시는 것으로 되어 작성한 글에 대한 권한을 가질 수 없게 됩니다';
$lang->about_find_member_account = '아이디/ 비밀번호는 가입시 등록한 메일 주소로 알려드립니다<br />가입할때 등록하신 메일 주소를 입력하시고 "아이디/ 비밀번호 찾기" 버튼을 클릭해주세요.<br />';
$lang->about_member = "회원을 생성/수정/삭제 할 수 있고 그룹관리나 가입폼 관리등을 할 수 있는 회원 관리 모듈입니다.\n기본으로 생성된 그룹외의 그룹을 생성하여 회원 관리가 가능하고 가입폼관리를 통한 기본 정보외의 추가 정보를 요구받을 수도 있습니다.";
?>

View file

@ -53,6 +53,12 @@
$lang->current_password = '当前密码';
$lang->openid = 'OpenID';
$lang->webmaster_name = '웹마스터 이름';
$lang->webmaster_email = '웹마스터 메일주소';
$lang->about_webmaster_name = '인증 메일이나 기타 사이트 관리시 사용될 웹마스터의 이름을 입력해주세요. (기본 : webmaster)';
$lang->about_webmaster_email = '웹마스터의 메일 주소를 입력해주세요.';
$lang->search_target_list = array(
'user_id' => '用户名',
'user_name' => '姓名',
@ -78,6 +84,7 @@
$lang->cmd_modify_member_password = '修改密码';
$lang->cmd_view_member_info = '查看会员信息';
$lang->cmd_leave = '注销';
$lang->cmd_find_member_account = 'Find Account Info';
$lang->cmd_member_list = '会员目录';
$lang->cmd_module_config = '基本设置';
@ -97,11 +104,19 @@
$lang->cmd_add_friend_group = '添加好友组';
$lang->cmd_rename_friend_group = '修改好友组名称';
$lang->msg_email_not_exists = "Email address doesn't exists";
$lang->msg_alreay_scrapped = '已收藏的主题!';
$lang->msg_cart_is_null = '请选择对象。';
$lang->msg_checked_file_is_deleted = '已删除%d个附件。';
$lang->msg_find_account_title = 'Account Info';
$lang->msg_find_account_info = '요청하신 계정 정보는 아래와 같습니다';
$lang->msg_find_account_comment = '아래 링크를 클릭하시면 위에 적힌 비밀번호로 바뀌게 됩니다.<br />로그인 하신 후 비밀번호를 바꾸어주세요.';
$lang->msg_auth_mail_sended = '%s 메일로 인증 정보를 담은 메일이 발송되었습니다. 메일을 확인하세요.';
$lang->msg_success_authed = '인증이 정상적으로 되어 로그인 처리가 되었습니다. 꼭 인증 메일에 표시된 비밀번호를 이용하여 원하시는 비밀번호로 변경하세요.';
$lang->msg_no_message = '没有短消息。';
$lang->message_received = '您有新消息。';
@ -172,4 +187,5 @@
$lang->about_openid_leave = '删除OpenID就等于永久删除站内用户的信息。<br />被删除后的重新登录就等于新会员注册,因此对以前自己写的主题将失去相应权限。';
$lang->about_member = "可以添加/修改/删除会员及管理用户组或注册表单的会员管理模块。\n此模块不仅可以生成缺省用户组以外的其他用户组来管理会员,并且通过注册表单的管理获得除会员基本信息以外的扩展信息。";
$lang->about_find_member_account = '아이디/ 비밀번호는 가입시 등록한 메일 주소로 알려드립니다<br />가입할때 등록하신 메일 주소를 입력하시고 "아이디/ 비밀번호 찾기" 버튼을 클릭해주세요.<br />';
?>

View file

@ -83,7 +83,7 @@
**/
function procMemberAdminInsertConfig() {
// 기본 정보를 받음
$args = Context::gets('skin','colorset','enable_openid','enable_join','limit_day','redirect_url','agreement','image_name','image_mark', 'image_name_max_width', 'image_name_max_height','image_mark_max_width','image_mark_max_height');
$args = Context::gets('webmaster_name','webmaster_email','skin','colorset','enable_openid','enable_join','limit_day','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->skin) $args->skin = "default";
if(!$args->colorset) $args->colorset = "white";
if($args->enable_join!='Y') $args->enable_join = 'N';

View file

@ -60,6 +60,7 @@
// 설정 정보를 받아옴 (module model 객체를 이용)
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('member');
if(!$config->webmaster_name) $config->webmaster_name = 'webmaster';
if(!$config->image_name_max_width) $config->image_name_max_width = 90;
if(!$config->image_name_max_height) $config->image_name_max_height = 20;
if(!$config->image_mark_max_width) $config->image_mark_max_width = 20;

View file

@ -23,6 +23,7 @@
$oModuleController->insertActionForward('member', 'view', 'dispMemberLogout');
$oModuleController->insertActionForward('member', 'view', 'dispMemberOwnDocument');
$oModuleController->insertActionForward('member', 'view', 'dispMemberScrappedDocument');
$oModuleController->insertActionForward('member', 'view', 'dispMemberFindAccount');
$oModuleController->insertActionForward('member', 'view', 'dispMemberMessages');
$oModuleController->insertActionForward('member', 'view', 'dispMemberSendMessage');
@ -133,6 +134,10 @@
// member 디렉토리 체크 (2007. 8. 11 추가)
if(!is_dir("./files/member_extra_info")) return true;
// dispMemberFindAccount act의 여부 체크 (2007. 10. 15)
$act = $oModuleModel->getActionForward('dispMemberFindAccount');
if(!$act) return true;
return false;
}
@ -145,6 +150,7 @@
$oModuleController->insertActionForward('member', 'view', 'dispMemberOwnDocument');
$oModuleController->insertActionForward('member', 'view', 'dispMemberScrappedDocument');
$oModuleController->insertActionForward('member', 'view', 'dispMemberOpenIDLeave');
$oModuleController->insertActionForward('member', 'view', 'dispMemberFindAccount');
// member 디렉토리 체크
FileHandler::makeDir('./files/member_extra_info/image_name');
@ -152,6 +158,8 @@
FileHandler::makeDir('./files/member_extra_info/signature');
FileHandler::makeDir('./files/member_extra_info/new_message_flags');
// dispMemberFindAccount act의 여부 체크 (2007. 10. 15)
return new Object(0, 'success_updated');
}

View file

@ -159,7 +159,19 @@
}
// 쪽지 발송
return $this->sendMessage($logged_info->member_srl, $receiver_srl, $title, $content);
$output = $this->sendMessage($logged_info->member_srl, $receiver_srl, $title, $content);
// 메일로도 발송
if($output->toBool()) {
$oMail = new Mail();
$oMail->setTitle($title);
$oMail->setContent($content);
$oMail->setSender($logged_info->user_name, $logged_info->email_address);
$oMail->setReceiptor($receiver_member_info->user_name, $receiver_member_info->email_address);
$oMail->send();
}
return $output;
}
function sendMessage($sender_srl, $receiver_srl, $title, $content, $sender_log = true) {
@ -892,6 +904,93 @@
return new Object(0,'success');
}
/**
* @brief 아이디/ 비밀번호 찾기
**/
function procMemberFindAccount() {
$email_address = Context::get('email_address');
if(!$email_address) return new Object(-1, 'msg_invalid_request');
$oMemberModel = &getModel('member');
// 메일 주소에 해당하는 회원이 있는지 검사
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($email_address);
if(!$member_srl) return new Object(-1, 'msg_email_not_exists');
// 회원의 정보를 가져옴
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
// 인증 DB에 데이터를 넣음
$args->user_id = $member_info->user_id;
$args->member_srl = $member_info->member_srl;
$args->new_password = rand(111111,999999);
$args->auth_key = md5( rand(0,999999 ) );
$output = executeQuery('member.insertAuthMail', $args);
if(!$output->toBool()) return $output;
// 메일 내용을 구함
Context::set('auth_args', $args);
Context::set('member_info', $member_info);
$oTemplate = &TemplateHandler::getInstance();
$content = $oTemplate->compile($this->module_path.'tpl', 'find_member_account_mail');
// 사이트 웹마스터 정보를 구함
$oModuleModel = &getModel('module');
$member_config = $oModuleModel->getModuleConfig('member');
// 메일 발송
$oMail = new Mail();
$oMail->setTitle( Context::getLang('msg_find_account_title') );
$oMail->setContent($content);
$oMail->setSender( $member_config->webmaster_name?$member_config->webmaster_name:'webmaster', $member_config->webmaster_email);
$oMail->setReceiptor( $member_info->user_name, $member_info->email_address );
$oMail->send();
// 메세지 return
$msg = sprintf(Context::getLang('msg_auth_mail_sended'), $member_info->email_address);
$this->setMessage($msg);
}
/**
* @brief 아이디/비밀번호 찾기 기능 실행
* 메일에 등록된 링크를 선택시 호출되는 method로 비밀번호를 바꾸고 인증을 시켜버림
**/
function procMemberAuthAccount() {
// user_id, authkey 검사
$member_srl = Context::get('member_srl');
$auth_key = Context::get('auth_key');
if(!$member_srl || !$auth_key) return $this->stop('msg_invalid_request');
// user_id, authkey로 비밀번호 찾기 로그 검사
$args->member_srl = $member_srl;
$args->auth_key = $auth_key;
$output = executeQuery('member.getAuthMail', $args);
if(!$output->toBool() || $output->data->auth_key != $auth_key) return $this->stop('msg_invalid_auth_key');
// 인증 정보가 맞다면 새비밀번호로 비밀번호를 바꾸고 인증 상태로 바꿈
$args->password = md5($output->data->new_password);
$output = executeQuery('member.updateMemberPassword', $args);
if(!$output->toBool()) return $this->stop($output->getMessage());
// 인증 시킴
$oMemberModel = &getModel('member');
// 회원의 정보를 가져옴
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
// 사용자 정보의 최근 로그인 시간을 기록
$output = executeQuery('member.updateLastLogin', $args);
$this->setSessionInfo($member_info);
// 인증 테이블에서 member_srl에 해당하는 모든 값을 지움
executeQuery('member.deleteAuthMail',$args);
// 결과를 통보
$this->setTemplatePath($this->module_path.'tpl');
$this->setTemplateFile('msg_success_authed');
}
/**
* @brief 서명을 파일로 저장
**/
@ -1270,16 +1369,14 @@
if(!$image_name && !$image_mark) return $matches[0];
if($image_name->width) {
if($image_mark->height && $image_mark->height > $image_name->height) $top_margin = ($image_mark->height - $image_name->height)/2;
else $top_margin = 0;
$text = sprintf('<img src="%s" border="0" alt="id: %s" title="id: %s" width="%s" height="%s" style="margin-top:%dpx;"/>', Context::getRequestUri().$image_name->file, htmlspecialchars(strip_tags($matches[5])), htmlspecialchars(strip_tags($matches[5])), $image_name->width, $image_name->height, $top_margin);
$text = sprintf('<img src="%s" border="0" alt="id: %s" title="id: %s" width="%s" height="%s" align="absmiddle" style="margin-right:3px" />', Context::getRequestUri().$image_name->file, htmlspecialchars(strip_tags($matches[5])), htmlspecialchars(strip_tags($matches[5])), $image_name->width, $image_name->height);
}
if($image_mark->width) {
$matches[0] = str_replace('<'.$matches[6], sprintf('<%s style="cursor:pointer;background:url(%s) no-repeat left;padding-left:%dpx; height:%dpx" ', $matches[1],Context::getRequestUri().$image_mark->file, $image_mark->width+2, $image_mark->height), $matches[0] );
$text = sprintf('<img src="%s" border="0" alt="id: %s" title="id : %s" width="%s" height="%s" align="absmiddle" style="margin-right:3px"/>%s', Context::getRequestUri().$image_mark->file, htmlspecialchars(strip_tags($matches[5])), htmlspecialchars(strip_tags($matches[5])), $image_mark->width, $image_mark->height, $text);
}
$output = str_replace('>'.$matches[5].'<', '>'.$text.'<', $matches[0]);
return $output;
return sprintf('<span class="nowrap member_%d">%s</span>',$member_srl, $text);
}
/**

View file

@ -444,5 +444,14 @@
$this->setTemplateFile('add_friend_group');
}
/**
* @brief 아이디/ 비밀번호 찾기 기능
**/
function dispMemberFindAccount() {
if(Context::get('is_logged')) return $this->stop('already_logged');
$this->setTemplateFile('find_member_account');
}
}
?>

View file

@ -0,0 +1,8 @@
<query id="deleteAuthMail" action="delete">
<tables>
<table name="member_auth_mail" />
</tables>
<conditions>
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" />
</conditions>
</query>

View file

@ -0,0 +1,12 @@
<query id="getAuthMail" action="select">
<tables>
<table name="member_auth_mail" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="auth_key" var="auth_key" notnull="notnull" />
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" pipe="and" />
</conditions>
</query>

View file

@ -0,0 +1,12 @@
<query id="insertAuthMail" action="insert">
<tables>
<table name="member_auth_mail" />
</tables>
<columns>
<column name="member_srl" var="member_srl" filter="number" notnull="notnull" />
<column name="user_id" var="user_id" notnull="notnull" />
<column name="auth_key" var="auth_key" notnull="notnull" minlength="1" maxlength="60" />
<column name="new_password" var="new_password" notnull="notnull" minlength="1" maxlength="60" />
<column name="regdate" default="curdate()" />
</columns>
</query>

View file

@ -0,0 +1,7 @@
<table name="member_auth_mail">
<column name="auth_key" type="varchar" size="60" notnull="notnull" unique="unique_key"/>
<column name="member_srl" type="number" size="11" notnull="notnull" unique="unique_key" />
<column name="user_id" type="varchar" size="80" notnull="notnull" />
<column name="new_password" type="varchar" size="80" notnull="notnull" />
<column name="regdate" type="date" index="idx_regdate" />
</table>

View file

@ -0,0 +1,10 @@
<filter name="find_member_account" module="member" act="procMemberFindAccount">
<form>
<node target="email_address" required="true" minlength="2" maxlength="255" filter="email" />
</form>
<parameter />
<response callback_func="completeFindMemberAccount">
<tag name="error" />
<tag name="message" />
</response>
</filter>

View file

@ -0,0 +1,27 @@
{@ $member_title = $lang->cmd_find_member_account}
<!--#include("./common_header.html")-->
<!--%import("filter/find_member_account.xml")-->
<form action="./" method="get" onsubmit="return procFilter(this, find_member_account)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<input type="hidden" name="page" value="{$page}" />
<table cellspacing="0" class="memberInfoTable gap1" title="$lang->msg_leave_member}">
<col width="140" />
<col />
<tr class="first-child">
<th scope="row"><label for="cpw">{$lang->email_address}</label></th>
<td>
<input type="text" name="email_address" class="inputTypeText w400" />
<p>{$lang->about_find_member_account}</p>
</td>
</tr>
</table>
<div class="help tCenter">
<span class="button"><input type="submit" value="{$lang->cmd_find_member_account}" accesskey="s" /></span>
</div>
</form>
<!--#include("./common_footer.html")-->

View file

@ -224,3 +224,8 @@ function doDeleteScrap(document_srl) {
params['document_srl'] = document_srl;
exec_xml('member', 'procMemberDeleteScrap', params, function() { location.reload(); });
}
/* 비밀번호 찾기 후 */
function completeFindMemberAccount(ret_obj, response_tags) {
alert(ret_obj['message']);
}

View file

@ -29,6 +29,7 @@
<ul class="help">
<li class="first-child"><a href="{getUrl('act','dispMemberSignUpForm')}"><img src="./images/common/btn_joinus.gif" alt="{$lang->cmd_signup}" /></a></li>
<li><a href="{getUrl('act','dispMemberFindAccount')}">{$lang->cmd_find_member_account}</a></li>
</ul>
</div>

View file

@ -0,0 +1,10 @@
<filter name="find_member_account" module="member" act="procMemberFindAccount">
<form>
<node target="email_address" required="true" minlength="2" maxlength="255" filter="email" />
</form>
<parameter />
<response callback_func="completeFindMemberAccount">
<tag name="error" />
<tag name="message" />
</response>
</filter>

View file

@ -0,0 +1,27 @@
{@ $member_title = $lang->cmd_find_member_account}
<!--#include("./common_header.html")-->
<!--%import("filter/find_member_account.xml")-->
<form action="./" method="get" onsubmit="return procFilter(this, find_member_account)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<input type="hidden" name="page" value="{$page}" />
<table cellspacing="0" class="memberInfoTable gap1" title="$lang->msg_leave_member}">
<col width="140" />
<col />
<tr class="first-child">
<th scope="row"><label for="cpw">{$lang->email_address}</label></th>
<td>
<input type="text" name="email_address" class="inputTypeText w400" />
<p>{$lang->about_find_member_account}</p>
</td>
</tr>
</table>
<div class="help tCenter">
<span class="button"><input type="submit" value="{$lang->cmd_find_member_account}" accesskey="s" /></span>
</div>
</form>
<!--#include("./common_footer.html")-->

View file

@ -224,3 +224,8 @@ function doDeleteScrap(document_srl) {
params['document_srl'] = document_srl;
exec_xml('member', 'procMemberDeleteScrap', params, function() { location.reload(); });
}
/* 비밀번호 찾기 후 */
function completeFindMemberAccount(ret_obj, response_tags) {
alert(ret_obj['message']);
}

View file

@ -28,6 +28,7 @@
</form>
<div class="help tCenter">
<a href="{getUrl('act','dispMemberFindAccount')}" class="button"><span>{$lang->cmd_find_member_account}</span></a>
<a href="{getUrl('act','dispMemberSignUpForm')}" class="button"><span>{$lang->cmd_signup}</span></a>
</div>
</div>

View file

@ -0,0 +1,13 @@
{$lang->msg_find_account_info}<br />
<hr noshade="noshade" />
<ul>
<li>Site : <a href="{getUrl()}" target="_blank">{getUrl()}</a></li>
<li>{$lang->user_id} : {$member_info->user_id}</li>
<li>{$lang->user_name} : {$member_info->user_name}</li>
<li>{$lang->nick_name} : {$member_info->nick_name}</li>
<li>{$lang->email_address} : {$member_info->email_address}</li>
<li>{$lang->password} : <span style="color:red">{$auth_args->new_password}</span>
</ul>
<hr noshade="noshade" />
{$lang->msg_find_account_comment}<br />
<a href="{getUrl('','module','member','act','procMemberAuthAccount','member_srl',$member_info->member_srl, 'auth_key',$auth_args->auth_key)}" target="_blank">{getUrl('','module','member','act','procMemberAuthAccount','member_srl',$member_info->member_srl,'auth_key',$auth_args->auth_key)}</a>

View file

@ -9,6 +9,20 @@
<table cellspacing="0" class="tableType2 gap1">
<col width="150" />
<col />
<tr>
<th scope="row">{$lang->webmaster_name}</th>
<td>
<input type="text" name="webmaster_name" value="{$config->webmaster_name}" size="20" class="inputTypeText" />
<p>{$lang->about_webmaster_name}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->webmaster_email}</th>
<td>
<input type="text" name="webmaster_email" value="{$config->webmaster_email}" size="40" class="inputTypeText" />
<p>{$lang->about_webmaster_email}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->enable_openid}</th>
<td>

View file

@ -0,0 +1,4 @@
<script type="text/javascript">
alert("{$lang->msg_success_authed}");
location.href="{getUrl()}";
</script>

View file

@ -64,6 +64,8 @@
$point = $this->oPointModel->getPoint($member_srl);
$level = $this->oPointModel->getLevel($point, $this->config->level_step);
$text = $matches[5];
$src = sprintf("modules/point/icons/%s/%d.gif", $this->config->level_icon, $level);
if(!$this->icon_width) {
$info = getimagesize($src);
@ -78,8 +80,11 @@
}
}
$code = sprintf('<%s title="%s:%s%s %s, %s:%s/%s" style="cursor:pointer;background:url(%s) no-repeat left;padding-left:%dpx; height:%dpx">%s</%s> ', $matches[6], Context::getLang('point'), $point, $this->config->point_name, $per?"(".$per."%)":"", Context::getLang('level'), $level, $this->config->max_level, Context::getRequestUri().$src, $this->icon_width+2, $this->icon_height, $matches[0], $matches[6]);
$this->member_code[$member_srl] = $code;
$title = sprintf("%s:%s%s %s, %s:%s/%s", Context::getLang('point'), $point, $this->config->point_name, $per?"(".$per."%)":"", Context::getLang('level'), $level, $this->config->max_level);
$text = sprintf('<span class="nowrap member_%s"><img src="%s" width="%s" height="%s" alt="%s" title="%s" align="absmiddle" style="margin-right:3px"/>%s</span>', $member_srl, Context::getRequestUri().$src, $this->icon_width+2, $this->icon_height, $title, $title, $text);
$this->member_code[$member_srl] = $text;
return $this->member_code[$member_srl];
}

View file

@ -13,7 +13,7 @@
$lang->cmd_poll_list = '查看目录';
$lang->cmd_delete_checked_poll = '删除所选项目';
$lang->cmd_apply_poll = '参与投票';
$lang->cmd_view_result = 'Preview result';
$lang->cmd_view_result = '查看结果';
$lang->cmd_delete_checked_poll = '删除所选';
$lang->success_poll = '感谢您参与投票。';

View file

@ -112,6 +112,7 @@
}
// 작성자의 정보를 로그로 남김
/*
$log_args->poll_srl = $poll_srl;
$log_args->member_srl = $member_srl;
$output = executeQuery('poll.insertPollLog', $log_args);
@ -119,6 +120,7 @@
$oDB->rollback();
return $output;
}
*/
$oDB->commit();

View file

@ -8,8 +8,8 @@
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
<name xml:lang="ko">제로</name>
<name xml:lang="jp">Zero</name>
<name xml:lang="en">zero</name>
<name xml:lang="es">zero</name>
<name xml:lang="en">zero</name>
<name xml:lang="es">zero</name>
<name xml:lang="zh-CN">zero</name>
<description xml:lang="ko">
기본 카운터 모듈을 이용하여 전체, 어제, 오늘의 접속현황을 표시합니다.
@ -22,8 +22,8 @@
This widget displays the number of people who have visited yesterday and today by using the basic counter module.
It will also display the total count.
To get this, the counter module should be installed and the counter add-on should be turned on.
</description>
<description xml:lang="es">
</description>
<description xml:lang="es">
Este widget de contador básico muestra los números de las personas visitadas en el día de ayer, hoy, y el total.
Debe instalar el módulo del contador y debe activar el addon del contador.
</description>

View file

@ -25,6 +25,9 @@
.box_login ul.option li a.btn { background:url(../images/default/bul_01.gif) no-repeat left; padding-left:10px; margin-left:14px; }
.box_login .checkbox { width:15px; height:15px; margin:-1px 0px 0px -1px; margin-right:2px; }
.box_login .clear { clear:both; }
.box_login ul.extra_option { clear:both; height:40px; }
.box_login ul.extra_option li a {text-decoration:none;}
.box_login ul.extra_option li a.btn { background:url(../images/default/bul_01.gif) no-repeat left; padding-left:10px; margin-left:20px; }
.openid_login { clear:both; height:38px; border:3px solid #D5D8DB; background-color:#FFFFFF; margin:0 0 10px 0; }
.openid_login .openid_user_id { width:110px; _width:100px; background: url(../images/openid_login_bg.gif) left no-repeat; background-color: #ffffff; background-position: 0 50%; padding:3px 3px 3px 18px; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:16px; line-height:1em; vertical-align:middle; margin-bottom:.5em; color:#666666;}

View file

@ -19,11 +19,14 @@
</div>
<div><input type="submit" value=" " class="submit" /></div>
<ul class="option">
<li><input type="checkbox" name="remember_user_id" id="chk_remember_user_id" value="Y" class="checkbox" /></li>
<li><label for="chk_remember_user_id">{$lang->remember_user_id}</label></li>
<li><a href="{getUrl('act','dispMemberSignUpForm')}" class="fc_02 btn">{$lang->cmd_signup}</a></li>
</ul>
<ul class="option">
<li><input type="checkbox" name="remember_user_id" id="chk_remember_user_id" value="Y" class="checkbox" /></li>
<li><label for="chk_remember_user_id">{$lang->remember_user_id}</label></li>
</ul>
<ul class="extra_option">
<li><a href="{getUrl('act','dispMemberSignUpForm')}" class="fc_02 btn">{$lang->cmd_signup}</a></li>
<li><a href="{getUrl('act','dispMemberFindAccount')}" class="fc_02 btn">{$lang->cmd_find_member_account}</a></li>
</ul>
</form>
<div class="clear"></div>

View file

@ -14,7 +14,7 @@
<div class="item profile"><a href="{getUrl('act','dispMemberInfo','member_srl',$logged_info->member_srl)}">{$lang->cmd_view_member_info}</a></div>
<div class="item friend"><a href="{getUrl('act','dispMemberFriend','member_srl',$logged_info->member_srl)}">{$lang->cmd_view_friend}</a></div>
<div class="item message"><a href="{getUrl('act','dispMemberMessages','member_srl',$logged_info->member_srl)}">{$lang->cmd_view_message_box}</a></div>
<div class="item message"><a href="{getUrl('act','dispMemberMessages','message_type','','member_srl',$logged_info->member_srl)}">{$lang->cmd_view_message_box}</a></div>
<!--@if($logged_info->is_admin=="Y")-->
<div class="item administrative"><a href="{getUrl('','module','admin')}" onclick="window.open(this.href);return false;">{$lang->cmd_management}</a></div>
<!--@end-->

View file

@ -1,42 +1,42 @@
#login { border:2px solid #515151; width:196px; position:relative; _padding-top:2px; display:block;}
*:first-child+html body#black #login { padding-top:2px;}
#login legend { display:block; width:0; height:0; overflow:hidden; font-size:0;}
#login form { position:relative; border:1px solid #6b6b6b; padding:11px 11px 7px 11px; width:172px;}
#login form .idpwWrap { overflow:hidden; clear:both; width:172px;}
#login form .idpw { float:left; width:110px;}
#login form .idpw input { border:1px solid #6b6b6b; color:#cbcbcb; width:105px; background:#515151; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma;}
#login form .login { float:right;}
#login form p.save { clear:both; padding:.3em 0;}
#login form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body#black #login form p input { margin:-3px; }
#login form p.save label { font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; color:#818181;}
#login form ul.help { border-top:1px solid #515151; overflow:hidden; padding:.5em 0 0 0; white-space:nowrap;}
#login form ul.help li { list-style:none; float:left; display:block; padding:0 3px 0 7px; background:url(../images/black/vrType1.gif) no-repeat left center;}
#login form ul.help li.first-child { background:none; padding-left:0;}
#login form ul.help li a { color:#818181; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; white-space:nowrap; text-decoration:none;}
#login form ul.help li a:hover { text-decoration:underline;}
#login form ul.help li.first-child a { color:#cbcbcb;}
#login form .userName { width:172px; overflow:hidden; border-bottom:1px solid #515151; padding:0 0 6px 0; margin-top:-5px;}
#login form .userName strong { color:#cbcbcb; float:left; padding:4px 0 0 2px; font:bold .9em Tahoma;}
#login form .userName a { float:right;}
#login form ul.userMenu { padding:0 0 6px 4px; overflow:hidden; margin-top:10px;}
#login form ul.userMenu li { list-style:none; color:#cbcbcb; list-style:none;padding-left:10px; background:url(../images/black/bulletFF1A00.gif) no-repeat left 4px; height:18px; }
#login form ul.userMenu li a { color:#cbcbcb;text-decoration:none;}
#login form ul.userMenu li a:hover {text-decoration:underline;}
#login form p.latestLogin { color:#818181; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif;}
#login form p.latestLogin span { font:1em Tahoma;}
.login_black { border:2px solid #515151; width:196px; position:relative; _padding-top:2px; display:block;}
*:first-child+html body#black .login_black { padding-top:2px;}
.login_black legend { display:block; width:0; height:0; overflow:hidden; font-size:0;}
.login_black form { position:relative; border:1px solid #6b6b6b; padding:11px 11px 7px 11px; width:172px;}
.login_black form .idpwWrap { overflow:hidden; clear:both; width:172px;}
.login_black form .idpw { float:left; width:110px;}
.login_black form .idpw input { border:1px solid #6b6b6b; color:#cbcbcb; width:105px; background:#515151; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma;}
.login_black form .login { float:right;}
.login_black form p.save { clear:both; padding:.3em 0;}
.login_black form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body#black .login_black form p input { margin:-3px; }
.login_black form p.save label { font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; color:#818181;}
.login_black form ul.help { border-top:1px solid #515151; overflow:hidden; padding:.5em 0 0 0; white-space:nowrap;}
.login_black form ul.help li { list-style:none; float:left; display:block; padding:0 3px 0 7px; background:url(../images/black/vrType1.gif) no-repeat left center;}
.login_black form ul.help li.first-child { background:none; padding-left:0;}
.login_black form ul.help li a { color:#818181; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; white-space:nowrap; text-decoration:none;}
.login_black form ul.help li a:hover { text-decoration:underline;}
.login_black form ul.help li.first-child a { color:#cbcbcb;}
.login_black form .userName { position:relative; width:172px; overflow:hidden; border-bottom:1px solid #515151; padding:0 0 6px 0; margin-top:-5px;}
.login_black form .userName strong { color:#cbcbcb; padding:4px 0 0 2px; font:bold .9em Tahoma;}
.login_black form .userName a { position:relative; top:5px; right:0px; }
.login_black form ul.userMenu { padding:0 0 6px 4px; overflow:hidden; margin-top:10px;}
.login_black form ul.userMenu li { list-style:none; color:#cbcbcb; list-style:none;padding-left:10px; background:url(../images/black/bulletFF1A00.gif) no-repeat left 4px; height:18px; }
.login_black form ul.userMenu li a { color:#cbcbcb;text-decoration:none;}
.login_black form ul.userMenu li a:hover {text-decoration:underline;}
.login_black form p.latestLogin { color:#818181; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif;}
.login_black form p.latestLogin span { font:1em Tahoma;}
img.login_mask { width:201px; height:5px; background:#3d3d3d; display:block;}
#openid_login { border:2px solid #515151; width:196px; position:relative; _padding-top:2px; display:block;}
*:first-child+html body#black #openid_login { padding-top:2px;}
#openid_login legend { display:block; width:0; height:0; overflow:hidden; font-size:0;}
#openid_login form { position:relative; border:1px solid #6b6b6b; padding:11px 11px 7px 11px; width:172px;}
#openid_login form .idpwWrap { overflow:hidden; clear:both; width:172px;}
#openid_login form .idpw { float:left;}
#openid_login form .idpw p { margin-bottom:5px; background: url(../images/openid_login_bg.gif) left no-repeat; padding-left:18px; font-size:.9em Tahoma;color:#999999}
#openid_login form .idpw input { border:1px solid #6b6b6b; color:#cbcbcb; width:105px; background:#515151; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma;}
#openid_login form .login { float:right;}
#openid_login form p.save { clear:both; padding:.3em 0;}
#openid_login form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body #openid_login form p input { margin:-3px; }
.openid_login_black { border:2px solid #515151; width:196px; position:relative; _padding-top:2px; display:block;}
*:first-child+html body#black .openid_login_black { padding-top:2px;}
.openid_login_black legend { display:block; width:0; height:0; overflow:hidden; font-size:0;}
.openid_login_black form { position:relative; border:1px solid #6b6b6b; padding:11px 11px 7px 11px; width:172px;}
.openid_login_black form .idpwWrap { overflow:hidden; clear:both; width:172px;}
.openid_login_black form .idpw { float:left;}
.openid_login_black form .idpw p { margin-bottom:5px; background: url(../images/openid_login_bg.gif) left no-repeat; padding-left:18px; font-size:.9em Tahoma;color:#999999}
.openid_login_black form .idpw input { border:1px solid #6b6b6b; color:#cbcbcb; width:105px; background:#515151; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma;}
.openid_login_black form .login { float:right;}
.openid_login_black form p.save { clear:both; padding:.3em 0;}
.openid_login_black form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body .openid_login_black form p input { margin:-3px; }

View file

@ -1,42 +1,42 @@
#login { border:2px solid #d9d9d9; width:196px; position:relative; _padding-top:2px; display:block;}
*:first-child+html body #login { padding-top:2px;}
#login legend { display:block; width:0; height:0; overflow:hidden; font-size:0;}
#login form { position:relative; border:1px solid #cacaca; padding:11px 11px 7px 11px; width:172px;}
#login form .idpwWrap { overflow:hidden; clear:both; width:172px;}
#login form .idpw { float:left; width:110px; }
#login form .idpw input { border:1px solid #c9c9c9; color:#282828; width:105px; background:#fbfbfb; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma;}
#login form .login { float:right;}
#login form p.save { clear:both; padding:.3em 0;}
#login form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body #login form p input { margin:-3px; }
#login form p.save label { font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; color:#999999;}
#login form ul.help { border-top:1px solid #e4e4e4; overflow:hidden; padding:.5em 0 0 0; white-space:nowrap;}
#login form ul.help li { float:left; display:block; padding:0 3px 0 7px; background:url(../images/default/vrType1.gif) no-repeat left center;}
#login form ul.help li.first-child { background:none; padding-left:0;}
#login form ul.help li a { color:#999999; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; white-space:nowrap; text-decoration:none; }
#login form ul.help li.first-child a { color:#54564b; text-decoration:none;}
#login form ul.help li a:hover { text-decoration:underline; }
#login form .userName { width:172px; overflow:hidden; border-bottom:1px solid #e4e4e4; padding:0 0 6px 0; margin-top:-5px;}
#login form .userName strong { color:#282828; float:left; padding:4px 0 0 2px; font:bold .9em Tahoma;}
#login form .userName a { float:right;}
#login form ul.userMenu { padding:0 0 6px 4px; overflow:hidden; margin-top:10px;}
#login form ul.userMenu li { list-style:none; padding-left:10px; background:url(../images/default/bulletFF1A00.gif) no-repeat left 4px; height:18px; }
#login form ul.userMenu li a { color:#54564b; text-decoration:none;}
#login form ul.userMenu li a:hover { text-decoration:underline;}
#login form p.latestLogin { color:#999999; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif;}
#login form p.latestLogin span { font:1em Tahoma;}
.login_default { border:2px solid #d9d9d9; width:196px; position:relative; _padding-top:2px; display:block;}
*:first-child+html body .login_default { padding-top:2px;}
.login_default legend { display:block; width:0; height:0; overflow:hidden; font-size:0;}
.login_default form { position:relative; border:1px solid #cacaca; padding:11px 11px 7px 11px; width:172px;}
.login_default form .idpwWrap { overflow:hidden; clear:both; width:172px;}
.login_default form .idpw { float:left; width:110px; }
.login_default form .idpw input { border:1px solid #c9c9c9; color:#282828; width:105px; background:#fbfbfb; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma;}
.login_default form .login { float:right;}
.login_default form p.save { clear:both; padding:.3em 0;}
.login_default form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body .login_default form p input { margin:-3px; }
.login_default form p.save label { font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; color:#999999;}
.login_default form ul.help { border-top:1px solid #e4e4e4; overflow:hidden; padding:.5em 0 0 0; white-space:nowrap;}
.login_default form ul.help li { float:left; display:block; padding:0 3px 0 7px; background:url(../images/default/vrType1.gif) no-repeat left center;}
.login_default form ul.help li.first-child { background:none; padding-left:0;}
.login_default form ul.help li a { color:#999999; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; white-space:nowrap; text-decoration:none; }
.login_default form ul.help li.first-child a { color:#54564b; text-decoration:none;}
.login_default form ul.help li a:hover { text-decoration:underline; }
.login_default form .userName { position:relative; width:172px; overflow:hidden; border-bottom:1px solid #e4e4e4; padding:0 0 6px 0; margin-top:-5px;}
.login_default form .userName strong { color:#282828; padding:4px 0 0 2px; font:bold .9em Tahoma;}
.login_default form .userName a { position:relative; top:5px; right:0px; }
.login_default form ul.userMenu { padding:0 0 6px 4px; overflow:hidden; margin-top:10px;}
.login_default form ul.userMenu li { list-style:none; padding-left:10px; background:url(../images/default/bulletFF1A00.gif) no-repeat left 4px; height:18px; }
.login_default form ul.userMenu li a { color:#54564b; text-decoration:none;}
.login_default form ul.userMenu li a:hover { text-decoration:underline;}
.login_default form p.latestLogin { color:#999999; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif;}
.login_default form p.latestLogin span { font:1em Tahoma;}
img.login_mask { width:201px; height:5px; background:#ffffff; display:block;}
#openid_login { border:2px solid #d9d9d9; width:196px; position:relative; _padding-top:2px; display:block; }
*:first-child+html body #openid_login { padding-top:2px;}
#openid_login legend { display:block; width:0; height:0; overflow:hidden; font-size:0;}
#openid_login form { position:relative; border:1px solid #cacaca; padding:11px 11px 7px 11px; width:172px; }
#openid_login form .idpwWrap { overflow:hidden; clear:both; width:172px;}
#openid_login form .idpw { float:left;}
#openid_login form .idpw p { margin-bottom:5px; background: url(../images/openid_login_bg.gif) left no-repeat; padding-left:18px; font-size:.9em Tahoma;color:#999999}
#openid_login form .idpw input { border:1px solid #c9c9c9; color:#282828; width:105px; background:#fbfbfb; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma; }
#openid_login form .login { float:right;}
#openid_login form p.save { clear:both; padding:.3em 0;}
#openid_login form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body #openid_login form p input { margin:-3px; }
#openid_login form p.save label { font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; color:#999999;}
.openid_login_default { border:2px solid #d9d9d9; width:196px; position:relative; _padding-top:2px; display:block; }
*:first-child+html body .openid_login_default { padding-top:2px;}
.openid_login_default legend { display:block; width:0; height:0; overflow:hidden; font-size:0;}
.openid_login_default form { position:relative; border:1px solid #cacaca; padding:11px 11px 7px 11px; width:172px; }
.openid_login_default form .idpwWrap { overflow:hidden; clear:both; width:172px;}
.openid_login_default form .idpw { float:left;}
.openid_login_default form .idpw p { margin-bottom:5px; background: url(../images/openid_login_bg.gif) left no-repeat; padding-left:18px; font-size:.9em Tahoma;color:#999999}
.openid_login_default form .idpw input { border:1px solid #c9c9c9; color:#282828; width:105px; background:#fbfbfb; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma; }
.openid_login_default form .login { float:right;}
.openid_login_default form p.save { clear:both; padding:.3em 0;}
.openid_login_default form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body .openid_login_default form p input { margin:-3px; }
.openid_login_default form p.save label { font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; color:#999999;}

View file

@ -1,38 +1,38 @@
#login { border:2px solid #d9d9d9; width:196px; position:relative; _padding-top:2px; display:block;}
*:first-child+html body#white #login { padding-top:2px;}
#login legend { display:block; width:0; height:0; overflow:hidden; font-size:0;}
#login form { position:relative; border:1px solid #cacaca; padding:11px 11px 7px 11px; width:172px;}
#login form .idpwWrap { overflow:hidden; clear:both; width:172px;}
#login form .idpw { float:left; width:110px;}
#login form .idpw input { border:1px solid #c9c9c9; color:#282828; width:105px; background:#fbfbfb; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma;}
#login form .login { float:right;}
#login form p.save { clear:both; padding:.3em 0;}
#login form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body#white #login form p input { margin:-3px; }
#login form p.save label { font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; color:#999999;}
#login form ul.help { border-top:1px solid #e4e4e4; overflow:hidden; padding:.5em 0 0 0; white-space:nowrap;}
#login form ul.help li { list-style:none; float:left; display:block; padding:0 3px 0 7px; background:url(../images/white/vrType1.gif) no-repeat left center;}
#login form ul.help li.first-child { background:none; padding-left:0;}
#login form ul.help li a { color:#999999; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; white-space:nowrap; text-decoration:none; }
#login form ul.help li a:hover { text-decoration:underline; }
#login form ul.help li.first-child a { color:#54564b;}
#login form .userName { width:172px; overflow:hidden; border-bottom:1px solid #e4e4e4; padding:0 0 6px 0; margin-top:-5px;}
#login form .userName strong { color:#282828; float:left; padding:4px 0 0 2px; font:bold .9em Tahoma;}
#login form .userName a { float:right; text-decoration:none; }
#login form ul.userMenu { padding:0 0 6px 4px; overflow:hidden; margin-top:10px;}
#login form ul.userMenu li { list-style:none; padding-left:10px; background:url(../images/white/bulletFF1A00.gif) no-repeat left 4px; height:18px; }
#login form ul.userMenu li a { color:#54564b; text-decoration:none; }
#login form ul.userMenu li a:hover { text-decoration:underline; }
#login form p.latestLogin { color:#999999; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif;}
#login form p.latestLogin span { font:1em Tahoma;}
.login_white { border:2px solid #d9d9d9; width:196px; position:relative; _padding-top:2px; display:block;}
*:first-child+html body#white .login_white { padding-top:2px;}
.login_white legend { display:block; width:0; height:0; overflow:hidden; font-size:0;}
.login_white form { position:relative; border:1px solid #cacaca; padding:11px 11px 7px 11px; width:172px;}
.login_white form .idpwWrap { overflow:hidden; clear:both; width:172px;}
.login_white form .idpw { float:left; width:110px;}
.login_white form .idpw input { border:1px solid #c9c9c9; color:#282828; width:105px; background:#fbfbfb; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma;}
.login_white form .login { float:right;}
.login_white form p.save { clear:both; padding:.3em 0;}
.login_white form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body#white .login_white form p input { margin:-3px; }
.login_white form p.save label { font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; color:#999999;}
.login_white form ul.help { border-top:1px solid #e4e4e4; overflow:hidden; padding:.5em 0 0 0; white-space:nowrap;}
.login_white form ul.help li { list-style:none; float:left; display:block; padding:0 3px 0 7px; background:url(../images/white/vrType1.gif) no-repeat left center;}
.login_white form ul.help li.first-child { background:none; padding-left:0;}
.login_white form ul.help li a { color:#999999; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; white-space:nowrap; text-decoration:none; }
.login_white form ul.help li a:hover { text-decoration:underline; }
.login_white form ul.help li.first-child a { color:#54564b;}
.login_white form .userName { position:relative; width:172px; overflow:hidden; border-bottom:1px solid #e4e4e4; padding:0 0 6px 0; margin-top:-5px;}
.login_white form .userName strong { color:#282828; padding:4px 0 0 2px; font:bold .9em Tahoma;}
.login_white form .userName a { position:relative; top:5px; right:0px; }
.login_white form ul.userMenu { padding:0 0 6px 4px; overflow:hidden; margin-top:10px;}
.login_white form ul.userMenu li { list-style:none; padding-left:10px; background:url(../images/white/bulletFF1A00.gif) no-repeat left 4px; height:18px; }
.login_white form ul.userMenu li a { color:#54564b; text-decoration:none; }
.login_white form ul.userMenu li a:hover { text-decoration:underline; }
.login_white form p.latestLogin { color:#999999; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif;}
.login_white form p.latestLogin span { font:1em Tahoma;}
img.login_mask { width:201px; height:5px; background:#ffffff; display:block;}
#openid_login { border:2px solid #d9d9d9; width:196px; position:relative; _padding-top:2px; display:block; }
*:first-child+html body #openid_login { padding-top:2px;}
#openid_login legend { display:block; width:0; height:0; overflow:hidden; font-size:0;}
#openid_login form { position:relative; border:1px solid #cacaca; padding:11px 11px 7px 11px; width:172px; }
#openid_login form .idpwWrap { overflow:hidden; clear:both; width:172px;}
#openid_login form .idpw { float:left;}
#openid_login form .idpw p { margin-bottom:5px; background: url(../images/openid_login_bg.gif) left no-repeat; padding-left:18px; font-size:.9em Tahoma;color:#999999}
#openid_login form .idpw input { border:1px solid #c9c9c9; color:#282828; width:105px; background:#fbfbfb; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma; }
#openid_login form .login { float:right;}
.openid_login_white { border:2px solid #d9d9d9; width:196px; position:relative; _padding-top:2px; display:block; }
*:first-child+html body .openid_login_white { padding-top:2px;}
.openid_login_white legend { display:block; width:0; height:0; overflow:hidden; font-size:0;}
.openid_login_white form { position:relative; border:1px solid #cacaca; padding:11px 11px 7px 11px; width:172px; }
.openid_login_white form .idpwWrap { overflow:hidden; clear:both; width:172px;}
.openid_login_white form .idpw { float:left;}
.openid_login_white form .idpw p { margin-bottom:5px; background: url(../images/openid_login_bg.gif) left no-repeat; padding-left:18px; font-size:.9em Tahoma;color:#999999}
.openid_login_white form .idpw input { border:1px solid #c9c9c9; color:#282828; width:105px; background:#fbfbfb; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma; }
.openid_login_white form .login { float:right;}

View file

@ -34,14 +34,14 @@ function completeOpenIDLogin(ret_obj, response_tags) {
/* 오픈 아이디 폼 변환 */
function toggleLoginForm(obj) {
if(xGetElementById('login').style.display != "none") {
xGetElementById('login').style.display = "none";
xGetElementById('openid_login').style.display = "block";
xGetElementById('use_open_id_2').checked = true;
} else {
xGetElementById('openid_login').style.display = "none";
xGetElementById('login').style.display = "block";
xGetElementById('use_open_id').checked = false;
xGetElementById('use_open_id_2').checked = false;
}
if(xGetElementById('login').style.display != "none") {
xGetElementById('login').style.display = "none";
xGetElementById('openid_login').style.display = "block";
xGetElementById('use_open_id_2').checked = true;
} else {
xGetElementById('openid_login').style.display = "none";
xGetElementById('login').style.display = "block";
xGetElementById('use_open_id').checked = false;
xGetElementById('use_open_id_2').checked = false;
}
}

View file

@ -11,7 +11,7 @@
<!--%import("./filter/openid_login.xml")-->
<!--%import("./js/login.js")-->
<fieldset id="login">
<fieldset id="login" class="login_{$colorset}">
<legend>{$lang->cmd_login}</legend>
<form action="./" method="get" onsubmit="return procFilter(this, widget_login)" id="fo_login_widget">
@ -33,14 +33,14 @@
</p>
<ul class="help">
<li class="first-child"><a href="{getUrl('act','dispMemberSignUpForm')}">{$lang->cmd_signup}</a></li>
<!--<li><a href="#">아이디/비밀번호 찾기</a></li>-->
<li><a href="{getUrl('act','dispMemberFindAccount')}">{$lang->cmd_find_member_account}</a></li>
</ul>
</form>
</fieldset>
<!-- OpenID -->
<!--@if($member_config->enable_openid=='Y')-->
<fieldset id="openid_login" style="display:none;">
<fieldset id="openid_login" class="openid_login_{$colorset}" style="display:none;">
<legend>{$lang->cmd_login}</legend>
<form action="./" method="post" onsubmit="return procFilter(this, openid_login)" >
<div class="idpwWrap">

View file

@ -9,7 +9,7 @@
<!--%import("./filter/logout.xml")-->
<fieldset id="login">
<fieldset id="login" class="login_{$colorset}">
<legend>{$lang->cmd_login}</legend>
<form action="" method="post">
@ -20,7 +20,7 @@
<ul class="userMenu">
<li><a href="{getUrl('act','dispMemberInfo','member_srl',$logged_info->member_srl)}">{$lang->cmd_view_member_info}</a></li>
<li><a href="{getUrl('act','dispMemberFriend','member_srl',$logged_info->member_srl)}">{$lang->cmd_view_friend}</a></li>
<li><a href="{getUrl('act','dispMemberMessages','member_srl',$logged_info->member_srl)}">{$lang->cmd_view_message_box}</a></li>
<li><a href="{getUrl('act','dispMemberMessages','message_type','','member_srl',$logged_info->member_srl)}">{$lang->cmd_view_message_box}</a></li>
<li><a href="{getUrl('act','dispMemberScrappedDocument','member_srl',$logged_info->member_srl)}">{$lang->cmd_view_scrapped_document}</a></li>
<!--@if($logged_info->is_admin=="Y")-->

View file

@ -41,5 +41,17 @@
<title xml:lang="zh-CN">默认</title>
<title xml:lang="en">default</title>
</color>
<color name="white">
<title xml:lang="ko">하얀색</title>
<title xml:lang="jp"></title>
<title xml:lang="en">white</title>
<title xml:lang="zh-CN">白色</title>
</color>
<color name="black">
<title xml:lang="ko">검은색</title>
<title xml:lang="jp"></title>
<title xml:lang="en">Black</title>
<title xml:lang="zh-CN">黑色</title>
</color>
</colorset>
</skin>

View file

@ -4,7 +4,6 @@
<title xml:lang="jp">XEデフォルトレイアウト用の最新コンテンツ表示スキン</title>
<title xml:lang="zh-CN">XE 官方网站主题列表</title>
<title xml:lang="en">XE Official Layout's newest document skin</title>
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 8. 1">
<name xml:lang="ko">제로</name>
<name xml:lang="jp">zero</name>
@ -29,10 +28,10 @@
布局: zero (http://blog.nzeo.com)
</description>
<description xml:lang="en">
It is a skin suitable for the XE official layout.
Design : So-Ra Lee (http://ra-ra-.pe.kr)
HTML/CSS : Chan-Myung Jeong(http://naradesign.net)
Layout : zero (http://blog.nzeo.com)
It is a skin suitable for the XE official layout.
Design : So-Ra Lee (http://ra-ra-.pe.kr)
HTML/CSS : Chan-Myung Jeong(http://naradesign.net)
Layout : zero (http://blog.nzeo.com)
</description>
</maker>
<colorset>

View file

@ -59,14 +59,18 @@
</var>
<var id="thumbnail_type">
<name xml:lang="ko">썸네일 생성 방법</name>
<name xml:lang="zh-CN">缩略图生成方式</name>
<description xml:lang="ko">썸네일 생성 방법을 선택할 수 있습니다. (crop : 꽉 채우기, ratio : 비율 맞추기)</description>
<description xml:lang="zh-CN">可以选择缩略图生成方式。 (crop : 裁减, ratio : 比例)</description>
<type>select</type>
<options>
<name xml:lang="ko">Crop (채우기)</name>
<name xml:lang="zh-CN">Crop (裁减)</name>
<value>crop</value>
</options>
<options>
<name xml:lang="ko">Ratio (비율 맞추기)</name>
<name xml:lang="zh-CN">Ratio (比例)</name>
<value>ratio</value>
</options>
</var>
@ -85,7 +89,9 @@
</var>
<var id="thumbnail_height">
<name xml:lang="ko">이미지 세로크기</name>
<name xml:lang="zh-CN">高度</name>
<description xml:lang="ko">이미지의 세로 크기를 지정할 수 있습니다. (기본 100px)</description>
<description xml:lang="zh-CN">可以指定图片高度。(默认为100px)</description>
<type>text</type>
</var>
<var id="cols_list_count">

View file

@ -10,15 +10,17 @@
.ni_box .thumbnail_box .thumbnail img { border:1px solid #DEDEDE; }
.ni_box .thumbnail_box .thumbnail img:hover { border:1px solid #54564b; }
.ni_box .thumbnail_box .title { text-align:center; }
.ni_box .thumbnail_box a { color:#000000; text-decoration:none; }
.ni_box .thumbnail_box a:visited { color:#54564b; text-decoration:none; }
.ni_box .thumbnail_box td.bottomBorder { border-bottom:1px dashed #EEEEEE; padding-bottom:5px; }
.ni_box .thumbnail_box div strong { font-weight:bold; font-size:0.75em; color:#ed2a32; }
.ni_box .thumbnail_box div.author { color:#54564b; }
.ni_box .thumbnail_box div.author a { color:#54564b; }
.ni_box .thumbnail_box div.regdate { font-size:0.75em; color:#AAAAAA; margin-top:2px;}
.ni_box .thumbnail_box div strong { font-weight:bold; font-size:0.9em; color:#ed2a32; }
.ni_box .thumbnail_box div.author { color:#54564b; text-align:center;}
.ni_box .thumbnail_box div.author span,div { color:#54564b; }
.ni_box .thumbnail_box div.regdate { font-size:0.9em; color:#AAAAAA; margin-top:2px;text-align:center;}
.ni_box .thumbnail_box div.readAndVoted { color:#333333; font-size:0.75em; }
.ni_box .thumbnail_box div.readAndVoted span.div_block { color:#333333; font-size:0.75em; }
.ni_box .thumbnail_box div.readAndVoted { color:#999999; font-size:0.9em; text-align:center;}
.ni_box .thumbnail_box div.readAndVoted span.div_block { color:#333333; font-size:0.9em; }
.ni_box .thumbnail_box div.readAndVoted strong { color:#FE6700; }

View file

@ -21,12 +21,12 @@
<!--@if($oDocument->document_srl)-->
<div class="thumbnail"><a href="{getUrl('','document_srl',$oDocument->document_srl)}"><img src="{$oDocument->getThumbnail($widget_info->thumbnail_width,$widget_info->thumbnail_height,$widget_info->thumbnail_type)}" width="{$widget_info->thumbnail_width}" height="{$widget_info->thumbnail_height}" border="0" alt="" class="thumbnail" /></a></div>
<div>
<div class="title">
<a href="{$oDocument->getPermanentUrl()}#{$oDocument->getCommentCount()}">{$oDocument->getTitleText($widget_info->title_length)}</a>
<!--@if($oDocument->getCommentCount())--><strong>[{$oDocument->getCommentCount()}]</strong><!--@end-->
</div>
<!--@if($widget_info->display_author == 'Y')-->
<div class="author member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</div>
<div class="author"><div class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</div></div>
<!--@end-->
<!--@if($widget_info->display_regdate == 'Y')-->
@ -43,7 +43,7 @@
<!--@if($widget_info->display_voted_count == 'Y' && $oDocument->get('voted_count')>0 )-->
<!--@if($widget_info->display_readed_count == 'Y')--><span class="div_block">|</span><!--@end-->
<!--@if($widget_info->display_readed_count == 'Y')--><br /><!--@end-->
{$lang->voted_count} <strong>{$oDocument->get('voted_count')}</strong>