팝업창관리 관리자기능에 추가하기 > 그누4 팁자료실

그누4 팁자료실

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

팝업창관리 관리자기능에 추가하기 정보

팝업창관리 관리자기능에 추가하기

본문

팝업창 소스는 캐논협주곡님 소스를 변형 하였습니다.

해당 소스는 cheditor를 사용합니다.
geditor는 입맛에 맞게 바꿔 사용 하시기 바랍니다..^^

아울러 좋은 소스 제공해주신 캐논협주곡님께 감사 드립니다~^^

skin/member/basic/img폴더에 calendar.gif 파일을 메인이미지 폴더로 복사 합니다


############## tail.sub.php 에 아래 내용을 추가 합니다 ##################
<? if($config[cf_pop_use] == 1) { ?>
<STYLE type="text/css">
#divPop {
 position:absolute; border:2px #999999 solid; z-index:999; visibility:visible;
   cursor:move; filter:alpha(Opacity:99,style:0));-moz-opacity:.99;opacity:.99;
}

#divPop #popTop { height: 20px; }

#divPop #popBottom { height: 25px; }

.topContent {
 position:relative;
 top:2px;
 margin:0 0 0 2px;
 font-weight:bold;
 font-size:12px;
 text-align: center;
 color:#ffffff;
}
.mainContent {
 margin:5px 0 0 5px;
 font-weight:normal;
 font-size:12px;
 cursor:pointer;
 color:#666666;
}
.bottomContent {
 position:relative;
 top:5px;
 margin:0 0 10px 0;
 font-weight:bold;
 font-size:12px;
 color:#ffffff;
 cursor:pointer;
 text-align:right;
}
</STYLE>


<script language="JavaScript">
<!--
function in_array(needle, haystack, strict) {
    var found = false, key, strict = !!strict;
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
    return found;
}

var url = location.href.split("/");
page_len = url.length - 1;

if(url[page_len].search(/\?/) > -1) {
 var url = url[page_len].split("?");
 var this_page = url[0];
 if(this_page = "board.php") {
  var url = url[1].split("&");
  var url = url[0].split("=");
  var this_page = url[1];
 }
} else {
 var this_page = url[page_len];
}
if(!this_page) {
 var this_page = "index.php";
}

if(in_array(this_page, [<?=$config[cf_pop_page]?>])) usePop = 1;
else usePop = 0;

var date = "<?=$config[cf_pop_limit]?>";
var useYear  = date.substring(0,4);
var useMonth = date.substring(4,6);     // 공지창을 사용할 월 10은 10월임
var useDate  = date.substring(6,8);      // 공지창을 사용할 일 6은  6일까지임
var useTime  = <?=$config[cf_pop_during]?>;     // 공지창이 머무를 시간 10은 10초임
var expiredays = <?=$config[cf_pop_date]?>;    //공지창 하루 안띄우기 시간. 1은 하루임

var layerTop  = <?=$config[cf_pop_top]?>;    //상단에서 떨어진 위치를 잡으세요
var layerLeft = <?=$config[cf_pop_left]?>;    //죄측에서 떨어진 위치를 잡으세요
var layerWidth = <?=$config[cf_pop_wid]?>;  //레이어 넓이
var layerHeight = <?=$config[cf_pop_hei]?>; //레이어 높이

var layerTopBg = "<?=$config[cf_pop_barbg]?>"; //상단,하단 바 배경
var layerPopBg = "<?=$config[cf_pop_contbg]?>"; //내용 부분 배경

function startTime()
{
    var cName ="divPop";
    var time = new Date();
    var year = time.getFullYear();

    usedTime = new Date(useYear,parseInt(useMonth-1),parseInt(useDate));
    endTime = (usedTime.getTime()-time.getTime())/(24*60*60*1000);
    showTime = Math.ceil(endTime);

    if ( showTime < 0 || usePop != 1)
 {
        document.getElementById('divPop').style.visibility = "hidden";
 }
 else
 {
     cookieIndex = getCookie(cName);
        if ( !cookieIndex )
        {
            document.getElementById('divPop').style.visibility = "visible";
        }
        else
        {
            document.getElementById('divPop').style.visibility = "hidden";
        }
 }

    document.getElementById('divPop').style.top = layerTop+"px";
    document.getElementById('divPop').style.left = layerLeft+"px";
    document.getElementById('divPop').style.width = layerWidth+"px";
    document.getElementById('popMain').style.height = layerHeight+"px";
    document.getElementById('popTop').style.background = layerTopBg;
    document.getElementById('divPop').style.background = layerPopBg;
    document.getElementById('popBottom').style.background = layerTopBg;

    h= time.getHours();
    m = time.getMinutes();
    s = time.getSeconds();

    closeTime = h*3600+m*60+s;
    closeTime += parseInt(useTime);

    setTimer();
}

