This is a redmine plugin that add support for other plugin to add a setting tab in project setting page
git clone https://github.com/leo108/redmine-project-setting-tab.git _project_setting
Notice that you have to clone this plugin into a directory named '_project_setting'.
Redmine::Plugin.register :redmine_polls do
[ ... ]
add_tab :polls, :partial => 'tab/polls'
end
add_tab
method will add a tab to project setting tabs, there can be more than one add_tab
in a plugin.
The first argument is the tab's label, it can be a I18n symbol, the second argument is a Hash, it render your tab's view, just like the render's first argument, hash's key should be one of :partial
, :template
, :inline
, :file
and :text
.
Redmine::Plugin.register :redmine_polls do
[ ... ]
add_tab :polls, :partial => 'tab/polls'
tab_settings :default => {'email_address' => ''}
end
tab_settings
method set a list of settings's default value.
We set the :partial to 'tab/polls', so the view file is app/views/tab/_polls.html.erb
<table>
<tbody>
<tr>
<td>Notification Email</td>
<td><input type="text" value="<%= settings['redmine_polls']['email_address'] %>"
name="settings[redmine_polls][email_address]" ></td>
</tr>
</tbody>
</table>
You can use <%= settings['your_plugin_name']['your_project_setting_name'] %> to output the setting.
Redmine::Plugin.register :redmine_polls do
[ ... ]
settings :default => {'some_plugin_setting' => 'some value'}, :partial => 'settings/poll_settings'
tab_show_expr :expr => "Setting['plugin_redmine_polls']['some_plugin_setting']", :expect_value => 'some value'
add_tab :polls, :partial => 'tab/polls'
tab_settings :default => {'email_address' => ''}
end
tab_show_expr
method will decide your tab(s) whether to be displayed. :expr
can be any expression, if :expr
's value is equal to :expect_value
, then all your tabs displayed.
There can only be one or no tab_show_expr
in a plugin, if there is no tab_show_expr
, it will display your tabs by default.
settings = TabSetting.get_settings(project.id)
email_address = settings['redmine_polls']['email_address']