MSN 메신저형 새쪽지 확인용 알림창 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

MSN 메신저형 새쪽지 확인용 알림창 정보

MSN 메신저형 새쪽지 확인용 알림창

첨부파일

msn_img_memo.zip (55.9K) 432회 다운로드 2006-01-03 20:03:56

본문

MSN 메신저형 쪽지기능?  제목을 뭐라고 해야할지 햇갈려서 이렇게 합니다.^^
G4를 설치하여 테스트중인 사이트에서 새로운 쪽지가왔을 경우 사용중인 MSN 메신저형 알림창 이며
이쁜 여비서가 항상 대기하고 있으면서 새로운 쪽지가 오면 상냥한 목소리로 안내까지 합니다.

이알림창은 제로보드 회원이신 알릭님이 공개하여 제로보드 사용자분들이
사용중인 것이며 그누보드용으로 개조 시켜본 것이며 FF(불여우) 에서도 정상작동 하며
단 한분이라도 사용하실분이 계실지 모르지만 올려 봅니다.


MSN 메신저형 알림창 만들기 작업시작

1,
첨부한 파일 안의 배경이미지 msg_back.png 와 목소리용 플레시 파일인 memo_on.swf 를
G4/bbs/img/ 안으로 업로드 합니다.

2,
g4/head.sub.php 의 내용중 상단부분의 아래의 코드를 주석처리를 해둡니다.

 /*
// 쪽지를 받았나?
if ($member[mb_memo_call]) {
    $mb = get_member($member[mb_memo_call], "mb_nick");
    sql_query(" update {$g4[member_table]} set mb_memo_call = '' where mb_id = '$member[mb_id]' ");

    alert($mb[mb_nick]."님으로부터 쪽지가 전달되었습니다.", $_SERVER[REQUEST_URI]);
}
*/


3,
위코드를 주석처리를 한후 마지막 끝에 아래의 코드를 추가합니다.

 <?   
// 레이어로 쪽지창 표시 시작
if($member[mb_memo_call]) {
echo " <embed src='$g4[bbs_path]/img/memo_on.swf' loop='false' width='1' height='1'></embed>";
$run = "<script language=\"JavaScript\">do_check ();msn_position();</script>";
}
else {
$run = "";
}
?>

<!--  레이어로 쪽지창 표시 시작 -->
<script language="JavaScript1.2">
 var msn_closed    = true;
 var msn_top = 0;
 var msn_left = 0;
 var msn_divheight = 165;
 var msn_divwidth  = 204;
function do_check () {
 msn_closed    = false;
}
function msn_position() {
 if(!msn_closed) {
  msn_top = document.body.scrollTop + document.body.clientHeight - msn_divheight;
  msn_left = document.body.clientWidth - msn_divwidth;
  document.all.kissme.style.top = msn_top;
  document.all.kissme.style.left = msn_left;
  document.all.kissme.style.display = "";
    }
  }
 var old_ResizeHandler = window.onresize;
  window.onresize = new Function("{if (old_ResizeHandler != null) old_ResizeHandler(); msn_position();}");
 var old_ScrollHandler = window.onscroll;
  window.onscroll = new Function("{if (old_ScrollHandler != null) old_ScrollHandler(); msn_position();}");
function hideLayer(layer) {
  if(document.layers) {
  layer = eval('document.layers.' + layer);
  if(layer.display != 'none') layer.display = 'none';
    else layer.display = '';
    return;
    }
  layer = document.all[layer];
  if(layer.style.display != 'none') {
  layer.style.display='none';
    }
  else {
  layer.style.display='';
    }
msn_closed = true;
}
</script>
<div id="kissme" name="kissme" style="position:absolute; overflow: hidden; top:10; left:10; z-index: 999999; display: none; width:203; height:165; layer-background-color:rgb(255,204,255);">
 <table width="200" height="160" align="center" border="0" cellspacing="0" cellpadding="0" background="<?=$g4[bbs_path]?>/img/msg_back.png">
<tr>
<td align=left height=20>
  <font color="black"><?=$img_icon?> &nbsp; ::: 쪽지알림 :::</font>
</td>
<td align=center>
<a href='.javascript;' title='닫기' onclick='hideLayer("kissme")'><b>  </b></button></a>     
</td></tr>
<tr>
<td colspan=2 align=center>
<br><b><?=$member[mb_name]?></b> 님께<br><br>쪽지가 도착했습니다.<br>확인 하시겠습니까?<br><br>
<button style="border: 1px solid #93ACCF" onclick="window.open('<?=$g4[bbs_path]?>/memo.php','member_memo','width=610,height=460,status=no,toolbar=no,resizable=yes,scrollbars=yes');hideLayer('kissme');">메모열기</button> &nbsp;&nbsp; <button style="border: 1px solid #93ACCF" onclick='hideLayer("kissme")'> 창닫기 </button><br>
<br>
</td></tr>
</table>
</div>
<?=$run?>

