mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-06 18:21:39 +09:00
gagachat 위젯 추가
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3430 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
16fc3c7820
commit
17b54d6cdc
8 changed files with 365 additions and 0 deletions
79
widgets/gagachat/conf/info.xml
Normal file
79
widgets/gagachat/conf/info.xml
Normal 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>
|
||||
105
widgets/gagachat/gagachat.class.php
Normal file
105
widgets/gagachat/gagachat.class.php
Normal 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);
|
||||
}
|
||||
}
|
||||
?>
|
||||
126
widgets/gagachat/skins/default/js/AC_RunActiveContent.js
Normal file
126
widgets/gagachat/skins/default/js/AC_RunActiveContent.js
Normal 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;
|
||||
}
|
||||
9
widgets/gagachat/skins/default/livechat.000.html
Normal file
9
widgets/gagachat/skins/default/livechat.000.html
Normal 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 />
|
||||
12
widgets/gagachat/skins/default/livechat.html
Normal file
12
widgets/gagachat/skins/default/livechat.html
Normal 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 />
|
||||
9
widgets/gagachat/skins/default/livechat2.000.html
Normal file
9
widgets/gagachat/skins/default/livechat2.000.html
Normal 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 />
|
||||
12
widgets/gagachat/skins/default/livechat2.html
Normal file
12
widgets/gagachat/skins/default/livechat2.html
Normal 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 />
|
||||
13
widgets/gagachat/skins/default/skin.xml
Normal file
13
widgets/gagachat/skins/default/skin.xml
Normal 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>
|
||||
Loading…
Add table
Add a link
Reference in a new issue