Trac 0.13dev 에서 기본 제공하는 기능을 별도의 코드 베이스로 플러그인에서 제공하는것은 비효율적이라
생각되나, Trac 0.13dev 에서 기본 제공하는 Datepicker 는 기능 추가(휴일 표시)나 UI 커스터마이징이 어려움.
어떻게 하면 Trac 0.13dev 의 core 에 묻어가면서, 새로운 기능을 안정적으로 제공할 수 있을까 고민 중
. 3차 커스터마이징 대상에서 Trac 0.11 지원 drop ? :
-- Library version Conflict
Timepicker Addon 은 jQuery UI 1.8.x 버전에서 작동 함.
(jQuery UI 1.7.x 버전에서도 작동 하지만, 키 입력 이벤트 처리가 구현되어 있지 않음)
Timepicker Addon 은 Trac 0.11 에 내장된 jQuery 1.2.3 / 1.2.6 버전과 호환되지 않음.
DecoratorPlugin 기존 버전은 jQuery UI 1.7.1 버전을 내장하여, Trac >= 0.11.1 (0.11.1 ~ 0.10dev) 에서 작동 함.
-- 휴일 표시 기능 구현
Trac 0.11 에는 json 관련 api 가 존재하지 않아, 휴일 표시 기능 구현을 위해서는
Trac 0.11 에 json 관련 api 를 포팅해야하고, Trac 0.12 이상 버전과 분리하여 개발해야 함.
. Timezone issue
Timepicker Addon 에는 단순히 타임존을 선택하는 기능만 존재하고,
Timezone Conversion, Timezone Validation 등등 세부 처리에 대한 구현이 전혀 없음.
(Client-side Javascipt 단독으로는 Timezone Conversion 처리가 불가능하기 때문임)
Timezone Conversion 을 Trac 서버에 AJAX 로 요청해서 json형식으로 받아서 처리할 수 있도록 커스터마이징 함.
Trac 서버에 dependent 한 코드이기 때문에, 해당 코드는 Timepicker Addon 프로젝트에 contribute 하지 않음.
라이선스 변경 과 Trac 지원 버전 결정에 대한 의사 결정에 시일이 걸려 배포까지는 시간이 걸릴 것 임.
#1942 : [patch] Add support for date type in custom ticket fields (Trac 1.1.1 로 변경)
-- 2012.3.3 추가 : jQuery UI integration 연동
#10245 : jQuery UI intergration 이 완료되었기에, 티켓 커스텀 필드와 커스텀 쿼리 날짜 필드에
datepicker, datetimepicker 를 사용할 있도록 진행 중 임.
#10178 : [PATCH] Allow TracQueries to order on multiple columns (next-major-releases 로 변경)
#9643 : Ticket search by query with auto completion (next-dev-1.1.x 로 변경)
#10245 : jQuery UI integration
Trac 에 jQuery UI 를 integration 하려는 논의가 진행되고 있는데, 날짜 필드에 달력 기능(datepicker)을 제공하는
Datefield 플러그인 기능을 Trac 에 내장하려는 방향으로 논의가 확장되고 있음.
The '@' in [@attr] has been removed. Deprecated since 1.2 this old syntax no longer works.
Simply remove the @ to upgrade.
. 달력(datepicker) 기능 : Trac 0.12 국제화(i18n) 적용
jQueryUI 의 Datepicker 는 이미 i18n 이 적용되어 있기 때문에
Trac 0.12 의 babel 로케일을 읽어서 Datepicker 로케일 파일과 연동하는 절차만으로 i18n 구현이 간단하게 처리됨.
단, jQueryUI 1.7.x 버전의 Datepicker 는 yearSuffix 옵션을 구현하지 않았기 때문에 CJK 파일을 패치함.
Trac 0.11 이나 Trac 0.12 이상에서 babel 이 설치 안되어 있으면 한국어 로케일로만 달력을 표시하도록 구현함.
Ticket #2182 – Release Notes
. Added i18n date and time feature
Ticket #2182 – API Changes
* `trac.util.datefmt`:
* `format_{date,time,datetime}`, `parse_date` and `get_{date,datetime}_format_hint` takes
optionals locale argument (default to None) [10571]
* Added `user_time` helper function for `format_*` and `parse_date` functions [10571]
* `trac.web.main`: Added `lc_time` property of `Request` class for selecting the date format [10571]
-- 2012.1.15 추가 : Trac 0.13 변경 사항 관련 진행 목표 추가
Trac 0.13 에서 datepicker 기능이 내장되면 해당 코드를 Trac 0.11 / 0.12 로 backport 하거나
사용법이 동일하도록 clone 으로 구현할 계획 임.
그러나, DateField Plugin 에서 동일한 목표로 개발을 진행한다면 달력 기능은 삭제할 계획 임.
Trac 0.12 환경에서 babel 을 통한 i18n 구현은 아직 완벽하지 않기에
원 저작권자에게 국제화 버전 릴리즈는 빠른감이 있다고 의견을 밝히고, 원 저작권자의 의사를 최대한 존중한
( Trac 0.11 하위 호환성을 제거한 ) GanttCalendarPlugin 국제화 버전을 릴리즈 하였습니다.
그러나, 개인적으로 하위 호환성을 가능하면 유지하고자 하는 개발 목표을 가지고 있기에
(하위 호환성 유지와 babel 을 통한 i18n 구현은 서로 상충되는 목표 임)
당분간 GanttCalendarPlugin 한국어 커스터마이즈 버전 개발을 별도로 유지하게 되었습니다.
그런 이유로 GanttCalendarPlugin 한국어 커스터마이즈 버전과 Shibuya.trac project 의 GanttCalendarPlugin 국제화 버전은
상호간에 부모이면서 자식도 되는 이상한 상황이 연출되었습니다.
예정에 없던 국제화 버전 개발로 인해 한국어 커스터마이즈 버전 최종 마무리 작업이 지연되어
우여곡절 끝에 2차 커스터마이징하여 릴리즈 하게 되었습니다.
. Trac 0.11 / 0.12 전용 버전 릴리즈
. 간트 차트에 일정 미등록 티켓 표시 기능 추가
- 시작일(due_assign)만 있거나 완료기한(due_close)만 있는 티켓을 간트 차트에 기본으로 표시하도록 기능 변경
( 캘린더에서 조회되는 결과와 일관성을 유지시키기 위함 )
- 간트 차트에서 [ 일정 미등록 티켓 포함 ] 옵션을 선택하여 조회하면
일정을 스케줄링 하지 않은 [ 시작일(due_assign) 과 완료기한(due_close) 필드값이 모두 NULL 인 ] 티켓을
포함하여 표시하도록 기능 추가
일정을 스케줄링 하지 않은 [ 일정 미등록 티켓 ] 은 간트 차트에서 첫 날짜에 표시되도록 하였고,
사용자에게 경각심을 주기 위해 간트 차트에서 조회할 년월을 변경해도 따라 다니도록 구현함. (버그 아님)
. 간트 차트 / 캘린더에 티켓 건수 출력 추가
. 간트 차트 / 캘린더 풍선도움말에 참조(Cc) 출력 추가
. 기본 날짜 형식을 ISO 8601 format 으로 변경 및 날짜 처리 관련 코드 개선
. 기타 버그 패치 . 간트 차트 바(bar)를 클릭하여 해당 티켓 페이지로 이동할 수 있도록 기능 추가 (2011.6.30 추가) . Trac 0.13 호환성 패치 - babel date format 지원 (2011.7.13 추가)
Ticket #2182 – Release Notes
. Added i18n date and time feature
Ticket #2182 – API Changes
* `trac.util.datefmt`:
* `format_{date,time,datetime}`, `parse_date` and `get_{date,datetime}_format_hint` takes
optionals locale argument (default to None) [10571]
* Added `user_time` helper function for `format_*` and `parse_date` functions [10571]
* `trac.web.main`: Added `lc_time` property of `Request` class for selecting the date format [10571]
. 간트 차트 용어 정리 및 캘린더 mainnav 잘못 표시되는 문제 수정 (2011.10.22 추가) . 캘린더에 주간 보기(Weekly View) 기능 추가 (2011.11.5 추가) . 2차 커스터마이징 결과를 Shibuya.trac project 의 GanttCalendarPlugin 국제화 버전에 기증 (2011.11.12 추가)
개발 목표가 상이한 날짜 처리 관련 코드와 일정 미등록 티켓 관련 코드 등을 제외한
대부분의 개선 사항을 Shibuya.trac project 로 contribute 함.
. Trac Hacks 위키 페이지 문서화 완료 (2012.6.25 추가) . Trac 버전 호환성 개선 - Trac 0.11 용 은 Trac >= 0.11 (0.11 ~ 1.0dev) 에서 작동하고, Trac 0.12 용 은 Trac >= 0.12 (0.12 ~ 1.0dev) 에서 작동하도록 Trac 버전 별로 별도의 호환성 코드를 각각 추가함
특히나, Trac 의 핵심 API 인 parse_date() / format_date() 함수의 버그를 플러그인 자체 내에서 해결하도록
Trac 버전 별로 예외 코드를 각각 작성해서 추가했습니다.
(이 것은 운영체제의 버그를 어플리케이션 자체적으로 해결하는 것 과 비슷한 일 임. 거지같은 Trac 아키텍처 !!!)
만약, C 컴파일러가 없는 환경에서 egg 파일로 설치 시 에러가 발생하는데 문제를 해결할 수 없다면,
simplejson 성능 향상 옵션을 무시하고 설치해도 파이썬 내장 json 모듈 보다는 더 나은 성능을 제공합니다.
simplejson 설치 후, 컴플리트 유저 플러그인을 다운로드 받아 압축을 해제해서 다음과 같은 방법으로 설치합니다.
python setup.py install
설치 완료 후 trac.ini 파일을 수정하여 설정을 변경할 수 있습니다.
기본 설정값은 여러 테스트를 통해 한글 입력 환경에 최적화 하였으나 개인 기호에 맞지 않을 수 도 있습니다.
필요할 경우 아래 스크린 샷을 참고하여 설정값을 변경합니다.
이름이 설정된 사용자는 한글 이름으로도 사용자 ID (Username) 입력을 완성할 수 있습니다.
(한글은 자음 단위로는 인식하지 않고, 자음 + 모음으로 이루어진 완성된 글자 단위로만 인식합니다.)
- 주의사항
. 컴플리트 유저 플러그인 한국어 커스터마이즈 버전은 Trac 0.11 이상에서 작동합니다.
(Windows XP SP3, Python 2.5.2 , Trac 0.11.6 / Trac 0.12.2 환경에서 작동함을 확인 함)
그러나, 다양한 환경에서 테스트 한 것이 아니므로 모든 환경에서 정상 작동함을 보장하지는 않습니다.
-- 2011.10.25 추가
. 파이어폭스 4 부터는 한글 입력 시에 오작동 합니다. ( IE, 구글 크롬은 정상 작동 함 )
파이어폭스 4 이상 버전이나 특정 웹 브라우저에서 한글 입력 시에 오작동할 경우에는
한글 문장을 입력한 후에 스페이스 키 한번 + 백스페이스 키 한번을 추가로 입력하는 꼼수를 사용해야 합니다.
( ex: 한글 '테' 를 입력하여 자동 완성을 할 경우 '테' 입력 후 스페이스 키 한번 + 백스페이스 키 한번 )
MS 윈도우즈에 내장된 IME 의 버그로 인해 발생하는 문제로 알려져있는데,
트릭을 써서 해결하기에는 투자할 시간이 아까워서 방치해 두고 있습니다.
(Trac 에서 디폴트 캐랙터 셑은 일본어 cp932 로 변경되어 있어서 스트링 처리가 약간 다르고
날짜 포맷은 시스템 로케일을 무시하고 강제로 일본 날짜 포맷으로 고정이 됩니다. : YYYY/MM/DD
따라서, 원본 Trac 0.12.1 과 원본 plugin 과는 조금 다르다는 점을 유의해야 합니다.)
트랙 라이트닝 설치 시에 Python, Apache, Trac, Subversion, Maven, Hudson 등
Trac 과 CI tool 구동에 필요한 각종 소프트웨어가 같이 설치되므로
기존에 이미 Trac 환경이 설치되어 있다면, 설치 전에 백업같은 사전 조치를 해야합니다.