Commit ff57616f7dc9161007276255f57d66f34f2867d2

Authored by Daniela Feitosa
2 parents d3bbe467 4e38f46b
Exists in master and in 79 other branches add_sisp_to_chef, add_super_archives_plugin, api_for_colab, automates_core_packing, backup_not_prod, changes_in_buttons_on_content_panel, colab_automated_login, colab_spb_plugin_recipe, colab_widgets_settings, design_validation, dev_env_minimal, disable_email_dev, fix_breadcrumbs_position, fix_categories_software_link, fix_edit_institution, fix_edit_software_with_another_license, fix_get_license_info, fix_gitlab_assets_permission, fix_list_style_inside_article, fix_list_style_on_folder_elements, fix_members_pagination, fix_merge_request_url, fix_models_translations, fix_no_license, fix_software_api, fix_software_block_migration, fix_software_communities_translations, fix_software_communities_unit_test, fix_style_create_institution_admin_panel, fix_superarchives_imports, fix_sym_links_noosfero, focus_search_field_theme, gov-user-refactoring, gov-user-refactoring-rails4, header_fix, institution_modal_on_rating, kalibro-conf-refactoring, kalibro-processor-package, lxc_settings, margin_fix, mezuro_cookbook, prezento, refactor_download_block, refactor_software_communities, refactor_software_for_sisp, register_page, release-process, release-process-v2, remove-unused-images, remove_broken_theme, remove_secondary_email_from_user, remove_sisp_buttons, removing_super_archives_email, review_message, scope2method, signals_user_noosfero, sisp_catalog_header, sisp_colab_config, sisp_dev, sisp_dev_master, sisp_simple_version, software_as_organization, software_catalog_style_fix, software_communities_html_refactor, software_infos_api, spb_minimal_env, spb_to_rails4, spec_refactor, stable-4.1, stable-4.2, stable-4.x, temp_soft_comm_refactoring, theme_header, theme_javascript_refactory, thread_dropdown, thread_page, update_search_by_categories, update_software_api, update_softwares_boxes

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.

src/software_communities/.gitignore 0 → 100644
... ... @@ -0,0 +1,6 @@
  1 +# Backup files
  2 +*~
  3 +*.swp
  4 +config/institutions_update
  5 +config/siorg.yml
  6 +locale
