통합검색 모듈인 integration_search 추가

git-svn-id: http://xe-core.googlecode.com/svn/trunk@1992 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2007-07-24 13:25:43 +00:00
parent 87e2fab04c
commit c4d1ed1c2e
26 changed files with 698 additions and 6 deletions

View file

@ -32,10 +32,10 @@ form { margin:0; padding:0; }
.iePngFix { behavior:url(./common/js/iePngFix.htc); }
/* Input Style Definition */
.inputTypeText { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; height:1.2em; line-height:1em; background:#ffffff; font-size:1em;}
.inputTypeText { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1.4em; padding:.2em 0 0 .3em; background:#ffffff; font-size:1em; _position:relative; _top:2px;}
.inputTypeText:hover,
.inputTypeText:focus { background:#f4f4f4; }
.inputTypeTextArea { border:1px solid !important; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6 !important; padding:3px; background:#ffffff; font-size:1em;}
.inputTypeTextArea { border:1px solid !important; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6 !important; background:#ffffff; font-size:1em;}
.w40 { width:40px; }
.w60 { width:60px; }

View file

@ -74,6 +74,11 @@
<!-- 로그인 위젯 -->
<img src="./images/blank.gif" class="zbxe_widget_output" widget="login_info" skin="default" colorset="default" />
<div class="tCenter">
<form action="{getUrl()}" method="get"><input type="hidden" name="mid" value="{$mid}" /><input type="hidden" name="act" value="IS" /><input type="text" class="inputTypeText w100" name="is_keyword" value="{$is_keyword}"/><span class="button"><input type="submit" value="{$lang->cmd_search}" /></span></form>
</div>
<!-- 왼쪽 2차 메뉴 -->
<!--@if($menu_1st)-->
<div class="submenu">

View file

@ -102,7 +102,7 @@
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
$skin = $module_info->skin;
// 스킨의 정보 구해옴 (extra_vars를 체크하기 위해서)
// 스킨의 정보 구해옴 (extra_vars를 체크하기 위해서)
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
// 입력받은 변수들을 체크 (mo, act, module_srl, page등 기본적인 변수들 없앰)

View file

@ -240,12 +240,16 @@
if(count($attached_file_list)) {
$src = preg_replace("!^(\"|')!is","",$attached_file_list[0]);
copy("./".$src, $tmp_file);
@copy("./".$src, $tmp_file);
// 첨부된 파일이 없으면 http로 시작하는 경로를 찾음
} else {
preg_match('!src=("|\'){0,1}([^"|^\'|^\ ]*)("|\'| ){0,1}!is', $content, $matches);
$src = $matches[2];
preg_match_all("!http:\/\/([^ ^\"^']*?)\.(jpg|png|gif|jpeg)!is", $content, $matches, PREG_SET_ORDER);
for($i=0;$i<count($matches);$i++) {
$src = $matches[$i][0];
if(strpos($src,"/common/tpl")!==false || strpos($src,"/modules")!==false) continue;
break;
}
if($src) FileHandler::getRemoteFile($src, $tmp_file);
else return;
}

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<module version="0.1">
<title xml:lang="ko">통합검색</title>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 7. 24">
<name xml:lang="ko">제로</name>
<description xml:lang="ko">
선택한 모듈들을 대상으로 통합검색을 지원합니다.
선택된 모듈의 글중 비밀글만 검색을 하지 않고 나머지는 모두 검색을 하기에 공개되지 않은 모듈은 대상에 포함하지 않도록 하셔야 합니다.
</description>
</author>
</module>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<module>
<grants>
<grant name="list" default="guest">
<title xml:lang="ko">목록</title>
<title xml:lang="jp">リスト</title>
<title xml:lang="en">list</title>
</grant>
<grant name="manager" default="root">
<title xml:lang="ko">관리</title>
<title xml:lang="jp">管理</title>
<title xml:lang="en">manager</title>
</grant>
</grants>
<actions>
<action name="IS" type="view" standalone="true" />
<action name="dispIntegration_searchAdminContent" type="view" admin_index="true" />
<action name="dispIntegration_searchAdminGrantInfo" type="view" />
<action name="dispIntegration_searchAdminSkinInfo" type="view" />
<action name="procIntegration_searchAdminInsertConfig" type="controller" />
<action name="procIntegration_searchAdminInsertSkin" type="controller" />
</actions>
</module>

View file

@ -0,0 +1,113 @@
<?php
/**
* @class integration_searchAdminController
* @author zero (zero@nzeo.com)
* @brief integration_search module의 admin view class
*
* 통합검색 관리
*
**/
class integration_searchAdminController extends integration_search {
/**
* @brief 초기화
**/
function init() {}
/**
* @brief 설정 저장
**/
function procIntegration_searchAdminInsertConfig() {
// 설정 정보를 받아옴 (module model 객체를 이용)
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('integration_search');
$args->skin = Context::get('skin');
$args->target_mid = explode('|@|',Context::get('target_mid'));
$args->skin_vars = $config->skin_vars;
$oModuleController = &getController('module');
return $oModuleController->insertModuleConfig('integration_search',$args);
}
/**
* @brief 스킨 정보 저장
**/
function procIntegration_searchAdminInsertSkin() {
// 설정 정보를 받아옴 (module model 객체를 이용)
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('integration_search');
$args->skin = $config->skin;
$args->target_mid = $config->target_mid;
// 스킨의 정보를 구해옴 (extra_vars를 체크하기 위해서)
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $config->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하여 저장
$args->skin_vars = serialize($obj);
$oModuleController = &getController('module');
return $oModuleController->insertModuleConfig('integration_search',$args);
}
}
?>

View file

@ -0,0 +1,71 @@
<?php
/**
* @class integration_searchAdminView
* @author zero (zero@nzeo.com)
* @brief integration_search module의 admin view class
*
* 통합검색 관리
*
**/
class integration_searchAdminView extends integration_search {
var $config = null;
/**
* @brief 초기화
**/
function init() {
// 설정 정보를 받아옴 (module model 객체를 이용)
$oModuleModel = &getModel('module');
$this->config = $oModuleModel->getModuleConfig('integration_search');
if(!$this->config->target_mid) $this->config->target_mid = array();
Context::set('config',$this->config);
$this->setTemplatePath($this->module_path."/tpl/");
}
/**
* @brief 모듈 선정 스킨 설정
**/
function dispIntegration_searchAdminContent() {
// 스킨 목록을 구해옴
$oModuleModel = &getModel('module');
$skin_list = $oModuleModel->getSkins($this->module_path);
Context::set('skin_list',$skin_list);
// 생성된 mid목록을 구함
$mid_list = $oModuleModel->getMidList();
Context::set('mid_list',$mid_list);
// 샘플코드
Context::set('sample_code', htmlspecialchars('<form action="{getUrl()}" method="get"><input type="hidden" name="mid" value="{$mid}" /><input type="hidden" name="act" value="IS" /><input type="text" name="is_keyword" class="inputTypeText" value="{$is_keyword}" /><span class="button"><input type="submit" value="{$lang->cmd_search}" /></span></a>') );
$this->setTemplateFile("index");
}
/**
* @brief 스킨 설정
**/
function dispIntegration_searchAdminSkinInfo() {
$oModuleModel = &getModel('module');
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $this->config->skin);
$skin_vars = unserialize($this->config->skin_vars);
// 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 = $skin_vars->{$name};
if($type=="checkbox"&&!$value) $value = array();
$skin_info->extra_vars[$key]->value= $value;
}
}
Context::set('skin_info', $skin_info);
Context::set('skin_vars', $skin_vars);
$this->setTemplateFile("skin_info");
}
}
?>

View file

@ -0,0 +1,47 @@
<?php
/**
* @class integration_search
* @author zero (zero@nzeo.com)
* @brief integration_search module의 view class
**/
class integration_search extends ModuleObject {
/**
* @brief 설치시 추가 작업이 필요할시 구현
**/
function moduleInstall() {
// action forward에 등록
$oModuleController = &getController('module');
$oModuleController->insertActionForward('integration_search', 'view', 'IS');
$oModuleController->insertActionForward('integration_search', 'view', 'dispIntegration_searchAdminContent');
$oModuleController->insertActionForward('integration_search', 'view', 'dispIntegration_searchAdminSkinInfo');
return new Object();
}
/**
* @brief 설치가 이상이 없는지 체크하는 method
**/
function checkUpdate() {
// IS act의 여부 체크 (2007. 7. 24 추가)
$oModuleModel = &getModel('module');
$act = $oModuleModel->getActionForward('dispIntegration_searchAdminSkinInfo');
if(!$act) return true;
return false;
}
/**
* @brief 업데이트 실행
**/
function moduleUpdate() {
$oModuleController = &getController('module');
$oModuleController->insertActionForward('integration_search', 'view', 'IS');
$oModuleController->insertActionForward('integration_search', 'view', 'dispIntegration_searchAdminContent');
$oModuleController->insertActionForward('integration_search', 'view', 'dispIntegration_searchAdminSkinInfo');
return new Object(0, 'success_updated');
}
}
?>

View file

@ -0,0 +1,80 @@
<?php
/**
* @class integration_searchView
* @author zero (zero@nzeo.com)
* @brief integration_search module의 view class
*
* 통합검색 출력
*
**/
class integration_searchView extends integration_search {
var $target_mid = array();
var $skin = 'default';
/**
* @brief 초기화
**/
function init() {
// 설정 정보를 받아옴 (module model 객체를 이용)
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('integration_search');
$this->target_mid = $config->target_mid;
if(!$this->target_mid) $this->target_mid = array();
$this->skin = $config->skin;
$this->module_info = unserialize($config->skin_vars);
Context::set('module_info', $this->module_info);
$this->setTemplatePath($this->module_path."/skins/".$this->skin."/");
}
/**
* @brief 통합 검색 출력
**/
function IS() {
$oModuleModel = &getModel('module');
$module_list = $oModuleModel->getMidList($args);
// 대상 모듈을 정리함
$module_srl_list = array();
foreach($module_list as $mid => $val) {
if(in_array($mid, $this->target_mid)) {
$module_srl_list[] = $val->module_srl;
$mid_list[$val->module_srl] = $val;
}
}
// 변수 설정
$page = (int)Context::get('page');
if(!$page) $page = 1;
$list_count = (int)Context::get('list_count');
if(!$list_count|| $list_count>20) $list_count = 20;
// 출력할 컨텐츠 추출을 위한 인자 정리
$args->module_srl = implode(',',$module_srl_list);
$args->page = $page;
$args->list_count = $list_count;
$args->page_count = 10;
$args->search_target = 'title_content';
$args->search_keyword = Context::get('is_keyword');
$args->sort_index = 'list_order';
$args->order_type = 'asc';
// 대상 문서들을 가져옴
$oDocumentModel = &getModel('document');
$output = $oDocumentModel->getDocumentList($args);
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);
// 템플릿 파일 지정
$this->setTemplateFile('index');
}
}
?>

View file

@ -0,0 +1,13 @@
<?php
/**
* @file modules/integration_search/lang/ko.lang.php
* @author zero <zero@nzeo.com>
* @brief 한국어 언어팩 (기본적인 내용만 수록)
**/
$lang->integration_search = "통합검색";
$lang->sample_code = "샘플코드";
$lang->about_target_module = "선택된 모듈만 검색 대상으로 정합니다. 권한설정에 대한 주의를 바랍니다";
$lang->about_sample_code = "위 코드를 레이아웃등에 추가하시면 통합검색이 가능합니다";
?>

View file

@ -0,0 +1,36 @@
@charset "utf-8";
/* boardInformation */
.boardInformation { clear:both; margin:1em 0 .5em 0; overflow:hidden; color:#666666;}
.search strong { color:#ff6600;}
.articleNum strong { font:bold 11px Tahoma; color:#ff6600;}
.no_result { text-align:center; padding:3em; border-top:1px solid #EEEEEE; border-bottom:1px solid #EEEEEE;}
/* search_result */
.search_result { margin:1em 0 3em 0; list-style:none; clear:both;}
.search_result .thumbnail { float:left; padding:10px; }
.search_result .thumbnail img { width:100px; height:100px; border:1px solid #555555; }
.search_result .title { margin-bottom:.5em; border-top:1px solid #EEEEEE; padding-top:.5em; }
.search_result .title a { color:#4831F6; font-size:1.2em; font-weight:bold; text-decoration:none; }
.search_result .title a:visited { color:#A59AFD;}
.search_result .replyAndTrackback { font:.8em Tahoma; color:#ff6600; position:relative; top:-.2em;}
.search_result .replyAndTrackback img.trackback { margin-bottom:-.1em;}
.search_result .summary { margin-bottom:.5em; padding-left:2em; }
.search_result .summary a { color:#888888; font-size:1em; text-decoration:none; }
.search_result .summary a:visited { color:#BBBBBB;}
.search_result .summary a:hover { color:#BBBBBB; text-decoration:none;}
.search_result .author { padding-left:2em; float:left; color:#000000; font-size:.9em;}
.search_result .date { padding-left:2em; float:left; color:#888888; font-size:.9em;}
/* pageNavigation */
.pageNavigation { display:block; padding:1.5em 0 2em 0; text-align:center; font:bold .8em Tahoma; border-top:1px solid #EEEEEE; padding-top:.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 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;}
.pageNavigation .current { position:relative; margin-left:-4px; font:bold 1em Tahoma; color:#ff6600; display:inline-block; padding:1px 7px 1px 6px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 B

View file

@ -0,0 +1,63 @@
<!-- 컬러셋 체크 -->
<!--@if($module_info->colorset != "white")-->
{@$module_info->colorset = "white"}
<!--@end-->
<!-- CSS 파일 로드 (컬러셋에 따라서) -->
<!--@if($module_info->colorset == "white")-->
<!--%import("css/white.css")-->
<!--@end-->
<div class="boardInformation">
<div class="fl">
<span class="search">{$lang->search_keyword} : <strong>{$is_keyword}</strong></span>
</div>
<div class="fr">
<span class="articleNum">{$lang->document_count} : <strong>{number_format($total_count)}</strong></span>
</div>
</div>
<!--@if(!$document_list)-->
<!-- 게시물이 없으면 등록된 글이 없음을 표시 -->
<div class="no_result">
{$lang->no_documents}
</div>
<!--@else-->
<!--@foreach($document_list as $no => $document)-->
<ul class="search_result">
<li class="title">
<a href="{getUrl('','document_srl',$document->document_srl)}" onclick="window.open(this.href);return false;">{$document->getTitleText()}</a>
<!--@if($document->getCommentCount())-->
<span class="replyAndTrackback" title="Replies"><img src="./images/{$module_info->colorset}/iconReply.gif" alt="" width="12" height="12" class="icon" /> <strong>{$document->getCommentCount()}</strong></span>
<!--@end-->
<!--@if($document->getTrackbackCount())-->
<span class="replyAndTrackback" title="Trackbacks"><img src="./images/{$module_info->colorset}/iconTrackback.gif" alt="" width="12" height="13" class="trackback icon" /> <strong>{$document->getTrackbackCount()}</strong></span>
<!--@end-->
</li>
<!--@if($document->thumbnailExists(100))-->
<li class="thumbnail"><a href="{getUrl('','document_srl',$document->document_srl)}" onclick="window.open(this.href);return false;"><img src="{$document->getThumbnail(100)}" border="0" alt="" /></a></li>
<!--@end-->
<li class="summary"><a href="{getUrl('','document_srl',$document->document_srl)}" onclick="window.open(this.href);return false;">{$document->getSummary(140)}</a></li>
<li class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></li>
<li class="date">{$document->getRegdate('Y-m-d H:i')}</li>
</ul>
<div class="clear"></div>
<!--@end-->
<!-- 페이지 네비게이션 -->
<div class="pageNavigation">
<a href="{getUrl('page','','document_srl','')}" class="goToFirst"><img src="./images/{$module_info->colorset}/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,'document_srl','')}">{$page_no}</a>
<!--@end-->
<!--@end-->
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="goToLast"><img src="./images/{$module_info->colorset}/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
</div>
<!--@end-->

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<skin>
<title xml:lang="ko">통합 검색 기본 스킨</title>
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 7. 24">
<name xml:lang="ko">제로</name>
<description xml:lang="ko">통합검색 모듈의 기본 스킨</description>
</maker>
<colorset>
<color name="normal" src="screenshot/normal.gif">
<title xml:lang="ko">기본</title>
</color>
</colorset>
<extra_vars>
<var name="memo" type="textarea">
<title xml:lang="ko">설명</title>
<description lang="ko">검색결과 상단에 결과가 출력됩니다.</description>
</var>
</extra_vars>
</skin>

View file

@ -0,0 +1,5 @@
<filter name="insert_config" module="integration_search" act="procIntegration_searchAdminInsertConfig" confirm_msg_code="confirm_submit">
<form />
<parameter />
<response />
</filter>

View file

@ -0,0 +1,14 @@
<!--%import("js/integration_search_admin.js")-->
<h3>{$lang->integration_search} <span class="gray">{$lang->cmd_management}</span></h3>
<div class="header4">
<ul class="localNavigation">
<li <!--@if($act=='dispIntegration_searchAdminContent')-->class="on"<!--@end-->><a href="{getUrl('act','dispIntegration_searchAdminContent')}">{$lang->cmd_setup}</a></li>
<li <!--@if($act=='dispIntegration_searchAdminSkinInfo')-->class="on"<!--@end-->><a href="{getUrl('act','dispIntegration_searchAdminSkinInfo')}">{$lang->cmd_manage_skin}</a></li>
<!--@if($module!='admin')-->
<li><a href="#" onclick="location.href=current_url.setQuery('act','IS'); return false;">{$lang->cmd_back}</a></li>
<!--@end-->
</ul>
</div>

View file

@ -0,0 +1,40 @@
<!--#include("header.html")-->
<!--%import("filter/insert_config.xml")-->
<form action="./" method="get" onsubmit="return procFilter(this, insert_config)">
<table cellspacing="0" class="tableType2">
<col width="150" />
<col />
<tr>
<th scope="row">{$lang->sample_code}</th>
<td>
<textarea class="inputTypeTextArea w400" readonly="readonly">{$sample_code}</textarea>
<p>{$lang->about_sample_code}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->skin}</th>
<td>
<select name="skin">
<!--@foreach($skin_list as $key=>$val)-->
<option value="{$key}" <!--@if($config->skin==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
<p>{$lang->about_skin}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->module}</th>
<td>
<p>{$lang->about_target_module}</p>
<!--@foreach($mid_list as $key => $val)-->
<p><input type="checkbox" name="target_mid" value="{$key}" id="target_mid_{$key}" <!--@if(in_array($key,$config->target_mid))-->checked="checked"<!--@end--> /> <label for="target_mid_{$key}">{$val->browser_title} ({$val->mid})</label></p>
<!--@end-->
</td>
</tr>
</table>
<div class="tRight gap1">
<span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
</div>
</form>

View file

@ -0,0 +1,31 @@
/**
* @file modules/board/js/board_admin.js
* @author zero (zero@nzeo.com)
* @brief integration_search 모듈의 관리자용 javascript
**/
/* 권한 관련 */
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;
}
}

View 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="integration_search" />
<input type="hidden" name="act" value="procIntegration_searchAdminInsertSkin" />
<table cellspacing="0" class="tableType3">
<col width="150" />
<col />
<tr>
<th scope="row" colspan="2">{$lang->skin_default_info}</th>
</tr>
<tr>
<th scope="row">{$lang->skin}</th>
<td class="left" >{$skin_info->title}</td>
</tr>
<tr>
<th scope="row">{$lang->skin_maker}</th>
<td class="left" >{$skin_info->maker->name} <!--@if($skin_info->maker->email_address)-->(<a href="mailto:{$skin_info->maker->email_address}">{$skin_info->maker->email_address}</a>)<!--@end--></td>
</tr>
<tr>
<th scope="row">{$lang->skin_maker_homepage}</th>
<td class="left" ><a href="{$skin_info->maker->homepage}" target="_blank">{$skin_info->maker->homepage}</a></td>
</tr>
<tr>
<th scope="row">{$lang->date}</th>
<td class="left" >{$skin_info->maker->date}</td>
</tr>
<tr>
<th scope="row">{$lang->description}</th>
<td class="left" >{nl2br($skin_info->maker->description)}</td>
</tr>
</table>
<table cellspacing="0" class="tableType3">
<col width="150" />
<col />
<tr>
<th scope="row" colspan="2">{$lang->extra_vars}</th>
</tr>
<tr valign="top">
<th scope="row">{$lang->colorset}</th>
<td class="left" >
<!--@foreach($skin_info->colorset as $key => $val)-->
<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($skin_vars->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-->
</table>
<div class="tRight gap1">
<span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
</div>
</form>
<iframe name="hidden_iframe" frameborder="0" style="display:none"></iframe>