function setTimer()
{
    var time = new Date();
 hour = time.getHours();
    min = time.getMinutes();
    sec = time.getSeconds();
    curTime = hour*3600+min*60+sec;

    if ( curTime >= closeTime )
 {
        document.getElementById('divPop').style.visibility = "hidden";
    }
 else
 {
        window.setTimeout("setTimer()",1000);
 }
}

function setCookie( name, value, expiredays )
{
    var todayDate = new Date();
    todayDate.setDate(todayDate.getDate() + expiredays);
    document.cookie = name + "=" + escape(value) + "; path=/; expires=" + todayDate.toGMTString() + ";"
}

function closeLayer()
{
    if ( document.notice_form.chkbox.checked )
 {
        setCookie("divPop", "os" , expiredays);
    }

    document.getElementById('divPop').style.visibility = "hidden";
}

isIE  = document.all;
isNN  = !document.all && document.getElementById;
isN4  = document.layers;

var max_zindex = 30;
function drag( mode,e,obj )
{
    if ( mode == 'start' )
 {
        obj.offsetx = isIE ? event.clientX : e.clientX;
        obj.offsety = isIE ? event.clientY : e.clientY;

        obj.nowX    = parseInt(obj.style.left);
        obj.nowY    = parseInt(obj.style.top);
        obj.dragable = '1';

        var new_zindex = max_zindex + 1;
        obj.style.zIndex = new_zindex;
        max_zindex = new_zindex;
    }
 else if ( mode == 'move' )
 {
         if ( obj.dragable == '1' )
   {
             var x = isIE ? (obj.nowX + event.clientX - obj.offsetx) : (obj.nowX + e.clientX - obj.offsetx);
             var y = isIE ? (obj.nowY + event.clientY - obj.offsety) : (obj.nowY + e.clientY - obj.offsety);
             var max_winw = document.body.clientWidth - parseInt(obj.style.width);
             var max_winh = document.body.clientHeight - parseInt(obj.style.height);

             if ( x >= 0 && x <=max_winw ) obj.style.left = x;
             if ( y >= 0 && y <=max_winh ) obj.style.top  = y;
         }
    }
 else if ( mode == 'stop' )
 {
        obj.dragable='0'
    }
}
//-->
</script>

<form name="notice_form">
<div id="divPop" style="position:absolute;left:0px;top:0px;z-index:1;width:0px;height:0px;">
 <div id="popTop" onSelectStart="return false;" onMouseDown="drag('start',event,document.getElementById('divPop'));" onMouseUp="drag('stop',event,document.getElementById('divPop'));" onMouseMove="drag('move',event,document.getElementById('divPop'));" dragable='0'>
  <div class="topContent"><span id="today" style="font-weight:bold; color:#000000"></span></div>
 </div>
 <div id="popMain">
  <div class="mainContent"><?=$config[cf_pop_content]?></div>
 </div>
 <div id="popBottom">
  <div class="bottomContent">
   <input type="checkbox" name="chkbox" onclick="closeLayer();">
   <?=$config[cf_pop_date]?>일 동안 이 창을 열지 않음
    <a href="javascript:closeLayer();" style="color:#000">[닫기]</a>
  </div>
 </div>
</div>
</form>


<script language="Javascript">
function getCookie( name )
{
    var nameOfCookie = name + "=";
    var x = 0;
    while ( x <= document.cookie.length )
    {
        var y = (x+nameOfCookie.length);
        if ( document.cookie.substring( x, y ) == nameOfCookie )
  {
            if ( (endOfCookie=document.cookie.indexOf( ";", y )) == -1 )
            endOfCookie = document.cookie.length;
            return unescape( document.cookie.substring( y, endOfCookie ) );
        }

        x = document.cookie.indexOf( " ", x ) + 1;
        if ( x == 0 )
        break;
     }
     return "";
}