... ...
src/software_communities/README.md 0 → 100644
... ... @@ -0,0 +1,94 @@
  1 +[![Code Climate](https://codeclimate.com/github/fabio1079/noosfero-plugin/badges/gpa.svg)](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/Rakefile 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +task :default => :makemo
  2 +
  3 +task :makemo do
  4 + require 'gettext'
  5 + require 'gettext/tools'
  6 + GetText.create_mofiles(
  7 + verbose: true,
  8 + po_root: 'po',
  9 + mo_root: 'locale',
  10 + )
  11 +end
... ...
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
... ... @@ -0,0 +1,9 @@
  1 +class RemoveNameFromSoftwareInfo < ActiveRecord::Migration
  2 + def up
  3 + remove_column :software_infos, :name
  4 + end
  5 +
  6 + def down
  7 + add_column :software_infos, :name, :string
  8 + end
  9 +end
... ...
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
... ... @@ -0,0 +1,9 @@
  1 +class RenameControlledVocabularyToSoftwareCategories < ActiveRecord::Migration
  2 + def up
  3 + rename_table :controlled_vocabulary, :software_categories
  4 + end
  5 +
  6 + def down
  7 + rename_table :software_categories, :controlled_vocabulary
  8 + end
  9 +end
... ...
src/software_communities/db/migrate/20141007140419_add_finality_field_to_software_table.rb 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +class AddFinalityFieldToSoftwareTable < ActiveRecord::Migration
  2 + def up
  3 + add_column :software_infos, :finality, :string, :limit => 140
  4 + end
  5 +
  6 + def down
  7 + remove_column :software_info, :finality
  8 + end
  9 +end
... ...
src/software_communities/db/migrate/20141013193939_add_repository_link_to_software.rb 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +class AddRepositoryLinkToSoftware < ActiveRecord::Migration
  2 + def up
  3 + add_column :software_infos, :repository_link, :string
  4 + end
  5 +
  6 + def down
  7 + remove_column :software_infos, :repository_link
  8 + end
  9 +end
... ...
src/software_communities/db/migrate/20141103180655_add_public_software_field_validation.rb 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +class AddPublicSoftwareFieldValidation < ActiveRecord::Migration
  2 + def up
  3 + add_column :software_infos, :public_software, :boolean, :default => false
  4 + end
  5 +
  6 + def down
  7 + remove_column :software_infos, :public_software
  8 + end
  9 +end
... ...
src/software_communities/db/migrate/20141105173616_add_first_edit_to_software.rb 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +class AddFirstEditToSoftware < ActiveRecord::Migration
  2 + def up
  3 + add_column :software_infos, :first_edit, :boolean, :default => true
  4 + end
  5 +
  6 + def down
  7 + remove_column :software_infos, :first_edit
  8 + end
  9 +end
... ...
src/software_communities/db/migrate/20141216183111_remove_operating_system_from_software_database.rb 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +class RemoveOperatingSystemFromSoftwareDatabase < ActiveRecord::Migration
  2 + def up
  3 + remove_column :software_databases, :operating_system
  4 + end
  5 +
  6 + def down
  7 + add_column :software_databases, :operating_system, :string
  8 + end
  9 +end
... ...
src/software_communities/db/migrate/20141216183459_remove_operating_system_from_software_language.rb 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +class RemoveOperatingSystemFromSoftwareLanguage < ActiveRecord::Migration
  2 + def up
  3 + remove_column :software_languages, :operating_system
  4 + end
  5 +
  6 + def down
  7 + add_column :software_languages, :operating_system, :string
  8 + end
  9 +end
... ...
src/software_communities/db/migrate/20150209170529_add_settings_field_to_software_info.rb 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +class AddSettingsFieldToSoftwareInfo < ActiveRecord::Migration
  2 + def up
  3 + add_column :software_infos, :settings, :text
  4 + end
  5 +
  6 + def down
  7 + remove_column :software_info, :settings
  8 + end
  9 +end
... ...
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
... ...
src/software_communities/lib/create_software.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/database_description.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/database_helper.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/download.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/download_block.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/dynamic_table_helper.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/ext/category.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/ext/communities_block.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/ext/community.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/ext/organization_rating.rb 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +require_dependency "organization_rating"
  2 +
  3 +class OrganizationRating
  4 + attr_accessible :people_benefited, :saved_value
  5 +end
... ...
src/software_communities/lib/ext/person.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/ext/profile_controller.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/ext/profile_helper.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/ext/search_controller.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/ext/search_helper.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/library.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/library_helper.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/license_helper.rb 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +module LicenseHelper
  2 + def self.getListLicenses
  3 + LicenseInfo.all
  4 + end
  5 +end
0 6 \ No newline at end of file
... ...
src/software_communities/lib/license_info.rb 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +class LicenseInfo < ActiveRecord::Base
  2 + attr_accessible :version, :link
  3 +
  4 + validates_presence_of :version
  5 +
  6 + has_many :software_info
  7 +
  8 +end
... ...
src/software_communities/lib/operating_system.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/operating_system_helper.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/operating_system_name.rb 0 → 100644
... ... @@ -0,0 +1,10 @@
  1 +class OperatingSystemName < ActiveRecord::Base
  2 + attr_accessible :name
  3 +
  4 + validates_presence_of :name
  5 + validates_uniqueness_of :name
  6 +
  7 + has_many :operating_systems
  8 + has_many :software_infos, :through => :operating_systems
  9 +
  10 +end
... ...
src/software_communities/lib/programming_language.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/repository_block.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/search_catalog_block.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/software_database.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/software_helper.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/software_info.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/software_language.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/software_tab_data_block.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/softwares_block.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/statistic_block.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/tasks/create_licenses.rake 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/tasks/export.rake 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/tasks/main_data.rake 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/tasks/templates.rake 0 → 100644
... ... @@ -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
... ...
src/software_communities/lib/wiki_block.rb 0 → 100644
... ... @@ -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
... ...
src/software_communities/po/pt/software_communities.po 0 → 100644
... ... @@ -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 &mdash; show my contents to all internet users"
  464 +msgstr "Público &mdash; 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 &mdash; show my contents only to friends"
  468 +msgstr "Privado &mdash; mostrar meus conteudos apenas aos amigos"
  469 +
  470 +#: plugins/software_communities/views/profile_editor/edit_software_community.html.erb:35
  471 +msgid "Public &mdash; show content of this group to all internet users"
  472 +msgstr ""
  473 +"Público &mdash; 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 &mdash; show content of this group only to members"
  477 +msgstr "Privado &mdash; 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"
... ...
src/software_communities/po/software_communities.pot 0 → 100644
... ... @@ -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 &mdash; 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 &mdash; 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 &mdash; 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 &mdash; 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/app.js 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +(function() {
  2 + 'use strict';
  3 +
  4 + var $ = modulejs.require('jquery');
  5 + var Initializer = modulejs.require('Initializer');
  6 +
  7 +
  8 + $(document).ready(function() {
  9 + Initializer.init();
  10 + });
  11 +})();
... ...
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 +});
... ...
src/software_communities/public/initializer.js 0 → 100644
... ... @@ -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 +})();
... ...
src/software_communities/public/lib/auto-complete.js 0 → 100644
... ... @@ -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
... ...
src/software_communities/public/lib/noosfero-root.js 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +modulejs.define('NoosferoRoot', function() {
  2 + 'use strict';
  3 +
  4 +
  5 + function url_with_subdirectory(url) {
  6 + return noosfero_root() + url;
  7 + }
  8 +
  9 +
  10 + return {
  11 + urlWithSubDirectory: url_with_subdirectory
  12 + }
  13 +});
... ...
src/software_communities/public/lib/select-element.js 0 → 100644
... ... @@ -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 +
... ...
src/software_communities/public/static/databases.txt 0 → 100644
... ... @@ -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
... ...
src/software_communities/public/static/languages.txt 0 → 100644
... ... @@ -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
... ...
src/software_communities/public/static/licences.txt 0 → 100644
... ... @@ -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,9 @@
  1 +Debian
  2 +Ubuntu
  3 +Windows
  4 +CentOS
  5 +RedHat
  6 +Mint
  7 +MacOS
  8 +Fedora
  9 +Arch
0 10 \ No newline at end of file
... ...
src/software_communities/public/style.css 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.js 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +modulejs.define('jquery', function() {
  2 + return jQuery;
  3 +});
... ...
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 +});
... ...
src/software_communities/public/views/control-panel.js 0 → 100644
... ... @@ -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 +});
... ...