From 689a073f771c590f85e10da3de8004fcb85fa0f3 Mon Sep 17 00:00:00 2001 From: Jesus Federico Date: Mon, 3 Jun 2024 13:38:47 -0400 Subject: [PATCH 01/27] [Snyk] Fix for 1 vulnerabilities (#5828) * fix: Gemfile & Gemfile.lock to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-RUBY-NOKOGIRI-7164639 * Update Gemfile.lock --------- Co-authored-by: snyk-bot Co-authored-by: Ahmad Farhat --- Gemfile | 20 ++--- Gemfile.lock | 240 ++++++++++++++++++++++++++------------------------- 2 files changed, 131 insertions(+), 129 deletions(-) diff --git a/Gemfile b/Gemfile index 2e3ec8ba07..f99fffe33e 100644 --- a/Gemfile +++ b/Gemfile @@ -6,31 +6,31 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '>= 3.0' gem 'active_model_serializers', '>= 0.10.14' -gem 'active_storage_validations', '>= 1.1.0' +gem 'active_storage_validations', '>= 1.1.1' gem 'aws-sdk-s3', require: false gem 'bcrypt', '~> 3.1.7' gem 'bigbluebutton-api-ruby', '1.9.1' gem 'bootsnap', require: false gem 'clamby', '~> 1.6.10' -gem 'cssbundling-rails', '>= 1.3.3' +gem 'cssbundling-rails', '>= 1.4.0' gem 'data_migrate', '>= 9.4.0' -gem 'dotenv-rails' +gem 'dotenv-rails', '>= 3.0.0' gem 'google-cloud-storage', '~> 1.44', require: false gem 'hcaptcha' gem 'hiredis', '~> 0.6.0' gem 'i18n-language-mapping' gem 'image_processing', '~> 1.2' -gem 'jbuilder' -gem 'jsbundling-rails', '>= 1.2.2' +gem 'jbuilder', '>= 2.12.0' +gem 'jsbundling-rails', '>= 1.3.0' gem 'jwt' gem 'mini_magick', '>= 4.9.5' gem 'omniauth', '~> 2.1.2' gem 'omniauth_openid_connect', '>= 0.6.1' -gem 'omniauth-rails_csrf_protection', '~> 1.0.1' +gem 'omniauth-rails_csrf_protection', '~> 1.0.2' gem 'pagy', '~> 6.0', '>= 6.0.0' gem 'pg' gem 'puma', '~> 5.6' -gem 'rails', '~> 7.1.3' +gem 'rails', '~> 7.1.3', '>= 7.1.3.2' gem 'redis', '~> 4.0' gem 'sprockets-rails' gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby] @@ -50,14 +50,14 @@ group :development do end group :test do - gem 'capybara' + gem 'capybara', '>= 3.39.0' gem 'factory_bot', '>= 6.4.1' gem 'factory_bot_rails', '>= 6.4.3' gem 'faker' - gem 'rspec-rails', '>= 6.0.4' + gem 'rspec-rails', '>= 6.1.1' gem 'selenium-webdriver' gem 'shoulda-matchers', '~> 5.0' - gem 'webdrivers' + gem 'webdrivers', '>= 5.3.0' gem 'webmock' end diff --git a/Gemfile.lock b/Gemfile.lock index f5ea4a2a32..a470319a89 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,35 +1,35 @@ GEM remote: https://rubygems.org/ specs: - actioncable (7.1.3.1) - actionpack (= 7.1.3.1) - activesupport (= 7.1.3.1) + actioncable (7.1.3.3) + actionpack (= 7.1.3.3) + activesupport (= 7.1.3.3) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.1.3.1) - actionpack (= 7.1.3.1) - activejob (= 7.1.3.1) - activerecord (= 7.1.3.1) - activestorage (= 7.1.3.1) - activesupport (= 7.1.3.1) + actionmailbox (7.1.3.3) + actionpack (= 7.1.3.3) + activejob (= 7.1.3.3) + activerecord (= 7.1.3.3) + activestorage (= 7.1.3.3) + activesupport (= 7.1.3.3) mail (>= 2.7.1) net-imap net-pop net-smtp - actionmailer (7.1.3.1) - actionpack (= 7.1.3.1) - actionview (= 7.1.3.1) - activejob (= 7.1.3.1) - activesupport (= 7.1.3.1) + actionmailer (7.1.3.3) + actionpack (= 7.1.3.3) + actionview (= 7.1.3.3) + activejob (= 7.1.3.3) + activesupport (= 7.1.3.3) mail (~> 2.5, >= 2.5.4) net-imap net-pop net-smtp rails-dom-testing (~> 2.2) - actionpack (7.1.3.1) - actionview (= 7.1.3.1) - activesupport (= 7.1.3.1) + actionpack (7.1.3.3) + actionview (= 7.1.3.3) + activesupport (= 7.1.3.3) nokogiri (>= 1.8.5) racc rack (>= 2.2.4) @@ -37,15 +37,15 @@ GEM rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actiontext (7.1.3.1) - actionpack (= 7.1.3.1) - activerecord (= 7.1.3.1) - activestorage (= 7.1.3.1) - activesupport (= 7.1.3.1) + actiontext (7.1.3.3) + actionpack (= 7.1.3.3) + activerecord (= 7.1.3.3) + activestorage (= 7.1.3.3) + activesupport (= 7.1.3.3) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.1.3.1) - activesupport (= 7.1.3.1) + actionview (7.1.3.3) + activesupport (= 7.1.3.3) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) @@ -55,27 +55,27 @@ GEM activemodel (>= 4.1) case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) - active_storage_validations (1.1.0) + active_storage_validations (1.1.4) activejob (>= 5.2.0) activemodel (>= 5.2.0) activestorage (>= 5.2.0) activesupport (>= 5.2.0) - activejob (7.1.3.1) - activesupport (= 7.1.3.1) + activejob (7.1.3.3) + activesupport (= 7.1.3.3) globalid (>= 0.3.6) - activemodel (7.1.3.1) - activesupport (= 7.1.3.1) - activerecord (7.1.3.1) - activemodel (= 7.1.3.1) - activesupport (= 7.1.3.1) + activemodel (7.1.3.3) + activesupport (= 7.1.3.3) + activerecord (7.1.3.3) + activemodel (= 7.1.3.3) + activesupport (= 7.1.3.3) timeout (>= 0.4.0) - activestorage (7.1.3.1) - actionpack (= 7.1.3.1) - activejob (= 7.1.3.1) - activerecord (= 7.1.3.1) - activesupport (= 7.1.3.1) + activestorage (7.1.3.3) + actionpack (= 7.1.3.3) + activejob (= 7.1.3.3) + activerecord (= 7.1.3.3) + activesupport (= 7.1.3.3) marcel (~> 1.0) - activesupport (7.1.3.1) + activesupport (7.1.3.3) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) @@ -85,7 +85,7 @@ GEM minitest (>= 5.1) mutex_m tzinfo (~> 2.0) - addressable (2.8.1) + addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) aes_key_wrap (1.1.0) ast (2.4.2) @@ -116,17 +116,17 @@ GEM rack (>= 1.6.11) rubyzip (>= 1.3.0) xml-simple (~> 1.1) - bigdecimal (3.1.7) + bigdecimal (3.1.8) bindata (2.5.0) bindex (0.8.1) bootsnap (1.16.0) msgpack (~> 1.2) builder (3.2.4) - capybara (3.38.0) + capybara (3.40.0) addressable matrix mini_mime (>= 0.1.3) - nokogiri (~> 1.8) + nokogiri (~> 1.11) rack (>= 1.6.0) rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) @@ -135,12 +135,12 @@ GEM activesupport childprocess (4.1.0) clamby (1.6.10) - concurrent-ruby (1.2.3) + concurrent-ruby (1.3.1) connection_pool (2.4.1) crack (0.4.5) rexml crass (1.0.6) - cssbundling-rails (1.3.3) + cssbundling-rails (1.4.0) railties (>= 6.0.0) data_migrate (9.4.0) activerecord (>= 6.1) @@ -150,13 +150,13 @@ GEM irb (>= 1.5.0) reline (>= 0.3.1) declarative (0.0.20) - diff-lcs (1.5.0) + diff-lcs (1.5.1) digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) - dotenv (2.8.1) - dotenv-rails (2.8.1) - dotenv (= 2.8.1) - railties (>= 3.2) + dotenv (3.1.2) + dotenv-rails (3.1.2) + dotenv (= 3.1.2) + railties (>= 6.1) drb (2.2.1) erubi (1.12.0) factory_bot (6.4.5) @@ -215,21 +215,21 @@ GEM json hiredis (0.6.3) httpclient (2.8.3) - i18n (1.14.4) + i18n (1.14.5) concurrent-ruby (~> 1.0) i18n-language-mapping (0.1.3.1) image_processing (1.12.2) mini_magick (>= 4.9.5, < 5) ruby-vips (>= 2.0.17, < 3) io-console (0.7.2) - irb (1.12.0) - rdoc + irb (1.13.1) + rdoc (>= 4.0.0) reline (>= 0.4.2) - jbuilder (2.11.5) + jbuilder (2.12.0) actionview (>= 5.0.0) activesupport (>= 5.0.0) jmespath (1.6.2) - jsbundling-rails (1.2.2) + jsbundling-rails (1.3.0) railties (>= 6.0.0) json (2.6.3) json-jwt (1.16.6) @@ -255,38 +255,38 @@ GEM net-imap net-pop net-smtp - marcel (1.0.2) + marcel (1.0.4) matrix (0.4.2) memoist (0.16.2) mini_magick (4.12.0) mini_mime (1.1.5) mini_portile2 (2.8.6) - minitest (5.22.3) + minitest (5.23.1) msgpack (1.6.0) multi_json (1.15.0) mutex_m (0.2.0) net-http (0.4.1) uri - net-imap (0.4.10) + net-imap (0.4.11) date net-protocol net-pop (0.1.2) net-protocol net-protocol (0.2.2) timeout - net-smtp (0.4.0.1) + net-smtp (0.5.0) net-protocol - nio4r (2.7.0) - nokogiri (1.16.4) + nio4r (2.7.3) + nokogiri (1.16.5) mini_portile2 (~> 2.8.2) racc (~> 1.4) - nokogiri (1.16.4-x86_64-linux) + nokogiri (1.16.5-x86_64-linux) racc (~> 1.4) omniauth (2.1.2) hashie (>= 3.4.6) rack (>= 2.2.3) rack-protection - omniauth-rails_csrf_protection (1.0.1) + omniauth-rails_csrf_protection (1.0.2) actionpack (>= 4.2) omniauth (~> 2.0) omniauth_openid_connect (0.7.1) @@ -314,11 +314,11 @@ GEM pg (1.4.5) psych (5.1.2) stringio - public_suffix (5.0.3) + public_suffix (5.0.5) puma (5.6.8) nio4r (~> 2.0) - racc (1.7.3) - rack (2.2.9) + racc (1.8.0) + rack (3.0.11) rack-oauth2 (2.2.0) activesupport attr_required @@ -326,30 +326,30 @@ GEM faraday-follow_redirects json-jwt (>= 1.11.0) rack (>= 2.1.0) - rack-protection (3.2.0) + rack-protection (4.0.0) base64 (>= 0.1.0) - rack (~> 2.2, >= 2.2.4) - rack-session (1.0.2) - rack (< 3) + rack (>= 3.0.0, < 4) + rack-session (2.0.0) + rack (>= 3.0.0) rack-test (2.1.0) rack (>= 1.3) - rackup (1.0.0) - rack (< 3) - webrick - rails (7.1.3.1) - actioncable (= 7.1.3.1) - actionmailbox (= 7.1.3.1) - actionmailer (= 7.1.3.1) - actionpack (= 7.1.3.1) - actiontext (= 7.1.3.1) - actionview (= 7.1.3.1) - activejob (= 7.1.3.1) - activemodel (= 7.1.3.1) - activerecord (= 7.1.3.1) - activestorage (= 7.1.3.1) - activesupport (= 7.1.3.1) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails (7.1.3.3) + actioncable (= 7.1.3.3) + actionmailbox (= 7.1.3.3) + actionmailer (= 7.1.3.3) + actionpack (= 7.1.3.3) + actiontext (= 7.1.3.3) + actionview (= 7.1.3.3) + activejob (= 7.1.3.3) + activemodel (= 7.1.3.3) + activerecord (= 7.1.3.3) + activestorage (= 7.1.3.3) + activesupport (= 7.1.3.3) bundler (>= 1.15.0) - railties (= 7.1.3.1) + railties (= 7.1.3.3) rails-dom-testing (2.2.0) activesupport (>= 5.0.0) minitest @@ -357,9 +357,9 @@ GEM rails-html-sanitizer (1.6.0) loofah (~> 2.21) nokogiri (~> 1.14) - railties (7.1.3.1) - actionpack (= 7.1.3.1) - activesupport (= 7.1.3.1) + railties (7.1.3.3) + actionpack (= 7.1.3.3) + activesupport (= 7.1.3.3) irb rackup (>= 1.0.0) rake (>= 12.2) @@ -367,11 +367,11 @@ GEM zeitwerk (~> 2.6) rainbow (3.1.1) rake (13.2.1) - rdoc (6.6.3.1) + rdoc (6.7.0) psych (>= 4.0.0) redis (4.8.0) - regexp_parser (2.8.1) - reline (0.5.4) + regexp_parser (2.9.2) + reline (0.5.8) io-console (~> 0.5) remote_syslog_logger (1.0.4) syslog_protocol @@ -382,24 +382,25 @@ GEM request_store (1.5.1) rack (>= 1.4) retriable (3.1.2) - rexml (3.2.6) - rspec-core (3.12.2) - rspec-support (~> 3.12.0) - rspec-expectations (3.12.3) + rexml (3.2.8) + strscan (>= 3.0.9) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-mocks (3.12.6) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-rails (6.1.0) + rspec-support (~> 3.13.0) + rspec-rails (6.1.2) actionpack (>= 6.1) activesupport (>= 6.1) railties (>= 6.1) - rspec-core (~> 3.12) - rspec-expectations (~> 3.12) - rspec-mocks (~> 3.12) - rspec-support (~> 3.12) - rspec-support (3.12.1) + rspec-core (~> 3.13) + rspec-expectations (~> 3.13) + rspec-mocks (~> 3.13) + rspec-support (~> 3.13) + rspec-support (3.13.1) rubocop (1.56.1) base64 (~> 0.1.1) json (~> 2.3) @@ -431,7 +432,7 @@ GEM ruby-vips (2.1.4) ffi (~> 1.12) rubyzip (2.3.2) - selenium-webdriver (4.8.0) + selenium-webdriver (4.10.0) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) @@ -450,6 +451,7 @@ GEM activesupport (>= 5.2) sprockets (>= 3.0.0) stringio (3.1.0) + strscan (3.1.0) swd (2.0.2) activesupport (>= 3) attr_required (>= 0.0.5) @@ -475,10 +477,10 @@ GEM activemodel (>= 6.0.0) bindex (>= 0.4.0) railties (>= 6.0.0) - webdrivers (5.2.0) + webdrivers (5.3.1) nokogiri (~> 1.6) rubyzip (>= 1.3.0) - selenium-webdriver (~> 4.0) + selenium-webdriver (~> 4.0, < 4.11) webfinger (2.1.2) activesupport faraday (~> 2.0) @@ -488,7 +490,7 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - websocket (1.2.9) + websocket (1.2.10) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) @@ -496,7 +498,7 @@ GEM rexml xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.13) + zeitwerk (2.6.15) PLATFORMS ruby @@ -504,17 +506,17 @@ PLATFORMS DEPENDENCIES active_model_serializers (>= 0.10.14) - active_storage_validations (>= 1.1.0) + active_storage_validations (>= 1.1.1) aws-sdk-s3 bcrypt (~> 3.1.7) bigbluebutton-api-ruby (= 1.9.1) bootsnap - capybara + capybara (>= 3.39.0) clamby (~> 1.6.10) - cssbundling-rails (>= 1.3.3) + cssbundling-rails (>= 1.4.0) data_migrate (>= 9.4.0) debug - dotenv-rails + dotenv-rails (>= 3.0.0) factory_bot (>= 6.4.1) factory_bot_rails (>= 6.4.3) faker @@ -523,21 +525,21 @@ DEPENDENCIES hiredis (~> 0.6.0) i18n-language-mapping image_processing (~> 1.2) - jbuilder - jsbundling-rails (>= 1.2.2) + jbuilder (>= 2.12.0) + jsbundling-rails (>= 1.3.0) jwt lograge (~> 0.14.0) mini_magick (>= 4.9.5) omniauth (~> 2.1.2) - omniauth-rails_csrf_protection (~> 1.0.1) + omniauth-rails_csrf_protection (~> 1.0.2) omniauth_openid_connect (>= 0.6.1) pagy (~> 6.0, >= 6.0.0) pg puma (~> 5.6) - rails (~> 7.1.3) + rails (~> 7.1.3, >= 7.1.3.2) redis (~> 4.0) remote_syslog_logger - rspec-rails (>= 6.0.4) + rspec-rails (>= 6.1.1) rubocop (~> 1.26) rubocop-capybara (~> 2.19.0) rubocop-factory_bot (~> 2.24.0) @@ -549,5 +551,5 @@ DEPENDENCIES sprockets-rails tzinfo-data web-console (>= 4.2.1) - webdrivers + webdrivers (>= 5.3.0) webmock From c248676336952fc30446c65201bdac1eb56416b8 Mon Sep 17 00:00:00 2001 From: Ahmad Farhat Date: Mon, 3 Jun 2024 13:42:04 -0400 Subject: [PATCH 02/27] Revert "[Snyk] Fix for 1 vulnerabilities (#5828)" (#5830) This reverts commit 689a073f771c590f85e10da3de8004fcb85fa0f3. --- Gemfile | 20 ++--- Gemfile.lock | 240 +++++++++++++++++++++++++-------------------------- 2 files changed, 129 insertions(+), 131 deletions(-) diff --git a/Gemfile b/Gemfile index f99fffe33e..2e3ec8ba07 100644 --- a/Gemfile +++ b/Gemfile @@ -6,31 +6,31 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '>= 3.0' gem 'active_model_serializers', '>= 0.10.14' -gem 'active_storage_validations', '>= 1.1.1' +gem 'active_storage_validations', '>= 1.1.0' gem 'aws-sdk-s3', require: false gem 'bcrypt', '~> 3.1.7' gem 'bigbluebutton-api-ruby', '1.9.1' gem 'bootsnap', require: false gem 'clamby', '~> 1.6.10' -gem 'cssbundling-rails', '>= 1.4.0' +gem 'cssbundling-rails', '>= 1.3.3' gem 'data_migrate', '>= 9.4.0' -gem 'dotenv-rails', '>= 3.0.0' +gem 'dotenv-rails' gem 'google-cloud-storage', '~> 1.44', require: false gem 'hcaptcha' gem 'hiredis', '~> 0.6.0' gem 'i18n-language-mapping' gem 'image_processing', '~> 1.2' -gem 'jbuilder', '>= 2.12.0' -gem 'jsbundling-rails', '>= 1.3.0' +gem 'jbuilder' +gem 'jsbundling-rails', '>= 1.2.2' gem 'jwt' gem 'mini_magick', '>= 4.9.5' gem 'omniauth', '~> 2.1.2' gem 'omniauth_openid_connect', '>= 0.6.1' -gem 'omniauth-rails_csrf_protection', '~> 1.0.2' +gem 'omniauth-rails_csrf_protection', '~> 1.0.1' gem 'pagy', '~> 6.0', '>= 6.0.0' gem 'pg' gem 'puma', '~> 5.6' -gem 'rails', '~> 7.1.3', '>= 7.1.3.2' +gem 'rails', '~> 7.1.3' gem 'redis', '~> 4.0' gem 'sprockets-rails' gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby] @@ -50,14 +50,14 @@ group :development do end group :test do - gem 'capybara', '>= 3.39.0' + gem 'capybara' gem 'factory_bot', '>= 6.4.1' gem 'factory_bot_rails', '>= 6.4.3' gem 'faker' - gem 'rspec-rails', '>= 6.1.1' + gem 'rspec-rails', '>= 6.0.4' gem 'selenium-webdriver' gem 'shoulda-matchers', '~> 5.0' - gem 'webdrivers', '>= 5.3.0' + gem 'webdrivers' gem 'webmock' end diff --git a/Gemfile.lock b/Gemfile.lock index a470319a89..f5ea4a2a32 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,35 +1,35 @@ GEM remote: https://rubygems.org/ specs: - actioncable (7.1.3.3) - actionpack (= 7.1.3.3) - activesupport (= 7.1.3.3) + actioncable (7.1.3.1) + actionpack (= 7.1.3.1) + activesupport (= 7.1.3.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.1.3.3) - actionpack (= 7.1.3.3) - activejob (= 7.1.3.3) - activerecord (= 7.1.3.3) - activestorage (= 7.1.3.3) - activesupport (= 7.1.3.3) + actionmailbox (7.1.3.1) + actionpack (= 7.1.3.1) + activejob (= 7.1.3.1) + activerecord (= 7.1.3.1) + activestorage (= 7.1.3.1) + activesupport (= 7.1.3.1) mail (>= 2.7.1) net-imap net-pop net-smtp - actionmailer (7.1.3.3) - actionpack (= 7.1.3.3) - actionview (= 7.1.3.3) - activejob (= 7.1.3.3) - activesupport (= 7.1.3.3) + actionmailer (7.1.3.1) + actionpack (= 7.1.3.1) + actionview (= 7.1.3.1) + activejob (= 7.1.3.1) + activesupport (= 7.1.3.1) mail (~> 2.5, >= 2.5.4) net-imap net-pop net-smtp rails-dom-testing (~> 2.2) - actionpack (7.1.3.3) - actionview (= 7.1.3.3) - activesupport (= 7.1.3.3) + actionpack (7.1.3.1) + actionview (= 7.1.3.1) + activesupport (= 7.1.3.1) nokogiri (>= 1.8.5) racc rack (>= 2.2.4) @@ -37,15 +37,15 @@ GEM rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actiontext (7.1.3.3) - actionpack (= 7.1.3.3) - activerecord (= 7.1.3.3) - activestorage (= 7.1.3.3) - activesupport (= 7.1.3.3) + actiontext (7.1.3.1) + actionpack (= 7.1.3.1) + activerecord (= 7.1.3.1) + activestorage (= 7.1.3.1) + activesupport (= 7.1.3.1) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.1.3.3) - activesupport (= 7.1.3.3) + actionview (7.1.3.1) + activesupport (= 7.1.3.1) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) @@ -55,27 +55,27 @@ GEM activemodel (>= 4.1) case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) - active_storage_validations (1.1.4) + active_storage_validations (1.1.0) activejob (>= 5.2.0) activemodel (>= 5.2.0) activestorage (>= 5.2.0) activesupport (>= 5.2.0) - activejob (7.1.3.3) - activesupport (= 7.1.3.3) + activejob (7.1.3.1) + activesupport (= 7.1.3.1) globalid (>= 0.3.6) - activemodel (7.1.3.3) - activesupport (= 7.1.3.3) - activerecord (7.1.3.3) - activemodel (= 7.1.3.3) - activesupport (= 7.1.3.3) + activemodel (7.1.3.1) + activesupport (= 7.1.3.1) + activerecord (7.1.3.1) + activemodel (= 7.1.3.1) + activesupport (= 7.1.3.1) timeout (>= 0.4.0) - activestorage (7.1.3.3) - actionpack (= 7.1.3.3) - activejob (= 7.1.3.3) - activerecord (= 7.1.3.3) - activesupport (= 7.1.3.3) + activestorage (7.1.3.1) + actionpack (= 7.1.3.1) + activejob (= 7.1.3.1) + activerecord (= 7.1.3.1) + activesupport (= 7.1.3.1) marcel (~> 1.0) - activesupport (7.1.3.3) + activesupport (7.1.3.1) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) @@ -85,7 +85,7 @@ GEM minitest (>= 5.1) mutex_m tzinfo (~> 2.0) - addressable (2.8.6) + addressable (2.8.1) public_suffix (>= 2.0.2, < 6.0) aes_key_wrap (1.1.0) ast (2.4.2) @@ -116,17 +116,17 @@ GEM rack (>= 1.6.11) rubyzip (>= 1.3.0) xml-simple (~> 1.1) - bigdecimal (3.1.8) + bigdecimal (3.1.7) bindata (2.5.0) bindex (0.8.1) bootsnap (1.16.0) msgpack (~> 1.2) builder (3.2.4) - capybara (3.40.0) + capybara (3.38.0) addressable matrix mini_mime (>= 0.1.3) - nokogiri (~> 1.11) + nokogiri (~> 1.8) rack (>= 1.6.0) rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) @@ -135,12 +135,12 @@ GEM activesupport childprocess (4.1.0) clamby (1.6.10) - concurrent-ruby (1.3.1) + concurrent-ruby (1.2.3) connection_pool (2.4.1) crack (0.4.5) rexml crass (1.0.6) - cssbundling-rails (1.4.0) + cssbundling-rails (1.3.3) railties (>= 6.0.0) data_migrate (9.4.0) activerecord (>= 6.1) @@ -150,13 +150,13 @@ GEM irb (>= 1.5.0) reline (>= 0.3.1) declarative (0.0.20) - diff-lcs (1.5.1) + diff-lcs (1.5.0) digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) - dotenv (3.1.2) - dotenv-rails (3.1.2) - dotenv (= 3.1.2) - railties (>= 6.1) + dotenv (2.8.1) + dotenv-rails (2.8.1) + dotenv (= 2.8.1) + railties (>= 3.2) drb (2.2.1) erubi (1.12.0) factory_bot (6.4.5) @@ -215,21 +215,21 @@ GEM json hiredis (0.6.3) httpclient (2.8.3) - i18n (1.14.5) + i18n (1.14.4) concurrent-ruby (~> 1.0) i18n-language-mapping (0.1.3.1) image_processing (1.12.2) mini_magick (>= 4.9.5, < 5) ruby-vips (>= 2.0.17, < 3) io-console (0.7.2) - irb (1.13.1) - rdoc (>= 4.0.0) + irb (1.12.0) + rdoc reline (>= 0.4.2) - jbuilder (2.12.0) + jbuilder (2.11.5) actionview (>= 5.0.0) activesupport (>= 5.0.0) jmespath (1.6.2) - jsbundling-rails (1.3.0) + jsbundling-rails (1.2.2) railties (>= 6.0.0) json (2.6.3) json-jwt (1.16.6) @@ -255,38 +255,38 @@ GEM net-imap net-pop net-smtp - marcel (1.0.4) + marcel (1.0.2) matrix (0.4.2) memoist (0.16.2) mini_magick (4.12.0) mini_mime (1.1.5) mini_portile2 (2.8.6) - minitest (5.23.1) + minitest (5.22.3) msgpack (1.6.0) multi_json (1.15.0) mutex_m (0.2.0) net-http (0.4.1) uri - net-imap (0.4.11) + net-imap (0.4.10) date net-protocol net-pop (0.1.2) net-protocol net-protocol (0.2.2) timeout - net-smtp (0.5.0) + net-smtp (0.4.0.1) net-protocol - nio4r (2.7.3) - nokogiri (1.16.5) + nio4r (2.7.0) + nokogiri (1.16.4) mini_portile2 (~> 2.8.2) racc (~> 1.4) - nokogiri (1.16.5-x86_64-linux) + nokogiri (1.16.4-x86_64-linux) racc (~> 1.4) omniauth (2.1.2) hashie (>= 3.4.6) rack (>= 2.2.3) rack-protection - omniauth-rails_csrf_protection (1.0.2) + omniauth-rails_csrf_protection (1.0.1) actionpack (>= 4.2) omniauth (~> 2.0) omniauth_openid_connect (0.7.1) @@ -314,11 +314,11 @@ GEM pg (1.4.5) psych (5.1.2) stringio - public_suffix (5.0.5) + public_suffix (5.0.3) puma (5.6.8) nio4r (~> 2.0) - racc (1.8.0) - rack (3.0.11) + racc (1.7.3) + rack (2.2.9) rack-oauth2 (2.2.0) activesupport attr_required @@ -326,30 +326,30 @@ GEM faraday-follow_redirects json-jwt (>= 1.11.0) rack (>= 2.1.0) - rack-protection (4.0.0) + rack-protection (3.2.0) base64 (>= 0.1.0) - rack (>= 3.0.0, < 4) - rack-session (2.0.0) - rack (>= 3.0.0) + rack (~> 2.2, >= 2.2.4) + rack-session (1.0.2) + rack (< 3) rack-test (2.1.0) rack (>= 1.3) - rackup (2.1.0) - rack (>= 3) - webrick (~> 1.8) - rails (7.1.3.3) - actioncable (= 7.1.3.3) - actionmailbox (= 7.1.3.3) - actionmailer (= 7.1.3.3) - actionpack (= 7.1.3.3) - actiontext (= 7.1.3.3) - actionview (= 7.1.3.3) - activejob (= 7.1.3.3) - activemodel (= 7.1.3.3) - activerecord (= 7.1.3.3) - activestorage (= 7.1.3.3) - activesupport (= 7.1.3.3) + rackup (1.0.0) + rack (< 3) + webrick + rails (7.1.3.1) + actioncable (= 7.1.3.1) + actionmailbox (= 7.1.3.1) + actionmailer (= 7.1.3.1) + actionpack (= 7.1.3.1) + actiontext (= 7.1.3.1) + actionview (= 7.1.3.1) + activejob (= 7.1.3.1) + activemodel (= 7.1.3.1) + activerecord (= 7.1.3.1) + activestorage (= 7.1.3.1) + activesupport (= 7.1.3.1) bundler (>= 1.15.0) - railties (= 7.1.3.3) + railties (= 7.1.3.1) rails-dom-testing (2.2.0) activesupport (>= 5.0.0) minitest @@ -357,9 +357,9 @@ GEM rails-html-sanitizer (1.6.0) loofah (~> 2.21) nokogiri (~> 1.14) - railties (7.1.3.3) - actionpack (= 7.1.3.3) - activesupport (= 7.1.3.3) + railties (7.1.3.1) + actionpack (= 7.1.3.1) + activesupport (= 7.1.3.1) irb rackup (>= 1.0.0) rake (>= 12.2) @@ -367,11 +367,11 @@ GEM zeitwerk (~> 2.6) rainbow (3.1.1) rake (13.2.1) - rdoc (6.7.0) + rdoc (6.6.3.1) psych (>= 4.0.0) redis (4.8.0) - regexp_parser (2.9.2) - reline (0.5.8) + regexp_parser (2.8.1) + reline (0.5.4) io-console (~> 0.5) remote_syslog_logger (1.0.4) syslog_protocol @@ -382,25 +382,24 @@ GEM request_store (1.5.1) rack (>= 1.4) retriable (3.1.2) - rexml (3.2.8) - strscan (>= 3.0.9) - rspec-core (3.13.0) - rspec-support (~> 3.13.0) - rspec-expectations (3.13.0) + rexml (3.2.6) + rspec-core (3.12.2) + rspec-support (~> 3.12.0) + rspec-expectations (3.12.3) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.13.0) - rspec-mocks (3.13.1) + rspec-support (~> 3.12.0) + rspec-mocks (3.12.6) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.13.0) - rspec-rails (6.1.2) + rspec-support (~> 3.12.0) + rspec-rails (6.1.0) actionpack (>= 6.1) activesupport (>= 6.1) railties (>= 6.1) - rspec-core (~> 3.13) - rspec-expectations (~> 3.13) - rspec-mocks (~> 3.13) - rspec-support (~> 3.13) - rspec-support (3.13.1) + rspec-core (~> 3.12) + rspec-expectations (~> 3.12) + rspec-mocks (~> 3.12) + rspec-support (~> 3.12) + rspec-support (3.12.1) rubocop (1.56.1) base64 (~> 0.1.1) json (~> 2.3) @@ -432,7 +431,7 @@ GEM ruby-vips (2.1.4) ffi (~> 1.12) rubyzip (2.3.2) - selenium-webdriver (4.10.0) + selenium-webdriver (4.8.0) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) @@ -451,7 +450,6 @@ GEM activesupport (>= 5.2) sprockets (>= 3.0.0) stringio (3.1.0) - strscan (3.1.0) swd (2.0.2) activesupport (>= 3) attr_required (>= 0.0.5) @@ -477,10 +475,10 @@ GEM activemodel (>= 6.0.0) bindex (>= 0.4.0) railties (>= 6.0.0) - webdrivers (5.3.1) + webdrivers (5.2.0) nokogiri (~> 1.6) rubyzip (>= 1.3.0) - selenium-webdriver (~> 4.0, < 4.11) + selenium-webdriver (~> 4.0) webfinger (2.1.2) activesupport faraday (~> 2.0) @@ -490,7 +488,7 @@ GEM crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.1) - websocket (1.2.10) + websocket (1.2.9) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) @@ -498,7 +496,7 @@ GEM rexml xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.15) + zeitwerk (2.6.13) PLATFORMS ruby @@ -506,17 +504,17 @@ PLATFORMS DEPENDENCIES active_model_serializers (>= 0.10.14) - active_storage_validations (>= 1.1.1) + active_storage_validations (>= 1.1.0) aws-sdk-s3 bcrypt (~> 3.1.7) bigbluebutton-api-ruby (= 1.9.1) bootsnap - capybara (>= 3.39.0) + capybara clamby (~> 1.6.10) - cssbundling-rails (>= 1.4.0) + cssbundling-rails (>= 1.3.3) data_migrate (>= 9.4.0) debug - dotenv-rails (>= 3.0.0) + dotenv-rails factory_bot (>= 6.4.1) factory_bot_rails (>= 6.4.3) faker @@ -525,21 +523,21 @@ DEPENDENCIES hiredis (~> 0.6.0) i18n-language-mapping image_processing (~> 1.2) - jbuilder (>= 2.12.0) - jsbundling-rails (>= 1.3.0) + jbuilder + jsbundling-rails (>= 1.2.2) jwt lograge (~> 0.14.0) mini_magick (>= 4.9.5) omniauth (~> 2.1.2) - omniauth-rails_csrf_protection (~> 1.0.2) + omniauth-rails_csrf_protection (~> 1.0.1) omniauth_openid_connect (>= 0.6.1) pagy (~> 6.0, >= 6.0.0) pg puma (~> 5.6) - rails (~> 7.1.3, >= 7.1.3.2) + rails (~> 7.1.3) redis (~> 4.0) remote_syslog_logger - rspec-rails (>= 6.1.1) + rspec-rails (>= 6.0.4) rubocop (~> 1.26) rubocop-capybara (~> 2.19.0) rubocop-factory_bot (~> 2.24.0) @@ -551,5 +549,5 @@ DEPENDENCIES sprockets-rails tzinfo-data web-console (>= 4.2.1) - webdrivers (>= 5.3.0) + webdrivers webmock From d202900f5bb973f269b2d6e8f2a06e259ad2b78b Mon Sep 17 00:00:00 2001 From: Ahmad Farhat Date: Mon, 3 Jun 2024 16:08:18 -0400 Subject: [PATCH 03/27] Minor fixes to tenant setup (#5832) * Minor fixes to tenant setup * Fix test case --- .github/workflows/ci.build.push.yml | 9 ++------- app/services/tenant_setup.rb | 6 +++++- spec/controllers/admin/tenants_controller_spec.rb | 4 ++++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.build.push.yml b/.github/workflows/ci.build.push.yml index cb894d4ceb..ed102702a9 100644 --- a/.github/workflows/ci.build.push.yml +++ b/.github/workflows/ci.build.push.yml @@ -4,13 +4,8 @@ env: name: CI Build Push on: push: - branches-ignore: - - v1 - - v2 - - v3 - - translations* - - snyk* - - dependabot* + branches: + - master jobs: main: diff --git a/app/services/tenant_setup.rb b/app/services/tenant_setup.rb index 2703249408..12ff066578 100644 --- a/app/services/tenant_setup.rb +++ b/app/services/tenant_setup.rb @@ -53,7 +53,11 @@ def create_site_settings { setting: Setting.find_by(name: 'ShareRooms'), value: 'true', provider: @provider }, { setting: Setting.find_by(name: 'PreuploadPresentation'), value: 'true', provider: @provider }, { setting: Setting.find_by(name: 'RoleMapping'), value: '', provider: @provider }, - { setting: Setting.find_by(name: 'DefaultRole'), provider: @provider, value: 'User' } + { setting: Setting.find_by(name: 'DefaultRole'), provider: @provider, value: 'User' }, + { setting: Setting.find_by(name: 'DefaultRecordingVisibility'), provider: @provider, value: 'Published' }, + { setting: Setting.find_by(name: 'HelpCenter'), provider: @provider, value: '' }, + { setting: Setting.find_by(name: 'Maintenance'), provider: @provider, value: '' }, + { setting: Setting.find_by(name: 'SessionTimeout'), provider: @provider, value: '1' } ] end diff --git a/spec/controllers/admin/tenants_controller_spec.rb b/spec/controllers/admin/tenants_controller_spec.rb index 1a7ec8e176..dfd13e8e93 100644 --- a/spec/controllers/admin/tenants_controller_spec.rb +++ b/spec/controllers/admin/tenants_controller_spec.rb @@ -142,6 +142,10 @@ def create_settings_permissions_meetingoptions Setting.find_or_create_by(name: 'PreuploadPresentation') Setting.find_or_create_by(name: 'RoleMapping') Setting.find_or_create_by(name: 'DefaultRole') + Setting.find_or_create_by(name: 'DefaultRecordingVisibility') + Setting.find_or_create_by(name: 'HelpCenter') + Setting.find_or_create_by(name: 'Maintenance') + Setting.find_or_create_by(name: 'SessionTimeout') Permission.find_or_create_by(name: 'CreateRoom') Permission.find_or_create_by(name: 'ManageUsers') From 18879ccf278b6f44ac18766e9d0eb2e3bc3acf39 Mon Sep 17 00:00:00 2001 From: Ahmad Farhat Date: Tue, 4 Jun 2024 10:17:37 -0400 Subject: [PATCH 04/27] Fix issue with login after redirect not working (#5833) --- app/javascript/contexts/auth/AuthProvider.jsx | 6 ++++-- .../hooks/mutations/sessions/useCreateSession.jsx | 4 ++++ .../hooks/mutations/sessions/useDeleteSession.jsx | 6 +++--- app/javascript/routes/UnauthenticatedOnly.jsx | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/javascript/contexts/auth/AuthProvider.jsx b/app/javascript/contexts/auth/AuthProvider.jsx index 5c896afc5c..835206c97a 100644 --- a/app/javascript/contexts/auth/AuthProvider.jsx +++ b/app/javascript/contexts/auth/AuthProvider.jsx @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Lesser General Public License along // with Greenlight; if not, see . -import React, { useContext, useMemo } from 'react'; +import React, { useContext, useMemo, useState } from 'react'; import PropTypes from 'prop-types'; import useSessions from '../../hooks/queries/users/useSessions'; @@ -30,6 +30,7 @@ export function useAuth() { export default function AuthProvider({ children }) { const { isLoading, data: currentUser } = useSessions(); + const [stateChanging, setStateChanging] = useState(false); const user = { id: currentUser?.id, @@ -44,8 +45,9 @@ export default function AuthProvider({ children }) { verified: currentUser?.verified, status: currentUser?.status, external_account: currentUser?.external_account, - stateChanging: false, + stateChanging, isSuperAdmin: currentUser?.super_admin, + setStateChanging, }; const memoizedCurrentUser = useMemo(() => user, [user]); diff --git a/app/javascript/hooks/mutations/sessions/useCreateSession.jsx b/app/javascript/hooks/mutations/sessions/useCreateSession.jsx index 10fef82ec0..0c0040897e 100644 --- a/app/javascript/hooks/mutations/sessions/useCreateSession.jsx +++ b/app/javascript/hooks/mutations/sessions/useCreateSession.jsx @@ -19,6 +19,7 @@ import { useNavigate, useSearchParams } from 'react-router-dom'; import { toast } from 'react-toastify'; import { useTranslation } from 'react-i18next'; import axios from '../../../helpers/Axios'; +import { useAuth } from '../../../contexts/auth/AuthProvider'; export default function useCreateSession() { const { t } = useTranslation(); @@ -26,11 +27,13 @@ export default function useCreateSession() { const navigate = useNavigate(); const [searchParams] = useSearchParams(); const redirect = searchParams.get('location'); + const { setStateChanging } = useAuth(); return useMutation( ({ session, token }) => axios.post('/sessions.json', { session, token }).then((resp) => resp.data.data), { onSuccess: async (response) => { + setStateChanging(true); await queryClient.refetchQueries('useSessions'); // if the current user does NOT have the CreateRoom permission, then do not re-direct to rooms page @@ -41,6 +44,7 @@ export default function useCreateSession() { } else { navigate('/rooms'); } + setStateChanging(true); }, onError: (err) => { if (err.response.data.errors === 'PendingUser') { diff --git a/app/javascript/hooks/mutations/sessions/useDeleteSession.jsx b/app/javascript/hooks/mutations/sessions/useDeleteSession.jsx index f16b406b55..e7baa4a659 100644 --- a/app/javascript/hooks/mutations/sessions/useDeleteSession.jsx +++ b/app/javascript/hooks/mutations/sessions/useDeleteSession.jsx @@ -25,17 +25,17 @@ export default function useDeleteSession({ showToast = true }) { const { t } = useTranslation(); const queryClient = useQueryClient(); const navigate = useNavigate(); - const currentUser = useAuth(); + const { setStateChanging } = useAuth(); return useMutation( () => axios.delete('/sessions/signout.json'), { onSuccess: async () => { - currentUser.stateChanging = true; + setStateChanging(true); queryClient.refetchQueries('useSessions'); await navigate('/'); if (showToast) { toast.success(t('toast.success.session.signed_out')); } - currentUser.stateChanging = false; + setStateChanging(false); }, onError: () => { toast.error(t('toast.error.problem_completing_action')); diff --git a/app/javascript/routes/UnauthenticatedOnly.jsx b/app/javascript/routes/UnauthenticatedOnly.jsx index d47c39e110..2ff10bfc7b 100644 --- a/app/javascript/routes/UnauthenticatedOnly.jsx +++ b/app/javascript/routes/UnauthenticatedOnly.jsx @@ -21,7 +21,7 @@ import { useAuth } from '../contexts/auth/AuthProvider'; export default function UnauthenticatedOnly() { const currentUser = useAuth(); - if (currentUser.signed_in) { + if (currentUser.signed_in && !currentUser.stateChanging) { return ; } From 194302dd49c63343e0b404c7cd36c90d4b981824 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 10:17:46 -0400 Subject: [PATCH 05/27] Translate app/assets/locales/en.json in gl (#5826) 100% translated source file: 'app/assets/locales/en.json' on 'gl'. Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- app/assets/locales/gl.json | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/app/assets/locales/gl.json b/app/assets/locales/gl.json index 650eff6569..49e2a9cbe9 100644 --- a/app/assets/locales/gl.json +++ b/app/assets/locales/gl.json @@ -17,6 +17,8 @@ "close": "Pechar", "delete": "Eliminar", "copy": "Copiar a ligazón para unirse", + "copy_viewer_code": "Copiar o código do espectador", + "copy_moderator_code": "Copiar o código do moderador", "or": "Ou", "online": "En liña", "help_center": "Centro de axuda", @@ -274,7 +276,13 @@ "privacy_policy": "Directiva de privacidade", "change_term_links": "Cambiar as ligazóns das condicións que aparecen na parte inferior da páxina", "change_privacy_link": "Cambiar a ligazón de privacidade que aparece na parte inferior da páxina", + "helpcenter": "Centro de axuda", + "change_helpcenter_link": "Cambiar a ligazón do centro de axuda que aparece baixo o menú despregábel do perfil", + "maintenance": "Báner de mantemento", + "change_maintenance_text": "Cambiar o texto do báner de mantemento que aparece na cabeceira", "change_url": "Cambiar o URL", + "set_text": "Definir o texto", + "clear_banner": "Limpar o báner", "enter_link": "Introduza aquí a ligazón" }, "settings": { @@ -282,7 +290,13 @@ "allow_users_to_share_rooms": "Permitir aos usuarios compartir salas", "allow_users_to_share_rooms_description": "Se o axusta como desactivado, o botón desaparecerá do menú despregábel de opcións de sala, o que impedirá que os usuarios compartan salas", "allow_users_to_preupload_presentation": "Permitir aos usuarios enviar previamente presentacións", - "allow_users_to_preupload_presentation_description": "Os usuarios poden enviar previamente unha presentación para utilizala como presentación predeterminada para esa sala específica" + "allow_users_to_preupload_presentation_description": "Os usuarios poden enviar previamente unha presentación para utilizala como presentación predeterminada para esa sala específica", + "default_visibility": "Visibilidade de gravación predeterminada", + "default_visibility_description": "Todas as gravacións creadas recentemente terán esta visibilidade de xeito predeterminado defecto", + "session_timeout": "Tempo de espera da sesión", + "session_timeout_description": "Pode configurar o tempo de espera da sesión cunha cookie predeterminada de 1 día ou unha cookie de sesión ampliada de 7 días", + "default_session_timeout": "Predeterminada (1 día)", + "extended_session_timeout": "Ampliada (7 días)" }, "registration": { "registration": "Rexistro", @@ -351,7 +365,8 @@ "manage_roles": "Permitir que os usuarios con este rol editen outros roles", "shared_list": "Incluir os usuarios con este rol no menú despregábel para compartir salas", "room_limit": "Límite de salas", - "email_on_signup": "Recibir un correo-e cando se rexistre un novo usuario" + "email_on_signup": "Recibir un correo-e cando se rexistre un novo usuario", + "allowed_recording_visibility": "Visibilidades de gravación permitidas" } } }, @@ -387,7 +402,9 @@ "access_code_copied": "O código de acceso foi copiado.", "access_code_generated": "Xerouse un novo código de acceso.", "access_code_deleted": "O código de acceso foi eliminado.", - "copied_meeting_url": "Copiouse o URL da xuntanza. Pódese empregar a ligazón para unirse á xuntanza." + "copied_meeting_url": "Copiouse o URL da xuntanza. Pódese empregar a ligazón para unirse á xuntanza.", + "copied_viewer_code": "Copiouse o código de acceso do espectador.", + "copied_moderator_code": "Copiouse o código de acceso do moderador." }, "site_settings": { "site_setting_updated": "Foron actualizados os axustes do sitio.", @@ -395,7 +412,9 @@ "brand_image_updated": "A imaxe corporativa foi actualizada.", "brand_image_deleted": "A imaxe corporativa foi eliminada.", "privacy_policy_updated": "A directiva de pivacidade foi actualizada.", - "terms_of_service_updated": "Actualizáronse as condicións do servizo." + "helpcenter_updated": "Actualizouse a ligazón do centro de axuda.", + "terms_of_service_updated": "Actualizáronse as condicións do servizo.", + "maintenance_updated": "Actualizouse o báner de mantemento." }, "recording": { "recording_visibility_updated": "Foi actualizada a visibilidade da gravación.", @@ -419,6 +438,7 @@ "file_size_too_large": "O ficheiro é demasiado grande.", "file_upload_error": "Non é posíbel enviar o ficheiro.", "signin_required": "Ten que autenticarse para acceder a esta páxina.", + "malware_detected": "Detectouse código malicioso! O ficheiro que enviou pode conter códio malicioso. Comprobe o seu ficheiro e ténteo de novo.", "roles": { "role_assigned": "Non é posíbel eliminar este rol porque está asignado a polo menos un usuario." }, @@ -665,7 +685,8 @@ "site_settings": { "fields": { "value": { - "placeholder": "Introduza aquí a ligazón…" + "placeholder": "Introduza aquí a ligazón…", + "text_placeholder": "Introduza aquí o texto…" } } }, From 98961c57bbd49a61d2667eaba5b743b55d11963d Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 10:17:54 -0400 Subject: [PATCH 06/27] Translate app/assets/locales/en.json in it (#5825) 100% translated source file: 'app/assets/locales/en.json' on 'it'. Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- app/assets/locales/it.json | 703 +++++++++++++++++++++++++++++++++++++ 1 file changed, 703 insertions(+) create mode 100644 app/assets/locales/it.json diff --git a/app/assets/locales/it.json b/app/assets/locales/it.json new file mode 100644 index 0000000000..291f0a983d --- /dev/null +++ b/app/assets/locales/it.json @@ -0,0 +1,703 @@ +{ + "start": "Inizio", + "search": "Cerca", + "home": "Home", + "previous": "Precedente", + "back": "Indietro", + "next": "Successivo", + "view": "Visualizza", + "join": "Partecipa", + "edit": "Modifica", + "save": "Salva", + "save_changes": "Salva modifiche", + "update": "Aggiorna", + "report": "Riepilogo", + "share": "Condividi", + "cancel": "Annulla", + "close": "Chiudi", + "delete": "Elimina", + "copy": "Copia l'Indirizzo di accesso", + "copy_viewer_code": "Copia il Codice partecipante", + "copy_moderator_code": "Copia il Codice moderatore", + "or": "O", + "online": "Online", + "help_center": "Aiuto", + "are_you_sure": "Sei sicuro?", + "return_home": "Torna alla pagina principale", + "created_at": "Creato il", + "view_recordings": "Guarda le registrazioni", + "join_session": "Partecipa alla sessione", + "no_result_search_input": "Nessun risultato per \"{{ searchInput }}\"", + "action_permanent": "Questa azione non può essere annullata.", + "homepage": { + "welcome_bbb": "Benvenuto in BigBlueButton.", + "bigbluebutton_description": "BigBlueButton è un sistema di aule virtuali open source per lezioni online. La piattaforma ottimizza il tempo dedicato all'apprendimento applicato, consentendo ai discenti di collaborare e ricevere feedback in tempo reale.", + "greenlight_description": "Crea aule per ospitare le tue sessioni, oppure unisciti a quelle degli altri utilizzando un pratico link.", + "learn_more": "Per saperne di più su BigBlueButton", + "explore_features": "Esplora le funzionalità", + "meeting_title": "Avvia una sessione", + "meeting_description": "Avvia una lezione virtuale con video, audio, condivisione dello schermo, chat e tutti gli strumenti utili per l'apprendimento applicato.", + "recording_title": "Registra le sessioni", + "recording_description": "Registra le sessioni BigBlueButton e condividile con i discenti per rivedere e riflettere sul materiale.", + "settings_title": "Gestisci le tue aule", + "settings_description": "Configura le aule e le impostazioni delle sessioni per gestire al meglio la tua aula.", + "and_more_title": "E altro ancora!", + "and_more_description": "BigBlueButton offre strumenti integrati per l'apprendimento applicato ed è progettato per farti risparmiare tempo durante le lezioni.", + "enter_meeting_url": "Inserisci l'URL dell'incontro", + "enter_meeting_url_instruction": "Inserisci l'URL della sessione BigBlueButton nel campo sottostante." + }, + "authentication": { + "sign_in": "Accedi", + "sign_up": "Registrati", + "sign_out": "Esci", + "email": "Email", + "password": "Password", + "confirm_password": "Conferma password", + "enter_email": "Inserisci la tua email", + "enter_name": "Inserisci il tuo nome", + "remember_me": "Ricordami", + "forgot_password": "Password dimenticata?", + "dont_have_account": "Non hai un'utenza?", + "create_account": "Crea utenza", + "create_an_account": "Crea un'utenza", + "already_have_account": "Hai già un'utenza?" + }, + "user": { + "user": "Utente", + "users": "Utenti", + "name": "Nome", + "email_address": "Indirizzo email", + "authenticator": "Authenticator", + "full_name": "Nome e cognome", + "no_user_found": "Nessun utente trovato", + "type_three_characters": "Digita tre (3) o più caratteri per mostrare gli altri utenti", + "search_not_found": "Nessun utente trovato", + "profile": { + "profile": "Profilo", + "language": "Lingua", + "role": "Ruolo", + "administrator": "Amministratore", + "guest": "Ospite" + }, + "account": { + "account_info": "Informazioni utenza", + "delete_account": "Elimina utenza", + "change_password": "Modifica password", + "set_password": "Imposta la tua nuova password", + "reset_password": "Reimposta la password", + "update_account_info": "Aggiorna le informazioni utente", + "current_password": "Password attuale", + "new_password": "Nuova Password", + "confirm_password": "Conferma Password", + "permanently_delete_account": "Elimina definitivamente l'utenza", + "delete_account_description": "Se scegli di eliminare l'utenza, NON potrai più recuperarla.\nTutte le informazioni relative alla tua utenza, incluse le impostazioni, le aule e le registrazioni, verranno cancellate.", + "delete_account_confirmation": "Sì, voglio eliminare la mia utenza", + "are_you_sure_delete_account": "Sicuro di voler eliminare la tua utenza?" + }, + "avatar": { + "upload_avatar": "Carica immagine profilo", + "delete_avatar": "Elimina immagine profilo", + "crop_avatar": "Ritaglia la tua immagine profilo" + }, + "pending": { + "title": "Registrazione in sospeso", + "message": "Grazie per esserti registrato! La tua utenza è in attesa di approvazione da parte di un amministratore." + } + }, + "room": { + "room": "Aula", + "rooms": "Aule", + "room_name": "Nome dell'aula", + "add_new_room": "+ Nuova aula", + "create_room": "Crea aula", + "delete_room": "Elimina aula", + "create_new_room": "Crea una nuova aula", + "enter_room_name": "Inserisci il nome dell'aula", + "shared_by": "condiviso da", + "last_session": "Ultima sessione: {{ localizedTime }}", + "no_last_session": "Nessuna sessione precedente creata", + "search_not_found": "Nessuna aula trovata", + "rooms_list_is_empty": "Non hai ancora creato nessuna aula.", + "rooms_list_empty_create_room": "Crea la tua prima aula cliccando sul pulsante in basso e inserendo il nome.", + "meeting": { + "start_meeting": "Avvia sessione", + "join_meeting": "Partecipa alla sessione", + "meeting_invitation": "Sei stato invitato a partecipare", + "meeting_not_started": "La sessione non è ancora iniziata", + "join_meeting_automatically": "Quando la sessione inizierà parteciperai automaticamente", + "recording_consent": "Sono consapevole che questa sessione potrebbe essere registrata includendo la mia voce e il mio video, se abilitati." + }, + "presentation": { + "presentation": "Presentazione", + "click_to_upload": "Clicca per caricare", + "drag_and_drop": " o trascina qui", + "upload_description": "Puoi caricare qualsiasi documento Office o file PDF (non più grande di {{size}}). A seconda delle dimensioni del file, potrebbe essere necessario del tempo per il caricamento prima di poterlo utilizzare", + "delete_presentation": "Elimina presentazione", + "are_you_sure_delete_presentation": "Sicuro di voler eliminare la presentazione?" + }, + "shared_access": { + "access": "Accesso", + "add_share_access": "+ Condividi accesso", + "share_room_access": "Condividi l'accesso all'aula", + "add_some_users": "È ora di aggiungere gli utenti!", + "add_some_users_description": "Per aggiungere nuovi utenti, clicca sul pulsante in basso e cerca o seleziona gli utenti con cui desideri condividere quest'aula", + "delete_shared_access": "Elimina l'Accesso condiviso", + "are_you_sure_delete_shared_access": "Sicuro di voler eliminare questo Accesso condiviso?" + }, + "settings": { + "settings": "Impostazioni", + "room_name": "Nome dell'aula", + "user_settings": "Impostazioni utente", + "allow_room_to_be_recorded": "Consenti le registrazioni nell'aula", + "require_signed_in": "Gli utenti devono effettuare l'accesso per partecipare", + "require_signed_in_message": "Devi effettuare l'accesso per partecipare", + "require_mod_approval": "Il moderatore deve approvare l'accesso", + "allow_any_user_to_start": "Consenti a qualsiasi utente di avviare la sessione", + "all_users_join_as_mods": "Tutti gli utenti partecipano come moderatori", + "mute_users_on_join": "Silenzia gli utenti all'ingresso", + "generate": "Genera", + "access_code": "Codice di accesso", + "mod_access_code": "Codice di accesso moderatore", + "mod_access_code_optional": "Codice di accesso moderatore (opzionale)", + "access_code_required": "Inserisci il codice di accesso", + "wrong_access_code": "Codice di accesso errato", + "generate_viewers_access_code": "Genera codice di accesso per uditori", + "generate_mods_access_code": "Genera codice di accesso per moderatori", + "are_you_sure_delete_room": "Sicuro di voler eliminare quest'aula?" + } + }, + "recording": { + "recording": "Registrazione", + "recordings": "Registrazioni", + "processing": "Registrazioni in elaborazione...", + "name": "Nome", + "length": "Durata", + "users": "Utenti", + "visibility": "Visibilità", + "formats": "Formati", + "published": "Pubblicata", + "unpublished": "Non pubblicata", + "protected": "Protetta", + "public": "Pubblica", + "public_protected": "Pubblica/Protetta", + "length_in_minutes": "{{recording.length}} min.", + "processing_recording": "Registrazione in elaborazione, può richiedere del tempo...", + "copy_recording_urls": "Copia URL Registrazione", + "recordings_list_empty": "Non ci sono registrazioni.", + "public_recordings_list_empty": "Non ci sono registrazioni pubbliche.", + "recordings_list_empty_description": "Le registrazioni verranno visualizzate qui dopo aver avviato una riunione e averla registrata.", + "public_recordings_list_empty_description": "Le registrazioni verranno visualizzate qui, quando disponibili.", + "delete_recording": "Elimina registrazione", + "are_you_sure_delete_recording": "Sicuro di voler eliminare la registrazione?", + "search_not_found": "Nessuna registrazione trovata" + }, + "admin": { + "admin_panel": "Pannello di amministrazione", + "manage_users": { + "manage_users": "Gestisci utenti", + "active": "Attivo", + "approve": "Approva", + "decline": "Rifiuta", + "pending": "In sospeso", + "banned": "Bloccato", + "ban": "Blocca", + "unban": "Sblocca", + "deleted": "Eliminato", + "invited_tab": "Invitato", + "invite_user": "Invita utente", + "send_invitation": "Invia invito", + "enter_user_email": "Digita l'email dell'utente", + "new_user": "Nuovo utente", + "add_new_user": "Nuovo utente", + "create_new_user": "Crea un nuovo utente", + "edit_user": "Modifica utente", + "delete_user": "Elimina utente", + "users_edit_path": "Utenti/Modifica", + "create_account": "Crea utenza", + "create_room": "Crea aula", + "create_new_room": "Crea una nuova aula", + "user_created_at": "Creato: {{localizedTime}}", + "are_you_sure_delete_account": "Sicuro di vole eliminare l'utenza {{user.name}}?", + "delete_account_warning": "Se decidi di eliminare questa utenza, NON sarà più recuperabile.", + "empty_active_users": "Non ci sono ancora utenti attivi in questo server!", + "empty_active_users_subtext": "Quando ci sarà un utente attivo, apparirà qui.", + "empty_pending_users": "Non ci sono ancora utenti in attesa in questo server!", + "empty_pending_users_subtext": "Quando ci sarà un utente in attesa, apparirà qui.", + "empty_banned_users": "Non ci sono ancora utenti bloccati in questo server!", + "empty_banned_users_subtext": "Quando ci sarà un utente bloccato, apparirà qui.", + "empty_invited_users": "Non ci sono ancora utenti invitati in questo server!", + "empty_invited_users_subtext": "Quando ci sarà un utente invitato, apparirà qui.", + "invited": { + "time_sent": "Ora di invio", + "valid": "Valido" + } + }, + "server_rooms": { + "server_rooms": "Aule sul server", + "name": "Nome", + "owner": "Proprietario", + "room_id": "ID aula", + "participants": "Partecipanti", + "status": "Stato", + "running": "In esecuzione", + "not_running": "Non in esecuzione", + "active": "Attivo", + "current_session": "Sessione corrente: {{lastSession}}", + "last_session": "Ultima sessione: {{localizedTime}}", + "no_meeting_yet": "Ancora nessun meeting.", + "delete_server_rooms": "Elimina l'aula dal server", + "resync_recordings": "Sincronizza le registrazioni", + "empty_room_list": "Non ci sono ancora aule su questo server!", + "empty_room_list_subtext": "Le aule appariranno qui dopo che avrai creato la prima." + }, + "server_recordings": { + "server_recordings": "Registrazioni sul server", + "latest_recordings": "Ultime registrazioni", + "no_recordings_found": "Nessuna registrazione trovata." + }, + "site_settings": { + "site_settings": "Impostazioni del sito", + "customize_greenlight": "Personalizza Greenlight", + "appearance": { + "appearance": "Aspetto", + "brand_color": "Colore del marchio", + "regular": "Primario", + "lighten": "Secondario", + "brand_image": "Logo", + "click_to_upload": "Clicca per caricare", + "drag_and_drop": "o trascina qui", + "upload_brand_image_description": "Puoi caricare un file PNG, JPG o SVG (non più grande di {{size}}). A seconda della dimensione del file, ci potrebbe volere del tempo prima che possa essere usato", + "remove_branding_image": "Rimuovi logo" + }, + "administration": { + "administration": "Amministrazione", + "terms": "Termini e condizioni", + "privacy": "Dati sensibili", + "privacy_policy": "Informativa sul trattamento dei dati sensibili", + "change_term_links": "Modifica il link di termini e condizioni in calce alla pagina", + "change_privacy_link": "Modifica il link dell'informativa dati sensibili in calce alla pagina", + "helpcenter": "Aiuto", + "change_helpcenter_link": "Modifica il link di aiuto nel menù di profilo", + "maintenance": "Immagine per la manutenzione", + "change_maintenance_text": "Modifica il testo dell'immagine per la manutenzione che appare nell'intestazione", + "change_url": "Modifica URL", + "set_text": "Inserisci testo", + "clear_banner": "Elimina l'immagine", + "enter_link": "Inserisci qui il link" + }, + "settings": { + "settings": "Impostazioni", + "allow_users_to_share_rooms": "Consenti agli utenti di condividere l'aula", + "allow_users_to_share_rooms_description": "Impostando su disattivato verrà rimosso il bottone dalla tendina delle opzioni dell'aula, impedendo agli utenti di condividere le aule", + "allow_users_to_preupload_presentation": "Permette agli utenti di caricare le presentazioni in anticipo", + "allow_users_to_preupload_presentation_description": "Gli utenti possono caricare in anticipo una presentazione da usare come predefinita una data aula", + "default_visibility": "Visibilità predefinita delle registrazioni", + "default_visibility_description": "Ogni nuova registrazione avrà questa visibilità per impostazione predefinita", + "session_timeout": "Scadenza sessione", + "session_timeout_description": "Puoi configurare la scadenza della sessione con un cookie predefinito di un giorno o un cookie di sessione esteso da 7 giorni", + "default_session_timeout": "Predefinita (1 giorno)", + "extended_session_timeout": "Estesa (7 giorni)" + }, + "registration": { + "registration": "Iscrizione", + "role_mapping_by_email": "Mappatura dei ruoli per email", + "role_mapping_by_email_description": "Mappa l'utente a un ruolo usando l'email. Deve essere nel formato: ruolo1=email1, ruolo2=email2", + "enter_role_mapping_rule": "Inserisci una regola di mappatura dei ruoli", + "resync_on_login": "Sincronizza i dati utente ad ogni accesso", + "resync_on_login_description": "Sincronizza le informazioni dell'utente ogni volta che accede, allineando sempre il provider esterno alle informazioni su Greenlight", + "default_role": "Ruolo predefinito", + "default_role_description": "Il ruolo predefinito assegnato ai nuovi utenti", + "registration_method": "Modalità di iscrizione", + "registration_method_description": "Modifica come gli utenti si registrano al sito", + "registration_methods" : { + "open": "Iscrizione aperta", + "invite": "Su invito", + "approval": "Approva/Rifiuta" + } + } + }, + "room_configuration": { + "room_configuration": "Configurazione aula", + "default": "Facoltativo (predefinito: attivo)", + "optional": "Facoltativo (predefinito: disattivato)", + "enabled": "Sempre attivo", + "disabled": "Disattivato", + "configurations": { + "allow_room_to_be_recorded": "Permetti la registrazione per l'aula", + "allow_room_to_be_recorded_description": "Permetti ai proprietari dell'aula di specificare se vogliono la possibilità di registrare l'aula o no. Se attivato, il moderatore deve comunque premere il pulsante 'Registra' dopo l'avvio della sessione.", + "require_user_signed_in": "Richiedi l'iscrizione degli utenti prima di partecipare", + "require_user_signed_in_description": "Permetti solo a chi ha un'utenza su Greenlight di partecipare all'incontro. Se non ha fatto accesso, verrà rimandato alla pagina di login quando proverà ad accedere a un'aula.", + "require_mod_approval": "Richiedi l'approvazione di un moderatore prima di accedere", + "require_mod_approval_description": "Chiede al moderatore dell'incontro su BigBlueButton quando un utente prova ad accedere. Se l'utente viene approvato, potrà partecipare all'incontro.", + "allow_any_user_to_start_meeting": "Permette a tutti gli utenti di avviare la sessione", + "allow_any_user_to_start_meeting_description": "Permette a tutti gli utenti di avviare l'incontro in qualsiasi momento. Normalmente solo il proprietario dell'aula può avviare l'incontro.", + "allow_users_to_join_as_mods": "Tutti gli utenti sono moderatori all'accesso", + "allow_users_to_join_as_mods_description": "Assegna a tutti gli utenti i privilegi di moderatore in BigBlueButton quando accedono all'incontro", + "mute_users_on_join": "Silenzia gli utenti all'accesso", + "mute_users_on_join_description": "Silenzia automaticamente l'utente quando accede all'incontro BigBlueButton", + "viewer_access_code": "Codice accesso partecipante", + "viewer_access_code_description": "Permette ai proprietari dell'aula di avere un codice alfanumerico casuale da condividere con gli utenti. Il codice, se generato, verrà richiesto agli utenti per accedere agli incontri dell'aula.", + "mod_access_code": "Codice accesso moderatore", + "mod_access_code_description": "Permette ai proprietari dell'aula di avere un codice alfanumerico casuale da condividere con gli utenti. Il codice, se generato, non verrà richiesto e quando inserito in un incontro dell'aula farà accedere l'utente come moderatore." + } + }, + "roles": { + "role": "Ruolo", + "roles": "Ruoli", + "administrator": "Amministratore", + "guest": "Ospite", + "manage_roles": "Gestisci ruoli", + "delete_role": "Elimina ruolo", + "are_you_sure_delete_role": "Sei sicuro di voler eliminare questo ruolo?", + "enter_role_name": "Inserisci un nome per il ruolo", + "add_role": "+ Crea ruolo", + "create_role": "Crea ruolo", + "create_new_role": "Crea un nuovo ruolo", + "no_role_found": "Nessun ruolo trovato.", + "search_not_found": "Ruoli non trovati", + "edit": { + "create_room": "Permetti agli utenti con questo ruolo di creare delle aule", + "record": "Permetti agli utenti con questo ruolo di registrare i propri incontri", + "manage_users": "Permetti agli utenti con questo ruolo di gestire gli utenti", + "manage_rooms": "Permetti agli utenti con questo ruolo di gestire le aule del server", + "manage_recordings": "Permetti agli utenti con questo ruolo di gestire le registrazioni del server", + "manage_site_settings": "Permetti agli utenti con questo ruolo di gestire le configurazioni del sito", + "manage_roles": "Permetti agli utenti con questo ruolo di modificare gli altri ruoli", + "shared_list": "Includi gli utenti con questo ruolo nella tendina di condivisione delle aule", + "room_limit": "Limite sale", + "email_on_signup": "Ricevi una mail all'iscrizione di un nuovo utente", + "allowed_recording_visibility": "Visibilità consentite per le registrazioni" + } + } + }, + "toast": { + "success": { + "user": { + "user_created": "È stato creato un nuovo utente.", + "user_updated": "L'utente è stato aggiornato.", + "user_deleted": "L'utente è stato cancellato.", + "avatar_updated": "L'immagine del profilo è stata aggiornata.", + "password_changed": "Password modificata con successo. Si prega di accedere nuovamente.", + "password_updated": "La password è stata aggiornata.", + "account_activated": "La tua utenza è stata attivata.", + "activation_email_sent": "Ti abbiamo inviato un'email con le istruzioni per attivare l'utenza.", + "reset_pwd_email_sent": "Ti abbiamo inviato un'email con le istruzioni per ripristinare la password." + }, + "session": { + "signed_out": "Sei stato disconnesso." + }, + "room": { + "room_created": "Nuova aula creata.", + "room_updated": "L'aula è stata aggiornata.", + "room_deleted": "L'aula è stata cancellata.", + "room_shared": "L'aula è stata condivisa.", + "room_unshared": "L'aula non è più condivisa.", + "recordings_synced": "Le registrazioni dell'aula sono state sincronizzate.", + "room_configuration_updated": "La configurazione dell'aula è stata aggiornata.", + "room_setting_updated": "L'impostazione dell'aula è stata aggiornata.", + "presentation_updated": "La presentazione è stata aggiornata.", + "presentation_deleted": "La presentazione è stata cancellata.", + "joining_meeting": "Accesso all'incontro...", + "meeting_started": "Incontro avviato.", + "access_code_copied": "Il codice d'accesso è stato copiato.", + "access_code_generated": "È stato generato un nuovo codice d'accesso.", + "access_code_deleted": "Il codice d'accesso è stato cancellato.", + "copied_meeting_url": "L'URL dell'incontro è stato copiato. Si può usare il collegamento per accedere alla sessione.", + "copied_viewer_code": "Il codice d'accesso partecipante è stato copiato.", + "copied_moderator_code": "Il codice d'accesso moderatore è stato copiato." + }, + "site_settings": { + "site_setting_updated": "Impostazione del sito aggiornata.", + "brand_color_updated": "Il colore di marchio è stato aggiornato.", + "brand_image_updated": "L'immagine di marchio è stata aggiornata.", + "brand_image_deleted": "L'immagine di marchio è stata cancellata.", + "privacy_policy_updated": "L'informativa sul trattamento dei dati sensibili è stata aggiornata.", + "helpcenter_updated": "L'indirizzo di assistenza è stato aggiornato.", + "terms_of_service_updated": "Le condizioni di servizio sono state aggiornate.", + "maintenance_updated": "L'immagine per la manutenzione è stata aggiornata." + }, + "recording": { + "recording_visibility_updated": "La visibilità della registrazione è stata aggiornata.", + "recording_name_updated": "Il nome della registrazione è stato aggiornato.", + "recording_deleted": "La registrazione è stata cancellata.", + "copied_urls": "Gli URL delle registrazioni sono stati copiati." + }, + "role": { + "role_created": "È stato creato un nuovo ruolo.", + "role_updated": "Il ruolo è stato aggiornato.", + "role_deleted": "Il ruolo è stato cancellato.", + "role_permission_updated": "I permessi del ruolo sono stati aggiornati." + }, + "invitations": { + "invitation_sent": "Ti abbiamo inviato un invito" + } + }, + "error": { + "problem_completing_action": "L'azione non può essere completata.\nSi prega di riprovare.", + "file_type_not_supported": "Tipo di documento non supportato.", + "file_size_too_large": "Documento troppo grande.", + "file_upload_error": "Il documento non può essere caricato.", + "signin_required": "Devi aver fatto accesso per vedere questa pagina.", + "malware_detected": "Rilevato Malware! Il documento che hai caricato potrebbe essere dannoso. Si prega di verificare il file e riprovare.", + "roles": { + "role_assigned": "Questo ruolo non può essere cancellato perché assegnato ad almeno un utente." + }, + "users": { + "signup_error": "Impossibile autenticare l'utente. Si prega di contattare un amministratore.", + "invalid_invite": "Il vostro codice di invito è non valido o non corretto. Si prega di contattare un amministratore per ricevere un nuovo codice.", + "email_exists": "È già presente un'utenza con l'email specificata. Si prega di riprovare con un'altra email.", + "old_password": "La password inserita non è corretta.", + "pending": "La tua iscrizione deve essere verificata da un amministratore. Si prega di riprovare più tardi.", + "banned": "Non hai accesso a questo servizio. Si prega di contattare un amministratore se ritieni si tratti di un errore." + }, + "rooms": { + "room_limit": "Non è possibile creare l'aula perché il limite aule è stato raggiunto." + }, + "session": { + "invalid_credentials": "Il nome utente o la password non sono validi. Si prega di verificare le credenziali e riprovare." + } + } + }, + "global_error_page": { + "title": "Errore", + "message": "Spiacente, qualcosa non ha funzionato. Se il problema si ripresentasse, si prega di contattare un amministratore." + }, + "not_found_error_page": { + "title": "Pagina non trovata", + "message": "Spiacente, la pagina che state cercando di aprire non è disponibile." + }, + "account_activation_page": { + "title": "Attivazione utenza", + "account_unverified": "L'utenza non è ancora stata verificata.", + "message": "Per usare Greenlight, si prega di verificare l'utenza seguendo le istruzioni dell'email di attivazione che abbiamo inviato.", + "resend_activation_link": "Se non hai ricevuto un'email di attivazione o se hai un problema nell'usarla, premi il pulsante qui sotto per richiederne una nuova.", + "resend_btn_lbl": "Invia una nuova email di verifica" + }, + "forms": { + "validations": { + "full_name": { + "required": "Si prega di inserire il nome completo", + "min": "Il nome deve essere lungo almeno 2 caratteri", + "max": "Il nome deve essere lungo al più 255 caratteri" + }, + "email": { + "required": "Si prega di inserire un'email", + "email": "Il formato del valore inserito non è valido", + "min": "L'email deve essere lunga almeno 6 caratteri", + "max": "L'email deve essere lunga al più 255 caratteri" + }, + "password": { + "required": "Si prega di inserire una password", + "match": "La password deve contenere almeno", + "min": "- Otto caratteri", + "lower": "- Una lettera minuscola", + "upper": "- Una lettera maiuscola", + "digit": "- Un numero", + "symbol": "- Un carattere non alfanumerico", + "max": "La password deve essere lunga al più 255 caratteri" + }, + "password_confirmation": { + "required": "Si prega di inserire la password per conferma", + "match": "Le password non coincidono" + }, + "emails": { + "required": "Si prega di inserire almeno un'email valida", + "list": "Si prega di inserire una lista di email separate da virgole (utente@utenti.com,utente1@utenti.com,utente2@utenti.com)" + }, + "role_name": { + "required": "Si prega di inserire il nome di un ruolo" + }, + "role": { + "limit": { + "required": "Si prega di inserire il numero massimo di aule", + "min": "Minimo 0", + "max": "Massimo 100" + }, + "type": { + "error": "Occorre specificare un numero" + } + }, + "room": { + "name": { + "required": "Si prega di inserire un nome per l'aula.", + "min": "Il nome deve essere lungo almeno 2 caratteri" + } + }, + "room_join": { + "name": { + "required": "Prego, inserisci il tuo nome." + } + }, + "url": { + "invalid": "URL non valido" + } + }, + "room": { + "fields": { + "name": { + "label": "Nome aula", + "placeholder": "Inserisci un nome aula..." + } + } + }, + "room_join": { + "fields": { + "name": { + "label": "Nome", + "placeholder": "Inserisci il tuo nome" + }, + "access_code": { + "label": "Codice di accesso", + "placeholder": "Inserisci il codice di accesso" + }, + "recording_consent": { + "label": "Accetto che questa sessione possa essere registrata. La registrazione può includere il mio audio e video se abilitati." + } + } + }, + "user": { + "signup": { + "fields": { + "full_name": { + "label": "Nome completo", + "placeholder": "Inserisci il tuo nome completo" + }, + "email": { + "label": "Email", + "placeholder": "Inserisci la tua email" + }, + "password": { + "label": "Password", + "placeholder": "Crea una password" + }, + "password_confirmation": { + "label": "Conferma password", + "placeholder": "Conferma password" + } + } + }, + "signin": { + "fields": { + "email": { + "label": "Email", + "placeholder": "Email" + }, + "password": { + "label": "Password", + "placeholder": "Password" + }, + "remember_me": { + "label": "Ricordami" + } + } + }, + "change_password": { + "fields": { + "old_password": { + "label": "Password attuale", + "placeholder": "Inserisci la tua password" + }, + "new_password": { + "label": "Nuova password", + "placeholder": "Inserisci la nuova password" + }, + "password_confirmation": { + "label": "Conferma password", + "placeholder": "Conferma la nuova password" + } + }, + "validations": { + "old_password": { + "required": "Per favore inserisci la password attuale" + } + } + }, + "forget_password": { + "fields": { + "email": { + "label": "Email", + "placeholder": "Inserisci l'email della tua utenza" + } + }, + "validations": { + "email": { + "required": "Per favore inserisci l'email della tua utenza" + } + } + }, + "reset_password": { + "fields": { + "new_password": { + "label": "Nuova password", + "placeholder": "Inserisci la tua nuova password" + }, + "password_confirmation": { + "label": "Conferma password", + "placeholder": "Conferma la tua nuova password" + } + } + }, + "update_user": { + "fields": { + "full_name": { + "label": "Nome completo" + }, + "email": { + "label": "Email" + }, + "language": { + "label": "Lingua" + }, + "role": { + "label": "Ruolo" + } + } + } + }, + "admin": { + "createUser": { + "fields": { + "full_name": { + "label": "Nome completo", + "placeholder": "Inserisci il nome completo dell'utente" + }, + "email": { + "label": "Email", + "placeholder": "Inserisci l'email dell'utente" + }, + "password": { + "label": "Password", + "placeholder": "Inserisci la password dell'utente" + }, + "password_confirmation": { + "label": "Conferma password", + "placeholder": "Conferma la password" + } + } + }, + "invite_user": { + "fields": { + "emails": { + "label": "Email" + } + } + }, + "site_settings": { + "fields": { + "value": { + "placeholder": "Inserisci qui l'indirizzo...", + "text_placeholder": "Inserisci qui il testo..." + } + } + }, + "roles": { + "fields": { + "name": { + "label": "Nome del ruolo", + "placeholder": "Inserisci il nome del ruolo..." + } + } + } + } + } +} From 2164387f7d29f9236a126bdb6737f3f7b5551cf2 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 10:24:38 -0400 Subject: [PATCH 07/27] Translate config/locales/en.yml in it (#5824) 100% translated source file: 'config/locales/en.yml' on 'it'. Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- config/locales/it.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/config/locales/it.yml b/config/locales/it.yml index 73d0e01666..b9d7e9c587 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -49,25 +49,25 @@ it: opengraph: description: "Impara utilizzando BigBlueButton, la soluzione affidabile per conferenze Web open source che consente una collaborazione virtuale senza soluzione di continuità ed esperienze di apprendimento online." meeting: - moderator_message: "Per invitare qualcuno a partecipare, inviagli questo link: " + moderator_message: "Per invitare qualcuno a partecipare, inviagli questo collegamento: " access_code: "Codice Accesso: %{code}" email: activation: - account_activation: Attivazione Utente + account_activation: Attivazione utente welcome_to_bbb: Benvenuti su BigBlueButton! - get_started: "Per iniziare, attiva il tuo account facendo clic sul pulsante in basso." - activate_account: Utente Attivato + get_started: "Per iniziare, attiva la tua utenza facendo clic sul pulsante in basso." + activate_account: Attiva utenza link_expires: Il collegamento scadrà tra 24 ore. if_link_expires: "Se il collegamento scade, effettua l'accesso e richiedi una nuova email di attivazione" invitation: invitation_to_join: Invito BigBlueButton - you_have_been_invited: "Sei stato invitato a creare un account BigBlueButton da %{name}." - get_started: "Per registrarti, fai clic sul pulsante qui sotto e segui i passaggi." + you_have_been_invited: "Sei stato invitato a creare un'utenza BigBlueButton da %{name}." + get_started: "Per iscriverti, fai clic sul pulsante qui sotto e segui i passaggi." valid_invitation: L'invito è valido per 24 ore. - sign_up: Accesso + sign_up: Iscriviti new_user_signup: - new_user: Nuova registrazione utente BigBlueButton - new_user_description: Un nuovo utente si è registrato per utilizzare BigBlueButton. + new_user: Nuova iscrizione utente BigBlueButton + new_user_description: Un nuovo utente si è iscritto per utilizzare BigBlueButton. name: "Nome: %{name}" email: "Email: %{email}" admin_panel: "Pannello di amministrazione" @@ -80,4 +80,4 @@ it: link_expires: Il collegamento scadrà tra 1 ora. ignore_request: "Se non hai effettuato una richiesta di modifica della password, ignora questa email." room: - new_room_name: "Stanza di %{username}" + new_room_name: "Aula di %{username}" From c4fcac010af207d0a6e31214b67c6ab09b1d761b Mon Sep 17 00:00:00 2001 From: Ali Hadi Mazeh <91922430+alihadimazeh@users.noreply.github.com> Date: Wed, 5 Jun 2024 13:29:33 -0400 Subject: [PATCH 08/27] Added loginURL feature as a param, and fixed corresponding rspec test (#5835) --- app/services/meeting_starter.rb | 1 + spec/services/meeting_starter_spec.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/app/services/meeting_starter.rb b/app/services/meeting_starter.rb index 105c59bf71..1b7fb26833 100644 --- a/app/services/meeting_starter.rb +++ b/app/services/meeting_starter.rb @@ -63,6 +63,7 @@ def computed_options(access_code:) moderator_message += "
#{I18n.t('meeting.access_code', code: access_code, locale: @current_user&.language&.to_sym)}" if access_code.present? { moderatorOnlyMessage: moderator_message, + loginURL: room_url, logoutURL: room_url, meta_endCallbackUrl: meeting_ended_url(host: @base_url), 'meta_bbb-recording-ready-url': recording_ready_url(host: @base_url), diff --git a/spec/services/meeting_starter_spec.rb b/spec/services/meeting_starter_spec.rb index 3ef0a68670..254c77e5ef 100644 --- a/spec/services/meeting_starter_spec.rb +++ b/spec/services/meeting_starter_spec.rb @@ -39,6 +39,7 @@ url = File.join(base_url, '/rooms/', room.friendly_id, '/join') { moderatorOnlyMessage: "#{I18n.t('meeting.moderator_message', locale: user.language.to_sym)}
#{url}", + loginURL: url, logoutURL: url, meta_endCallbackUrl: File.join(base_url, '/meeting_ended'), 'meta_bbb-recording-ready-url': File.join(base_url, '/recording_ready'), From e59ea4bcbee1bbff1ff222197a88f63aeb119a94 Mon Sep 17 00:00:00 2001 From: Ali Hadi Mazeh <91922430+alihadimazeh@users.noreply.github.com> Date: Mon, 17 Jun 2024 11:25:39 -0400 Subject: [PATCH 09/27] cancel button changed to reset (#5839) --- app/assets/locales/en.json | 1 + app/javascript/components/users/user/forms/UpdateUserForm.jsx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/locales/en.json b/app/assets/locales/en.json index edd28bdebd..d8ad9461b3 100644 --- a/app/assets/locales/en.json +++ b/app/assets/locales/en.json @@ -14,6 +14,7 @@ "report": "Report", "share": "Share", "cancel": "Cancel", + "reset": "Reset", "close": "Close", "delete": "Delete", "copy": "Copy Join Link", diff --git a/app/javascript/components/users/user/forms/UpdateUserForm.jsx b/app/javascript/components/users/user/forms/UpdateUserForm.jsx index 7d524695b8..0bf18211d2 100644 --- a/app/javascript/components/users/user/forms/UpdateUserForm.jsx +++ b/app/javascript/components/users/user/forms/UpdateUserForm.jsx @@ -85,7 +85,7 @@ export default function UpdateUserForm({ user }) { )} - +