read page
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4730 201d5d3c-b55e-5fd7-737f-ddc643e51545
|
|
@ -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 *,
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 2 KiB |
|
|
@ -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-->
|
||||
|
|
|
|||
|
|
@ -31,12 +31,12 @@
|
|||
<option value="{$val->category_srl}" <!--@if($category==$val->category_srl)-->selected="selected"<!--@end-->>{str_repeat(" ",$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-->
|
||||
|
|
|
|||
|
|
@ -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)-->
|
||||
|
|
|
|||
|
|
@ -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;}
|
||||
|
|
|
|||
|
|
@ -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;}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<!--// header.html include -->
|
||||
<!--// _header.html include -->
|
||||
<!--#include("_header.html")-->
|
||||
|
||||
<!--// 검색을 위한 xml filter import-->
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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)-->, <!--@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-->
|
||||
|
|
|
|||
|
|
@ -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('<','>','"',' '), array('<','>','"',' '), $content);
|
||||
|
||||
// 문자열을 자름
|
||||
$content = trim(cut_str($content, $str_size, '...'));
|
||||
|
||||
// >, <, "를 다시 복구
|
||||
return str_replace(array('<','>','"'),array('<','>','"'), $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('<','>','"',' '), array('<','>','"',' '), $content);
|
||||
|
||||
// 문자열을 자름
|
||||
$content = trim(cut_str($content, $str_size, '...'));
|
||||
|
||||
// >, <, "를 다시 복구
|
||||
return str_replace(array('<','>','"'),array('<','>','"'), $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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||