Feature #2096 » group-field.patch
| app/helpers/issues_helper.rb (working copy) | ||
|---|---|---|
| 43 | 43 | 
    n = 0  | 
| 44 | 44 | 
    ordered_values.compact.each do |value|  | 
| 45 | 45 | 
    s << "</tr>\n<tr>\n" if n > 0 && (n % 2) == 0  | 
| 46 | 
          s << "\t<th>#{ h(value.custom_field.name) }:</th><td>#{ simple_format_without_paragraph(h(show_value(value))) }</td>\n"
   | 
|
| 46 | 
          s << "\t<th>#{ h(value.custom_field.name) }:</th><td>"
   | 
|
| 47 | 
    s << value.custom_field.field_format == "group_list" ? show_value_on_view(value) : simple_format_without_paragraph(h(show_value(value)))  | 
|
| 48 | 
    s << "</td>\n"  | 
|
| 47 | 49 | 
    n += 1  | 
| 48 | 50 | 
    end  | 
| 49 | 51 | 
    s << "</tr>\n"  | 
| 50 | 
    s  | 
|
| 52 | ||
| 53 | 
    return s  | 
|
| 51 | 54 | 
    end  | 
| 52 | 55 | 
     | 
| 53 | 56 | 
    def sidebar_queries  | 
| ... | ... | |
| 115 | 118 | 
     | 
| 116 | 119 | 
    unless no_html  | 
| 117 | 120 | 
          label = content_tag('strong', label)
   | 
| 118 | 
          old_value = content_tag("i", h(old_value)) if detail.old_value
   | 
|
| 121 | ||
| 122 | 
    if !custom_field.nil? && custom_field.field_format == 'group_list'  | 
|
| 123 | 
            old_value = content_tag("i", old_value) if detail.old_value
   | 
|
| 124 | 
    else  | 
|
| 125 | 
            old_value = content_tag("i", h(old_value)) if detail.old_value
   | 
|
| 126 | 
    end  | 
|
| 127 | ||
| 119 | 128 | 
          old_value = content_tag("strike", old_value) if detail.old_value and (!detail.value or detail.value.empty?)
   | 
| 129 | ||
| 120 | 130 | 
    if detail.property == 'attachment' && !value.blank? && a = Attachment.find_by_id(detail.prop_key)  | 
| 121 | 131 | 
    # Link to the attachment if it has not been removed  | 
| 122 | 132 | 
    value = link_to_attachment(a)  | 
| 133 | 
    elsif !custom_field.nil? && custom_field.field_format == 'group_list'  | 
|
| 134 | 
            value = content_tag("i", value) if value
   | 
|
| 123 | 135 | 
    else  | 
| 124 | 136 | 
            value = content_tag("i", h(value)) if value
   | 
| 125 | 137 | 
    end  | 
| app/helpers/custom_fields_helper.rb (working copy) | ||
|---|---|---|
| 49 | 49 | 
                           (custom_field.default_value.blank? ? "<option value=\"\">--- #{l(:actionview_instancetag_blank_option)} ---</option>" : '') : 
   | 
| 50 | 50 | 
    '<option></option>'  | 
| 51 | 51 | 
    select_tag(field_name, blank_option + options_for_select(custom_field.possible_values, custom_value.value), :id => field_id)  | 
| 52 | ||
| 53 | 
    when 'group_list'  | 
|
| 54 | 
    groups = @project.principals  | 
|
| 55 | 
          groups.delete_if { |group| group.type != 'Group' }
   | 
|
| 56 | ||
| 57 | 
    custom_field.possible_values.clear()  | 
|
| 58 | 
          groups.each { |group| custom_field.possible_values << group if group.type == 'Group' }
   | 
|
| 59 | ||
| 60 | 
    blank_option = custom_field.is_required? ?  | 
|
| 61 | 
                            (custom_field.default_value.blank? ? "<option value=\"\">--- #{l(:actionview_instancetag_blank_option)} ---</option>" : '') : 
   | 
|
| 62 | 
    '<option></option>'  | 
|
| 63 | ||
| 64 | 
          select_tag(field_name, blank_option + options_for_select(groups.collect { |x| [x.lastname, x.id] }, custom_value.value), :id => field_id)
   | 
|
| 65 | ||
| 52 | 66 | 
    else  | 
| 53 | 67 | 
    text_field_tag(field_name, custom_value.value, :id => field_id)  | 
| 54 | 68 | 
    end  | 
| ... | ... | |
| 101 | 115 | 
    begin; format_date(value.to_date); rescue; value end  | 
| 102 | 116 | 
    when "bool"  | 
| 103 | 117 | 
    l(value == "1" ? :general_text_Yes : :general_text_No)  | 
| 118 | 
    when 'group_list':  | 
|
| 119 | 
    link_to_group(Group.find(:first, :conditions => [ 'id = ?', value]))  | 
|
| 104 | 120 | 
    else  | 
| 105 | 121 | 
    value  | 
| 106 | 122 | 
    end  | 
| ... | ... | |
| 110 | 126 | 
    def custom_field_formats_for_select  | 
| 111 | 127 | 
        CustomField::FIELD_FORMATS.sort {|a,b| a[1][:order]<=>b[1][:order]}.collect { |k| [ l(k[1][:name]), k[0] ] }
   | 
| 112 | 128 | 
    end  | 
| 129 | ||
| 130 | 
    # Return a string used to display a custom value on the issues view  | 
|
| 131 | 
    def format_value_for_view(value, field_format)  | 
|
| 132 | 
    return "-" unless value && !value.empty?  | 
|
| 133 | ||
| 134 | 
    case field_format  | 
|
| 135 | 
    when 'group_list'  | 
