레드마인(Redmine) 플러그인 개발 가이드 - 9. 훅(Hooks) 사용하기

by Tom posted Dec 30, 2015
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
이 문서는 Redmine 2.x 기반의 플러그인 개발 가이드입니다. 그리고 이 문서는 redmine.org의 플러그인 개발 가이드를 번역하였습니다. 
  • http://www.redmine.org/projects/redmine/wiki/Plugin_Tutorial

9. 훅(Hooks) 사용하기

9.1 뷰에서 훅(Hooks) 사용

레드마인 뷰에서 훅(Hooks)은 직접 만든 콘텐츠를 일반적인 레드마인 뷰에 추가할 수 있게 해줍니다. 
예로 아래 코드를 보면 view_projects_show_left는 왼쪽부분에 콘텐츠를 추가하는 것이고, view_projects_show_right는 오른쪽에 콘텐츠를 추가할 수 있게 해줍니다.

<div class="splitcontentleft">
    <%= call_hook(:view_projects_show_left, :project => @project) %>
</div>
<div class="splitcontentright">
    <%= call_hook(:view_projects_show_right, :project => @project) %>
</div>

뷰에서 하나 혹은 그이상의 훅(Hooks)을 사용하기 위해서는 Redmine::Hook::ViewListener로부터 상속받은 클래스를 생성하고 훅(hooks)을 사용하기를 희망하는 메소드를 직접 구현해야 합니다.

예로 프로젝트 Overview에 몇몇 콘텐츠를 추가하기 위해서는 플러그인에 클래스와 init.rb에 필요한것들을 추가해야 합니다. 그다음 훅(hook) 이름과 일치하는 메소드를 구현해야합니다.

투표 플러그인을 위해서는 plugins/polls/lib/polls_hook_listener.rb을 만들어야 하며, 다음과 같은 콘텐츠를 작성할 수 있습니다.

class PollsHookListener < Redmine::Hook::ViewListener
  def view_projects_show_left(context = {})
    return content_tag("p", "Custom content added to the left")
  end

  def view_projects_show_right(context = {})
    return content_tag("p", "Custom content added to the right")
  end
end

그리고 plugins/polls/init.rb의 도입부에 다음 라인을 추가합니다.

require_dependency 'polls_hook_listener'


레드마인을 재시작하고, 프로젝트 Overview 탭을 확인하면, 오른쪽과 왼쪽에 위의 문자열을 확인할 수 있습니다.

render_on helper를 사용하면 플러그인을 부분적으로 보여줄 수 도 있습니다. 이를위해  plugins/polls/lib/polls_hook_listener.rb에 아래와 같이 코드를 삽입하면 됩니다. 

class PollsHookListener < Redmine::Hook::ViewListener
  render_on :view_projects_show_left, :partial => "polls/project_overview" 
end

app/views/polls/_project_overview.html.erb 파일을 생성함으로써 플러그인을 부분적으로 추가할 수 있습니다.