gagachat 위젯 추가

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3430 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2007-12-28 05:53:45 +00:00
parent 16fc3c7820
commit 17b54d6cdc
8 changed files with 365 additions and 0 deletions

View file

@ -0,0 +1,79 @@
<?xml version="2.0" encoding="utf-8"?>
<widget version="2.0">
<title xml:lang="ko">가가 채팅</title>
<author email_address="digirave@kmle.com" link="http://www.gagalive.kr" date="2007. 12. 16">
<name xml:lang="ko">디지레이브</name>
<description xml:lang="ko">실시간 채팅방을 생성합니다</description>
</author>
<extra_vars>
<var id="chatroom">
<name xml:lang="ko">채팅방 이름(필수/영문)</name>
<type>text</type>
<description xml:lang="ko">채팅방 이름.
(@, @@, @@@ 로 시작하는 채팅방은 회원 시스템과 연동 가능한 보안 채팅방)
보안 채팅방은 http://www.gagalive.kr/live/livechatxe 에서 신청하시길 바랍니다.
회원 시스템과 연동하지 않을 경우 별도의 신청 필요 없이 원하는 채팅방 이름만 입력하면 됩니다.
</description>
</var>
<var id="roomkey">
<name xml:lang="ko">채팅방 보안 키(선택사항)</name>
<type>text</type>
<description xml:lang="ko">보안 채팅방 사용시에만 필요함. 보안 채팅방을 사용하지 않을 경우에는 빈 칸으로 놔두시길 바랍니다.</description>
</var>
<var id="gagaadmin">
<name xml:lang="ko">채팅방 관리자(선택사항)</name>
<type>text</type>
<description xml:lang="ko">보안 채팅방 사용시에만 적용됨. 강제 퇴장 기능 가능함. 아이디, 아이디2, 아이디3 처럼 채팅방 관리자들을 , 로 분리하시길 바랍니다.</description>
</var>
<var id="gposition">
<name xml:lang="ko">채팅방 형태</name>
<type>select</type>
<description xml:lang="ko">세로형/가로형</description>
<options>
<name xml:lang="ko">세로형</name>
<value>2</value>
</options>
<options>
<name xml:lang="ko">가로형</name>
<value>1</value>
</options>
</var>
<var id="gheight">
<name xml:lang="ko">채팅방 높이(선택사항)</name>
<type>text</type>
<description xml:lang="ko">채팅방 높이(기본값 450)</description>
</var>
<var id="gfonttype">
<name xml:lang="ko">글씨체(선택사항)</name>
<type>text</type>
<description xml:lang="ko">Font-family 예) 굴림체</description>
</var>
<var id="gfontcolor">
<name xml:lang="ko">글씨 색깔(선택사항)</name>
<type>text</type>
<description xml:lang="ko"> 채팅방 글씨 색깔 예) white 또는 #FFFFFF</description>
</var>
<var id="gbgcolor">
<name xml:lang="ko">배경 색깔(선택사항)</name>
<type>text</type>
<description xml:lang="ko"> 채팅방 배경 색깔 예) black 또는 #000000</description>
</var>
<var id="fontlarge">
<name xml:lang="ko">큰 글씨체</name>
<type>select</type>
<description xml:lang="ko">글씨체 크기</description>
<options>
<name xml:lang="ko">작은 글씨체</name>
<value>small</value>
</options>
<options>
<name xml:lang="ko">중간 글씨체</name>
<value>medium</value>
</options>
<options>
<name xml:lang="ko">큰 글씨체</name>
<value>large</value>
</options>
</var>
</extra_vars>
</widget>

View file

