Skip to content
Snippets Groups Projects
Unverified Commit 259a89e8 authored by tribut's avatar tribut :man_dancing:
Browse files

Allow users to specify their language proficiency

Required by the more languages team.
parent e3e6f51c
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,7 @@ class ApplicationController < ActionController::Base
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:invitation_token])
devise_parameter_sanitizer.permit(:account_update) do |u|
u.permit(:name, :email, :password, :password_confirmation, :avatar_color, :telegram_username, :current_password)
u.permit(:name, :email, :password, :password_confirmation, :avatar_color, :languages_from, :languages_to, :telegram_username, :current_password)
end
end
......
......@@ -7,6 +7,12 @@ class User < ApplicationRecord
validates :name, uniqueness: { case_sensitive: false, message: "already in use" }, allow_nil: false
validates :email, uniqueness: { case_sensitive: false, message: "already in use" }, allow_nil: true, allow_blank: true
validates :languages_from, format: { with: /\A([a-z][a-z])(,[a-z][a-z])*\z/, message: "please use comma-separated two-letter codes"}, allow_blank: true
validates :languages_from, length: { maximum: 14 }
validates :languages_to, format: { with: /\A([a-z][a-z])(,[a-z][a-z])*\z/, message: "please use comma-separated two-letter codes"}, allow_blank: true
validates :languages_to, length: { maximum: 14 }
validates :invitation_token, presence: true, on: :create
validate :valid_invitation_token, on: :create
......
......@@ -11,3 +11,10 @@
<% end %>
</button>
</span>
<% if user.languages_from || user.languages_to %>
<small class="text-2xs uppercase font-light bg-black/10 rounded-sm p-1 mr-1" aria-label="Languages <%= user.name %> can translate" title="Languages <%= user.name %> can translate">
<%= user.languages_from %>
<span aria-label="to"></span>
<%= user.languages_to %>
</small>
<% end %>
......@@ -12,6 +12,13 @@
<% end %>
</button>
</span>
<% if user.languages_from || user.languages_to %>
<small class="text-2xs uppercase font-light bg-black/10 rounded-sm p-1 ml-1">
<%= user.languages_from %>
<% if user.languages_from && user.languages_to %><% end %>
<%= user.languages_to %>
</small>
<% end %>
<% if candidate.note %>
<span class="relative ml-1.5"><span class="max-w-60 max-h-14 overflow-scroll bg-gray-600 text-white text-xs font-medium px-2 py-1 rounded-md relative inline-block"><%= candidate.note %></span><span class="w-0 h-0 border-t-[6px] border-t-transparent border-b-[6px] border-b-transparent border-r-[6px] border-r-gray-600 absolute left-[-5px] top-[20%] transform -translate-y-1/2"></span> </span>
<% end %>
......@@ -43,6 +43,22 @@
<%= f.text_field :telegram_username %>
</div>
<fieldset class="border border-gray-300 p-4 rounded-md">
<legend class="text-lg font-semibold">More Languages Team Only</legend>
<i class="block">Please use comma-separated two-letter codes.</i>
<i class="block">Leave empty unless you are with the more languages team.</i>
<div class="field">
<%= f.label :languages_from %>
<%= f.text_field :languages_from, placeholder: "de,en" %>
</div>
<div class="field">
<%= f.label :languages_to %>
<%= f.text_field :languages_to, placeholder: "jp,es" %>
</div>
</fieldset>
<div class="field">
<%= f.label :current_password %>
<i class="block">(we need your current password to confirm your changes)</i>
......
......@@ -29,3 +29,10 @@
en:
hello: "Hello world"
en:
activerecord:
attributes:
user:
languages_from: "Languages you can translate from"
languages_to: "Languages you can translate to"
class AddLanguagesToUsers < ActiveRecord::Migration[7.1]
def change
add_column :users, :languages_from, :string
add_column :users, :languages_to, :string
end
end
......@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.1].define(version: 2024_12_20_212328) do
ActiveRecord::Schema[7.1].define(version: 2024_12_22_215716) do
create_table "assignments", force: :cascade do |t|
t.integer "user_id", null: false
t.integer "session_id", null: false
......@@ -279,6 +279,8 @@ ActiveRecord::Schema[7.1].define(version: 2024_12_20_212328) do
t.datetime "remember_created_at"
t.boolean "shiftcoordinator", default: false, null: false
t.string "invitation_token"
t.string "languages_from"
t.string "languages_to"
end
add_foreign_key "assignments", "sessions"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment