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 67 value: database_name,
68 68 id: database_id,
69 69 hidden: true,
70   - autocomplete: true
  70 + autocomplete: true,
  71 + select_field: false
71 72 },
72 73 version: {
73 74 value: database_data[:version],
... ...
lib/dynamic_table_helper.rb
... ... @@ -2,6 +2,7 @@ class DynamicTableHelper
2 2 extend(
3 3 ActionView::Helpers::TagHelper,
4 4 ActionView::Helpers::FormTagHelper,
  5 + ActionView::Helpers::FormOptionsHelper,
5 6 ActionView::Helpers::UrlHelper,
6 7 ApplicationHelper
7 8 )
... ... @@ -21,11 +22,11 @@ class DynamicTableHelper
21 22 DATA = {
22 23 name: {
23 24 label: LABEL_TEXT[:name],
24   - name: COLLUMN_NAME[:name],
  25 + name: COLLUMN_NAME[:name]
25 26 },
26 27 version: {
27 28 label: LABEL_TEXT[:version],
28   - name: COLLUMN_NAME[:version],
  29 + name: COLLUMN_NAME[:version]
29 30 } ,
30 31 license: {
31 32 label: LABEL_TEXT[:license],
... ... @@ -43,7 +44,7 @@ class DynamicTableHelper
43 44 end
44 45  
45 46 def self.generate_table_lines data={}
46   - @@model = data[:model_name].to_css_class
  47 + @@model = data[:model_name]
47 48 @@field_name = data[:field_name]
48 49 @@hidden_label = data[:name][:value]
49 50 @@hidden_id = data[:name][:id]
... ... @@ -66,7 +67,13 @@ class DynamicTableHelper
66 67 unless row_data.blank?
67 68 content_tag :tr, [
68 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 77 self.hidden_collumn(row_data[:delete], row_data[:hidden])
71 78 ].join()
72 79 end
... ... @@ -76,7 +83,7 @@ class DynamicTableHelper
76 83 content_tag :td, label_tag(label)
77 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 87 html_options =
81 88 if autocomplete
82 89 {
... ... @@ -88,11 +95,16 @@ class DynamicTableHelper
88 95 end
89 96  
90 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 103 else
94   - content_tag :td, text_field_tag("#{@@model}[][#{name}]", value, html_options)
  104 + text_field_tag("#{@@model}[][#{name}]", value, html_options)
95 105 end
  106 +
  107 + content_tag :td, content
96 108 end
97 109  
98 110 def self.hidden_collumn delete=false, hidden_data=false
... ...
lib/library_helper.rb
... ... @@ -39,7 +39,8 @@ module LibraryHelper
39 39 name: {
40 40 value: library_data[:name],
41 41 hidden: false,
42   - autocomplete: false
  42 + autocomplete: false,
  43 + select_field: false
43 44 },
44 45 version: {
45 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 5 def self.list_operating_system new_operating_systems
3 6 return [] if new_operating_systems.nil? or new_operating_systems.length == 0
4 7 list_operating_system = []
... ... @@ -30,88 +33,39 @@ module OperatingSystemHelper
30 33 true
31 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 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 66 end
113 67  
114 68 def self.add_dynamic_table
115   - operating_system_as_tables(nil).call
  69 + operating_system_as_tables(nil).first.call
116 70 end
117 71 end
... ...
lib/software_language_helper.rb
... ... @@ -66,7 +66,8 @@ class SoftwareLanguageHelper &lt; DynamicTableHelper
66 66 value: language_name,
67 67 id: language_id,
68 68 hidden: true,
69   - autocomplete: true
  69 + autocomplete: true,
  70 + select_field: false
70 71 },
71 72 version: {
72 73 value: language_data[:version],
... ...
views/profile/_software_tab.html.erb
... ... @@ -112,9 +112,10 @@
112 112 </td>
113 113 </tr>
114 114  
  115 +
115 116 <tr>
116 117 <td>
117   - <table class = "operating-system-info">
  118 + <table class="operating-system-info">
118 119 <thead>
119 120 <tr>
120 121 <th colspan="2"><%= _("Operating System") %></th>
... ... @@ -122,14 +123,17 @@
122 123 </tr>
123 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 138 </tr>
135 139 </table>
136 140 \ No newline at end of file
... ...