issue 70 document, comment, trackback module UI change.

But not finished yet


git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@8639 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ovclas 2011-07-26 05:39:03 +00:00
parent 5385ebb524
commit 9acd474c52
37 changed files with 1125 additions and 830 deletions

View file

@ -3,8 +3,8 @@
<div class="header"> <div class="header">
<h1><a href="{getUrl('','module','admin')}"><img src="img/xe.h1.png" width="33" height="32" alt="XE" /> Super Admin</a></h1> <h1><a href="{getUrl('','module','admin')}"><img src="img/xe.h1.png" width="33" height="32" alt="XE" /> Super Admin</a></h1>
<div class="siteTool"> <div class="siteTool">
<a href="#moveSiteList" class="layerAnchor">Move to Site</a> <a href="#moveSiteList" class="i tgAnchor" data-effect="slide" data-duration="100">Move to Site</a>
<div class="layer portlet" id="moveSiteList"> <div class="layer portlet tgContent" id="moveSiteList">
<h2 class="h2">Move to Site</h2> <h2 class="h2">Move to Site</h2>
<ul class="lined"> <ul class="lined">
<li>XpressEngine - <a href="#">http://xe.xpressengine.net/</a></li> <li>XpressEngine - <a href="#">http://xe.xpressengine.net/</a></li>
@ -18,7 +18,7 @@
<ul> <ul>
<li><a href="#">정찬명</a></li> <li><a href="#">정찬명</a></li>
<li><a href="{getUrl('module','admin','act','procAdminLogout')}">Log-out</a></li> <li><a href="{getUrl('module','admin','act','procAdminLogout')}">Log-out</a></li>
<li><a href="#language" class="tgSlide">Language</a> <li><a href="#language" class="tgAnchor" data-effect="slide" data-duration="100">Language</a>
<ul class="tgContent" id="language"> <ul class="tgContent" id="language">
<!--@foreach($lang_supported as $key => $val)--> <!--@foreach($lang_supported as $key => $val)-->
<li><a href="#" onclick="doChangeLangType('{$key}'); return false;">{$val}</a></li> <li><a href="#" onclick="doChangeLangType('{$key}'); return false;">{$val}</a></li>

File diff suppressed because it is too large Load diff

View file

@ -102,6 +102,20 @@
} }
} }
function procCommentAdminAddCart()
{
$comment_srl = Context::get('comment_srl');
$commentSrlList = explode(',', $comment_srl);
if(is_array($commentSrlList))
{
foreach($commentSrlList AS $key=>$value)
{
$_SESSION['comment_management'][$value] = true;
}
}
}
/** /**
* @brief delete all comments of the specific module * @brief delete all comments of the specific module
**/ **/

View file

@ -28,14 +28,21 @@
// get a list by using comment->getCommentList. // get a list by using comment->getCommentList.
$oCommentModel = &getModel('comment'); $oCommentModel = &getModel('comment');
$columnList = array('comment_srl', 'document_srl', 'content', 'comments.member_srl', 'comments.nick_name', 'comments.regdate', 'ipaddress'); $secretNameList = $oCommentModel->getSecretNameList();
$columnList = array('comment_srl', 'document_srl', 'is_secret', 'content', 'comments.member_srl', 'comments.nick_name', 'comments.regdate', 'ipaddress');
$output = $oCommentModel->getTotalCommentList($args, $columnList); $output = $oCommentModel->getTotalCommentList($args, $columnList);
// get total comment count group by is_secret status
$countOutput = $oCommentModel->getTotalCommentCount($args);
// set values in the return object of comment_model:: getTotalCommentList() in order to use a template. // set values in the return object of comment_model:: getTotalCommentList() in order to use a template.
Context::set('total_count', $output->total_count); Context::set('total_count', $output->total_count);
Context::set('total_page', $output->total_page); Context::set('total_page', $output->total_page);
Context::set('page', $output->page); Context::set('page', $output->page);
Context::set('comment_list', $output->data); Context::set('comment_list', $output->data);
Context::set('page_navigation', $output->page_navigation); Context::set('page_navigation', $output->page_navigation);
Context::set('secret_name_list', $secretNameList);
Context::set('countOutput', $countOutput);
// set the template // set the template
$this->setTemplatePath($this->module_path.'tpl'); $this->setTemplatePath($this->module_path.'tpl');
$this->setTemplateFile('comment_list'); $this->setTemplateFile('comment_list');

View file

@ -628,5 +628,27 @@
$oModuleController->insertModulePartConfig('comment',$srl,$comment_config); $oModuleController->insertModulePartConfig('comment',$srl,$comment_config);
return new Object(); return new Object();
} }
/**
* @brief get comment all list
**/
function procCommentGetList()
{
if(!Context::get('is_logged')) return new Object(-1,'msg_not_permitted');
// Taken from a list of selected sessions
$flagList = $_SESSION['comment_management'];
if(count($flagList)) {
foreach($flagList as $key => $val) {
if(!is_bool($val)) continue;
$commentSrlList[] = $key;
}
}
if(count($commentSrlList)) {
$oCommentModel = &getModel('comment');
$commentList = $oCommentModel->getComments($commentSrlList);
}
$this->add('comment_list', $commentList);
}
} }
?> ?>

View file

@ -396,5 +396,8 @@
return; return;
} }
function isCarted() {
return $_SESSION['comment_management'][$this->comment_srl];
}
} }
?> ?>

View file

@ -372,6 +372,9 @@
case 'ipaddress' : case 'ipaddress' :
$args->s_ipaddress= $search_keyword; $args->s_ipaddress= $search_keyword;
break; break;
case 'is_secret' :
$args->s_is_secret= $search_keyword;
break;
case 'member_srl' : case 'member_srl' :
$args->{"s_".$search_target} = (int)$search_keyword; $args->{"s_".$search_target} = (int)$search_keyword;
break; break;
@ -391,6 +394,68 @@
return $output; return $output;
} }
/**
* @brief get all the comment count in time decending order(for administrators)
**/
function getTotalCommentCount($obj) {
$query_id = 'comment.getTotalCommentCountByGroupStatus';
// Variables
$args->s_module_srl = $obj->module_srl;
$args->exclude_module_srl = $obj->exclude_module_srl;
// Search options
$search_target = $obj->search_target?$obj->search_target:trim(Context::get('search_target'));
$search_keyword = $obj->search_keyword?$obj->search_keyword:trim(Context::get('search_keyword'));
if($search_target && $search_keyword) {
switch($search_target) {
case 'content' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_content = $search_keyword;
break;
case 'user_id' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_user_id = $search_keyword;
$query_id = 'comment.getTotalCommentCountWithinMemberByGroupStatus';
break;
case 'user_name' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_user_name = $search_keyword;
break;
case 'nick_name' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_nick_name = $search_keyword;
break;
case 'email_address' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_email_address = $search_keyword;
break;
case 'homepage' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
$args->s_homepage = $search_keyword;
break;
case 'regdate' :
$args->s_regdate = $search_keyword;
break;
case 'last_update' :
$args->s_last_upate = $search_keyword;
break;
case 'ipaddress' :
$args->s_ipaddress= $search_keyword;
break;
case 'is_secret' :
$args->s_is_secret= $search_keyword;
break;
case 'member_srl' :
$args->{"s_".$search_target} = (int)$search_keyword;
break;
}
}
$output = executeQueryArray($query_id, $args);
// return when no result or error occurance
if(!$output->toBool()||!count($output->data)) return $output;
return $output->data;
}
/** /**
* @brief return a configuration of comments for each module * @brief return a configuration of comments for each module
**/ **/
@ -438,5 +503,13 @@
$this->add('voted_member_list',$output->data); $this->add('voted_member_list',$output->data);
} }
function getSecretNameList()
{
global $lang;
if(!isset($lang->secret_name_list))
return array('Y'=>'Secret', 'N'=>'Public');
else return $lang->secret_name_list;
}
} }
?> ?>

