mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-14 00:39:57 +09:00
added lifepod module
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3288 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
6e2a5f765a
commit
3a6abc6b97
30 changed files with 1727 additions and 0 deletions
11
modules/lifepod/conf/info.xml
Normal file
11
modules/lifepod/conf/info.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module version="0.1" category="service">
|
||||
<title xml:lang="ko">라이프팟 연동</title>
|
||||
<title xml:lang="en">Lifepod</title>
|
||||
<author email_address="haneul0318@gmail.com" link="http://haneul.zetyx.net" date="2007.12.10">
|
||||
<name xml:lang="ko">haneul</name>
|
||||
<name xml:lang="en">haneul</name>
|
||||
<description xml:lang="ko">라이프팟의 calendar를 제로보드XE에서 연동하여 출력하는 기능을 가지고 있는 모듈입니다.</description>
|
||||
<description xml:lang="en">This module displays calendar from lifepod.</description>
|
||||
</author>
|
||||
</module>
|
||||
26
modules/lifepod/conf/module.xml
Normal file
26
modules/lifepod/conf/module.xml
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module>
|
||||
<grants>
|
||||
<grant name="view" default="guest">
|
||||
<title xml:lang="ko">열람</title>
|
||||
<title xml:lang="zh-CN">查看</title>
|
||||
<title xml:lang="jp">閲覧</title>
|
||||
<title xml:lang="en">view</title>
|
||||
</grant>
|
||||
</grants>
|
||||
<actions>
|
||||
<action name="dispLifepodContent" type="view" index="true" />
|
||||
|
||||
<action name="dispLifepodAdminContent" type="view" standalone="true" admin_index="true" />
|
||||
<action name="dispLifepodAdminLifepodInfo" type="view" standalone="true" />
|
||||
<action name="dispLifepodAdminInsertLifepod" type="view" standalone="true" />
|
||||
<action name="dispLifepodAdminDeleteLifepod" type="view" standalone="true" />
|
||||
<action name="dispLifepodAdminGrantInfo" type="view" standalone="true" />
|
||||
<action name="dispLifepodAdminSkinInfo" type="view" standalone="true" />
|
||||
|
||||
<action name="procLifepodAdminInsertLifepod" type="controller" standalone="true" />
|
||||
<action name="procLifepodAdminDeleteLifepod" type="controller" standalone="true" />
|
||||
<action name="procLifepodAdminInsertGrant" type="controller" standalone="true" />
|
||||
<action name="procLifepodAdminUpdateSkinInfo" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</module>
|
||||
15
modules/lifepod/lang/en.lang.php
Normal file
15
modules/lifepod/lang/en.lang.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
/**
|
||||
* @file en.lang.php
|
||||
* @author haneul (haneul0318@gmail.com)
|
||||
* @brief 라이프팟(lifepod) 모듈의 기본 언어팩
|
||||
**/
|
||||
|
||||
$lang->lifepod = "Lifepod";
|
||||
|
||||
$lang->calendar_address = "calendar's xml address";
|
||||
$lang->cmd_lifepod_list = 'Lifepod module list';
|
||||
$lang->cmd_view_info = 'Lifepod info.';
|
||||
|
||||
$lang->about_lifepod = "Lifepod is a calendar service provided by Openmaru Studio.<br />Lifepod Zeroboard XE module desplays Lifepod's scalendar as an internal document.";
|
||||
?>
|
||||
15
modules/lifepod/lang/ko.lang.php
Normal file
15
modules/lifepod/lang/ko.lang.php
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
/**
|
||||
* @file ko.lang.php
|
||||
* @author haneul (haneul0318@gmail.com)
|
||||
* @brief 라이프팟(lifepod) 모듈의 기본 언어팩
|
||||
**/
|
||||
|
||||
$lang->lifepod = "라이프팟";
|
||||
|
||||
$lang->calendar_address = "캘린더 xml주소";
|
||||
$lang->cmd_lifepod_list = '라이프팟 목록';
|
||||
$lang->cmd_view_info = '라이프팟 정보';
|
||||
|
||||
$lang->about_lifepod = "라이프팟은 오픈마루에서 제공하는 캘린더서비스입니다.<br />라이프팟 제로보드XE모듈은 라이프팟의 특정 캘린더들을 내부문서처럼 열람할 수 있는 모듈입니다.";
|
||||
?>
|
||||
245
modules/lifepod/lifepod.admin.controller.php
Normal file
245
modules/lifepod/lifepod.admin.controller.php
Normal file
|
|
@ -0,0 +1,245 @@
|
|||
<?php
|
||||
/**
|
||||
* @class lifepodAdminController
|
||||
* @author haneul (haneul0318@nzeo.com)
|
||||
* @brief lifepod 모듈의 admin controller class
|
||||
* 관리자 기능을 담당하게 된다.
|
||||
* 보통 모듈의 관리자 기능은 해당 모듈의 생성이나 정보/권한/스킨정보의 수정등을 담당하게 된다.
|
||||
**/
|
||||
|
||||
class lifepodAdminController extends lifepod {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() { }
|
||||
|
||||
/**
|
||||
* @brief lifepod 추가
|
||||
* lifepod_name은 mid의 값이 되고 나머지 모듈 공통 값을 받아서 저장을 하게 된다.
|
||||
**/
|
||||
function procLifepodAdminInsertLifepod($args = null) {
|
||||
// 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리
|
||||
if(!$args) $args = Context::gets('module_srl','module_category_srl','lifepod_name','layout_srl','skin','browser_title','description','is_default','header_text','footer_text','admin_id','open_rss');
|
||||
|
||||
// lifepod모듈임을 명시적으로 지정한다.
|
||||
$args->module = 'lifepod';
|
||||
|
||||
// mid값을 직접 받지 않고 lifepod_name으로 받는 이유는 mid는 특별히 약속된 변수명이라 오동작이 발생할 수 있어서 다른 이름으로 전달을 받은후 다시 바꾸어준다.
|
||||
$args->mid = $args->lifepod_name;
|
||||
unset($args->lifepod_name);
|
||||
|
||||
// is_default일 경우 별다른 요청이 없는 index페이지의 경우 바로 호출이 되는데 이 값을 설정을 하게 된다.
|
||||
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->lifepod_name);
|
||||
|
||||
// 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값이 없다면 신규 등록으로 처리를 한다.
|
||||
**/
|
||||
if(!$args->module_srl) {
|
||||
// module controller를 이용하여 모듈을 생성한다.
|
||||
$output = $oModuleController->insertModule($args);
|
||||
$msg_code = 'success_registed';
|
||||
|
||||
// 권한의 경우 기본으로 설정을 해주는 것이 좋으며 lifepod 모듈의 경우 manager권한을 관리 그룹으로 설정을 한다.
|
||||
if($output->toBool()) {
|
||||
// 관리그룹을 member model객체에서 구할 수 있다.
|
||||
$oMemberModel = &getModel('member');
|
||||
$admin_group = $oMemberModel->getAdminGroup();
|
||||
$admin_group_srl = $admin_group->group_srl;
|
||||
|
||||
$module_srl = $output->get('module_srl');
|
||||
$grants = serialize(array('manager'=>array($admin_group_srl)));
|
||||
|
||||
// module controller의 module 권한 설정 method를 이용하여 기본 권한을 적용한다.
|
||||
$oModuleController->updateModuleGrant($module_srl, $grants);
|
||||
}
|
||||
/**
|
||||
* module_srl이 있다면 모듈의 정보를 수정한다
|
||||
**/
|
||||
} else {
|
||||
$output = $oModuleController->updateModule($args);
|
||||
$msg_code = 'success_updated';
|
||||
}
|
||||
|
||||
// 결과값에 오류가 있을 경우 그대로 객체 리턴.
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// 등록후 페이지 이동을 위해 변수 설정 및 메세지를 설정한다.
|
||||
$this->add('page',Context::get('page'));
|
||||
$this->add('module_srl',$output->get('module_srl'));
|
||||
$this->setMessage($msg_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief lifepod 삭제
|
||||
**/
|
||||
function procLifepodAdminDeleteLifepod() {
|
||||
// 삭제할 대상 lifepod의 module_srl을 구한다.
|
||||
$module_srl = Context::get('module_srl');
|
||||
|
||||
// 원본을 구해온다
|
||||
$oModuleController = &getController('module');
|
||||
$output = $oModuleController->deleteModule($module_srl);
|
||||
|
||||
// 삭제 처리시 오류가 발생하면 결과 객체를 바로 리턴한다.
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// 등록후 페이지 이동을 위해 변수 설정 및 메세지를 설정한다.
|
||||
$this->add('module','lifepod');
|
||||
$this->add('page',Context::get('page'));
|
||||
$this->setMessage('success_deleted');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 권한 설정
|
||||
* 생성된 lifepod에 ./conf/module.xml에 정의된 권한과 관리자가 선택한 그룹의 값을 연동하여 권한을 설정하게 된다.
|
||||
**/
|
||||
function procLifepodAdminInsertGrant() {
|
||||
// 대상 lifepod(모듈)의 고유값인 module_srl을 체크한다.
|
||||
$module_srl = Context::get('module_srl');
|
||||
|
||||
/**
|
||||
* 현 모듈의 권한 목록을 가져옴
|
||||
* xml_info 는 lifepod모듈이 요청되었다고 판단될때 ModuleObject에서 이미 세팅해 놓은 상태이다.
|
||||
**/
|
||||
$grant_list = $this->xml_info->grant;
|
||||
|
||||
/**
|
||||
* 권한의 목록을 loop로 돌면서 권한 설정을 한다.
|
||||
* zbxe의 경우 가능한 간단한 xmlrpc사용을 위해서 배열의 경우 |@|를 pipe로 하여 하나의 string으로 전달한다.
|
||||
* 요청받은 권한의 대상 그룹과 권한을 배열로 한 후 serialize하여 modules테이블에 module_srl을 키로 한 rows에 데이터를 적용한다.
|
||||
**/
|
||||
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);
|
||||
}
|
||||
|
||||
// 권한 설정은 모듈 공통이라 module 모듈의 controller을 생성하여 저장하도록 한다.
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->updateModuleGrant($module_srl, $grants);
|
||||
|
||||
// 권한 설정후 돌아갈 페이지를 위하여 module_srl값을 세팅하고 성공 메세지 역시 세팅한다.
|
||||
$this->add('module_srl',Context::get('module_srl'));
|
||||
$this->setMessage('success_registed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 스킨 정보 업데이트
|
||||
* 스킨 정보는 skin.xml파일의 extra_vars와 입력된 변수값을 조합하여 serialize하여 modules 테이블에 module_srl을 키로 하여 저장을 하게 된다.
|
||||
**/
|
||||
function procLifepodAdminUpdateSkinInfo() {
|
||||
// module_srl에 해당하는 정보들을 가져오기
|
||||
$module_srl = Context::get('module_srl');
|
||||
|
||||
// 어떤 스킨이 사용중인지 확인하기 위해서 module_srl을 이용하여 모듈의 정보를 구하고 스킨을 구한다.
|
||||
$oModuleModel = &getModel('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(!eregi("\.(jpg|jpeg|gif|png)$", $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;
|
||||
}
|
||||
}
|
||||
|
||||
// serialize하여 저장
|
||||
$skin_vars = serialize($obj);
|
||||
|
||||
// module controller객체를 생성하여 module_srl을 키로 한 rows에 serialize한 스킨 정보를 적용한다.
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->updateModuleSkinVars($module_srl, $skin_vars);
|
||||
|
||||
/**
|
||||
* 스킨 정보는 첨부파일때문에 xml로 전달이 되지 않고 POST로 전송이 되어 왔으므로 템플릿을 이용하여 프레임을 refresh시키도록 한다.
|
||||
* 스킨 정보를 수정할때 숨어 있는 iframe을 target으로 삼기에 기본 레이아웃을 이용하면 되므로 직접 레이아웃 경로와 파일을 기본으로 지정한다.
|
||||
**/
|
||||
$this->setLayoutPath('./common/tpl');
|
||||
$this->setLayoutFile('default_layout.html');
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
$this->setTemplateFile("top_refresh.html");
|
||||
}
|
||||
}
|
||||
?>
|
||||
183
modules/lifepod/lifepod.admin.view.php
Normal file
183
modules/lifepod/lifepod.admin.view.php
Normal file
|
|
@ -0,0 +1,183 @@
|
|||
<?php
|
||||
/**
|
||||
* @class lifepodAdminView
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief lifepod 모듈의 admin view class
|
||||
* 모듈 관리자 기능은 생성된 모듈 목록, 신규 등록 및 수정, 권한의 설정으로 이루어진다.
|
||||
**/
|
||||
|
||||
class lifepodAdminView extends lifepod {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
* 손쉬운 사용을 위해서 module_srl이 넘어올 경우 해당 모듈의 모듈 정보를 미리 구해서 세팅해 놓도록 한다.
|
||||
* 각 method에서 하거나 별도의 method를 만들어서 호출하면 되지만 코드의 양을 줄이고 직관성을 높이기 위해서 설정한 코드이다.
|
||||
**/
|
||||
function init() {
|
||||
// module_srl값을 구해온다.
|
||||
$module_srl = Context::get('module_srl');
|
||||
|
||||
if(!$module_srl && $this->module_srl) {
|
||||
$module_srl = $this->module_srl;
|
||||
Context::set('module_srl', $module_srl);
|
||||
}
|
||||
|
||||
// module info를 구하기 위해 module model 객체 생성
|
||||
$oModuleModel = &getModel('module');
|
||||
|
||||
// 모듈 카테고리 목록을 구함
|
||||
$module_category = $oModuleModel->getModuleCategories();
|
||||
Context::set('module_category', $module_category);
|
||||
|
||||
// module_srl이 있다면 요청된 모듈의 정보를 미리 구해 놓음
|
||||
if($module_srl) {
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
if(!$module_info) {
|
||||
Context::set('module_srl','');
|
||||
$this->act = 'list';
|
||||
} else {
|
||||
$this->module_info = $module_info;
|
||||
Context::set('module_info',$module_info);
|
||||
}
|
||||
}
|
||||
|
||||
// 템플릿 경로 지정, 관리자 페이지를 위한 템플릿은 별도의 스킨 기능이 없이 ./modules/모듈/tpl/ 에 위치해 놓기에 바로 지정을 해 놓는다.
|
||||
$template_path = sprintf("%stpl/",$this->module_path);
|
||||
$this->setTemplatePath($template_path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 생성된 calendar들의 목록을 보여줌
|
||||
* lifepod이라는 module명으로 등록된 모듈을 구하기 위해서 몇가지 설정을 한 후에 쿼리를 수행한다.
|
||||
* 쿼리수행은 executeQuery(모듈명.쿼리아이디, 인자변수) 로 하게 되며 이 쿼리아이디에 해당하는 xml파일은 모듈의 queries디렉토리에 지정이 되어 있다.
|
||||
*
|
||||
* 이 특정 module의 목록은 module model객체에서 구할 수 있지만 검색등의 각 모듈마다 다른 조건 때문에 각 모듈별로 쿼리를 생성해 놓는다.
|
||||
* 모든 모듈의 결과물(mid)는 modules 테이블에 저장이 된다.
|
||||
**/
|
||||
function dispLifepodAdminContent() {
|
||||
$args->sort_index = "module_srl"; ///< 정렬 순서는 모듈의 sequence값으로 하고 정렬은 역순. 즉 생성된 순으로 한다.
|
||||
$args->page = Context::get('page'); ///< 현재 페이지를 설정
|
||||
$args->list_count = 40; ///< 한페이지에 40개씩 보여주기로 고정.
|
||||
$args->page_count = 10; ///< 페이지의 수는 10개로 제한.
|
||||
$args->s_module_category_srl = Context::get('module_category_srl'); ///< 모듈분류값을 인자로 추가
|
||||
$output = executeQuery('lifepod.getLifepodList', $args); ///< lifepod.getGuesbookList 쿼리 실행 (./modules/lifepod/query/getLifepodList.xml)
|
||||
|
||||
/**
|
||||
* 템플릿에 쓰기 위해서 context::set
|
||||
* xml query에 navigation이 있고 list_count가 정의되어 있으면 결과 변수에 아래 5가지의 값이 세팅이 된다.
|
||||
**/
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('lifepod_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
// 템플릿 파일 지정 (./modules/lifepod/tpl/index.html파일이 지정이 됨)
|
||||
$this->setTemplateFile('index');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 선택된 모듈의 정보 출력
|
||||
**/
|
||||
function dispLifepodAdminLifepodInfo() {
|
||||
// module_srl 값이 없다면 그냥 index 페이지를 보여줌
|
||||
if(!Context::get('module_srl')) return $this->dispLifepodAdminContent();
|
||||
|
||||
// 레이아웃이 정해져 있다면 레이아웃 정보를 추가해줌(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('lifepod_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 모듈 설정 폼 출력
|
||||
**/
|
||||
function dispLifepodAdminInsertLifepod() {
|
||||
// 스킨 목록을 구해옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_list = $oModuleModel->getSkins($this->module_path);
|
||||
Context::set('skin_list',$skin_list);
|
||||
|
||||
// 레이아웃 목록을 구해옴
|
||||
$oLayoutMode = &getModel('layout');
|
||||
$layout_list = $oLayoutMode->getLayoutList();
|
||||
Context::set('layout_list', $layout_list);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('lifepod_insert');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 모듈 삭제 화면 출력
|
||||
**/
|
||||
function dispLifepodAdminDeleteLifepod() {
|
||||
if(!Context::get('module_srl')) return $this->dispLifepodAdminContent();
|
||||
|
||||
$module_info = Context::get('module_info');
|
||||
|
||||
Context::set('module_info',$module_info);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('lifepod_delete');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 스킨 정보 보여줌
|
||||
**/
|
||||
function dispLifepodAdminSkinInfo() {
|
||||
|
||||
// 현재 선택된 모듈의 스킨의 정보 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;
|
||||
}
|
||||
}
|
||||
|
||||
Context::set('skin_info', $skin_info);
|
||||
$this->setTemplateFile('skin_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 권한 목록 출력
|
||||
**/
|
||||
function dispLifepodAdminGrantInfo() {
|
||||
// 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');
|
||||
}
|
||||
}
|
||||
?>
|
||||
54
modules/lifepod/lifepod.class.php
Normal file
54
modules/lifepod/lifepod.class.php
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
/**
|
||||
* @class lifepod
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief lifepod 모듈의 high 클래스
|
||||
**/
|
||||
|
||||
class lifepod extends ModuleObject {
|
||||
/**
|
||||
* @brief 설치시 추가 작업이 필요할시 구현
|
||||
**/
|
||||
function moduleInstall() {
|
||||
// action forward에 등록 (관리자 모드에서 사용하기 위함)
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->insertActionForward('lifepod', 'view', 'dispLifepodContent');
|
||||
$oModuleController->insertActionForward('lifepod', 'view', 'dispLifepodAdminContent');
|
||||
$oModuleController->insertActionForward('lifepod', 'view', 'dispLifepodAdminLifepodInfo');
|
||||
$oModuleController->insertActionForward('lifepod', 'view', 'dispLifepodAdminInsertLifepod');
|
||||
$oModuleController->insertActionForward('lifepod', 'view', 'dispLifepodAdminDeleteLifepod');
|
||||
$oModuleController->insertActionForward('lifepod', 'view', 'dispLifepodAdminGrantInfo');
|
||||
$oModuleController->insertActionForward('lifepod', 'view', 'dispLifepodAdminSkinInfo');
|
||||
$oModuleController->insertActionForward('lifepod', 'controller', 'procLifepodAdminInsertLifepod');
|
||||
$oModuleController->insertActionForward('lifepod', 'controller', 'procLifepodAdminDeleteLifepod');
|
||||
$oModuleController->insertActionForward('lifepod', 'controller', 'procLifepodAdminInsertGrant');
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function checkUpdate() {
|
||||
$oModuleModel = &getModel('module');
|
||||
if(!$oModuleModel->getActionForward('dispLifepodContent')) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 업데이트 실행
|
||||
**/
|
||||
function moduleUpdate() {
|
||||
$this->moduleInstall();
|
||||
return new Object(0,'success_updated');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 캐시 파일 재생성
|
||||
**/
|
||||
function recompileCache() {
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
92
modules/lifepod/lifepod.model.php
Normal file
92
modules/lifepod/lifepod.model.php
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
/**
|
||||
* @class lifepodModel
|
||||
* @author haneul (haneul0318@gmail.com)
|
||||
* @brief lifepod모듈의 model 클래스
|
||||
**/
|
||||
|
||||
set_include_path("./modules/springnote/lib/PEAR");
|
||||
require_once('PEAR.php');
|
||||
require_once('HTTP/Request.php');
|
||||
require_once('me2dayXmlParser.class.php');
|
||||
|
||||
class lifepodModel extends lifepod {
|
||||
|
||||
var $userid = '';
|
||||
var $userkey = '';
|
||||
var $address = '';
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief lifepod 페이지를 가져오기 위한 기본 값 설정
|
||||
**/
|
||||
function setInfo($address) {
|
||||
$this->address = $address;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief HTTP request 객체 생성
|
||||
**/
|
||||
function getRequest($url) {
|
||||
$oReqeust = new HTTP_Request($url);
|
||||
$oReqeust->addHeader('Content-Type', 'application/xml');
|
||||
$oReqeust->setMethod('GET');
|
||||
return $oReqeust;
|
||||
}
|
||||
|
||||
function getURL($start, $end) {
|
||||
return sprintf("%s&start=%s&end=%s", $this->address, $start, $end);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief lifepod 페이지 정보 가져오기
|
||||
* @remarks 한해씩 끊어서 페이지를 가져옵니다. 아직 50개 이상의 calendar info가 있는 경우 앞에 것만 가져오는 문제가 있습니다.
|
||||
**/
|
||||
function getPage($year) {
|
||||
if($year == null)
|
||||
{
|
||||
$year = date("Y");
|
||||
}
|
||||
|
||||
$start = sprintf("%s-01-01",$year);
|
||||
$end = sprintf("%s-01-01",$year+1);
|
||||
|
||||
$url = $this->getURL($start, $end);
|
||||
$oReqeust = $this->getRequest($url);
|
||||
$oResponse = $oReqeust->sendRequest();
|
||||
|
||||
if (PEAR::isError($oResponse)) return null;
|
||||
|
||||
$body = $oReqeust->getResponseBody();
|
||||
|
||||
$oXmlParser = new Me2DayXmlParser();
|
||||
$xmldoc = $oXmlParser->parse($body);
|
||||
if(!$xmldoc->childNodes["feed"]->childNodes["entry"])
|
||||
{
|
||||
$data = array();
|
||||
}
|
||||
else
|
||||
{
|
||||
$data = &$xmldoc->childNodes["feed"]->childNodes["entry"]->childNodes["data"];
|
||||
}
|
||||
$page->title = $xmldoc->childNodes["feed"]->childNodes["title"]->body;
|
||||
if(is_array($data))
|
||||
{
|
||||
$page->data = $data;
|
||||
}
|
||||
else
|
||||
{
|
||||
$page->data = array();
|
||||
$page->data[] = $data;
|
||||
}
|
||||
|
||||
return $page;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
80
modules/lifepod/lifepod.view.php
Normal file
80
modules/lifepod/lifepod.view.php
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
<?php
|
||||
/**
|
||||
* @class lifepodView
|
||||
* @author haneul (haneul0318@gmail.com)
|
||||
* @brief lifepod 모듈의 admin view 클래스
|
||||
**/
|
||||
|
||||
class lifepodView extends lifepod {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
/**
|
||||
* 템플릿에서 사용할 변수를 Context::set()
|
||||
* 혹시 사용할 수 있는 module_srl 변수를 설정한다.
|
||||
**/
|
||||
if($this->module_srl) Context::set('module_srl',$this->module_srl);
|
||||
|
||||
Context::set('module_info',$this->module_info);
|
||||
|
||||
/**
|
||||
* 모듈정보에서 넘어오는 skin값을 이용하여 최종 출력할 템플릿의 위치를 출력한다.
|
||||
* $this->module_path는 ./modules/guestbook/의 값을 가지고 있다
|
||||
**/
|
||||
$template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin);
|
||||
$this->setTemplatePath($template_path);
|
||||
}
|
||||
|
||||
function dateFormatChange($dates) {
|
||||
$dates = str_replace( "T", " ", $dates);
|
||||
$dates = str_replace( "Z", "+0", $dates);
|
||||
$dates = date("Y-m-d H:i:s", strtotime($dates));
|
||||
return $dates;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 달력
|
||||
**/
|
||||
function dispLifepodContent() {
|
||||
// 권한 체크
|
||||
if(!$this->grant->view) return $this->dispLifepodMessage('msg_not_permitted');
|
||||
|
||||
$oLifepodModel = &getModel('lifepod');
|
||||
$oLifepodModel->setInfo($this->module_info->calendar_address);
|
||||
$cYear = Context::get('year');
|
||||
$cMonth = Context::get('month');
|
||||
$cDay = Context::get('day');
|
||||
|
||||
// 특정 페이지 선택시 페이지 정보 가져오기
|
||||
$page = $oLifepodModel->getPage($cYear, $cMonth, $cDay);
|
||||
foreach ($page->data as $key => $val)
|
||||
{
|
||||
if($val->childNodes["date-start"])
|
||||
{
|
||||
$val->childNodes["date-start"]->body = $this->dateFormatChange($val->childNodes["date-start"]->body);
|
||||
}
|
||||
if($val->childNodes["date-end"])
|
||||
{
|
||||
$val->childNodes["date-end"]->body = $this->dateFormatChange($val->childNodes["date-end"]->body);
|
||||
}
|
||||
}
|
||||
|
||||
Context::set('page', $page);
|
||||
|
||||
$this->setTemplateFile('list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메세지 출력
|
||||
**/
|
||||
function dispLifepodMessage($msg_code) {
|
||||
$msg = Context::getLang($msg_code);
|
||||
if(!$msg) $msg = $msg_code;
|
||||
Context::set('message', $msg);
|
||||
$this->setTemplateFile('message');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
59
modules/lifepod/me2dayXmlParser.class.php
Normal file
59
modules/lifepod/me2dayXmlParser.class.php
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
class Me2DayXmlParser {
|
||||
var $output = array();
|
||||
|
||||
function parse($input = '') {
|
||||
$oParser = xml_parser_create('UTF-8');
|
||||
xml_set_object($oParser, $this);
|
||||
xml_set_element_handler($oParser, "_tagOpen", "_tagClosed");
|
||||
xml_set_character_data_handler($oParser, "_tagBody");
|
||||
|
||||
xml_parse($oParser, $input);
|
||||
xml_parser_free($oParser);
|
||||
|
||||
if(!count($this->output)) return;
|
||||
$this->output = array_shift($this->output);
|
||||
|
||||
return $this->output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 태그 오픈
|
||||
**/
|
||||
function _tagOpen($parser, $node_name, $attrs) {
|
||||
$obj->node_name = strtolower($node_name);
|
||||
$obj->attrs = $attrs;
|
||||
$obj->childNodes = array();
|
||||
|
||||
array_push($this->output, $obj);
|
||||
}
|
||||
|
||||
function _tagBody($parser, $body) {
|
||||
//if(!trim($body)) return;
|
||||
$this->output[count($this->output)-1]->body .= $body;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 태그 닫음
|
||||
**/
|
||||
function _tagClosed($parser, $node_name) {
|
||||
$node_name = strtolower($node_name);
|
||||
$cur_obj = array_pop($this->output);
|
||||
$parent_obj = &$this->output[count($this->output)-1];
|
||||
|
||||
if($parent_obj->childNodes[$node_name]) {
|
||||
$tmp_obj = $parent_obj->childNodes[$node_name];
|
||||
if(is_array($tmp_obj)) {
|
||||
array_push($parent_obj->childNodes[$node_name], $cur_obj);
|
||||
} else {
|
||||
$parent_obj->childNodes[$node_name] = array();
|
||||
array_push($parent_obj->childNodes[$node_name], $tmp_obj);
|
||||
array_push($parent_obj->childNodes[$node_name], $cur_obj);
|
||||
}
|
||||
} else {
|
||||
$parent_obj->childNodes[$node_name] = $cur_obj;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
18
modules/lifepod/queries/getLifepodList.xml
Normal file
18
modules/lifepod/queries/getLifepodList.xml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<query id="getLifepodList" action="select">
|
||||
<tables>
|
||||
<table name="modules" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="module" default="lifepod" />
|
||||
<condition operation="equal" column="module_category_srl" var="s_module_category_srl" pipe="or" />
|
||||
</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>
|
||||
BIN
modules/lifepod/skins/xe_official/.temp.swp
Normal file
BIN
modules/lifepod/skins/xe_official/.temp.swp
Normal file
Binary file not shown.
97
modules/lifepod/skins/xe_official/css/common.css
Normal file
97
modules/lifepod/skins/xe_official/css/common.css
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
@charset "utf-8";
|
||||
|
||||
/* board Title */
|
||||
.boardHeader { border:1px solid #e1e1dd; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) repeat-x left bottom; overflow:hidden; _width:100%;}
|
||||
.boardHeader h3 { float:left; font-size:1.2em; padding:1em 2em .7em 1.2em; background:#ffffff url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
|
||||
/* board Information */
|
||||
.boardInformation { width:100%; clear:both; margin:1em 0 .5em 0; overflow:hidden; color:#666666;}
|
||||
.articleNum { float:left; padding:0 0 0 15px; }
|
||||
|
||||
.CalendarViewDay
|
||||
{
|
||||
font-size:0.9em;
|
||||
background-color:#FFFFFF;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
border-color:#8888cc;
|
||||
cursor: pointer;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.CalendarView4Day
|
||||
{
|
||||
font-size:0.9em;
|
||||
background-color:#FFFFFF;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
border-color:#8888cc;
|
||||
cursor: pointer;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.CalendarViewWeek
|
||||
{
|
||||
font-size:0.9em;
|
||||
background-color:#FFFFFF;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
border-color:#8888cc;
|
||||
cursor: pointer;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.CalendarView2Week
|
||||
{
|
||||
font-size:0.9em;
|
||||
background-color:#FFFFFF;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
border-color:#8888cc;
|
||||
cursor: pointer;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.CalendarViewMonth
|
||||
{
|
||||
font-size:0.9em;
|
||||
background-color:#FFFFFF;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
border-color:#8888cc;
|
||||
cursor: pointer;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.CalendarMoveToday
|
||||
{
|
||||
font-size:0.9em;
|
||||
background-color:#FFFFFF;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
border-color:#cccccc;
|
||||
cursor: pointer;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.CalendarMoveNext
|
||||
{
|
||||
font-size:0.9em;
|
||||
background-color:#FFFFFF;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
border-color:#cccccc;
|
||||
cursor: pointer;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.CalendarMovePrev
|
||||
{
|
||||
font-size:0.9em;
|
||||
background-color:#FFFFFF;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
border-color:#cccccc;
|
||||
cursor: pointer;
|
||||
margin-right: 2px;
|
||||
}
|
||||
55
modules/lifepod/skins/xe_official/js/lifepod.js
Normal file
55
modules/lifepod/skins/xe_official/js/lifepod.js
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
var _calendar;
|
||||
var entries = new Array();
|
||||
var _year;
|
||||
var _month;
|
||||
var _day;
|
||||
|
||||
function startLifepod()
|
||||
{
|
||||
//초기화
|
||||
//Calendar.Language = 'en'; //영어버전
|
||||
//객체를 생성, 인자는 캘린더로 변할 DIV의 ID
|
||||
_calendar=new Calendar('div_calendar');
|
||||
//콘트롤 추가(보기 방식, 기간 이동)
|
||||
_calendar.addControl(new Calendar.Control.View);
|
||||
_calendar.addControl(new Calendar.Control.Move);
|
||||
//이벤트 추가
|
||||
_calendar.attachEvent('drawFinish', entryDraw); //캘린더가 그려지면 호출할 함수, 주로 엔트리 추가시 사용된다
|
||||
_calendar.attachEvent('entryMove', entryMove); // 엔트리를 이동할 때 호출할 함수
|
||||
//그리기
|
||||
_calendar.draw();
|
||||
}
|
||||
|
||||
function calAdd(id, start, end, title, description, type, category, color)
|
||||
{
|
||||
entries.push(new Calendar.Entry(id, category, Calendar.str2date(start), Calendar.str2date(end), type, title, description, color));
|
||||
}
|
||||
|
||||
function setDate(year, month, day)
|
||||
{
|
||||
_year = year;
|
||||
_month = month;
|
||||
_day = day;
|
||||
}
|
||||
|
||||
function entryDraw() {
|
||||
//생성한 엔트리를 추가
|
||||
for(entry in entries)
|
||||
{
|
||||
_calendar.addEntry(entries[entry]);
|
||||
}
|
||||
|
||||
if(_year != undefined)
|
||||
{
|
||||
_calendar.date.setFullYear(_year);
|
||||
_calendar.date.setMonth(_month-1);
|
||||
_calendar.date.setDate(_day);
|
||||
_year = undefined;
|
||||
_calendar.draw();
|
||||
}
|
||||
}
|
||||
|
||||
function entryMove() {
|
||||
//true를 리턴하면 엔트리가 이동이 됨, false를 리턴하면 엔트리 이동이 취소됨
|
||||
return true;
|
||||
}
|
||||
23
modules/lifepod/skins/xe_official/js/xe_interface.js
Normal file
23
modules/lifepod/skins/xe_official/js/xe_interface.js
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
Calendar.ControlAction=function(C){
|
||||
var curYear = _CalendarInstances[arguments[1].parentNode.objID].date.getYear();
|
||||
{switch(C)
|
||||
{case"view":_CalendarInstances[arguments[1].parentNode.objID].changeView(arguments[2]);
|
||||
break;
|
||||
case"move":switch(arguments[2]){case"prev":_CalendarInstances[arguments[1].parentNode.objID].movePrev();
|
||||
break;
|
||||
case"next":_CalendarInstances[arguments[1].parentNode.objID].moveNext();
|
||||
break;
|
||||
case"today":_CalendarInstances[arguments[1].parentNode.objID].moveToday();
|
||||
break}break;
|
||||
case"plugin":
|
||||
if(_CalendarInstances[arguments[1].parentNode.objID].plugin[arguments[2]]&&_CalendarInstances[arguments[1].parentNode.objID].plugin[arguments[2]].controlAction)
|
||||
{
|
||||
var A=[];
|
||||
for(var B=3; B<arguments.length; B++)
|
||||
{A.push(arguments[B])}_CalendarInstances[arguments[1].parentNode.objID].plugin[arguments[2]].controlAction(A);}break};
|
||||
var newYear = _CalendarInstances[arguments[1].parentNode.objID].date.getYear();
|
||||
if(curYear != newYear) {
|
||||
var url = request_uri.setQuery('mid', current_mid).setQuery('year',_CalendarInstances[arguments[1].parentNode.objID].date.getFullYear()).setQuery('month',_CalendarInstances[arguments[1].parentNode.objID].date.getMonth()+1).setQuery('day',_CalendarInstances[arguments[1].parentNode.objID].date.getDate());
|
||||
location.href = url;
|
||||
}
|
||||
}};
|
||||
34
modules/lifepod/skins/xe_official/list.html
Normal file
34
modules/lifepod/skins/xe_official/list.html
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<!-- JS 파일 로드 -->
|
||||
<script type="text/javascript" src="http://www.lifepod.co.kr/api/calendar.js"></script>
|
||||
<!--%import("js/lifepod.js")-->
|
||||
<script type="text/javascript" src="./modules/lifepod/skins/xe_official/js/xe_interface.js"></script>
|
||||
<!--{count($page->data)}-->
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
xAddEventListener(window, 'load', startLifepod);
|
||||
<!--@foreach($page->data as $key => $val)-->
|
||||
calAdd({$val->childNodes["identifier"]->body},'{$val->childNodes["date-start"]->body}', '{$val->childNodes["date-end"]->body}', '{$val->childNodes["title"]->body}', '{$val->childNodes["description"]->body}', '{$val->childNodes["type"]->body}', '{$page->title}', 'green');
|
||||
<!--@end-->
|
||||
<!--@if($day)-->
|
||||
setDate({$year},{$month},{$day});
|
||||
<!--@end-->
|
||||
//]]></script>
|
||||
|
||||
|
||||
<!--%import("css/common.css")-->
|
||||
|
||||
<!-- 상단 텍스트 출력 -->
|
||||
{$module_info->header_text}
|
||||
|
||||
<!-- 스킨의 제목/간단한 설명 출력 -->
|
||||
<!--@if($module_info->title)-->
|
||||
<div class="boardHeader">
|
||||
<h3>{$module_info->title}</h3>
|
||||
</div>
|
||||
<!--@end-->
|
||||
<div id="div_calendar" style="width:750;height:600px">
|
||||
<!-- 캘린더가 그려질 부분 -->
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 하단 텍스트 출력 -->
|
||||
{$module_info->footer_text}
|
||||
7
modules/lifepod/skins/xe_official/message.html
Normal file
7
modules/lifepod/skins/xe_official/message.html
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<div>
|
||||
{$message}
|
||||
</div>
|
||||
|
||||
<!--@if(!$is_logged)-->
|
||||
<a href="{getUrl('act','dispMemberLoginForm')}">{$lang->cmd_login}</a>
|
||||
<!--@end-->
|
||||
19
modules/lifepod/skins/xe_official/skin.xml
Normal file
19
modules/lifepod/skins/xe_official/skin.xml
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<skin>
|
||||
<title xml:lang="ko">라이프팟 연동 기본 스킨</title>
|
||||
<title xml:lang="en">Lifepod Module Basic Skin</title>
|
||||
<maker email_address="haneul0318@gmail.com" link="http://haneul.zetyx.net" date="2007.11.30">
|
||||
<name xml:lang="ko">haneul</name>
|
||||
<name xml:lang="en">haneul</name>
|
||||
<description xml:lang="ko">라이프팟 노트 연동 모듈의 기본 스킨</description>
|
||||
<description xml:lang="en">Default Skin of Lifepod Module</description>
|
||||
</maker>
|
||||
<extra_vars>
|
||||
<var name="title" type="text">
|
||||
<title xml:lang="ko">게시판 제목</title>
|
||||
<title xml:lang="en">Title of Board</title>
|
||||
<description xml:lang="ko">게시판의 제목을 적어주세요.</description>
|
||||
<description xml:lang="en">Please input the title of board.</description>
|
||||
</var>
|
||||
</extra_vars>
|
||||
</skin>
|
||||
10
modules/lifepod/tpl/filter/delete_lifepod.xml
Normal file
10
modules/lifepod/tpl/filter/delete_lifepod.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<filter name="delete_lifepod" module="lifepod" act="procLifepodAdminDeleteLifepod">
|
||||
<form>
|
||||
<node target="module_srl" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeDeleteLifepod">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="page" />
|
||||
</response>
|
||||
</filter>
|
||||
11
modules/lifepod/tpl/filter/insert_grant.xml
Normal file
11
modules/lifepod/tpl/filter/insert_grant.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<filter name="insert_grant" module="lifepod" act="procLifepodAdminInsertGrant" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="module_srl" required="true" filter="number" />
|
||||
</form>
|
||||
<response callback_func="completeInsertGrant">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="page" />
|
||||
<tag name="module_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
32
modules/lifepod/tpl/filter/insert_lifepod.xml
Normal file
32
modules/lifepod/tpl/filter/insert_lifepod.xml
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<filter name="insert_lifepod" module="lifepod" act="procLifepodAdminInsertLifepod" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="mid" required="true" filter="alpha_number" />
|
||||
<node target="calendar_address" required="true" maxlength="250" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="lifepod_name" target="mid" />
|
||||
<param name="calendar_address" target="calendar_address" />
|
||||
<param name="module_srl" target="module_srl" />
|
||||
<param name="module_category_srl" target="module_category_srl" />
|
||||
<param name="layout_srl" target="layout_srl" />
|
||||
<param name="skin" target="skin" />
|
||||
<param name="browser_title" target="browser_title" />
|
||||
<param name="use_category" target="use_category" />
|
||||
<param name="list_count" target="list_count" />
|
||||
<param name="page_count" target="page_count" />
|
||||
<param name="is_default" target="is_default" />
|
||||
<param name="description" target="description" />
|
||||
<param name="header_text" target="header_text" />
|
||||
<param name="footer_text" target="footer_text" />
|
||||
<param name="admin_id" target="admin_id" />
|
||||
<param name="open_rss" target="open_rss" />
|
||||
</parameter>
|
||||
<response callback_func="completeInsertLifepod">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="module" />
|
||||
<tag name="act" />
|
||||
<tag name="page" />
|
||||
<tag name="module_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
38
modules/lifepod/tpl/grant_list.html
Normal file
38
modules/lifepod/tpl/grant_list.html
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<!--#include("./header.html")-->
|
||||
<!--%import("filter/insert_grant.xml")-->
|
||||
|
||||
<div class="infoText">{nl2br($lang->about_grant)}</div>
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert_grant)">
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="130" />
|
||||
<col width="*" />
|
||||
<col width="80" />
|
||||
<col width="80" />
|
||||
<caption>{$lang->target}</caption>
|
||||
<tbody>
|
||||
<!--@foreach($grant_list as $key => $val)-->
|
||||
<tr>
|
||||
<th scope="row">{$val->title}</th>
|
||||
<td class="left">
|
||||
<!--@foreach($group_list as $k => $v)-->
|
||||
<input type="checkbox" class="checkbox" name="{$key}" value="{$v->group_srl}" id="grant_{$key}_{$v->group_srl}" <!--@if(is_array($module_info->grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"<!--@end-->/>
|
||||
<label for="grant_{$key}_{$v->group_srl}">{$v->title}</label>
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td><a href="#" onclick="doSelectAll(this, '{$key}')" class="blue">{$lang->cmd_select_all}</a></td>
|
||||
<td><a href="#" onclick="doUnSelectAll(this, '{$key}')" class="red">{$lang->cmd_unselect_all}</a></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th scope="row" colspan="4" class="button">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_save}" accesskey="s" /></span>
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
25
modules/lifepod/tpl/header.html
Normal file
25
modules/lifepod/tpl/header.html
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<!--%import("js/lifepod_admin.js")-->
|
||||
|
||||
<h3>{$lang->lifepod} <span class="gray">{$lang->cmd_management}</span></h3>
|
||||
|
||||
<div class="infoText">{nl2br($lang->about_lifepod)}</div>
|
||||
|
||||
<!--@if($module_info)-->
|
||||
<div class="header4">
|
||||
<!--@if($module_info->mid)-->
|
||||
<h4>{$module_info->mid} <!--@if($module_info->is_default=='Y')--><span class="bracket">({$lang->is_default})</span><!--@end--> <span class="vr">|</span> <a href="{getUrl('','mid',$module_info->mid)}" onclick="window.open(this.href); return false;" class="view">View</a></h4>
|
||||
<!--@end-->
|
||||
|
||||
<ul class="localNavigation">
|
||||
<!--@if($module=='admin')-->
|
||||
<li <!--@if($act=='dispLifepodAdminContent')-->class="on"<!--@end-->><a href="{getUrl('act','dispLifepodAdminContent','module_srl','')}">{$lang->cmd_lifepod_list}</a></li>
|
||||
<!--@else-->
|
||||
<li><a href="{getUrl('act','')}">{$lang->cmd_back}</a></li>
|
||||
<!--@end-->
|
||||
<li <!--@if($act=='dispLifepodAdminLifepodInfo')-->class="on"<!--@end-->><a href="{getUrl('act','dispLifepodAdminLifepodInfo')}">{$lang->cmd_view_info}</a></li>
|
||||
<li <!--@if($act=='dispLifepodAdminGrantInfo')-->class="on"<!--@end-->><a href="{getUrl('act','dispLifepodAdminGrantInfo')}">{$lang->cmd_manage_grant}</a></li>
|
||||
<li <!--@if($act=='dispLifepodAdminSkinInfo')-->class="on"<!--@end-->><a href="{getUrl('act','dispLifepodAdminSkinInfo')}">{$lang->cmd_manage_skin}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
79
modules/lifepod/tpl/index.html
Normal file
79
modules/lifepod/tpl/index.html
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
<!--#include("header.html")-->
|
||||
|
||||
<!-- 정보 -->
|
||||
<div class="tableSummaryType1">
|
||||
Total <strong>{number_format($total_count)}</strong>, Page <strong>{number_format($page)}</strong>/{number_format($total_page)}
|
||||
</div>
|
||||
|
||||
<!-- 목록 -->
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="50" />
|
||||
<col width="130" />
|
||||
<col />
|
||||
<col width="80" />
|
||||
<col width="50" />
|
||||
<col width="50" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">{$lang->no}</th>
|
||||
<th scope="col">
|
||||
<form action="./" method="get" onsubmit="return doChangeCategory(this);">
|
||||
<input type="hidden" name="module" value="{$module}" />
|
||||
<input type="hidden" name="act" value="{$act}" />
|
||||
<select name="module_category_srl" class="w80">
|
||||
<option value="">{$lang->module_category}</option>
|
||||
<!--@foreach($module_category as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
|
||||
<!--@end-->
|
||||
<option value="">---------</option>
|
||||
<option value="-1">{$lang->cmd_management}</option>
|
||||
</select>
|
||||
<input type="submit" name="go_button" id="go_button" value="GO" class="buttonTypeGo" />
|
||||
</form>
|
||||
</th>
|
||||
<th scope="col">{$lang->mid} / {$lang->browser_title}</th>
|
||||
<th scope="col">{$lang->regdate}</th>
|
||||
<th scope="col">{$lang->cmd_view}</th>
|
||||
<th scope="col">{$lang->cmd_delete}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!--@foreach($lifepod_list as $no => $val)-->
|
||||
<tr>
|
||||
<td class="tahoma">{$no}</td>
|
||||
<td>
|
||||
<!--@if(!$val->module_category_srl)-->
|
||||
{$lang->not_exists}
|
||||
<!--@else-->
|
||||
{$module_category[$val->module_category_srl]->title}
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td class="left subject">
|
||||
{$val->mid} -
|
||||
<a href="{getUrl('act','dispLifepodAdminLifepodInfo','module_srl',$val->module_srl)}" class="blue">{htmlspecialchars($val->browser_title)}</a>
|
||||
</td>
|
||||
<td class="tahoma">{zdate($val->regdate,"Y-m-d")}</td>
|
||||
<td class="blue"><a href="{getUrl('','mid',$val->mid)}" onclick="window.open(this.href); return false;">{$lang->cmd_view}</a></td>
|
||||
<td class="red"><!--@if($val->is_default!='Y')--><a href="{getUrl('act','dispLifepodAdminDeleteLifepod','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a><!--@end--></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- 버튼 -->
|
||||
<div class="fr gap1">
|
||||
<a href="{getUrl('act','dispLifepodAdminInsertLifepod','module_srl','')}" class="button"><span>{$lang->cmd_make}</span></a>
|
||||
</div>
|
||||
|
||||
<!-- 페이지 네비게이션 -->
|
||||
<div class="pageNavigation">
|
||||
<a href="{getUrl('page','','module_srl','')}" class="goToFirst"><img src="../../admin/tpl/images/bottomGotoFirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<!--@if($page == $page_no)-->
|
||||
<span class="current">{$page_no}</span>
|
||||
<!--@else-->
|
||||
<a href="{getUrl('page',$page_no,'module_srl','')}">{$page_no}</a>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="goToLast"><img src="../../admin/tpl/images/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||
</div>
|
||||
79
modules/lifepod/tpl/js/lifepod_admin.js
Normal file
79
modules/lifepod/tpl/js/lifepod_admin.js
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/**
|
||||
* @file modules/lifepod/js/lifepod_admin.js
|
||||
* @author haneul (haneul0318@gmail.com)
|
||||
* @brief lifepod 모듈의 관리자용 javascript
|
||||
**/
|
||||
|
||||
/* 모듈 생성 후 */
|
||||
function completeInsertLifepod(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
|
||||
var page = ret_obj['page'];
|
||||
var module_srl = ret_obj['module_srl'];
|
||||
|
||||
alert(message);
|
||||
|
||||
var url = current_url.setQuery('act','dispLifepodAdminLifepodInfo');
|
||||
if(module_srl) url = url.setQuery('module_srl',module_srl);
|
||||
if(page) url.setQuery('page',page);
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 모듈 삭제 후 */
|
||||
function completeDeleteLifepod(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var page = ret_obj['page'];
|
||||
alert(message);
|
||||
|
||||
var url = current_url.setQuery('act','dispLifepodAdminContent').setQuery('module_srl','');
|
||||
if(page) url = url.setQuery('page',page);
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 권한 관련 */
|
||||
function doSelectAll(obj, key) {
|
||||
var fo_obj = obj.parentNode;
|
||||
while(fo_obj.nodeName != 'FORM') {
|
||||
fo_obj = fo_obj.parentNode;
|
||||
}
|
||||
|
||||
for(var i=0;i<fo_obj.length;i++) {
|
||||
var tobj = fo_obj[i];
|
||||
if(tobj.name == key) tobj.checked=true;
|
||||
}
|
||||
}
|
||||
|
||||
function doUnSelectAll(obj, key) {
|
||||
var fo_obj = obj.parentNode;
|
||||
while(fo_obj.nodeName != 'FORM') {
|
||||
fo_obj = fo_obj.parentNode;
|
||||
}
|
||||
|
||||
for(var i=0;i<fo_obj.length;i++) {
|
||||
var tobj = fo_obj[i];
|
||||
if(tobj.name == key) tobj.checked = false;
|
||||
}
|
||||
}
|
||||
|
||||
function completeInsertGrant(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var page = ret_obj['page'];
|
||||
var module_srl = ret_obj['module_srl'];
|
||||
|
||||
alert(message);
|
||||
|
||||
location.href = location.href;
|
||||
}
|
||||
|
||||
/* 카테고리 이동 */
|
||||
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;
|
||||
}
|
||||
79
modules/lifepod/tpl/js/springnote_admin.js
Normal file
79
modules/lifepod/tpl/js/springnote_admin.js
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/**
|
||||
* @file modules/springnote/js/springnote_admin.js
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief springnote 모듈의 관리자용 javascript
|
||||
**/
|
||||
|
||||
/* 모듈 생성 후 */
|
||||
function completeInsertSpringnote(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
|
||||
var page = ret_obj['page'];
|
||||
var module_srl = ret_obj['module_srl'];
|
||||
|
||||
alert(message);
|
||||
|
||||
var url = current_url.setQuery('act','dispSpringnoteAdminSpringnoteInfo');
|
||||
if(module_srl) url = url.setQuery('module_srl',module_srl);
|
||||
if(page) url.setQuery('page',page);
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 모듈 삭제 후 */
|
||||
function completeDeleteSpringnote(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var page = ret_obj['page'];
|
||||
alert(message);
|
||||
|
||||
var url = current_url.setQuery('act','dispSpringnoteAdminContent').setQuery('module_srl','');
|
||||
if(page) url = url.setQuery('page',page);
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 권한 관련 */
|
||||
function doSelectAll(obj, key) {
|
||||
var fo_obj = obj.parentNode;
|
||||
while(fo_obj.nodeName != 'FORM') {
|
||||
fo_obj = fo_obj.parentNode;
|
||||
}
|
||||
|
||||
for(var i=0;i<fo_obj.length;i++) {
|
||||
var tobj = fo_obj[i];
|
||||
if(tobj.name == key) tobj.checked=true;
|
||||
}
|
||||
}
|
||||
|
||||
function doUnSelectAll(obj, key) {
|
||||
var fo_obj = obj.parentNode;
|
||||
while(fo_obj.nodeName != 'FORM') {
|
||||
fo_obj = fo_obj.parentNode;
|
||||
}
|
||||
|
||||
for(var i=0;i<fo_obj.length;i++) {
|
||||
var tobj = fo_obj[i];
|
||||
if(tobj.name == key) tobj.checked = false;
|
||||
}
|
||||
}
|
||||
|
||||
function completeInsertGrant(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var page = ret_obj['page'];
|
||||
var module_srl = ret_obj['module_srl'];
|
||||
|
||||
alert(message);
|
||||
|
||||
location.href = location.href;
|
||||
}
|
||||
|
||||
/* 카테고리 이동 */
|
||||
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;
|
||||
}
|
||||
31
modules/lifepod/tpl/lifepod_delete.html
Normal file
31
modules/lifepod/tpl/lifepod_delete.html
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<!--%import("filter/delete_lifepod.xml")-->
|
||||
<!--%import("js/lifepod_admin.js")-->
|
||||
<!--#include("header.html")-->
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, delete_lifepod)">
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="module_srl" value="{$module_info->module_srl}" />
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="150" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row" colspan="2">{$lang->confirm_delete}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->module_name}</th>
|
||||
<td>{$module_info->mid}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->module}</th>
|
||||
<td>{$module_info->module}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" colspan="2" class="button">
|
||||
<a href="{getUrl('act','dispLifepodAdminContent')}" class="button"><span>{$lang->cmd_back}</span></a>
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_delete}" /></span>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
75
modules/lifepod/tpl/lifepod_info.html
Normal file
75
modules/lifepod/tpl/lifepod_info.html
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
<!--#include("header.html")-->
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="150" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row">{$lang->module_category}</th>
|
||||
<td>
|
||||
<!--@if(!$module_info->module_category_srl)-->
|
||||
{$lang->not_exists}
|
||||
<!--@else-->
|
||||
{$module_category[$module_info->module_category_srl]->title}
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->calendar_address}</th>
|
||||
<td>{$module_info->calendar_address} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->layout}</th>
|
||||
<td>
|
||||
<!--@if($module_info->layout_srl)-->
|
||||
{$module_info->layout_title} ({$module_info->layout})
|
||||
<!--@else-->
|
||||
{$lang->not_exists}
|
||||
<!--@end-->
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->skin}</th>
|
||||
<td>{$module_info->skin_title} ({$module_info->skin})</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->browser_title}</th>
|
||||
<td>{htmlspecialchars($module_info->browser_title)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->use_category}</th>
|
||||
<td><!--@if($module_info->use_category=='Y')-->{$lang->use}<!--@else-->{$lang->notuse}<!--@end--></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->list_count}</th>
|
||||
<td>{$module_info->list_count?$module_info->list_count:20}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->page_count}</th>
|
||||
<td>{$module_info->page_count?$module_info->page_count:10}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->description}</th>
|
||||
<td>{nl2br(htmlspecialchars($module_info->description))} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->header_text}</th>
|
||||
<td>{htmlspecialchars($module_info->header_text)} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->footer_text}</th>
|
||||
<td>{htmlspecialchars($module_info->footer_text)} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->admin_id}</th>
|
||||
<td>{implode(",",$module_info->admin_id)} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" colspan="2" class="button">
|
||||
<a href="{getUrl('act','dispLifepodAdminInsertLifepod')}" class="button"><span>{$lang->cmd_modify}</span></a>
|
||||
<!--@if($module=="admin")-->
|
||||
<a href="{getUrl('act','dispLifepodAdminContent','module_srl','')}" class="button"><span>{$lang->cmd_lifepod_list}</span></a>
|
||||
<!--@end-->
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
119
modules/lifepod/tpl/lifepod_insert.html
Normal file
119
modules/lifepod/tpl/lifepod_insert.html
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
<!--%import("filter/insert_lifepod.xml")-->
|
||||
<!--%import("js/lifepod_admin.js")-->
|
||||
|
||||
<!--#include("header.html")-->
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert_lifepod)" enctype="multipart/form-data">
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
<!--@if($module_info->is_default=='Y')-->
|
||||
<input type="hidden" name="is_default" value="Y" />
|
||||
<!--@end-->
|
||||
<input type="hidden" name="use_category" value="N" />
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="150" />
|
||||
<col />
|
||||
|
||||
<tr>
|
||||
<th scope="row">{$lang->mid}</th>
|
||||
<td>
|
||||
<input type="text" name="mid" value="{$module_info->mid}" class="inputTypeText" />
|
||||
<p>{$lang->about_mid}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@if($module_info->is_default!='Y')-->
|
||||
<tr>
|
||||
<th scope="row">{$lang->is_default}</th>
|
||||
<td>
|
||||
<input type="checkbox" name="is_default" value="Y" <!--@if($module_info->is_default=='Y')-->checked="checked"<!--@end--> id="fld_for_default" class="checkbox" />
|
||||
<label for="fld_for_default">{$lang->about_default}</label>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th scope="row">{$lang->module_category}</th>
|
||||
<td>
|
||||
<select name="module_category_srl">
|
||||
<option value="0">{$lang->notuse}</option>
|
||||
<!--@foreach($module_category as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($module_info->module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<p>{$lang->about_module_category}</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th scope="row">{$lang->calendar_address}</th>
|
||||
<td>
|
||||
<input type="text" name="calendar_address" value="{htmlspecialchars($module_info->calendar_address)}" class="inputTypeText w300" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th scope="row">{$lang->browser_title}</th>
|
||||
<td>
|
||||
<input type="text" name="browser_title" value="{htmlspecialchars($module_info->browser_title)}" class="inputTypeText w300" />
|
||||
<p>{$lang->about_browser_title}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->layout}</th>
|
||||
<td>
|
||||
<select name="layout_srl">
|
||||
<option value="0">{$lang->notuse}</option>
|
||||
<!--@foreach($layout_list as $key => $val)-->
|
||||
<option value="{$val->layout_srl}" <!--@if($module_info->layout_srl==$val->layout_srl)-->selected="selected"<!--@end-->>{$val->title} ({$val->layout})</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<p>{$lang->about_layout}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->skin}</th>
|
||||
<td>
|
||||
<select name="skin">
|
||||
<!--@foreach($skin_list as $key=>$val)-->
|
||||
<option value="{$key}" <!--@if($module_info->skin==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<p>{$lang->about_skin}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->description}</th>
|
||||
<td>
|
||||
<textarea name="description" class="inputTypeTextArea w100">{htmlspecialchars($module_info->description)}</textarea>
|
||||
<p>{$lang->about_description}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->header_text}</th>
|
||||
<td>
|
||||
<textarea name="header_text" class="inputTypeTextArea w100">{htmlspecialchars($module_info->header_text)}</textarea>
|
||||
<p>{$lang->about_header_text}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->footer_text}</th>
|
||||
<td>
|
||||
<textarea name="footer_text" class="inputTypeTextArea w100">{htmlspecialchars($module_info->footer_text)}</textarea>
|
||||
<p>{$lang->about_footer_text}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->admin_id}</th>
|
||||
<td>
|
||||
<textarea name="admin_id" class="inputTypeTextArea w100"><!--@if($module_info->admin_id)-->{implode(",",$module_info->admin_id)}<!--@end--></textarea>
|
||||
<p>{$lang->about_admin_id}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" colspan="2" class="button">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
116
modules/lifepod/tpl/skin_info.html
Normal file
116
modules/lifepod/tpl/skin_info.html
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
<!--#include("./header.html")-->
|
||||
|
||||
<form action="./" method="post" enctype="multipart/form-data" target="hidden_iframe">
|
||||
<input type="hidden" name="module" value="{$module_info->module}" />
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="act" value="procSpringnoteAdminUpdateSkinInfo" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="150" />
|
||||
<col />
|
||||
<caption>{$lang->skin_default_info}</caption>
|
||||
<tr>
|
||||
<th scope="row">{$lang->skin}</th>
|
||||
<td class="left" >{$skin_info->title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->skin_maker}</th>
|
||||
<td class="left" >{$skin_info->maker->name} <!--@if($skin_info->maker->email_address)-->(<a href="mailto:{$skin_info->maker->email_address}">{$skin_info->maker->email_address}</a>)<!--@end--></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->skin_maker_homepage}</th>
|
||||
<td class="left" ><a href="{$skin_info->maker->homepage}" target="_blank">{$skin_info->maker->homepage}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->date}</th>
|
||||
<td class="left" >{$skin_info->maker->date}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->description}</th>
|
||||
<td class="left" >{nl2br($skin_info->maker->description)}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<col width="150" />
|
||||
<col />
|
||||
<caption>{$lang->extra_vars}</caption>
|
||||
<tr valign="top">
|
||||
<th scope="row">{$lang->colorset}</th>
|
||||
<td class="left" >
|
||||
<!--@foreach($skin_info->colorset as $key => $val)-->
|
||||
<div>
|
||||
<!--@if($val->screenshot)-->
|
||||
<img src="{$val->screenshot}" align="left" alt="{$val->title}" />
|
||||
<!--@end-->
|
||||
|
||||
<input type="radio" name="colorset" value="{$val->name}" id="colorset_{$key}" <!--@if($module_info->colorset==$val->name)-->checked="checked"<!--@end-->/>
|
||||
<label for="colorset_{$key}">{$val->title}</label>
|
||||
</div>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!--@foreach($skin_info->extra_vars as $key => $val)-->
|
||||
<tr>
|
||||
<th scope="row">{$val->title}</th>
|
||||
<td class="left">
|
||||
<!--@if($val->type=="text")-->
|
||||
<input type="text" name="{$val->name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w100" />
|
||||
|
||||
<!--@elseif($val->type=="textarea")-->
|
||||
<textarea name="{$val->name}" class="inputTypeTextArea w100">{htmlspecialchars($val->value)}</textarea>
|
||||
|
||||
<!--@elseif($val->type=="select")-->
|
||||
<select name="{$val->name}">
|
||||
<!--@foreach($val->default as $k=>$v)-->
|
||||
<option value="{$v}" <!--@if($v==$val->value)-->selected="selected"<!--@end-->>{$v}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
|
||||
<!--@elseif($val->type=="checkbox")-->
|
||||
<!--@foreach($val->default as $k=>$v)-->
|
||||
<span>
|
||||
<input type="checkbox" name="{$val->name}[]" value="{$v}" id="ch_{$key}_{$k}" <!--@if(in_array($v, $val->value))-->checked="checked"<!--@end--> class="checkbox" />
|
||||
<label for="ch_{$key}_{$k}">{$v}</label>
|
||||
</span>
|
||||
<!--@end-->
|
||||
|
||||
<!--@elseif($val->type=="radio")-->
|
||||
<!--@foreach($val->default as $k=>$v)-->
|
||||
<span>
|
||||
<input type="radio" name="{$val->name}" value="{$v}" id="ch_{$key}_{$k}" <!--@if($v==$val->value)-->checked="checked"<!--@end-->/>
|
||||
<label for="ch_{$key}_{$k}">{$v}</label>
|
||||
</span>
|
||||
<!--@end-->
|
||||
|
||||
<!--@elseif($val->type=="image")-->
|
||||
|
||||
<!--@if($val->value)-->
|
||||
<div>
|
||||
<img src="{$val->value}" /><br />
|
||||
<input type="checkbox" name="del_{$val->name}" value="Y" id="del_{$val->name}" class="checkbox" />
|
||||
<label for="del_{$val->name}">{$lang->cmd_delete}</label>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<input type="file" name="{$val->name}" value="" />
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($val->description)-->
|
||||
<p>{nl2br($val->description)}</p>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th scope="row" colspan="2" class="button">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<iframe name="hidden_iframe" frameborder="0" style="display:none"></iframe>
|
||||
Loading…
Add table
Add a link
Reference in a new issue