<?
// 쪽지를 받았나?
if ($member[mb_memo_call]) {
    $mb = get_member($member[mb_memo_call], "mb_nick");
    sql_query(" update {$g4[member_table]} set mb_memo_call = '' where mb_id = '$member[mb_id]' ");
  // alert($mb[mb_nick]."님으로부터 쪽지가 전달되었습니다.", $_SERVER[REQUEST_URI]);
}
?>
추천
10

댓글 21개

저두 응용만하여 짜집기 한것뿐입니다.^^
그누정신 // 플록님이 디자인과 코드수정을 샴푸걸 님이 디자인을 깔끔하게 만드신게 있으므로 참고 하세요.
http://avaschool.net/web/sub_data/board.php?bo_table=forum
너무 좋습니다.
그런데

<!--  레이어로 쪽지창 표시 시작 -->
<script language="JavaScript1.2">

상단 수정부분에서 수정하고 나면 에러가 뜨네요.
왠지 모르겠습니다.

상세한 설명을 부탁드립니다.

하다가 안되어서 멈추고 있는 순간입니다.
에러가 뜰경우 수정하면서 주석처리 부분 및 코드추가시 실수한 부분이 있는지 확인해 보세요.
그리고 가능하면 에러의 내용이라도 알려주시면 원인 파악이 쉽게 됩니다.
홈피 주소 : www.wando.info 입니다.
g4 변수라고 하면서 메세지가 뜹니다.

확인 한번 해 주시고 해결 좀 해 주세요.

head.sub.php 소스입니다.


<?
// 이 파일은 새로운 파일 생성시 반드시 포함되어야 함
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

$begin_time = get_microtime();

if (!$g4[title])
    $g4[title] = $config[cf_title];
/*
// 쪽지를 받았나?
if ($member[mb_memo_call]) {
    $mb = get_member($member[mb_memo_call], "mb_nick");
    sql_query(" update {$g4[member_table]} set mb_memo_call = '' where mb_id = '$member[mb_id]' ");

    alert($mb[mb_nick]."님으로부터 쪽지가 전달되었습니다.", $_SERVER[REQUEST_URI]);
}
*/
 <?   
// 레이어로 쪽지창 표시 시작
if($member[mb_memo_call]) {
echo " <embed src='$g4[bbs_path]/img/memo_on.swf' loop='false' width='1' height='1'></embed>";
$run = "<script language=\"JavaScript\">do_check ();msn_position();</script>";
}
else {
$run = "";
}
?>

<!--  레이어로 쪽지창 표시 시작 -->
<script language="JavaScript1.2">
 var msn_closed    = true;
 var msn_top = 0;
 var msn_left = 0;
 var msn_divheight = 165;
 var msn_divwidth  = 204;
function do_check () {
 msn_closed    = false;
}
function msn_position() {
 if(!msn_closed) {
  msn_top = document.body.scrollTop + document.body.clientHeight - msn_divheight;
  msn_left = document.body.clientWidth - msn_divwidth;
  document.all.kissme.style.top = msn_top;
  document.all.kissme.style.left = msn_left;
  document.all.kissme.style.display = "";
    }
  }
 var old_ResizeHandler = window.onresize;
  window.onresize = new Function("{if (old_ResizeHandler != null) old_ResizeHandler(); msn_position();}");
 var old_ScrollHandler = window.onscroll;
  window.onscroll = new Function("{if (old_ScrollHandler != null) old_ScrollHandler(); msn_position();}");
function hideLayer(layer) {
  if(document.layers) {
  layer = eval('document.layers.' + layer);
  if(layer.display != 'none') layer.display = 'none';
    else layer.display = '';
    return;
    }
  layer = document.all[layer];
  if(layer.style.display != 'none') {
  layer.style.display='none';
    }
  else {
  layer.style.display='';
    }
msn_closed = true;
}
</script>
<div id="kissme" name="kissme" style="position:absolute; overflow: hidden; top:10; left:10; z-index: 999999; display: none; width:203; height:165; layer-background-color:rgb(255,204,255);">
 <table width="200" height="160" align="center" border="0" cellspacing="0" cellpadding="0" background="<?=$g4[bbs_path]?>/img/msg_back.png">