View file

@ -1,7 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<module> <module>
<grants /> <grants />
<permissions /> <permissions>
<permission action="procCommentAdminAddCart" target="manager" />
<permission action="procCommentGetList" target="manager" />
</permissions>
<actions> <actions>
<action name="getCommentMenu" type="model" standalone="true" /> <action name="getCommentMenu" type="model" standalone="true" />
<action name="dispCommentAdminList" type="view" admin_index="true" standalone="true" menu_name="comment" menu_index="true" /> <action name="dispCommentAdminList" type="view" admin_index="true" standalone="true" menu_name="comment" menu_index="true" />
@ -13,6 +16,8 @@
<action name="procCommentInsertModuleConfig" type="controller" standalone="true" ruleset="insertCommentModuleConfig" /> <action name="procCommentInsertModuleConfig" type="controller" standalone="true" ruleset="insertCommentModuleConfig" />
<action name="procCommentAdminDeleteChecked" type="controller" standalone="true" ruleset="deleteChecked" /> <action name="procCommentAdminDeleteChecked" type="controller" standalone="true" ruleset="deleteChecked" />
<action name="procCommentAdminCancelDeclare" type="controller" standalone="true" /> <action name="procCommentAdminCancelDeclare" type="controller" standalone="true" />
<action name="procCommentAdminAddCart" type="controller" standalone="true" />
<action name="procCommentGetList" type="controller" standalone="true" />
</actions> </actions>
<menus> <menus>
<menu name="comment"> <menu name="comment">

View file

@ -27,6 +27,7 @@
'regdate' => 'Date', 'regdate' => 'Date',
'last_update' => 'Last update', 'last_update' => 'Last update',
'ipaddress' => 'IP Address', 'ipaddress' => 'IP Address',
'is_secret' => 'Status',
); );
$lang->no_text_comment = 'No text in this comment.'; $lang->no_text_comment = 'No text in this comment.';

View file

@ -27,6 +27,7 @@
'regdate' => 'Fecha del registro', 'regdate' => 'Fecha del registro',
'last_update' => 'Ultima actualización', 'last_update' => 'Ultima actualización',
'ipaddress' => 'Dirección IP', 'ipaddress' => 'Dirección IP',
'is_secret' => 'Status',
); );
$lang->no_text_comment = 'No text in this comment.'; $lang->no_text_comment = 'No text in this comment.';

View file

@ -28,6 +28,7 @@
'regdate' => 'Jour', 'regdate' => 'Jour',
'last_update' => 'Mise à Jour', 'last_update' => 'Mise à Jour',
'ipaddress' => 'Adresse IP', 'ipaddress' => 'Adresse IP',
'is_secret' => 'Status',
); );
$lang->no_text_comment = 'No text in this comment.'; $lang->no_text_comment = 'No text in this comment.';

View file

@ -28,6 +28,7 @@
'regdate' => '登録日', 'regdate' => '登録日',
'last_update' => '最終更新日 ', 'last_update' => '最終更新日 ',
'ipaddress' => 'IPアドレス', 'ipaddress' => 'IPアドレス',
'is_secret' => 'Status',
); );
$lang->no_text_comment = 'No text in this comment.'; $lang->no_text_comment = 'No text in this comment.';

View file

@ -25,6 +25,8 @@
'regdate' => '등록일', 'regdate' => '등록일',
'last_update' => '최근수정일 ', 'last_update' => '최근수정일 ',
'ipaddress' => 'IP 주소', 'ipaddress' => 'IP 주소',
'is_secret' => '상태',
); );
$lang->no_text_comment = '텍스트가 없는 댓글입니다.'; $lang->no_text_comment = '텍스트가 없는 댓글입니다.';
$lang->secret_name_list = array('Y'=>'비밀', 'N'=>'공개');
?> ?>

View file

@ -28,6 +28,7 @@
'regdate' => 'Дата регистрации', 'regdate' => 'Дата регистрации',
'last_update' => 'Дата последнего обновления', 'last_update' => 'Дата последнего обновления',
'ipaddress' => 'IP-адрес', 'ipaddress' => 'IP-адрес',
'is_secret' => 'Status',
); );
$lang->no_text_comment = 'No text in this comment.'; $lang->no_text_comment = 'No text in this comment.';

View file

@ -27,6 +27,7 @@
'regdate' => 'Tarih', 'regdate' => 'Tarih',
'last_update' => 'Son Güncelleştirme', 'last_update' => 'Son Güncelleştirme',
'ipaddress' => 'IP Adresi', 'ipaddress' => 'IP Adresi',
'is_secret' => 'Status',
); );
$lang->no_text_comment = 'Bu yorumda herhangi bir metin yok.'; $lang->no_text_comment = 'Bu yorumda herhangi bir metin yok.';

View file

@ -29,6 +29,7 @@
'regdate' => 'Ngày', 'regdate' => 'Ngày',
'last_update' => 'Cập nhật lần cuối', 'last_update' => 'Cập nhật lần cuối',
'ipaddress' => 'IP', 'ipaddress' => 'IP',
'is_secret' => 'Status',
); );
$lang->no_text_comment = 'No text in this comment.'; $lang->no_text_comment = 'No text in this comment.';

View file

@ -28,6 +28,7 @@
'regdate' => '日期', 'regdate' => '日期',
'last_update' => '最后更新 ', 'last_update' => '最后更新 ',
'ipaddress' => 'IP 地址', 'ipaddress' => 'IP 地址',
'is_secret' => 'Status',
); );
$lang->no_text_comment = 'No text in this comment.'; $lang->no_text_comment = 'No text in this comment.';

View file

@ -28,6 +28,7 @@
'regdate' => '日期', 'regdate' => '日期',
'last_update' => '最後更新', 'last_update' => '最後更新',
'ipaddress' => 'IP位址', 'ipaddress' => 'IP位址',
'is_secret' => 'Status',
); );
$lang->no_text_comment = 'No text in this comment.'; $lang->no_text_comment = 'No text in this comment.';

View file

@ -0,0 +1,28 @@
<query id="getTotalCommentList" action="select">
<tables>
<table name="comments" alias="comments" />
</tables>
<columns>
<column name="is_secret" />
<column name="count(*)" alias="count" />
</columns>
<conditions>
<condition operation="in" column="module_srl" var="s_module_srl" />
<condition operation="notin" column="module_srl" var="exclude_module_srl" pipe="and" />
<condition operation="equal" column="is_secret" var="s_is_secret" pipe="and" />
<group pipe="and">
<condition operation="like" column="content" var="s_content" pipe="or" />
<condition operation="like" column="user_name" var="s_user_name" pipe="or" />
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="or" />
<condition operation="like_prefix" column="regdate" var="s_regdate" pipe="or" />
<condition operation="like_prefix" column="last_update" var="s_last_upate" pipe="or" />
<condition operation="like_prefix" column="ipaddress" var="s_ipaddress" pipe="or" />
</group>
</conditions>
<groups>
<group column="is_secret" />
</groups>
</query>

View file

