Commit 587d930786e77f8e8f658cb905a5b769f573f329

Authored by Fabio Teixeira
Committed by David Silva
1 parent 5e8e5a7e
Exists in master and in 79 other branches add_sisp_to_chef, add_super_archives_plugin, api_for_colab, automates_core_packing, backup_not_prod, changes_in_buttons_on_content_panel, colab_automated_login, colab_spb_plugin_recipe, colab_widgets_settings, design_validation, dev_env_minimal, disable_email_dev, fix_breadcrumbs_position, fix_categories_software_link, fix_edit_institution, fix_edit_software_with_another_license, fix_get_license_info, fix_gitlab_assets_permission, fix_list_style_inside_article, fix_list_style_on_folder_elements, fix_members_pagination, fix_merge_request_url, fix_models_translations, fix_no_license, fix_software_api, fix_software_block_migration, fix_software_communities_translations, fix_software_communities_unit_test, fix_style_create_institution_admin_panel, fix_superarchives_imports, fix_sym_links_noosfero, focus_search_field_theme, gov-user-refactoring, gov-user-refactoring-rails4, header_fix, institution_modal_on_rating, kalibro-conf-refactoring, kalibro-processor-package, lxc_settings, margin_fix, mezuro_cookbook, prezento, refactor_download_block, refactor_software_communities, refactor_software_for_sisp, register_page, release-process, release-process-v2, remove-unused-images, remove_broken_theme, remove_secondary_email_from_user, remove_sisp_buttons, removing_super_archives_email, review_message, scope2method, signals_user_noosfero, sisp_catalog_header, sisp_colab_config, sisp_dev, sisp_dev_master, sisp_simple_version, software_as_organization, software_catalog_style_fix, software_communities_html_refactor, software_infos_api, spb_minimal_env, spb_to_rails4, spec_refactor, stable-4.1, stable-4.2, stable-4.x, temp_soft_comm_refactoring, theme_header, theme_javascript_refactory, thread_dropdown, thread_page, update_search_by_categories, update_software_api, update_softwares_boxes

Build DynamicTable into Operating Systems

Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
lib/database_helper.rb
@@ -67,7 +67,8 @@ class DatabaseHelper &lt; DynamicTableHelper @@ -67,7 +67,8 @@ class DatabaseHelper &lt; DynamicTableHelper
67 value: database_name, 67 value: database_name,
68 id: database_id, 68 id: database_id,
69 hidden: true, 69 hidden: true,
70 - autocomplete: true 70 + autocomplete: true,
  71 + select_field: false