<tr>
<td align=left height=20>
  <font color="black"><?=$img_icon?> &nbsp; ::: 쪽지알림 :::</font>
</td>
<td align=center>
<a href='.javascript;' title='닫기' onclick='hideLayer("kissme")'><b>  </b></button></a>     
</td></tr>
<tr>
<td colspan=2 align=center>
<br><b><?=$member[mb_name]?></b> 님께<br><br>쪽지가 도착했습니다.<br>확인 하시겠습니까?<br><br>
<button style="border: 1px solid #93ACCF" onclick="window.open('<?=$g4[bbs_path]?>/memo.php','member_memo','width=610,height=460,status=no,toolbar=no,resizable=yes,scrollbars=yes');hideLayer('kissme');">메모열기</button> &nbsp;&nbsp; <button style="border: 1px solid #93ACCF" onclick='hideLayer("kissme")'> 창닫기 </button><br>
<br>
</td></tr>
</table>
</div>
<?=$run?>

<?
// 쪽지를 받았나?
if ($member[mb_memo_call]) {
    $mb = get_member($member[mb_memo_call], "mb_nick");
    sql_query(" update {$g4[member_table]} set mb_memo_call = '' where mb_id = '$member[mb_id]' ");
  // alert($mb[mb_nick]."님으로부터 쪽지가 전달되었습니다.", $_SERVER[REQUEST_URI]);
}
?>

// 현재 접속자
//$lo_location = get_text($g4[title]);
//$lo_location = $g4[title];
// 게시판 제목에 ' 포함되면 오류 발생
$lo_location = addslashes($g4[title]);
if (!$lo_location)
    $lo_location = $_SERVER[REQUEST_URI];
//$lo_url = $g4[url] . $_SERVER[REQUEST_URI];
$lo_url = $_SERVER[REQUEST_URI];
if (strstr($lo_url, "/$g4[admin]/") || $is_admin == "super") $lo_url = "";

$tmp_sql = " select count(*) as cnt from $g4[login_table] where lo_ip = '$_SERVER[REMOTE_ADDR]' ";
$tmp_row = sql_fetch($tmp_sql);
sql_query(" lock table $g4[login_table] write ", false);
if ($tmp_row['cnt'])
{
$tmp_sql = " update $g4[login_table] set mb_id = '$member[mb_id]', lo_datetime = '$g4[time_ymdhis]', lo_location = '$lo_location', lo_url = '$lo_url' where lo_ip = '$_SERVER[REMOTE_ADDR]' ";
sql_query($tmp_sql, FALSE);
}
else
{
$tmp_sql = " insert into $g4[login_table] ( lo_ip, mb_id, lo_datetime, lo_location, lo_url ) values ( '$_SERVER[REMOTE_ADDR]', '$member[mb_id]', '$g4[time_ymdhis]', '$lo_location',  '$lo_url' ) ";
sql_query($tmp_sql, FALSE);

// 시간이 지난 접속은 삭제한다
sql_query(" delete from $g4[login_table] where lo_datetime < '".date("Y-m-d H:i:s", $g4[server_time] - (60 * $config[cf_login_minutes]))."' ");

// 부담(overhead)이 있다면 테이블 최적화
$row = sql_fetch(" SHOW TABLE STATUS FROM `$mysql_db` LIKE '$g4[login_table]' ");
if ($row['Data_free'] > 0) sql_query(" OPTIMIZE TABLE $g4[login_table] ");
}
sql_query(" unlock tables ", false);


// 자바스크립트에서 go(-1) 함수를 쓰면 폼값이 사라질때 해당 폼의 상단에 사용하면
// 캐쉬의 내용을 가져옴. 완전한지는 검증되지 않음
header("Content-Type: text/html; charset=$g4[charset]");
$gmnow = gmdate("D, d M Y H:i:s") . " GMT";
header("Expires: 0"); // rfc2616 - Section 14.21
header("Last-Modified: " . $gmnow);
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: pre-check=0, post-check=0, max-age=0"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=<?=$g4[charset]?>">
<title><?=$g4[title]?></title>
<link rel="stylesheet" href="<?=$g4[path]?>/style.css" type="text/css">
</head>
<script language="javascript">
// 자바스크립트에서 사용하는 전역변수 선언
var g4_path      = "<?=$g4[path]?>";
var g4_bbs      = "<?=$g4[bbs]?>";
var g4_bbs_img  = "<?=$g4[bbs_img]?>";
var g4_url      = "<?=$g4[url]?>";
var g4_is_member = "<?=$is_member?>";
var g4_is_admin  = "<?=$is_admin?>";
var g4_bo_table  = "<?=$bo_table?>";
var g4_sca      = "<?=$sca?>";
var g4_charset  = "<?=$g4[charset]?>";
var g4_is_gecko  = navigator.userAgent.toLowerCase().indexOf("gecko") != -1;
var g4_is_ie    = navigator.userAgent.toLowerCase().indexOf("msie") != -1;
<? if ($is_admin) { echo "var g4_admin = '$g4[admin]';"; } ?>
</script>
<script language="javascript" src="<?=$g4[path]?>/js/common.js"></script>
<body topmargin="0" leftmargin="0" <?=$g4[body_script]?>>
<a name="g4_head"></a>
아래처럼 수정해 주세요.

