일정관리 스킨 수정 질문(도움) 입니다.

일정관리 스킨 수정 질문(도움) 입니다.

QA

일정관리 스킨 수정 질문(도움) 입니다.

답변 1

본문

안녕하세요. 

 

위 스킨을 다운 받아 사용할려고 하는데 

이전 날짜로 선택 및 수정이 되지 않아 질문 드립니다. 

 

제작님께서 댓글주신 부분을 수정 하였으나 적용이 되지 않아 질문 게시판에 글남깁니다. 

 

너무 초보적인 질문 이라 죄송 합니다. 

 

 

 

alert("오늘 날짜 이전으로 일정을 변경할 수 없습니다.");
                info.revert();
                return false;
            }

            var start = info.event.startStr;
            var end = info.event.endStr;
            var wr_id = info.event.id;
            dragEditDateChange(start, end, wr_id);
        },
        eventResize : function(info)


document.addEventListener("DOMContentLoaded", function() {
    var calendarEl = document.getElementById('calendar');
    var calendar = new FullCalendar.Calendar(calendarEl, {
        headerToolbar: {
            left : "today",
            center : "prev title next",
            right : fc_display_types
        },
        //height: '100%',
        expandRows: true,
        stickyHeaderDates:false,
        initialDate: new Date(g5_time_ymd),
        initialView: defaultview,
        locale: fc_lang,
        dayMaxEvents: false, // allow "more" link when too many events ( 일일별 스케쥴이 많을 경우 '더보기(+)'로 표시하기 )
        navLinks: true, // can click day/week names to navigate views
        editable: true, // Drag & Drop
        droppable: true,
        weekNumbers: weekNumbers, // 주차표시
        timeZone: 'KST',
        selectable: true,
        eventOverlap: true, // 스케쥴 겹침 허용 (동일날짜 동일시간으로 일정을 중복으로 등록)
        eventSources : [{
            events : function(info, successCallback, failureCallback) {
                $.ajax({
                    url : board_skin_url+"/get-events.php?bo_table="+g5_bo_table+"&sca="+sca,
                    type : "POST",
                    dataType : "json",
                    data : {
                        bo_table : g5_bo_table,
                        sca : $("#sca").val(),
                        start : info.startStr,
                        end : info.endStr,
                        stx : $("#stx").val(),
                        timeZone : 'local'
                    },
                    success : function(data) {
                        if(!bbs_write_url) {
                            $(".rumi-write").remove();
                        }
                        else {
                            $(".rumi-write").prop("title", "일정등록");
                        }
                        successCallback(data);
                    }
                });
            }
        }],
        select: function(info) {
            var d = timeConvet(info);
            if(info.allDay == true && d.start == d.end) {
                return false;
            }
            boardwrite("write", '', d.start, d.end);
        },
        eventClassNames: function(arg) {
            /** 이벤트 로드시 호출 */
            //console.log(arg.);
        },
        columnHeaderText: function(date) {
            console.log(date);
        },
        eventDrop: function(info) { // 달력화면에서 스케쥴 막대전체를 이동시
            if(!g5_is_admin && (info.event._def.extendedProps.wr_id != info.event._def.extendedProps.member_id) || !info.event._def.extendedProps.member_id) {
                alert("권한이 없습니다.");
                info.revert();
                return false;
            };
            if(get_ymd(info.event.start) < g5_time_ymd) {
                alert("오늘 날짜 이전으로 일정을 변경할 수 없습니다.");
                info.revert();
                return false;
            }
            var start = info.event.startStr;
            var end = info.event.endStr;
            var wr_id = info.event.id;
            dragEditDateChange(start, end, wr_id);
        },
        eventResize : function(info) { // 달력화면에서 스케쥴  막대의 사이즈를 변경시 (날자구간을 변경) - 종료 이벤트
            // 자신의 일정인지 체크 (관리자 제외)
            if(!g5_is_admin && (info.event._def.extendedProps.wr_id != info.event._def.extendedProps.member_id) ||  !info.event._def.extendedProps.member_id) {
                alert("권한이 없습니다.");
                info.revert();
                return false;
            };
            // 변경전 시작날짜
            var oldStart = new Date(info.oldEvent.start);
            oldStart = oldStart.setMinutes(oldStart.getMinutes() - 540); // 시작날짜는 9시간 빼기
            oldStart = get_ymd(oldStart);
            // 변경전 종료날짜
            var oldEnd = new Date(info.oldEvent.end);
            oldEnd = oldEnd.setMinutes(oldEnd.getMinutes() - 541); // 종료날짜는 9시간 1분 빼기
            oldEnd = get_ymd(oldEnd);
            // 변경후 시작날짜
            var newStart = new Date(info.event.start);
            newStart = newStart.setMinutes(newStart.getMinutes() - 540);
            newStart = get_ymd(newStart);
            // 변경후 종료날짜
            var newEnd = new Date(info.event.end);
            newEnd = newEnd.setMinutes(newEnd.getMinutes() - 541);
            newEnd = get_ymd(newEnd);
            /**
             * 시작날짜를 변경시 : 시작날짜가 오늘 이전이라면 변경 불가
             * - 변경전 종료날짜와 변경후 종료날짜가 같아야 함
             * - 변경전 시작날짜와 변경후 시작날짜가 달라야 함
             **/
            if(oldEnd == newEnd && oldStart != newStart) {
                //변경전 종료날짜가 현재날짜와 같거나 크고, 변경후 시작날짜가 오늘보다 작으면 .
                if(oldStart >= g5_time_ymd && newStart < g5_time_ymd) {
                    alert("[1] 오늘 날짜 이전으로 일정을 변경할 수 없습니다.");
                    info.revert();
                    return false;
                }
                // 변경전 시작날짜가 오늘 이전이라면.
                console.log(info.oldEvent.start);
                console.log(oldStart);
                if(oldStart < g5_time_ymd) {
                    alert("[2] 오늘 날짜 이전의 자료는 변경할 수 없습니다.");
                    info.revert();
                    return false;
                }
            }
            /**
             * 종료날짜 변경 : 종료날짜가 오늘 이전이라면 변경 불가
             * - 변경전 시작날짜와 변경후 시작날짜가 같아야 함.
             * - 변경전 종료날짜와 변경후 종료날짜가 달라야 함.
             */
            if(oldStart == newStart && oldEnd != newEnd) {
                //변경전 종료날짜가 현재날짜와 같거나 크고, 변경후 종료날짜가 오늘보다 작으면 .
                if(oldEnd >= g5_time_ymd && newEnd < g5_time_ymd) {
                    alert("[3] 오늘 날짜 이전으로 일정을 변경할 수 없습니다.");
                    info.revert();
                    return false;
                }
                // 변경전 종료날짜가 오늘 이전자료라면.
                if(oldEnd < g5_time_ymd) {
                    alert("[4] 오늘 날짜 이전의 자료는 변경할 수 없습니다.");
                    info.revert();
                    return false;
                }
            }
            var start = info.event.startStr;
            var end = info.event.endStr;
            var wr_id = info.event.id;
            //console.log(start+' / '+end+' / '+wr_id);
            dragEditDateChange(start, end, wr_id);
        },
        eventClick: function(info) {
            if (info.event.url.indexOf(document.location.hostname) === -1) {
                boardwrite("view", info.event.id, '');
                info.jsEvent.preventDefault(); // don't let the browser navigate
            }
        },
        datesRender: function(info) {
            console.log(info);
            // addSelectedClass: '오늘' 날짜가 없는 달에는 1일이 선택되어 있는 것처럼 배경색 바꾸기.
            //addSelectedClass(info.view.currentStart).then(function (seletedEl) {
            // 배경색 바꾼 후 다른 작업 ...
            //});
        },
        loading: function(bool) {
            $("#loading").toggle(bool);
        }
    });
    calendar.render();
    /* 팝업창 닫을때 실행될 함수 - 일정데이터 불러오기 */
    calendarRefresh = function() {
        calendar.refetchEvents();
    }
    // 관리자버튼 생성
    var btns = "";
    if (g5_is_admin) {
        btns += '<button type="button" class="fc-button fc-button-primary" id="btn-settings"><i class="fa fa-gear" aria-hidden="true"></i></button>';
        btns += '<button type="button" class="fc-button fc-button-primary" id="btn-adminset">A</button>';
    }
    // 글쓰기 버튼
    if(bbs_write_url) {
        btns += '<button type="button" class="fc-button fc-button-primary" id="btn-write"><i class="fa fa-pencil" aria-hidden="true"></i></button>';
    }
    $("#calendar .fc-button-group").append(btns);

    /** 카테고리 */
    if(is_category) {
        var cate ="<li class='category fc-button-primary' data-id=''>전체</li>";
        for(i = 0; i < category.length; i++) {
            cate += "<li class='category fc-button-primary' data-id='"+category[i]+"'>"+category[i]+"</li>";
        }
        $("#bo_cate_ul").append(cate);
        // 카테고리 클릭
        $(".category").click(function() {
            var val = $(this).attr("data-id");
            $("#sca").val(val);
            $(".category").removeClass("category-active");
            $(this).addClass("category-active");
            calendarRefresh();
        });
    }

    // 우측 상단 글쓰기 버튼
    $("#bo_list").on('click', '#btn-write', function() {
        boardwrite("write", '', '', '');
    });
    // 관리자 설정
    $("#bo_list").on('click', '#btn-adminset', function() {
        location.href = bbs_admin_url;
    });
    // 일별 글쓰기 바로가기
    $("#bo_list").on('click', '.rumi-write', function(e) {
        var dt = JSON.parse($(this).attr("data-navlink"));
        boardwrite("write", '', dt.date, dt.date);
    });
    // 스케쥴러 기본 설정
    $("#bo_list").on('click', '#btn-settings', function() {
        fullcalendarSetup();
    });
});
 

 

