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
Branches
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