Commit d99a6c2b297ca3ceda7837988ac2487a1553314d

Authored by Parley
1 parent d4ebc3c3

Software Block provides option of public, generic and all softwares.

-Tests also added

Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com>
Signed-off-by: Parley Martins <parley@outlook.com>
features/software_block.feature 0 → 100644
... ... @@ -0,0 +1,48 @@
  1 +Feature: edit adherent fields
  2 + As a user
  3 + I want to edit adherent fields
  4 + to mantain my public software up to date.
  5 +
  6 + Background:
  7 + Given "MpogSoftwarePlugin" plugin is enabled
  8 + And I am logged in as mpog_admin
  9 + And I go to /admin/plugins
  10 + And I check "MpogSoftwarePlugin"
  11 + And I press "Save changes"
  12 + And the following softwares
  13 + | name | public_software |
  14 + | Public Software | true |
  15 + | Generic Software | false |
  16 +
  17 + Scenario: Add software block
  18 + Given I am logged in as mpog_admin
  19 + And I follow "Control panel"
  20 + And I follow "Edit sideboxes"
  21 + When I follow "Add a block"
  22 + And I choose "Softwares"
  23 + And I press "Add"
  24 + Then I should see "softwares"
  25 +
  26 + Scenario: Change software block to generic software block
  27 + Given I am logged in as mpog_admin
  28 + And I follow "Control panel"
  29 + And I follow "Edit sideboxes"
  30 + When I follow "Add a block"
  31 + And I choose "Softwares"
  32 + And I press "Add"
  33 + And I follow "Edit" within ".softwares-block"
  34 + And I select "Generic" from "block_software_type"
  35 + And I press "Save"
  36 + Then I should see "generic software"
  37 +
  38 + Scenario: Change software block to generic software block
  39 + Given I am logged in as mpog_admin
  40 + And I follow "Control panel"
  41 + And I follow "Edit sideboxes"
  42 + When I follow "Add a block"
  43 + And I choose "Softwares"
  44 + And I press "Add"
  45 + And I follow "Edit" within ".softwares-block"
  46 + And I select "Public" from "block_software_type"
  47 + And I press "Save"
  48 + Then I should see "public software"
0 49 \ No newline at end of file
... ...
features/step_definitions/mpog_steps.rb
... ... @@ -105,21 +105,33 @@ end
105 105  
106 106 Given /^the following softwares$/ do |table|
107 107 table.hashes.each do |item|
108   - community = Community.create :name=>item[:name]
109   - programming_language = ProgrammingLanguage.where(:name=>item[:software_language]).first
110   - database_description = DatabaseDescription.where(:name=>item[:software_database]).first
111   -
112   - software_language = SoftwareLanguage.where(:programming_language_id=>programming_language).first
113   - software_database = SoftwareDatabase.where(:database_description_id=>database_description).first
114   -
115   - operating_system_name = OperatingSystemName.where(:name => item[:operating_system]).first
116   - operating_system = OperatingSystem.where(:operating_system_name_id => operating_system_name).first
117   -
118   - software_info = SoftwareInfo::new(:acronym=>item[:acronym], :operating_platform=>item[:operating_platform], :objectives => item[:objectives], :features => item[:features])
119   - software_info.community = community
120   - software_info.software_languages << software_language
121   - software_info.software_databases << software_database
122   - software_info.operating_systems << operating_system
  108 + software_info = SoftwareInfo.new
  109 + software_info.community = Community.create(:name=>item[:name])
  110 +
  111 + software_info.acronym = item[:acronym] if item[:acronym]
  112 + software_info.acronym = item[:operating_platform] if item[:operating_platform]
  113 + software_info.acronym = item[:objectives] if item[:objectives]
  114 + software_info.acronym = item[:features] if item[:features]
  115 + software_info.public_software = item[:public_software] == "true" if item[:public_software]
  116 +
  117 + if item[:software_language]
  118 + programming_language = ProgrammingLanguage.where(:name=>item[:software_language]).first
  119 + software_language = SoftwareLanguage.where(:programming_language_id=>programming_language).first
  120 + software_info.software_languages << software_language
  121 + end
  122 +
  123 + if item[:software_database]
  124 + database_description = DatabaseDescription.where(:name=>item[:software_database]).first
  125 + software_database = SoftwareDatabase.where(:database_description_id=>database_description).first
  126 + software_info.software_databases << software_database
  127 + end
  128 +
  129 + if item[:operating_system]
  130 + operating_system_name = OperatingSystemName.where(:name => item[:operating_system]).first
  131 + operating_system = OperatingSystem.where(:operating_system_name_id => operating_system_name).first
  132 + software_info.operating_systems << operating_system
  133 + end
  134 +
123 135 software_info.save!
124 136 end
125 137 end
... ...
lib/softwares_block.rb
1 1 class SoftwaresBlock < CommunitiesBlock
2 2  
3   - attr_accessible :accessor_id, :accessor_type, :role_id, :resource_id, :resource_type
  3 + settings_items :software_type
  4 + attr_accessible :accessor_id, :accessor_type, :role_id, :resource_id, :resource_type, :software_type
4 5  
5 6 def self.description
6 7 _('Softwares')
7 8 end
8 9  
9 10 def default_title
10   - n_('{#} software', '{#} softwares', profile_count)
  11 + if self.software_type == "Generic"
  12 + return n_('{#} generic software', '{#} generic softwares', profile_count)
  13 + elsif self.software_type == "Public"
  14 + return n_('{#} public software', '{#} public softwares', profile_count)
  15 + else
  16 + return n_('{#} software', '{#} softwares', profile_count)
  17 + end
11 18 end
12 19  
13 20 def help
... ... @@ -15,6 +22,7 @@ class SoftwaresBlock &lt; CommunitiesBlock
15 22 end
16 23  
17 24 def footer
  25 + self.software_type ||= "All"
18 26 owner = self.owner
19 27 case owner
20 28 when Profile
... ... @@ -51,9 +59,15 @@ class SoftwaresBlock &lt; CommunitiesBlock
51 59  
52 60 list_with_software = []
53 61  
54   - visible_profiles.each do |p|
55   - if p.class == Community and p.software? and !p.institution?
56   - list_with_software << p
  62 + result.each do |profile|
  63 + if profile.class == Community and profile.software?
  64 + if self.software_type == "Public"
  65 + list_with_software << profile if profile.software_info.public_software?
  66 + elsif self.software_type == "Generic"
  67 + list_with_software << profile if !profile.software_info.public_software?
  68 + else
  69 + list_with_software << profile
  70 + end
57 71 end
58 72 end
59 73  
... ...
views/box_organizer/_softwares_block.html.erb 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +<div id='edit-softwares-block'>
  2 + <%= labelled_form_field _('Software Type:'), select_tag('block[software_type]', options_for_select(["Public", "Generic", "All"], @block.software_type) )%>
  3 +</div>
... ...
views/environment_design 0 → 120000
... ... @@ -0,0 +1 @@
  1 +/home/parley/Repositories/noosfero/plugins/mpog_software/views/box_organizer
0 2 \ No newline at end of file
... ...
views/profile_design 0 → 120000
... ... @@ -0,0 +1 @@
  1 +/home/parley/Repositories/noosfero/plugins/mpog_software/views/box_organizer
0 2 \ No newline at end of file
... ...