Plugin FAQ » History » Version 3
Mischa The Evil, 2020-08-26 04:47
Add an entry on 'retrieving Redmine application configuration values' per message#59809.
1 | 1 | Jean-Baptiste Barth | h1. Frequently Asked Questions about Redmine plugins |
---|---|---|---|
2 | 1 | Jean-Baptiste Barth | |
3 | 1 | Jean-Baptiste Barth | {{toc}} |
4 | 1 | Jean-Baptiste Barth | |
5 | 1 | Jean-Baptiste Barth | This page aims at documenting how to achieve simple things in Redmine plugins. |
6 | 1 | Jean-Baptiste Barth | |
7 | 1 | Jean-Baptiste Barth | h2. Determine if a module is enabled |
8 | 1 | Jean-Baptiste Barth | |
9 | 1 | Jean-Baptiste Barth | If your project is in the @@project@ variable: <pre><code class="ruby"> |
10 | 1 | Jean-Baptiste Barth | if @project.module_enabled?("<module_name>") |
11 | 1 | Jean-Baptiste Barth | </code></pre> |
12 | 1 | Jean-Baptiste Barth | |
13 | 1 | Jean-Baptiste Barth | First _modules_ are a project level concept. So be sure to make this check in an action that operates at project level. Redmine core generally uses a @before_filter@ called @find_project@ to find the current project in standard actions, which populates the @@project@ variable. |
14 | 1 | Jean-Baptiste Barth | |
15 | 1 | Jean-Baptiste Barth | Available modules as of Redmine 2.3.x are: boards, calendar, documents, files, gantt, issue_tracking, news, repository, time_tracking, wiki. Each plugin can add its own module (see [[Plugin_Tutorial]] which adds a "polls" module). |
16 | 2 | Derric Atzrott | |
17 | 2 | Derric Atzrott | h2. Changing the layout of a page |
18 | 2 | Derric Atzrott | |
19 | 2 | Derric Atzrott | Changing the layout of a page is done by overriding its View. Redmine stores its views in @app/views/@. To change a page's view using a plugin, first copy the view from @app/views/@ to @plugins/your_plugin/app/views/@ and then modify the file. |
20 | 2 | Derric Atzrott | |
21 | 2 | Derric Atzrott | If multiple plugins override the same view, the last plugin loaded will be the one whose view is shown. If you are having trouble finding out which view you need to override, check @config/routes.rb@ and look for a pattern that matches the URL for the page you are trying to modify. That may help point you in the right direction. |
22 | 3 | Mischa The Evil | |
23 | 3 | Mischa The Evil | h2. Retrieve Redmine application configuration values |
24 | 3 | Mischa The Evil | |
25 | 3 | Mischa The Evil | Redmine stores application configuration values in a file named @config/configuration.yml@. To retrieve (get) these configuration values from a plugin, Redmine provides the getter method @[]@, which is defined as a class method on @Redmine::Configuration@. |
26 | 3 | Mischa The Evil | |
27 | 3 | Mischa The Evil | Example[1]: |
28 | 3 | Mischa The Evil | |
29 | 3 | Mischa The Evil | Consider the following example configuration: |
30 | 3 | Mischa The Evil | <pre><code class="yaml"> |
31 | 3 | Mischa The Evil | email_delivery: |
32 | 3 | Mischa The Evil | delivery_method: :smtp |
33 | 3 | Mischa The Evil | smtp_settings: |
34 | 3 | Mischa The Evil | address: "myaddress.com" |
35 | 3 | Mischa The Evil | port: 25 |
36 | 3 | Mischa The Evil | domain: "mydomain.com" |
37 | 3 | Mischa The Evil | </code></pre> |
38 | 3 | Mischa The Evil | |
39 | 3 | Mischa The Evil | Then the value of the @address@ configuration key can be retrieved by calling: |
40 | 3 | Mischa The Evil | <pre><code class="ruby">Redmine::Configuration['email_delivery']['smtp_settings'][:address]</code></pre> |
41 | 3 | Mischa The Evil | |
42 | 3 | Mischa The Evil | fn1. source: message#59809 |