@ -0,0 +1,28 @@
<query id="getTotalCommentListWithinMember" action="select">
<tables>
<table name="comments" alias="comments" />
<table name="member" alias="member" />
</tables>
<columns>
<column name="comments.is_secret" />
<column name="count(*)" alias="count" />
</columns>
<conditions>
<condition operation="like" column="member.user_id" var="s_user_id" notnull="notnull" />
<condition operation="equal" column="member.member_srl" var="comments.member_srl" notnull="notnull" pipe="and" />
<condition operation="equal" column="comments.is_secret" var="s_is_secret" pipe="and" />
<group pipe="and">
<condition operation="like" column="comments.content" var="s_content" />
<condition operation="like" column="comments.user_name" var="s_user_name" pipe="or" />
<condition operation="like" column="comments.nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="comments.email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="comments.homepage" var="s_homepage" pipe="or" />
<condition operation="like_prefix" column="comments.regdate" var="s_regdate" pipe="or" />
<condition operation="like_prefix" column="comments.last_update" var="s_last_upate" pipe="or" />
<condition operation="like_prefix" column="comments.ipaddress" var="s_ipaddress" pipe="or" />
</group>
</conditions>
<groups>
<group column="comments.is_secret" />
</groups>
</query>

View file

@ -8,6 +8,7 @@
<conditions> <conditions>
<condition operation="in" column="module_srl" var="s_module_srl" /> <condition operation="in" column="module_srl" var="s_module_srl" />
<condition operation="notin" column="module_srl" var="exclude_module_srl" pipe="and" /> <condition operation="notin" column="module_srl" var="exclude_module_srl" pipe="and" />
<condition operation="equal" column="is_secret" var="s_is_secret" pipe="and" />
<group pipe="and"> <group pipe="and">
<condition operation="like" column="content" var="s_content" pipe="or" /> <condition operation="like" column="content" var="s_content" pipe="or" />
<condition operation="like" column="user_name" var="s_user_name" pipe="or" /> <condition operation="like" column="user_name" var="s_user_name" pipe="or" />

View file

@ -9,6 +9,7 @@
<conditions> <conditions>
<condition operation="like" column="member.user_id" var="s_user_id" notnull="notnull" /> <condition operation="like" column="member.user_id" var="s_user_id" notnull="notnull" />
<condition operation="equal" column="member.member_srl" var="comments.member_srl" notnull="notnull" pipe="and" /> <condition operation="equal" column="member.member_srl" var="comments.member_srl" notnull="notnull" pipe="and" />
<condition operation="equal" column="comments.is_secret" var="s_is_secret" pipe="and" />
<group pipe="and"> <group pipe="and">
<condition operation="like" column="comments.content" var="s_content" /> <condition operation="like" column="comments.content" var="s_content" />
<condition operation="like" column="comments.user_name" var="s_user_name" pipe="or" /> <condition operation="like" column="comments.user_name" var="s_user_name" pipe="or" />

View file

