diff --git a/.gitignore b/.gitignore
index eae59bb..ded2258 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,3 +53,6 @@ public/sw.js*
tailwind.config.js
yarn-error.log
minio_data
+
+# Ignore byebug history file.
+.byebug_history
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 69edf4a..d2e6d1c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -22,7 +22,8 @@ COPY . .
RUN bundle exec rake decidim:webpacker:install && \
bundle exec rake assets:precompile && \
- bundle exec rails shakapacker:compile
+ bundle exec rails shakapacker:compile && \
+ bundle exec rails deface:precompile
RUN rm -rf node_modules tmp/cache vendor/bundle/spec \
&& rm -rf /usr/local/bundle/cache/*.gem \
diff --git a/Gemfile b/Gemfile
index e895887..8ac3cbd 100644
--- a/Gemfile
+++ b/Gemfile
@@ -4,25 +4,28 @@ source "https://rubygems.org"
ruby RUBY_VERSION
-gem "decidim-accountability", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-admin", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-api", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-assemblies", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-blogs", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-budgets", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-comments", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-core", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-debates", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-forms", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-meetings", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-pages", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-participatory_processes", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-proposals", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-surveys", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-system", github: "decidim/decidim", tag: "v0.29.1"
-gem "decidim-verifications", github: "decidim/decidim", tag: "v0.29.1"
+DECIDIM_TAG = "v0.29.1"
+
+gem "decidim-accountability", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-admin", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-api", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-assemblies", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-blogs", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-budgets", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-comments", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-core", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-debates", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-forms", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-meetings", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-pages", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-participatory_processes", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-proposals", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-surveys", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-system", github: "decidim/decidim", tag: DECIDIM_TAG
+gem "decidim-verifications", github: "decidim/decidim", tag: DECIDIM_TAG
gem "bootsnap", "~> 1.4"
+gem "deface"
gem "puma", ">= 6.3.1"
gem "aws-sdk-s3"
@@ -31,10 +34,24 @@ gem "dotenv-rails", "~> 2.7"
gem "letter_opener_web", "~> 2.0"
gem "spring"
+# gem "ransack", "~> 4.0"
+gem "actionpack", "~> 7.0.8.7"
+gem "net-imap", "~> 0.5.6"
+gem "rails-html-sanitizer", "~> 1.6.1"
+
+gem "omniauth-rails_csrf_protection"
+gem "omniauth-saml"
+
+# gem "veracode"
+
+# External Decidim gems
+gem "decidim-decidim_awesome", git: "https://github.com/OpenSourcePolitics/decidim-module-decidim_awesome.git", branch: "fix/update_packages_dependancies"
+gem "decidim-term_customizer", git: "https://github.com/OpenSourcePolitics/decidim-module-term_customizer.git", branch: "backport/fix_database_not_available"
+
group :development, :test do
gem "byebug", "~> 11.0", platform: :mri
- gem "decidim-dev", github: "decidim/decidim", tag: "v0.29.1"
+ gem "decidim-dev", github: "decidim/decidim", tag: DECIDIM_TAG
gem "brakeman", "~> 6.1"
gem "parallel_tests", "~> 4.2"
diff --git a/Gemfile.lock b/Gemfile.lock
index 4bc13f4..900ed8d 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,3 +1,23 @@
+GIT
+ remote: https://github.com/OpenSourcePolitics/decidim-module-decidim_awesome.git
+ revision: 002f1c933b05ed4d93b7c0dd68b4a476c8cb1d4d
+ branch: fix/update_packages_dependancies
+ specs:
+ decidim-decidim_awesome (0.12.0)
+ decidim-admin (>= 0.29.1, < 0.30)
+ decidim-core (>= 0.29.1, < 0.30)
+ deface (>= 1.5)
+ sassc (~> 2.3)
+
+GIT
+ remote: https://github.com/OpenSourcePolitics/decidim-module-term_customizer.git
+ revision: f3b55cae4e22713d7c842f0de4c421e9765ad7b0
+ branch: backport/fix_database_not_available
+ specs:
+ decidim-term_customizer (0.29.0)
+ decidim-admin (~> 0.29.0)
+ decidim-core (~> 0.29.0)
+
GIT
remote: https://github.com/decidim/decidim.git
revision: af8d33194b3b011e8ae2517bf9cd8476e806c363
@@ -177,47 +197,47 @@ GIT
GEM
remote: https://rubygems.org/
specs:
- actioncable (7.0.8.6)
- actionpack (= 7.0.8.6)
- activesupport (= 7.0.8.6)
+ actioncable (7.0.8.7)
+ actionpack (= 7.0.8.7)
+ activesupport (= 7.0.8.7)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
- actionmailbox (7.0.8.6)
- actionpack (= 7.0.8.6)
- activejob (= 7.0.8.6)
- activerecord (= 7.0.8.6)
- activestorage (= 7.0.8.6)
- activesupport (= 7.0.8.6)
+ actionmailbox (7.0.8.7)
+ actionpack (= 7.0.8.7)
+ activejob (= 7.0.8.7)
+ activerecord (= 7.0.8.7)
+ activestorage (= 7.0.8.7)
+ activesupport (= 7.0.8.7)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
- actionmailer (7.0.8.6)
- actionpack (= 7.0.8.6)
- actionview (= 7.0.8.6)
- activejob (= 7.0.8.6)
- activesupport (= 7.0.8.6)
+ actionmailer (7.0.8.7)
+ actionpack (= 7.0.8.7)
+ actionview (= 7.0.8.7)
+ activejob (= 7.0.8.7)
+ activesupport (= 7.0.8.7)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.0)
- actionpack (7.0.8.6)
- actionview (= 7.0.8.6)
- activesupport (= 7.0.8.6)
+ actionpack (7.0.8.7)
+ actionview (= 7.0.8.7)
+ activesupport (= 7.0.8.7)
rack (~> 2.0, >= 2.2.4)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
- actiontext (7.0.8.6)
- actionpack (= 7.0.8.6)
- activerecord (= 7.0.8.6)
- activestorage (= 7.0.8.6)
- activesupport (= 7.0.8.6)
+ actiontext (7.0.8.7)
+ actionpack (= 7.0.8.7)
+ activerecord (= 7.0.8.7)
+ activestorage (= 7.0.8.7)
+ activesupport (= 7.0.8.7)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
- actionview (7.0.8.6)
- activesupport (= 7.0.8.6)
+ actionview (7.0.8.7)
+ activesupport (= 7.0.8.7)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
@@ -225,30 +245,30 @@ GEM
active_link_to (1.0.5)
actionpack
addressable
- activejob (7.0.8.6)
- activesupport (= 7.0.8.6)
+ activejob (7.0.8.7)
+ activesupport (= 7.0.8.7)
globalid (>= 0.3.6)
activejob-uniqueness (0.3.2)
activejob (>= 4.2, < 7.3)
redlock (>= 2.0, < 3)
- activemodel (7.0.8.6)
- activesupport (= 7.0.8.6)
- activerecord (7.0.8.6)
- activemodel (= 7.0.8.6)
- activesupport (= 7.0.8.6)
- activestorage (7.0.8.6)
- actionpack (= 7.0.8.6)
- activejob (= 7.0.8.6)
- activerecord (= 7.0.8.6)
- activesupport (= 7.0.8.6)
+ activemodel (7.0.8.7)
+ activesupport (= 7.0.8.7)
+ activerecord (7.0.8.7)
+ activemodel (= 7.0.8.7)
+ activesupport (= 7.0.8.7)
+ activestorage (7.0.8.7)
+ actionpack (= 7.0.8.7)
+ activejob (= 7.0.8.7)
+ activerecord (= 7.0.8.7)
+ activesupport (= 7.0.8.7)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
- activesupport (7.0.8.6)
+ activesupport (7.0.8.7)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
- acts_as_list (1.2.3)
+ acts_as_list (1.2.4)
activerecord (>= 6.1)
activesupport (>= 6.1)
addressable (2.8.7)
@@ -301,14 +321,6 @@ GEM
rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
- carrierwave (2.2.6)
- activemodel (>= 5.0.0)
- activesupport (>= 5.0.0)
- addressable (~> 2.6)
- image_processing (~> 1.1)
- marcel (~> 1.0.0)
- mini_mime (>= 0.1.3)
- ssrf_filter (~> 1.0)
cells (4.1.8)
declarative-builder (~> 0.2.0)
declarative-option (< 0.2.0)
@@ -335,13 +347,19 @@ GEM
csv (3.3.0)
dalli (3.2.8)
dartsass (1.49.8)
- date (3.4.0)
+ date (3.4.1)
date_validator (0.12.0)
activemodel (>= 3)
activesupport (>= 3)
declarative-builder (0.2.0)
trailblazer-option (~> 0.1.0)
declarative-option (0.1.0)
+ deface (1.9.0)
+ actionview (>= 5.2)
+ nokogiri (>= 1.6)
+ polyglot
+ railties (>= 5.2)
+ rainbow (>= 2.1.0)
devise (4.9.4)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
@@ -409,23 +427,13 @@ GEM
activemodel (>= 3.2)
mime-types (>= 1.0)
flamegraph (0.9.5)
- fog-aws (3.21.0)
- fog-core (~> 2.1)
- fog-json (~> 1.1)
- fog-xml (~> 0.1)
fog-core (2.6.0)
builder
excon (~> 1.0)
formatador (>= 0.2, < 2.0)
mime-types
- fog-json (1.2.0)
- fog-core
- multi_json (~> 1.10)
fog-local (0.8.0)
fog-core (>= 1.27, < 3.0)
- fog-xml (0.1.4)
- fog-core
- nokogiri (>= 1.5.11, < 2.0.0)
formatador (1.1.0)
foundation_rails_helper (4.0.1)
actionpack (>= 4.1, < 7.1)
@@ -441,7 +449,7 @@ GEM
csv (>= 3.0.0)
globalid (1.2.1)
activesupport (>= 6.1)
- graphql (2.2.16)
+ graphql (2.2.17)
base64
graphql-docs (4.0.0)
commonmarker (~> 0.23, >= 0.23.6)
@@ -532,12 +540,11 @@ GEM
mini_mime (1.1.5)
minitest (5.25.1)
msgpack (1.7.5)
- multi_json (1.15.0)
multi_xml (0.7.1)
bigdecimal (~> 3.1)
net-http (0.5.0)
uri
- net-imap (0.5.1)
+ net-imap (0.5.6)
date
net-protocol
net-pop (0.1.2)
@@ -547,17 +554,17 @@ GEM
net-smtp (0.3.4)
net-protocol
nio4r (2.7.4)
- nokogiri (1.16.7-aarch64-linux)
+ nokogiri (1.16.8-aarch64-linux)
racc (~> 1.4)
- nokogiri (1.16.7-arm-linux)
+ nokogiri (1.16.8-arm-linux)
racc (~> 1.4)
- nokogiri (1.16.7-arm64-darwin)
+ nokogiri (1.16.8-arm64-darwin)
racc (~> 1.4)
- nokogiri (1.16.7-x86-linux)
+ nokogiri (1.16.8-x86-linux)
racc (~> 1.4)
- nokogiri (1.16.7-x86_64-darwin)
+ nokogiri (1.16.8-x86_64-darwin)
racc (~> 1.4)
- nokogiri (1.16.7-x86_64-linux)
+ nokogiri (1.16.8-x86_64-linux)
racc (~> 1.4)
oauth (1.1.0)
oauth-tty (~> 1.0, >= 1.0.1)
@@ -593,6 +600,9 @@ GEM
omniauth-rails_csrf_protection (1.0.2)
actionpack (>= 4.2)
omniauth (~> 2.0)
+ omniauth-saml (2.2.1)
+ omniauth (~> 2.1)
+ ruby-saml (~> 1.17)
omniauth-twitter (1.4.0)
omniauth-oauth (~> 1.1)
rack
@@ -612,6 +622,7 @@ GEM
pg_search (2.3.7)
activerecord (>= 6.1)
activesupport (>= 6.1)
+ polyglot (0.3.5)
premailer (1.27.0)
addressable
css_parser (>= 1.19.0)
@@ -627,7 +638,7 @@ GEM
nio4r (~> 2.0)
raabro (1.4.0)
racc (1.8.1)
- rack (2.2.10)
+ rack (2.2.13)
rack-attack (6.7.0)
rack (>= 1.0, < 4)
rack-cors (1.1.1)
@@ -641,20 +652,20 @@ GEM
rack
rack-test (2.1.0)
rack (>= 1.3)
- rails (7.0.8.6)
- actioncable (= 7.0.8.6)
- actionmailbox (= 7.0.8.6)
- actionmailer (= 7.0.8.6)
- actionpack (= 7.0.8.6)
- actiontext (= 7.0.8.6)
- actionview (= 7.0.8.6)
- activejob (= 7.0.8.6)
- activemodel (= 7.0.8.6)
- activerecord (= 7.0.8.6)
- activestorage (= 7.0.8.6)
- activesupport (= 7.0.8.6)
+ rails (7.0.8.7)
+ actioncable (= 7.0.8.7)
+ actionmailbox (= 7.0.8.7)
+ actionmailer (= 7.0.8.7)
+ actionpack (= 7.0.8.7)
+ actiontext (= 7.0.8.7)
+ actionview (= 7.0.8.7)
+ activejob (= 7.0.8.7)
+ activemodel (= 7.0.8.7)
+ activerecord (= 7.0.8.7)
+ activestorage (= 7.0.8.7)
+ activesupport (= 7.0.8.7)
bundler (>= 1.15.0)
- railties (= 7.0.8.6)
+ railties (= 7.0.8.7)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
@@ -663,15 +674,15 @@ GEM
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
- rails-html-sanitizer (1.6.0)
+ rails-html-sanitizer (1.6.2)
loofah (~> 2.21)
- nokogiri (~> 1.14)
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
rails-i18n (7.0.10)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
- railties (7.0.8.6)
- actionpack (= 7.0.8.6)
- activesupport (= 7.0.8.6)
+ railties (7.0.8.7)
+ actionpack (= 7.0.8.7)
+ activesupport (= 7.0.8.7)
method_source
rake (>= 12.2)
thor (~> 1.0)
@@ -767,6 +778,9 @@ GEM
rubocop-rubycw (0.1.6)
rubocop (~> 1.0)
ruby-progressbar (1.13.0)
+ ruby-saml (1.18.0)
+ nokogiri (>= 1.13.10)
+ rexml
ruby-vips (2.2.2)
ffi (~> 1.12)
logger
@@ -776,6 +790,8 @@ GEM
rubyzip (2.3.2)
rufus-scheduler (3.9.2)
fugit (~> 1.1, >= 1.11.1)
+ sassc (2.4.0)
+ ffi (~> 1.9)
selenium-webdriver (4.26.0)
base64 (~> 0.2)
logger (~> 1.4)
@@ -813,7 +829,6 @@ GEM
spring-watcher-listen (2.1.0)
listen (>= 2.7, < 4.0)
spring (>= 4)
- ssrf_filter (1.1.2)
stackprof (0.2.26)
stringio (3.1.2)
temple (0.10.3)
@@ -828,7 +843,7 @@ GEM
uber (0.1.0)
unicode-display_width (2.6.0)
uniform_notifier (1.16.0)
- uri (1.0.2)
+ uri (1.0.3)
valid_email2 (4.0.6)
activemodel (>= 3.2)
mail (~> 2.5)
@@ -886,13 +901,13 @@ PLATFORMS
x86_64-linux-musl
DEPENDENCIES
+ actionpack (~> 7.0.8.7)
activejob-uniqueness
aws-sdk-s3
bootsnap (~> 1.4)
brakeman (~> 6.1)
bullet
byebug (~> 11.0)
- carrierwave
dalli
decidim-accountability!
decidim-admin!
@@ -903,6 +918,7 @@ DEPENDENCIES
decidim-comments!
decidim-core!
decidim-debates!
+ decidim-decidim_awesome!
decidim-dev!
decidim-forms!
decidim-meetings!
@@ -911,16 +927,21 @@ DEPENDENCIES
decidim-proposals!
decidim-surveys!
decidim-system!
+ decidim-term_customizer!
decidim-verifications!
+ deface
dotenv-rails (~> 2.7)
flamegraph
- fog-aws
letter_opener_web (~> 2.0)
listen (~> 3.1)
memory_profiler
+ net-imap (~> 0.5.6)
+ omniauth-rails_csrf_protection
+ omniauth-saml
parallel_tests (~> 4.2)
puma (>= 6.3.1)
rack-mini-profiler
+ rails-html-sanitizer (~> 1.6.1)
sidekiq (~> 6.0)
sidekiq-scheduler (~> 5.0)
spring
diff --git a/Makefile b/Makefile
index 083108a..01d125a 100644
--- a/Makefile
+++ b/Makefile
@@ -57,5 +57,6 @@ tls-cert:
mkdir -p $(HOME)/.decidim/tls-certificate
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
-subj "/C=FR/ST=France/L=Paris/O=decidim/CN=decidim.eu" \
+ -addext "subjectAltName = DNS:localhost, DNS:minio" \
-keyout $(HOME)/.decidim/tls-certificate/key.pem \
-out $(HOME)/.decidim/tls-certificate/cert.pem
\ No newline at end of file
diff --git a/app/controllers/decidim/omniauth/switch_controller.rb b/app/controllers/decidim/omniauth/switch_controller.rb
new file mode 100644
index 0000000..ce1f111
--- /dev/null
+++ b/app/controllers/decidim/omniauth/switch_controller.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module Decidim
+ module Omniauth
+ class SwitchController < DecidimController
+ def redirect
+ redirect_post("/users/auth/#{params["provider"]}", params: { authenticity_token: form_authenticity_token })
+ end
+ end
+ end
+end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 15b06f0..fc058ed 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -1,4 +1,17 @@
# frozen_string_literal: true
module ApplicationHelper
+ def omniauth_sign_up_url(config)
+ return if config[:sign_up_button_url].blank?
+
+ uri = URI(config[:sign_up_button_url])
+ uri.query = {
+ showNameFields: "false",
+ lang: current_locale,
+ spName: config[:sign_up_button_sp_name],
+ target: Base64.urlsafe_encode64(config[:sign_up_button_target])
+ }.to_query
+
+ uri.to_s
+ end
end
diff --git a/app/overrides/decidim/devise/sessions/new/admin_sign_in.html.erb.deface b/app/overrides/decidim/devise/sessions/new/admin_sign_in.html.erb.deface
new file mode 100644
index 0000000..3ab60cd
--- /dev/null
+++ b/app/overrides/decidim/devise/sessions/new/admin_sign_in.html.erb.deface
@@ -0,0 +1,2 @@
+
+ <% if current_organization.sign_in_enabled? || request.env['PATH_INFO'].include?("/admin_sign_in") %>
\ No newline at end of file
diff --git a/app/overrides/layouts/decidim/header/_main/language_chooser_icon.html.erb.deface b/app/overrides/layouts/decidim/header/_main/language_chooser_icon.html.erb.deface
new file mode 100644
index 0000000..5152c9d
--- /dev/null
+++ b/app/overrides/layouts/decidim/header/_main/language_chooser_icon.html.erb.deface
@@ -0,0 +1,2 @@
+
+ <%= render partial: "/layouts/decidim/language_chooser_icon" %>
\ No newline at end of file
diff --git a/app/overrides/layouts/decidim/header/_main/language_chooser_toggle.html.erb.deface b/app/overrides/layouts/decidim/header/_main/language_chooser_toggle.html.erb.deface
new file mode 100644
index 0000000..2b55678
--- /dev/null
+++ b/app/overrides/layouts/decidim/header/_main/language_chooser_toggle.html.erb.deface
@@ -0,0 +1,2 @@
+
+ <%= render partial: "/layouts/decidim/language_chooser_bar" %>
\ No newline at end of file
diff --git a/app/packs/images/favicon.ico b/app/packs/images/favicon.ico
new file mode 100644
index 0000000..c78fd9e
Binary files /dev/null and b/app/packs/images/favicon.ico differ
diff --git a/app/packs/images/icon-language-solid.svg b/app/packs/images/icon-language-solid.svg
new file mode 100644
index 0000000..c701c59
--- /dev/null
+++ b/app/packs/images/icon-language-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/packs/images/nyc-for-developers-logo.svg b/app/packs/images/nyc-for-developers-logo.svg
new file mode 100644
index 0000000..a9abfed
--- /dev/null
+++ b/app/packs/images/nyc-for-developers-logo.svg
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/packs/images/nyc-logo.png b/app/packs/images/nyc-logo.png
new file mode 100644
index 0000000..a5f1aea
Binary files /dev/null and b/app/packs/images/nyc-logo.png differ
diff --git a/app/packs/images/nyc-logo.svg b/app/packs/images/nyc-logo.svg
new file mode 100644
index 0000000..a143c35
--- /dev/null
+++ b/app/packs/images/nyc-logo.svg
@@ -0,0 +1,11 @@
+
+
+ nyc-logo
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/packs/images/nyc-logo@2x.png b/app/packs/images/nyc-logo@2x.png
new file mode 100644
index 0000000..d4cd00a
Binary files /dev/null and b/app/packs/images/nyc-logo@2x.png differ
diff --git a/app/packs/images/nyc_white.png b/app/packs/images/nyc_white.png
new file mode 100644
index 0000000..fe6df6d
Binary files /dev/null and b/app/packs/images/nyc_white.png differ
diff --git a/app/packs/stylesheets/decidim/decidim_application.scss b/app/packs/stylesheets/decidim/decidim_application.scss
index 5b876c8..ae29123 100644
--- a/app/packs/stylesheets/decidim/decidim_application.scss
+++ b/app/packs/stylesheets/decidim/decidim_application.scss
@@ -6,3 +6,34 @@
// available at https://docs.decidim.org/en/develop/customize/styles.html#_tailwind_css
//
// By default this is empty.
+
+header {
+ .main-bar {
+ &__logo {
+ @apply col-span-2;
+ }
+
+ &__lc-button {
+ @apply text-secondary justify-self-end xl:col-start-7;
+ }
+ }
+}
+
+.language-chooser-bar {
+
+ @apply container items-center py-5 h-24 relative z-40;
+
+ .goog-te-gadget {
+ @apply w-full text-center;
+
+ select {
+ @apply block w-full xl:w-2/3 px-4 py-1.5 mx-auto font-sans text-md;
+ color: var(--secondary);
+ }
+
+ img {
+ @apply inline box-content;
+ }
+ }
+}
+
diff --git a/app/views/decidim/devise/shared/_omniauth_buttons.html.erb b/app/views/decidim/devise/shared/_omniauth_buttons.html.erb
new file mode 100644
index 0000000..b1798ec
--- /dev/null
+++ b/app/views/decidim/devise/shared/_omniauth_buttons.html.erb
@@ -0,0 +1,24 @@
+<% is_horizontal = false unless local_assigns.has_key?(:is_horizontal) %>
+<% if Devise.mappings[:user].omniauthable? && current_organization.enabled_omniauth_providers.any? %>
+
">
+ <%- current_organization.enabled_omniauth_providers.each do |provider_key, provider_config| %>
+ <% link_classes = "login__omniauth-button button--#{normalize_provider_name(provider_key)}" %>
+ <% provider_name = provider_config.dig(:provider_name) || normalize_provider_name(provider_key).titleize %>
+ <%= link_to decidim.send("user_#{provider_key}_omniauth_authorize_path"), class: link_classes, method: :post, title: t("devise.shared.links.log_in_with_provider", provider: provider_name) do %>
+ <%= oauth_icon provider_key %>
+
+ <%= provider_config[:sign_in_button_text] || provider_name %>
+
+ <% end %>
+ <%= link_to(omniauth_sign_up_url(provider_config), class: link_classes) do %>
+ <%= oauth_icon provider_key %>
+
+ <%= provider_config[:sign_up_button_text] || provider_name %>
+
+ <% end %>
+ <% end %>
+
+ <%- if current_organization.sign_in_enabled? %>
+ <%= t(".or") %>
+ <%- end %>
+<% end %>
\ No newline at end of file
diff --git a/app/views/decidim/proposals/admin/imports/_proposals_fields.html.erb b/app/views/decidim/proposals/admin/imports/_proposals_fields.html.erb
new file mode 100644
index 0000000..951ed23
--- /dev/null
+++ b/app/views/decidim/proposals/admin/imports/_proposals_fields.html.erb
@@ -0,0 +1,11 @@
+<% if current_organization.user_groups_enabled? && form.object.user_groups.any? %>
+
+ <%#= form.select(
+ :user_group_id,
+ form.object.user_groups.map { |g| [g.name, g.id] },
+ selected: form.object.user_group_id.presence,
+ include_blank: current_user.name,
+ label: true
+ ) %>
+
+<% end %>
\ No newline at end of file
diff --git a/app/views/layouts/decidim/_head_extra.html.erb b/app/views/layouts/decidim/_head_extra.html.erb
new file mode 100644
index 0000000..92a39c9
--- /dev/null
+++ b/app/views/layouts/decidim/_head_extra.html.erb
@@ -0,0 +1,11 @@
+
+
diff --git a/app/views/layouts/decidim/_language_chooser_bar.html.erb b/app/views/layouts/decidim/_language_chooser_bar.html.erb
new file mode 100644
index 0000000..9789990
--- /dev/null
+++ b/app/views/layouts/decidim/_language_chooser_bar.html.erb
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/app/views/layouts/decidim/_language_chooser_icon.html.erb b/app/views/layouts/decidim/_language_chooser_icon.html.erb
new file mode 100644
index 0000000..0136a42
--- /dev/null
+++ b/app/views/layouts/decidim/_language_chooser_icon.html.erb
@@ -0,0 +1,6 @@
+
+
+
+ <%= image_pack_tag("media/images/icon-language-solid.svg", alt: "Select language", class: "h-10 aspect-square mt-1 language-chooser-icon") %>
+
+
\ No newline at end of file
diff --git a/app/views/static/api/docs/directive/deprecated/index.html b/app/views/static/api/docs/directive/deprecated/index.html
index 272c276..d79ee55 100644
--- a/app/views/static/api/docs/directive/deprecated/index.html
+++ b/app/views/static/api/docs/directive/deprecated/index.html
@@ -193,6 +193,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+