Dotproject-설치

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기

오픈소스로 제공되는 PMS (Project Management System)인 dotProject에서 설치 부분을 정리 한다.

설치 가이드

설치전 사전 준비 사항

dotProject용 DB 설정

  • MySQL에 dotProject에서 사용할 Schmea를 등록한다.
  • MySQL Administrator에 root 관리자로 로그인 한다.
  • 좌측 상단 창에서 "Catalogs"를 선택한다.
  • 좌측 하단의 "Schemata" 창에서 우측 마우스를 누른다.
  • "Create New Schema" 메뉴를 선택하여 Schema를 생성한다.
  • Schema 생성화면에서 "Schema name"으로 "dotprojectdb"를 입력한다.
DB Schema 등록


  • MySQL에 dotProject에서 사용할 사용자를 등록한다.
  • 좌측 상단 창에서 "User Administration"을 선택한다.
  • 좌측 하단의 "Users Accounts" 창에서 우측 마우스를 누른다.
  • "Add new user" 메뉴를 선택하여 사용자를 생성한다.
  • "User Information" 탭에서 "MySQL User"("dotproject"), "Password", "Confirm Password" 등을 등록한다.
DB 사용자 등록


  • MySQL에 dotProject에서 사용할 사용자의 권한을 설정한다.
  • "Schema Privileges" 탭에서 사용자가 사용할 Schema("dotprojectdb")를 선택한다.
  • "Available Privileges"의 모든 권한을 "Assigned Privileges"로 이동한다.
  • "Apply changes" 버튼을 눌려 등록된 정보를 저장한다.
권한 부여


  • MySQL Query Browser에 접속한다.
  • 상단의 "Tools" 메뉴에서 "MySQL Query Browser" 메뉴를 선택한다.
Query Browser 접속


  • 사용자의 MySQL 데이터베이스 접속 정보를 추가한다.
  • 우측의 "Schemata" 탭에서 "mysql"을 더블 클릭하여 선택한다.
  • grant all privileges on dotprojectdb.* to dotproject@localhost identified by '암호'; (사용자에게 Schmea에 대한 권한을 추가)
  • flush privileges; (위 명령을 통해 설정한 권한을 데이터베이스에 반영)
  • select host, user, password from user order by user, host; (사용자의 접속 정보 확인)
접속 정보 추가
  • MySQL Query Browser가 아니라 DOS 창에서 접속 정보를 추가하는 방법
mysql -uroot -pxxx mysql
    grant all privileges on dotprojectdb.* 
        to dotproject@localhost identified by '암호';
    flush privileges;
    select host, user, password from user order by user, host;
    exit


dotProject 설치

  • %APACHE_HOME%/conf/httpd.conf 파일에 dotproject 관련 정보를 추가하고 Apache를 재기동 한다.
  • Windows Vista의 경우 관리자로 실행하여 수정한다.
<Directory />
    Options FollowSymLinks
    AllowOverride None
#    Order deny,allow     (이 라인을 주석으로 막는다)
#    Deny from all        (이 라인을 주석으로 막는다)
</Directory>

###-----------------------------------------------
### dotproject 설정, Document Root가 d:/www 일 경우
Alias   /dotproject    d:/www/dotproject
<Directory "/dotproject">
    Order allow,deny
    Allow from all
</Directory>


  • PHP의 세션 설정을 조정한다.
  • Drupal에서 문제가 발생하여 1로 변경 하지 않고 원래대로 0으로 설정하여 사용한다.
vi D:/OpenBiz/31_application/php525/php.ini
    ; Initialize session on request startup.
    session.auto_start = 1


  • Apache HTTP Server를 재기동 한다.


  • 다운로드 사이트에서 dotProject 2.1.2의 설치 프로그램(dotproject-2.1.2.zip)을 다운로드 한다.
  • 다운로드한 파일의 압축을 풀어 "d:/OpenBiz/31_application/dotproject" 로 복사 한다.


  • 설치와 관련된 요구사항을 만족하는지 확인하고 "Start Installation" 버튼을 눌러 설치를 시작한다.

설치 준비

  • Database 접속 정보를 입력하고 "install db & write cfg" 버튼을 눌러 설치를 종료 한다.

설치 종료

  • D:/OpenBiz/31_application/dotproject/install 폴더를 삭제한다.



한글 설정

  • 압축을 풀어 D:/OpenBiz/31_application/dotproject/locales/ko_KR 로 복사 한다.
  • 한글 파일의 한글 정보를 설정한다.
  • D:/OpenBiz/31_application/dotproject/locales/ko_KR/lang.php를 다음과 같이 편집 한다.
//$LANGUAGES['ko_KR'] = array ( $dir, 'Korean (KR)', 'Korean (KO)', 'kor');
$LANGUAGES['ko_KR'] = array ( $dir, 'Korean', 'Korean', 'ko_KR');
  • "System Admin" 탭을 선택 한다.
  • 시스템 구성에서 호스트 로케일을 "ko_KR"을 설정 한다.
  • "Default User Preferences" 링크를 선택한 후 locale를 "korean"으로 수정 한다.
  • 기타 관련 설정도 같이 변경 한다.
  • 로그아웃 후 다시 로그인하면 변경된 설정으로 화면이 표시된다.
  • 보고서 한글 설정
  • /modules/projects/reports/*.txt 파일을 복사하여 /modules/projects/reports/*.ko_KR.txt 작성
  • Gant Chart 한글 설정
  • 한글화 결과 확인은 "프로젝트" 탭 -> "Gantt" 탭에서 확인 한다.
  • 반드시 매번 로그아웃 후 다시 로그인 하여 확인 한다.
  • 나눔명조.ttf를 nanum.ttf로 나눔명조Bold.ttf를 nanumBold.ttf로 이름을 변경 한다.
  • vi D:/OpenBiz/31_application/dotproject/lib/jpgraph/src/jpgraph.php 에서 아래와 같이 수정 한다.
   DEFINE("FF_CUSTOM",18);를 추가 한다.

   FF_CUSTOM =>  array(FS_NORMAL=>'nanum.ttf', FS_BOLD=>'nanumBold.ttf', 
       FS_ITALIC=>'nanum.ttf', FS_BOLDITALIC=>'nanumBold.ttf')
  • vi D:/OpenBiz/31_application/dotproject/modules/tasks/gantt.php
   $graph->scale->actinfo->SetFont(FF_CUSTOM, FS_NORMAL, 8); 을
   $graph->scale->actinfo->SetFont(FF_CUSTOM);               로 수정 한다.

   if ($locale_char_set=='utf-8' && function_exists('utf8_decode')) {
       //$name = utf8_decode($name);                         주석 처리 한다.
   }
  • vi D:/OpenBiz/31_application/dotproject/modules/projects/gantt.php 에서 아래와 같이 주석 처리 한다.
//   if ($locale_char_set=='utf-8' && function_exists('utf8_decode')) {
//       $name = ((strlen(utf8_decode($p['project_name'])) > 25)
//             ? (substr(utf8_decode($p['project_name']), 0, 22) . '...')
//               : utf8_decode($p['project_name']));
//   } else {
//       //while using charset different than UTF-8 we need not to use utf8_deocde
       $name = ((strlen($p['project_name']) > 25) 
             ? (substr($p['project_name'], 0, 22).'...') : $p['project_name']) ;
//   }

//--- 아래의 주석을 해제 한다.
//$graph->scale->actinfo->SetFont(FF_CUSTOM);
  • vi D:/OpenBiz/31_application/dotproject/modules/projects/gantt2.php 에서 아래와 같이 주석 처리 한다.
//   if ($locale_char_set=='utf-8' && function_exists('utf_decode')) {
//       $name = ((strlen(utf8_decode($t['task_name'])) > 25)
//             ? (substr(utf8_decode($t['task_name']), 0, 22) . '...')
//             : utf8_decode($t['task_name']));
//       $nameUser = $t['user_name'];
//   } else {
//       //while using charset different than UTF-8 we need not to use utf8_deocde
         $name = ((strlen($t['task_name']) > 25) 
               ? (substr($t['task_name'], 0, 22) . '...')
               : $t['task_name']);
         $nameUser = $t['user_name'];
//             }
  • 한글 파일 다운로드시 한글파일명이 깨어질 경우
vi D:/OpenBiz/31_application/dotproject/fileviewer.php
   header( 'Content-disposition: attachment; filename="'.$file['file_name'].'"' ); 를
   header( 'Content-disposition: attachment; 
           filename="'.iconv('utf-8','euc-kr',$file['file_name']).'"' ); 로 수정 한다.
  • 날자 형식을 추가할 경우
vi D:/OpenBiz/31_application/dotproject/modules/system/addeditpref.php
   $f = "%Y.%m.%d"; $dates[$f]     = $ex->format( $f ); 추가 (약 105 라인 정도에)
  • 관리자로 로그인하여 "시스템 관리" -> "사용자 기본설정" 메뉴에서 "짧은 날짜 포맷"을 방금 추가한 것으로 변경 한다.


  • 2.0.4 한글 팩을 2.1.2 한글팩으로 재작성
  • "시스템 관리" -> "번역 관리"에서 한글이 설정 되지 않았거나 잘 못 번역된 한글을 수정하여 저장한다.

Gantte 한글 추가 설정

위에서 설명한 것 처럼 한글 폰트를 설정하면 간트 챠트에서 한글을 볼 수 있으나 간트 챠트의 우측 부분(년, 월, 주, 요일 표시 부분)은 한글이 적용되지 않는다. 확인하여 본 결과 dotProject에서 지원하지 않는 기능으로 dotProject에 요청하여 한글 지원이 되도록 한 후 사용하여야 한다.
아래 정리된 사항은 나처럼 성격이 급한 사람을 위해 임시 조치 방법을 정리 한다.

  • $DOTPROJECT_HOME/lib/jpgraph/src/jpgraph_gantt.php.php 파일에서 아래와 같이 수정 한다. 단, 한글이 정상적으로 표시되도록 하기 위해서는 해당 파일을 UTF-8 형태로 저장하여야 한다.
  • StrokeYears(~) 함수 : 연 표시 함수
$img->SetFont(FF_CUSTOM, FS_NORMAL, 8);  //--- 이 라인을 추가 한다.
$img->StrokeText(round($xt+$yearwidth/2+1),
    round($yb-$this->year->iTitleVertMargin),
    $year."년");   //--- 여기에 ."년"을 추가 한다.
  • StrokeMonths(~) 함수 : 월 표시 함수
$img->SetFont(FF_CUSTOM, FS_NORMAL, 8); //--- 이 라인을 추가 한다.
//$img->StrokeText(round($xt+$monthwidth/2+1),  //--- 이 세줄을 지운다.
//    round($yb-$this->month->iTitleVertMargin),
//    $monthName);
$img->StrokeText(round($xt+$monthwidth/2+1),    //--- 이 세줄을 추가 한다.
    round($yb-$this->month->iTitleVertMargin),
    ($monthnbr + 1)."월");

// $img->StrokeText(round($x+$w/2+1),            //--- 이 두줄을 지운다.
//     round($yb-$this->month->iTitleVertMargin),$monthName);
$img->StrokeText(round($x+$w/2+1),              //--- 이 두줄을 추가 한다.
    round($yb-$this->month->iTitleVertMargin),($monthnbr + 1)."월");
  • StrokeWeeks(~) 함수 : 주 표시 함수
elseif( $this->week->iStyle==WEEKSTYLE_FIRSTDAY || 
    $this->week->iStyle==WEEKSTYLE_FIRSTDAYWNBR ) 
    // $txt = date("j/n",$week);    //--- 이 라인을 지운다.
    $txt = date("n월 j일",$week);   //--- 이 라인을 추가 한다.

$img->SetFont(FF_CUSTOM, FS_NORMAL, 8);
//--- 위 코드를 추가 한다.
$img->StrokeText(round($x+$txtOffset),
    round($yb-$this->week->iTitleVertMargin),$txt);
  • StrokeDays(~) 함수 : 요일 표시 함수
$txt = strftime('%A',$datestamp);
$txt = strtoupper($txt[0]);
//--- 아래 코드를 추가 한다.
$txt = strftime('%a',$datestamp);
if ($txt == "Mon") {
    $txt = "월";
} else if ($txt == "Tue") {
    $txt = "화";
} else if ($txt == "Wed") {
    $txt = "수";
} else if ($txt == "Thu") {
    $txt = "목";
} else if ($txt == "Fri") {
    $txt = "금";
} else if ($txt == "Sat") {
    $txt = "토";
} else {
    $txt = "일";
}

$img->SetFont(FF_CUSTOM, FS_NORMAL, 6);
//--- 위 코드를 추가 한다.
$img->StrokeText(round($x+$daywidth/2+1),
      round($yb-$this->day->iTitleVertMargin),$txt);

Linux용 설치 가이드

설치전 사전 준비 사항

  • Ubuntu Server 설치
  • MySQL DBMS 설치
  • Apach HTTP Server 설치
  • PHP 설치

MySQL에 DB와 사용자 생성

  • phpMyAdmin에 로그인 한다.
  • "새 데이터베이스 만들기" 에서 dotproject, utf8_unicode_ci 를 사용하여 데이터베이스를 생성한다.
  • "사용권한" 링크를 선택 한 후, "새 사용자 추가" 링크를 선택한다.
  • 사용자명에 "dotproject"을 등록하고 암호를 등록하고 Database for user 영역에서는 "create database with same name and grant all privileges"를 선택한 후 화면 하단의 "실행" 버튼을 선택하여 사용자를 추가한다.
  • phpMyAdmin의 첫 화면에서 좌측 메뉴의 mysql 링크를 선택한다.
  • "SQL" 탭을 선택한 후 아래 sql 문을 차례대로 실행한다.
grant all privileges on DB명.* to 아이디명@localhost identified by '암호';
flush privileges;
select host, user, password from user order by user, host;

dotProject 설치

  • 다운로드 사이트에서 dotProject 2.1.2의 설치 프로그램(dotproject-2.1.2.tar.gz)을 다운로드 한다.


  • Document Root 폴더(/var/www)에 다운로드 받은 파일의 압축을 푼다.
cd /var/www
gzip -g dotproject-2.1.2.tar.gz
tar xvf dotproject-2.1.2.tar
chown -R 사용자아이디:그룹아이디 dotproject : 실제 사용할 사용자로 소유권을 변경한다.


  • 설치를 위해서 폴더의 권한을 변경한다.
cd /var/www/dotproject
chmod -R 777 files
chmod -R 777 locales
chmod -R 777 includes


  • PHP의 세션 설정을 조정한다.
vi /etc/php5/apache2/php.ini
    ; Initialize session on request startup.
    session.auto_start = 1
  • /etc/init.d/apache2 restart


  • 설치 완료 후 아래 작업을 추가로 진행한다.
cd /var/www/dotproject
rm -R install
chmod -R 755 files
chmod -R 755 locales
chmod -R 755 includes
  • 첨부파일 업로드 다운로드 관련하여 폴더의 권한을 설정한다.
cd /var/www/dotproject
chmod -R 777 files
또는
chown -R www-data:www-data files

한글 설정

  • 윈도우에서 dp2.0.4_Locale_ko_kr_20060720_ver.0.5.tar로 압축을 푼다.
  • dotProject에 한글 파일을 설치한다.
cd /var/www/dotproject/locales tar xvf dp2.0.4_Locale_ko_kr_20060720_ver.0.5.tar
cd ko_KR
vi lang.php
//$LANGUAGES['ko_KR'] = array ( $dir, 'Korean (KR)', 'Korean (KO)', 'kor');
$LANGUAGES['ko_KR'] = array ( $dir, 'Korean', 'Korean', 'ko_KR');   
  • "System Admin" 탭을 선택 한다.
  • "System Configuration" 링크를 선택한 후, Host Locale을 "ko_KR.UTF-8"로 수정 한다.
  • "Default User Preferences" 링크를 선택한 후 locale를 "korean"으로 수정 한다.
  • 기타 관련 설정도 같이 변경 한다.
  • 로그아웃 후 다시 로그인하면 변경된 설정으로 화면이 표시된다.
  • Gant Chart 한글 설정
  • 한글화 결과 확인은 "프로젝트" 탭 -> "Gantt" 탭에서 확인 한다.
  • 반드시 매번 로그아웃 후 다시 로그인 하여 확인 한다.
chown 사용자:그룹 *.ttf          : 웹에서 사용하는 사용자와 그룹으로 소유권을 변경 한다.
vi /var/www/dotproject/lib/jpgraph/src/jpgraph.php 에서 아래와 같이 수정 한다.
   DEFINE("FF_CUSTOM",18);를 추가 한다.

   FF_CUSTOM =>  array(FS_NORMAL=>'AuctionGothic_Medium.ttf',
      FS_BOLD=>'AuctionGothic_Bold.ttf', FS_ITALIC=>'AuctionGothic_Medium.ttf',
      FS_BOLDITALIC=>'AuctionGothic_Bold.ttf')
vi /var/www/dotproject/modules/tasks/gantt.php
   $graph->scale->actinfo->SetFont(FF_CUSTOM, FS_NORMAL, 8); 을
   $graph->scale->actinfo->SetFont(FF_CUSTOM);               로 수정 한다.

   if ($locale_char_set=='utf-8' && function_exists('utf8_decode')) {
       //$name = utf8_decode($name);                         주석 처리 한다.
   }
vi /var/www/dotproject/modules/projects/gantt.php 에서 아래와 같이 주석 처리 한다.
//   if ($locale_char_set=='utf-8' && function_exists('utf8_decode')) {
//       $name = ((strlen(utf8_decode($p['project_name'])) > 25)
//             ? (substr(utf8_decode($p['project_name']), 0, 22) . '...')
//               : utf8_decode($p['project_name']));
//   } else {
//       //while using charset different than UTF-8 we need not to use utf8_deocde
       $name = ((strlen($p['project_name']) > 25) 
             ? (substr($p['project_name'], 0, 22).'...') : $p['project_name']) ;
//   }
vi /var/www/dotproject/modules/projects/gantt2.php 에서 아래와 같이 주석 처리 한다.
//   if ($locale_char_set=='utf-8' && function_exists('utf_decode')) {
//       $name = ((strlen(utf8_decode($t['task_name'])) > 25)
//             ? (substr(utf8_decode($t['task_name']), 0, 22) . '...')
//             : utf8_decode($t['task_name']));
//       $nameUser = $t['user_name'];
//   } else {
//       //while using charset different than UTF-8 we need not to use utf8_deocde
         $name = ((strlen($t['task_name']) > 25) 
               ? (substr($t['task_name'], 0, 22) . '...')
               : $t['task_name']);
         $nameUser = $t['user_name'];
//             }
  • 한글 파일 다운로드시 한글파일명이 깨어질 경우
vi /var/www/dotproject/fileviewer.php
   header( 'Content-disposition: attachment; filename="'.$file['file_name'].'"' ); 를
   header( 'Content-disposition: attachment; 
           filename="'.iconv('utf-8','euc-kr',$file['file_name']).'"' ); 로 수정 한다.
  • 날자 형식을 추가할 경우
vi /var/www/dotproject/modules/system/addeditpref.php
   $f = "%Y.%m.%d"; $dates[$f]     = $ex->format( $f ); 추가 (약 105 라인 정도에)
  • 관리자로 로그인하여 "시스템 관리" -> "사용자 기본설정" 메뉴에서 "짧은 날짜 포맷"을 방금 추가한 것으로 변경 한다.


  • 2.0.4 한글 팩을 2.1.2 한글팩으로 재작성
  • "시스템 관리" -> "번역 관리"에서 한글이 설정 되지 않았거나 잘 못 번역된 한글을 수정하여 저장한다.

FlexGantt 설치

  • Linux 환경에서 FlexGantt 1.0 RC 2.2, 2009.1.23를 설치 한다.
  • 다운로드 사이트에서 설치 프로그램을 다운로드 받아 dotProject의 해당 폴더로 복사한다.


  • vi /var/www/dotproject/lib/jpgraph/src/jpgraph_ttf.inc.php 에서 아래와 같이 수정 한다.
   FF_DEJAVU =>    array(FS_NORMAL => 'AuctionGothic_Medium.ttf',
           FS_BOLD => 'AuctionGothic_Bold.ttf',
           FS_ITALIC => 'AuctionGothic_Medium.ttf',
           FS_BOLDITALIC => 'AuctionGothic_Bold.ttf'
                           ),
   FF_DEJAVUMONO => array(FS_NORMAL => 'AuctionGothic_Medium.ttf',
           FS_BOLD => 'AuctionGothic_Bold.ttf',
           FS_ITALIC => 'AuctionGothic_Medium.ttf',
           FS_BOLDITALIC => 'AuctionGothic_Bold.ttf'
                           ),
   FF_VERA =>    array(FS_NORMAL       =>'AuctionGothic_Medium.ttf',
           FS_BOLD         =>'AuctionGothic_Bold.ttf',
           FS_ITALIC       =>'AuctionGothic_Medium.ttf',
           FS_BOLDITALIC   =>'AuctionGothic_Bold.ttf' ),
  • vi /var/www/dotproject/lib/jpgraph/src/jpgraph_gantt.php
   function GanttVLine($aDate,$aTitle="",$aColor="black",
                       $aWeight=3,$aStyle="dashed") {
       $this->title->SetFont(FF_DEJAVU, FS_BOLD, 8);  //--- 추가
       $this->title->Set($aTitle);
   }
  • vi /var/www/dotproject/modules/tasks/gantt.php
   if ($locale_char_set=='utf-8' && function_exists('utf8_decode')) {
//     $name = utf8_decode($name);  //--- 주석 처리 한다.
   }

       $graph->title->SetFont(FF_DEJAVU, FS_BOLD, 12);  //--- 추가
       if (function_exists('utf8_decode')) {
//             $gtitle = utf8_decode($projects[$project_id]['project_name']);
               $gtitle = $projects[$project_id]['project_name'];  //--- 추가
       } else {
               $gtitle = $projects[$project_id]['project_name'];
       }

PDF 다운로시 파일에 한글 설정

  • 트루타입 글꼴을 Adobe Type1 형식으로 변환하는 프로그램 설치
  • apt-get install ttf2pt1
cp AuctionGothic_Bold.ttf /var/www/dotproject/lib/ezpdf/fonts
ttf2pt1 -A AGBold.ttf
*** PDF로 저장시 afm 폰트 파일이 정확하지 않아 페이지 제목의 한글이 깨어짐
    폰트 이름으로 Unicode를 사용하지 않는 폰트가 필요함
  • vi /var/www/dotproject/modules/tasks/gantt_pdf.php
       $name = $a['task_name'];
       if ($locale_char_set=='utf-8' && function_exists('utf8_decode')) {
//             $name = utf8_decode($name);
       }

function strJpGraph($text) {
	global $locale_char_set;
	if ( $locale_char_set=='utf-8' && function_exists("utf8_decode") ) {
//		return utf8_decode($text);
		return $text;
	} else {
		return $text;
	}
}

       function strEzPdf($text) {
           global $locale_char_set;
           if ( $locale_char_set=='utf-8' && function_exists("utf8_decode") ) {
//                 return utf8_decode($text);
                   return $text;
           } else {
                   return $text;
           }
       }

//     $pdf->selectFont( "$font_dir/Helvetica-Bold.afm" );
       $pdf->selectFont( "$font_dir/AuctionGothic_Bold.afm" );

문제 해결

  • 작성 날짜 : 2010. 12. 21 ~
  • dotproject 를 설치 및 한글화 하는데 있어서 나타나는 문제를 해결하는 문서이다.
  • 2010. 11.19 업데이트된 최신 2.1.4 버젼을 기준으로 설명한다.
  • 테스트 환경 : windows 2008 server, Apache 2.2.11, PHP 5.3.0, MySql 5.1.36

DB 한글화 표시 문제

  • dotproject 를 설치 후에 DB 자체에서 한글화가 되지 않아 보고서, 연락처 포팅등에서 한글화 에러를 미리 방지 하기 위함이다.
  • 설치 후에 바로 수행 하기를 권장한다.
  • 참고 링크 : http://nesbbs.kldp.net/projects/dotproject-ko/forum/312353
  • FILE: include\db_adodb.php, LINE: 31. db_connect() 함수 마지막 부분
mysql_set_charset( 'utf8', $db->_connectionID ); // 추가

전체적인 Locale 설정(한글화)

오른쪽 달력 문제 해결

  • 처음 설치시 오른쪽 달력의 표시가 아래 그림과 같이 제대로 나오지 않음을 알 수 있다.
  • 그림과 같이 바꿔 보자.

달력전.png => 달력후.png

  • \modules\calendar\calender.class.php
  • line 239
$s .= $this->this_month->format("%Y년 ") . ($AppUI->_($this->this_month->format("%m월")) 
. (($this->clickMonth) ? '</a>' : ));
//$s .= ($AppUI->_($this->this_month->format("%B")) . $this->this_month->format(" %Y") 
//       . (($this->clickMonth) ? '</a>' : ));
  • \modules\calendar\calender.class.php
  • line 277
//		foreach ($wk as $day) {

// $s .= ("\n\t\t" . '' . $AppUI->_($day) . '');

//		}

$s .= ("\n\t\t" . '' . "일" . ''); $s .= ("\n\t\t" . '' . "월" . ''); $s .= ("\n\t\t" . '' . "화" . ''); $s .= ("\n\t\t" . '' . "수" . ''); $s .= ("\n\t\t" . '' . "목" . ''); $s .= ("\n\t\t" . '' . "금" . ''); $s .= ("\n\t\t" . '' . "토" . '');

  • 2.1.3 에서는 line 277 과정이 필요없이 그냥 된다.
  • 저장시에 문자셋을 유니코드 UTF-8 으로 저장하여야 함

날짜 형식 변경

  • dotproject 특성상 연도표시가 한국 실정에 맞게 이루어 지지 않는다.
  • /locales/ko_KR/locale.php
<?php
$locale_char_set='utf-8';
define('LOCALE_FIRST_DAY',0);
define('LOCALE_TIME_FORMAT','%I:%M %p');
define('LOCALE_DATE_FORMAT','%Y.%m.%d');
?>
  • /modules/system/addeditpref.php (Line 102) 을 추가한다. 2007.01.07 형식.
  • 시스템 관리 - 사용자 기본 설정 - 짧은 날짜 포멧 수정
$f = "%Y.%m.%d"; 
$dates[$f] = $ex->format( $f );

SMTP 이메일 설정

이메일 설정.jpg

  • 이메일을 다음과 같이 설정하기에 앞서서 원래 서버에 smtp 가 동작하는지 제대로 테스트 하기 바란다.
  • 테스트가 안된다면 절때 dotproject에서 메일이 전송될 수 없다.
  • telnet 을 이용한 smtp 테스트
  • 꼭 이메일 큐에 체크 해제를 하라.
  • smtp 호스트에는 아이피 주소를 입력하라.
  • smtp 계정이 있다면 설정한 계정과 비번을 입력하라.
  • dotproject의 핵심기능이며 잘 동작하므로 꼭 설정해서 쓰기 바란다.

Company 분류 수정

  • 고객사 또는 회사 라고 번역된 company 부분에서 많은 분류를 줄이는 방법을 소개한다.
  • 영문기준 분류 : All Companies Client Vendor Supplier Consultant Government Internal Not Applicable
  • 데이터 베이스 수정을 통해 가능하다.
  • (table) Sysvals -> Companytype 을 수정한다.

이슈 에서의 report as PDF 한글화

  • 참고 자료 : http://blog.naver.com/PostView.nhn?blogId=sorendo&logNo=60018355059
  • 이슈 및 PDF 출력에서의 한글화의 문제점을 해결한다.
  • 위와 같은 방법으로 할려니 afm 이 제대로 생성되지 않아서 인지 안된다.
  • 참고자료를 참고하여 다음과 같은 파일을 해당 경로에 덮어 씌운다.
  • media:pdf 설정파일.zip 압축을 풀고 아래 위치에 덮어 씌운다.
  • \dotproject\modules\ticketsmith\pdf.php
  • \dotproject\lib\ezpdf\class.ezpdf.php
  • \dotproject\lib\ezpdf\class.pdf.php
  • pdf.php에서 center의 위치가 제대로 잡히지 않아서 left 설정하고 무식하게 띄워쓰기로 작업하였다.
  • 서버의 상황에 따라 pdf.php 를 쓰지 않고 제일 마지막줄 만 아래와 같이 수정해보아라.
$pdf->kr_ezStream();
//$pdf->ezStream();

dotproject의 속도 문제 해결

  • 참고 자료 : http://www.dotproject.net/vbulletin/showthread.php?p=29384
  • dotproject 사용 시 프로젝트의 작업 리스트가 많아지면 속도가 현저히 떨어진다.
  • 회사에서 프로젝트 운영 시 많은 사람들이 작업을 입력하고 쓰게되면 리스트를 불러오는데 응답 대기시간을 넘어서 리스트가 누락되어 읽히기도 하고 속도도 느리다.
  • SQL을 수정하여 인덱스를 만들어 기본 로딩 속도를 높인다.(자세한 사항은 링크를 참조)

간트 차트 이슈

  • 간트 차트 한글화 및 요일 표시는 위에 내용 그대로 하면 잘된다.
  • 이 챕터에서는 세부 추가 이슈에 대해서 다룬다

간트차트.jpg

별칭 문제

  • 간트 차트에서 한글 프로젝트명을 입력하고 별칭을 입력하지 않을시 별칭이 깨져서 보이는 증상이 나타난다.
  • /module/projects/addedit.php
function setShort() {
var f = document.editFrm;
var x = 10;
if (f.project_name.value.length < 11) { 
	x = f.project_name.value.length;
}
if (f.project_short_name.value.length == 0) { 
	//f.project_short_name.value = f.project_name.value.mb_substr(0,x); 주석처리!!
}
}
  • /module/projects/addedit.php (LINE 390)
<input type="text" name="project_short_name" value="<?php echo dPformSafe(@$row->project_short_name) ;?>" size="3" maxlength="3" class="text" /> *
  • maxlength 를 3으로 줄여서 한글이 깨지지 않게 한다.

프로젝트 명 길이 문제

  • 한글 인코딩이나 substr, mb_substr, strlen, mb_strlen 의 내부적인 문제 때문에 프로젝트 명이 제대로 잘려서 보이지 않는다.
  • byte 수로 짜르면 한글 2byte 가 1byte 로 쪼게 질수도 있고
  • 글자수로 짜르면 영어 글자수와 한글 글자수의 한 자당 길이가 다르므로 영어가 많이 들어간 글자는 일찍 잘리는 문제가 있다.
  • UTF-8 환경에서 제대로 동작한다.
  • /module/projects/gannt.php (line 215~)
// if ($locale_char_set=='utf-8' && function_exists('utf8_decode')) {
//	$name = ((mb_strlen(utf8_decode($p['project_name'])) > 25) 
//	         ? (mb_substr(utf8_decode($p['project_name']), 0, 22) . '...') 
// 	         : $p['project_name']);
// } else {
//while using charset different than UTF-8 we need not to use utf8_deocde
//$name = ((mb_strlen($p['project_name'],'utf-8') > 20) ? (mb_substr($p['project_name'], 0, 20,'utf-8').'...') 
//       : $p['project_name']) ;
// }
$str = $p['project_name'];
$len = 27;
$checkmb = true;
$tail = "...";
preg_match_all('/[\xEA-\xED][\x80-\xFF]{2}|./', $str, $match);

$m    = $match[0];
$slen = strlen($str);  // length of source string
$tlen = strlen($tail); // length of tail string
$mlen = count($m); // length of matched characters

if ($slen <= $len) $name = $str;
else if (!$checkmb && $mlen <= $len) $name = $str;
else {
 $ret   = array();
 $count = 0;

 for ($i=0; $i < $len; $i++) {
    $count += ($checkmb && strlen($m[$i]) > 1)?2:1;

if ($count + $tlen > $len) break;
$ret[] = $m[$i];
}
$name =  join(, $ret).$tail;

}

모두 보기

  • 모두 보기라는 링크가 있는데 이상하게 동작하지 않는다. (2.1.3)
  • 2.1.4 에서는 동작하는 듯 하다.
  • 2.1.3 에서 링크를 제거 함으로 해결 하였다.
  • /module/projects/viewgannt.php (line 224~225)
//echo ("<a href='javascript:showThisMonth()'>" . $AppUI->_('show this month') 
//	. "</a> : <a href='javascript:showFullProject()'>" . $AppUI->_('show all') . "</a><br />");

보고서 및 메뉴얼

참고 문헌