@ -1,81 +1,145 @@
<!--#include("./header.html")--> <!--%import("js/comment_admin.js")-->
<div class="content" id="content">
<!-- 검색 --> <div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<div class="fl"> <p>{$XE_VALIDATOR_MESSAGE}</p>
<form action="./" method="get" class="adminSearch"> </div>
<input type="hidden" name="module" value="{$module}" /> <form ruleset="deleteChecked" id="fo_list" action="./" method="post" class="form">
<input type="hidden" name="act" value="{$act}" /> <input type="hidden" name="act" value="procCommentAdminDeleteChecked" />
<input type="hidden" name="module_srl" value="{$module_srl}" /> <input type="hidden" name="page" value="{$page}" />
<fieldset> <input type="hidden" name="is_trash" value="false" />
<h1 class="h1">Comment</h1>
<div class="table even">
<table width="100%" border="1" cellspacing="0">
<caption>All({number_format($total_count)}) <span class="side">All({number_format($total_count)})
<!--@foreach($countOutput AS $key=>$value)-->
| <a href="{getUrl('search_target','is_secret','search_keyword', $value->is_secret)}">{$secret_name_list[$value->is_secret]}({$value->count})</a>
<!--@end-->
</span></caption>
<thead>
<tr>
<th scope="col" class="text">{$lang->comment}</th>
<th scope="col">{$lang->nick_name}</th>
<th scope="col">{$lang->cmd_vote}(+/-)</th>
<th scope="col">{$lang->date}</th>
<th scope="col">{$lang->ipaddress}</th>
<th scope="col">{$lang->status}</th>
<th scope="col"><input type="checkbox" title="Check All" /></th>
</tr>
</thead>
<tbody>
<!--@foreach($comment_list as $no => $val)-->
{@ $comment = cut_str(trim(htmlspecialchars(strip_tags($val->content))), 200, '...')}
<tr>
<td class="text"><a href="{getUrl('','document_srl',$val->document_srl)}#comment_{$val->comment_srl}" onclick="window.open(this.href);return false;"><!--@if(strlen($comment))-->{$comment}<!--@else--><em style="font-style:italic;">{$lang->no_text_comment}</em><!--@end--></a></td>
<td><span class="member_{$val->member_srl}">{htmlspecialchars($val->nick_name)}</span></td>
<td>0/0</td>
<td>{(zdate($val->regdate,"Y-m-d\nH:i:s"))}</td>
<td><a href="{getUrl('search_target','ipaddress','search_keyword',$val->ipaddress)}">{$val->ipaddress}</a></td>
<td><!--@if($val->isSecret())-->{$secret_name_list['Y']}<!--@else-->{$secret_name_list['N']}<!--@end--></td>
<td><input type="checkbox" name="cart" value="{$val->comment_srl}" onclick="addCart({$val->comment_srl})" <!--@if($val->isCarted())-->checked="checked"<!--@end--> /></td>
</tr>
<!--@end-->
</tbody>
</table>
</div>
<div class="btnArea">
<span class="btn"><a href="#listManager" class="modalAnchor" onclick="getCommentList();">선택한 댓글 관리...</a></span>
</div>
</form>
<div class="modal" id="listManager">
<form action="" class="fg form">
<h2 class="h2">선택한 댓글 관리</h2>
<div class="table even">
<table width="100%" border="1" cellspacing="0">
<caption>
선택한 댓글 <strong>8</strong>
</caption>
<thead>
<tr>
<th scope="col" class="title">Comment</th>
<th scope="col">Author</th>
<th scope="col">Status</th>
<th scope="col"><input type="checkbox" title="Check All" checked="checked" /></th>
</tr>
</thead>
<tbody>
<tr>
<td class="title">The quick brown fox jumps over the lazy dog...</td>
<td>홍길동</td>
<td>Public</td>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td class="title">The quick brown fox jumps over the lazy dog...</td>
<td>홍길동</td>
<td>Trash</td>
<td><input type="checkbox" /></td>
</tr>
</tbody>
</table>
</div>
<p class="q">선택한 댓글의 상태를 변경.</p>
<p>
<input type="radio" name="status" id="public" /> <label for="public">Public</label>
<input type="radio" name="status" id="secret" /> <label for="secret">Secret</label>
</p>
<p class="q"><label for="message">저작자에게 쪽지를 발송해서 이 사실을 알립니다. 작성하지 않으면 발송하지 않습니다.</label></p>
<p>
<textarea cols="42" rows="3" id="message" style="width:98%"></textarea>
</p>
<div class="btnArea">
<span class="btn"><input type="submit" value="Move" /></span>
<span class="btn"><input type="submit" value="Trash" /></span>
<span class="btn"><input type="submit" value="Delete" class="delete" /></span>
</div>
</form>
</div>
<div class="search">
<form action="./" class="pagination">
<input type="hidden" name="error_return_url" value="" />
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" />
<input cond="$search_keyword" type="hidden" name="search_keyword" value="{$search_keyword}" />
<input cond="$search_target" type="hidden" name="search_target" value="{$search_target}" />
<a href="{getUrl('page', '')}" class="direction">&laquo; FIRST</a>
<block cond="$page_navigation->first_page + $page_navigation->page_count > $page_navigation->last_page && $page_navigation->page_count != $page_navigation->total_page">
<a href="{getUrl('page', '')}">1</a>
<a href="#goTo" class="tgSimple">...</a>
<span id="goTo" class="tgContent">
<input name="page" title="Go to Page" />
<button type="submit">Go</button>
</span>
<a href="{getUrl('page', $page_navigation->last_page)}">{$page_navigation->last_page}</a>
</block>
<!--@while($page_no = $page_navigation->getNextPage())-->
{@$last_page = $page_no}
<strong cond="$page_no == $page">{$page_no}</strong>
<a cond="$page_no != $page" href="{getUrl('page', $page_no)}">{$page_no}</a>
<!--@end-->
<block cond="$last_page != $page_navigation->last_page">
<a href="#goTo" class="tgSimple">...</a>
<span id="goTo" class="tgContent">
<input name="page" title="Go to Page" />
<button type="submit">Go</button>
</span>
<a href="{getUrl('page', $page_navigation->last_page)}">{$page_navigation->last_page}</a>
</block>
<a href="{getUrl('page', $page_navigation->last_page)}" class="direction">LAST &raquo;</a>
</form>
<form action="./" method="get" class="adminSearch">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" />
<input type="hidden" name="module_srl" value="{$module_srl}" />
<select name="search_target"> <select name="search_target">
<option value="">{$lang->search_target}</option> <option value="">{$lang->search_target}</option>
<!--@foreach($lang->search_target_list as $key => $val)--> <!--@foreach($lang->search_target_list as $key => $val)-->
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option> <option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
<!--@end--> <!--@end-->
</select> </select>
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText" /> <input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" />
<span class="button blue"><input type="submit" value="{$lang->cmd_search}" /></span> <input type="submit" value="{$lang->cmd_search}" />
<a href="{getUrl('','module',$module,'act',$act)}" class="button black"><span>{$lang->cmd_cancel}</span></a> <a href="{getUrl('','module',$module,'act',$act)}">{$lang->cmd_cancel}</a>
</fieldset> </form>
</form> </div>
</div> </div>
<!--form id="fo_list" action="./" method="get" onsubmit="return procFilter(this, delete_checked)"-->
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form ruleset="deleteChecked" id="fo_list" action="./" method="post">
<input type="hidden" name="act" value="procCommentAdminDeleteChecked" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="is_trash" value="false" />
<!-- 모듈 선택 -->
<div class="fr">
<a href="{getUrl('','module','module','act','dispModuleSelectList','id','target_module','type','single')}" onclick="popopen(this.href,'ModuleSelect');return false;" class="button green"><span>{$lang->cmd_find_module}</span></a>
<span class="button red"><input type="submit" name="delete" value="{$lang->cmd_delete_checked_comment}" onclick="this.form.is_trash.value=false" /></span>
<span class="button red"><input type="submit" name="trash" value="{$lang->cmd_trash}" onclick="this.form.is_trash.value=true" /></span>
</div>
<!-- 목록 -->
<table cellspacing="0" class="crossTable clear">
<caption>Total {number_format($total_count)}, Page {number_format($page)}/{number_format($total_page)}</caption>
<thead>
<tr>
<th scope="col"><div>{$lang->no}</div></th>
<th scope="col"><div><input type="checkbox" onclick="XE.checkboxToggleAll(); return false;" /></div></th>
<th scope="col" class="wide"><div>{$lang->comment}</div></th>
<th scope="col"><div>{$lang->nick_name}</div></th>
<th scope="col"><div>{$lang->date}</div></th>
<th scope="col"><div>{$lang->ipaddress}</div></th>
</tr>
</thead>
<tbody>
<!--@foreach($comment_list as $no => $val)-->
{@ $comment = cut_str(trim(htmlspecialchars(strip_tags($val->content))), 200, '...')}
<tr>
<td class="number center">{$no}</td>
<td class="center"><input type="checkbox" name="cart[]" value="{$val->comment_srl}" /></td>
<td class="left"><a href="{getUrl('','document_srl',$val->document_srl)}#comment_{$val->comment_srl}" onclick="window.open(this.href);return false;"><!--@if(strlen($comment))-->{$comment}<!--@else--><em style="font-style:italic;">{$lang->no_text_comment}</em><!--@end--></a></td>
<td class="nowrap"><span class="member_{$val->member_srl}">{htmlspecialchars($val->nick_name)}</span></td>
<td class="date center nowrap">{(zdate($val->regdate,"Y-m-d\nH:i:s"))}</td>
<td class="number left nowrap"><a href="{getUrl('search_target','ipaddress','search_keyword',$val->ipaddress)}">{$val->ipaddress}</a></td>
</tr>
<!--@end-->
</tbody>
</table>
</form>
<!-- 페이지 네비게이션 -->
<div class="pagination a1">
<a href="{getUrl('page','','module_srl',$module_srl)}" class="prevEnd">{$lang->first_page}</a>
<!--@while($page_no = $page_navigation->getNextPage())-->
<!--@if($page == $page_no)-->
<strong>{$page_no}</strong>
<!--@else-->
<a href="{getUrl('page',$page_no,'module_srl',$module_srl)}">{$page_no}</a>
<!--@end-->
<!--@end-->
<a href="{getUrl('page',$page_navigation->last_page,'module_srl',$module_srl)}" class="nextEnd">{$lang->last_page}</a>
</div>

View file