이부분은 스킨의 작성자 write.skin.php 파일 부분인데 

이부분에 수정을 해줘야 하는 질문 드립니다. 


/* 글쓰기, 수정, 답글에 대한 시간 설정 */
$start = ($w=="u" || $w=="r") ? $write['wr_1'] : $_GET['start'];
$end = ($w=="u" || $w=="r") ? $write['wr_2'] : $_GET['end'];
$allday = $_GET['allday'];
$start = ($start) ? $start : G5_TIME_YMD."T00:00:00";
$end = ($end) ? $end : G5_TIME_YMD."T23:59:59";
$fr_date = date('Y-m-d', strtotime($start));
list($fr_h, $fr_m) = explode(":", date('H:i:s', strtotime($start)));
$to_date = date('Y-m-d', strtotime($end));
list($to_h, $to_m) = explode(":", date('H:i:s', strtotime($end)));
$fr_h = ($start != $fr_date) ? $fr_h : "00";
$fr_m = ($start != $fr_date) ? $fr_m : "00";
$to_h = ($end != $to_date) ? $to_h : "23";
$to_m = ($end != $to_date) ? $to_m : "59";
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/css/style.css?ver='.G5_CSS_VER.'">', 0);
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/css/fullcalendar.css?ver='.G5_CSS_VER.'">', 0);
add_javascript('<script src="'.FC_PLUGIN_URL.'/jscolor.min.js?ver='.G5_JS_VER.'"></script>', 0);
?>
<script>
var w = "<?php echo $w; ?>";
$(function(){ // 날짜 입력
    if(w == 'r') { // 글 답변시
        $("div.rumiButton button:contains('취소')", parent.document).show();
        $("div.rumiButton button:contains('수정')", parent.document).hide();
    }
    else if(w == 'u') { // 글수정시
        $("div.rumiButton button:contains('취소')", parent.document).show();
        $("div.rumiButton button:contains('수정')", parent.document).hide();
    }
    else {
        $("div.rumiButton button:contains('취소')", parent.document).hide();
        $("div.rumiButton button:contains('수정')", parent.document).hide();
    }
    $("div.rumiButton button:contains('삭제')", parent.document).hide();
    $("div.rumiButton button:contains('저장')", parent.document).show();
    $("#wr_1, #wr_2").datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: "yy-mm-dd",
        showButtonPanel: true,
        yearRange: "c-0:c+10",
        minDate: "0",
        maxDate: ""
    });
    $("#bo_w").on('click', '.btn-color', function() {
        var id = $(this).attr('data-id');
        var color = $(this).attr('data-color');
        if(id == "background") {
            $(".color-sample").css({"background":color});
            $('#wr_4').val(color);
        }
        else {
            $(".color-sample").css({"color":color});
            $('#wr_3').val(color);
        }
    });
    $(".user-color").click(function() {
        jscolor.installByClassName("jscolor");
    });
    $(".user-color").blur(function() {
        var id = $(this).attr("data-id");
        var color = $(this).val();
        if(id == "background") {
            $(".color-sample").css({"background":color});
            $('#wr_4').val(color);
        }
        else {
            $(".color-sample").css({"color":color});
            $('#wr_3').val(color);
        }
    });
});
 

이 질문에 댓글 쓰기 :

답변 1



            if(get_ymd(info.event.start) < g5_time_ymd) {
                alert("오늘 날짜 이전으로 일정을 변경할 수 없습니다.");
                info.revert();
                return false;
            }

 

여기가 체크 하는 부분 같습니다.   이 부분을 코멘트 처리해 보세요

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 125,873
© SIRSOFT
현재 페이지 제일 처음으로