Commit ff57616f7dc9161007276255f57d66f34f2867d2
Exists in
master
and in
79 other branches
Merge softwarepublico/mpog_software
Showing
185 changed files
with
10978 additions
and
0 deletions
Show diff stats
Too many changes.
To preserve performance only 100 of 185 files displayed.
@@ -0,0 +1,94 @@ | @@ -0,0 +1,94 @@ | ||
1 | +[](https://codeclimate.com/github/fabio1079/noosfero-plugin) | ||
2 | + | ||
3 | +README - MPOG Software Público Plugin | ||
4 | +================================ | ||
5 | + | ||
6 | +MPOG Software Público Plugin is a plugin that includes features to Novo Portal do Software Público Brasileiro (SPB). | ||
7 | + | ||
8 | +More information about SPB: https://www.participa.br/softwarepublico | ||
9 | + | ||
10 | +INSTALL | ||
11 | +======= | ||
12 | + | ||
13 | +Enable Plugin | ||
14 | +------------- | ||
15 | + | ||
16 | +Also, you need to enable MPOG Software Plugin on your Noosfero: | ||
17 | + | ||
18 | +cd <your_noosfero_dir> | ||
19 | +./script/noosfero-plugins enable software_communities | ||
20 | + | ||
21 | +Activate Plugin | ||
22 | +--------------- | ||
23 | + | ||
24 | +As a Noosfero administrator user, go to administrator panel: | ||
25 | + | ||
26 | +- Execute the command to allow city and states to show up: | ||
27 | + psql -U USERNAME -d NOOSFERO_DATABASE -a -f db/brazil_national_regions.sql | ||
28 | +- Click on "Enable/disable plugins" option | ||
29 | +- Click on "MPOG Software Plugin" check-box | ||
30 | + | ||
31 | +Schedule Institutions Update | ||
32 | +---------------------------- | ||
33 | + | ||
34 | +./plugins/software_communities/script/schedule_institution_update.sh | ||
35 | + | ||
36 | + | ||
37 | +Create Categories | ||
38 | +------------------- | ||
39 | + | ||
40 | +To create the categories that a software can have run | ||
41 | + | ||
42 | +rake software:create_categories | ||
43 | + | ||
44 | +Create Licenses | ||
45 | +----------------- | ||
46 | + | ||
47 | +This command populate the database with 71 licenses and it's links | ||
48 | +rake software:create_licenses | ||
49 | + | ||
50 | +Translate Plugin | ||
51 | +------------------ | ||
52 | + | ||
53 | +To translate the strings used in the plugin run | ||
54 | + | ||
55 | +ruby script/move-translations-to-plugins.rb | ||
56 | +rake updatepo | ||
57 | +rake noosfero:translations:compile | ||
58 | + | ||
59 | + | ||
60 | +Running MPOG Software tests | ||
61 | +-------------------- | ||
62 | +$ ruby plugins/software_communities/test/unit/name_of_file.rb | ||
63 | +$ cucumber plugins/software_communities/features/ | ||
64 | + | ||
65 | +Get Involved | ||
66 | +============ | ||
67 | + | ||
68 | +If you find any bug and/or want to collaborate, please send an e-mail to arthurmde@gmail.com | ||
69 | + | ||
70 | +LICENSE | ||
71 | +======= | ||
72 | + | ||
73 | +Copyright (c) The Author developers. | ||
74 | + | ||
75 | +See Noosfero license. | ||
76 | + | ||
77 | + | ||
78 | +AUTHORS | ||
79 | +======= | ||
80 | + | ||
81 | +Alex Campelo (campelo.al1 at gmail.com) | ||
82 | +Arthur de Moura Del Esposte (arthurmde at gmail.com) | ||
83 | +Daniel Bucher (daniel.bucher88 at gmail.com) | ||
84 | +David Carlos (ddavidcarlos1392 at gmail.com) | ||
85 | +Fabio Teixeira (fabio1079 at gmail.com) | ||
86 | +Gustavo Jaruga (darksshades at gmail.com) | ||
87 | +Luciano Prestes (lucianopcbr at gmail.com) | ||
88 | +Matheus Faria (matheus.sousa.faria at gmail.com) | ||
89 | + | ||
90 | + | ||
91 | +ACKNOWLEDGMENTS | ||
92 | +=============== | ||
93 | + | ||
94 | +The authors have been supported by MPOG and UnB |
src/software_communities/controllers/software_communities_plugin_controller.rb
0 → 100644
@@ -0,0 +1,54 @@ | @@ -0,0 +1,54 @@ | ||
1 | +# apenas software | ||
2 | +require 'csv' | ||
3 | +class SoftwareCommunitiesPluginController < ApplicationController | ||
4 | + | ||
5 | + def get_license_data | ||
6 | + return render :json=>{} if !request.xhr? || params[:query].nil? | ||
7 | + | ||
8 | + data = if params[:query].empty? | ||
9 | + LicenseInfo.all | ||
10 | + else | ||
11 | + LicenseInfo.where("version ILIKE ?", "%#{params[:query]}%").select("id, version") | ||
12 | + end | ||
13 | + render :json=> data.collect { |license| | ||
14 | + {:id=>license.id, :label=>license.version} | ||
15 | + } | ||
16 | + | ||
17 | + end | ||
18 | + | ||
19 | + def get_block_template | ||
20 | + render 'box_organizer/_download_list_template', :layout => false | ||
21 | + end | ||
22 | + | ||
23 | + def get_field_data | ||
24 | + condition = !request.xhr? || params[:query].nil? || params[:field].nil? | ||
25 | + return render :json=>{} if condition | ||
26 | + | ||
27 | + model = get_model_by_params_field | ||
28 | + | ||
29 | + data = model.where("name ILIKE ?", "%#{params[:query]}%").select("id, name") | ||
30 | + .collect { |db| | ||
31 | + {:id=>db.id, :label=>db.name} | ||
32 | + } | ||
33 | + | ||
34 | + other = [model.select("id, name").last].collect { |db| | ||
35 | + {:id=>db.id, :label=>db.name} | ||
36 | + } | ||
37 | + | ||
38 | + # Always has other in the list | ||
39 | + data |= other | ||
40 | + | ||
41 | + render :json=> data | ||
42 | + end | ||
43 | + | ||
44 | + protected | ||
45 | + | ||
46 | + def get_model_by_params_field | ||
47 | + case params[:field] | ||
48 | + when "software_language" | ||
49 | + return ProgrammingLanguage | ||
50 | + else | ||
51 | + return DatabaseDescription | ||
52 | + end | ||
53 | + end | ||
54 | +end |
src/software_communities/controllers/software_communities_plugin_myprofile_controller.rb
0 → 100644
@@ -0,0 +1,194 @@ | @@ -0,0 +1,194 @@ | ||
1 | +class SoftwareCommunitiesPluginMyprofileController < MyProfileController | ||
2 | + append_view_path File.join(File.dirname(__FILE__) + '/../views') | ||
3 | + | ||
4 | + def index | ||
5 | + end | ||
6 | + | ||
7 | + def new_software | ||
8 | + set_software_as_template | ||
9 | + | ||
10 | + @community = Community.new(params[:community]) | ||
11 | + @community.environment = environment | ||
12 | + @software_info = SoftwareInfo.new(params[:software_info]) | ||
13 | + | ||
14 | + @license_info = if params[:license].blank? or params[:license][:license_infos_id].blank? | ||
15 | + LicenseInfo.new | ||
16 | + else | ||
17 | + LicenseInfo.find(params[:license][:license_infos_id]) | ||
18 | + end | ||
19 | + | ||
20 | + control_software_creation | ||
21 | + update_new_software_errors | ||
22 | + end | ||
23 | + | ||
24 | + def edit_software | ||
25 | + update_software_atributes | ||
26 | + | ||
27 | + return unless request.post? | ||
28 | + | ||
29 | + @software_info = constroy_software | ||
30 | + software_info_insert_models.call(@list_libraries, 'libraries') | ||
31 | + software_info_insert_models.call(@list_languages, 'software_languages') | ||
32 | + software_info_insert_models.call(@list_databases, 'software_databases') | ||
33 | + software_info_insert_models.call(@list_operating_systems, 'operating_systems') | ||
34 | + | ||
35 | + begin | ||
36 | + @software_info.save! | ||
37 | + | ||
38 | + @community = @software_info.community | ||
39 | + @community.update_attributes!(params[:community]) | ||
40 | + | ||
41 | + if params[:commit] == _('Save and Configure Community') | ||
42 | + redirect_to :controller => 'profile_editor', :action => 'edit' | ||
43 | + else | ||
44 | + redirect_to :controller => 'profile_editor', :action => 'index' | ||
45 | + session[:notice] = _('Software updated successfully') | ||
46 | + end | ||
47 | + rescue ActiveRecord::RecordInvalid => invalid | ||
48 | + update_new_software_errors | ||
49 | + session[:notice] = _('Could not update software') | ||
50 | + end | ||
51 | + end | ||
52 | + | ||
53 | + def disabled_public_software_field | ||
54 | + !environment.admins.include?(current_user.person) | ||
55 | + end | ||
56 | + | ||
57 | + private | ||
58 | + | ||
59 | + def add_software_erros | ||
60 | + @errors = [] | ||
61 | + @errors |= @community.errors.full_messages if @community | ||
62 | + @errors |= @software_info.errors.full_messages if @software_info | ||
63 | + @errors |= @license_info.errors.full_messages if @license_info | ||
64 | + end | ||
65 | + | ||
66 | + def control_software_creation | ||
67 | + valid_models = request.post? && (@community.valid? && @software_info.valid? && @license_info.valid?) | ||
68 | + if valid_models | ||
69 | + send_software_to_moderation | ||
70 | + else | ||
71 | + add_software_erros | ||
72 | + end | ||
73 | + end | ||
74 | + | ||
75 | + def software_info_insert_models | ||
76 | + proc { |list,model_attr| | ||
77 | + @software_info.send(model_attr).destroy_all | ||
78 | + list.collect!{|m| @software_info.send(model_attr) << m } unless list.nil? | ||
79 | + } | ||
80 | + end | ||
81 | + | ||
82 | + def constroy_software | ||
83 | + @software_info = @profile.software_info | ||
84 | + params[:software][:public_software] ||= false unless @software_info.public_software? | ||
85 | + @license = LicenseInfo.find(params[:license][:license_infos_id]) | ||
86 | + @software_info.license_info = @license | ||
87 | + @software_info.update_attributes(params[:software]) | ||
88 | + | ||
89 | + another_license_version = nil | ||
90 | + another_license_link = nil | ||
91 | + if params[:license] | ||
92 | + another_license_version = params[:license][:version] | ||
93 | + another_license_link = params[:license][:link] | ||
94 | + end | ||
95 | + | ||
96 | + @software_info.verify_license_info(another_license_version, another_license_link) | ||
97 | + | ||
98 | + create_list_model_helpers | ||
99 | + | ||
100 | + @software_info | ||
101 | + end | ||
102 | + | ||
103 | + def create_list_model_helpers | ||
104 | + @list_libraries = LibraryHelper.list_library(params[:library]) | ||
105 | + @list_languages = SoftwareLanguageHelper.list_language(params[:language]) | ||
106 | + @list_databases = DatabaseHelper.list_database(params[:database]) | ||
107 | + @list_operating_systems = OperatingSystemHelper.list_operating_system(params[:operating_system]) | ||
108 | + end | ||
109 | + | ||
110 | + def send_software_to_moderation | ||
111 | + another_license_version = "" | ||
112 | + another_license_link = "" | ||
113 | + if params[:license] | ||
114 | + another_license_version = params[:license][:version] | ||
115 | + another_license_link = params[:license][:link] | ||
116 | + end | ||
117 | + @software_info = SoftwareInfo.create_after_moderation(user, | ||
118 | + params[:software_info].merge({ | ||
119 | + :environment => environment, | ||
120 | + :name => params[:community][:name], | ||
121 | + :identifier => params[:community][:identifier], | ||
122 | + :image_builder => params[:community][:image_builder], | ||
123 | + :license_info => @license_info, | ||
124 | + :another_license_version => another_license_version, | ||
125 | + :another_license_link => another_license_link })) | ||
126 | + | ||
127 | + add_admin_to_community | ||
128 | + | ||
129 | + if !environment.admins.include?(current_user.person) | ||
130 | + session[:notice] = _('Your new software request will be evaluated by an'\ | ||
131 | + 'administrator. You will be notified.') | ||
132 | + redirect_to user.admin_url | ||
133 | + else | ||
134 | + redirect_to :controller => 'profile_editor', | ||
135 | + :action => 'edit', | ||
136 | + :profile => @community.identifier | ||
137 | + end | ||
138 | + end | ||
139 | + | ||
140 | + def update_software_atributes | ||
141 | + @software_info = @profile.software_info | ||
142 | + @list_libraries = @software_info.libraries | ||
143 | + @list_databases = @software_info.software_databases | ||
144 | + @list_languages = @software_info.software_languages | ||
145 | + @list_operating_systems = @software_info.operating_systems | ||
146 | + @disabled_public_software_field = disabled_public_software_field | ||
147 | + | ||
148 | + @license_version = @software_info.license_info.version | ||
149 | + @license_id = @software_info.license_info.id | ||
150 | + @another_license_version = "" | ||
151 | + @another_license_link = "" | ||
152 | + | ||
153 | + license_another = LicenseInfo.find_by_version("Another") | ||
154 | + if license_another && @software_info.license_info_id == license_another.id | ||
155 | + @license_version = "Another" | ||
156 | + @another_license_version = @software_info.license_info.version | ||
157 | + @another_license_link = @software_info.license_info.link | ||
158 | + end | ||
159 | + end | ||
160 | + | ||
161 | + def set_software_as_template | ||
162 | + software_template = Community['software'] | ||
163 | + software_valid = !software_template.blank? && software_template.is_template && !params['community'].blank? | ||
164 | + if software_valid | ||
165 | + params['community']['template_id'] = software_template.id if software_valid | ||
166 | + end | ||
167 | + end | ||
168 | + | ||
169 | + def add_admin_to_community | ||
170 | + unless params[:q].nil? | ||
171 | + admins = params[:q].split(/,/).map{ |n| environment.people.find n.to_i } | ||
172 | + admins.each do |admin| | ||
173 | + @community.add_member(admin) | ||
174 | + @community.add_admin(admin) | ||
175 | + end | ||
176 | + end | ||
177 | + end | ||
178 | + | ||
179 | + def update_new_software_errors | ||
180 | + if request.post? | ||
181 | + @community.valid? if @community | ||
182 | + @software_info.valid? if @software_info | ||
183 | + @license_info.valid? if @license_info | ||
184 | + add_software_erros | ||
185 | + end | ||
186 | + | ||
187 | + | ||
188 | + @error_community_name = @community.errors.include?(:name) ? "highlight-error" : "" if @community | ||
189 | + @error_software_acronym = @software_info.errors.include?(:acronym) ? "highlight-error" : "" if @software_info | ||
190 | + @error_software_domain = @community.errors.include?(:identifier) ? "highlight-error" : "" if @community | ||
191 | + @error_software_finality = @software_info.errors.include?(:finality) ? "highlight-error" : "" if @software_info | ||
192 | + @error_software_license = @license_info.errors.include?(:version) ? "highlight-error" : "" if @license_info | ||
193 | + end | ||
194 | +end |
src/software_communities/controllers/software_communities_plugin_profile_controller.rb
0 → 100644
@@ -0,0 +1,49 @@ | @@ -0,0 +1,49 @@ | ||
1 | +class SoftwareCommunitiesPluginProfileController < ProfileController | ||
2 | + append_view_path File.join(File.dirname(__FILE__) + '/../views') | ||
3 | + | ||
4 | + before_filter :validate_download_params, only: [:download_file] | ||
5 | + | ||
6 | + ERROR_MESSAGES = { | ||
7 | + :not_found => _("Could not find the download file"), | ||
8 | + :invalid_params => _("Invalid download params") | ||
9 | + } | ||
10 | + | ||
11 | + def download_file | ||
12 | + download_block = DownloadBlock.find_by_id params[:block] | ||
13 | + index = params[:download_index].to_i | ||
14 | + | ||
15 | + if download_block and (index < download_block.downloads.size) | ||
16 | + download = Download.new(download_block.downloads[index]) | ||
17 | + | ||
18 | + download.total_downloads += 1 | ||
19 | + download_block.downloads[index] = download.to_hash | ||
20 | + download_block.save | ||
21 | + | ||
22 | + redirect_to download.link | ||
23 | + else | ||
24 | + session[:notice] = ERROR_MESSAGES[:not_found] | ||
25 | + render_not_found | ||
26 | + end | ||
27 | + end | ||
28 | + | ||
29 | + private | ||
30 | + | ||
31 | + def validate_download_params | ||
32 | + valid_block = (!params[:block].nil?) and (params[:block].to_i > 0) | ||
33 | + valid_index = params[:download_index].to_i >= 0 | ||
34 | + | ||
35 | + if !valid_block or !valid_index | ||
36 | + session[:notice] = ERROR_MESSAGES[:invalid_params] | ||
37 | + safe_redirect_back | ||
38 | + end | ||
39 | + end | ||
40 | + | ||
41 | + def safe_redirect_back | ||
42 | + begin | ||
43 | + redirect_to :back | ||
44 | + rescue ActionController::RedirectBackError | ||
45 | + # There is no :back if it is a copied url | ||
46 | + render_not_found | ||
47 | + end | ||
48 | + end | ||
49 | +end |
src/software_communities/db/migrate/20140523132016_create_controlled_vocabulary_table.rb
0 → 100644
@@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
1 | +class CreateControlledVocabularyTable < ActiveRecord::Migration | ||
2 | + def up | ||
3 | + create_table :controlled_vocabulary do |t| | ||
4 | + t.references :software_info | ||
5 | + t.boolean :administration | ||
6 | + t.boolean :agriculture | ||
7 | + t.boolean :business_and_services | ||
8 | + t.boolean :communication | ||
9 | + t.boolean :culture | ||
10 | + t.boolean :national_defense | ||
11 | + t.boolean :economy_and_finances | ||
12 | + t.boolean :education | ||
13 | + t.boolean :energy | ||
14 | + t.boolean :sports | ||
15 | + t.boolean :habitation | ||
16 | + t.boolean :industry | ||
17 | + t.boolean :environment | ||
18 | + t.boolean :research_and_development | ||
19 | + t.boolean :social_security | ||
20 | + t.boolean :social_protection | ||
21 | + t.boolean :international_relations | ||
22 | + t.boolean :sanitation | ||
23 | + t.boolean :health | ||
24 | + t.boolean :security_public_order | ||
25 | + t.boolean :work | ||
26 | + t.boolean :transportation | ||
27 | + t.boolean :urbanism | ||
28 | + | ||
29 | + end | ||
30 | + end | ||
31 | + | ||
32 | + def down | ||
33 | + drop_table :controlled_vocabulary | ||
34 | + end | ||
35 | +end |
src/software_communities/db/migrate/20140528193902_create_license_infos_table.rb
0 → 100644
@@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
1 | +class CreateLicenseInfosTable < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + create_table :license_infos do |t| | ||
4 | + t.string :version | ||
5 | + t.string :link | ||
6 | + end | ||
7 | + | ||
8 | + link = "http://creativecommons.org/licenses/GPL/2.0/legalcode.pt" | ||
9 | + LicenseInfo.create(:version => "CC-GPL-V2", :link => link) | ||
10 | + end | ||
11 | + | ||
12 | + def self.down | ||
13 | + drop_table :license_infos | ||
14 | + end | ||
15 | +end |
src/software_communities/db/migrate/20140528193905_create_software_infos_table.rb
0 → 100644
@@ -0,0 +1,23 @@ | @@ -0,0 +1,23 @@ | ||
1 | +class CreateSoftwareInfosTable < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + create_table :software_infos do |t| | ||
4 | + t.references :license_info | ||
5 | + t.references :community | ||
6 | + t.boolean :e_mag, :default => false | ||
7 | + t.boolean :icp_brasil,:default => false | ||
8 | + t.boolean :intern, :default => false | ||
9 | + t.boolean :e_ping, :default => false | ||
10 | + t.boolean :e_arq, :default => false | ||
11 | + t.string :name, :default => ' ' | ||
12 | + t.string :operating_platform | ||
13 | + t.string :demonstration_url | ||
14 | + t.string :acronym | ||
15 | + t.text :objectives | ||
16 | + t.text :features | ||
17 | + end | ||
18 | + end | ||
19 | + | ||
20 | + def self.down | ||
21 | + drop_table :software_infos | ||
22 | + end | ||
23 | +end |
src/software_communities/db/migrate/20140528193927_create_libraries_table.rb
0 → 100644
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +class CreateLibrariesTable < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + create_table :libraries do |t| | ||
4 | + t.string :name | ||
5 | + t.string :version | ||
6 | + t.string :license | ||
7 | + t.references :software_info | ||
8 | + end | ||
9 | + end | ||
10 | + | ||
11 | + def self.down | ||
12 | + drop_table :libraries | ||
13 | + end | ||
14 | +end |
src/software_communities/db/migrate/20140528193956_create_programming_languages_table.rb
0 → 100644
@@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
1 | +class CreateProgrammingLanguagesTable < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + create_table :programming_languages do |t| | ||
4 | + t.string :name | ||
5 | + end | ||
6 | + | ||
7 | + SoftwareHelper.create_list_with_file("plugins/software_communities/public/static/languages.txt", ProgrammingLanguage) | ||
8 | + end | ||
9 | + | ||
10 | + def self.down | ||
11 | + drop_table :programming_languages | ||
12 | + end | ||
13 | +end |
src/software_communities/db/migrate/20140528194044_create_database_descriptions_table.rb
0 → 100644
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +class CreateDatabaseDescriptionsTable < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + create_table :database_descriptions do |t| | ||
4 | + t.string :name | ||
5 | + end | ||
6 | + | ||
7 | + path_to_file = "plugins/software_communities/public/static/databases.txt" | ||
8 | + SoftwareHelper.create_list_with_file(path_to_file, DatabaseDescription) | ||
9 | + end | ||
10 | + | ||
11 | + def self.down | ||
12 | + drop_table :database_descriptions | ||
13 | + end | ||
14 | +end |
src/software_communities/db/migrate/20140528194129_create_software_databases_table.rb
0 → 100644
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +class CreateSoftwareDatabasesTable < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + create_table :software_databases do |t| | ||
4 | + t.string :version | ||
5 | + t.string :operating_system | ||
6 | + t.references :database_description | ||
7 | + t.references :software_info | ||
8 | + end | ||
9 | + end | ||
10 | + | ||
11 | + def self.down | ||
12 | + drop_table :software_databases | ||
13 | + end | ||
14 | +end |
src/software_communities/db/migrate/20140528211914_create_software_languages_table.rb
0 → 100644
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +class CreateSoftwareLanguagesTable < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + create_table :software_languages do |t| | ||
4 | + t.references :software_info | ||
5 | + t.references :programming_language | ||
6 | + t.string :version | ||
7 | + t.string :operating_system | ||
8 | + end | ||
9 | + end | ||
10 | + | ||
11 | + def self.down | ||
12 | + drop_table :software_languages | ||
13 | + end | ||
14 | +end |
src/software_communities/db/migrate/20140710185444_create_operating_system_table.rb
0 → 100644
@@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
1 | +class CreateOperatingSystemTable < ActiveRecord::Migration | ||
2 | + def up | ||
3 | + create_table :operating_systems do |t| | ||
4 | + t.string :name | ||
5 | + t.string :version | ||
6 | + t.references :software_info | ||
7 | + end | ||
8 | + end | ||
9 | + | ||
10 | + def down | ||
11 | + drop_table :operating_systems | ||
12 | + end | ||
13 | +end |
src/software_communities/db/migrate/20140711144012_remove_name_from_software_info.rb
0 → 100644
src/software_communities/db/migrate/20140714133901_create_operating_name_table.rb
0 → 100644
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +class CreateOperatingNameTable < ActiveRecord::Migration | ||
2 | + def up | ||
3 | + create_table :operating_system_names do |t| | ||
4 | + t.string :name | ||
5 | + end | ||
6 | + | ||
7 | + path_to_file = "plugins/software_communities/public/static/operating_systems.txt" | ||
8 | + SoftwareHelper.create_list_with_file(path_to_file, OperatingSystemName) | ||
9 | + end | ||
10 | + | ||
11 | + def down | ||
12 | + drop_table :operating_system_names | ||
13 | + end | ||
14 | +end |
src/software_communities/db/migrate/20140714135007_change_operating_systems_table.rb
0 → 100644
@@ -0,0 +1,16 @@ | @@ -0,0 +1,16 @@ | ||
1 | +class ChangeOperatingSystemsTable < ActiveRecord::Migration | ||
2 | + def up | ||
3 | + change_table :operating_systems do |t| | ||
4 | + t.remove :name | ||
5 | + t.references :operating_system_name | ||
6 | + end | ||
7 | + | ||
8 | + end | ||
9 | + | ||
10 | + def down | ||
11 | + change_table :operating_systems do |t| | ||
12 | + t.string :name | ||
13 | + t.remove :operating_system_name_id | ||
14 | + end | ||
15 | + end | ||
16 | +end |
src/software_communities/db/migrate/20140909185547_rename_controlled_vocabulary_to_software_categories.rb
0 → 100644
src/software_communities/db/migrate/20141007140419_add_finality_field_to_software_table.rb
0 → 100644
src/software_communities/db/migrate/20141013193939_add_repository_link_to_software.rb
0 → 100644
src/software_communities/db/migrate/20141103180655_add_public_software_field_validation.rb
0 → 100644
src/software_communities/db/migrate/20141105173616_add_first_edit_to_software.rb
0 → 100644
src/software_communities/db/migrate/20141216183111_remove_operating_system_from_software_database.rb
0 → 100644
src/software_communities/db/migrate/20141216183459_remove_operating_system_from_software_language.rb
0 → 100644
src/software_communities/db/migrate/20150209170529_add_settings_field_to_software_info.rb
0 → 100644
src/software_communities/db/migrate/20150210182519_rename_cc_license.rb
0 → 100644
@@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
1 | +class RenameCcLicense < ActiveRecord::Migration | ||
2 | + def up | ||
3 | + license = LicenseInfo.find_by_version "CC-GPL-V2" | ||
4 | + license.version = "Creative Commons GPL V2" | ||
5 | + license.save! | ||
6 | + end | ||
7 | + | ||
8 | + def down | ||
9 | + license = LicenseInfo.find_by_version "Creative Commons GPL V2" | ||
10 | + license.version = "CC-GPL-V2" | ||
11 | + license.save! | ||
12 | + end | ||
13 | +end |
src/software_communities/db/migrate/20150914185902_add_people_benefited_and_saved_value_to_organization_rating.rb
0 → 100644
@@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
1 | +class AddPeopleBenefitedAndSavedValueToOrganizationRating < ActiveRecord::Migration | ||
2 | + def up | ||
3 | + add_column :organization_ratings, :people_benefited, :integer | ||
4 | + add_column :organization_ratings, :saved_value, :decimal | ||
5 | + end | ||
6 | + | ||
7 | + def down | ||
8 | + remove_column :organization_ratings, :people_benefited | ||
9 | + remove_column :organization_ratings, :saved_value | ||
10 | + end | ||
11 | +end |
src/software_communities/features/deactivate_user.feature
0 → 100644
@@ -0,0 +1,45 @@ | @@ -0,0 +1,45 @@ | ||
1 | +Feature: deactivate user | ||
2 | + As a environment admin | ||
3 | + I want to be able deactivate my account | ||
4 | + So that user data remains persisted and allows the reactivation of the account | ||
5 | + | ||
6 | + Background: | ||
7 | + Given "SoftwareCommunitiesPlugin" plugin is enabled | ||
8 | + And I am logged in as mpog_admin | ||
9 | + And I go to /admin/plugins | ||
10 | + And I check "SoftwareCommunitiesPlugin" | ||
11 | + And I press "Save changes" | ||
12 | + And I go to /account/logout | ||
13 | + And the following users | ||
14 | + | login | name | email | | ||
15 | + | joaosilva | Joao Silva | joaosilva@example.com | | ||
16 | + And I am logged in as "joaosilva" | ||
17 | + | ||
18 | + | ||
19 | + @selenium-fixme | ||
20 | + Scenario: successfull deactivation | ||
21 | + Given I go to joaosilva's control panel | ||
22 | + And I follow "Edit Profile" | ||
23 | + And I follow "Delete profile" | ||
24 | + And I follow "Yes, I am sure" | ||
25 | + Then I am not logged in | ||
26 | + When I go to /profile/joaosilva | ||
27 | + Then I should see "This profile is inaccessible." | ||
28 | + | ||
29 | + @selenium-fixme | ||
30 | + Scenario: successfull reactivation of account | ||
31 | + Given I go to joaosilva's control panel | ||
32 | + And I follow "Edit Profile" | ||
33 | + And I follow "Delete profile" | ||
34 | + And I follow "Yes, I am sure" | ||
35 | + And I go to the homepage | ||
36 | + When I follow "Login" | ||
37 | + And I follow "New user" | ||
38 | + And I fill in the following within ".no-boxes": | ||
39 | + | e-Mail | joaosilva@example.com | | ||
40 | + | Full name | 123 | | ||
41 | + And I follow "Reactive account" | ||
42 | + And I fill in the following within ".no-boxes": | ||
43 | + | Username or Email | joaosilva@example.com | | ||
44 | + And I press "Send instructions" | ||
45 | + Then I should see "An e-mail was just sent to your e-mail address" |
src/software_communities/features/public_software_validation.feature
0 → 100644
@@ -0,0 +1,49 @@ | @@ -0,0 +1,49 @@ | ||
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 "SoftwareCommunitiesPlugin" plugin is enabled | ||
8 | + And the following users | ||
9 | + | login | name | email | | ||
10 | + | joaosilva | Joao Silva | joaosilva@example.com | | ||
11 | + | mariasilva | Maria Silva | mariasilva@example.com | | ||
12 | + And the following softwares | ||
13 | + | name | public_software | finality | | ||
14 | + | basic software | true | basic software finality | | ||
15 | + And SoftwareInfo has initial default values on database | ||
16 | + And I am logged in as mpog_admin | ||
17 | + And I go to /admin/plugins | ||
18 | + And I check "SoftwareCommunitiesPlugin" | ||
19 | + Then I press "Save changes" | ||
20 | + | ||
21 | + Scenario: Disable public software checkbox to non admin users | ||
22 | + Given I am logged in as "joaosilva" | ||
23 | + And I go to /myprofile/basic-software/plugin/software_communities/edit_software | ||
24 | + And I follow "Specifications" | ||
25 | + Then I should see "Public software" within ".public_software_disabled" | ||
26 | + | ||
27 | + Scenario: Enable public software checkbox to admin users | ||
28 | + Given I am logged in as mpog_admin | ||
29 | + And I go to /myprofile/basic-software/plugin/software_communities/edit_software | ||
30 | + And I follow "Specifications" | ||
31 | + Then I should see "Public software" within ".public_software_enabled" | ||
32 | + | ||
33 | + @selenium | ||
34 | + Scenario: Show adherent fields when checkbox are checked | ||
35 | + Given I am logged in as mpog_admin | ||
36 | + And I go to /myprofile/basic-software/plugin/software_communities/edit_software | ||
37 | + And I follow "Specifications" | ||
38 | + And I uncheck "software[public_software]" | ||
39 | + And I check "software[public_software]" | ||
40 | + Then I should see "Adherent to e-ping ?" | ||
41 | + | ||
42 | + @selenium | ||
43 | + Scenario: Don't show adherent fields when checkbox are not checked | ||
44 | + Given I am logged in as mpog_admin | ||
45 | + And I go to /myprofile/basic-software/plugin/software_communities/edit_software | ||
46 | + And I follow "Specifications" | ||
47 | + And I check "software[public_software]" | ||
48 | + And I uncheck "software[public_software]" | ||
49 | + Then I should not see "Adherent to e-ping ?" |
src/software_communities/features/software_block.feature
0 → 100644
@@ -0,0 +1,48 @@ | @@ -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 "SoftwareCommunitiesPlugin" plugin is enabled | ||
8 | + And I am logged in as mpog_admin | ||
9 | + And I go to /admin/plugins | ||
10 | + And I check "SoftwareCommunitiesPlugin" | ||
11 | + And I press "Save changes" | ||
12 | + And the following softwares | ||
13 | + | name | public_software | finality | | ||
14 | + | Public Software | true | some finality | | ||
15 | + | Generic Software | false | some finality | | ||
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 | \ No newline at end of file | 49 | \ No newline at end of file |
src/software_communities/features/software_catalog.feature
0 → 100644
@@ -0,0 +1,82 @@ | @@ -0,0 +1,82 @@ | ||
1 | +Feature: Search software | ||
2 | + As a user | ||
3 | + I want to be able to search catalogued software | ||
4 | + So that I find a software that fit my needs | ||
5 | + Background: | ||
6 | + Given "SoftwareCommunitiesPlugin" plugin is enabled | ||
7 | + And I am logged in as mpog_admin | ||
8 | + And I go to /admin/plugins | ||
9 | + And I check "SoftwareCommunitiesPlugin" | ||
10 | + And I press "Save changes" | ||
11 | + And I go to /account/logout | ||
12 | + And the following categories | ||
13 | + | name | display_in_menu | | ||
14 | + | Software | true | | ||
15 | + And the following categories | ||
16 | + | parent | name | display_in_menu | | ||
17 | + | Software | Health | true | | ||
18 | + | Software | Education | true | | ||
19 | + And the following softwares | ||
20 | + | name | public_software | categories | finality | | ||
21 | + | Software One | true | Health | some finality | | ||
22 | + | Software Two | true | Health, Education | some finality | | ||
23 | + | Software Three | false | Education | some finality | | ||
24 | + | ||
25 | + | ||
26 | + Scenario: Show all "public_software" softwares when open search page | ||
27 | + Given I go to /search/software_infos | ||
28 | + Then I should see "Software One" | ||
29 | + Then I should see "Software Two" | ||
30 | + | ||
31 | + Scenario: Show all "public_software" softwares when search software | ||
32 | + Given I go to /search/software_infos | ||
33 | + And I fill in "search-input" with "Software" | ||
34 | + Then I should see "Software One" | ||
35 | + Then I should see "Software Two" | ||
36 | + | ||
37 | + @selenium | ||
38 | + Scenario: Show software "One" when searching for "Software One" | ||
39 | + Given I go to /search/software_infos | ||
40 | + And I fill in "search-input" with "One" | ||
41 | + And I keyup on selector "#search-input" | ||
42 | + Then I should see "Software One" | ||
43 | + Then I should not see "Software Two" | ||
44 | + | ||
45 | + @selenium | ||
46 | + Scenario: Show software ordered by name when "Name A-Z" is selected | ||
47 | + Given I go to /search/software_infos | ||
48 | + And I select "Name A-Z" from "sort" | ||
49 | + And I press "Filter" | ||
50 | + Then I should see "Software One" before "Software Two" | ||
51 | + | ||
52 | + @selenium | ||
53 | + Scenario: Show software in reverse order by name when "Name Z-A" is selected | ||
54 | + Given I go to /search/software_infos | ||
55 | + And I select "Name Z-A" from "sort" | ||
56 | + And I sleep for 3 seconds | ||
57 | + Then I should see "Software Two" before "Software One" | ||
58 | + | ||
59 | + @selenium | ||
60 | + Scenario: Show only "Software Two" when searching for "Education" category | ||
61 | + Given I go to /search/software_infos | ||
62 | + And I click on anything with selector "#filter-option-catalog-software" | ||
63 | + And I check "Education" | ||
64 | + Then I should see "Software Two" | ||
65 | + And I should not see "Software One" | ||
66 | + | ||
67 | + @selenium | ||
68 | + Scenario: Show both Software "One" and "Two" when searching for "Health" category | ||
69 | + Given I go to /search/software_infos | ||
70 | + And I click on anything with selector "#filter-option-catalog-software" | ||
71 | + And I check "Health" | ||
72 | + Then I should see "Software One" | ||
73 | + And I should see "Software Two" | ||
74 | + | ||
75 | + @selenium | ||
76 | + Scenario: Show not "public_software" when "Include in results" is checked | ||
77 | + Given I go to /search/software_infos | ||
78 | + And I click on anything with selector "#filter-option-catalog-software" | ||
79 | + And I check "include_non_public" | ||
80 | + Then I should see "Software One" | ||
81 | + And I should see "Software Two" | ||
82 | + And I should see "Software Three" |
src/software_communities/features/software_registration.feature
0 → 100644
@@ -0,0 +1,87 @@ | @@ -0,0 +1,87 @@ | ||
1 | +Feature: edit public software information | ||
2 | + As a user | ||
3 | + I want to add public software information to a software | ||
4 | + So that I can have software communities on my network | ||
5 | + | ||
6 | + Background: | ||
7 | + Given "SoftwareCommunitiesPlugin" plugin is enabled | ||
8 | + And SoftwareInfo has initial default values on database | ||
9 | + And I am logged in as mpog_admin | ||
10 | + And I go to /admin/plugins | ||
11 | + And I check "SoftwareCommunitiesPlugin" | ||
12 | + And I press "Save changes" | ||
13 | + And I go to /myprofile/mpog-admin | ||
14 | + And the following softwares | ||
15 | + | name | public_software | finality | | ||
16 | + | basic software | true | basic software finality | | ||
17 | + | ||
18 | + @selenium | ||
19 | + Scenario: Show SoftwareLangue fields when click in New Language | ||
20 | + Given I go to /myprofile/basic-software/plugin/software_communities/edit_software | ||
21 | + When I follow "Specifications" | ||
22 | + And I follow "New language" | ||
23 | + And I should see "3" of this selector ".software-language-table" | ||
24 | + And I follow "Delete" | ||
25 | + Then I should see "2" of this selector ".software-language-table" | ||
26 | + #3 because one is always hidden | ||
27 | + | ||
28 | + @selenium | ||
29 | + Scenario: Show databasefields when click in New database | ||
30 | + Given I go to /myprofile/basic-software/plugin/software_communities/edit_software | ||
31 | + When I follow "Specifications" | ||
32 | + And I follow "New Database" | ||
33 | + And I should see "3" of this selector ".database-table" | ||
34 | + And I follow "Delete" | ||
35 | + Then I should see "2" of this selector ".database-table" | ||
36 | + #3 because one is always hidden | ||
37 | + | ||
38 | + @selenium | ||
39 | + Scenario: Software database name should be an autocomplete | ||
40 | + Given I go to /myprofile/basic-software/plugin/software_communities/edit_software | ||
41 | + When I follow "Specifications" | ||
42 | + And I follow "New Database" | ||
43 | + And I type in "my" in autocomplete list ".database_autocomplete" and I choose "MySQL" | ||
44 | + Then selector ".database_autocomplete" should have any "MySQL" | ||
45 | + | ||
46 | + @selenium | ||
47 | + Scenario: Software database name should be an autocomplete | ||
48 | + Given I go to /myprofile/basic-software/plugin/software_communities/edit_software | ||
49 | + When I follow "Specifications" | ||
50 | + And I follow "New language" | ||
51 | + And I type in "py" in autocomplete list ".language_autocomplete" and I choose "Python" | ||
52 | + Then selector ".database_autocomplete" should have any "Python" | ||
53 | + | ||
54 | + @selenium | ||
55 | + Scenario: Create software with all dynamic table fields filled | ||
56 | + Given I go to /myprofile/basic-software/plugin/software_communities/edit_software | ||
57 | + When I follow "Specifications" | ||
58 | + And I follow "New language" | ||
59 | + And I type in "py" in autocomplete list ".language_autocomplete" and I choose "Python" | ||
60 | + And I fill in "language__version" with "1.2.3" | ||
61 | + And I follow "New Database" | ||
62 | + And I type in "my" in autocomplete list ".database_autocomplete" and I choose "MySQL" | ||
63 | + And I fill in "database__version" with "4.5.6" | ||
64 | + Then I press "Save" | ||
65 | + And I follow "Software Info" | ||
66 | + And I follow "Specifications" | ||
67 | + And selector ".language_autocomplete" should have any "Python" | ||
68 | + And selector "#language__version" should have any "1.2.3" | ||
69 | + And selector ".database_autocomplete" should have any "MySQL" | ||
70 | + And selector "#database__version" should have any "4.5.6" | ||
71 | + | ||
72 | + @selenium | ||
73 | + Scenario: Show license link when a license is selected | ||
74 | + Given I am on mpog-admin's control panel | ||
75 | + And I follow "Create a new software" | ||
76 | + And I fill in "community_name_id" with "another software" | ||
77 | + And I fill in "community-identifier" with "another-software" | ||
78 | + And I fill in "software_info_finality" with "another software finality" | ||
79 | + And I type in "gp" in autocomplete list "#license_info_version" and I choose "GPL-2" | ||
80 | + And I should see "Read license" within "#version_link" | ||
81 | + And I press "Create" | ||
82 | + And I should see "Configure Software Community" | ||
83 | + And I press "Save" | ||
84 | + And I should see "Control Panel" | ||
85 | + And I follow "Software Info" | ||
86 | + And I type in "gp" in autocomplete list "#license_info_version" and I choose "GPL-3" | ||
87 | + Then I should see "Read license" within "#version_link" |
src/software_communities/features/step_definitions/software_communities_steps.rb
0 → 100644
@@ -0,0 +1,202 @@ | @@ -0,0 +1,202 @@ | ||
1 | +Given /^SoftwareInfo has initial default values on database$/ do | ||
2 | + LicenseInfo.create(:version=>"None", :link=>"") | ||
3 | + LicenseInfo.create(:version=>"GPL-2", :link =>"www.gpl2.com") | ||
4 | + LicenseInfo.create(:version=>"GPL-3", :link =>"www.gpl3.com") | ||
5 | + | ||
6 | + ProgrammingLanguage.create(:name=>"C") | ||
7 | + ProgrammingLanguage.create(:name=>"C++") | ||
8 | + ProgrammingLanguage.create(:name=>"Ruby") | ||
9 | + ProgrammingLanguage.create(:name=>"Python") | ||
10 | + | ||
11 | + DatabaseDescription.create(:name => "Oracle") | ||
12 | + DatabaseDescription.create(:name => "MySQL") | ||
13 | + DatabaseDescription.create(:name => "Apache") | ||
14 | + DatabaseDescription.create(:name => "PostgreSQL") | ||
15 | + | ||
16 | + OperatingSystemName.create(:name=>"Debian") | ||
17 | + OperatingSystemName.create(:name=>"Fedora") | ||
18 | + OperatingSystemName.create(:name=>"CentOS") | ||
19 | +end | ||
20 | + | ||
21 | + | ||
22 | +Given /^I type in "([^"]*)" in autocomplete list "([^"]*)" and I choose "([^"]*)"$/ do |typed, input_field_selector, should_select| | ||
23 | + # Wait the page javascript load | ||
24 | + sleep 1 | ||
25 | + # Basicaly it, search for the input field, type something, wait for ajax end select an item | ||
26 | + page.driver.browser.execute_script %Q{ | ||
27 | + var search_query = "#{input_field_selector}.ui-autocomplete-input"; | ||
28 | + var input = jQuery(search_query).first(); | ||
29 | + | ||
30 | + input.trigger('click'); | ||
31 | + input.val('#{typed}'); | ||
32 | + input.trigger('keydown'); | ||
33 | + | ||
34 | + window.setTimeout(function(){ | ||
35 | + search_query = ".ui-menu-item a:contains('#{should_select}')"; | ||
36 | + var typed = jQuery(search_query).first(); | ||
37 | + | ||
38 | + typed.trigger('mouseenter').trigger('click'); | ||
39 | + console.log(jQuery('#license_info_id')); | ||
40 | + }, 1000); | ||
41 | + } | ||
42 | + sleep 1 | ||
43 | +end | ||
44 | + | ||
45 | + | ||
46 | +Given /^the following software language$/ do |table| | ||
47 | + table.hashes.each do |item| | ||
48 | + programming_language = ProgrammingLanguage.where(:name=>item[:programing_language]).first | ||
49 | + software_language = SoftwareLanguage::new | ||
50 | + | ||
51 | + software_language.programming_language = programming_language | ||
52 | + software_language.version = item[:version] | ||
53 | + software_language.operating_system = item[:operating_system] | ||
54 | + | ||
55 | + software_language.save! | ||
56 | + end | ||
57 | +end | ||
58 | + | ||
59 | +Given /^the following software databases$/ do |table| | ||
60 | + table.hashes.each do |item| | ||
61 | + database_description = DatabaseDescription.where(:name=>item[:database_name]).first | ||
62 | + software_database = SoftwareDatabase::new | ||
63 | + | ||
64 | + software_database.database_description = database_description | ||
65 | + software_database.version = item[:version] | ||
66 | + software_database.operating_system = item[:operating_system] | ||
67 | + | ||
68 | + software_database.save! | ||
69 | + end | ||
70 | +end | ||
71 | + | ||
72 | + | ||
73 | +Given /^the following operating systems$/ do |table| | ||
74 | + table.hashes.each do |item| | ||
75 | + operating_system_name = OperatingSystemName.where(:name=>item[:operating_system_name]).first | ||
76 | + operating_system = OperatingSystem::new | ||
77 | + | ||
78 | + operating_system.operating_system_name = operating_system_name | ||
79 | + operating_system.version = item[:version] | ||
80 | + | ||
81 | + operating_system.save! | ||
82 | + end | ||
83 | +end | ||
84 | + | ||
85 | +Given /^the following softwares$/ do |table| | ||
86 | + table.hashes.each do |item| | ||
87 | + software_info = SoftwareInfo.new | ||
88 | + software_info.community = Community.create(:name=>item[:name]) | ||
89 | + | ||
90 | + software_info.finality = item[:finality] if item[:finality] | ||
91 | + software_info.acronym = item[:acronym] if item[:acronym] | ||
92 | + software_info.finality = item[:finality] if item[:finality] | ||
93 | + software_info.finality ||= "something" | ||
94 | + software_info.operating_platform = item[:operating_platform] if item[:operating_platform] | ||
95 | + software_info.objectives = item[:objectives] if item[:objectives] | ||
96 | + software_info.features = item[:features] if item[:features] | ||
97 | + software_info.public_software = item[:public_software] == "true" if item[:public_software] | ||
98 | + software_info.license_info = LicenseInfo.create :version=>"GPL - 1.0" | ||
99 | + | ||
100 | + if item[:software_language] | ||
101 | + programming_language = ProgrammingLanguage.where(:name=>item[:software_language]).first | ||
102 | + software_language = SoftwareLanguage.where(:programming_language_id=>programming_language).first | ||
103 | + software_info.software_languages << software_language | ||
104 | + end | ||
105 | + | ||
106 | + if item[:software_database] | ||
107 | + database_description = DatabaseDescription.where(:name=>item[:software_database]).first | ||
108 | + software_database = SoftwareDatabase.where(:database_description_id=>database_description).first | ||
109 | + software_info.software_databases << software_database | ||
110 | + end | ||
111 | + | ||
112 | + if item[:operating_system] | ||
113 | + operating_system_name = OperatingSystemName.where(:name => item[:operating_system]).first | ||
114 | + operating_system = OperatingSystem.where(:operating_system_name_id => operating_system_name).first | ||
115 | + software_info.operating_systems << operating_system | ||
116 | + end | ||
117 | + | ||
118 | + if item[:categories] | ||
119 | + categories = item[:categories].split(",") | ||
120 | + categories.map! {|category| category.strip} | ||
121 | + | ||
122 | + categories.each do |category_name| | ||
123 | + category = Category.find_by_name category_name | ||
124 | + software_info.community.categories << category | ||
125 | + end | ||
126 | + end | ||
127 | + | ||
128 | + software_info.save! | ||
129 | + end | ||
130 | +end | ||
131 | + | ||
132 | +# Dynamic table steps | ||
133 | +Given /^I fill in first "([^"]*)" class with "([^"]*)"$/ do |selector, value| | ||
134 | + evaluate_script "jQuery('#{selector}').first().attr('value', '#{value}') && true" | ||
135 | +end | ||
136 | + | ||
137 | +Given /^I fill in last "([^"]*)" class with "([^"]*)"$/ do |selector, value| | ||
138 | + evaluate_script "jQuery('#{selector}').last().attr('value', '#{value}') && true" | ||
139 | +end | ||
140 | + | ||
141 | +Given /^I click on the first button with class "([^"]*)"$/ do |selector| | ||
142 | + evaluate_script "jQuery('#{selector}').first().trigger('click') && true" | ||
143 | +end | ||
144 | + | ||
145 | +Given /^I click on the last button with class "([^"]*)"$/ do |selector| | ||
146 | + evaluate_script "jQuery('#{selector}').last().trigger('click') && true" | ||
147 | +end | ||
148 | + | ||
149 | +Given /^the user "([^"]*)" has "([^"]*)" as secondary e\-mail$/ do |login, email| | ||
150 | + User[login].update_attributes(:secondary_email => email) | ||
151 | +end | ||
152 | + | ||
153 | +Given /^I click on anything with selector "([^"]*)"$/ do |selector| | ||
154 | + evaluate_script "jQuery('#{selector}').trigger('click') && true" | ||
155 | +end | ||
156 | + | ||
157 | +Given /^I should see "([^"]*)" of this selector "([^"]*)"$/ do |quantity, selector| | ||
158 | + evaluate_script "jQuery('#{selector}').length == '#{quantity}'" | ||
159 | +end | ||
160 | + | ||
161 | +Given /^selector "([^"]*)" should have any "([^"]*)"$/ do |selector, text| | ||
162 | + evaluate_script "jQuery('#{selector}').html().indexOf('#{text}') != -1" | ||
163 | +end | ||
164 | + | ||
165 | +Given /^I click on table number "([^"]*)" selector "([^"]*)" and select the value "([^"]*)"$/ do |number, selector, value| | ||
166 | + evaluate_script "jQuery('#{selector}:nth-child(#{number}) select option:contains(\"#{value}\")').selected() && true" | ||
167 | +end | ||
168 | + | ||
169 | +Given /^I fill with "([^"]*)" in field with name "([^"]*)" of table number "([^"]*)" with class "([^"]*)"$/ do |value, name, number, selector| | ||
170 | + evaluate_script "jQuery('#{selector}:nth-child(#{number}) input[name=\"#{name}\"]').val('#{value}') && true" | ||
171 | +end | ||
172 | + | ||
173 | +Given /^I sleep for (\d+) seconds$/ do |time| | ||
174 | + sleep time.to_i | ||
175 | +end | ||
176 | + | ||
177 | +Given /^I am logged in as mpog_admin$/ do | ||
178 | + visit('/account/logout') | ||
179 | + | ||
180 | + user = User.new(:login => 'admin_user', :password => '123456', :password_confirmation => '123456', :email => 'admin_user@example.com') | ||
181 | + person = Person.new :name=>"Mpog Admin", :identifier=>"mpog-admin" | ||
182 | + user.person = person | ||
183 | + user.save! | ||
184 | + | ||
185 | + user.activate | ||
186 | + e = Environment.default | ||
187 | + e.add_admin(user.person) | ||
188 | + | ||
189 | + visit('/account/login') | ||
190 | + fill_in("Username", :with => user.login) | ||
191 | + fill_in("Password", :with => '123456') | ||
192 | + click_button("Log in") | ||
193 | +end | ||
194 | + | ||
195 | +Given /^I should see "([^"]*)" before "([^"]*)"$/ do |before, after| | ||
196 | + assert page.body.index("#{before}") < page.body.index("#{after}") | ||
197 | +end | ||
198 | + | ||
199 | +Given /^I keyup on selector "([^"]*)"$/ do |selector| | ||
200 | + selector_founded = evaluate_script("jQuery('#{selector}').trigger('keyup').length != 0") | ||
201 | + selector_founded.should be_true | ||
202 | +end |
src/software_communities/lib/categories_and_tags_block.rb
0 → 100644
@@ -0,0 +1,29 @@ | @@ -0,0 +1,29 @@ | ||
1 | +class CategoriesAndTagsBlock < Block | ||
2 | + | ||
3 | + attr_accessible :show_name | ||
4 | + | ||
5 | + settings_items :show_name, :type => :boolean, :default => false | ||
6 | + | ||
7 | + def self.description | ||
8 | + _('Categories and Tags') | ||
9 | + end | ||
10 | + | ||
11 | + def help | ||
12 | + _('This block displays the categories and tags of a software.') | ||
13 | + end | ||
14 | + | ||
15 | + def content(args={}) | ||
16 | + block = self | ||
17 | + s = show_name | ||
18 | + lambda do |object| | ||
19 | + render( | ||
20 | + :file => 'blocks/categories_and_tags', | ||
21 | + :locals => { :block => block, :show_name => s } | ||
22 | + ) | ||
23 | + end | ||
24 | + end | ||
25 | + | ||
26 | + def cacheable? | ||
27 | + false | ||
28 | + end | ||
29 | +end |
src/software_communities/lib/categories_software_block.rb
0 → 100644
@@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
1 | +class CategoriesSoftwareBlock < Block | ||
2 | + | ||
3 | + attr_accessible :show_name | ||
4 | + | ||
5 | + settings_items :show_name, :type => :boolean, :default => false | ||
6 | + | ||
7 | + def self.description | ||
8 | + _('Categories Softwares') | ||
9 | + end | ||
10 | + | ||
11 | + def help | ||
12 | + _('This block displays the categories and the amount of softwares for | ||
13 | + each category.') | ||
14 | + end | ||
15 | + | ||
16 | + def content(args={}) | ||
17 | + block = self | ||
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 | + | ||
24 | + lambda do |object| | ||
25 | + render( | ||
26 | + :file => 'blocks/categories_software', | ||
27 | + :locals => { :block => block, :show_name => s, :categories => categories } | ||
28 | + ) | ||
29 | + end | ||
30 | + end | ||
31 | + | ||
32 | + def cacheable? | ||
33 | + false | ||
34 | + end | ||
35 | +end |
@@ -0,0 +1,113 @@ | @@ -0,0 +1,113 @@ | ||
1 | +class CreateSoftware < Task | ||
2 | + include Rails.application.routes.url_helpers | ||
3 | + | ||
4 | + validates_presence_of :requestor_id, :target_id | ||
5 | + validates_presence_of :name | ||
6 | + | ||
7 | + attr_accessible :name, :finality, :repository_link, :requestor, :environment, | ||
8 | + :reject_explanation, :license_info | ||
9 | + | ||
10 | + alias :environment :target | ||
11 | + alias :environment= :target= | ||
12 | + | ||
13 | + DATA_FIELDS = ['name', 'finality', 'license_info', 'repository_link'] | ||
14 | + DATA_FIELDS.each do |field| | ||
15 | + settings_items field.to_sym | ||
16 | + end | ||
17 | + | ||
18 | + def perform | ||
19 | + software_template = Community["software"] | ||
20 | + if (!software_template.blank? && software_template.is_template) | ||
21 | + template_id = software_template.id | ||
22 | + end | ||
23 | + | ||
24 | + community = Community.create!(:name => self.name, | ||
25 | + :template_id => template_id) | ||
26 | + | ||
27 | + community.environment = self.environment | ||
28 | + community.add_admin(self.requestor) | ||
29 | + | ||
30 | + software = SoftwareInfo.create!(:finality => self.finality, | ||
31 | + :repository_link => self.repository_link, :community_id => community.id, | ||
32 | + :license_info => self.license_info) | ||
33 | + end | ||
34 | + | ||
35 | + def title | ||
36 | + _("New software") | ||
37 | + end | ||
38 | + | ||
39 | + def subject | ||
40 | + name | ||
41 | + end | ||
42 | + | ||
43 | + def information | ||
44 | + message = _('%{requestor} wants to create software %{subject} with') | ||
45 | + if finality.blank? | ||
46 | + { :message => message + _(' no finality.') } | ||
47 | + else | ||
48 | + { :message => message + _(' this finality:<p><em>%{finality}</em></p>'), | ||
49 | + :variables => {:finality => finality} } | ||
50 | + end | ||
51 | + end | ||
52 | + | ||
53 | + def reject_details | ||
54 | + true | ||
55 | + end | ||
56 | + | ||
57 | + # tells if this request was rejected | ||
58 | + def rejected? | ||
59 | + self.status == Task::Status::CANCELLED | ||
60 | + end | ||
61 | + | ||
62 | + # tells if this request was appoved | ||
63 | + def approved? | ||
64 | + self.status == Task::Status::FINISHED | ||
65 | + end | ||
66 | + | ||
67 | + def target_notification_description | ||
68 | + _('%{requestor} wants to create software %{subject}') % | ||
69 | + {:requestor => requestor.name, :subject => subject} | ||
70 | + end | ||
71 | + | ||
72 | + def target_notification_message | ||
73 | + _("User \"%{user}\" just requested to create software %{software}. | ||
74 | + You have to approve or reject it through the \"Pending Validations\" | ||
75 | + section in your control panel.\n") % | ||
76 | + { :user => self.requestor.name, :software => self.name } | ||
77 | + end | ||
78 | + | ||
79 | + def task_created_message | ||
80 | + _("Your request for registering software %{software} at %{environment} was | ||
81 | + just sent. Environment administrator will receive it and will approve or | ||
82 | + reject your request according to his methods and criteria. | ||
83 | + | ||
84 | + You will be notified as soon as environment administrator has a position | ||
85 | + about your request.") % | ||
86 | + { :software => self.name, :environment => self.target } | ||
87 | + end | ||
88 | + | ||
89 | + def task_cancelled_message | ||
90 | + _("Your request for registering software %{software} at %{environment} was | ||
91 | + not approved by the environment administrator. The following explanation | ||
92 | + was given: \n\n%{explanation}") % | ||
93 | + { :software => self.name, | ||
94 | + :environment => self.environment, | ||
95 | + :explanation => self.reject_explanation } | ||
96 | + end | ||
97 | + | ||
98 | + def task_finished_message | ||
99 | + _('Your request for registering the software "%{software}" was approved. | ||
100 | + You can access %{url} and finish the registration of your software.') % | ||
101 | + { :software => self.name, :url => mount_url } | ||
102 | + end | ||
103 | + | ||
104 | + private | ||
105 | + | ||
106 | + def mount_url | ||
107 | + identifier = Community.where(:name => self.name).first.identifier | ||
108 | + # The use of url_for doesn't allow the /social within the Public Software | ||
109 | + # portal. That's why the url is mounted so 'hard coded' | ||
110 | + url = "#{environment.top_url}/myprofile/#{identifier}/profile_editor/edit_software_community" | ||
111 | + end | ||
112 | + | ||
113 | +end |
@@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
1 | +class DatabaseDescription < ActiveRecord::Base | ||
2 | + | ||
3 | + SEARCHABLE_SOFTWARE_FIELDS = { | ||
4 | + :name => 1 | ||
5 | + } | ||
6 | + | ||
7 | + attr_accessible :name | ||
8 | + | ||
9 | + has_many :software_databases | ||
10 | + has_many :software_infos, :through => :software_databases | ||
11 | + | ||
12 | + validates_presence_of :name | ||
13 | + validates_uniqueness_of :name | ||
14 | + | ||
15 | +end |
@@ -0,0 +1,86 @@ | @@ -0,0 +1,86 @@ | ||
1 | +class DatabaseHelper < DynamicTableHelper | ||
2 | + MODEL_NAME ="database" | ||
3 | + FIELD_NAME = "database_description_id" | ||
4 | + | ||
5 | + def self.valid_database? database | ||
6 | + return false if SoftwareHelper.all_table_is_empty?(database) | ||
7 | + | ||
8 | + database_description_id_list = DatabaseDescription.select(:id). | ||
9 | + collect {|dd| dd.id} | ||
10 | + | ||
11 | + return database_description_id_list.include?( | ||
12 | + database[:database_description_id].to_i | ||
13 | + ) | ||
14 | + end | ||
15 | + | ||
16 | + def self.list_database new_databases | ||
17 | + return [] if new_databases.nil? or new_databases.length == 0 | ||
18 | + list_databases = [] | ||
19 | + | ||
20 | + new_databases.each do |new_database| | ||
21 | + if valid_database? new_database | ||
22 | + database = SoftwareDatabase.new | ||
23 | + | ||
24 | + database.database_description_id = | ||
25 | + new_database[:database_description_id] | ||
26 | + | ||
27 | + database.version = new_database[:version] | ||
28 | + list_databases << database | ||
29 | + end | ||
30 | + end | ||
31 | + | ||
32 | + list_databases | ||
33 | + end | ||
34 | + | ||
35 | + def self.valid_list_database? list_databases | ||
36 | + return false if list_databases.nil? or list_databases.length == 0 | ||
37 | + | ||
38 | + list_databases.each do |database| | ||
39 | + return false unless database.valid? | ||
40 | + end | ||
41 | + | ||
42 | + true | ||
43 | + end | ||
44 | + | ||
45 | + def self.database_as_tables(list_databases, disabled=false) | ||
46 | + model_list = list_databases | ||
47 | + model_list ||= [{:database_description_id => "", :version => ""}] | ||
48 | + | ||
49 | + models_as_tables model_list, "database_html_structure", disabled | ||
50 | + end | ||
51 | + | ||
52 | + def self.database_html_structure(database_data, disabled) | ||
53 | + database_id = database_data[:database_description_id] | ||
54 | + database_name = if database_data[:database_description_id].blank? | ||
55 | + "" | ||
56 | + else | ||
57 | + DatabaseDescription.find( | ||
58 | + database_data[:database_description_id], | ||
59 | + :select=>"name" | ||
60 | + ).name | ||
61 | + end | ||
62 | + | ||
63 | + data = { | ||
64 | + model_name: MODEL_NAME, | ||
65 | + field_name: FIELD_NAME, | ||
66 | + name: { | ||
67 | + value: database_name, | ||
68 | + id: database_id, | ||
69 | + hidden: true, | ||
70 | + autocomplete: true, | ||
71 | + select_field: false | ||
72 | + }, | ||
73 | + version: { | ||
74 | + value: database_data[:version], | ||
75 | + hidden: true, | ||
76 | + delete: true | ||
77 | + } | ||
78 | + } | ||
79 | + DATA[:license].delete(:value) | ||
80 | + table_html_structure(data, disabled) | ||
81 | + end | ||
82 | + | ||
83 | + def self.add_dynamic_table | ||
84 | + database_as_tables(nil).first.call | ||
85 | + end | ||
86 | +end | ||
0 | \ No newline at end of file | 87 | \ No newline at end of file |
@@ -0,0 +1,51 @@ | @@ -0,0 +1,51 @@ | ||
1 | +#FIX ME: Turn this into a proper model(next release) | ||
2 | +class Download | ||
3 | + def initialize data | ||
4 | + @name = data[:name] | ||
5 | + @link = data[:link] | ||
6 | + @software_description = data[:software_description] | ||
7 | + @minimum_requirements = data[:minimum_requirements] | ||
8 | + @size = data[:size] | ||
9 | + | ||
10 | + @total_downloads = if data[:total_downloads] | ||
11 | + data[:total_downloads] | ||
12 | + else | ||
13 | + 0 | ||
14 | + end | ||
15 | + end | ||
16 | + | ||
17 | + def self.validate_download_list download_list | ||
18 | + download_list.select! do |download| | ||
19 | + not download[:name].blank? | ||
20 | + end | ||
21 | + | ||
22 | + download_list.map do |download| | ||
23 | + Download.new(download).to_hash | ||
24 | + end | ||
25 | + end | ||
26 | + | ||
27 | + def to_hash | ||
28 | + { | ||
29 | + :name => @name, | ||
30 | + :link => @link, | ||
31 | + :software_description => @software_description, | ||
32 | + :minimum_requirements => @minimum_requirements, | ||
33 | + :size => @size, | ||
34 | + :total_downloads => @total_downloads | ||
35 | + } | ||
36 | + end | ||
37 | + | ||
38 | + def total_downloads= value | ||
39 | + if value.is_a? Integer | ||
40 | + @total_downloads = value | ||
41 | + end | ||
42 | + end | ||
43 | + | ||
44 | + def total_downloads | ||
45 | + @total_downloads | ||
46 | + end | ||
47 | + | ||
48 | + def link | ||
49 | + @link | ||
50 | + end | ||
51 | +end |
@@ -0,0 +1,36 @@ | @@ -0,0 +1,36 @@ | ||
1 | +class DownloadBlock < Block | ||
2 | + | ||
3 | + attr_accessible :show_name, :downloads | ||
4 | + | ||
5 | + settings_items :show_name, :type => :boolean, :default => false | ||
6 | + settings_items :downloads, :type => Array, :default => [] | ||
7 | + | ||
8 | + validate :download_values | ||
9 | + | ||
10 | + def download_values | ||
11 | + self.downloads = Download.validate_download_list(self.downloads) | ||
12 | + end | ||
13 | + | ||
14 | + def self.description | ||
15 | + _('Download Stable Version') | ||
16 | + end | ||
17 | + | ||
18 | + def help | ||
19 | + _('This block displays the stable version of a software.') | ||
20 | + end | ||
21 | + | ||
22 | + def content(args={}) | ||
23 | + block = self | ||
24 | + s = show_name | ||
25 | + lambda do |object| | ||
26 | + render( | ||
27 | + :file => 'blocks/download', | ||
28 | + :locals => { :block => block, :show_name => s } | ||
29 | + ) | ||
30 | + end | ||
31 | + end | ||
32 | + | ||
33 | + def cacheable? | ||
34 | + false | ||
35 | + end | ||
36 | +end |
@@ -0,0 +1,153 @@ | @@ -0,0 +1,153 @@ | ||
1 | +class DynamicTableHelper | ||
2 | + extend( | ||
3 | + ActionView::Helpers::TagHelper, | ||
4 | + ActionView::Helpers::FormTagHelper, | ||
5 | + ActionView::Helpers::FormOptionsHelper, | ||
6 | + ActionView::Helpers::UrlHelper, | ||
7 | + ApplicationHelper | ||
8 | + ) | ||
9 | + | ||
10 | + COLLUMN_NAME = { | ||
11 | + name: "name", | ||
12 | + version: "version", | ||
13 | + license: "license" | ||
14 | + } | ||
15 | + | ||
16 | + LABEL_TEXT = { | ||
17 | + :name => _("Name"), | ||
18 | + :version => _("Version"), | ||
19 | + :license => _("License") | ||
20 | + } | ||
21 | + | ||
22 | + DATA = { | ||
23 | + name: { | ||
24 | + label: LABEL_TEXT[:name], | ||
25 | + name: COLLUMN_NAME[:name] | ||
26 | + }, | ||
27 | + version: { | ||
28 | + label: LABEL_TEXT[:version], | ||
29 | + name: COLLUMN_NAME[:version] | ||
30 | + } , | ||
31 | + license: { | ||
32 | + label: LABEL_TEXT[:license], | ||
33 | + name: COLLUMN_NAME[:license], | ||
34 | + delete: true | ||
35 | + } | ||
36 | + } | ||
37 | + @@disabled = false | ||
38 | + | ||
39 | + def self.table_html_structure data={}, disabled=false | ||
40 | + @@disabled = disabled | ||
41 | + Proc::new do | ||
42 | + content_tag :table , generate_table_lines(data), :class => "dynamic-table" | ||
43 | + end | ||
44 | + end | ||
45 | + | ||
46 | + def self.generate_table_lines data={} | ||
47 | + @@model = data[:model_name] | ||
48 | + @@field_name = data[:field_name] | ||
49 | + @@hidden_label = data[:name][:value] | ||
50 | + @@hidden_id = data[:name][:id] | ||
51 | + | ||
52 | + row_data = prepare_row_data data | ||
53 | + | ||
54 | + table_line_data = [ | ||
55 | + self.table_line(row_data[:name]), | ||
56 | + self.table_line(row_data[:version]) | ||
57 | + ] | ||
58 | + | ||
59 | + if row_data[:license].has_key?(:value) | ||
60 | + table_line_data << self.table_line(row_data[:license]) | ||
61 | + end | ||
62 | + | ||
63 | + table_line_data.join() | ||
64 | + end | ||
65 | + | ||
66 | + def self.table_line row_data={} | ||
67 | + unless row_data.blank? | ||
68 | + content_tag :tr, [ | ||
69 | + self.label_collumn(row_data[:label]), | ||
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 | + ), | ||
77 | + self.hidden_collumn(row_data[:delete], row_data[:hidden]) | ||
78 | + ].join() | ||
79 | + end | ||
80 | + end | ||
81 | + | ||
82 | + def self.label_collumn label="" | ||
83 | + content_tag :td, label_tag(label) | ||
84 | + end | ||
85 | + | ||
86 | + def self.value_collumn value="", name="", autocomplete=false, select_field=false, options=[] | ||
87 | + html_options = | ||
88 | + if autocomplete | ||
89 | + { | ||
90 | + :class => "#{@@model}_autocomplete", | ||
91 | + :placeholder => _("Autocomplete field, type something") | ||
92 | + } | ||
93 | + else | ||
94 | + {} | ||
95 | + end | ||
96 | + | ||
97 | + html_options[:disabled] = @@disabled | ||
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) | ||
103 | + else | ||
104 | + text_field_tag("#{@@model}[][#{name}]", value, html_options) | ||
105 | + end | ||
106 | + | ||
107 | + content_tag :td, content | ||
108 | + end | ||
109 | + | ||
110 | + def self.hidden_collumn delete=false, hidden_data=false | ||
111 | + value = | ||
112 | + if @@disabled | ||
113 | + nil | ||
114 | + elsif delete | ||
115 | + button_without_text( | ||
116 | + :delete, _('Delete'), "#" , :class=>"delete-dynamic-table" | ||
117 | + ) | ||
118 | + elsif hidden_data | ||
119 | + hidden_field_tag( | ||
120 | + "#{@@model}[][#{@@field_name}]", | ||
121 | + @@hidden_id, | ||
122 | + :class => "#{@@field_name}", | ||
123 | + :data => {:label => @@hidden_label } #check how to get the name of an object of the current model | ||
124 | + ) | ||
125 | + else | ||
126 | + nil | ||
127 | + end | ||
128 | + | ||
129 | + content_tag(:td, value, :align => 'right') | ||
130 | + end | ||
131 | + | ||
132 | + def self.prepare_row_data data | ||
133 | + row_data = { | ||
134 | + name: DATA[:name], | ||
135 | + version: DATA[:version], | ||
136 | + license: DATA[:license] | ||
137 | + } | ||
138 | + | ||
139 | + row_data[:name].merge! data[:name] | ||
140 | + row_data[:version].merge! data[:version] | ||
141 | + row_data[:license].merge! data[:license] if data.has_key? :license | ||
142 | + | ||
143 | + row_data | ||
144 | + end | ||
145 | + | ||
146 | + def self.models_as_tables models, callback, disabled=false | ||
147 | + lambdas_list = [] | ||
148 | + | ||
149 | + models.map do |model| | ||
150 | + send(callback, model, disabled) | ||
151 | + end | ||
152 | + end | ||
153 | +end | ||
0 | \ No newline at end of file | 154 | \ No newline at end of file |
@@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
1 | +require_dependency 'category' | ||
2 | + | ||
3 | +class Category | ||
4 | + SOFTWARE_CATEGORIES = [ | ||
5 | + _('Agriculture, Fisheries and Extraction'), | ||
6 | + _('Science, Information and Communication'), | ||
7 | + _('Economy and Finances'), | ||
8 | + _('Public Administration'), | ||
9 | + _('Habitation, Sanitation and Urbanism'), | ||
10 | + _('Individual, Family and Society'), | ||
11 | + _('Health'), | ||
12 | + _('Social Welfare and Development'), | ||
13 | + _('Defense and Security'), | ||
14 | + _('Education'), | ||
15 | + _('Government and Politics'), | ||
16 | + _('Justice and Legislation'), | ||
17 | + _('International Relationships'), | ||
18 | + _('Transportation and Transit') | ||
19 | + ] | ||
20 | + | ||
21 | + scope :software_categories, lambda { | ||
22 | + software_category = Category.find_by_name("Software") | ||
23 | + if software_category.nil? | ||
24 | + [] | ||
25 | + else | ||
26 | + software_category.children | ||
27 | + end | ||
28 | + } | ||
29 | + | ||
30 | + def software_infos | ||
31 | + software_list = self.communities | ||
32 | + software_list.collect { |x| software_list.delete(x) unless x.software? } | ||
33 | + software_list | ||
34 | + end | ||
35 | +end |
@@ -0,0 +1,45 @@ | @@ -0,0 +1,45 @@ | ||
1 | +require_dependency 'communities_block' | ||
2 | + | ||
3 | +class CommunitiesBlock | ||
4 | + | ||
5 | + def profile_list | ||
6 | + result = get_visible_profiles | ||
7 | + result.slice(0..get_limit-1) | ||
8 | + end | ||
9 | + | ||
10 | + def profile_count | ||
11 | + profile_list.count | ||
12 | + end | ||
13 | + | ||
14 | + private | ||
15 | + | ||
16 | + def get_visible_profiles | ||
17 | + visible_profiles = profiles.visible.includes( | ||
18 | + [:image,:domains,:preferred_domain,:environment] | ||
19 | + ) | ||
20 | + | ||
21 | + delete_communities = [] | ||
22 | + valid_communities_string = Community.get_valid_communities_string | ||
23 | + Community.all.each{|community| delete_communities << community.id unless eval(valid_communities_string)} | ||
24 | + | ||
25 | + visible_profiles = visible_profiles.where(["profiles.id NOT IN (?)", delete_communities]) unless delete_communities.empty? | ||
26 | + | ||
27 | + if !prioritize_profiles_with_image | ||
28 | + return visible_profiles.all( | ||
29 | + :limit => get_limit, | ||
30 | + :order => 'profiles.updated_at DESC' | ||
31 | + ).sort_by {rand} | ||
32 | + elsif profiles.visible.with_image.count >= get_limit | ||
33 | + return visible_profiles.with_image.all( | ||
34 | + :limit => get_limit * 5, | ||
35 | + :order => 'profiles.updated_at DESC' | ||
36 | + ).sort_by {rand} | ||
37 | + else | ||
38 | + visible_profiles = visible_profiles.with_image.sort_by {rand} + | ||
39 | + visible_profiles.without_image.all( | ||
40 | + :limit => get_limit * 5, :order => 'profiles.updated_at DESC' | ||
41 | + ).sort_by {rand} | ||
42 | + return visible_profiles | ||
43 | + end | ||
44 | + end | ||
45 | +end |
@@ -0,0 +1,66 @@ | @@ -0,0 +1,66 @@ | ||
1 | +require_dependency 'community' | ||
2 | + | ||
3 | +class Community | ||
4 | + | ||
5 | + SEARCHABLE_SOFTWARE_FIELDS = { | ||
6 | + :name => 1, | ||
7 | + :identifier => 2, | ||
8 | + :nickname => 3 | ||
9 | + } | ||
10 | + | ||
11 | + attr_accessible :visible | ||
12 | + | ||
13 | + has_one :software_info, :dependent=>:destroy | ||
14 | + | ||
15 | + settings_items :hits, :type => :integer, :default => 0 | ||
16 | + | ||
17 | + def self.create_after_moderation(requestor, attributes = {}) | ||
18 | + community = Community.new(attributes) | ||
19 | + | ||
20 | + if community.environment.enabled?('admin_must_approve_new_communities') && | ||
21 | + !community.environment.admins.include?(requestor) | ||
22 | + | ||
23 | + cc = CreateCommunity.create(attributes.merge(:requestor => requestor)) | ||
24 | + else | ||
25 | + community = Community.create(attributes) | ||
26 | + community.add_admin(requestor) | ||
27 | + end | ||
28 | + community | ||
29 | + end | ||
30 | + | ||
31 | + def self.get_valid_communities_string | ||
32 | + remove_of_communities_methods = Community.instance_methods.select{|m| m =~ /remove_of_community_search/} | ||
33 | + valid_communities_string = "!(" | ||
34 | + remove_of_communities_methods.each do |method| | ||
35 | + valid_communities_string += "community.send('#{method}') || " | ||
36 | + end | ||
37 | + valid_communities_string = valid_communities_string[0..-5] | ||
38 | + valid_communities_string += ")" | ||
39 | + | ||
40 | + valid_communities_string | ||
41 | + end | ||
42 | + | ||
43 | + def software? | ||
44 | + return !software_info.nil? | ||
45 | + end | ||
46 | + | ||
47 | + def deactivate | ||
48 | + self.visible = false | ||
49 | + self.save! | ||
50 | + end | ||
51 | + | ||
52 | + def activate | ||
53 | + self.visible = true | ||
54 | + self.save! | ||
55 | + end | ||
56 | + | ||
57 | + def remove_of_community_search_software? | ||
58 | + return software? | ||
59 | + end | ||
60 | + | ||
61 | + def hit | ||
62 | + self.hits += 1 | ||
63 | + self.save! | ||
64 | + end | ||
65 | + | ||
66 | +end |
@@ -0,0 +1,24 @@ | @@ -0,0 +1,24 @@ | ||
1 | +# encoding: utf-8 | ||
2 | + | ||
3 | +require_dependency 'person' | ||
4 | + | ||
5 | +class Person | ||
6 | + | ||
7 | + delegate :login, :to => :user, :prefix => true | ||
8 | + | ||
9 | + def software? | ||
10 | + false | ||
11 | + end | ||
12 | + | ||
13 | + def softwares | ||
14 | + softwares = [] | ||
15 | + self.communities.each do |community| | ||
16 | + if community.software? | ||
17 | + softwares << community | ||
18 | + end | ||
19 | + end | ||
20 | + | ||
21 | + softwares | ||
22 | + end | ||
23 | + | ||
24 | +end |
@@ -0,0 +1,64 @@ | @@ -0,0 +1,64 @@ | ||
1 | +require_dependency 'profile_controller' | ||
2 | + | ||
3 | +class ProfileController | ||
4 | + | ||
5 | + before_filter :hit_view_page | ||
6 | + | ||
7 | + def communities | ||
8 | + type = [] | ||
9 | + params[:type].downcase! unless params[:type].nil? | ||
10 | + | ||
11 | + if params[:type] == "software" | ||
12 | + type = profile.softwares | ||
13 | + elsif params[:type] == "institution" | ||
14 | + type = profile.institutions | ||
15 | + else | ||
16 | + profile.communities.select do |community| | ||
17 | + type << community unless community.software? || community.institution? | ||
18 | + end | ||
19 | + end | ||
20 | + | ||
21 | + if is_cache_expired?(profile.communities_cache_key(params)) | ||
22 | + @communities = type.paginate(:per_page => per_page, :page => params[:npage], :total_entries => type.count) | ||
23 | + end | ||
24 | + end | ||
25 | + | ||
26 | + def members | ||
27 | + if is_cache_expired?(profile.members_cache_key(params)) | ||
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') | ||
32 | + end | ||
33 | + end | ||
34 | + | ||
35 | + def user_is_a_bot? | ||
36 | + user_agent= request.env["HTTP_USER_AGENT"] | ||
37 | + user_agent.blank? || | ||
38 | + user_agent.match(/bot/) || | ||
39 | + user_agent.match(/spider/) || | ||
40 | + user_agent.match(/crawler/) || | ||
41 | + user_agent.match(/\(.*https?:\/\/.*\)/) | ||
42 | + end | ||
43 | + | ||
44 | + def already_visited?(element) | ||
45 | + user_id = if user.nil? then -1 else current_user.id end | ||
46 | + user_id = "#{user_id}_#{element.id}_#{element.class}" | ||
47 | + | ||
48 | + if cookies.signed[:visited] == user_id | ||
49 | + return true | ||
50 | + else | ||
51 | + cookies.permanent.signed[:visited] = user_id | ||
52 | + return false | ||
53 | + end | ||
54 | + end | ||
55 | + | ||
56 | + def hit_view_page | ||
57 | + if profile | ||
58 | + community = profile | ||
59 | + community.hit unless user_is_a_bot? || | ||
60 | + already_visited?(community) || | ||
61 | + community.class != Community | ||
62 | + end | ||
63 | + end | ||
64 | +end |
src/software_communities/lib/ext/profile_editor_controller.rb
0 → 100644
@@ -0,0 +1,28 @@ | @@ -0,0 +1,28 @@ | ||
1 | +require_dependency 'profile_editor_controller' | ||
2 | + | ||
3 | +class ProfileEditorController | ||
4 | + | ||
5 | + before_filter :redirect_to_edit_software_community, :only => [:edit] | ||
6 | + | ||
7 | + def edit_software_community | ||
8 | + @profile_data = profile | ||
9 | + @possible_domains = profile.possible_domains | ||
10 | + @first_edit = profile.software_info.first_edit? | ||
11 | + | ||
12 | + if @first_edit | ||
13 | + profile.software_info.first_edit = false | ||
14 | + profile.software_info.save! | ||
15 | + end | ||
16 | + | ||
17 | + edit if request.post? | ||
18 | + end | ||
19 | + | ||
20 | + protected | ||
21 | + | ||
22 | + def redirect_to_edit_software_community | ||
23 | + if profile.class == Community && profile.software? | ||
24 | + redirect_to :action => 'edit_software_community' | ||
25 | + end | ||
26 | + end | ||
27 | + | ||
28 | +end |
@@ -0,0 +1,26 @@ | @@ -0,0 +1,26 @@ | ||
1 | +require_dependency 'profile_helper' | ||
2 | + | ||
3 | +module ProfileHelper | ||
4 | + PERSON_CATEGORIES[:mpog_profile_information] = [:secondary_email, | ||
5 | + :institutions] | ||
6 | + | ||
7 | + def display_mpog_field(title, profile, field, force = false) | ||
8 | + unless force || profile.may_display_field_to?(field, user) | ||
9 | + return '' | ||
10 | + end | ||
11 | + value = profile.send(field) | ||
12 | + if !value.blank? | ||
13 | + if block_given? | ||
14 | + value = yield(value) | ||
15 | + end | ||
16 | + content_tag( | ||
17 | + 'tr', | ||
18 | + content_tag('td', title, :class => 'field-name') + | ||
19 | + content_tag('td', value) | ||
20 | + ) | ||
21 | + else | ||
22 | + '' | ||
23 | + end | ||
24 | + end | ||
25 | + | ||
26 | +end |
@@ -0,0 +1,169 @@ | @@ -0,0 +1,169 @@ | ||
1 | +require_dependency 'search_controller' | ||
2 | + | ||
3 | +class SearchController | ||
4 | + | ||
5 | + def communities | ||
6 | + delete_communities = [] | ||
7 | + valid_communities_string = Community.get_valid_communities_string | ||
8 | + Community.all.each{|community| delete_communities << community.id unless eval(valid_communities_string)} | ||
9 | + | ||
10 | + @scope = visible_profiles(Community) | ||
11 | + @scope = @scope.where(["id NOT IN (?)", delete_communities]) unless delete_communities.empty? | ||
12 | + | ||
13 | + full_text_search | ||
14 | + end | ||
15 | + | ||
16 | + def software_infos | ||
17 | + prepare_software_search_page | ||
18 | + results = filter_software_infos_list | ||
19 | + @software_count = results.count | ||
20 | + results = results.paginate(:per_page => @per_page, :page => params[:page]) | ||
21 | + @searches[@asset] = {:results => results} | ||
22 | + @search = results | ||
23 | + | ||
24 | + render :layout=>false if request.xhr? | ||
25 | + end | ||
26 | + | ||
27 | + protected | ||
28 | + | ||
29 | + def filter_communities_list | ||
30 | + unfiltered_list = visible_profiles(Community) | ||
31 | + | ||
32 | + unless params[:query].nil? | ||
33 | + unfiltered_list = unfiltered_list.select do |com| | ||
34 | + com.name.downcase =~ /#{params[:query].downcase}/ | ||
35 | + end | ||
36 | + end | ||
37 | + | ||
38 | + communities_list = [] | ||
39 | + unfiltered_list.each do |profile| | ||
40 | + if profile.class == Community && !profile.is_template? && yield(profile) | ||
41 | + communities_list << profile | ||
42 | + end | ||
43 | + end | ||
44 | + | ||
45 | + communities_list | ||
46 | + end | ||
47 | + | ||
48 | + def filter_software_infos_list | ||
49 | + filtered_software_list = get_filtered_software_list | ||
50 | + filtered_community_list = get_communities_list(filtered_software_list) | ||
51 | + sort_communities_list filtered_community_list | ||
52 | + end | ||
53 | + | ||
54 | + def get_filter_category_ids | ||
55 | + category_ids = [] | ||
56 | + unless params[:selected_categories_id].blank? | ||
57 | + category_ids = params[:selected_categories_id] | ||
58 | + end | ||
59 | + category_ids.map(&:to_i) | ||
60 | + end | ||
61 | + | ||
62 | + def get_filtered_software_list | ||
63 | + params[:query] ||= "" | ||
64 | + visible_communities = visible_profiles(Community) | ||
65 | + | ||
66 | + filtered_software_list = SoftwareInfo.search_by_query(params[:query]) | ||
67 | + | ||
68 | + if params[:only_softwares] | ||
69 | + params[:only_softwares].collect!{ |software_name| software_name.to_slug } | ||
70 | + filtered_software_list = SoftwareInfo.all.select{ |s| params[:only_softwares].include?(s.identifier) } | ||
71 | + @public_software_selected = false | ||
72 | + end | ||
73 | + | ||
74 | + filtered_software_list.select!{ |software| visible_communities.include?(software.community) } | ||
75 | + category_ids = get_filter_category_ids | ||
76 | + | ||
77 | + unless category_ids.empty? | ||
78 | + filtered_software_list.select! do |software| | ||
79 | + if software.nil? || software.community.nil? | ||
80 | + false | ||
81 | + else | ||
82 | + result_ids = (software.community.category_ids & category_ids).sort | ||
83 | + result_ids == category_ids.sort | ||
84 | + end | ||
85 | + end | ||
86 | + end | ||
87 | + | ||
88 | + filtered_software_list | ||
89 | + end | ||
90 | + | ||
91 | + def get_communities_list software_list | ||
92 | + filtered_community_list = [] | ||
93 | + software_list.each do |software| | ||
94 | + if !@public_software_selected || software.public_software? | ||
95 | + filtered_community_list << software.community unless software.community.nil? | ||
96 | + end | ||
97 | + end | ||
98 | + filtered_community_list | ||
99 | + end | ||
100 | + | ||
101 | + def sort_communities_list communities_list | ||
102 | + communities_list.sort! {|a, b| a.name.downcase <=> b.name.downcase} | ||
103 | + | ||
104 | + if params[:sort] && params[:sort] == "desc" | ||
105 | + communities_list.reverse! | ||
106 | + elsif params[:sort] && params[:sort] == "relevance" | ||
107 | + communities_list = sort_by_relevance(communities_list, params[:query]){ |community| [community.software_info.finality, community.name] } | ||
108 | + end | ||
109 | + communities_list | ||
110 | + end | ||
111 | + | ||
112 | + def prepare_software_search_page | ||
113 | + prepare_software_infos_params | ||
114 | + prepare_software_infos_message | ||
115 | + prepare_software_infos_category_groups | ||
116 | + prepare_software_infos_category_enable | ||
117 | + end | ||
118 | + | ||
119 | + def prepare_software_infos_params | ||
120 | + @titles[:software_infos] = _("Result Search") | ||
121 | + @selected_categories_id = params[:selected_categories_id] | ||
122 | + @selected_categories_id ||= [] | ||
123 | + @selected_categories_id = @selected_categories_id.map(&:to_i) | ||
124 | + @all_selected = params[:software_type] == "all" | ||
125 | + @public_software_selected = !@all_selected | ||
126 | + @per_page = prepare_per_page | ||
127 | + end | ||
128 | + | ||
129 | + def prepare_per_page | ||
130 | + return 15 if params[:software_display].nil? | ||
131 | + | ||
132 | + if params[:software_display] == "all" | ||
133 | + SoftwareInfo.count | ||
134 | + else | ||
135 | + params[:software_display].to_i | ||
136 | + end | ||
137 | + end | ||
138 | + | ||
139 | + def prepare_software_infos_message | ||
140 | + @message_selected_options = "" | ||
141 | + | ||
142 | + @selected_categories = [] | ||
143 | + unless @selected_categories_id.empty? | ||
144 | + @message_selected_options = _("Selected options: ") | ||
145 | + | ||
146 | + @selected_categories = Category.find(@selected_categories_id) | ||
147 | + @message_selected_options += @selected_categories.collect { |category| | ||
148 | + "#{category.name}; " | ||
149 | + }.join() | ||
150 | + end | ||
151 | + end | ||
152 | + | ||
153 | + def prepare_software_infos_category_groups | ||
154 | + @categories = Category.software_categories.sort{|a, b| a.name <=> b.name} | ||
155 | + end | ||
156 | + | ||
157 | + def prepare_software_infos_category_enable | ||
158 | + @enabled_check_box = Hash.new | ||
159 | + categories = Category.software_categories | ||
160 | + | ||
161 | + categories.each do |category| | ||
162 | + if category.software_infos.count > 0 | ||
163 | + @enabled_check_box[category] = :enabled | ||
164 | + else | ||
165 | + @enabled_check_box[category] = :disabled | ||
166 | + end | ||
167 | + end | ||
168 | + end | ||
169 | +end |
@@ -0,0 +1,33 @@ | @@ -0,0 +1,33 @@ | ||
1 | +require_dependency 'search_helper' | ||
2 | + | ||
3 | +module SearchHelper | ||
4 | + | ||
5 | + COMMON_PROFILE_LIST_BLOCK ||= [] | ||
6 | + COMMON_PROFILE_LIST_BLOCK << :software_infos | ||
7 | + | ||
8 | + def sort_by_relevance list, text | ||
9 | + text_splited = text.split | ||
10 | + | ||
11 | + element_relevance = {} | ||
12 | + | ||
13 | + list.each do |element| | ||
14 | + relevance = 1 | ||
15 | + relevance_list = yield(element) | ||
16 | + | ||
17 | + text_splited.each do |t| | ||
18 | + relevance_list.count.times do |i| | ||
19 | + relevance = -1 * i if relevance_list[i].downcase.include?(t.downcase) | ||
20 | + end | ||
21 | + end | ||
22 | + | ||
23 | + element_relevance[element] = relevance | ||
24 | + end | ||
25 | + | ||
26 | + list.sort! do |a, b| | ||
27 | + element_relevance[a] <=> element_relevance[b] | ||
28 | + end | ||
29 | + | ||
30 | + list | ||
31 | + end | ||
32 | + | ||
33 | +end |
@@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
1 | +class Library < ActiveRecord::Base | ||
2 | + attr_accessible :name, :version, :license, :software_info_id | ||
3 | + | ||
4 | + validates :name, :version, :license, | ||
5 | + presence: { message: _("can't be blank") }, | ||
6 | + length: { | ||
7 | + maximum: 20, | ||
8 | + too_long: _("Too long (maximum is 20 characters)") | ||
9 | + } | ||
10 | +end |
@@ -0,0 +1,62 @@ | @@ -0,0 +1,62 @@ | ||
1 | +class LibraryHelper < DynamicTableHelper | ||
2 | + MODEL_NAME = "library" | ||
3 | + | ||
4 | + def self.list_library new_libraries | ||
5 | + return [] if new_libraries.nil? or new_libraries.length == 0 | ||
6 | + list_libraries = [] | ||
7 | + | ||
8 | + new_libraries.each do |new_library| | ||
9 | + unless SoftwareHelper.all_table_is_empty? new_library | ||
10 | + library = Library.new | ||
11 | + library.name = new_library[:name] | ||
12 | + library.version = new_library[:version] | ||
13 | + library.license = new_library[:license] | ||
14 | + list_libraries << library | ||
15 | + end | ||
16 | + end | ||
17 | + | ||
18 | + list_libraries | ||
19 | + end | ||
20 | + | ||
21 | + def self.valid_list_library? list_libraries | ||
22 | + return true if list_libraries.nil? or list_libraries.length == 0 | ||
23 | + | ||
24 | + list_libraries.each do |library| | ||
25 | + return false unless library.valid? | ||
26 | + end | ||
27 | + | ||
28 | + true | ||
29 | + end | ||
30 | + | ||
31 | + def self.libraries_as_tables list_libraries, disabled=false | ||
32 | + model_list = list_libraries | ||
33 | + model_list ||= [{:name=>"", :version=>"", :license=>""}] | ||
34 | + | ||
35 | + models_as_tables model_list, "library_html_structure", disabled | ||
36 | + end | ||
37 | + | ||
38 | + def self.library_html_structure library_data, disabled | ||
39 | + data = { | ||
40 | + model_name: MODEL_NAME, | ||
41 | + name: { | ||
42 | + value: library_data[:name], | ||
43 | + hidden: false, | ||
44 | + autocomplete: false, | ||
45 | + select_field: false | ||
46 | + }, | ||
47 | + version: { | ||
48 | + value: library_data[:version], | ||
49 | + delete: false | ||
50 | + }, | ||
51 | + license: { | ||
52 | + value: library_data[:license] | ||
53 | + } | ||
54 | + } | ||
55 | + | ||
56 | + table_html_structure(data, disabled) | ||
57 | + end | ||
58 | + | ||
59 | + def self.add_dynamic_table | ||
60 | + libraries_as_tables(nil).first.call | ||
61 | + end | ||
62 | +end | ||
0 | \ No newline at end of file | 63 | \ No newline at end of file |
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +class OperatingSystem < ActiveRecord::Base | ||
2 | + attr_accessible :version | ||
3 | + | ||
4 | + belongs_to :software_info | ||
5 | + belongs_to :operating_system_name | ||
6 | + | ||
7 | + validates :operating_system_name, presence: true | ||
8 | + validates :version, | ||
9 | + presence: true, | ||
10 | + length: { | ||
11 | + maximum: 20, | ||
12 | + too_long: _('too long (maximum is 20 characters)') | ||
13 | + } | ||
14 | +end |
@@ -0,0 +1,71 @@ | @@ -0,0 +1,71 @@ | ||
1 | +class OperatingSystemHelper < DynamicTableHelper | ||
2 | + MODEL_NAME = "operating_system" | ||
3 | + FIELD_NAME = "operating_system_name_id" | ||
4 | + | ||
5 | + def self.list_operating_system new_operating_systems | ||
6 | + return [] if new_operating_systems.nil? or new_operating_systems.length == 0 | ||
7 | + list_operating_system = [] | ||
8 | + | ||
9 | + new_operating_systems.each do |new_operating_system| | ||
10 | + unless SoftwareHelper.all_table_is_empty?( | ||
11 | + new_operating_system, | ||
12 | + ["operating_system_name_id"] | ||
13 | + ) | ||
14 | + | ||
15 | + operating_system = OperatingSystem.new | ||
16 | + operating_system.operating_system_name = OperatingSystemName.find( | ||
17 | + new_operating_system[:operating_system_name_id] | ||
18 | + ) | ||
19 | + | ||
20 | + operating_system.version = new_operating_system[:version] | ||
21 | + list_operating_system << operating_system | ||
22 | + end | ||
23 | + end | ||
24 | + list_operating_system | ||
25 | + end | ||
26 | + | ||
27 | + def self.valid_list_operating_system? list_operating_system | ||
28 | + return !(list_operating_system.nil? || list_operating_system.length == 0) | ||
29 | + | ||
30 | + list_operating_system.each do |operating_system| | ||
31 | + return false unless operating_system.valid? | ||
32 | + end | ||
33 | + true | ||
34 | + end | ||
35 | + | ||
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 => ""}] | ||
39 | + | ||
40 | + models_as_tables model_list, "operating_system_html_structure", disabled | ||
41 | + end | ||
42 | + | ||
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 | + ) | ||
48 | + | ||
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) | ||
66 | + end | ||
67 | + | ||
68 | + def self.add_dynamic_table | ||
69 | + operating_system_as_tables(nil).first.call | ||
70 | + end | ||
71 | +end |
@@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
1 | +class ProgrammingLanguage < ActiveRecord::Base | ||
2 | + | ||
3 | + SEARCHABLE_SOFTWARE_FIELDS = { | ||
4 | + :name => 1 | ||
5 | + } | ||
6 | + | ||
7 | + attr_accessible :name | ||
8 | + | ||
9 | + validates_presence_of :name | ||
10 | + validates_uniqueness_of :name | ||
11 | + | ||
12 | + has_many :software_languages | ||
13 | + has_many :software_infos, :through => :software_languages | ||
14 | + | ||
15 | +end |
@@ -0,0 +1,29 @@ | @@ -0,0 +1,29 @@ | ||
1 | +class RepositoryBlock < Block | ||
2 | + | ||
3 | + attr_accessible :show_name | ||
4 | + | ||
5 | + settings_items :show_name, :type => :boolean, :default => false | ||
6 | + | ||
7 | + def self.description | ||
8 | + _('Repository Link') | ||
9 | + end | ||
10 | + | ||
11 | + def help | ||
12 | + _('This block displays the repository link of a software.') | ||
13 | + end | ||
14 | + | ||
15 | + def content(args={}) | ||
16 | + block = self | ||
17 | + s = show_name | ||
18 | + lambda do |object| | ||
19 | + render( | ||
20 | + :file => 'blocks/repository', | ||
21 | + :locals => { :block => block, :show_name => s } | ||
22 | + ) | ||
23 | + end | ||
24 | + end | ||
25 | + | ||
26 | + def cacheable? | ||
27 | + false | ||
28 | + end | ||
29 | +end |
@@ -0,0 +1,29 @@ | @@ -0,0 +1,29 @@ | ||
1 | +class SearchCatalogBlock < Block | ||
2 | + | ||
3 | + attr_accessible :show_name | ||
4 | + | ||
5 | + settings_items :show_name, :type => :boolean, :default => false | ||
6 | + | ||
7 | + def self.description | ||
8 | + _('Search Softwares catalog') | ||
9 | + end | ||
10 | + | ||
11 | + def help | ||
12 | + _('This block displays the search categories field ') | ||
13 | + end | ||
14 | + | ||
15 | + def content(args={}) | ||
16 | + block = self | ||
17 | + s = show_name | ||
18 | + lambda do |object| | ||
19 | + render( | ||
20 | + :file => 'blocks/search_catalog', | ||
21 | + :locals => { :block => block, :show_name => s } | ||
22 | + ) | ||
23 | + end | ||
24 | + end | ||
25 | + | ||
26 | + def cacheable? | ||
27 | + false | ||
28 | + end | ||
29 | +end |
src/software_communities/lib/software_communities_plugin.rb
0 → 100644
@@ -0,0 +1,164 @@ | @@ -0,0 +1,164 @@ | ||
1 | +class SoftwareCommunitiesPlugin < Noosfero::Plugin | ||
2 | + include ActionView::Helpers::TagHelper | ||
3 | + include ActionView::Helpers::FormTagHelper | ||
4 | + include ActionView::Helpers::FormOptionsHelper | ||
5 | + include ActionView::Helpers::JavaScriptHelper | ||
6 | + include ActionView::Helpers::AssetTagHelper | ||
7 | + include FormsHelper | ||
8 | + include ActionView::Helpers | ||
9 | + include ActionDispatch::Routing | ||
10 | + include Rails.application.routes.url_helpers | ||
11 | + | ||
12 | + def self.plugin_name | ||
13 | + 'SoftwareCommunitiesPlugin' | ||
14 | + end | ||
15 | + | ||
16 | + def self.plugin_description | ||
17 | + _('Add Public Software and MPOG features.') | ||
18 | + end | ||
19 | + | ||
20 | + def profile_tabs | ||
21 | + if context.profile.community? | ||
22 | + return profile_tabs_software if context.profile.software? | ||
23 | + end | ||
24 | + end | ||
25 | + | ||
26 | + def control_panel_buttons | ||
27 | + if context.profile.software? | ||
28 | + return software_info_button | ||
29 | + elsif context.profile.person? | ||
30 | + return create_new_software_button | ||
31 | + end | ||
32 | + end | ||
33 | + | ||
34 | + def self.extra_blocks | ||
35 | + { | ||
36 | + SoftwaresBlock => { :type => [Environment, Person] }, | ||
37 | + SoftwareInformationBlock => { :type => [Community] }, | ||
38 | + DownloadBlock => { :type => [Community] }, | ||
39 | + RepositoryBlock => { :type => [Community] }, | ||
40 | + CategoriesAndTagsBlock => { :type => [Community] }, | ||
41 | + CategoriesSoftwareBlock => { :type => [Environment] }, | ||
42 | + SearchCatalogBlock => { :type => [Environment] }, | ||
43 | + SoftwareHighlightsBlock => { :type => [Environment] }, | ||
44 | + SoftwareTabDataBlock => {:type => [Community], :position => 1}, | ||
45 | + WikiBlock => {:type => [Community]}, | ||
46 | + StatisticBlock => { :type => [Community] } | ||
47 | + } | ||
48 | + end | ||
49 | + | ||
50 | + def stylesheet? | ||
51 | + true | ||
52 | + end | ||
53 | + | ||
54 | + def js_files | ||
55 | + %w( | ||
56 | + vendor/jquery.maskedinput.min.js | ||
57 | + vendor/modulejs-1.5.0.min.js | ||
58 | + vendor/jquery.js | ||
59 | + lib/noosfero-root.js | ||
60 | + lib/select-element.js | ||
61 | + lib/select-field-choices.js | ||
62 | + lib/auto-complete.js | ||
63 | + lib/software-catalog-component.js | ||
64 | + views/control-panel.js | ||
65 | + views/edit-software.js | ||
66 | + views/new-software.js | ||
67 | + views/search-software-catalog.js | ||
68 | + views/profile-tabs-software.js | ||
69 | + views/new-community.js | ||
70 | + views/comments-software-extra-fields.js | ||
71 | + blocks/software-download.js | ||
72 | + initializer.js | ||
73 | + app.js | ||
74 | + ) | ||
75 | + end | ||
76 | + | ||
77 | + module Hotspots | ||
78 | + def display_organization_average_rating organization | ||
79 | + nil | ||
80 | + end | ||
81 | + end | ||
82 | + | ||
83 | + def organization_ratings_plugin_comments_extra_fields | ||
84 | + if context.profile.software? | ||
85 | + Proc::new { render :file => 'comments_extra_fields' } | ||
86 | + end | ||
87 | + end | ||
88 | + | ||
89 | + def organization_ratings_plugin_star_message | ||
90 | + Proc::new do _("Rate this software") end | ||
91 | + end | ||
92 | + | ||
93 | + def organization_ratings_title | ||
94 | + title = _('Use reports') | ||
95 | + Proc::new do "<h1 class='title'>#{title}</h1>" end | ||
96 | + end | ||
97 | + | ||
98 | + def organization_ratings_plugin_extra_fields_show_data user_rating | ||
99 | + Proc::new { | ||
100 | + if logged_in? | ||
101 | + is_admin = environment.admins.include?(current_user.person) | ||
102 | + is_admin ||= user_rating.organization.admins.include?(current_user.person) | ||
103 | + | ||
104 | + if is_admin and profile.software? | ||
105 | + | ||
106 | + render :file => 'organization_ratings_extra_fields_show_data', | ||
107 | + :locals => {:user_rating => user_rating} | ||
108 | + end | ||
109 | + end | ||
110 | + } | ||
111 | + end | ||
112 | + | ||
113 | + # FIXME - if in error log apears has_permission?, try to use this method | ||
114 | + def has_permission?(person, permission, target) | ||
115 | + person.has_permission_without_plugins?(permission, target) | ||
116 | + end | ||
117 | + | ||
118 | + protected | ||
119 | + | ||
120 | + def software_info_transaction | ||
121 | + SoftwareInfo.transaction do | ||
122 | + context.profile. | ||
123 | + software_info. | ||
124 | + update_attributes!(context.params[:software_info]) | ||
125 | + end | ||
126 | + end | ||
127 | + | ||
128 | + def license_transaction | ||
129 | + license = LicenseInfo.find(context.params[:version]) | ||
130 | + context.profile.software_info.license_info = license | ||
131 | + context.profile.software_info.save! | ||
132 | + end | ||
133 | + | ||
134 | + private | ||
135 | + | ||
136 | + def software_info_button | ||
137 | + { | ||
138 | + :title => _('Software Info'), | ||
139 | + :icon => 'edit-profile-group control-panel-software-link', | ||
140 | + :url => { | ||
141 | + :controller => 'software_communities_plugin_myprofile', | ||
142 | + :action => 'edit_software' | ||
143 | + } | ||
144 | + } | ||
145 | + end | ||
146 | + | ||
147 | + def create_new_software_button | ||
148 | + { | ||
149 | + :title => _('Create a new software'), | ||
150 | + :icon => 'design-editor', | ||
151 | + :url => { | ||
152 | + :controller => 'software_communities_plugin_myprofile', | ||
153 | + :action => 'new_software' | ||
154 | + } | ||
155 | + } | ||
156 | + end | ||
157 | + | ||
158 | + def profile_tabs_software | ||
159 | + { :title => _('Software'), | ||
160 | + :id => 'software-fields', | ||
161 | + :content => Proc::new do render :partial => 'profile/software_tab' end, | ||
162 | + :start => true } | ||
163 | + end | ||
164 | +end |
@@ -0,0 +1,20 @@ | @@ -0,0 +1,20 @@ | ||
1 | +class SoftwareDatabase < ActiveRecord::Base | ||
2 | + attr_accessible :version | ||
3 | + | ||
4 | + belongs_to :software_info | ||
5 | + belongs_to :database_description | ||
6 | + | ||
7 | + validates_presence_of :database_description_id, :version | ||
8 | + | ||
9 | + validates_length_of( | ||
10 | + :version, | ||
11 | + :maximum => 20, | ||
12 | + :too_long => _("Software database is too long (maximum is 20 characters)") | ||
13 | + ) | ||
14 | + | ||
15 | + validates( | ||
16 | + :database_description_id, | ||
17 | + :numericality => {:greater_than_or_equal_to => 1} | ||
18 | + ) | ||
19 | + | ||
20 | +end |
@@ -0,0 +1,44 @@ | @@ -0,0 +1,44 @@ | ||
1 | +module SoftwareHelper | ||
2 | + def self.select_options programming_languages, selected = 0 | ||
3 | + value = "" | ||
4 | + | ||
5 | + programming_languages.each do |language| | ||
6 | + selected = selected == language.id ? 'selected' : '' | ||
7 | + value += "<option value=#{language.id} #{selected}> | ||
8 | + #{language.name} | ||
9 | + </option>" | ||
10 | + end | ||
11 | + | ||
12 | + value | ||
13 | + end | ||
14 | + | ||
15 | + def self.create_list_with_file file_name, model | ||
16 | + list_file = File.open file_name, "r" | ||
17 | + | ||
18 | + list_file.each_line do |line| | ||
19 | + model.create(:name=>line.strip) | ||
20 | + end | ||
21 | + | ||
22 | + list_file.close | ||
23 | + end | ||
24 | + | ||
25 | + def self.all_table_is_empty? table, ignored_fields=[] | ||
26 | + filled_fields = [] | ||
27 | + | ||
28 | + table.each do |key, value| | ||
29 | + unless ignored_fields.include? key | ||
30 | + filled_fields << if value.empty? | ||
31 | + false | ||
32 | + else | ||
33 | + true | ||
34 | + end | ||
35 | + end | ||
36 | + end | ||
37 | + | ||
38 | + if filled_fields.include? true | ||
39 | + false | ||
40 | + else | ||
41 | + true | ||
42 | + end | ||
43 | + end | ||
44 | +end |
src/software_communities/lib/software_highlights_block.rb
0 → 100644
@@ -0,0 +1,20 @@ | @@ -0,0 +1,20 @@ | ||
1 | +class SoftwareHighlightsBlock < HighlightsBlock | ||
2 | + | ||
3 | + def self.description | ||
4 | + _('Software Highlights Block') | ||
5 | + end | ||
6 | + | ||
7 | + def help | ||
8 | + _('This block displays the softwares icon into a highlight') | ||
9 | + end | ||
10 | + | ||
11 | + def content(args={}) | ||
12 | + softwares = self.settings[:images].collect {|h| h[:address].split('/').last} | ||
13 | + block = self | ||
14 | + proc do | ||
15 | + render :file => 'blocks/software_highlights', :locals => { :block => block, :softwares => softwares} | ||
16 | + end | ||
17 | + end | ||
18 | + | ||
19 | + | ||
20 | +end |
@@ -0,0 +1,261 @@ | @@ -0,0 +1,261 @@ | ||
1 | +class SoftwareInfo < ActiveRecord::Base | ||
2 | + acts_as_having_settings :field => :settings | ||
3 | + | ||
4 | + SEARCHABLE_SOFTWARE_FIELDS = { | ||
5 | + :acronym => 1, | ||
6 | + :finality => 2, | ||
7 | + } | ||
8 | + | ||
9 | + SEARCHABLE_SOFTWARE_CLASSES = [ | ||
10 | + SoftwareInfo, | ||
11 | + Community, | ||
12 | + ProgrammingLanguage, | ||
13 | + DatabaseDescription | ||
14 | + ] | ||
15 | + | ||
16 | + scope :search_by_query, lambda { |query = ""| | ||
17 | + filtered_query = query.gsub(/[\|\(\)\\\/\s\[\]'"*%&!:]/,' ').split.map{|w| w += ":*"}.join('|') | ||
18 | + search_fields = SoftwareInfo.pg_search_plugin_fields | ||
19 | + | ||
20 | + if query.empty? | ||
21 | + SoftwareInfo.joins(:community).where("profiles.visible = ?", true) | ||
22 | + else | ||
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}')").where("profiles.visible = ?", true) | ||
25 | + end | ||
26 | + } | ||
27 | + | ||
28 | + def self.transform_list_in_methods_list list | ||
29 | + methods_list = [] | ||
30 | + | ||
31 | + list.each do |element| | ||
32 | + if SoftwareInfo.instance_methods.include?(element.to_s.underscore.to_sym) | ||
33 | + methods_list << element.to_s.underscore.to_sym | ||
34 | + elsif SoftwareInfo.instance_methods.include?(element.to_s.underscore.pluralize.to_sym) | ||
35 | + methods_list << element.to_s.underscore.pluralize.to_sym | ||
36 | + end | ||
37 | + end | ||
38 | + | ||
39 | + methods_list | ||
40 | + end | ||
41 | + | ||
42 | + def self.pg_search_plugin_fields | ||
43 | + SEARCHABLE_SOFTWARE_CLASSES.collect { |one_class| | ||
44 | + self.get_searchable_fields(one_class) | ||
45 | + }.join(" || ' ' || ") | ||
46 | + end | ||
47 | + | ||
48 | + def self.get_searchable_fields one_class | ||
49 | + searchable_fields = one_class::SEARCHABLE_SOFTWARE_FIELDS.keys.map(&:to_s).sort.map {|f| "coalesce(#{one_class.table_name}.#{f}, '')"}.join(" || ' ' || ") | ||
50 | + searchable_fields | ||
51 | + end | ||
52 | + | ||
53 | + SEARCH_FILTERS = { | ||
54 | + :order => %w[], | ||
55 | + :display => %w[full] | ||
56 | + } | ||
57 | + | ||
58 | + def self.default_search_display | ||
59 | + 'full' | ||
60 | + end | ||
61 | + | ||
62 | + attr_accessible :e_mag, :icp_brasil, :intern, :e_ping, :e_arq, | ||
63 | + :operating_platform | ||
64 | + | ||
65 | + attr_accessible :demonstration_url, :acronym, :objectives, :features, | ||
66 | + :license_info | ||
67 | + | ||
68 | + attr_accessible :community_id, :finality, :repository_link, :public_software, | ||
69 | + :first_edit | ||
70 | + | ||
71 | + has_many :libraries, :dependent => :destroy | ||
72 | + has_many :software_databases | ||
73 | + has_many :database_descriptions, :through => :software_databases | ||
74 | + has_many :software_languages | ||
75 | + has_many :operating_systems | ||
76 | + has_many :programming_languages, :through => :software_languages | ||
77 | + has_many :operating_system_names, :through => :operating_systems | ||
78 | + | ||
79 | + belongs_to :community, :dependent => :destroy | ||
80 | + belongs_to :license_info | ||
81 | + | ||
82 | + has_one :software_categories | ||
83 | + | ||
84 | + validates_length_of :finality, :maximum => 120 | ||
85 | + validates_length_of :objectives, :maximum => 4000 | ||
86 | + validates_length_of :features, :maximum => 4000 | ||
87 | + validates_presence_of :finality | ||
88 | + | ||
89 | + validate :validate_acronym | ||
90 | + | ||
91 | + settings_items :another_license_version, :another_license_link | ||
92 | + | ||
93 | + # used on find_by_contents | ||
94 | + scope :like_search, lambda{ |name| | ||
95 | + joins(:community).where( | ||
96 | + "name ILIKE ? OR acronym ILIKE ? OR finality ILIKE ?", | ||
97 | + "%#{name}%", "%#{name}%", "%#{name}%" | ||
98 | + ) | ||
99 | + } | ||
100 | + | ||
101 | + scope :search, lambda { |name="", database_description_id = "", | ||
102 | + programming_language_id = "", operating_system_name_id = "", | ||
103 | + license_info_id = "", e_ping = "", e_mag = "", internacionalizable = "", | ||
104 | + icp_brasil = "", e_arq = "", software_categories = "" | | ||
105 | + | ||
106 | + like_sql = "" | ||
107 | + values = [] | ||
108 | + | ||
109 | + unless name.blank? | ||
110 | + like_sql << "name ILIKE ? OR identifier ILIKE ? AND " | ||
111 | + values << "%#{name}%" << "%#{name}%" | ||
112 | + end | ||
113 | + | ||
114 | + like_sql = like_sql[0..like_sql.length-5] | ||
115 | + | ||
116 | + { | ||
117 | + :joins => [:community], | ||
118 | + :conditions=>[like_sql, *values] | ||
119 | + } | ||
120 | + } | ||
121 | + | ||
122 | + def license_info | ||
123 | + license = LicenseInfo.find_by_id self.license_info_id | ||
124 | + license_another = LicenseInfo.find_by_version("Another") | ||
125 | + | ||
126 | + if license_another && license.id == license_another.id | ||
127 | + LicenseInfo.new( | ||
128 | + :version => self.another_license_version, | ||
129 | + :link => self.another_license_link | ||
130 | + ) | ||
131 | + else | ||
132 | + license | ||
133 | + end | ||
134 | + end | ||
135 | + | ||
136 | + def another_license(version, link) | ||
137 | + license_another = LicenseInfo.find_by_version("Another") | ||
138 | + | ||
139 | + if license_another | ||
140 | + self.another_license_version = version | ||
141 | + self.another_license_link = link | ||
142 | + self.license_info = license_another | ||
143 | + self.save! | ||
144 | + end | ||
145 | + end | ||
146 | + | ||
147 | + def validate_name_lenght | ||
148 | + if self.community.name.size > 100 | ||
149 | + self.errors.add( | ||
150 | + :base, | ||
151 | + _("Name is too long (maximum is %{count} characters)") | ||
152 | + ) | ||
153 | + false | ||
154 | + end | ||
155 | + true | ||
156 | + end | ||
157 | + | ||
158 | + # if create_after_moderation receive a model object, would be possible to reuse core method | ||
159 | + def self.create_after_moderation(requestor, attributes = {}) | ||
160 | + environment = attributes.delete(:environment) | ||
161 | + name = attributes.delete(:name) | ||
162 | + identifier = attributes.delete(:identifier) | ||
163 | + image_builder = attributes.delete(:image_builder) | ||
164 | + license_info = attributes.delete(:license_info) | ||
165 | + another_license_version = attributes.delete(:another_license_version) | ||
166 | + another_license_link = attributes.delete(:another_license_link) | ||
167 | + | ||
168 | + software_info = SoftwareInfo.new(attributes) | ||
169 | + if !environment.admins.include? requestor | ||
170 | + CreateSoftware.create!( | ||
171 | + attributes.merge( | ||
172 | + :requestor => requestor, | ||
173 | + :environment => environment, | ||
174 | + :name => name, | ||
175 | + :license_info => license_info | ||
176 | + ) | ||
177 | + ) | ||
178 | + else | ||
179 | + software_template = Community["software"] | ||
180 | + | ||
181 | + community_hash = {:name => name} | ||
182 | + community_hash[:identifier] = identifier | ||
183 | + community_hash[:image_builder] = image_builder if image_builder | ||
184 | + | ||
185 | + community = Community.new(community_hash) | ||
186 | + community.environment = environment | ||
187 | + | ||
188 | + if (!software_template.blank? && software_template.is_template) | ||
189 | + community.template_id = software_template.id | ||
190 | + end | ||
191 | + | ||
192 | + software_info.license_info = license_info | ||
193 | + software_info.save | ||
194 | + community.software_info = software_info | ||
195 | + community.save! | ||
196 | + community.add_admin(requestor) | ||
197 | + end | ||
198 | + | ||
199 | + software_info.verify_license_info(another_license_version, another_license_link) | ||
200 | + software_info.save! | ||
201 | + software_info | ||
202 | + end | ||
203 | + | ||
204 | + def verify_license_info another_license_version, another_license_link | ||
205 | + license_another = LicenseInfo.find_by_version("Another") | ||
206 | + | ||
207 | + if license_another && self.license_info_id == license_another.id | ||
208 | + version = another_license_version | ||
209 | + link = another_license_link | ||
210 | + | ||
211 | + self.another_license(version, link) | ||
212 | + end | ||
213 | + end | ||
214 | + | ||
215 | + | ||
216 | + def validate_acronym | ||
217 | + self.acronym = "" if self.acronym.nil? | ||
218 | + if self.acronym.length > 10 && self.errors.messages[:acronym].nil? | ||
219 | + self.errors.add(:acronym, _("can't have more than 10 characteres")) | ||
220 | + false | ||
221 | + elsif self.acronym.match(/\s+/) | ||
222 | + self.errors.add(:acronym, _("can't have whitespaces")) | ||
223 | + false | ||
224 | + end | ||
225 | + true | ||
226 | + end | ||
227 | + | ||
228 | + def valid_operating_systems | ||
229 | + if self.operating_systems.empty? | ||
230 | + self.errors.add(:operating_system, _(": at least one must be filled")) | ||
231 | + end | ||
232 | + end | ||
233 | + | ||
234 | + def valid_software_info | ||
235 | + if self.software_languages.empty? | ||
236 | + self.errors.add(:software_languages, _(": at least one must be filled")) | ||
237 | + end | ||
238 | + end | ||
239 | + | ||
240 | + def valid_databases | ||
241 | + if self.software_databases.empty? | ||
242 | + self.errors.add(:software_databases, _(": at least one must be filled")) | ||
243 | + end | ||
244 | + end | ||
245 | + | ||
246 | + def visible? | ||
247 | + self.community.visible? | ||
248 | + end | ||
249 | + | ||
250 | + def name | ||
251 | + self.community.name | ||
252 | + end | ||
253 | + | ||
254 | + def short_name | ||
255 | + self.community.short_name | ||
256 | + end | ||
257 | + | ||
258 | + def identifier | ||
259 | + self.community.identifier | ||
260 | + end | ||
261 | +end |
src/software_communities/lib/software_information_block.rb
0 → 100644
@@ -0,0 +1,37 @@ | @@ -0,0 +1,37 @@ | ||
1 | +class SoftwareInformationBlock < Block | ||
2 | + | ||
3 | + attr_accessible :show_name | ||
4 | + | ||
5 | + settings_items :show_name, :type => :boolean, :default => false | ||
6 | + | ||
7 | + def self.description | ||
8 | + _('Basic Software Information') | ||
9 | + end | ||
10 | + | ||
11 | + def help | ||
12 | + _('This block displays the basic information of a software profile.') | ||
13 | + end | ||
14 | + | ||
15 | + def content(args={}) | ||
16 | + block = self | ||
17 | + s = show_name | ||
18 | + | ||
19 | + lambda do |object| | ||
20 | + render( | ||
21 | + :file => 'blocks/software_information', | ||
22 | + :locals => { :block => block, :show_name => s} | ||
23 | + ) | ||
24 | + end | ||
25 | + end | ||
26 | + | ||
27 | + def cacheable? | ||
28 | + false | ||
29 | + end | ||
30 | + | ||
31 | + private | ||
32 | + | ||
33 | + def owner_has_ratings? | ||
34 | + ratings = CommunityRating.where(community_id: block.owner.id) | ||
35 | + !ratings.empty? | ||
36 | + end | ||
37 | +end |
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +class SoftwareLanguage < ActiveRecord::Base | ||
2 | + attr_accessible :version | ||
3 | + | ||
4 | + belongs_to :software_info | ||
5 | + belongs_to :programming_language | ||
6 | + | ||
7 | + validates_length_of( | ||
8 | + :version, | ||
9 | + :maximum => 20, | ||
10 | + :too_long => _("Software language is too long (maximum is 20 characters)") | ||
11 | + ) | ||
12 | + | ||
13 | + validates_presence_of :version,:programming_language | ||
14 | +end |
src/software_communities/lib/software_language_helper.rb
0 → 100644
@@ -0,0 +1,85 @@ | @@ -0,0 +1,85 @@ | ||
1 | +class SoftwareLanguageHelper < DynamicTableHelper | ||
2 | + MODEL_NAME ="language" | ||
3 | + FIELD_NAME = "programming_language_id" | ||
4 | + | ||
5 | + def self.valid_language? language | ||
6 | + return false if SoftwareHelper.all_table_is_empty?(language) | ||
7 | + | ||
8 | + programming_language_id_list = ProgrammingLanguage. | ||
9 | + select(:id). | ||
10 | + collect { |dd| dd.id } | ||
11 | + | ||
12 | + return programming_language_id_list.include?( | ||
13 | + language[:programming_language_id].to_i | ||
14 | + ) | ||
15 | + end | ||
16 | + | ||
17 | + def self.list_language new_languages | ||
18 | + return [] if new_languages.nil? or new_languages.length == 0 | ||
19 | + list_languages = [] | ||
20 | + | ||
21 | + new_languages.each do |new_language| | ||
22 | + if valid_language? new_language | ||
23 | + language = SoftwareLanguage.new | ||
24 | + language.programming_language = | ||
25 | + ProgrammingLanguage.find(new_language[:programming_language_id]) | ||
26 | + language.version = new_language[:version] | ||
27 | + list_languages << language | ||
28 | + end | ||
29 | + end | ||
30 | + | ||
31 | + list_languages | ||
32 | + end | ||
33 | + | ||
34 | + def self.valid_list_language? list_languages | ||
35 | + return false if list_languages.nil? or list_languages.length == 0 | ||
36 | + | ||
37 | + list_languages.each do |language| | ||
38 | + return false unless language.valid? | ||
39 | + end | ||
40 | + | ||
41 | + true | ||
42 | + end | ||
43 | + | ||
44 | + def self.language_as_tables(list_languages, disabled=false) | ||
45 | + model_list = list_languages | ||
46 | + model_list ||= [{:programming_language_id => "", :version => ""}] | ||
47 | + | ||
48 | + models_as_tables model_list, "language_html_structure", disabled | ||
49 | + end | ||
50 | + | ||
51 | + def self.language_html_structure(language_data, disabled) | ||
52 | + language_id = language_data[:programming_language_id] | ||
53 | + language_name = if language_data[:programming_language_id].blank? | ||
54 | + "" | ||
55 | + else | ||
56 | + ProgrammingLanguage.find( | ||
57 | + language_data[:programming_language_id], | ||
58 | + :select=>"name" | ||
59 | + ).name | ||
60 | + end | ||
61 | + | ||
62 | + data = { | ||
63 | + model_name: MODEL_NAME, | ||
64 | + field_name: FIELD_NAME, | ||
65 | + name: { | ||
66 | + value: language_name, | ||
67 | + id: language_id, | ||
68 | + hidden: true, | ||
69 | + autocomplete: true, | ||
70 | + select_field: false | ||
71 | + }, | ||
72 | + version: { | ||
73 | + value: language_data[:version], | ||
74 | + hidden: true, | ||
75 | + delete: true | ||
76 | + } | ||
77 | + } | ||
78 | + DATA[:license].delete(:value) | ||
79 | + table_html_structure(data, disabled) | ||
80 | + end | ||
81 | + | ||
82 | + def self.add_dynamic_table | ||
83 | + language_as_tables(nil).first.call | ||
84 | + end | ||
85 | +end |
@@ -0,0 +1,48 @@ | @@ -0,0 +1,48 @@ | ||
1 | +class SoftwareTabDataBlock < Block | ||
2 | + attr_accessible :show_name, :displayed_blog | ||
3 | + | ||
4 | + settings_items :show_name, :type => :boolean, :default => false | ||
5 | + settings_items :displayed_blog, :type => :integer, :default => 0 | ||
6 | + | ||
7 | + TOTAL_POSTS_DYSPLAYED = 5 | ||
8 | + | ||
9 | + def self.description | ||
10 | + _('Software Tab Data') | ||
11 | + end | ||
12 | + | ||
13 | + def help | ||
14 | + _('This block is used by colab to insert data into Noosfero') | ||
15 | + end | ||
16 | + | ||
17 | + def content(args={}) | ||
18 | + block = self | ||
19 | + | ||
20 | + lambda do |object| | ||
21 | + render( | ||
22 | + :file => 'blocks/software_tab_data', | ||
23 | + :locals => { | ||
24 | + :block => block | ||
25 | + } | ||
26 | + ) | ||
27 | + end | ||
28 | + end | ||
29 | + | ||
30 | + def blogs | ||
31 | + self.owner.blogs | ||
32 | + end | ||
33 | + | ||
34 | + def actual_blog | ||
35 | + # As :displayed_blog default value is 0, it falls to the first one | ||
36 | + blogs.find_by_id(self.displayed_blog) || blogs.first | ||
37 | + end | ||
38 | + | ||
39 | + def posts | ||
40 | + blog = actual_blog | ||
41 | + | ||
42 | + if blog and (not blog.posts.empty?) | ||
43 | + blog.posts.limit(TOTAL_POSTS_DYSPLAYED) | ||
44 | + else | ||
45 | + [] | ||
46 | + end | ||
47 | + end | ||
48 | +end |
@@ -0,0 +1,105 @@ | @@ -0,0 +1,105 @@ | ||
1 | +class SoftwaresBlock < CommunitiesBlock | ||
2 | + | ||
3 | + settings_items :software_type, :default => "All" | ||
4 | + attr_accessible :accessor_id, :accessor_type, :role_id, | ||
5 | + :resource_id, :resource_type, :software_type | ||
6 | + | ||
7 | + def self.description | ||
8 | + _('Softwares') | ||
9 | + end | ||
10 | + | ||
11 | + def default_title | ||
12 | + if self.software_type == "Generic" | ||
13 | + return n_('{#} generic software', '{#} generic softwares', profile_count) | ||
14 | + elsif self.software_type == "Public" | ||
15 | + return n_('{#} public software', '{#} public softwares', profile_count) | ||
16 | + else | ||
17 | + return n_('{#} software', '{#} softwares', profile_count) | ||
18 | + end | ||
19 | + end | ||
20 | + | ||
21 | + def help | ||
22 | + _('This block displays the softwares in which the user is a member.') | ||
23 | + end | ||
24 | + | ||
25 | + def footer | ||
26 | + self.software_type ||= "All" | ||
27 | + owner = self.owner | ||
28 | + case owner | ||
29 | + when Profile | ||
30 | + lambda do |context| | ||
31 | + link_to s_('softwares|View all'), :profile => owner.identifier, | ||
32 | + :controller => 'profile', :action => 'communities', | ||
33 | + :type => 'Software' | ||
34 | + end | ||
35 | + when Environment | ||
36 | + lambda do |context| | ||
37 | + link_to s_('softwares|View all'), :controller => 'search', | ||
38 | + :action => 'software_infos' | ||
39 | + end | ||
40 | + else | ||
41 | + '' | ||
42 | + end | ||
43 | + end | ||
44 | + | ||
45 | + def profile_count | ||
46 | + profile_list.count | ||
47 | + end | ||
48 | + | ||
49 | + def profiles | ||
50 | + owner.communities | ||
51 | + end | ||
52 | + | ||
53 | + def profile_list | ||
54 | + profiles = get_visible_profiles | ||
55 | + | ||
56 | + software_profiles = profiles.select do |profile| | ||
57 | + profile.class == Community && profile.software? | ||
58 | + end | ||
59 | + | ||
60 | + block_softwares = if self.software_type == "Public" | ||
61 | + software_profiles.select { |profile| profile.software_info.public_software? } | ||
62 | + elsif self.software_type == "Generic" | ||
63 | + software_profiles.select { |profile| !profile.software_info.public_software? } | ||
64 | + else # All | ||
65 | + software_profiles | ||
66 | + end | ||
67 | + | ||
68 | + block_softwares.slice(0..get_limit-1) | ||
69 | + end | ||
70 | + | ||
71 | + def content(arg={}) | ||
72 | + if self.box.owner_type == "Environment" && self.box.position == 1 | ||
73 | + block = self | ||
74 | + | ||
75 | + proc do | ||
76 | + render :file => 'blocks/main_area_softwares', | ||
77 | + :locals => {:profiles=> block.profile_list(), :block => block} | ||
78 | + end | ||
79 | + else | ||
80 | + super(arg) | ||
81 | + end | ||
82 | + end | ||
83 | + | ||
84 | + protected | ||
85 | + | ||
86 | + def get_visible_profiles | ||
87 | + profile_include_list = [:image, :domains, :preferred_domain, :environment] | ||
88 | + visible_profiles = profiles.visible.includes(profile_include_list) | ||
89 | + | ||
90 | + if !prioritize_profiles_with_image | ||
91 | + visible_profiles.all( :limit => get_limit, | ||
92 | + :order => 'profiles.updated_at DESC' | ||
93 | + ).sort_by{ rand } | ||
94 | + elsif profiles.visible.with_image.count >= get_limit | ||
95 | + visible_profiles.with_image.all( :limit => get_limit * 5, | ||
96 | + :order => 'profiles.updated_at DESC' | ||
97 | + ).sort_by{ rand } | ||
98 | + else | ||
99 | + visible_profiles.with_image.sort_by{ rand } + | ||
100 | + visible_profiles.without_image.all( :limit => get_limit * 5, | ||
101 | + :order => 'profiles.updated_at DESC' | ||
102 | + ).sort_by{ rand } | ||
103 | + end | ||
104 | + end | ||
105 | +end |
@@ -0,0 +1,52 @@ | @@ -0,0 +1,52 @@ | ||
1 | +class StatisticBlock < Block | ||
2 | + | ||
3 | + settings_items :benefited_people, :type => :integer, :default => 0 | ||
4 | + settings_items :saved_resources, :type => :float, :default => 0.0 | ||
5 | + | ||
6 | + attr_accessible :benefited_people, :saved_resources | ||
7 | + | ||
8 | + def self.description | ||
9 | + _('Software Statistics') | ||
10 | + end | ||
11 | + | ||
12 | + def help | ||
13 | + _('This block displays software statistics.') | ||
14 | + end | ||
15 | + | ||
16 | + def content(args={}) | ||
17 | + download_blocks = get_profile_download_blocks(self.owner) | ||
18 | + downloads = download_blocks.map do |download_block| | ||
19 | + get_downloads_from_block(download_block) | ||
20 | + end | ||
21 | + | ||
22 | + block = self | ||
23 | + | ||
24 | + lambda do |object| | ||
25 | + render( | ||
26 | + :file => 'blocks/software_statistics', | ||
27 | + :locals => { | ||
28 | + :block => block, | ||
29 | + :total_downloads => downloads.sum | ||
30 | + } | ||
31 | + ) | ||
32 | + end | ||
33 | + end | ||
34 | + | ||
35 | + def cacheable? | ||
36 | + false | ||
37 | + end | ||
38 | + | ||
39 | + private | ||
40 | + | ||
41 | + def get_profile_download_blocks profile | ||
42 | + DownloadBlock.joins(:box).where("boxes.owner_id = ?", profile.id) | ||
43 | + end | ||
44 | + | ||
45 | + def get_downloads_from_block download_block | ||
46 | + downloads = download_block.downloads.map do |download| | ||
47 | + download[:total_downloads] unless download[:total_downloads].nil? | ||
48 | + end | ||
49 | + downloads.select! {|value| not value.nil? } | ||
50 | + downloads.sum | ||
51 | + end | ||
52 | +end |
src/software_communities/lib/tasks/create_categories.rake
0 → 100644
@@ -0,0 +1,20 @@ | @@ -0,0 +1,20 @@ | ||
1 | +namespace :software do | ||
2 | + desc "Create software categories" | ||
3 | + task :create_categories => :environment do | ||
4 | + Environment.all.each do |env| | ||
5 | + if env.plugin_enabled?("SoftwareCommunitiesPlugin") or env.plugin_enabled?("SoftwareCommunities") | ||
6 | + print 'Creating categories: ' | ||
7 | + software = Category.create(:name => _("Software"), :environment => env) | ||
8 | + Category::SOFTWARE_CATEGORIES.each do |category_name| | ||
9 | + unless Category.find_by_name(category_name) | ||
10 | + print '.' | ||
11 | + Category.create(:name => category_name, :environment => env, :parent => software) | ||
12 | + else | ||
13 | + print 'F' | ||
14 | + end | ||
15 | + end | ||
16 | + puts '' | ||
17 | + end | ||
18 | + end | ||
19 | + end | ||
20 | +end |
@@ -0,0 +1,42 @@ | @@ -0,0 +1,42 @@ | ||
1 | +namespace :software do | ||
2 | + desc "Create software licences" | ||
3 | + | ||
4 | + task :create_licenses => :environment do | ||
5 | + Environment.all.each do |env| | ||
6 | + if env.plugin_enabled?("SoftwareCommunitiesPlugin") or env.plugin_enabled?("SoftwareCommunities") | ||
7 | + list_file = File.open "plugins/software_communities/public/static/licences.txt", "r" | ||
8 | + | ||
9 | + version_or_link = 'version' | ||
10 | + can_save = true | ||
11 | + licence = nil | ||
12 | + | ||
13 | + print 'Creating Licenses: ' | ||
14 | + list_file.each_line do |line| | ||
15 | + data = line.strip | ||
16 | + | ||
17 | + if data.length != 0 | ||
18 | + if version_or_link == 'version' | ||
19 | + can_save = LicenseInfo.find_by_version(data) ? false : true | ||
20 | + licence = LicenseInfo::new :version => data | ||
21 | + version_or_link = 'link' | ||
22 | + elsif version_or_link == 'link' | ||
23 | + licence.link = data | ||
24 | + | ||
25 | + if can_save | ||
26 | + licence.save! | ||
27 | + print '.' | ||
28 | + else | ||
29 | + print 'F' | ||
30 | + end | ||
31 | + | ||
32 | + version_or_link = 'version' | ||
33 | + end | ||
34 | + end | ||
35 | + end | ||
36 | + puts '' | ||
37 | + | ||
38 | + list_file.close | ||
39 | + end | ||
40 | + end | ||
41 | + end | ||
42 | +end |
src/software_communities/lib/tasks/create_sample_softwares.rake
0 → 100644
@@ -0,0 +1,71 @@ | @@ -0,0 +1,71 @@ | ||
1 | +NUMBER_OF_SOFTWARES = 10 | ||
2 | + | ||
3 | +namespace :software do | ||
4 | + desc "Create sample softwares" | ||
5 | + task :create_sample_softwares => :environment do | ||
6 | + Environment.all.each do |env| | ||
7 | + if env.plugin_enabled?("SoftwareCommunitiesPlugin") or env.plugin_enabled?("SoftwareCommunities") | ||
8 | + print "Creating softwares: " | ||
9 | + | ||
10 | + NUMBER_OF_SOFTWARES.times do |i| | ||
11 | + number = i < 10 ? "0#{i}" : "#{i}" | ||
12 | + software_name = "Software #{number}" | ||
13 | + create_software_info(software_name) | ||
14 | + end | ||
15 | + | ||
16 | + create_software_info("Ubuntu") | ||
17 | + create_software_info("Debian") | ||
18 | + create_software_info("Windows XP") | ||
19 | + create_software_info("Windows Vista") | ||
20 | + create_software_info("Windows 7") | ||
21 | + create_software_info("Windows 8") | ||
22 | + create_software_info("Disk Operating System", "DOS") | ||
23 | + create_software_info("Sublime") | ||
24 | + create_software_info("Vi IMproved", "Vim") | ||
25 | + create_software_info("Nano") | ||
26 | + create_software_info("Gedit") | ||
27 | + create_software_info("Firefox") | ||
28 | + create_software_info("InkScape") | ||
29 | + create_software_info("Eclipse") | ||
30 | + create_software_info("LibreOffice") | ||
31 | + create_software_info("Tetris") | ||
32 | + create_software_info("Mario") | ||
33 | + create_software_info("Pong") | ||
34 | + create_software_info("Sonic") | ||
35 | + create_software_info("Astah") | ||
36 | + create_software_info("Pokemom Red") | ||
37 | + create_software_info("Mass Effect") | ||
38 | + create_software_info("Deus EX") | ||
39 | + create_software_info("Dragon Age") | ||
40 | + | ||
41 | + puts "" | ||
42 | + end | ||
43 | + end | ||
44 | + end | ||
45 | +end | ||
46 | + | ||
47 | +def create_community(name) | ||
48 | + community = Community.new | ||
49 | + community.name = name | ||
50 | + community.save | ||
51 | + community | ||
52 | +end | ||
53 | + | ||
54 | +def create_software_info(name, acronym = "", finality = "default") | ||
55 | + community = create_community(name) | ||
56 | + software_info = SoftwareInfo.new | ||
57 | + software_info.community = community | ||
58 | + software_info.public_software = true | ||
59 | + software_info.acronym = acronym | ||
60 | + software_info.finality = finality | ||
61 | + software_info.license_info = LicenseInfo.first | ||
62 | + | ||
63 | + if software_info.community.valid? && software_info.valid? | ||
64 | + print "." | ||
65 | + software_info.save | ||
66 | + software_info | ||
67 | + else | ||
68 | + print "F" | ||
69 | + nil | ||
70 | + end | ||
71 | +end |
@@ -0,0 +1,133 @@ | @@ -0,0 +1,133 @@ | ||
1 | +require 'csv' | ||
2 | + | ||
3 | +namespace :export do | ||
4 | + namespace :catalog do | ||
5 | + desc "Export all softwares to CSV" | ||
6 | + task :csv => :environment do | ||
7 | + Environment.all.each do |env| | ||
8 | + if env.plugin_enabled?("MpogSoftware") or env.plugin_enabled?("SoftwareCommunitiesPlugin") | ||
9 | + softwares_to_csv | ||
10 | + categories_to_csv | ||
11 | + software_categories_to_csv | ||
12 | + | ||
13 | + compress_files | ||
14 | + end | ||
15 | + end | ||
16 | + end | ||
17 | + end | ||
18 | + | ||
19 | + def softwares_to_csv | ||
20 | + print "Exporting softwares to softwares.csv: " | ||
21 | + | ||
22 | + CSV.open('/tmp/softwares.csv', 'w') do |csv| | ||
23 | + csv << [ | ||
24 | + "id", | ||
25 | + "community_id", | ||
26 | + "identifier", | ||
27 | + "name", | ||
28 | + "finality", | ||
29 | + "acronym", | ||
30 | + "created_at", | ||
31 | + "image_filename", | ||
32 | + "home_page_name", | ||
33 | + "home_page_slug", | ||
34 | + "home_page_path", | ||
35 | + "home_page_body", | ||
36 | + "home_page_abstract", | ||
37 | + "home_page_published_at" | ||
38 | + ] | ||
39 | + | ||
40 | + SoftwareInfo.all.each do |software| | ||
41 | + if software.community | ||
42 | + begin | ||
43 | + csv << [ | ||
44 | + software.id, | ||
45 | + software.community.id, | ||
46 | + software.community.identifier, | ||
47 | + software.community.name, | ||
48 | + software.finality, | ||
49 | + software.acronym, | ||
50 | + software.community.created_at, | ||
51 | + (software.community.image.nil? ? nil : software.community.image.filename), | ||
52 | + (software.community.home_page.nil? ? nil : software.community.home_page.name), | ||
53 | + (software.community.home_page.nil? ? nil : software.community.home_page.slug), | ||
54 | + (software.community.home_page.nil? ? nil : software.community.home_page.path), | ||
55 | + (software.community.home_page.nil? ? nil : software.community.home_page.body), | ||
56 | + (software.community.home_page.nil? ? nil : software.community.home_page.abstract), | ||
57 | + (software.community.home_page.nil? ? nil : software.community.home_page.published_at), | ||
58 | + ] | ||
59 | + | ||
60 | + print '.' | ||
61 | + rescue | ||
62 | + print 'F' | ||
63 | + end | ||
64 | + end | ||
65 | + end | ||
66 | + end | ||
67 | + | ||
68 | + print "\n" | ||
69 | + end | ||
70 | + | ||
71 | + def categories_to_csv | ||
72 | + print "Exporting categories to categories.csv: " | ||
73 | + | ||
74 | + CSV.open('/tmp/categories.csv', 'w') do |csv| | ||
75 | + csv << [ | ||
76 | + "id", | ||
77 | + "name", | ||
78 | + "path", | ||
79 | + ] | ||
80 | + | ||
81 | + Category.all.each do |category| | ||
82 | + begin | ||
83 | + csv << [ | ||
84 | + category.id, | ||
85 | + category.name, | ||
86 | + category.path, | ||
87 | + ] | ||
88 | + | ||
89 | + print '.' | ||
90 | + rescue | ||
91 | + print 'F' | ||
92 | + end | ||
93 | + end | ||
94 | + end | ||
95 | + | ||
96 | + print "\n" | ||
97 | + end | ||
98 | + | ||
99 | + def software_categories_to_csv | ||
100 | + print "Exporting software and categories relation to software_categories.csv: " | ||
101 | + CSV.open('/tmp/software_categories.csv', 'w') do |csv| | ||
102 | + csv << [ | ||
103 | + "software_id", | ||
104 | + "category_id" | ||
105 | + ] | ||
106 | + | ||
107 | + SoftwareInfo.all.each do |software| | ||
108 | + if software.community | ||
109 | + software.community.categories.each do |category| | ||
110 | + begin | ||
111 | + csv << [ | ||
112 | + software.id, | ||
113 | + category.id | ||
114 | + ] | ||
115 | + | ||
116 | + print '.' | ||
117 | + rescue | ||
118 | + print 'F' | ||
119 | + end | ||
120 | + end | ||
121 | + end | ||
122 | + end | ||
123 | + end | ||
124 | + | ||
125 | + print "\n" | ||
126 | + end | ||
127 | + | ||
128 | + def compress_files | ||
129 | + `cd /tmp/ && tar -zcvf software_catalog_csvs.tar.gz softwares.csv categories.csv software_categories.csv` | ||
130 | + | ||
131 | + `cd /tmp/ && rm softwares.csv categories.csv software_categories.csv` | ||
132 | + end | ||
133 | +end | ||
0 | \ No newline at end of file | 134 | \ No newline at end of file |
@@ -0,0 +1,18 @@ | @@ -0,0 +1,18 @@ | ||
1 | +#!/bin/env ruby | ||
2 | +# encoding: utf-8 | ||
3 | + | ||
4 | +namespace :main_data do | ||
5 | + desc "Create the main community and its contents" | ||
6 | + task :populate => :environment do | ||
7 | + Rake::Task["templates:create:all"].invoke | ||
8 | + Rake::Task["software:create_licenses"].invoke | ||
9 | + Rake::Task["software:create_categories"].invoke | ||
10 | + Rake::Task["software:create_sample_softwares"].invoke | ||
11 | + end | ||
12 | + | ||
13 | + desc "Create the main community and its contents" | ||
14 | + task :all => :environment do | ||
15 | + Rake::Task["templates:destroy"].invoke | ||
16 | + Rake::Task["main_data:populate"].invoke | ||
17 | + end | ||
18 | +end |
@@ -0,0 +1,42 @@ | @@ -0,0 +1,42 @@ | ||
1 | +#!/bin/env ruby | ||
2 | +# encoding: utf-8 | ||
3 | + | ||
4 | +namespace :templates do | ||
5 | + namespace :create do | ||
6 | + | ||
7 | + desc "Create new templates of software, intitution, person and community" | ||
8 | + task :all => :environment do | ||
9 | + Rake::Task["templates:create:software"].invoke | ||
10 | + end | ||
11 | + | ||
12 | + desc "Create new templates of software" | ||
13 | + task :software => :environment do | ||
14 | + Environment.all.each do |env| | ||
15 | + if env.plugin_enabled?("MpogSoftware") or env.plugin_enabled?("SoftwareCommunitiesPlugin") | ||
16 | + software = Community["software"] | ||
17 | + | ||
18 | + if software.nil? | ||
19 | + software = Community.create!(:name => "Software", :identifier => "software") | ||
20 | + end | ||
21 | + | ||
22 | + software.layout_template = "default" | ||
23 | + software.is_template = true | ||
24 | + software.save! | ||
25 | + | ||
26 | + puts "Software Template successfully created!" | ||
27 | + end | ||
28 | + end | ||
29 | + end | ||
30 | + end | ||
31 | + | ||
32 | + desc "Destroy all templates created by this namespace" | ||
33 | + task :destroy => :environment do | ||
34 | + Environment.all.each do |env| | ||
35 | + if env.plugin_enabled?("MpogSoftware") or env.plugin_enabled?("SoftwareCommunitiesPlugin") | ||
36 | + Community["software"].destroy unless Community["software"].nil? | ||
37 | + puts "Software template destoyed with success!" | ||
38 | + end | ||
39 | + end | ||
40 | + end | ||
41 | + | ||
42 | +end |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +class WikiBlock < Block | ||
2 | + | ||
3 | + attr_accessible :show_name, :wiki_link | ||
4 | + settings_items :show_name, :type => :boolean, :default => false | ||
5 | + settings_items :wiki_link, :type => :string, :default => "" | ||
6 | + | ||
7 | + def self.description | ||
8 | + _('Wiki Link') | ||
9 | + end | ||
10 | + | ||
11 | + def help | ||
12 | + _('This block displays a link to the software wiki.') | ||
13 | + end | ||
14 | + | ||
15 | + def content(args={}) | ||
16 | + block = self | ||
17 | + s = show_name | ||
18 | + | ||
19 | + lambda do |object| | ||
20 | + render( | ||
21 | + :file => 'blocks/wiki', | ||
22 | + :locals => { :block => block, :show_name => s } | ||
23 | + ) | ||
24 | + end | ||
25 | + end | ||
26 | + | ||
27 | + def cacheable? | ||
28 | + true | ||
29 | + end | ||
30 | +end |
@@ -0,0 +1,1361 @@ | @@ -0,0 +1,1361 @@ | ||
1 | +# SOME DESCRIPTIVE TITLE. | ||
2 | +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
3 | +# This file is distributed under the same license as the PACKAGE package. | ||
4 | +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
5 | +# | ||
6 | +msgid "" | ||
7 | +msgstr "" | ||
8 | +"Project-Id-Version: 1.2.1+spb4-2-ged0502e\n" | ||
9 | +"POT-Creation-Date: 2015-09-14 14:29-0300\n" | ||
10 | +"PO-Revision-Date: 2014-11-12 13:05-0000\n" | ||
11 | +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
12 | +"Language-Team: LANGUAGE <LL@li.org>\n" | ||
13 | +"Language: \n" | ||
14 | +"MIME-Version: 1.0\n" | ||
15 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
16 | +"Content-Transfer-Encoding: 8bit\n" | ||
17 | +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" | ||
18 | + | ||
19 | +#: plugins/software_communities/lib/search_catalog_block.rb:8 | ||
20 | +msgid "Search Softwares catalog" | ||
21 | +msgstr "Busca do catálogo de software" | ||
22 | + | ||
23 | +#: plugins/software_communities/lib/search_catalog_block.rb:12 | ||
24 | +msgid "This block displays the search categories field " | ||
25 | +msgstr "Este bloco apresenta a busca do campo de categorias" | ||
26 | + | ||
27 | +#: plugins/software_communities/lib/ext/category.rb:5 | ||
28 | +msgid "Agriculture, Fisheries and Extraction" | ||
29 | +msgstr "Agricultura, Extrativismo e Pesca" | ||
30 | + | ||
31 | +#: plugins/software_communities/lib/ext/category.rb:6 | ||
32 | +msgid "Science, Information and Communication" | ||
33 | +msgstr "Ciência, Informação e Comunicação " | ||
34 | + | ||
35 | +#: plugins/software_communities/lib/ext/category.rb:7 | ||
36 | +msgid "Economy and Finances" | ||
37 | +msgstr "Economia e Finanças" | ||
38 | + | ||
39 | +#: plugins/software_communities/lib/ext/category.rb:8 | ||
40 | +msgid "Public Administration" | ||
41 | +msgstr "Gestão Pública" | ||
42 | + | ||
43 | +#: plugins/software_communities/lib/ext/category.rb:9 | ||
44 | +msgid "Habitation, Sanitation and Urbanism" | ||
45 | +msgstr "Habitação, Saneamento e Urbanismo" | ||
46 | + | ||
47 | +#: plugins/software_communities/lib/ext/category.rb:10 | ||
48 | +msgid "Individual, Family and Society" | ||
49 | +msgstr "Pessoa, Família e Sociedade " | ||
50 | + | ||
51 | +#: plugins/software_communities/lib/ext/category.rb:11 | ||
52 | +msgid "Health" | ||
53 | +msgstr "Saúde" | ||
54 | + | ||
55 | +#: plugins/software_communities/lib/ext/category.rb:12 | ||
56 | +msgid "Social Welfare and Development" | ||
57 | +msgstr "Bem-estar e Desenvolvimento Social" | ||
58 | + | ||
59 | +#: plugins/software_communities/lib/ext/category.rb:13 | ||
60 | +msgid "Defense and Security" | ||
61 | +msgstr "Defesa e Segurança" | ||
62 | + | ||
63 | +#: plugins/software_communities/lib/ext/category.rb:14 | ||
64 | +msgid "Education" | ||
65 | +msgstr "Educação" | ||
66 | + | ||
67 | +#: plugins/software_communities/lib/ext/category.rb:15 | ||
68 | +msgid "Government and Politics" | ||
69 | +msgstr "Governo e Política" | ||
70 | + | ||
71 | +#: plugins/software_communities/lib/ext/category.rb:16 | ||
72 | +msgid "Justice and Legislation" | ||
73 | +msgstr "Justiça e Legislação" | ||
74 | + | ||
75 | +#: plugins/software_communities/lib/ext/category.rb:17 | ||
76 | +msgid "International Relationships" | ||
77 | +msgstr "Relações Internacionais" | ||
78 | + | ||
79 | +#: plugins/software_communities/lib/ext/category.rb:18 | ||
80 | +msgid "Transportation and Transit" | ||
81 | +msgstr "Transporte e Trânsito" | ||
82 | + | ||
83 | +#: plugins/software_communities/lib/ext/search_controller.rb:118 | ||
84 | +msgid "Result Search" | ||
85 | +msgstr "Resultado da pesquisa" | ||
86 | + | ||
87 | +#: plugins/software_communities/lib/ext/search_controller.rb:142 | ||
88 | +msgid "Selected options: " | ||
89 | +msgstr "Opções selecionadas:" | ||
90 | + | ||
91 | +#: plugins/software_communities/lib/repository_block.rb:8 | ||
92 | +msgid "Repository Link" | ||
93 | +msgstr "Link para o Repositório" | ||
94 | + | ||
95 | +#: plugins/software_communities/lib/repository_block.rb:12 | ||
96 | +msgid "This block displays the repository link of a software." | ||
97 | +msgstr "Este bloco apresenta o link para o repositório do software." | ||
98 | + | ||
99 | +#: plugins/software_communities/lib/wiki_block.rb:8 | ||
100 | +msgid "Wiki Link" | ||
101 | +msgstr "Link da wiki" | ||
102 | + | ||
103 | +#: plugins/software_communities/lib/wiki_block.rb:12 | ||
104 | +msgid "This block displays a link to the software wiki." | ||
105 | +msgstr "Este bloco apresenta o link para a wiki do software." | ||
106 | + | ||
107 | +#: plugins/software_communities/lib/statistic_block.rb:9 | ||
108 | +msgid "Software Statistics" | ||
109 | +msgstr "Estastísticas de software" | ||
110 | + | ||
111 | +#: plugins/software_communities/lib/statistic_block.rb:13 | ||
112 | +msgid "This block displays software statistics." | ||
113 | +msgstr "Este bloco apresenta a estatística de software" | ||
114 | + | ||
115 | +#: plugins/software_communities/lib/library.rb:5 | ||
116 | +msgid "can't be blank" | ||
117 | +msgstr "não pode ficar em branco" | ||
118 | + | ||
119 | +#: plugins/software_communities/lib/library.rb:8 | ||
120 | +msgid "Too long (maximum is 20 characters)" | ||
121 | +msgstr "Muito grande(máximo é 20 caracteres" | ||
122 | + | ||
123 | +#: plugins/software_communities/lib/software_info.rb:151 | ||
124 | +msgid "Name is too long (maximum is %{count} characters)" | ||
125 | +msgstr "Nome é muito longo(máximo é %{count} caracteres)" | ||
126 | + | ||
127 | +#: plugins/software_communities/lib/software_info.rb:219 | ||
128 | +msgid "can't have more than 10 characteres" | ||
129 | +msgstr "não pode ter mais de 10 caracteres" | ||
130 | + | ||
131 | +#: plugins/software_communities/lib/software_info.rb:222 | ||
132 | +msgid "can't have whitespaces" | ||
133 | +msgstr "não pode ter espaços em branco" | ||
134 | + | ||
135 | +#: plugins/software_communities/lib/software_info.rb:230 | ||
136 | +#: plugins/software_communities/lib/software_info.rb:236 | ||
137 | +#: plugins/software_communities/lib/software_info.rb:242 | ||
138 | +msgid ": at least one must be filled" | ||
139 | +msgstr ": ao menos um deve ser preenchido" | ||
140 | + | ||
141 | +#: plugins/software_communities/lib/dynamic_table_helper.rb:17 | ||
142 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:3 | ||
143 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:37 | ||
144 | +#: plugins/software_communities/views/box_organizer/_download_block.html.erb:3 | ||
145 | +#: plugins/software_communities/views/_main_software_editor_extras.html.erb:3 | ||
146 | +msgid "Name" | ||
147 | +msgstr "Nome" | ||
148 | + | ||
149 | +#: plugins/software_communities/lib/dynamic_table_helper.rb:18 | ||
150 | +msgid "Version" | ||
151 | +msgstr "Versão" | ||
152 | + | ||
153 | +#: plugins/software_communities/lib/dynamic_table_helper.rb:19 | ||
154 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:18 | ||
155 | +msgid "License" | ||
156 | +msgstr "Licença" | ||
157 | + | ||
158 | +#: plugins/software_communities/lib/dynamic_table_helper.rb:91 | ||
159 | +msgid "Autocomplete field, type something" | ||
160 | +msgstr "Campo automático, digite algo" | ||
161 | + | ||
162 | +#: plugins/software_communities/lib/dynamic_table_helper.rb:116 | ||
163 | +#: plugins/software_communities/views/box_organizer/_download_list_template.html.erb:8 | ||
164 | +#: plugins/software_communities/views/box_organizer/_download_list.html.erb:8 | ||
165 | +msgid "Delete" | ||
166 | +msgstr "Deletar" | ||
167 | + | ||
168 | +#: plugins/software_communities/lib/create_software.rb:36 | ||
169 | +msgid "New software" | ||
170 | +msgstr "Novo software" | ||
171 | + | ||
172 | +#: plugins/software_communities/lib/create_software.rb:44 | ||
173 | +msgid "%{requestor} wants to create software %{subject} with" | ||
174 | +msgstr "%{requestor} deseja criar o software %{subject} com" | ||
175 | + | ||
176 | +#: plugins/software_communities/lib/create_software.rb:46 | ||
177 | +msgid " no finality." | ||
178 | +msgstr " campo finalidade em branco." | ||
179 | + | ||
180 | +#: plugins/software_communities/lib/create_software.rb:48 | ||
181 | +msgid " this finality:<p><em>%{finality}</em></p>" | ||
182 | +msgstr " esta finalidade:<p><em>%{finality}</em></p>" | ||
183 | + | ||
184 | +#: plugins/software_communities/lib/create_software.rb:68 | ||
185 | +msgid "%{requestor} wants to create software %{subject}" | ||
186 | +msgstr "%{requestor} deseja criar o software %{subject}" | ||
187 | + | ||
188 | +#: plugins/software_communities/lib/create_software.rb:73 | ||
189 | +msgid "" | ||
190 | +"User \"%{user}\" just requested to create software %{software}.\n" | ||
191 | +" You have to approve or reject it through the \"Pending Validations\"\n" | ||
192 | +" section in your control panel.\n" | ||
193 | +msgstr "" | ||
194 | +"Usuário \"%{user}\" acabou de requisitar a criação do software %{software}.\n" | ||
195 | +" Você deve aprovar ou rejeitar pela seção \"Tarefas pendentes\"\n" | ||
196 | +" no seu painel de controle.\n" | ||
197 | + | ||
198 | +#: plugins/software_communities/lib/create_software.rb:80 | ||
199 | +msgid "" | ||
200 | +"Your request for registering software %{software} at %{environment} was\n" | ||
201 | +" just sent. Environment administrator will receive it and will approve " | ||
202 | +"or\n" | ||
203 | +" reject your request according to his methods and criteria.\n" | ||
204 | +"\n" | ||
205 | +" You will be notified as soon as environment administrator has a " | ||
206 | +"position\n" | ||
207 | +" about your request." | ||
208 | +msgstr "" | ||
209 | +"O seu pedido para registrar o software %{software} no %{environment} foi\n" | ||
210 | +" enviada. O administrador do ambiente irá recebe-la e aprovará ou rejeitará " | ||
211 | +"seu pedido de acordo com seus métodos e critérios.\n" | ||
212 | +"\n" | ||
213 | +" Você será notificado assim que o administrador do ambiente tiver uma " | ||
214 | +"resposta sobre o seu pedido." | ||
215 | + | ||
216 | +#: plugins/software_communities/lib/create_software.rb:90 | ||
217 | +msgid "" | ||
218 | +"Your request for registering software %{software} at %{environment} was\n" | ||
219 | +" not approved by the environment administrator. The following " | ||
220 | +"explanation\n" | ||
221 | +" was given: \n" | ||
222 | +"\n" | ||
223 | +"%{explanation}" | ||
224 | +msgstr "" | ||
225 | +"Seu pedido para registro do software %{software} no %{environment} não " | ||
226 | +"foi\n" | ||
227 | +" aprovado pelo administrador do ambiente. A seguinte explicação\n" | ||
228 | +" foi fornecida:\n" | ||
229 | +"\n" | ||
230 | +"%{explanation}" | ||
231 | + | ||
232 | +#: plugins/software_communities/lib/create_software.rb:99 | ||
233 | +msgid "" | ||
234 | +"Your request for registering the software \"%{software}\" was approved.\n" | ||
235 | +" You can access %{url} and finish the registration of your software." | ||
236 | +msgstr "" | ||
237 | +"Seu pedido para registro do software %{software} foi aprovada.\n" | ||
238 | +" Você pode acessar %{url} e finalizar o registro do seu software. " | ||
239 | + | ||
240 | +#: plugins/software_communities/lib/operating_system.rb:12 | ||
241 | +msgid "too long (maximum is 20 characters)" | ||
242 | +msgstr "muito longo(máximo é 20 caracteres)" | ||
243 | + | ||
244 | +#: plugins/software_communities/lib/software_highlights_block.rb:4 | ||
245 | +msgid "Software Highlights Block" | ||
246 | +msgstr "Bloco de software em destaque" | ||
247 | + | ||
248 | +#: plugins/software_communities/lib/software_highlights_block.rb:8 | ||
249 | +msgid "This block displays the softwares icon into a highlight" | ||
250 | +msgstr "Esse bloco apresenta o ícone do software em destaque" | ||
251 | + | ||
252 | +#: plugins/software_communities/lib/categories_software_block.rb:8 | ||
253 | +msgid "Categories Softwares" | ||
254 | +msgstr "Categorias de Softwares" | ||
255 | + | ||
256 | +#: plugins/software_communities/lib/categories_software_block.rb:12 | ||
257 | +msgid "" | ||
258 | +"This block displays the categories and the amount of softwares for\n" | ||
259 | +" each category." | ||
260 | +msgstr "" | ||
261 | +"Este bloco apresenta as categorias e a quantidade de softwares para \n" | ||
262 | +" cada categoria." | ||
263 | + | ||
264 | +#: plugins/software_communities/lib/softwares_block.rb:8 | ||
265 | +msgid "Softwares" | ||
266 | +msgstr "Softwares" | ||
267 | + | ||
268 | +#: plugins/software_communities/lib/softwares_block.rb:13 | ||
269 | +msgid "{#} generic software" | ||
270 | +msgid_plural "{#} generic softwares" | ||
271 | +msgstr[0] "{#} software genérico" | ||
272 | +msgstr[1] "{#} softwares genéricos" | ||
273 | + | ||
274 | +#: plugins/software_communities/lib/softwares_block.rb:15 | ||
275 | +msgid "{#} public software" | ||
276 | +msgid_plural "{#} public softwares" | ||
277 | +msgstr[0] "{#} software público" | ||
278 | +msgstr[1] "{#} software públicos" | ||
279 | + | ||
280 | +#: plugins/software_communities/lib/softwares_block.rb:17 | ||
281 | +msgid "{#} software" | ||
282 | +msgid_plural "{#} softwares" | ||
283 | +msgstr[0] "{#} software" | ||
284 | +msgstr[1] "{#} softwares" | ||
285 | + | ||
286 | +#: plugins/software_communities/lib/softwares_block.rb:22 | ||
287 | +msgid "This block displays the softwares in which the user is a member." | ||
288 | +msgstr "Este bloco apresenta os softwares em que o usuário é membro." | ||
289 | + | ||
290 | +#: plugins/software_communities/lib/softwares_block.rb:31 | ||
291 | +#: plugins/software_communities/lib/softwares_block.rb:37 | ||
292 | +msgid "softwares|View all" | ||
293 | +msgstr "softwares|Veja todos" | ||
294 | + | ||
295 | +#: plugins/software_communities/lib/software_communities_plugin.rb:17 | ||
296 | +msgid "Add Public Software and MPOG features." | ||
297 | +msgstr "Adicionar Software Público e Funcionalidades." | ||
298 | + | ||
299 | +#: plugins/software_communities/lib/software_communities_plugin.rb:90 | ||
300 | +msgid "Rate this software" | ||
301 | +msgstr "Avalie esse software" | ||
302 | + | ||
303 | +#: plugins/software_communities/lib/software_communities_plugin.rb:94 | ||
304 | +msgid "Use reports" | ||
305 | +msgstr "Relatos de uso" | ||
306 | + | ||
307 | +#: plugins/software_communities/lib/software_communities_plugin.rb:138 | ||
308 | +msgid "Software Info" | ||
309 | +msgstr "Informação de Software" | ||
310 | + | ||
311 | +#: plugins/software_communities/lib/software_communities_plugin.rb:149 | ||
312 | +msgid "Create a new software" | ||
313 | +msgstr "Criar um novo software" | ||
314 | + | ||
315 | +#: plugins/software_communities/lib/software_communities_plugin.rb:159 | ||
316 | +msgid "Software" | ||
317 | +msgstr "Software" | ||
318 | + | ||
319 | +#: plugins/software_communities/lib/software_language.rb:10 | ||
320 | +msgid "Software language is too long (maximum is 20 characters)" | ||
321 | +msgstr "Linguagem do software está muito grande (máximo de 20 caracteres)" | ||
322 | + | ||
323 | +#: plugins/software_communities/lib/software_tab_data_block.rb:10 | ||
324 | +msgid "Software Tab Data" | ||
325 | +msgstr "Aba de dados do software" | ||
326 | + | ||
327 | +#: plugins/software_communities/lib/software_tab_data_block.rb:14 | ||
328 | +msgid "This block is used by colab to insert data into Noosfero" | ||
329 | +msgstr "Esse bloco é usado pelo Colab para inserir dados no noosfero" | ||
330 | + | ||
331 | +#: plugins/software_communities/lib/download_block.rb:15 | ||
332 | +msgid "Download Stable Version" | ||
333 | +msgstr "Baixar Versão Estável" | ||
334 | + | ||
335 | +#: plugins/software_communities/lib/download_block.rb:19 | ||
336 | +msgid "This block displays the stable version of a software." | ||
337 | +msgstr "Este block apresenta a versão estável do software." | ||
338 | + | ||
339 | +#: plugins/software_communities/lib/software_database.rb:12 | ||
340 | +msgid "Software database is too long (maximum is 20 characters)" | ||
341 | +msgstr "Banco de dados do software está muito grande(máximo é 20 caracteres)" | ||
342 | + | ||
343 | +#: plugins/software_communities/lib/software_information_block.rb:8 | ||
344 | +msgid "Basic Software Information" | ||
345 | +msgstr "Informação Básica do Software" | ||
346 | + | ||
347 | +#: plugins/software_communities/lib/software_information_block.rb:12 | ||
348 | +msgid "This block displays the basic information of a software profile." | ||
349 | +msgstr "Este bloco apresenta a informação básica de um perfil de software." | ||
350 | + | ||
351 | +#: plugins/software_communities/lib/categories_and_tags_block.rb:8 | ||
352 | +msgid "Categories and Tags" | ||
353 | +msgstr "Categorias e Marcadores" | ||
354 | + | ||
355 | +#: plugins/software_communities/lib/categories_and_tags_block.rb:12 | ||
356 | +msgid "This block displays the categories and tags of a software." | ||
357 | +msgstr "Este block apresenta as categorias e marcadores de um software." | ||
358 | + | ||
359 | +#: plugins/software_communities/test/unit/software_info_validation_test.rb:108 | ||
360 | +msgid "Features is too long (maximum is 4000 characters)" | ||
361 | +msgstr "Funcionalidades está muito grande(máximo é 4000 caracteres)" | ||
362 | + | ||
363 | +#: plugins/software_communities/test/unit/software_info_validation_test.rb:116 | ||
364 | +msgid "Objectives is too long (maximum is 4000 characters)" | ||
365 | +msgstr "Objetivo está muito grande (máximo é 4000 caracteres)" | ||
366 | + | ||
367 | +#: plugins/software_communities/controllers/software_communities_plugin_myprofile_controller.rb:41 | ||
368 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/edit_software.html.erb:19 | ||
369 | +msgid "Save and Configure Community" | ||
370 | +msgstr "Salvar e Configurar Comunidade" | ||
371 | + | ||
372 | +#: plugins/software_communities/controllers/software_communities_plugin_myprofile_controller.rb:45 | ||
373 | +msgid "Software updated successfully" | ||
374 | +msgstr "Software atualizado com sucesso" | ||
375 | + | ||
376 | +#: plugins/software_communities/controllers/software_communities_plugin_myprofile_controller.rb:49 | ||
377 | +msgid "Could not update software" | ||
378 | +msgstr "Não foi possível atualizar o software" | ||
379 | + | ||
380 | +#: plugins/software_communities/controllers/software_communities_plugin_myprofile_controller.rb:130 | ||
381 | +msgid "" | ||
382 | +"Your new software request will be evaluated by anadministrator. You will be " | ||
383 | +"notified." | ||
384 | +msgstr "" | ||
385 | +"Seu pedido para registro do software será avaliado por um administrador. " | ||
386 | +"Você será notificado." | ||
387 | + | ||
388 | +#: plugins/software_communities/controllers/software_communities_plugin_profile_controller.rb:7 | ||
389 | +msgid "Could not find the download file" | ||
390 | +msgstr "Não foi possível encontrar o arquivo para download" | ||
391 | + | ||
392 | +#: plugins/software_communities/controllers/software_communities_plugin_profile_controller.rb:8 | ||
393 | +msgid "Invalid download params" | ||
394 | +msgstr "Parâmetros de Download inválidos" | ||
395 | + | ||
396 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:1 | ||
397 | +msgid "General information" | ||
398 | +msgstr "Informação geral" | ||
399 | + | ||
400 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:40 | ||
401 | +msgid "Address" | ||
402 | +msgstr "Endereço" | ||
403 | + | ||
404 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:46 | ||
405 | +msgid "WARNING!" | ||
406 | +msgstr "PERIGO!" | ||
407 | + | ||
408 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:47 | ||
409 | +msgid "" | ||
410 | +"You are about to change the address, and this will break external links to " | ||
411 | +"the homepage or to content inside it. Do you really want to change?" | ||
412 | +msgstr "" | ||
413 | +"Você está prestes a mudar o endereço, e isso vai quebrar links externos para " | ||
414 | +"a página inicial ou para o conteúdo dentro dela. Você realmente quer mudar?" | ||
415 | + | ||
416 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:49 | ||
417 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:7 | ||
418 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:8 | ||
419 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:9 | ||
420 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:10 | ||
421 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:11 | ||
422 | +msgid "Yes" | ||
423 | +msgstr "Sim" | ||
424 | + | ||
425 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:50 | ||
426 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:7 | ||
427 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:8 | ||
428 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:9 | ||
429 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:10 | ||
430 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:11 | ||
431 | +msgid "No" | ||
432 | +msgstr "Não" | ||
433 | + | ||
434 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:63 | ||
435 | +msgid "Enable \"contact us\"" | ||
436 | +msgstr "Habilitar \"entre em contato\"" | ||
437 | + | ||
438 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:68 | ||
439 | +msgid "Products/Services catalog" | ||
440 | +msgstr "Catálogo de Produtos/Serviços" | ||
441 | + | ||
442 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:69 | ||
443 | +msgid "Number of products/services displayed per page on catalog" | ||
444 | +msgstr "Número de produtos/serviços mostrado por página no catálogo" | ||
445 | + | ||
446 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:4 | ||
447 | +msgid "Configure Software Community" | ||
448 | +msgstr "Configurar Comunidade do Software" | ||
449 | + | ||
450 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:8 | ||
451 | +msgid "Set the basic settings of the software associated community" | ||
452 | +msgstr "Defina as configurações básicas da comunidade do software" | ||
453 | + | ||
454 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:18 | ||
455 | +msgid "This profile is a template" | ||
456 | +msgstr "Este perfil é um template" | ||
457 | + | ||
458 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:24 | ||
459 | +msgid "Privacy options" | ||
460 | +msgstr "Opções de privacidade" | ||
461 | + | ||
462 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:28 | ||
463 | +msgid "Public — show my contents to all internet users" | ||
464 | +msgstr "Público — mostrar meus conteúdos a todos os usuários na internet" | ||
465 | + | ||
466 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:31 | ||
467 | +msgid "Private — show my contents only to friends" | ||
468 | +msgstr "Privado — mostrar meus conteudos apenas aos amigos" | ||
469 | + | ||
470 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:35 | ||
471 | +msgid "Public — show content of this group to all internet users" | ||
472 | +msgstr "" | ||
473 | +"Público — mostrar conteudos deste grupo a todos os usuários na internet" | ||
474 | + | ||
475 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:38 | ||
476 | +msgid "Private — show content of this group only to members" | ||
477 | +msgstr "Privado — mostrar meus conteudos deste grupo apenas aos membros" | ||
478 | + | ||
479 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:43 | ||
480 | +msgid "Page to redirect after login" | ||
481 | +msgstr "Página para redirecionar após o login" | ||
482 | + | ||
483 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:47 | ||
484 | +msgid "Translations" | ||
485 | +msgstr "Traduções" | ||
486 | + | ||
487 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:49 | ||
488 | +msgid "" | ||
489 | +"Automaticaly redirect the visitor to the article translated to his/her " | ||
490 | +"language" | ||
491 | +msgstr "" | ||
492 | +"Redirecionar automaticamente o visitante para o artigo traduzido para sua " | ||
493 | +"língua" | ||
494 | + | ||
495 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:53 | ||
496 | +msgid "Suggestions" | ||
497 | +msgstr "Sugestões" | ||
498 | + | ||
499 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:55 | ||
500 | +msgid "Send me relationship suggestions by email" | ||
501 | +msgstr "Envie-me sugestões de relacionamento por e-mail" | ||
502 | + | ||
503 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:65 | ||
504 | +#: plugins/software_communities/views/search/_full_community.html.erb:27 | ||
505 | +msgid "Software Categories" | ||
506 | +msgstr "Categorias de Software" | ||
507 | + | ||
508 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:68 | ||
509 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/edit_software.html.erb:18 | ||
510 | +msgid "Save" | ||
511 | +msgstr "Salvar" | ||
512 | + | ||
513 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:71 | ||
514 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/edit_software.html.erb:20 | ||
515 | +msgid "Back to control panel" | ||
516 | +msgstr "Voltar para o painel de controle" | ||
517 | + | ||
518 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:77 | ||
519 | +msgid "Delete software and community" | ||
520 | +msgstr "Remover software e comunidade" | ||
521 | + | ||
522 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:80 | ||
523 | +msgid "Deactivate software and community" | ||
524 | +msgstr "Desativar software e comunidade" | ||
525 | + | ||
526 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:80 | ||
527 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:82 | ||
528 | +msgid "Are you sure you want to deactivate this profile?" | ||
529 | +msgstr "Tem certeza de que deseja desativar esse perfil?" | ||
530 | + | ||
531 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:82 | ||
532 | +msgid "Activate software and community" | ||
533 | +msgstr "Ativar software e comunidade" | ||
534 | + | ||
535 | +#: plugins/software_communities/views/profile_editor/_first_edit_software_community_extras.html.erb:3 | ||
536 | +msgid "Step 1 - Software Creation" | ||
537 | +msgstr "Passo 1 - Criação do Software" | ||
538 | + | ||
539 | +#: plugins/software_communities/views/profile_editor/_first_edit_software_community_extras.html.erb:7 | ||
540 | +msgid "Step 2 - Community Settings" | ||
541 | +msgstr "Passo 2 - Configuração da Comunidade" | ||
542 | + | ||
543 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_license_info_fields.html.erb:5 | ||
544 | +msgid "Autocomplete field, type some license" | ||
545 | +msgstr "Campo com auto completar, digite uma licença" | ||
546 | + | ||
547 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_license_info_fields.html.erb:8 | ||
548 | +msgid "Read license" | ||
549 | +msgstr "Ler licença" | ||
550 | + | ||
551 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:4 | ||
552 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:7 | ||
553 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:10 | ||
554 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:14 | ||
555 | +msgid "Public Software" | ||
556 | +msgstr "Software Público" | ||
557 | + | ||
558 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:4 | ||
559 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:7 | ||
560 | +msgid "Public software" | ||
561 | +msgstr "Software Público" | ||
562 | + | ||
563 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:12 | ||
564 | +msgid "Adherent to e-PING ?" | ||
565 | +msgstr "Aderente ao e-PING ?" | ||
566 | + | ||
567 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:21 | ||
568 | +msgid "Adherent to e-MAG ?" | ||
569 | +msgstr "Aderente ao e-MAG ?" | ||
570 | + | ||
571 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:30 | ||
572 | +msgid "Adherent to ICP-Brasil ?" | ||
573 | +msgstr "Aderente ao ICP-Brasil ?" | ||
574 | + | ||
575 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:39 | ||
576 | +msgid "Adherent to e-ARQ ?" | ||
577 | +msgstr "Aderente ao e-ARQ ?" | ||
578 | + | ||
579 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:48 | ||
580 | +msgid "Internacionalizable ?" | ||
581 | +msgstr "Internacionalizável ?" | ||
582 | + | ||
583 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:59 | ||
584 | +msgid "Operating Platform" | ||
585 | +msgstr "Plataforma Operacional" | ||
586 | + | ||
587 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:64 | ||
588 | +msgid "Features" | ||
589 | +msgstr "Características" | ||
590 | + | ||
591 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:69 | ||
592 | +msgid "Demonstration url" | ||
593 | +msgstr "Url de demonstração" | ||
594 | + | ||
595 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:74 | ||
596 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:35 | ||
597 | +msgid "Libraries" | ||
598 | +msgstr "Bibliotecas" | ||
599 | + | ||
600 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:82 | ||
601 | +msgid "Operating Systems" | ||
602 | +msgstr "Sistemas Operacionais" | ||
603 | + | ||
604 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:90 | ||
605 | +msgid "Programming languages" | ||
606 | +msgstr "Linguagens de programação" | ||
607 | + | ||
608 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:97 | ||
609 | +msgid "Databases" | ||
610 | +msgstr "Banco de dados" | ||
611 | + | ||
612 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/edit_software.html.erb:1 | ||
613 | +msgid "Edit Software" | ||
614 | +msgstr "Editar Software" | ||
615 | + | ||
616 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/edit_software.html.erb:9 | ||
617 | +msgid "Main Information" | ||
618 | +msgstr "Informação" | ||
619 | + | ||
620 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/edit_software.html.erb:12 | ||
621 | +msgid "Specifications" | ||
622 | +msgstr "Especificações" | ||
623 | + | ||
624 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_language_fields.html.erb:11 | ||
625 | +msgid "New language" | ||
626 | +msgstr "Nova linguagem" | ||
627 | + | ||
628 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_library_fields.html.erb:11 | ||
629 | +msgid "New Library" | ||
630 | +msgstr "Nova Biblioteca" | ||
631 | + | ||
632 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_operating_system_fields.html.erb:11 | ||
633 | +msgid "New Operating System" | ||
634 | +msgstr "Novo Sistema Operacional" | ||
635 | + | ||
636 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_database_fields.html.erb:11 | ||
637 | +msgid "New Database" | ||
638 | +msgstr "Novo Banco de Dados" | ||
639 | + | ||
640 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:8 | ||
641 | +msgid "Short Name" | ||
642 | +msgstr "Nome Curto" | ||
643 | + | ||
644 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:14 | ||
645 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:56 | ||
646 | +#: plugins/software_communities/views/_main_software_editor_extras.html.erb:10 | ||
647 | +msgid "Finality" | ||
648 | +msgstr "Finalidade" | ||
649 | + | ||
650 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:15 | ||
651 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:57 | ||
652 | +msgid "What is the software for?" | ||
653 | +msgstr "Para quê serve o software?" | ||
654 | + | ||
655 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:21 | ||
656 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:64 | ||
657 | +msgid "Software Logo" | ||
658 | +msgstr "Marca do Software" | ||
659 | + | ||
660 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:26 | ||
661 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:69 | ||
662 | +msgid "Image:" | ||
663 | +msgstr "Imagem:" | ||
664 | + | ||
665 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:26 | ||
666 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:69 | ||
667 | +msgid "Max size: %s (.jpg, .gif, .png)" | ||
668 | +msgstr "Tamanho máximo: %s (.jpg, .gif, .png)" | ||
669 | + | ||
670 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:33 | ||
671 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:76 | ||
672 | +msgid "License Version: " | ||
673 | +msgstr "Versão da Licença: " | ||
674 | + | ||
675 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:45 | ||
676 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:89 | ||
677 | +#: plugins/software_communities/views/_main_software_editor_extras.html.erb:29 | ||
678 | +msgid "Link to Repository: " | ||
679 | +msgstr "Link para o Repositório" | ||
680 | + | ||
681 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:5 | ||
682 | +msgid "Creating new software" | ||
683 | +msgstr "Criando novo software" | ||
684 | + | ||
685 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:9 | ||
686 | +msgid "" | ||
687 | +"Enter the basic information about the software.<br>\n" | ||
688 | +" You can add the details after you create it." | ||
689 | +msgstr "" | ||
690 | +"Entre com as informações básicas do software.<br>\n" | ||
691 | +" Você pode adicionar os detalhes após sua criação." | ||
692 | + | ||
693 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:16 | ||
694 | +msgid "" | ||
695 | +"Note that the creation of communities in this environment is restricted. " | ||
696 | +"Your request to create this new community will be sent to %{environment} " | ||
697 | +"administrators and will be approved or rejected according to their methods " | ||
698 | +"and criteria." | ||
699 | +msgstr "" | ||
700 | +"Note que a criação de comunidades nesse ambiente é restrita. Sua requisição " | ||
701 | +"para criar essa nova comunidade será enviada aos administradores do " | ||
702 | +"%{environment} para ser aprovada ou rejeitada de acordo com os seus métodos " | ||
703 | +"e critérios" | ||
704 | + | ||
705 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:22 | ||
706 | +msgid "\"Can`t create new software: #{@errors.length} errors\"" | ||
707 | +msgstr "\"Não foi possível criar o software: #{@errors.length} errors\"" | ||
708 | + | ||
709 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:45 | ||
710 | +msgid "Domain" | ||
711 | +msgstr "Domínio" | ||
712 | + | ||
713 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:97 | ||
714 | +msgid "Create" | ||
715 | +msgstr "Criar" | ||
716 | + | ||
717 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:98 | ||
718 | +msgid "Cancel" | ||
719 | +msgstr "Cancelar" | ||
720 | + | ||
721 | +#: plugins/software_communities/views/search/_catalog_result_list.html.erb:12 | ||
722 | +msgid "see all (%d)" | ||
723 | +msgstr "ver todos (%d)" | ||
724 | + | ||
725 | +#: plugins/software_communities/views/search/_catalog_result_list.html.erb:34 | ||
726 | +msgid "No software found. Try more general filters" | ||
727 | +msgstr "Nenhum software encontrado. Tente outros filtros" | ||
728 | + | ||
729 | +#: plugins/software_communities/views/search/_catalog_result_list.html.erb:36 | ||
730 | +msgid "" | ||
731 | +"No software found. Try more general filters or check the software category " | ||
732 | +"individually" | ||
733 | +msgstr "" | ||
734 | +"Nenhum software encontrado. Tente outros filtros ou verifique a categoria do " | ||
735 | +"software individualmente" | ||
736 | + | ||
737 | +#: plugins/software_communities/views/search/_catalog_result_list.html.erb:41 | ||
738 | +#: plugins/software_communities/views/search/_full_community.html.erb:35 | ||
739 | +#: plugins/software_communities/views/search/_catalog_filter.html.erb:10 | ||
740 | +#: plugins/software_communities/views/blocks/categories_software.html.erb:15 | ||
741 | +msgid "\"#{category.name}\"" | ||
742 | +msgstr "\"#{category.name}\"" | ||
743 | + | ||
744 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:3 | ||
745 | +msgid "Search Public Software Catalog" | ||
746 | +msgstr "Pesquisar Catálogo de Software Público" | ||
747 | + | ||
748 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:15 | ||
749 | +msgid "" | ||
750 | +"Projects that have passed by the Avalia SPB process according to the " | ||
751 | +"requirements of IN 01/2011." | ||
752 | +msgstr "" | ||
753 | +"Projetos que passaram pelo processo Avalia SPB de acordo com os Requisitos " | ||
754 | +"da IN 01/2011." | ||
755 | + | ||
756 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:18 | ||
757 | +msgid "All" | ||
758 | +msgstr "Todos" | ||
759 | + | ||
760 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:19 | ||
761 | +msgid "Projects included in the portal as cases provided by the IN 01/2011." | ||
762 | +msgstr "Projetos incluidos no portal como os casos fornecidos pela IN 01/2011." | ||
763 | + | ||
764 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:24 | ||
765 | +msgid "" | ||
766 | +"Type words about the software you're looking for (the search begins after 3 " | ||
767 | +"characters)" | ||
768 | +msgstr "" | ||
769 | +"Digite palavras sobre o software que você está procurando (a busca começa " | ||
770 | +"depois de 3 caracteres" | ||
771 | + | ||
772 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:27 | ||
773 | +msgid "Filter" | ||
774 | +msgstr "Filtro" | ||
775 | + | ||
776 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:52 | ||
777 | +#: plugins/software_communities/views/profile/_profile_members_list.html.erb:5 | ||
778 | +msgid "Name A-Z" | ||
779 | +msgstr "Nome A-Z" | ||
780 | + | ||
781 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:53 | ||
782 | +#: plugins/software_communities/views/profile/_profile_members_list.html.erb:6 | ||
783 | +msgid "Name Z-A" | ||
784 | +msgstr "Nome Z-A" | ||
785 | + | ||
786 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:54 | ||
787 | +msgid "Relevance" | ||
788 | +msgstr "Relevância" | ||
789 | + | ||
790 | +#: plugins/software_communities/views/search/software_infos.html.erb:6 | ||
791 | +msgid "Type words about the %s you're looking for" | ||
792 | +msgstr "Digite palavras sobre o %s que você está procurando" | ||
793 | + | ||
794 | +#: plugins/software_communities/views/search/_full_community.html.erb:46 | ||
795 | +msgid "This software doesn't have categories" | ||
796 | +msgstr "Este software nào contém categorias" | ||
797 | + | ||
798 | +#: plugins/software_communities/views/search/_catalog_filter.html.erb:4 | ||
799 | +#: plugins/software_communities/views/blocks/categories_and_tags.html.erb:2 | ||
800 | +msgid "Categories" | ||
801 | +msgstr "Categorias" | ||
802 | + | ||
803 | +#: plugins/software_communities/views/search/_catalog_filter.html.erb:16 | ||
804 | +msgid "More options" | ||
805 | +msgstr "Mais opções" | ||
806 | + | ||
807 | +#: plugins/software_communities/views/search/_catalog_filter.html.erb:18 | ||
808 | +msgid "Clean up" | ||
809 | +msgstr "Limpar" | ||
810 | + | ||
811 | +#: plugins/software_communities/views/search/_catalog_filter.html.erb:19 | ||
812 | +msgid "Close" | ||
813 | +msgstr "Fechar" | ||
814 | + | ||
815 | +#: plugins/software_communities/views/comments_extra_fields.html.erb:3 | ||
816 | +msgid "Additional informations" | ||
817 | +msgstr "Informações adicionais" | ||
818 | + | ||
819 | +#: plugins/software_communities/views/comments_extra_fields.html.erb:11 | ||
820 | +msgid "Number of Beneficiaries" | ||
821 | +msgstr "Número de beneficiados" | ||
822 | + | ||
823 | +#: plugins/software_communities/views/comments_extra_fields.html.erb:17 | ||
824 | +msgid "Saved resources" | ||
825 | +msgstr "Recursos economizados" | ||
826 | + | ||
827 | +#: plugins/software_communities/views/box_organizer/_wiki_block.html.erb:3 | ||
828 | +msgid "Wiki link" | ||
829 | +msgstr "Link da wiki" | ||
830 | + | ||
831 | +#: plugins/software_communities/views/box_organizer/_software_tab_data_block.html.erb:5 | ||
832 | +msgid "Which blog should have its posts displayed: " | ||
833 | +msgstr "Qual blog deve ter seus posts exibidos: " | ||
834 | + | ||
835 | +#: plugins/software_communities/views/box_organizer/_software_tab_data_block.html.erb:13 | ||
836 | +msgid "This community has no blogs" | ||
837 | +msgstr "Essa comunidade não possui blogs" | ||
838 | + | ||
839 | +#: plugins/software_communities/views/box_organizer/_statistic_block.html.erb:5 | ||
840 | +msgid "Benefited People" | ||
841 | +msgstr "Pessoas Beneficiadas" | ||
842 | + | ||
843 | +#: plugins/software_communities/views/box_organizer/_statistic_block.html.erb:6 | ||
844 | +#: plugins/software_communities/views/box_organizer/_statistic_block.html.erb:8 | ||
845 | +msgid "Portal suggested value: " | ||
846 | +msgstr "Valor sugerido pelo portal: " | ||
847 | + | ||
848 | +#: plugins/software_communities/views/box_organizer/_statistic_block.html.erb:7 | ||
849 | +msgid "Saved Resources" | ||
850 | +msgstr "Recursos economizados" | ||
851 | + | ||
852 | +#: plugins/software_communities/views/box_organizer/_download_block.html.erb:4 | ||
853 | +msgid "Link" | ||
854 | +msgstr "Link" | ||
855 | + | ||
856 | +#: plugins/software_communities/views/box_organizer/_download_block.html.erb:5 | ||
857 | +msgid "Platforms" | ||
858 | +msgstr "Plataformas" | ||
859 | + | ||
860 | +#: plugins/software_communities/views/box_organizer/_download_block.html.erb:6 | ||
861 | +#: plugins/software_communities/views/blocks/download.html.erb:17 | ||
862 | +msgid "Minimum Requirements" | ||
863 | +msgstr "Requisitos Mínimos" | ||
864 | + | ||
865 | +#: plugins/software_communities/views/box_organizer/_download_block.html.erb:7 | ||
866 | +msgid "Size:" | ||
867 | +msgstr "Tamanho:" | ||
868 | + | ||
869 | +#: plugins/software_communities/views/box_organizer/_download_block.html.erb:16 | ||
870 | +msgid "New link" | ||
871 | +msgstr "Novo link" | ||
872 | + | ||
873 | +#: plugins/software_communities/views/box_organizer/_softwares_block.html.erb:2 | ||
874 | +msgid "Limit of items" | ||
875 | +msgstr "Limite de itens" | ||
876 | + | ||
877 | +#: plugins/software_communities/views/box_organizer/_softwares_block.html.erb:3 | ||
878 | +msgid "Software Type:" | ||
879 | +msgstr "Tipo de Software:" | ||
880 | + | ||
881 | +#: plugins/software_communities/views/_main_software_editor_extras.html.erb:1 | ||
882 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:3 | ||
883 | +msgid "Software Information" | ||
884 | +msgstr "Informação de Software" | ||
885 | + | ||
886 | +#: plugins/software_communities/views/_main_software_editor_extras.html.erb:15 | ||
887 | +msgid "Licenses" | ||
888 | +msgstr "Licenças" | ||
889 | + | ||
890 | +#: plugins/software_communities/views/_main_software_editor_extras.html.erb:20 | ||
891 | +msgid "License link" | ||
892 | +msgstr "Link para a licença" | ||
893 | + | ||
894 | +#: plugins/software_communities/views/profile/_profile_members_list.html.erb:2 | ||
895 | +msgid "Sort by:" | ||
896 | +msgstr "Ordenar por:" | ||
897 | + | ||
898 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:6 | ||
899 | +msgid "Name:" | ||
900 | +msgstr "Nome:" | ||
901 | + | ||
902 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:7 | ||
903 | +msgid "Adherent to e_mag:" | ||
904 | +msgstr "Aderente ao e_mag:" | ||
905 | + | ||
906 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:8 | ||
907 | +msgid "Adherent to icp_brasil:" | ||
908 | +msgstr "Aderente ao icp_brasil:" | ||
909 | + | ||
910 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:9 | ||
911 | +msgid "Adherent to e_ping:" | ||
912 | +msgstr "Aderente ao e_ping" | ||
913 | + | ||
914 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:10 | ||
915 | +msgid "Adherent to e_arq:" | ||
916 | +msgstr "Aderente ao e_arq" | ||
917 | + | ||
918 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:11 | ||
919 | +msgid "Internacionalizable:" | ||
920 | +msgstr "Internacionalizável:" | ||
921 | + | ||
922 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:12 | ||
923 | +msgid "Operating Platform:" | ||
924 | +msgstr "Plataforma Operacional:" | ||
925 | + | ||
926 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:13 | ||
927 | +msgid "Demonstration URL:" | ||
928 | +msgstr "URL de Demonstração:" | ||
929 | + | ||
930 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:14 | ||
931 | +msgid "Short Name:" | ||
932 | +msgstr "Nome Curto:" | ||
933 | + | ||
934 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:15 | ||
935 | +msgid "Objectives:" | ||
936 | +msgstr "Objetivos:" | ||
937 | + | ||
938 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:16 | ||
939 | +msgid "Features:" | ||
940 | +msgstr "Funcionalidades:" | ||
941 | + | ||
942 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:19 | ||
943 | +msgid "Version:" | ||
944 | +msgstr "Versão:" | ||
945 | + | ||
946 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:20 | ||
947 | +msgid "Link:" | ||
948 | +msgstr "Link:" | ||
949 | + | ||
950 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:25 | ||
951 | +msgid "Show Libraries" | ||
952 | +msgstr "Mostrar Bibliotecas" | ||
953 | + | ||
954 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:26 | ||
955 | +msgid "Hide Libraries" | ||
956 | +msgstr "Ocultar Bibliotecas" | ||
957 | + | ||
958 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:53 | ||
959 | +msgid "Show Database" | ||
960 | +msgstr "Mostrar Banco de Dados" | ||
961 | + | ||
962 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:54 | ||
963 | +msgid "Hide Database" | ||
964 | +msgstr "Ocultar Banco de Dados" | ||
965 | + | ||
966 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:63 | ||
967 | +msgid "Software Databases" | ||
968 | +msgstr "Bancos de Dados do Software" | ||
969 | + | ||
970 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:81 | ||
971 | +msgid "Show Languages" | ||
972 | +msgstr "Mostrar Linguagens" | ||
973 | + | ||
974 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:82 | ||
975 | +msgid "Hide Languages" | ||
976 | +msgstr "Ocultar Linguagens" | ||
977 | + | ||
978 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:91 | ||
979 | +msgid "Software Languages" | ||
980 | +msgstr "Linguagens do Software" | ||
981 | + | ||
982 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:109 | ||
983 | +msgid "Show Operating Systems" | ||
984 | +msgstr "Mostrar Sistema Operacional" | ||
985 | + | ||
986 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:110 | ||
987 | +msgid "Hide Operating Systems" | ||
988 | +msgstr "Ocultar Sistema Operacional" | ||
989 | + | ||
990 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:120 | ||
991 | +msgid "Operating System" | ||
992 | +msgstr "Sistema Operacional" | ||
993 | + | ||
994 | +#: plugins/software_communities/views/profile/members.html.erb:3 | ||
995 | +#: plugins/software_communities/views/profile/members.html.erb:26 | ||
996 | +msgid "Members" | ||
997 | +msgstr "Membros" | ||
998 | + | ||
999 | +#: plugins/software_communities/views/profile/members.html.erb:4 | ||
1000 | +msgid "%s" | ||
1001 | +msgstr "" | ||
1002 | + | ||
1003 | +#: plugins/software_communities/views/profile/members.html.erb:43 | ||
1004 | +msgid "Administrators" | ||
1005 | +msgstr "Administradores" | ||
1006 | + | ||
1007 | +#: plugins/software_communities/views/profile/members.html.erb:57 | ||
1008 | +msgid "Go back" | ||
1009 | +msgstr "Voltar" | ||
1010 | + | ||
1011 | +#: plugins/software_communities/views/profile/members.html.erb:60 | ||
1012 | +msgid "Invite people to join" | ||
1013 | +msgstr "Convide pessoas para entrar" | ||
1014 | + | ||
1015 | +#: plugins/software_communities/views/profile/members.html.erb:63 | ||
1016 | +msgid "Send e-mail to members" | ||
1017 | +msgstr "Envie e-mail para os membros" | ||
1018 | + | ||
1019 | +#: plugins/software_communities/views/profile/index.html.erb:17 | ||
1020 | +msgid "Control Panel" | ||
1021 | +msgstr "Painel de Controle" | ||
1022 | + | ||
1023 | +#: plugins/software_communities/views/blocks/main_area_softwares.html.erb:23 | ||
1024 | +msgid "See More" | ||
1025 | +msgstr "Veja Mais" | ||
1026 | + | ||
1027 | +#: plugins/software_communities/views/blocks/_software_tab_blog.html.erb:5 | ||
1028 | +msgid "This community has no posts in its blog" | ||
1029 | +msgstr "Essa comunidade não possui posts nesse blog" | ||
1030 | + | ||
1031 | +#: plugins/software_communities/views/blocks/_software_tab_blog.html.erb:13 | ||
1032 | +msgid "Read more" | ||
1033 | +msgstr "Leia mais" | ||
1034 | + | ||
1035 | +#: plugins/software_communities/views/blocks/repository.html.erb:2 | ||
1036 | +#: plugins/software_communities/views/blocks/download.html.erb:2 | ||
1037 | +#: plugins/software_communities/views/blocks/software_tab_data.html.erb:2 | ||
1038 | +#: plugins/software_communities/views/blocks/wiki.html.erb:2 | ||
1039 | +#: plugins/software_communities/views/blocks/software_information.html.erb:4 | ||
1040 | +msgid "This community needs a software to use this block" | ||
1041 | +msgstr "Essa comunidade precisa de um software para usar este block" | ||
1042 | + | ||
1043 | +#: plugins/software_communities/views/blocks/repository.html.erb:4 | ||
1044 | +msgid "Repository" | ||
1045 | +msgstr "Repositório" | ||
1046 | + | ||
1047 | +#: plugins/software_communities/views/blocks/download.html.erb:4 | ||
1048 | +msgid "\"Download #{block.owner.software_info.community.name}\"" | ||
1049 | +msgstr "\"Baixar #{block.owner.software_info.community.name}\"" | ||
1050 | + | ||
1051 | +#: plugins/software_communities/views/blocks/download.html.erb:9 | ||
1052 | +msgid "Download the software" | ||
1053 | +msgstr "Baixar o software" | ||
1054 | + | ||
1055 | +#: plugins/software_communities/views/blocks/download.html.erb:15 | ||
1056 | +msgid "\"#{download[:name]}\"" | ||
1057 | +msgstr "\"#{download[:name]}\"" | ||
1058 | + | ||
1059 | +#: plugins/software_communities/views/blocks/download.html.erb:16 | ||
1060 | +msgid "\"Platform:#{download[:software_description]}\"" | ||
1061 | +msgstr "\"Platform:#{download[:software_description]}\"" | ||
1062 | + | ||
1063 | +#: plugins/software_communities/views/blocks/download.html.erb:23 | ||
1064 | +msgid "\"License: #{block.owner.software_info.license_info.version}\"" | ||
1065 | +msgstr "\"License: #{block.owner.software_info.license_info.version}\"" | ||
1066 | + | ||
1067 | +#: plugins/software_communities/views/blocks/categories_and_tags.html.erb:12 | ||
1068 | +msgid "Tags" | ||
1069 | +msgstr "Tags" | ||
1070 | + | ||
1071 | +#: plugins/software_communities/views/blocks/software_statistics.html.erb:5 | ||
1072 | +msgid " benefited people*" | ||
1073 | +msgstr " pessoas beneficiadas*" | ||
1074 | + | ||
1075 | +#: plugins/software_communities/views/blocks/software_statistics.html.erb:6 | ||
1076 | +msgid " saved resources*" | ||
1077 | +msgstr " recursos economizados*" | ||
1078 | + | ||
1079 | +#: plugins/software_communities/views/blocks/software_statistics.html.erb:10 | ||
1080 | +msgid "Data estimated by the software administrator." | ||
1081 | +msgstr "Dados estimados pelo administrador do software" | ||
1082 | + | ||
1083 | +#: plugins/software_communities/views/blocks/categories_software.html.erb:4 | ||
1084 | +msgid "See more Software" | ||
1085 | +msgstr "Veja mais softwares" | ||
1086 | + | ||
1087 | +#: plugins/software_communities/views/blocks/categories_software.html.erb:8 | ||
1088 | +msgid "Categories:" | ||
1089 | +msgstr "Categorias:" | ||
1090 | + | ||
1091 | +#: plugins/software_communities/views/blocks/categories_software.html.erb:23 | ||
1092 | +#: plugins/software_communities/views/blocks/search_catalog.html.erb:9 | ||
1093 | +msgid "Access the complete catalog" | ||
1094 | +msgstr "Acessar o catálogo completo" | ||
1095 | + | ||
1096 | +#: plugins/software_communities/views/blocks/software_tab_data.html.erb:6 | ||
1097 | +msgid "Discussions" | ||
1098 | +msgstr "Discussões" | ||
1099 | + | ||
1100 | +#: plugins/software_communities/views/blocks/software_tab_data.html.erb:7 | ||
1101 | +msgid "Blog" | ||
1102 | +msgstr "" | ||
1103 | + | ||
1104 | +#: plugins/software_communities/views/blocks/software_tab_data.html.erb:8 | ||
1105 | +msgid "Repository Feed" | ||
1106 | +msgstr "Feed do Repositório" | ||
1107 | + | ||
1108 | +#: plugins/software_communities/views/blocks/wiki.html.erb:4 | ||
1109 | +msgid "Wiki" | ||
1110 | +msgstr "" | ||
1111 | + | ||
1112 | +#: plugins/software_communities/views/blocks/software_highlights.html.erb:13 | ||
1113 | +msgid "See all" | ||
1114 | +msgstr "ver todos (%d)" | ||
1115 | + | ||
1116 | +#: plugins/software_communities/views/blocks/software_information.html.erb:16 | ||
1117 | +msgid "Control panel" | ||
1118 | +msgstr "Painel de Controle" | ||
1119 | + | ||
1120 | +#: plugins/software_communities/views/blocks/software_information.html.erb:24 | ||
1121 | +msgid "\"#{block.owner.software_info.acronym} - \"" | ||
1122 | +msgstr "\"#{block.owner.software_info.acronym} - \"" | ||
1123 | + | ||
1124 | +#: plugins/software_communities/views/blocks/software_information.html.erb:25 | ||
1125 | +msgid "\"#{block.owner.name}\"" | ||
1126 | +msgstr "\"#{block.owner.name}\"" | ||
1127 | + | ||
1128 | +#: plugins/software_communities/views/blocks/search_catalog.html.erb:2 | ||
1129 | +msgid "Catalog of Public Software" | ||
1130 | +msgstr "Catálogo de Software Público" | ||
1131 | + | ||
1132 | +#: plugins/software_communities/views/blocks/search_catalog.html.erb:5 | ||
1133 | +msgid "Search" | ||
1134 | +msgstr "Procurar" | ||
1135 | + | ||
1136 | +#~ msgid "Software Projects:" | ||
1137 | +#~ msgstr "Projetos de Software:" | ||
1138 | + | ||
1139 | +#~ msgid "Include in results" | ||
1140 | +#~ msgstr "Incluir em resultados" | ||
1141 | + | ||
1142 | +#~ msgid "" | ||
1143 | +#~ "Include software development projects that are not yet officially " | ||
1144 | +#~ "Brazilian Public Software." | ||
1145 | +#~ msgstr "" | ||
1146 | +#~ "Incluir projetos de desenvolvimento de software que não são ainda " | ||
1147 | +#~ "oficialmente Software Público Brasileiro" | ||
1148 | + | ||
1149 | +#~ msgid "Email must be different from secondary email." | ||
1150 | +#~ msgstr "Email deve ser diferente do email secundário." | ||
1151 | + | ||
1152 | +#~ msgid "E-mail or secondary e-mail already taken." | ||
1153 | +#~ msgstr "Email ou email secundário já foram escolhidos por outro usuário." | ||
1154 | + | ||
1155 | +#~ msgid "Invalid secondary email format." | ||
1156 | +#~ msgstr "Formato do email secundário inválido." | ||
1157 | + | ||
1158 | +#~ msgid "The governamental email must be the primary one." | ||
1159 | +#~ msgstr "O email governamental deve ser o email primário." | ||
1160 | + | ||
1161 | +#~ msgid "Institution is obligatory if user has a government email." | ||
1162 | +#~ msgstr "Instituição é obrigatório se usuário tem um email governamental." | ||
1163 | + | ||
1164 | +#~ msgid "Institution Catalog" | ||
1165 | +#~ msgstr "Catálogo de Instituição" | ||
1166 | + | ||
1167 | +#~ msgid "Create Institution" | ||
1168 | +#~ msgstr "Criar Instituição" | ||
1169 | + | ||
1170 | +#~ msgid "Institution Info" | ||
1171 | +#~ msgstr "Informação de Instituição" | ||
1172 | + | ||
1173 | +#~ msgid "Institution" | ||
1174 | +#~ msgstr "Instituição" | ||
1175 | + | ||
1176 | +#~ msgid "Institutions" | ||
1177 | +#~ msgstr "Instituições" | ||
1178 | + | ||
1179 | +#~ msgid "{#} institution" | ||
1180 | +#~ msgid_plural "{#} institutions" | ||
1181 | +#~ msgstr[0] "{#} instituição" | ||
1182 | +#~ msgstr[1] "{#} instituições" | ||
1183 | + | ||
1184 | +#~ msgid "This block displays the institutions in which the user is a member." | ||
1185 | +#~ msgstr "Este bloco apresenta as instituições em que o usuário é membro." | ||
1186 | + | ||
1187 | +#~ msgid "institutions|View all" | ||
1188 | +#~ msgstr "instituições|Veja todos" | ||
1189 | + | ||
1190 | +#~ msgid "invalid, only public and private institutions are allowed." | ||
1191 | +#~ msgstr "inválido, apenas instituições públicas e privadas são permitidas." | ||
1192 | + | ||
1193 | +#~ msgid "invalid format" | ||
1194 | +#~ msgstr "formato inválido" | ||
1195 | + | ||
1196 | +#~ msgid "Could not find Governmental Power or Governmental Sphere" | ||
1197 | +#~ msgstr "Não foi possível encontrar o poder ou esfera governamental" | ||
1198 | + | ||
1199 | +#~ msgid "Institution successful created!" | ||
1200 | +#~ msgstr "Instituição criada com sucesso!" | ||
1201 | + | ||
1202 | +#~ msgid "Institution could not be created!" | ||
1203 | +#~ msgstr "Instituição não pode ser criada!" | ||
1204 | + | ||
1205 | +#~ msgid "Name Should begin with a capital letter and no special characters" | ||
1206 | +#~ msgstr "" | ||
1207 | +#~ "Nome deve começar com letra maiúscula e não pode ter caracteres especiais" | ||
1208 | + | ||
1209 | +#~ msgid "Secondary e-mail" | ||
1210 | +#~ msgstr "Email secundário" | ||
1211 | + | ||
1212 | +#~ msgid "No institution found" | ||
1213 | +#~ msgstr "Nenhuma instituição encontrada" | ||
1214 | + | ||
1215 | +#~ msgid "Add new institution" | ||
1216 | +#~ msgstr "Adicionar nova instituiço" | ||
1217 | + | ||
1218 | +#~ msgid "Create new institution" | ||
1219 | +#~ msgstr "Criar nova instituição" | ||
1220 | + | ||
1221 | +#~ msgid "Should begin with a capital letter and no special characters" | ||
1222 | +#~ msgstr "Deve começar com letra maíuscula e sem caracteres especiais" | ||
1223 | + | ||
1224 | +#~ msgid "Email should have the following format: name@host.br" | ||
1225 | +#~ msgstr "Email deve ter o seguinte formato: name@host.br" | ||
1226 | + | ||
1227 | +#~ msgid "Site should have a valid format: http://name.hosts" | ||
1228 | +#~ msgstr "Site deve ter um formato válido: http://name.hosts" | ||
1229 | + | ||
1230 | +#~ msgid "If you work in a public agency use your government e-Mail" | ||
1231 | +#~ msgstr "Se você trabalha em um órgão público use seu e-Mail governamental" | ||
1232 | + | ||
1233 | +#~ msgid "New Institution" | ||
1234 | +#~ msgstr "Nova Instituição" | ||
1235 | + | ||
1236 | +#~ msgid "\"Can`t create new Institution: #{flash[:errors].length} errors\"" | ||
1237 | +#~ msgstr "" | ||
1238 | +#~ "\"Não foi possível criar a Instituição: #{flash[:errors].length} errors\"" | ||
1239 | + | ||
1240 | +#~ msgid "All fields with (*) are mandatory" | ||
1241 | +#~ msgstr "Todos os campos com (*) são obrigatórios" | ||
1242 | + | ||
1243 | +#~ msgid "Public Institution" | ||
1244 | +#~ msgstr "Insituição Pública" | ||
1245 | + | ||
1246 | +#~ msgid "Private Institution" | ||
1247 | +#~ msgstr "Instituição Privada" | ||
1248 | + | ||
1249 | +#~ msgid "Institution name already exists" | ||
1250 | +#~ msgstr "Instituição com o nome informado já existe" | ||
1251 | + | ||
1252 | +#~ msgid "Country" | ||
1253 | +#~ msgstr "País" | ||
1254 | + | ||
1255 | +#~ msgid "State" | ||
1256 | +#~ msgstr "Estado" | ||
1257 | + | ||
1258 | +#~ msgid "CNPJ" | ||
1259 | +#~ msgstr "CNPJ" | ||
1260 | + | ||
1261 | +#~ msgid "Acronym" | ||
1262 | +#~ msgstr "Sigla" | ||
1263 | + | ||
1264 | +#~ msgid "Fantasy name" | ||
1265 | +#~ msgstr "Nome fantasia" | ||
1266 | + | ||
1267 | +#~ msgid "Governmental Sphere:" | ||
1268 | +#~ msgstr "Esfera Governamental:" | ||
1269 | + | ||
1270 | +#~ msgid "Select a Governmental Sphere" | ||
1271 | +#~ msgstr "Selecione a Esfera Governamental" | ||
1272 | + | ||
1273 | +#~ msgid "Governmental Power:" | ||
1274 | +#~ msgstr "Poder Governamental:" | ||
1275 | + | ||
1276 | +#~ msgid "Select a Governmental Power" | ||
1277 | +#~ msgstr "Selecione um Poder Governamental" | ||
1278 | + | ||
1279 | +#~ msgid "Juridical Nature:" | ||
1280 | +#~ msgstr "Natureza Jurídica" | ||
1281 | + | ||
1282 | +#~ msgid "Select a Juridical Nature" | ||
1283 | +#~ msgstr "Selecione uma Natureza Jurídica" | ||
1284 | + | ||
1285 | +#~ msgid "SISP?" | ||
1286 | +#~ msgstr "SISP?" | ||
1287 | + | ||
1288 | +#~ msgid "Could not send the form data to the server" | ||
1289 | +#~ msgstr "Não foi possível enviar os dados do formulário ao servidor" | ||
1290 | + | ||
1291 | +#~ msgid "Creating institution" | ||
1292 | +#~ msgstr "Criando instituição" | ||
1293 | + | ||
1294 | +#~ msgid "Institution Information" | ||
1295 | +#~ msgstr "Informações de Instituição" | ||
1296 | + | ||
1297 | +#~ msgid "Type:" | ||
1298 | +#~ msgstr "Tipo:" | ||
1299 | + | ||
1300 | +#~ msgid "CNPJ:" | ||
1301 | +#~ msgstr "CNPJ:" | ||
1302 | + | ||
1303 | +#~ msgid "Last modification:" | ||
1304 | +#~ msgstr "Última modificação:" | ||
1305 | + | ||
1306 | +#~ msgid "Country:" | ||
1307 | +#~ msgstr "País" | ||
1308 | + | ||
1309 | +#~ msgid "State:" | ||
1310 | +#~ msgstr "Estado" | ||
1311 | + | ||
1312 | +#~ msgid "City:" | ||
1313 | +#~ msgstr "Cidade" | ||
1314 | + | ||
1315 | +#~ msgid "Fantasy Name:" | ||
1316 | +#~ msgstr "Nome Fantasia:" | ||
1317 | + | ||
1318 | +#~ msgid "Acronym:" | ||
1319 | +#~ msgstr "Sigla:" | ||
1320 | + | ||
1321 | +#~ msgid "SISP:" | ||
1322 | +#~ msgstr "SISP:" | ||
1323 | + | ||
1324 | +#~ msgid "Edit Institution" | ||
1325 | +#~ msgstr "Editar Instituíção" | ||
1326 | + | ||
1327 | +#~ msgid "Link to Repository" | ||
1328 | +#~ msgstr "Link para o Repositório" | ||
1329 | + | ||
1330 | +#~ msgid "Select the categories of your interest" | ||
1331 | +#~ msgstr "Selecione as categorias de seu interesse" | ||
1332 | + | ||
1333 | +#~ msgid "Delete profile" | ||
1334 | +#~ msgstr "Deletar perfil" | ||
1335 | + | ||
1336 | +#~ msgid "Deactivate profile" | ||
1337 | +#~ msgstr "Desativar perfil" | ||
1338 | + | ||
1339 | +#~ msgid "Activate profile" | ||
1340 | +#~ msgstr "Ativar perfil" | ||
1341 | + | ||
1342 | +#~ msgid "Complete Profile" | ||
1343 | +#~ msgstr "Completar Perfil" | ||
1344 | + | ||
1345 | +#~ msgid "Complete your profile" | ||
1346 | +#~ msgstr "Complete seu perfil" | ||
1347 | + | ||
1348 | +#~ msgid "Hide" | ||
1349 | +#~ msgstr "Esconder" | ||
1350 | + | ||
1351 | +#~ msgid "Most downloaded" | ||
1352 | +#~ msgstr "Mais baixado" | ||
1353 | + | ||
1354 | +#~ msgid "Top rated" | ||
1355 | +#~ msgstr "Mais Populares" | ||
1356 | + | ||
1357 | +#~ msgid "Recently updated" | ||
1358 | +#~ msgstr "Atualizado Recentemente" | ||
1359 | + | ||
1360 | +#~ msgid "New in portal" | ||
1361 | +#~ msgstr "Novo no portal" |
@@ -0,0 +1,1044 @@ | @@ -0,0 +1,1044 @@ | ||
1 | +# SOME DESCRIPTIVE TITLE. | ||
2 | +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
3 | +# This file is distributed under the same license as the PACKAGE package. | ||
4 | +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
5 | +# | ||
6 | +#, fuzzy | ||
7 | +msgid "" | ||
8 | +msgstr "" | ||
9 | +"Project-Id-Version: 1.2-143-g8dfded9\n" | ||
10 | +"POT-Creation-Date: 2015-09-11 17:15-0000\n" | ||
11 | +"PO-Revision-Date: 2015-09-11 17:15-0000\n" | ||
12 | +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
13 | +"Language-Team: LANGUAGE <LL@li.org>\n" | ||
14 | +"MIME-Version: 1.0\n" | ||
15 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
16 | +"Content-Transfer-Encoding: 8bit\n" | ||
17 | +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" | ||
18 | + | ||
19 | +#: plugins/software_communities/test/unit/software_info_validation_test.rb:108 | ||
20 | +msgid "Features is too long (maximum is 4000 characters)" | ||
21 | +msgstr "" | ||
22 | + | ||
23 | +#: plugins/software_communities/test/unit/software_info_validation_test.rb:116 | ||
24 | +msgid "Objectives is too long (maximum is 4000 characters)" | ||
25 | +msgstr "" | ||
26 | + | ||
27 | +#: plugins/software_communities/controllers/software_communities_plugin_myprofile_controller.rb:41 | ||
28 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/edit_software.html.erb:19 | ||
29 | +msgid "Save and Configure Community" | ||
30 | +msgstr "" | ||
31 | + | ||
32 | +#: plugins/software_communities/controllers/software_communities_plugin_myprofile_controller.rb:45 | ||
33 | +msgid "Software updated successfully" | ||
34 | +msgstr "" | ||
35 | + | ||
36 | +#: plugins/software_communities/controllers/software_communities_plugin_myprofile_controller.rb:49 | ||
37 | +msgid "Could not update software" | ||
38 | +msgstr "" | ||
39 | + | ||
40 | +#: plugins/software_communities/controllers/software_communities_plugin_myprofile_controller.rb:130 | ||
41 | +msgid "Your new software request will be evaluated by anadministrator. You will be notified." | ||
42 | +msgstr "" | ||
43 | + | ||
44 | +#: plugins/software_communities/controllers/software_communities_plugin_profile_controller.rb:7 | ||
45 | +msgid "Could not find the download file" | ||
46 | +msgstr "" | ||
47 | + | ||
48 | +#: plugins/software_communities/controllers/software_communities_plugin_profile_controller.rb:8 | ||
49 | +msgid "Invalid download params" | ||
50 | +msgstr "" | ||
51 | + | ||
52 | +#: plugins/software_communities/lib/operating_system.rb:12 | ||
53 | +msgid "too long (maximum is 20 characters)" | ||
54 | +msgstr "" | ||
55 | + | ||
56 | +#: plugins/software_communities/lib/statistic_block.rb:9 | ||
57 | +msgid "Software Statistics" | ||
58 | +msgstr "" | ||
59 | + | ||
60 | +#: plugins/software_communities/lib/statistic_block.rb:13 | ||
61 | +msgid "This block displays software statistics." | ||
62 | +msgstr "" | ||
63 | + | ||
64 | +#: plugins/software_communities/lib/categories_and_tags_block.rb:8 | ||
65 | +msgid "Categories and Tags" | ||
66 | +msgstr "" | ||
67 | + | ||
68 | +#: plugins/software_communities/lib/categories_and_tags_block.rb:12 | ||
69 | +msgid "This block displays the categories and tags of a software." | ||
70 | +msgstr "" | ||
71 | + | ||
72 | +#: plugins/software_communities/lib/wiki_block.rb:8 | ||
73 | +msgid "Wiki Link" | ||
74 | +msgstr "" | ||
75 | + | ||
76 | +#: plugins/software_communities/lib/wiki_block.rb:12 | ||
77 | +msgid "This block displays a link to the software wiki." | ||
78 | +msgstr "" | ||
79 | + | ||
80 | +#: plugins/software_communities/lib/library.rb:5 | ||
81 | +msgid "can't be blank" | ||
82 | +msgstr "" | ||
83 | + | ||
84 | +#: plugins/software_communities/lib/library.rb:8 | ||
85 | +msgid "Too long (maximum is 20 characters)" | ||
86 | +msgstr "" | ||
87 | + | ||
88 | +#: plugins/software_communities/lib/search_catalog_block.rb:8 | ||
89 | +msgid "Search Softwares catalog" | ||
90 | +msgstr "" | ||
91 | + | ||
92 | +#: plugins/software_communities/lib/search_catalog_block.rb:12 | ||
93 | +msgid "This block displays the search categories field " | ||
94 | +msgstr "" | ||
95 | + | ||
96 | +#: plugins/software_communities/lib/software_database.rb:12 | ||
97 | +msgid "Software database is too long (maximum is 20 characters)" | ||
98 | +msgstr "" | ||
99 | + | ||
100 | +#: plugins/software_communities/lib/ext/category.rb:5 | ||
101 | +msgid "Agriculture, Fisheries and Extraction" | ||
102 | +msgstr "" | ||
103 | + | ||
104 | +#: plugins/software_communities/lib/ext/category.rb:6 | ||
105 | +msgid "Science, Information and Communication" | ||
106 | +msgstr "" | ||
107 | + | ||
108 | +#: plugins/software_communities/lib/ext/category.rb:7 | ||
109 | +msgid "Economy and Finances" | ||
110 | +msgstr "" | ||
111 | + | ||
112 | +#: plugins/software_communities/lib/ext/category.rb:8 | ||
113 | +msgid "Public Administration" | ||
114 | +msgstr "" | ||
115 | + | ||
116 | +#: plugins/software_communities/lib/ext/category.rb:9 | ||
117 | +msgid "Habitation, Sanitation and Urbanism" | ||
118 | +msgstr "" | ||
119 | + | ||
120 | +#: plugins/software_communities/lib/ext/category.rb:10 | ||
121 | +msgid "Individual, Family and Society" | ||
122 | +msgstr "" | ||
123 | + | ||
124 | +#: plugins/software_communities/lib/ext/category.rb:11 | ||
125 | +msgid "Health" | ||
126 | +msgstr "" | ||
127 | + | ||
128 | +#: plugins/software_communities/lib/ext/category.rb:12 | ||
129 | +msgid "Social Welfare and Development" | ||
130 | +msgstr "" | ||
131 | + | ||
132 | +#: plugins/software_communities/lib/ext/category.rb:13 | ||
133 | +msgid "Defense and Security" | ||
134 | +msgstr "" | ||
135 | + | ||
136 | +#: plugins/software_communities/lib/ext/category.rb:14 | ||
137 | +msgid "Education" | ||
138 | +msgstr "" | ||
139 | + | ||
140 | +#: plugins/software_communities/lib/ext/category.rb:15 | ||
141 | +msgid "Government and Politics" | ||
142 | +msgstr "" | ||
143 | + | ||
144 | +#: plugins/software_communities/lib/ext/category.rb:16 | ||
145 | +msgid "Justice and Legislation" | ||
146 | +msgstr "" | ||
147 | + | ||
148 | +#: plugins/software_communities/lib/ext/category.rb:17 | ||
149 | +msgid "International Relationships" | ||
150 | +msgstr "" | ||
151 | + | ||
152 | +#: plugins/software_communities/lib/ext/category.rb:18 | ||
153 | +msgid "Transportation and Transit" | ||
154 | +msgstr "" | ||
155 | + | ||
156 | +#: plugins/software_communities/lib/ext/search_controller.rb:118 | ||
157 | +msgid "Result Search" | ||
158 | +msgstr "" | ||
159 | + | ||
160 | +#: plugins/software_communities/lib/ext/search_controller.rb:142 | ||
161 | +msgid "Selected options: " | ||
162 | +msgstr "" | ||
163 | + | ||
164 | +#: plugins/software_communities/lib/download_block.rb:15 | ||
165 | +msgid "Download Stable Version" | ||
166 | +msgstr "" | ||
167 | + | ||
168 | +#: plugins/software_communities/lib/download_block.rb:19 | ||
169 | +msgid "This block displays the stable version of a software." | ||
170 | +msgstr "" | ||
171 | + | ||
172 | +#: plugins/software_communities/lib/software_tab_data_block.rb:10 | ||
173 | +msgid "Software Tab Data" | ||
174 | +msgstr "" | ||
175 | + | ||
176 | +#: plugins/software_communities/lib/software_tab_data_block.rb:14 | ||
177 | +msgid "This block is used by colab to insert data into Noosfero" | ||
178 | +msgstr "" | ||
179 | + | ||
180 | +#: plugins/software_communities/lib/software_highlights_block.rb:4 | ||
181 | +msgid "Software Highlights Block" | ||
182 | +msgstr "" | ||
183 | + | ||
184 | +#: plugins/software_communities/lib/software_highlights_block.rb:8 | ||
185 | +msgid "This block displays the softwares icon into a highlight" | ||
186 | +msgstr "" | ||
187 | + | ||
188 | +#: plugins/software_communities/lib/dynamic_table_helper.rb:17 | ||
189 | +#: plugins/software_communities/views/box_organizer/_download_block.html.erb:3 | ||
190 | +#: plugins/software_communities/views/_main_software_editor_extras.html.erb:3 | ||
191 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:37 | ||
192 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:3 | ||
193 | +msgid "Name" | ||
194 | +msgstr "" | ||
195 | + | ||
196 | +#: plugins/software_communities/lib/dynamic_table_helper.rb:18 | ||
197 | +msgid "Version" | ||
198 | +msgstr "" | ||
199 | + | ||
200 | +#: plugins/software_communities/lib/dynamic_table_helper.rb:19 | ||
201 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:18 | ||
202 | +msgid "License" | ||
203 | +msgstr "" | ||
204 | + | ||
205 | +#: plugins/software_communities/lib/dynamic_table_helper.rb:91 | ||
206 | +msgid "Autocomplete field, type something" | ||
207 | +msgstr "" | ||
208 | + | ||
209 | +#: plugins/software_communities/lib/dynamic_table_helper.rb:116 | ||
210 | +#: plugins/software_communities/views/box_organizer/_download_list_template.html.erb:8 | ||
211 | +#: plugins/software_communities/views/box_organizer/_download_list.html.erb:8 | ||
212 | +msgid "Delete" | ||
213 | +msgstr "" | ||
214 | + | ||
215 | +#: plugins/software_communities/lib/create_software.rb:36 | ||
216 | +msgid "New software" | ||
217 | +msgstr "" | ||
218 | + | ||
219 | +#: plugins/software_communities/lib/create_software.rb:44 | ||
220 | +msgid "%{requestor} wants to create software %{subject} with" | ||
221 | +msgstr "" | ||
222 | + | ||
223 | +#: plugins/software_communities/lib/create_software.rb:46 | ||
224 | +msgid " no finality." | ||
225 | +msgstr "" | ||
226 | + | ||
227 | +#: plugins/software_communities/lib/create_software.rb:48 | ||
228 | +msgid " this finality:<p><em>%{finality}</em></p>" | ||
229 | +msgstr "" | ||
230 | + | ||
231 | +#: plugins/software_communities/lib/create_software.rb:68 | ||
232 | +msgid "%{requestor} wants to create software %{subject}" | ||
233 | +msgstr "" | ||
234 | + | ||
235 | +#: plugins/software_communities/lib/create_software.rb:73 | ||
236 | +msgid "User \"%{user}\" just requested to create software %{software}.\n You have to approve or reject it through the \"Pending Validations\"\n section in your control panel.\n" | ||
237 | +msgstr "" | ||
238 | + | ||
239 | +#: plugins/software_communities/lib/create_software.rb:80 | ||
240 | +msgid "Your request for registering software %{software} at %{environment} was\n just sent. Environment administrator will receive it and will approve or\n reject your request according to his methods and criteria.\n\n You will be notified as soon as environment administrator has a position\n about your request." | ||
241 | +msgstr "" | ||
242 | + | ||
243 | +#: plugins/software_communities/lib/create_software.rb:90 | ||
244 | +msgid "Your request for registering software %{software} at %{environment} was\n not approved by the environment administrator. The following explanation\n was given: \n\n%{explanation}" | ||
245 | +msgstr "" | ||
246 | + | ||
247 | +#: plugins/software_communities/lib/create_software.rb:99 | ||
248 | +msgid "Your request for registering the software \"%{software}\" was approved.\n You can access %{url} and finish the registration of your software." | ||
249 | +msgstr "" | ||
250 | + | ||
251 | +#: plugins/software_communities/lib/software_communities_plugin.rb:17 | ||
252 | +msgid "Add Public Software and MPOG features." | ||
253 | +msgstr "" | ||
254 | + | ||
255 | +#: plugins/software_communities/lib/software_communities_plugin.rb:90 | ||
256 | +msgid "Rate this software" | ||
257 | +msgstr "" | ||
258 | + | ||
259 | +#: plugins/software_communities/lib/software_communities_plugin.rb:136 | ||
260 | +msgid "Software Info" | ||
261 | +msgstr "" | ||
262 | + | ||
263 | +#: plugins/software_communities/lib/software_communities_plugin.rb:147 | ||
264 | +msgid "Create a new software" | ||
265 | +msgstr "" | ||
266 | + | ||
267 | +#: plugins/software_communities/lib/software_communities_plugin.rb:157 | ||
268 | +msgid "Software" | ||
269 | +msgstr "" | ||
270 | + | ||
271 | +#: plugins/software_communities/lib/repository_block.rb:8 | ||
272 | +msgid "Repository Link" | ||
273 | +msgstr "" | ||
274 | + | ||
275 | +#: plugins/software_communities/lib/repository_block.rb:12 | ||
276 | +msgid "This block displays the repository link of a software." | ||
277 | +msgstr "" | ||
278 | + | ||
279 | +#: plugins/software_communities/lib/software_info.rb:151 | ||
280 | +msgid "Name is too long (maximum is %{count} characters)" | ||
281 | +msgstr "" | ||
282 | + | ||
283 | +#: plugins/software_communities/lib/software_info.rb:219 | ||
284 | +msgid "can't have more than 10 characteres" | ||
285 | +msgstr "" | ||
286 | + | ||
287 | +#: plugins/software_communities/lib/software_info.rb:222 | ||
288 | +msgid "can't have whitespaces" | ||
289 | +msgstr "" | ||
290 | + | ||
291 | +#: plugins/software_communities/lib/software_info.rb:230 plugins/software_communities/lib/software_info.rb:236 | ||
292 | +#: plugins/software_communities/lib/software_info.rb:242 | ||
293 | +msgid ": at least one must be filled" | ||
294 | +msgstr "" | ||
295 | + | ||
296 | +#: plugins/software_communities/lib/software_information_block.rb:8 | ||
297 | +msgid "Basic Software Information" | ||
298 | +msgstr "" | ||
299 | + | ||
300 | +#: plugins/software_communities/lib/software_information_block.rb:12 | ||
301 | +msgid "This block displays the basic information of a software profile." | ||
302 | +msgstr "" | ||
303 | + | ||
304 | +#: plugins/software_communities/lib/software_language.rb:10 | ||
305 | +msgid "Software language is too long (maximum is 20 characters)" | ||
306 | +msgstr "" | ||
307 | + | ||
308 | +#: plugins/software_communities/lib/categories_software_block.rb:8 | ||
309 | +msgid "Categories Softwares" | ||
310 | +msgstr "" | ||
311 | + | ||
312 | +#: plugins/software_communities/lib/categories_software_block.rb:12 | ||
313 | +msgid "This block displays the categories and the amount of softwares for\n each category." | ||
314 | +msgstr "" | ||
315 | + | ||
316 | +#: plugins/software_communities/lib/softwares_block.rb:8 | ||
317 | +msgid "Softwares" | ||
318 | +msgstr "" | ||
319 | + | ||
320 | +#: plugins/software_communities/lib/softwares_block.rb:13 | ||
321 | +msgid "{#} generic software" | ||
322 | +msgid_plural "{#} generic softwares" | ||
323 | +msgstr[0] "" | ||
324 | +msgstr[1] "" | ||
325 | + | ||
326 | +#: plugins/software_communities/lib/softwares_block.rb:15 | ||
327 | +msgid "{#} public software" | ||
328 | +msgid_plural "{#} public softwares" | ||
329 | +msgstr[0] "" | ||
330 | +msgstr[1] "" | ||
331 | + | ||
332 | +#: plugins/software_communities/lib/softwares_block.rb:17 | ||
333 | +msgid "{#} software" | ||
334 | +msgid_plural "{#} softwares" | ||
335 | +msgstr[0] "" | ||
336 | +msgstr[1] "" | ||
337 | + | ||
338 | +#: plugins/software_communities/lib/softwares_block.rb:22 | ||
339 | +msgid "This block displays the softwares in which the user is a member." | ||
340 | +msgstr "" | ||
341 | + | ||
342 | +#: plugins/software_communities/lib/softwares_block.rb:31 plugins/software_communities/lib/softwares_block.rb:37 | ||
343 | +msgid "softwares|View all" | ||
344 | +msgstr "" | ||
345 | + | ||
346 | +#: plugins/software_communities/views/profile/members.html.erb:3 plugins/software_communities/views/profile/members.html.erb:26 | ||
347 | +msgid "Members" | ||
348 | +msgstr "" | ||
349 | + | ||
350 | +#: plugins/software_communities/views/profile/members.html.erb:4 | ||
351 | +msgid "%s" | ||
352 | +msgstr "" | ||
353 | + | ||
354 | +#: plugins/software_communities/views/profile/members.html.erb:43 | ||
355 | +msgid "Administrators" | ||
356 | +msgstr "" | ||
357 | + | ||
358 | +#: plugins/software_communities/views/profile/members.html.erb:57 | ||
359 | +msgid "Go back" | ||
360 | +msgstr "" | ||
361 | + | ||
362 | +#: plugins/software_communities/views/profile/members.html.erb:60 | ||
363 | +msgid "Invite people to join" | ||
364 | +msgstr "" | ||
365 | + | ||
366 | +#: plugins/software_communities/views/profile/members.html.erb:63 | ||
367 | +msgid "Send e-mail to members" | ||
368 | +msgstr "" | ||
369 | + | ||
370 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:3 | ||
371 | +#: plugins/software_communities/views/_main_software_editor_extras.html.erb:1 | ||
372 | +msgid "Software Information" | ||
373 | +msgstr "" | ||
374 | + | ||
375 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:6 | ||
376 | +msgid "Name:" | ||
377 | +msgstr "" | ||
378 | + | ||
379 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:7 | ||
380 | +msgid "Adherent to e_mag:" | ||
381 | +msgstr "" | ||
382 | + | ||
383 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:7 plugins/software_communities/views/profile/_software_tab.html.erb:8 | ||
384 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:9 | ||
385 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:10 | ||
386 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:11 | ||
387 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:49 | ||
388 | +msgid "Yes" | ||
389 | +msgstr "" | ||
390 | + | ||
391 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:7 plugins/software_communities/views/profile/_software_tab.html.erb:8 | ||
392 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:9 | ||
393 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:10 | ||
394 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:11 | ||
395 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:50 | ||
396 | +msgid "No" | ||
397 | +msgstr "" | ||
398 | + | ||
399 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:8 | ||
400 | +msgid "Adherent to icp_brasil:" | ||
401 | +msgstr "" | ||
402 | + | ||
403 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:9 | ||
404 | +msgid "Adherent to e_ping:" | ||
405 | +msgstr "" | ||
406 | + | ||
407 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:10 | ||
408 | +msgid "Adherent to e_arq:" | ||
409 | +msgstr "" | ||
410 | + | ||
411 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:11 | ||
412 | +msgid "Internacionalizable:" | ||
413 | +msgstr "" | ||
414 | + | ||
415 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:12 | ||
416 | +msgid "Operating Platform:" | ||
417 | +msgstr "" | ||
418 | + | ||
419 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:13 | ||
420 | +msgid "Demonstration URL:" | ||
421 | +msgstr "" | ||
422 | + | ||
423 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:14 | ||
424 | +msgid "Short Name:" | ||
425 | +msgstr "" | ||
426 | + | ||
427 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:15 | ||
428 | +msgid "Objectives:" | ||
429 | +msgstr "" | ||
430 | + | ||
431 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:16 | ||
432 | +msgid "Features:" | ||
433 | +msgstr "" | ||
434 | + | ||
435 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:19 | ||
436 | +msgid "Version:" | ||
437 | +msgstr "" | ||
438 | + | ||
439 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:20 | ||
440 | +msgid "Link:" | ||
441 | +msgstr "" | ||
442 | + | ||
443 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:25 | ||
444 | +msgid "Show Libraries" | ||
445 | +msgstr "" | ||
446 | + | ||
447 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:26 | ||
448 | +msgid "Hide Libraries" | ||
449 | +msgstr "" | ||
450 | + | ||
451 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:35 | ||
452 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:74 | ||
453 | +msgid "Libraries" | ||
454 | +msgstr "" | ||
455 | + | ||
456 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:53 | ||
457 | +msgid "Show Database" | ||
458 | +msgstr "" | ||
459 | + | ||
460 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:54 | ||
461 | +msgid "Hide Database" | ||
462 | +msgstr "" | ||
463 | + | ||
464 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:63 | ||
465 | +msgid "Software Databases" | ||
466 | +msgstr "" | ||
467 | + | ||
468 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:81 | ||
469 | +msgid "Show Languages" | ||
470 | +msgstr "" | ||
471 | + | ||
472 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:82 | ||
473 | +msgid "Hide Languages" | ||
474 | +msgstr "" | ||
475 | + | ||
476 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:91 | ||
477 | +msgid "Software Languages" | ||
478 | +msgstr "" | ||
479 | + | ||
480 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:109 | ||
481 | +msgid "Show Operating Systems" | ||
482 | +msgstr "" | ||
483 | + | ||
484 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:110 | ||
485 | +msgid "Hide Operating Systems" | ||
486 | +msgstr "" | ||
487 | + | ||
488 | +#: plugins/software_communities/views/profile/_software_tab.html.erb:120 | ||
489 | +msgid "Operating System" | ||
490 | +msgstr "" | ||
491 | + | ||
492 | +#: plugins/software_communities/views/profile/index.html.erb:17 | ||
493 | +msgid "Control Panel" | ||
494 | +msgstr "" | ||
495 | + | ||
496 | +#: plugins/software_communities/views/profile/_profile_members_list.html.erb:2 | ||
497 | +msgid "Sort by:" | ||
498 | +msgstr "" | ||
499 | + | ||
500 | +#: plugins/software_communities/views/profile/_profile_members_list.html.erb:5 | ||
501 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:52 | ||
502 | +msgid "Name A-Z" | ||
503 | +msgstr "" | ||
504 | + | ||
505 | +#: plugins/software_communities/views/profile/_profile_members_list.html.erb:6 | ||
506 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:53 | ||
507 | +msgid "Name Z-A" | ||
508 | +msgstr "" | ||
509 | + | ||
510 | +#: plugins/software_communities/views/box_organizer/_software_tab_data_block.html.erb:5 | ||
511 | +msgid "Which blog should have its posts displayed: " | ||
512 | +msgstr "" | ||
513 | + | ||
514 | +#: plugins/software_communities/views/box_organizer/_software_tab_data_block.html.erb:13 | ||
515 | +msgid "This community has no blogs" | ||
516 | +msgstr "" | ||
517 | + | ||
518 | +#: plugins/software_communities/views/box_organizer/_softwares_block.html.erb:2 | ||
519 | +msgid "Limit of items" | ||
520 | +msgstr "" | ||
521 | + | ||
522 | +#: plugins/software_communities/views/box_organizer/_softwares_block.html.erb:3 | ||
523 | +msgid "Software Type:" | ||
524 | +msgstr "" | ||
525 | + | ||
526 | +#: plugins/software_communities/views/box_organizer/_statistic_block.html.erb:5 | ||
527 | +msgid "Benefited People" | ||
528 | +msgstr "" | ||
529 | + | ||
530 | +#: plugins/software_communities/views/box_organizer/_statistic_block.html.erb:6 | ||
531 | +#: plugins/software_communities/views/box_organizer/_statistic_block.html.erb:8 | ||
532 | +msgid "Portal suggested value: " | ||
533 | +msgstr "" | ||
534 | + | ||
535 | +#: plugins/software_communities/views/box_organizer/_statistic_block.html.erb:7 | ||
536 | +msgid "Saved Resources" | ||
537 | +msgstr "" | ||
538 | + | ||
539 | +#: plugins/software_communities/views/box_organizer/_download_block.html.erb:4 | ||
540 | +msgid "Link" | ||
541 | +msgstr "" | ||
542 | + | ||
543 | +#: plugins/software_communities/views/box_organizer/_download_block.html.erb:5 | ||
544 | +msgid "Platforms" | ||
545 | +msgstr "" | ||
546 | + | ||
547 | +#: plugins/software_communities/views/box_organizer/_download_block.html.erb:6 plugins/software_communities/views/blocks/download.html.erb:17 | ||
548 | +msgid "Minimum Requirements" | ||
549 | +msgstr "" | ||
550 | + | ||
551 | +#: plugins/software_communities/views/box_organizer/_download_block.html.erb:7 | ||
552 | +msgid "Size:" | ||
553 | +msgstr "" | ||
554 | + | ||
555 | +#: plugins/software_communities/views/box_organizer/_download_block.html.erb:16 | ||
556 | +msgid "New link" | ||
557 | +msgstr "" | ||
558 | + | ||
559 | +#: plugins/software_communities/views/box_organizer/_wiki_block.html.erb:3 | ||
560 | +msgid "Wiki link" | ||
561 | +msgstr "" | ||
562 | + | ||
563 | +#: plugins/software_communities/views/search/_catalog_filter.html.erb:4 | ||
564 | +#: plugins/software_communities/views/blocks/categories_and_tags.html.erb:2 | ||
565 | +msgid "Categories" | ||
566 | +msgstr "" | ||
567 | + | ||
568 | +#: plugins/software_communities/views/search/_catalog_filter.html.erb:10 | ||
569 | +#: plugins/software_communities/views/search/_full_community.html.erb:35 | ||
570 | +#: plugins/software_communities/views/search/_catalog_result_list.html.erb:41 | ||
571 | +#: plugins/software_communities/views/blocks/categories_software.html.erb:15 | ||
572 | +msgid "\"#{category.name}\"" | ||
573 | +msgstr "" | ||
574 | + | ||
575 | +#: plugins/software_communities/views/search/_catalog_filter.html.erb:16 | ||
576 | +msgid "More options" | ||
577 | +msgstr "" | ||
578 | + | ||
579 | +#: plugins/software_communities/views/search/_catalog_filter.html.erb:18 | ||
580 | +msgid "Clean up" | ||
581 | +msgstr "" | ||
582 | + | ||
583 | +#: plugins/software_communities/views/search/_catalog_filter.html.erb:19 | ||
584 | +msgid "Close" | ||
585 | +msgstr "" | ||
586 | + | ||
587 | +#: plugins/software_communities/views/search/_full_community.html.erb:27 | ||
588 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:65 | ||
589 | +msgid "Software Categories" | ||
590 | +msgstr "" | ||
591 | + | ||
592 | +#: plugins/software_communities/views/search/_full_community.html.erb:46 | ||
593 | +msgid "This software doesn't have categories" | ||
594 | +msgstr "" | ||
595 | + | ||
596 | +#: plugins/software_communities/views/search/_catalog_result_list.html.erb:12 | ||
597 | +msgid "see all (%d)" | ||
598 | +msgstr "" | ||
599 | + | ||
600 | +#: plugins/software_communities/views/search/_catalog_result_list.html.erb:34 | ||
601 | +msgid "No software found. Try more general filters" | ||
602 | +msgstr "" | ||
603 | + | ||
604 | +#: plugins/software_communities/views/search/_catalog_result_list.html.erb:36 | ||
605 | +msgid "No software found. Try more general filters or check the software category individually" | ||
606 | +msgstr "" | ||
607 | + | ||
608 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:3 | ||
609 | +msgid "Search Public Software Catalog" | ||
610 | +msgstr "" | ||
611 | + | ||
612 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:14 | ||
613 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:4 | ||
614 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:7 | ||
615 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:10 | ||
616 | +msgid "Public Software" | ||
617 | +msgstr "" | ||
618 | + | ||
619 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:15 | ||
620 | +msgid "Projects that have passed by the Avalia SPB process according to the requirements of IN 01/2011." | ||
621 | +msgstr "" | ||
622 | + | ||
623 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:18 | ||
624 | +msgid "All" | ||
625 | +msgstr "" | ||
626 | + | ||
627 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:19 | ||
628 | +msgid "Projects included in the portal as cases provided by the IN 01/2011." | ||
629 | +msgstr "" | ||
630 | + | ||
631 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:24 | ||
632 | +msgid "Type words about the software you're looking for (the search begins after 3 characters)" | ||
633 | +msgstr "" | ||
634 | + | ||
635 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:27 | ||
636 | +msgid "Filter" | ||
637 | +msgstr "" | ||
638 | + | ||
639 | +#: plugins/software_communities/views/search/_software_search_form.html.erb:54 | ||
640 | +msgid "Relevance" | ||
641 | +msgstr "" | ||
642 | + | ||
643 | +#: plugins/software_communities/views/search/software_infos.html.erb:6 | ||
644 | +msgid "Type words about the %s you're looking for" | ||
645 | +msgstr "" | ||
646 | + | ||
647 | +#: plugins/software_communities/views/_main_software_editor_extras.html.erb:10 | ||
648 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:56 | ||
649 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:14 | ||
650 | +msgid "Finality" | ||
651 | +msgstr "" | ||
652 | + | ||
653 | +#: plugins/software_communities/views/_main_software_editor_extras.html.erb:15 | ||
654 | +msgid "Licenses" | ||
655 | +msgstr "" | ||
656 | + | ||
657 | +#: plugins/software_communities/views/_main_software_editor_extras.html.erb:20 | ||
658 | +msgid "License link" | ||
659 | +msgstr "" | ||
660 | + | ||
661 | +#: plugins/software_communities/views/_main_software_editor_extras.html.erb:29 | ||
662 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:89 | ||
663 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:45 | ||
664 | +msgid "Link to Repository: " | ||
665 | +msgstr "" | ||
666 | + | ||
667 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:4 | ||
668 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:7 | ||
669 | +msgid "Public software" | ||
670 | +msgstr "" | ||
671 | + | ||
672 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:12 | ||
673 | +msgid "Adherent to e-PING ?" | ||
674 | +msgstr "" | ||
675 | + | ||
676 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:21 | ||
677 | +msgid "Adherent to e-MAG ?" | ||
678 | +msgstr "" | ||
679 | + | ||
680 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:30 | ||
681 | +msgid "Adherent to ICP-Brasil ?" | ||
682 | +msgstr "" | ||
683 | + | ||
684 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:39 | ||
685 | +msgid "Adherent to e-ARQ ?" | ||
686 | +msgstr "" | ||
687 | + | ||
688 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:48 | ||
689 | +msgid "Internacionalizable ?" | ||
690 | +msgstr "" | ||
691 | + | ||
692 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:59 | ||
693 | +msgid "Operating Platform" | ||
694 | +msgstr "" | ||
695 | + | ||
696 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:64 | ||
697 | +msgid "Features" | ||
698 | +msgstr "" | ||
699 | + | ||
700 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:69 | ||
701 | +msgid "Demonstration url" | ||
702 | +msgstr "" | ||
703 | + | ||
704 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:82 | ||
705 | +msgid "Operating Systems" | ||
706 | +msgstr "" | ||
707 | + | ||
708 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:90 | ||
709 | +msgid "Programming languages" | ||
710 | +msgstr "" | ||
711 | + | ||
712 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_public_software_info.html.erb:97 | ||
713 | +msgid "Databases" | ||
714 | +msgstr "" | ||
715 | + | ||
716 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_database_fields.html.erb:11 | ||
717 | +msgid "New Database" | ||
718 | +msgstr "" | ||
719 | + | ||
720 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_license_info_fields.html.erb:5 | ||
721 | +msgid "Autocomplete field, type some license" | ||
722 | +msgstr "" | ||
723 | + | ||
724 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_license_info_fields.html.erb:8 | ||
725 | +msgid "Read license" | ||
726 | +msgstr "" | ||
727 | + | ||
728 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_language_fields.html.erb:11 | ||
729 | +msgid "New language" | ||
730 | +msgstr "" | ||
731 | + | ||
732 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_operating_system_fields.html.erb:11 | ||
733 | +msgid "New Operating System" | ||
734 | +msgstr "" | ||
735 | + | ||
736 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:5 | ||
737 | +msgid "Creating new software" | ||
738 | +msgstr "" | ||
739 | + | ||
740 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:9 | ||
741 | +msgid "Enter the basic information about the software.<br>\n You can add the details after you create it." | ||
742 | +msgstr "" | ||
743 | + | ||
744 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:16 | ||
745 | +msgid "Note that the creation of communities in this environment is restricted. Your request to create this new community will be sent to %{environment} administrators and will be approved or rejected according to their methods and criteria." | ||
746 | +msgstr "" | ||
747 | + | ||
748 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:22 | ||
749 | +msgid "\"Can`t create new software: #{@errors.length} errors\"" | ||
750 | +msgstr "" | ||
751 | + | ||
752 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:45 | ||
753 | +msgid "Domain" | ||
754 | +msgstr "" | ||
755 | + | ||
756 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:57 | ||
757 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:15 | ||
758 | +msgid "What is the software for?" | ||
759 | +msgstr "" | ||
760 | + | ||
761 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:64 | ||
762 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:21 | ||
763 | +msgid "Software Logo" | ||
764 | +msgstr "" | ||
765 | + | ||
766 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:69 | ||
767 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:26 | ||
768 | +msgid "Image:" | ||
769 | +msgstr "" | ||
770 | + | ||
771 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:69 | ||
772 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:26 | ||
773 | +msgid "Max size: %s (.jpg, .gif, .png)" | ||
774 | +msgstr "" | ||
775 | + | ||
776 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:76 | ||
777 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:33 | ||
778 | +msgid "License Version: " | ||
779 | +msgstr "" | ||
780 | + | ||
781 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:97 | ||
782 | +msgid "Create" | ||
783 | +msgstr "" | ||
784 | + | ||
785 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/new_software.html.erb:98 | ||
786 | +msgid "Cancel" | ||
787 | +msgstr "" | ||
788 | + | ||
789 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_main_software_editor_extras.html.erb:8 | ||
790 | +msgid "Short Name" | ||
791 | +msgstr "" | ||
792 | + | ||
793 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/edit_software.html.erb:1 | ||
794 | +msgid "Edit Software" | ||
795 | +msgstr "" | ||
796 | + | ||
797 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/edit_software.html.erb:9 | ||
798 | +msgid "Main Information" | ||
799 | +msgstr "" | ||
800 | + | ||
801 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/edit_software.html.erb:12 | ||
802 | +msgid "Specifications" | ||
803 | +msgstr "" | ||
804 | + | ||
805 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/edit_software.html.erb:18 | ||
806 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:68 | ||
807 | +msgid "Save" | ||
808 | +msgstr "" | ||
809 | + | ||
810 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/edit_software.html.erb:20 | ||
811 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:71 | ||
812 | +msgid "Back to control panel" | ||
813 | +msgstr "" | ||
814 | + | ||
815 | +#: plugins/software_communities/views/software_communities_plugin_myprofile/_library_fields.html.erb:11 | ||
816 | +msgid "New Library" | ||
817 | +msgstr "" | ||
818 | + | ||
819 | +#: plugins/software_communities/views/blocks/categories_software.html.erb:4 | ||
820 | +msgid "See more Software" | ||
821 | +msgstr "" | ||
822 | + | ||
823 | +#: plugins/software_communities/views/blocks/categories_software.html.erb:8 | ||
824 | +msgid "Categories:" | ||
825 | +msgstr "" | ||
826 | + | ||
827 | +#: plugins/software_communities/views/blocks/categories_software.html.erb:23 plugins/software_communities/views/blocks/search_catalog.html.erb:9 | ||
828 | +msgid "Access the complete catalog" | ||
829 | +msgstr "" | ||
830 | + | ||
831 | +#: plugins/software_communities/views/blocks/wiki.html.erb:2 | ||
832 | +#: plugins/software_communities/views/blocks/software_tab_data.html.erb:2 plugins/software_communities/views/blocks/download.html.erb:2 | ||
833 | +#: plugins/software_communities/views/blocks/software_information.html.erb:4 plugins/software_communities/views/blocks/repository.html.erb:2 | ||
834 | +msgid "This community needs a software to use this block" | ||
835 | +msgstr "" | ||
836 | + | ||
837 | +#: plugins/software_communities/views/blocks/wiki.html.erb:4 | ||
838 | +msgid "Wiki" | ||
839 | +msgstr "" | ||
840 | + | ||
841 | +#: plugins/software_communities/views/blocks/main_area_softwares.html.erb:23 | ||
842 | +msgid "See More" | ||
843 | +msgstr "" | ||
844 | + | ||
845 | +#: plugins/software_communities/views/blocks/search_catalog.html.erb:2 | ||
846 | +msgid "Catalog of Public Software" | ||
847 | +msgstr "" | ||
848 | + | ||
849 | +#: plugins/software_communities/views/blocks/search_catalog.html.erb:5 | ||
850 | +msgid "Search" | ||
851 | +msgstr "" | ||
852 | + | ||
853 | +#: plugins/software_communities/views/blocks/categories_and_tags.html.erb:12 | ||
854 | +msgid "Tags" | ||
855 | +msgstr "" | ||
856 | + | ||
857 | +#: plugins/software_communities/views/blocks/software_tab_data.html.erb:6 | ||
858 | +msgid "Discussions" | ||
859 | +msgstr "" | ||
860 | + | ||
861 | +#: plugins/software_communities/views/blocks/software_tab_data.html.erb:7 | ||
862 | +msgid "Blog" | ||
863 | +msgstr "" | ||
864 | + | ||
865 | +#: plugins/software_communities/views/blocks/software_tab_data.html.erb:8 | ||
866 | +msgid "Repository Feed" | ||
867 | +msgstr "" | ||
868 | + | ||
869 | +#: plugins/software_communities/views/blocks/software_statistics.html.erb:5 | ||
870 | +msgid " benefited people*" | ||
871 | +msgstr "" | ||
872 | + | ||
873 | +#: plugins/software_communities/views/blocks/software_statistics.html.erb:6 | ||
874 | +msgid " saved resources*" | ||
875 | +msgstr "" | ||
876 | + | ||
877 | +#: plugins/software_communities/views/blocks/software_statistics.html.erb:10 | ||
878 | +msgid "Data estimated by the software administrator." | ||
879 | +msgstr "" | ||
880 | + | ||
881 | +#: plugins/software_communities/views/blocks/download.html.erb:4 | ||
882 | +msgid "\"Download #{block.owner.software_info.community.name}\"" | ||
883 | +msgstr "" | ||
884 | + | ||
885 | +#: plugins/software_communities/views/blocks/download.html.erb:9 | ||
886 | +msgid "Download the software" | ||
887 | +msgstr "" | ||
888 | + | ||
889 | +#: plugins/software_communities/views/blocks/download.html.erb:15 | ||
890 | +msgid "\"#{download[:name]}\"" | ||
891 | +msgstr "" | ||
892 | + | ||
893 | +#: plugins/software_communities/views/blocks/download.html.erb:16 | ||
894 | +msgid "\"Platform:#{download[:software_description]}\"" | ||
895 | +msgstr "" | ||
896 | + | ||
897 | +#: plugins/software_communities/views/blocks/download.html.erb:23 | ||
898 | +msgid "\"License: #{block.owner.software_info.license_info.version}\"" | ||
899 | +msgstr "" | ||
900 | + | ||
901 | +#: plugins/software_communities/views/blocks/software_highlights.html.erb:13 | ||
902 | +msgid "See all" | ||
903 | +msgstr "" | ||
904 | + | ||
905 | +#: plugins/software_communities/views/blocks/_software_tab_blog.html.erb:5 | ||
906 | +msgid "This community has no posts in its blog" | ||
907 | +msgstr "" | ||
908 | + | ||
909 | +#: plugins/software_communities/views/blocks/_software_tab_blog.html.erb:13 | ||
910 | +msgid "Read more" | ||
911 | +msgstr "" | ||
912 | + | ||
913 | +#: plugins/software_communities/views/blocks/software_information.html.erb:16 | ||
914 | +msgid "Control panel" | ||
915 | +msgstr "" | ||
916 | + | ||
917 | +#: plugins/software_communities/views/blocks/software_information.html.erb:24 | ||
918 | +msgid "\"#{block.owner.software_info.acronym} - \"" | ||
919 | +msgstr "" | ||
920 | + | ||
921 | +#: plugins/software_communities/views/blocks/software_information.html.erb:25 | ||
922 | +msgid "\"#{block.owner.name}\"" | ||
923 | +msgstr "" | ||
924 | + | ||
925 | +#: plugins/software_communities/views/blocks/repository.html.erb:4 | ||
926 | +msgid "Repository" | ||
927 | +msgstr "" | ||
928 | + | ||
929 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:1 | ||
930 | +msgid "General information" | ||
931 | +msgstr "" | ||
932 | + | ||
933 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:40 | ||
934 | +msgid "Address" | ||
935 | +msgstr "" | ||
936 | + | ||
937 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:46 | ||
938 | +msgid "WARNING!" | ||
939 | +msgstr "" | ||
940 | + | ||
941 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:47 | ||
942 | +msgid "You are about to change the address, and this will break external links to the homepage or to content inside it. Do you really want to change?" | ||
943 | +msgstr "" | ||
944 | + | ||
945 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:63 | ||
946 | +msgid "Enable \"contact us\"" | ||
947 | +msgstr "" | ||
948 | + | ||
949 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:68 | ||
950 | +msgid "Products/Services catalog" | ||
951 | +msgstr "" | ||
952 | + | ||
953 | +#: plugins/software_communities/views/profile_editor/_software_community.html.erb:69 | ||
954 | +msgid "Number of products/services displayed per page on catalog" | ||
955 | +msgstr "" | ||
956 | + | ||
957 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:4 | ||
958 | +msgid "Configure Software Community" | ||
959 | +msgstr "" | ||
960 | + | ||
961 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:8 | ||
962 | +msgid "Set the basic settings of the software associated community" | ||
963 | +msgstr "" | ||
964 | + | ||
965 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:18 | ||
966 | +msgid "This profile is a template" | ||
967 | +msgstr "" | ||
968 | + | ||
969 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:24 | ||
970 | +msgid "Privacy options" | ||
971 | +msgstr "" | ||
972 | + | ||
973 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:28 | ||
974 | +msgid "Public — show my contents to all internet users" | ||
975 | +msgstr "" | ||
976 | + | ||
977 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:31 | ||
978 | +msgid "Private — show my contents only to friends" | ||
979 | +msgstr "" | ||
980 | + | ||
981 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:35 | ||
982 | +msgid "Public — show content of this group to all internet users" | ||
983 | +msgstr "" | ||
984 | + | ||
985 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:38 | ||
986 | +msgid "Private — show content of this group only to members" | ||
987 | +msgstr "" | ||
988 | + | ||
989 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:43 | ||
990 | +msgid "Page to redirect after login" | ||
991 | +msgstr "" | ||
992 | + | ||
993 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:47 | ||
994 | +msgid "Translations" | ||
995 | +msgstr "" | ||
996 | + | ||
997 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:49 | ||
998 | +msgid "Automaticaly redirect the visitor to the article translated to his/her language" | ||
999 | +msgstr "" | ||
1000 | + | ||
1001 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:53 | ||
1002 | +msgid "Suggestions" | ||
1003 | +msgstr "" | ||
1004 | + | ||
1005 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:55 | ||
1006 | +msgid "Send me relationship suggestions by email" | ||
1007 | +msgstr "" | ||
1008 | + | ||
1009 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:77 | ||
1010 | +msgid "Delete software and community" | ||
1011 | +msgstr "" | ||
1012 | + | ||
1013 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:80 | ||
1014 | +msgid "Deactivate software and community" | ||
1015 | +msgstr "" | ||
1016 | + | ||
1017 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:80 | ||
1018 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:82 | ||
1019 | +msgid "Are you sure you want to deactivate this profile?" | ||
1020 | +msgstr "" | ||
1021 | + | ||
1022 | +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:82 | ||
1023 | +msgid "Activate software and community" | ||
1024 | +msgstr "" | ||
1025 | + | ||
1026 | +#: plugins/software_communities/views/profile_editor/_first_edit_software_community_extras.html.erb:3 | ||
1027 | +msgid "Step 1 - Software Creation" | ||
1028 | +msgstr "" | ||
1029 | + | ||
1030 | +#: plugins/software_communities/views/profile_editor/_first_edit_software_community_extras.html.erb:7 | ||
1031 | +msgid "Step 2 - Community Settings" | ||
1032 | +msgstr "" | ||
1033 | + | ||
1034 | +#: plugins/software_communities/views/comments_extra_fields.html.erb:3 | ||
1035 | +msgid "Additional informations" | ||
1036 | +msgstr "" | ||
1037 | + | ||
1038 | +#: plugins/software_communities/views/comments_extra_fields.html.erb:11 | ||
1039 | +msgid "Number of Beneficiaries" | ||
1040 | +msgstr "" | ||
1041 | + | ||
1042 | +#: plugins/software_communities/views/comments_extra_fields.html.erb:17 | ||
1043 | +msgid "Saved resources" | ||
1044 | +msgstr "" |
src/software_communities/public/blocks/software-download.js
0 → 100644
@@ -0,0 +1,51 @@ | @@ -0,0 +1,51 @@ | ||
1 | +modulejs.define('SoftwareDownload', ['jquery', 'NoosferoRoot'], function($, NoosferoRoot) { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + var AJAX_URL = { | ||
5 | + get_download_template: | ||
6 | + NoosferoRoot.urlWithSubDirectory("/plugin/software_communities/get_block_template") | ||
7 | + }; | ||
8 | + | ||
9 | + var $download_html_template; | ||
10 | + | ||
11 | + function getDownloadListTemplate() { | ||
12 | + var block_template = sessionStorage.getItem('download_list_block_template'); | ||
13 | + | ||
14 | + if(block_template && block_template.length > 0) { | ||
15 | + $download_html_template = block_template; | ||
16 | + } else { | ||
17 | + $.get(AJAX_URL.get_download_template, function(response) { | ||
18 | + $download_html_template = response; | ||
19 | + sessionStorage.setItem('download_list_block_template', response); | ||
20 | + }); | ||
21 | + } | ||
22 | + } | ||
23 | + | ||
24 | + | ||
25 | + function SoftwareDownload() { | ||
26 | + getDownloadListTemplate(); | ||
27 | + } | ||
28 | + | ||
29 | + | ||
30 | + SoftwareDownload.prototype.addNewDonwload = function() { | ||
31 | + var new_download = $($download_html_template); | ||
32 | + $("#droppable-list-downloads").append(new_download); | ||
33 | + } | ||
34 | + | ||
35 | + | ||
36 | + SoftwareDownload.prototype.deleteDownload = function(element) { | ||
37 | + var delete_download = $(element).parent().parent().parent().remove(); | ||
38 | + } | ||
39 | + | ||
40 | + | ||
41 | + return { | ||
42 | + isCurrentPage: function() { | ||
43 | + return $('.download-block').length !== 0; | ||
44 | + }, | ||
45 | + | ||
46 | + | ||
47 | + init: function() { | ||
48 | + window.softwareDownload = new SoftwareDownload(); | ||
49 | + } | ||
50 | + } | ||
51 | +}); |
@@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
1 | +(function() { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + var dependencies = [ | ||
5 | + 'ControlPanel', | ||
6 | + 'EditSoftware', | ||
7 | + 'NewSoftware', | ||
8 | + 'SearchSoftwareCatalog', | ||
9 | + 'SoftwareDownload', | ||
10 | + 'ProfileTabsSoftware', | ||
11 | + 'NewCommunity', | ||
12 | + 'CommentsSoftwareExtraFields' | ||
13 | + ]; | ||
14 | + | ||
15 | + | ||
16 | + modulejs.define('Initializer', dependencies, function() { | ||
17 | + var __dependencies = arguments; | ||
18 | + | ||
19 | + | ||
20 | + function call_dependency(dependency) { | ||
21 | + if( dependency.isCurrentPage() ) { | ||
22 | + dependency.init(); | ||
23 | + } | ||
24 | + } | ||
25 | + | ||
26 | + | ||
27 | + return { | ||
28 | + init: function() { | ||
29 | + for(var i=0, len = __dependencies.length; i < len; i++) { | ||
30 | + call_dependency(__dependencies[i]); | ||
31 | + } | ||
32 | + } | ||
33 | + }; | ||
34 | + }); | ||
35 | +})(); |
@@ -0,0 +1,64 @@ | @@ -0,0 +1,64 @@ | ||
1 | +modulejs.define('AutoComplete', ['jquery'], function($) { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + | ||
5 | + function get_hidden_description_field(autocomplete_field, klass) { | ||
6 | + var field = $(autocomplete_field); | ||
7 | + field = field.parent().parent().find(klass); | ||
8 | + return field; | ||
9 | + } | ||
10 | + | ||
11 | + | ||
12 | + function verify_autocomplete(field, klass) { | ||
13 | + var field = $(field); | ||
14 | + var selected = get_hidden_description_field(field, klass); | ||
15 | + var message_error = $(field).parent().find(".autocomplete_validation_message"); | ||
16 | + | ||
17 | + if( field.length === 0 || selected.val().length === 0 ) { | ||
18 | + message_error.removeClass("hide-field"); | ||
19 | + selected.val(""); | ||
20 | + | ||
21 | + message_error.show(); | ||
22 | + } else { | ||
23 | + field.val(selected.attr("data-label")); | ||
24 | + message_error.hide(); | ||
25 | + } | ||
26 | + } | ||
27 | + | ||
28 | + | ||
29 | + function enable_autocomplete(field_name, field_value_class, autocomplete_class, ajax_url, select_callback) { | ||
30 | + $(autocomplete_class).autocomplete({ | ||
31 | + source : function(request, response){ | ||
32 | + $.ajax({ | ||
33 | + type: "GET", | ||
34 | + url: ajax_url, | ||
35 | + data: {query: request.term, field: field_name}, | ||
36 | + success: function(result){ | ||
37 | + response(result); | ||
38 | + } | ||
39 | + }); | ||
40 | + }, | ||
41 | + | ||
42 | + minLength: 0, | ||
43 | + | ||
44 | + select : function (event, selected) { | ||
45 | + var description = get_hidden_description_field(this, field_value_class); | ||
46 | + description.val(selected.item.id); | ||
47 | + description.attr("data-label", selected.item.label); | ||
48 | + | ||
49 | + if( select_callback !== undefined ) { | ||
50 | + select_callback(selected); | ||
51 | + } | ||
52 | + } | ||
53 | + }).blur(function(){ | ||
54 | + verify_autocomplete(this, field_value_class); | ||
55 | + }).click(function(){ | ||
56 | + $(this).autocomplete("search", ""); | ||
57 | + }); | ||
58 | + } | ||
59 | + | ||
60 | + | ||
61 | + return { | ||
62 | + enable: enable_autocomplete | ||
63 | + } | ||
64 | +}); | ||
0 | \ No newline at end of file | 65 | \ No newline at end of file |
@@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
1 | +modulejs.define('SelectElement', function() { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + | ||
5 | + function SelectElement(name, id) { | ||
6 | + this.select = document.createElement("select"); | ||
7 | + } | ||
8 | + | ||
9 | + | ||
10 | + SelectElement.prototype.setAttr = function(attr, value) { | ||
11 | + return this.select.setAttribute(attr, value); | ||
12 | + }; | ||
13 | + | ||
14 | + | ||
15 | + SelectElement.prototype.addOption = function(option) { | ||
16 | + return this.select.add(option); | ||
17 | + }; | ||
18 | + | ||
19 | + | ||
20 | + SelectElement.prototype.getSelect = function() { | ||
21 | + return this.select; | ||
22 | + }; | ||
23 | + | ||
24 | + | ||
25 | + SelectElement.generateOption = function(value, text) { | ||
26 | + var option; | ||
27 | + option = document.createElement("option"); | ||
28 | + option.setAttribute("value", value); | ||
29 | + option.text = text; | ||
30 | + return option; | ||
31 | + }; | ||
32 | + | ||
33 | + | ||
34 | + return SelectElement; | ||
35 | +}); |
src/software_communities/public/lib/select-field-choices.js
0 → 100644
@@ -0,0 +1,81 @@ | @@ -0,0 +1,81 @@ | ||
1 | +modulejs.define('SelectFieldChoices', ['jquery', 'SelectElement'], function($, SelectElement) { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + | ||
5 | + function SelectFieldChoices(state_id, city_id, state_url) { | ||
6 | + this.state_id = state_id; | ||
7 | + this.input_html = $(state_id).parent().html(); | ||
8 | + this.old_value = $(state_id).val(); | ||
9 | + this.city_parent_div = $(city_id).parent().parent().parent(); | ||
10 | + this.state_url = state_url; | ||
11 | + } | ||
12 | + | ||
13 | + | ||
14 | + SelectFieldChoices.prototype.getCurrentStateElement = function() { | ||
15 | + return $(this.state_id); | ||
16 | + }; | ||
17 | + | ||
18 | + | ||
19 | + SelectFieldChoices.prototype.replaceWith = function(html) { | ||
20 | + var parent_div = this.getCurrentStateElement().parent(); | ||
21 | + parent_div.html(html); | ||
22 | + }; | ||
23 | + | ||
24 | + | ||
25 | + SelectFieldChoices.prototype.generateSelect = function(state_list) { | ||
26 | + var select_element, option; | ||
27 | + | ||
28 | + select_element = new SelectElement(); | ||
29 | + select_element.setAttr("name", "profile_data[state]"); | ||
30 | + select_element.setAttr("id", "state_field"); | ||
31 | + select_element.setAttr("class", "type-select valid"); | ||
32 | + | ||
33 | + state_list.forEach(function(state) { | ||
34 | + option = SelectElement.generateOption(state, state); | ||
35 | + select_element.addOption(option); | ||
36 | + }); | ||
37 | + | ||
38 | + return select_element.getSelect(); | ||
39 | + }; | ||
40 | + | ||
41 | + | ||
42 | + SelectFieldChoices.prototype.replaceStateWithSelectElement = function() { | ||
43 | + var klass = this; | ||
44 | + | ||
45 | + $.get(this.state_url, function(response) { | ||
46 | + var select_html; | ||
47 | + | ||
48 | + if (response.length > 0) { | ||
49 | + select_html = klass.generateSelect(response); | ||
50 | + klass.replaceWith(select_html); | ||
51 | + | ||
52 | + if (klass.old_value.length !== 0 && response.include(klass.old_value)) { | ||
53 | + klass.getCurrentStateElement().val(klass.old_value); | ||
54 | + } | ||
55 | + } | ||
56 | + }); | ||
57 | + }; | ||
58 | + | ||
59 | + | ||
60 | + SelectFieldChoices.prototype.replaceStateWithInputElement = function() { | ||
61 | + this.replaceWith(this.input_html); | ||
62 | + }; | ||
63 | + | ||
64 | + | ||
65 | + SelectFieldChoices.prototype.hideCity = function() { | ||
66 | + this.city_parent_div.addClass("mpog_hidden_field"); | ||
67 | + }; | ||
68 | + | ||
69 | + | ||
70 | + SelectFieldChoices.prototype.showCity = function() { | ||
71 | + this.city_parent_div.removeClass("mpog_hidden_field"); | ||
72 | + }; | ||
73 | + | ||
74 | + | ||
75 | + SelectFieldChoices.prototype.actualFieldIsInput = function() { | ||
76 | + return this.getCurrentStateElement().attr("type") === "text"; | ||
77 | + }; | ||
78 | + | ||
79 | + | ||
80 | + return SelectFieldChoices; | ||
81 | +}); |
src/software_communities/public/lib/software-catalog-component.js
0 → 100644
@@ -0,0 +1,38 @@ | @@ -0,0 +1,38 @@ | ||
1 | +modulejs.define('SoftwareCatalogComponent', ['jquery'], function($) { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + var dispatch_ajax_function; | ||
5 | + | ||
6 | + function clearCatalogCheckbox() { | ||
7 | + $("#group-categories input:checked").each(function() { | ||
8 | + $(this).prop('checked', false); | ||
9 | + }); | ||
10 | + | ||
11 | + dispatch_ajax_function(true); | ||
12 | + } | ||
13 | + | ||
14 | + | ||
15 | + function selectCheckboxCategory(dispatch_ajax) { | ||
16 | + dispatch_ajax_function(true); | ||
17 | + } | ||
18 | + | ||
19 | + | ||
20 | + function selectProjectSoftwareCheckbox() { | ||
21 | + dispatch_ajax_function(true); | ||
22 | + } | ||
23 | + | ||
24 | + | ||
25 | + function set_events() { | ||
26 | + $("#cleanup-filter-catalg").click(clearCatalogCheckbox); | ||
27 | + $(".categories-catalog").click(selectCheckboxCategory); | ||
28 | + $(".project-software").click(selectProjectSoftwareCheckbox); | ||
29 | + } | ||
30 | + | ||
31 | + return { | ||
32 | + init: function(dispatch_ajax) { | ||
33 | + dispatch_ajax_function = dispatch_ajax; | ||
34 | + set_events(); | ||
35 | + }, | ||
36 | + } | ||
37 | +}); | ||
38 | + |
@@ -0,0 +1,101 @@ | @@ -0,0 +1,101 @@ | ||
1 | +Accumulo | ||
2 | +Adabas | ||
3 | +Aerospike | ||
4 | +AllegroGraph | ||
5 | +Altibase | ||
6 | +Berkeley DB | ||
7 | +Caché | ||
8 | +Cassandra | ||
9 | +CloudSearch | ||
10 | +Cloudant | ||
11 | +Coherence | ||
12 | +CouchDB | ||
13 | +Couchbase | ||
14 | +D3 | ||
15 | +DB2 | ||
16 | +DataEase | ||
17 | +Datameer | ||
18 | +Db4o | ||
19 | +Derby | ||
20 | +Drizzle | ||
21 | +DynamoDB | ||
22 | +Ehcache | ||
23 | +Elasticsearch | ||
24 | +Endeca | ||
25 | +EnterpriseDB | ||
26 | +FileMaker | ||
27 | +Firebird | ||
28 | +GemFire | ||
29 | +Google BigQuery | ||
30 | +Google Search Appliance | ||
31 | +Greenplum | ||
32 | +H2 | ||
33 | +HBase | ||
34 | +Hazelcast | ||
35 | +Hive | ||
36 | +HyperSQL | ||
37 | +IDMS | ||
38 | +IMS | ||
39 | +Infinispan | ||
40 | +Infobright | ||
41 | +Informix | ||
42 | +Ingres | ||
43 | +Interbase | ||
44 | +Jackrabbit | ||
45 | +Jena | ||
46 | +LevelDB | ||
47 | +MariaDB | ||
48 | +MarkLogic | ||
49 | +MaxDB | ||
50 | +MemSQL | ||
51 | +Memcached | ||
52 | +Microsoft Access | ||
53 | +Microsoft Azure SQL Database | ||
54 | +Microsoft SQL Server | ||
55 | +Mnesia | ||
56 | +MongoDB | ||
57 | +MySQL | ||
58 | +Neo4j | ||
59 | +Netezza | ||
60 | +NuoDB | ||
61 | +ObjectStore | ||
62 | +OpenEdge | ||
63 | +Oracle | ||
64 | +Oracle NoSQL | ||
65 | +OrientDB | ||
66 | +ParAccel | ||
67 | +Percona Server | ||
68 | +PostgreSQL | ||
69 | +RavenDB | ||
70 | +Red Brick | ||
71 | +Redis | ||
72 | +Redshift | ||
73 | +RethinkDB | ||
74 | +Riak | ||
75 | +SAP HANA | ||
76 | +SQL Anywhere | ||
77 | +SQLite | ||
78 | +Sedna | ||
79 | +Sesame | ||
80 | +SimpleDB | ||
81 | +Solr | ||
82 | +Sparksee | ||
83 | +Sphinx | ||
84 | +Splunk | ||
85 | +Sybase ADS | ||
86 | +Sybase ASE | ||
87 | +Sybase IQ | ||
88 | +Teradata | ||
89 | +Teradata Aster | ||
90 | +TimesTen | ||
91 | +Titan | ||
92 | +UniData | ||
93 | +UniVerse | ||
94 | +Versant Object Database | ||
95 | +Vertica | ||
96 | +Virtuoso | ||
97 | +VoltDB | ||
98 | +dBASE | ||
99 | +jBASE | ||
100 | +mSQL | ||
101 | +Other | ||
0 | \ No newline at end of file | 102 | \ No newline at end of file |
@@ -0,0 +1,101 @@ | @@ -0,0 +1,101 @@ | ||
1 | +ASP | ||
2 | +ActionScript | ||
3 | +Ada | ||
4 | +Apex | ||
5 | +AppleScript | ||
6 | +Arduino | ||
7 | +Assembly | ||
8 | +AutoHotkey | ||
9 | +AutoIt | ||
10 | +Awk | ||
11 | +BlitzBasic | ||
12 | +C | ||
13 | +C# | ||
14 | +C++ | ||
15 | +CSS | ||
16 | +Clojure | ||
17 | +CoffeeScript | ||
18 | +ColdFusion | ||
19 | +Common Lisp | ||
20 | +Coq | ||
21 | +Cuda | ||
22 | +D | ||
23 | +DCPU-16 ASM | ||
24 | +DOT | ||
25 | +Dart | ||
26 | +Delphi | ||
27 | +Eiffel | ||
28 | +Elixir | ||
29 | +Elm | ||
30 | +Emacs Lisp | ||
31 | +Erlang | ||
32 | +F# | ||
33 | +FORTRAN | ||
34 | +Go | ||
35 | +Gosu | ||
36 | +Groovy | ||
37 | +HaXe | ||
38 | +Haskell | ||
39 | +Haxe | ||
40 | +IDL | ||
41 | +Io | ||
42 | +Java | ||
43 | +JavaScript | ||
44 | +Julia | ||
45 | +Kotlin | ||
46 | +Lasso | ||
47 | +LiveScript | ||
48 | +Logos | ||
49 | +Lua | ||
50 | +M | ||
51 | +Matlab | ||
52 | +Max | ||
53 | +Nemerle | ||
54 | +Nimrod | ||
55 | +OCaml | ||
56 | +Objective-C | ||
57 | +Objective-C++ | ||
58 | +Objective-J | ||
59 | +OpenEdge ABL | ||
60 | +PHP | ||
61 | +Parrot | ||
62 | +Pascal | ||
63 | +Perl | ||
64 | +PowerShell | ||
65 | +Processing | ||
66 | +Prolog | ||
67 | +Puppet | ||
68 | +Pure Data | ||
69 | +PureScript | ||
70 | +Python | ||
71 | +R | ||
72 | +Racket | ||
73 | +Ruby | ||
74 | +Rust | ||
75 | +SQL | ||
76 | +Scala | ||
77 | +Scheme | ||
78 | +Scilab | ||
79 | +Shell | ||
80 | +Slash | ||
81 | +Smalltalk | ||
82 | +Standard ML | ||
83 | +SuperCollider | ||
84 | +Swift | ||
85 | +Tcl | ||
86 | +TeX | ||
87 | +TypeScript | ||
88 | +UnrealScript | ||
89 | +VHDL | ||
90 | +Vala | ||
91 | +Verilog | ||
92 | +VimL | ||
93 | +Visual Basic | ||
94 | +XC | ||
95 | +XML | ||
96 | +XQuery | ||
97 | +XSLT | ||
98 | +Xtend | ||
99 | +nesC | ||
100 | +xBase | ||
101 | +Other | ||
0 | \ No newline at end of file | 102 | \ No newline at end of file |
@@ -0,0 +1,212 @@ | @@ -0,0 +1,212 @@ | ||
1 | +Academic Free License 3.0 (AFL-3.0) | ||
2 | +http://www.openfoundry.org/en/licenses/753-academic-free-license-version-30-afl | ||
3 | + | ||
4 | +Affero GNU Public License (AGPL-3.0) | ||
5 | +http://www.gnu.org/licenses/agpl-3.0.html | ||
6 | + | ||
7 | +Adaptive Public License (APL-1.0) | ||
8 | +http://opensource.org/licenses/APL-1.0 | ||
9 | + | ||
10 | +Apache License 2.0 (Apache-2.0) | ||
11 | +http://www.apache.org/licenses/LICENSE-2.0 | ||
12 | + | ||
13 | +Apple Public Source License (APSL-2.0) | ||
14 | +http://www.opensource.apple.com/license/apsl/ | ||
15 | + | ||
16 | +Artistic license 2.0 (Artistic-2.0) | ||
17 | +http://opensource.org/licenses/Artistic-2.0 | ||
18 | + | ||
19 | +Attribution Assurance Licenses (AAL) | ||
20 | +http://opensource.org/licenses/AAL | ||
21 | + | ||
22 | +BSD 3-Clause "New" or "Revised" License (BSD-3-Clause) | ||
23 | +http://opensource.org/licenses/BSD-3-Clause | ||
24 | + | ||
25 | +BSD 2-Clause "Simplified" or "FreeBSD" License (BSD-2-Clause) | ||
26 | +http://opensource.org/licenses/BSD-2-Clause | ||
27 | + | ||
28 | +Boost Software License (BSL-1.0) | ||
29 | +http://www.boost.org/users/license.html | ||
30 | + | ||
31 | +Computer Associates Trusted Open Source License 1.1 (CATOSL-1.1) | ||
32 | +http://opensource.org/licenses/CATOSL-1.1 | ||
33 | + | ||
34 | +Common Development and Distribution License 1.0 (CDDL-1.0) | ||
35 | +http://opensource.org/licenses/CDDL-1.0 | ||
36 | + | ||
37 | +Common Public Attribution License 1.0 (CPAL-1.0) | ||
38 | +http://opensource.org/licenses/CPAL-1.0 | ||
39 | + | ||
40 | +CUA Office Public License Version 1.0 (CUA-OPL-1.0) | ||
41 | +http://opensource.org/licenses/CUA-OPL-1.0 | ||
42 | + | ||
43 | +EU DataGrid Software License (EUDatagrid) | ||
44 | +http://opensource.org/licenses/EUDatagrid | ||
45 | + | ||
46 | +Eclipse Public License 1.0 (EPL-1.0) | ||
47 | +https://www.eclipse.org/legal/epl-v10.html | ||
48 | + | ||
49 | +Educational Community License, Version 2.0 (ECL-2.0) | ||
50 | +http://opensource.org/licenses/ECL-2.0 | ||
51 | + | ||
52 | +Eiffel Forum License V2.0 (EFL-2.0) | ||
53 | +http://opensource.org/licenses/EFL-2.0 | ||
54 | + | ||
55 | +Entessa Public License (Entessa) | ||
56 | +http://opensource.org/licenses/entessa.php | ||
57 | + | ||
58 | +European Union Public License, Version 1.1 (EUPL-1.1) | ||
59 | +http://ec.europa.eu/idabc/eupl.html | ||
60 | + | ||
61 | +Fair License (FAIR) | ||
62 | +http://opensource.org/licenses/Fair | ||
63 | + | ||
64 | +Frameworx License (Frameworx-1.0) | ||
65 | +http://opensource.org/licenses/Frameworx-1.0 | ||
66 | + | ||
67 | +GNU Affero General Public License v3 (AGPL-3.0) | ||
68 | +http://www.gnu.org/licenses/agpl-3.0.html | ||
69 | + | ||
70 | +GNU General Public License version 2.0 (GPL-2.0) | ||
71 | +http://www.gnu.org/licenses/gpl-2.0.html | ||
72 | + | ||
73 | +GNU General Public License version 3.0 (GPL-3.0) | ||
74 | +http://www.gnu.org/copyleft/gpl.html | ||
75 | + | ||
76 | +GNU Library or "Lesser" General Public License version 2.1 (LGPL-2.1) | ||
77 | +https://www.gnu.org/licenses/lgpl-2.1.html | ||
78 | + | ||
79 | +GNU Library or "Lesser" General Public License version 3.0 (LGPL-3.0) | ||
80 | +https://www.gnu.org/licenses/lgpl.html | ||
81 | + | ||
82 | +Historical Permission Notice and Disclaimer (HPND) | ||
83 | +http://opensource.org/licenses/HPND | ||
84 | + | ||
85 | +IBM Public License 1.0 (IPL-1.0) | ||
86 | +http://opensource.org/licenses/IPL-1.0 | ||
87 | + | ||
88 | +IPA Font License (IPA) | ||
89 | +http://opensource.org/licenses/IPA | ||
90 | + | ||
91 | +ISC License (ISC) | ||
92 | +#No-link-found | ||
93 | + | ||
94 | +LaTeX Project Public License 1.3c (LPPL-1.3c) | ||
95 | +http://latex-project.org/lppl/lppl-1-3c.html | ||
96 | + | ||
97 | +Lucent Public License Version 1.02 (LPL-1.02) | ||
98 | +http://opensource.org/licenses/LPL-1.02 | ||
99 | + | ||
100 | +MirOS Licence (MirOS) | ||
101 | +http://opensource.org/licenses/MirOS | ||
102 | + | ||
103 | +Microsoft Public License (Ms-PL) | ||
104 | +http://opensource.org/licenses/MS-PL | ||
105 | + | ||
106 | +Microsoft Reciprocal License (Ms-RL) | ||
107 | +http://opensource.org/licenses/MS-RL | ||
108 | + | ||
109 | +MIT license (MIT) | ||
110 | +http://opensource.org/licenses/MIT | ||
111 | + | ||
112 | +Motosoto License (Motosoto) | ||
113 | +http://opensource.org/licenses/Motosoto | ||
114 | + | ||
115 | +Mozilla Public License 2.0 (MPL-2.0) | ||
116 | +https://www.mozilla.org/MPL/2.0/ | ||
117 | + | ||
118 | +Multics License (Multics) | ||
119 | +http://opensource.org/licenses/Multics | ||
120 | + | ||
121 | +NASA Open Source Agreement 1.3 (NASA 1.3) | ||
122 | +http://worldwind.arc.nasa.gov/worldwind-nosa-1.3.html | ||
123 | + | ||
124 | +NTP License (NTP) | ||
125 | +http://opensource.org/licenses/NTP | ||
126 | + | ||
127 | +Naumen Public License (Naumen) | ||
128 | +http://opensource.org/licenses/Naumen | ||
129 | + | ||
130 | +Nethack General Public License (NGPL) | ||
131 | +http://www.nethack.org/common/license.html | ||
132 | + | ||
133 | +Nokia Open Source License (Nokia) | ||
134 | +http://opensource.org/licenses/nokia.php | ||
135 | + | ||
136 | +Non-Profit Open Software License 3.0 (NPOSL-3.0) | ||
137 | +http://opensource.org/licenses/NPOSL-3.0 | ||
138 | + | ||
139 | +OCLC Research Public License 2.0 (OCLC-2.0) | ||
140 | +http://opensource.org/licenses/OCLC-2.0 | ||
141 | + | ||
142 | +Open Font License 1.1 (OFL 1.1) | ||
143 | +http://opensource.org/licenses/OFL-1.1 | ||
144 | + | ||
145 | +Open Group Test Suite License (OGTSL) | ||
146 | +http://opensource.org/licenses/OGTSL | ||
147 | + | ||
148 | +Open Software License 3.0 (OSL-3.0) | ||
149 | +http://opensource.org/licenses/OSL-3.0 | ||
150 | + | ||
151 | +PHP License v3.0 (PHP-3.0) | ||
152 | +http://php.net/license/3_0.txt | ||
153 | + | ||
154 | +PHP License v3.01 (PHP 4, PHP 5) | ||
155 | +http://php.net/license/3_01.txt | ||
156 | + | ||
157 | +The PostgreSQL License (PostgreSQL) | ||
158 | +http://www.postgresql.org/about/licence/ | ||
159 | + | ||
160 | +Python License (Python-2.0) | ||
161 | +http://opensource.org/licenses/Python-2.0 | ||
162 | + | ||
163 | +CNRI Python license (CNRI-Python) | ||
164 | +http://www.openfoundry.org/en/licenses/35-python-license-python | ||
165 | + | ||
166 | +Q Public License (QPL-1.0) | ||
167 | +http://opensource.org/licenses/QPL-1.0 | ||
168 | + | ||
169 | +RealNetworks Public Source License V1.0 (RPSL-1.0) | ||
170 | +http://opensource.org/licenses/RPSL-1.0 | ||
171 | + | ||
172 | +Reciprocal Public License 1.5 (RPL-1.5) | ||
173 | +http://opensource.org/licenses/RPL-1.5 | ||
174 | + | ||
175 | +Ricoh Source Code Public License (RSCPL) | ||
176 | +http://opensource.org/licenses/RSCPL | ||
177 | + | ||
178 | +Simple Public License 2.0 (SimPL-2.0) | ||
179 | +http://opensource.org/licenses/Simple-2.0 | ||
180 | + | ||
181 | +Sleepycat License (Sleepycat) | ||
182 | +http://opensource.org/licenses/Sleepycat | ||
183 | + | ||
184 | +Sun Public License 1.0 (SPL-1.0) | ||
185 | +http://opensource.org/licenses/SPL-1.0 | ||
186 | + | ||
187 | +Sybase Open Watcom Public License 1.0 (Watcom-1.0) | ||
188 | +http://www.openwatcom.org/index.php/Open_Watcom_Public_License | ||
189 | + | ||
190 | +University of Illinois/NCSA Open Source License (NCSA) | ||
191 | +http://otm.illinois.edu/uiuc_openSource | ||
192 | + | ||
193 | +Vovida Software License v. 1.0 (VSL-1.0) | ||
194 | +http://opensource.org/licenses/VSL-1.0 | ||
195 | + | ||
196 | +W3C License (W3C) | ||
197 | +http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 | ||
198 | + | ||
199 | +wxWindows Library License (WXwindows) | ||
200 | +https://www.wxwidgets.org/about/licence/ | ||
201 | + | ||
202 | +X.Net License (Xnet) | ||
203 | +http://opensource.org/licenses/xnet.php | ||
204 | + | ||
205 | +Zope Public License 2.0 (ZPL-2.0) | ||
206 | +http://opensource.org/licenses/ZPL-2.0 | ||
207 | + | ||
208 | +zlib/libpng license (Zlib) | ||
209 | +http://www.openfoundry.org/en/licenses/36-zliblibpng-license-zliblibpng | ||
210 | + | ||
211 | +Another | ||
212 | +# | ||
0 | \ No newline at end of file | 213 | \ No newline at end of file |
src/software_communities/public/static/operating_systems.txt
0 → 100644
@@ -0,0 +1,112 @@ | @@ -0,0 +1,112 @@ | ||
1 | +.mpog_hidden_field { | ||
2 | + display: none; | ||
3 | +} | ||
4 | + | ||
5 | +.dynamic-table { | ||
6 | + border: solid 1px #000; | ||
7 | + margin-top: 5px; | ||
8 | + margin-bottom: 15px; | ||
9 | +} | ||
10 | +.dynamic-table td, .dynamic-table tr { | ||
11 | + border: none; | ||
12 | +} | ||
13 | +.dynamic-table input { | ||
14 | + width: 220px; | ||
15 | +} | ||
16 | + | ||
17 | +#institution_dialog { | ||
18 | + display: none; | ||
19 | +} | ||
20 | + | ||
21 | +.errorExplanation { | ||
22 | + color: red; | ||
23 | + margin-left: 10px; | ||
24 | +} | ||
25 | + | ||
26 | +.hide-field { | ||
27 | + display: none !important; | ||
28 | +} | ||
29 | + | ||
30 | +.show-field { | ||
31 | + display: block !important; | ||
32 | +} | ||
33 | + | ||
34 | +.formfieldline { | ||
35 | + margin-top: 10px; | ||
36 | +} | ||
37 | +.formfieldline input[type="text"] { | ||
38 | + width: 180px; | ||
39 | +} | ||
40 | + | ||
41 | +#profile-data .invalid { | ||
42 | + border-color: rgb(127, 0, 0); | ||
43 | + box-shadow: 0px 0px 7px red; | ||
44 | +} | ||
45 | + | ||
46 | +#profile-data .validated { | ||
47 | + box-shadow: 0px 0px 7px green; | ||
48 | + border-color: rgb(0, 80, 0); | ||
49 | +} | ||
50 | + | ||
51 | +#software-name-field { | ||
52 | + padding-bottom: 10px; | ||
53 | +} | ||
54 | + | ||
55 | +#software-hostname { | ||
56 | + padding: 0px 7px; | ||
57 | + font-size: 18px; | ||
58 | +} | ||
59 | + | ||
60 | +.mandatory::after { | ||
61 | + color: red; | ||
62 | + content: ' (*)'; | ||
63 | +} | ||
64 | + | ||
65 | +.autocomplete_validation_message { | ||
66 | + color: red; | ||
67 | +} | ||
68 | + | ||
69 | +#content .softwares-block ul { | ||
70 | + min-width: 196px; | ||
71 | + width: 192px; | ||
72 | + margin: 0px 0px 0px -3px; | ||
73 | + padding: 0px; | ||
74 | +} | ||
75 | + | ||
76 | +#content .box-1 .softwares-block ul { | ||
77 | + width: auto; | ||
78 | + display: block; | ||
79 | +} | ||
80 | + | ||
81 | +#content .softwares-block .block-footer-content a { | ||
82 | + background: url(../../../designs/themes/base/imgs/arrow-right-p.png) 100% 50% no-repeat; | ||
83 | +} | ||
84 | + | ||
85 | +/*FIX-ME: necessary while there is | ||
86 | +* not a defined theme style for the | ||
87 | +* forms */ | ||
88 | +.improve_input_size { | ||
89 | + width: 315px !important; | ||
90 | +} | ||
91 | + | ||
92 | +.software-block { | ||
93 | + position: relative; | ||
94 | + float: left; | ||
95 | + overflow: hidden; | ||
96 | +} | ||
97 | + | ||
98 | +.software-block-content, .software-block-finality { | ||
99 | + width: 100%; | ||
100 | + position: absolute; | ||
101 | +} | ||
102 | + | ||
103 | +/*===== Communities rate hotspot extra fields =====*/ | ||
104 | + | ||
105 | +.comments-software-extra-fields div { | ||
106 | + display: none; | ||
107 | +} | ||
108 | + | ||
109 | +#content .star-rate-form .star-comment-container .comments-display-fields { | ||
110 | + cursor: pointer; | ||
111 | +} | ||
112 | + |
src/software_communities/public/vendor/jquery.maskedinput.min.js
0 → 100644
@@ -0,0 +1,7 @@ | @@ -0,0 +1,7 @@ | ||
1 | +/* | ||
2 | + Masked Input plugin for jQuery | ||
3 | + Copyright (c) 2007-2013 Josh Bush (digitalbush.com) | ||
4 | + Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license) | ||
5 | + Version: 1.3.1 | ||
6 | +*/ | ||
7 | +(function(e){function t(){var e=document.createElement("input"),t="onpaste";return e.setAttribute(t,""),"function"==typeof e[t]?"paste":"input"}var n,a=t()+".mask",r=navigator.userAgent,i=/iphone/i.test(r),o=/android/i.test(r);e.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},dataName:"rawMaskFn",placeholder:"_"},e.fn.extend({caret:function(e,t){var n;if(0!==this.length&&!this.is(":hidden"))return"number"==typeof e?(t="number"==typeof t?t:e,this.each(function(){this.setSelectionRange?this.setSelectionRange(e,t):this.createTextRange&&(n=this.createTextRange(),n.collapse(!0),n.moveEnd("character",t),n.moveStart("character",e),n.select())})):(this[0].setSelectionRange?(e=this[0].selectionStart,t=this[0].selectionEnd):document.selection&&document.selection.createRange&&(n=document.selection.createRange(),e=0-n.duplicate().moveStart("character",-1e5),t=e+n.text.length),{begin:e,end:t})},unmask:function(){return this.trigger("unmask")},mask:function(t,r){var c,l,s,u,f,h;return!t&&this.length>0?(c=e(this[0]),c.data(e.mask.dataName)()):(r=e.extend({placeholder:e.mask.placeholder,completed:null},r),l=e.mask.definitions,s=[],u=h=t.length,f=null,e.each(t.split(""),function(e,t){"?"==t?(h--,u=e):l[t]?(s.push(RegExp(l[t])),null===f&&(f=s.length-1)):s.push(null)}),this.trigger("unmask").each(function(){function c(e){for(;h>++e&&!s[e];);return e}function d(e){for(;--e>=0&&!s[e];);return e}function m(e,t){var n,a;if(!(0>e)){for(n=e,a=c(t);h>n;n++)if(s[n]){if(!(h>a&&s[n].test(R[a])))break;R[n]=R[a],R[a]=r.placeholder,a=c(a)}b(),x.caret(Math.max(f,e))}}function p(e){var t,n,a,i;for(t=e,n=r.placeholder;h>t;t++)if(s[t]){if(a=c(t),i=R[t],R[t]=n,!(h>a&&s[a].test(i)))break;n=i}}function g(e){var t,n,a,r=e.which;8===r||46===r||i&&127===r?(t=x.caret(),n=t.begin,a=t.end,0===a-n&&(n=46!==r?d(n):a=c(n-1),a=46===r?c(a):a),k(n,a),m(n,a-1),e.preventDefault()):27==r&&(x.val(S),x.caret(0,y()),e.preventDefault())}function v(t){var n,a,i,l=t.which,u=x.caret();t.ctrlKey||t.altKey||t.metaKey||32>l||l&&(0!==u.end-u.begin&&(k(u.begin,u.end),m(u.begin,u.end-1)),n=c(u.begin-1),h>n&&(a=String.fromCharCode(l),s[n].test(a)&&(p(n),R[n]=a,b(),i=c(n),o?setTimeout(e.proxy(e.fn.caret,x,i),0):x.caret(i),r.completed&&i>=h&&r.completed.call(x))),t.preventDefault())}function k(e,t){var n;for(n=e;t>n&&h>n;n++)s[n]&&(R[n]=r.placeholder)}function b(){x.val(R.join(""))}function y(e){var t,n,a=x.val(),i=-1;for(t=0,pos=0;h>t;t++)if(s[t]){for(R[t]=r.placeholder;pos++<a.length;)if(n=a.charAt(pos-1),s[t].test(n)){R[t]=n,i=t;break}if(pos>a.length)break}else R[t]===a.charAt(pos)&&t!==u&&(pos++,i=t);return e?b():u>i+1?(x.val(""),k(0,h)):(b(),x.val(x.val().substring(0,i+1))),u?t:f}var x=e(this),R=e.map(t.split(""),function(e){return"?"!=e?l[e]?r.placeholder:e:void 0}),S=x.val();x.data(e.mask.dataName,function(){return e.map(R,function(e,t){return s[t]&&e!=r.placeholder?e:null}).join("")}),x.attr("readonly")||x.one("unmask",function(){x.unbind(".mask").removeData(e.mask.dataName)}).bind("focus.mask",function(){clearTimeout(n);var e;S=x.val(),e=y(),n=setTimeout(function(){b(),e==t.length?x.caret(0,e):x.caret(e)},10)}).bind("blur.mask",function(){y(),x.val()!=S&&x.change()}).bind("keydown.mask",g).bind("keypress.mask",v).bind(a,function(){setTimeout(function(){var e=y(!0);x.caret(e),r.completed&&e==x.val().length&&r.completed.call(x)},0)}),y()}))}})})(jQuery); | ||
0 | \ No newline at end of file | 8 | \ No newline at end of file |
src/software_communities/public/vendor/modulejs-1.5.0.min.js
0 → 100644
@@ -0,0 +1,2 @@ | @@ -0,0 +1,2 @@ | ||
1 | +/* modulejs 1.5.0 - http://larsjung.de/modulejs/ */ | ||
2 | +!function(n){this.modulejs=n()}(function(){"use strict";function n(n){return function(r){return l.toString.call(r)==="[object "+n+"]"}}function r(n){return n===new Object(n)}function t(n,r){return l.hasOwnProperty.call(n,r)}function e(n,r,e){if(p&&n.forEach===p)n.forEach(r,e);else if(n.length===+n.length)for(var i=0,o=n.length;o>i;i+=1)r.call(e,n[i],i,n);else for(var u in n)t(n,u)&&r.call(e,n[u],u,n)}function i(n,r){for(var t=0,e=n.length;e>t;t+=1)if(n[t]===r)return!0;return!1}function o(n){var r={},i=[];return e(n,function(n){t(r,n)||(i.push(n),r[n]=1)}),i}function u(n,r,t){if(n){var e=new Error("[modulejs-"+r+"] "+t);throw e.code=r,e}}function c(n,r,a){if(u(!h(n),31,'id must be a string "'+n+'"'),!r&&t(b,n))return b[n];var f=y[n];u(!f,32,'id not defined "'+n+'"'),a=(a||[]).slice(0),a.push(n);var s=[];if(e(f.deps,function(n){u(i(a,n),33,"circular dependencies: "+a+" & "+n),r?(s=s.concat(c(n,r,a)),s.push(n)):s.push(c(n,r,a))}),r)return o(s);var d=f.fn.apply(void 0,s);return b[n]=d,d}function a(n,t,e){void 0===e&&(e=t,t=[]),u(!h(n),11,'id must be a string "'+n+'"'),u(y[n],12,'id already defined "'+n+'"'),u(!g(t),13,'dependencies for "'+n+'" must be an array "'+t+'"'),u(!r(e)&&!v(e),14,'arg for "'+n+'" must be object or function "'+e+'"'),y[n]={id:n,deps:t,fn:v(e)?e:function(){return e}}}function f(n){return c(n)}function s(){var n={};return e(y,function(r,e){n[e]={deps:r.deps.slice(0),reqs:c(e,!0),init:t(b,e)}}),e(y,function(r,t){var o=[];e(y,function(r,e){i(n[e].reqs,t)&&o.push(e)}),n[t].reqd=o}),n}function d(n){var r="\n";return e(s(),function(t,e){var i=n?t.reqd:t.reqs;r+=(t.init?"* ":" ")+e+" -> [ "+i.join(", ")+" ]\n"}),r}var l=Object.prototype,p=Array.prototype.forEach,h=n("String"),v=n("Function"),g=Array.isArray||n("Array"),y={},b={};return{define:a,require:f,state:s,log:d,_private:{isString:h,isFunction:v,isArray:g,isObject:r,has:t,each:e,contains:i,uniq:o,err:u,definitions:y,instances:b,resolve:c}}}); | ||
0 | \ No newline at end of file | 3 | \ No newline at end of file |
src/software_communities/public/views/comments-software-extra-fields.js
0 → 100644
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +modulejs.define('CommentsSoftwareExtraFields', ['jquery'], function($) { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + var DATA = { | ||
5 | + information_display_state: "hidden" | ||
6 | + } | ||
7 | + | ||
8 | + function set_show_additional_information() { | ||
9 | + $(".comments-display-fields").on("click", function() { | ||
10 | + if (DATA.information_display_state === "hidden") { | ||
11 | + DATA.information_display_state = "show"; | ||
12 | + $(".comments-software-extra-fields div").show(); | ||
13 | + } else { | ||
14 | + DATA.information_display_state = "hidden"; | ||
15 | + $(".comments-software-extra-fields div").hide(); | ||
16 | + } | ||
17 | + }); | ||
18 | + } | ||
19 | + | ||
20 | + return { | ||
21 | + isCurrentPage: function() { | ||
22 | + return $(".star-rate-form").length === 1; | ||
23 | + }, | ||
24 | + | ||
25 | + | ||
26 | + init: function() { | ||
27 | + set_show_additional_information(); | ||
28 | + } | ||
29 | + } | ||
30 | +}); |
@@ -0,0 +1,31 @@ | @@ -0,0 +1,31 @@ | ||
1 | +modulejs.define('ControlPanel', ['jquery'], function($) { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + function add_software_on_control_panel(control_panel) { | ||
5 | + var software_link = $(".control-panel-software-link").remove(); | ||
6 | + | ||
7 | + if( software_link.size() > 0 ) { | ||
8 | + control_panel.prepend(software_link); | ||
9 | + } | ||
10 | + } | ||
11 | + | ||
12 | + function add_itens_on_controla_panel() { | ||
13 | + var control_panel = $(".control-panel"); | ||
14 | + | ||
15 | + if( control_panel.size() > 0 ) { | ||
16 | + add_software_on_control_panel(control_panel); | ||
17 | + } | ||
18 | + } | ||
19 | + | ||
20 | + | ||
21 | + return { | ||
22 | + isCurrentPage: function() { | ||
23 | + return $("#profile-editor-index").length === 1; | ||
24 | + }, | ||
25 | + | ||
26 | + | ||
27 | + init: function() { | ||
28 | + add_itens_on_controla_panel(); | ||
29 | + } | ||
30 | + } | ||
31 | +}); |