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

 

 

글쓴이 윤삼

profile
많이 아는 건 없고 조금 알아서 무서운 선무당입니다.
  • ?
    저도 넘어가고 싶군요ㅎㅎ
  • ? profile
    아직 베타고, 또 언제 추가 작업을 할 수 있을지... (먼 산)
  • profile

    윤삼님 안녕하세요,

    시간과 품이 많이 드셨을 텐데 수고 많으셨습니다.
    달력 만드는게 예상외로 시간이 많이 들지만 재미는 있어요.
    열심히 응원합니다.

    감사합니다.
    ksc

  • profile profile
    그동안 이 작업을 어떻게 하셨을지... 존경합니다~
  • profile profile

    윤삼님 안녕하세요,

    살면서 세상에 많은 은헤를 입었으니...
    나도 1000명은 행복하게 해주자 하는 마음입니다. 웃기지요?

    계획을 보니 자체함수 특일정보 부분이 있군요.
    예전에 찾아봤을 때는 인터넷에서 구할 수 있는 음력/절기 함수가

    유효기간 2037~8년 정도였던 것으로 기억되는데...  요즘은 어떤지 잘 모르겠습니다.

    지금 플래너용으로 2050년도 까지 계산하는 함수를 준비중이니
    혹시라도 필요하시면 알려주시기 바랍니다.

    감사합니다.
    ksc

  • profile profile
    안 그래도 둘러보니 어떤 php 클래스는 날짜가 틀리다는 이야기도 있고 그래서 번민이 좀 있습니다.
    고민하다가 에버그린님 생각나면 연락드리겠습니다요 ^^/
  • profile
    드디어 배포 하셨군요.
    바로 적용해보겠습니다.
    감사합니다.
  • profile profile

    API키 취득하는 게 좀 귀찮을 수 있는데 그 허들만 넘으신다면...

    아, 생각해보니 기존 모듈 삭제가 더 귀찮을 수 있겠네요ㅜ

  • profile profile

    해외 거주하고 있는 사람은 API 키 취득이 불가하네요.
    회원가입을 하고 싶어도 전화 인증을 받을 수 없네요. ㅠㅠ
    많이 기다렸는데

     

    - API키 취득 및 활용신청은 아래의 링크에서 하세요.
    - 특일(기념일,24절기,잡절) : https://www.data.go.kr/data/15012690/openapi.do
    - 음양력 변환 : https://www.data.go.kr/data/15012679/openapi.do

     

    API 키 취득 문제만 아니면 Perfect 합니다.

    감사합니다.

  • profile profile
    아이고, 그 생각은 미처 못했네요.
    모듈 자체적으로 함수 지원하는 걸 빨리 알아봐야겠어요.
  • profile profile
    역시 윤삼님 파이팅!
    감사합니다.
  • profile profile
    방금 음력이랑 24절기(복날 포함) 자체 로딩을 마쳤구요ㅎ
    조만간 시간이 나게 되면 휴일과 잡절을 뜯어봐야겠습니다.
  • profile profile

    수정본 올렸습니다. 이제 해외에서도 스케줄 모듈을 사용해보아요ㅋㅋ

    업데이트 파일로 이동 

  • profile profile
    감사합니다. 윤삼님 짱!
  • ?
    object 문제가 있군요.

    schedule.item.php 파일에

    class scheduleItem extends Object

    3번째 줄을

    class scheduleItem extends BaseObject

    이렇게 바꿔야 돌아가네요
  • ? profile
    오 감사합니다.
    php 7.0에서 작업하다보니 그 부분을 놓쳤었네요ㅜ
  • ? profile

    수정본 올렸습니다. 짚어주신 부분 수정과 더불어, API키 없이 사용 가능하게 함수도 추가했어요ㅎㅎ

    업데이트 파일로 이동 

  • profile ?
    감사합니다ㅎㅎ
  • profile
    응원합니다!
  • profile profile
    감사합니다! :D
  • ?
    api를 받아야 사용이 가능한 모듈인가요?
  • ? profile
    아뇨. 성능에 미세한 문제가 있을 수 있지만 2.1 버전부터는 api 없이도 사용 가능하게 했습니다.
  • profile ?
    감사합니다 ㅎㅎ 기존 스케줄 모듈에 덮어쓰기 하면 되나요?
  • profile ?
    덮어쓰기하니.. 서버오류가 뜨는군요... ㅠ
  • ? ?
    위에 절대로 덮어쓰기 하지말라고 설명에 씌여있었는데....ㅠㅠㅠ
  • ? profile
    안내문 숙지 부탁드립니다;;;
  • profile ?
    넵.. 죄송합니다 ㅠㅠ;;
    이제 봤어요 ㅠ
  • profile
    다음에 이런 자료들을 포크하실때는 스키마는 기존유저가 호환될 수 있도록 지원해주시면 더 좋을 것 같습니다.

    어떤형태로 만들어도 되지만 기존 자료와 만들어진 자료의 호환성이 안맞게되면 그 부담감은 고스란히 유저들에게 가기 때문이예요.

    물론 스케줄 모듈자체가 기존에 너무 간단한 기능만 지원했기 때문에 유저가 없었다는 측면에서 업그레이드가 괜찮았지만 잘 이용해오던 유저입장에서는 그게 힘들어지거든요 ㅎㅎ :)

    그런 부분에서 호환성까지 잘 맞았더라면 좋지 않을까 생각이 드네요!! ㅎㅎ

    고마워요! 다 죽어가던 자료 살려주셔서ㅎㅎ
  • profile profile

    조금만 손보자는 게 일이 커져버렸어요ㅠ
    어느 순간부터 흑염룡의 기운이 ... 정신을 차려보니 돌이킬 수 없게 됐더라구요ㅠㅠ
    코노리님이 socialXE 제작할 때 이런 기분이셨으려나 하는 생각도 들더라구요ㅋㅋㅋ

    작업 중도에 모듈명과 스키마를 아예 새롭게 할 걸 그랬다는 고민에 빠지기도 하고,
    심지어는 schedule_srl을 아예 버리고 document 모듈과 연동하는 게 좋았겠다는 생각도 들었었습니다.
    아직도 뭐가 올바른 길이었을지 감이 안 잡히네요.

    아무튼 업데이트 한번 더하고 안정화되면 포인트 콘텐츠에도 올리겠습니다.
    저야말로 감사합니다.
    뛰어놀 수 있게 판을 만들어주셔서요!!

  • profile profile
    document와 연동하면 짧은 주소를 쓸 수 있다는 장점이 있지만 이미 라이믹스 2.0에서 사용하는 라우터기능이 적용된 이상 그렇게까지 필요 없고 해당 부분에 SEO부분만 잘 잡아서 metar정보만 띄어주신다면 문제가 없을 것 같네요 ㅎㅎ

    게시판모듈의 스케줄 스킨과 일반 스케줄모듈의 차이가 바로 거기에 있어서 SEO가 안좋다는 단점이 있거든요. (각 게시글이 게시글로 인식하지 않으므로 각각 스케줄에 대한 링크를 생성하거나 SEO링크가 따로 없죠)
  • profile profile

    이렇게 하면 되는 거죠?

    // add the schedule title to the browser
    Context::setCanonicalURL(getFullUrl('', 'mid', $this->module_info->mid, 'schedule_srl', $oSchedule->schedule_srl));
    $seo_title = config('seo.document_title') ? config('seo.document_title') : '$SITE_TITLE - $DOCUMENT_TITLE';
    Context::setBrowserTitle($seo_title, array(
        'site_title' => Context::getSiteTitle(),
        'site_subtitle' => Context::getSiteSubtitle(),
        'subpage_title' => $this->module_info->browser_title,
        'document_title' => $oSchedule->get('title'),
    ));

     

    게시판 소스를 가져와서 스케줄 모듈 콘텐트뷰 액션에 넣어놨는데, 서치 엔진이 어떻게 봐주는지는 아직 잘 모르겠지만 일단 이렇게 해두니 브라우저 타이틀에는 잘 들어가고 있는 것 같습니다.

    리스트 보기 같은 다른 액트에도 넣어줘야 할지는 잘 모르겠어요.

  • profile profile
    사이트 타이틀말고.. 각 게시글 마다 metar 데이터 붙는 항목들 있잖아요.

    왜.. 카카오톡에 링크 뿌리면 아래 붙는 임베드형식으로 가는것들요..

    그런것들이 안되죠.

    거기에 붙는 데이터가 없으니.
  • profile profile
    새로운 과제가 생겼네요.
    진짜 메타 태그들에서 본문 내용 추출이라든가 전혀 안 되고 있었군요.
    이것도 연구해서 옵션으로 넣어봐야겠습니다ㅋ
  • profile
    베리굿
  • profile profile
    마이 플레저~
  • ?

    Screenshot 2021-02-23 at 16.46.04.jpg

    캘린더형식에서는 일정이 보입니다.

    Screenshot 2021-02-23 at 16.46.24.jpg

    목록을 클릭하면 이렇게 아무 일정이 없네요.

     

    라이믹스 2.0.7 php7.0 호스팅환경입니다.

  • ? profile

    저 역시 같은 환경인데 일단 잘 나오고 있습니다.
    혹시 캐시파일 재생성, 권한 설정 체크 등도 해보셨을까요?

     

    0.png

  • ?
    저번에 설치한거라 요번에 모듈 업데이트를 하지 않았네요,
    대시보드에서 모듈 업데이트 해주고 나니 잘 나오네요.
    감사합니다.^.^
  • ? profile
    아하, 2.2로 업데이트하면서 썸네일 때문에 uploaded_count 컬럼을 추가했었거든요.
    확인 감사드립니다~
  • profile

    api는 일반 인증키 (Enecoding) / 일반 인증키 (Decoding) / End Point
    이렇게 3개가 나오던데 어떤걸 입력해야할까요? API 입력하는 공간은 한군데 밖에 없더라구요.

  • profile profile
    두 개 다 되는 걸로 알고 있는데요.
    아마 Enecoding이 좀 더 안전할 겁니다.
  • profile profile

    공휴일도 있고 음력도 있는데 둘중 아무것만 입력하면 될까요? 입력해도 작동은 안되는것 같네요. 저기준으로 Rhymix 2.0.1 버전입니다ㅑ.

  • profile profile
    2020년까지는 또 작동이 되는것 같네요. 2021년 2월부터는 안되는것 같고
  • profile profile

    두 개 다 활용신청을 하셔야 하고, 같은 계정이라면 발급받는 API키는 둘이 같을 겁니다.

    라이믹스 2.0.7에서 제작된 것이어서 가급적 최근 버전에서 테스트해보시길 권합니다.

  • profile
    안녕하세요. 스케쥴 모듈 디자인이 너무 맘에들어서 잘 써보려고 하는데요, 다 문제가 없는데 일정 작성하는 페이지로 넘어가면 레이아웃의 상단메뉴가 출력되지 않고 제목쓰는 칸이 모두 먹어버립니다. 라이믹스 최신버전이구요, 레이아웃은 Equeer 레이아웃 1.4.5버전입니다.
  • profile
    자문자답입니다. 제목 입력부분에 header class 라인을 아얘 삭제했더니 문제는 해결되었습니다. 혹시 이 행위가 다른데에 영향을 미치는지 궁금합니다.
  • profile
    구글캘린더 연동이랑 혹시 위젯도 가능할까요..