테스트 사이트 - 개발 중인 베타 버전입니다

읽지않은 쪽지가 있을 경우 읽을 때까지 알려주기

· 19년 전 · 3931 · 5
헐랭이님의 글 참조
http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=1969&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%B8%DE%B8%F0&sop=and

헐랭이님의 MSN형 쪽지 알림창을 적용하다가 제 홈피에는 프레임으로 넣은 것이 있어 두번에 걸쳐 메시지가 뜨는 일이 생겼습니다.
그래서 고쳐볼까 하고 이리저리 애쓰다보니 메시지가 첨 올 경우 한번만 알려주고는 읽지 않은 상태에서도 다시는 알려 주지 않더군요.

해서 읽지 않은 메시지가 있을 경우, 읽을 때까지 알려주면 좋겠다 싶어 해 보았습니다.
헐랭이님의 올린 글에서 파일을 그대로 다운 받아 bbs/img 에 올리시기 바랍니다.
헐랭이님의 글에서 보듯 MSN형으로 고쳤습니다.

이미 어딘가에 비슷한 팁이 있을지도 모르지만...
어쨋든 첨으로 올리는 글이니 너그러이 용서하시기 바랍니다.

먼저,

1. 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]);
}

은 그대로 살려둡니다. 이미 고치신 분들은 사실 모두 혹은 일부 명령어줄을 막아놔도 상관없습니다.

2. outlogin스킨의 outlogin.skin2.php 파일을 엽니다.
맨 밑에 아래 소스를 갔다가 붙입니다. 헐랭이님의 팁을 사용하시는 분들을 위해 레리어명을 바꾸어 놓았습니다.


<!-- 레이어로 쪽지창 표시 시작 -->
<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.memochk.style.top = msn_top;
document.all.memochk.style.left = msn_left;
document.all.memochk.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>


<?
// 레이어로 쪽지창 표시 시작
if($memo_not_read != '0') {
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 = "";
}
?>


<div id="memochk" name="memochk" style="position:absolute; overflow:hidden; top:10; left:10; z-index:1; 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=right>
<a href="javascript:hideLayer('memochk')"><b>&nbsp;&nbsp;</b></a>&nbsp;
</td>
</tr>
<tr>
<td colspan=2 align=center>
<br>읽지 않은 쪽지가<br><b><?=$memo_not_read?></b>개 있습니다.<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('memochk');">쪽지열기</button> &nbsp;&nbsp; <button style="border: 1px solid #93ACCF" onclick='hideLayer("memochk")'> 창닫기 </button><br>
<br>
</td>
</tr>
</table>
</div>

<?=$run?>

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 5개

정말 감사합니다.
그런데, 쪽지를 확인해도 계속 확인하라고 나오네요^^;;
오른쪽 하단에 붙혀져서 나오는것 해결하니 참 좋네요

감사합니다. 잘 됩니다...
ㄴㅇ
16년 전
참으로 유용한 팁이군요~
공유해 주셔서 너무나 감사합니다^^*
좋은 정보 올려주셔서 참으로 감사드립니다.
꾸벅~~~~~~~~~~

게시글 목록

번호 제목
3108
3096
3091
3087
3084
3047
3041
3040
3009
3004
2999
2980
2979
2978
2977
2974
2949
2926
2916
2907