@ -0,0 +1,105 @@
<?php
/**
* @class livechat_info
* @author digirave (digirave@kmle.com)
* @version 1.31
* @brief 라이브 대화방(LiveChat)
*
*
**/
class gagachat extends WidgetHandler {
/**
* @brief 위젯의 실행 부분
* ./widgets/위젯/conf/info.xml에 선언한 extra_vars를 args로 받는다
* 결과를 만든후 print가 아니라 return 해주어야 한다
**/
function proc($args) {
// 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)
$tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin);
Context::set('colorset', $args->colorset);
/*
$name = getenv("HTTP_HOST") . getenv("SCRIPT_NAME");
$name = preg_replace("/^http:\/\//", "" ,$name);
$name = preg_replace("/(.+)\/.+?$/", "$1" ,$name);
*/
$name = $args->chatroom;
$roomkey = $args->roomkey;
$gposition = $args->gposition;
$gfonttype = $args->gfonttype;
$gfontcolor = $args->gfontcolor;
$gbgcolor = $args->gbgcolor;
if(strlen($args->gheight) > 2) {
$gheight = $args->gheight;
}
else {
$gheight = 450;
}
$fontlarge = $args->fontlarge;
$gagaadmin = $args->gagaadmin;
$gagaadmin = preg_replace('/\s*,\s*/', ',', $gagaadmin);
$gagaadmins = split(',', $gagaadmin);
$fixbug = 0;
$vars = Context::getRequestVars();
if($vars->act == "dispPageAdminContentModify") {
$fixbug = 15;
}
Context::set('fixbug', $fixbug);
Context::set('gheight', $gheight);
Context::set('gposition', $gposition);
Context::set('fontlarge', $fontlarge);
Context::set('gfonttype', $gfonttype);
Context::set('gfontcolor', $gfontcolor);
Context::set('gbgcolor', $gbgcolor);
Context::set('name', $name);
$tpl_file = 'livechat';
if(substr($name, 0, 1) == "#" || substr($name, 0, 1) == "@") {
if(Context::get('is_logged')) {
$oModuleModel = &getModel('module');
$this->member_config = $oModuleModel->getModuleConfig('member');
$logged_info = Context::get('logged_info');
//Context::set('member_config', $this->member_config);
Context::set('user', $logged_info->nick_name);
Context::set('userkey', userKey($logged_info->nick_name, $roomkey));
foreach($gagaadmins as $value) {
if($logged_info->user_id == $value) {
//일반 유저인 경우
Context::set('userkey', md5(userKey($logged_info->nick_name, $roomkey)));
} //관리자인 경우
}
$tpl_file = 'livechat2';
}
}
// 템플릿 파일을 지정
/*
if(Context::get('is_logged')) $tpl_file = 'login_info';
else $tpl_file = 'login_form';
// 회원 관리 정보를 받음
$oModuleModel = &getModel('module');
$this->member_config = $oModuleModel->getModuleConfig('member');
Context::set('member_config', $this->member_config);
*/
// 템플릿 컴파일
$oTemplate = &TemplateHandler::getInstance();
return $oTemplate->compile($tpl_path, $tpl_file);
}
}
if($GLOBALS['userKeyDefined'] != 1) {
$GLOBALS['userKeyDefined'] = 1;
function userKey($user, $roomKey) {
return md5(md5($user . $roomKey) . $roomKey);
}
}
?>

View file

