From dc24001d469d9190edf5f7e75db6c451e162f326 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 18 Sep 2007 04:13:34 +0000 Subject: [PATCH] =?UTF-8?q?#14=20=EB=B3=84=EB=8F=84=EC=9D=98=20=EC=99=B8?= =?UTF-8?q?=EB=B6=80=20=ED=8E=98=EC=9D=B4=EC=A7=80(opage)=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=EC=9D=84=20=EB=A7=8C=EB=93=A4=EC=96=B4=EC=84=9C=20?= =?UTF-8?q?=EC=99=B8=EB=B6=80=20html/php=20=EB=AC=B8=EC=84=9C=EB=82=98=20?= =?UTF-8?q?=EC=99=B8=EB=B6=80=20html=EB=AC=B8=EC=84=9C=EB=93=B1=EC=9D=84?= =?UTF-8?q?=20=EB=82=B4=EB=B6=80=EC=97=90=EC=84=9C=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8A=94=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=20=EC=A0=9C=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2600 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 5 +- classes/file/FileHandler.class.php | 3 +- modules/opage/conf/info.xml | 20 +++ modules/opage/conf/module.xml | 25 ++++ modules/opage/lang/ko.lang.php | 15 +++ modules/opage/opage.admin.controller.php | 107 +++++++++++++++ modules/opage/opage.admin.view.php | 153 ++++++++++++++++++++++ modules/opage/opage.class.php | 70 ++++++++++ modules/opage/opage.controller.php | 119 +++++++++++++++++ modules/opage/opage.model.php | 33 +++++ modules/opage/opage.view.php | 92 +++++++++++++ modules/opage/queries/getOpageList.xml | 24 ++++ modules/opage/tpl/content.html | 8 ++ modules/opage/tpl/filter/delete_opage.xml | 10 ++ modules/opage/tpl/filter/insert_opage.xml | 24 ++++ modules/opage/tpl/header.html | 3 + modules/opage/tpl/index.html | 79 +++++++++++ modules/opage/tpl/js/opage_admin.js | 49 +++++++ modules/opage/tpl/opage_delete.html | 31 +++++ modules/opage/tpl/opage_insert.html | 116 ++++++++++++++++ modules/page/conf/info.xml | 2 +- 21 files changed, 984 insertions(+), 4 deletions(-) create mode 100644 modules/opage/conf/info.xml create mode 100644 modules/opage/conf/module.xml create mode 100644 modules/opage/lang/ko.lang.php create mode 100644 modules/opage/opage.admin.controller.php create mode 100644 modules/opage/opage.admin.view.php create mode 100644 modules/opage/opage.class.php create mode 100644 modules/opage/opage.controller.php create mode 100644 modules/opage/opage.model.php create mode 100644 modules/opage/opage.view.php create mode 100644 modules/opage/queries/getOpageList.xml create mode 100644 modules/opage/tpl/content.html create mode 100644 modules/opage/tpl/filter/delete_opage.xml create mode 100644 modules/opage/tpl/filter/insert_opage.xml create mode 100644 modules/opage/tpl/header.html create mode 100644 modules/opage/tpl/index.html create mode 100644 modules/opage/tpl/js/opage_admin.js create mode 100644 modules/opage/tpl/opage_delete.html create mode 100644 modules/opage/tpl/opage_insert.html diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index e5dfcc8bc..2b2dd594e 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -336,13 +336,14 @@ $flag = true; foreach($obj as $key=>$val) { if(!$val) continue; - if($val && !iconv($charset,'UTF-8',$val)) $flag = false; + if($val && iconv($charset,$charset,$val)!=$val) $flag = false; } if($flag == true) { foreach($obj as $key => $val) $obj->{$key} = iconv($charset,'UTF-8',$val); return $obj; } } + return $obj; } /** @@ -868,7 +869,7 @@ function _transEditorComponent($matches) { // IE에서는 태그의 특성중에서 " 를 빼어 버리는 경우가 있기에 정규표현식으로 추가해줌 $buff = $matches[0]; - $buff = preg_replace_callback('/([^=^"^ ]*)=([^ ]*)/i', array($this, _fixQuotation), $buff); + $buff = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', array($this, _fixQuotation), $buff); $buff = str_replace("&","&",$buff); // 위젯에서 생성된 코드 (img, div태그내에 editor_widget코드 존재)의 parameter를 추출 diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index 794faf53d..ddbca82c9 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -133,6 +133,7 @@ $url_info = parse_url($url); if(!$url_info['port']) $url_info['port'] = 80; + if(!$url_info['path']) $url_info['path'] = '/'; $fp = @fsockopen($url_info['host'], $url_info['port']); if(!$fp) return; @@ -149,7 +150,7 @@ $url_info['path'] = $path; } - $header = sprintf("GET %s HTTP/2.0\r\nHost: %s\r\nReferer: %s://%s\r\nRequestUrl: %s\r\nConnection: Close\r\n\r\n", $url_info['path'], $url_info['host'], $url_info['scheme'], $url_info['host'], Context::getRequestUri()); + $header = sprintf("GET %s HTTP/1.0\r\nHost: %s\r\nReferer: %s://%s\r\nRequestUrl: %s\r\nConnection: Close\r\n\r\n", $url_info['path'], $url_info['host'], $url_info['scheme'], $url_info['host'], Context::getRequestUri()); @fwrite($fp, $header); diff --git a/modules/opage/conf/info.xml b/modules/opage/conf/info.xml new file mode 100644 index 000000000..0b1d9aa8b --- /dev/null +++ b/modules/opage/conf/info.xml @@ -0,0 +1,20 @@ + + + 외부 페이지 + 外页面 + 外でページ + Outside Page + Afuera Página + + 제로 + zero + Zero + zero + zero + 외부페이지를 제로보드XE내부로 삽입시키는 모듈 + 외부페이지를 제로보드XE내부로 삽입시키는 모듈 + 외부페이지를 제로보드XE내부로 삽입시키는 모듈 + 외부페이지를 제로보드XE내부로 삽입시키는 모듈 + 외부페이지를 제로보드XE내부로 삽입시키는 모듈 + + diff --git a/modules/opage/conf/module.xml b/modules/opage/conf/module.xml new file mode 100644 index 000000000..44d06f9d4 --- /dev/null +++ b/modules/opage/conf/module.xml @@ -0,0 +1,25 @@ + + + + + 열람 + 浏览 + 閲覧 + view + + + + + + + + + + + + + + + + + diff --git a/modules/opage/lang/ko.lang.php b/modules/opage/lang/ko.lang.php new file mode 100644 index 000000000..bfce33426 --- /dev/null +++ b/modules/opage/lang/ko.lang.php @@ -0,0 +1,15 @@ +opage = "외부 페이지"; + $lang->opage_path = "외부 문서 위치"; + $lang->opage_caching_interval = "캐싱 시간 설정"; + + $lang->about_opage = "제로보드XE가 아닌 외부 html 또는 php파일을 제로보드XE에서 사용할 수 있도록 하는 모듈입니다.
절대경로, 상대경로를 이용할 수 있으며 http:// 로 시작할 경우 서버 외부의 페이지도 표시할 수 있습니다"; + $lang->about_opage_path= "외부문서의 위치를 입력해주세요.
/path1/path2/sample.php 와 같이 절대경로나 ../path2/sample.php와 같은 상대경로 모두 사용가능합니다.
http://url/sample.php 와 같이 사용하면 결과를 받아다가 출력을 하게 됩니다.
현재 제로보드XE가 설치된 절대경로는 다음과 같습니다.
"; + $lang->about_opage_caching_interval = "단위는 분이며 정해진 시간동안은 임시 저장한 데이터를 출력하도록 합니다.
다른 서버의 정보를 출력하거나 데이터 출력시 많은 자원이 필요하면 원하시는 분 단위로 캐싱하시는 것을 추천해드립니다.
0 으로 하시면 캐싱을 하지 않습니다"; +?> diff --git a/modules/opage/opage.admin.controller.php b/modules/opage/opage.admin.controller.php new file mode 100644 index 000000000..32cdfffb4 --- /dev/null +++ b/modules/opage/opage.admin.controller.php @@ -0,0 +1,107 @@ +module = 'opage'; + $module_args->mid = Context::get('opage_name'); + if($module_args->is_default!='Y') $module_args->is_default = 'N'; + + // 외부 문서 위치, 캐싱 시간은 extra_vars에 저장 + $config_args = Context::gets('path','caching_interval'); + $module_args->extra_vars = serialize($config_args); + + // module_srl이 넘어오면 원 모듈이 있는지 확인 + if($module_args->module_srl) { + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_args->module_srl); + } + + // is_default=='Y' 이면 기본 모듈을 제거 + if($module_args->is_default=='Y') $oModuleController->clearDefaultModule(); + + // module_srl의 값에 따라 insert/update + if($module_info->module_srl != $module_args->module_srl) { + $output = $oModuleController->insertModule($module_args); + $msg_code = 'success_registed'; + } else { + $output = $oModuleController->updateModule($module_args); + $msg_code = 'success_updated'; + } + + // 등록 실패시 에러 반환 + if(!$output->toBool()) return $output; + + /** + * 권한 저장 + **/ + // 현 모듈의 권한 목록을 가져옴 + $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_info->module_srl, $grants); + + // 캐시 파일 삭제 + $cache_file = sprintf("./files/cache/opage/%d.cache", $module_info->module_srl); + if(file_exists($cache_file)) @unlink($cache_file); + + // 등록 성공후 return될 메세지 정리 + $this->add("module_srl", $module_args->module_srl); + $this->add("opage", Context::get('opage')); + $this->setMessage($msg_code); + } + + /** + * @brief 외부페이지 삭제 + **/ + function procOpageAdminDelete() { + $module_srl = Context::get('module_srl'); + + // 원본을 구해온다 + $oModuleController = &getController('module'); + $output = $oModuleController->deleteModule($module_srl); + if(!$output->toBool()) return $output; + + $this->add('module','opage'); + $this->add('opage',Context::get('opage')); + $this->setMessage('success_deleted'); + } + + /** + * @brief 외부페이지 기본 정보의 추가 + **/ + function procOpageAdminInsertConfig() { + // 기본 정보를 받음 + $args = Context::gets('test'); + + } + + } +?> diff --git a/modules/opage/opage.admin.view.php b/modules/opage/opage.admin.view.php new file mode 100644 index 000000000..252331b51 --- /dev/null +++ b/modules/opage/opage.admin.view.php @@ -0,0 +1,153 @@ +getModuleCategories(); + Context::set('module_category', $module_category); + + // 템플릿 경로 구함 (opage의 경우 tpl에 관리자용 템플릿 모아놓음) + $this->setTemplatePath($this->module_path.'tpl'); + } + + /** + * @brief 외부페이지 관리 목록 보여줌 + **/ + function dispOpageAdminContent() { + $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('opage.getOpageList', $args); + + // 템플릿에 쓰기 위해서 context::set + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('opage_list', $output->data); + Context::set('page_navigation', $output->page_navigation); + + // 템플릿 파일 지정 + $this->setTemplateFile('index'); + } + + /** + * @brief 선택된 외부페이지의 정보 출력 + **/ + function dispOpageAdminInfo() { + // GET parameter에서 module_srl을 가져옴 + $module_srl = Context::get('module_srl'); + + // module model 객체 생성 + if($module_srl) { + $oOpageModel = &getModel('opage'); + $module_info = $oOpageModel->getOpage($module_srl); + if(!$module_info) { + unset($module_info); + unset($module_srl); + } else { + Context::set('module_info',$module_info); + } + + // module_srl 값이 없다면 그냥 index 외부페이지를 보여줌 + } else { + return $this->dispOpageAdminContent(); + } + + // 레이아웃이 정해져 있다면 레이아웃 정보를 추가해줌(layout_title, layout) + if($module_info->layout_srl) { + $oLayoutModel = &getModel('layout'); + $layout_info = $oLayoutModel->getLayout($module_info->layout_srl); + $module_info->layout = $layout_info->layout; + $module_info->layout_title = $layout_info->layout_title; + } + + // 레이아웃 목록을 구해옴 + $oLayoutMode = &getModel('layout'); + $layout_list = $oLayoutMode->getLayoutList(); + Context::set('layout_list', $layout_list); + + + // 템플릿 파일 지정 + $this->setTemplateFile('opage_info'); + } + + /** + * @brief 외부페이지 추가 폼 출력 + **/ + function dispOpageAdminInsert() { + // 권한 그룹의 목록을 가져온다 + $oMemberModel = &getModel('member'); + $group_list = $oMemberModel->getGroups(); + Context::set('group_list', $group_list); + + // module.xml에서 권한 관련 목록을 구해옴 + $grant_list = $this->xml_info->grant; + Context::set('grant_list', $grant_list); + + // GET parameter에서 module_srl을 가져옴 + $module_srl = Context::get('module_srl'); + + // module_srl이 있으면 해당 모듈의 정보를 구해서 세팅 + if($module_srl) { + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl); + if($module_info->module_srl == $module_srl) Context::set('module_info',$module_info); + else { + unset($module_info); + unset($module_srl); + } + } + + // module_srl이 없으면 sequence값으로 미리 구해 놓음 + if(!$module_srl) $module_srl = getNextSequence(); + Context::set('module_srl',$module_srl); + + // 레이아웃 목록을 구해옴 + $oLayoutMode = &getModel('layout'); + $layout_list = $oLayoutMode->getLayoutList(); + Context::set('layout_list', $layout_list); + + + // 템플릿 파일 지정 + $this->setTemplateFile('opage_insert'); + } + + + /** + * @brief 외부페이지 삭제 화면 출력 + **/ + function dispOpageAdminDelete() { + $module_srl = Context::get('module_srl'); + if(!$module_srl) return $this->dispContent(); + + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl); + Context::set('module_info',$module_info); + + // 템플릿 파일 지정 + $this->setTemplateFile('opage_delete'); + } + + } +?> diff --git a/modules/opage/opage.class.php b/modules/opage/opage.class.php new file mode 100644 index 000000000..2e21703ac --- /dev/null +++ b/modules/opage/opage.class.php @@ -0,0 +1,70 @@ +insertActionForward('opage', 'view', 'dispOpageIndex'); + $oModuleController->insertActionForward('opage', 'view', 'dispOpageAdminContent'); + $oModuleController->insertActionForward('opage', 'view', 'dispOpageAdminInsert'); + $oModuleController->insertActionForward('opage', 'view', 'dispOpageAdminDelete'); + + // opage 에서 사용할 cache디렉토리 생성 + FileHandler::makeDir('./files/cache/opage'); + + return new Object(); + } + + /** + * @brief 설치가 이상이 없는지 체크하는 method + **/ + function checkUpdate() { + $oModuleModel = &getModel('module'); + + // 외부페이지 모듈을 업그레이드로 설치하였을 경우 필요한 action 값의 여부 체크 (2007. 09. 17) + if(!$oModuleModel->getActionForward('dispOpageIndex')) return true; + if(!$oModuleModel->getActionForward('dispOpageAdminContent')) return true; + if(!$oModuleModel->getActionForward('dispOpageAdminInsert')) return true; + if(!$oModuleModel->getActionForward('dispOpageAdminDelete')) return true; + + // cache 디렉토리가 없으면 바로 디렉토리 생성 + if(!is_dir('./files/cache/opage')) FileHandler::makeDir('./files/cache/opage'); + + return false; + } + + /** + * @brief 업데이트 실행 + **/ + function moduleUpdate() { + $oModuleModel = &getModel('module'); + $oModuleController = &getController('module'); + + // 외부페이지 모듈을 업그레이드로 설치하였을 경우 필요한 action 값 등록 + if(!$oModuleModel->getActionForward('dispOpageIndex')) + $oModuleController->insertActionForward('opage', 'view', 'dispOpageIndex'); + + if(!$oModuleModel->getActionForward('dispOpageAdminContent')) + $oModuleController->insertActionForward('opage', 'view', 'dispOpageAdminContent'); + + if(!$oModuleModel->getActionForward('dispOpageAdminInsert')) + $oModuleController->insertActionForward('opage', 'view', 'dispOpageAdminInsert'); + + if(!$oModuleModel->getActionForward('dispOpageAdminDelete')) + $oModuleController->insertActionForward('opage', 'view', 'dispOpageAdminDelete'); + + + return new Object(0, 'success_updated'); + } + + } +?> diff --git a/modules/opage/opage.controller.php b/modules/opage/opage.controller.php new file mode 100644 index 000000000..6c6c4f64d --- /dev/null +++ b/modules/opage/opage.controller.php @@ -0,0 +1,119 @@ +]*)>(.*?)<\/title>!is', $content, $buff); + return trim($buff[2]); + } + + /** + * @brief header script 추출 + **/ + function getHeadScript($content) { + // title 태그 제거 + $content = preg_replace('!]*)>(.*?)<\/title>!is','', $content); + + // meta 태그 제거 + $content = preg_replace('!<(\/){0,1}meta([^>]*)>!is','', $content); + + // ]*)>!is', $content, $link_buff); + for($i=0;$i!is', $content, $script_buff); + for($i=0;$i]*)>(.*?)<\/body>!is', $content, $body_buff); + $body_script = $body_buff[2]; + + // link, style, script등 제거 + $body_script = preg_replace('!]*)>!is', '', $body_script); + $body_script = preg_replace('!<(style|script)(.*?)<\/(style|script)>!is', '', $body_script); + return $body_script; + } + + /** + * @brief 내용에 포함된 src, href의 값을 변경 + **/ + function replaceSrc($content, $path) { + if(substr($path,-1)!='/') $path.='/'; + $this->target_path = $path; + + // element의 속성중 value에 " 로 안 묶여 있는 것을 검사하여 묶어줌 + $content = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', array($this, '_fixQuotation'), $content); + + // img, input, a, link등의 href, src값 변경 + $content = preg_replace_callback('!(script|link|a|img|input)([^>]*)(href|src)=[\'"](.*?)[\'"]!is', array($this, '_replaceSrc'), $content); + + // background:url의 값 변경 + $content = preg_replace_callback('!url\((.*?)\)!is', array($this, '_replaceBackgroundUrl'), $content); + + return $content; + } + + function _replaceSrc($matches) { + $href = $matches[4]; + if(eregi("^http", $href) || $href == '#' || eregi("javascript:",$href)) return $matches[0]; + + if(substr($href,0,1)=='/') $href = substr($href,1); + $href = $this->target_path.$href; + + $buff = sprintf('%s%s%s="%s"', $matches[1], $matches[2], $matches[3], $href); + return $buff; + } + + function _replaceBackgroundUrl($matches) { + $href = $matches[1]; + if(eregi("^http",$href) || $href == '#' || eregi("javascript:",$href)) return $matches[0]; + + if(substr($href,0,1)=='/') $href = substr($href,1); + $href = $this->target_path.$href; + + $buff = sprintf('url(%s)', $href); + return $buff; + } + + /** + * @brief 태그의 속성에 " 를 추가 + **/ + function _fixQuotation($matches) { + $key = $matches[1]; + $val = $matches[2]; + if(substr($val,0,1)!='"') $val = '"'.$val.'"'; + return sprintf('%s=%s', $key, $val); + } + + } +?> diff --git a/modules/opage/opage.model.php b/modules/opage/opage.model.php new file mode 100644 index 000000000..63e9fdfe6 --- /dev/null +++ b/modules/opage/opage.model.php @@ -0,0 +1,33 @@ +getModuleInfoByModuleSrl($module_srl); + if($module_info->module_srl != $module_srl) return; + + $extra_vars = unserialize($module_info->extra_vars); + if($extra_vars) { + foreach($extra_vars as $key => $val) $module_info->{$key} = $val; + unset($module_info->extra_vars); + } + return $module_info; + } + + } +?> diff --git a/modules/opage/opage.view.php b/modules/opage/opage.view.php new file mode 100644 index 000000000..a96617fd0 --- /dev/null +++ b/modules/opage/opage.view.php @@ -0,0 +1,92 @@ +setTemplatePath($this->module_path.'tpl'); + } + + /** + * @brief 일반 요청시 출력 + **/ + function dispOpageIndex() { + // 권한 체크 + if(!$this->grant->view) return $this->stop('msg_not_permitted'); + + // opage controller 생성 + $oOpageController = &getController('opage'); + + // 외부 페이지 모듈의 정보를 구함 + $oOpageModel = &getModel('opage'); + $module_info = $oOpageModel->getOpage($this->module_srl); + Context::set('module_info', $module_info); + + // 외부 페이지에서 명시된 외부 페이지 경로/ 캐싱 간격을 를 구함 + $path = $module_info->path; + $caching_interval = $module_info->caching_interval; + + // 캐시 파일 지정 + $cache_file = sprintf("./files/cache/opage/%d.cache", $module_info->module_srl); + + // 캐시 검사 + if($caching_interval > 0 && file_exists($cache_file) && filemtime($cache_file) + $caching_interval*60 > time()) { + + $content = FileHandler::readFile($cache_file); + + } else { + + // 경로에 http://가 있는 경우와 없는 경우를 비교 + if(eregi("^http:\/\/",$path)) { + FileHandler::getRemoteFile($path, $cache_file); + $content = FileHandler::readFile($cache_file); + + // 서버 내부에 있는 경우 + } elseif(file_exists($path)) { + ob_start(); + @include($path); + $content = ob_get_contents(); + ob_end_clean(); + FileHandler::writeFile($cache_file, $content); + } + + } + + // 외부 서버의 페이지 일 경우 이미지, css, javascript등의 url을 변경 + if(eregi("^http:\/\/",$path)) { + $content = $oOpageController->replaceSrc($content, $path); + } + + // 해당 문서를 utf-8로 변경 + $buff->content = $content; + $buff = Context::convertEncoding($buff); + $content = $buff->content; + + // title 추출 + $title = $oOpageController->getTitle($content); + if($title) Context::setBrowserTitle($title); + + // header script 추출 + $head_script = $oOpageController->getHeadScript($content); + if($head_script) Context::addHtmlHeader($head_script); + + // body 내용 추출 + $body_script = $oOpageController->getBodyScript($content); + if(!$body_script) $body_script = $content; + + Context::set('opage_content', $body_script); + + // 결과 출력 템플릿 지정 + $this->setTemplateFile('content'); + } + + } +?> diff --git a/modules/opage/queries/getOpageList.xml b/modules/opage/queries/getOpageList.xml new file mode 100644 index 000000000..1703e5d4d --- /dev/null +++ b/modules/opage/queries/getOpageList.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/opage/tpl/content.html b/modules/opage/tpl/content.html new file mode 100644 index 000000000..b34a8de56 --- /dev/null +++ b/modules/opage/tpl/content.html @@ -0,0 +1,8 @@ +{$opage_content} + + + + + diff --git a/modules/opage/tpl/filter/delete_opage.xml b/modules/opage/tpl/filter/delete_opage.xml new file mode 100644 index 000000000..9d287dfe1 --- /dev/null +++ b/modules/opage/tpl/filter/delete_opage.xml @@ -0,0 +1,10 @@ + +
+ + + + + + + +
diff --git a/modules/opage/tpl/filter/insert_opage.xml b/modules/opage/tpl/filter/insert_opage.xml new file mode 100644 index 000000000..c468ea90b --- /dev/null +++ b/modules/opage/tpl/filter/insert_opage.xml @@ -0,0 +1,24 @@ + +
+ + + + + + + + + + + + + + + + + + + + + +
diff --git a/modules/opage/tpl/header.html b/modules/opage/tpl/header.html new file mode 100644 index 000000000..0df9de9d3 --- /dev/null +++ b/modules/opage/tpl/header.html @@ -0,0 +1,3 @@ + + +

