팁/튜토리얼

스케줄 모듈 2.1

2021.02.15 13:37
11,721
9

2.2 버전부터는 포인트 콘텐츠 자료실에서 제공합니다.

https://xetown.com/point_contents/1533299

 

 


 

 

람보님의 스케줄 모듈을 개조해서 만든 2.0 2.1 버전입니다.
(관련 히스토리는 https://xetown.com/topics/1517938 참조)

손대기 시작한지 벌써 1달이 넘었는데도 계획에 비해서는 아직 갈 길이 멉니다ㅜ

그래도 더는 미룰 수 없어서 베타 버전을 올리오니 관심이 있으신 분들은 아래 사항 숙지하시고 테스트사용해주시면 감사하겠습니다.

 

미리보기 : https://dev.aporia.blog/schedule

 

 

0. 업데이트

2.1 : 2021-02-16

- API키 미사용시 자체 함수를 이용해서 특일 정보 출력 (adlib님). API키 사용시보다 첫 로딩 때는 빠르지만 API키로 캐시파일 생성된 이후의 속도와 비교하면 살짝 느릴 수 있습니다.

- item 함수에서 BaseObject 수정 (유니짱님)

 

 

1. 설치

 

- 기존에 스케줄 모듈이 있다면 완전히 삭제한 뒤에 설치하셔야 합니다. 기존과 테이블 구조가 많이 달라졌기 때문입니다. 절대로 기존 모듈에 덮어쓰기 하거나 업데이트하지 마세요.
- 기존의 데이터도 호환되지 않을 겁니다. 만약 데이터 승계가 필요하다면 따로 백업하신 후에 DB 테이블과 컬럼에 맞게 수동으로 옮겨주셔야 합니다.
- PHP 7.0, 라이믹스 2.0.7, 크롬에서 테스트되었습니다. PHP 8.*에서는 호환성에 문제가 있을 수 있습니다.
- 설치 경로는 루트 > modules > schedule 입니다.

 


2. 설정

 

1) 특일 정보 설정

- 음력, 공휴일, 24절기, 기타 잡절 등 특일 정보 출력을 위해 공공데이터 포털에서 API키를 받아서 입력합니다. 두 군데에서 '활용신청' 수락을 받아야 하는데, API키는 처음 받은 키를 그대로 유지하면 됩니다.

- 기존의 특일 정보 관련 함수들에 비해 정확하고 공신력 있는 정보라 생각하시면 될 것 같습니다.

- 만약 API키가 없더라도 모듈 자체적으로 특일 정보를 구현할 수는 있습니다. 다만 이 경우에는 API키를 활용하는 것보다 스케줄 표/목록 출력이 살짝 느릴 수는 있습니다.

- API키 취득 및 활용신청은 아래의 링크에서 하세요.

- 특일(공휴일,24절기,잡절) : https://www.data.go.kr/data/15012690/openapi.do

- 음양력 변환 : https://www.data.go.kr/data/15012679/openapi.do

 

2) 모듈 추가/정보 : 설정

- 모듈 이름(mid), 브라우저 제목, 모듈 분류, 관리자 메일 등을 입력합니다. 게시판 모듈의 방식과 동일하니 어렵지 않을 겁니다.
- 특일선택은 공공데이터 포털에서 취득한 API키를 활용해서 스케줄 테이블에 뿌려줄 항목들입니다. 음력, 공휴일, 24절기, 기타 잡절 등을 가져올 수 있습니다.

[주의] API키를 통해 월별 특일 정보가 담긴 xml 파일을 캐시파일로 저장하게 됩니다. 따라서 스케줄 테이블 페이지 첫 로드시에는 속도가 다소 느릴 수 있습니다(0.8~0.9초 정도). 그렇지만 캐시파일 생성 이후에는 스케줄 테이블 페이지 로드시 0.04~0.06 정도로 단축됩니다.

- 또한 관리자가 공공데이터에서 제공하는 특일 외의 여타 특일을 직접 입력할 수도 있습니다. 행별로 제목, mmdd 형식으로 입력해서 활용할 수 있습니다.

 

3) 모듈 추가/정보 : 레이아웃 | 스킨

