read page

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4730 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ChanMyeong 2008-10-30 08:54:43 +00:00
parent 8e3d25b99a
commit 175ccfa3ba
17 changed files with 1452 additions and 1420 deletions

View file

@ -18,6 +18,11 @@ a.button.xLarge { background-position:left -65px; }
a.button.xLarge span { padding:8px 10px 7px 8px; font:20px/20px Sans-serif; background-position:right -65px;}
a.button.xLarge, x:-moz-any-link { font:0/35px Sans-serif; padding:18px 0;} /* Firefox 2 Fix */
a.button.xLarge, x:-moz-any-link, x:default { padding:0;} /* Firefox 2 Fix */
/* Small Size */
a.button.small { background-position:left -107px; }
a.button.small span { padding:4px 6px 3px 4px; font:11px/11px Sans-serif; background-position:right -107px;}
a.button.small, x:-moz-any-link { font:0/18px Sans-serif; padding:9px 0;} /* Firefox 2 Fix */
a.button.small, x:-moz-any-link, x:default { padding:0;} /* Firefox 2 Fix */
/* Control Button + Submit Button */
span.button,
@ -33,13 +38,23 @@ span.button.large { background-position:left -30px; *top:-1px;}
span.button.large, x:-moz-any-link{ font:0/29px Sans-serif; padding:14px 0;} /* Firefox 2 Fix */
span.button.large, x:-moz-any-link, x:default{ padding:0;} /* Firefox 2 Fix */
span.button.large button,
span.button.large input { height:30px; *top:0 !important; padding:0 10px 0 8px; *padding:0 5px 0 3px; *top:-1px; font:16px/30px Sans-serif; background-position:right -30px;}
span.button.large input { height:30px; *top:0; _top:-1px; padding:0 10px 0 8px; *padding:0 5px 0 3px; font:16px/30px Sans-serif; background-position:right -30px;}
/* xLarge Size */
span.button.xLarge { background-position:left -65px;}
span.button.xLarge, x:-moz-any-link{ font:0/35px Sans-serif; padding:17px 0;} /* Firefox 2 Fix */
span.button.xLarge, x:-moz-any-link, x:default{ padding:0;} /* Firefox 2 Fix */
span.button.xLarge button,
span.button.xLarge input { height:35px; padding:0 10px 0 8px; *padding:0 5px 0 3px; font:20px/36px Sans-serif; background-position:right -65px;}
/* Large Size */
span.button.small { background-position:left -107px;}
span.button.small, x:-moz-any-link{ font:0/18px Sans-serif; padding:9px 0;} /* Firefox 2 Fix */
span.button.small, x:-moz-any-link, x:default{ padding:0;} /* Firefox 2 Fix */
span.button.small button,
span.button.small input { height:18px; *top:0; _top:-1px; padding:0 6px 0 4px; *padding:0 3px 0 2px; font:11px/18px Sans-serif; background-position:right -107px;}
span.button.small button, x:-moz-any-link,
span.button.small input, x:-moz-any-link{ top:-1px;} /* Firefox 2 Fix */
span.button.small button, x:-moz-any-link, x:default,
span.button.small input, x:-moz-any-link, x:default{ top:0;} /* Firefox 2 Fix */
/* Strong Button */
a.button.strong *,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Before After
Before After

View file

@ -1,54 +1,54 @@
<!-- 검색된 글 목록이 있고 권한이 있을 경우 출력 -->
<!--@if($grant->list)-->
<!--@if($category || $search_keyword)-->
<!--@if($oDocument->isExists())-->
<div class="viewDocument">
<!--#include("./view_document.html")-->
</div>
<!--@end-->
<!--// 글이 선택되어 있거나 검색어가 있으면 목록을 출력 -->
<!--#include("./style.list.html")-->
<!--@elseif($oDocument->isExists())-->
<div class="viewDocument">
<!--#include("./view_document.html")-->
</div>
<!--@else-->
<!--// 공지사항 -->
<!--@if($notice_list)-->
<div class="blogNotice">
<!--@foreach($notice_list as $no => $document)-->
<div class="item">
<span class="date">[{$document->getRegdate("Y-m-d")}]</span>
<a href="{getUrl('document_srl',$document->document_srl,'cpage','')}">{$document->getTitle()}</a>
<!--@if($document->getCommentCount())-->
<span class="replyAndTrackback" title="Replies"><img src="./images/{$module_info->colorset}/iconReply.gif" alt="" width="12" height="12" class="icon" /> <strong>{$document->getCommentCount()}</strong></span>
<!--@end-->
<!--@if($document->getTrackbackCount())-->
<span class="replyAndTrackback" title="Trackbacks"><img src="./images/{$module_info->colorset}/iconTrackback.gif" alt="" width="12" height="13" class="trackback icon" /> <strong>{$document->getTrackbackCount()}</strong></span>
<!--@end-->
{$document->printExtraImages(60*60*$module_info->duration_new)}
</div>
<!--@end-->
</div>
<!--@end-->
<!--// 일반글 -->
<!--@foreach($document_list as $no => $oDocument)-->
<div class="viewDocument">
<!--#include("./view_document.html")-->
</div>
<!--@end-->
<!--@end-->
<!--@end-->
<!-- 검색된 글 목록이 있고 권한이 있을 경우 출력 -->
<!--@if($grant->list)-->
<!--@if($category || $search_keyword)-->
<!--@if($oDocument->isExists())-->
<div class="viewDocument">
<!--#include("./view_document.html")-->
</div>
<!--@end-->
<!--// 글이 선택되어 있거나 검색어가 있으면 목록을 출력 -->
<!--#include("./_style.list.html")-->
<!--@elseif($oDocument->isExists())-->
<div class="viewDocument">
<!--#include("./view_document.html")-->
</div>
<!--@else-->
<!--// 공지사항 -->
<!--@if($notice_list)-->
<div class="blogNotice">
<!--@foreach($notice_list as $no => $document)-->
<div class="item">
<span class="date">[{$document->getRegdate("Y-m-d")}]</span>
<a href="{getUrl('document_srl',$document->document_srl,'cpage','')}">{$document->getTitle()}</a>
<!--@if($document->getCommentCount())-->
<span class="replyAndTrackback" title="Replies"><img src="./images/{$module_info->colorset}/iconReply.gif" alt="" width="12" height="12" class="icon" /> <strong>{$document->getCommentCount()}</strong></span>
<!--@end-->
<!--@if($document->getTrackbackCount())-->
<span class="replyAndTrackback" title="Trackbacks"><img src="./images/{$module_info->colorset}/iconTrackback.gif" alt="" width="12" height="13" class="trackback icon" /> <strong>{$document->getTrackbackCount()}</strong></span>
<!--@end-->
{$document->printExtraImages(60*60*$module_info->duration_new)}
</div>
<!--@end-->
</div>
<!--@end-->
<!--// 일반글 -->
<!--@foreach($document_list as $no => $oDocument)-->
<div class="viewDocument">
<!--#include("./view_document.html")-->
</div>
<!--@end-->
<!--@end-->
<!--@end-->

View file

@ -31,12 +31,12 @@
<option value="{$val->category_srl}" <!--@if($category==$val->category_srl)-->selected="selected"<!--@end-->>{str_repeat("&nbsp;&nbsp;",$val->depth)} {$val->title} <!--@if($val->document_count)-->({$val->document_count})<!--@end--></option>
<!--@end-->
</select>
<button type="button" name="go_button" id= "go_button" onclick="doChangeCategory(); return false;" class="button" />Go</button>
<button type="button" name="go_button" id= "go_button" onclick="doChangeCategory(); return false;" class="button">Go</button>
</span>
<!--@end-->
{$lang->title}
</th>
<!--@if($module_info->display_author!='N')--><th scope="col">{$lang->writer}</div></th><!--@end-->
<!--@if($module_info->display_author!='N')--><th scope="col">{$lang->writer}</th><!--@end-->
<!--@if($module_info->display_readed_count!='N')--><th scope="col"><a href="{getUrl('sort_index','readed_count','order_type',$order_type)}">{$lang->readed_count}<!--@if($sort_index=='readed_count')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></th><!--@end-->
<!--@if($module_info->display_voted_count!='N')--><th scope="col"><a href="{getUrl('sort_index','voted_count','order_type',$order_type)}">{$lang->voted_count}<!--@if($sort_index=='voted_count')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></th><!--@end-->
<!--@if($module_info->display_regdate != 'N')--><th scope="col"><a href="{getUrl('sort_index','regdate','order_type',$order_type)}">{$lang->date}<!--@if($sort_index=='regdate')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></th><!--@end-->

