diff --git a/app/views/custom_fields/_form.html.erb b/app/views/custom_fields/_form.html.erb
index 4c0b702..356d0bc 100644
--- a/app/views/custom_fields/_form.html.erb
+++ b/app/views/custom_fields/_form.html.erb
@@ -1,5 +1,9 @@
<%= error_messages_for 'custom_field' %>
+<% if @custom_field.is_a?(IssueCustomField) %>
+
+<% end %>
+
<%= f.text_field :name, :required => true %>
<%= f.select :field_format, custom_field_formats_for_select(@custom_field), {}, :disabled => !@custom_field.new_record? %>
@@ -46,20 +50,6 @@
<% case @custom_field.class.name
when "IssueCustomField" %>
-
-
-
<%= f.check_box :is_required %>
<%= f.check_box :is_for_all %>
<%= f.check_box :is_filter %>
@@ -113,6 +103,33 @@ when "IssueCustomField" %>
<% end %>
<%= call_hook(:"view_custom_fields_form_#{@custom_field.type.to_s.underscore}", :custom_field => @custom_field, :form => f) %>
+<%= submit_tag l(:button_save) %>
+
+<% if @custom_field.is_a?(IssueCustomField) %>
+
+
+
+
+
+
+<% end %>
<% include_calendar_headers_tags %>
@@ -123,4 +140,8 @@ function toggleCustomFieldRoles(){
}
$("#custom_field_visible_on, #custom_field_visible_off").change(toggleCustomFieldRoles);
$(document).ready(toggleCustomFieldRoles);
+
+$("#custom_field_is_for_all").change(function(){
+ $("#custom_field_project_ids input").attr("disabled", $(this).is(":checked"));
+}).trigger('change');
<% end %>
diff --git a/app/views/custom_fields/edit.html.erb b/app/views/custom_fields/edit.html.erb
index 803ba05..cd52e00 100644
--- a/app/views/custom_fields/edit.html.erb
+++ b/app/views/custom_fields/edit.html.erb
@@ -4,5 +4,4 @@
<%= labelled_form_for :custom_field, @custom_field, :url => custom_field_path(@custom_field), :html => {:method => :put, :id => 'custom_field_form'} do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
-<%= submit_tag l(:button_save) %>
<% end %>
diff --git a/app/views/custom_fields/new.html.erb b/app/views/custom_fields/new.html.erb
index 7af7735..6932841 100644
--- a/app/views/custom_fields/new.html.erb
+++ b/app/views/custom_fields/new.html.erb
@@ -5,7 +5,6 @@
<%= labelled_form_for :custom_field, @custom_field, :url => custom_fields_path, :html => {:id => 'custom_field_form'} do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
<%= hidden_field_tag 'type', @custom_field.type %>
-<%= submit_tag l(:button_save) %>
<% end %>
<%= javascript_tag do %>
diff --git a/public/javascripts/application.js b/public/javascripts/application.js
index e102af2..8ffef5b 100644
--- a/public/javascripts/application.js
+++ b/public/javascripts/application.js
@@ -2,11 +2,7 @@
Copyright (C) 2006-2013 Jean-Philippe Lang */
function checkAll(id, checked) {
- if (checked) {
- $('#'+id).find('input[type=checkbox]').attr('checked', true);
- } else {
- $('#'+id).find('input[type=checkbox]').removeAttr('checked');
- }
+ $('#'+id).find('input[type=checkbox]:enabled').attr('checked', checked);
}
function toggleCheckboxesBySelector(selector) {
diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css
index 13860be..c145abd 100644
--- a/public/stylesheets/application.css
+++ b/public/stylesheets/application.css
@@ -433,7 +433,7 @@ ul.projects li {list-style-type:none;}
#projects-index ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
.my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
-#notified-projects ul, #tracker_project_ids ul {max-height:250px; overflow-y:auto;}
+#notified-projects ul, #tracker_project_ids ul, #custom_field_project_ids ul {max-height:250px; overflow-y:auto;}
#related-issues li img {vertical-align:middle;}
diff --git a/test/functional/custom_fields_controller_test.rb b/test/functional/custom_fields_controller_test.rb
index c7efcfe..1a91fc3 100644
--- a/test/functional/custom_fields_controller_test.rb
+++ b/test/functional/custom_fields_controller_test.rb
@@ -18,7 +18,7 @@
require File.expand_path('../../test_helper', __FILE__)
class CustomFieldsControllerTest < ActionController::TestCase
- fixtures :custom_fields, :custom_values, :trackers, :users
+ fixtures :custom_fields, :custom_values, :trackers, :users, :projects
def setup
@request.session[:user_id] = 1
@@ -52,10 +52,22 @@ class CustomFieldsControllerTest < ActionController::TestCase
assert_select 'option[value=user]', :text => 'User'
assert_select 'option[value=version]', :text => 'Version'
end
+ assert_select 'input[type=checkbox][name=?]', 'custom_field[project_ids][]', Project.count
+ assert_select 'input[type=hidden][name=?]', 'custom_field[project_ids][]', 1
assert_select 'input[type=hidden][name=type][value=IssueCustomField]'
end
end
+ def test_new_time_entry_custom_field_should_not_show_trackers_and_projects
+ get :new, :type => 'TimeEntryCustomField'
+ assert_response :success
+ assert_template 'new'
+ assert_select 'form#custom_field_form' do
+ assert_select 'input[name=?]', 'custom_field[tracker_ids][]', 0
+ assert_select 'input[name=?]', 'custom_field[project_ids][]', 0
+ end
+ end
+
def test_default_value_should_be_an_input_for_string_custom_field
get :new, :type => 'IssueCustomField', :custom_field => {:field_format => 'string'}
assert_response :success
@@ -118,6 +130,17 @@ class CustomFieldsControllerTest < ActionController::TestCase
assert_equal 1, field.trackers.size
end
+ def test_create_with_project_ids
+ assert_difference 'CustomField.count' do
+ post :create, :type => "IssueCustomField", :custom_field => {
+ :name => "foo", :field_format => "string", :is_for_all => "0", :project_ids => ["1", "3", ""]
+ }
+ assert_response 302
+ end
+ field = IssueCustomField.order("id desc").first
+ assert_equal [1, 3], field.projects.map(&:id).sort
+ end
+
def test_create_with_failure
assert_no_difference 'CustomField.count' do
post :create, :type => "IssueCustomField", :custom_field => {:name => ''}