블로그/방명록 모듈 제거

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3573 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-01-22 02:53:35 +00:00
parent 8df241e334
commit 972c31153d
260 changed files with 0 additions and 8914 deletions

View file

@ -1,468 +0,0 @@
<?php
/**
* @class blogAdminController
* @author zero (zero@nzeo.com)
* @brief blog 모듈의 admin controller class
**/
class blogAdminController extends blog {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 권한 추가
**/
function procBlogAdminInsertGrant() {
$module_srl = Context::get('module_srl');
// 현 모듈의 권한 목록을 가져옴
$grant_list = $this->xml_info->grant;
if(count($grant_list)) {
foreach($grant_list as $key => $val) {
$group_srls = Context::get($key);
if($group_srls) $arr_grant[$key] = explode('|@|',$group_srls);
}
$grants = serialize($arr_grant);
}
$oModuleController = &getController('module');
$oModuleController->updateModuleGrant($module_srl, $grants);
$this->add('module_srl',Context::get('module_srl'));
$this->setMessage('success_registed');
}
/**
* @brief 스킨 정보 업데이트
**/
function procBlogAdminUpdateSkinInfo() {
// module_srl에 해당하는 정보들을 가져오기
$module_srl = Context::get('module_srl');
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
$skin = $module_info->skin;
// 스킨의 정보르 구해옴 (extra_vars를 체크하기 위해서)
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
// 입력받은 변수들을 체크 (mo, act, module_srl, page등 기본적인 변수들 없앰)
$obj = Context::getRequestVars();
unset($obj->act);
unset($obj->module_srl);
unset($obj->page);
// 원 skin_info에서 extra_vars의 type이 image일 경우 별도 처리를 해줌
if($skin_info->extra_vars) {
foreach($skin_info->extra_vars as $vars) {
if($vars->type!='image') continue;
$image_obj = $obj->{$vars->name};
// 삭제 요청에 대한 변수를 구함
$del_var = $obj->{"del_".$vars->name};
unset($obj->{"del_".$vars->name});
if($del_var == 'Y') {
@unlink($module_info->{$vars->name});
continue;
}
// 업로드 되지 않았다면 이전 데이터를 그대로 사용
if(!$image_obj['tmp_name']) {
$obj->{$vars->name} = $module_info->{$vars->name};
continue;
}
// 정상적으로 업로드된 파일이 아니면 무시
if(!is_uploaded_file($image_obj['tmp_name'])) {
unset($obj->{$vars->name});
continue;
}
// 이미지 파일이 아니어도 무시
if(!preg_match("/\.(jpg|jpeg|gif|png)$/i", $image_obj['name'])) {
unset($obj->{$vars->name});
continue;
}
// 경로를 정해서 업로드
$path = sprintf("./files/attach/images/%s/", $module_srl);
// 디렉토리 생성
if(!FileHandler::makeDir($path)) return false;
$filename = $path.$image_obj['name'];
// 파일 이동
if(!move_uploaded_file($image_obj['tmp_name'], $filename)) {
unset($obj->{$vars->name});
continue;
}
// 변수를 바꿈
unset($obj->{$vars->name});
$obj->{$vars->name} = $filename;
}
}
// 메뉴 관리
$menus = get_object_vars($skin_info->menu);
if(count($menus)) {
foreach($menus as $menu_id => $val) {
$menu_srl = Context::get($menu_id);
if($menu_srl) {
$obj->menu->{$menu_id} = $menu_srl;
$obj->{$menu_id} = $menu_srl;
$menu_srl_list[] = $menu_srl;
}
}
// 정해진 메뉴가 있으면 모듈 및 메뉴에 대한 레이아웃 연동
/*
if(count($menu_srl_list)) {
// 해당 메뉴와 레이아웃 값을 매핑
$oMenuAdminController = &getAdminController('menu');
$oMenuAdminController->updateMenuLayout($module_srl, $menu_srl_list);
// 해당 메뉴에 속한 mid의 layout값을 모두 변경
$oModuleController->updateModuleLayout($module_srl, $menu_srl_list);
}
*/
}
// serialize하여 저장
$oDocumentModel = &getModel('document');
$obj->category_xml_file = $oDocumentModel->getCategoryXmlFile($module_srl);
$obj->mid = $module_info->mid;
$skin_vars = serialize($obj);
$oModuleController->updateModuleSkinVars($module_srl, $skin_vars);
// 레이아웃 확장변수 수정
$layout_args->mid = $obj->mid;
$layout_args->extra_vars = $skin_vars;
$layout_args->layout_srl = $module_srl;
$oLayoutAdminController = &getAdminController('layout');
$output = $oLayoutAdminController->updateLayout($layout_args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
$this->setLayoutPath('./common/tpl');
$this->setLayoutFile('default_layout.html');
$this->setTemplatePath($this->module_path.'tpl');
$this->setTemplateFile("top_refresh.html");
}
/**
* @brief 블로그 추가
**/
function procBlogAdminInsertBlog() {
// 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리
$args = Context::gets('module_srl','module_category_srl','blog_name','skin','browser_title','description','is_default','header_text','footer_text','admin_id');
$args->module = 'blog';
$args->mid = $args->blog_name;
unset($args->blog_name);
if($args->is_default!='Y') $args->is_default = 'N';
// 기본 값외의 것들을 정리
$extra_var = delObjectVars(Context::getRequestVars(), $args);
unset($extra_var->act);
unset($extra_var->page);
unset($extra_var->blog_name);
// 확장변수(20개로 제한된 고정 변수) 체크
$user_defined_extra_vars = array();
foreach($extra_var as $key => $val) {
if(substr($key,0,11)!='extra_vars_') continue;
preg_match('/^extra_vars_([0-9]+)_(.*)$/i', $key, $matches);
if(!$matches[1] || !$matches[2]) continue;
$user_defined_extra_vars[$matches[1]]->{$matches[2]} = $val;
unset($extra_var->{$key});
}
for($i=1;$i<=20;$i++) if(!$user_defined_extra_vars[$i]->name) unset($user_defined_extra_vars[$i]);
$extra_var->extra_vars = $user_defined_extra_vars;
$oDB = &DB::getInstance();
$oDB->begin();
// module_srl이 넘어오면 원 모듈이 있는지 확인
if($args->module_srl) {
$oModuleModel = &getModel('module');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl);
// 만약 원래 모듈이 없으면 새로 입력하기 위한 처리
if($module_info->module_srl != $args->module_srl) unset($args->module_srl);
}
// $extra_var를 serialize
$args->extra_vars = serialize($extra_var);
// module 모듈의 controller 객체 생성
$oModuleController = &getController('module');
// is_default=='Y' 이면
if($args->is_default=='Y') $oModuleController->clearDefaultModule();
// module_srl의 값에 따라 insert/update
if(!$args->module_srl) {
// 블로그 등록
$output = $oModuleController->insertModule($args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// 글작성, 파일첨부, 댓글 파일첨부, 관리에 대한 권한 지정
if($output->toBool()) {
$oMemberModel = &getModel('member');
$admin_group = $oMemberModel->getAdminGroup();
$admin_group_srl = $admin_group->group_srl;
$module_srl = $output->get('module_srl');
$grants = serialize(array('write_document'=>array($admin_group_srl), 'fileupload'=>array($admin_group_srl), 'comment_fileupload'=>array($admin_group_srl), 'manager'=>array($admin_group_srl)));
$output = $oModuleController->updateModuleGrant($module_srl, $grants);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
}
// 레이아웃 등록
$layout_args->layout_srl = $layout_args->module_srl = $module_srl;
$layout_args->layout = 'blog';
$layout_args->title = sprintf('%s - %s',$args->browser_title, $args->mid);
$layout_args->layout_path = sprintf('./modules/blog/skins/%s/layout.html', $args->skin);
$oLayoutController = &getAdminController('layout');
$output = $oLayoutController->insertLayout($layout_args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// 기본 카테고리 등록
$category_args->module_srl = $args->module_srl;
$category_args->category_srl = getNextSequence();
$category_args->title = 'Story';
$category_args->expand = 'N';
$this->procBlogAdminInsertCategory($category_args);
$msg_code = 'success_registed';
} else {
// 블로그 데이터 수정
$output = $oModuleController->updateModule($args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// 레이아웃 수정
$layout_args->mid = $args->mid;
$layout_args->layout_srl = $layout_args->module_srl = $module_srl = $output->get('module_srl');
$layout_args->title = $args->browser_title;
$layout_args->layout_path = sprintf('./modules/blog/skins/%s/layout.html', $args->skin);
$oLayoutAdminController = &getAdminController('layout');
$output = $oLayoutAdminController->updateLayout($layout_args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
$msg_code = 'success_updated';
}
$oDB->commit();
$this->add('page',Context::get('page'));
$this->add('module_srl',$output->get('module_srl'));
$this->setMessage($msg_code);
}
/**
* @brief 카테고리 추가
**/
function procBlogAdminInsertCategory($args = null) {
// 입력할 변수 정리
if(!$args) $args = Context::gets('module_srl','category_srl','parent_srl','title','expand','group_srls');
if($args->expand !="Y") $args->expand = "N";
$args->group_srls = str_replace('|@|',',',$args->group_srls);
$args->parent_srl = (int)$args->parent_srl;
$oDocumentController = &getController('document');
$oDocumentModel = &getModel('document');
$oDB = &DB::getInstance();
$oDB->begin();
// 이미 존재하는지를 확인
if($args->category_srl) {
$category_info = $oDocumentModel->getCategory($args->category_srl);
if($category_info->category_srl != $args->category_srl) $args->category_srl = null;
}
// 존재하게 되면 update를 해준다
if($args->category_srl) {
$output = $oDocumentController->updateCategory($args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// 존재하지 않으면 insert를 해준다
} else {
$output = $oDocumentController->insertCategory($args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
}
// XML 파일을 갱신하고 위치을 넘겨 받음
$xml_file = $oDocumentController->makeCategoryFile($args->module_srl);
$oDB->commit();
$this->add('xml_file', $xml_file);
$this->add('module_srl', $args->module_srl);
$this->add('category_srl', $args->category_srl);
$this->add('parent_srl', $args->parent_srl);
}
/**
* @brief 블로그 삭제
**/
function procBlogAdminDeleteBlog() {
$module_srl = Context::get('module_srl');
$oDB = &DB::getInstance();
$oDB->begin();
// 블로그 모듈 삭제
$oModuleController = &getController('module');
$output = $oModuleController->deleteModule($module_srl);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// 레이아웃 삭제
$layout_args->layout_srl = $layout_args->module_srl = $module_srl;
$oLayoutAdminController = &getAdminController('layout');
$output = $oLayoutAdminController->deleteLayout($layout_args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
$oDB->commit();
$this->add('module','blog');
$this->add('page',Context::get('page'));
$this->setMessage('success_deleted');
}
/**
* @brief 카테고리 삭제
**/
function procBlogAdminDeleteCategory() {
// 변수 정리
$args = Context::gets('module_srl','category_srl');
$oDB = &DB::getInstance();
$oDB->begin();
$oDocumentModel = &getModel('document');
// 원정보를 가져옴
$category_info = $oDocumentModel->getCategory($args->category_srl);
if($category_info->parent_srl) $parent_srl = $category_info->parent_srl;
// 자식 노드가 있는지 체크하여 있으면 삭제 못한다는 에러 출력
if($oDocumentModel->getCategoryChlidCount($args->category_srl)) return new Object(-1, 'msg_cannot_delete_for_child');
// DB에서 삭제
$oDocumentController = &getController('document');
$output = $oDocumentController->deleteCategory($args->category_srl);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// XML 파일을 갱신하고 위치을 넘겨 받음
$xml_file = $oDocumentController->makeCategoryFile($args->module_srl);
$oDB->commit();
$this->add('xml_file', $xml_file);
$this->add('category_srl', $parent_srl);
$this->setMessage('success_deleted');
}
/**
* @brief 카테고리 이동
**/
function procBlogAdminMoveCategory() {
$source_category_srl = Context::get('source_category_srl');
$target_category_srl = Context::get('target_category_srl');
$oDocumentModel = &getModel('document');
$oDocumentController = &getController('document');
$target_category = $oDocumentModel->getCategory($target_category_srl);
$source_category = $oDocumentModel->getCategory($source_category_srl);
// source_category에 target_category_srl의 parent_srl, list_order 값을 입력
$source_args->category_srl = $source_category_srl;
$source_args->parent_srl = $target_category->parent_srl;
$source_args->list_order = $target_category->list_order;
$output = $oDocumentController->updateCategory($source_args);
if(!$output->toBool()) return $output;
// target_category의 list_order값을 +1해 준다
$target_args->category_srl = $target_category_srl;
$target_args->parent_srl = $source_category->parent_srl;
$target_args->list_order = $source_category->list_order;
$output = $oDocumentController->updateCategory($target_args);
if(!$output->toBool()) return $output;
// xml파일 재생성
$xml_file = $oDocumentController->makeCategoryFile($source_category->module_srl);
// return 변수 설정
$this->add('xml_file', $xml_file);
$this->add('source_category_srl', $source_category_srl);
}
/**
* @brief xml 파일을 갱신
* 관리자페이지에서 메뉴 구성 간혹 xml파일이 재생성 안되는 경우가 있는데\n
* 이럴 경우 관리자의 수동 갱신 기능을 구현해줌\n
* 개발 중간의 문제인 같고 현재는 문제가 생기지 않으나 굳이 없앨 필요 없는 기능
**/
function procBlogAdminMakeXmlFile() {
// 입력값을 체크
$module_srl = Context::get('module_srl');
// xml파일 재생성
$oDocumentController = &getController('document');
$xml_file = $oDocumentController->makeCategoryFile($module_srl);
// return 값 설정
$this->add('xml_file',$xml_file);
}
}
?>

View file

@ -1,65 +0,0 @@
<?php
/**
* @class blogAdminModel
* @author zero (zero@nzeo.com)
* @version 0.1
* @brief blog 모듈의 admin model class
**/
class blogAdminModel extends blog {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 특정 카테고리의 정보를 이용하여 템플릿을 구한후 return
* 관리자 페이지에서 특정 메뉴의 정보를 추가하기 위해 서버에서 tpl을 컴파일 한후 컴파일 html을 직접 return
**/
function getBlogAdminCategoryTplInfo() {
// 해당 메뉴의 정보를 가져오기 위한 변수 설정
$category_srl = Context::get('category_srl');
$parent_srl = Context::get('parent_srl');
// 회원 그룹의 목록을 가져옴
$oMemberModel = &getModel('member');
$group_list = $oMemberModel->getGroups();
Context::set('group_list', $group_list);
$oDocumentModel = &getModel('document');
// parent_srl이 있고 category_srl 이 없으면 하부 메뉴 추가임
if(!$category_srl && $parent_srl) {
// 상위 메뉴의 정보를 가져옴
$parent_info = $oDocumentModel->getCategory($parent_srl);
// 추가하려는 메뉴의 기본 변수 설정
$category_info->category_srl = getNextSequence();
$category_info->parent_srl = $parent_srl;
$category_info->parent_category_title = $parent_info->title;
// root에 메뉴 추가하거나 기존 메뉴의 수정일 경우
} else {
// category_srl 이 있으면 해당 메뉴의 정보를 가져온다
if($category_srl) $category_info = $oDocumentModel->getCategory($category_srl);
// 찾아진 값이 없다면 신규 메뉴 추가로 보고 category_srl값만 구해줌
if(!$category_info->category_srl) {
$category_info->category_srl = getNextSequence();
}
}
Context::set('category_info', $category_info);
// template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다.
$oTemplate = &TemplateHandler::getInstance();
$tpl = $oTemplate->compile($this->module_path.'tpl', 'category_info');
// return 할 변수 설정
$this->add('tpl', $tpl);
}
}
?>

View file

@ -1,227 +0,0 @@
<?php
/**
* @class blogAdminView
* @author zero (zero@nzeo.com)
* @brief blog 모듈의 admin view class
**/
class blogAdminView extends blog {
/**
* @brief 초기화
*
* blog 모듈은 일반 사용과 관리자용으로 나누어진다.\n
**/
function init() {
// module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅
$module_srl = Context::get('module_srl');
if(!$module_srl && $this->module_srl) {
$module_srl = $this->module_srl;
Context::set('module_srl', $module_srl);
}
// module model 객체 생성
$oModuleModel = &getModel('module');
// module_srl이 넘어오면 해당 모듈의 정보를 미리 구해 놓음
if($module_srl) {
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
if($module_info->module_srl == $module_srl) {
$this->module_info = $module_info;
Context::set('module_info',$module_info);
}
}
// 모듈 카테고리 목록을 구함
$module_category = $oModuleModel->getModuleCategories();
Context::set('module_category', $module_category);
// 만약 블로그 서비스 페이지에서 관리자 기능 호출시 요청된 블로그의 정보와 레이아웃 가져옴
if($this->mid) {
$oView = &getView('blog');
$oView->setModuleInfo($this->module_info, $this->xml_info);
$oView->init();
}
// 템플릿 경로 지정 (blog의 경우 tpl에 관리자용 템플릿 모아놓음)
$this->setTemplatePath($this->module_path."tpl");
}
/**
* @brief 블로그 관리 목록 보여줌
**/
function dispBlogAdminContent() {
// 등록된 blog 모듈을 불러와 세팅
$args->sort_index = "module_srl";
$args->page = Context::get('page');
$args->list_count = 40;
$args->page_count = 10;
$args->s_module_category_srl = Context::get('module_category_srl');
$output = executeQuery('blog.getBlogList', $args);
// 템플릿에 쓰기 위해서 context::set
Context::set('total_count', $output->total_count);
Context::set('total_page', $output->total_page);
Context::set('page', $output->page);
Context::set('blog_list', $output->data);
Context::set('page_navigation', $output->page_navigation);
// 템플릿 파일 지정
$this->setTemplateFile('index');
}
/**
* @brief 선택된 블로그의 정보 출력
**/
function dispBlogAdminBlogInfo() {
// module_srl 값이 없다면 그냥 index 페이지를 보여줌
if(!Context::get('module_srl')) return $this->dispBlogAdminContent();
// 레이아웃이 정해져 있다면 레이아웃 정보를 추가해줌(layout_title, layout)
if($this->module_info->layout_srl) {
$oLayoutModel = &getModel('layout');
$layout_info = $oLayoutModel->getLayout($this->module_info->layout_srl);
$this->module_info->layout = $layout_info->layout;
$this->module_info->layout_title = $layout_info->layout_title;
}
// 정해진 스킨이 있으면 해당 스킨의 정보를 구함
if($this->module_info->skin) {
$oModuleModel = &getModel('module');
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $this->module_info->skin);
$this->module_info->skin_title = $skin_info->title;
}
// 템플릿 파일 지정
$this->setTemplateFile('blog_info');
}
/**
* @brief 블로그 추가 출력
**/
function dispBlogAdminInsertBlog() {
// 스킨 목록을 구해옴
$oModuleModel = &getModel('module');
$skin_list = $oModuleModel->getSkins($this->module_path);
Context::set('skin_list',$skin_list);
// 템플릿 파일 지정
$this->setTemplateFile('blog_insert');
}
/**
* @brief 블로그 추가 설정 보여줌
* 추가설정은 서비스형 모듈들에서 다른 모듈과의 연계를 위해서 설정하는 페이지임
**/
function dispBlogAdminBlogAdditionSetup() {
// content는 다른 모듈에서 call by reference로 받아오기에 미리 변수 선언만 해 놓음
$content = '';
// 추가 설정을 위한 트리거 호출
// 블로그 모듈이지만 차후 다른 모듈에서의 사용도 고려하여 trigger 이름을 공용으로 사용할 수 있도록 하였음
$output = ModuleHandler::triggerCall('module.dispAdditionSetup', 'before', $content);
$output = ModuleHandler::triggerCall('module.dispAdditionSetup', 'after', $content);
Context::set('setup_content', $content);
// 템플릿 파일 지정
$this->setTemplateFile('addition_setup');
}
/**
* @brief 블로그 삭제 화면 출력
**/
function dispBlogAdminDeleteBlog() {
if(!Context::get('module_srl')) return $this->dispBlogAdminContent();
$module_info = Context::get('module_info');
$oDocumentModel = &getModel('document');
$document_count = $oDocumentModel->getDocumentCount($module_info->module_srl);
$module_info->document_count = $document_count;
Context::set('module_info',$module_info);
// 템플릿 파일 지정
$this->setTemplateFile('blog_delete');
}
/**
* @brief 스킨 정보 보여줌
**/
function dispBlogAdminSkinInfo() {
// 현재 선택된 모듈의 스킨의 정보 xml 파일을 읽음
$module_info = Context::get('module_info');
$skin = $module_info->skin;
$oModuleModel = &getModel('module');
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
// skin_info에 extra_vars 값을 지정
if(count($skin_info->extra_vars)) {
foreach($skin_info->extra_vars as $key => $val) {
$name = $val->name;
$type = $val->type;
$value = $module_info->{$name};
if($type=="checkbox"&&!$value) $value = array();
$skin_info->extra_vars[$key]->value= $value;
}
}
// skin_info에 menu값을 지정
if(count($skin_info->menu)) {
foreach($skin_info->menu as $key => $val) {
if($module_info->{$key}) $skin_info->menu->{$key}->menu_srl = $module_info->{$key};
}
}
// 메뉴를 가져옴
$oMenuAdminModel = &getAdminModel('menu');
$menu_list = $oMenuAdminModel->getMenus();
Context::set('menu_list', $menu_list);
Context::set('skin_info', $skin_info);
$this->setTemplateFile('skin_info');
}
/**
* @brief 카테고리의 정보 출력
**/
function dispBlogAdminCategoryInfo() {
// module_srl을 구함
$module_srl = $this->module_info->module_srl;
// 카테고리 정보를 가져옴
$oDocumentModel = &getModel('document');
$category_xml_file = $oDocumentModel->getCategoryXmlFile($module_srl);
Context::set('category_xml_file', $category_xml_file);
Context::addJsFile('./common/js/tree_menu.js');
Context::set('layout','none');
$this->setTemplateFile('category_list');
}
/**
* @brief 권한 목록 출력
**/
function dispBlogAdminGrantInfo() {
// module_srl을 구함
$module_srl = Context::get('module_srl');
// module.xml에서 권한 관련 목록을 구해옴
$grant_list = $this->xml_info->grant;
Context::set('grant_list', $grant_list);
// 권한 그룹의 목록을 가져온다
$oMemberModel = &getModel('member');
$group_list = $oMemberModel->getGroups();
Context::set('group_list', $group_list);
$this->setTemplateFile('grant_list');
}
}
?>

View file

@ -1,90 +0,0 @@
<?php
/**
* @class blog
* @author zero (zero@nzeo.com)
* @brief blog 모듈의 high class
**/
class blog extends ModuleObject {
var $skin = "default"; ///< 스킨 이름
var $list_count = 1; ///< 한 페이지에 나타날 글의 수
var $page_count = 10; ///< 페이지의 수
var $editor = 'default'; ///< 에디터 종류
/**
* @brief 설치시 추가 작업이 필요할시 구현
**/
function moduleInstall() {
// action forward에 등록 (관리자 모드에서 사용하기 위함)
$oModuleController = &getController('module');
$oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminContent');
$oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminBlogInfo');
$oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminBlogAdditionSetup');
$oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminInsertBlog');
$oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminDeleteBlog');
$oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminSkinInfo');
$oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminCategoryInfo');
$oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminMenuInfo');
$oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminGrantInfo');
$oModuleController->insertActionForward('blog', 'controller', 'procBlogAdminUpdateSkinInfo');
return new Object();
}
/**
* @brief 설치가 이상이 없는지 체크하는 method
**/
function checkUpdate() {
$oModuleModel = &getModel('module');
/**
* 2007. 10. 17 : 게시판 모듈설정에 추가 설정 액션 설정
**/
if(!$oModuleModel->getActionForward('dispBlogAdminBlogAdditionSetup')) return true;
return false;
}
/**
* @brief 업데이트 실행
**/
function moduleUpdate() {
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
/**
* 2007. 10. 17 : 게시판 모듈설정에 추가 설정 액션 설정
**/
if(!$oModuleModel->getActionForward('dispBlogAdminBlogAdditionSetup'))
$oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminBlogAdditionSetup');
return new Object(0, 'success_updated');
}
/**
* @brief 캐시 파일 재생성
**/
function recompileCache() {
// 블로그 모듈의 캐시 파일 모두 삭제
FileHandler::removeDir("./files/cache/blog_category");
$oModuleModel = &getModel('module');
$oDocumentController = &getController('document');
// 블로그 모듈 목록을 모두 구함
$args->module = 'blog';
$output = executeQueryArray("module.getMidList", $args);
$list = $output->data;
if(!count($list)) return;
// 블로그 모듈에서 사용되는 모든 메뉴 목록을 재 생성
foreach($list as $blog_item) {
$module_srl = $blog_item->module_srl;
$oDocumentController->makeCategoryFile($module_srl);
}
}
}
?>

View file

@ -1,221 +0,0 @@
<?php
/**
* @class blogController
* @author zero (zero@nzeo.com)
* @brief blog 모듈의 Controller class
**/
class blogController extends blog {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 문서 입력
**/
function procBlogInsertDocument() {
// 권한 체크
if(!$this->grant->write_document) return new Object(-1, 'msg_not_permitted');
// 글작성시 필요한 변수를 세팅
$obj = Context::getRequestVars();
$obj->module_srl = $this->module_srl;
if($obj->is_notice!='Y'||!$this->grant->manager) $obj->is_notice = 'N';
// document module의 model 객체 생성
$oDocumentModel = &getModel('document');
// document module의 controller 객체 생성
$oDocumentController = &getController('document');
// 이미 존재하는 글인지 체크
$oDocument = $oDocumentModel->getDocument($obj->document_srl, $this->grant->manager);
// 이미 존재하는 경우 수정
if($oDocument->isExists() && $oDocument->document_srl == $obj->document_srl) {
$output = $oDocumentController->updateDocument($oDocument, $obj);
$msg_code = 'success_updated';
// 그렇지 않으면 신규 등록
} else {
$output = $oDocumentController->insertDocument($obj);
$msg_code = 'success_registed';
$obj->document_srl = $output->get('document_srl');
}
// 오류 발생시 멈춤
if(!$output->toBool()) return $output;
// 트랙백이 있으면 트랙백 발송
$trackback_url = Context::get('trackback_url');
$trackback_charset = Context::get('trackback_charset');
if($trackback_url) {
$oTrackbackController = &getController('trackback');
$oTrackbackController->sendTrackback($obj, $trackback_url, $trackback_charset);
}
// 결과를 리턴
$this->add('mid', Context::get('mid'));
$this->add('document_srl', $output->get('document_srl'));
// 성공 메세지 등록
$this->setMessage($msg_code);
}
/**
* @brief 문서 삭제
**/
function procBlogDeleteDocument() {
// 문서 번호 확인
$document_srl = Context::get('document_srl');
// 문서 번호가 없다면 오류 발생
if(!$document_srl) return $this->doError('msg_invalid_document');
// document module model 객체 생성
$oDocumentController = &getController('document');
// 삭제 시도
$output = $oDocumentController->deleteDocument($document_srl, $this->grant->manager);
if(!$output->toBool()) return $output;
// 성공 메세지 등록
$this->add('mid', Context::get('mid'));
$this->add('page', $output->get('page'));
$this->setMessage('success_deleted');
}
/**
* @brief 코멘트 추가
**/
function procBlogInsertComment() {
// 권한 체크
if(!$this->grant->write_comment) return new Object(-1, 'msg_not_permitted');
// 댓글 입력에 필요한 데이터 추출
$obj = Context::gets('document_srl','comment_srl','parent_srl','content','password','nick_name','nick_name','member_srl','email_address','homepage','is_secret','notify_message');
$obj->module_srl = $this->module_srl;
// comment 모듈의 model 객체 생성
$oCommentModel = &getModel('comment');
// comment 모듈의 controller 객체 생성
$oCommentController = &getController('comment');
/**
* 존재하는 댓글인지를 확인하여 존재 하지 않는 댓글이라면 신규로 등록하기 위해서 comment_srl의 sequence값을 받는다
**/
if(!$obj->comment_srl) {
$obj->comment_srl = getNextSequence();
} else {
$comment = $oCommentModel->getComment($obj->comment_srl, $this->grant->manager);
}
// comment_srl이 없을 경우 신규 입력
if($comment->comment_srl != $obj->comment_srl) {
// parent_srl이 있으면 답변으로
if($obj->parent_srl) {
$parent_comment = $oCommentModel->getComment($obj->parent_srl);
if(!$parent_comment->comment_srl) return new Object(-1, 'msg_invalid_request');
$output = $oCommentController->insertComment($obj);
// 없으면 신규
} else {
$output = $oCommentController->insertComment($obj);
}
// comment_srl이 있으면 수정으로
} else {
$obj->parent_srl = $comment->parent_srl;
$output = $oCommentController->updateComment($obj, $this->grant->manager);
$comment_srl = $obj->comment_srl;
}
if(!$output->toBool()) return $output;
$this->add('mid', Context::get('mid'));
$this->add('document_srl', $obj->document_srl);
$this->add('comment_srl', $obj->comment_srl);
$this->setMessage('success_registed');
}
/**
* @brief 코멘트 삭제
**/
function procBlogDeleteComment() {
// 댓글 번호 확인
$comment_srl = Context::get('comment_srl');
if(!$comment_srl) return $this->doError('msg_invalid_request');
// comment 모듈의 controller 객체 생성
$oCommentController = &getController('comment');
$output = $oCommentController->deleteComment($comment_srl, $this->grant->manager);
if(!$output->toBool()) return $output;
$this->add('mid', Context::get('mid'));
$this->add('page', Context::get('page'));
$this->add('document_srl', $output->get('document_srl'));
$this->setMessage('success_deleted');
}
/**
* @brief 엮인글 삭제
**/
function procBlogDeleteTrackback() {
$trackback_srl = Context::get('trackback_srl');
// trackback module의 controller 객체 생성
$oTrackbackController = &getController('trackback');
$output = $oTrackbackController->deleteTrackback($trackback_srl, $this->grant->manager);
if(!$output->toBool()) return $output;
$this->add('mid', Context::get('mid'));
$this->add('page', Context::get('page'));
$this->add('document_srl', $output->get('document_srl'));
$this->setMessage('success_deleted');
}
/**
* @brief 문서와 댓글의 비밀번호를 확인
**/
function procBlogVerificationPassword() {
// 비밀번호와 문서 번호를 받음
$password = Context::get('password');
$document_srl = Context::get('document_srl');
$comment_srl = Context::get('comment_srl');
$oMemberModel = &getModel('member');
// comment_srl이 있을 경우 댓글이 대상
if($comment_srl) {
// 문서번호에 해당하는 글이 있는지 확인
$oCommentModel = &getModel('comment');
$oComment = $oCommentModel->getComment($comment_srl);
if(!$oComment->isExists()) return new Object(-1, 'msg_invalid_request');
// 문서의 비밀번호와 입력한 비밀번호의 비교
if(!$oMemberModel->isValidPassword($oComment->get('password'),$password)) return new Object(-1, 'msg_invalid_password');
$oComment->setGrant();
} else {
// 문서번호에 해당하는 글이 있는지 확인
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
if(!$oDocument->isExists()) return new Object(-1, 'msg_invalid_request');
// 문서의 비밀번호와 입력한 비밀번호의 비교
if(!$oMemberModel->isValidPassword($oDocument->get('password'),$password)) return new Object(-1, 'msg_invalid_password');
$oDocument->setGrant();
}
}
}
?>

View file

@ -1,17 +0,0 @@
<?php
/**
* @class blogModel
* @author zero (zero@nzeo.com)
* @version 0.1
* @brief blog 모듈의 Model class
**/
class blogModel extends blog {
/**
* @brief 초기화
**/
function init() {
}
}
?>

View file

@ -1,385 +0,0 @@
<?php
/**
* @class blogView
* @author zero (zero@nzeo.com)
* @brief blog 모듈의 View class
**/
class blogView extends blog {
/**
* @brief 초기화
*
* blog 모듈은 일반 사용과 관리자용으로 나누어진다.\n
**/
function init() {
// 템플릿에서 사용할 변수를 Context::set()
if($this->module_srl) Context::set('module_srl',$this->module_srl);
// 기본 모듈 정보들 설정
$this->list_count = $this->module_info->list_count?$this->module_info->list_count:1;
$this->page_count = $this->module_info->page_count?$this->module_info->page_count:10;
// 카테고리 목록을 가져오고 선택된 카테고리의 값을 설정
$oDocumentModel = &getModel('document');
$this->category_list = $oDocumentModel->getCategoryList($this->module_srl);
Context::set('category_list', $this->category_list);
// 스킨 경로 구함
$template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin);
$this->setTemplatePath($template_path);
// 레이아웃의 정보를 속이기 위해서 layout_srl을 현 블로그의 module_srl로 입력
$this->module_info->layout_srl = $this->module_info->module_srl;
/**
* 블로그는 자체 레이아웃을 관리하기에 이와 관련된 세팅을 해줌
**/
// 레이아웃 경로와 파일 지정 (블로그는 자체 레이아웃을 가지고 있음)
$this->setLayoutPath($template_path);
$this->setLayoutFile("layout");
// 수정된 레이아웃 파일이 있으면 지정
$edited_layout = sprintf('./files/cache/layout/%d.html', $this->module_info->module_srl);
if(file_exists($edited_layout)) $this->setEditedLayoutFile($edited_layout);
// 카테고리 xml 파일 위치 지정
$this->module_info->category_xml_file = getUrl().$oDocumentModel->getCategoryXmlFile($this->module_info->module_srl);
$this->module_info->category_php_file = $oDocumentModel->getCategoryPhpFile($this->module_info->module_srl);
// 메뉴 등록시 메뉴 정보를 구해옴
if($this->module_info->menu) {
foreach($this->module_info->menu as $menu_id => $menu_srl) {
$menu_php_file = sprintf("./files/cache/menu/%s.php", $menu_srl);
if(file_exists($menu_php_file)) @include($menu_php_file);
Context::set($menu_id, $menu);
}
}
// layout_info 변수 설정
Context::set('layout_info',$this->module_info);
// 모듈정보 세팅
Context::set('module_info',$this->module_info);
}
/**
* @brief 목록 선택된 출력
**/
function dispBlogContent() {
// 권한 체크
if(!$this->grant->list) return $this->dispBlogMessage('msg_not_permitted');
// 모듈정보를 확인하여 확장변수에서도 검색이 설정되어 있는지 확인
for($i=1;$i<=20;$i++) {
$ex_name = $this->module_info->extra_vars[$i]->name;
$ex_search = $this->module_info->extra_vars[$i]->search;
if($ex_name && $ex_search == 'Y') {
$search_option['extra_vars'.$i] = $ex_name;
}
}
Context::set('search_option', $search_option);
// 목록 구현에 필요한 변수들을 가져온다
$document_srl = Context::get('document_srl');
$page = Context::get('page');
// document 객체를 생성. 기본 데이터 구조의 경우 document모듈만 쓰면 만사 해결.. -_-;
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument(0, $this->grant->manager);
// document_srl이 있다면 해당 글만 출력
if($this->grant->list && $document_srl) {
// 글을 구함
$oDocument->setDocument($document_srl);
// 찾아지지 않았다면 초기화
if(!$oDocument->isExists()) {
unset($document_srl);
Context::set('document_srl','',true);
} else {
// 브라우저 타이틀 설정
Context::addBrowserTitle($oDocument->getTitleText());
// 댓글에디터 설정
if($this->grant->write_comment && $oDocument->allowComment() && !$oDocument->isLocked()) $comment_editor[$oDocument->document_srl] = $this->getCommentEditor($oDocument->document_srl, 0, 100);
// 조회수 증가
$oDocument->updateReadedCount();
// 카테고리 설정
Context::set('category', $oDocument->get('category_srl'));
// comment editor 생성/ 세팅
$comment_editor[$oDocument->document_srl] = $this->getCommentEditor($oDocument->document_srl, 0, 100);
Context::set('comment_editor', $comment_editor);
}
}
Context::set('oDocument', $oDocument);
// document_srl이 없다면 정해진데로 목록을 구함
if(!$oDocument->isExists()) {
// 목록을 구하기 위한 옵션
$args->module_srl = $this->module_srl; ///< 현재 모듈의 module_srl
$args->page = $page; ///< 페이지
$args->list_count = $this->list_count; ///< 한페이지에 보여줄 글 수
$args->page_count = $this->page_count; ///< 페이지 네비게이션에 나타날 페이지의 수
// 검색 옵션
$args->search_target = trim(Context::get('search_target')); ///< 검색대상
$args->search_keyword = trim(Context::get('search_keyword')); ///< 검색어
// 키워드 검색이 아닌 검색일 경우 목록의 수를 40개로 고정
if($args->search_target && $args->search_keyword) $args->list_count = 40;
// 키워드 검색의 경우 제목,내용으로 검색 대상 고정
if($args->search_keyword && !$args->search_target) $args->search_target = "title_content";
// 블로그 카테고리
$args->category_srl = (int)Context::get('category');
$args->sort_index = 'list_order'; ///< 소팅 값
// 목록 구함, document->getDocumentList 에서 걍 알아서 다 해버리는 구조
$output = $oDocumentModel->getDocumentList($args, true);
// 템플릿에 쓰기 위해서 document_model::getDocumentList() 의 return object에 있는 값들을 세팅
Context::set('total_count', $output->total_count);
Context::set('total_page', $output->total_page);
Context::set('page', $output->page);
Context::set('document_list', $output->data);
Context::set('page_navigation', $output->page_navigation);
// 문서 갯수만큼 comment editor 생성
if(count($output->data)) {
foreach($output->data as $obj) {
$comment_editor[$obj->document_srl] = $this->getCommentEditor($obj->document_srl, 0, 100);
}
}
// 에디터 세팅
Context::set('comment_editor', $comment_editor);
// 템플릿에서 사용할 검색옵션 세팅
$count_search_option = count($this->search_option);
for($i=0;$i<$count_search_option;$i++) {
$search_option[$this->search_option[$i]] = Context::getLang($this->search_option[$i]);
}
Context::set('search_option', $search_option);
}
// 블로그의 코멘트는 ajax로 호출되기에 미리 css, js파일을 import
//Context::addJsFile('./modules/editor/tpl/js/editor.js');
//Context::addCSSFile('./modules/editor/tpl/css/editor.css');
$this->setTemplateFile('list');
}
/**
* @brief 작성 화면 출력
**/
function dispBlogWrite() {
// 권한 체크
if(!$this->grant->write_document) return $this->dispBlogMessage('msg_not_permitted');
// GET parameter에서 document_srl을 가져옴
$document_srl = Context::get('document_srl');
// document 모듈 객체 생성
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl, $this->grant->manager);
// 지정된 글이 없다면 (신규) 새로운 번호를 만든다
if(!$oDocument->isExists()) {
$document_srl = getNextSequence();
Context::set('document_srl','');
}
// 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로
if($oDocument->isExists()&&!$oDocument->isGranted()) return $this->setTemplateFile('input_password_form');
Context::set('document_srl',$document_srl);
Context::set('oDocument', $oDocument);
// 에디터 모듈의 getEditor를 호출하여 세팅
$oEditorModel = &getModel('editor');
$editor = $oEditorModel->getModuleEditor('document', $this->module_srl, $document_srl, 'document_srl', 'content');
Context::set('editor', $editor);
$this->setTemplateFile('write_form');
}
/**
* @brief 문서 삭제 화면 출력
**/
function dispBlogDelete() {
// 권한 체크
if(!$this->grant->write_document) return $this->dispBlogMessage('msg_not_permitted');
// 삭제할 문서번호를 가져온다
$document_srl = Context::get('document_srl');
// 지정된 글이 있는지 확인
if($document_srl) {
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
}
// 삭제하려는 글이 없으면 에러
if(!$oDocument->isExists()) return $this->dispBlogContent();
// 권한이 없는 경우 비밀번호 입력화면으로
if(!$oDocument->isGranted()) return $this->setTemplateFile('input_password_form');
Context::set('oDocument',$oDocument);
$this->setTemplateFile('delete_form');
}
/**
* @brief 댓글의 답글 화면 출력
**/
function dispBlogReplyComment() {
// 권한 체크
if(!$this->grant->write_comment) return $this->dispBlogMessage('msg_not_permitted');
// 목록 구현에 필요한 변수들을 가져온다
$document_srl = Context::get('document_srl');
$parent_srl = Context::get('comment_srl');
// 지정된 원 댓글이 없다면 오류
if(!$parent_srl) return new Object(-1, 'msg_invalid_request');
// 해당 댓글를 찾아본다
$oCommentModel = &getModel('comment');
$oSourceComment = $oCommentModel->getComment($parent_srl, $this->grant->manager);
// 댓글이 없다면 오류
if(!$oSourceComment->isExists()) return $this->dispBlogMessage('msg_invalid_request');
// 대상 댓글을 생성
$oComment = $oCommentModel->getComment();
$oComment->add('parent_srl', $parent_srl);
$oComment->add('document_srl', $oSourceComment->get('document_srl'));
// 필요한 정보들 세팅
Context::set('oSourceComment',$oSourceComment);
Context::set('oComment',$oComment);
// 댓글 에디터 세팅
Context::set('editor', $this->getCommentEditor($document_srl, 0, 400));
$this->setTemplateFile('comment_form');
}
/**
* @brief 댓글 수정 출력
**/
function dispBlogModifyComment() {
// 권한 체크
if(!$this->grant->write_comment) return $this->dispBlogMessage('msg_not_permitted');
// 목록 구현에 필요한 변수들을 가져온다
$document_srl = Context::get('document_srl');
$comment_srl = Context::get('comment_srl');
// 지정된 댓글이 없다면 오류
if(!$comment_srl) return new Object(-1, 'msg_invalid_request');
// 해당 댓글를 찾아본다
$oCommentModel = &getModel('comment');
$oComment = $oCommentModel->getComment($comment_srl, $this->grant->manager);
// 댓글이 없다면 오류
if(!$oComment->isExists()) return $this->dispBlogMessage('msg_invalid_request');
// 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로
if(!$oComment->isGranted()) return $this->setTemplateFile('input_password_form');
// 필요한 정보들 세팅
Context::set('oSourceComment', $oCommentModel->getComment());
Context::set('oComment', $oComment);
// 댓글 에디터 세팅
Context::set('editor', $this->getCommentEditor($document_srl, $comment_srl, 400));
$this->setTemplateFile('comment_form');
}
/**
* @brief 댓글 삭제 화면 출력
**/
function dispBlogDeleteComment() {
// 권한 체크
if(!$this->grant->write_comment) return $this->dispBlogMessage('msg_not_permitted');
// 삭제할 댓글번호를 가져온다
$comment_srl = Context::get('comment_srl');
// 삭제하려는 댓글이 있는지 확인
if($comment_srl) {
$oCommentModel = &getModel('comment');
$oComment = $oCommentModel->getComment($comment_srl, $this->grant->manager);
}
// 삭제하려는 글이 없으면 에러
if(!$oComment->isExists()) return $this->dispBlogContent();
Context::set('document_srl',$comment->document_srl);
// 권한이 없는 경우 비밀번호 입력화면으로
if(!$oComment->isGranted()) return $this->setTemplateFile('input_password_form');
Context::set('oComment',$oComment);
$this->setTemplateFile('delete_comment_form');
}
/**
* @brief 엮인글 삭제 화면 출력
**/
function dispBlogDeleteTrackback() {
// 삭제할 댓글번호를 가져온다
$trackback_srl = Context::get('trackback_srl');
// 삭제하려는 댓글가 있는지 확인
$oTrackbackModel = &getModel('trackback');
$output = $oTrackbackModel->getTrackback($trackback_srl);
$trackback = $output->data;
// 삭제하려는 글이 없으면 에러
if(!$trackback) return $this->dispBlogContent();
Context::set('trackback',$trackback);
$this->setTemplateFile('delete_trackback_form');
}
/**
* @brief 메세지 출력
**/
function dispBlogMessage($msg_code) {
$msg = Context::getLang($msg_code);
if(!$msg) $msg = $msg_code;
Context::set('message', $msg);
$this->setTemplateFile('message');
}
/**
* @brief 댓글의 editor 세팅
* 댓글의 경우 수정하는 경우가 아니라면 고유값이 없음.\n
* 따라서 고유값이 없을 경우 고유값을 가져와서 지정해 주어야
**/
function getCommentEditor($editor_sequence, $comment_srl=0, $height = 100) {
Context::set('comment_srl', $comment_srl);
$oEditorModel = &getModel('editor');
$editor = $oEditorModel->getModuleEditor('comment', $this->module_srl, $comment_srl, 'comment_srl', 'content');
return $editor;
}
}
?>

View file

@ -1,47 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<module version="0.1" category="service">
<title xml:lang="ko">블로그</title>
<title xml:lang="jp">ブログ</title>
<title xml:lang="en">Blog</title>
<title xml:lang="es">Blog</title>
<title xml:lang="zh-CN">博客</title>
<title xml:lang="ru">Блог</title>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
<name xml:lang="ko">제로</name>
<name xml:lang="jp">Zero</name>
<name xml:lang="en">zero</name>
<name xml:lang="es">zero</name>
<name xml:lang="zh-CN">zero</name>
<name xml:lang="ru">zero</name>
<description xml:lang="ko">
블로그의 기능을 담당하는 모듈.
게시판과 비슷하지만 보여지는 view가 다르고 블로그에 적합한 method가 추가되었음.
레이아웃과 기본 메뉴를 직접 담당
</description>
<description xml:lang="jp">
ブログの機能を担当するモジュール
掲示板と似ているが、内容の表示が異なり、ブログに適切なメソッドが追加されている。
レイアウトと基本メニューを直接担当します。
</description>
<description xml:lang="en">
This module contains the blog functions.
It's similar to the bbs module, but it has diffent views and more suitable methods for blog has been included.
This module manages layout and basic menu itself.
</description>
<description xml:lang="es">
Este módulo contiene funciones de blog.
Esto es similar al módulo de tablero, sin embargo la vista que se muestra es diferente e incluye metodos apropiados para blog.
El diseño y el menú básico es manejado por si mismo.
</description>
<description xml:lang="zh-CN">
是负责博客功能的模块。
虽然类似版面但其显示模式不同且还添加了适合博客的method。
内置布局和基本的菜单。
</description>
<description xml:lang="ru">
Этот модуль содержит функции блога.
Он похож на модуль BBS, но имеет другой вид и более подходящие методы для блога.
Этот модуль управляет лейвутом и базовым меню самостоятельно.
</description>
</author>
</module>

View file

@ -1,105 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<module>
<grants>
<grant name="list" default="guest">
<title xml:lang="ko">목록</title>
<title xml:lang="zh-CN">目录</title>
<title xml:lang="en">list</title>
<title xml:lang="jp">リスト</title>
</grant>
<grant name="write_document" default="guest">
<title xml:lang="ko">글 작성</title>
<title xml:lang="zh-CN">发表新主题</title>
<title xml:lang="en">write document</title>
<title xml:lang="jp">書き込む</title>
</grant>
<grant name="write_comment" default="guest">
<title xml:lang="ko">댓글 작성</title>
<title xml:lang="zh-CN">发表评论</title>
<title xml:lang="en">write comment</title>
<title xml:lang="jp">コメント作成</title>
</grant>
<grant name="manager" default="root">
<title xml:lang="ko">관리</title>
<title xml:lang="zh-CN">管理</title>
<title xml:lang="en">manager</title>
<title xml:lang="jp">管理</title>
</grant>
</grants>
<permissions>
<permission action="dispBlogContent" target="manager" />
<permission action="dispBlogWrite" target="manager" />
<permission action="dispBlogDelete" target="manager" />
<permission action="dispBlogReplyComment" target="manager" />
<permission action="dispBlogModifyComment" target="manager" />
<permission action="dispBlogDeleteComment" target="manager" />
<permission action="dispBlogDeleteTrackback" target="manager" />
<permission action="dispBlogMessage" target="manager" />
<permission action="procBlogInsertDocument" target="manager" />
<permission action="procBlogDeleteDocument" target="manager" />
<permission action="procBlogInsertComment" target="manager" />
<permission action="procBlogDeleteComment" target="manager" />
<permission action="procBlogDeleteTrackback" target="manager" />
<permission action="procBlogVerificationPassword" target="manager" />
<permission action="procBlogDeleteFile" target="manager" />
<permission action="procBlogUploadFile" target="manager" />
<permission action="procBlogDownloadFile" target="manager" />
<permission action="getBlogAdminCategoryTplInfo" target="manager" />
<permission action="dispBlogAdminContent" target="manager" />
<permission action="dispBlogAdminBlogInfo" target="manager" />
<permission action="dispBlogAdminInsertBlog" target="manager" />
<permission action="dispBoardAdminBoardAdditionSetup" target="manager" />
<permission action="dispBlogAdminCategoryInfo" target="manager" />
<permission action="dispBlogAdminSkinInfo" target="manager" />
<permission action="procBlogAdminUpdateSkinInfo" target="manager" />
<permission action="procBlogAdminInsertBlog" target="manager" />
<permission action="procBlogAdminInsertCategory" target="manager" />
<permission action="procBlogAdminDeleteCategory" target="manager" />
<permission action="procBlogAdminMakeXmlFile" target="manager" />
<permission action="procBlogAdminMoveCategory" target="manager" />
</permissions>
<actions>
<action name="dispBlogContent" type="view" index="true" />
<action name="dispBlogWrite" type="view" />
<action name="dispBlogDelete" type="view" />
<action name="dispBlogReplyComment" type="view" />
<action name="dispBlogModifyComment" type="view" />
<action name="dispBlogDeleteComment" type="view" />
<action name="dispBlogDeleteTrackback" type="view" />
<action name="dispBlogMessage" type="view" />
<action name="procBlogInsertDocument" type="controller" />
<action name="procBlogDeleteDocument" type="controller" />
<action name="procBlogInsertComment" type="controller" />
<action name="procBlogDeleteComment" type="controller" />
<action name="procBlogDeleteTrackback" type="controller" />
<action name="procBlogVerificationPassword" type="controller" />
<action name="procBlogDeleteFile" type="controller" />
<action name="procBlogUploadFile" type="controller" />
<action name="procBlogDownloadFile" type="controller" />
<action name="getBlogAdminCategoryTplInfo" type="model" standalone="true" />
<action name="dispBlogAdminContent" type="view" standalone="true" admin_index="true" />
<action name="dispBlogAdminBlogInfo" type="view" standalone="true" />
<action name="dispBoardAdminBoardAdditionSetup" type="view" standalone="true" />
<action name="dispBlogAdminInsertBlog" type="view" standalone="true" />
<action name="dispBlogAdminDeleteBlog" type="view" standalone="true" />
<action name="dispBlogAdminCategoryInfo" type="view" standalone="true" />
<action name="dispBlogAdminSkinInfo" type="view" standalone="true" />
<action name="dispBlogAdminGrantInfo" type="view" standalone="true" />
<action name="procBlogAdminInsertGrant" type="controller" standalone="true" />
<action name="procBlogAdminUpdateSkinInfo" type="controller" standalone="true" />
<action name="procBlogAdminInsertBlog" type="controller" standalone="true" />
<action name="procBlogAdminDeleteBlog" type="controller" standalone="true" />
<action name="procBlogAdminInsertCategory" type="controller" standalone="true" />
<action name="procBlogAdminDeleteCategory" type="controller" standalone="true" />
<action name="procBlogAdminMakeXmlFile" type="controller" standalone="true" />
<action name="procBlogAdminMoveCategory" type="controller" standalone="true" />
</actions>
</module>

View file

@ -1,33 +0,0 @@
<?php
/**
* @file en.lang.php
* @author zero (zero@nzeo.com)
* @brief Basic language pack for blog module
**/
// Words used in button
$lang->cmd_blog_list = 'Blog List';
$lang->cmd_module_config = 'Common blog setting';
$lang->cmd_view_info = 'Blog Info';
$lang->cmd_manage_menu = 'Menu management';
$lang->cmd_make_child = 'Add child category';
$lang->cmd_enable_move_category = "Change category position (Drag the top menu after selection)";
$lang->cmd_remake_cache = 'Rebuild cache file';
$lang->cmd_layout_setup = 'Configure layout';
$lang->cmd_layout_edit = 'Edit layout';
// Item
$lang->parent_category_title = 'Parent category';
$lang->category_title = 'Category';
$lang->expand = 'Expand';
$lang->category_group_srls = 'Accessable Group';
$lang->search_result = 'Search result';
// blah blah..
$lang->about_category_title = 'Please input category name';
$lang->about_expand = 'By selecting this option, it will be always expanded';
$lang->about_category_group_srls = 'Only the selected group will be able to see current categories. (Manually open xml file to expose)';
$lang->about_layout_setup = 'You can manually modify blog layout code. Insert or manage the widget code anywhere you want';
$lang->about_blog_category = 'You can make blog categories.<br />When blog category is broken, try rebuilding the cache file manually.';
$lang->about_blog = "This is a blog module that can create and manage blog.\nAfter creating a blog, please decorate your blog by category and skin management because this blog module uses layout that is included in the blog skin.\nIf you want to connect other boards inside the blog, use the menu module to create a menu and then connect it with the skin manager";
?>

View file

@ -1,33 +0,0 @@
<?php
/**
* @archivo es.lang.php
* @autor zero (zero@nzeo.com)
* @sumario Paquete de idioma español para módulo de blog simple.
**/
// Palabras en los botónes
$lang->cmd_blog_list = 'Lista de blogs';
$lang->cmd_module_config = 'Configuración común de blog ';
$lang->cmd_view_info = 'Información de blog';
$lang->cmd_manage_menu = 'Manejo del menú';
$lang->cmd_make_child = 'Agregar sub categoría';
$lang->cmd_enable_move_category = "Cambiar la posición de la categoría. (arrastrar y soltar luego de haber selecionado)";
$lang->cmd_remake_cache = 'Rehacer archivo caché';
$lang->cmd_layout_setup = 'Configuración del diseño';
$lang->cmd_layout_edit = 'Editar el diseño';
// Artículos
$lang->parent_category_title = 'Categoría Superior';
$lang->category_title = 'Nombre de la categoría';
$lang->expand = 'Expandir';
$lang->category_group_srls = 'Limitar el grupo';
$lang->search_result = 'Resultado de la búsqueda';
// bla bla...
$lang->about_category_title = 'Ingresar el nombre de la categoría.';
$lang->about_expand = 'Si seleccionas esta opción, siempre estará expandido.';
$lang->about_category_group_srls = 'Solo se verán los grupos seleccionados en la actual categoría. (Abrir manualmente en archivo xml para la exposición)';
$lang->about_layout_setup = 'Puede modificar manualmente el código del diseño de blog. Insertar o modificar el código de widget.';
$lang->about_blog_category = 'Puede crear las categorias de blog.<br />Cuando no funciona la categoría de blog, rehacer el archivo caché manualmente para solucionar.';
$lang->about_blog = "Este is el módulo para crear y manejar blog.\nLuego de crear un blog, por favor decora tu blog por categoría y manejo de tema por que este módulo de blog usa el diseño que está incluido en el tema de blog.\nSi desea conectar otros tableros en su blog, usa el menú de módulo para crear un menú y luego conecta con el manejo de temas.";
?>

View file

@ -1,33 +0,0 @@
<?php
/**
* @file ko.lang.php
* @author zero (zero@nzeo.com) 翻訳keinicht、ミニミ
* @brief ブログ(blog) モジュルの基本言語パッケージ
**/
// ボタンに使用する言語
$lang->cmd_blog_list = 'ブログリスト';
$lang->cmd_module_config = 'ブログ共通設定';
$lang->cmd_view_info = 'ブログ情報';
$lang->cmd_manage_menu = 'メニュー管理';
$lang->cmd_make_child = '下位カテゴリ追加';
$lang->cmd_enable_move_category = "カテゴリ位置変更(選択後上のメニューをドラッグして下さい)";
$lang->cmd_remake_cache = 'キャッシュファイル再生性';
$lang->cmd_layout_setup = 'レイアウト設定';
$lang->cmd_layout_edit = 'レイアウト編集';
// 項目
$lang->parent_category_title = '上位カテゴリ名';
$lang->category_title = 'カテゴリ名';
$lang->expand = '拡張表示';
$lang->category_group_srls = 'グループ制限';
$lang->search_result = '検索結果';
// その他
$lang->about_category_title = 'カテゴリ名を入力して下さい。';
$lang->about_expand = 'チェックすると常に展開された状態になります。';
$lang->about_category_group_srls = '選択したグループのみ現在のカテゴリが見えるようになりますXMLファイルを直接閲覧すると表示されます。';
$lang->about_layout_setup = 'ブログのレイアウトのコードを直接修正します。ウィジェットコードを好きなところに入力、又は管理して下さい。';
$lang->about_blog_category = 'ブログのカテゴリを作成します。<br />ブログのカテゴリが誤作動する場合、「キャッシュファイルの再生性」を手動で行うことで解決できます。';
$lang->about_blog = "ブログの作成、および管理できるブログモジュールです。\nブログモジュールはブログスキンに含まれているレイアウトを利用するので生成後必ずカテゴリ、およびスキン管理を用いてブログを編集して下さい。\nブログ内に他の掲示板を連動させたい場合は「メニュモジュール」でメニューを作成した後、「スキン管理」で行ってください。";
?>

View file

@ -1,33 +0,0 @@
<?php
/**
* @file ko.lang.php
* @author zero (zero@nzeo.com)
* @brief 블로그(blog) 모듈의 기본 언어팩
**/
// 버튼에 사용되는 언어
$lang->cmd_blog_list = '블로그 목록';
$lang->cmd_module_config = '블로그 공통 설정';
$lang->cmd_view_info = '블로그 정보';
$lang->cmd_manage_menu = '메뉴관리';
$lang->cmd_make_child = '하위 카테고리 추가';
$lang->cmd_enable_move_category = "카테고리 위치 변경 (선택후 위 메뉴를 드래그하세요)";
$lang->cmd_remake_cache = '캐시파일 재생성';
$lang->cmd_layout_setup = '레이아웃 설정';
$lang->cmd_layout_edit = '레이아웃 편집';
// 항목
$lang->parent_category_title = '상위 카테고리명';
$lang->category_title = '분류명';
$lang->expand = '펼침';
$lang->category_group_srls = '그룹제한';
$lang->search_result = '검색결과';
// 주절 주절..
$lang->about_category_title = '카테고리 이름을 입력해주세요';
$lang->about_expand = '선택하시면 늘 펼쳐진 상태로 있게 합니다';
$lang->about_category_group_srls = '선택하신 그룹만 현재 카테고리가 보이게 됩니다. (xml파일을 직접 열람하면 노출이 됩니다)';
$lang->about_layout_setup = '블로그의 레이아웃 코드를 직접 수정할 수 있습니다. 위젯 코드를 원하는 곳에 삽입하시거나 관리하세요';
$lang->about_blog_category = '블로그 분류를 만드실 수 있습니다.<br />블로그 분류가 오동작을 할 경우 캐시파일 재생성을 수동으로 해주시면 해결이 될 수 있습니다.';
$lang->about_blog = "블로그를 만드시고 관리할 수 있는 블로그 모듈입니다.\n블로그 모듈은 블로그 스킨에 포함된 레이아웃을 이용하니 생성후 꼭 분류 및 스킨 관리를 통해서 블로그를 꾸미시기 바랍니다.\n블로그내에 다른 게시판을 연결하시고 싶을때에는 메뉴모듈로 메뉴를 만들고 나서 스킨관리에 연결해 주시면 됩니다";
?>

View file

@ -1,33 +0,0 @@
<?php
/**
* @file ru.lang.php
* @author zero <zero@nzeo.com> | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
* @brief Russian basic language pack for Zeroboard XE
**/
// Слова, использованные в кнопке
$lang->cmd_blog_list = 'Список блогов';
$lang->cmd_module_config = 'Общие настройки блога';
$lang->cmd_view_info = 'Иформация блога';
$lang->cmd_manage_menu = 'Управление меню';
$lang->cmd_make_child = 'Добавить дочернюю категорию';
$lang->cmd_enable_move_category = "Изменить позицию категории (Перетащите верхнее меню после выделения)";
$lang->cmd_remake_cache = 'Перепостроить файл кеша';
$lang->cmd_layout_setup = 'Конфигурировать лейаут';
$lang->cmd_layout_edit = 'Редактировать лейаут';
// Объект
$lang->parent_category_title = 'Родительская категория';
$lang->category_title = 'Категория';
$lang->expand = 'Расширить';
$lang->category_group_srls = 'Доступные группы';
$lang->search_result = 'Результат поиска';
// blah blah.. или чушь всякая... ;)
$lang->about_category_title = 'Пожалуйста, введите название категории';
$lang->about_expand = 'Если эта опция выбрана, расширение будут применено всегда';
$lang->about_category_group_srls = 'Только выбранная группа будет способна видеть ткущие категории. (Вручную откройте xml файл, чтобы сделать видимыми)';
$lang->about_layout_setup = 'Вы можете вручную изменять лейаут код блога. Вставляйте или управляйте кодом виджетов везде, где хотите';
$lang->about_blog_category = 'Вы можете сделать категории блога.<br />Когда категория блога испорчена, попробуйте перепостроить файл кеша вручную.';
$lang->about_blog = "Это модуть блогов, который может создавать и управлять блогом.\nПосле создания блога, пожалуйста, украсьте Ваш блог посредством менеджера категорий и скинов, поскольку этот модуль блогов использует лейаут включенный в скин блога.\nЕсли Вы хотите подключить другие форумы внутри блога, используйте модуль меню для создания меню и, затем, подключите его к менеджеру скинов";
?>

View file

@ -1,33 +0,0 @@
<?php
/**
* @file zh-CN.lang.php
* @author zero (zero@nzeo.com)
* @brief 博客(blog) 模块的基本语言包
**/
// 按钮使用的语言
$lang->cmd_blog_list = '博客目录';
$lang->cmd_module_config = '博客共同设定';
$lang->cmd_view_info = '博客信息';
$lang->cmd_manage_menu = '菜单管理';
$lang->cmd_make_child = '添加下级分类';
$lang->cmd_enable_move_category = "更改分类顺序 (选择后拖动菜单)";
$lang->cmd_remake_cache = '重新生成缓冲文件';
$lang->cmd_layout_setup = '布局设置';
$lang->cmd_layout_edit = '编辑布局';
// 项目
$lang->parent_category_title = '上级分类名';
$lang->category_title = '分类名';
$lang->expand = '展开';
$lang->category_group_srls = '用户组';
$lang->search_result = '搜索结果';
// 信息、提示..
$lang->about_category_title = '请输入分类名。';
$lang->about_expand = '选择此项将维持展开状态。';
$lang->about_category_group_srls = '被选的用户组才可以查看此分类。';
$lang->about_layout_setup = '可直接编辑博客布局代码。可以把控件代码插入到您喜欢的位置。';
$lang->about_blog_category = '可以添加/删除博客分类<br />博客分类有异常情况时,可以尝试重新生成缓冲文件。';
$lang->about_blog = "可生成,管理博客的模块。\n博客模块将利用博客皮肤里包含的布局,因此生成博客后尽早布置为适。\n在博客内,想使用其他版面时,可以先在菜单模块当中生成菜单后,在博客皮肤管理中连接即可。";
?>

View file

@ -1,8 +0,0 @@
<query id="deleteCategories" action="delete">
<tables>
<table name="blog_category" />
</tables>
<conditions>
<condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" />
</conditions>
</query>

View file

@ -1,8 +0,0 @@
<query id="deleteCategory" action="delete">
<tables>
<table name="blog_category" />
</tables>
<conditions>
<condition operation="equal" column="category_srl" var="category_srl" filter="number" notnull="notnull" />
</conditions>
</query>

View file

@ -1,14 +0,0 @@
<query id="getAllBlog" action="select">
<tables>
<table name="modules" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="module" default="blog" />
</conditions>
<navigation>
<index var="sort_index" default="mid" order="asc" />
</navigation>
</query>

View file

@ -1,14 +0,0 @@
<query id="getBlogCategories" action="select">
<tables>
<table name="blog_category" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" />
</conditions>
<navigation>
<index var="sort_index" default="listorder" order="desc" />
</navigation>
</query>

View file

@ -1,24 +0,0 @@
<query id="getBlogList" action="select">
<tables>
<table name="modules" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="module" default="blog" />
<group pipe="and">
<condition operation="like" column="mid" var="s_mid" pipe="or" />
<condition operation="like" column="title" var="s_title" pipe="or" />
<condition operation="like" column="comment" var="s_comment" pipe="or" />
<condition operation="equal" column="module" var="s_module" pipe="or" />
<condition operation="equal" column="module_category_srl" var="s_module_category_srl" pipe="or" />
</group>
</conditions>
<navigation>
<index var="sort_index" default="module_srl" order="desc" />
<list_count var="list_count" default="20" />
<page_count var="page_count" default="10" />
<page var="page" default="1" />
</navigation>
</query>

View file

@ -1,11 +0,0 @@
<query id="getCategory" action="select">
<tables>
<table name="blog_category" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="module_srl" var="module_srl" filter="number" notnull="notnull" />
</conditions>
</query>

View file

@ -1,11 +0,0 @@
<query id="getCategoryItem" action="select">
<tables>
<table name="blog_category" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="category_srl" var="category_srl" filter="number" notnull="notnull" />
</conditions>
</query>

View file

@ -1,11 +0,0 @@
<query id="getChildCategoryCount" action="select">
<tables>
<table name="blog_category" />
</tables>
<columns>
<column name="count(*)" alias="count" />
</columns>
<conditions>
<condition operation="equal" column="parent_srl" var="category_srl" filter="number" notnull="notnull" />
</conditions>
</query>

View file

@ -1,15 +0,0 @@
<query id="insertCategory" action="insert">
<tables>
<table name="blog_category" />
</tables>
<columns>
<column name="category_srl" var="category_srl" filter="number" notnull="notnull" />
<column name="parent_srl" var="parent_srl" filter="number" default="0" />
<column name="module_srl" var="module_srl" filter="number" notnull="notnull" />
<column name="name" var="name" notnull="notnull" />
<column name="expand" var="expand" />
<column name="group_srls" var="group_srls" />
<column name="listorder" var="listorder" notnull="notnull" />
<column name="regdate" var="regdate" default="curdate()" />
</columns>
</query>

View file

@ -1,13 +0,0 @@
<query id="updateCategory" action="update">
<tables>
<table name="blog_category" />
</tables>
<columns>
<column name="name" var="name" notnull="notnull" />
<column name="expand" var="expand" />
<column name="group_srls" var="group_srls" />
</columns>
<conditions>
<condition operation="equal" column="category_srl" var="category_srl" filter="number" notnull="notnull" />
</conditions>
</query>

View file

@ -1,12 +0,0 @@
<query id="updateCategoryParent" action="update">
<tables>
<table name="blog_category" />
</tables>
<columns>
<column name="parent_srl" var="parent_srl" default="0" />
<column name="listorder" var="listorder" notnull="notnull" />
</columns>
<conditions>
<condition operation="equal" column="category_srl" var="category_srl" filter="number" notnull="notnull" />
</conditions>
</query>

View file

@ -1,10 +0,0 @@
<table name="blog_category">
<column name="category_srl" type="number" size="12" notnull="notnull" primary_key="primary_key" />
<column name="parent_srl" type="number" size="12" notnull="notnull" default="0" />
<column name="module_srl" type="number" size="12" notnull="notnull" index="idx_module_srl" />
<column name="name" type="varchar" size="250" />
<column name="expand" type="char" size="1" default="N" />
<column name="group_srls" type="text" />
<column name="listorder" type="number" size="11" default="0" inex="idx_listorder" />
<column name="regdate" type="date" index="idx_regdate" />
</table>

View file

@ -1,88 +0,0 @@
<!--@if($oDocument->getCommentCount())-->
<div class="replyBox">
{@ $_comment_list = $oDocument->getComments() }
<!--@foreach($_comment_list as $key => $comment)-->
<div class="replyItem <!--@if($comment->get('depth'))-->reply<!--@end-->">
<!--@if($comment->get('depth'))-->
<div style="margin-left:{($comment->get('depth')-1)*20}px" class="replyIndent">
<!--@end-->
<a name="comment_{$comment->comment_srl}"></a>
<div class="replyOption">
<!--@if($comment->isGranted())-->
<a href="{getUrl('act','dispBlogDeleteComment','comment_srl',$comment->comment_srl)}"><img src="./images/common/buttonDeleteX.gif" alt="{$lang->cmd_delete}" width="12" height="13" /></a>
<a href="{getUrl('act','dispBlogModifyComment','comment_srl',$comment->comment_srl)}"><img src="./images/{$module_info->colorset}/buttonModifyE.gif" alt="{$lang->cmd_modify}" width="20" height="17" /></a>
<!--@end-->
<a href="{getUrl('act','dispBlogReplyComment','comment_srl',$comment->comment_srl)}"><img src="./images/{$module_info->colorset}/buttonReply.gif" alt="{$lang->cmd_reply}" width="20" height="17" /></a>
</div>
<div class="date">
<strong>{$comment->getRegdate('Y.m.d')}</strong> {$comment->getRegdate('H:i:s')}
<!--@if($grant->is_admin)-->
({$comment->get('ipaddress')})
<!--@end-->
</div>
<div class="author">
<!--@if(!$comment->member_srl)-->
<!--@if($comment->homepage)-->
<a href="{$comment->homepage}" onclick="window.open(this.href);return false;">{$comment->getNickName()}</a>
<!--@else-->
{$comment->getNickName()}
<!--@end-->
<!--@else-->
<div class="member_{$comment->member_srl}">{$comment->getNickName()}</div>
<!--@end-->
</div>
<!--@if($comment->get('voted_count')!=0)-->
<div class="voted">
({$lang->voted_count}:
<strong>{$comment->get('voted_count')}</strong>)
</div>
<!--@end-->
<div class="clear"></div>
<div class="replyContent">
<!--@if(!$comment->isAccessible())-->
<!--%import("filter/input_password.xml")-->
<strong>{$lang->msg_is_secret}</strong>
<form action="./" method="get" onsubmit="return procFilter(this, input_password)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$comment->get('document_srl')}" />
<input type="hidden" name="comment_srl" value="{$comment->get('comment_srl')}" />
<div class="inputPassword">
<input type="password" name="password" class="inputTypeText" /><span class="button"><input type="submit" value="{$lang->cmd_input}" accesskey="s" /></span>
</div>
</form>
<!--@else-->
{$comment->getContent(true)}
<!--@end-->
</div>
<!--@if($comment->hasUploadedFIles())-->
<div class="fileAttached">
<ul>
{@ $_uploaded_files = $comment->getUploadedFiles() }
<!--@foreach($_uploaded_files as $key => $file)-->
<li><a href="{getUrl('')}{$file->download_url}">{$file->source_filename} ({FileHandler::filesize($file->file_size)})({number_format($file->download_count)})</a></li>
<!--@end-->
</ul>
</div>
<!--@end-->
<!--@if($comment->get('depth'))-->
</div>
<!--@end-->
</div>
<!--@end-->
</div>
<!--@end-->

View file

@ -1,68 +0,0 @@
<!--#include("header.html")-->
<!-- 만약 댓글의 답을 다는 것이라면 원문 보여줌 -->
<!--@if($oSourceComment->isExists())-->
<div class="replyBox">
<div class="replyItem">
<div class="author"><div class="member_{$oSourceComment->getMemberSrl()}">{$oSourceComment->getNickName()}</div></div>
<div class="date">
{$oSourceComment->getRegdate("Y.m.d H:i")}
<!--@if($grant->is_admin)-->
({$oSourceComment->get('ipaddress')})
<!--@end-->
</div>
<div class="clear"></div>
<div class="replyContent gap1">
{$oSourceComment->getContent(false)}
</div>
</div>
</div>
<!--@end-->
<!-- 글쓰기 폼 -->
<!--%import("filter/insert_comment.xml")-->
<div class="blogWrite">
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" <!--@if($grant->fileupload)-->enctype="multipart/form-data"<!--@end--> class="blogEditor" >
<fieldset>
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$oComment->get('document_srl')}" />
<input type="hidden" name="comment_srl" value="{$oComment->get('comment_srl')}" />
<input type="hidden" name="content" value="{htmlspecialchars($oComment->get('content'))}" />
<input type="hidden" name="parent_srl" value="{$oComment->get('parent_srl')}" />
<div class="userNameAndPw">
<!--@if(!$is_logged)-->
<label for="userName">{$lang->writer}</label>
<input type="text" name="nick_name" value="{$oComment->get('nick_name')}" class="userName inputTypeText" id="userName"/>
<label for="userPw">{$lang->password}</label>
<input type="password" name="password" value="" id="userPw" class="userPw inputTypeText" />
<label for="emailAddress">{$lang->email_address}</label>
<input type="text" name="email_address" value="{htmlspecialchars($oComment->get('email_address'))}" id="emailAddress" class="emailAddress inputTypeText"/>
<label for="homePage">{$lang->homepage}</label>
<input type="text" name="homepage" value="{htmlspecialchars($oComment->get('homepage'))}" id="homePage" class="homePage inputTypeText"/>
<!--@else-->
<input type="checkbox" name="notify_message" value="Y" <!--@if($oComment->useNotify())-->checked="checked"<!--@end--> id="notify_message" />
<label for="notify_message">{$lang->notify}</label>
<!--@end-->
<input type="checkbox" name="is_secret" value="Y" <!--@if($oComment->isSecret())-->checked="checked"<!--@end--> id="is_secret" />
<label for="is_secret">{$lang->secret}</label>
</div>
<div <!--@if($is_logged)-->class="borderTop"<!--@end-->>{$editor}</div>
</fieldset>
<div class="commentButton tRight">
<span class="button"><input type="button" value="{$lang->cmd_back}" onclick="location.href='{getUrl('act','')}'"/></span>
<span class="button"><input type="submit" value="{$lang->cmd_comment_registration}" accesskey="s" /></span>
</div>
</form>
</div>
<!--#include("footer.html")-->

View file

@ -1,88 +0,0 @@
#blog_category .title_box { position:relative; border-left:1px solid #ffffff; border-right:1px solid #ffffff; padding:7px 0 0 12px; height:21px; _height:20px; }
#blog_category .category_list { padding:.8em 0 .8em 0; }
#blog_category .node_item a { color:#6b6b6b; }
#blog_category .selected { font-weight:bold; cursor:default; font-size:1em; color:#54564b; }
#blog_category .unselected { cursor:pointer; font-size:1em; color:#54564b; }
#blog_category .document_count {
margin-left:5px;
color:#AAAAAA;
font-size:.8em;
}
#blog_category .page {
cursor:pointer;
background:url(../images/common/iconList.gif) no-repeat left;
}
#blog_category .folder_open {
cursor:pointer;
background:url(../images/common/iconFolderClose.gif) no-repeat left;
}
#blog_category .folder_close {
cursor:pointer;
background:url(../images/common/iconFolderClose.gif) no-repeat left;
}
#blog_category .item_open {
display:block;
padding-left:18px;
}
#blog_category .item_close {
display:none;
padding-left:18px;
}
#blog_category .line_null {
padding-left:13px;
}
#blog_category .line_open {
display:block;
padding-left:18px;
/*background:url(../images/tree_menu/line.gif) repeat-y left;*/
}
#blog_category .line_close {
display:none;
padding-left:18px;
/*background:url(../images/tree_menu/line.gif) repeat-y left;*/
}
#blog_category .plus {
padding-left:18px;
/*background:url(../images/tree_menu/plus.gif) repeat-y left;*/
}
#blog_category .plus_bottom {
padding-left:18px;
/*background:url(../images/tree_menu/plusbottom.gif) no-repeat left;*/
}
#blog_category .minus {
padding-left:18px;
/*background:url(../images/tree_menu/minus.gif) repeat-y left;*/
}
#blog_category .minus_bottom {
padding-left:18px;
/*background:url(../images/tree_menu/minusbottom.gif) no-repeat left;*/
}
#blog_category .join {
padding-left:18px;
/*background:url(../images/tree_menu/join.gif) repeat-y left;*/
}
#blog_category .join_bottom {
padding-left:18px;
/*background:url(../images/tree_menu/joinbottom.gif) no-repeat left;*/
}