@ -16,3 +16,47 @@ function doCancelDeclare() {
function insertSelectedModule(id, module_srl, mid, browser_title) { function insertSelectedModule(id, module_srl, mid, browser_title) {
location.href = current_url.setQuery('module_srl',module_srl); location.href = current_url.setQuery('module_srl',module_srl);
} }
function addCart(comment_srl) {
var params = new Array();
var response_tags = ['error','message'];
var comment_srl = new Array();
jQuery('#fo_list input[name=cart]:checked').each(function() {
comment_srl[comment_srl.length] = jQuery(this).val();
});
params['comment_srl'] = comment_srl.join(',');
exec_xml('comment','procCommentAdminAddCart',params, completeAddCart, response_tags);
}
function completeAddCart(ret_obj, response_tags)
{
}
function getCommentList()
{
var params = new Array();
var response_tags = ['error','message', 'comment_list'];
exec_xml('comment','procCommentGetList',params, completeGetCommentList, response_tags);
}
function completeGetCommentList(ret_obj, response_tags)
{
var comment_list = ret_obj['comment_list']['item'];
console.log(comment_list);
/*var htmlListBuffer = '';
var statusNameList = {"PUBLIC":"Public", "SECRET":"Secret", "PRIVATE":"Private", "TEMP":"Temp"};
for(var x in comment_list)
{
var objDocument = comment_list[x];
htmlListBuffer += '<tr>' +
'<td class="title">'+ objDocument.variables.title +'</td>' +
'<td>'+ objDocument.variables.nick_name +'</td>' +
'<td>'+ statusNameList[objDocument.variables.status] +'</td>' +
'<td><input type="checkbox" /></td>' +
'</tr>';
}
jQuery('#documentManageListTable>tbody').html(htmlListBuffer);*/
}

View file

@ -45,6 +45,7 @@
<action name="procDocumentMoveCategory" type="controller" standalone="true" /> <action name="procDocumentMoveCategory" type="controller" standalone="true" />
<action name="procDocumentMakeXmlFile" type="controller" standalone="true" /> <action name="procDocumentMakeXmlFile" type="controller" standalone="true" />
<action name="procDocumentTempSave" type="controller" standalone="true" /> <action name="procDocumentTempSave" type="controller" standalone="true" />
<action name="procDocumentGetList" type="controller" standalone="true" />
<action name="procDocumentAdminInsertAlias" type="controller" standalone="true" ruleset="insertAlias" /> <action name="procDocumentAdminInsertAlias" type="controller" standalone="true" ruleset="insertAlias" />
<action name="procDocumentAdminDeleteAlias" type="controller" standalone="true" ruleset="deleteAlias" /> <action name="procDocumentAdminDeleteAlias" type="controller" standalone="true" ruleset="deleteAlias" />

View file

@ -43,6 +43,9 @@
$oDocumentModel = &getModel('document'); $oDocumentModel = &getModel('document');
$output = $oDocumentModel->getDocumentList($args); $output = $oDocumentModel->getDocumentList($args);
// count eache status, not in trash...
$countOutput = $oDocumentModel->getDocumentCountByGroupStatus($args);;
// get Status name list // get Status name list
$statusNameList = $oDocumentModel->getStatusNameList(); $statusNameList = $oDocumentModel->getStatusNameList();
@ -53,6 +56,7 @@
Context::set('document_list', $output->data); Context::set('document_list', $output->data);
Context::set('status_name_list', $statusNameList); Context::set('status_name_list', $statusNameList);
Context::set('page_navigation', $output->page_navigation); Context::set('page_navigation', $output->page_navigation);
Context::set('countOutput', $countOutput);
// set a search option used in the template // set a search option used in the template
$count_search_option = count($this->search_option); $count_search_option = count($this->search_option);

View file

@ -1693,6 +1693,28 @@ class documentController extends document {
$this->add('document_srl', $obj->document_srl); $this->add('document_srl', $obj->document_srl);
} }
/**
* @brief return Document List for exec_xml
**/
function procDocumentGetList()
{
if(!Context::get('is_logged')) return new Object(-1,'msg_not_permitted');
// Taken from a list of selected sessions
$flagList = $_SESSION['document_management'];
if(count($flagList)) {
foreach($flagList as $key => $val) {
if(!is_bool($val)) continue;
$documentSrlList[] = $key;
}
}
if(count($documentSrlList)) {
$oDocumentModel = &getModel('document');
$documentList = $oDocumentModel->getDocuments($documentSrlList, $this->grant->is_admin);
}
$this->add('document_list', $documentList);
}
/** /**
* @brief for old version, comment allow status check. * @brief for old version, comment allow status check.
**/ **/

View file

@ -515,6 +515,26 @@
$total_count = $output->data->count; $total_count = $output->data->count;
return (int)$total_count; return (int)$total_count;
} }
/**
* @brief module_srl the total number of documents that are bringing
**/
function getDocumentCountByGroupStatus($search_obj = NULL) {
// Additional search options
$args->module_srl = $search_obj->module_srl;
$args->s_title = $search_obj->s_title;
$args->s_content = $search_obj->s_content;
$args->s_user_name = $search_obj->s_user_name;
$args->s_member_srl = $search_obj->s_member_srl;
$args->s_ipaddress = $search_obj->s_ipaddress;
$args->s_regdate = $search_obj->s_regdate;
$args->category_srl = $search_obj->category_srl;
$output = executeQuery('document.getDocumentCountByGroupStatus', $args);
if(!$output->toBool()) return array();
return $output->data;
}
/** /**
* @brief Import page of the document, module_srl Without throughout .. * @brief Import page of the document, module_srl Without throughout ..
**/ **/

View file

@ -7,14 +7,33 @@
</columns> </columns>
<conditions> <conditions>
<condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" /> <condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" />
<condition operation="notin" column="module_srl" var="exclude_module_srl" filter="number" pipe="and" />
<condition operation="equal" column="category_srl" var="category_srl" /> <condition operation="equal" column="category_srl" var="category_srl" />
<condition operation="equal" column="is_notice" var="s_is_notice" pipe="and" />
<condition operation="equal" column="member_srl" var="member_srl" filter="number" pipe="and" />
<condition operation="in" column="status" var="statusList" pipe="and" />
<group pipe="and"> <group pipe="and">
<condition operation="like" column="title" var="s_title" /> <condition operation="like" column="title" var="s_title" />
<condition operation="like" column="content" var="s_content" pipe="and" /> <condition operation="like" column="content" var="s_content" pipe="and" />
<condition operation="like" column="user_name" var="s_user_name" pipe="and" /> <condition operation="like" column="user_name" var="s_user_name" pipe="and" />
<condition operation="like" column="user_id" var="s_user_id" pipe="or" />
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="email_address" var="s_email_addres" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="tags" var="s_tags" pipe="or" />
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="and" /> <condition operation="equal" column="member_srl" var="s_member_srl" pipe="and" />
<condition operation="like_prefix" column="ipaddress" var="s_ipaddress" pipe="and" /> <condition operation="more" column="readed_count" var="s_readed_count" pipe="or" />
<condition operation="more" column="voted_count" var="s_voted_count" pipe="or" />
<condition operation="more" column="comment_count" var="s_comment_count" pipe="or" />
<condition operation="more" column="trackback_count" var="s_trackback_count" pipe="or" />
<condition operation="more" column="uploaded_count" var="s_uploaded_count" pipe="or" />
<condition operation="like_prefix" column="regdate" var="s_regdate" pipe="and" /> <condition operation="like_prefix" column="regdate" var="s_regdate" pipe="and" />
<condition operation="like_prefix" column="last_update" var="s_last_update" pipe="or" />
<condition operation="like_prefix" column="ipaddress" var="s_ipaddress" pipe="and" />
</group>
<group pipe="and">
<condition operation="more" column="last_update" var="start_date" pipe="and" />
<condition operation="less" column="last_update" var="end_date" pipe="and" />
</group> </group>
</conditions> </conditions>
</query> </query>

View file

@ -0,0 +1,43 @@
<query id="getDocumentCountByGroupStatus" action="select">
<tables>
<table name="documents" />
</tables>
<columns>
<column name="status" alias="status" />
<column name="count(*)" alias="count" />
</columns>
<conditions>
<condition operation="equal" column="module_srl" var="module_srl" filter="number" />
<condition operation="notin" column="module_srl" var="exclude_module_srl" filter="number" pipe="and" />
<condition operation="equal" column="category_srl" var="category_srl" />
<condition operation="equal" column="is_notice" var="s_is_notice" pipe="and" />
<condition operation="equal" column="member_srl" var="member_srl" filter="number" pipe="and" />
<condition operation="in" column="status" var="statusList" pipe="and" />
<group pipe="and">
<condition operation="like" column="title" var="s_title" />
<condition operation="like" column="content" var="s_content" pipe="and" />
<condition operation="like" column="user_name" var="s_user_name" pipe="and" />
<condition operation="like" column="user_id" var="s_user_id" pipe="or" />
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="email_address" var="s_email_addres" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="tags" var="s_tags" pipe="or" />
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="and" />
<condition operation="more" column="readed_count" var="s_readed_count" pipe="or" />
<condition operation="more" column="voted_count" var="s_voted_count" pipe="or" />
<condition operation="more" column="comment_count" var="s_comment_count" pipe="or" />
<condition operation="more" column="trackback_count" var="s_trackback_count" pipe="or" />
<condition operation="more" column="uploaded_count" var="s_uploaded_count" pipe="or" />
<condition operation="like_prefix" column="regdate" var="s_regdate" pipe="and" />
<condition operation="like_prefix" column="last_update" var="s_last_update" pipe="or" />
<condition operation="like_prefix" column="ipaddress" var="s_ipaddress" pipe="and" />
</group>
<group pipe="and">
<condition operation="more" column="last_update" var="start_date" pipe="and" />
<condition operation="less" column="last_update" var="end_date" pipe="and" />
</group>
</conditions>
<groups>
<group column="status" />
</groups>
</query>

