mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-25 22:29:55 +09:00
삭제
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2327 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
commit
8326004cb2
2773 changed files with 91485 additions and 0 deletions
35
modules/blog/tpl/blog_delete.html
Normal file
35
modules/blog/tpl/blog_delete.html
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<!--%import("filter/delete_blog.xml")-->
|
||||
<!--%import("js/blog_admin.js")-->
|
||||
<!--#include("header.html")-->
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, delete_blog)">
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="module_srl" value="{$module_info->module_srl}" />
|
||||
|
||||
<table cellspacing="0" class="tableType4">
|
||||
<col width="150" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row" colspan="2">{$lang->confirm_delete}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->module_name}</th>
|
||||
<td>{$module_info->mid}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->module}</th>
|
||||
<td>{$module_info->module}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->document_count}</th>
|
||||
<td>{$module_info->document_count}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="gap1 tRight">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_delete}" /></span>
|
||||
<a href="{getUrl('act','dispBlogAdminContent')}" class="button"><span>{$lang->cmd_back}</span></a></li>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
59
modules/blog/tpl/blog_info.html
Normal file
59
modules/blog/tpl/blog_info.html
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
<!--#include("header.html")-->
|
||||
|
||||
<table cellspacing="0" class="tableType4">
|
||||
<col width="150" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row">{$lang->module_category}</th>
|
||||
<td>
|
||||
<!--@if(!$module_info->module_category_srl)-->
|
||||
{$lang->not_exists}
|
||||
<!--@else-->
|
||||
{$module_category[$module_info->module_category_srl]->title}
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->skin}</th>
|
||||
<td>{$module_info->skin_title} ({$module_info->skin})</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->browser_title}</th>
|
||||
<td>{htmlspecialchars($module_info->browser_title)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->open_rss}</th>
|
||||
<td>{$lang->open_rss_types[$module_info->open_rss]}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->list_count}</th>
|
||||
<td>{$module_info->list_count?$module_info->list_count:20}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->page_count}</th>
|
||||
<td>{$module_info->page_count?$module_info->page_count:10}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->description}</th>
|
||||
<td>{nl2br(htmlspecialchars($module_info->description))}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->header_text}</th>
|
||||
<td>{htmlspecialchars($module_info->header_text)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->footer_text}</th>
|
||||
<td>{htmlspecialchars($module_info->footer_text)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->admin_id}</th>
|
||||
<td><!--@if(is_array($module_info->admin_id))-->{implode(",",$module_info->admin_id)}<!--@end--></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="gap1 tRight">
|
||||
<a href="{getUrl('act','dispBlogAdminInsertBlog')}" class="button"><span>{$lang->cmd_modify}</span></a>
|
||||
<!--@if($module=="admin")-->
|
||||
<a href="{getUrl('act','dispBlogAdminContent','module_srl','')}" class="button"><span>{$lang->cmd_blog_list}</span></a>
|
||||
<!--@end-->
|
||||
</div>
|
||||
125
modules/blog/tpl/blog_insert.html
Normal file
125
modules/blog/tpl/blog_insert.html
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
<!--%import("filter/insert_blog.xml")-->
|
||||
<!--%import("js/blog_admin.js")-->
|
||||
|
||||
<!--#include("header.html")-->
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert_blog)" enctype="multipart/form-data">
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
<!--@if($module_info->is_default=='Y')-->
|
||||
<input type="hidden" name="is_default" value="Y" />
|
||||
<!--@end-->
|
||||
<input type="hidden" name="use_category" value="Y" />
|
||||
|
||||
<table cellspacing="0" class="tableType2">
|
||||
<col width="150" />
|
||||
<col />
|
||||
|
||||
<tr>
|
||||
<th scope="row">{$lang->mid}</th>
|
||||
<td>
|
||||
<input type="text" name="mid" value="{$module_info->mid}" class="inputTypeText" />
|
||||
<p>{$lang->about_mid}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@if($module_info->is_default!='Y')-->
|
||||
<tr>
|
||||
<th scope="row">{$lang->is_default}</th>
|
||||
<td>
|
||||
<input type="checkbox" name="is_default" value="Y" <!--@if($module_info->is_default=='Y')-->checked="checked"<!--@end--> id="fld_for_default" class="checkbox" />
|
||||
<label for="fld_for_default">{$lang->about_default}</label>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th scope="row">{$lang->module_category}</th>
|
||||
<td>
|
||||
<select name="module_category_srl">
|
||||
<option value="0">{$lang->notuse}</option>
|
||||
<!--@foreach($module_category as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($module_info->module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<p>{$lang->about_module_category}</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th scope="row">{$lang->browser_title}</th>
|
||||
<td>
|
||||
<input type="text" name="browser_title" value="{htmlspecialchars($module_info->browser_title)}" class="inputTypeText" />
|
||||
<p>{$lang->about_browser_title}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->skin}</th>
|
||||
<td>
|
||||
<select name="skin">
|
||||
<!--@foreach($skin_list as $key=>$val)-->
|
||||
<option value="{$key}" <!--@if($module_info->skin==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<p>{$lang->about_skin}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->open_rss}</th>
|
||||
<td>
|
||||
<select name="open_rss">
|
||||
<!--@foreach($lang->open_rss_types as $key=>$val)-->
|
||||
<option value="{$key}" <!--@if($module_info->open_rss==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<p>{$lang->about_open_rss}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->list_count}</th>
|
||||
<td>
|
||||
<input type="text" name="list_count" value="{$module_info->list_count?$module_info->list_count:20}" class="inputTypeText" />
|
||||
<p>{$lang->about_list_count}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->page_count}</th>
|
||||
<td>
|
||||
<input type="text" name="page_count" value="{$module_info->page_count?$module_info->page_count:10}" class="inputTypeText" />
|
||||
<p>{$lang->about_page_count}</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th scope="row">{$lang->description}</th>
|
||||
<td>
|
||||
<textarea name="description" class="inputTypeTextArea w100">{htmlspecialchars($module_info->description)}</textarea>
|
||||
<p>{$lang->about_description}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->header_text}</th>
|
||||
<td>
|
||||
<textarea name="header_text" class="inputTypeTextArea w100">{htmlspecialchars($module_info->header_text)}</textarea>
|
||||
<p>{$lang->about_header_text}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->footer_text}</th>
|
||||
<td>
|
||||
<textarea name="footer_text" class="inputTypeTextArea w100">{htmlspecialchars($module_info->footer_text)}</textarea>
|
||||
<p>{$lang->about_footer_text}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->admin_id}</th>
|
||||
<td>
|
||||
<textarea name="admin_id" class="inputTypeTextArea w100"><!--@if($module_info->admin_id)-->{implode(",",$module_info->admin_id)}<!--@end--></textarea>
|
||||
<p>{$lang->about_admin_id}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="tRight gap1">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
49
modules/blog/tpl/category_info.html
Normal file
49
modules/blog/tpl/category_info.html
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<input type="hidden" name="category_srl" value="{$category_info->category_srl}" />
|
||||
<input type="hidden" name="parent_srl" value="{$category_info->parent_srl}" />
|
||||
|
||||
<table cellspacing="0" class="tableType2">
|
||||
<col width="140" />
|
||||
<col width="*" />
|
||||
<!--@if($category_info->parent_category_name)-->
|
||||
<tr>
|
||||
<th scope="row">{$lang->parent_category_name}</th>
|
||||
<td>{$category_info->parent_category_name}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th scope="row">{$lang->category_name}</th>
|
||||
<td>
|
||||
<input type="text" name="category_name" value="{htmlspecialchars($category_info->name)}" class="inputTypeText" />
|
||||
<p>{$lang->about_category_name}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->expand}</th>
|
||||
<td>
|
||||
<input type="checkbox" name="expand" value="Y" <!--@if($category_info->expand=="Y")-->checked="checked"<!--@end--> class="checkbox" />
|
||||
{$lang->about_expand}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->category_group_srls}</th>
|
||||
<td>
|
||||
<!--@foreach($group_list as $key=>$val)-->
|
||||
<input type="checkbox" name="group_srls" value="{$key}" id="group_{$key}" <!--@if(is_array($category_info->group_srls)&&in_array($key, $category_info->group_srls))-->checked="checked"<!--@end--> class="checkbox" /> <label for="group_{$key}">{$val->title}</label>
|
||||
<!--@end-->
|
||||
<p>{$lang->about_category_group_srls}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="fl gap1">
|
||||
<!--@if($category_info->name)-->
|
||||
<a href="#" onclick="doDeleteCategory('{$category_srl->category_srl}');return false" class="button"><span>{$lang->cmd_delete}</span></a>
|
||||
<!--@end-->
|
||||
<a href="#" onclick="hideCategoryInfo();return false" class="button"><span>{$lang->cmd_close}</span></a>
|
||||
</div>
|
||||
<div class="fr gap1">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_save}" /></span>
|
||||
<!--@if($category_info->name)-->
|
||||
<a href="#" onclick="doInsertCategory('{$category_info->category_srl}');return false" class="button"><span>{$lang->cmd_make_child}</span></a>
|
||||
<!--@end-->
|
||||
</div>
|
||||
56
modules/blog/tpl/category_list.html
Normal file
56
modules/blog/tpl/category_list.html
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
<!--%import("filter/insert_category.xml")-->
|
||||
<!--%import("filter/delete_category.xml")-->
|
||||
<!--%import("filter/move_category.xml")-->
|
||||
<!--%import("css/blog.css")-->
|
||||
<!--%import("js/blog_admin.js")-->
|
||||
|
||||
<h3>{$lang->blog} <span class="gray">{$lang->cmd_management}</span></h3>
|
||||
|
||||
<div class="menuManagement">
|
||||
|
||||
<script type="text/javascript">
|
||||
var category_title = "{$lang->category}";
|
||||
</script>
|
||||
|
||||
<div class="infoText">{nl2br($lang->about_blog_category)}</div>
|
||||
|
||||
<!-- 카테고리의 위/아래, 삭제와 관련된 form -->
|
||||
<form id="fo_move_category" action="./" method="get">
|
||||
<input type="hidden" name="source_category_srl" />
|
||||
<input type="hidden" name="target_category_srl" />
|
||||
</form>
|
||||
|
||||
<div class="gap1">
|
||||
<form id="fo_category" action="./" method="get" onsubmit="return procFilter(this, insert_category)">
|
||||
<input type="hidden" name="module_srl" value="{$module_info->module_srl}" />
|
||||
<input type="hidden" name="xml_file" value="{$category_info->xml_file}" />
|
||||
|
||||
<table class="menuListZone">
|
||||
<tr>
|
||||
<td class="category_zone">
|
||||
<div id="category_list">
|
||||
<div id="zone_category"></div>
|
||||
<p><input type="checkbox" class="checkbox" id="category_enable_move" onclick="hideCategoryInfo()" /> <label for="category_enable_move">{$lang->cmd_enable_move_category}</label></p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div id="category_info"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="fl gap1">
|
||||
<a href="#" onclick="doInsertCategory(0);return false;" class="button"><span>{$lang->cmd_insert}</span></a>
|
||||
<a href="#" onclick="openAllTreeMenu('category');return false;" class="button"><span>{$lang->cmd_open_all}</span></a>
|
||||
<a href="#" onclick="closeAllTreeMenu('category');return false;" class="button"><span>{$lang->cmd_close_all}</span></a>
|
||||
<a href="#" onclick="doReloadTreeCategory('{$module_info->module_srl}');return false;" class="button"><span>{$lang->cmd_remake_cache}</span></a>
|
||||
<a href="#" onclick="window.close();return false;" class="button"><span>{$lang->cmd_close}</span></a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script type="text/javascript">
|
||||
loadTreeMenu("{$category_info->xml_file}", "category", "zone_category", category_title, '', doGetCategoryInfo, 0, doMoveTree);
|
||||
</script>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
12
modules/blog/tpl/css/blog.css
Normal file
12
modules/blog/tpl/css/blog.css
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
@charset "utf-8";
|
||||
|
||||
h3 { margin:0 20px 0 20px; }
|
||||
.menuManagement { margin:20px; }
|
||||
.menuListZone td { vertical-align:top; }
|
||||
.menuListZone td.category_zone { padding-right:10px; }
|
||||
|
||||
#category_list { padding:.5em 0 .5em 0; margin-bottom:2em; }
|
||||
#category_list .checkbox { margin-top:1em; border:0px; }
|
||||
|
||||
#menu_zone_info { background-color:#FFFFFF; z-index:999; display:none; overflow:hidden; padding-left:10px; border-left:1px dashed #CCCCCC; }
|
||||
#category_info { background-color:#FFFFFF; z-index:999; display:none; overflow:hidden; padding-left:10px; border-left:1px dashed #CCCCCC; }
|
||||
10
modules/blog/tpl/filter/delete_blog.xml
Normal file
10
modules/blog/tpl/filter/delete_blog.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<filter name="delete_blog" module="blog" act="procBlogAdminDeleteBlog">
|
||||
<form>
|
||||
<node target="module_srl" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeDeleteBlog">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="page" />
|
||||
</response>
|
||||
</filter>
|
||||
11
modules/blog/tpl/filter/delete_category.xml
Normal file
11
modules/blog/tpl/filter/delete_category.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<filter name="delete_category" module="blog" act="procBlogAdminDeleteCategory" confirm_msg_code="confirm_delete">
|
||||
<form>
|
||||
<node target="category_srl" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeDeleteCategory">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="xml_file" />
|
||||
<tag name="category_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
30
modules/blog/tpl/filter/insert_blog.xml
Normal file
30
modules/blog/tpl/filter/insert_blog.xml
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<filter name="insert_blog" module="blog" act="procBlogAdminInsertBlog" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="mid" required="true" filter="alpha_number" />
|
||||
<node target="browser_title" required="true" maxlength="250" />
|
||||
<node target="list_count" required="true" filter="number" />
|
||||
<node target="page_count" required="true" filter="number" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="blog_name" target="mid" />
|
||||
<param name="module_srl" target="module_srl" />
|
||||
<param name="module_category_srl" target="module_category_srl" />
|
||||
<param name="layout_srl" target="layout_srl" />
|
||||
<param name="skin" target="skin" />
|
||||
<param name="browser_title" target="browser_title" />
|
||||
<param name="list_count" target="list_count" />
|
||||
<param name="page_count" target="page_count" />
|
||||
<param name="is_default" target="is_default" />
|
||||
<param name="description" target="description" />
|
||||
<param name="header_text" target="header_text" />
|
||||
<param name="footer_text" target="footer_text" />
|
||||
<param name="admin_id" target="admin_id" />
|
||||
<param name="open_rss" target="open_rss" />
|
||||
</parameter>
|
||||
<response callback_func="completeInsertBlog">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="page" />
|
||||
<tag name="module_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
23
modules/blog/tpl/filter/insert_category.xml
Normal file
23
modules/blog/tpl/filter/insert_category.xml
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<filter name="insert_category" module="blog" act="procBlogAdminInsertCategory" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="module_srl" required="true" />
|
||||
<node target="category_srl" required="true" />
|
||||
<node target="category_name" required="true" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="module_srl" target="module_srl" />
|
||||
<param name="category_srl" target="category_srl" />
|
||||
<param name="parent_srl" target="parent_srl" />
|
||||
<param name="name" target="category_name" />
|
||||
<param name="expand" target="expand" />
|
||||
<param name="group_srls" target="group_srls" />
|
||||
</parameter>
|
||||
<response callback_func="completeInsertCategory">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="module_srl" />
|
||||
<tag name="category_srl" />
|
||||
<tag name="parent_srl" />
|
||||
<tag name="xml_file" />
|
||||
</response>
|
||||
</filter>
|
||||
11
modules/blog/tpl/filter/insert_grant.xml
Normal file
11
modules/blog/tpl/filter/insert_grant.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<filter name="insert_grant" module="blog" act="procBlogAdminInsertGrant" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="module_srl" required="true" filter="number" />
|
||||
</form>
|
||||
<response callback_func="completeInsertGrant">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="page" />
|
||||
<tag name="module_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
7
modules/blog/tpl/filter/manage_checked_document.xml
Normal file
7
modules/blog/tpl/filter/manage_checked_document.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<filter name="manage_checked_document" module="blog" act="procBlogAdminManageCheckedDocument">
|
||||
<form />
|
||||
<response callback_func="completeManageDocument">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
10
modules/blog/tpl/filter/move_category.xml
Normal file
10
modules/blog/tpl/filter/move_category.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<filter name="move_category" module="blog" act="procBlogAdminMoveCategory" confirm_msg_code="confirm_move">
|
||||
<form />
|
||||
<parameter />
|
||||
<response callback_func="completeMoveCategory">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="xml_file" />
|
||||
<tag name="source_category_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
41
modules/blog/tpl/grant_list.html
Normal file
41
modules/blog/tpl/grant_list.html
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
<!--#include("./header.html")-->
|
||||
<!--%import("filter/insert_grant.xml")-->
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert_grant)">
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
|
||||
<table cellspacing="0" class="tableType3">
|
||||
<col width="130" />
|
||||
<col width="*" />
|
||||
<col width="80" />
|
||||
<col width="80" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">{$lang->grant}</th>
|
||||
<th scope="col" colspan="3">{$lang->target}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<!--@foreach($grant_list as $key => $val)-->
|
||||
<tr>
|
||||
<th scope="row">{$val->title}</th>
|
||||
<td class="left">
|
||||
<!--@foreach($group_list as $k => $v)-->
|
||||
<input type="checkbox" class="checkbox" name="{$key}" value="{$v->group_srl}" id="grant_{$key}_{$v->group_srl}" <!--@if(is_array($module_info->grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"<!--@end-->/>
|
||||
<label for="grant_{$key}_{$v->group_srl}">{$v->title}</label>
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td><a href="#" onclick="doSelectAll(this, '{$key}')" class="blue">{$lang->cmd_select_all}</a></td>
|
||||
<td><a href="#" onclick="doUnSelectAll(this, '{$key}')" class="red">{$lang->cmd_unselect_all}</a></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="tRight gap1">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_save}" accesskey="s" /></span>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
37
modules/blog/tpl/header.html
Normal file
37
modules/blog/tpl/header.html
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<!--%import("js/blog_admin.js")-->
|
||||
|
||||
<!-- 블로그 관리 메뉴 설정 -->
|
||||
{@
|
||||
$blog_menu_list = array(
|
||||
'dispBlogAdminBlogInfo'=>$lang->cmd_view_info,
|
||||
'dispBlogAdminCategoryInfo'=>$lang->cmd_manage_category,
|
||||
'dispBlogAdminGrantInfo'=>$lang->cmd_manage_grant,
|
||||
'dispBlogAdminSkinInfo'=>$lang->cmd_manage_skin,
|
||||
'dispLayoutAdminEdit'=>$lang->cmd_layout_edit,
|
||||
);
|
||||
}
|
||||
|
||||
<h3>{$lang->blog} <span class="gray">{$lang->cmd_management}</span></h3>
|
||||
|
||||
<!--@if($module_info)-->
|
||||
<div class="header4">
|
||||
<!--@if($module_info->mid)-->
|
||||
<h4>{$module_info->mid} <!--@if($module_info->is_default=='N')--><span class="bracket">({$lang->is_default})</span><!--@end--> <span class="vr">|</span> <a href="{getUrl('','mid',$module_info->mid)}" onclick="window.open(this.href); return false;" class="view">View</a></h4>
|
||||
<!--@end-->
|
||||
|
||||
<ul class="localNavigation">
|
||||
<!--@if($module=='admin')-->
|
||||
<li <!--@if($act=='dispBlogAdminContent')-->class="on"<!--@end-->><a href="{getUrl('act','dispBlogAdminContent','module_srl','')}">{$lang->cmd_blog_list}</a></li>
|
||||
<!--@else-->
|
||||
<li><a href="{getUrl('act','')}">{$lang->cmd_back}</a></li>
|
||||
<!--@end-->
|
||||
<!--@foreach($blog_menu_list as $key => $val)-->
|
||||
<!--@if($key != 'dispBlogAdminCategoryInfo')-->
|
||||
<li <!--@if($act==$key)-->class="on"<!--@end-->><a href="{getUrl('act',$key,'layout_srl',$module_srl)}">{$val}</a></li>
|
||||
<!--@else-->
|
||||
<li <!--@if($act==$key)-->class="on"<!--@end-->><a href="{getUrl('act',$key,'layout_srl',$module_srl)}" onclick="winopen(this.href,'BlogMenu','width=850,height=800,resizable=yes,scrollbars=yes,toolbars=no');return false;">{$val}</a></li>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</ul>
|
||||
</div>
|
||||
<!--@end-->
|
||||
83
modules/blog/tpl/index.html
Normal file
83
modules/blog/tpl/index.html
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
<!--#include("header.html")-->
|
||||
|
||||
<div class="infoText">{nl2br($lang->about_blog)}</div>
|
||||
|
||||
<!-- 정보 -->
|
||||
<div class="tableSummaryType1">
|
||||
Total <strong>{number_format($total_count)}</strong>, Page <strong>{number_format($page)}</strong>/{number_format($total_page)}
|
||||
</div>
|
||||
|
||||
<!-- 목록 -->
|
||||
<table cellspacing="0" class="tableType1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">{$lang->no}</th>
|
||||
<th scope="col">
|
||||
<form action="./" method="get" onsubmit="return doChangeCategory(this);">
|
||||
<input type="hidden" name="module" value="{$module}" />
|
||||
<input type="hidden" name="act" value="{$act}" />
|
||||
<select name="module_category_srl">
|
||||
<option value="">{$lang->module_category}</option>
|
||||
<!--@foreach($module_category as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
|
||||
<!--@end-->
|
||||
<option value="">---------</option>
|
||||
<option value="-1">{$lang->cmd_management}</option>
|
||||
</select>
|
||||
<span class="button"><input type="submit" name="go_button" id="go_button" value="GO" /></span>
|
||||
</form>
|
||||
</th>
|
||||
<th scope="col">{$lang->mid}</th>
|
||||
<th scope="col">{$lang->browser_title}</th>
|
||||
<th scope="col">{$lang->is_default}</th>
|
||||
<th scope="col">{$lang->skin}</th>
|
||||
<th scope="col">{$lang->admin_id}</th>
|
||||
<th scope="col">{$lang->regdate}</th>
|
||||
<th scope="col">{$lang->cmd_view}</th>
|
||||
<th scope="col">{$lang->cmd_delete}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<!--@if($blog_list)-->
|
||||
<tbody>
|
||||
<!--@foreach($blog_list as $no => $val)-->
|
||||
<tr>
|
||||
<td class="tahoma">{$no}</td>
|
||||
<td>
|
||||
<!--@if(!$val->module_category_srl)-->
|
||||
{$lang->not_exists}
|
||||
<!--@else-->
|
||||
{$module_category[$val->module_category_srl]->title}
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td><a href="{getUrl('act','dispBlogAdminBlogInfo','module_srl',$val->module_srl)}" class="blue">{$val->mid}</a></td>
|
||||
<td>{htmlspecialchars($val->browser_title)}</td>
|
||||
<td class="tahoma">{$val->is_default}</td>
|
||||
<td class="tahoma">{$val->skin}</td>
|
||||
<td class="tahoma">{$val->admin_id}</td>
|
||||
<td class="tahoma">{zdate($val->regdate,"Y-m-d")}</td>
|
||||
<td class="blue"><a href="./?mid={$val->mid}" target="_blank">{$lang->cmd_view}</a></td>
|
||||
<td class="red"><!--@if($val->is_default!='Y')--><a href="{getUrl('act','dispBlogAdminDeleteBlog','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a><!--@end--></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</tbody>
|
||||
<!--@end-->
|
||||
</table>
|
||||
|
||||
<!-- 버튼 -->
|
||||
<div class="fr gap1">
|
||||
<a href="{getUrl('act','dispBlogAdminInsertBlog','module_srl','')}" class="button"><span>{$lang->cmd_make}</span></a>
|
||||
</div>
|
||||
|
||||
<!-- 페이지 네비게이션 -->
|
||||
<div class="pageNavigation">
|
||||
<a href="{getUrl('page','','module_srl','')}" class="goToFirst"><img src="../../admin/tpl/images/bottomGotoFirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<!--@if($page == $page_no)-->
|
||||
<span class="current">{$page_no}</span>
|
||||
<!--@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="goToLast"><img src="../../admin/tpl/images/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||
</div>
|
||||
270
modules/blog/tpl/js/blog_admin.js
Normal file
270
modules/blog/tpl/js/blog_admin.js
Normal file
|
|
@ -0,0 +1,270 @@
|
|||
/**
|
||||
* @file modules/blog/js/blog_admin.js
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief blog 모듈의 관리자용 javascript
|
||||
**/
|
||||
|
||||
/* 모듈 생성 후 */
|
||||
function completeInsertBlog(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
|
||||
var page = ret_obj['page'];
|
||||
|
||||
alert(message);
|
||||
|
||||
var url = current_url.setQuery('act','dispBlogAdminBlogInfo');
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 모듈 삭제 후 */
|
||||
function completeDeleteBlog(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var page = ret_obj['page'];
|
||||
alert(message);
|
||||
|
||||
var url = current_url.setQuery('act','dispBlogAdminContent').setQuery('module_srl','');
|
||||
if(page) url = url.setQuery('page',page);
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 카테고리 관련 작업들 */
|
||||
function doUpdateCategory(category_srl, mode, message) {
|
||||
if(typeof(message)!='undefined'&&!confirm(message)) return;
|
||||
|
||||
var fo_obj = xGetElementById('fo_category_info');
|
||||
fo_obj.category_srl.value = category_srl;
|
||||
fo_obj.mode.value = mode;
|
||||
|
||||
procFilter(fo_obj, update_category);
|
||||
}
|
||||
|
||||
/* 카테고리 정보 수정 후 */
|
||||
function completeUpdateCategory(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var module_srl = ret_obj['module_srl'];
|
||||
var page = ret_obj['page'];
|
||||
alert(message);
|
||||
|
||||
var url = current_url.setQuery('module_srl',module_srl).setQuery('act','dispBlogAdminCategoryInfo');
|
||||
if(page) url.setQuery('page',page);
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 권한 관련 */
|
||||
function doSelectAll(obj, key) {
|
||||
var fo_obj = obj.parentNode;
|
||||
while(fo_obj.nodeName != 'FORM') {
|
||||
fo_obj = fo_obj.parentNode;
|
||||
}
|
||||
|
||||
for(var i=0;i<fo_obj.length;i++) {
|
||||
var tobj = fo_obj[i];
|
||||
if(tobj.name == key) tobj.checked=true;
|
||||
}
|
||||
}
|
||||
|
||||
function doUnSelectAll(obj, key) {
|
||||
var fo_obj = obj.parentNode;
|
||||
while(fo_obj.nodeName != 'FORM') {
|
||||
fo_obj = fo_obj.parentNode;
|
||||
}
|
||||
|
||||
for(var i=0;i<fo_obj.length;i++) {
|
||||
var tobj = fo_obj[i];
|
||||
if(tobj.name == key) tobj.checked = false;
|
||||
}
|
||||
}
|
||||
|
||||
function completeInsertGrant(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var page = ret_obj['page'];
|
||||
var module_srl = ret_obj['module_srl'];
|
||||
|
||||
alert(message);
|
||||
|
||||
var url = current_url.setQuery('module_srl',module_srl).setQuery('act','dispBlogAdminGrantInfo');
|
||||
if(page) url.setQuery('page',page);
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 카테고리 이동 */
|
||||
function doChangeCategory(fo_obj) {
|
||||
var module_category_srl = fo_obj.module_category_srl.options[fo_obj.module_category_srl.selectedIndex].value;
|
||||
if(module_category_srl==-1) {
|
||||
location.href = current_url.setQuery('act','dispModuleAdminCategory');
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 선택된 글의 삭제 또는 이동 */
|
||||
function doManageDocument(type, mid) {
|
||||
var fo_obj = xGetElementById("fo_management");
|
||||
fo_obj.type.value = type;
|
||||
|
||||
procFilter(fo_obj, manage_checked_document);
|
||||
}
|
||||
|
||||
/* 선택된 글의 삭제 또는 이동 후 */
|
||||
function completeManageDocument(ret_obj) {
|
||||
if(opener) opener.location.href = opener.location.href;
|
||||
alert(ret_obj['message']);
|
||||
window.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* 카테고리 관리
|
||||
**/
|
||||
|
||||
/* 빈 카테고리 아이템 추가 */
|
||||
function doInsertCategory(parent_srl) {
|
||||
if(typeof(parent_srl)=='undefined') parent_srl = 0;
|
||||
var params = {node_srl:0, parent_srl:parent_srl}
|
||||
doGetCategoryInfo(null, params);
|
||||
deSelectNode();
|
||||
}
|
||||
|
||||
/* 카테고리 클릭시 적용할 함수 */
|
||||
function doGetCategoryInfo(category_id, obj) {
|
||||
// category, category_id, node_srl을 추출
|
||||
var fo_obj = xGetElementById("fo_category");
|
||||
var node_srl = 0;
|
||||
var parent_srl = 0;
|
||||
|
||||
if(typeof(obj)!="undefined") {
|
||||
if(typeof(obj.getAttribute)!="undefined") {
|
||||
node_srl = obj.getAttribute("node_srl");
|
||||
} else {
|
||||
node_srl = obj.node_srl;
|
||||
parent_srl = obj.parent_srl;
|
||||
}
|
||||
}
|
||||
|
||||
var params = new Array();
|
||||
params["category_srl"] = node_srl;
|
||||
params["parent_srl"] = parent_srl;
|
||||
|
||||
// 서버에 요청하여 해당 노드의 정보를 수정할 수 있도록 한다.
|
||||
var response_tags = new Array('error','message','tpl');
|
||||
exec_xml('blog', 'getBlogAdminCategoryTplInfo', params, completeGetCategoryTplInfo, response_tags, params);
|
||||
}
|
||||
|
||||
/* 서버로부터 받아온 카테고리 정보를 출력 */
|
||||
xAddEventListener(document,'mousedown',checkMousePosition);
|
||||
var _xPos = 0;
|
||||
var _yPos = 0;
|
||||
function checkMousePosition(e) {
|
||||
var evt = new xEvent(e);
|
||||
_xPos = evt.pageX;
|
||||
_yPos = evt.pageY;
|
||||
}
|
||||
|
||||
function hideCategoryInfo() {
|
||||
var obj = xGetElementById('category_info');
|
||||
obj.style.display = "none";
|
||||
}
|
||||
|
||||
function completeGetCategoryTplInfo(ret_obj, response_tags) {
|
||||
var obj = xGetElementById('category_info');
|
||||
var tpl = ret_obj['tpl'];
|
||||
xInnerHtml(obj, tpl);
|
||||
obj.style.display = 'block';
|
||||
|
||||
var fo_obj = xGetElementById("fo_category");
|
||||
fo_obj.category_name.focus();
|
||||
|
||||
var x = _xPos + 50;
|
||||
var y = _yPos - xHeight(obj)/2+ xScrollTop();
|
||||
xLeft(obj, x);
|
||||
xTop(obj, y);
|
||||
xRemoveEventListener(document,'mousedown',checkMousePosition);
|
||||
|
||||
if(xGetElementById('cBody') && xHeight('cBody')< y+xHeight(obj)+50) {
|
||||
xHeight('cBody', y + xHeight(obj) + 50);
|
||||
}
|
||||
|
||||
if(typeof('fixAdminLayoutFooter')=="function") fixAdminLayoutFooter();
|
||||
}
|
||||
|
||||
/* 카테고리 아이템 입력후 */
|
||||
function completeInsertCategory(ret_obj) {
|
||||
var xml_file = ret_obj['xml_file'];
|
||||
var category_srl = ret_obj['category_srl'];
|
||||
var module_srl = ret_obj['module_srl'];
|
||||
var parent_srl = ret_obj['parent_srl'];
|
||||
|
||||
if(!xml_file) return;
|
||||
|
||||
loadTreeMenu(xml_file, 'category', 'zone_category', category_title, '',doGetCategoryInfo, category_srl, doMoveTree);
|
||||
|
||||
if(!category_srl) {
|
||||
xInnerHtml("category_info", "");
|
||||
} else {
|
||||
var params = {node_srl:category_srl, parent_srl:parent_srl}
|
||||
doGetCategoryInfo(null, params)
|
||||
}
|
||||
|
||||
if(typeof('fixAdminLayoutFooter')=="function") fixAdminLayoutFooter();
|
||||
}
|
||||
|
||||
|
||||
/* 카테고리를 드래그하여 이동한 후 실행할 함수 , 이동하는 category_srl과 대상 category_srl을 받음 */
|
||||
function doMoveTree(category_id, source_category_srl, target_category_srl) {
|
||||
source_category_srl = source_category_srl.replace(/menu_category_/,'');
|
||||
target_category_srl = target_category_srl.replace(/menu_category_/,'');
|
||||
var fo_obj = xGetElementById("fo_move_category");
|
||||
fo_obj.source_category_srl.value = source_category_srl;
|
||||
fo_obj.target_category_srl.value = target_category_srl;
|
||||
|
||||
// 이동 취소를 선택하였을 경우 다시 그림;;
|
||||
if(!procFilter(fo_obj, move_category)) {
|
||||
var params = new Array();
|
||||
params["xml_file"] = xGetElementById('fo_category').xml_file.value;
|
||||
params["source_category_srl"] = source_category_srl;
|
||||
completeMoveCategory(params);
|
||||
}
|
||||
}
|
||||
|
||||
function completeMoveCategory(ret_obj) {
|
||||
var source_category_srl = ret_obj['source_category_srl'];
|
||||
var xml_file = ret_obj['xml_file'];
|
||||
|
||||
loadTreeMenu(xml_file, 'category', "zone_category", category_title, '', doGetCategoryInfo, source_category_srl, doMoveTree);
|
||||
}
|
||||
|
||||
/* 카테고리 목록 갱신 */
|
||||
function doReloadTreeCategory(module_srl) {
|
||||
var params = new Array();
|
||||
params["module_srl"] = module_srl;
|
||||
|
||||
// 서버에 요청하여 해당 노드의 정보를 수정할 수 있도록 한다.
|
||||
var response_tags = new Array('error','message', 'xml_file');
|
||||
exec_xml('blog', 'procBlogAdminMakeXmlFile', params, completeInsertCategory, response_tags, params);
|
||||
}
|
||||
|
||||
/* 카테고리 삭제 */
|
||||
function doDeleteCategory(category_srl) {
|
||||
var fo_obj = xGetElementById("fo_category");
|
||||
if(!fo_obj) return;
|
||||
|
||||
procFilter(fo_obj, delete_category);
|
||||
}
|
||||
|
||||
/* 카테고리 아이템 삭제 후 */
|
||||
function completeDeleteCategory(ret_obj) {
|
||||
var module_srl = ret_obj['module_srl'];
|
||||
var category_srl = ret_obj['category_srl'];
|
||||
var xml_file = ret_obj['xml_file'];
|
||||
alert(ret_obj['message']);
|
||||
|
||||
loadTreeMenu(xml_file, 'category', 'zone_category', category_title, '', doGetCategoryInfo, category_srl, doMoveTree);
|
||||
|
||||
var obj = xGetElementById('category_info');
|
||||
xInnerHtml(obj, "");
|
||||
obj.style.display = 'none';
|
||||
}
|
||||
|
||||
584
modules/blog/tpl/js/blog_tree_menu.js
Normal file
584
modules/blog/tpl/js/blog_tree_menu.js
Normal file
|
|
@ -0,0 +1,584 @@
|
|||
/**
|
||||
* @file blog_tree_menu.js
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief xml파일을 읽어서 트리 메뉴를 그려줌
|
||||
*
|
||||
* common/tpl/tree_menu.js 를 서비스용으로만 사용하기 위해서 수정한 것.
|
||||
* 관리 기능이 없고 css 적용이 가능
|
||||
**/
|
||||
|
||||
// 폴더를 모두 열고/닫기 위한 변수 설정
|
||||
var blog_tree_menu_folder_list = new Array();
|
||||
|
||||
// 노드의 정보를 가지고 있을 변수
|
||||
var blog_node_info_list = new Array();
|
||||
|
||||
// 트리메뉴의 정보를 담고 있는 xml파일을 읽고 drawTreeMenu()를 호출하는 함수
|
||||
function blogLoadTreeMenu(xml_url, title, index_url) {
|
||||
// 일단 그릴 곳을 찾아서 사전 작업을 함 (그릴 곳이 없다면 아예 시도를 안함)
|
||||
var zone = xGetElementById("blog_category");
|
||||
if(typeof(zone)=="undefined") return;
|
||||
|
||||
// 노드 정보들을 담을 변수 세팅
|
||||
blog_node_info_list = new Array();
|
||||
|
||||
// 제목이 없으면 제목을 category로 지정
|
||||
if(typeof(title)=="undefined" || !title) title = "category";
|
||||
|
||||
// index url이 없으면 현재 # 으로 대체
|
||||
if(!index_url) index_url= "#";
|
||||
|
||||
// xml_handler를 이용해서 직접 메뉴 xml파일를 읽음
|
||||
if(!xml_url) return;
|
||||
var oXml = new xml_handler();
|
||||
oXml.reset();
|
||||
oXml.xml_path = url;
|
||||
|
||||
// menu_id, zone_id는 계속 달고 다녀야함
|
||||
var param = {"title":title, "index_url":index_url}
|
||||
|
||||
// 요청후 drawTreeMenu()함수를 호출 (xml_handler.js에서 request method를 직접 이용)
|
||||
oXml.request(blogDrawTreeMenu, oXml, null, null, null, param);
|
||||
}
|
||||
|
||||
// 트리메뉴 XML정보를 이용해서 정해진 zone에 출력
|
||||
function blogDrawTreeMenu(oXml, callback_func, resopnse_tags, null_func, param) {
|
||||
var title = param.title;
|
||||
var index_url = param.index_url;
|
||||
|
||||
var zone = xGetElementById("blog_category");
|
||||
var html = "";
|
||||
|
||||
// 제목 지정
|
||||
html = '<div class="blog_category_title"style="cursor:pointer;padding-left:18px;margin-bottom:5px;background:url('+tree_menu_icon_path+'folder.gif) no-repeat left;" onclick="location.href=\''+index_url+'\';return false;" >'+title+'</div>';
|
||||
|
||||
var xmlDoc = oXml.getResponseXml();
|
||||
if(!xmlDoc) {
|
||||
xInnerHtml(zone, html);
|
||||
return null;
|
||||
}
|
||||
|
||||
blog_tree_menu_folder_list[menu_id] = new Array();
|
||||
|
||||
// node 태그에 해당하는 값들을 가져와서 html을 작성
|
||||
var node_list = xmlDoc.getElementsByTagName("node");
|
||||
if(node_list.length>0) {
|
||||
var root = xmlDoc.getElementsByTagName("root")[0];
|
||||
var output = drawNode(root, menu_id);
|
||||
html += output.html;
|
||||
}
|
||||
|
||||
// 출력하려는 zone이 없다면 load후에 출력하도록 함
|
||||
if(!zone) {
|
||||
xAddEventListener(window, 'load', function() { drawTeeMenu(zone_id, menu_id, html); });
|
||||
|
||||
// 출력하려는 zone을 찾아졌다면 바로 출력
|
||||
} else {
|
||||
xInnerHtml(zone, html);
|
||||
if(manual_select_node_srl) manualSelectNode(menu_id, manual_select_node_srl);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// 페이지 랜더링 중에 메뉴의 html이 완성되었을때 window.onload event 후에 그리기 재시도를 하게 될 함수
|
||||
function drawTeeMenu(zone_id, menu_id, html) {
|
||||
xInnerHtml(zone_id, html);
|
||||
if(manual_select_node_srl) manualSelectNode(menu_id, manual_select_node_srl);
|
||||
}
|
||||
|
||||
// root부터 시작해서 recursive하게 노드를 표혐
|
||||
function drawNode(parent_node, menu_id) {
|
||||
var output = {html:"", expand:"N"}
|
||||
|
||||
for (var i=0; i< parent_node.childNodes.length; i++) {
|
||||
var html = "";
|
||||
|
||||
// nodeName이 node가 아니면 패스~
|
||||
var node = parent_node.childNodes.item(i);
|
||||
if(node.nodeName!="node") continue;
|
||||
|
||||
// node의 기본 변수들 체크
|
||||
var node_srl = node.getAttribute("node_srl");
|
||||
var text = node.getAttribute("text");
|
||||
var url = node.getAttribute("url");
|
||||
var expand = node.getAttribute("expand");
|
||||
|
||||
if(!text) continue;
|
||||
|
||||
// 자식 노드가 있는지 확인
|
||||
var hasChild = false;
|
||||
if(node.hasChildNodes()) hasChild = true;
|
||||
|
||||
// nextSibling가 있는지 확인
|
||||
var hasNextSibling = false;
|
||||
if(i==parent_node.childNodes.length-1) hasNextSibling = true;
|
||||
|
||||
// 후에 사용하기 위해 blog_node_info_list에 node_srl을 값으로 하여 node object 추가
|
||||
blog_node_info_list[menu_id][node_srl] = node;
|
||||
|
||||
// zone_id 값을 세팅
|
||||
var zone_id = "menu_"+menu_id+"_"+node_srl;
|
||||
blog_tree_menu_folder_list[menu_id][blog_tree_menu_folder_list[menu_id].length] = zone_id;
|
||||
|
||||
// url을 확인하여 현재의 url과 동일하다고 판단되면 manual_select_node_srl 에 값을 추가 (관리자페이지일 경우는 무시함)
|
||||
if(node_callback_func[menu_id] == moveTreeMenu && url && current_url.getQuery('category')==node_srl) manual_select_node_srl = node_srl;
|
||||
|
||||
// manual_select_node_srl이 node_srl과 같으면 펼침으로 처리
|
||||
if(manual_select_node_srl == node_srl) expand = "Y";
|
||||
|
||||
// 아이콘 설정
|
||||
var line_icon = null;
|
||||
var folder_icon = null;
|
||||
|
||||
// 자식 노드가 있을 경우 자식 노드의 html을 구해옴
|
||||
var child_output = null;
|
||||
var child_html = "";
|
||||
if(hasChild) {
|
||||
// 자식 노드의 zone id를 세팅
|
||||
var child_zone_id = zone_id+"_child";
|
||||
blog_tree_menu_folder_list[menu_id][blog_tree_menu_folder_list[menu_id].length] = child_zone_id;
|
||||
|
||||
// html을 받아옴
|
||||
child_output = drawNode(node, menu_id);
|
||||
var chtml = child_output.html;
|
||||
var cexpand = child_output.expand;
|
||||
if(cexpand == "Y") expand = "Y";
|
||||
|
||||
// 무조건 펼침이 아닐 경우
|
||||
if(expand!="Y") {
|
||||
if(!hasNextSibling) child_html += '<div id="'+child_zone_id+'"style="display:none;padding-left:16px;background:url('+tree_menu_icon_path+'line.gif) repeat-y left;">'+chtml+'</div>';
|
||||
else child_html += '<div id="'+child_zone_id+'" style="display:none;padding-left:16px;">'+chtml+'</div>';
|
||||
// 무조건 펼침일 경우
|
||||
} else {
|
||||
if(!hasNextSibling) child_html += '<div id="'+child_zone_id+'"style="display:block;padding-left:16px;background:url('+tree_menu_icon_path+'line.gif) repeat-y left;">'+chtml+'</div>';
|
||||
else child_html += '<div id="'+child_zone_id+'" style="display:block;padding-left:16px;">'+chtml+'</div>';
|
||||
}
|
||||
}
|
||||
|
||||
// 자식 노드가 있는지 확인하여 있으면 아이콘을 바꿈
|
||||
if(hasChild) {
|
||||
// 무조건 펼침이 아닐 경우
|
||||
if(expand != "Y") {
|
||||
if(!hasNextSibling) {
|
||||
line_icon = "minus";
|
||||
folder_icon = "page";
|
||||
} else {
|
||||
line_icon = "minusbottom";
|
||||
folder_icon = "page";
|
||||
}
|
||||
// 무조건 펼침일 경우
|
||||
} else {
|
||||
if(!hasNextSibling) {
|
||||
line_icon = "plus";
|
||||
folder_icon = "page";
|
||||
} else {
|
||||
line_icon = "plusbottom";
|
||||
folder_icon = "page";
|
||||
}
|
||||
}
|
||||
|
||||
// 자식 노드가 없을 경우
|
||||
} else {
|
||||
if(hasNextSibling) {
|
||||
line_icon = "joinbottom";
|
||||
folder_icon = "page";
|
||||
} else {
|
||||
line_icon = "join";
|
||||
folder_icon = "page";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// html 작성
|
||||
html += '<div id="'+zone_id+'" style="margin:0px;font-size:9pt;">';
|
||||
|
||||
if(hasChild) html+= '<span style="cursor:pointer;" onclick="toggleFolder(\''+zone_id+'\');return false;">';
|
||||
else html+= '<span>';
|
||||
|
||||
html += '<img id="'+zone_id+'_line_icon" src="'+tree_menu_icon_path+line_icon+'.gif" alt="line" align="top" /><img id="'+zone_id+'_folder_icon" src="'+tree_menu_icon_path+folder_icon+'.gif" alt="folder" align="top" /></span>';
|
||||
|
||||
var chk_enable = xGetElementById(menu_id+"_enable_move");
|
||||
if(chk_enable) {
|
||||
html += '<span><span id="'+zone_id+'_node" style="cursor:move;padding:1px 2px 1px 2px;margin-top:1px;cursor:pointer;" onmousedown="doNodeFunc(this, \''+menu_id+'\','+node_srl+',\''+zone_id+'\');">';
|
||||
} else {
|
||||
html += '<span><span id="'+zone_id+'_node" style="cursor:move;padding:1px 2px 1px 2px;margin-top:1px;cursor:pointer;" onclick="selectNode(\''+menu_id+'\','+node_srl+',\''+zone_id+'\')" ondblclick="toggleFolder(\''+zone_id+'\')">';
|
||||
}
|
||||
|
||||
html += text+'</span></span>';
|
||||
|
||||
html += child_html;
|
||||
|
||||
html += '</div>';
|
||||
|
||||
output.html += html;
|
||||
|
||||
if(expand=="Y") output.expand = "Y";
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
// 관리자 모드일 경우 *_enable_move 의 값에 따라 메뉴 이동을 시키거나 정보를 보여주도록 변경
|
||||
function doNodeFunc(obj, menu_id, node_srl, zone_id) {
|
||||
var chk_enable = xGetElementById(menu_id+"_enable_move");
|
||||
if(!chk_enable || chk_enable.checked!=true || !obj) {
|
||||
selectNode(menu_id,node_srl,zone_id);
|
||||
return;
|
||||
}
|
||||
|
||||
deSelectNode();
|
||||
tree_drag_enable(obj,tree_drag_start,tree_drag,tree_drag_end);
|
||||
}
|
||||
|
||||
// 수동으로 메뉴를 선택하도록 함
|
||||
function manualSelectNode(menu_id, node_srl) {
|
||||
var zone_id = "menu_"+menu_id+"_"+node_srl;
|
||||
selectNode(menu_id,node_srl,zone_id,false);
|
||||
return;
|
||||
}
|
||||
|
||||
// 노드의 폴더 아이콘 클릭시
|
||||
function toggleFolder(zone_id) {
|
||||
// 아이콘을 클릭한 대상을 찾아봄
|
||||
var child_zone = xGetElementById(zone_id+"_child");
|
||||
if(!child_zone) return;
|
||||
|
||||
// 대상의 아이콘들 찾음
|
||||
var line_icon = xGetElementById(zone_id+'_line_icon');
|
||||
var folder_icon = xGetElementById(zone_id+'_folder_icon');
|
||||
|
||||
// 대상의 자식 노드들이 숨겨져 있다면 열고 아니면 닫기
|
||||
if(child_zone.style.display == "block") {
|
||||
child_zone.style.display = "none";
|
||||
if(line_icon.src.indexOf('bottom')>0) line_icon.src = tree_minus_bottom_icon.src;
|
||||
else line_icon.src = tree_minus_icon.src;
|
||||
|
||||
folder_icon.src = tree_folder_icon.src;
|
||||
} else {
|
||||
if(line_icon.src.indexOf('bottom')>0) line_icon.src = tree_plus_bottom_icon.src;
|
||||
else line_icon.src = tree_plus_icon.src;
|
||||
folder_icon.src = tree_open_folder_icon.src;
|
||||
child_zone.style.display = "block";
|
||||
}
|
||||
}
|
||||
|
||||
// 노드의 글자 선택시
|
||||
var prev_selected_node = null;
|
||||
function selectNode(menu_id, node_srl, zone_id, move_url) {
|
||||
// 선택된 노드를 찾아봄
|
||||
var node_zone = xGetElementById(zone_id+'_node');
|
||||
if(!node_zone) return;
|
||||
|
||||
// 이전에 선택된 노드가 있었다면 원래데로 돌림
|
||||
if(prev_selected_node) {
|
||||
var prev_zone = xGetElementById(prev_selected_node.id);
|
||||
if(prev_zone) {
|
||||
prev_zone.style.backgroundColor = "#ffffff";
|
||||
prev_zone.style.fontWeight = "normal";
|
||||
prev_zone.style.color = "#000000";
|
||||
}
|
||||
}
|
||||
|
||||
// 선택된 노드의 글자를 변경
|
||||
prev_selected_node = node_zone;
|
||||
node_zone.style.backgroundColor = "#0e078f";
|
||||
node_zone.style.fontWeight = "bold";
|
||||
node_zone.style.color = "#FFFFFF";
|
||||
|
||||
// 함수 실행
|
||||
if(typeof(move_url)=="undefined"||move_url==true) {
|
||||
var func = node_callback_func[menu_id];
|
||||
func(menu_id, blog_node_info_list[menu_id][node_srl]);
|
||||
//toggleFolder(zone_id);
|
||||
}
|
||||
}
|
||||
|
||||
// 선택된 노드의 표시를 없앰
|
||||
function deSelectNode() {
|
||||
// 이전에 선택된 노드가 있었다면 원래데로 돌림
|
||||
if(!prev_selected_node) return;
|
||||
prev_selected_node.style.backgroundColor = "#ffffff";
|
||||
prev_selected_node.style.fontWeight = "normal";
|
||||
prev_selected_node.style.color = "#000000";
|
||||
}
|
||||
|
||||
|
||||
// 모두 닫기
|
||||
function closeAllTreeMenu(menu_id) {
|
||||
for(var i in blog_tree_menu_folder_list[menu_id]) {
|
||||
var zone_id = blog_tree_menu_folder_list[menu_id][i];
|
||||
var zone = xGetElementById(zone_id);
|
||||
if(!zone) continue;
|
||||
var child_zone = xGetElementById(zone_id+"_child");
|
||||
if(!child_zone) continue;
|
||||
|
||||
child_zone.style.display = "block";
|
||||
toggleFolder(zone_id);
|
||||
}
|
||||
}
|
||||
|
||||
// 모두 열기
|
||||
function openAllTreeMenu(menu_id) {
|
||||
for(var i in blog_tree_menu_folder_list[menu_id]) {
|
||||
var zone_id = blog_tree_menu_folder_list[menu_id][i];
|
||||
var zone = xGetElementById(zone_id);
|
||||
if(!zone) continue;
|
||||
var child_zone = xGetElementById(zone_id+"_child");
|
||||
if(!child_zone) continue;
|
||||
|
||||
child_zone.style.display = "none";
|
||||
toggleFolder(zone_id);
|
||||
}
|
||||
}
|
||||
|
||||
// 메뉴 클릭시 기본으로 동작할 함수 (사용자 임의 함수로 대체될 수 있음)
|
||||
function moveTreeMenu(menu_id, node) {
|
||||
// url과 open_window값을 구함
|
||||
var node_srl = node.getAttribute("node_srl");
|
||||
var url = node.getAttribute("url");
|
||||
var open_window = node.getAttribute("open_window");
|
||||
var hasChild = false;
|
||||
if(node.hasChildNodes()) hasChild = true;
|
||||
|
||||
// url이 없고 child가 있으면 해당 폴더 토글한다
|
||||
if(!url && hasChild) {
|
||||
var zone_id = "menu_"+menu_id+"_"+node_srl;
|
||||
toggleFolder(zone_id);
|
||||
return;
|
||||
}
|
||||
|
||||
// url이 있으면 url을 분석한다 (제로보드 특화된 부분. url이 http나 ftp등으로 시작하면 그냥 해당 url 열기)
|
||||
if(url) {
|
||||
// http, ftp등의 연결이 아닌 경우 제로보드용으로 처리
|
||||
if(url.indexOf('://')==-1) url = "./?"+url;
|
||||
|
||||
// open_window에 따라서 처리
|
||||
if(open_window != "Y") location.href=url;
|
||||
else {
|
||||
var win = window.open(url);
|
||||
win.focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 메뉴 드래그 중이라는 상황을 간직할 변수
|
||||
var tree_drag_manager = {obj:null, isDrag:false}
|
||||
var tree_tmp_object = new Array();
|
||||
var tree_disappear = 0;
|
||||
|
||||
/**
|
||||
* 메뉴 드래깅을 위한 함수들
|
||||
**/
|
||||
// 드래깅시 보여줄 임시 object를 생성하는 함수
|
||||
function tree_create_tmp_object(obj) {
|
||||
var tmp_obj = tree_tmp_object[obj.id];
|
||||
if(tmp_obj) return tmp_obj;
|
||||
|
||||
tmp_obj = xCreateElement('DIV');
|
||||
tmp_obj.id = obj.id + '_tmp';
|
||||
tmp_obj.style.display = 'none';
|
||||
tmp_obj.style.position = 'absolute';
|
||||
tmp_obj.style.backgroundColor = obj.style.backgroundColor;
|
||||
tmp_obj.style.fontSize = obj.style.fontSize;
|
||||
tmp_obj.style.fontFamlily = obj.style.fontFamlily;
|
||||
tmp_obj.style.color = "#5277ff";
|
||||
tmp_obj.style.opacity = 1;
|
||||
tmp_obj.style.filter = 'alpha(opacity=100)';
|
||||
|
||||
document.body.appendChild(tmp_obj);
|
||||
tree_tmp_object[obj.id] = tmp_obj;
|
||||
return tmp_obj;
|
||||
}
|
||||
|
||||
// 기생성된 임시 object를 찾아서 return, 없으면 만들어서 return
|
||||
function tree_get_tmp_object(obj) {
|
||||
var tmp_obj = tree_tmp_object[obj.id];
|
||||
if(!tmp_obj) tmp_obj = tree_create_tmp_object(obj);
|
||||
return tmp_obj;
|
||||
}
|
||||
|
||||
// 메뉴에 마우스 클릭이 일어난 시점에 드래그를 위한 제일 첫 동작 (해당 object에 각종 함수나 상태변수 설정)
|
||||
function tree_drag_enable(child_obj, funcDragStart, funcDrag, funcDragEnd) {
|
||||
// 클릭이 일어난 메뉴의 상위 object를 찾음
|
||||
var obj = child_obj.parentNode.parentNode;
|
||||
|
||||
// 상위 object에 드래그 가능하다는 상태와 각 드래그 관련 함수를 설정
|
||||
obj.draggable = true;
|
||||
obj.drag_start = funcDragStart;
|
||||
obj.drag = funcDrag;
|
||||
obj.drag_end = funcDragEnd;
|
||||
obj.target_id = null;
|
||||
|
||||
// 드래그 가능하지 않다면 드래그 가능하도록 상태 지정하고 mousemove이벤트 등록
|
||||
if (!tree_drag_manager.isDrag) {
|
||||
tree_drag_manager.isDrag = true;
|
||||
xAddEventListener(document, 'mousemove', tree_drag_mouse_move, false);
|
||||
}
|
||||
|
||||
// mousedown이벤트 값을 지정
|
||||
xAddEventListener(obj, 'mousedown', tree_mouse_down, false);
|
||||
}
|
||||
|
||||
// 드래그를 시작할때 호출되는 함수 (이동되는 형태를 보여주기 위한 작업을 함)
|
||||
function tree_drag_start(tobj, px, py) {
|
||||
var obj = tree_get_tmp_object(tobj);
|
||||
|
||||
xInnerHtml(obj, xInnerHtml(tobj));
|
||||
|
||||
tobj.source_color = tobj.style.color;
|
||||
tobj.style.color = "#BBBBBB";
|
||||
|
||||
xLeft(obj, xPageX(tobj));
|
||||
xTop(obj, xPageY(tobj));
|
||||
xWidth(obj, xWidth(tobj));
|
||||
xHeight(obj, xHeight(tobj));
|
||||
|
||||
xDisplay(obj, 'block');
|
||||
}
|
||||
|
||||
// 드래그 시작후 마우스를 이동할때 발생되는 이벤트에 의해 실행되는 함수
|
||||
function tree_drag(tobj, dx, dy) {
|
||||
var obj = tree_get_tmp_object(tobj);
|
||||
xLeft(obj, parseInt(xPageX(obj),10) + parseInt(dx,10));
|
||||
xTop(obj, parseInt(xPageY(obj),10) + parseInt(dy,10));
|
||||
|
||||
var menu_id = tobj.id.replace(/menu_/,'');
|
||||
menu_id = menu_id.replace(/_([0-9]+)$/,'');
|
||||
if(!menu_id) return;
|
||||
|
||||
for(var node_srl in blog_node_info_list[menu_id]) {
|
||||
var zone_id = "menu_"+menu_id+"_"+node_srl;
|
||||
var target_obj = xGetElementById(zone_id);
|
||||
|
||||
var hh = parseInt(xHeight(target_obj),10);
|
||||
var h = parseInt(parseInt(xHeight(target_obj),10)/2,10);
|
||||
|
||||
var l = xPageX(target_obj);
|
||||
var t = xPageY(target_obj);
|
||||
var ll = parseInt(l,10) + parseInt(xWidth(target_obj),10);
|
||||
var tt = parseInt(t,10) + hh;
|
||||
|
||||
if( tobj != target_obj && tobj.xDPX >= l && tobj.xDPX <= ll) {
|
||||
if(tobj.xDPY >= t && tobj.xDPY < tt-h) {
|
||||
try {
|
||||
target_obj.parentNode.insertBefore(tobj, target_obj);
|
||||
tobj.target_id = target_obj.id;
|
||||
} catch(e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 드래그 종료 (이동되는 object가 이동할 곳에 서서히 이동되는 것처럼 보이는 효과)
|
||||
function tree_drag_end(tobj, px, py) {
|
||||
var obj = tree_get_tmp_object(tobj);
|
||||
tree_disappear = tree_disapear_object(obj, tobj);
|
||||
tree_drag_disable(tobj.id);
|
||||
}
|
||||
|
||||
// 스르르 사라지게 함;;
|
||||
function tree_disapear_object(obj, tobj) {
|
||||
var it = 150;
|
||||
var ib = 15;
|
||||
|
||||
var x = parseInt(xPageX(obj),10);
|
||||
var y = parseInt(xPageY(obj),10);
|
||||
var ldt = (x - parseInt(xPageX(tobj),10)) / ib;
|
||||
var tdt = (y - parseInt(xPageY(tobj),10)) / ib;
|
||||
|
||||
return setInterval(function() {
|
||||
if(ib < 1) {
|
||||
clearInterval(tree_disappear);
|
||||
xInnerHtml(tobj,xInnerHtml(obj));
|
||||
xInnerHtml(obj,'');
|
||||
xDisplay(obj, 'none');
|
||||
return;
|
||||
}
|
||||
ib -= 5;
|
||||
x-=ldt;
|
||||
y-=tdt;
|
||||
xLeft(obj, x);
|
||||
xTop(obj, y);
|
||||
}, it/ib);
|
||||
}
|
||||
|
||||
// 마우스다운 이벤트 발생시 호출됨
|
||||
function tree_mouse_down(e) {
|
||||
var evt = new xEvent(e);
|
||||
var obj = evt.target;
|
||||
|
||||
while(obj && !obj.draggable) {
|
||||
obj = xParent(obj, true);
|
||||
}
|
||||
|
||||
if(obj) {
|
||||
xPreventDefault(e);
|
||||
obj.xDPX = evt.pageX;
|
||||
obj.xDPY = evt.pageY;
|
||||
tree_drag_manager.obj = obj;
|
||||
xAddEventListener(document, 'mouseup', tree_mouse_up, false);
|
||||
if (obj.drag_start) obj.drag_start(obj, evt.pageX, evt.pageY);
|
||||
}
|
||||
}
|
||||
|
||||
// 마우스 버튼을 놓았을때 동작될 함수 (각종 이벤트 해제 및 변수 설정 초기화)
|
||||
function tree_mouse_up(e) {
|
||||
if (tree_drag_manager.obj) {
|
||||
xPreventDefault(e);
|
||||
xRemoveEventListener(document, 'mouseup', tree_mouse_up, false);
|
||||
|
||||
if (tree_drag_manager.obj.drag_end) {
|
||||
var evt = new xEvent(e);
|
||||
tree_drag_manager.obj.drag_end(tree_drag_manager.obj, evt.pageX, evt.pageY);
|
||||
}
|
||||
|
||||
tree_drag_manager.obj = null;
|
||||
tree_drag_manager.isDrag = false;
|
||||
}
|
||||
}
|
||||
|
||||
// 드래그할때의 object이동등을 담당
|
||||
function tree_drag_mouse_move(e) {
|
||||
var evt = new xEvent(e);
|
||||
|
||||
if (tree_drag_manager.obj) {
|
||||
xPreventDefault(e);
|
||||
|
||||
var obj = tree_drag_manager.obj;
|
||||
var dx = evt.pageX - obj.xDPX;
|
||||
var dy = evt.pageY - obj.xDPY;
|
||||
|
||||
obj.xDPX = evt.pageX;
|
||||
obj.xDPY = evt.pageY;
|
||||
|
||||
if (obj.drag) {
|
||||
obj.drag(obj, dx, dy);
|
||||
} else {
|
||||
xMoveTo(obj, xLeft(obj) + dx, xTop(obj) + dy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 해당 object 에 더 이상 drag가 되지 않도록 설정
|
||||
function tree_drag_disable(id) {
|
||||
if (!tree_drag_manager) return;
|
||||
var obj = xGetElementById(id);
|
||||
obj.draggable = false;
|
||||
obj.drag_start = null;
|
||||
obj.drag = null;
|
||||
obj.drag_end = null;
|
||||
obj.style.color = obj.source_color;
|
||||
|
||||
xRemoveEventListener(obj, 'mousedown', tree_mouse_down, false);
|
||||
|
||||
if(obj.id && obj.target_id && obj.id!=obj.target_id) {
|
||||
var menu_id = obj.id.replace(/menu_/,'');
|
||||
menu_id = menu_id.replace(/_([0-9]+)$/,'');
|
||||
if(menu_id) {
|
||||
var callback_move_func = node_move_callback_func[menu_id];
|
||||
if(callback_move_func) callback_move_func(menu_id, obj.id, obj.target_id);
|
||||
}
|
||||
}
|
||||
obj.target_id = null;
|
||||
}
|
||||
12
modules/blog/tpl/layout_setup.html
Normal file
12
modules/blog/tpl/layout_setup.html
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<!--#include("./header.html")-->
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert_grant)">
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
|
||||
<!-- 설명 -->
|
||||
<div>
|
||||
{$lang->about_layout_setup}
|
||||
</div>
|
||||
|
||||
</form>
|
||||
140
modules/blog/tpl/skin_info.html
Normal file
140
modules/blog/tpl/skin_info.html
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
<!--#include("./header.html")-->
|
||||
|
||||
<form action="./" method="post" enctype="multipart/form-data" target="hidden_iframe">
|
||||
<input type="hidden" name="module" value="{$module_info->module}" />
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="act" value="procBlogAdminUpdateSkinInfo" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
|
||||
<table cellspacing="0" class="tableType3">
|
||||
<col width="150" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row" colspan="2">{$lang->skin_default_info}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->skin}</th>
|
||||
<td class="left" >{$skin_info->title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->skin_maker}</th>
|
||||
<td class="left" >{$skin_info->maker->name} <!--@if($skin_info->maker->email_address)-->(<a href="mailto:{$skin_info->maker->email_address}">{$skin_info->maker->email_address}</a>)<!--@end--></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->skin_maker_homepage}</th>
|
||||
<td class="left" ><a href="{$skin_info->maker->homepage}" target="_blank">{$skin_info->maker->homepage}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->date}</th>
|
||||
<td class="left" >{$skin_info->maker->date}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->description}</th>
|
||||
<td class="left" >{nl2br($skin_info->maker->description)}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" class="tableType3">
|
||||
<col width="150" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row" colspan="2">{$lang->extra_vars}</th>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<th scope="row">{$lang->colorset}</th>
|
||||
<td class="left" >
|
||||
<!--@foreach($skin_info->colorset as $key => $val)-->
|
||||
<!--@if($val->screenshot)-->
|
||||
{@ $_img_info = getImageSize($val->screenshot); $_height = $_img_info[1]+40; $_width = $_img_info[0]+20; $_talign = "center"; }
|
||||
<!--@else-->
|
||||
{@ $_width = 200; $_height = 20; $_talign = "left"; }
|
||||
<!--@end-->
|
||||
<div style="float:left;text-align:{$_talign};margin-bottom:1em;width:{$_width}px;height:{$_height}px;margin-right:10px;">
|
||||
<input type="radio" name="colorset" value="{$val->name}" id="colorset_{$key}" <!--@if($module_info->colorset==$val->name)-->checked="checked"<!--@end-->/>
|
||||
<label for="colorset_{$key}">{$val->title}</label>
|
||||
<!--@if($val->screenshot)-->
|
||||
<br />
|
||||
<img src="{$val->screenshot}" alt="{$val->title}" style="border:1px solid #888888;padding:2px;margin:2px;"/>
|
||||
<!--@end-->
|
||||
</div>
|
||||
<!--@if($key%2==1)--><div class="clear"></div><!--@end-->
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@if($skin_info->menu)-->
|
||||
<!--@foreach($skin_info->menu as $menu_name => $menu_info)-->
|
||||
<tr>
|
||||
<th scope="row">{$menu_info->title}<br />({$menu_name})</th>
|
||||
<td class="left">
|
||||
<select name="{$menu_name}">
|
||||
<option value="0">------------------------</option>
|
||||
<!--@foreach($menu_list as $key => $val)-->
|
||||
<option value="{$val->menu_srl}" <!--@if($val->menu_srl == $menu_info->menu_srl)-->selected="selected"<!--@end-->>{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
|
||||
<!--@foreach($skin_info->extra_vars as $key => $val)-->
|
||||
<tr>
|
||||
<th scope="row">{$val->title}</th>
|
||||
<td class="left">
|
||||
<!--@if($val->type=="text")-->
|
||||
<input type="text" name="{$val->name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w100" />
|
||||
|
||||
<!--@elseif($val->type=="textarea")-->
|
||||
<textarea name="{$val->name}" class="inputTypeTextArea w100">{htmlspecialchars($val->value)}</textarea>
|
||||
|
||||
<!--@elseif($val->type=="select")-->
|
||||
<select name="{$val->name}">
|
||||
<!--@foreach($val->default as $k=>$v)-->
|
||||
<option value="{$v}" <!--@if($v==$val->value)-->selected="selected"<!--@end-->>{$v}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
|
||||
<!--@elseif($val->type=="checkbox")-->
|
||||
<!--@foreach($val->default as $k=>$v)-->
|
||||
<span>
|
||||
<input type="checkbox" name="{$val->name}[]" value="{$v}" id="ch_{$key}_{$k}" <!--@if(in_array($v, $val->value))-->checked="checked"<!--@end--> class="checkbox" />
|
||||
<label for="ch_{$key}_{$k}">{$v}</label>
|
||||
</span>
|
||||
<!--@end-->
|
||||
|
||||
<!--@elseif($val->type=="radio")-->
|
||||
<!--@foreach($val->default as $k=>$v)-->
|
||||
<span>
|
||||
<input type="radio" name="{$val->name}" value="{$v}" id="ch_{$key}_{$k}" <!--@if($v==$val->value)-->checked="checked"<!--@end-->/>
|
||||
<label for="ch_{$key}_{$k}">{$v}</label>
|
||||
</span>
|
||||
<!--@end-->
|
||||
|
||||
<!--@elseif($val->type=="image")-->
|
||||
|
||||
<!--@if($val->value)-->
|
||||
<div>
|
||||
<img src="{$val->value}" /><br />
|
||||
<input type="checkbox" name="del_{$val->name}" value="Y" id="del_{$val->name}" class="checkbox" />
|
||||
<label for="del_{$val->name}">{$lang->cmd_delete}</label>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<input type="file" name="{$val->name}" value="" />
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($val->description)-->
|
||||
<p>{nl2br($val->description)}</p>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
|
||||
<div class="gap1 tRight">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<iframe name="hidden_iframe" frameborder="0" style="display:none"></iframe>
|
||||
4
modules/blog/tpl/top_refresh.html
Normal file
4
modules/blog/tpl/top_refresh.html
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<script type="text/javascript">
|
||||
alert("{$lang->success_updated}");
|
||||
top.location.href = top.location.href;
|
||||
</script>
|
||||
Loading…
Add table
Add a link
Reference in a new issue