summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2019-06-20 07:06:47 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2019-06-20 07:06:47 +0000
commitd4312d25656283d34202cede73e9e1fff61a7db6 (patch)
treebf215761f9b40cbf1ab446992f3068b47c407f8c /app
parentdb3ee07a5530b69624d5a8d517c9301cc835edda (diff)
downloadredmine-d4312d25656283d34202cede73e9e1fff61a7db6.tar.gz
redmine-d4312d25656283d34202cede73e9e1fff61a7db6.zip
Allow tabs to have a custom action (#3058).
Patch by Marius BALTEANU. git-svn-id: http://svn.redmine.org/redmine/trunk@18271 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r--app/helpers/application_helper.rb11
-rw-r--r--app/views/common/_tabs.html.erb8
2 files changed, 18 insertions, 1 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 4ecb558b5..1b259b44b 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -407,6 +407,17 @@ module ApplicationHelper
end
end
+ # Returns the tab action depending on the tab properties
+ def get_tab_action(tab)
+ if tab[:onclick]
+ return tab[:onclick]
+ elsif tab[:partial]
+ return "showTab('#{tab[:name]}', this.href)"
+ else
+ return nil
+ end
+ end
+
# Returns the default scope for the quick search form
# Could be 'all', 'my_projects', 'subprojects' or nil (current project)
def default_search_project_scope
diff --git a/app/views/common/_tabs.html.erb b/app/views/common/_tabs.html.erb
index 1b880c9c7..df7513e42 100644
--- a/app/views/common/_tabs.html.erb
+++ b/app/views/common/_tabs.html.erb
@@ -1,10 +1,14 @@
+<% default_action = false %>
+
<div class="tabs">
<ul>
<% tabs.each do |tab| -%>
+ <% action = get_tab_action(tab) %>
<li><%= link_to l(tab[:label]), (tab[:url] || { :tab => tab[:name] }),
:id => "tab-#{tab[:name]}",
:class => (tab[:name] != selected_tab ? nil : 'selected'),
- :onclick => tab[:partial] ? "showTab('#{tab[:name]}', this.href); this.blur(); return false;" : nil %></li>
+ :onclick => (action.nil? ? nil : "#{ action }; return false;") %></li>
+ <% default_action = action if tab[:name] == selected_tab %>
<% end -%>
</ul>
<div class="tabs-buttons" style="display:none;">
@@ -19,3 +23,5 @@
:style => (tab[:name] != selected_tab ? 'display:none' : nil),
:class => 'tab-content') if tab[:partial] %>
<% end -%>
+
+<%= javascript_tag default_action if default_action %>