<?
// 이 파일은 새로운 파일 생성시 반드시 포함되어야 함
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

$begin_time = get_microtime();

if (!$g4[title])
    $g4[title] = $config[cf_title];
/*
// 쪽지를 받았나?
if ($member[mb_memo_call]) {
    $mb = get_member($member[mb_memo_call], "mb_nick");
    sql_query(" update {$g4[member_table]} set mb_memo_call = '' where mb_id = '$member[mb_id]' ");

    alert($mb[mb_nick]."님으로부터 쪽지가 전달되었습니다.", $_SERVER[REQUEST_URI]);
}
*/
 
// 현재 접속자
//$lo_location = get_text($g4[title]);
//$lo_location = $g4[title];
// 게시판 제목에 ' 포함되면 오류 발생
$lo_location = addslashes($g4[title]);
if (!$lo_location)
    $lo_location = $_SERVER[REQUEST_URI];
//$lo_url = $g4[url] . $_SERVER[REQUEST_URI];
$lo_url = $_SERVER[REQUEST_URI];
if (strstr($lo_url, "/$g4[admin]/") || $is_admin == "super") $lo_url = "";

$tmp_sql = " select count(*) as cnt from $g4[login_table] where lo_ip = '$_SERVER[REMOTE_ADDR]' ";
$tmp_row = sql_fetch($tmp_sql);
sql_query(" lock table $g4[login_table] write ", false);
if ($tmp_row['cnt'])
{
$tmp_sql = " update $g4[login_table] set mb_id = '$member[mb_id]', lo_datetime = '$g4[time_ymdhis]', lo_location = '$lo_location', lo_url = '$lo_url' where lo_ip = '$_SERVER[REMOTE_ADDR]' ";
sql_query($tmp_sql, FALSE);
}
else
{
$tmp_sql = " insert into $g4[login_table] ( lo_ip, mb_id, lo_datetime, lo_location, lo_url ) values ( '$_SERVER[REMOTE_ADDR]', '$member[mb_id]', '$g4[time_ymdhis]', '$lo_location',  '$lo_url' ) ";
sql_query($tmp_sql, FALSE);

// 시간이 지난 접속은 삭제한다
sql_query(" delete from $g4[login_table] where lo_datetime < '".date("Y-m-d H:i:s", $g4[server_time] - (60 * $config[cf_login_minutes]))."' ");

// 부담(overhead)이 있다면 테이블 최적화
$row = sql_fetch(" SHOW TABLE STATUS FROM `$mysql_db` LIKE '$g4[login_table]' ");
if ($row['Data_free'] > 0) sql_query(" OPTIMIZE TABLE $g4[login_table] ");
}
sql_query(" unlock tables ", false);


// 자바스크립트에서 go(-1) 함수를 쓰면 폼값이 사라질때 해당 폼의 상단에 사용하면
// 캐쉬의 내용을 가져옴. 완전한지는 검증되지 않음
header("Content-Type: text/html; charset=$g4[charset]");
$gmnow = gmdate("D, d M Y H:i:s") . " GMT";
header("Expires: 0"); // rfc2616 - Section 14.21
header("Last-Modified: " . $gmnow);
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: pre-check=0, post-check=0, max-age=0"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=<?=$g4[charset]?>">
<title><?=$g4[title]?></title>
<link rel="stylesheet" href="<?=$g4[path]?>/style.css" type="text/css">
</head>
<script language="javascript">
// 자바스크립트에서 사용하는 전역변수 선언
var g4_path      = "<?=$g4[path]?>";
var g4_bbs      = "<?=$g4[bbs]?>";
var g4_bbs_img  = "<?=$g4[bbs_img]?>";
var g4_url      = "<?=$g4[url]?>";
var g4_is_member = "<?=$is_member?>";
var g4_is_admin  = "<?=$is_admin?>";
var g4_bo_table  = "<?=$bo_table?>";
var g4_sca      = "<?=$sca?>";
var g4_charset  = "<?=$g4[charset]?>";
var g4_is_gecko  = navigator.userAgent.toLowerCase().indexOf("gecko") != -1;
var g4_is_ie    = navigator.userAgent.toLowerCase().indexOf("msie") != -1;
<? if ($is_admin) { echo "var g4_admin = '$g4[admin]';"; } ?>
</script>
<script language="javascript" src="<?=$g4[path]?>/js/common.js"></script>
<body topmargin="0" leftmargin="0" <?=$g4[body_script]?>>
<a name="g4_head"></a>