function cal()
{
    var t  = new Date();
    var y  = t.getFullYear();
    var m  = t.getMonth();
    var d  = t.getDate();
    var dw  = t.getDay();
    var w;

 switch ( dw )
 {
     case 0: w = " (일)"; break;
     case 1: w = " (월)"; break;
     case 2: w = " (화)"; break;
     case 3: w = " (수)"; break;
     case 4: w = " (목)"; break;
     case 5: w = " (금)"; break;
     case 6: w = " (토)"; break;
    }

    document.getElementById('today').innerHTML = ""+y+ "년 " + (m+1) + "월 " + d + "일"+w;
}

cal();

document.onload = startTime();
</script>
<? } ?>

######### adm/popup.php 파일을 생성 합니다 ##############
<?
$sub_menu = "100350";
include_once("./_common.php");

auth_check($auth[$sub_menu], "r");

if ($is_admin != "super")
    alert("최고관리자만 접근 가능합니다.");

// 팝업 관련 필드 추가
sql_query(" ALTER TABLE `$g4[config_table]`
    ADD `cf_pop_content` TEXT NOT NULL AFTER `cf_memo_send_point`,
    ADD `cf_pop_contbg` VARCHAR(255) NOT NULL AFTER `cf_memo_send_point`,
    ADD `cf_pop_barbg` VARCHAR(255) NOT NULL AFTER `cf_memo_send_point`,
    ADD `cf_pop_hei` VARCHAR(255) NOT NULL AFTER `cf_memo_send_point`,
    ADD `cf_pop_wid` VARCHAR(255) NOT NULL AFTER `cf_memo_send_point`,
    ADD `cf_pop_left` VARCHAR(255) NOT NULL AFTER `cf_memo_send_point`,
    ADD `cf_pop_top` VARCHAR(255) NOT NULL AFTER `cf_memo_send_point`,
    ADD `cf_pop_date` VARCHAR(255) NOT NULL AFTER `cf_memo_send_point`,
    ADD `cf_pop_during` VARCHAR(255) NOT NULL AFTER `cf_memo_send_point`,
    ADD `cf_pop_limit` VARCHAR(255) NOT NULL AFTER `cf_memo_send_point`,
    ADD `cf_pop_page` VARCHAR(255) NOT NULL AFTER `cf_memo_send_point`,
    ADD `cf_pop_use` TINYINT(2) NOT NULL AFTER `cf_memo_send_point`
   ", false);

$g4['title'] = "팝업관리";
include_once ("./admin.head.php");

include_once("../lib/cheditor.lib.php");
?>
<script type="text/javascript" language="javascript" src="<?=$g4['editor_path']?>/cheditor.js"></script>
<? echo cheditor1("cf_pop_content", $config[cf_pop_content]); ?>
<script language="javascript" src="<?=$g4['path']?>/js/common.js"></script>
<table width=100% cellpadding=0 cellspacing=0 border=0>
<form name=fpopform method=post action='javascript:fpopform_submit(document.fpopform);'>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=30% class='col2 pad2'>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=30% class='col2 pad2'>
<tr class='ht'>
   <td colspan=4 align=left><?=subtitle("기본 설정")?></td>
</tr>
<tr class='ht'>
   <td>사용 유무</td>
 <td colspan=3><input type=checkbox name='cf_pop_use' value='1' <?=($config[cf_pop_use])?"checked":"";?>></td>
</tr>
<tr class='ht'>
   <td>사용 페이지</td>
 <td colspan=3><input type=text class=ed name='cf_pop_page' size='100' required itemname='팝업 사용 페이지' value="<?=$config[cf_pop_page]?>"> <?=help("팝업을 사용할 페이지를 입력 합니다.\nex) 'index.php', 'main.php', 'notice'")?></td>
</tr>
 
<tr class='ht'>
    <td>사용 기한</td>
    <td><input type=text class=ed name='cf_pop_limit' id='cf_pop_limit' size='10' required itemname='사용기한' value='<?=$config[cf_pop_limit]?>'> <a href="javascript:win_calendar('cf_pop_limit', document.getElementById('cf_pop_limit').value, '');"><img src='<?=$g4[path]?>/img/calendar.gif' border=0 align=absmiddle title='달력 - 날짜를 선택하세요'></a></td>
    <td>공지창 유지시간</td>
    <td><input type=text class=ed name='cf_pop_during' size='5' required itemname='공지창 유지시간' value='<?=$config[cf_pop_during]?>'> 초</td>
</tr>
<tr class='ht'>
    <td>체크 시 팝업창을</td>
  <td colspan="3"><b><input type=text class=ed name='cf_pop_date' size='2' required itemname='팝업 초기 기간' value='<?=$config[cf_pop_date]?>'> 일 동안 띄우지 않습니다</b></td>
</tr>
<tr class='ht'>
    <td>상단 좌표</td>
    <td><input type=text class=ed name='cf_pop_top' size='4' required itemname='상단좌표' value='<?=$config[cf_pop_top]?>'></td>
    <td>좌측 좌표</td>
    <td><input type=text class=ed name='cf_pop_left' size='4' required itemname='좌측좌표' value='<?=$config[cf_pop_left]?>'></td>
</tr>
<tr class='ht'>
    <td>가로 크기</td>
    <td><input type=text class=ed name='cf_pop_wid' size='4' required itemname='가로크기' value='<?=$config[cf_pop_wid]?>'></td>
    <td>세로 크기</td>
    <td><input type=text class=ed name='cf_pop_hei' size='4' required itemname='세로크기' value='<?=$config[cf_pop_hei]?>'></td>
</tr>
<tr class='ht'>
    <td>상·하단 바 배경</td>
    <td><input type=text class=ed name='cf_pop_barbg' size='8' required itemname='상,하단 바 배경' value='<?=$config[cf_pop_barbg]?>'></td>
    <td>내용 배경</td>
    <td><input type=text class=ed name='cf_pop_contbg' size='8' required itemname='내용 배경' value='<?=$config[cf_pop_contbg]?>'></td>
</tr>
<tr class='ht'>
    <td>내용</td>
    <td colspan=3><? echo cheditor2("fpopform", "cf_pop_content"); ?></td>
</tr>
</table>

<p align=center>
    <input type=submit class=btn1 accesskey='s' value='  확  인  '>
</form>

<script language="javascript">
function fpopform_submit(f)
{
 <?=cheditor3("cf_pop_content");?>
    f.action = "./popup_update.php";
    f.submit();
}
</script>

<?
include_once ("./admin.tail.php");
?>

########### adm/popup_update.php 파일을 생성 합니다 ###########
<?
$sub_menu = "100350";
include_once("./_common.php");

check_demo();

auth_check($auth[$sub_menu], "w");

if ($is_admin != "super")
    alert("최고관리자만 접근 가능합니다.");


$sql = " update $g4[config_table] set
    cf_pop_content  ='{$cf_pop_content}',
    cf_pop_contbg  ='{$cf_pop_contbg}',
    cf_pop_barbg  ='{$cf_pop_barbg}',
    cf_pop_hei   ='{$cf_pop_hei}',
    cf_pop_wid   ='{$cf_pop_wid}',
    cf_pop_left   ='{$cf_pop_left}',
    cf_pop_top   ='{$cf_pop_top}',
    cf_pop_date   ='{$cf_pop_date}',
    cf_pop_during  ='{$cf_pop_during}',
    cf_pop_limit  ='{$cf_pop_limit}',
    cf_pop_page   ='{$cf_pop_page}',
    cf_pop_use   ='{$cf_pop_use}'
   ";
sql_query($sql);

goto_url("./popup.php");
?>

추천
4

댓글 12개

에러는 없는데...
관리자 모드에서만 팝업창 뜹니다. 인덱스로 지정했는데^^+;;;
그것두 왼쪽에 딱 붙어서요... 폭 수정두 안되네여...
좋은데 아쉽네여...

제가 일부 파일 수정한 부분이 있어서 그런가 봅니다.
수고하셨습니다.
파일이 일부 수정 되었습니다.

DTD 선언 후에도 정상적으로 작동 하도록 변환 시키고,

IE7에서도 정상적으로 작동 합니다.

다만 Mozilla 계열에서는 팝업창 드래그 이동은 되지 않습니다.
전체 12 |RSS
그누4 팁자료실 내용 검색
  • 개별 목록 구성 번호 제목 작성자 작성일 추천 조회
  • 게시물이 없습니다.

회원로그인

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