{$lang->opage} {$lang->cmd_management}

diff --git a/modules/opage/tpl/index.html b/modules/opage/tpl/index.html new file mode 100644 index 000000000..67863fd5d --- /dev/null +++ b/modules/opage/tpl/index.html @@ -0,0 +1,79 @@ + + + +
{nl2br($lang->about_opage)}
+ + +
+ Total {number_format($total_count)}, Opage {number_format($opage)}/{number_format($total_opage)} +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang->no} +
+ + + + +
+
{$lang->mid}{$lang->browser_title}{$lang->is_default}{$lang->regdate}{$lang->cmd_view}{$lang->cmd_delete}
{$no} + + {$lang->not_exists} + + {$module_category[$val->module_category_srl]->title} + + {$val->mid}{$val->browser_title}{$val->is_default}{zdate($val->regdate,"Y-m-d")}{$lang->cmd_view}{$lang->cmd_delete}
+ + + + + + diff --git a/modules/opage/tpl/js/opage_admin.js b/modules/opage/tpl/js/opage_admin.js new file mode 100644 index 000000000..4f94966de --- /dev/null +++ b/modules/opage/tpl/js/opage_admin.js @@ -0,0 +1,49 @@ +/** + * @file modules/opage/js/opage_admin.js + * @author zero (zero@nzeo.com) + * @brief opage모듈의 관리자용 javascript + **/ + +/* 모듈 생성 후 */ +function completeInsertOpage(ret_obj) { + var error = ret_obj['error']; + var message = ret_obj['message']; + + var opage = ret_obj['opage']; + var module_srl = ret_obj['module_srl']; + + alert(message); + + var url = ''; + if(location.href.getQuery('module')=='admin') { + url = current_url.setQuery('module_srl',module_srl).setQuery('act','dispOpageAdminInsert'); + if(opage) url = url.setQuery('opage',opage); + } else { + url = current_url.setQuery('act','').setQuery('module_srl',''); + } + + location.href = url; +} + +/* 모듈 삭제 후 */ +function completeDeleteOpage(ret_obj) { + var error = ret_obj['error']; + var message = ret_obj['message']; + var opage = ret_obj['opage']; + alert(message); + + var url = current_url.setQuery('act','dispOpageAdminContent'); + if(opage) url = url.setQuery('opage',opage); + + location.href = url; +} + +/* 카테고리 이동 */ +function doChangeCategory(fo_obj) { + var module_category_srl = fo_obj.module_category_srl.options[fo_obj.module_category_srl.selectedIndex].value; + if(module_category_srl==-1) { + location.href = current_url.setQuery('act','dispModuleAdminCategory'); + return false; + } + return true; +} diff --git a/modules/opage/tpl/opage_delete.html b/modules/opage/tpl/opage_delete.html new file mode 100644 index 000000000..d0a994230 --- /dev/null +++ b/modules/opage/tpl/opage_delete.html @@ -0,0 +1,31 @@ + + + + +
+ + + + + + + + + + + + + + + + +
{$lang->confirm_delete}
{$lang->module_name}{$module_info->mid}
{$lang->module}{$module_info->module}
+ + + + +
+ diff --git a/modules/opage/tpl/opage_insert.html b/modules/opage/tpl/opage_insert.html new file mode 100644 index 000000000..59d6298cb --- /dev/null +++ b/modules/opage/tpl/opage_insert.html @@ -0,0 +1,116 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang->mid} + +

{$lang->about_mid}

+
{$lang->is_default} + is_default=='Y')-->checked="checked" id="fld_for_default" class="checkbox" /> + +
{$lang->module_category} + +

{$lang->about_module_category}

+
{$lang->browser_title} + +

{$lang->about_browser_title}

+
{$lang->layout} + +

{$lang->about_layout}

+
{$lang->opage_caching_interval} + {$lang->unit_min} +

{$lang->about_opage_caching_interval}

+
{$lang->opage_path} + +

{$lang->about_opage_path}{realpath("./")}

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
{$lang->grant}{$lang->target}
{$val->title} + + grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> + + + {$lang->cmd_select_all}{$lang->cmd_unselect_all}
+ +
+ + + + + + +
+ +
diff --git a/modules/page/conf/info.xml b/modules/page/conf/info.xml index 4ad9ca1df..cf477826f 100644 --- a/modules/page/conf/info.xml +++ b/modules/page/conf/info.xml @@ -1,7 +1,7 @@ 페이지 - 页面> + 页面 ページ Page Página