# options
- options={}
+ @rule=Rule.by_key_or_id(params[:rule])
@priority_id = (params[:priority] ? Sonar::RulePriority.id(params[:priority]) : nil)
@categ_id = (params[:categ_id] ? params[:categ_id].to_i : nil)
- @rule_id = Rule.to_i(params[:rule])
- options[:rule_id]=@rule_id
+
+ options={}
options[:rule_category_id]=@categ_id
options[:rule_priority_id]=@priority_id
-
+ if @rule
+ params[:rule]=@rule.key # workaround for SONAR-1767 : the javascript hash named "rp" in the HTML source must contain the rule key, but not the rule id
+ options[:rule_id]=@rule.id
+ end
# load data
@drilldown = Drilldown.new(@project, @metric, @selected_rids, options)
id>0 ? id : nil
end
+ def self.by_key_or_id(key_or_id)
+ rule=nil
+ if key_or_id.present?
+ id=key_or_id.to_i
+ if id<=0
+ parts=key_or_id.split(':')
+ if parts.size==2
+ rule=Rule.find(:first, :conditions => {:plugin_name => parts[0], :plugin_rule_key => parts[1]})
+ end
+ else
+ rule=Rule.find(id)
+ end
+ end
+ rule
+ end
+
def to_hash_json(profile)
json = {'title' => name, 'key' => key, 'category' => rules_category.name, 'plugin' => plugin_name}
json['description'] = description
next if rule_measure.value==0
rule=rules_hash[rule_measure.rule_id]
clazz = cycle('even', 'odd', :name => 'rules')
- clazz = clazz + ' selected' if @rule_id and @rule_id==rule_measure.rule_id
+ clazz = clazz + ' selected' if @rule && @rule.id==rule_measure.rule_id
rule_index+=1
%>
<tr class="<%= clazz -%>">
<% else %>
Any <%= @filter %>
<% end %> »
-<% if @rule_id %>
-<%= h Rule.find(@rule_id).name %> <%= link_to 'clear', {:overwrite_params => {:rule => nil}} %>
+<% if @rule %>
+<%= h @rule.name %> <%= link_to 'clear', {:overwrite_params => {:rule => nil}} %>
<% else %>
Any rule
<% end %> »