- 레이아웃, 스킨, 상단내용, 하단내용 등을 입력할 수 있습니다. 게시판 방식과 동일합니다.

- 단, 모바일 레이아웃과 스킨은 설정 > 시스템 설정 > 고급 설정에서 '모바일 뷰 사용'을 '아니오'로 했다면 해당 폼을 로드하지 않습니다.

 

4) 모듈 추가/정보 : 고급 설정

- 스팸 방지 기능은 스팸필터 모듈의 캡챠 설정과 연동됩니다.
- 상태 지정은 스케줄 입력 화면에서 작성자가 선택할 수 있는 스케줄 콘텐츠 상태 선택 사항을 의미합니다.
- 대기 상태의 스케줄을 어떻게 표시할 것인지 설정할 수 있습니다. 그냥 보이게 하거나, 가리거나, 감출 수 있습니다.
- 비밀 스케줄러를 사용하면 작성자는 본인이 입력한 스케줄만 확인할 수 있습니다. 상담게시판 기능과 유사합니다.

 

5) 기타 항목

- 분류 관리, 권한 관리, 추가 설정, 스킨 설정 등은 기존 게시판 설정과 유사하므로 따로 설명이 필요 없을 겁니다.
- 다만 추가설정에 목록 설정, 댓글 설정이 있는데 이 부분은 향후 기능 개선을 위해 남겨둔 것으로 현재 2.0 2.1 버전에서는 모듈에 영향을 주지 않습니다.

 

 

3. 덧. 향후에 했으면 하는 것들


- API키 미사용시 자체 함수를 이용해서 특일 정보 출력 (2.1버전에서 구현)
- 스케줄을 달력 형태뿐 아니라 일반적인 목록 형태로도 구현

- SEO : 여기 참조
- 반복 일정을 전체 삭제가 아니라 일부 삭제하는 커맨드를 고려
- 간단한 한줄 메모 형태로 댓글 기능 추가를 고려
- 스케줄 검색 기능 또한 구상
- 예약 기능도 추가...

 

 

윤삼 Lv. 19
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.