View file

@ -1,9 +1,14 @@
<form id="fo_list" action="./" method="get"> <!--%import("js/document_admin.js")-->
<form id="fo_list" action="./" method="get" class="form">
<input type="hidden" name="page" value="{$page}" /> <input type="hidden" name="page" value="{$page}" />
<h1 class="h1">Document</h1> <h1 class="h1">Document</h1>
<div class="table even"> <div class="table even">
<table width="100%" border="1" cellspacing="0"> <table width="100%" border="1" cellspacing="0" id="documentListTable">
<caption>All({number_format($total_count)}) <span class="side">All({number_format($total_count)}) | <a href="#">Public(456)</a> | <a href="#">Secret(8)</a> | <a href="#">Private(9)</a> | <a href="#">Temp(12)</a> | <a href="#">Trash(4)</a></span></caption> <caption>All({number_format($total_count)}) <span class="side">All({number_format($total_count)})
<!--@foreach($countOutput AS $key=>$value)-->
| <a href="#">{$status_name_list[$value->status]}({$value->count})</a>
<!--@end-->
</span></caption>
<thead> <thead>
<tr> <tr>
<th scope="col" class="title">{$lang->title}</th> <th scope="col" class="title">{$lang->title}</th>
@ -13,7 +18,7 @@
<th scope="col">{$lang->date}</th> <th scope="col">{$lang->date}</th>
<th scope="col">{$lang->ipaddress}</th> <th scope="col">{$lang->ipaddress}</th>
<th scope="col">{$lang->status}</th> <th scope="col">{$lang->status}</th>
<th scope="col"><input type="checkbox" title="Check All" onclick="XE.checkboxToggleAll({ doClick:true }); return false;" /></th> <th scope="col"><input type="checkbox" title="Check All" /></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -29,57 +34,35 @@
<td><input type="checkbox" name="cart" value="{$oDocument->document_srl}" onclick="doAddDocumentCart(this)" <!--@if($oDocument->isCarted())-->checked="checked"<!--@end--> /></td> <td><input type="checkbox" name="cart" value="{$oDocument->document_srl}" onclick="doAddDocumentCart(this)" <!--@if($oDocument->isCarted())-->checked="checked"<!--@end--> /></td>
</tr> </tr>
<!--@end--> <!--@end-->
<tr>
<td class="title"><a href="#" target="_blank">The quick brown fox jumps over the lazy dog.</a></td>
<td><a href="#popup_menu_area">홍길동</a></td>
<td>2</td>
<td>1/-1</td>
<td>2010-12-24 15:59</td>
<td>123.456.789.0</td>
<td>Trash</td>
<td><input type="checkbox" /></td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="btnArea"> <div class="btnArea">
<span class="btn"><a href="#listManager" class="modalAnchor">선택한 글 관리...</a></span> <span class="btn"><a href="#listManager" class="modalAnchor" onclick="getDocumentList();">선택한 글 관리...</a></span>
</div> </div>
</form> </form>
<div class="modal" id="listManager"> <div class="modal" id="listManager">
<form action="" class="fg form"> <form action="" class="fg form">
<h2 class="h2">선택한 글 관리</h2> <h2 class="h2">선택한 글 관리</h2>
<div class="table even"> <div class="table even">
<table width="100%" border="1" cellspacing="0"> <table width="100%" border="1" cellspacing="0" id="documentManageListTable">
<caption>선택한 글 <strong>8</strong></caption> <caption>선택한 글 <strong>8</strong></caption>
<thead> <thead>
<tr> <tr>
<th scope="col" class="title">Title</th> <th scope="col" class="title">Title</th>
<th scope="col">Author</th> <th scope="col">Author</th>
<th scope="col">Status</th> <th scope="col">Status</th>
<th scope="col"><input type="checkbox" title="Check All" checked="checked" /></th> <th scope="col"><input type="checkbox" title="Check All" /></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr>
<td class="title">The quick brown fox jumps over the lazy dog.</td>
<td>홍길동</td>
<td>Public</td>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td class="title">The quick brown fox jumps over the lazy dog.</td>
<td>홍길동</td>
<td>Trash</td>
<td><input type="checkbox" /></td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<p class="q"><label for="midUrl">선택한 글을 다음 위치로 옮기거나 복사할 수 있습니다.</label></p> <p class="q"><label for="midUrl">선택한 글을 다음 위치로 옮기거나 복사할 수 있습니다.</label></p>
<div class="a"> <div class="a">
<input type="text" id="midUrl" /> <input type="text" id="midUrl" />
<span class="desc"><a href="#midSuggestion" class="tgFade">Find Module ID</a></span> <span class="desc"><a href="#midSuggestion" class="tgFade" onclick="getModuleList();">Find Module ID</a></span>
<div id="midSuggestion" class="tgContent"> <div id="midSuggestion" class="tgContent">
<ul> <ul>
<li><button type="button">SiteID.ModuleID.Category</button></li> <li><button type="button">SiteID.ModuleID.Category</button></li>
@ -103,33 +86,50 @@
</form> </form>
</div> </div>
<div class="search"> <div class="search">
<form action="" class="pagination"> <form action="./" class="pagination">
<a href="#" class="direction">&laquo; FIRST</a> <input type="hidden" name="error_return_url" value="" />
<a href="#" class="direction">&lsaquo; PREV</a> <input type="hidden" name="module" value="{$module}" />
<strong>11</strong> <input type="hidden" name="act" value="{$act}" />
<a href="#">12</a> <input cond="$search_keyword" type="hidden" name="search_keyword" value="{$search_keyword}" />
<a href="#">13</a> <input cond="$search_target" type="hidden" name="search_target" value="{$search_target}" />
<a href="#goTo" class="tgSimple">...</a>
<span id="goTo" class="tgContent"> <a href="{getUrl('page', '')}" class="direction">&laquo; FIRST</a>
<input title="Go to Page" /> <block cond="$page_navigation->first_page + $page_navigation->page_count > $page_navigation->last_page && $page_navigation->page_count != $page_navigation->total_page">
<button type="submit">GO</button> <a href="{getUrl('page', '')}">1</a>
</span> <a href="#goTo" class="tgSimple">...</a>
<a href="#">99</a> <span id="goTo" class="tgContent">
<a href="#" class="direction">NEXT &rsaquo;</a> <input name="page" title="Go to Page" />
<a href="#" class="direction">LAST &raquo;</a> <button type="submit">Go</button>
</form> </span>
<form action=""> <a href="{getUrl('page', $page_navigation->last_page)}">{$page_navigation->last_page}</a>
<select> </block>
<option>제목</option> <!--@while($page_no = $page_navigation->getNextPage())-->
<option>내용</option> {@$last_page = $page_no}
<option>닉네임</option> <strong cond="$page_no == $page">{$page_no}</strong>
<option>아이디</option> <a cond="$page_no != $page" href="{getUrl('page', $page_no)}">{$page_no}</a>
<option>사용자 이름</option> <!--@end-->
<option>공지사항</option> <block cond="$last_page != $page_navigation->last_page">
<option>IP 주소</option> <a href="#goTo" class="tgSimple">...</a>
<option>모듈 아이디</option> <span id="goTo" class="tgContent">
<input name="page" title="Go to Page" />
<button type="submit">Go</button>
</span>
<a href="{getUrl('page', $page_navigation->last_page)}">{$page_navigation->last_page}</a>
</block>
<a href="{getUrl('page', $page_navigation->last_page)}" class="direction">LAST &raquo;</a>
</form>
<form action="./" method="get" class="adminSearch">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" />
<input type="hidden" name="module_srl" value="{$module_srl}" />
<select name="search_target">
<option value="">{$lang->search_target}</option>
<!--@foreach($lang->search_target_list as $key => $val)-->
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
<!--@end-->
</select> </select>
<input title="Search" /> <input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" />
<input type="submit" value="Search" /> <input type="submit" value="Search" />
<a href="#">Cancel</a> <a href="#">Cancel</a>
</form> </form>