71 }, 72 },
72 version: { 73 version: {
73 value: database_data[:version], 74 value: database_data[:version],
lib/dynamic_table_helper.rb
@@ -2,6 +2,7 @@ class DynamicTableHelper @@ -2,6 +2,7 @@ class DynamicTableHelper
2 extend( 2 extend(
3 ActionView::Helpers::TagHelper, 3 ActionView::Helpers::TagHelper,
4 ActionView::Helpers::FormTagHelper, 4 ActionView::Helpers::FormTagHelper,
  5 + ActionView::Helpers::FormOptionsHelper,
5 ActionView::Helpers::UrlHelper, 6 ActionView::Helpers::UrlHelper,
6 ApplicationHelper 7 ApplicationHelper
7 ) 8 )
@@ -21,11 +22,11 @@ class DynamicTableHelper @@ -21,11 +22,11 @@ class DynamicTableHelper
21 DATA = { 22 DATA = {
22 name: { 23 name: {
23 label: LABEL_TEXT[:name], 24 label: LABEL_TEXT[:name],
24 - name: COLLUMN_NAME[:name], 25 + name: COLLUMN_NAME[:name]
25 }, 26 },
26 version: { 27 version: {
27 label: LABEL_TEXT[:version], 28 label: LABEL_TEXT[:version],
28 - name: COLLUMN_NAME[:version], 29 + name: COLLUMN_NAME[:version]
29 } , 30 } ,
30 license: { 31 license: {
31 label: LABEL_TEXT[:license], 32 label: LABEL_TEXT[:license],
@@ -43,7 +44,7 @@ class DynamicTableHelper @@ -43,7 +44,7 @@ class DynamicTableHelper
43 end 44 end
44 45
45 def self.generate_table_lines data={} 46 def self.generate_table_lines data={}
46 - @@model = data[:model_name].to_css_class 47 + @@model = data[:model_name]
47 @@field_name = data[:field_name] 48 @@field_name = data[:field_name]
48 @@hidden_label = data[:name][:value] 49 @@hidden_label = data[:name][:value]
49 @@hidden_id = data[:name][:id] 50 @@hidden_id = data[:name][:id]
@@ -66,7 +67,13 @@ class DynamicTableHelper @@ -66,7 +67,13 @@ class DynamicTableHelper
66 unless row_data.blank? 67 unless row_data.blank?
67 content_tag :tr, [ 68 content_tag :tr, [
68 self.label_collumn(row_data[:label]), 69 self.label_collumn(row_data[:label]),
69 - self.value_collumn(row_data[:value], row_data[:name], row_data[:autocomplete]), 70 + self.value_collumn(
  71 + row_data[:value],
  72 + row_data[:name],
  73 + row_data[:autocomplete],
  74 + row_data[:select_field],
  75 + row_data[:options]
  76 + ),
70 self.hidden_collumn(row_data[:delete], row_data[:hidden]) 77 self.hidden_collumn(row_data[:delete], row_data[:hidden])
71 ].join() 78 ].join()
72 end 79 end
@@ -76,7 +83,7 @@ class DynamicTableHelper @@ -76,7 +83,7 @@ class DynamicTableHelper
76 content_tag :td, label_tag(label) 83 content_tag :td, label_tag(label)
77 end 84 end
78 85
79 - def self.value_collumn value="", name="", autocomplete=false, disabled=false 86 + def self.value_collumn value="", name="", autocomplete=false, select_field=false, options=[]
80 html_options = 87 html_options =
81 if autocomplete 88 if autocomplete
82 { 89 {
@@ -88,11 +95,16 @@ class DynamicTableHelper @@ -88,11 +95,16 @@ class DynamicTableHelper
88 end 95 end
89 96
90 html_options[:disabled] = @@disabled 97 html_options[:disabled] = @@disabled
91 - if autocomplete  
92 - content_tag :td, text_field_tag("#{@@model}_autocomplete", value, html_options) 98 +
  99 + content = if select_field
  100 + select_tag("#{@@model}[][#{@@field_name}]", options, html_options)
  101 + elsif autocomplete
  102 + text_field_tag("#{@@model}_autocomplete", value, html_options)
93 else 103 else
94 - content_tag :td, text_field_tag("#{@@model}[][#{name}]", value, html_options) 104 + text_field_tag("#{@@model}[][#{name}]", value, html_options)
95 end 105 end
  106 +
  107 + content_tag :td, content
96 end 108 end
97 109
98 def self.hidden_collumn delete=false, hidden_data=false 110 def self.hidden_collumn delete=false, hidden_data=false
lib/library_helper.rb
@@ -39,7 +39,8 @@ module LibraryHelper @@ -39,7 +39,8 @@ module LibraryHelper
39 name: { 39 name: {
40 value: library_data[:name], 40 value: library_data[:name],
41 hidden: false, 41 hidden: false,
42 - autocomplete: false 42 + autocomplete: false,
  43 + select_field: false
43 }, 44 },
44 version: { 45 version: {
45 value: library_data[:version], 46 value: library_data[:version],
lib/operating_system_helper.rb
1 -module OperatingSystemHelper 1 +class OperatingSystemHelper < DynamicTableHelper
  2 + MODEL_NAME = "operating_system"
  3 + FIELD_NAME = "operating_system_name_id"
  4 +
2 def self.list_operating_system new_operating_systems 5 def self.list_operating_system new_operating_systems
3 return [] if new_operating_systems.nil? or new_operating_systems.length == 0 6 return [] if new_operating_systems.nil? or new_operating_systems.length == 0
4 list_operating_system = [] 7 list_operating_system = []
@@ -30,88 +33,39 @@ module OperatingSystemHelper @@ -30,88 +33,39 @@ module OperatingSystemHelper
30 true 33 true
31 end 34 end
32 35
33 - def self.operating_system_as_tables(list_operating_system, have_delete_button = true, show_information = false)  
34 - extend(  
35 - ActionView::Helpers::TagHelper,  
36 - ActionView::Helpers::FormTagHelper,  
37 - ActionView::Helpers::UrlHelper,  
38 - ActionView::Helpers::FormOptionsHelper,  
39 - ApplicationHelper  
40 - )  
41 -  
42 - lambdas_list = []  
43 -  
44 - if not show_information  
45 - return operating_system_html_structure(  
46 - {:operating_system_name_id => "", :version => ""},  
47 - have_delete_button  
48 - ) if list_operating_system.nil?  
49 -  
50 - list_operating_system.each do |operating_system|  
51 - lambdas_list << operating_system_html_structure(  
52 - operating_system,  
53 - have_delete_button  
54 - )  
55 - end  
56 - else  
57 - list_operating_system.each do |operating_system|  
58 - lambdas_list << operating_system_html_structure(operating_system)  
59 - end  
60 - end 36 + def self.operating_system_as_tables(list_operating_system, disabled=false)
  37 + model_list = list_operating_system
  38 + model_list ||= [{:operating_system_name_id => "", :version => ""}]
61 39
62 - lambdas_list 40 + models_as_tables model_list, "operating_system_html_structure", disabled
63 end 41 end
64 42
65 - def self.operating_system_html_structure (operating_system_data,have_delete_button = true)  
66 - Proc::new do  
67 - content_tag(  
68 - 'table',  
69 - content_tag(  
70 - 'tr',  
71 - content_tag('td', label_tag(_("Name")))+  
72 - content_tag(  
73 - 'td',  
74 - select_tag(  
75 - "operating_system[][operating_system_name_id]",  
76 - SoftwareHelper.select_options(  
77 - OperatingSystemName.all,  
78 - operating_system_data[:operating_system_name_id]  
79 - )  
80 - )  
81 - )+  
82 - content_tag('td')  
83 - )+ 43 + def self.operating_system_html_structure (operating_system_data, disabled)
  44 + select_options = options_for_select(
  45 + OperatingSystemName.all.collect {|osn| [osn.name, osn.id]},
  46 + operating_system_data[:operating_system_name_id]
  47 + )
84 48
85 - content_tag(  
86 - 'tr',  
87 - content_tag('td', label_tag(_("Version")))+  
88 - content_tag(  
89 - 'td',  
90 - text_field_tag(  
91 - "operating_system[][version]",  
92 - operating_system_data[:version]  
93 - )  
94 - )+  
95 - if have_delete_button  
96 - content_tag(  
97 - 'td',  
98 - button_without_text(  
99 - :delete,  
100 - _('Delete'),  
101 - "#" ,  
102 - :class=>"delete-dynamic-table"  
103 - ),  
104 - :align => 'right'  
105 - )  
106 - else  
107 - content_tag('td', "")  
108 - end  
109 - ),:class => 'dynamic-table library-table'  
110 - )  
111 - end 49 + data = {
  50 + model_name: MODEL_NAME,
  51 + field_name: FIELD_NAME,
  52 + name: {
  53 + hidden: false,
  54 + autocomplete: false,
  55 + select_field: true,
  56 + options: select_options
  57 + },
  58 + version: {
  59 + value: operating_system_data[:version],
  60 + hidden: true,
  61 + delete: true
  62 + }
  63 + }
  64 + DATA[:license].delete(:value)
  65 + table_html_structure(data, disabled)
112 end 66 end
113 67
114 def self.add_dynamic_table 68 def self.add_dynamic_table
115 - operating_system_as_tables(nil).call 69 + operating_system_as_tables(nil).first.call
116 end 70 end
117 end 71 end
lib/software_language_helper.rb
@@ -66,7 +66,8 @@ class SoftwareLanguageHelper &lt; DynamicTableHelper @@ -66,7 +66,8 @@ class SoftwareLanguageHelper &lt; DynamicTableHelper
66 value: language_name, 66 value: language_name,
67 id: language_id, 67 id: language_id,
68 hidden: true, 68 hidden: true,
69 - autocomplete: true 69 + autocomplete: true,
  70 + select_field: false
70 }, 71 },
71 version: { 72 version: {
72 value: language_data[:version], 73 value: language_data[:version],
views/profile/_software_tab.html.erb
@@ -112,9 +112,10 @@ @@ -112,9 +112,10 @@
112 </td> 112 </td>
113 </tr> 113 </tr>
114 114
  115 +
115 <tr> 116 <tr>
116 <td> 117 <td>
117 - <table class = "operating-system-info"> 118 + <table class="operating-system-info">
118 <thead> 119 <thead>
119 <tr> 120 <tr>
120 <th colspan="2"><%= _("Operating System") %></th> 121 <th colspan="2"><%= _("Operating System") %></th>
@@ -122,14 +123,17 @@ @@ -122,14 +123,17 @@
122 </tr> 123 </tr>
123 </thead> 124 </thead>
124 125
125 - <tbody>  
126 - <% profile.software_info.operating_systems.each do |operating_system| %>  
127 - <%= display_mpog_field(_('Name:'), operating_system.operating_system_name , :name, true) %>  
128 - <%= display_mpog_field(_('Version:'), operating_system, :version, true) %>  
129 - <% end %>  
130 - </tbody>  
131 - </table>  
132 - </td>  
133 - </tr> 126 + <tbody>
  127 + <tr> <td>
  128 + <% operating_systems = profile.software_info.operating_systems %>
  129 + <% OperatingSystemHelper.operating_system_as_tables(operating_systems, true).each do |tab| %>
  130 + <%= tab.call %>
  131 + <%end%>
  132 + </td> </tr>
  133 + </tbody>
  134 + </table>
  135 + </td>
  136 + </tr>
  137 +
134 </tr> 138 </tr>
135 </table> 139 </table>
136 \ No newline at end of file 140 \ No newline at end of file