댓글 71

  • 2022.01.25 08:23 #1647686

    이모지 아이콘이 삽입될 경우 SQL오류가 나옵니다.

    다른분은 작동되시는지 궁금하네요

  • 2022.01.29 07:39 #1648855
    제목 부분에서 그런가요?
    어느 필드에 넣으신 건지 알려주시면 (비록 당장의 저는 힘들지만ㅜ) 언젠가 꼭, 또는 다른 분들이라도 아이디어를 나눠볼 수 있을 겁니다.
  • 2022.01.29 07:45 #1648859

    utf8_mbencode() 라이믹스 함수를 사용해서 db에 입력하시면 됩니다.
    게시글,댓글 등 라이믹스 코어를 통해 db에 입력은 위 함수를 거치게 되어있어서 db에서 이모지 지원을 못하는 상태라도 입력이 가능하도록 라이믹스에서 함수가 사용되고 있죠.

    https://github.com/rhymix/rhymix/blob/10ab65e2f4181a28a40f6035469a40b0008b10ca/common/functions.php#L628

     

    앗.. XE 사용자분들은..... XE 사용자분 까지 고려한다면 저 함수 자체를 모듈에 탑재를 해야 하겠네요....   

  • 2022.01.29 08:10 #1648870
    라이믹스 전용 모듈이니ㅎㅎ
    입력할 때 소개해주신 함수를 적용하면 되겠군요!
  • 2022.01.29 15:47 #1648945

    라이믹스 사용자는 저 함수를 스케줄 모듈에 없어도 이모지 작동이 되나요?
    제가 라이믹스 사용자인데 잘 이해한건지 모르겠네요.

  • 2022.01.29 16:02 #1648950

    코어에서 제공하는 게시판 모듈에서는 적용되어 있습니다.(글,댓글 저장시) 라이믹스라도 이모듈 처럼 서드파티인 경우 적용할 곳에 함수를 사용해야 합니다. 라이믹스라고 개발자가 지정하지 않은 모든 db입력시 저 함수를 적용하지 않습니다.

     

    라이믹스는 저 함수를 스케쥴 모듈에 탑재할 필요는 없습니다. 라이믹스 함수니까요. 단, 위에 설명한대로 함수를 실행할 부분에 코드를 작성해서 함수가 실행되서 반환된 값이 적용되도록 해야합니다.

  • 2022.01.29 15:41 #1648926

    제목/본문부분에 윈도우10 이모지 💜 이런걸 넣으면 아래와 같이 에러팝업이 뜹니다.
    스케치북게시판에서는 이모지사용이 되는데 스케쥴모듈만 그러네요 ㅜ
    아무튼. 배포해주신 자료 정말 감사합니다

     

    엇... 웹지기님꼐서 해결방법을 남겨주셨네요. 감사합니다. 저는 라이믹스 유저입니다
     

  • 2022.01.26 02:08 #1648107
    짱이네요..!
  • 2022.01.29 15:43 #1648934
    seopro 모듈 사용시 게시글제목 타이틀값이 안들어가는 문제가 있군요..ㅜㅜ
  • 2022.01.29 23:18 #1648992
    다른 서드파티 자료와의 호환을 맞추기는 어렵습니다.
    특히 유료자료의 경우는 더더욱요ㅜ
  • 2022.02.06 23:29 #1651312
    윤삼님이 만드신 임베드애드온이 스케쥴모듈 내장 게시판에서는 작동하지 않는것 같습니다~
  • 2022.02.07 00:23 #1651337

    네, 애드온이 게시판의 document_srl을 기준으로 에디터를 포착하는데, 스케줄 모듈은 schedule_srl로 고유한 식별번호로 운용되거든요.
    적용을 하시려면 아마도 별도의 커스터마이징을 하셔야 할 겁니다 :)

  • 2022.02.07 16:02 #1651704
    아..그런 차이떄문에 작동이 안되는거였군요. 정보 감사합니다
  • 2023.02.01 08:19 #1742187

    안녕하세요. 윤삼님

    모임일정을 등록하고 댓글로 참여의사를 밝히는 용도로

    동호회 사이트에서 사용해보려고합니다.
    캘린더 내 댓글을 다는 기능은 제공되지 않을까요?

  • 2023.02.01 08:53 #1742196
    글쎄요;;; 현재는 모듈을 람보님이 다시 관리하고 계세요.
  • 2023.02.01 08:46 #1742192
    추가로 한가지 궁금한 것이 있는데
    2월 1일인데 당연히 2월 1일에 불이 들어와있는것은 맞는데
    3월로 이동해도 4월로 이동해도 1일에 불이들어와있습니다.
    일부러 그렇게 의도 한것 일까요?

    아래 코드를 오늘만 작동하게 수정이 가능할까요?

    <!--@if($month.$_date == date('md') || ($month != date('m') && $date == 1))-->
  • 2023.02.01 09:00 #1742203
    코드를 들여다본지 한참이 돼서 잘 기억이 나지 않습니다ㅜㅜ
    의도대로라면 스케줄 입력시에 반복 설정을 한 경우에만 월별 반복이 되어야 할 텐데요.
    그 사이에 모듈이 업데이트되기도 하고 해서 저도 잘 모르겠어요;;;
  • 2023.02.01 09:05 #1742207

    아 관리주체가 다시 람보님이군요.

    https://dev.aporia.blog/schedule
    여기에서 2월 1일이 오늘이라 배경색이 들어가있는데
    다음달인 3월 4월 5월로 이동해도 1일에 계속 배경색이 들어가있어서 의도하신건지 궁금해서요.

     

    여기에도 댓글 쓰기가 없는걸 보니 애초에 댓글은 없나봅니다! 확인감사합니다!

  • 2023.02.01 09:09 #1742212
    아 그 이야기였군요.
    <!--@if($month.$_date == date('md'))-->
    로 하면 되지 않을까요?
  • 2023.02.01 09:12 #1742217
    그렇게하니 오늘만 불이들어오네요!
    감사합니다.
  • 2023.02.01 09:27 #1742235
    아아 그리고 5번에

    - 다만 추가설정에 댓글 설정이 있는데 이 부분은 향후 기능 개선을 위해 남겨둔 것으로 현재 2.2 버전에서는 모듈에 영향을 주지 않습니다.

    라고 적혀있었네요. 댓글 지원이 안되는것이 맞나보네요.
    항상 감사합니다!