Commit ff57616f7dc9161007276255f57d66f34f2867d2
Exists in
master
and in
56 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 | +}); | ... | ... |