View file

@ -1,293 +0,0 @@
@charset "utf-8";
/*
NHN UIT Lab. WebStandardization Team (http://html.nhndesign.com/)
Jeong, Chan Myeong 070601~070630
*/
/**
* Header
**/
/* blog Title */
.blogHeader { border:1px solid #e1e1dd; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) repeat-x left bottom; overflow:hidden; _width:100%;}
.blogHeader h3 { float:left; font-size:1.2em; padding:1em 2em .7em 1.2em; background:#ffffff url(../images/common/lineH3.gif) no-repeat right bottom;}
/* blog Description */
.blogDescription { color:#AEAEAE; border:1px solid #DDDDDD; overflow:hidden; padding:1em; margin-top:1em;}
/* blog Information */
.blogInformation { width:100%; clear:both; margin:1em 0 .5em 0; overflow:hidden; color:#666666;}
.articleNum { float:left; padding:0 0 0 15px; }
/* gallery sub menu */
.blogSubMenu { margin:0 0 .5em 0; padding:1em 0 .5em .5em; border-bottom:1px solid #e0e1db;}
.blogSubMenu a { text-decoration:none; color:#666666; vertical-align:bottom; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat right 5px; padding-left:10px; padding-right:10px; _padding-top:5px; position:relative; top:5px; }
.blogSubMenu img.sort { vertical-align:middle; }
/* list */
.blogList { width:100%; border:1px solid #e0e1db; border-top:none;}
.blogListNoTopBorder { border:none; }
.blogList th { color:#3e3f3e; font-weight:normal; border-top:1px solid #e0e1db; border-bottom:1px solid #ffffff; padding-top:5px; white-space:nowrap; height:33px; overflow:hidden;}
.blogList th.no_line { background-position:-3px bottom; }
.blogList th a { color:#3e3f3e; text-decoration:none; }
.blogList th.num { border-left:1px solid #ffffff; }
.blogList th.checkbox { text-align:center; }
.blogList th.title { text-align:center; padding-left:1em; }
.blogList th.topic { text-align:left; padding-left:1em; }
.blogList th.category { text-align:left; padding-left:1em; }
.blogList th.category select { vertical-align:middle; width:200px; height:20px;}
.blogList th.reading, th.recommend , th.date { white-space:nowrap;}
.blogList th .sort { padding:0 .2em; vertical-align:middle;}
.blogList tr.notice { background:#f8f8f8; }
.blogList tr.notice .num { font-weight:bold;}
.blogList tr.bg1 { background:#ffffff}
.blogList tr.bg2 { background:#fbfbfb;}
.blogList td { border-top:1px solid #eff0ed; padding:.5em;}
.blogList td.num { font:.8em tahoma; color:#999999; padding:.5em 1em; text-align:center;}
.blogList td.checkbox { font:.8em tahoma; color:#999999; text-align:center;}
.blogList tr.notice td.num { padding:.5em; white-space:nowrap;}
.blogList tr.notice td.notice { font-size:.9em; color:#999999; font-weight:bold; text-align:center;}
.blogList td.thumb img { border:1px solid #E0E1DB; padding:3px; }
.blogList td.title {padding-left:1em; }
.blogList td.title strong.category { font-size:1em; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat right 3px; padding-right:.5em; margin-right:.5em;}
.blogList td.title.bold { font-size:1.2em; font-weight:bold;}
.blogList td.title.bold a { position:relative; top:.3em;}
.blogList td.title * { vertical-align:middle;}
.blogList td.title,
.blogList td.title a { color:#444444; text-decoration:none;}
.blogList td.title a:visited { color:#777777;}
.blogList td.topic { padding-left:1em; color:#888888; }
.blogList td.topic strong a { font-size:1.2em; font-weight:bold; text-decoration:none; color:#444444; }
.blogList td.topic strong a:visited { color:#777777; }
.blogList td.topic .category { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 3px; padding-left:.5em; margin-left:.5em; color:#AAAAAA; }
.blogList td.topic div.author { margin-top:.5em; color:#BBBBBB; font-size:0.8em; }
.blogList td.topic div.author strong { font-size:1.2em; font-weight:normal; color:#666666; }
.blogList td.commentCount { font:bold .8em Tahoma; color:#888888; text-align:center; }
.blogList td.latestPost { color:#888888; }
.blogList td.latestPost div.author { margin-top:.5em; color:#BBBBBB; font-size:0.8em; }
.blogList td.latestPost div.author strong { font-size:1.2em; font-weight:normal; color:#666666; }
.blogList td.latestPost div.date { font-size:0.8em; margin-top:.5em; }
.blogList td.latestPost div.date strong { font-family:Tahoma; font-weight:normal; color:#666666; }
.blogListNoTopBorder td { border-top:none; border-bottom:1px solid #eff0ed; padding:.5em;}
.blogList td.webzineTitle { padding-left:1em; color:#777777;}
.blogList td.webzineTitle strong.category { font-size:1em; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat right 3px; padding-right:.5em; margin-right:.5em;}
.blogList td.webzineTitle.bold { font-size:1.2em; font-weight:bold;}
.blogList td.webzineTitle * { vertical-align:middle;}
.blogList td.webzineTitle,
.blogList td.webzineTitle a { color:#444444; text-decoration:none;}
.blogList td.webzineTitle a:visited { color:#777777;}
.blogList td.summary { border-top:none; vertical-align:top; color:#666666; line-height:1.25em; padding-left:1em;}
.blogList td.summary a { color:#666666; text-decoration:none; line-height:inherit;}
.blogList td.summary a:visited { color:#999999;}
.blogList td .replyAndTrackback img.trackback { margin-bottom:-.1em;}
.blogList td .replyAndTrackback strong { font:bold 1em Tahoma;}
.blogList td .replyAndTrackback { font:.8em Tahoma; }
.blogList td.author { color:#333333; font-size:.95em; padding-left:1em;}
.blogList td.author a { font-size:1em; color:#333333;}
.blogList td.reading { font:.8em Tahoma; color:#999999; text-align:center;}
.blogList td.recommend { font:bold .8em Tahoma; text-align:center;}
.blogList td.date { font:.8em Tahoma; color:#999999; text-align:center; white-space:nowrap;}
.blogList td input { _margin:-3px;}
.buttonTypeGo { border:none; cursor:pointer; width:24px; height:20px; _position:relative; _top:3px; font:.75em Tahoma; text-align:center;}
*:first-child+html .buttonTypeGo { position:relative; top:3px; }
.thumbnailBox { margin-top:1em; clear:both; overflow:hidden; border-bottom:1px solid #e0e1db; }
.thumbnailBox div.cell { display:block; float:left; overflow:hidden; margin-bottom:1em; margin-right:1em;}
.thumbnailBox div.cell img.thumb { padding:2px; border:1px solid #e0e1db; display:block; margin-bottom:1em; margin-left:auto;margin-right:auto;}
.thumbnailBox div.title { color:#3B96C0; margin-bottom:.2em; overflow:hidden; white-space:nowrap; text-align:center;}
.thumbnailBox div.title a { color:#3B96C0; text-decoration:none;}
.thumbnailBox div.nameAndDate { font-size:.9em; color:#999999; margin-bottom:.2em; text-align:center;}
.thumbnailBox div.nameAndDate a { color:#999999;}
.thumbnailBox div.nameAndDate .author { margin-left:auto; margin-right:right; }
.thumbnailBox div.nameAndDate .author div { display:inline; vertical-align:middle;}
.thumbnailBox div.nameAndDate .date { font:.8em Tahoma; color:#999999;}
.thumbnailBox div.readAndRecommend { font-size:.9em; color:#666666; text-align:center;}
.thumbnailBox div.readAndRecommend .num { font:.8em Tahoma;}
.thumbnailBox div.readAndRecommend .vr { color:#dddddd;}
.thumbnailBox div.readAndRecommend strong.num { font:bold .8em Tahoma; color:#ff6600;}
/* list button */
.leftButtonBox { float: left; margin-top:1em;}
.rightButtonBox { float: right; margin-top:1em;}
/* pageNavigation */
.pageNavigation { display:block; margin-top:1em; text-align:center; font:bold 11px Tahoma; margin-top:1.5em;}
.pageNavigation a { position:relative; margin-left:-4px; font:bold 1em Tahoma; color:#666666; display:inline-block; padding:1px 7px 2px 6px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
.pageNavigation .current { position:relative; margin-left:-4px; font:bold 11px Tahoma; display:inline-block; padding:1px 7px 1px 6px; border-left:1px solid #dedfde; text-decoration:none; line-height:1em; }
.pageNavigation a:hover { background:#F7F7F7; text-decoration:none; }
.pageNavigation a:visited { color:#999999; }
.pageNavigation a.goToFirst, .pageNavigation a.goToLast { border:none; border-right:1px solid #ffffff; border-left:1px solid #ffffff; z-index:99; vertical-align:top; padding:0px 7px 4px 6px;}
.pageNavigation a.goToFirst img, .pageNavigation a.goToLast img { display:inline-block; padding:2px 0; position:relative; top:2px; _top:1px;}
/* Search Form */
.blogSearch { margin-left:auto; margin-right:auto; clear:both; text-align:center;}
.blogSearch select { height:20px; }
.blogSearch input { height:18px; }
/* blogRead */
.blogRead { padding:0; margin:0; }
.blogRead .originalContent { padding:1.5em .5em .5em .5em;}
.blogRead .readHeader { padding:0 0 .5em 0; margin-bottom:1em; overflow:hidden;}
.blogRead .blogTitle{ clear:both; }
.blogRead .blogTitle h4 { font-size:1.4em; display:inline; }
.blogRead .dateAndCategory { float:left; overflow:hidden; white-space:nowrap; font-size:.9em; color:#888888; padding-top:1em; padding-left:.2em; }
.blogRead .dateAndCategory a { text-decoration:underline; color:#666666; }
.blogRead .userInfo { white-space:nowrap; float:left; color:#3074a5; padding-top:1em; padding-left:.2em; font-size:.9em; margin-left:1em; }
.blogRead .userInfo a { font-size:.9em; color:#3074a5; text-decoration:none; }
.blogRead .userInfo .ipaddress { font-size:.9em; color:#AAAAAA; }
.blogRead .readedAndVoted { float:right; overflow:hidden; white-space:nowrap; font-size:.9em; color:#888888; padding-top:1em; padding-left:.2em; }
.blogRead ul.uri { overflow:hidden; margin:0 0 2em .3em; }
.blogRead ul.uri li { font-size:8pt; color:#c5c7c0; }
.blogRead .contentBody { width:100%; overflow:hidden; }
.blogRead .readBody { padding:0 .3em; color:#555555; overflow:hidden; margin-bottom:2em; clear:both; margin-top:2em;}
.blogRead .readBody p { margin:1em 0; line-height:1.5em;}
.blogRead .readBody .alignLeft { float:left; margin:0 1em 1em 0; }
.blogRead .readBody .alignRight { float:right; margin:0 0 1em 1em; }
.blogRead .readBody .valignCenter { vertical-align:middle;}
.blogRead .readBody .clearBoth { display:block; margin:0 0 1em 0;}
.blogRead .readFooter { padding:0 .3em;}
.blogRead .readFooter .tag { margin-bottom:1em;}
.blogRead .readFooter .tag h5 { display:inline; font-size:1em; margin-right:.5em;}
.blogRead .readFooter .tag ul,
.blogRead .readFooter .tag li { display:inline;}
.blogRead .readFooter .tag a { color:#444444;}
.blogRead .readFooter .tag .tagIcon { vertical-align:middle;}
.blogRead .readFooter .fileAttached { border:1px solid #eaeae7; overflow:hidden; background:#fbfbfb;}
.blogRead .readFooter .fileAttached h5 { font-weight:normal; color:#999999; float:left; font-size:1em; margin:.5em .5em 0 .5em; line-height:1.5em;}
.blogRead .readFooter .fileAttached ul { float:left; margin-top:.5em; padding-bottom:1em; }
.blogRead .readFooter .fileAttached li { display:inline; margin-right:.75em; line-height:1.5em;}
.blogRead .readFooter .fileAttached li a { text-decoration:none; font-size:.9em; padding:.1em 0 .1em 1.5em; white-space:nowrap; color:#444444; }
.blogRead .readFooter .fileAttached li a:visited { color:#777777;}
.blogRead .buttonBox { float:right; height:40px; margin-right:1em;}
.blogRead .replyAndTrackbackBox { overflow:hidden; height:40px; float:left;}
.blogRead .replyAndTrackback li { margin-top:10px; _margin-top:8px; margin-left:1em; padding-left:1.4em; float:left; list-style:none;}
.blogRead .replyAndTrackback li.reply { background:url(../images/common/iconReply.gif) no-repeat left top;}
.blogRead .replyAndTrackback li.reply a { _position:relative; _top:-.6em;}
.blogRead .replyAndTrackback li.trackback { background:url(../images/common/iconTrackback.gif) no-repeat left top;}
.blogRead .replyAndTrackback li.trackback a { _position:relative; _top:0em;}
.blogRead .replyAndTrackback a { color:#333333; white-space:nowrap; text-decoration:none;}
.blogRead .replyAndTrackback a#toggleReply { background:url(../images/common/buttonToggleReply.gif) no-repeat right top;}
.blogRead .replyAndTrackback a#toggleTrackback { background:url(../images/common/buttonToggleReply.gif) no-repeat right -13px;}
.blogRead .replyAndTrackback .listButton { position:relative; right: 10px; top:-7px; _top:-6px; float:right;}
/* extraVars list */
.extraVarsList { width:100%; border:1px solid #e0e1db; clear:both; margin-bottom:1em; margin-top:1em; border-bottom:none;}
.extraVarsList tr.notice { background:#f8f8f8;}
.extraVarsList tr.notice .num { font-size:.9em; font-weight:bold;}
.extraVarsList tr.bg1 { background:#ffffff}
.extraVarsList tr.bg2 { background:#fbfbfb;}
.extraVarsList th { color:#3e3f3e; font-weight:bold; padding:.8em .5em .5em .5em; border-bottom:1px solid #e0e1db; border-right:1px solid #e0e1db;}
.extraVarsList td { border-bottom:1px solid #e0e1db; padding:.5em .5em .5em 1em; white-space:nowrap; overflow:hidden;}
.trackbackBox { padding:.6em .6em; color:#666666; border-top:1px dotted #e0e1db;;margin-top:.5em;}
.trackbackBox .trackbackItem { padding:.6em .8em .6em .6em; line-height:1.25em; border-bottom:1px dotted #EEEEEE; list-style:none;}
.trackbackBox p { display:inline; margin-bottom:1em;}
.trackbackBox a { color:#666666; text-decoration:none;}
.trackbackBox div { clear:both; }
.trackbackBox address { display:block; padding:0 .3em 0 0; }
.trackbackBox address a { font-size:.9em; color:#3074a5; margin-right:.3em; float:left;}
.trackbackBox address .date { font:.8em Tahoma; color:#cccccc; float:right;}
.replyBox { padding:.6em .6em; color:#666666; border-top:1px dotted #e0e1db; margin-top:.5em;}
.replyBox .replyItem { padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; border-bottom:1px dotted #EEEEEE; list-style:none;}
.replyBox p { display:inline; margin-bottom:1em;}
.replyBox .author { float:left; padding:0 .3em 0 0; font-size:.9em; color:#3074a5; margin:0 .3em .5em 0;}
.replyBox .author a { color:#3074a5; margin-right:.3em; text-decoration:none; }
.replyBox .voted { float:left; font-size:.9em; color:#AAAAAA; margin:0 .3em .5em 1em;}
.replyBox .date { float:right; font:.8em Tahoma; color:#cccccc; margin:.3em 0 .5em 0;}
.replyBox .replyOption { float:right; white-space:nowrap; margin-left:.2em;}
.replyBox .replyOption img { vertical-align:middle;}
.replyBox .replyContent { clear:left; }
.replyBox .replyContent p { display:block; }
.replyBox .replyContent ul li { padding:0; border:none; line-height:1.25em; list-style:disc;}
.replyBox .replyContent ol li { padding:0; border:none; line-height:1.25em; list-style:decimal;}
.replyBox .reply { background-color:#FAFAFA;}
.replyBox .replyIndent { background:url(../images/common/iconReplyArrow.gif) no-repeat .0em .3em; padding-left:1.3em;}
.replyBox .fileAttached { _width:99%; border:1px solid #eaeae7; overflow:hidden; background:#fbfbfb; margin-top:.3em; list-style:none;}
.replyBox .fileAttached ul { float:left; padding:.3em 1em .2em 0; margin-left:.5em; _margin-left:.25em;}
.replyBox .fileAttached li a { font-size:.9em; white-space:nowrap; position:relative; color:#444444; }
.replyBox .fileAttached li a:visited { color:#777777;}
.commentButton { margin-top:.5em; }
/* blogEditor */
.blogEditor { padding:.5em 0 1em 0; width:100%; overflow:hidden;}
.blogEditor.reply { padding:.5em 1em 1em 1em; width:auto; overflow:hidden;}
.blogEditor legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em;}
.blogEditor fieldset { _width:100%; border:1px solid #eaeae7; border-top:none;}
.blogEditor .userNameAndPw { position:relative; background:#fbfbfb; border-top:1px solid #eaeae7; border-bottom:1px solid #e1e1e1; padding:.5em 1em; white-space:nowrap;}
.blogEditor .userNameAndPw * { vertical-align:middle;}
.blogEditor .userNameAndPw label { margin-right:.2em; color:#666760;}
.blogEditor .userNameAndPw input { color:#aaaaaa;}
.blogEditor .userNameAndPw .userName { width:6em; margin-right:.8em;}
.blogEditor .userNameAndPw .userPw { width:5em;}
.blogEditor .userNameAndPw .emailAddress { width:6em;}
.blogEditor .userNameAndPw .homePage { width:6em;}
.blogEditor .userNameAndPw .checkSecret { position:absolute; right:2em; top:.7em;}
.blogEditor .borderTop { border-top:1px solid #eaeae7; }
/* blogWrite */
.blogWrite { width:100%; position:relative;}
.blogWrite .userNameAndPw { margin-bottom:-1px;}
.blogWrite .blogEditor fieldset { width:auto; position:relative;}
.blogWrite div.title { border-bottom:1px solid #eff0ed; border-top:1px solid #eff0ed; padding:.5em 0 .5em 1em; white-space:nowrap;}
.blogWrite div.title label.title { display:block; float:left; font-weight:bold; padding:.4em 0 0 1.5em; width:8em; white-space:nowrap;}
.blogWrite div.title input#title { width:60%;}
.blogWrite .option { border-bottom:1px solid #e1e1e1; padding:.5em 0 .5em 1em; overflow:hidden; _height:20px; }
.blogWrite .option dt { display:block; float:left; font-weight:bold; padding:.3em 0 0 1.5em; width:8em; white-space:nowrap;}
.blogWrite .option dd { float:left; margin-right:1em; padding-top:.2em; _padding-top:.1em;}
.blogWrite .option dd * { vertical-align:middle;}
.blogWrite .option dd select { width:7em; font-size:.95em;height:20px;}
.blogWrite .inputTypeText { background:#fbfbfb;}
.blogWrite .trackbackURI { clear:both; border-top:1px solid #eff0ed; padding:4px 0 .8em 0;}
.blogWrite .trackbackURI label { display:block; float:left; color:#333333; font-weight:bold; padding:.4em 0 0 1.5em; width:11em;}
.blogWrite .trackbackURI .inputTypeText { width:50%;}
.blogWrite .tag { clear:both; border-top:1px solid #eff0ed; padding:.8em 0;}
.blogWrite .tag label { display:block; float:left; color:#333333; font-weight:bold; padding:.4em 0 0 1.5em; width:11em;}
.blogWrite .tag .inputTypeText { width:50%;}
.blogWrite .tag .help { vertical-align:middle;}
.blogWrite .tag .info { padding:.5em 0 0 .6em; margin-left:14em; font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center;}
.blogWrite .extra_vars { clear:both; border-top:1px solid #eff0ed; padding:.8em 0;}
.blogWrite .extra_vars label { display:block; float:left; color:#333333; font-weight:bold; padding:.4em 0 0 1.5em; width:11em;}
.blogWrite .extra_vars .info { clear:both; padding:.5em 0 0 .6em; margin-left:14em; font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center;}
.blogWrite .extra_vars ul li { float:left; margin-right:1em; }
.smallBox { border:1px solid #e0e1db; margin-left:auto; margin-right:auto; }
.smallBox.w268 { width:268px;}
.smallBox .header { position:relative; _width:100%; background:#ffffff url(../images/normal/bgH3.gif) no-repeat left bottom; overflow:hidden;}
.smallBox .header h3 { clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #fe3614; }
.smallBox .complex { padding:1.5em 2em 2em 2em;}
.smallBox .inputPassword { position:relative; border:none; padding:2em 2em 1.5em 2em;}
.smallBox .inputPassword .inputTypeText { float:left; margin-right:.5em; width:8em;}
.smallBox .inputPassword legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;}
/* 게시물의 팝업 메뉴 */
.comment_popup_menu, .document_popup_menu { text-align:right; margin-top:3em; clear:both; display:block; background:url(../images/common/document_menu.gif) no-repeat right top; padding-right:16px; height:18px; }
.comment_popup_menu span, .document_popup_menu span { cursor:pointer; display:inline; background:none; padding:0 0 0 0; margin:0 0 0 0; }
/* widget common css */
.blog_widget_ h2 { border-left:1px solid #ffffff; border-right:1px solid #ffffff; padding:7px 0 0 12px; height:21px; _height:20px; font-size:1em; color:#54564b; }
.blog_widget_ .items { padding:10px; overflow:hidden;}
.blog_widget_ .items li { font-size:.9em; display:block; color:#a4a4a4; margin-right:.1em; line-height:150%; overflow:hidden; white-space:nowrap; list-style:none; width:100%; padding:3px 0 3px 0;}
.blog_widget_ .items li a { color:#a4a4a4; margin-right:1em; }

View file

@ -1,40 +0,0 @@
@charset "utf-8";
/* blog Title */
.blogHeader { position:relative; _width:100%; border-top:1px solid #d1d9db; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) no-repeat right bottom; overflow:hidden;}
.blogHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d1d9db; border-bottom:3px solid #2895c0; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
#blog_category { position:relative; border:1px solid #e0e1db; background:url(../images/cyan/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; }
.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/cyan/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;}
#bodyWrap #header #globalNavigation li.on a { color:#2895c0;}
#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/cyan/blogHeaderVr.gif) no-repeat right center;}
#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/cyan/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;}
/* account Navigation */
#blogAccountNavigation li.join a { background:url(../images/cyan/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
#blogAccountNavigation li.myInfo a { background:url(../images/cyan/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
/* blog Information */
.articleNum { float:left; background:url(../images/cyan/iconArticle.gif) no-repeat left top; }
.articleNum strong { font:bold 11px Tahoma; color:#2895c0;}
/* style.list */
.blogList th { background:#ffffff url(../images/cyan/lineBlogListTh.gif) no-repeat left bottom; }
.blogList td.recommend { color:#2895c0; }
.blogList td .replyAndTrackback { color:#2895c0; }
.buttonTypeGo { background:url(../images/cyan/buttonTypeInput24.gif) no-repeat; }
/* pageNavigation */
.pageNavigation .current { color:#2895c0; border-right:1px solid #CCCCCC; }
/* blogRead */
blogRead .readFooter .fileAttached li a { background:url(../images/cyan/iconFile.gif) no-repeat left top;}
/* replyAndTrackback */
.replyAndTrackback { background:url(../images/cyan/bgBlogListTh.gif) repeat-x left 0px; }
.replyAndTrackback a strong { color:#2895c0;}
.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/cyan/iconFile.gif) no-repeat left;}
/* widget common css */
.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/cyan/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; }

View file

@ -1,41 +0,0 @@
@charset "utf-8";
/* blog Title */
.blogHeader { position:relative; _width:100%; border-top:1px solid #d1d9db; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) no-repeat right bottom; overflow:hidden;}
.blogHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d0dbd1; border-bottom:3px solid #38b549; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
#blog_category { position:relative; border:1px solid #e0e1db; background:url(../images/green/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; }
.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/green/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;}
#bodyWrap #header #globalNavigation li.on a { color:#38b549;}
#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/green/blogHeaderVr.gif) no-repeat right center;}
#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/green/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;}
/* account Navigation */
#blogAccountNavigation li.join a { background:url(../images/green/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
#blogAccountNavigation li.myInfo a { background:url(../images/green/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
/* blog Information */
.articleNum { float:left; background:url(../images/green/iconArticle.gif) no-repeat left top; }
.articleNum strong { font:bold 11px Tahoma; color:#ff6600;}
/* style.list */
.blogList th { background:#ffffff url(../images/green/lineBlogListTh.gif) no-repeat left bottom; }
.blogList td.recommend { color:#38b549; }
.blogList td .replyAndTrackback { color:#38b549; }
.buttonTypeGo { background:url(../images/green/buttonTypeInput24.gif) no-repeat; }
/* pageNavigation */
.pageNavigation .current { color:#38b549; border-right:1px solid #CCCCCC; }
/* blogRead */
.blogRead .readFooter .fileAttached li a { background:url(../images/green/iconFile.gif) no-repeat left top;}
/* replyAndTrackback */
.replyAndTrackback { background:url(../images/green/bgBlogListTh.gif) repeat-x left 0px; }
.replyAndTrackback a strong { color:#38b549;}
.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/green/iconFile.gif) no-repeat left;}
/* widget common css */
.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/green/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; }

View file

@ -1,81 +0,0 @@
@et "utf-8";
/*
NHN UIT Lab. WebStandardization Team (http://html.nhndesign.com/)
Jeong, Chan Myeong 070601~070630
*/
li { list-style:none; }
a { text-decoration:none; }
/* Blog Layout - Common */
#bodyWrap { position:relative; width:860px; margin:0 auto; background-color:#FFFFFF; padding-top:1px; top:30px;}
/* Blog Layout - Content Body */
#contentBody { overflow:hidden; padding-bottom:2em; _width:100%;}
/* Blog Layout - ColumnLeft */
#columnLeft { float:left; width:182px; margin:0px 8px 0px 0px; padding-left:10px;}
/* Blog Layout - ColumnRight */
#columnRight {}
/* Blog Layout - Content */
#content { float:left; width:650px; overflow:hidden; padding-right:10px; _width:648px; }
#bodyWrap #accountNavigation { float:right; margin:1em 1em 0 0; padding-bottom:.5em; overflow:hidden;}
#bodyWrap #accountNavigation li a { display:block; float:left; padding:0 .75em; color:#888888; white-space:nowrap;}
/* account Navigation */
#blogAccountNavigation { float:right; margin:1em; }
#blogAccountNavigation li { float:left; margin-left:7px; list-style:none; padding-top:3px;}
#blogAccountNavigation li a { font-size:12px; white-space:nowrap; color:#666666; text-decoration:none;}
#blogAccountNavigation li.setup a { background:url(../images/common/iconSetup.gif) no-repeat left top; padding-left:14px; }
#blogAccountNavigation li.admin a { background:url(../images/common/iconAdmin.gif) no-repeat left top; padding-left:12px; }
#blogAccountNavigation li.listType { margin-left:5px; }
#blogAccountNavigation li.loginAndLogout { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 5px; padding-left:8px; _padding-top:5px;}
#blogAccountNavigation li.write a { background:url(../images/common/iconWrite.gif) no-repeat left center; padding-left:14px;}
*:first-child+html #blogAccountNavigation li.loginAndLogout { padding-top:5px; }
/* Blog header Child*/
#bodyWrap #header h1 { font-size:2em; padding:.8em 0 .2em 30px; letter-spacing:-.05em;}
#bodyWrap #header h1 a { font-family:Tahoma; color:#53554a;}
#bodyWrap #header #tagLine { padding:0 0 0 30px; color:#7e7f77;}
#bodyWrap #header #globalNavigation { float:right; padding:1em 1em 1em 0; overflow:hidden;}
#bodyWrap #header #globalNavigation li { float:left; margin-left:-1px; background:url(../images/common/blogHeaderVr.gif) no-repeat left center;}
#bodyWrap #header #globalNavigation li a { display:block; float:left; padding:0 .75em; font-weight:bold; font-family:Tahoma; color:#54564b; white-space:nowrap;}
/* Column Left & Right Common Child */
.boxTypeA { position:relative; border:1px solid #e0e1db; margin-bottom:.7em;}
.boxTypeB h2 { position:relative; border-left:1px solid #ffffff; border-right:1px solid #ffffff; padding:7px 0 0 12px; height:21px; _height:20px; font-size:1em; color:#54564b; font-family:Tahoma;}
*:first-child+html .boxTypeB h2 { height:20px;}
.boxTypeB .toggleMask {position:absolute; top:8px; right:5px; cursor:pointer; width:13px; height:13px; overflow:hidden;}
.boxTypeB .showHide { position:relative;}
.boxTypeB .optionList { position:absolute; top:8px; right:0; overflow:hidden;}
.boxTypeB .optionList li { float:left; padding:0 .5em; margin-left:-1px; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left center;}
.boxTypeB .optionList li a { color:#a4a4a4; font-size:.9em;}
.boxTypeB .optionList li.on a { color:#000000;}
.boxTypeB .showAll { color:#000000; font-size:.9em; white-space:nowrap; display:inline-block; position:relative; left:1.2em; padding-right:.6em; background:url(../images/common/iconArrow00.gif) no-repeat right center;}
/* Profile */
div#profile { padding:10px; overflow:hidden; background-color:#FFFFFF; }
div#profile img.profile { width:160px; display:block; margin-bottom:1.2em;}
div#profile dl#hello {}
div#profile dl#hello dt { color:#333333; margin-bottom:.2em;}
div#profile dl#hello dt a { color:#333333;}
div#profile dl#hello dd { color:#777777; margin-bottom:1em;}
div#profile ul#admin { overflow:hidden; height:1.2em;}
div#blog_category { background-color:#FFFFFF; }
/* Search Box */
div#searchBox { margin-bottom:.7em; overflow:hidden; width:100%;}
div#searchBox fieldset { border:none;}
div#searchBox fieldset legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em;}
div#searchBox .imgBtn {vertical-align:middle; _position:relative; top:-4px; }
*:first-child+html div#searchBox .imgBtn { position:relative; top:-4px; }
/* powered by zbxe */
#poweredbyzbxe { text-align:center; margin-top:2em; }
#poweredbyzbxe img { width:138px; height:35px; border:0;}

View file

@ -1,40 +0,0 @@
@charset "utf-8";
/* blog Title */
.blogHeader { position:relative; _width:100%; border-top:1px solid #d1d9db; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) no-repeat right bottom; overflow:hidden;}
.blogHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d1d9db; border-bottom:3px solid #ac19a9; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
#blog_category { position:relative; border:1px solid #e0e1db; background:url(../images/purple/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; }
.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/purple/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;}
#bodyWrap #header #globalNavigation li.on a { color:#b1ae00;}
#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/purple/blogHeaderVr.gif) no-repeat right center;}
#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/purple/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;}
/* account Navigation */
#blogAccountNavigation li.join a { background:url(../images/purple/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
#blogAccountNavigation li.myInfo a { background:url(../images/purple/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
/* blog Information */
.articleNum { float:left; background:url(../images/purple/iconArticle.gif) no-repeat left top; }
.articleNum strong { font:bold 11px Tahoma; color:#b1ae00;}
/* style.list */
.blogList th { background:#ffffff url(../images/purple/lineBlogListTh.gif) no-repeat left bottom; }
.blogList td.recommend { color:#b1ae00; }
.blogList td .replyAndTrackback { color:#b1ae00; }
.buttonTypeGo { background:url(../images/purple/buttonTypeInput24.gif) no-repeat; }
/* pageNavigation */
.pageNavigation .current { color:#b1ae00; border-right:1px solid #CCCCCC; }
/* blogRead */
.blogRead .readFooter .fileAttached li a { background:url(../images/purple/iconFile.gif) no-repeat left top;}
/* replyAndTrackback */
.replyAndTrackback { background:url(../images/purple/bgBlogListTh.gif) repeat-x left 0px; }
.replyAndTrackback a strong { color:#b1ae00;}
.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/purple/iconFile.gif) no-repeat left;}
/* widget common css */
.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/purple/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; }

View file

@ -1,40 +0,0 @@
@charset "utf-8";
/* blog Title */
.blogHeader { position:relative; _width:100%; border-top:1px solid #d1d9db; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) no-repeat right bottom; overflow:hidden;}
.blogHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d1d9db; border-bottom:3px solid #ed135a; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
#blog_category { position:relative; border:1px solid #e0e1db; background:url(../images/red/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; }
.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/red/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;}
#bodyWrap #header #globalNavigation li.on a { color:#fe3614;}
#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/red/blogHeaderVr.gif) no-repeat right center;}
#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/red/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;}
/* account Navigation */
#blogAccountNavigation li.join a { background:url(../images/red/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
#blogAccountNavigation li.myInfo a { background:url(../images/red/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
/* blog Information */
.articleNum { float:left; background:url(../images/red/iconArticle.gif) no-repeat left top; }
.articleNum strong { font:bold 11px Tahoma; color:#ff6600;}
/* style.list */
.blogList th { background:#ffffff url(../images/red/lineBlogListTh.gif) no-repeat left bottom; }
.blogList td.recommend { color:#ff6600; }
.blogList td .replyAndTrackback { color:#ff6600; }
.buttonTypeGo { background:url(../images/red/buttonTypeInput24.gif) no-repeat; }
/* pageNavigation */
.pageNavigation .current { color:#ff6600; border-right:1px solid #CCCCCC; }
/* blogRead */
.blogRead .readFooter .fileAttached li a { background:url(../images/red/iconFile.gif) no-repeat left top;}
/* replyAndTrackback */
.replyAndTrackback { background:url(../images/red/bgBlogListTh.gif) repeat-x left 0px; }
.replyAndTrackback a strong { color:#ff6600;}
.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/red/iconFile.gif) no-repeat left;}
/* widget common css */
.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/red/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; }

View file

@ -1,40 +0,0 @@
@charset "utf-8";
/* blog Title */
.blogHeader { position:relative; _width:100%; border:1px solid #e1e1dd; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) repeat-x left bottom; overflow:hidden;}
.blogHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-bottom:3px solid #fe3614; background:#ffffff url(../images/common/lineH3.gif) no-repeat right bottom;}
#blog_category { position:relative; border:1px solid #e0e1db; background:url(../images/white/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; }
.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/white/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;}
#bodyWrap #header #globalNavigation li.on a { color:#fe3614;}
#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/white/blogHeaderVr.gif) no-repeat right center;}
#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/white/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;}
/* account Navigation */
#blogAccountNavigation li.join a { background:url(../images/white/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
#blogAccountNavigation li.myInfo a { background:url(../images/white/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
/* blog Information */
.articleNum { float:left; background:url(../images/white/iconArticle.gif) no-repeat left top; }
.articleNum strong { font:bold 11px Tahoma; color:#ff6600;}
/* style.list */
.blogList th { background:#ffffff url(../images/white/lineBlogListTh.gif) no-repeat left bottom; }
.blogList td.recommend { color:#ff6600; }
.blogList td .replyAndTrackback { color:#ff6600; }
.buttonTypeGo { background:url(../images/white/buttonTypeInput24.gif) no-repeat; }
/* pageNavigation */
.pageNavigation .current { color:#ff6600; border-right:1px solid #CCCCCC; }
/* blogRead */
.blogRead .readFooter .fileAttached li a { background:url(../images/white/iconFile.gif) no-repeat left top;}
/* replyAndTrackback */
.replyAndTrackback { background:url(../images/white/bgBlogListTh.gif) repeat-x left 0px; }
.replyAndTrackback a strong { color:#ff6600;}
.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/white/iconFile.gif) no-repeat left;}
/* widget common css */
.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/white/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; }

View file

@ -1,24 +0,0 @@
<!--%import("filter/delete_comment.xml")-->
<!--#include("header.html")-->
<div class="smallBox w268">
<div class="header">
<h3>{$lang->confirm_delete}</h3>
</div>
<form action="./" method="get" onsubmit="return procFilter(this, delete_comment)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$oComment->get('document_srl')}" />
<input type="hidden" name="comment_srl" value="{$oComment->get('comment_srl')}" />
<div class="inputPassword tCenter">
<span class="button"><input type="submit" value="{$lang->cmd_delete}" accesskey="s" /></span>
<a href="{getUrl('act','','comment_srl','')}" class="button"><span>{$lang->cmd_cancel}</span></a>
</div>
</form>
</div>
<!--#include("footer.html")-->

View file

@ -1,23 +0,0 @@
<!--%import("filter/delete_document.xml")-->
<!--#include("header.html")-->
<div class="smallBox w268">
<div class="header">
<h3>{$lang->confirm_delete}</h3>
</div>
<form action="./" method="get" onsubmit="return procFilter(this, delete_document)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<div class="inputPassword tCenter">
<span class="button"><input type="submit" value="{$lang->cmd_delete}" accesskey="s" /></span>
<a href="{getUrl('act','')}" class="button"><span>{$lang->cmd_cancel}</span></a>
</div>
</form>
</div>
<!--#include("footer.html")-->

View file

@ -1,25 +0,0 @@
<!--%import("filter/delete_trackback.xml")-->
<!--#include("header.html")-->
<div class="smallBox w268">
<div class="header">
<h3>{$lang->confirm_delete}</h3>
</div>
<form action="./" method="get" onsubmit="return procFilter(this, delete_trackback)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<input type="hidden" name="trackback_srl" value="{$trackback_srl}" />
<div class="inputPassword tCenter">
<span class="button"><input type="submit" value="{$lang->cmd_delete}" accesskey="s" /></span>
<a href="{getUrl('act','')}" class="button"><span>{$lang->cmd_cancel}</span></a>
</div>
</form>
</div>
<!--#include("footer.html")-->

View file

@ -1,65 +0,0 @@
<!-- 이 파일은 extra_vars의 form을 출력하는 파일이며 다른 스킨에서 그대로 가져가서 css만 바꾸어 주면 된다 -->
<!-- type=select,checkbox이고 기본값이 , 로 연결되어 있으면 , 를 기준으로 explode하여 배열로 만든다 -->
<!--@if(in_array($val->type,array('select','checkbox'))&&strpos($val->default,",")!==false)-->
{@ $val->default = explode(',',$val->default) }
<!--@end-->
<!-- 확장변수의 이름을 지정 -->
{@ $val->column_name = "extra_vars".$key}
<!-- 확장변수의 값을 documentItem::getExtraValue로 가져옴 -->
{@ $val->value = $oDocument->getExtraValue($key)}
<!-- 일반 text -->
<!--@if($val->type == 'text')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w400" />
<!-- 홈페이지 주소 -->
<!--@elseif($val->type == 'homepage')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w400" />
<!-- Email 주소 -->
<!--@elseif($val->type == 'email_address')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w400" />
<!-- 전화번호 -->
<!--@elseif($val->type == 'tel')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[0])}" size="4" class="inputTypeText" />
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[1])}" size="4" class="inputTypeText" />
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[2])}" size="4" class="inputTypeText" />
<!-- textarea -->
<!--@elseif($val->type == 'textarea')-->
<textarea name="{$val->column_name}" class="inputTypeTextArea w400">{htmlspecialchars($val->value)}</textarea>
<!-- 다중 선택 -->
<!--@elseif($val->type == 'checkbox')-->
<!--@if($val->default)-->
<ul style="list-style:none;">
<!--@foreach($val->default as $v)-->
<li><input type="checkbox" name="{$val->column_name}" value="{$v}" <!--@if(is_array($val->value)&&in_array($v, $val->value))-->checked="checked"<!--@end-->/> {$v}</li>
<!--@end-->
</ul>
<!--@end-->
<!-- 단일 선택 -->
<!--@elseif($val->type == 'select')-->
<select name="{$val->column_name}">
<!--@if($val->default)-->
<!--@foreach($val->default as $v)-->
<option value="{$v}" <!--@if($v == $val->value)-->selected="selected"<!--@end-->>{$v}</option>
<!--@end-->
<!--@end-->
</select>
<!-- 날짜 입력 -->
<!--@elseif($val->type == 'date')-->
<input type="hidden" name="{$val->column_name}" id="date_{$val->column_name}" value="{$val->value}" />
<div class="fl inputTypeText w80" id="str_{$val->column_name}">{zdate($val->value,"Y-m-d")}</div>
<a href="#" onclick="open_calendar('{$val->column_name}','{$val->value}');return false;" class="button"><span>{$lang->cmd_open_calendar}</span></a>
<!--@end-->
<!--@if($val->desc)-->
<p class="info">{$val->desc}</p>
<!--@end-->

View file

@ -1,63 +0,0 @@
<!-- 이 파일은 extra_vars의 결과값을 출력하는 파일이며 다른 스킨에서 그대로 가져가서 css만 바꾸어 주면 된다 -->
<!-- 확장변수의 이름을 지정 -->
{@ $val->column_name = "extra_vars".$key}
<!-- 확장변수의 값을 documentItem::getExtraValue로 가져옴 -->
{@ $val->value = $oDocument->getExtraValue($key)}
<!-- 일반 text -->
<!--@if($val->type == 'text')-->
{htmlspecialchars($val->value)}
<!-- 홈페이지 주소 -->
<!--@elseif($val->type == 'homepage')-->
<!--@if($val->value)-->
<a href="{htmlspecialchars($val->value)}" onclick="window.open(this.href);return false;">{$val->value}</a>
<!--@else-->
&nbsp;
<!--@end-->
<!-- Email 주소 -->
<!--@elseif($val->type == 'email_address')-->
<!--@if($val->value)-->
<a href="mailto:{htmlspecialchars($val->value)}">{$val->value}</a>
<!--@else-->
&nbsp;
<!--@end-->
<!-- 전화번호 -->
<!--@elseif($val->type == 'tel')-->
{htmlspecialchars($val->value[0])}
<!--@if($val->value[1])-->-<!--@end-->
{htmlspecialchars($val->value[1])}
<!--@if($val->value[2])-->-<!--@end-->
{htmlspecialchars($val->value[2])}
&nbsp;
<!-- textarea -->
<!--@elseif($val->type == 'textarea')-->
{nl2br(htmlspecialchars($val->value))}
&nbsp;
<!-- 다중 선택 -->
<!--@elseif($val->type == 'checkbox')-->
<!--@if(!is_array($val->value))-->{@ $val->value = array($val->value) }<!--@end-->
<!--@foreach($val->value as $v)-->
{@ $_tmp_value[] = htmlspecialchars($v)}
<!--@end-->
{implode(",",$_tmp_value)}
&nbsp;
<!-- 단일 선택 -->
<!--@elseif($val->type == 'select')-->
{htmlspecialchars($val->value)}
&nbsp;
<!-- 날짜 입력 -->
<!--@elseif($val->type == 'date')-->
{zdate($val->value,"Y-m-d")}
&nbsp;
<!--@end-->
<!--@if(!$val->value)-->&nbsp;<!--@end-->

View file

@ -1,18 +0,0 @@
<filter name="delete_comment" module="blog" act="procBlogDeleteComment">
<form>
<node target="comment_srl" required="true" />
</form>
<parameter>
<param name="mid" target="mid" />
<param name="page" target="page" />
<param name="document_srl" target="document_srl" />
<param name="comment_srl" target="comment_srl" />
</parameter>
<response callback_func="completeDeleteComment">
<tag name="error" />
<tag name="message" />
<tag name="mid" />
<tag name="document_srl" />
<tag name="page" />
</response>
</filter>

View file

@ -1,16 +0,0 @@
<filter name="delete_document" module="blog" act="procBlogDeleteDocument">
<form>
<node target="document_srl" required="true" />
</form>
<parameter>
<param name="mid" target="mid" />
<param name="page" target="page" />
<param name="document_srl" target="document_srl" />
</parameter>
<response callback_func="completeDeleteDocument">
<tag name="error" />
<tag name="message" />
<tag name="mid" />
<tag name="page" />
</response>
</filter>

View file

@ -1,18 +0,0 @@
<filter name="delete_trackback" module="blog" act="procBlogDeleteTrackback">
<form>
<node target="trackback_srl" required="true" />
</form>
<parameter>
<param name="mid" target="mid" />
<param name="page" target="page" />
<param name="document_srl" target="document_srl" />
<param name="trackback_srl" target="trackback_srl" />
</parameter>
<response callback_func="completeDeleteTrackback">
<tag name="error" />
<tag name="message" />
<tag name="mid" />
<tag name="document_srl" />
<tag name="page" />
</response>
</filter>

View file

@ -1,16 +0,0 @@
<filter name="input_password" module="blog" act="procBlogVerificationPassword" >
<form>
<node target="document_srl" required="true" />
<node target="password" required="true" />
</form>
<parameter>
<param name="mid" target="mid" />
<param name="document_srl" target="document_srl" />
<param name="comment_srl" target="comment_srl" />
<param name="password" target="password" />
</parameter>
<response>
<tag name="error" />
<tag name="message" />
</response>
</filter>

View file

@ -1,17 +0,0 @@
<filter name="insert" module="blog" act="procBlogInsertDocument" confirm_msg_code="confirm_submit">
<form>
<node target="nick_name" required="true" />
<node target="password" required="true" />
<node target="email_address" maxlength="250" />
<node target="homepage" maxlength="250"/>
<node target="title" required="true" minlength="1" maxlength="250" />
<node target="content" required="true" />
</form>
<response callback_func="completeDocumentInserted">
<tag name="error" />
<tag name="message" />
<tag name="mid" />
<tag name="document_srl" />
<tag name="category_srl" />
</response>
</filter>

View file

@ -1,30 +0,0 @@
<filter name="insert_comment" module="blog" act="procBlogInsertComment" confirm_msg_code="confirm_submit">
<form>
<node target="document_srl" required="true" />
<node target="nick_name" required="true" />
<node target="password" required="true" />
<node target="email_address" maxlength="250" />
<node target="homepage" maxlength="250"/>
<node target="content" required="true" minlength="1" />
</form>
<parameter>
<param name="mid" target="mid" />
<param name="document_srl" target="document_srl" />
<param name="comment_srl" target="comment_srl" />
<param name="parent_srl" target="parent_srl" />
<param name="nick_name" target="nick_name" />
<param name="password" target="password" />
<param name="email_address" target="email_address" />
<param name="homepage" target="homepage" />
<param name="content" target="content" />
<param name="is_secret" target="is_secret" />
<param name="notify_message" target="notify_message" />
</parameter>
<response callback_func="completeInsertComment">
<tag name="error" />
<tag name="message" />
<tag name="mid" />
<tag name="document_srl" />
<tag name="comment_srl" />
</response>
</filter>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 B

Some files were not shown because too many files have changed in this diff Show more