|
| 136 | 
    link_to_group(Group.find(:first, :conditions => [ 'id = ?', value]))  | 
|
| 137 | 
    else  | 
|
| 138 | 
    format_value(value, field_format)  | 
|
| 139 | 
    end  | 
|
| 140 | 
    end  | 
|
| 141 | ||
| 142 | 
    def show_value_on_view(custom_value)  | 
|
| 143 | 
    return "" unless custom_value  | 
|
| 144 | 
    format_value_for_view(custom_value.value, custom_value.custom_field.field_format)  | 
|
| 145 | 
    end  | 
|
| 146 | ||
| 113 | 147 | 
    end  | 
| app/helpers/application_helper.rb (working copy) | ||
|---|---|---|
| 58 | 58 | 
    end  | 
| 59 | 59 | 
    end  | 
| 60 | 60 | |
| 61 | 
    # Displays a link to the group  | 
|
| 62 | 
      def link_to_group(group, options={})
   | 
|
| 63 | 
    if group.is_a?(Group)  | 
|
| 64 | 
    link_to group.lastname, :controller => 'groups', :action => 'show', :id => group  | 
|
| 65 | 
    else  | 
|
| 66 | 
    h(group.to_s)  | 
|
| 67 | 
    end  | 
|
| 68 | 
    end  | 
|
| 69 | ||
| 61 | 70 | 
    # Displays a link to +issue+ with its subject.  | 
| 62 | 71 | 
    # Examples:  | 
| 63 | 72 | 
    #  | 
| app/models/issue.rb (working copy) | ||
|---|---|---|
| 328 | 328 | 
    # Author and assignee are always notified unless they have been locked  | 
| 329 | 329 | 
    notified << author if author && author.active?  | 
| 330 | 330 | 
    notified << assigned_to if assigned_to && assigned_to.active?  | 
| 331 | ||
| 332 | 
    ## EEH: TODO: add Group-email addresses here at some point  | 
|
| 333 | ||
| 331 | 334 | 
    notified.uniq!  | 
| 332 | 335 | 
    # Remove users that can not view the issue  | 
| 333 | 336 | 
        notified.reject! {|user| !visible?(user)}
   | 
| app/models/custom_field.rb (working copy) | ||
|---|---|---|
| 25 | 25 | 
                        "int" => { :name => :label_integer, :order => 3 },
   | 
| 26 | 26 | 
                        "float" => { :name => :label_float, :order => 4 },
   | 
| 27 | 27 | 
                        "list" => { :name => :label_list, :order => 5 },
   | 
| 28 | 
    			        "date" => { :name => :label_date, :order => 6 },
   | 
|
| 29 | 
    			        "bool" => { :name => :label_boolean, :order => 7 }
   | 
|
| 28 | 
                        "date" => { :name => :label_date, :order => 6 },
   | 
|
| 29 | 
                        "bool" => { :name => :label_boolean, :order => 7 },
   | 
|
| 30 | 
                        "group_list" => { :name => :label_group_list, :order => 8 },
   | 
|
| 30 | 31 | 
    }.freeze  | 
| 31 | 32 | |
| 32 | 33 | 
    validates_presence_of :name, :field_format  | 
| app/views/custom_fields/_form.rhtml (working copy) | ||
|---|---|---|
| 20 | 20 | 
    if (p_searchable) Element.show(p_searchable.parentNode);  | 
| 21 | 21 | 
    Element.show(p_values);  | 
| 22 | 22 | 
    break;  | 
| 23 | ||
| 24 | 
    case 'group_list':  | 
|
| 25 | 
          p_default.setAttribute('type','combolist');
   | 
|
| 26 | 
    Element.hide(p_length.parentNode);  | 
|
| 27 | 
    Element.hide(p_regexp.parentNode);  | 
|
| 28 | 
    if (p_searchable) Element.show(p_searchable.parentNode);  | 
|
| 29 | 
    Element.hide(p_values);  | 
|
| 30 | 
    break;  | 
|
| 31 | ||
| 23 | 32 | 
    case "bool":  | 
| 24 | 33 | 
          p_default.setAttribute('type','checkbox');
   | 
| 25 | 34 | 
    Element.hide(p_length.parentNode);  | 
| app/views/projects/show.rhtml (working copy) | ||
|---|---|---|
| 16 | 16 | 
    <% end %>  | 
| 17 | 17 | 
    <% @project.custom_values.each do |custom_value| %>  | 
| 18 | 18 | 
    <% if !custom_value.value.blank? %>  | 
| 19 | 
    	   <li><%= custom_value.custom_field.name%>: <%=h show_value(custom_value) %></li>
   | 
|
| 19 | 
           <li><%= custom_value.custom_field.name%>: <%= custom_value.custom_field.field_format == "group_list" ?  h(show_value_on_view(custom_value)) : h(show_value(custom_value)) %></li>
   | 
|
| 20 | 20 | 
    <% end %>  | 
| 21 | 21 | 
    <% end %>  | 
| 22 | 22 | 
    </ul>  | 
| config/locales/en.yml (working copy) | ||
|---|---|---|
| 475 | 475 | 
      label_and_its_subprojects: "{{value}} and its subprojects"
   | 
| 476 | 476 | 
    label_min_max_length: Min - Max length  | 
| 477 | 477 | 
    label_list: List  | 
| 478 | ||
| 479 | 
    ## EEH: TODO: Translation  | 
|
| 480 | 
    label_group_list: Group List  | 
|
| 481 | ||
| 478 | 482 | 
    label_date: Date  | 
| 479 | 483 | 
    label_integer: Integer  | 
| 480 | 484 | 
    label_float: Float  |