From 386dac10fdfd2798ecfbbfefd9eb0e30cc1dd435 Mon Sep 17 00:00:00 2001 From: Mattias Bodlund Date: Tue, 23 Apr 2024 12:46:18 +0200 Subject: [PATCH] na --- README Sidekiq.txt | 19 +++++++ app/assets/images/ico-arrow-down.svg | 1 + app/assets/stylesheets/application.css | 63 ++++++++++++++++++++++ app/controllers/languages_controller.rb | 15 ++++-- app/helpers/languages_helper.rb | 5 ++ app/javascript/application.js | 8 +++ app/views/languages/index.html.erb | 18 ++++++- config/locales/en.yml | 72 +++++++++++++++++-------- 8 files changed, 173 insertions(+), 28 deletions(-) create mode 100644 README Sidekiq.txt create mode 100644 app/assets/images/ico-arrow-down.svg diff --git a/README Sidekiq.txt b/README Sidekiq.txt new file mode 100644 index 0000000..bab0bf8 --- /dev/null +++ b/README Sidekiq.txt @@ -0,0 +1,19 @@ +Sidekiq +------------------- + + +require 'sidekiq/api' + +clear the default queue +Sidekiq::Queue.new('default').clear + +clear the retry set +Sidekiq::RetrySet.new.clear + +clear the scheduled set +Sidekiq::ScheduledSet.new.clear + +reset dashboard statistics +Sidekiq::Stats.new.reset + + diff --git a/app/assets/images/ico-arrow-down.svg b/app/assets/images/ico-arrow-down.svg new file mode 100644 index 0000000..dde7a02 --- /dev/null +++ b/app/assets/images/ico-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 030dbc9..a3f40e4 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -124,6 +124,8 @@ header { main { margin: 0 1rem; + + } .start__title { @@ -139,3 +141,64 @@ main { font-size: var(--fs-lg); font-weight: 400; } + +.language__selector { + margin: 60px auto; +} + +.start__container { + max-width: 440px; + margin: 60px auto 40px auto; + container-type: inline-size; + container-name: startbar; +} + +@container startbar (min-width: 400px) { + h1, p { + text-align: center; + } +} + +.language__selector-select { + position: relative; + margin-bottom: 16px; + &::after { + content: ''; + position: absolute; + width: 13.59px; + height: 18.27px; + right: 33px; + height: 100%; + pointer-events: none; + background-image: url('ico-arrow-down.svg'); + background-repeat: no-repeat; + background-position: center center; + } + + & select { + width: 100%; + appearance: none; + background-color: transparent; + border: 2px solid var(--clr-black); + font-size: var(--fs-lg); + font-weight: 700; + line-height: 1; + padding: 0.888888888888889em 1.333333333333333em; + border-radius: 400px; + } +} + +.button__base { + appearance: none; + background-color: var(--clr-black); + border: 2px solid var(--clr-black); + color: var(--clr-white); + font-size: var(--fs-lg); + font-weight: 700; + line-height: 1; + border-radius: 400px; + width: 100%; + cursor: pointer; + padding: 0.888888888888889em 1.333333333333333em; +} + diff --git a/app/controllers/languages_controller.rb b/app/controllers/languages_controller.rb index 9fa7265..1dc0315 100644 --- a/app/controllers/languages_controller.rb +++ b/app/controllers/languages_controller.rb @@ -1,7 +1,9 @@ class LanguagesController < ApplicationController + before_action :set_locale_to_default + helper_method :accept_language + def index - language = parse_accept_language() end @@ -9,11 +11,16 @@ class LanguagesController < ApplicationController private - def parse_accept_language(header=request.env['HTTP_ACCEPT_LANGUAGE']) - header.to_s.split(',').map { |l| + def accept_language + @accept_language ||= request.env['HTTP_ACCEPT_LANGUAGE'].to_s.split(',').map { |l| lang, q_factor = l.split(';q=') [lang, (q_factor || '1').to_f] - }.sort_by { |_, q| -q }.map(&:first).first + }.sort_by { |_, q| -q }.map(&:first).first&.split('-')&.first + end + + + def set_locale_to_default + I18n.locale = I18n.default_locale end end diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index 2468668..e546394 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -1,2 +1,7 @@ module LanguagesHelper + + def languages_for_select + t('languages').map {|k,v| ["#{t(k, scope: 'flags')} #{v}", k]} + end + end diff --git a/app/javascript/application.js b/app/javascript/application.js index e69de29..f91478c 100644 --- a/app/javascript/application.js +++ b/app/javascript/application.js @@ -0,0 +1,8 @@ + +const confirm_btn = document.getElementById('confirm_btn') +const language_select = document.getElementById('language_select') + +confirm_btn.addEventListener('click', (e) => { + + window.location.href = '/' + language_select.value +}) \ No newline at end of file diff --git a/app/views/languages/index.html.erb b/app/views/languages/index.html.erb index e3a3308..919e62e 100644 --- a/app/views/languages/index.html.erb +++ b/app/views/languages/index.html.erb @@ -1,2 +1,16 @@ -<%= tag.h1 t('start.hello'), class: 'start__title' %> -<%= tag.p t('start.please_select_a_language_to_get_started'), class: 'start__msg' %> \ No newline at end of file +<%- content_for :title, t('project_name') %> + +
+ <%= tag.h1 t('start.hello'), class: 'start__title' %> + + <%= tag.p t('start.please_select_a_language_to_get_started'), class: 'start__msg' %> + +
+
+ <%= select_tag :language, options_for_select(languages_for_select, accept_language), id: 'language_select' %> +
+ +
+
\ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index 2e5cb3e..5afcd56 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,27 +1,55 @@ en: + + project_name: IKEA Foundation Week 2024 + languages: - zh: Chinese - hr: Croatian - cs: Czech - da: Danish - nl: Dutch - fi: Finnish - fr: French - de: German - hu: Hungarian - it: Italian - ja: Japanese - ko: Korean - nb: Norwegian (Bokmål) - pl: Polish - pt: Portuguese - ro: Romanian - sr: Serbian - sk: Slovak - sl: Slovenian - es: Spanish - sv: Swedish - uk: Ukrainian + zh: 中文 + hr: Hrvatski + cs: Čeština + da: Dansk + nl: Nederlands + fi: Suomi + fr: Français + de: Deutsch + hu: Magyar + it: Italiano + ja: 日本語 + ko: 한국어 + nb: Norsk (Bokmål) + pl: Polski + pt: Português + ro: Română + sr: Српски + sk: Slovenčina + sl: Slovenščina + es: Español + sv: Svenska + uk: Українська + flags: + zh: 🇨🇳 + hr: 🇭🇷 + cs: 🇨🇿 + da: 🇩🇰 + nl: 🇳🇱 + fi: 🇫🇮 + fr: 🇫🇷 + de: 🇩🇪 + hu: 🇭🇺 + it: 🇮🇹 + ja: 🇯🇵 + ko: 🇰🇷 + nb: 🇳🇴 + pl: 🇵🇱 + pt: 🇵🇹 + ro: 🇷🇴 + sr: 🇷🇸 + sk: 🇸🇰 + sl: 🇸🇮 + es: 🇪🇸 + sv: 🇸🇪 + uk: 🇺🇦 + + can_you_spot_the_link: Can you spot the link?