diff options
author | David Gageot <david@gageot.net> | 2012-09-29 13:36:13 +0200 |
---|---|---|
committer | David Gageot <david@gageot.net> | 2012-09-29 13:37:04 +0200 |
commit | 8e738b461b77b9f72e29ca1f028709ca0c2e7742 (patch) | |
tree | e7691fec2d84c78cbb1436935551ef93230905af | |
parent | bbccaf8dd9ef7549d7e960d327a7fe7c28c7cfaa (diff) | |
download | sonarqube-8e738b461b77b9f72e29ca1f028709ca0c2e7742.tar.gz sonarqube-8e738b461b77b9f72e29ca1f028709ca0c2e7742.zip |
SONAR-3529 Edition of property sets
3 files changed, 72 insertions, 18 deletions
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/settings_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/settings_controller.rb index d0d1791bf3f..255294383cf 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/settings_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/settings_controller.rb @@ -38,12 +38,40 @@ class SettingsController < ApplicationController access_denied if (@resource.nil? && !is_admin?) load_properties() + save_properties(resource_id) + save_property_sets(resource_id) + render :partial => 'settings/properties' + end + + private + + # TODO: Validation + def save_property_sets(resource_id) + params[:property_sets].each do |key, value| + value = drop_trailing_blank_values(value) + + # TODO: clear all + Property.set(key, value.map { |v| v.gsub(',', '%2C') }.join(','), resource_id) + + fields = params[key] + + fields.each do |field_key, field_values| + field_values.each_with_index do |field_value, index| + set_key = value[index] + if set_key + Property.set(key + "." + set_key + "." + field_key, field_value, resource_id) + end + end + end + end + end + + def save_properties(resource_id) @updated_properties = {} - @definitions.map(&:key).each do |key| - value = params[key] + params[:settings].each do |key, value| if value.kind_of? Array - value = value.reverse.drop_while(&:blank?).reverse + value = drop_trailing_blank_values(value) end if value.blank? @@ -52,11 +80,11 @@ class SettingsController < ApplicationController @updated_properties[key] = Property.set(key, value, resource_id) end end - - render :partial => 'settings/properties' end - private + def drop_trailing_blank_values(array) + array.reverse.drop_while(&:blank?).reverse + end def load_properties @category = params[:category] || 'general' diff --git a/sonar-server/src/main/webapp/WEB-INF/app/helpers/settings_helper.rb b/sonar-server/src/main/webapp/WEB-INF/app/helpers/settings_helper.rb index ca9c3da8189..c97111ef077 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/helpers/settings_helper.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/helpers/settings_helper.rb @@ -55,6 +55,6 @@ module SettingsHelper end def input_name(property) - h(property.key) + (property.multi_values ? '[]' : '') + "settings[#{h property.key}#{property.multi_values ? '[]' : ''}]" end end diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/settings/_type_PROPERTY_SET_DEFINITION.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/settings/_type_PROPERTY_SET_DEFINITION.html.erb index 22777ac090f..029762ae2a7 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/settings/_type_PROPERTY_SET_DEFINITION.html.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/settings/_type_PROPERTY_SET_DEFINITION.html.erb @@ -1,17 +1,43 @@ -<% Property.set('sonar.test.jira.servers', 'jira1,jira2') -%> -<% Property.set('sonar.test.jira.servers.jira1.url', 'http://url1') -%> -<% Property.set('sonar.test.jira.servers.jira1.port', '1234') -%> -<% Property.set('sonar.test.jira.servers.jira2.url', 'http://url2') -%> -<% Property.set('sonar.test.jira.servers.jira2.port', '9999') -%> +<% if Property.value('sonar.test.jira.servers').blank? -%> + <% Property.set('sonar.test.jira.servers', 'jira1,jira2') -%> + <% Property.set('sonar.test.jira.servers.jira1.url', 'http://url1') -%> + <% Property.set('sonar.test.jira.servers.jira1.port', '1234') -%> + <% Property.set('sonar.test.jira.servers.jira2.url', 'http://url2') -%> + <% Property.set('sonar.test.jira.servers.jira2.port', '9999') -%> +<% end -%> + +<% resource_id = @resource.id if @resource -%> -<% Property.values(property.key).reject(&:blank?).each do |set_key| -%> - <h3><%= set_key -%></h3> +<% Property.values(property.key, resource_id).reject(&:blank?).each do |set_key| -%> + <div class="multi_value"> + <label>Key: </label><br/> + <input name="property_sets[<%= property.key -%>][]" value="<%= set_key -%>"/><br/> - <% property.fields.each do |field| -%> - <label><%= field.key -%>: </label><input type="text" value="<%= Property.value([property.key, set_key, field.key].join('.')) -%>"/><br/> - <% end -%> + <% property.fields.each do |field| -%> + <label><%= field.key -%>: </label><br/> + <input type="text" name="<%= property.key -%>[<%= field.key -%>][]" value="<%= Property.value("#{property.key}.#{set_key}.#{field.key}", resource_id) -%>"/> + <br/> + <% end -%> - <a href="#" class="delete link-action"><%= message('delete') -%></a> + <a href="#" class="delete link-action"><%= message('delete') -%></a> + <br/><br/> + </div> <% end -%> +<div class="template" style="display:none;"> + <div class="multi_value"> + <label>Key: </label><br/> + <input name="property_sets[<%= property.key -%>][]" value=""/><br/> + + <% property.fields.each do |field| -%> + <label><%= field.key -%>: </label><br/> + <input type="text" name="<%= property.key -%>[<%= field.key -%>][]" value=""/> + <br/> + <% end -%> + + <a href="#" class="delete link-action"><%= message('delete') -%></a> + <br/><br/> + </div> +</div> + <button class="add_value"><%= message('settings.add') -%></button> |