Open sgiordy opened 2 years ago
Yeah very nice addition! I just noticed though that when i use it and add a new sql custom_field to issues I get an error because the issue object does not have an issue_id => only an id. To fix this i did this:
if object.try(:issue_id).nil? sql = sql.gsub('%issue_id%', 'null') else sql = sql.gsub('%issue_id%', object.issue_id.to_s) end
Complete File: module CustomFieldSql module CustomFields module Formats
class SqlSearch < Redmine::FieldFormat::StringFormat
add 'sql_search'
field_attributes :sql, :form_params, :search_by_click, :db_config, :strict_selection, :strict_error_message
self.form_partial = 'custom_fields/formats/sql'
end
class Sql < Redmine::FieldFormat::List
add 'sql'
field_attributes :sql
self.form_partial = 'custom_fields/formats/sql'
def possible_values_options(custom_field, object = nil)
sql = custom_field.sql
if sql
if object
return [] unless (object.class.to_s + 'CustomField')==custom_field.class.to_s
if object.id.nil?
sql = sql.gsub('%id%', 'null')
else
sql = sql.gsub('%id%', object.id.to_s)
end
if object.try(:issue_id).nil?
sql = sql.gsub('%issue_id%', 'null')
else
sql = sql.gsub('%issue_id%', object.issue_id.to_s)
end
end
result = ActiveRecord::Base.connection.select_all(sql)
result.rows
else
[]
end
end
def group_statement(custom_field)
order_statement(custom_field)
end
def validate_custom_field(custom_field)
errors = []
#errors << [:language, :blank] if custom_field.language.blank?
errors
end
end
end
end end
Hello,
thank you for your great work.
Consider adding this code in
sql.rb
informats
directory:It's very useful to fill dropdown with specific values in Time Tracking Entries.
S.