@ -0,0 +1,126 @@
//v1.0
//Copyright 2006 Adobe Systems, Inc. All rights reserved.
function AC_AddExtension(src, ext)
{
if (src.indexOf('?') != -1)
return src.replace(/\?/, ext+'?');
else
return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs)
{
var str = '<object ';
for (var i in objAttrs)
str += i + '="' + objAttrs[i] + '" ';
str += '>';
for (var i in params)
str += '<param name="' + i + '" value="' + params[i] + '" /> ';
str += '<embed ';
for (var i in embedAttrs)
str += i + '="' + embedAttrs[i] + '" ';
str += ' ></embed></object>';
document.write(str);
}
function AC_FL_RunContent(){
var ret =
AC_GetArgs
( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
, "application/x-shockwave-flash"
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_SW_RunContent(){
var ret =
AC_GetArgs
( arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
, null
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
var ret = new Object();
ret.embedAttrs = new Object();
ret.params = new Object();
ret.objAttrs = new Object();
for (var i=0; i < args.length; i=i+2){
var currArg = args[i].toLowerCase();
switch (currArg){
case "classid":
break;
case "pluginspage":
ret.embedAttrs[args[i]] = args[i+1];
break;
case "src":
case "movie":
args[i+1] = AC_AddExtension(args[i+1], ext);
ret.embedAttrs["src"] = args[i+1];
ret.params[srcParamName] = args[i+1];
break;
case "onafterupdate":
case "onbeforeupdate":
case "onblur":
case "oncellchange":
case "onclick":
case "ondblClick":
case "ondrag":
case "ondragend":
case "ondragenter":
case "ondragleave":
case "ondragover":
case "ondrop":
case "onfinish":
case "onfocus":
case "onhelp":
case "onmousedown":
case "onmouseup":
case "onmouseover":
case "onmousemove":
case "onmouseout":
case "onkeypress":
case "onkeydown":
case "onkeyup":
case "onload":
case "onlosecapture":
case "onpropertychange":
case "onreadystatechange":
case "onrowsdelete":
case "onrowenter":
case "onrowexit":
case "onrowsinserted":
case "onstart":
case "onscroll":
case "onbeforeeditfocus":
case "onactivate":
case "onbeforedeactivate":
case "ondeactivate":
case "type":
case "codebase":
ret.objAttrs[args[i]] = args[i+1];
break;
case "width":
case "height":
case "align":
case "vspace":
case "hspace":
case "class":
case "title":
case "accesskey":
case "name":
case "id":
case "tabindex":
ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
break;
default:
ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
}
}
ret.objAttrs["classid"] = classid;
if (mimeType) ret.embedAttrs["type"] = mimeType;
return ret;
}

View file

@ -0,0 +1,9 @@
<!-- colorset의 값에 따라 css 파일을 import 한다 -->
<!--@if($colorset=="default"||!$colorset)-->
<!--%import("css/default.css")-->
<!--@end-->
<script type="text/javascript">
displayMultimedia("http://www.gagalive.kr/livechat1.swf?position={$gposition}&fonttype={$gfonttype}&fontcolor={$gfontcolor}&bgcolor={$gbgcolor}&chatroom={$name}", "100%", {$gheight});
</script>
<br />

View file

@ -0,0 +1,12 @@
<!--%import("./js/AC_RunActiveContent.js")-->
<div class="box_livechat fc_01" style="margin-top:{$fixbug}px;" >
<script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0','width','100%','height',"{$gheight}",'title','가가라이브 대화방','src','http://www.gagalive.kr/livechat1?position={$gposition}&fonttype={$gfonttype}&fontcolor={$gfontcolor}&bgcolor={$gbgcolor}&chatroom={$name}','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','http://www.gagalive.kr/livechat1?position={$gposition}&fonttype={$gfonttype}&fontcolor={$gfontcolor}&bgcolor={$gbgcolor}&chatroom={$name}' ); //end AC code
</script><noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="100%" height="{$gheight}" title="가가라이브 대화방">
<param name="movie" value="http://www.gagalive.kr/livechat1.swf?position={$gposition}&fonttype={$gfonttype}&fontcolor={$gfontcolor}&bgcolor={$gbgcolor}&chatroom={$name}">
<param name="quality" value="high">
<embed src="http://www.gagalive.kr/livechat1.swf?position={$gposition}&fonttype={$gfonttype}&fontcolor={$gfontcolor}&bgcolor={$gbgcolor}&chatroom={$name}" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="100%" height="{$gheight}"></embed>
</object></noscript>
</div>
<br />

View file

@ -0,0 +1,9 @@
<!-- colorset의 값에 따라 css 파일을 import 한다 -->
<!--@if($colorset=="default"||!$colorset)-->
<!--%import("css/default.css")-->
<!--@end-->
<script type="text/javascript">
displayMultimedia("http://www.gagalive.kr/livechat1.swf?position={$gposition}&fonttype={$gfonttype}&fontcolor={$gfontcolor}&bgcolor={$gbgcolor}&chatroom={$name}&user={$user}&encrypt={$userkey}&fontlarge={$fontlarge}", "100%", {$gheight});
</script>
<br />

View file

@ -0,0 +1,12 @@
<!--%import("./js/AC_RunActiveContent.js")-->
<div class="box_livechat fc_01" style="margin-top:{$fixbug}px;" >
<script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0','width','100%','height',"{$gheight}",'title','가가라이브 대화방','src','http://www.gagalive.kr/livechat1?position={$gposition}&fonttype={$gfonttype}&fontcolor={$gfontcolor}&bgcolor={$gbgcolor}&chatroom={$name}&user={$user}&encrypt={$userkey}&fontlarge={$fontlarge}','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','http://www.gagalive.kr/livechat1?position={$gposition}&fonttype={$gfonttype}&fontcolor={$gfontcolor}&bgcolor={$gbgcolor}&chatroom={$name}&user={$user}&encrypt={$userkey}&fontlarge={$fontlarge}' ); //end AC code
</script><noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="100%" height="{$gheight}" title="가가라이브 대화방">
<param name="movie" value="http://www.gagalive.kr/livechat1.swf?position={$gposition}&fonttype={$gfonttype}&fontcolor={$gfontcolor}&bgcolor={$gbgcolor}&chatroom={$name}&user={$user}&encrypt={$userkey}&fontlarge={$fontlarge}">
<param name="quality" value="high">
<embed src="http://www.gagalive.kr/livechat1.swf?position={$gposition}&fonttype={$gfonttype}&fontcolor={$gfontcolor}&bgcolor={$gbgcolor}&chatroom={$name}&user={$user}&encrypt={$userkey}&fontlarge={$fontlarge}" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="100%" height="{$gheight}"></embed>
</object></noscript>
</div>
<br />

View file

@ -0,0 +1,13 @@
<?xml version="2.0" encoding="utf-8"?>
<skin>
<title xml:lang="ko">가가 채팅 기본 스킨 </title>
<maker email_address="digirave@kmle.com" link="http://www.gagalive.kr" date="2007. 7. 1">
<name xml:lang="ko">디지레이브</name>
<description xml:lang="ko">newest_document의 기본 스킨</description>
</maker>
<colorset>
<color name="default">
<title xml:lang="ko">기본</title>
</color>
</colorset>
</skin>