View file

@ -147,3 +147,43 @@ function completeRestoreTrash(ret_obj) {
alert(ret_obj['message']); alert(ret_obj['message']);
location.href = current_url; location.href = current_url;
} }
function getDocumentList() {
var params = new Array();
var response_tags = ['error','message', 'document_list'];
exec_xml('document','procDocumentGetList',params, completeGetDocumentList, response_tags);
}
function completeGetDocumentList(ret_obj, response_tags)
{
var document_list = ret_obj['document_list']['item'];
var htmlListBuffer = '';
var statusNameList = {"PUBLIC":"Public", "SECRET":"Secret", "PRIVATE":"Private", "TEMP":"Temp"};
for(var x in document_list)
{
var objDocument = document_list[x];
htmlListBuffer += '<tr>' +
'<td class="title">'+ objDocument.variables.title +'</td>' +
'<td>'+ objDocument.variables.nick_name +'</td>' +
'<td>'+ statusNameList[objDocument.variables.status] +'</td>' +
'<td><input type="checkbox" /></td>' +
'</tr>';
}
jQuery('#documentManageListTable>tbody').html(htmlListBuffer);
}
function getModuleList()
{
var params = new Array();
var response_tags = ['error', 'message'];
exec_xml('document','procModuleAdminGetList',params, completeGetModuleList, response_tags);
}
function completeGetModuleList(ret_obj, response_tags)
{
console.log(ret_obj['error']);
console.log(ret_obj['message']);
}

View file

@ -38,6 +38,7 @@
<action name="procModuleAdminModuleGrantSetup" type="controller" standalone="true" ruleset="insertModulesGrant" /> <action name="procModuleAdminModuleGrantSetup" type="controller" standalone="true" ruleset="insertModulesGrant" />
<action name="procModuleAdminInsertLang" type="controller" standalone="true" /> <action name="procModuleAdminInsertLang" type="controller" standalone="true" />
<action name="procModuleAdminDeleteLang" type="controller" standalone="true" /> <action name="procModuleAdminDeleteLang" type="controller" standalone="true" />
<action name="procModuleAdminGetList" type="controller" standalone="true" />
<action name="dispModuleChangeLang" type="mobile" /> <action name="dispModuleChangeLang" type="mobile" />
</actions> </actions>

View file

@ -453,6 +453,50 @@
$this->makeCacheDefinedLangCode($args->site_srl); $this->makeCacheDefinedLangCode($args->site_srl);
} }
function procModuleAdminGetList()
{
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_permitted');
$oModuleModel = &getModel('module');
// Variable setting for site keyword
$site_keyword = Context::get('site_keyword');
// If there is no site keyword, use as information of the current virtual site
$args = null;
$logged_info = Context::get('logged_info');
$site_module_info = Context::get('site_module_info');
$args->site_keyword = $site_keyword;
if($logged_info->is_admin == 'Y' && !$site_keyword) $args->site_srl = 0;
else $args->site_srl = (int)$site_module_info->site_srl;
$args->sort_index1 = 'sites.domain';
// Get a list of modules at the site
$output = executeQueryArray('module.getSiteModules', $args);
$category_list = $mid_list = array();
if(count($output->data)) {
foreach($output->data as $key => $val) {
/*$module = trim($val->module);
if(!$module) continue;
$category = $val->category;
$obj = null;
$obj->module_srl = $val->module_srl;
$obj->browser_title = $val->browser_title;
$mid_list[$module]->list[$category][$val->mid] = $obj;*/
}
}
/*$selected_module = Context::get('selected_module');
if(count($mid_list)) {
foreach($mid_list as $module => $val) {
if(!$selected_module) $selected_module = $module;
$xml_info = $oModuleModel->getModuleInfoXml($module);
$mid_list[$module]->title = $xml_info->title;
}
}*/
}
/** /**
* @brief Save the file of user-defined language code * @brief Save the file of user-defined language code
**/ **/

View file

@ -17,7 +17,7 @@
<condition operation="equal" column="sites.site_srl" default="modules.site_srl" pipe="and" /> <condition operation="equal" column="sites.site_srl" default="modules.site_srl" pipe="and" />
</conditions> </conditions>
<navigation> <navigation>
<index var="sort_index" default="modules.module" order="asc" /> <index var="sort_index1" default="modules.module" order="asc" />
<index var="sort_index" default="modules.mid" order="asc" /> <index var="sort_index2" default="modules.mid" order="asc" />
</navigation> </navigation>
</query> </query>

View file

@ -4,7 +4,7 @@
<permissions /> <permissions />
<actions> <actions>
<action name="dispTrackbackSend" type="view" standalone="true" /> <action name="dispTrackbackSend" type="view" standalone="true" />
<action name="dispTrackbackAdminList" type="view" admin_index="true" standalone="true" /> <action name="dispTrackbackAdminList" type="view" admin_index="true" standalone="true" menu_name="trackback" menu_index="true" />
<action name="trackback" type="controller" standalone="true" /> <action name="trackback" type="controller" standalone="true" />

View file

