Merge Request #14

Merged
softwarepublico/mpog_software!14
Created by Luciano Prestes

Refactor software info

Assignee: Thiago Ribeiro
Milestone: None

Merged by Thiago Ribeiro

Commits (24)
4 participants
lib/categories_software_block.rb
... ... @@ -16,10 +16,15 @@ class CategoriesSoftwareBlock < Block
16 16 def content(args={})
17 17 block = self
18 18 s = show_name
  19 +
  20 + software_category = Category.find_by_name("Software")
  21 + categories = []
  22 + categories = software_category.children.sort if software_category
  23 +
19 24 lambda do |object|
20 25 render(
21 26 :file => 'blocks/categories_software',
22   - :locals => { :block => block, :show_name => s }
  27 + :locals => { :block => block, :show_name => s, :categories => categories }
23 28 )
24 29 end
25 30 end
... ...
lib/ext/communities_block.rb
... ... @@ -22,7 +22,7 @@ class CommunitiesBlock
22 22 valid_communities_string = Community.get_valid_communities_string
23 23 Community.all.each{|community| delete_communities << community.id unless eval(valid_communities_string)}
24 24  
25   - visible_profiles = visible_profiles.where(["profiles.id NOT IN (?)", delete_communities])
  25 + visible_profiles = visible_profiles.where(["profiles.id NOT IN (?)", delete_communities]) unless delete_communities.empty?
