2011-05-02 1 views
0

좋아요. 그래서 Redmine (Rails Engines.) 플러그인이 있습니다. 플러그인은 HTML/컨트롤이 Redmine의 모든 페이지에서 렌더링되도록 후크를 사용합니다.Redmine Plugin/Rails Engine - 모든 페이지에있는 플러그인의 images/javascripts 경로?

이 플러그인에서 컨트롤러로 정보를 보내고 있습니다. 이제 javascript와 css에서 사용할 수있는 두 가지 옵션이 있습니다. 상대 경로 지정 또는 절대 경로 지정입니다.

URL 경로는 어디에서나 경로를 지정할 수 있으므로 모든 페이지에서 상대 경로가 작동하지 않습니다 (모든 페이지에서 제어가 작동해야하기 때문에). 이 옵션을 사용하면 내 플러그인이 매번 URL의 동일한 중첩 수준에서 렌더링되어야합니다.

절대 설치는 특정 설치에서 작동하지만 다른 사용자가 www.mysite.com 대신 도메인 루트 (예 : www.mysite.com/redmine/) 아래에있는 경로에서 설치할 때 플러그인이 작동하지 않습니다. 이를 위해서는 수동 편집이 필요하지만 이는 전혀 우아하지 않습니다.

이 겉보기에는 간단한 문제를 쉽게 해결할 수있는 방법이 있습니까?

답변

1

그것은 CSS, JS, 또는 이미지 파일은

stylesheet_link_tag 'redmine_kanban.css', :plugin => 'redmine_kanban' 
javascript_include_tag 'jquery-1.3.2.min.js', :plugin => 'redmine_kanban' 
image_tag 'example.png', :plugin => 'redmine_kanban' 

는 플러그인 이름이 설치 디렉토리의 일치하는지 확인합니다 (레일 엔진이 패치)를 :plugin 옵션을 사용하여 태그 도우미를 사용할 수 있습니다 (예 : 공급 업체의 경우/plugins/redmine_kanban).

자산은 CSS에있는 이미지처럼 외부 CSS 파일 및 url(../images/example.png을 사용할 수 있습니다. Rails Engines는 assets/디렉토리를 public/plugin_assets/plugin_name/[images | javascripts | stylesheets]에 복사하므로 이미지를 가져 오기 위해 디렉토리를 내려야합니다.

자바 스크립트는 좀 더 어렵습니다. 가장 좋은 방법은 현재 상대 경로의 자바 스크립트 변수를 내보내는 것입니다. 자바 스크립트에서 사용할 언어 변환 문자열을 JSON으로 내보내는 것과 같은 작업을합니다.

javascript_tag("var redmineRootPath = #{Redmine::Utils.relative_url_root}") 

희망이 있습니다.

+0

참조하는 비트에서 자바 스크립트가 제대로 작동한다는 것을 알 수 있습니다. CSS는 - 그러나 내 플러그인이 모든 페이지에 표시되는 경우 상대 경로는 예를 들어 www.mysite.com/projects와 www.mysite.com/projects/new 사이에서 변경됩니다. –

+0

나는 그것이 당신의 도움을 위해 일한 것을 얻었다! –

관련 문제