<?   
// 레이어로 쪽지창 표시 시작
if($member[mb_memo_call]) {
echo " <embed src='$g4[bbs_path]/img/memo_on.swf' loop='false' width='1' height='1'></embed>";
$run = "<script language=\"JavaScript\">do_check ();msn_position();</script>";
}
else {
$run = "";
}
?>

<!--  레이어로 쪽지창 표시 시작 -->
<script language="JavaScript1.2">
 var msn_closed    = true;
 var msn_top = 0;
 var msn_left = 0;
 var msn_divheight = 165;
 var msn_divwidth  = 204;
function do_check () {
 msn_closed    = false;
}
function msn_position() {
 if(!msn_closed) {
  msn_top = document.body.scrollTop + document.body.clientHeight - msn_divheight;
  msn_left = document.body.clientWidth - msn_divwidth;
  document.all.kissme.style.top = msn_top;
  document.all.kissme.style.left = msn_left;
  document.all.kissme.style.display = "";
    }
  }
 var old_ResizeHandler = window.onresize;
  window.onresize = new Function("{if (old_ResizeHandler != null) old_ResizeHandler(); msn_position();}");
 var old_ScrollHandler = window.onscroll;
  window.onscroll = new Function("{if (old_ScrollHandler != null) old_ScrollHandler(); msn_position();}");
function hideLayer(layer) {
  if(document.layers) {
  layer = eval('document.layers.' + layer);
  if(layer.display != 'none') layer.display = 'none';
    else layer.display = '';
    return;
    }
  layer = document.all[layer];
  if(layer.style.display != 'none') {
  layer.style.display='none';
    }
  else {
  layer.style.display='';
    }
msn_closed = true;
}
</script>
<div id="kissme" name="kissme" style="position:absolute; overflow: hidden; top:10; left:10; z-index: 999999; display: none; width:203; height:165; layer-background-color:rgb(255,204,255);">
 <table width="200" height="160" align="center" border="0" cellspacing="0" cellpadding="0" background="<?=$g4[bbs_path]?>/img/msg_back.png">
<tr>
<td align=left height=20>
  <font color="black"><?=$img_icon?> &nbsp; ::: 쪽지알림 :::</font>
</td>
<td align=center>
<a href='.javascript;' title='닫기' onclick='hideLayer("kissme")'><b>  </b></button></a>     
</td></tr>
<tr>
<td colspan=2 align=center>
<br><b><?=$member[mb_name]?></b> 님께<br><br>쪽지가 도착했습니다.<br>확인 하시겠습니까?<br><br>
<button style="border: 1px solid #93ACCF" onclick="window.open('<?=$g4[bbs_path]?>/memo.php','member_memo','width=610,height=460,status=no,toolbar=no,resizable=yes,scrollbars=yes');hideLayer('kissme');">메모열기</button> &nbsp;&nbsp; <button style="border: 1px solid #93ACCF" onclick='hideLayer("kissme")'> 창닫기 </button><br>
<br>
</td></tr>
</table>
</div>
<?=$run?>

<?
// 쪽지를 받았나?
if ($member[mb_memo_call]) {
    $mb = get_member($member[mb_memo_call], "mb_nick");
    sql_query(" update {$g4[member_table]} set mb_memo_call = '' where mb_id = '$member[mb_id]' ");
  // alert($mb[mb_nick]."님으로부터 쪽지가 전달되었습니다.", $_SERVER[REQUEST_URI]);
}
?>
너무 감사합니다.

너무 너무 좋습니다.

그런데 알림창이 맨우측하단에 약간 가리우네요.
가운데로 올 수 있으면 좋겠는데
목소리도 짱입니다.

너무 고마워요
창 수정방법만 알려 주시면 고맙겠습니다.

오늘도 행복하게....
전체 67 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT