본문 바로가기
Web Program/XE[xpressengine]

[XE] Issuetracker 공지글 등록

by 현이빈이 2011. 12. 29.
반응형
팀내부 개발 관리 업무를 XE 엔진의 여러 모듈을 붙여서 사용하고 있습니다.
물론 여러가지 내부 코드를 수정하여 맞게끔 사용하고 있구요.

이슈트래커에 보면 공지글이 등록되지 않습니다.
글쓰기에는 있지만 실제 리스트에는 연동이 되고 있지 않습니다.
공지글를 리스트에 보여주는 방법을 소개할까 합니다.

1. queries 의 getInssueList.xml 복사하여 getInssueListNotice.xml로 생성. 아래 코드 추가
<condition operation="equal" column="documents.is_notice" default="Y" pipe="and" />

2. getInssueList.xml 내용 수정

<condition operation="equal" column="documents.is_notice" default="N" pipe="and" />

3. issuetracker.view.php 내용 수정
dispIssuetrackerViewIssue 함수내 코드 추가
$output_notice = $oIssuetrackerModel->getIssueNoticeList($args);
Context::set('issue_notice_list', $output_notice->data);


4. issuetracket.model.php 함수 추가

function getIssueNoticeList($args) {
            $query_id = 'issuetracker.getIssueListNotice';
            $output = executeQueryArray($query_id, $args);
            // 결과가 없거나 오류 발생시 그냥 return
            if(!$output->toBool()||!count($output->data)) return $output;

            $idx = 0;
            $data = $output->data;
            unset($output->data);

            $keys = array_keys($data);
            $virtual_number = $keys[0];

            foreach($data as $key => $attribute) {
                $document_srl = $attribute->document_srl;
                $oIssue = null;
                $oIssue = new issueItem();
                $oIssue->setAttribute($attribute);
                $oIssue->setProjectInfo($attribute);
                if($is_admin) $oIssue->setGrant();

                $output->data[$virtual_number] = $oIssue;
                $virtual_number --;
            }

            return $output;
        }




5. skins 의 issue_list.htm 내용 수정

실제 리스트를 뿌려주는 위 부분에 추가 (<!--@if($page_navigation->total_count == 0)-->)

<!--@foreach($issue_notice_list as $val)-->
    <tr>
    <!--@foreach($display_option as $k => $v)-->
     <!--@if($v->checked)-->
      <!--@if($k == 'issue_id')-->
      <td>{$lang->notice}</td>
      <!--@elseif($k == 'status')-->
      <td><em class="status {$val->get('status')}">{$val->getStatusSolution()}</em></td>
      <!--@elseif($k == 'title')-->
      <td class="title"><a href="{getUrl('document_srl',$val->get('document_srl'))}">{$val->getTitle()}</a>
       {$val->printExtraImages(60*60*24)}
       <!--@if($val->getCommentCount())-->
       <strong class="comment">{$val->getCommentCount()}</strong>
       <!--@endif-->
       <!--@if($val->getTrackbackCount())-->
       <strong class="trackback">{$val->getTrackbackCount()}</strong>
       <!--@endif-->
      </td>
      <!--@elseif($k == 'milestone')-->
      <td>{$val->getMilestoneTitle()}</td>
      <!--@elseif($k == 'priority')-->
      <td>{$val->getPriorityTitle()}</td>
      <!--@elseif($k == 'type')-->
      <td>{$val->getTypeTitle()}</td>
      <!--@elseif($k == 'component')-->
      <td>{$val->getComponentTitle()}</td>
      <!--@elseif($k == 'occured_version')-->
      <td>{$val->getOccuredVersionTitle()}</td>
      <!--@elseif($k == 'package')-->
      <td>{$val->getPackageTitle()}</td>
      <!--@elseif($k == 'assignee')-->
      <td><!--@if($val->get('assignee_srl'))--><span class="member_{$val->get('assignee_srl')}">{$val->get('assignee_name')}</span><!--@else-->&nbsp;<!--@endif--></td>
      <!--@elseif($k == 'writer')-->
      <td>
       <!--@if($val->get('member_srl'))-->
       <span class="member_{$val->get('member_srl')}">{$val->getNickName()}</span>
       <!--@else-->
       {$val->getNickName()}
       <!--@end-->
       <span class="time">{$val->getRegdate("Y.m.d")}</span>
      </td>
      <!--@else-->
      <td></td>
      <!--@end-->                       
                       
     <!--@endif-->
    <!--@endif-->                
                
    <!--@if($grant->is_admin)--><td><input type="checkbox" name="cart" value="{$val->document_srl}" onclick="doAddDocumentCart(this);" <!--@if($val->isCarted())-->checked="checked"<!--@end-->/></td><!--@end-->
    </tr>
                <!--@endif-->



이상 공지글 리스트를 보여주기 위한 코드였습니다.
팀내부에서 사용할거라 급하게 추가한 내용이라 코드 정리는 되어 있지 않습니다.
관심 있는 분께서 정리를 한번 해 보시죠..

다른 여러 코드가 섞여있어서 빼고 정리한건데.. 잘 될지 모르겠네요.
혹시 에러가 발생되면 알려주세요.

XE CORE Ver 5.0.0.8

반응형