View file

@ -1,90 +1,101 @@
<!--@if($oDocument->getCommentCount())-->
<div class="replyBox">
<div class="feedbackList">
{@ $_comment_list = $oDocument->getComments() }
<!--@foreach($_comment_list as $key => $comment)-->
<h3 class="feedbackHeader">
<!--@if($grant->write_comment && $oDocument->allowComment()) -->
<a href="#comment" title="{$lang->comment}"><strong>{$oDocument->getCommentcount()}</strong> Replies</a>
<!--@end-->
<!--@if($oDocument->allowTrackback() && $oDocument->getTrackbackCount() )-->
<a href="#trackback" title="{$lang->trackback}"><strong>{$oDocument->getTrackbackCount()}</strong> Trackbacks</a>
<!--@end-->
</h3>
<div class="replyList">
<div class="replyItem <!--@if($comment->get('depth'))-->reply<!--@end-->">
<!--@if($comment->get('depth'))-->
<div style="margin-left:{($comment->get('depth')-1)*20}px" class="replyIndent">
<!--@end-->
{@ $_comment_list = $oDocument->getComments() }
<!--@foreach($_comment_list as $key => $comment)-->
<a name="comment_{$comment->comment_srl}"></a>
<div class="item <!--@if($comment->get('depth'))-->reply<!--@end-->" id="comment_{$comment->comment_srl}">
<div class="replyOption">
<!--@if($comment->isGranted() || !$comment->get('member_srl'))-->
<a href="{getUrl('act','dispBoardDeleteComment','comment_srl',$comment->comment_srl)}"><img src="./images/common/buttonDeleteX.gif" alt="{$lang->cmd_delete}" width="12" height="13" /></a>
<a href="{getUrl('act','dispBoardModifyComment','comment_srl',$comment->comment_srl)}"><img src="./images/{$module_info->colorset}/buttonModifyE.gif" alt="{$lang->cmd_modify}" width="20" height="17" /></a>
<!--@end-->
<a href="{getUrl('act','dispBoardReplyComment','comment_srl',$comment->comment_srl)}"><img src="./images/{$module_info->colorset}/buttonReply.gif" alt="{$lang->cmd_reply}" width="20" height="17" /></a>
</div>
<h4 class="header">
<!--@if(!$comment->member_srl)-->
<!--@if($comment->homepage)-->
<a href="{$comment->homepage}" onclick="window.open(this.href);return false;">{$comment->getNickName()}</a>
<!--@else-->
{$comment->getNickName()}
<!--@end-->
<!--@else-->
<a href="popup_menu_area" class="member_{$comment->member_srl}">{$comment->getNickName()}</a>
<!--@end-->
</h4>
<!--@if(!$comment->isAccessible())-->
<!--%import("filter/input_password.xml")-->
<div class="secretContent">
<form action="./" method="get" onsubmit="return procFilter(this, input_password)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$comment->get('document_srl')}" />
<input type="hidden" name="comment_srl" value="{$comment->get('comment_srl')}" />
<div class="title">{$lang->msg_is_secret}</div>
<div class="content"><input type="password" name="password" class="inputTypeText" /><span class="button"><input type="submit" value="{$lang->cmd_input}" accesskey="s" /></span></div>
</form>
</div>
<!--@else-->
<!--@if($comment->getProfileImage())-->
<img src="{$comment->getProfileImage()}" alt="profile" class="commentProfileImage" />
<!--@end-->
{$comment->getContent(true)}
<!--@end-->
<!--@if($comment->get('depth'))-->
<div style="margin-left:{($comment->get('depth')-1)*20}px" class="replyIndent">
<!--@end-->
<!--@if($comment->hasUploadedFIles())-->
<dl class="attachedFile">
<dt>Attached File :</dt>
{@ $_uploaded_files = $comment->getUploadedFiles() }
<!--@foreach($_uploaded_files as $key => $file)-->
<dd><a href="{getUrl('')}{$file->download_url}">{$file->source_filename} <span class="bubble">[File Size:{FileHandler::filesize($file->file_size)}/Download{number_format($file->download_count)}]</span></a></dd>
<!--@end-->
</dl>
<!--@end-->
<dl class="time">
<dt>Time :</dt>
<dd>
{$comment->getRegdate('Y.m.d')}
</dd>
<dd>
{$comment->getRegdate('H:i:s')}
<!--@if($grant->is_admin || $module_info->display_ip_address!='N')-->({$comment->getIpaddress()})<!--@end-->
</dd>
</dl>
<div class="option">
<!--@if($comment->isGranted() || !$comment->get('member_srl'))-->
<a href="{getUrl('act','dispBoardDeleteComment','comment_srl',$comment->comment_srl)}" class="button small"><span>Delete</span></a>
<a href="{getUrl('act','dispBoardModifyComment','comment_srl',$comment->comment_srl)}" class="button small"><span>Modify</span></a>
<!--@end-->
<a href="{getUrl('act','dispBoardReplyComment','comment_srl',$comment->comment_srl)}" class="button small green"><span>Reply</span></a>
</div>
<!--@if($comment->get('voted_count')!=0 || $comment->get('blamed_count') != 0)-->
<div class="voted">
({$lang->voted_count}:
<strong>{$comment->get('voted_count')?$comment->get('voted_count'):0}</strong> / <strong>{$comment->get('blamed_count')?$comment->get('blamed_count'):0}</strong>)
</div>
<!--@end-->
<!--@if($comment->get('depth'))-->
</div>
<!--@end-->
</div>
<!--@end-->
<div class="date">
<strong>{$comment->getRegdate('Y.m.d')}</strong> {$comment->getRegdate('H:i:s')}
<!--@if($grant->is_admin || $module_info->display_ip_address!='N')-->({$comment->getIpaddress()})<!--@end-->
</div>
<div class="author">
<!--@if(!$comment->member_srl)-->
<!--@if($comment->homepage)-->
<a href="{$comment->homepage}" onclick="window.open(this.href);return false;">{$comment->getNickName()}</a>
<!--@else-->
{$comment->getNickName()}
<!--@end-->
<!--@else-->
<div class="member_{$comment->member_srl}">{$comment->getNickName()}</div>
<!--@end-->
</div>
<!--@if($comment->get('voted_count')!=0 || $comment->get('blamed_count') != 0)-->
<div class="voted">
({$lang->voted_count}:
<strong>{$comment->get('voted_count')?$comment->get('voted_count'):0}</strong> / <strong>{$comment->get('blamed_count')?$comment->get('blamed_count'):0}</strong>)
</div>
<!--@end-->
<div class="clear"></div>
<div class="replyContent">
<!--@if(!$comment->isAccessible())-->
<!--%import("filter/input_password.xml")-->
<div class="secretContent">
<form action="./" method="get" onsubmit="return procFilter(this, input_password)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$comment->get('document_srl')}" />
<input type="hidden" name="comment_srl" value="{$comment->get('comment_srl')}" />
<div class="title">{$lang->msg_is_secret}</div>
<div class="content"><input type="password" name="password" class="inputTypeText" /><span class="button"><input type="submit" value="{$lang->cmd_input}" accesskey="s" /></span></div>
</form>
</div>
<!--@else-->
<!--@if($comment->getProfileImage())-->
<img src="{$comment->getProfileImage()}" alt="profile" class="commentProfileImage" />
<!--@end-->
{$comment->getContent(true)}
<!--@end-->
<div class="clear"></div>
</div>
<!--@if($comment->hasUploadedFIles())-->
<div class="fileAttached">
<ul>
{@ $_uploaded_files = $comment->getUploadedFiles() }
<!--@foreach($_uploaded_files as $key => $file)-->
<li><a href="{getUrl('')}{$file->download_url}">{$file->source_filename} ({FileHandler::filesize($file->file_size)})({number_format($file->download_count)})</a></li>
<!--@end-->
</ul>
<div class="clear"></div>
</div>
<!--@end-->
<!--@if($comment->get('depth'))-->
</div>
<!--@end-->
</div>
<!--@end-->
</div>
<!-- 댓글 페이지 네비게이션 -->
<!--@if($oDocument->comment_page_navigation)-->

View file

