summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2007-08-16 16:45:06 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2007-08-16 16:45:06 +0000
commit4cedecad4d336780aae1e073aa41a4a9c2169c8f (patch)
tree754ed629eae77a0c9fe4ebafb1b3c80b97609a8a /app
parent1f991c6a792a76de50d6b373510544e6469751b3 (diff)
downloadredmine-4cedecad4d336780aae1e073aa41a4a9c2169c8f.tar.gz
redmine-4cedecad4d336780aae1e073aa41a4a9c2169c8f.zip
Added a link to add a new category when creating or editing an issue.
The user is prompted for the category name. The new category is created and the drop-down list updated using an ajax call. git-svn-id: http://redmine.rubyforge.org/svn/trunk@648 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r--app/controllers/projects_controller.rb14
-rw-r--r--app/helpers/application_helper.rb5
-rw-r--r--app/views/issues/edit.rhtml6
-rw-r--r--app/views/projects/add_issue.rhtml6
4 files changed, 27 insertions, 4 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 582ff3367..920dbd5e4 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -169,8 +169,18 @@ class ProjectsController < ApplicationController
def add_issue_category
@category = @project.issue_categories.build(params[:category])
if request.post? and @category.save
- flash[:notice] = l(:notice_successful_create)
- redirect_to :action => 'settings', :tab => 'categories', :id => @project
+ respond_to do |format|
+ format.html do
+ flash[:notice] = l(:notice_successful_create)
+ redirect_to :action => 'settings', :tab => 'categories', :id => @project
+ end
+ format.js do
+ # IE doesn't support the replace_html rjs method for select box options
+ render(:update) {|page| page.replace "issue_category_id",
+ content_tag('select', '<option></option>' + options_from_collection_for_select(@project.issue_categories, 'id', 'name', @category.id), :id => 'issue_category_id', :name => 'issue[category_id]')
+ }
+ end
+ end
end
end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 156310616..071904482 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -77,6 +77,11 @@ module ApplicationHelper
}))
end
+ def prompt_to_remote(name, text, param, url, html_options = {})
+ html_options[:onclick] = "promptToRemote('#{text}', '#{param}', '#{url_for(url)}'); return false;"
+ link_to name, {}, html_options
+ end
+
def format_date(date)
return nil unless date
@date_format_setting ||= Setting.date_format.to_i
diff --git a/app/views/issues/edit.rhtml b/app/views/issues/edit.rhtml
index 05017ac8a..18d6e0108 100644
--- a/app/views/issues/edit.rhtml
+++ b/app/views/issues/edit.rhtml
@@ -8,7 +8,11 @@
<p><label><%=l(:field_status)%></label> <%= @issue.status.name %></p>
<p><%= f.select :priority_id, (@priorities.collect {|p| [p.name, p.id]}), :required => true %></p>
<p><%= f.select :assigned_to_id, (@issue.project.members.collect {|m| [m.name, m.user_id]}), :include_blank => true %></p>
-<p><%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}), :include_blank => true %></p>
+<p><%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}), :include_blank => true %>
+<%= prompt_to_remote(l(:label_issue_category_new),
+ l(:label_issue_category_new), 'category[name]',
+ {:controller => 'projects', :action => 'add_issue_category', :id => @project},
+ :class => 'small') if authorize_for('projects', 'add_issue_category') %></p>
</div>
<div class="splitcontentright">
diff --git a/app/views/projects/add_issue.rhtml b/app/views/projects/add_issue.rhtml
index b25023249..d35f7f484 100644
--- a/app/views/projects/add_issue.rhtml
+++ b/app/views/projects/add_issue.rhtml
@@ -10,7 +10,11 @@
<p><%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), :required => true %></p>
<p><%= f.select :priority_id, (@priorities.collect {|p| [p.name, p.id]}), :required => true %></p>
<p><%= f.select :assigned_to_id, (@issue.project.members.collect {|m| [m.name, m.user_id]}), :include_blank => true %></p>
-<p><%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}), :include_blank => true %></p>
+<p><%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}), :include_blank => true %>
+<%= prompt_to_remote(l(:label_issue_category_new),
+ l(:label_issue_category_new), 'category[name]',
+ {:controller => 'projects', :action => 'add_issue_category', :id => @project},
+ :class => 'small') if authorize_for('projects', 'add_issue_category') %></p>
</div>
<div class="splitcontentright">
<p><%= f.text_field :start_date, :size => 10 %><%= calendar_for('issue_start_date') %></p>