26 26  
27 27 if !prioritize_profiles_with_image
28 28 return visible_profiles.all(
... ...
lib/ext/profile_controller.rb
... ... @@ -25,17 +25,10 @@ class ProfileController
25 25  
26 26 def members
27 27 if is_cache_expired?(profile.members_cache_key(params))
28   - all_members = if params[:sort] and params[:sort] == "desc"
29   - profile.members.order("name desc")
30   - else
31   - profile.members.order("name asc")
32   - end
33   - @profile_admins = profile.admins
34   - @profile_members = all_members - @profile_admins
35   - @profile_members = @profile_members.paginate(:per_page => members_per_page, :page => params[:npage], :total_entries => @profile_members.size)
36   - @profile_admins = @profile_admins.paginate(:per_page => members_per_page, :page => params[:npage], :total_entries => @profile_admins.size)
37   - @total_members = all_members.size
38   - @profile_members_url = url_for(:controller => "profile", :action => "members")
  28 + sort = (params[:sort] == 'desc') ? params[:sort] : 'asc'
  29 + @profile_admins = profile.admins.includes(relations_to_include).order("name #{sort}").paginate(:per_page => members_per_page, :page => params[:npage])
  30 + @profile_members = profile.members.order("name #{sort}").paginate(:per_page => members_per_page, :page => params[:npage])
  31 + @profile_members_url = url_for(:controller => 'profile', :action => 'members')
39 32 end
40 33 end
41 34  
... ...
lib/ext/search_controller.rb
... ... @@ -61,6 +61,7 @@ class SearchController
61 61  
62 62 def get_filtered_software_list
63 63 params[:query] ||= ""
  64 + visible_communities = visible_profiles(Community)
64 65  
65 66 filtered_software_list = SoftwareInfo.search_by_query(params[:query])
66 67  
... ... @@ -70,6 +71,7 @@ class SearchController
70 71 @public_software_selected = false
71 72 end
72 73  
  74 + filtered_software_list.select!{ |software| visible_communities.include?(software.community) }
73 75 category_ids = get_filter_category_ids
74 76  
75 77 unless category_ids.empty?
... ... @@ -89,7 +91,7 @@ class SearchController
89 91 def get_communities_list software_list
90 92 filtered_community_list = []
91 93 software_list.each do |software|
92   - if @all_selected || software.public_software?
  94 + if !@public_software_selected || software.public_software?
93 95 filtered_community_list << software.community unless software.community.nil?
94 96 end
95 97 end
... ...
lib/software_info.rb
... ... @@ -13,15 +13,15 @@ class SoftwareInfo &lt; ActiveRecord::Base
13 13 DatabaseDescription
14 14 ]
15 15  
16   - scope :search_by_query, lambda {|query = ""|
  16 + scope :search_by_query, lambda { |query = ""|
17 17 filtered_query = query.gsub(/[\|\(\)\\\/\s\[\]'"*%&!:]/,' ').split.map{|w| w += ":*"}.join('|')
18 18 search_fields = SoftwareInfo.pg_search_plugin_fields
19 19  
20 20 if query.empty?
21   - SoftwareInfo.all
  21 + SoftwareInfo.joins(:community).where("profiles.visible = ?", true)
22 22 else
23 23 searchable_software_objects = SoftwareInfo.transform_list_in_methods_list(SEARCHABLE_SOFTWARE_CLASSES)
24   - includes(searchable_software_objects).where("to_tsvector('simple', #{search_fields}) @@ to_tsquery('#{filtered_query}')")
  24 + includes(searchable_software_objects).where("to_tsvector('simple', #{search_fields}) @@ to_tsquery('#{filtered_query}')").where("profiles.visible = ?", true)
25 25 end
26 26 }
27 27  
... ...
po/pt/software_communities.po
... ... @@ -179,7 +179,7 @@ msgstr &quot; campo finalidade em branco.&quot;
179 179  
180 180 #: plugins/software_communities/lib/create_software.rb:48
181 181 msgid " this finality:<p><em>%{finality}</em></p>"
182   -msgstr "esta finalidade:<p><em>%{finality}</em></p>"
  182 +msgstr " esta finalidade:<p><em>%{finality}</em></p>"
183 183  
184 184 #: plugins/software_communities/lib/create_software.rb:68
185 185 msgid "%{requestor} wants to create software %{subject}"
... ...
test/functional/search_controller_test.rb
... ... @@ -214,6 +214,48 @@ class SearchControllerTest &lt; ActionController::TestCase
214 214 assert_not_includes assigns(:searches)[:software_infos][:results], software_one.community
215 215 end
216 216  
  217 + should "software_infos search return only enabled softwares" do
  218 + s1 = SoftwareInfo.first
  219 + s2 = SoftwareInfo.last
  220 +
  221 + # First get them all normally
  222 + get(
  223 + :software_infos,
  224 + :query => "software"
  225 + )
  226 +
  227 + assert_includes assigns(:searches)[:software_infos][:results], s1.community
  228 + assert_includes assigns(:searches)[:software_infos][:results], s2.community
  229 +
  230 + s2.community.disable
  231 +
  232 + # Now it should not contain the disabled community
  233 + get(
  234 + :software_infos,
  235 + :query => "software"
  236 + )
  237 +
  238 + assert_includes assigns(:searches)[:software_infos][:results], s1.community
  239 + assert_not_includes assigns(:searches)[:software_infos][:results], s2.community
  240 + end
  241 +
  242 + should "software_infos search not return software with secret community" do
  243 + software_one = create_software_info("Software ABC", :acronym => "SFO", :finality => "Help")
  244 + software_two = create_software_info("Python", :acronym => "SFT", :finality => "Task")
  245 + software_three = create_software_info("Software DEF", :acronym => "SFW", :finality => "Java")
  246 +
  247 + software_one.community.secret = true
  248 + software_one.community.save!
  249 +
  250 + get(
  251 + :software_infos,
  252 + )
  253 +
  254 + assert_includes assigns(:searches)[:software_infos][:results], software_two.community
  255 + assert_includes assigns(:searches)[:software_infos][:results], software_three.community
  256 + assert_not_includes assigns(:searches)[:software_infos][:results], software_one.community
  257 + end
  258 +
217 259 private
218 260  
219 261 def create_software_categories
... ...
views/blocks/categories_and_tags.html.erb
1 1 <% if block.owner.categories.count > 0 %>
2   - <h3 class="block-title"><span><%= _("Categories") %></span></h3>
  2 + <h3 class="block-title"><span><%= _("Categories:") %></span></h3>
3 3  
4 4 <div class="category_cloud">
5 5 <% block.owner.categories.each do |category| %>
... ...
views/blocks/categories_software.html.erb
... ... @@ -8,12 +8,9 @@
8 8 <p><%= _("Categories:") %></p>
9 9 <ul class="categories-mais-software">
10 10  
11   - <% categories = Category.where(:name => "Software") %>
12   - <% unless categories.blank? %>
13   - <% categories.first.children.each do |category| %>
14   - <% unless category.software_infos.count < 1 %>
15   - <li><%= link_to _("#{category.name}") + " (#{category.software_infos.count})", {:controller => :search, :action => :software_infos, :selected_categories_id => [category.id]} %></li>
16   - <% end %>
  11 + <% categories.each do |category| %>
  12 + <% unless category.software_infos.count < 1 %>
  13 + <li><%= link_to _("#{category.name}") + " (#{category.software_infos.count})", {:controller => :search, :action => :software_infos, :selected_categories_id => [category.id]} %></li>
17 14 <% end %>
18 15 <% end %>
19 16 </ul>
... ...
views/blocks/software_highlights.html.erb
... ... @@ -2,13 +2,19 @@
2 2  
3 3 <!-- popover html structure -->
4 4 <!-- <a> link to fire popover -->
5   -<a class="toggle-popover">mais informaçõs</a>
  5 +<a class="toggle-popover">mais informações</a>
6 6 <!-- <span> to handle popover options -->
7 7 <span class="popover-span" data-toggle="popover" data-placement="top" data-class="highlights-popover">?</span>
8 8 <!-- <div> with html content of popover
9 9 MUST APPEAR AFTER THE SPAN -->
10 10 <div class="popover-content" style="display: none">
  11 + <div class="inner-content">
11 12 <p>Este software foi desenvolvido com recursos públicos, gerenciado por uma instituição
12   - governamental. Sua inclusão neste portal atende aos requisitos do <span>art. 14 da IN 01/2011</span>.</p>
  13 + governamental. Sua inclusão neste portal atende aos requisitos do
  14 + <a href="https://softwarepublico.gov.br/social/articles/0000/3365/in_spb_01.pdf">art. 14 da IN 01/2011</a>.
  15 + </p>
  16 + </div>
  17 + <div class="see-all">
13 18 <%= link_to _('See all'), {:controller => :search, :action => :software_infos, :only_softwares => softwares} %>
  19 + </div>
14 20 </div>
... ...
views/blocks/software_statistics.html.erb
1 1 <div class="software-metrics-block">
2 2 <ul class="metrics-list">
3   - <li><span class="arrow-globe-icon"></span><a href="#"><%= pluralize(profile.hits, 'visita', 'visitas') %></a></li>
4   - <li><span class="downloads-icon"></span><a href="#"><%= pluralize(total_downloads, 'download', 'downloads') %></a></li>
5   - <li><span class="face-icon"></span><a href="#"><%= block.benefited_people.to_s + _(' benefited people*') %></a></li>
6   - <li><span class="pig-safe-icon"></span><a href="#"><strong class="saved-money"><%= number_to_currency(block.saved_resources, unit: 'R$ ', separator: ',', delimiter: '.') %></strong> <%= _(' saved resources*') %></a></li>
  3 + <li>
  4 + <span class="arrow-globe-icon"></span>
  5 + <span id="visit-count">
  6 + <%= pluralize(profile.hits, 'visita', 'visitas') %>
  7 + </span>
  8 + </li>
  9 + <li>
  10 + <span class="downloads-icon"></span>
  11 + <span id="downloads-count">
  12 + <%= pluralize(total_downloads, 'download', 'downloads') %>
  13 + </span>
  14 + </li>
  15 + <li>
  16 + <span class="face-icon"></span>
  17 + <span id="benefited-people">
  18 + <%= block.benefited_people.to_s + _(' benefited people*') %>
  19 + </span>
  20 + </li>
  21 + <li>
  22 + <span class="pig-safe-icon"></span>
  23 + <span id="saved-resources">
  24 + <strong class="saved-money">
  25 + <%= number_to_currency(block.saved_resources, unit: 'R$ ',
  26 + separator: ',', delimiter: '.') %>
  27 + </strong>
  28 + <%= _(' saved resources*') %>
  29 + </span>
  30 + </li>
7 31 </ul>
8 32  
9   -
10   - <div class="admin-estimation">* <%= _("Data estimated by the software administrator.") %></div>
  33 + <div class="admin-estimation">
  34 + * <%= _("Data estimated by the software administrator.") %>
  35 + </div>
11 36 </div>
... ...
views/organization_ratings_extra_fields_show_data.html.erb
1 1 <div class="aditional-informations">
2 2 <div class="comments-people-benefited">
3   - <span>People benefited :</span> <%= user_rating.people_benefited unless user_rating.nil? %>
  3 + <span><%=_("Benefited People")%> :</span> <%= user_rating.people_benefited unless user_rating.nil? %>
4 4 </div>
5 5  
6 6 <div class="comments-saved-value">
7   - <span>Saved Value :</span> <%= user_rating.saved_value unless user_rating.nil? %>
  7 + <span><%=_("Saved Resources")%> :</span> <%= user_rating.saved_value unless user_rating.nil? %>
8 8 </div>
9 9 </div>
10 10  
... ...
views/profile/index.html.erb
... ... @@ -11,7 +11,7 @@
11 11 <% end %>
12 12  
13 13 <div class="page-profile-header">
14   - <%= render "blocks/profile_info_actions/join_leave_community" %>
  14 + <%= render "blocks/profile_info_actions/join_leave_community" if profile.class == "Community" %>
15 15 <% if !user.nil? && user.has_permission?('edit_profile', profile) %>
16 16 <div class="control-panel-button">
17 17 <%= button :control_panel, _('Control Panel'), profile.admin_url %>
... ...
views/profile/members.html.erb
  1 +<div class="common-profile-list-block">
1 2  
2   -<div class="page-members-header">
3   - <h1><%= _("Members") + " (#{@total_members})" %></h1>
4   - <h3 class="community-name"><%= _("%s") % profile.name %></h3>
5   - <%= render "blocks/profile_info_actions/community" %>
6   -</div>
  3 + <div class="page-members-header">
  4 + <h1><%= _("Members (%d)") % @profile_members.total_entries %></h1>
  5 + <h3 class="community-name"><%= profile.name %></h3>
  6 + <%= render "blocks/profile_info_actions/community" %>
  7 + </div>
7 8  
8 9 <% cache_timeout(profile.members_cache_key(params), 4.hours) do %>
9   -<div class="profile-members-tabs-container">
  10 + <div class="profile-members-tabs-container">
10 11 <% tabs = [] %>
11 12  
12   - <% div_members = content_tag :div, :class => "profile-members" do
  13 + <% div_members = content_tag :div, :class => "profile-members" do
13 14 render :partial => 'profile_members_list',
14 15 :locals => {
15 16 :users => @profile_members,
16 17 :role => "members"
17 18 }
  19 + end %>
18 20  
19   - end %>
20   -
21   - <% members_pagination = content_tag :div, :class => "pagination-profile-members" do
22   - pagination_links @profile_members, :param_name => 'npage'
23   - end %>
24   -
25   -
26   - <% tabs << {:title => "#{@profile_members.size} "+_("Members"),
  21 + <% tabs << {:title => _("%d Members") % @profile_members.total_entries,
27 22 :id => "members-tab",
28   - :content => (div_members + members_pagination)
  23 + :content => div_members
29 24 } %>
30 25  
31 26 <% div_admins = content_tag :div, :class => "profile-admins" do
... ... @@ -34,24 +29,16 @@
34 29 :users => @profile_admins,
35 30 :role => "admins"
36 31 }
37   - end %>
38   -
39   - <% admins_pagination = content_tag :div, :class => "pagination-profile-admins" do
40   - pagination_links @profile_admins, :param_name => 'npage'
41   - end %>
42   -
43   - <% tabs << {:title => "#{@profile_admins.size} "+_("Administrators"),
44   - :id => "admins-tab",
45   - :content => (div_admins+admins_pagination)
46   - } %>
47   -
48   -
  32 + end %>
49 33  
  34 + <% tabs << {:title => _("%d Administrators") % @profile_admins.total_entries,
  35 + :id => "admins-tab",
  36 + :content => div_admins
  37 + } %>
50 38  
51 39 <%= render_tabs(tabs) %>
52   - <% end %>
53   -</div>
54   -
  40 + </div><!-- end of class="profile-members-tabs-container" -->
  41 +<% end %>
55 42  
56 43 <% button_bar do %>
57 44 <%= button :back, _('Go back'), { :controller => 'profile' } %>
... ... @@ -66,7 +53,6 @@
66 53 <% end %>
67 54  
68 55 <%= hidden_field_tag "profile_url", @profile_members_url %>
69   -<%= hidden_field_tag "sort", "asc" %>
70   -</div><!-- fim class="common-profile-list-block" -->
  56 +</div><!-- end of class="common-profile-list-block" -->
71 57  
72 58 <%= javascript_include_tag "members_page.js" %>
... ...
views/profile_editor/edit_software_community.html.erb
... ... @@ -32,6 +32,9 @@
32 32 </div>
33 33 <% else %>
34 34 <div>
  35 + <%= labelled_check_box _("Secret &mdash; hide the community and all its contents for non members and other people can't join this community unless they are invited to."), 'profile_data[secret]', true, profile.secret, :class => "profile-secret-box" %>
  36 + </div>
  37 + <div>
35 38 <%= labelled_radio_button _('Public &mdash; show content of this group to all internet users'), 'profile_data[public_profile]', true, @profile.public_profile? %>
36 39 </div>
37 40 <div>
... ... @@ -84,4 +87,4 @@
84 87 <% end %>
85 88 <% end %>
86 89 <% end %>
87   -<% end %>
88 90 \ No newline at end of file
  91 +<% end %>
... ...
views/search/_catalog_result_list.html.erb
... ... @@ -9,7 +9,7 @@
9 9 <% if multiple_search?(@searches) %>
10 10 <h3><%= @names[name] %></h3>
11 11 <% if search[:results].total_entries > SearchController::MULTIPLE_SEARCH_LIMIT %>
12   - <%= link_to(_('see all (%d)') % search[:results].total_entries, params.merge(:action => name), :class => 'see-more' ) %>
  12 + <%= link_to(_("see all (%d)") % search[:results].total_entries, params.merge(:action => name), :class => 'see-more' ) %>
13 13 <% end %>
14 14 <% end %>
15 15  
... ...
  • B5782cb554a4b36d12017ee18d1b6e9d?s=40&d=identicon
    Simiao Carvalho @simiaosimis

    Added 1 new commit:

    • 4c4c417d - Change html structure on software statistics block
    Choose File ...   File name...
    Cancel
  • B5782cb554a4b36d12017ee18d1b6e9d?s=40&d=identicon
    Simiao Carvalho @simiaosimis

    Added 1 new commit:

    • ec4d3838 - Fix html tag orders on software statistics block
    Choose File ...   File name...
    Cancel
  • Cae6de821da30189b2573c26aa4ddfa1?s=40&d=identicon
    Tallys Martins @tallysmartins

    Added 1 new commit:

    • 7367cafd - Fix bug on search by software highlights block
    Choose File ...   File name...
    Cancel
  • Cae6de821da30189b2573c26aa4ddfa1?s=40&d=identicon
    Tallys Martins started a discussion on commit 8f80f666
    last updated by Thiago Ribeiro
  • Cae6de821da30189b2573c26aa4ddfa1?s=40&d=identicon
    Tallys Martins @tallysmartins

    @simiaosimis @thiago por questões de conflito eu desfiz esse commit e refiz sem a parte das traduções e já está na master e na stable... porém eu não consegui identificar quais traduções vocês fazem, se é apenas essas do beneficiarios e recursos economizados, se for está OK, se não for tem que regerar a tradução na stable e traduzir o que foi feito nesse commit. me pinguem plx pra resolver isso

    Choose File ...   File name...
    Cancel
  • Cae6de821da30189b2573c26aa4ddfa1?s=40&d=identicon
    Tallys Martins @tallysmartins
    Choose File ...   File name...
    Cancel
  • B5782cb554a4b36d12017ee18d1b6e9d?s=40&d=identicon
    Simiao Carvalho @simiaosimis

    @tallysmartins Eram só esse dois lugares mesmo (Benefited People, Saved Resources), então tudo certo.

    Choose File ...   File name...
    Cancel
  • 800e3af93350753db9dee1864cef10ff?s=40&d=identicon
    Thiago Ribeiro @thiago

    em relação ao %d em ver todos é problema de traduçao, logo quando gerar as traduções certas deve resolver.

    Choose File ...   File name...
    Cancel
  • Cae6de821da30189b2573c26aa4ddfa1?s=40&d=identicon
    Tallys Martins @tallysmartins

    Added 2 new commits:

    • e89047ef - Revert "Change translation on Rating and Categories"
    • 2a5409a8 - Insert strings to be translated on User Report
    Choose File ...   File name...
    Cancel
  • Cae6de821da30189b2573c26aa4ddfa1?s=40&d=identicon
    Tallys Martins @tallysmartins

    Added 2 new commits:

    • ff48cac4 - Remove disabled communities from catalog search
    • 61040de7 - Merge branch 'remove_disabled_communities_from_catalog' into 'master'
    Choose File ...   File name...
    Cancel
  • Cae6de821da30189b2573c26aa4ddfa1?s=40&d=identicon
    Tallys Martins @tallysmartins

    @lucianopc faz um rebase com a master

    Choose File ...   File name...
    Cancel
  • 800e3af93350753db9dee1864cef10ff?s=40&d=identicon
    Thiago Ribeiro @thiago

    Added 2 new commits:

    • bcc456c3 - Order categories in categories_software_block
    • 7ed2d55d - Merge branch 'order_categories_383' into 'master'
    Choose File ...   File name...
    Cancel
  • 800e3af93350753db9dee1864cef10ff?s=40&d=identicon
    Thiago Ribeiro @thiago

    Added 3 new commits:

    • 5ffa5a41 - Add secret option in edit software community
    • c489251b - Search software_infos find only softwares with visible community
    • cc3950d2 - Merge branch 'software_community_secret_237' into 'master'
    Choose File ...   File name...
    Cancel
  • 800e3af93350753db9dee1864cef10ff?s=40&d=identicon
    Thiago Ribeiro @thiago

    Added 1 new commit:

    • a8887fbb - Merge branch 'software_community_secret_237' into 'master'
    Choose File ...   File name...
    Cancel
  • 800e3af93350753db9dee1864cef10ff?s=40&d=identicon
    Thiago Ribeiro @thiago

    Status changed to closed

    Choose File ...   File name...
    Cancel
  • 800e3af93350753db9dee1864cef10ff?s=40&d=identicon
    Thiago Ribeiro @thiago

    Status changed to reopened

    Choose File ...   File name...
    Cancel