@ -8,6 +8,10 @@ body{ background:#fff;}
.board{ font-family:"나눔고딕", NanumGothic, "맑은 고딕", MalgunGothic, AppleGothic, "굴림", Gulim, "돋움", Dotum, Tahoma, Sans-serif; line-height:normal; font-size:.8em;}
.board *{ font-size:1em;}
.board img{ border:0;}
.board a{ text-decoration:none; color:#000;}
.board a:hover,
.board a:active,
.board a:focus{ text-decoration:underline;}
/* Board Type */
.board.classic{}
@ -33,10 +37,6 @@ body{ background:#fff;}
.boardInformation em,
.boardInformation strong{ color:#ff6600;}
.boardInformation strong{ font:bold 11px Tahoma;}
.boardInformation a{ text-decoration:none; color:#000;}
.boardInformation a:hover,
.boardInformation a:active,
.boardInformation a:focus{ text-decoration:underline;}
.boardInformation .infoLeft{ padding-left:18px; float:left; background:url(../images/white/iconArticle.gif) no-repeat left center;}
.boardInformation .infoRight{ float:right;}
.boardInformation .infoRight li.icon{ background:none; padding:0; margin-right:3px;}
@ -57,10 +57,6 @@ body{ background:#fff;}
.boardListForm legend{ position:absolute; width:0; height:0; overflow:hidden; font:0/0 Sans-serif; visibility:hidden;}
.boardListForm em,
.boardListForm strong{ font-style:normal; color:#ff6600;}
.boardListForm a{ text-decoration:none; color:#000;}
.boardListForm a:hover,
.boardListForm a:active,
.boardListForm a:focus{ text-decoration:underline;}
/* Board List */
.boardList{ border:0; border-top:1px solid #ddd; border-bottom:1px solid #ddd; width:100%;}
@ -137,29 +133,32 @@ body{ background:#fff;}
.boardSearchForm select{ font-size:12px; height:23px;}
.boardSearchForm .inputText{ border:1px solid #ccc; width:140px; height:15px; padding:4px 4px 2px 4px; font-size:12px; *margin:-1px 0;}
/* Board Read */
.boardRead{}
.boardReadHeader{ margin-bottom:5px; *zoom:1;}
.boardReadHeader:after{ content:""; display:block; float:none; clear:both;}
.boardReadHeader *{ margin:0; padding:0;}
.boardReadHeader .title{ float:left;}
.boardReadHeader em{ float:right; font-style:normal; font-weight:bold; font-size:1em;}
.boardReadHeader a{ text-decoration:none; color:#000; font-weight:bold; font-size:1em;}
.boardReadHeader a:hover,
.boardReadHeader a:active,
.boardReadHeader a:focus{ text-decoration:underline;}
.boardReadHeader .title{ float:left; font-size:1.5em;}
.boardReadHeader em{ position:relative; top:5px; float:right; font-style:normal; font-weight:bold; font-size:1em;}
.boardReadHeader a{ font-weight:bold; font-size:1em;}
.boardReadBody{ padding:15px 0; border-top:1px solid #ddd; border-bottom:1px solid #ddd; font-size:.75em; line-height:1.5em;}
.boardReadBody{ padding:15px 0; border-top:1px solid #ddd; border-bottom:1px solid #ddd; line-height:1.5em;}
.boardReadBody .document_popup_menu{ margin-top:20px; text-align:right;}
.boardReadBody .document_popup_menu a{ text-decoration:underline;}
.boardReadBody .xe_content{ margin-bottom:15px;}
.boardReadBody .memberSignature{ border:1px dotted #ddd;}
.boardReadBody .memberSignature .signature{ margin:10px;}
.boardReadFooter{ padding:10px 0; *zoom:1; color:#666; line-height:1em; font:11px Tahoma;}
.boardReadFooter:after{ content:""; display:block; float:none; clear:both;}
.boardReadFooter *{ margin:0; padding:0;}
.boardReadFooter a{ color:#666;}
.boardReadFooter a{ color:#666; text-decoration:underline; position:relative;}
.boardReadFooter .footerLeft{ float:left;}
.boardReadFooter .footerRight{ float:right;}
.boardReadFooter dl{ clear:both; white-space:nowrap;}
.boardReadFooter dt{ display:inline; font-weight:bold;}
.boardReadFooter dd{ display:inline;}
.boardReadFooter dl{ clear:both; position:relative;}
.boardReadFooter dt{ position:relative; z-index:2; display:inline; padding-right:5px; font-weight:bold; background:#fff;}
.boardReadFooter dd{ position:relative; z-index:1; left:-5px; display:inline; padding-left:7px; margin-right:5px; background:url(../images/white/lineVr11.gif) no-repeat left center; *zoom:1;}
.boardReadFooter .footerRight dl{ float:right;}
.boardReadFooter .footerRight dl.noBr{ position:relative; left:5px; float:right; clear:both; overflow:hidden; white-space:nowrap;}
.boardReadFooter .footerRight dl.noBr dt{ position:relative; left:-1px; padding-left:10px; background:url(../images/white/lineVr11.gif) no-repeat left center;}
@ -167,21 +166,35 @@ body{ background:#fff;}
.boardRead .boardNavigation{ border-top:1px solid #ddd;}
.feedbackList{ position:relative; overflow:hidden; font-size:.75em; padding-top:15px; margin-bottom:10px; color:#666;}
.feedbackList{ position:relative; overflow:hidden; padding-top:15px; margin-bottom:10px; color:#666;}
.feedbackList *{ margin:0; padding:0;}
.feedbackList .title{ position:relative; font-weight:bold; font-size:1.5em; color:#000; margin-bottom:10px;}
.feedbackList .title strong{ color:#ff6600;}
.feedbackList dl{ position:relative; padding-top:10px; margin-bottom:10px; border-top:1px dashed #ddd;}
.feedbackList dt{ font-weight:bold; font-size:1.25em; margin-bottom:5px; color:#333;}
.feedbackList dd{ line-height:1.5em;}
.feedbackList dd.trackbackTitle{ font-weight:bold;}
.feedbackList dd.text{}
.feedbackList dd.time{ position:absolute; top:15px; right:0; font:11px Tahoma;}
.feedbackList dd a.delete{ font-weight:bold; color:#ff6600;}
.feedbackList a{ text-decoration:none;}
.feedbackList a:hover,
.feedbackList a:active,
.feedbackList a:focus{ text-decoration:underline;}
.feedbackList .feedbackHeader{ position:relative; font-weight:bold; color:#000; margin-bottom:10px; font-size:1.5em;}
.feedbackList .feedbackHeader strong{ color:#ff6600;}
.feedbackList .item{ position:relative; padding-top:10px; margin-bottom:10px; border-top:1px dashed #ddd;}
.feedbackList .item .header{ font-size:1.5em; margin-bottom:5px;}
.feedbackList .item .header a{ font-size:1em;}
.feedbackList .item .comment_popup_menu{ text-align:right; margin-bottom:10px;}
.feedbackList .item .comment_popup_menu a{ text-decoration:underline;}
.feedbackList .item .option{ text-align:right;}
/* Time */
.time{ position:absolute; top:10px; right:0;}
.time *{ position:relative; font-size:11px; font-family:Tahoma; color:#666; display:inline;}
.time dt{ z-index:2; display:inline; padding-right:5px; font-weight:bold; background:#fff;}
.time dd{ z-index:1; left:-5px; display:inline; padding-left:7px; margin-right:3px; background:url(../images/white/lineVr11.gif) no-repeat left center;}
/* Attached File */
.attachedFile{ position:relative; margin:0; padding:0; border:none;}
.item .attachedFile{ position:absolute; left:0; bottom:0;}
.attachedFile *{ position:relative; font-size:11px; font-family:Tahoma; color:#666; display:inline;}
.attachedFile dt{ z-index:2; display:inline; padding-right:5px; font-weight:bold; background:#fff;}
.attachedFile dd{ z-index:1; left:-5px; display:inline; padding-left:7px; margin-right:5px; background:url(../images/white/lineVr11.gif) no-repeat left center; *zoom:1;}
.attachedFile dd a{ position:relative; text-decoration:underline; color:#666;}
.attachedFile dd a .bubble{ position:absolute; display:none; text-decoration:none; background:#f8f8f8; white-space:nowrap; border:1px solid #ddd; padding:2px 5px; left:0; top:-20px; cursor:pointer;}
.attachedFile dd a:hover .bubble,
.attachedFile dd a:active .bubble,
.attachedFile dd a:focus .bubble{ display:block;}
.replyForm{ padding:10px 20px 15px 20px; font-size:.75em; color:#666; margin-bottom:20px; background:#f4f4f4; -moz-border-radius:10px; -webkit-border-radius:10px;}
.replyForm *{ margin:0; padding:0;}
@ -224,11 +237,11 @@ body{ background:#fff;}
/* Layer */
#waitingforserverresponse { border:2px solid #444444; font-weight:bold; color:#444444; padding: 7px 5px 5px 25px; background:#FFFFFF url("../tpl/images/loading.gif") no-repeat 5px 5px; top:40px; left:40px; position:absolute; z-index:100; visibility:hidden; }
#popup_menu_area{ position:absolute; background:#fff; border:2px solid #eee; -moz-border-radius:5px; -webkit-border-radius:5px; margin:0; padding:0;}
#popup_menu_area{ position:absolute; background:#fff; border:2px solid #eee; -moz-border-radius:5px; -webkit-border-radius:5px; margin:0; padding:0; z-index:100;}
#popup_menu_area *{ margin:0; padding:0; list-style:none; font-size:12px; line-height:normal;}
#popup_menu_area ul{ border:1px solid #ddd; -moz-border-radius:5px; -webkit-border-radius:5px; padding:10px;}
#popup_menu_area li{ padding-left:20px; background-repeat:no-repeat; background-position:left center; margin-bottom:3px; *margin-bottom:-2px;}
#popup_menu_area li a{ text-decoration:none; color:#000;}
#popup_menu_area li a{ text-decoration:none; color:#000; white-space:nowrap;}
#popup_menu_area li a:hover,
#popup_menu_area li a:active,
#popup_menu_area li a:focus{ font-weight:bold; letter-spacing:-1px;}

View file

@ -1,7 +1,14 @@
@charset "utf-8";
/* NHN > UIT Center > Open UI Platform Team > Jeong Chan Myeong(dece24@nhncorp.com) */
.tagsBox{}
.tagCloud *{ margin:0; padding:0;}
.tagCloud .tagHeader{border:0; border-top:1px solid #ddd; border-bottom:1px solid #ddd; padding:7px; white-space:nowrap; color:#333; background:#fff url(../images/white/bgThDefault.gif) repeat-x left bottom; line-height:normal;}
.tagCloud .tagHeader strong{ color:#ff6600;}
.tagCloud ul{ text-align:justify; margin:20px 0;}
.tagCloud li{ display:inline; list-style:none; margin:0 5px;}
.tagCloud li a{ white-space:nowrap;}
.tagCloud li.rank1 a{ font-weight:bold; font-size:2em; background:#12d763; color:#fff;}
.tagCloud li.rank2 a{ font-weight:bold; font-size:1.75em; color:#666;}
.tagCloud li.rank3 a{ font-weight:bold; font-size:1.5em; color:#00b4b5;}
.tagCloud li.rank4 a{ font-size:1.25em; color:#666;}
.tagCloud li.rank5 a{ font-size:1em; color:#666;}

View file

@ -1,4 +1,4 @@
<!--// header.html include -->
<!--// _header.html include -->
<!--#include("_header.html")-->
<!--// 검색을 위한 xml filter import-->

View file

@ -1,39 +1,37 @@
<!--// header.html include -->
<!--// _header.html include -->
<!--#include("_header.html")-->
<!-- print tags -->
<div class="tagsBox">
<h4><img src="./images/common/iconTag.gif" alt="{$lang->tag}" width="17" height="10" class="tagIcon" /> {$lang->tag} ({count($tag_list)})</h4>
<div class="tags">
<div class="tagCloud">
<h4 class="tagHeader">{$lang->tag} (<strong>{count($tag_list)}</strong>)</h4>
<ul class="tags">
<!--@foreach($tag_list as $val)-->
<!--@if($val->count>5)-->
{@ $tag_class = "tagTypeA" }
{@ $tag_class = "rank1" }
<!--@elseif($val->count>3)-->
{@ $tag_class = "tagTypeB" }
{@ $tag_class = "rank2" }
<!--@elseif($val->count>2)-->
{@ $tag_class = "tagTypeC" }
{@ $tag_class = "rank3" }
<!--@elseif($val->count>1)-->
{@ $tag_class = "tagTypeD" }
{@ $tag_class = "rank4" }
<!--@else-->
{@ $tag_class = "tagTypeE" }
{@ $tag_class = "rank5" }
<!--@end-->
<div <!--@if($tag_class)-->class="{$tag_class}"<!--@end--> >
<li <!--@if($tag_class)-->class="{$tag_class}"<!--@end--> >
<!--@if($layout_info->mid)-->
<a href="{getUrl('','mid',$layout_info->mid,'search_target','tag','search_keyword',$val->tag)}">{htmlspecialchars($val->tag)}</a>
<!--@else-->
<a href="{getUrl('','mid',$mid,'search_target','tag','search_keyword',$val->tag)}">{htmlspecialchars($val->tag)}</a>
<!--@end-->
</div>
</li>
<!--@end-->
<div class="clear"></div>
</div>
</ul>
</div>
<div class="clear"></div>
<div class="rightButtonBox gap1">
<div class="boardNavigation">
<a href="{getUrl('act','')}" class="button"><span>{$lang->cmd_back}</span></a>
</div>

View file

@ -1,26 +1,24 @@
<!-- 엮인글 목록 -->
<div class="trackbackBox">
<div class="trackbackUrl"><a name="trackback" href="{$oDocument->getTrackbackUrl()}" onclick="return false;">{$lang->trackback_url} : {$oDocument->getTrackbackUrl()}</a><div class="clear"></div></div>
<!--@if($oDocument->getTrackbackCount())-->
<!--@foreach($oDocument->getTrackbacks() as $key => $val)-->
<div class="trackbackItem">
<a name="trackback_{$val->trackback_srl}"></a>
<address>
<a href="{$val->url}" onclick="winopen(this.href);return false;">{htmlspecialchars($val->title)} - {htmlspecialchars($val->blog_name)}</a>
<a href="{getUrl('act','dispBoardDeleteTrackback','trackback_srl',$val->trackback_srl)}"><img src="./images/common/buttonDeleteX.gif" border="0" alt="delete" width="12" height="13" /></a>
<span class="date">
{zdate($val->regdate, "Y.m.d H:i")}
({$val->ipaddress})
</span>
</address>
<div>
<a href="{$val->url}" onclick="winopen(this.href);return false;">{$val->excerpt}</a>
</div>
</div>
<!--@end-->
<!--@end-->
</div>
<!-- 엮인글 목록 -->
<div class="trackbackBox">
<!--@if($oDocument->getTrackbackCount())-->
<!--@foreach($oDocument->getTrackbacks() as $key => $val)-->
<div class="item">
<a name="trackback_{$val->trackback_srl}"></a>
<address>
<a href="{$val->url}" onclick="winopen(this.href);return false;">{htmlspecialchars($val->title)} - {htmlspecialchars($val->blog_name)}</a>
<a href="{getUrl('act','dispBoardDeleteTrackback','trackback_srl',$val->trackback_srl)}"><img src="./images/common/buttonDeleteX.gif" border="0" alt="delete" width="12" height="13" /></a>
<span class="date">
{zdate($val->regdate, "Y.m.d H:i")}
({$val->ipaddress})
</span>
</address>
<div>
<a href="{$val->url}" onclick="winopen(this.href);return false;">{$val->excerpt}</a>
</div>
</div>
<!--@end-->
<!--@end-->
</div>

View file

@ -1,206 +1,196 @@
<!-- 글 내용 보여주기 -->
<div class="boardRead">
<div class="originalContent">
<div class="readHeader">
<div class="titleAndUser">
<div class="title">
<h4><a href="{$oDocument->getPermanentUrl()}">{$oDocument->getTitle()}</a></h4>
</div>
<!--@if($module_info->display_author!='N')-->
<div class="userInfo">
<!--@if(!$oDocument->getMemberSrl())-->
<div class="author">
<!--@if($oDocument->isExistsHomepage())-->
<a href="{$oDocument->getHomepageUrl()}" onclick="window.open(this.href);return false;">{$oDocument->getNickName()}</a>
<!--@else-->
{$oDocument->getNickName()}
<!--@end-->
</div>
<!--@else-->
<div class="author"><span class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</span></div>
<!--@end-->
</div>
<!--@end-->
<div class="clear"></div>
</div>
<div class="dateAndCount">
<div class="uri" title="{$lang->document_url}"><a href="{$oDocument->getPermanentUrl()}">{$oDocument->getPermanentUrl()}</a></div>
<div class="date" title="{$lang->regdate}">
<strong>{$oDocument->getRegdate('Y.m.d')}</strong> {$oDocument->getRegdate('H:i:s')} <!--@if($grant->is_admin || $module_info->display_ip_address!='N')-->({$oDocument->getIpaddress()})<!--@end-->
</div>
<div class="readedCount" title="{$lang->readed_count}">{$oDocument->get('readed_count')}</div>
<!--@if($oDocument->get('voted_count')!=0 || $oDocument->get('blamed_count')!=0)-->
<div class="votedCount" title="{$lang->voted_count}">
<strong>{$oDocument->get('voted_count')} / {$oDocument->get('blamed_count')}</strong>
</div>
<!--@end-->
<div class="replyAndTrackback">
<!--@if($grant->write_comment && $oDocument->allowComment()) -->
<div class="replyCount"><a href="#comment" title="{$lang->comment}"><strong>{$oDocument->getCommentcount()}</strong></a></div>
<!--@end-->
<!--@if($oDocument->allowTrackback() && $oDocument->getTrackbackCount() )-->
<div class="trackbackCount"><a href="#trackback" title="{$lang->trackback}"><strong>{$oDocument->getTrackbackCount()}</strong></a></div>
<!--@end-->
</div>
<!--@if($module_info->use_category == "Y" && $oDocument->get('category_srl'))-->
<div class="category" title="{$lang->category}"><a href="{getUrl('category',$oDocument->get('category_srl'), 'document_srl', '')}">{$category_list[$oDocument->get('category_srl')]->title}</a></div>
<!--@end-->
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
<div class="clear"></div>
<!--@if($oDocument->isExtraVarsExists() && (!$oDocument->isSecret() || $oDocument->isGranted()) )-->
<table cellspacing="0" summary="" class="extraVarsList">
<col width="150" />
<col />
<!--@foreach($module_info->extra_vars as $key => $val)-->
<!--@if($val->name)-->
<tr>
<th scope="row">{$val->name}</th>
<td>
<!--// 확장변수(extra_var)의 type에 따른 값을 출력하기 위해서 특별히 제작된 파일을 include 한다 -->
<!--#include("./extra_var_value.html")-->
</td>
</tr>
<!--@end-->
<!--@end-->
</table>
<!--@end-->
<div class="readBody">
<div class="contentBody">
<!--@if($oDocument->isSecret() && !$oDocument->isGranted())-->
<!--%import("filter/input_password.xml")-->
<div class="secretContent">
<form action="./" method="get" onsubmit="return procFilter(this, input_password)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$oDocument->document_srl}" />
<div class="title">{$lang->msg_is_secret}</div>
<div class="content"><input type="password" name="password" id="cpw" class="inputTypeText" /><span class="button"><input type="submit" value="{$lang->cmd_input}" accesskey="s" /></span></div>
</form>
</div>
<!--@else-->
{$oDocument->getContent()}
<!--@end-->
<!-- 서명 / 프로필 이미지 출력 -->
<!--@if($oDocument->getProfileImage() || $oDocument->getSignature())-->
<div class="memberSignature">
<!--@if($oDocument->getProfileImage())-->
<div class="profile"><img src="{$oDocument->getProfileImage()}" alt="profile" /></div>
<!--@end-->
<!--@if($oDocument->getSignature())-->
<div class="signature">{$oDocument->getSignature()}</div>
<!--@end-->
<div class="clear"></div>
</div>
<!--@end-->
</div>
</div>
{@ $tag_list = $oDocument->get('tag_list') }
<!--@if(count($tag_list))-->
<div class="tag">
<ul>
<!--@for($i=0;$i<count($tag_list);$i++)-->
{@ $tag = $tag_list[$i]; }
<li><a href="{getUrl('search_target','tag','search_keyword',$tag,'document_srl','')}" rel="tag">{htmlspecialchars($tag)}</a><!--@if($i<count($tag_list)-1)-->,&nbsp;<!--@end--></li>
<!--@end-->
</ul>
</div>
<!--@end-->
<!--@if($oDocument->hasUploadedFiles())-->
<div class="fileAttached">
{@ $uploaded_list = $oDocument->getUploadedFiles() }
<ul>
<!--@foreach($uploaded_list as $key => $file)-->
<li><a href="{getUrl('')}{$file->download_url}">{$file->source_filename} ({FileHandler::filesize($file->file_size)})({number_format($file->download_count)})</a></li>
<!--@end-->
</ul>
<div class="clear"></div>
</div>
<!--@end-->
</div>
<!-- 목록, 수정/삭제 버튼 -->
<div class="contentButton">
<!--@if($module_info->default_style != 'blog')-->
<a href="{getUrl('document_srl','')}" class="button"><span>{$lang->cmd_list}</span></a>
<!--@end-->
<!--@if($oDocument->isEditable())-->
<a href="{getUrl('act','dispBoardWrite','document_srl',$oDocument->document_srl,'comment_srl','')}" class="button"><span>{$lang->cmd_modify}</span></a>
<a href="{getUrl('act','dispBoardDelete','document_srl',$oDocument->document_srl,'comment_srl','')}" class="button"><span>{$lang->cmd_delete}</span></a>
<!--@end-->
</div>
</div>
<!-- 엮인글 -->
<!--@if($oDocument->allowTrackback())-->
<!--#include("./trackback.html")-->
<!--@end-->
<!-- 댓글 -->
<a name="comment"></a>
<!--#include("./comment.html")-->
<!-- 댓글 입력 폼 -->
<!--@if($grant->write_comment && $oDocument->isEnableComment() )-->
<!--%import("filter/insert_comment.xml")-->
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" class="boardEditor" >
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$oDocument->document_srl}" />
<input type="hidden" name="comment_srl" value="" />
<input type="hidden" name="content" value="" />
<div class="boardWrite commentEditor">
<div class="userNameAndPw">
<!--@if(!$is_logged)-->
<label for="userName">{$lang->writer}</label>
<input type="text" name="nick_name" value="" class="userName inputTypeText" id="userName"/>
<label for="userPw">{$lang->password}</label>
<input type="password" name="password" value="" id="userPw" class="userPw inputTypeText" />
<label for="emailAddress">{$lang->email_address}</label>
<input type="text" name="email_address" value="" id="emailAddress" class="emailAddress inputTypeText"/>
<label for="homePage">{$lang->homepage}</label>
<input type="text" name="homepage" value="" id="homePage" class="homePage inputTypeText"/>
<!--@else-->
<input type="checkbox" name="notify_message" value="Y" id="notify_message" />
<label for="notify_message">{$lang->notify}</label>
<!--@end-->
<input type="checkbox" name="is_secret" value="Y" id="is_secret" />
<label for="is_secret">{$lang->secret}</label>
</div>
<div class="editor">{$oDocument->getCommentEditor()}</div>
</div>
<div class="commentButton tRight">
<span class="button"><input type="submit" value="{$lang->cmd_comment_registration}" accesskey="s" /></span>
</div>
</form>
<!--@end-->
<!-- 글 내용 보여주기 -->
<div class="boardRead">
<div class="boardReadHeader">
<h3 class="title"><a href="{$oDocument->getPermanentUrl()}">{$oDocument->getTitle()}</a></h3>
<!--@if($module_info->display_author!='N')-->
<em>
<!--@if(!$oDocument->getMemberSrl())-->
<!--@if($oDocument->isExistsHomepage())-->
<a href="{$oDocument->getHomepageUrl()}" onclick="window.open(this.href);return false;">{$oDocument->getNickName()}</a>
<!--@else-->
{$oDocument->getNickName()}
<!--@end-->
<!--@else-->
<a href="#popup_menu_area" class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</a>
<!--@end-->
</em>
<!--@end-->
</div>
<!--@if($oDocument->isExtraVarsExists() && (!$oDocument->isSecret() || $oDocument->isGranted()) )-->
<table cellspacing="0" summary="" class="extraVarsList">
<col width="150" />
<col />
<!--@foreach($module_info->extra_vars as $key => $val)-->
<!--@if($val->name)-->
<tr>
<th scope="row">{$val->name}</th>
<td>
<!--// 확장변수(extra_var)의 type에 따른 값을 출력하기 위해서 특별히 제작된 파일을 include 한다 -->
<!--#include("./extra_var_value.html")-->
</td>
</tr>
<!--@end-->
<!--@end-->
</table>
<!--@end-->
<div class="boardReadBody">
<!--@if($oDocument->isSecret() && !$oDocument->isGranted())-->
<!--%import("filter/input_password.xml")-->
<div class="secretContent">
<form action="./" method="get" onsubmit="return procFilter(this, input_password)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$oDocument->document_srl}" />
<div class="title">{$lang->msg_is_secret}</div>
<div class="content"><input type="password" name="password" id="cpw" class="inputTypeText" /><span class="button"><input type="submit" value="{$lang->cmd_input}" accesskey="s" /></span></div>
</form>
</div>
<!--@else-->
{$oDocument->getContent()}
<!--@end-->
<!-- 서명 / 프로필 이미지 출력 -->
<!--@if($oDocument->getProfileImage() || $oDocument->getSignature())-->
<div class="memberSignature">
<!--@if($oDocument->getProfileImage())-->
<div class="profile"><img src="{$oDocument->getProfileImage()}" alt="profile" /></div>
<!--@end-->
<!--@if($oDocument->getSignature())-->
<div class="signature">{$oDocument->getSignature()}</div>
<!--@end-->
</div>
<!--@end-->
</div>
<div class="boardReadFooter">
<div class="footerLeft">
<!--@if($module_info->use_category == "Y" && $oDocument->get('category_srl'))-->
<dl>
<dt>Category :</dt>
<dd title="{$lang->category}"><a href="{getUrl('category',$oDocument->get('category_srl'), 'document_srl', '')}">{$category_list[$oDocument->get('category_srl')]->title}</a></dd>
</dl>
<!--@end-->
{@ $tag_list = $oDocument->get('tag_list') }
<!--@if(count($tag_list))-->
<dl class="tag">
<dt>Tag :</dt>
<!--@for($i=0;$i<count($tag_list);$i++)-->
{@ $tag = $tag_list[$i]; }
<dd><a href="{getUrl('search_target','tag','search_keyword',$tag,'document_srl','')}" rel="tag">{htmlspecialchars($tag)}</a></dd>
<!--@end-->
</dl>
<!--@end-->
<!--@if($oDocument->hasUploadedFiles())-->
<dl class="attachedFile">
<dt>Attached File :</dt>
{@ $uploaded_list = $oDocument->getUploadedFiles() }
<!--@foreach($uploaded_list as $key => $file)-->
<dd><a href="{getUrl('')}{$file->download_url}">{$file->source_filename} <span class="bubble">[File Size:{FileHandler::filesize($file->file_size)}/Download:{number_format($file->download_count)}]</span></a></dd>
<!--@end-->
</dl>
<!--@end-->
</div>
<div class="footerRight">
<dl>
<dt>Read :</dt>
<dd title="{$lang->readed_count}">{$oDocument->get('readed_count')}</dd>
<!--@if($oDocument->get('voted_count')!=0 || $oDocument->get('blamed_count')!=0)-->
<dt>Vote :</dt>
<dd title="{$lang->voted_count}">{$oDocument->get('voted_count')} / {$oDocument->get('blamed_count')}</dd>
<!--@end-->
<dt>Time :</dt>
<dd title="{$lang->regdate}">{$oDocument->getRegdate('Y.m.d')}</dd>
<dd>{$oDocument->getRegdate('H:i:s')} <!--@if($grant->is_admin || $module_info->display_ip_address!='N')-->({$oDocument->getIpaddress()})<!--@end--></dd>
</dl>
<dl>
<dt>Tracback :</dt>
<dd><a name="trackback" href="{$oDocument->getTrackbackUrl()}" onclick="return false;">{$oDocument->getTrackbackUrl()}</a></dd>
</dl>
<dl>
<dt>Permalink :</dt>
<dd title="{$lang->document_url}"><a href="{$oDocument->getPermanentUrl()}">{$oDocument->getPermanentUrl()}</a></dd>
</dl>
</div>
</div>
<!-- 목록, 수정/삭제 버튼 -->
<div class="boardNavigation">
<!--@if($module_info->default_style != 'blog')-->
<a href="{getUrl('document_srl','')}" class="button"><span>{$lang->cmd_list}</span></a>
<!--@end-->
<!--@if($oDocument->isEditable())-->
<a href="{getUrl('act','dispBoardWrite','document_srl',$oDocument->document_srl,'comment_srl','')}" class="button"><span>{$lang->cmd_modify}</span></a>
<a href="{getUrl('act','dispBoardDelete','document_srl',$oDocument->document_srl,'comment_srl','')}" class="button"><span>{$lang->cmd_delete}</span></a>
<!--@end-->
</div>
</div>
<!-- 엮인글 -->
<!--@if($oDocument->allowTrackback())-->
<!--#include("./trackback.html")-->
<!--@end-->
<!-- 댓글 -->
<a name="comment"></a>
<!--#include("./comment.html")-->
<!-- 댓글 입력 폼 -->
<!--@if($grant->write_comment && $oDocument->isEnableComment() )-->
<!--%import("filter/insert_comment.xml")-->
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" class="boardEditor" >
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$oDocument->document_srl}" />
<input type="hidden" name="comment_srl" value="" />
<input type="hidden" name="content" value="" />
<div class="boardWrite commentEditor">
<div class="userNameAndPw">
<!--@if(!$is_logged)-->
<label for="userName">{$lang->writer}</label>
<input type="text" name="nick_name" value="" class="userName inputTypeText" id="userName"/>
<label for="userPw">{$lang->password}</label>
<input type="password" name="password" value="" id="userPw" class="userPw inputTypeText" />
<label for="emailAddress">{$lang->email_address}</label>
<input type="text" name="email_address" value="" id="emailAddress" class="emailAddress inputTypeText"/>
<label for="homePage">{$lang->homepage}</label>
<input type="text" name="homepage" value="" id="homePage" class="homePage inputTypeText"/>
<!--@else-->
<input type="checkbox" name="notify_message" value="Y" id="notify_message" />
<label for="notify_message">{$lang->notify}</label>
<!--@end-->
<input type="checkbox" name="is_secret" value="Y" id="is_secret" />
<label for="is_secret">{$lang->secret}</label>
</div>
<div class="editor">{$oDocument->getCommentEditor()}</div>
</div>
<div class="commentButton tRight">
<span class="button"><input type="submit" value="{$lang->cmd_comment_registration}" accesskey="s" /></span>
</div>
</form>
<!--@end-->

View file

@ -1,317 +1,317 @@
<?php
/**
* @class commentItem
* @author zero (zero@nzeo.com)
* @brief comment 객체
**/
class commentItem extends Object {
var $comment_srl = 0;
function commentItem($comment_srl = 0) {
$this->comment_srl = $comment_srl;
$this->_loadFromDB();
}
function setComment($comment_srl) {
$this->comment_srl = $comment_srl;
$this->_loadFromDB();
}
function _loadFromDB() {
if(!$this->comment_srl) return;
$args->comment_srl = $this->comment_srl;
$output = executeQuery('comment.getComment', $args);
$this->setAttribute($output->data);
}
function setAttribute($attribute) {
if(!$attribute->comment_srl) {
$this->comment_srl = null;
return;
}
$this->comment_srl = $attribute->comment_srl;
$this->adds($attribute);
// 기존 스킨의 호환을 위해 변수를 객체 자신에 재선언
if(count($attribute)) foreach($attribute as $key => $val) $this->{$key} = $val;
}
function isExists() {
return $this->comment_srl ? true : false;
}
function isGranted() {
if($_SESSION['own_comment'][$this->comment_srl]) return true;
if(!Context::get('is_logged')) return false;
$logged_info = Context::get('logged_info');
if($logged_info->is_admin == 'Y') return true;
if($this->get('member_srl') && $this->get('member_srl') == $logged_info->member_srl) return true;
return false;
}
function setGrant() {
$_SESSION['own_comment'][$this->comment_srl] = true;
$this->is_granted = true;
}
function setAccessible() {
$_SESSION['accessibled_comment'][$this->comment_srl] = true;
}
function isEditable() {
if($this->isGranted() || !$this->get('member_srl')) return true;
return false;
}
function isSecret() {
return $this->get('is_secret') == 'Y' ? true : false;
}
function isAccessible() {
if($_SESSION['accessibled_comment'][$this->comment_srl]) return true;
if($this->isGranted() || !$this->isSecret()) {
$this->setAccessible();
return true;
}
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($this->get('document_srl'));
if($oDocument->isGranted()) {
$this->setAccessible();
return true;
}
return false;
}
function useNotify() {
return $this->get('notify_message')=='Y' ? true : false;
}
function notify($type, $content) {
// useNotify가 아니면 return
if(!$this->useNotify()) return;
// 글쓴이가 로그인 유저가 아니면 패스~
if(!$this->get('member_srl')) return;
// 현재 로그인한 사용자와 글을 쓴 사용자를 비교하여 동일하면 return
$logged_info = Context::get('logged_info');
if($logged_info->member_srl == $this->get('member_srl')) return;
// 원본글의 주소를 구함
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($this->get('document_srl'));
// 변수 정리
if($type) $title = "[".$type."] ";
$title .= cut_str(strip_tags($content), 10, '...');
$content = sprintf('%s<br /><br />from : <a href="%s#comment_%s" onclick="window.open(this.href);return false;">%s</a>',$content, $oDocument->getPermanentUrl(), $this->get('comment_srl'), $oDocument->getPermanentUrl());
$receiver_srl = $this->get('member_srl');
$sender_member_srl = $logged_info->member_srl;
// 쪽지 발송
$oCommunicationController = &getController('communication');
$oCommunicationController->sendMessage($sender_member_srl, $receiver_srl, $title, $content, false);
}
function getIpaddress() {
if($this->isGranted()) return $this->get('ipaddress');
return preg_replace('/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/','*.$2.$3.$4', $this->get('ipaddress'));
}
function isExistsHomepage() {
if(trim($this->get('homepage'))) return true;
return false;
}
function getHomepageUrl() {
$url = trim($this->get('homepage'));
if(!$url) return;
if(!preg_match("/^http:\/\//i",$url)) $url = "http://".$url;
return $url;
}
function getMemberSrl() {
return $this->get('member_srl');
}
function getUserID() {
return htmlspecialchars($this->get('user_id'));
}
function getUserName() {
return htmlspecialchars($this->get('user_name'));
}
function getNickName() {
return htmlspecialchars($this->get('nick_name'));
}
function getContentText($strlen = 0) {
if($this->isSecret() && !$this->isAccessible()) return Context::getLang('msg_is_secret');
$content = $this->get('content');
if($strlen) return cut_str(strip_tags($content),$strlen,'...');
return htmlspecialchars($content);
}
function getContent($add_popup_menu = true, $add_content_info = true) {
if($this->isSecret() && !$this->isAccessible()) return Context::getLang('msg_is_secret');
$content = $this->get('content');
// url에 대해서 정규표현식으로 치환
//$content = preg_replace('!([^>^"^\'^=])(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1<a href="$2://$3" onclick="window.open(this.href);return false;">$2://$3</a>',' '.$content);
// 이 댓글을... 팝업메뉴를 출력할 경우
if($add_popup_menu && Context::get('is_logged') ) {
$content = sprintf(
'%s<div class="comment_popup_menu"><span class="comment_%d">%s</span></div>',
$content,
$this->comment_srl, Context::getLang('cmd_comment_do')
);
}
// 컨텐츠에 대한 조작이 가능한 추가 정보를 설정하였을 경우
if($add_content_info) {
$content = sprintf(
'<!--BeforeComment(%d,%d)--><div class="comment_%d_%d xe_content">%s</div><!--AfterComment(%d,%d)-->',
$this->comment_srl, $this->get('member_srl'),
$this->comment_srl, $this->get('member_srl'),
$content,
$this->comment_srl, $this->get('member_srl')
);
// 컨텐츠에 대한 조작이 필요하지 않더라도 xe_content라는 클래스명을 꼭 부여
} else {
$content = sprintf('<div class="xe_content">%s</div>', $content);
}
return $content;
}
function getSummary($str_size = 50) {
// 먼저 태그들을 제거함
$content = preg_replace('!<([^>]*?)>!is','', $this->getContent(false,false));
// < , > , " 를 치환
$content = str_replace(array('&lt;','&gt;','&quot;','&nbsp;'), array('<','>','"',' '), $content);
// 문자열을 자름
$content = trim(cut_str($content, $str_size, '...'));
// >, <, "를 다시 복구
return str_replace(array('<','>','"'),array('&lt;','&gt;','&quot;'), $content);
}
function getRegdate($format = 'Y.m.d H:i:s') {
return zdate($this->get('regdate'), $format);
}
function getRegdateTime() {
$regdate = $this->get('regdate');
$year = substr($regdate,0,4);
$month = substr($regdate,4,2);
$day = substr($regdate,6,2);
$hour = substr($regdate,8,2);
$min = substr($regdate,10,2);
$sec = substr($regdate,12,2);
return mktime($hour,$min,$sec,$month,$day,$year);
}
function getRegdateGM() {
return $this->getRegdate('D, d M Y H:i:s').' '.$GLOBALS['_time_zone'];
}
function getUpdate($format = 'Y.m.d H:i:s') {
return zdate($this->get('last_update'), $format);
}
function getUpdateTime() {
$year = substr($this->get('last_update'),0,4);
$month = substr($this->get('last_update'),4,2);
$day = substr($this->get('last_update'),6,2);
$hour = substr($this->get('last_update'),8,2);
$min = substr($this->get('last_update'),10,2);
$sec = substr($this->get('last_update'),12,2);
return mktime($hour,$min,$sec,$month,$day,$year);
}
function getUpdateGM() {
return gmdate("D, d M Y H:i:s", $this->getUpdateTime());
}
function hasUploadedFiles() {
if($this->isSecret() && !$this->isGranted()) return false;
return $this->get('uploaded_count')? true : false;
}
function getUploadedFiles() {
if($this->isSecret() && !$this->isGranted()) return;
if(!$this->get('uploaded_count')) return;
$oFileModel = &getModel('file');
$file_list = $oFileModel->getFiles($this->comment_srl, $is_admin);
return $file_list;
}
/**
* @brief 에디터 html을 구해서 return
**/
function getEditor() {
$module_srl = $this->get('module_srl');
if(!$module_srl) $module_srl = Context::get('module_srl');
$oEditorModel = &getModel('editor');
return $oEditorModel->getModuleEditor('comment', $module_srl, $this->comment_srl, 'comment_srl', 'content');
}
/**
* @brief 작성자의 프로필 이미지를 return
**/
function getProfileImage() {
if(!$this->isExists() || !$this->get('member_srl')) return;
$oMemberModel = &getModel('member');
$profile_info = $oMemberModel->getProfileImage($this->get('member_srl'));
if(!$profile_info) return;
return $profile_info->src;
}
/**
* @brief 작성자의 서명을 return
**/
function getSignature() {
// 존재하지 않는 글이면 패스~
if(!$this->isExists() || !$this->get('member_srl')) return;
// 서명정보를 구함
$oMemberModel = &getModel('member');
$signature = $oMemberModel->getSignature($this->get('member_srl'));
// 회원모듈에서 서명 최고 높이 지정되었는지 검사
if(!isset($GLOBALS['__member_signature_max_height'])) {
$oModuleModel = &getModel('module');
$member_config = $oModuleModel->getModuleConfig('member');
$GLOBALS['__member_signature_max_height'] = $member_config->signature_max_height;
}
$max_signature_height = $GLOBALS['__member_signature_max_height'];
if($max_signature_height) $signature = sprintf('<div style="max-height:%dpx;overflow:auto;overflow-x:hidden;height:expression(this.scrollHeight > %d ? \'%dpx\': \'auto\')">%s</div>', $max_signature_height, $max_signature_height, $max_signature_height, $signature);
return $signature;
}
}
?>
<?php
/**
* @class commentItem
* @author zero (zero@nzeo.com)
* @brief comment 객체
**/
class commentItem extends Object {
var $comment_srl = 0;
function commentItem($comment_srl = 0) {
$this->comment_srl = $comment_srl;
$this->_loadFromDB();
}
function setComment($comment_srl) {
$this->comment_srl = $comment_srl;
$this->_loadFromDB();
}
function _loadFromDB() {
if(!$this->comment_srl) return;
$args->comment_srl = $this->comment_srl;
$output = executeQuery('comment.getComment', $args);
$this->setAttribute($output->data);
}
function setAttribute($attribute) {
if(!$attribute->comment_srl) {
$this->comment_srl = null;
return;
}
$this->comment_srl = $attribute->comment_srl;
$this->adds($attribute);
// 기존 스킨의 호환을 위해 변수를 객체 자신에 재선언
if(count($attribute)) foreach($attribute as $key => $val) $this->{$key} = $val;
}
function isExists() {
return $this->comment_srl ? true : false;
}
function isGranted() {
if($_SESSION['own_comment'][$this->comment_srl]) return true;
if(!Context::get('is_logged')) return false;
$logged_info = Context::get('logged_info');
if($logged_info->is_admin == 'Y') return true;
if($this->get('member_srl') && $this->get('member_srl') == $logged_info->member_srl) return true;
return false;
}
function setGrant() {
$_SESSION['own_comment'][$this->comment_srl] = true;
$this->is_granted = true;
}
function setAccessible() {
$_SESSION['accessibled_comment'][$this->comment_srl] = true;
}
function isEditable() {
if($this->isGranted() || !$this->get('member_srl')) return true;
return false;
}
function isSecret() {
return $this->get('is_secret') == 'Y' ? true : false;
}
function isAccessible() {
if($_SESSION['accessibled_comment'][$this->comment_srl]) return true;
if($this->isGranted() || !$this->isSecret()) {
$this->setAccessible();
return true;
}
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($this->get('document_srl'));
if($oDocument->isGranted()) {
$this->setAccessible();
return true;
}
return false;
}
function useNotify() {
return $this->get('notify_message')=='Y' ? true : false;
}
function notify($type, $content) {
// useNotify가 아니면 return
if(!$this->useNotify()) return;
// 글쓴이가 로그인 유저가 아니면 패스~
if(!$this->get('member_srl')) return;
// 현재 로그인한 사용자와 글을 쓴 사용자를 비교하여 동일하면 return
$logged_info = Context::get('logged_info');
if($logged_info->member_srl == $this->get('member_srl')) return;
// 원본글의 주소를 구함
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($this->get('document_srl'));
// 변수 정리
if($type) $title = "[".$type."] ";
$title .= cut_str(strip_tags($content), 10, '...');
$content = sprintf('%s<br /><br />from : <a href="%s#comment_%s" onclick="window.open(this.href);return false;">%s</a>',$content, $oDocument->getPermanentUrl(), $this->get('comment_srl'), $oDocument->getPermanentUrl());
$receiver_srl = $this->get('member_srl');
$sender_member_srl = $logged_info->member_srl;
// 쪽지 발송
$oCommunicationController = &getController('communication');
$oCommunicationController->sendMessage($sender_member_srl, $receiver_srl, $title, $content, false);
}
function getIpaddress() {
if($this->isGranted()) return $this->get('ipaddress');
return preg_replace('/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/','*.$2.$3.$4', $this->get('ipaddress'));
}
function isExistsHomepage() {
if(trim($this->get('homepage'))) return true;
return false;
}
function getHomepageUrl() {
$url = trim($this->get('homepage'));
if(!$url) return;
if(!preg_match("/^http:\/\//i",$url)) $url = "http://".$url;
return $url;
}
function getMemberSrl() {
return $this->get('member_srl');
}
function getUserID() {
return htmlspecialchars($this->get('user_id'));
}
function getUserName() {
return htmlspecialchars($this->get('user_name'));
}
function getNickName() {
return htmlspecialchars($this->get('nick_name'));
}
function getContentText($strlen = 0) {
if($this->isSecret() && !$this->isAccessible()) return Context::getLang('msg_is_secret');
$content = $this->get('content');
if($strlen) return cut_str(strip_tags($content),$strlen,'...');
return htmlspecialchars($content);
}
function getContent($add_popup_menu = true, $add_content_info = true) {
if($this->isSecret() && !$this->isAccessible()) return Context::getLang('msg_is_secret');
$content = $this->get('content');
// url에 대해서 정규표현식으로 치환
//$content = preg_replace('!([^>^"^\'^=])(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1<a href="$2://$3" onclick="window.open(this.href);return false;">$2://$3</a>',' '.$content);
// 이 댓글을... 팝업메뉴를 출력할 경우
if($add_popup_menu && Context::get('is_logged') ) {
$content = sprintf(
'%s<div class="comment_popup_menu"><a href="#popup_menu_area" class="comment_%d">%s</a></div>',
$content,
$this->comment_srl, Context::getLang('cmd_comment_do')
);
}
// 컨텐츠에 대한 조작이 가능한 추가 정보를 설정하였을 경우
if($add_content_info) {
$content = sprintf(
'<!--BeforeComment(%d,%d)--><div class="comment_%d_%d xe_content">%s</div><!--AfterComment(%d,%d)-->',
$this->comment_srl, $this->get('member_srl'),
$this->comment_srl, $this->get('member_srl'),
$content,
$this->comment_srl, $this->get('member_srl')
);
// 컨텐츠에 대한 조작이 필요하지 않더라도 xe_content라는 클래스명을 꼭 부여
} else {
$content = sprintf('<div class="xe_content">%s</div>', $content);
}
return $content;
}
function getSummary($str_size = 50) {
// 먼저 태그들을 제거함
$content = preg_replace('!<([^>]*?)>!is','', $this->getContent(false,false));
// < , > , " 를 치환
$content = str_replace(array('&lt;','&gt;','&quot;','&nbsp;'), array('<','>','"',' '), $content);
// 문자열을 자름
$content = trim(cut_str($content, $str_size, '...'));
// >, <, "를 다시 복구
return str_replace(array('<','>','"'),array('&lt;','&gt;','&quot;'), $content);
}
function getRegdate($format = 'Y.m.d H:i:s') {
return zdate($this->get('regdate'), $format);
}
function getRegdateTime() {
$regdate = $this->get('regdate');
$year = substr($regdate,0,4);
$month = substr($regdate,4,2);
$day = substr($regdate,6,2);
$hour = substr($regdate,8,2);
$min = substr($regdate,10,2);
$sec = substr($regdate,12,2);
return mktime($hour,$min,$sec,$month,$day,$year);
}
function getRegdateGM() {
return $this->getRegdate('D, d M Y H:i:s').' '.$GLOBALS['_time_zone'];
}
function getUpdate($format = 'Y.m.d H:i:s') {
return zdate($this->get('last_update'), $format);
}
function getUpdateTime() {
$year = substr($this->get('last_update'),0,4);
$month = substr($this->get('last_update'),4,2);
$day = substr($this->get('last_update'),6,2);
$hour = substr($this->get('last_update'),8,2);
$min = substr($this->get('last_update'),10,2);
$sec = substr($this->get('last_update'),12,2);
return mktime($hour,$min,$sec,$month,$day,$year);
}
function getUpdateGM() {
return gmdate("D, d M Y H:i:s", $this->getUpdateTime());
}
function hasUploadedFiles() {
if($this->isSecret() && !$this->isGranted()) return false;
return $this->get('uploaded_count')? true : false;
}
function getUploadedFiles() {
if($this->isSecret() && !$this->isGranted()) return;
if(!$this->get('uploaded_count')) return;
$oFileModel = &getModel('file');
$file_list = $oFileModel->getFiles($this->comment_srl, $is_admin);
return $file_list;
}
/**
* @brief 에디터 html을 구해서 return
**/
function getEditor() {
$module_srl = $this->get('module_srl');
if(!$module_srl) $module_srl = Context::get('module_srl');
$oEditorModel = &getModel('editor');
return $oEditorModel->getModuleEditor('comment', $module_srl, $this->comment_srl, 'comment_srl', 'content');
}
/**
* @brief 작성자의 프로필 이미지를 return
**/
function getProfileImage() {
if(!$this->isExists() || !$this->get('member_srl')) return;
$oMemberModel = &getModel('member');
$profile_info = $oMemberModel->getProfileImage($this->get('member_srl'));
if(!$profile_info) return;
return $profile_info->src;
}
/**
* @brief 작성자의 서명을 return
**/
function getSignature() {
// 존재하지 않는 글이면 패스~
if(!$this->isExists() || !$this->get('member_srl')) return;
// 서명정보를 구함
$oMemberModel = &getModel('member');
$signature = $oMemberModel->getSignature($this->get('member_srl'));
// 회원모듈에서 서명 최고 높이 지정되었는지 검사
if(!isset($GLOBALS['__member_signature_max_height'])) {
$oModuleModel = &getModel('module');
$member_config = $oModuleModel->getModuleConfig('member');
$GLOBALS['__member_signature_max_height'] = $member_config->signature_max_height;
}
$max_signature_height = $GLOBALS['__member_signature_max_height'];
if($max_signature_height) $signature = sprintf('<div style="max-height:%dpx;overflow:auto;overflow-x:hidden;height:expression(this.scrollHeight > %d ? \'%dpx\': \'auto\')">%s</div>', $max_signature_height, $max_signature_height, $max_signature_height, $signature);
return $signature;
}
}
?>

File diff suppressed because it is too large Load diff