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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 | 49 | \ No newline at end of file | ... | ... |
src/software_communities/features/software_catalog.feature
0 → 100644
... | ... | @@ -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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 | 87 | \ No newline at end of file | ... | ... |
... | ... | @@ -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 @@ |
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 @@ |
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 | 154 | \ No newline at end of file | ... | ... |
... | ... | @@ -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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 | 63 | \ No newline at end of file | ... | ... |
... | ... | @@ -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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 | 134 | \ No newline at end of file | ... | ... |
... | ... | @@ -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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 @@ |
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 | 65 | \ No newline at end of file | ... | ... |
... | ... | @@ -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 @@ |
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 @@ |
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 @@ |
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 | 102 | \ No newline at end of file | ... | ... |
... | ... | @@ -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 | 102 | \ No newline at end of file | ... | ... |
... | ... | @@ -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 | 213 | \ No newline at end of file | ... | ... |
src/software_communities/public/static/operating_systems.txt
0 → 100644
... | ... | @@ -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 @@ |
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 | 8 | \ No newline at end of file | ... | ... |
src/software_communities/public/vendor/modulejs-1.5.0.min.js
0 → 100644
... | ... | @@ -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 | 3 | \ No newline at end of file | ... | ... |
src/software_communities/public/views/comments-software-extra-fields.js
0 → 100644
... | ... | @@ -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 @@ |
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 | +}); | ... | ... |