@ -1,103 +1,110 @@
<!--%import("js/trackback_admin.js")--> <!--%import("js/trackback_admin.js")-->
<div class="content" id="content">
<h3 class="xeAdmin">{$lang->trackback} <span class="gray">{$lang->cmd_management}</span></h3>
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}"> <div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p> <p>{$XE_VALIDATOR_MESSAGE}</p>
</div> </div>
<form action="./" method="post"> <form action="" class="form" class="form">
<input type="hidden" name="act" value="procTrackbackAdminInsertConfig" /> <h1 class="h1">{$lang->trackback}</h1>
<table cellspacing="0" class="rowTable topGap"> <div class="table even">
<tr class="row2"> <table width="100%" border="1" cellspacing="0">
<th scope="col"><div>{$lang->enable_trackback}</div></th> <caption>
</tr> All({number_format($total_count)})
<tr> <span class="side"><span class="btn"><a href="#listManager" class="modalAnchor">선택한 엮인글 관리...</a></span></span>
<td> </caption>
<input type="checkbox" name="enable_trackback" value="Y" size="3" <!--@if($config->enable_trackback=='Y')-->checked="checked"<!--@end-->/> {$lang->cmd_use} <thead>
<p>{$lang->about_enable_trackback}</p> <tr>
</td> <th scope="col" class="text">{$lang->title}</th>
</tr> <th scope="col">{$lang->blog_name}</th>
<tr class="row2"> <th scope="col">{$lang->date}</th>
<th class="button"><span class="button black strong"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span></th> <th scope="col">{$lang->ipaddress}IP</th>
</tr> <th scope="col"><input type="checkbox" data-name="cart[]" title="Check All" /></th>
</table> </tr>
</form> </thead>
<tfoot>
<!-- 검색 --> <tr>
<div class="fl"> <th scope="col" class="text">{$lang->title}</th>
<form action="./" method="get" class="adminSearch"> <th scope="col">{$lang->blog_name}</th>
<input type="hidden" name="module" value="{$module}" /> <th scope="col">{$lang->date}</th>
<input type="hidden" name="act" value="{$act}" /> <th scope="col">{$lang->ipaddress}IP</th>
<input type="hidden" name="module_srl" value="{$module_srl}" /> <th scope="col"><input type="checkbox" data-name="cart[]" title="Check All" /></th>
</tr>
<fieldset> </tfoot>
<tbody>
<!--@foreach($trackback_list as $no => $val)-->
<tr>
<td class="text">
<a href="{getUrl('','document_srl',$val->document_srl)}#trackback_{$val->trackback_srl}" target="_blank">{htmlspecialchars($val->title)}</a>
<p>{$val->excerpt}</p>
</td>
<td><a href="{$val->url}" target="_blank">{htmlspecialchars($val->blog_name)}</a></td>
<td>{zdate($val->regdate,"Y-m-d")}</td>
<td><a href="{getUrl('search_target','ipaddress','search_keyword',$val->ipaddress)}">{$val->ipaddress}</a></td>
<td><input type="checkbox" name="cart[]" value="{$val->trackback_srl}" /></td>
</tr>
<!--@end-->
</tbody>
</table>
</div>
<div class="btnArea">
<span class="btn"><a href="#listManager" class="modalAnchor">선택한 엮인글 관리...</a></span>
</div>
</form>
<div class="modal" id="listManager">
<form ruleset="deleteChecked" id="fo_list" action="./" method="post">
<input type="hidden" name="act" value="procTrackbackAdminDeleteChecked" />
<input type="hidden" name="page" value="{$page}" />
<h2 class="h2">선택한 엮인글 관리</h2>
<div class="table even">
<table width="100%" border="1" cellspacing="0">
<caption>
선택한 엮인글 <strong>8</strong>
</caption>
<thead>
<tr>
<th scope="col" class="title"><span class="text">Trackback</span></th>
<th scope="col">Site</th>
<th scope="col"><input type="checkbox" title="Check All" checked="checked" /></th>
</tr>
</thead>
<tbody>
<tr>
<td class="text"> <strong>The quick brown fox jumps over the lazy dog.</strong>
<p>무궁화 꽃이 피었습니다. 무궁화 꽃이 피었습니다. 무궁화 꽃이 피었습니다. 무궁화 꽃이 피었습니다. 무궁화 꽃이 피었습니다. 무궁화 꽃이 피었습니다...</p>
</td>
<td>나라디자인</td>
<td><input type="checkbox" /></td>
</tr>
<tr>
<td class="text"> <strong>The quick brown fox jumps over the lazy dog.</strong>
<p>무궁화 꽃이 피었습니다. 무궁화 꽃이 피었습니다. 무궁화 꽃이 피었습니다. 무궁화 꽃이 피었습니다. 무궁화 꽃이 피었습니다. 무궁화 꽃이 피었습니다...</p>
</td>
<td>행복한고니</td>
<td><input type="checkbox" /></td>
</tr>
</tbody>
</table>
</div>
<div class="btnArea">
<span class="btn"><input type="submit" value="Trash" /></span>
<span class="btn"><input type="submit" value="Delete" class="delete" /></span>
</div>
</form>
</div>
<div class="search">
<!--page navigation-->
<form action="">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" />
<input type="hidden" name="module_srl" value="{$module_srl}" />
<select name="search_target"> <select name="search_target">
<option value="">{$lang->search_target}</option> <option value="">{$lang->search_target}</option>
<!--@foreach($lang->search_target_list as $key => $val)--> <!--@foreach($lang->search_target_list as $key => $val)-->
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option> <option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
<!--@end--> <!--@end-->
</select> </select>
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText" /> <input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" />
<span class="button blue"><input type="submit" value="{$lang->cmd_search}" /></span> <input type="submit" value="{$lang->cmd_search}" />
<a href="{getUrl('','module',$module,'act',$act)}" class="button black"><span>{$lang->cmd_cancel}</span></a> <a href="{getUrl('','module',$module,'act',$act)}">{$lang->cmd_cancel}</a>
</fieldset> </form>
</form> </div>
</div>
<form ruleset="deleteChecked" id="fo_list" action="./" method="post">
<input type="hidden" name="act" value="procTrackbackAdminDeleteChecked" />
<input type="hidden" name="page" value="{$page}" />
<!-- 모듈 선택 -->
<div class="fr">
<a href="{getUrl('','module','module','act','dispModuleSelectList','id','target_module','type','single')}" onclick="popopen(this.href,'ModuleSelect');return false;" class="button green"><span>{$lang->cmd_find_module}</span></a>
<span class="button red"><input type="submit" value="{$lang->cmd_delete_checked_trackback}" /></span>
</div>
<!-- 목록 -->
<table cellspacing="0" class="rowTable clear">
<caption>Total {number_format($total_count)}, Page {number_format($page)}/{number_format($total_page)}</caption>
<thead>
<tr>
<th scope="col"><div>{$lang->no}</div></th>
<th scope="col"><div><input type="checkbox" onclick="XE.checkboxToggleAll(); return false;" /></div></th>
<th scope="col"><div>{$lang->blog_name}</div></th>
<th scope="col" class="wide"><div>{$lang->title}</div></th>
<th scope="col"><div>{$lang->date}</div></th>
<th scope="col"><div>{$lang->ipaddress}</div></th>
</tr>
</thead>
<tbody>
<!--@foreach($trackback_list as $no => $val)-->
<tr class="row{$cycle_idx}">
<td rowspan="2" class="center number" scope="col">{$no}</td>
<td rowspan="2" class="center"><input type="checkbox" name="cart[]" value="{$val->trackback_srl}" /></td>
<td rowspan="2"><div class="w200"><a href="{$val->url}" onclick="window.open(this.href); return false;">{htmlspecialchars($val->blog_name)}</a></div></td>
<td ><a href="{getUrl('','document_srl',$val->document_srl)}#trackback_{$val->trackback_srl}" onclick="window.open(this.href);return false;">{htmlspecialchars($val->title)}</a></td>
<td class="date center nowrap">{zdate($val->regdate,"Y-m-d")}</td>
<td class="number left nowrap"><a href="{getUrl('search_target','ipaddress','search_keyword',$val->ipaddress)}">{$val->ipaddress}</a></td>
</tr>
<tr>
<td colspan="3">
{$val->excerpt}
</td>
</tr>
<!--@end-->
</tbody>
</table>
</form>
<!-- 페이지 네비게이션 -->
<div class="pagination a1">
<a href="{getUrl('page','','module_srl','')}" class="prevEnd">{$lang->first_page}</a>
<!--@while($page_no = $page_navigation->getNextPage())-->
<!--@if($page == $page_no)-->
<strong>{$page_no}</strong>
<!--@else-->
<a href="{getUrl('page',$page_no,'module_srl','')}">{$page_no}</a>
<!--@end-->
<!--@end-->
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="nextEnd">{$lang->last_page}</a>
</div> </div>