Add OIDC + better embeds

This commit is contained in:
Alex
2024-08-11 11:16:34 +02:00
parent f1b732f450
commit cdbaac06e0
70 changed files with 3029 additions and 1364 deletions

View File

@@ -36,4 +36,17 @@ MAIL_FROM_NAME=Claper
# Claper configuration
#ENABLE_ACCOUNT_CREATION=true
#GS_JPG_RESOLUTION=300x300
#ALLOW_UNLINK_EXTERNAL_PROVIDER=false
#LOGOUT_REDIRECT_URL=https://google.com
#GS_JPG_RESOLUTION=300x300
# OIDC configuration
# OIDC_PROVIDER_NAME="OpenID"
# OIDC_ISSUER=https://my-idp.example/application/o/claper/
# OIDC_CLIENT_ID=XXX
# OIDC_CLIENT_SECRET=XXX
# OIDC_SCOPES="openid email profile"
# OIDC_LOGO_URL=""
# OIDC_PROPERTY_MAPPINGS="roles:custom_attributes.roles,organization:custom_attributes.organization"
# OIDC_AUTO_REDIRECT_LOGIN=true

View File

@@ -2,8 +2,15 @@
### Features
- LTI 1.3 support
- LTI 1.3 integration (Beta)
- OpenID Connect integration
- New layout for presentation manager
- Duplicate event feature
### Fixes and improvements
- Improve embeds integration for better compatibility with different providers
- Add an option to polls to show results to attendees
### Fixes and improvements

View File

@@ -1,5 +1,5 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
@@ -7,17 +7,15 @@
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
@@ -26,44 +24,34 @@ them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
@@ -72,7 +60,7 @@ modification follow.
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
@@ -549,35 +537,45 @@ to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
@@ -631,44 +629,33 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Claper, tool to let your audience interact during your presentations.
Copyright (C) 2022 Alexandre Lion
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
GNU Affero General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Claper Copyright (C) 2022 Alexandre Lion
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.

View File

@@ -494,7 +494,6 @@ Hooks.QRCode = {
Hooks.Dropdown = {
mounted() {
this.el.addEventListener("click", (e) => {
e.preventDefault();
this.el.classList.toggle("hidden");
});
},

View File

@@ -41,7 +41,6 @@ case secret_key_base do
nil
end
site_url = get_var_from_path_or_env(config_dir, "SITE_URL", "http://localhost:4000")
base_url = get_var_from_path_or_env(config_dir, "BASE_URL")
if !base_url do
@@ -82,6 +81,50 @@ same_site_cookie = get_var_from_path_or_env(config_dir, "SAME_SITE_COOKIE", "Lax
secure_cookie =
get_var_from_path_or_env(config_dir, "SECURE_COOKIE", "false") |> String.to_existing_atom()
oidc_issuer = get_var_from_path_or_env(config_dir, "OIDC_ISSUER", "https://accounts.google.com")
oidc_client_id = get_var_from_path_or_env(config_dir, "OIDC_CLIENT_ID", nil)
oidc_client_secret = get_var_from_path_or_env(config_dir, "OIDC_CLIENT_SECRET", nil)
oidc_scopes = get_var_from_path_or_env(config_dir, "OIDC_SCOPES", "openid email profile")
oidc_provider_name = get_var_from_path_or_env(config_dir, "OIDC_PROVIDER_NAME", "OpenID Connect")
oidc_logo_url = get_var_from_path_or_env(config_dir, "OIDC_LOGO_URL", "/images/icons/openid.png")
oidc_auto_redirect_login =
get_var_from_path_or_env(config_dir, "OIDC_AUTO_REDIRECT_LOGIN", "false")
|> String.to_existing_atom()
oidc_property_mappings =
get_var_from_path_or_env(config_dir, "OIDC_PROPERTY_MAPPINGS", nil)
|> case do
nil ->
nil
mappings ->
String.split(mappings, ",")
|> Enum.map(&String.split(&1, ":"))
|> Enum.into(%{}, fn [key, value] -> {key, value} end)
end
oidc_enabled =
!is_nil(oidc_client_id) and !is_nil(oidc_client_secret)
allow_unlink_external_provider =
get_var_from_path_or_env(config_dir, "ALLOW_UNLINK_EXTERNAL_PROVIDER", "true")
|> String.to_existing_atom()
logout_redirect_url = get_var_from_path_or_env(config_dir, "LOGOUT_REDIRECT_URL", nil)
config :claper, :oidc,
enabled: oidc_enabled,
issuer: oidc_issuer,
client_id: oidc_client_id,
client_secret: oidc_client_secret,
scopes: String.split(oidc_scopes, " "),
provider_name: oidc_provider_name,
logo_url: oidc_logo_url,
property_mappings: oidc_property_mappings,
auto_redirect_login: oidc_auto_redirect_login
config :claper, Claper.Repo,
url: database_url,
ssl: db_ssl,
@@ -94,6 +137,7 @@ config :claper, Claper.Repo,
config :claper, ClaperWeb.Endpoint,
url: [scheme: base_url.scheme, host: base_url.host, path: base_url.path, port: base_url.port],
base_url: base_url,
http: [
ip: listen_ip,
port: port,
@@ -105,7 +149,9 @@ config :claper, ClaperWeb.Endpoint,
secure_cookie: secure_cookie
config :claper,
enable_account_creation: enable_account_creation
enable_account_creation: enable_account_creation,
allow_unlink_external_provider: allow_unlink_external_provider,
logout_redirect_url: logout_redirect_url
config :claper, :presentations,
max_file_size: max_file_size,

View File

@@ -4,6 +4,7 @@ defmodule Claper.Accounts do
"""
import Ecto.Query, warn: false
alias Claper.Accounts
alias Claper.Repo
alias Claper.Accounts.{User, UserToken, UserNotifier}
@@ -55,6 +56,7 @@ defmodule Claper.Accounts do
create_user(%{
email: email,
confirmed_at: DateTime.utc_now(),
is_randomized_password: true,
password: :crypto.strong_rand_bytes(32)
})
@@ -227,6 +229,24 @@ defmodule Claper.Accounts do
end
end
@doc """
Sets the user password.
## Examples
iex> set_user_password(user, %{password: ...})
{:ok, %User{}}
iex> set_user_password(user, %{password: ...})
{:error, %Ecto.Changeset{}}
"""
def set_user_password(user, attrs) do
user
|> User.password_changeset(attrs |> Map.put("is_randomized_password", false))
|> Repo.update()
|> case do
{:ok, user} -> {:ok, user}
{:error, changeset} -> {:error, changeset}
end
end
@doc """
Updates the user preferences.
## Examples
@@ -491,4 +511,59 @@ defmodule Claper.Accounts do
def delete(user) do
Repo.delete(user)
end
## OIDC
def create_oidc_user(attrs) do
%Accounts.Oidc.User{}
|> Accounts.Oidc.User.changeset(attrs)
|> Repo.insert()
end
def remove_oidc_user(claper_user, issuer) do
Repo.delete_all(
from u in Accounts.Oidc.User,
where: u.issuer == ^issuer and u.user_id == ^claper_user.id
)
end
def get_all_oidc_users_by_email(email) do
Repo.all(from u in Accounts.Oidc.User, where: u.email == ^email)
end
def get_oidc_user_by_sub(sub) do
Repo.get_by(Accounts.Oidc.User, sub: sub)
end
def get_or_create_user_with_oidc(
%{
sub: sub
} = attrs
) do
case get_oidc_user_by_sub(sub) do
nil -> create_new_user(attrs)
%Accounts.Oidc.User{} = user -> update_oidc_user(user, attrs)
end
end
defp create_new_user(attrs) do
with {:ok, claper_user} <- get_user_by_email_or_create(attrs.email),
updated_attrs <-
Map.merge(attrs, %{user_id: claper_user.id}),
{:ok, user} <- create_oidc_user(updated_attrs) do
{:ok, user |> Repo.preload(:user)}
else
_ -> {:error, %{reason: :invalid_user, msg: "Invalid Claper user"}}
end
end
defp update_oidc_user(user, attrs) do
user
|> Accounts.Oidc.User.changeset(attrs)
|> Repo.update()
|> case do
{:ok, user} -> {:ok, user |> Repo.preload(:user)}
{:error, changeset} -> {:error, changeset}
end
end
end

View File

@@ -0,0 +1,66 @@
defmodule Claper.Accounts.Oidc.User do
use Ecto.Schema
import Ecto.Changeset
@type t :: %__MODULE__{
id: integer(),
sub: String.t(),
name: String.t() | nil,
email: String.t(),
issuer: String.t(),
provider: String.t(),
refresh_token: String.t(),
access_token: String.t(),
expires_at: NaiveDateTime.t(),
photo_url: String.t(),
groups: {:array, :string},
roles: :string,
organization: String.t(),
user_id: integer(),
inserted_at: NaiveDateTime.t(),
updated_at: NaiveDateTime.t()
}
schema "oidc_users" do
field :sub, :string
field :name, :string
field :email, :string
field :issuer, :string
field :provider, :string
field :id_token, :string
field :refresh_token, :string, redact: true
field :access_token, :string, redact: true
field :expires_at, :naive_datetime
field :photo_url, :string
field :groups, {:array, :string}
field :roles, :string
field :organization, :string
belongs_to :user, Claper.Accounts.User
timestamps()
end
@doc false
def changeset(user, attrs) do
user
|> cast(attrs, [
:sub,
:name,
:email,
:issuer,
:provider,
:id_token,
:photo_url,
:access_token,
:expires_at,
:groups,
:organization,
:user_id,
:roles,
:refresh_token
])
|> validate_required([:sub, :email, :issuer, :provider, :id_token, :user_id])
|> unique_constraint(:sub)
end
end

View File

@@ -9,7 +9,7 @@ defmodule Claper.Accounts.User do
email: String.t(),
password: String.t() | nil,
hashed_password: String.t(),
is_admin: boolean(),
is_randomized_password: boolean(),
confirmed_at: NaiveDateTime.t() | nil,
locale: String.t() | nil,
events: [Claper.Events.Event.t()] | nil,
@@ -22,7 +22,7 @@ defmodule Claper.Accounts.User do
field :email, :string
field :password, :string, virtual: true, redact: true
field :hashed_password, :string, redact: true
field :is_admin, :boolean
field :is_randomized_password, :boolean
field :confirmed_at, :naive_datetime
field :locale, :string
@@ -33,7 +33,7 @@ defmodule Claper.Accounts.User do
def registration_changeset(user, attrs, opts \\ []) do
user
|> cast(attrs, [:email, :confirmed_at, :password])
|> cast(attrs, [:email, :confirmed_at, :password, :is_randomized_password])
|> validate_email()
|> validate_password(opts)
end
@@ -92,7 +92,7 @@ defmodule Claper.Accounts.User do
"""
def password_changeset(user, attrs, opts \\ []) do
user
|> cast(attrs, [:password])
|> cast(attrs, [:password, :is_randomized_password])
|> validate_confirmation(:password)
|> validate_password(opts)
end

View File

@@ -8,6 +8,7 @@ defmodule Claper.Application do
@impl true
def start(_type, _args) do
topologies = Application.get_env(:libcluster, :topologies) || []
oidc_config = Application.get_env(:claper, :oidc) || []
children = [
{Cluster.Supervisor, [topologies, [name: Claper.ClusterSupervisor]]},
@@ -23,7 +24,9 @@ defmodule Claper.Application do
# Start a worker by calling: Claper.Worker.start_link(arg)
# {Claper.Worker, arg}
{Finch, name: Swoosh.Finch},
{Task.Supervisor, name: Claper.TaskSupervisor}
{Task.Supervisor, name: Claper.TaskSupervisor},
{Oidcc.ProviderConfiguration.Worker,
%{issuer: oidc_config[:issuer], name: Claper.OidcProviderConfig}}
]
# See https://hexdocs.pm/elixir/Supervisor.html

View File

@@ -7,6 +7,7 @@ defmodule Claper.Embeds.Embed do
id: integer(),
title: String.t(),
content: String.t(),
provider: String.t(),
enabled: boolean(),
position: integer() | nil,
attendee_visibility: boolean() | nil,
@@ -19,6 +20,7 @@ defmodule Claper.Embeds.Embed do
schema "embeds" do
field :title, :string
field :content, :string
field :provider, :string
field :enabled, :boolean, default: true
field :position, :integer, default: 0
field :attendee_visibility, :boolean, default: false
@@ -35,6 +37,7 @@ defmodule Claper.Embeds.Embed do
:enabled,
:title,
:content,
:provider,
:presentation_file_id,
:position,
:attendee_visibility
@@ -42,12 +45,61 @@ defmodule Claper.Embeds.Embed do
|> validate_required([
:title,
:content,
:provider,
:presentation_file_id,
:position,
:attendee_visibility
])
|> validate_format(:content, ~r/<iframe.*<\/iframe>/,
message: gettext("Invalid embed format (should start with <iframe> and end with </iframe>)")
)
|> validate_inclusion(:provider, ["youtube", "vimeo", "canva", "googleslides", "custom"])
|> validate_provider_url()
end
defp validate_provider_url(changeset) do
case get_field(changeset, :provider) do
"youtube" ->
changeset
|> validate_format(:content, ~r/^https?:\/\/.+$/,
message: gettext("Please enter a valid link starting with http:// or https://")
)
|> validate_format(:content, ~r/youtu\.be/,
message: gettext("Please enter a valid %{provider} link", provider: "YouTube")
)
"canva" ->
changeset
|> validate_format(:content, ~r/^https?:\/\/.+$/,
message: gettext("Please enter a valid link starting with http:// or https://")
)
|> validate_format(:content, ~r/canva\.com/,
message: gettext("Please enter a valid %{provider} link", provider: "Canva")
)
"googleslides" ->
changeset
|> validate_format(:content, ~r/^https?:\/\/.+$/,
message: gettext("Please enter a valid link starting with http:// or https://")
)
|> validate_format(:content, ~r/google\.com/,
message: gettext("Please enter a valid %{provider} link", provider: "Google Slides")
)
"vimeo" ->
changeset
|> validate_format(:content, ~r/^https?:\/\/.+$/,
message: gettext("Please enter a valid link starting with http:// or https://")
)
|> validate_format(:content, ~r/vimeo\.com/,
message: gettext("Please enter a valid %{provider} link", provider: "Vimeo")
)
"custom" ->
changeset
|> validate_format(:content, ~r/<iframe.*?<\/iframe>/s,
message: gettext("Please enter valid HTML content with an iframe tag")
)
_ ->
changeset
end
end
end

View File

@@ -365,6 +365,138 @@ defmodule Claper.Events do
end
end
@doc """
Duplicate an event
## Examples
iex> duplicate(user_id, event_uuid)
{:ok, %Event{}}
iex> duplicate(user_id, event_uuid)
{:error, %Ecto.Changeset{}}
"""
def duplicate_event(user_id, event_uuid) do
case Ecto.Multi.new()
|> Ecto.Multi.run(:original_event, fn _repo, _changes ->
{:ok,
get_user_event!(user_id, event_uuid,
presentation_file: [
polls: [:poll_opts],
forms: [],
embeds: [],
presentation_state: []
]
)}
end)
|> Ecto.Multi.run(:new_event, fn _repo, %{original_event: original_event} ->
new_code =
for _ <- 1..5,
into: "",
do: <<Enum.random(~c"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")>>
attrs =
Map.from_struct(original_event)
|> Map.drop([:id, :inserted_at, :updated_at, :presentation_file])
|> Map.put(:leaders, [])
|> Map.put(:code, "#{new_code}")
|> Map.put(:name, "#{original_event.name} (Copy)")
create_event(attrs)
end)
|> Ecto.Multi.run(:new_presentation_file, fn _repo,
%{
original_event: original_event,
new_event: new_event
} ->
attrs =
Map.from_struct(original_event.presentation_file)
|> Map.drop([:id, :inserted_at, :updated_at, :presentation_state])
|> Map.put(:event_id, new_event.id)
Claper.Presentations.create_presentation_file(attrs)
end)
|> Ecto.Multi.run(:new_presentation_state, fn _repo,
%{
original_event: original_event,
new_presentation_file:
new_presentation_file
} ->
attrs =
Map.from_struct(original_event.presentation_file.presentation_state)
|> Map.drop([:id, :inserted_at, :updated_at])
|> Map.put(:presentation_file_id, new_presentation_file.id)
|> Map.put(:position, 0)
|> Map.put(:banned, nil)
Claper.Presentations.create_presentation_state(attrs)
end)
|> Ecto.Multi.run(:polls, fn _repo,
%{
new_presentation_file: new_presentation_file,
original_event: original_event
} ->
{:ok,
Enum.map(original_event.presentation_file.polls, fn poll ->
poll_attrs =
Map.from_struct(poll)
|> Map.drop([:id, :inserted_at, :updated_at])
|> Map.put(:presentation_file_id, new_presentation_file.id)
|> Map.put(
:poll_opts,
Enum.map(poll.poll_opts, fn opt ->
Map.from_struct(opt)
|> Map.drop([:id, :inserted_at, :updated_at])
end)
)
{:ok, new_poll} = Claper.Polls.create_poll(poll_attrs)
new_poll
end)}
end)
|> Ecto.Multi.run(:forms, fn _repo,
%{
new_presentation_file: new_presentation_file,
original_event: original_event
} ->
{:ok,
Enum.map(original_event.presentation_file.forms, fn form ->
form_attrs =
Map.from_struct(form)
|> Map.drop([:id, :inserted_at, :updated_at])
|> Map.put(:presentation_file_id, new_presentation_file.id)
|> Map.put(
:fields,
Enum.map(form.fields, &Map.from_struct(&1))
)
{:ok, new_form} = Claper.Forms.create_form(form_attrs)
new_form
end)}
end)
|> Ecto.Multi.run(:embeds, fn _repo,
%{
new_presentation_file: new_presentation_file,
original_event: original_event
} ->
{:ok,
Enum.map(original_event.presentation_file.embeds, fn embed ->
embed_attrs =
Map.from_struct(embed)
|> Map.drop([:id, :inserted_at, :updated_at])
|> Map.put(:presentation_file_id, new_presentation_file.id)
{:ok, new_embed} = Claper.Embeds.create_embed(embed_attrs)
new_embed
end)}
end)
|> Repo.transaction() do
{:ok, %{new_event: new_event}} -> {:ok, new_event}
{:error, _failed_operation, failed_value, _changes_so_far} -> {:error, failed_value}
end
end
@doc """
Deletes a event.

View File

@@ -12,6 +12,7 @@ defmodule Claper.Polls.Poll do
presentation_file_id: integer() | nil,
poll_opts: [Claper.Polls.PollOpt.t()],
poll_votes: [Claper.Polls.PollVote.t()] | nil,
show_results: boolean() | nil,
inserted_at: NaiveDateTime.t(),
updated_at: NaiveDateTime.t()
}
@@ -23,6 +24,7 @@ defmodule Claper.Polls.Poll do
field :total, :integer, virtual: true
field :enabled, :boolean
field :multiple, :boolean
field :show_results, :boolean
belongs_to :presentation_file, Claper.Presentations.PresentationFile
has_many :poll_opts, Claper.Polls.PollOpt, on_replace: :delete
@@ -34,7 +36,15 @@ defmodule Claper.Polls.Poll do
@doc false
def changeset(poll, attrs) do
poll
|> cast(attrs, [:title, :presentation_file_id, :position, :enabled, :total, :multiple])
|> cast(attrs, [
:title,
:presentation_file_id,
:position,
:enabled,
:total,
:multiple,
:show_results
])
|> cast_assoc(:poll_opts, required: true)
|> validate_required([:title, :presentation_file_id, :position])
|> validate_length(:title, max: 255)

View File

@@ -25,8 +25,11 @@ defmodule Claper.Presentations do
def get_presentation_file!(id, preload \\ []),
do: Repo.get!(PresentationFile, id) |> Repo.preload(preload)
def get_presentation_file_by_hash!(hash) when is_binary(hash),
do: Repo.get_by(PresentationFile, hash: hash) |> Repo.preload([:event])
def get_presentation_files_by_hash(hash) when is_binary(hash),
do: Repo.all(from p in PresentationFile, where: p.hash == ^hash)
def get_presentation_files_by_hash(hash) when is_nil(hash),
do: []
@doc """
Creates a presentation_files.

View File

@@ -11,7 +11,6 @@ defmodule Claper.Presentations.PresentationState do
chat_enabled: boolean() | nil,
anonymous_chat_enabled: boolean() | nil,
message_reaction_enabled: boolean() | nil,
show_poll_results_enabled: boolean() | nil,
banned: [String.t()] | nil,
show_only_pinned: boolean() | nil,
presentation_file_id: integer() | nil,
@@ -27,7 +26,6 @@ defmodule Claper.Presentations.PresentationState do
field :chat_enabled, :boolean
field :anonymous_chat_enabled, :boolean
field :message_reaction_enabled, :boolean, default: true
field :show_poll_results_enabled, :boolean, default: true
field :banned, {:array, :string}, default: []
field :show_only_pinned, :boolean, default: false
@@ -49,8 +47,7 @@ defmodule Claper.Presentations.PresentationState do
:chat_enabled,
:anonymous_chat_enabled,
:show_only_pinned,
:message_reaction_enabled,
:show_poll_results_enabled
:message_reaction_enabled
])
|> validate_required([])
end

View File

@@ -11,7 +11,7 @@ defmodule Claper.Tasks.Converter do
Convert the presentation file to images.
We use original hash :erlang.phash2(code-name) where the files are uploaded to send it to another folder with a new hash. This last stored in db.
"""
def convert(user_id, file, hash, ext, presentation_file_id) do
def convert(user_id, file, hash, ext, presentation_file_id, is_copy \\ false) do
presentation = Claper.Presentations.get_presentation_file!(presentation_file_id, [:event])
{:ok, presentation} =
@@ -32,11 +32,11 @@ defmodule Claper.Tasks.Converter do
"#{hash}"
])
IO.puts("Starting conversion for #{hash}...")
IO.puts("Starting conversion for #{hash}... (copy: #{is_copy})")
file_to_pdf(String.to_atom(ext), path, file)
|> pdf_to_jpg(path, presentation, user_id)
|> jpg_upload(hash, path, presentation, user_id)
|> jpg_upload(hash, path, presentation, user_id, is_copy)
end
@doc """
@@ -113,7 +113,7 @@ defmodule Claper.Tasks.Converter do
failure(presentation, path, user_id)
end
defp jpg_upload(%Result{status: 0}, hash, path, presentation, user_id) do
defp jpg_upload(%Result{status: 0}, hash, path, presentation, user_id, is_copy) do
files = Path.wildcard("#{path}/*.jpg")
# assign new hash to avoid cache issues
@@ -147,14 +147,14 @@ defmodule Claper.Tasks.Converter do
end
end
if !is_nil(presentation.hash) do
if !is_nil(presentation.hash) && !is_copy do
clear(presentation.hash)
end
success(presentation, path, new_hash, length(files), user_id)
end
defp jpg_upload(_result, _hash, path, presentation, user_id) do
defp jpg_upload(_result, _hash, path, presentation, user_id, _is_copy) do
failure(presentation, path, user_id)
end

View File

@@ -75,6 +75,7 @@ defmodule ClaperWeb.UserAuth do
It clears all session data for safety. See renew_session.
"""
def log_out_user(conn) do
logout_redirect_url = Application.get_env(:claper, :logout_redirect_url)
user_token = get_session(conn, :user_token)
user_token && Accounts.delete_session_token(user_token)
@@ -85,9 +86,14 @@ defmodule ClaperWeb.UserAuth do
conn
|> renew_session()
|> delete_resp_cookie(@remember_me_cookie)
|> redirect(to: "/")
|> custom_logout_redirect(logout_redirect_url)
end
defp custom_logout_redirect(conn, nil), do: conn |> redirect(to: "/")
defp custom_logout_redirect(conn, logout_redirect_url),
do: conn |> redirect(external: logout_redirect_url)
@doc """
Authenticates the user by looking into the session
and remember me token.

View File

@@ -0,0 +1,118 @@
defmodule ClaperWeb.UserOidcAuth do
@moduledoc """
Plug for OpenID Connect authentication.
"""
alias ClaperWeb.UserAuth
use ClaperWeb, :controller
import Phoenix.Controller
@doc false
def new(conn, _params) do
{:ok, redirect_uri} =
Oidcc.create_redirect_url(
Claper.OidcProviderConfig,
client_id(),
client_secret(),
opts()
)
uri = Enum.join(redirect_uri, "")
redirect(conn, external: uri)
end
def callback(conn, %{"code" => code} = _params) do
with {:ok,
%Oidcc.Token{
id: %Oidcc.Token.Id{token: id_token, claims: claims},
access: %Oidcc.Token.Access{token: access_token},
refresh: refresh_token
}} <-
Oidcc.retrieve_token(
code,
Claper.OidcProviderConfig,
client_id(),
client_secret(),
opts()
),
{:ok, oidc_user} <- validate_user(id_token, access_token, refresh_token, claims) do
conn
|> UserAuth.log_in_user(oidc_user.user)
else
{:error, _} ->
conn
|> put_flash(:error, "Cannot authenticate user.")
|> redirect(to: ~p"/users/log_in")
end
conn
end
defp config do
Application.get_env(:claper, :oidc)
end
defp client_id do
config()[:client_id]
end
defp client_secret do
config()[:client_secret]
end
defp provider_name do
config()[:provider_name]
end
defp scopes do
config()[:scopes]
end
defp base_url do
Application.get_env(:claper, ClaperWeb.Endpoint)[:base_url]
end
defp opts() do
url = base_url()
%{
redirect_uri: "#{url}/users/oidc/callback",
scopes: scopes()
}
end
defp format_refresh_token(%Oidcc.Token.Refresh{token: token}) do
token
end
defp format_refresh_token(:none) do
""
end
defp validate_user(id_token, access_token, refresh_token, claims) do
mappings = config()[:property_mappings]
case Claper.Accounts.get_or_create_user_with_oidc(%{
sub: claims["sub"],
issuer: claims["iss"],
name: claims["name"],
email: claims["email"],
provider: provider_name(),
expires_at: claims["exp"] |> DateTime.from_unix!() |> DateTime.to_naive(),
id_token: id_token,
access_token: access_token,
refresh_token: format_refresh_token(refresh_token),
groups: claims["groups"],
roles: claims[mappings["roles"]],
organization: claims[mappings["organization"]],
photo_url: claims[mappings["photo_url"]]
}) do
{:error, _} ->
{:error, %{reason: :invalid_user, msg: "Invalid user"}}
{:ok, user} ->
{:ok, user}
end
end
end

View File

@@ -5,8 +5,28 @@ defmodule ClaperWeb.UserSessionController do
alias ClaperWeb.UserAuth
def new(conn, _params) do
oidc_auto_redirect_login = Application.get_env(:claper, :oidc)[:auto_redirect_login]
conn
|> render("new.html", error_message: nil)
|> redirect_to_login(oidc_auto_redirect_login)
end
defp redirect_to_login(conn, true) do
conn |> redirect(to: "/users/oidc")
end
defp redirect_to_login(conn, false) do
oidc_provider_name = Application.get_env(:claper, :oidc)[:provider_name]
oidc_logo_url = Application.get_env(:claper, :oidc)[:logo_url]
oidc_enabled = Application.get_env(:claper, :oidc)[:enabled]
conn
|> render("new.html",
error_message: nil,
oidc_provider_name: oidc_provider_name,
oidc_logo_url: oidc_logo_url,
oidc_enabled: oidc_enabled
)
end
# def create(conn, %{"user" => %{"email" => email}} = _user_params) do

View File

@@ -7,7 +7,9 @@ defmodule ClaperWeb.Endpoint do
@session_options [
store: :cookie,
key: "_claper_key",
signing_salt: "Tg18Y2zU"
signing_salt: "Tg18Y2zU",
# 30 days
max_age: 24 * 60 * 60 * 30
]
socket "/live", Phoenix.LiveView.Socket,

View File

@@ -12,6 +12,13 @@ defmodule ClaperWeb.EmbedLive.FormComponent do
|> assign(assigns)
|> assign_new(:dark, fn -> false end)
|> assign(:embeds, list_embeds(assigns))
|> assign(:providers, [
{"YouTube", "youtube"},
{"Vimeo", "vimeo"},
{"Canva", "canva"},
{"Google Slides", "googleslides"},
{"Custom (iframe)", "custom"}
])
|> assign(:changeset, changeset)}
end

View File

@@ -18,24 +18,42 @@
required="true"
/>
<div class="mt-3">
<ClaperWeb.Component.Input.textarea
<div class="mt-3 flex gap-x-2 items-center">
<ClaperWeb.Component.Input.select
form={f}
key={:content}
name={gettext("The iframe component")}
key={:provider}
name={gettext("Provider")}
array={@providers}
labelClass={if @dark, do: "text-white"}
fieldClass={if @dark, do: "bg-gray-700 text-white"}
autofocus="true"
fieldClass={if @dark, do: "bg-gray-700 text-white h-full"}
required="true"
/>
<div class="flex-1">
<p></p>
<ClaperWeb.Component.Input.text
form={f}
key={:content}
name={
if Ecto.Changeset.get_field(@changeset, :provider) == "custom",
do: gettext("Iframe code"),
else: gettext("Link to the content")
}
labelClass={if @dark, do: "text-white"}
fieldClass={if @dark, do: "bg-gray-700 text-white"}
autofocus="true"
required="true"
/>
</div>
</div>
<p class="text-gray-700 text-xl font-semibold mt-5"><%= gettext("Options") %></p>
<div class="flex gap-x-2 mb-5 mt-3">
<%= checkbox(f, :attendee_visibility, class: "h-4 w-5") %>
<%= label(
f,
:attendee_visibility,
gettext("Attendee can view the web content on their device"),
gettext("Attendees can view the web content on their device"),
class: "text-sm font-medium"
) %>
</div>

View File

@@ -60,7 +60,12 @@ defmodule ClaperWeb.EventLive.EmbedComponent do
<p class="text-white text-lg font-semibold mb-4"><%= @embed.title %></p>
</div>
<div class="flex flex-col space-y-3">
<%= raw(@embed.content) %>
<.live_component
id="embed-component"
module={ClaperWeb.EventLive.EmbedIframeComponent}
provider={@embed.provider}
content={@embed.content}
/>
</div>
</div>
</div>

View File

@@ -0,0 +1,47 @@
defmodule ClaperWeb.EventLive.EmbedIframeComponent do
use ClaperWeb, :live_component
def render(assigns) do
~H"""
<div id={@id} class="h-full w-full">
<%= case @provider do %>
<% "youtube" -> %>
<iframe
src={"https://www.youtube.com/embed/#{@content |> String.split("youtu.be/") |> Enum.at(1)}"}
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
referrerpolicy="strict-origin-when-cross-origin"
allowfullscreen
>
</iframe>
<% "vimeo" -> %>
<iframe
src={"https://player.vimeo.com/video/#{@content |> String.split("vimeo.com/") |> Enum.at(1)}"}
frameborder="0"
allow="autoplay; fullscreen; picture-in-picture"
allowfullscreen
>
</iframe>
<% "canva" -> %>
<iframe
src={"#{@content}?embed"}
frameborder="0"
allowfullscreen="allowfullscreen"
allow="fullscreen"
>
</iframe>
<% "googleslides" -> %>
<iframe
src={"#{@content |> String.replace("/pub", "/embed")}"}
frameborder="0"
allowfullscreen="allowfullscreen"
allow="fullscreen"
>
</iframe>
<% "custom" -> %>
<%= raw(@content) %>
<% end %>
</div>
"""
end
end

View File

@@ -101,7 +101,7 @@ defmodule ClaperWeb.EventLive.EventCardComponent do
<div
phx-hook="Dropdown"
id={"dropdown-#{@event.uuid}"}
class="hidden rounded shadow-lg bg-white border px-2 py-1 absolute -left-1 top-9 w-max"
class="hidden rounded shadow-lg bg-white border px-1 py-1 absolute -left-1 top-9 w-max"
>
<ul>
<li>
@@ -175,14 +175,75 @@ defmodule ClaperWeb.EventLive.EventCardComponent do
<span><%= gettext("Terminate") %></span>
</.link>
</div>
<div>
<div class="flex items-start gap-x-2 relative text-sm ">
<%= if not @is_leader do %>
<a
href={~p"/events/#{@event.uuid}/edit"}
class="flex w-full lg:w-auto rounded-md tracking-wide focus:outline-none focus:shadow-outline text-primary-500 text-sm items-center"
<button
phx-click-away={JS.hide(to: "#dropdown-action-#{@event.uuid}")}
phx-click={JS.toggle(to: "#dropdown-action-#{@event.uuid}")}
phx-target={@myself}
class="flex w-full lg:w-auto pl-3 pr-4 text-gray-700 items-center justify-between py-2 rounded-md tracking-wide font-bold focus:outline-none focus:shadow-outline hover:bg-gray-300 bg-gray-200"
>
<span><%= gettext("Edit") %></span>
</a>
<span class="mr-2"><%= gettext("Action") %></span>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="2.5"
stroke="currentColor"
class="w-4 h-4"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="m19.5 8.25-7.5 7.5-7.5-7.5"
/>
</svg>
</button>
<div
phx-hook="Dropdown"
id={"dropdown-action-#{@event.uuid}"}
class="hidden rounded shadow-lg bg-white border px-1 py-1 absolute -left-1 top-9 w-max font-medium text-sm"
>
<ul>
<li>
<a
class="py-2 px-2 rounded text-gray-600 hover:bg-gray-100 flex items-center gap-x-2"
href={~p"/events/#{@event.uuid}/edit"}
data-phx-link="patch"
data-phx-link-state="push"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="h-5 w-5"
>
<path d="m5.433 13.917 1.262-3.155A4 4 0 0 1 7.58 9.42l6.92-6.918a2.121 2.121 0 0 1 3 3l-6.92 6.918c-.383.383-.84.685-1.343.886l-3.154 1.262a.5.5 0 0 1-.65-.65Z" />
<path d="M3.5 5.75c0-.69.56-1.25 1.25-1.25H10A.75.75 0 0 0 10 3H4.75A2.75 2.75 0 0 0 2 5.75v9.5A2.75 2.75 0 0 0 4.75 18h9.5A2.75 2.75 0 0 0 17 15.25V10a.75.75 0 0 0-1.5 0v5.25c0 .69-.56 1.25-1.25 1.25h-9.5c-.69 0-1.25-.56-1.25-1.25v-9.5Z" />
</svg>
<span><%= gettext("Edit") %></span>
</a>
</li>
<li>
<button
phx-value-id={@event.uuid}
phx-click="duplicate"
class="py-2 px-2 rounded text-gray-600 hover:bg-gray-100 flex items-center gap-x-2"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-5 h-5"
>
<path d="M7 3.5A1.5 1.5 0 0 1 8.5 2h3.879a1.5 1.5 0 0 1 1.06.44l3.122 3.12A1.5 1.5 0 0 1 17 6.622V12.5a1.5 1.5 0 0 1-1.5 1.5h-1v-3.379a3 3 0 0 0-.879-2.121L10.5 5.379A3 3 0 0 0 8.379 4.5H7v-1Z" />
<path d="M4.5 6A1.5 1.5 0 0 0 3 7.5v9A1.5 1.5 0 0 0 4.5 18h7a1.5 1.5 0 0 0 1.5-1.5v-5.879a1.5 1.5 0 0 0-.44-1.06L9.44 6.439A1.5 1.5 0 0 0 8.378 6H4.5Z" />
</svg>
<span><%= gettext("Duplicate") %></span>
</button>
</li>
</ul>
</div>
<% end %>
</div>
</div>
@@ -194,14 +255,57 @@ defmodule ClaperWeb.EventLive.EventCardComponent do
<span class="text-sm text-supporting-red-500">
<%= gettext("Error when processing the file") %>
</span>
<div>
<div class="relative text-sm">
<%= if not @is_leader do %>
<a
href={~p"/events/#{@event.uuid}/edit"}
class="flex w-full lg:w-auto rounded-md tracking-wide focus:outline-none focus:shadow-outline text-primary-500 text-sm items-center"
<button
phx-click-away={JS.hide(to: "#dropdown-action-#{@event.uuid}")}
phx-click={JS.toggle(to: "#dropdown-action-#{@event.uuid}")}
phx-target={@myself}
class="flex w-full lg:w-auto pl-3 pr-4 text-gray-700 items-center justify-between py-2 rounded-md tracking-wide font-bold focus:outline-none focus:shadow-outline hover:bg-gray-300 bg-gray-200"
>
<span><%= gettext("Edit") %></span>
</a>
<span class="mr-2"><%= gettext("Action") %></span>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="2.5"
stroke="currentColor"
class="w-4 h-4"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="m19.5 8.25-7.5 7.5-7.5-7.5"
/>
</svg>
</button>
<div
phx-hook="Dropdown"
id={"dropdown-action-#{@event.uuid}"}
class="hidden rounded shadow-lg bg-white border px-1 py-1 absolute -left-1 top-9 w-max font-medium text-sm"
>
<ul>
<li>
<a
class="py-2 px-2 rounded text-gray-600 hover:bg-gray-100 flex items-center gap-x-2"
href={~p"/events/#{@event.uuid}/edit"}
data-phx-link="patch"
data-phx-link-state="push"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="h-5 w-5"
>
<path d="m5.433 13.917 1.262-3.155A4 4 0 0 1 7.58 9.42l6.92-6.918a2.121 2.121 0 0 1 3 3l-6.92 6.918c-.383.383-.84.685-1.343.886l-3.154 1.262a.5.5 0 0 1-.65-.65Z" />
<path d="M3.5 5.75c0-.69.56-1.25 1.25-1.25H10A.75.75 0 0 0 10 3H4.75A2.75 2.75 0 0 0 2 5.75v9.5A2.75 2.75 0 0 0 4.75 18h9.5A2.75 2.75 0 0 0 17 15.25V10a.75.75 0 0 0-1.5 0v5.25c0 .69-.56 1.25-1.25 1.25h-9.5c-.69 0-1.25-.56-1.25-1.25v-9.5Z" />
</svg>
<span><%= gettext("Edit") %></span>
</a>
</li>
</ul>
</div>
<% end %>
</div>
</div>
@@ -240,21 +344,64 @@ defmodule ClaperWeb.EventLive.EventCardComponent do
<span><%= gettext("View report") %></span>
</a>
</div>
<div>
<div class="relative text-sm">
<%= if not @is_leader do %>
<%= link(gettext("Delete"),
to: "#",
phx_click: "delete",
phx_value_id: @event.uuid,
data: [
confirm:
gettext(
"This will delete all data related to your event, this cannot be undone. Confirm ?"
)
],
class:
"flex w-full lg:w-auto rounded-md tracking-wide focus:outline-none focus:shadow-outline text-red-500 text-sm items-center"
) %>
<button
phx-click-away={JS.hide(to: "#dropdown-action-#{@event.uuid}")}
phx-click={JS.toggle(to: "#dropdown-action-#{@event.uuid}")}
phx-target={@myself}
class="flex w-full lg:w-auto pl-3 pr-4 text-gray-700 items-center justify-between py-2 rounded-md tracking-wide font-bold focus:outline-none focus:shadow-outline hover:bg-gray-300 bg-gray-200"
>
<span class="mr-2"><%= gettext("Action") %></span>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="2.5"
stroke="currentColor"
class="w-4 h-4"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="m19.5 8.25-7.5 7.5-7.5-7.5"
/>
</svg>
</button>
<div
phx-hook="Dropdown"
id={"dropdown-action-#{@event.uuid}"}
class="hidden rounded shadow-lg bg-white border px-1 py-1 absolute -left-1 top-9 w-max font-medium text-sm"
>
<ul>
<li>
<.link
phx-click="delete"
phx-value-id={@event.uuid}
data-confirm={
gettext(
"This will delete all data related to your event, this cannot be undone. Confirm ?"
)
}
class="py-2 px-2 rounded text-red-500 hover:bg-gray-100 flex items-center gap-x-2 flex items-center gap-x-2 cursor-pointer"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
fill="currentColor"
class="h-5 w-5"
>
<path
fill-rule="evenodd"
d="M5 3.25V4H2.75a.75.75 0 0 0 0 1.5h.3l.815 8.15A1.5 1.5 0 0 0 5.357 15h5.285a1.5 1.5 0 0 0 1.493-1.35l.815-8.15h.3a.75.75 0 0 0 0-1.5H11v-.75A2.25 2.25 0 0 0 8.75 1h-1.5A2.25 2.25 0 0 0 5 3.25Zm2.25-.75a.75.75 0 0 0-.75.75V4h3v-.75a.75.75 0 0 0-.75-.75h-1.5ZM6.05 6a.75.75 0 0 1 .787.713l.275 5.5a.75.75 0 0 1-1.498.075l-.275-5.5A.75.75 0 0 1 6.05 6Zm3.9 0a.75.75 0 0 1 .712.787l-.275 5.5a.75.75 0 0 1-1.498-.075l.275-5.5a.75.75 0 0 1 .786-.711Z"
clip-rule="evenodd"
/>
</svg>
<span><%= gettext("Delete") %></span>
</.link>
</li>
</ul>
</div>
<% end %>
</div>
</div>

View File

@@ -248,7 +248,7 @@ defmodule ClaperWeb.EventLive.EventFormComponent do
event_params
) do
{:ok, event} ->
handle_file_conversion(socket, hash, ext)
handle_file_conversion(socket, hash, ext, event)
send_email_to_leaders(socket, event)
@@ -262,17 +262,20 @@ defmodule ClaperWeb.EventLive.EventFormComponent do
end
end
defp handle_file_conversion(socket, hash, ext) do
defp handle_file_conversion(socket, hash, ext, event) do
if is_nil(hash) || is_nil(ext) do
:ok
else
files = Claper.Presentations.get_presentation_files_by_hash(event.presentation_file.hash)
Task.Supervisor.async_nolink(Claper.TaskSupervisor, fn ->
Claper.Tasks.Converter.convert(
socket.assigns.current_user.id,
"original.#{ext}",
hash,
ext,
socket.assigns.event.presentation_file.id
socket.assigns.event.presentation_file.id,
files |> Enum.count() > 1
)
end)
end

View File

@@ -372,7 +372,7 @@
phx-click="remove-leader"
phx-value-remove={l.data.temp_id}
phx-target={@myself}
class="md:ml-3 rounded-md bg-supporting-red-500 hover:bg-supporting-red-600 transition flex items-center mt-2 md:w-max text-white py-7 px-3 text-sm max-h-0"
class="md:ml-3 rounded-md bg-supporting-red-500 hover:bg-supporting-red-600 transition flex items-center mt-2 md:w-max text-white py-5 px-3 text-sm max-h-0"
>
<span><%= gettext("Remove") %></span>
</button>

View File

@@ -12,10 +12,12 @@ defmodule ClaperWeb.EventLive.Index do
Gettext.put_locale(ClaperWeb.Gettext, locale)
end
code = for _ <- 1..5, into: "", do: <<Enum.random(~c"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")>>
changeset =
Events.change_event(%Event{}, %{
started_at: NaiveDateTime.utc_now(),
code: Enum.random(1000..9999),
code: code,
leaders: []
})
@@ -56,6 +58,8 @@ defmodule ClaperWeb.EventLive.Index do
@impl true
def handle_event("save", %{"event" => event_params}, socket) do
code = for _ <- 1..5, into: "", do: <<Enum.random(~c"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")>>
case Claper.Events.create_event(
event_params
|> Map.put("user_id", socket.assigns.current_user.id)
@@ -65,7 +69,10 @@ defmodule ClaperWeb.EventLive.Index do
"presentation_state" => %{}
})
|> Map.put("started_at", NaiveDateTime.utc_now())
|> Map.put("code", "#{Enum.random(1000..9999)}")
|> Map.put(
"code",
"#{code}"
)
) do
{:ok, _event} ->
{:noreply,
@@ -81,11 +88,19 @@ defmodule ClaperWeb.EventLive.Index do
@impl true
def handle_event("delete", %{"id" => id}, %{assigns: %{current_user: current_user}} = socket) do
event = Events.get_user_event!(current_user.id, id, [:presentation_file])
hash = event.presentation_file.hash
files =
Claper.Presentations.get_presentation_files_by_hash(hash)
{:ok, _} = Events.delete_event(event)
Task.Supervisor.async_nolink(Claper.TaskSupervisor, fn ->
Claper.Tasks.Converter.clear(event.presentation_file.hash)
end)
if files |> Enum.empty?() && !is_nil(hash) do
Task.Supervisor.async_nolink(Claper.TaskSupervisor, fn ->
Claper.Tasks.Converter.clear(event.presentation_file.hash)
end)
end
{:noreply, redirect(socket, to: ~p"/events")}
end
@@ -106,6 +121,13 @@ defmodule ClaperWeb.EventLive.Index do
{:noreply, redirect(socket, to: ~p"/events")}
end
@impl true
def handle_event("duplicate", %{"id" => id}, %{assigns: %{current_user: current_user}} = socket) do
event = Events.get_user_event!(current_user.id, id)
{:ok, _} = Events.duplicate_event(current_user.id, event.uuid)
{:noreply, redirect(socket, to: ~p"/events")}
end
@impl true
def handle_event(
"toggle-quick-create",
@@ -142,11 +164,13 @@ defmodule ClaperWeb.EventLive.Index do
end
defp apply_action(socket, :new, _params) do
code = for _ <- 1..5, into: "", do: <<Enum.random(~c"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")>>
socket
|> assign(:page_title, gettext("Create"))
|> assign(:event, %Event{
started_at: NaiveDateTime.utc_now(),
code: Enum.random(1000..9999),
code: code,
leaders: []
})
end

View File

@@ -12,7 +12,7 @@
<% else %>
<div
id="quick-create-modal"
class={"#{if @live_action != :quick_create, do: 'hidden' } fixed z-30 inset-0 overflow-y-auto p-4 sm:p-6 md:p-24
class={"#{if @live_action != :quick_create, do: "hidden" } fixed z-30 inset-0 overflow-y-auto p-4 sm:p-6 md:p-24
transform transition-all duration-150"}
role="dialog"
aria-modal="true"

View File

@@ -312,29 +312,6 @@ defmodule ClaperWeb.EventLive.Manage do
|> interactions_at_position(page)}
end
@impl true
def handle_event(
"import",
%{"event" => event_uuid},
%{assigns: %{current_user: current_user, event: current_event}} = socket
) do
try do
case Claper.Events.import(current_user.id, event_uuid, current_event.uuid) do
{:ok, _event} ->
{:noreply,
socket
|> put_flash(:info, gettext("Interactions imported successfully"))
|> redirect(to: ~p"/e/#{current_event.code}/manage")}
end
rescue
Ecto.NoResultsError ->
{:noreply,
socket
|> put_flash(:error, gettext("Interactions import failed"))
|> redirect(to: ~p"/e/#{current_event.code}/manage")}
end
end
def handle_event("poll-set-active", %{"id" => id}, socket) do
with poll <- Polls.get_poll!(id), :ok <- Claper.Interactions.enable_interaction(poll) do
Phoenix.PubSub.broadcast(
@@ -539,23 +516,6 @@ defmodule ClaperWeb.EventLive.Manage do
{:noreply, socket |> assign(:state, new_state)}
end
@impl true
def handle_event(
"checked",
%{"key" => "show_poll_results_enabled", "value" => value},
%{assigns: %{state: state}} = socket
) do
{:ok, new_state} =
Claper.Presentations.update_presentation_state(
state,
%{
:show_poll_results_enabled => value
}
)
{:noreply, socket |> assign(:state, new_state)}
end
@impl true
def handle_event(
"checked",

View File

@@ -31,7 +31,7 @@
</div>
<div
id="settings-modal"
class={"#{if !@settings_modal, do: 'hidden' } fixed z-30 inset-0 overflow-y-auto p-4 sm:p-6 md:p-24
class={"#{if !@settings_modal, do: "hidden" } fixed z-30 inset-0 overflow-y-auto p-4 sm:p-6 md:p-24
transform transition-all duration-150"}
role="dialog"
aria-modal="true"
@@ -107,7 +107,7 @@
<div
id="add-modal"
class={"#{if !@create, do: 'hidden' } fixed z-30 inset-0 overflow-y-auto p-4 sm:p-6 md:p-24
class={"#{if !@create, do: "hidden" } fixed z-30 inset-0 overflow-y-auto p-4 sm:p-6 md:p-24
transform transition-all duration-150"}
role="dialog"
aria-modal="true"
@@ -147,7 +147,7 @@
<div class="flex h-12 w-12 flex-none text-white items-center justify-center rounded-lg bg-gradient-to-br from-primary-500 to-secondary-500">
<svg
xmlns="http://www.w3.org/2000/svg"
class="h-6 w-6"
class="h-7 w-7"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
@@ -180,23 +180,17 @@
<div class="flex h-12 w-12 flex-none text-white items-center justify-center rounded-lg bg-gradient-to-br from-primary-500 to-secondary-500">
<svg
xmlns="http://www.w3.org/2000/svg"
class="icon icon-tabler icon-tabler-forms"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="h-7 w-7"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
viewBox="0 0 24 24"
stroke="currentColor"
stroke-width="1.5"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M12 3a3 3 0 0 0 -3 3v12a3 3 0 0 0 3 3"></path>
<path d="M6 3a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3"></path>
<path d="M13 7h7a1 1 0 0 1 1 1v8a1 1 0 0 1 -1 1h-7"></path>
<path d="M5 7h-1a1 1 0 0 0 -1 1v8a1 1 0 0 0 1 1h1"></path>
<path d="M17 12h.01"></path>
<path d="M13 12h.01"></path>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"
/>
</svg>
</div>
<div class="ml-4 flex-auto text-left">
@@ -223,7 +217,7 @@
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-6 h-6"
class="w-7 h-7"
>
<path
stroke-linecap="round"
@@ -241,36 +235,6 @@
</a>
</li>
</ul>
<%= if @total_interactions == 0 && @event.presentation_file.length > 0 do %>
<div class="mt-10">
<a
data-phx-link="patch"
data-phx-link-state="push"
href={~p"/e/#{@event.code}/manage/import"}
class="group flex gap-x-2 select-none rounded-xl p-3 w-full hover:bg-gray-200 cursor-pointer"
>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
width="24"
height="24"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3"
/>
</svg>
<p class="text-gray-700">
<%= gettext("Import all interactions from another presentation") %>
</p>
</a>
</div>
<% end %>
<% end %>
<%= if @create=="poll" do %>
<div class="scroll-py-3 overflow-y-auto bg-gray-100 p-3">
@@ -607,11 +571,11 @@
</div>
<div
phx-hook={"#{if @event.presentation_file.length > 0, do: 'Split', else: ''}"}
phx-hook={"#{if @event.presentation_file.length > 0, do: "Split", else: ""}"}
data-type="row"
data-gutter=".gutter"
id="base-layout"
class={"#{if @event.presentation_file.length > 0, do: 'md:grid grid-rows-[1fr_10px_1fr] overflow-y-auto', else: ''}"}
class={"#{if @event.presentation_file.length > 0, do: "md:grid grid-rows-[1fr_10px_1fr] overflow-y-auto", else: ""}"}
>
<div
:if={@event.presentation_file.length > 0}
@@ -627,14 +591,18 @@
>
<%= if Application.get_env(:claper, :presentations) |> Keyword.get(:storage) == "local" do %>
<img
class={"#{if @state.position==index, do: 'border-4 border-primary-500' , else: 'opacity-20' }
class={"#{if @state.position==index, do: "border-4 border-primary-500" , else: "opacity-20" }
transition-all object-contain"}
src={"/uploads/#{@event.presentation_file.hash}/#{index+1}.jpg"}
/>
<% else %>
<img src={"https://#{Application.get_env(:claper, :presentations) |>
<img
class={"#{if @state.position==index, do: "border-4 border-primary-500" , else: "opacity-20" }
transition-all object-contain"}
src={"https://#{Application.get_env(:claper, :presentations) |>
Keyword.get(:aws_bucket)}.s3.#{Application.get_env(:ex_aws,
:region)}.amazonaws.com/presentations/#{@event.presentation_file.hash}/#{index+1}.jpg"} />
:region)}.amazonaws.com/presentations/#{@event.presentation_file.hash}/#{index+1}.jpg"}
/>
<% end %>
</button>
<% end %>
@@ -755,49 +723,6 @@
</span>
</button>
</li>
<li>
<button
phx-click="checked"
phx-value-key="show_poll_results_enabled"
value={"#{!@state.show_poll_results_enabled}"}
class="py-2 px-2 rounded text-gray-600 bg-gray-100 hover:bg-gray-200 flex justify-center items-center w-full gap-x-3"
>
<svg
:if={@state.show_poll_results_enabled}
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="h-6 w-6"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M8 4h10a2 2 0 0 1 2 2v10m-.586 3.414a2 2 0 0 1 -1.414 .586h-12a2 2 0 0 1 -2 -2v-12c0 -.547 .22 -1.043 .576 -1.405" /><path d="M7 14l3 -3l2 2l.5 -.5m2 -2l.5 -.5l2 2" /><path d="M3 3l18 18" />
</svg>
<svg
:if={!@state.show_poll_results_enabled}
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="h-6 w-6"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M4 18v-12a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z" /><path d="M7 14l3 -3l2 2l3 -3l2 2" />
</svg>
<span :if={@state.show_poll_results_enabled}>
<%= gettext("Hide results for attendees") %>
</span>
<span :if={!@state.show_poll_results_enabled}>
<%= gettext("Show results for attendees") %>
</span>
</button>
</li>
</ul>
</div>
<div>
@@ -908,7 +833,9 @@
/>
</svg>
</div>
<span class="font-semibold"><%= gettext("Web content") %></span>
<span class="font-semibold">
<%= gettext("Web content") %>
</span>
</div>
<a
class="p-2 rounded text-xs font-medium text-center text-primary-500"
@@ -949,7 +876,123 @@
<% _ -> %>
<!-- Handle any other types of interactions here if needed -->
<% end %>
<p class="text-sm mb-4"><%= interaction.title %></p>
<div class="text-sm mb-4 flex gap-x-2 items-center">
<%= case interaction do %>
<% %Claper.Embeds.Embed{} -> %>
<%= case(interaction.provider) do %>
<% "youtube" -> %>
<svg
xmlns="http://www.w3.org/2000/svg"
class="h-5"
viewBox="0 0 28.57 20"
>
<svg viewBox="0 0 28.57 20" xmlns="http://www.w3.org/2000/svg">
<path
d="M27.973 3.123A3.578 3.578 0 0 0 25.447.597C23.22 0 14.285 0 14.285 0S5.35 0 3.123.597A3.578 3.578 0 0 0 .597 3.123C0 5.35 0 10 0 10s0 4.65.597 6.877a3.578 3.578 0 0 0 2.526 2.526C5.35 20 14.285 20 14.285 20s8.935 0 11.162-.597a3.578 3.578 0 0 0 2.526-2.526C28.57 14.65 28.57 10 28.57 10s-.002-4.65-.597-6.877Z"
fill="red"
/>
<path
d="M11.425 14.285 18.848 10l-7.423-4.285v8.57Z"
fill="#fff"
/>
</svg>
</svg>
<% "vimeo" -> %>
<svg
class="h-5"
style="fill:#1ab7ea"
viewBox="0 0 32 32"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M31.969 8.552c-.141 3.12-2.319 7.396-6.527 12.812-4.355 5.667-8.031 8.496-11.052 8.496-1.88 0-3.437-1.724-4.74-5.172l-2.557-9.491c-.957-3.443-1.979-5.167-3.077-5.167-.24 0-1.079.5-2.511 1.505L0 9.592a408.153 408.153 0 0 0 4.667-4.167c2.104-1.828 3.688-2.781 4.74-2.88 2.489-.24 4.02 1.469 4.599 5.115.62 3.937 1.047 6.385 1.292 7.344.719 3.265 1.509 4.901 2.369 4.901.667 0 1.672-1.063 3.021-3.183 1.339-2.12 2.052-3.729 2.145-4.839.193-1.823-.527-2.745-2.151-2.745-.765 0-1.557.163-2.371.521 1.584-5.156 4.579-7.677 9.016-7.516 3.297.079 4.839 2.219 4.656 6.396z" />
</svg>
<% "canva" -> %>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 1900 1900"
class="h-5"
>
<circle cx="950" cy="950" r="950" fill="#7D2AE7" />
<circle cx="950" cy="950" r="950" fill="url(#a)" />
<circle cx="950" cy="950" r="950" fill="url(#b)" />
<circle cx="950" cy="950" r="950" fill="url(#c)" />
<circle cx="950" cy="950" r="950" fill="url(#d)" />
<path
fill="#fff"
d="M1360.14 1144.88c-7.84 0-14.74 6.62-21.92 21.08-81.08 164.41-221.12 280.74-383.174 280.74-187.38 0-303.419-169.15-303.419-402.83 0-395.834 220.548-624.697 414.263-624.697 90.52 0 145.8 56.885 145.8 147.41 0 107.439-61.04 164.324-61.04 202.216 0 17.009 10.58 27.308 31.56 27.308 84.29 0 183.22-96.855 183.22-233.682 0-132.669-115.47-230.186-309.18-230.186-320.145 0-604.665 296.804-604.665 707.471 0 317.88 181.522 527.94 461.601 527.94 297.274 0 469.164-295.77 469.164-391.77 0-21.26-10.87-31-22.21-31Z"
/>
<defs>
<radialGradient
id="a"
cx="0"
cy="0"
r="1"
gradientTransform="rotate(-49.416 2013.483 443.185) scale(1469.49)"
gradientUnits="userSpaceOnUse"
>
<stop stop-color="#6420FF" />
<stop offset="1" stop-color="#6420FF" stop-opacity="0" />
</radialGradient>
<radialGradient
id="b"
cx="0"
cy="0"
r="1"
gradientTransform="rotate(54.703 42.717 594.194) scale(1657.12)"
gradientUnits="userSpaceOnUse"
>
<stop stop-color="#00C4CC" />
<stop offset="1" stop-color="#00C4CC" stop-opacity="0" />
</radialGradient>
<radialGradient
id="c"
cx="0"
cy="0"
r="1"
gradientTransform="matrix(1023.00018 -1030.00171 473.71139 470.4913 367 1684)"
gradientUnits="userSpaceOnUse"
>
<stop stop-color="#6420FF" />
<stop offset="1" stop-color="#6420FF" stop-opacity="0" />
</radialGradient>
<radialGradient
id="d"
cx="0"
cy="0"
r="1"
gradientTransform="matrix(595.99869 1371.99953 -2298.40601 998.43108 777 256)"
gradientUnits="userSpaceOnUse"
>
<stop stop-color="#00C4CC" stop-opacity=".726" />
<stop offset="0" stop-color="#00C4CC" />
<stop offset="1" stop-color="#00C4CC" stop-opacity="0" />
</radialGradient>
</defs>
</svg>
<% "googleslides" -> %>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 64 88"
xml:space="preserve"
class="h-5"
>
<path
d="M58 88H6c-3.3 0-6-2.7-6-6V6c0-3.3 2.7-6 6-6h36l22 22v60c0 3.3-2.7 6-6 6z"
fill="#f8bf08"
/>
<path d="m42 0 22 22H42V0z" fill="#f59307" />
<path
d="M12 34.5v28h40v-28H12zm35 23H17v-18h30v18z"
fill="#fdffff"
/>
</svg>
<% _ -> %>
<% end %>
<% _ -> %>
<% end %>
<span><%= interaction.title %></span>
</div>
</div>
<div class="w-full">
<%= if interaction.enabled do %>
@@ -1055,32 +1098,32 @@
phx-update="replace"
class="flex flex-col md:flex-row md:flex items-center bg-gray-200 space-y-2 md:space-y-0 space-x-0 md:space-x-3 px-2 w-full py-3"
>
<li class={"rounded-md #{if @list_tab==:posts, do: 'bg-secondary-600 text-white' ,
else: 'bg-white text-gray-600' } px-2 py-0.5 text-sm shadow-sm"}>
<li class={"rounded-md #{if @list_tab==:posts, do: "bg-secondary-600 text-white" ,
else: "bg-white text-gray-600" } px-2 py-0.5 text-sm shadow-sm"}>
<%= link(gettext("Messages") <> " (#{@post_count})",
to: "#",
phx_click: "list-tab",
phx_value_tab: :posts
) %>
</li>
<li class={"rounded-md #{if @list_tab==:questions, do: 'bg-secondary-600 text-white' ,
else: 'bg-white text-gray-600' } px-2 py-0.5 text-sm shadow-sm"}>
<li class={"rounded-md #{if @list_tab==:questions, do: "bg-secondary-600 text-white" ,
else: "bg-white text-gray-600" } px-2 py-0.5 text-sm shadow-sm"}>
<%= link(gettext("Questions") <> " (#{@question_count})",
to: "#",
phx_click: "list-tab",
phx_value_tab: :questions
) %>
</li>
<li class={"rounded-md #{if @list_tab==:pinned_posts, do: 'bg-secondary-600 text-white' ,
else: 'bg-white text-gray-600' } px-2 py-0.5 text-sm shadow-sm"}>
<li class={"rounded-md #{if @list_tab==:pinned_posts, do: "bg-secondary-600 text-white" ,
else: "bg-white text-gray-600" } px-2 py-0.5 text-sm shadow-sm"}>
<%= link(gettext("Pinned messages") <> " (#{@pinned_post_count})",
to: "#",
phx_click: "list-tab",
phx_value_tab: :pinned_posts
) %>
</li>
<li class={"rounded-md #{if @list_tab==:forms, do: 'bg-secondary-600 text-white' ,
else: 'bg-white text-gray-600' } px-2 py-0.5 text-sm shadow-sm"}>
<li class={"rounded-md #{if @list_tab==:forms, do: "bg-secondary-600 text-white" ,
else: "bg-white text-gray-600" } px-2 py-0.5 text-sm shadow-sm"}>
<%= link(gettext("Form submissions") <> " (#{@form_submit_count})",
to: "#",
phx_click: "list-tab",

View File

@@ -46,7 +46,7 @@ defmodule ClaperWeb.EventLive.ManagerSettingsComponent do
</div>
<div
class={"#{if !@state.chat_visible, do: 'opacity-50'} flex space-x-2 items-center mt-3"}
class={"#{if !@state.chat_visible, do: "opacity-50"} flex space-x-2 items-center mt-3"}
title={
if !@state.chat_visible,
do: gettext("Show messages to change this option"),
@@ -94,7 +94,7 @@ defmodule ClaperWeb.EventLive.ManagerSettingsComponent do
</div>
<div
class={"#{if !@state.chat_enabled, do: 'opacity-50'} flex space-x-2 items-center mt-3"}
class={"#{if !@state.chat_enabled, do: "opacity-50"} flex space-x-2 items-center mt-3"}
title={
if !@state.chat_enabled,
do: gettext("Enable messages to change this option"),

View File

@@ -60,7 +60,7 @@ defmodule ClaperWeb.EventLive.PollComponent do
<button class="bg-gray-500 px-3 py-2 rounded-full flex justify-between items-center relative text-white">
<div
style={"width: #{if @show_results, do: opt.percentage, else: 0}%;"}
class={"bg-gradient-to-r from-primary-500 to-secondary-500 h-full absolute left-0 transition-all rounded-l-full #{if opt.percentage == "100", do: 'rounded-r-full'}"}
class={"bg-gradient-to-r from-primary-500 to-secondary-500 h-full absolute left-0 transition-all rounded-l-full #{if opt.percentage == "100", do: "rounded-r-full"}"}
>
</div>
<div class="flex space-x-3 z-10 text-left">
@@ -93,7 +93,7 @@ defmodule ClaperWeb.EventLive.PollComponent do
>
<div
style={"width: #{if @show_results, do: opt.percentage, else: 0}%;"}
class={"bg-gradient-to-r from-primary-500 to-secondary-500 h-full absolute left-0 transition-all rounded-l-full #{if opt.percentage == "100", do: 'rounded-r-full'}"}
class={"bg-gradient-to-r from-primary-500 to-secondary-500 h-full absolute left-0 transition-all rounded-l-full #{if opt.percentage == "100", do: "rounded-r-full"}"}
>
</div>
<div class="flex space-x-3 z-10 text-left">

View File

@@ -245,7 +245,11 @@ defmodule ClaperWeb.EventLive.Presenter do
{:current_interaction, %Poll{} = interaction},
socket
) do
{:noreply, socket |> assign(:current_poll, interaction)}
{:noreply,
socket
|> assign(:current_poll, interaction)
|> assign(:current_embed, nil)
|> assign(:current_form, nil)}
end
@impl true
@@ -253,7 +257,11 @@ defmodule ClaperWeb.EventLive.Presenter do
{:current_interaction, %Embed{} = interaction},
socket
) do
{:noreply, socket |> assign(:current_embed, interaction)}
{:noreply,
socket
|> assign(:current_embed, interaction)
|> assign(:current_poll, nil)
|> assign(:current_form, nil)}
end
@impl true
@@ -261,7 +269,11 @@ defmodule ClaperWeb.EventLive.Presenter do
{:current_interaction, %Form{} = interaction},
socket
) do
{:noreply, socket |> assign(:current_form, interaction)}
{:noreply,
socket
|> assign(:current_form, interaction)
|> assign(:current_poll, nil)
|> assign(:current_embed, nil)}
end
@impl true

View File

@@ -19,7 +19,7 @@
<!-- JOIN SCREEN -->
<div
id="joinScreen"
class={"#{if @state.join_screen_visible, do: 'opacity-100 z-40', else: 'opacity-0'} h-full w-full flex flex-col justify-center bg-black absolute transition-opacity"}
class={"#{if @state.join_screen_visible, do: "opacity-100 z-40", else: "opacity-0"} h-full w-full flex flex-col justify-center bg-black absolute transition-opacity"}
>
<div class="h-full bg-black text-white bg-opacity-50 text-center flex flex-col items-center justify-center">
<span class="font-semibold mb-10 sm:text-3xl md:text-4xl lg:text-6xl">
@@ -46,28 +46,28 @@
<%= if @current_poll do %>
<div
id="poll"
class={"#{if @state.poll_visible, do: 'opacity-100', else: 'opacity-0'} h-full w-full flex flex-col justify-center bg-black bg-opacity-90 absolute z-30 left-1/2 top-1/2 transform -translate-y-1/2 -translate-x-1/2 p-10 transition-opacity"}
class={"#{if @state.poll_visible, do: "opacity-100", else: "opacity-0"} h-full w-full flex flex-col justify-center bg-black bg-opacity-90 absolute z-30 left-1/2 top-1/2 transform -translate-y-1/2 -translate-x-1/2 p-10 transition-opacity"}
>
<div class="w-full md:w-1/2 mx-auto h-full">
<p class={"#{if @iframe, do: 'text-xl mb-12', else: 'text-5xl mb-24'} text-white font-bold text-center"}>
<p class={"#{if @iframe, do: "text-xl mb-12", else: "text-5xl mb-24"} text-white font-bold text-center"}>
<%= @current_poll.title %>
</p>
<div class={"#{if @iframe, do: 'space-y-5', else: 'space-y-8'} flex flex-col"}>
<div class={"#{if @iframe, do: "space-y-5", else: "space-y-8"} flex flex-col"}>
<%= if (length @current_poll.poll_opts) > 0 do %>
<%= for opt <- @current_poll.poll_opts do %>
<div class={"#{if @iframe, do: 'py-1', else: 'py-4'} bg-gray-500 px-6 rounded-full flex justify-between items-center relative text-white"}>
<div class={"#{if @iframe, do: "py-1", else: "py-4"} bg-gray-500 px-6 rounded-full flex justify-between items-center relative text-white"}>
<div
style={"width: #{opt.percentage}%;"}
class="bg-gradient-to-r from-primary-500 to-secondary-500 rounded-full h-full absolute left-0 transition-all"
>
</div>
<div class="flex space-x-3 z-10 text-left">
<span class={"#{if @iframe, do: 'text-base', else: 'text-2xl'} flex-1 font-bold"}>
<span class={"#{if @iframe, do: "text-base", else: "text-2xl"} flex-1 font-bold"}>
<%= opt.content %>
</span>
</div>
<span class={"#{if @iframe, do: 'text-base', else: 'text-2xl'} z-10 font-bold"}>
<span class={"#{if @iframe, do: "text-base", else: "text-2xl"} z-10 font-bold"}>
<%= opt.percentage %>% (<%= opt.vote_count %>)
</span>
</div>
@@ -80,7 +80,7 @@
<!-- MESSAGES -->
<div
id="slider-wrapper"
class={"w-full min-h-screen grid #{if (@state.chat_visible && @event.presentation_file.length > 0) || (@current_embed && @event.presentation_file.length == 0), do: 'grid-cols-[1fr_10px_1fr]', else: 'grid-cols-[1fr]'} items-center justify-center relative bg-black"}
class={"w-full min-h-screen grid #{if (@state.chat_visible && @event.presentation_file.length > 0) || (@current_embed && @event.presentation_file.length == 0), do: "grid-cols-[1fr_10px_1fr]", else: "grid-cols-[1fr]"} items-center justify-center relative bg-black"}
phx-hook="Split"
data-type="column"
data-gutter=".gutter-1"
@@ -97,11 +97,11 @@
<div class={if post.__meta__.state == :deleted, do: "hidden"} id={"#{post.id}-post"}>
<div class="px-4 pb-2 pt-3 rounded-b-lg rounded-tr-lg bg-white shadow-md text-black break-word mt-4">
<%= if post.name do %>
<p class={"#{if @iframe, do: 'text-base', else: 'text-lg'} text-gray-400 font-semibold mb-2 mr-2"}>
<p class={"#{if @iframe, do: "text-base", else: "text-lg"} text-gray-400 font-semibold mb-2 mr-2"}>
<%= post.name %>
</p>
<% end %>
<p class={"#{if @iframe, do: 'text-xl', else: 'text-3xl'}"}><%= post.body %></p>
<p class={"#{if @iframe, do: "text-xl", else: "text-3xl"}"}><%= post.body %></p>
<%= if post.like_count > 0 || post.love_count > 0 || post.lol_count > 0 do %>
<div class="flex h-6 space-x-2 text-lg text-gray-500 pb-3 items-center mt-5">
@@ -109,7 +109,7 @@
<%= if post.like_count > 0 do %>
<img
src="/images/icons/thumb.svg"
class={"#{if @iframe, do: 'h-4', else: 'h-7'}"}
class={"#{if @iframe, do: "h-4", else: "h-7"}"}
/>
<span class="ml-1"><%= post.like_count %></span>
<% end %>
@@ -118,7 +118,7 @@
<%= if post.love_count > 0 do %>
<img
src="/images/icons/heart.svg"
class={"#{if @iframe, do: 'h-4', else: 'h-7'}"}
class={"#{if @iframe, do: "h-4", else: "h-7"}"}
/>
<span class="ml-1"><%= post.love_count %></span>
<% end %>
@@ -127,7 +127,7 @@
<%= if post.lol_count > 0 do %>
<img
src="/images/icons/laugh.svg"
class={"#{if @iframe, do: 'h-4', else: 'h-7'}"}
class={"#{if @iframe, do: "h-4", else: "h-7"}"}
/>
<span class="ml-1"><%= post.lol_count %></span>
<% end %>
@@ -144,11 +144,11 @@
<div class={if post.__meta__.state == :deleted, do: "hidden"} id={"#{post.id}-post"}>
<div class="px-4 pb-2 pt-3 rounded-b-lg rounded-tr-lg bg-white shadow-md text-black break-word mt-4">
<%= if post.name do %>
<p class={"#{if @iframe, do: 'text-base', else: 'text-lg'} text-gray-400 font-semibold mb-2 mr-2"}>
<p class={"#{if @iframe, do: "text-base", else: "text-lg"} text-gray-400 font-semibold mb-2 mr-2"}>
<%= post.name %>
</p>
<% end %>
<p class={"#{if @iframe, do: 'text-xl', else: 'text-3xl'}"}><%= post.body %></p>
<p class={"#{if @iframe, do: "text-xl", else: "text-3xl"}"}><%= post.body %></p>
<%= if post.like_count > 0 || post.love_count > 0 || post.lol_count > 0 do %>
<div class="flex h-6 space-x-2 text-lg text-gray-500 pb-3 items-center mt-5">
@@ -156,7 +156,7 @@
<%= if post.like_count > 0 do %>
<img
src="/images/icons/thumb.svg"
class={"#{if @iframe, do: 'h-4', else: 'h-7'}"}
class={"#{if @iframe, do: "h-4", else: "h-7"}"}
/>
<span class="ml-1"><%= post.like_count %></span>
<% end %>
@@ -165,7 +165,7 @@
<%= if post.love_count > 0 do %>
<img
src="/images/icons/heart.svg"
class={"#{if @iframe, do: 'h-4', else: 'h-7'}"}
class={"#{if @iframe, do: "h-4", else: "h-7"}"}
/>
<span class="ml-1"><%= post.love_count %></span>
<% end %>
@@ -174,7 +174,7 @@
<%= if post.lol_count > 0 do %>
<img
src="/images/icons/laugh.svg"
class={"#{if @iframe, do: 'h-4', else: 'h-7'}"}
class={"#{if @iframe, do: "h-4", else: "h-7"}"}
/>
<span class="ml-1"><%= post.lol_count %></span>
<% end %>
@@ -188,7 +188,7 @@
<% end %>
</div>
<div
class={"gutter-1 row-span-full cursor-col-resize col-[2] text-center text-sm leading-3 text-white #{if (!@state.chat_visible && @event.presentation_file.length > 0) || (!@current_embed && @event.presentation_file.length == 0), do: 'hidden'}"}
class={"gutter-1 row-span-full cursor-col-resize col-[2] text-center text-sm leading-3 text-white #{if (!@state.chat_visible && @event.presentation_file.length > 0) || (!@current_embed && @event.presentation_file.length == 0), do: "hidden"}"}
style="writing-mode: vertical-rl"
>
•••
@@ -198,10 +198,15 @@
<%= if @current_embed do %>
<!-- EMBED -->
<div id="embed" class="max-h-screen w-full h-screen">
<%= raw(@current_embed.content) %>
<.live_component
id="embed-component"
module={ClaperWeb.EventLive.EmbedIframeComponent}
provider={@current_embed.provider}
content={@current_embed.content}
/>
</div>
<% end %>
<div class={"#{if @current_embed, do: 'hidden', else: ''} text-center"} id="slider">
<div class={"#{if @current_embed, do: "hidden", else: ""} text-center"} id="slider">
<%= for index <- 1..max(1, @event.presentation_file.length) do %>
<%= if @event.presentation_file.length > 0 do %>
<%= if Application.get_env(:claper, :presentations) |> Keyword.get(:storage) == "local" do %>

View File

@@ -275,60 +275,42 @@ defmodule ClaperWeb.EventLive.Show do
end
@impl true
def handle_info({:poll_updated, poll}, socket) do
if poll.enabled do
{:noreply,
socket
|> update(:current_poll, fn _current_poll -> poll end)}
else
{:noreply,
socket
|> update(:current_poll, fn _current_poll -> nil end)}
end
end
@impl true
def handle_info({:poll_deleted, _poll}, socket) do
def handle_info({:poll_updated, %Claper.Polls.Poll{enabled: true} = poll}, socket) do
{:noreply,
socket
|> update(:current_poll, fn _current_poll -> nil end)}
|> load_current_interaction(poll)}
end
@impl true
def handle_info({:form_updated, form}, socket) do
if form.enabled do
{:noreply,
socket
|> update(:current_form, fn _current_form -> form end)}
else
{:noreply,
socket
|> update(:current_form, fn _current_form -> nil end)}
end
end
@impl true
def handle_info({:form_deleted, _form}, socket) do
def handle_info({:poll_deleted, %Claper.Polls.Poll{enabled: true}}, socket) do
{:noreply,
socket
|> update(:current_form, fn _current_form -> nil end)}
|> update(:current_interaction, fn _current_interaction -> nil end)}
end
@impl true
def handle_info({:embed_updated, embed}, socket) do
if embed.enabled do
{:noreply,
socket
|> update(:current_embed, fn _current_embed -> embed end)}
else
{:noreply,
socket
|> update(:current_embed, fn _current_embed -> nil end)}
end
def handle_info({:form_updated, %Claper.Forms.Form{enabled: true} = form}, socket) do
{:noreply,
socket
|> load_current_interaction(form)}
end
@impl true
def handle_info({:embed_deleted, _embed}, socket) do
def handle_info({:form_deleted, %Claper.Forms.Form{enabled: true}}, socket) do
{:noreply,
socket
|> update(:current_interaction, fn _current_interaction -> nil end)}
end
@impl true
def handle_info({:embed_updated, %Claper.Embeds.Embed{enabled: true} = embed}, socket) do
{:noreply,
socket
|> load_current_interaction(embed)}
end
@impl true
def handle_info({:embed_deleted, %Claper.Embeds.Embed{enabled: true}}, socket) do
{:noreply,
socket
|> update(:current_embed, fn _current_embed -> nil end)}
@@ -520,7 +502,7 @@ defmodule ClaperWeb.EventLive.Show do
def handle_event(
"select-poll-opt",
%{"opt" => opt},
%{assigns: %{current_poll: %{multiple: true}}} = socket
%{assigns: %{current_interaction: %{multiple: true}}} = socket
) do
if Enum.member?(socket.assigns.selected_poll_opt, opt) do
{:noreply,
@@ -538,7 +520,7 @@ defmodule ClaperWeb.EventLive.Show do
def handle_event(
"select-poll-opt",
%{"opt" => opt},
%{assigns: %{current_poll: %{multiple: false}}} = socket
%{assigns: %{current_interaction: %{multiple: false}}} = socket
) do
{:noreply, socket |> assign(:selected_poll_opt, [opt])}
end
@@ -551,13 +533,15 @@ defmodule ClaperWeb.EventLive.Show do
)
when is_map(current_user) do
opts = Enum.map(opts, fn opt -> Integer.parse(opt) |> elem(0) end)
poll_opts = Enum.map(opts, fn opt -> Enum.at(socket.assigns.current_poll.poll_opts, opt) end)
poll_opts =
Enum.map(opts, fn opt -> Enum.at(socket.assigns.current_interaction.poll_opts, opt) end)
case Claper.Polls.vote(
current_user.id,
socket.assigns.event.uuid,
poll_opts,
socket.assigns.current_poll.id
socket.assigns.current_interaction.id
) do
{:ok, poll} ->
{:noreply, socket |> get_current_vote(poll.id)}
@@ -571,13 +555,15 @@ defmodule ClaperWeb.EventLive.Show do
%{assigns: %{attendee_identifier: attendee_identifier, selected_poll_opt: opts}} = socket
) do
opts = Enum.map(opts, fn opt -> Integer.parse(opt) |> elem(0) end)
poll_opts = Enum.map(opts, fn opt -> Enum.at(socket.assigns.current_poll.poll_opts, opt) end)
poll_opts =
Enum.map(opts, fn opt -> Enum.at(socket.assigns.current_interaction.poll_opts, opt) end)
case Claper.Polls.vote(
attendee_identifier,
socket.assigns.event.uuid,
poll_opts,
socket.assigns.current_poll.id
socket.assigns.current_interaction.id
) do
{:ok, poll} ->
{:noreply, socket |> get_current_vote(poll.id)}
@@ -714,7 +700,8 @@ defmodule ClaperWeb.EventLive.Show do
end
defp load_current_interaction(socket, %Polls.Poll{} = interaction) do
socket |> assign(:current_interaction, interaction) |> get_current_vote(interaction.id)
poll = Polls.set_percentages(interaction)
socket |> assign(:current_interaction, poll) |> get_current_vote(poll.id)
end
defp load_current_interaction(socket, %Forms.Form{} = interaction) do

View File

@@ -71,7 +71,7 @@
event={@event}
selected_poll_opt={@selected_poll_opt}
current_poll_vote={@current_poll_vote}
show_results={@state.show_poll_results_enabled}
show_results={@current_interaction.show_results}
/>
</div>
</div>

View File

@@ -47,10 +47,10 @@
phx-click="remove_field"
phx-value-field={i.index}
phx-target={@myself}
class="rounded-md bg-red-500 hover:bg-red-600 transition block mt-4"
class="rounded-md bg-red-500 hover:bg-red-600 transition block mt-6"
>
<svg
class="text-white h-10 transform rotate-45"
class="text-white h-8 transform rotate-45"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"

View File

@@ -19,11 +19,6 @@
/>
</div>
<div class="flex gap-x-2 mb-5">
<%= checkbox(f, :multiple, class: "h-5 w-5") %>
<%= label(f, :multiple, gettext("Multiple answers"), class: "text-sm font-medium") %>
</div>
<%= inputs_for f, :poll_opts, fn i -> %>
<div class="flex space-x-3 mt-3 items-center justify-start">
<div class="flex-1">
@@ -84,6 +79,23 @@
</svg>
</button>
<p class="text-gray-700 text-xl font-semibold"><%= gettext("Options") %></p>
<div class="flex gap-x-2 mb-5 mt-3">
<%= checkbox(f, :show_results, class: "h-4 w-4") %>
<%= label(
f,
:show_results,
gettext("Attendees can see the results on their device"),
class: "text-sm font-medium"
) %>
</div>
<div class="flex gap-x-2 mb-5">
<%= checkbox(f, :multiple, class: "h-4 w-4") %>
<%= label(f, :multiple, gettext("Multiple answers"), class: "text-sm font-medium") %>
</div>
<div class="flex space-x-3">
<button
type="submit"

View File

@@ -195,7 +195,7 @@
>
<div
style={"width: #{percentage}%;"}
class={"bg-gradient-to-r from-primary-500 to-secondary-500 h-full absolute left-0 transition-all rounded-l-full #{if percentage == "100", do: 'rounded-r-full'}"}
class={"bg-gradient-to-r from-primary-500 to-secondary-500 h-full absolute left-0 transition-all rounded-l-full #{if percentage == "100", do: "rounded-r-full"}"}
>
</div>
<div class="flex space-x-3 z-10 text-left">

View File

@@ -14,6 +14,12 @@ defmodule ClaperWeb.UserSettingsLive.Show do
email_changeset = Accounts.User.email_changeset(%Accounts.User{}, %{})
password_changeset = Accounts.User.password_changeset(%Accounts.User{}, %{})
oidc_accounts =
Accounts.get_all_oidc_users_by_email(socket.assigns.current_user.email) |> List.wrap()
lti_accounts =
Lti13.Users.get_all_users_by_email(socket.assigns.current_user.email) |> List.wrap()
preferences_changeset =
Accounts.User.preferences_changeset(
socket.assigns.current_user,
@@ -24,7 +30,14 @@ defmodule ClaperWeb.UserSettingsLive.Show do
socket
|> assign(:email_changeset, email_changeset)
|> assign(:password_changeset, password_changeset)
|> assign(:preferences_changeset, preferences_changeset)}
|> assign(:preferences_changeset, preferences_changeset)
|> assign(:is_external_user, oidc_accounts != [] or lti_accounts != [])
|> assign(:oidc_accounts, oidc_accounts)
|> assign(:lti_accounts, lti_accounts)
|> assign(
:allow_unlink_external_provider,
Application.get_env(:claper, :allow_unlink_external_provider)
)}
end
@impl true
@@ -50,11 +63,59 @@ defmodule ClaperWeb.UserSettingsLive.Show do
)
end
defp apply_action(socket, :set_password, _params) do
socket
|> assign(:page_title, gettext("Set a new password"))
|> assign(
:page_description,
gettext("Set a new password for your account before unlinking it.")
)
end
defp apply_action(socket, :show, _params) do
socket
|> assign(:page_title, gettext("Settings"))
end
@impl true
def handle_event(
"unlink",
_params,
socket
)
when length(socket.assigns.oidc_accounts) + length(socket.assigns.lti_accounts) == 1 and
socket.assigns.current_user.is_randomized_password do
{:noreply, socket |> redirect(to: ~p"/users/settings/set/password")}
end
@impl true
def handle_event(
"unlink",
%{"issuer" => issuer} = _params,
socket
) do
Claper.Accounts.remove_oidc_user(socket.assigns.current_user, issuer)
{:noreply,
socket
|> put_flash(:info, gettext("The account has been unlinked."))
|> push_navigate(to: ~p"/users/settings")}
end
@impl true
def handle_event(
"unlink",
%{"registration_id" => registration_id} = _params,
socket
) do
Lti13.Users.remove_user(socket.assigns.current_user, registration_id)
{:noreply,
socket
|> put_flash(:info, gettext("The account has been unlinked."))
|> push_navigate(to: ~p"/users/settings")}
end
@impl true
def handle_event("save", %{"action" => "update_email"} = params, socket) do
%{"user" => user_params} = params
@@ -128,6 +189,27 @@ defmodule ClaperWeb.UserSettingsLive.Show do
end
end
@impl true
def handle_event("save", %{"action" => "set_password"} = params, socket) do
%{"user" => user_params} = params
user = socket.assigns.current_user
case Accounts.set_user_password(user, user_params) do
{:ok, _applied_user} ->
{:noreply,
socket
|> put_flash(
:info,
gettext("Your password has been set, you can now unlink your account.")
)
|> redirect(to: ~p"/users/settings")}
{:error, changeset} ->
{:noreply, assign(socket, :password_changeset, changeset)}
end
end
@impl true
def handle_event("delete_account", _params, %{assigns: %{current_user: user}} = socket) do
Accounts.delete(user)

View File

@@ -87,6 +87,49 @@
</.live_component>
<% end %>
<%= if @live_action in [:set_password] do %>
<.live_component
module={ClaperWeb.ModalComponent}
class="hidden"
id="modal-wrapper"
title={@page_title}
description={@page_description}
return_to={~p"/users/settings"}
>
<div>
<.form
:let={f}
for={@password_changeset}
phx-submit="save"
id="set_password"
class="mt-5 md:flex md:items-end gap-x-2"
>
<%= hidden_input(f, :action, name: "action", value: "set_password") %>
<ClaperWeb.Component.Input.password
form={f}
key={:password}
name={gettext("New password")}
required="true"
/>
<ClaperWeb.Component.Input.password
form={f}
key={:password_confirmation}
name={gettext("Confirm password")}
required="true"
/>
<%= submit(gettext("Save"),
phx_disable_with: "Saving...",
class:
"mt-2 w-full h-14 inline-flex transition-all items-center justify-center px-4 py-2 shadow-sm font-medium rounded-md text-white bg-black hover:bg-primary-500 md:mt-0 md:ml-3 md:w-auto md:text-sm"
) %>
</.form>
</div>
</.live_component>
<% end %>
<div class="shadow overflow-hidden sm:rounded-lg">
<div class="py-5">
<h3 class="text-lg leading-6 font-medium text-gray-900">
@@ -104,7 +147,7 @@
</dt>
<dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
<span class="flex-grow"><%= @current_user.email %></span>
<span class="ml-4 flex-shrink-0">
<span :if={!@is_external_user} class="ml-4 flex-shrink-0">
<.link
patch={~p"/users/settings/edit/email"}
class="rounded-md font-medium text-purple-600 hover:text-purple-500"
@@ -114,10 +157,10 @@
</span>
</dd>
<dt class="text-sm font-medium text-gray-500">
<dt :if={!@is_external_user} class="text-sm font-medium text-gray-500">
<%= gettext("Password") %>
</dt>
<dd class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
<dd :if={!@is_external_user} class="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
<span class="flex-grow">********</span>
<span class="ml-4 flex-shrink-0">
<.link
@@ -128,6 +171,67 @@
</.link>
</span>
</dd>
<dt :if={@is_external_user} class="text-sm font-medium text-gray-500">
<%= gettext("Accounts linked") %>
</dt>
<dd class="text-sm text-gray-900 sm:col-span-2">
<%= for account <- @oidc_accounts do %>
<div class="text-sm text-gray-900 bg-white rounded-md py-2 px-4 shadow-base flex gap-x-2 items-center justify-start mt-2 sm:mt-0 mb-2">
<img src="/images/icons/openid.png" class="w-5" />
<span class="flex-grow flex items-center gap-x-2">
<span><%= account.provider %></span>
<div
:if={account.organization}
class="text-gray-500 text-xs flex items-center gap-x-1"
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
fill="currentColor"
class="h-3"
>
<path
fill-rule="evenodd"
d="M1.75 2a.75.75 0 0 0 0 1.5H2v9h-.25a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 .75-.75v-1.5a.75.75 0 0 1 .75-.75h1.5a.75.75 0 0 1 .75.75v1.5c0 .414.336.75.75.75h.5a.75.75 0 0 0 .75-.75V3.5h.25a.75.75 0 0 0 0-1.5h-7.5ZM3.5 5.5A.5.5 0 0 1 4 5h.5a.5.5 0 0 1 .5.5V6a.5.5 0 0 1-.5.5H4a.5.5 0 0 1-.5-.5v-.5Zm.5 2a.5.5 0 0 0-.5.5v.5A.5.5 0 0 0 4 9h.5a.5.5 0 0 0 .5-.5V8a.5.5 0 0 0-.5-.5H4Zm2-2a.5.5 0 0 1 .5-.5H7a.5.5 0 0 1 .5.5V6a.5.5 0 0 1-.5.5h-.5A.5.5 0 0 1 6 6v-.5Zm.5 2A.5.5 0 0 0 6 8v.5a.5.5 0 0 0 .5.5H7a.5.5 0 0 0 .5-.5V8a.5.5 0 0 0-.5-.5h-.5ZM11.5 6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.75a.75.75 0 0 0 0-1.5H14v-5h.25a.75.75 0 0 0 0-1.5H11.5Zm.5 1.5h.5a.5.5 0 0 1 .5.5v.5a.5.5 0 0 1-.5.5H12a.5.5 0 0 1-.5-.5V8a.5.5 0 0 1 .5-.5Zm0 2.5a.5.5 0 0 0-.5.5v.5a.5.5 0 0 0 .5.5h.5a.5.5 0 0 0 .5-.5v-.5a.5.5 0 0 0-.5-.5H12Z"
clip-rule="evenodd"
/>
</svg>
<span><%= account.organization %></span>
</div>
</span>
<span :if={@allow_unlink_external_provider}>
<button
phx-click="unlink"
phx-value-issuer={account.issuer}
data-confirm={gettext("Are you sure you want to unlink this account?")}
class="font-medium text-red-600 hover:text-red-500"
>
<%= gettext("Unlink") %>
</button>
</span>
</div>
<% end %>
<%= for account <- @lti_accounts do %>
<div class="text-sm text-gray-900 bg-white rounded-md py-2 px-4 shadow-base flex gap-x-2 items-center justify-start mb-2">
<img src="/images/icons/lms.png" class="w-8" />
<span class="flex-grow">
LMS <span class="text-gray-500 text-xs">#<%= account.registration_id %></span>
</span>
<span :if={@allow_unlink_external_provider} class="ml-4 flex-shrink-0">
<button
phx-click="unlink"
phx-value-registration_id={account.registration_id}
data-confirm={gettext("Are you sure you want to unlink this account?")}
class="font-medium text-red-600 hover:text-red-500"
>
<%= gettext("Unlink") %>
</button>
</span>
</div>
<% end %>
</dd>
</div>
</dl>
</div>
@@ -148,6 +252,7 @@
<ClaperWeb.Component.Input.select
form={f}
fieldClass="!w-auto"
labelClass="text-sm font-medium text-gray-500"
array={[
{"Deutsch", "de"},
{"English", "en"},
@@ -163,7 +268,7 @@
</dl>
</div>
</div>
<div>
<div :if={!@is_external_user}>
<div class="py-5">
<h3 class="text-lg leading-6 font-medium text-gray-900">
<%= gettext("Danger zone") %>

View File

@@ -61,8 +61,7 @@ defmodule ClaperWeb.Router do
live("/users/settings", UserSettingsLive.Show, :show)
live("/users/settings/edit/password", UserSettingsLive.Show, :edit_password)
live("/users/settings/edit/email", UserSettingsLive.Show, :edit_email)
live("/users/settings/edit/avatar", UserSettingsLive.Show, :edit_avatar)
live("/users/settings/edit/fullname", UserSettingsLive.Show, :edit_full_name)
live("/users/settings/set/password", UserSettingsLive.Show, :set_password)
end
end
@@ -124,6 +123,9 @@ defmodule ClaperWeb.Router do
post("/users/reset_password", UserResetPasswordController, :create)
get("/users/reset_password/:token", UserResetPasswordController, :edit)
post("/users/reset_password/:token", UserResetPasswordController, :update)
get("/users/oidc", UserOidcAuth, :new)
get("/users/oidc/callback", UserOidcAuth, :callback)
end
scope "/", ClaperWeb do

View File

@@ -27,30 +27,32 @@
</div>
<div class="flex flex-row justify-center items-center space-x-3"></div>
<.form :let={f} for={@conn} action={~p"/users/log_in"} as={:user} class="mt-12 mb-4">
<.form :let={f} for={@conn} action={~p"/users/log_in"} as={:user} class="mt-12">
<%= if @error_message do %>
<ClaperWeb.Component.Alert.error message={@error_message} stick={true} />
<% end %>
<input type="hidden" name="remember" value="true" />
<ClaperWeb.Component.Input.email
form={f}
key={:email}
labelClass="text-white sr-only"
placeholder={gettext("Your email address")}
fieldClass="bg-gray-700 text-white"
name={gettext("Email")}
autofocus="true"
required="true"
/>
<ClaperWeb.Component.Input.password
form={f}
key={:password}
labelClass="text-white sr-only"
placeholder={gettext("Your password")}
fieldClass="bg-gray-700 text-white"
name={gettext("Password")}
required="true"
/>
<div class="grid grid-cols-1 sm:grid-cols-2 gap-2">
<ClaperWeb.Component.Input.email
form={f}
key={:email}
labelClass="text-white sr-only"
placeholder={gettext("Email address")}
fieldClass="bg-gray-700 text-white"
name={gettext("Email")}
autofocus="true"
required="true"
/>
<ClaperWeb.Component.Input.password
form={f}
key={:password}
labelClass="text-white sr-only"
placeholder={gettext("Password")}
fieldClass="bg-gray-700 text-white"
name={gettext("Password")}
required="true"
/>
</div>
<div class="pt-5">
<button
@@ -62,13 +64,24 @@
</div>
</.form>
<div class="mt-4 text-center flex gap-x-2 justify-center">
<div :if={@oidc_enabled}>
<%= link(
to: ~p"/users/oidc",
class:
"w-full flex justify-center items-center gap-x-2 py-2 px-4 rounded-md shadow-sm text-sm font-medium text-white border-2 border-secondary-500 hover:bg-secondary-500 hover:bg-opacity-40"
) do %>
<img width="24" src={@oidc_logo_url} />
<span><%= gettext("Login with %{provider}", provider: @oidc_provider_name) %></span>
<% end %>
</div>
<div class="mt-4 text-center justify-center">
<%= link(gettext("Forgot your password?"),
to: ~p"/users/reset_password",
class: "text-white text-sm text-center"
) %>
<%= if Application.get_env(:claper, :enable_account_creation) do %>
<%= link(gettext("Create account"),
<span class="text-white">•</span> <%= link(gettext("Create account"),
to: ~p"/users/register",
class: "text-white text-sm text-center"
) %>

View File

@@ -27,7 +27,7 @@ defmodule ClaperWeb.Component.Input do
autocomplete: @key,
value: @value,
class:
"#{@fieldClass} read-only:opacity-50 outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 focus:ring-2 block w-full text-lg border-gray-300 rounded-md py-4 px-3"
"#{@fieldClass} read-only:opacity-50 outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 focus:ring-2 block w-full text-lg border-gray-300 rounded-md py-2 px-3"
) %>
</div>
<%= if Keyword.has_key?(@form.errors, @key) do %>
@@ -60,7 +60,7 @@ defmodule ClaperWeb.Component.Input do
autocomplete: @key,
value: @value,
class:
"#{@fieldClass} read-only:opacity-50 outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 focus:ring-2 block w-full text-lg border-gray-300 rounded-md py-4 px-3"
"#{@fieldClass} read-only:opacity-50 outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 focus:ring-2 block w-full text-lg border-gray-300 rounded-md py-2 px-3"
) %>
</div>
<%= if Keyword.has_key?(@form.errors, @key) do %>
@@ -89,7 +89,7 @@ defmodule ClaperWeb.Component.Input do
placeholder: @placeholder,
autocomplete: @key,
class:
"#{@fieldClass} outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 block w-full text-lg border-gray-300 rounded-md py-4 px-3"
"#{@fieldClass} outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 block w-full text-lg border-gray-300 rounded-md py-2 px-3"
) %>
</div>
<%= if Keyword.has_key?(@form.errors, @key) do %>
@@ -121,11 +121,11 @@ defmodule ClaperWeb.Component.Input do
</span>
<span
aria-hidden="true"
class={"#{if @checked, do: 'bg-primary-500', else: 'bg-gray-200'} pointer-events-none absolute mx-auto h-4 w-9 rounded-full transition-colors duration-200 ease-in-out"}
class={"#{if @checked, do: "bg-primary-500", else: "bg-gray-200"} pointer-events-none absolute mx-auto h-4 w-9 rounded-full transition-colors duration-200 ease-in-out"}
>
</span>
<span
class={"#{if @checked, do: 'translate-x-5', else: 'translate-x-0'} pointer-events-none absolute left-0 inline-block h-5 w-5 transform rounded-full border border-gray-200 bg-white shadow ring-0 transition-transform duration-200 ease-in-out"}
class={"#{if @checked, do: "translate-x-5", else: "translate-x-0"} pointer-events-none absolute left-0 inline-block h-5 w-5 transform rounded-full border border-gray-200 bg-white shadow ring-0 transition-transform duration-200 ease-in-out"}
aria-hidden="true"
>
</span>
@@ -176,7 +176,7 @@ defmodule ClaperWeb.Component.Input do
<%= label(@form, @key, @name, class: "block text-sm font-medium text-gray-700") %>
<div class="mt-1 relative">
<img
class="icon absolute transition-all top-3 left-2 duration-100"
class="icon absolute transition-all top-2.5 left-2 duration-100 h-6"
src="/images/icons/hashtag.svg"
alt="code"
/>
@@ -187,7 +187,7 @@ defmodule ClaperWeb.Component.Input do
autofocus: @autofocus,
autocomplete: @key,
class:
"read-only:opacity-50 outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 block w-full text-lg border-gray-300 rounded-md py-4 pr-3 pl-12 uppercase"
"read-only:opacity-50 outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 block w-full text-lg border-gray-300 rounded-md py-2 pr-3 pl-9 uppercase"
) %>
</div>
<%= if Keyword.has_key?(@form.errors, @key) do %>
@@ -216,7 +216,7 @@ defmodule ClaperWeb.Component.Input do
placeholder: @placeholder,
autocomplete: false,
class:
"outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 block w-full text-lg border-gray-300 rounded-md py-4 px-3 read-only:opacity-50"
"outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 block w-full text-lg border-gray-300 rounded-md py-2 px-3 read-only:opacity-50"
) %>
</div>
@@ -251,7 +251,7 @@ defmodule ClaperWeb.Component.Input do
autocomplete: @key,
value: @value,
class:
"#{@fieldClass} read-only:opacity-50 shadow-base block w-full text-lg focus:ring-primary-500 focus:ring-2 outline-none rounded-md py-4 px-3",
"#{@fieldClass} read-only:opacity-50 shadow-base block w-full text-lg focus:ring-primary-500 focus:ring-2 outline-none rounded-md py-2 px-3",
"x-model": "input",
"x-ref": "input"
) %>
@@ -282,7 +282,7 @@ defmodule ClaperWeb.Component.Input do
autofocus: @autofocus,
placeholder: @placeholder,
class:
"#{@fieldClass} shadow-base block w-full text-lg focus:ring-primary-500 focus:ring-2 outline-none rounded-md py-4 px-3",
"#{@fieldClass} shadow-base block w-full text-lg focus:ring-primary-500 focus:ring-2 outline-none rounded-md py-2 px-3",
"x-model": "input",
"x-ref": "input"
) %>

View File

@@ -16,7 +16,6 @@ defmodule Lti13.Tool.Services.AGS.LineItem do
def parse_resource_id(%__MODULE__{} = line_item) do
case line_item.resourceId do
resource_id -> resource_id
_ -> nil
end
end

View File

@@ -14,6 +14,17 @@ defmodule Lti13.Users do
Repo.get_by(User, sub: sub, registration_id: registration_id)
end
def get_all_users_by_email(email) do
Repo.all(from u in User, where: u.email == ^email)
end
def remove_user(claper_user, registration_id) do
Repo.delete_all(
from u in User,
where: u.registration_id == ^registration_id and u.user_id == ^claper_user.id
)
end
def get_or_create_user(
%{
sub: sub,

View File

@@ -113,7 +113,8 @@ defmodule Claper.MixProject do
{:joken, "~> 2.6.1"},
{:jose, "~> 1.11"},
{:req, "~> 0.5.0"},
{:uuid, "~> 1.1"}
{:uuid, "~> 1.1"},
{:oidcc, "~> 3.2"}
]
end

View File

@@ -9,7 +9,7 @@
"cowboy": {:hex, :cowboy, "2.10.0", "ff9ffeff91dae4ae270dd975642997afe2a1179d94b1887863e43f681a203e26", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b"},
"cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
"cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"},
"credo": {:hex, :credo, "1.7.5", "643213503b1c766ec0496d828c90c424471ea54da77c8a168c725686377b9545", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "f799e9b5cd1891577d8c773d245668aa74a2fcd15eb277f51a0131690ebfb3fd"},
"credo": {:hex, :credo, "1.7.7", "771445037228f763f9b2afd612b6aa2fd8e28432a95dbbc60d8e03ce71ba4446", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8bc87496c9aaacdc3f90f01b7b0582467b69b4bd2441fe8aae3109d843cc2f2e"},
"csv": {:hex, :csv, "3.0.5", "3c1455127e92de8845806db89554ad7d45e0212974be41dd9c38a5c881861713", [:mix], [], "hexpm", "cbbe5455c93df5f3f2943e995e28b7a8808361ba34cf3e44267d77a01eaf1609"},
"dart_sass": {:hex, :dart_sass, "0.7.0", "7979e056cb74fd6843e1c72db763cffc7726a9192a657735b7d24c0d9c26a1ce", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "4a8e70bca41aa00846398abdf5ad8a64d7907a0f7bf40145cd2e40d5971629f2"},
"db_connection": {:hex, :db_connection, "2.6.0", "77d835c472b5b67fc4f29556dee74bf511bbafecdcaf98c27d27fa5918152086", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3"},
@@ -35,7 +35,7 @@
"html_entities": {:hex, :html_entities, "0.5.2", "9e47e70598da7de2a9ff6af8758399251db6dbb7eebe2b013f2bbd2515895c3c", [:mix], [], "hexpm", "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc"},
"httpoison": {:hex, :httpoison, "2.2.1", "87b7ed6d95db0389f7df02779644171d7319d319178f6680438167d7b69b1f3d", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "51364e6d2f429d80e14fe4b5f8e39719cacd03eb3f9a9286e61e216feac2d2df"},
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
"jason": {:hex, :jason, "1.4.3", "d3f984eeb96fe53b85d20e0b049f03e57d075b5acda3ac8d465c969a2536c17b", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "9a90e868927f7c777689baa16d86f4d0e086d968db5c05d917ccff6d443e58a3"},
"joken": {:hex, :joken, "2.6.1", "2ca3d8d7f83bf7196296a3d9b2ecda421a404634bfc618159981a960020480a1", [:mix], [{:jose, "~> 1.11.9", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "ab26122c400b3d254ce7d86ed066d6afad27e70416df947cdcb01e13a7382e68"},
"jose": {:hex, :jose, "1.11.10", "a903f5227417bd2a08c8a00a0cbcc458118be84480955e8d251297a425723f83", [:mix, :rebar3], [], "hexpm", "0d6cd36ff8ba174db29148fc112b5842186b68a90ce9fc2b3ec3afe76593e614"},
"libcluster": {:hex, :libcluster, "3.3.2", "84c6ebfdc72a03805955abfb5ff573f71921a3e299279cc3445445d5af619ad1", [:mix], [{:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8b691ce8185670fc8f3fc0b7ed59eff66c6889df890d13411f8f1a0e6871d8a5"},
@@ -52,6 +52,7 @@
"nimble_options": {:hex, :nimble_options, "1.1.0", "3b31a57ede9cb1502071fade751ab0c7b8dbe75a9a4c2b5bbb0943a690b63172", [:mix], [], "hexpm", "8bbbb3941af3ca9acc7835f5655ea062111c9c27bcac53e004460dfd19008a99"},
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"},
"nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"},
"oidcc": {:hex, :oidcc, "3.2.0", "f80a4826a946ce07dc8cbd8212392b4ff436ae3c4b4cd6680fa0d84d0ff2fec1", [:mix, :rebar3], [{:jose, "~> 1.11", [hex: :jose, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.2", [hex: :telemetry, repo: "hexpm", optional: false]}, {:telemetry_registry, "~> 0.3.1", [hex: :telemetry_registry, repo: "hexpm", optional: false]}], "hexpm", "38fd9092ab5d5d10c71b8011b019316411afe466bef07ba57f57ec3f919278c3"},
"parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"},
"phoenix": {:hex, :phoenix, "1.7.11", "1d88fc6b05ab0c735b250932c4e6e33bfa1c186f76dcf623d8dd52f07d6379c7", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "b1ec57f2e40316b306708fe59b92a16b9f6f4bf50ccfa41aa8c7feb79e0ec02a"},
"phoenix_ecto": {:hex, :phoenix_ecto, "4.5.1", "6fdbc334ea53620e71655664df6f33f670747b3a7a6c4041cdda3e2c32df6257", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.1", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "ebe43aa580db129e54408e719fb9659b7f9e0d52b965c5be26cdca416ecead28"},
@@ -78,6 +79,7 @@
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
"telemetry_metrics": {:hex, :telemetry_metrics, "0.6.2", "2caabe9344ec17eafe5403304771c3539f3b6e2f7fb6a6f602558c825d0d0bfb", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9b43db0dc33863930b9ef9d27137e78974756f5f198cae18409970ed6fa5b561"},
"telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"},
"telemetry_registry": {:hex, :telemetry_registry, "0.3.2", "701576890320be6428189bff963e865e8f23e0ff3615eade8f78662be0fc003c", [:mix, :rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e7ed191eb1d115a3034af8e1e35e4e63d5348851d556646d46ca3d1b4e16bab9"},
"timex": {:hex, :timex, "3.7.11", "bb95cb4eb1d06e27346325de506bcc6c30f9c6dea40d1ebe390b262fad1862d1", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.20", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.1", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "8b9024f7efbabaf9bd7aa04f65cf8dcd7c9818ca5737677c7b76acbc6a94d1aa"},
"tzdata": {:hex, :tzdata, "1.1.1", "20c8043476dfda8504952d00adac41c6eda23912278add38edc140ae0c5bcc46", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a69cec8352eafcd2e198dea28a34113b60fdc6cb57eb5ad65c10292a6ba89787"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"},

View File

@@ -8,18 +8,18 @@ msgstr ""
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: lib/claper_web/live/event_live/manage.html.heex:1293
#: lib/claper_web/live/user_settings_live/show.ex:55
#: lib/claper_web/live/event_live/manage.html.heex:1405
#: lib/claper_web/live/user_settings_live/show.ex:77
#, elixir-autogen, elixir-format
msgid "Settings"
msgstr "Einstellungen"
#: lib/claper_web/live/event_live/manage.ex:746
#: lib/claper_web/live/event_live/manage.ex:727
#: lib/claper_web/live/form_live/form_component.html.heex:37
#: lib/claper_web/live/user_settings_live/show.html.heex:34
#: lib/claper_web/templates/user_registration/new.html.heex:29
#: lib/claper_web/templates/user_reset_password/new.html.heex:28
#: lib/claper_web/templates/user_session/new.html.heex:41
#: lib/claper_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format
msgid "Email"
msgstr "E-Mail"
@@ -36,8 +36,8 @@ msgstr "Werden Sie Teil der Claper Erfahrung"
msgid "Oops, check that all fields are filled in correctly."
msgstr "Überprüfen Sie, ob alle Felder korrekt ausgefüllt sind."
#: lib/claper_web/live/user_settings_live/show.html.heex:112
#: lib/claper_web/live/user_settings_live/show.html.heex:127
#: lib/claper_web/live/user_settings_live/show.html.heex:155
#: lib/claper_web/live/user_settings_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "Change"
msgstr "Ändern"
@@ -47,7 +47,8 @@ msgstr "Ändern"
msgid "Code"
msgstr "Code"
#: lib/claper_web/live/user_settings_live/show.html.heex:103
#: lib/claper_web/live/user_settings_live/show.html.heex:146
#: lib/claper_web/templates/user_session/new.html.heex:40
#, elixir-autogen, elixir-format
msgid "Email address"
msgstr "E-Mail Adresse"
@@ -57,7 +58,7 @@ msgstr "E-Mail Adresse"
msgid "Logout"
msgstr "Ausloggen"
#: lib/claper_web/live/user_settings_live/show.html.heex:93
#: lib/claper_web/live/user_settings_live/show.html.heex:136
#, elixir-autogen, elixir-format
msgid "Personal informations"
msgstr "Persönliche Informationen"
@@ -99,7 +100,7 @@ msgstr "Seien Sie der Erste, der reagiert!"
msgid "Join"
msgstr "Teilnehmen"
#: lib/claper_web/live/event_live/index.ex:156
#: lib/claper_web/live/event_live/index.ex:180
#: lib/claper_web/live/event_live/join.html.heex:31
#: lib/claper_web/live/event_live/join.html.heex:54
#, elixir-autogen, elixir-format
@@ -171,60 +172,61 @@ msgstr "Zurück zur Startseite"
msgid "Created successfully"
msgstr "Erfolgreich erstellt"
#: lib/claper_web/live/event_live/event_card_component.ex:186
#: lib/claper_web/live/event_live/event_card_component.ex:207
#: lib/claper_web/live/event_live/event_card_component.ex:224
#: lib/claper_web/live/event_live/event_card_component.ex:304
#: lib/claper_web/live/event_live/form_component.ex:97
#: lib/claper_web/live/event_live/index.ex:139
#: lib/claper_web/live/event_live/index.ex:161
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr "Ändern"
#: lib/claper_web/live/embed_live/form_component.html.heex:51
#: lib/claper_web/live/embed_live/form_component.html.heex:69
#: lib/claper_web/live/event_live/event_form_component.html.heex:25
#: lib/claper_web/live/event_live/event_form_component.html.heex:32
#: lib/claper_web/live/event_live/index.ex:146
#: lib/claper_web/live/event_live/index.ex:170
#: lib/claper_web/live/event_live/index.html.heex:64
#: lib/claper_web/live/form_live/form_component.html.heex:98
#: lib/claper_web/live/poll_live/form_component.html.heex:94
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#, elixir-autogen, elixir-format
msgid "Create"
msgstr "Erstellen"
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#: lib/claper_web/live/event_live/event_card_component.ex:249
#: lib/claper_web/live/embed_live/form_component.html.heex:74
#: lib/claper_web/live/event_live/event_card_component.ex:400
#: lib/claper_web/live/event_live/event_form_component.html.heex:37
#: lib/claper_web/live/event_live/manage.html.heex:1241
#: lib/claper_web/live/event_live/manage.html.heex:1353
#: lib/claper_web/live/event_live/manageable_post_component.ex:92
#: lib/claper_web/live/event_live/post_component.ex:70
#: lib/claper_web/live/event_live/post_component.ex:142
#: lib/claper_web/live/form_live/form_component.html.heex:103
#: lib/claper_web/live/poll_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:111
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr "Löschen"
#: lib/claper_web/live/embed_live/form_component.html.heex:52
#: lib/claper_web/live/embed_live/form_component.html.heex:70
#: lib/claper_web/live/event_live/event_form_component.html.heex:24
#: lib/claper_web/live/event_live/event_form_component.html.heex:31
#: lib/claper_web/live/form_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:95
#: lib/claper_web/live/poll_live/form_component.html.heex:107
#: lib/claper_web/live/user_settings_live/show.html.heex:38
#: lib/claper_web/live/user_settings_live/show.html.heex:80
#: lib/claper_web/live/user_settings_live/show.html.heex:123
#, elixir-autogen, elixir-format
msgid "Save"
msgstr "Speichern"
#: lib/claper_web/live/user_settings_live/show.ex:76
#: lib/claper_web/live/user_settings_live/show.ex:137
#, elixir-autogen, elixir-format
msgid "A link to confirm your email change has been sent to the new address."
msgstr "Ein Link zur Bestätigung Ihrer E-Mail-Änderung wurde an die neue Adresse gesendet."
#: lib/claper_web/live/user_settings_live/show.ex:40
#: lib/claper_web/live/user_settings_live/show.ex:53
#, elixir-autogen, elixir-format
msgid "Change the email address you want associated with your account."
msgstr "Ändern Sie die E-Mail-Adresse, die Sie mit Ihrem Konto verknüpfen möchten."
#: lib/claper_web/live/user_settings_live/show.ex:37
#: lib/claper_web/live/user_settings_live/show.ex:50
#, elixir-autogen, elixir-format
msgid "Update your email"
msgstr "Ihre E-Mail ändern"
@@ -306,12 +308,12 @@ msgstr "Datei hochladen"
msgid "or drag and drop"
msgstr "oder drag and drop"
#: lib/claper_web/live/event_live/event_form_component.ex:308
#: lib/claper_web/live/event_live/event_form_component.ex:313
#, elixir-autogen, elixir-format
msgid "You have selected an incorrect file type"
msgstr "Sie haben einen falschen Dateityp ausgewählt"
#: lib/claper_web/live/event_live/event_form_component.ex:307
#: lib/claper_web/live/event_live/event_form_component.ex:312
#, elixir-autogen, elixir-format
msgid "Your file is too large"
msgstr "Ihre Datei ist zu groß"
@@ -326,12 +328,12 @@ msgstr "Datei ändern"
msgid "Presentation replaced"
msgstr "Präsentation ersetzt"
#: lib/claper_web/live/event_live/manage.html.heex:280
#: lib/claper_web/live/event_live/manage.html.heex:274
#, elixir-autogen, elixir-format
msgid "Edit poll"
msgstr "Umfrage bearbeiten"
#: lib/claper_web/live/event_live/manage.html.heex:279
#: lib/claper_web/live/event_live/manage.html.heex:273
#, elixir-autogen, elixir-format
msgid "New poll"
msgstr "Neue Umfrage"
@@ -341,7 +343,7 @@ msgstr "Neue Umfrage"
msgid "Title of your poll"
msgstr "Titel Ihrer Umfrage"
#: lib/claper_web/live/event_live/event_form_component.ex:309
#: lib/claper_web/live/event_live/event_form_component.ex:314
#, elixir-autogen, elixir-format
msgid "Upload failed"
msgstr "Hochladen fehlgeschlagen"
@@ -352,12 +354,12 @@ msgid "Add poll to know opinion of your public."
msgstr "Fügen Sie eine Umfrage hinzu, um die Meinung Ihres Publikums zu erfahren."
#: lib/claper_web/live/event_live/manage.html.heex:165
#: lib/claper_web/live/event_live/manage.html.heex:730
#: lib/claper_web/live/event_live/manage.html.heex:779
#, elixir-autogen, elixir-format
msgid "Poll"
msgstr "Umfrage"
#: lib/claper_web/live/poll_live/form_component.html.heex:35
#: lib/claper_web/live/poll_live/form_component.html.heex:30
#, elixir-format, ex-autogen, elixir-autogen
msgid "Choice %{count}"
msgid_plural "Choice %{count}"
@@ -391,22 +393,22 @@ msgstr "Benutzer Email-Adresse"
msgid "Changing your file will remove all interaction elements like polls associated."
msgstr "Wenn Sie Ihre Datei ändern, werden alle damit verbundenen Interaktionselemente wie Umfragen entfernt."
#: lib/claper_web/live/event_live/manage.html.heex:1058
#: lib/claper_web/live/event_live/manage.html.heex:1170
#, elixir-autogen, elixir-format
msgid "Messages from attendees will appear here."
msgstr "Nachrichten von Teilnehmern werden hier erscheinen."
#: lib/claper_web/live/event_live/event_card_component.ex:218
#: lib/claper_web/live/event_live/event_card_component.ex:318
#, elixir-autogen, elixir-format
msgid "Processing your file..."
msgstr "Verarbeitung der Datei..."
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#: lib/claper_web/live/poll_live/form_component.html.heex:118
#, elixir-autogen, elixir-format
msgid "This will delete all responses associated and the poll itself, are you sure?"
msgstr "Dadurch werden alle zugehörigen Antworten und die Umfrage selbst gelöscht, sind Sie sicher?"
#: lib/claper_web/live/event_live/manage.html.heex:450
#: lib/claper_web/live/event_live/manage.html.heex:444
#, elixir-autogen, elixir-format
msgid "Press <strong>F</strong> in the presentation window to enable fullscreen"
msgstr "Drücken Sie <strong>F</strong> im Präsentationsfenster, um den Vollbildmodus zu aktivieren"
@@ -416,7 +418,7 @@ msgstr "Drücken Sie <strong>F</strong> im Präsentationsfenster, um den Vollbil
msgid "Ask, comment..."
msgstr "Fragen, kommentieren..."
#: lib/claper_web/live/event_live/manage.html.heex:1004
#: lib/claper_web/live/event_live/manage.html.heex:1116
#: lib/claper_web/live/stat_live/index.html.heex:71
#: lib/claper_web/live/stat_live/index.html.heex:271
#, elixir-autogen, elixir-format
@@ -455,7 +457,7 @@ msgstr "Wenn Sie Probleme mit der obigen Schaltfläche haben, kopieren Sie die f
msgid "You can change your email by visiting the URL below"
msgstr "Sie können Ihre E-Mail-Adresse ändern, indem Sie die folgende URL aufrufen"
#: lib/claper_web/live/event_live/manage.html.heex:703
#: lib/claper_web/live/event_live/manage.html.heex:701
#, elixir-autogen, elixir-format
msgid "Add interaction"
msgstr "Interaktion hinzufügen"
@@ -573,7 +575,7 @@ msgstr "Interaktionsgeschichte"
msgid "No messages has been sent"
msgstr "Es wurden keine Nachrichten gesendet"
#: lib/claper_web/live/event_live/event_card_component.ex:255
#: lib/claper_web/live/event_live/event_card_component.ex:382
#, elixir-autogen, elixir-format
msgid "This will delete all data related to your event, this cannot be undone. Confirm ?"
msgstr "Dadurch werden alle Daten im Zusammenhang mit Ihrer Veranstaltung gelöscht. Dies kann nicht rückgängig gemacht werden. Bestätigen?"
@@ -595,7 +597,7 @@ msgstr "Max. Zuschauer"
msgid "Engagement rate"
msgstr "Engagementquote"
#: lib/claper_web/live/event_live/event_card_component.ex:197
#: lib/claper_web/live/event_live/event_card_component.ex:256
#, elixir-autogen, elixir-format
msgid "Error when processing the file"
msgstr "Fehler beim Verarbeiten der Datei"
@@ -608,7 +610,7 @@ msgstr "Über"
#: lib/claper_web/live/event_live/join.html.heex:38
#: lib/claper_web/live/event_live/join.html.heex:61
#: lib/claper_web/templates/user_session/new.html.heex:60
#: lib/claper_web/templates/user_session/new.html.heex:62
#, elixir-autogen, elixir-format
msgid "Login"
msgstr "Anmeldung"
@@ -624,30 +626,21 @@ msgid "Or use the code:"
msgstr "Oder verwenden Sie den Code:"
#: lib/claper_web/templates/user_registration/new.html.heex:46
#: lib/claper_web/templates/user_session/new.html.heex:71
#: lib/claper_web/templates/user_session/new.html.heex:84
#, elixir-autogen, elixir-format
msgid "Create account"
msgstr "Benutzerkonto erstellen"
#: lib/claper_web/live/user_settings_live/show.html.heex:118
#: lib/claper_web/live/user_settings_live/show.html.heex:161
#: lib/claper_web/templates/user_registration/new.html.heex:37
#: lib/claper_web/templates/user_reset_password/edit.html.heex:34
#: lib/claper_web/templates/user_session/new.html.heex:51
#: lib/claper_web/templates/user_session/new.html.heex:50
#: lib/claper_web/templates/user_session/new.html.heex:52
#, elixir-autogen, elixir-format
msgid "Password"
msgstr "Passwort"
#: lib/claper_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format
msgid "Your email address"
msgstr "Ihre E-Mail-Adresse"
#: lib/claper_web/templates/user_session/new.html.heex:49
#, elixir-autogen, elixir-format
msgid "Your password"
msgstr "Ihr Passwort"
#: lib/claper_web/live/user_settings_live/show.ex:49
#: lib/claper_web/live/user_settings_live/show.ex:62
#, elixir-autogen, elixir-format
msgid "Change the password used to access your account."
msgstr "Ändern Sie das Passwort, mit dem Sie auf Ihr Konto zugreifen."
@@ -658,16 +651,17 @@ msgid "Current password"
msgstr "Aktuelles Passwort"
#: lib/claper_web/live/user_settings_live/show.html.heex:76
#: lib/claper_web/live/user_settings_live/show.html.heex:112
#, elixir-autogen, elixir-format
msgid "New password"
msgstr "Neues Kennwort"
#: lib/claper_web/live/user_settings_live/show.ex:46
#: lib/claper_web/live/user_settings_live/show.ex:59
#, elixir-autogen, elixir-format
msgid "Update your password"
msgstr "Aktualisieren Sie Ihr Passwort"
#: lib/claper_web/live/user_settings_live/show.ex:98
#: lib/claper_web/live/user_settings_live/show.ex:159
#, elixir-autogen, elixir-format
msgid "Your password has been updated."
msgstr "Dein Passwort wurde aktualisiert."
@@ -679,7 +673,7 @@ msgid_plural "Field %{count}"
msgstr[0] "Feld %{count}"
msgstr[1] "Feld %{count}"
#: lib/claper_web/live/event_live/manage.html.heex:207
#: lib/claper_web/live/event_live/manage.html.heex:201
#, elixir-autogen, elixir-format
msgid "Add form to collect data from your public."
msgstr "Fügen Sie ein Formular hinzu, um Daten von Ihrem Publikum zu sammeln."
@@ -689,35 +683,35 @@ msgstr "Fügen Sie ein Formular hinzu, um Daten von Ihrem Publikum zu sammeln."
msgid "Current form"
msgstr "Aktuelles Formular"
#: lib/claper_web/live/event_live/manage.html.heex:301
#: lib/claper_web/live/event_live/manage.html.heex:295
#, elixir-autogen, elixir-format
msgid "Edit form"
msgstr "Formular bearbeiten"
#: lib/claper_web/live/event_live/manage.html.heex:204
#: lib/claper_web/live/event_live/manage.html.heex:774
#: lib/claper_web/live/event_live/manage.html.heex:1253
#: lib/claper_web/live/event_live/manage.html.heex:198
#: lib/claper_web/live/event_live/manage.html.heex:823
#: lib/claper_web/live/event_live/manage.html.heex:1365
#: lib/claper_web/live/stat_live/index.html.heex:217
#, elixir-autogen, elixir-format
msgid "Form"
msgstr "Formular"
#: lib/claper_web/live/event_live/manage.html.heex:1028
#: lib/claper_web/live/event_live/manage.html.heex:1140
#, elixir-autogen, elixir-format
msgid "Form submissions"
msgstr "Abgeschickte Formulare"
#: lib/claper_web/live/event_live/manage.html.heex:1226
#: lib/claper_web/live/event_live/manage.html.heex:1338
#, elixir-autogen, elixir-format
msgid "Form submissions from attendees will appear here."
msgstr "Formulareinsendungen der Teilnehmer werden hier angezeigt."
#: lib/claper_web/live/event_live/manage.ex:745
#: lib/claper_web/live/event_live/manage.ex:726
#, elixir-autogen, elixir-format
msgid "Name"
msgstr "Name"
#: lib/claper_web/live/event_live/manage.html.heex:300
#: lib/claper_web/live/event_live/manage.html.heex:294
#, elixir-autogen, elixir-format
msgid "New form"
msgstr "Neues Formular"
@@ -742,7 +736,7 @@ msgstr "Abschicken"
msgid "Text"
msgstr "Text"
#: lib/claper_web/live/event_live/manage.html.heex:1246
#: lib/claper_web/live/event_live/manage.html.heex:1358
#, elixir-autogen, elixir-format
msgid "This cannot be undone, confirm ?"
msgstr "Dies kann nicht rückgängig gemacht werden. Bestätigen?"
@@ -777,12 +771,12 @@ msgstr "Wählen Sie eine Option aus"
msgid "Select one or multiple options"
msgstr "Wählen Sie eine oder mehrere Optionen aus"
#: lib/claper_web/live/poll_live/form_component.html.heex:24
#: lib/claper_web/live/poll_live/form_component.html.heex:96
#, elixir-autogen, elixir-format
msgid "Multiple answers"
msgstr "Mehrere Antworten"
#: lib/claper_web/live/event_live/manage.html.heex:269
#: lib/claper_web/live/event_live/manage.html.heex:263
#, elixir-autogen, elixir-format
msgid "Import all interactions from another presentation"
msgstr "Importieren Sie alle Interaktionen aus einer anderen Präsentation"
@@ -797,7 +791,7 @@ msgstr "Der Import der Interaktionen ist fehlgeschlagen"
msgid "Interactions imported successfully"
msgstr "Interaktionen erfolgreich importiert"
#: lib/claper_web/live/event_live/manage.html.heex:341
#: lib/claper_web/live/event_live/manage.html.heex:335
#, elixir-autogen, elixir-format
msgid "Select presentation"
msgstr "Präsentation auswählen"
@@ -871,7 +865,7 @@ msgstr "deaktiviert"
msgid "Account creation is disabled"
msgstr "Kontoerstellung ist deaktiviert"
#: lib/claper_web/live/event_live/manage.html.heex:238
#: lib/claper_web/live/event_live/manage.html.heex:232
#, elixir-autogen, elixir-format
msgid "Add a Youtube video or any web content."
msgstr "Fügen Sie ein YouTube-Video oder einen beliebigen Webinhalt hinzu."
@@ -881,7 +875,7 @@ msgstr "Fügen Sie ein YouTube-Video oder einen beliebigen Webinhalt hinzu."
msgid "Confirm new password"
msgstr "Neues Passwort bestätigen"
#: lib/claper_web/templates/user_session/new.html.heex:66
#: lib/claper_web/templates/user_session/new.html.heex:79
#, elixir-autogen, elixir-format
msgid "Forgot your password?"
msgstr "Passwort vergessen?"
@@ -917,22 +911,17 @@ msgstr "Aktualisieren Sie Ihr Passwort"
msgid "Send link to reset password"
msgstr "Link zum Zurücksetzen des Passworts senden"
#: lib/claper_web/live/embed_live/form_component.html.heex:38
#, elixir-autogen, elixir-format
msgid "Attendee can view the web content on their device"
msgstr "Der Teilnehmer kann die Webinhalte auf seinem Gerät anzeigen"
#: lib/claper_web/live/event_live/embed_component.ex:59
#, elixir-autogen, elixir-format, fuzzy
msgid "Current web content"
msgstr "Aktuelle Einbettung"
#: lib/claper_web/live/event_live/manage.html.heex:322
#: lib/claper_web/live/event_live/manage.html.heex:316
#, elixir-autogen, elixir-format
msgid "Edit web content"
msgstr "Webinhalt bearbeiten"
#: lib/claper_web/live/event_live/manage.html.heex:321
#: lib/claper_web/live/event_live/manage.html.heex:315
#, elixir-autogen, elixir-format
msgid "New web content"
msgstr "Neuer Webinhalt"
@@ -942,12 +931,7 @@ msgstr "Neuer Webinhalt"
msgid "See current web content"
msgstr "Aktuellen Webinhalt anzeigen"
#: lib/claper_web/live/embed_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "The iframe component"
msgstr "Die iframe-Komponente"
#: lib/claper_web/live/embed_live/form_component.html.heex:62
#: lib/claper_web/live/embed_live/form_component.html.heex:80
#, elixir-autogen, elixir-format, fuzzy
msgid "This will delete the web content, are you sure?"
msgstr "Dies wird den Webinhalt löschen, sind Sie sicher?"
@@ -957,18 +941,13 @@ msgstr "Dies wird den Webinhalt löschen, sind Sie sicher?"
msgid "Title"
msgstr "Titel"
#: lib/claper_web/live/event_live/manage.html.heex:236
#: lib/claper_web/live/event_live/manage.html.heex:817
#: lib/claper_web/live/event_live/manage.html.heex:230
#: lib/claper_web/live/event_live/manage.html.heex:867
#: lib/claper_web/live/stat_live/index.html.heex:259
#, elixir-autogen, elixir-format
msgid "Web content"
msgstr "Webinhalt"
#: lib/claper/embeds/embed.ex:50
#, elixir-autogen, elixir-format, fuzzy
msgid "Invalid embed format (should start with <iframe> and end with </iframe>)"
msgstr "Ungültiges Einbettungsformat (sollte mit <iframe> beginnen und mit </iframe> enden)"
#: lib/claper_web/live/event_live/manageable_post_component.ex:38
#: lib/claper_web/live/event_live/manageable_post_component.ex:67
#, elixir-autogen, elixir-format
@@ -981,12 +960,12 @@ msgstr "Anpinnen"
msgid "Pinned"
msgstr "Angepinnt"
#: lib/claper_web/live/event_live/manage.html.heex:1020
#: lib/claper_web/live/event_live/manage.html.heex:1132
#, elixir-autogen, elixir-format, fuzzy
msgid "Pinned messages"
msgstr "Angepinnte Nachrichten"
#: lib/claper_web/live/event_live/manage.html.heex:1180
#: lib/claper_web/live/event_live/manage.html.heex:1292
#, elixir-autogen, elixir-format
msgid "Pinned messages will appear here."
msgstr "Angepinnte Beiträge werden hier angezeigt."
@@ -1037,7 +1016,7 @@ msgstr "Gespeichert"
msgid "Access"
msgstr "Zugriff"
#: lib/claper_web/live/user_settings_live/show.html.heex:180
#: lib/claper_web/live/user_settings_live/show.html.heex:285
#, elixir-autogen, elixir-format
msgid "All your events and files will be permanently deleted, are you sure?"
msgstr "Alle Ihre Veranstaltungen und Dateien werden dauerhaft gelöscht, sind Sie sicher?"
@@ -1052,22 +1031,22 @@ msgstr "Sind Sie sicher, dass Sie diese Veranstaltung beenden möchten? Diese Ak
msgid "Attendees room"
msgstr "Teilnehmerraum"
#: lib/claper_web/live/user_settings_live/show.html.heex:172
#: lib/claper_web/live/user_settings_live/show.html.heex:277
#, elixir-autogen, elixir-format
msgid "Be careful, these actions are irreversible"
msgstr "Seien Sie vorsichtig, diese Aktionen sind unwiderruflich"
#: lib/claper_web/live/user_settings_live/show.html.heex:169
#: lib/claper_web/live/user_settings_live/show.html.heex:274
#, elixir-autogen, elixir-format
msgid "Danger zone"
msgstr "Gefahrenzone"
#: lib/claper_web/live/user_settings_live/show.html.heex:185
#: lib/claper_web/live/user_settings_live/show.html.heex:290
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete account"
msgstr "Konto löschen"
#: lib/claper_web/live/event_live/manage.html.heex:514
#: lib/claper_web/live/event_live/manage.html.heex:508
#, elixir-autogen, elixir-format
msgid "Open presentation"
msgstr "Präsentation öffnen"
@@ -1077,12 +1056,12 @@ msgstr "Präsentation öffnen"
msgid "Terminate"
msgstr "Beenden"
#: lib/claper_web/live/event_live/event_card_component.ex:244
#: lib/claper_web/live/event_live/event_card_component.ex:344
#, elixir-autogen, elixir-format
msgid "View report"
msgstr "Bericht ansehen"
#: lib/claper_web/live/user_settings_live/show.ex:137
#: lib/claper_web/live/user_settings_live/show.ex:219
#, elixir-autogen, elixir-format
msgid "Your account has been deleted."
msgstr "Ihr Konto wurde gelöscht."
@@ -1097,19 +1076,19 @@ msgstr "Zugriff"
msgid "Animations in PPT/PPTX files are not supported, which is why we recommend exporting your presentation to PDF to ensure it displays correctly."
msgstr "Animationen in PPT/PPTX-Dateien werden nicht unterstützt, weshalb wir empfehlen, Ihre Präsentation in PDF zu exportieren, um eine korrekte Anzeige zu gewährleisten."
#: lib/claper_web/live/event_live/manage.html.heex:992
#: lib/claper_web/live/event_live/manage.html.heex:1104
#, elixir-autogen, elixir-format, fuzzy
msgid "Attendees interactions"
msgstr "Interaktionen der Teilnehmer"
#: lib/claper_web/live/event_live/event_form_component.html.heex:5
#: lib/claper_web/live/event_live/index.html.heex:76
#: lib/claper_web/live/event_live/manage.html.heex:382
#: lib/claper_web/live/event_live/manage.html.heex:376
#, elixir-autogen, elixir-format
msgid "Back"
msgstr "Zurück"
#: lib/claper_web/live/event_live/manage.html.heex:496
#: lib/claper_web/live/event_live/manage.html.heex:490
#, elixir-autogen, elixir-format
msgid "Click here to open the presentation window."
msgstr "Klicken Sie hier, um das Präsentationsfenster zu öffnen."
@@ -1121,25 +1100,25 @@ msgstr "Moderatoren"
#: lib/claper_web/live/event_live/event_form_component.html.heex:6
#: lib/claper_web/live/event_live/index.html.heex:77
#: lib/claper_web/live/event_live/manage.html.heex:383
#: lib/claper_web/live/event_live/manage.html.heex:377
#: lib/claper_web/templates/lti/registration/success.html.heex:26
#, elixir-autogen, elixir-format, fuzzy
msgid "Finish"
msgstr "Abschließen"
#: lib/claper_web/live/event_live/manage.html.heex:994
#: lib/claper_web/live/event_live/manage.html.heex:1106
#, elixir-autogen, elixir-format
msgid "Here you'll find all interactions from your attendees. You can manage messages, pinned messages, and submitted forms."
msgstr "Hier finden Sie alle Interaktionen Ihrer Teilnehmer. Sie können Nachrichten, angeheftete Nachrichten und eingereichte Formulare verwalten."
#: lib/claper_web/live/event_live/manage.html.heex:994
#: lib/claper_web/live/event_live/manage.html.heex:1106
#, elixir-autogen, elixir-format
msgid "Identify users by their unique avatars."
msgstr "Identifizieren Sie Benutzer anhand ihrer einzigartigen Avatare."
#: lib/claper_web/live/event_live/event_form_component.html.heex:4
#: lib/claper_web/live/event_live/index.html.heex:75
#: lib/claper_web/live/event_live/manage.html.heex:381
#: lib/claper_web/live/event_live/manage.html.heex:375
#, elixir-autogen, elixir-format, fuzzy
msgid "Next"
msgstr "Weiter"
@@ -1149,17 +1128,17 @@ msgstr "Weiter"
msgid "Select your presentation file. Accepted formats are PDF, PPT, or PPTX. Ensure the file size does not exceed the maximum limit."
msgstr "Wählen Sie Ihre Präsentationsdatei aus. Akzeptierte Formate sind PDF, PPT oder PPTX. Stellen Sie sicher, dass die Dateigröße das maximale Limit nicht überschreitet."
#: lib/claper_web/live/event_live/manage.html.heex:494
#: lib/claper_web/live/event_live/manage.html.heex:488
#, elixir-autogen, elixir-format, fuzzy
msgid "Time to launch your presentation!"
msgstr "Zeit, Ihre Präsentation zu starten!"
#: lib/claper_web/live/event_live/manage.html.heex:1295
#: lib/claper_web/live/event_live/manage.html.heex:1407
#, elixir-autogen, elixir-format
msgid "Use the associated keyboard shortcuts for quick toggling of these settings."
msgstr "Verwenden Sie die zugehörigen Tastaturkürzel, um diese Einstellungen schnell umzuschalten."
#: lib/claper_web/live/event_live/manage.html.heex:1295
#: lib/claper_web/live/event_live/manage.html.heex:1407
#, elixir-autogen, elixir-format
msgid "You can control each setting for the presentation (showing on the big screen) and on the attendee's room."
msgstr "Sie können jede Einstellung für die Präsentation (Anzeige auf dem Großbildschirm) und im Raum der Teilnehmer steuern."
@@ -1194,11 +1173,6 @@ msgstr "Datum des Veranstaltungsbeginns"
msgid "If you don't have time and just want interactions without a presentation file, you can create a new event here."
msgstr "Wenn Sie keine Zeit haben und nur Interaktionen ohne eine Präsentationsdatei wünschen, können Sie hier eine neue Veranstaltung erstellen."
#: lib/claper_web/live/event_live/manage.html.heex:660
#, elixir-autogen, elixir-format
msgid "If you have slides, you can navigate through the slides with ease using the arrow keys on your keyboard."
msgstr "Wenn Sie Folien haben, können Sie mit den Pfeiltasten auf Ihrer Tastatur leicht durch die Folien navigieren."
#: lib/claper_web/live/event_live/event_form_component.html.heex:299
#, elixir-autogen, elixir-format, fuzzy
msgid "If you require assistance in managing your event, you can grant access to others. Simply enter their email addresses; once they register an account with these emails, they will be able to manage the event."
@@ -1250,7 +1224,7 @@ msgstr "Präsentationseinstellungen"
msgid "Quick event"
msgstr "Schnellveranstaltung"
#: lib/claper_web/live/event_live/index.ex:73
#: lib/claper_web/live/event_live/index.ex:80
#, elixir-autogen, elixir-format
msgid "Quick event created successfully"
msgstr "Schnellveranstaltung erfolgreich erstellt"
@@ -1280,11 +1254,6 @@ msgstr "Dieser Code wird von Ihren Teilnehmern verwendet, um auf die Veranstaltu
msgid "This event has been terminated"
msgstr "Diese Veranstaltung wurde beendet"
#: lib/claper_web/live/event_live/manage.html.heex:660
#, elixir-autogen, elixir-format, fuzzy
msgid "This section contains all your presentation slides (if you have upload one). You have the option to add interactions to each slide."
msgstr "Dieser Abschnitt enthält alle Ihre Präsentationsfolien (falls Sie eine hochgeladen haben). Sie haben die Möglichkeit, jeder Folie Interaktionen hinzuzufügen."
#: lib/claper_web/live/event_live/index.html.heex:117
#, elixir-autogen, elixir-format, fuzzy
msgid "Welcome to Claper! You can create a new event here."
@@ -1295,11 +1264,6 @@ msgstr "Willkommen bei Claper! Hier können Sie eine neue Veranstaltung erstelle
msgid "When your event will start?"
msgstr "Wann beginnt Ihre Veranstaltung?"
#: lib/claper_web/live/event_live/manage.html.heex:659
#, elixir-autogen, elixir-format, fuzzy
msgid "Your slides and/or interactions"
msgstr "Ihre Folien und/oder Interaktionen"
#: lib/claper_web/live/event_live/show.html.heex:38
#, elixir-autogen, elixir-format
msgid "Create your next presentation with"
@@ -1312,22 +1276,22 @@ msgstr "Erstellen Sie Ihre nächste Präsentation mit"
msgid "Event doesn't exist"
msgstr "Veranstaltung existiert nicht"
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#: lib/claper_web/live/user_settings_live/show.html.heex:244
#, elixir-autogen, elixir-format
msgid "Customize your account"
msgstr "Passen Sie Ihr Konto an"
#: lib/claper_web/live/user_settings_live/show.html.heex:159
#: lib/claper_web/live/user_settings_live/show.html.heex:264
#, elixir-autogen, elixir-format
msgid "Language"
msgstr "Sprache"
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#: lib/claper_web/live/user_settings_live/show.html.heex:241
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr "Einstellungen"
#: lib/claper_web/live/user_settings_live/show.ex:119
#: lib/claper_web/live/user_settings_live/show.ex:180
#, elixir-autogen, elixir-format
msgid "Your preferences have been updated."
msgstr "Ihre Einstellungen wurden aktualisiert."
@@ -1337,22 +1301,22 @@ msgstr "Ihre Einstellungen wurden aktualisiert."
msgid "Question"
msgstr "Frage"
#: lib/claper_web/live/event_live/manage.html.heex:1012
#: lib/claper_web/live/event_live/manage.html.heex:1124
#, elixir-autogen, elixir-format
msgid "Questions"
msgstr "Fragen"
#: lib/claper_web/live/event_live/manage.html.heex:1099
#: lib/claper_web/live/event_live/manage.html.heex:1211
#, elixir-autogen, elixir-format
msgid "Questions will appear here."
msgstr "Fragen werden hier erscheinen."
#: lib/claper_web/live/event_live/manage.html.heex:1141
#: lib/claper_web/live/event_live/manage.html.heex:1253
#, elixir-autogen, elixir-format
msgid "Sort by date"
msgstr "Nach Datum sortieren"
#: lib/claper_web/live/event_live/manage.html.heex:1120
#: lib/claper_web/live/event_live/manage.html.heex:1232
#, elixir-autogen, elixir-format
msgid "Sort by popularity"
msgstr "Nach Beliebtheit sortieren"
@@ -1373,7 +1337,7 @@ msgstr "Dokumentation"
msgid "My account"
msgstr "Mein Konto"
#: lib/claper_web/live/user_settings_live/show.html.heex:96
#: lib/claper_web/live/user_settings_live/show.html.heex:139
#, elixir-autogen, elixir-format, fuzzy
msgid "Your personal informations to access your account"
msgstr "Ihre persnlichen Informationen zum Zugreifen auf Ihr Konto"
@@ -1434,22 +1398,22 @@ msgid "Add Claper"
msgstr "Claper hinzufügen"
#: lib/claper_web/live/event_live/manage.html.heex:94
#: lib/claper_web/live/event_live/manage.html.heex:487
#: lib/claper_web/live/event_live/manage.html.heex:481
#, elixir-autogen, elixir-format
msgid "Close preview"
msgstr "Vorschau schließen"
#: lib/claper_web/live/event_live/manage.html.heex:687
#: lib/claper_web/live/event_live/manage.html.heex:685
#, elixir-autogen, elixir-format, fuzzy
msgid "Create your first interaction."
msgstr "Erstellen Sie Ihre erste Interaktion."
#: lib/claper_web/live/event_live/manage.html.heex:875
#: lib/claper_web/live/event_live/manage.html.heex:1025
#, elixir-autogen, elixir-format, fuzzy
msgid "Disable"
msgstr "Deaktivieren"
#: lib/claper_web/live/event_live/manage.html.heex:957
#: lib/claper_web/live/event_live/manage.html.heex:1069
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr "Aktivieren"
@@ -1459,18 +1423,13 @@ msgstr "Aktivieren"
msgid "Enable messages to change this option"
msgstr "Aktivieren Sie Nachrichten, um diese Option zu ändern"
#: lib/claper_web/live/event_live/manage.html.heex:918
#: lib/claper_web/live/event_live/manage.html.heex:749
#, elixir-autogen, elixir-format, fuzzy
msgid "Hide on presentation"
msgstr "In Präsentation ausblenden"
#: lib/claper_web/live/event_live/manage.html.heex:933
#, elixir-autogen, elixir-format
msgid "Hide results for attendees"
msgstr "Ergebnisse für Teilnehmer ausblenden"
#: lib/claper_web/live/event_live/manage.html.heex:93
#: lib/claper_web/live/event_live/manage.html.heex:486
#: lib/claper_web/live/event_live/manage.html.heex:480
#, elixir-autogen, elixir-format
msgid "Open preview"
msgstr "Vorschau öffnen"
@@ -1485,17 +1444,137 @@ msgstr "Anweisungen anzeigen (QR-Code)"
msgid "Show messages to change this option"
msgstr "Nachrichten anzeigen, um diese Option zu ändern"
#: lib/claper_web/live/event_live/manage.html.heex:921
#: lib/claper_web/live/event_live/manage.html.heex:752
#, elixir-autogen, elixir-format
msgid "Show on presentation"
msgstr "In Präsentation anzeigen"
#: lib/claper_web/live/event_live/manage.html.heex:936
#, elixir-autogen, elixir-format
msgid "Show results for attendees"
msgstr "Ergebnisse für Teilnehmer anzeigen"
#: lib/claper_web/live/event_live/manage.html.heex:684
#: lib/claper_web/live/event_live/manage.html.heex:682
#, elixir-autogen, elixir-format
msgid "This slide does not have any interactions."
msgstr "Diese Folie hat keine Interaktionen."
#: lib/claper_web/live/user_settings_live/show.html.heex:176
#, elixir-autogen, elixir-format
msgid "Accounts linked"
msgstr "Verknüpfte Konten"
#: lib/claper_web/live/user_settings_live/show.html.heex:208
#: lib/claper_web/live/user_settings_live/show.html.heex:226
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unlink this account?"
msgstr "Sind Sie sicher, dass Sie dieses Konto trennen möchten?"
#: lib/claper_web/templates/user_session/new.html.heex:74
#, elixir-autogen, elixir-format
msgid "Login with %{provider}"
msgstr "Anmelden mit %{provider}"
#: lib/claper_web/live/user_settings_live/show.ex:101
#: lib/claper_web/live/user_settings_live/show.ex:115
#, elixir-autogen, elixir-format
msgid "The account has been unlinked."
msgstr "Das Konto wurde getrennt."
#: lib/claper_web/live/event_live/manage.html.heex:658
#, elixir-autogen, elixir-format
msgid "This section contains all your interactions."
msgstr "Dieser Abschnitt enthält alle Ihre Interaktionen."
#: lib/claper_web/live/user_settings_live/show.html.heex:211
#: lib/claper_web/live/user_settings_live/show.html.heex:229
#, elixir-autogen, elixir-format, fuzzy
msgid "Unlink"
msgstr "Trennen"
#: lib/claper_web/live/event_live/manage.html.heex:658
#, elixir-autogen, elixir-format
msgid "You can add interactions to your presentation slides."
msgstr "Sie können Ihren Präsentationsfolien Interaktionen hinzufügen."
#: lib/claper_web/live/event_live/manage.html.heex:657
#, elixir-autogen, elixir-format
msgid "Your interactions"
msgstr "Ihre Interaktionen"
#: lib/claper_web/live/user_settings_live/show.html.heex:119
#, elixir-autogen, elixir-format, fuzzy
msgid "Confirm password"
msgstr "Neues Passwort bestätigen"
#: lib/claper_web/live/user_settings_live/show.ex:68
#, elixir-autogen, elixir-format
msgid "Set a new password"
msgstr "Neues Passwort festlegen"
#: lib/claper_web/live/user_settings_live/show.ex:71
#, elixir-autogen, elixir-format
msgid "Set a new password for your account before unlinking it."
msgstr "Legen Sie ein neues Passwort für Ihr Konto fest, bevor Sie es trennen."
#: lib/claper_web/live/user_settings_live/show.ex:204
#, elixir-autogen, elixir-format
msgid "Your password has been set, you can now unlink your account."
msgstr "Ihr Passwort wurde festgelegt. Sie können jetzt Ihr Konto trennen."
#: lib/claper_web/live/embed_live/form_component.html.heex:38
#, elixir-autogen, elixir-format
msgid "Iframe code"
msgstr "Iframe-Code"
#: lib/claper_web/live/embed_live/form_component.html.heex:39
#, elixir-autogen, elixir-format
msgid "Link to the content"
msgstr "Link zum Inhalt"
#: lib/claper/embeds/embed.ex:65
#: lib/claper/embeds/embed.ex:74
#: lib/claper/embeds/embed.ex:83
#, elixir-autogen, elixir-format
msgid "Please enter a valid %{provider} link"
msgstr "Bitte geben Sie einen gültigen %{provider}-Link ein"
#: lib/claper/embeds/embed.ex:62
#: lib/claper/embeds/embed.ex:71
#: lib/claper/embeds/embed.ex:80
#, elixir-autogen, elixir-format
msgid "Please enter a valid link starting with http:// or https://"
msgstr "Bitte geben Sie einen gültigen Link ein, der mit http:// oder https:// beginnt"
#: lib/claper/embeds/embed.ex:89
#, elixir-autogen, elixir-format
msgid "Please enter valid HTML content with an iframe tag"
msgstr "Bitte geben Sie gültigen HTML-Inhalt mit einem iframe-Tag ein"
#: lib/claper_web/live/embed_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "Provider"
msgstr "Anbieter"
#: lib/claper_web/live/poll_live/form_component.html.heex:89
#, elixir-autogen, elixir-format
msgid "Attendees can see the results on their device"
msgstr "Teilnehmer können die Ergebnisse auf ihrem Gerät sehen"
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#, elixir-autogen, elixir-format
msgid "Attendees can view the web content on their device"
msgstr "Teilnehmer können die Webinhalte auf ihrem Gerät anzeigen"
#: lib/claper_web/live/embed_live/form_component.html.heex:49
#: lib/claper_web/live/poll_live/form_component.html.heex:82
#, elixir-autogen, elixir-format
msgid "Options"
msgstr "Optionen"
#: lib/claper_web/live/event_live/event_card_component.ex:186
#: lib/claper_web/live/event_live/event_card_component.ex:266
#: lib/claper_web/live/event_live/event_card_component.ex:355
#, elixir-autogen, elixir-format
msgid "Action"
msgstr "Aktion"
#: lib/claper_web/live/event_live/event_card_component.ex:242
#, elixir-autogen, elixir-format
msgid "Duplicate"
msgstr "Duplizieren"

View File

@@ -10,18 +10,18 @@
msgid ""
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1293
#: lib/claper_web/live/user_settings_live/show.ex:55
#: lib/claper_web/live/event_live/manage.html.heex:1405
#: lib/claper_web/live/user_settings_live/show.ex:77
#, elixir-autogen, elixir-format
msgid "Settings"
msgstr ""
#: lib/claper_web/live/event_live/manage.ex:746
#: lib/claper_web/live/event_live/manage.ex:727
#: lib/claper_web/live/form_live/form_component.html.heex:37
#: lib/claper_web/live/user_settings_live/show.html.heex:34
#: lib/claper_web/templates/user_registration/new.html.heex:29
#: lib/claper_web/templates/user_reset_password/new.html.heex:28
#: lib/claper_web/templates/user_session/new.html.heex:41
#: lib/claper_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format
msgid "Email"
msgstr ""
@@ -38,8 +38,8 @@ msgstr ""
msgid "Oops, check that all fields are filled in correctly."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:112
#: lib/claper_web/live/user_settings_live/show.html.heex:127
#: lib/claper_web/live/user_settings_live/show.html.heex:155
#: lib/claper_web/live/user_settings_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "Change"
msgstr ""
@@ -49,7 +49,8 @@ msgstr ""
msgid "Code"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:103
#: lib/claper_web/live/user_settings_live/show.html.heex:146
#: lib/claper_web/templates/user_session/new.html.heex:40
#, elixir-autogen, elixir-format
msgid "Email address"
msgstr ""
@@ -59,7 +60,7 @@ msgstr ""
msgid "Logout"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:93
#: lib/claper_web/live/user_settings_live/show.html.heex:136
#, elixir-autogen, elixir-format
msgid "Personal informations"
msgstr ""
@@ -101,7 +102,7 @@ msgstr ""
msgid "Join"
msgstr ""
#: lib/claper_web/live/event_live/index.ex:156
#: lib/claper_web/live/event_live/index.ex:180
#: lib/claper_web/live/event_live/join.html.heex:31
#: lib/claper_web/live/event_live/join.html.heex:54
#, elixir-autogen, elixir-format
@@ -173,60 +174,61 @@ msgstr ""
msgid "Created successfully"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:186
#: lib/claper_web/live/event_live/event_card_component.ex:207
#: lib/claper_web/live/event_live/event_card_component.ex:224
#: lib/claper_web/live/event_live/event_card_component.ex:304
#: lib/claper_web/live/event_live/form_component.ex:97
#: lib/claper_web/live/event_live/index.ex:139
#: lib/claper_web/live/event_live/index.ex:161
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:51
#: lib/claper_web/live/embed_live/form_component.html.heex:69
#: lib/claper_web/live/event_live/event_form_component.html.heex:25
#: lib/claper_web/live/event_live/event_form_component.html.heex:32
#: lib/claper_web/live/event_live/index.ex:146
#: lib/claper_web/live/event_live/index.ex:170
#: lib/claper_web/live/event_live/index.html.heex:64
#: lib/claper_web/live/form_live/form_component.html.heex:98
#: lib/claper_web/live/poll_live/form_component.html.heex:94
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#, elixir-autogen, elixir-format
msgid "Create"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#: lib/claper_web/live/event_live/event_card_component.ex:249
#: lib/claper_web/live/embed_live/form_component.html.heex:74
#: lib/claper_web/live/event_live/event_card_component.ex:400
#: lib/claper_web/live/event_live/event_form_component.html.heex:37
#: lib/claper_web/live/event_live/manage.html.heex:1241
#: lib/claper_web/live/event_live/manage.html.heex:1353
#: lib/claper_web/live/event_live/manageable_post_component.ex:92
#: lib/claper_web/live/event_live/post_component.ex:70
#: lib/claper_web/live/event_live/post_component.ex:142
#: lib/claper_web/live/form_live/form_component.html.heex:103
#: lib/claper_web/live/poll_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:111
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:52
#: lib/claper_web/live/embed_live/form_component.html.heex:70
#: lib/claper_web/live/event_live/event_form_component.html.heex:24
#: lib/claper_web/live/event_live/event_form_component.html.heex:31
#: lib/claper_web/live/form_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:95
#: lib/claper_web/live/poll_live/form_component.html.heex:107
#: lib/claper_web/live/user_settings_live/show.html.heex:38
#: lib/claper_web/live/user_settings_live/show.html.heex:80
#: lib/claper_web/live/user_settings_live/show.html.heex:123
#, elixir-autogen, elixir-format
msgid "Save"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:76
#: lib/claper_web/live/user_settings_live/show.ex:137
#, elixir-autogen, elixir-format
msgid "A link to confirm your email change has been sent to the new address."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:40
#: lib/claper_web/live/user_settings_live/show.ex:53
#, elixir-autogen, elixir-format
msgid "Change the email address you want associated with your account."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:37
#: lib/claper_web/live/user_settings_live/show.ex:50
#, elixir-autogen, elixir-format
msgid "Update your email"
msgstr ""
@@ -308,12 +310,12 @@ msgstr ""
msgid "or drag and drop"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:308
#: lib/claper_web/live/event_live/event_form_component.ex:313
#, elixir-autogen, elixir-format
msgid "You have selected an incorrect file type"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:307
#: lib/claper_web/live/event_live/event_form_component.ex:312
#, elixir-autogen, elixir-format
msgid "Your file is too large"
msgstr ""
@@ -328,12 +330,12 @@ msgstr ""
msgid "Presentation replaced"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:280
#: lib/claper_web/live/event_live/manage.html.heex:274
#, elixir-autogen, elixir-format
msgid "Edit poll"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:279
#: lib/claper_web/live/event_live/manage.html.heex:273
#, elixir-autogen, elixir-format
msgid "New poll"
msgstr ""
@@ -343,7 +345,7 @@ msgstr ""
msgid "Title of your poll"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:309
#: lib/claper_web/live/event_live/event_form_component.ex:314
#, elixir-autogen, elixir-format
msgid "Upload failed"
msgstr ""
@@ -354,12 +356,12 @@ msgid "Add poll to know opinion of your public."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:165
#: lib/claper_web/live/event_live/manage.html.heex:730
#: lib/claper_web/live/event_live/manage.html.heex:779
#, elixir-autogen, elixir-format
msgid "Poll"
msgstr ""
#: lib/claper_web/live/poll_live/form_component.html.heex:35
#: lib/claper_web/live/poll_live/form_component.html.heex:30
#, elixir-format, ex-autogen, elixir-autogen
msgid "Choice %{count}"
msgid_plural "Choice %{count}"
@@ -393,22 +395,22 @@ msgstr ""
msgid "Changing your file will remove all interaction elements like polls associated."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1058
#: lib/claper_web/live/event_live/manage.html.heex:1170
#, elixir-autogen, elixir-format
msgid "Messages from attendees will appear here."
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:218
#: lib/claper_web/live/event_live/event_card_component.ex:318
#, elixir-autogen, elixir-format
msgid "Processing your file..."
msgstr ""
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#: lib/claper_web/live/poll_live/form_component.html.heex:118
#, elixir-autogen, elixir-format
msgid "This will delete all responses associated and the poll itself, are you sure?"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:450
#: lib/claper_web/live/event_live/manage.html.heex:444
#, elixir-autogen, elixir-format
msgid "Press <strong>F</strong> in the presentation window to enable fullscreen"
msgstr ""
@@ -418,7 +420,7 @@ msgstr ""
msgid "Ask, comment..."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1004
#: lib/claper_web/live/event_live/manage.html.heex:1116
#: lib/claper_web/live/stat_live/index.html.heex:71
#: lib/claper_web/live/stat_live/index.html.heex:271
#, elixir-autogen, elixir-format
@@ -457,7 +459,7 @@ msgstr ""
msgid "You can change your email by visiting the URL below"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:703
#: lib/claper_web/live/event_live/manage.html.heex:701
#, elixir-autogen, elixir-format
msgid "Add interaction"
msgstr ""
@@ -575,7 +577,7 @@ msgstr ""
msgid "No messages has been sent"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:255
#: lib/claper_web/live/event_live/event_card_component.ex:382
#, elixir-autogen, elixir-format
msgid "This will delete all data related to your event, this cannot be undone. Confirm ?"
msgstr ""
@@ -597,7 +599,7 @@ msgstr ""
msgid "Engagement rate"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:197
#: lib/claper_web/live/event_live/event_card_component.ex:256
#, elixir-autogen, elixir-format
msgid "Error when processing the file"
msgstr ""
@@ -610,7 +612,7 @@ msgstr ""
#: lib/claper_web/live/event_live/join.html.heex:38
#: lib/claper_web/live/event_live/join.html.heex:61
#: lib/claper_web/templates/user_session/new.html.heex:60
#: lib/claper_web/templates/user_session/new.html.heex:62
#, elixir-autogen, elixir-format
msgid "Login"
msgstr ""
@@ -626,30 +628,21 @@ msgid "Or use the code:"
msgstr ""
#: lib/claper_web/templates/user_registration/new.html.heex:46
#: lib/claper_web/templates/user_session/new.html.heex:71
#: lib/claper_web/templates/user_session/new.html.heex:84
#, elixir-autogen, elixir-format
msgid "Create account"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:118
#: lib/claper_web/live/user_settings_live/show.html.heex:161
#: lib/claper_web/templates/user_registration/new.html.heex:37
#: lib/claper_web/templates/user_reset_password/edit.html.heex:34
#: lib/claper_web/templates/user_session/new.html.heex:51
#: lib/claper_web/templates/user_session/new.html.heex:50
#: lib/claper_web/templates/user_session/new.html.heex:52
#, elixir-autogen, elixir-format
msgid "Password"
msgstr ""
#: lib/claper_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format
msgid "Your email address"
msgstr ""
#: lib/claper_web/templates/user_session/new.html.heex:49
#, elixir-autogen, elixir-format
msgid "Your password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:49
#: lib/claper_web/live/user_settings_live/show.ex:62
#, elixir-autogen, elixir-format
msgid "Change the password used to access your account."
msgstr ""
@@ -660,16 +653,17 @@ msgid "Current password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:76
#: lib/claper_web/live/user_settings_live/show.html.heex:112
#, elixir-autogen, elixir-format
msgid "New password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:46
#: lib/claper_web/live/user_settings_live/show.ex:59
#, elixir-autogen, elixir-format
msgid "Update your password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:98
#: lib/claper_web/live/user_settings_live/show.ex:159
#, elixir-autogen, elixir-format
msgid "Your password has been updated."
msgstr ""
@@ -681,7 +675,7 @@ msgid_plural "Field %{count}"
msgstr[0] ""
msgstr[1] ""
#: lib/claper_web/live/event_live/manage.html.heex:207
#: lib/claper_web/live/event_live/manage.html.heex:201
#, elixir-autogen, elixir-format
msgid "Add form to collect data from your public."
msgstr ""
@@ -691,35 +685,35 @@ msgstr ""
msgid "Current form"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:301
#: lib/claper_web/live/event_live/manage.html.heex:295
#, elixir-autogen, elixir-format
msgid "Edit form"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:204
#: lib/claper_web/live/event_live/manage.html.heex:774
#: lib/claper_web/live/event_live/manage.html.heex:1253
#: lib/claper_web/live/event_live/manage.html.heex:198
#: lib/claper_web/live/event_live/manage.html.heex:823
#: lib/claper_web/live/event_live/manage.html.heex:1365
#: lib/claper_web/live/stat_live/index.html.heex:217
#, elixir-autogen, elixir-format
msgid "Form"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1028
#: lib/claper_web/live/event_live/manage.html.heex:1140
#, elixir-autogen, elixir-format
msgid "Form submissions"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1226
#: lib/claper_web/live/event_live/manage.html.heex:1338
#, elixir-autogen, elixir-format
msgid "Form submissions from attendees will appear here."
msgstr ""
#: lib/claper_web/live/event_live/manage.ex:745
#: lib/claper_web/live/event_live/manage.ex:726
#, elixir-autogen, elixir-format
msgid "Name"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:300
#: lib/claper_web/live/event_live/manage.html.heex:294
#, elixir-autogen, elixir-format
msgid "New form"
msgstr ""
@@ -744,7 +738,7 @@ msgstr ""
msgid "Text"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1246
#: lib/claper_web/live/event_live/manage.html.heex:1358
#, elixir-autogen, elixir-format
msgid "This cannot be undone, confirm ?"
msgstr ""
@@ -779,12 +773,12 @@ msgstr ""
msgid "Select one or multiple options"
msgstr ""
#: lib/claper_web/live/poll_live/form_component.html.heex:24
#: lib/claper_web/live/poll_live/form_component.html.heex:96
#, elixir-autogen, elixir-format
msgid "Multiple answers"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:269
#: lib/claper_web/live/event_live/manage.html.heex:263
#, elixir-autogen, elixir-format
msgid "Import all interactions from another presentation"
msgstr ""
@@ -799,7 +793,7 @@ msgstr ""
msgid "Interactions imported successfully"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:341
#: lib/claper_web/live/event_live/manage.html.heex:335
#, elixir-autogen, elixir-format
msgid "Select presentation"
msgstr ""
@@ -873,7 +867,7 @@ msgstr ""
msgid "Account creation is disabled"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:238
#: lib/claper_web/live/event_live/manage.html.heex:232
#, elixir-autogen, elixir-format
msgid "Add a Youtube video or any web content."
msgstr ""
@@ -883,7 +877,7 @@ msgstr ""
msgid "Confirm new password"
msgstr ""
#: lib/claper_web/templates/user_session/new.html.heex:66
#: lib/claper_web/templates/user_session/new.html.heex:79
#, elixir-autogen, elixir-format
msgid "Forgot your password?"
msgstr ""
@@ -919,22 +913,17 @@ msgstr ""
msgid "Send link to reset password"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:38
#, elixir-autogen, elixir-format
msgid "Attendee can view the web content on their device"
msgstr ""
#: lib/claper_web/live/event_live/embed_component.ex:59
#, elixir-autogen, elixir-format
msgid "Current web content"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:322
#: lib/claper_web/live/event_live/manage.html.heex:316
#, elixir-autogen, elixir-format
msgid "Edit web content"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:321
#: lib/claper_web/live/event_live/manage.html.heex:315
#, elixir-autogen, elixir-format
msgid "New web content"
msgstr ""
@@ -944,12 +933,7 @@ msgstr ""
msgid "See current web content"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "The iframe component"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:62
#: lib/claper_web/live/embed_live/form_component.html.heex:80
#, elixir-autogen, elixir-format
msgid "This will delete the web content, are you sure?"
msgstr ""
@@ -959,18 +943,13 @@ msgstr ""
msgid "Title"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:236
#: lib/claper_web/live/event_live/manage.html.heex:817
#: lib/claper_web/live/event_live/manage.html.heex:230
#: lib/claper_web/live/event_live/manage.html.heex:867
#: lib/claper_web/live/stat_live/index.html.heex:259
#, elixir-autogen, elixir-format
msgid "Web content"
msgstr ""
#: lib/claper/embeds/embed.ex:50
#, elixir-autogen, elixir-format
msgid "Invalid embed format (should start with <iframe> and end with </iframe>)"
msgstr ""
#: lib/claper_web/live/event_live/manageable_post_component.ex:38
#: lib/claper_web/live/event_live/manageable_post_component.ex:67
#, elixir-autogen, elixir-format
@@ -983,12 +962,12 @@ msgstr ""
msgid "Pinned"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1020
#: lib/claper_web/live/event_live/manage.html.heex:1132
#, elixir-autogen, elixir-format
msgid "Pinned messages"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1180
#: lib/claper_web/live/event_live/manage.html.heex:1292
#, elixir-autogen, elixir-format
msgid "Pinned messages will appear here."
msgstr ""
@@ -1039,7 +1018,7 @@ msgstr ""
msgid "Access"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:180
#: lib/claper_web/live/user_settings_live/show.html.heex:285
#, elixir-autogen, elixir-format
msgid "All your events and files will be permanently deleted, are you sure?"
msgstr ""
@@ -1054,22 +1033,22 @@ msgstr ""
msgid "Attendees room"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:172
#: lib/claper_web/live/user_settings_live/show.html.heex:277
#, elixir-autogen, elixir-format
msgid "Be careful, these actions are irreversible"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:169
#: lib/claper_web/live/user_settings_live/show.html.heex:274
#, elixir-autogen, elixir-format
msgid "Danger zone"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:185
#: lib/claper_web/live/user_settings_live/show.html.heex:290
#, elixir-autogen, elixir-format
msgid "Delete account"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:514
#: lib/claper_web/live/event_live/manage.html.heex:508
#, elixir-autogen, elixir-format
msgid "Open presentation"
msgstr ""
@@ -1079,12 +1058,12 @@ msgstr ""
msgid "Terminate"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:244
#: lib/claper_web/live/event_live/event_card_component.ex:344
#, elixir-autogen, elixir-format
msgid "View report"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:137
#: lib/claper_web/live/user_settings_live/show.ex:219
#, elixir-autogen, elixir-format
msgid "Your account has been deleted."
msgstr ""
@@ -1099,19 +1078,19 @@ msgstr ""
msgid "Animations in PPT/PPTX files are not supported, which is why we recommend exporting your presentation to PDF to ensure it displays correctly."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:992
#: lib/claper_web/live/event_live/manage.html.heex:1104
#, elixir-autogen, elixir-format
msgid "Attendees interactions"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:5
#: lib/claper_web/live/event_live/index.html.heex:76
#: lib/claper_web/live/event_live/manage.html.heex:382
#: lib/claper_web/live/event_live/manage.html.heex:376
#, elixir-autogen, elixir-format
msgid "Back"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:496
#: lib/claper_web/live/event_live/manage.html.heex:490
#, elixir-autogen, elixir-format
msgid "Click here to open the presentation window."
msgstr ""
@@ -1123,25 +1102,25 @@ msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:6
#: lib/claper_web/live/event_live/index.html.heex:77
#: lib/claper_web/live/event_live/manage.html.heex:383
#: lib/claper_web/live/event_live/manage.html.heex:377
#: lib/claper_web/templates/lti/registration/success.html.heex:26
#, elixir-autogen, elixir-format
msgid "Finish"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:994
#: lib/claper_web/live/event_live/manage.html.heex:1106
#, elixir-autogen, elixir-format
msgid "Here you'll find all interactions from your attendees. You can manage messages, pinned messages, and submitted forms."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:994
#: lib/claper_web/live/event_live/manage.html.heex:1106
#, elixir-autogen, elixir-format
msgid "Identify users by their unique avatars."
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:4
#: lib/claper_web/live/event_live/index.html.heex:75
#: lib/claper_web/live/event_live/manage.html.heex:381
#: lib/claper_web/live/event_live/manage.html.heex:375
#, elixir-autogen, elixir-format
msgid "Next"
msgstr ""
@@ -1151,17 +1130,17 @@ msgstr ""
msgid "Select your presentation file. Accepted formats are PDF, PPT, or PPTX. Ensure the file size does not exceed the maximum limit."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:494
#: lib/claper_web/live/event_live/manage.html.heex:488
#, elixir-autogen, elixir-format
msgid "Time to launch your presentation!"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1295
#: lib/claper_web/live/event_live/manage.html.heex:1407
#, elixir-autogen, elixir-format
msgid "Use the associated keyboard shortcuts for quick toggling of these settings."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1295
#: lib/claper_web/live/event_live/manage.html.heex:1407
#, elixir-autogen, elixir-format
msgid "You can control each setting for the presentation (showing on the big screen) and on the attendee's room."
msgstr ""
@@ -1196,11 +1175,6 @@ msgstr ""
msgid "If you don't have time and just want interactions without a presentation file, you can create a new event here."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:660
#, elixir-autogen, elixir-format
msgid "If you have slides, you can navigate through the slides with ease using the arrow keys on your keyboard."
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:299
#, elixir-autogen, elixir-format
msgid "If you require assistance in managing your event, you can grant access to others. Simply enter their email addresses; once they register an account with these emails, they will be able to manage the event."
@@ -1252,7 +1226,7 @@ msgstr ""
msgid "Quick event"
msgstr ""
#: lib/claper_web/live/event_live/index.ex:73
#: lib/claper_web/live/event_live/index.ex:80
#, elixir-autogen, elixir-format
msgid "Quick event created successfully"
msgstr ""
@@ -1282,11 +1256,6 @@ msgstr ""
msgid "This event has been terminated"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:660
#, elixir-autogen, elixir-format
msgid "This section contains all your presentation slides (if you have upload one). You have the option to add interactions to each slide."
msgstr ""
#: lib/claper_web/live/event_live/index.html.heex:117
#, elixir-autogen, elixir-format
msgid "Welcome to Claper! You can create a new event here."
@@ -1297,11 +1266,6 @@ msgstr ""
msgid "When your event will start?"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:659
#, elixir-autogen, elixir-format
msgid "Your slides and/or interactions"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:38
#, elixir-autogen, elixir-format
msgid "Create your next presentation with"
@@ -1314,22 +1278,22 @@ msgstr ""
msgid "Event doesn't exist"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#: lib/claper_web/live/user_settings_live/show.html.heex:244
#, elixir-autogen, elixir-format
msgid "Customize your account"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:159
#: lib/claper_web/live/user_settings_live/show.html.heex:264
#, elixir-autogen, elixir-format
msgid "Language"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#: lib/claper_web/live/user_settings_live/show.html.heex:241
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:119
#: lib/claper_web/live/user_settings_live/show.ex:180
#, elixir-autogen, elixir-format
msgid "Your preferences have been updated."
msgstr ""
@@ -1339,22 +1303,22 @@ msgstr ""
msgid "Question"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1012
#: lib/claper_web/live/event_live/manage.html.heex:1124
#, elixir-autogen, elixir-format
msgid "Questions"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1099
#: lib/claper_web/live/event_live/manage.html.heex:1211
#, elixir-autogen, elixir-format
msgid "Questions will appear here."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1141
#: lib/claper_web/live/event_live/manage.html.heex:1253
#, elixir-autogen, elixir-format
msgid "Sort by date"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1120
#: lib/claper_web/live/event_live/manage.html.heex:1232
#, elixir-autogen, elixir-format
msgid "Sort by popularity"
msgstr ""
@@ -1375,7 +1339,7 @@ msgstr ""
msgid "My account"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:96
#: lib/claper_web/live/user_settings_live/show.html.heex:139
#, elixir-autogen, elixir-format
msgid "Your personal informations to access your account"
msgstr ""
@@ -1436,22 +1400,22 @@ msgid "Add Claper"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:94
#: lib/claper_web/live/event_live/manage.html.heex:487
#: lib/claper_web/live/event_live/manage.html.heex:481
#, elixir-autogen, elixir-format
msgid "Close preview"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:687
#: lib/claper_web/live/event_live/manage.html.heex:685
#, elixir-autogen, elixir-format
msgid "Create your first interaction."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:875
#: lib/claper_web/live/event_live/manage.html.heex:1025
#, elixir-autogen, elixir-format
msgid "Disable"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:957
#: lib/claper_web/live/event_live/manage.html.heex:1069
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr ""
@@ -1461,18 +1425,13 @@ msgstr ""
msgid "Enable messages to change this option"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:918
#: lib/claper_web/live/event_live/manage.html.heex:749
#, elixir-autogen, elixir-format
msgid "Hide on presentation"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:933
#, elixir-autogen, elixir-format
msgid "Hide results for attendees"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:93
#: lib/claper_web/live/event_live/manage.html.heex:486
#: lib/claper_web/live/event_live/manage.html.heex:480
#, elixir-autogen, elixir-format
msgid "Open preview"
msgstr ""
@@ -1487,17 +1446,137 @@ msgstr ""
msgid "Show messages to change this option"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:921
#: lib/claper_web/live/event_live/manage.html.heex:752
#, elixir-autogen, elixir-format
msgid "Show on presentation"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:936
#, elixir-autogen, elixir-format
msgid "Show results for attendees"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:684
#: lib/claper_web/live/event_live/manage.html.heex:682
#, elixir-autogen, elixir-format
msgid "This slide does not have any interactions."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:176
#, elixir-autogen, elixir-format
msgid "Accounts linked"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:208
#: lib/claper_web/live/user_settings_live/show.html.heex:226
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unlink this account?"
msgstr ""
#: lib/claper_web/templates/user_session/new.html.heex:74
#, elixir-autogen, elixir-format
msgid "Login with %{provider}"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:101
#: lib/claper_web/live/user_settings_live/show.ex:115
#, elixir-autogen, elixir-format
msgid "The account has been unlinked."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:658
#, elixir-autogen, elixir-format
msgid "This section contains all your interactions."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:211
#: lib/claper_web/live/user_settings_live/show.html.heex:229
#, elixir-autogen, elixir-format
msgid "Unlink"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:658
#, elixir-autogen, elixir-format
msgid "You can add interactions to your presentation slides."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:657
#, elixir-autogen, elixir-format
msgid "Your interactions"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:119
#, elixir-autogen, elixir-format
msgid "Confirm password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:68
#, elixir-autogen, elixir-format
msgid "Set a new password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:71
#, elixir-autogen, elixir-format
msgid "Set a new password for your account before unlinking it."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:204
#, elixir-autogen, elixir-format
msgid "Your password has been set, you can now unlink your account."
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:38
#, elixir-autogen, elixir-format
msgid "Iframe code"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:39
#, elixir-autogen, elixir-format
msgid "Link to the content"
msgstr ""
#: lib/claper/embeds/embed.ex:65
#: lib/claper/embeds/embed.ex:74
#: lib/claper/embeds/embed.ex:83
#, elixir-autogen, elixir-format
msgid "Please enter a valid %{provider} link"
msgstr ""
#: lib/claper/embeds/embed.ex:62
#: lib/claper/embeds/embed.ex:71
#: lib/claper/embeds/embed.ex:80
#, elixir-autogen, elixir-format
msgid "Please enter a valid link starting with http:// or https://"
msgstr ""
#: lib/claper/embeds/embed.ex:89
#, elixir-autogen, elixir-format
msgid "Please enter valid HTML content with an iframe tag"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "Provider"
msgstr ""
#: lib/claper_web/live/poll_live/form_component.html.heex:89
#, elixir-autogen, elixir-format
msgid "Attendees can see the results on their device"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#, elixir-autogen, elixir-format
msgid "Attendees can view the web content on their device"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:49
#: lib/claper_web/live/poll_live/form_component.html.heex:82
#, elixir-autogen, elixir-format
msgid "Options"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:186
#: lib/claper_web/live/event_live/event_card_component.ex:266
#: lib/claper_web/live/event_live/event_card_component.ex:355
#, elixir-autogen, elixir-format
msgid "Action"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:242
#, elixir-autogen, elixir-format
msgid "Duplicate"
msgstr ""

View File

@@ -8,18 +8,18 @@ msgstr ""
"Language: en\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: lib/claper_web/live/event_live/manage.html.heex:1293
#: lib/claper_web/live/user_settings_live/show.ex:55
#: lib/claper_web/live/event_live/manage.html.heex:1405
#: lib/claper_web/live/user_settings_live/show.ex:77
#, elixir-autogen, elixir-format
msgid "Settings"
msgstr ""
#: lib/claper_web/live/event_live/manage.ex:746
#: lib/claper_web/live/event_live/manage.ex:727
#: lib/claper_web/live/form_live/form_component.html.heex:37
#: lib/claper_web/live/user_settings_live/show.html.heex:34
#: lib/claper_web/templates/user_registration/new.html.heex:29
#: lib/claper_web/templates/user_reset_password/new.html.heex:28
#: lib/claper_web/templates/user_session/new.html.heex:41
#: lib/claper_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format
msgid "Email"
msgstr ""
@@ -36,8 +36,8 @@ msgstr ""
msgid "Oops, check that all fields are filled in correctly."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:112
#: lib/claper_web/live/user_settings_live/show.html.heex:127
#: lib/claper_web/live/user_settings_live/show.html.heex:155
#: lib/claper_web/live/user_settings_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "Change"
msgstr ""
@@ -47,7 +47,8 @@ msgstr ""
msgid "Code"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:103
#: lib/claper_web/live/user_settings_live/show.html.heex:146
#: lib/claper_web/templates/user_session/new.html.heex:40
#, elixir-autogen, elixir-format
msgid "Email address"
msgstr ""
@@ -57,7 +58,7 @@ msgstr ""
msgid "Logout"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:93
#: lib/claper_web/live/user_settings_live/show.html.heex:136
#, elixir-autogen, elixir-format
msgid "Personal informations"
msgstr ""
@@ -99,7 +100,7 @@ msgstr ""
msgid "Join"
msgstr ""
#: lib/claper_web/live/event_live/index.ex:156
#: lib/claper_web/live/event_live/index.ex:180
#: lib/claper_web/live/event_live/join.html.heex:31
#: lib/claper_web/live/event_live/join.html.heex:54
#, elixir-autogen, elixir-format
@@ -171,60 +172,61 @@ msgstr ""
msgid "Created successfully"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:186
#: lib/claper_web/live/event_live/event_card_component.ex:207
#: lib/claper_web/live/event_live/event_card_component.ex:224
#: lib/claper_web/live/event_live/event_card_component.ex:304
#: lib/claper_web/live/event_live/form_component.ex:97
#: lib/claper_web/live/event_live/index.ex:139
#: lib/claper_web/live/event_live/index.ex:161
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:51
#: lib/claper_web/live/embed_live/form_component.html.heex:69
#: lib/claper_web/live/event_live/event_form_component.html.heex:25
#: lib/claper_web/live/event_live/event_form_component.html.heex:32
#: lib/claper_web/live/event_live/index.ex:146
#: lib/claper_web/live/event_live/index.ex:170
#: lib/claper_web/live/event_live/index.html.heex:64
#: lib/claper_web/live/form_live/form_component.html.heex:98
#: lib/claper_web/live/poll_live/form_component.html.heex:94
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#, elixir-autogen, elixir-format
msgid "Create"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#: lib/claper_web/live/event_live/event_card_component.ex:249
#: lib/claper_web/live/embed_live/form_component.html.heex:74
#: lib/claper_web/live/event_live/event_card_component.ex:400
#: lib/claper_web/live/event_live/event_form_component.html.heex:37
#: lib/claper_web/live/event_live/manage.html.heex:1241
#: lib/claper_web/live/event_live/manage.html.heex:1353
#: lib/claper_web/live/event_live/manageable_post_component.ex:92
#: lib/claper_web/live/event_live/post_component.ex:70
#: lib/claper_web/live/event_live/post_component.ex:142
#: lib/claper_web/live/form_live/form_component.html.heex:103
#: lib/claper_web/live/poll_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:111
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:52
#: lib/claper_web/live/embed_live/form_component.html.heex:70
#: lib/claper_web/live/event_live/event_form_component.html.heex:24
#: lib/claper_web/live/event_live/event_form_component.html.heex:31
#: lib/claper_web/live/form_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:95
#: lib/claper_web/live/poll_live/form_component.html.heex:107
#: lib/claper_web/live/user_settings_live/show.html.heex:38
#: lib/claper_web/live/user_settings_live/show.html.heex:80
#: lib/claper_web/live/user_settings_live/show.html.heex:123
#, elixir-autogen, elixir-format
msgid "Save"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:76
#: lib/claper_web/live/user_settings_live/show.ex:137
#, elixir-autogen, elixir-format
msgid "A link to confirm your email change has been sent to the new address."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:40
#: lib/claper_web/live/user_settings_live/show.ex:53
#, elixir-autogen, elixir-format
msgid "Change the email address you want associated with your account."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:37
#: lib/claper_web/live/user_settings_live/show.ex:50
#, elixir-autogen, elixir-format
msgid "Update your email"
msgstr ""
@@ -306,12 +308,12 @@ msgstr ""
msgid "or drag and drop"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:308
#: lib/claper_web/live/event_live/event_form_component.ex:313
#, elixir-autogen, elixir-format
msgid "You have selected an incorrect file type"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:307
#: lib/claper_web/live/event_live/event_form_component.ex:312
#, elixir-autogen, elixir-format
msgid "Your file is too large"
msgstr ""
@@ -326,12 +328,12 @@ msgstr ""
msgid "Presentation replaced"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:280
#: lib/claper_web/live/event_live/manage.html.heex:274
#, elixir-autogen, elixir-format
msgid "Edit poll"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:279
#: lib/claper_web/live/event_live/manage.html.heex:273
#, elixir-autogen, elixir-format
msgid "New poll"
msgstr ""
@@ -341,7 +343,7 @@ msgstr ""
msgid "Title of your poll"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.ex:309
#: lib/claper_web/live/event_live/event_form_component.ex:314
#, elixir-autogen, elixir-format
msgid "Upload failed"
msgstr ""
@@ -352,12 +354,12 @@ msgid "Add poll to know opinion of your public."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:165
#: lib/claper_web/live/event_live/manage.html.heex:730
#: lib/claper_web/live/event_live/manage.html.heex:779
#, elixir-autogen, elixir-format
msgid "Poll"
msgstr ""
#: lib/claper_web/live/poll_live/form_component.html.heex:35
#: lib/claper_web/live/poll_live/form_component.html.heex:30
#, elixir-format, ex-autogen, elixir-autogen
msgid "Choice %{count}"
msgid_plural "Choice %{count}"
@@ -391,22 +393,22 @@ msgstr ""
msgid "Changing your file will remove all interaction elements like polls associated."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1058
#: lib/claper_web/live/event_live/manage.html.heex:1170
#, elixir-autogen, elixir-format
msgid "Messages from attendees will appear here."
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:218
#: lib/claper_web/live/event_live/event_card_component.ex:318
#, elixir-autogen, elixir-format
msgid "Processing your file..."
msgstr ""
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#: lib/claper_web/live/poll_live/form_component.html.heex:118
#, elixir-autogen, elixir-format
msgid "This will delete all responses associated and the poll itself, are you sure?"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:450
#: lib/claper_web/live/event_live/manage.html.heex:444
#, elixir-autogen, elixir-format
msgid "Press <strong>F</strong> in the presentation window to enable fullscreen"
msgstr ""
@@ -416,7 +418,7 @@ msgstr ""
msgid "Ask, comment..."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1004
#: lib/claper_web/live/event_live/manage.html.heex:1116
#: lib/claper_web/live/stat_live/index.html.heex:71
#: lib/claper_web/live/stat_live/index.html.heex:271
#, elixir-autogen, elixir-format
@@ -455,7 +457,7 @@ msgstr ""
msgid "You can change your email by visiting the URL below"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:703
#: lib/claper_web/live/event_live/manage.html.heex:701
#, elixir-autogen, elixir-format
msgid "Add interaction"
msgstr ""
@@ -573,7 +575,7 @@ msgstr ""
msgid "No messages has been sent"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:255
#: lib/claper_web/live/event_live/event_card_component.ex:382
#, elixir-autogen, elixir-format
msgid "This will delete all data related to your event, this cannot be undone. Confirm ?"
msgstr ""
@@ -595,7 +597,7 @@ msgstr ""
msgid "Engagement rate"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:197
#: lib/claper_web/live/event_live/event_card_component.ex:256
#, elixir-autogen, elixir-format
msgid "Error when processing the file"
msgstr ""
@@ -608,7 +610,7 @@ msgstr ""
#: lib/claper_web/live/event_live/join.html.heex:38
#: lib/claper_web/live/event_live/join.html.heex:61
#: lib/claper_web/templates/user_session/new.html.heex:60
#: lib/claper_web/templates/user_session/new.html.heex:62
#, elixir-autogen, elixir-format
msgid "Login"
msgstr ""
@@ -624,30 +626,21 @@ msgid "Or use the code:"
msgstr ""
#: lib/claper_web/templates/user_registration/new.html.heex:46
#: lib/claper_web/templates/user_session/new.html.heex:71
#: lib/claper_web/templates/user_session/new.html.heex:84
#, elixir-autogen, elixir-format
msgid "Create account"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:118
#: lib/claper_web/live/user_settings_live/show.html.heex:161
#: lib/claper_web/templates/user_registration/new.html.heex:37
#: lib/claper_web/templates/user_reset_password/edit.html.heex:34
#: lib/claper_web/templates/user_session/new.html.heex:51
#: lib/claper_web/templates/user_session/new.html.heex:50
#: lib/claper_web/templates/user_session/new.html.heex:52
#, elixir-autogen, elixir-format
msgid "Password"
msgstr ""
#: lib/claper_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format
msgid "Your email address"
msgstr ""
#: lib/claper_web/templates/user_session/new.html.heex:49
#, elixir-autogen, elixir-format
msgid "Your password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:49
#: lib/claper_web/live/user_settings_live/show.ex:62
#, elixir-autogen, elixir-format
msgid "Change the password used to access your account."
msgstr ""
@@ -658,16 +651,17 @@ msgid "Current password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:76
#: lib/claper_web/live/user_settings_live/show.html.heex:112
#, elixir-autogen, elixir-format
msgid "New password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:46
#: lib/claper_web/live/user_settings_live/show.ex:59
#, elixir-autogen, elixir-format
msgid "Update your password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:98
#: lib/claper_web/live/user_settings_live/show.ex:159
#, elixir-autogen, elixir-format
msgid "Your password has been updated."
msgstr ""
@@ -679,7 +673,7 @@ msgid_plural "Field %{count}"
msgstr[0] ""
msgstr[1] ""
#: lib/claper_web/live/event_live/manage.html.heex:207
#: lib/claper_web/live/event_live/manage.html.heex:201
#, elixir-autogen, elixir-format
msgid "Add form to collect data from your public."
msgstr ""
@@ -689,35 +683,35 @@ msgstr ""
msgid "Current form"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:301
#: lib/claper_web/live/event_live/manage.html.heex:295
#, elixir-autogen, elixir-format
msgid "Edit form"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:204
#: lib/claper_web/live/event_live/manage.html.heex:774
#: lib/claper_web/live/event_live/manage.html.heex:1253
#: lib/claper_web/live/event_live/manage.html.heex:198
#: lib/claper_web/live/event_live/manage.html.heex:823
#: lib/claper_web/live/event_live/manage.html.heex:1365
#: lib/claper_web/live/stat_live/index.html.heex:217
#, elixir-autogen, elixir-format
msgid "Form"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1028
#: lib/claper_web/live/event_live/manage.html.heex:1140
#, elixir-autogen, elixir-format
msgid "Form submissions"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1226
#: lib/claper_web/live/event_live/manage.html.heex:1338
#, elixir-autogen, elixir-format
msgid "Form submissions from attendees will appear here."
msgstr ""
#: lib/claper_web/live/event_live/manage.ex:745
#: lib/claper_web/live/event_live/manage.ex:726
#, elixir-autogen, elixir-format
msgid "Name"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:300
#: lib/claper_web/live/event_live/manage.html.heex:294
#, elixir-autogen, elixir-format
msgid "New form"
msgstr ""
@@ -742,7 +736,7 @@ msgstr ""
msgid "Text"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1246
#: lib/claper_web/live/event_live/manage.html.heex:1358
#, elixir-autogen, elixir-format
msgid "This cannot be undone, confirm ?"
msgstr ""
@@ -777,12 +771,12 @@ msgstr ""
msgid "Select one or multiple options"
msgstr ""
#: lib/claper_web/live/poll_live/form_component.html.heex:24
#: lib/claper_web/live/poll_live/form_component.html.heex:96
#, elixir-autogen, elixir-format
msgid "Multiple answers"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:269
#: lib/claper_web/live/event_live/manage.html.heex:263
#, elixir-autogen, elixir-format
msgid "Import all interactions from another presentation"
msgstr ""
@@ -797,7 +791,7 @@ msgstr ""
msgid "Interactions imported successfully"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:341
#: lib/claper_web/live/event_live/manage.html.heex:335
#, elixir-autogen, elixir-format
msgid "Select presentation"
msgstr ""
@@ -871,7 +865,7 @@ msgstr ""
msgid "Account creation is disabled"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:238
#: lib/claper_web/live/event_live/manage.html.heex:232
#, elixir-autogen, elixir-format
msgid "Add a Youtube video or any web content."
msgstr ""
@@ -881,7 +875,7 @@ msgstr ""
msgid "Confirm new password"
msgstr ""
#: lib/claper_web/templates/user_session/new.html.heex:66
#: lib/claper_web/templates/user_session/new.html.heex:79
#, elixir-autogen, elixir-format
msgid "Forgot your password?"
msgstr ""
@@ -917,22 +911,17 @@ msgstr ""
msgid "Send link to reset password"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:38
#, elixir-autogen, elixir-format
msgid "Attendee can view the web content on their device"
msgstr ""
#: lib/claper_web/live/event_live/embed_component.ex:59
#, elixir-autogen, elixir-format
msgid "Current web content"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:322
#: lib/claper_web/live/event_live/manage.html.heex:316
#, elixir-autogen, elixir-format
msgid "Edit web content"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:321
#: lib/claper_web/live/event_live/manage.html.heex:315
#, elixir-autogen, elixir-format
msgid "New web content"
msgstr ""
@@ -942,12 +931,7 @@ msgstr ""
msgid "See current web content"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "The iframe component"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:62
#: lib/claper_web/live/embed_live/form_component.html.heex:80
#, elixir-autogen, elixir-format
msgid "This will delete the web content, are you sure?"
msgstr ""
@@ -957,18 +941,13 @@ msgstr ""
msgid "Title"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:236
#: lib/claper_web/live/event_live/manage.html.heex:817
#: lib/claper_web/live/event_live/manage.html.heex:230
#: lib/claper_web/live/event_live/manage.html.heex:867
#: lib/claper_web/live/stat_live/index.html.heex:259
#, elixir-autogen, elixir-format
msgid "Web content"
msgstr ""
#: lib/claper/embeds/embed.ex:50
#, elixir-autogen, elixir-format
msgid "Invalid embed format (should start with <iframe> and end with </iframe>)"
msgstr ""
#: lib/claper_web/live/event_live/manageable_post_component.ex:38
#: lib/claper_web/live/event_live/manageable_post_component.ex:67
#, elixir-autogen, elixir-format
@@ -981,12 +960,12 @@ msgstr ""
msgid "Pinned"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1020
#: lib/claper_web/live/event_live/manage.html.heex:1132
#, elixir-autogen, elixir-format
msgid "Pinned messages"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1180
#: lib/claper_web/live/event_live/manage.html.heex:1292
#, elixir-autogen, elixir-format
msgid "Pinned messages will appear here."
msgstr ""
@@ -1037,7 +1016,7 @@ msgstr ""
msgid "Access"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:180
#: lib/claper_web/live/user_settings_live/show.html.heex:285
#, elixir-autogen, elixir-format
msgid "All your events and files will be permanently deleted, are you sure?"
msgstr ""
@@ -1052,22 +1031,22 @@ msgstr ""
msgid "Attendees room"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:172
#: lib/claper_web/live/user_settings_live/show.html.heex:277
#, elixir-autogen, elixir-format
msgid "Be careful, these actions are irreversible"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:169
#: lib/claper_web/live/user_settings_live/show.html.heex:274
#, elixir-autogen, elixir-format
msgid "Danger zone"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:185
#: lib/claper_web/live/user_settings_live/show.html.heex:290
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete account"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:514
#: lib/claper_web/live/event_live/manage.html.heex:508
#, elixir-autogen, elixir-format
msgid "Open presentation"
msgstr ""
@@ -1077,12 +1056,12 @@ msgstr ""
msgid "Terminate"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:244
#: lib/claper_web/live/event_live/event_card_component.ex:344
#, elixir-autogen, elixir-format
msgid "View report"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:137
#: lib/claper_web/live/user_settings_live/show.ex:219
#, elixir-autogen, elixir-format
msgid "Your account has been deleted."
msgstr ""
@@ -1097,19 +1076,19 @@ msgstr ""
msgid "Animations in PPT/PPTX files are not supported, which is why we recommend exporting your presentation to PDF to ensure it displays correctly."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:992
#: lib/claper_web/live/event_live/manage.html.heex:1104
#, elixir-autogen, elixir-format, fuzzy
msgid "Attendees interactions"
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:5
#: lib/claper_web/live/event_live/index.html.heex:76
#: lib/claper_web/live/event_live/manage.html.heex:382
#: lib/claper_web/live/event_live/manage.html.heex:376
#, elixir-autogen, elixir-format
msgid "Back"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:496
#: lib/claper_web/live/event_live/manage.html.heex:490
#, elixir-autogen, elixir-format
msgid "Click here to open the presentation window."
msgstr ""
@@ -1121,25 +1100,25 @@ msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:6
#: lib/claper_web/live/event_live/index.html.heex:77
#: lib/claper_web/live/event_live/manage.html.heex:383
#: lib/claper_web/live/event_live/manage.html.heex:377
#: lib/claper_web/templates/lti/registration/success.html.heex:26
#, elixir-autogen, elixir-format, fuzzy
msgid "Finish"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:994
#: lib/claper_web/live/event_live/manage.html.heex:1106
#, elixir-autogen, elixir-format
msgid "Here you'll find all interactions from your attendees. You can manage messages, pinned messages, and submitted forms."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:994
#: lib/claper_web/live/event_live/manage.html.heex:1106
#, elixir-autogen, elixir-format
msgid "Identify users by their unique avatars."
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:4
#: lib/claper_web/live/event_live/index.html.heex:75
#: lib/claper_web/live/event_live/manage.html.heex:381
#: lib/claper_web/live/event_live/manage.html.heex:375
#, elixir-autogen, elixir-format, fuzzy
msgid "Next"
msgstr ""
@@ -1149,17 +1128,17 @@ msgstr ""
msgid "Select your presentation file. Accepted formats are PDF, PPT, or PPTX. Ensure the file size does not exceed the maximum limit."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:494
#: lib/claper_web/live/event_live/manage.html.heex:488
#, elixir-autogen, elixir-format, fuzzy
msgid "Time to launch your presentation!"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1295
#: lib/claper_web/live/event_live/manage.html.heex:1407
#, elixir-autogen, elixir-format
msgid "Use the associated keyboard shortcuts for quick toggling of these settings."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1295
#: lib/claper_web/live/event_live/manage.html.heex:1407
#, elixir-autogen, elixir-format
msgid "You can control each setting for the presentation (showing on the big screen) and on the attendee's room."
msgstr ""
@@ -1194,11 +1173,6 @@ msgstr ""
msgid "If you don't have time and just want interactions without a presentation file, you can create a new event here."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:660
#, elixir-autogen, elixir-format
msgid "If you have slides, you can navigate through the slides with ease using the arrow keys on your keyboard."
msgstr ""
#: lib/claper_web/live/event_live/event_form_component.html.heex:299
#, elixir-autogen, elixir-format, fuzzy
msgid "If you require assistance in managing your event, you can grant access to others. Simply enter their email addresses; once they register an account with these emails, they will be able to manage the event."
@@ -1250,7 +1224,7 @@ msgstr ""
msgid "Quick event"
msgstr ""
#: lib/claper_web/live/event_live/index.ex:73
#: lib/claper_web/live/event_live/index.ex:80
#, elixir-autogen, elixir-format
msgid "Quick event created successfully"
msgstr ""
@@ -1280,11 +1254,6 @@ msgstr ""
msgid "This event has been terminated"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:660
#, elixir-autogen, elixir-format, fuzzy
msgid "This section contains all your presentation slides (if you have upload one). You have the option to add interactions to each slide."
msgstr ""
#: lib/claper_web/live/event_live/index.html.heex:117
#, elixir-autogen, elixir-format, fuzzy
msgid "Welcome to Claper! You can create a new event here."
@@ -1295,11 +1264,6 @@ msgstr ""
msgid "When your event will start?"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:659
#, elixir-autogen, elixir-format, fuzzy
msgid "Your slides and/or interactions"
msgstr ""
#: lib/claper_web/live/event_live/show.html.heex:38
#, elixir-autogen, elixir-format
msgid "Create your next presentation with"
@@ -1312,22 +1276,22 @@ msgstr ""
msgid "Event doesn't exist"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#: lib/claper_web/live/user_settings_live/show.html.heex:244
#, elixir-autogen, elixir-format
msgid "Customize your account"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:159
#: lib/claper_web/live/user_settings_live/show.html.heex:264
#, elixir-autogen, elixir-format
msgid "Language"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#: lib/claper_web/live/user_settings_live/show.html.heex:241
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:119
#: lib/claper_web/live/user_settings_live/show.ex:180
#, elixir-autogen, elixir-format
msgid "Your preferences have been updated."
msgstr ""
@@ -1337,22 +1301,22 @@ msgstr ""
msgid "Question"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1012
#: lib/claper_web/live/event_live/manage.html.heex:1124
#, elixir-autogen, elixir-format
msgid "Questions"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1099
#: lib/claper_web/live/event_live/manage.html.heex:1211
#, elixir-autogen, elixir-format
msgid "Questions will appear here."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1141
#: lib/claper_web/live/event_live/manage.html.heex:1253
#, elixir-autogen, elixir-format
msgid "Sort by date"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:1120
#: lib/claper_web/live/event_live/manage.html.heex:1232
#, elixir-autogen, elixir-format
msgid "Sort by popularity"
msgstr ""
@@ -1373,7 +1337,7 @@ msgstr ""
msgid "My account"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:96
#: lib/claper_web/live/user_settings_live/show.html.heex:139
#, elixir-autogen, elixir-format, fuzzy
msgid "Your personal informations to access your account"
msgstr ""
@@ -1434,22 +1398,22 @@ msgid "Add Claper"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:94
#: lib/claper_web/live/event_live/manage.html.heex:487
#: lib/claper_web/live/event_live/manage.html.heex:481
#, elixir-autogen, elixir-format
msgid "Close preview"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:687
#: lib/claper_web/live/event_live/manage.html.heex:685
#, elixir-autogen, elixir-format, fuzzy
msgid "Create your first interaction."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:875
#: lib/claper_web/live/event_live/manage.html.heex:1025
#, elixir-autogen, elixir-format, fuzzy
msgid "Disable"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:957
#: lib/claper_web/live/event_live/manage.html.heex:1069
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr ""
@@ -1459,18 +1423,13 @@ msgstr ""
msgid "Enable messages to change this option"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:918
#: lib/claper_web/live/event_live/manage.html.heex:749
#, elixir-autogen, elixir-format, fuzzy
msgid "Hide on presentation"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:933
#, elixir-autogen, elixir-format
msgid "Hide results for attendees"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:93
#: lib/claper_web/live/event_live/manage.html.heex:486
#: lib/claper_web/live/event_live/manage.html.heex:480
#, elixir-autogen, elixir-format
msgid "Open preview"
msgstr ""
@@ -1485,17 +1444,137 @@ msgstr ""
msgid "Show messages to change this option"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:921
#: lib/claper_web/live/event_live/manage.html.heex:752
#, elixir-autogen, elixir-format
msgid "Show on presentation"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:936
#, elixir-autogen, elixir-format
msgid "Show results for attendees"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:684
#: lib/claper_web/live/event_live/manage.html.heex:682
#, elixir-autogen, elixir-format
msgid "This slide does not have any interactions."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:176
#, elixir-autogen, elixir-format
msgid "Accounts linked"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:208
#: lib/claper_web/live/user_settings_live/show.html.heex:226
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unlink this account?"
msgstr ""
#: lib/claper_web/templates/user_session/new.html.heex:74
#, elixir-autogen, elixir-format
msgid "Login with %{provider}"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:101
#: lib/claper_web/live/user_settings_live/show.ex:115
#, elixir-autogen, elixir-format
msgid "The account has been unlinked."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:658
#, elixir-autogen, elixir-format
msgid "This section contains all your interactions."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:211
#: lib/claper_web/live/user_settings_live/show.html.heex:229
#, elixir-autogen, elixir-format, fuzzy
msgid "Unlink"
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:658
#, elixir-autogen, elixir-format
msgid "You can add interactions to your presentation slides."
msgstr ""
#: lib/claper_web/live/event_live/manage.html.heex:657
#, elixir-autogen, elixir-format
msgid "Your interactions"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.html.heex:119
#, elixir-autogen, elixir-format, fuzzy
msgid "Confirm password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:68
#, elixir-autogen, elixir-format
msgid "Set a new password"
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:71
#, elixir-autogen, elixir-format
msgid "Set a new password for your account before unlinking it."
msgstr ""
#: lib/claper_web/live/user_settings_live/show.ex:204
#, elixir-autogen, elixir-format
msgid "Your password has been set, you can now unlink your account."
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:38
#, elixir-autogen, elixir-format
msgid "Iframe code"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:39
#, elixir-autogen, elixir-format
msgid "Link to the content"
msgstr ""
#: lib/claper/embeds/embed.ex:65
#: lib/claper/embeds/embed.ex:74
#: lib/claper/embeds/embed.ex:83
#, elixir-autogen, elixir-format
msgid "Please enter a valid %{provider} link"
msgstr ""
#: lib/claper/embeds/embed.ex:62
#: lib/claper/embeds/embed.ex:71
#: lib/claper/embeds/embed.ex:80
#, elixir-autogen, elixir-format
msgid "Please enter a valid link starting with http:// or https://"
msgstr ""
#: lib/claper/embeds/embed.ex:89
#, elixir-autogen, elixir-format
msgid "Please enter valid HTML content with an iframe tag"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "Provider"
msgstr ""
#: lib/claper_web/live/poll_live/form_component.html.heex:89
#, elixir-autogen, elixir-format
msgid "Attendees can see the results on their device"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#, elixir-autogen, elixir-format, fuzzy
msgid "Attendees can view the web content on their device"
msgstr ""
#: lib/claper_web/live/embed_live/form_component.html.heex:49
#: lib/claper_web/live/poll_live/form_component.html.heex:82
#, elixir-autogen, elixir-format
msgid "Options"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:186
#: lib/claper_web/live/event_live/event_card_component.ex:266
#: lib/claper_web/live/event_live/event_card_component.ex:355
#, elixir-autogen, elixir-format
msgid "Action"
msgstr ""
#: lib/claper_web/live/event_live/event_card_component.ex:242
#, elixir-autogen, elixir-format
msgid "Duplicate"
msgstr ""

View File

@@ -8,18 +8,18 @@ msgstr ""
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: lib/claper_web/live/event_live/manage.html.heex:1293
#: lib/claper_web/live/user_settings_live/show.ex:55
#: lib/claper_web/live/event_live/manage.html.heex:1405
#: lib/claper_web/live/user_settings_live/show.ex:77
#, elixir-autogen, elixir-format
msgid "Settings"
msgstr "Configuración"
#: lib/claper_web/live/event_live/manage.ex:746
#: lib/claper_web/live/event_live/manage.ex:727
#: lib/claper_web/live/form_live/form_component.html.heex:37
#: lib/claper_web/live/user_settings_live/show.html.heex:34
#: lib/claper_web/templates/user_registration/new.html.heex:29
#: lib/claper_web/templates/user_reset_password/new.html.heex:28
#: lib/claper_web/templates/user_session/new.html.heex:41
#: lib/claper_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format
msgid "Email"
msgstr "Email"
@@ -36,8 +36,8 @@ msgstr "Únete a la experiencia Claper"
msgid "Oops, check that all fields are filled in correctly."
msgstr "Uy, comprueba que todos los campos estén correctamente rellenados."
#: lib/claper_web/live/user_settings_live/show.html.heex:112
#: lib/claper_web/live/user_settings_live/show.html.heex:127
#: lib/claper_web/live/user_settings_live/show.html.heex:155
#: lib/claper_web/live/user_settings_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "Change"
msgstr "Cambiar"
@@ -47,7 +47,8 @@ msgstr "Cambiar"
msgid "Code"
msgstr "Código"
#: lib/claper_web/live/user_settings_live/show.html.heex:103
#: lib/claper_web/live/user_settings_live/show.html.heex:146
#: lib/claper_web/templates/user_session/new.html.heex:40
#, elixir-autogen, elixir-format
msgid "Email address"
msgstr "Dirección email"
@@ -57,7 +58,7 @@ msgstr "Dirección email"
msgid "Logout"
msgstr "Salir"
#: lib/claper_web/live/user_settings_live/show.html.heex:93
#: lib/claper_web/live/user_settings_live/show.html.heex:136
#, elixir-autogen, elixir-format
msgid "Personal informations"
msgstr "Información personal"
@@ -99,7 +100,7 @@ msgstr "¡Sé el primero en reaccionar!"
msgid "Join"
msgstr "Unirse"
#: lib/claper_web/live/event_live/index.ex:156
#: lib/claper_web/live/event_live/index.ex:180
#: lib/claper_web/live/event_live/join.html.heex:31
#: lib/claper_web/live/event_live/join.html.heex:54
#, elixir-autogen, elixir-format
@@ -171,60 +172,61 @@ msgstr "Volver a principal"
msgid "Created successfully"
msgstr "Creado exitosamente"
#: lib/claper_web/live/event_live/event_card_component.ex:186
#: lib/claper_web/live/event_live/event_card_component.ex:207
#: lib/claper_web/live/event_live/event_card_component.ex:224
#: lib/claper_web/live/event_live/event_card_component.ex:304
#: lib/claper_web/live/event_live/form_component.ex:97
#: lib/claper_web/live/event_live/index.ex:139
#: lib/claper_web/live/event_live/index.ex:161
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr "Editar"
#: lib/claper_web/live/embed_live/form_component.html.heex:51
#: lib/claper_web/live/embed_live/form_component.html.heex:69
#: lib/claper_web/live/event_live/event_form_component.html.heex:25
#: lib/claper_web/live/event_live/event_form_component.html.heex:32
#: lib/claper_web/live/event_live/index.ex:146
#: lib/claper_web/live/event_live/index.ex:170
#: lib/claper_web/live/event_live/index.html.heex:64
#: lib/claper_web/live/form_live/form_component.html.heex:98
#: lib/claper_web/live/poll_live/form_component.html.heex:94
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#, elixir-autogen, elixir-format
msgid "Create"
msgstr "Crear"
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#: lib/claper_web/live/event_live/event_card_component.ex:249
#: lib/claper_web/live/embed_live/form_component.html.heex:74
#: lib/claper_web/live/event_live/event_card_component.ex:400
#: lib/claper_web/live/event_live/event_form_component.html.heex:37
#: lib/claper_web/live/event_live/manage.html.heex:1241
#: lib/claper_web/live/event_live/manage.html.heex:1353
#: lib/claper_web/live/event_live/manageable_post_component.ex:92
#: lib/claper_web/live/event_live/post_component.ex:70
#: lib/claper_web/live/event_live/post_component.ex:142
#: lib/claper_web/live/form_live/form_component.html.heex:103
#: lib/claper_web/live/poll_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:111
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr "Borrar"
#: lib/claper_web/live/embed_live/form_component.html.heex:52
#: lib/claper_web/live/embed_live/form_component.html.heex:70
#: lib/claper_web/live/event_live/event_form_component.html.heex:24
#: lib/claper_web/live/event_live/event_form_component.html.heex:31
#: lib/claper_web/live/form_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:95
#: lib/claper_web/live/poll_live/form_component.html.heex:107
#: lib/claper_web/live/user_settings_live/show.html.heex:38
#: lib/claper_web/live/user_settings_live/show.html.heex:80
#: lib/claper_web/live/user_settings_live/show.html.heex:123
#, elixir-autogen, elixir-format
msgid "Save"
msgstr "Guardar"
#: lib/claper_web/live/user_settings_live/show.ex:76
#: lib/claper_web/live/user_settings_live/show.ex:137
#, elixir-autogen, elixir-format
msgid "A link to confirm your email change has been sent to the new address."
msgstr "Se ha enviado un enlace a tu buzón para confirmar el cambio de email."
#: lib/claper_web/live/user_settings_live/show.ex:40
#: lib/claper_web/live/user_settings_live/show.ex:53
#, elixir-autogen, elixir-format
msgid "Change the email address you want associated with your account."
msgstr "Cambiar la dirección email asociada a tu cuenta."
#: lib/claper_web/live/user_settings_live/show.ex:37
#: lib/claper_web/live/user_settings_live/show.ex:50
#, elixir-autogen, elixir-format
msgid "Update your email"
msgstr "Actualizar tu email"
@@ -306,12 +308,12 @@ msgstr "Subir un fichero"
msgid "or drag and drop"
msgstr "o arrastra"
#: lib/claper_web/live/event_live/event_form_component.ex:308
#: lib/claper_web/live/event_live/event_form_component.ex:313
#, elixir-autogen, elixir-format
msgid "You have selected an incorrect file type"
msgstr "Has seleccionado un tipo de fichero incorrecto"
#: lib/claper_web/live/event_live/event_form_component.ex:307
#: lib/claper_web/live/event_live/event_form_component.ex:312
#, elixir-autogen, elixir-format
msgid "Your file is too large"
msgstr "Tu fichero es demasiado grande"
@@ -326,12 +328,12 @@ msgstr "Cambiar fichero"
msgid "Presentation replaced"
msgstr "Presentación sustituida"
#: lib/claper_web/live/event_live/manage.html.heex:280
#: lib/claper_web/live/event_live/manage.html.heex:274
#, elixir-autogen, elixir-format
msgid "Edit poll"
msgstr "Editar votación"
#: lib/claper_web/live/event_live/manage.html.heex:279
#: lib/claper_web/live/event_live/manage.html.heex:273
#, elixir-autogen, elixir-format
msgid "New poll"
msgstr "Nueva votación"
@@ -341,7 +343,7 @@ msgstr "Nueva votación"
msgid "Title of your poll"
msgstr "Título de tu votación"
#: lib/claper_web/live/event_live/event_form_component.ex:309
#: lib/claper_web/live/event_live/event_form_component.ex:314
#, elixir-autogen, elixir-format
msgid "Upload failed"
msgstr "Subida fallida"
@@ -352,12 +354,12 @@ msgid "Add poll to know opinion of your public."
msgstr "Añadir una votación para conocer la opinión del público."
#: lib/claper_web/live/event_live/manage.html.heex:165
#: lib/claper_web/live/event_live/manage.html.heex:730
#: lib/claper_web/live/event_live/manage.html.heex:779
#, elixir-autogen, elixir-format
msgid "Poll"
msgstr "Votación"
#: lib/claper_web/live/poll_live/form_component.html.heex:35
#: lib/claper_web/live/poll_live/form_component.html.heex:30
#, elixir-format, ex-autogen, elixir-autogen
msgid "Choice %{count}"
msgid_plural "Choice %{count}"
@@ -391,22 +393,22 @@ msgstr "Dirección email del usuario"
msgid "Changing your file will remove all interaction elements like polls associated."
msgstr "Hacer cambios en tu fichero borrará todos los elementos de interacción asociados, incluyendo votaciones"
#: lib/claper_web/live/event_live/manage.html.heex:1058
#: lib/claper_web/live/event_live/manage.html.heex:1170
#, elixir-autogen, elixir-format
msgid "Messages from attendees will appear here."
msgstr "Los mensajes de los asistentes aparecerán aquí."
#: lib/claper_web/live/event_live/event_card_component.ex:218
#: lib/claper_web/live/event_live/event_card_component.ex:318
#, elixir-autogen, elixir-format
msgid "Processing your file..."
msgstr "Procesando tu fichero..."
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#: lib/claper_web/live/poll_live/form_component.html.heex:118
#, elixir-autogen, elixir-format
msgid "This will delete all responses associated and the poll itself, are you sure?"
msgstr "Esto borrará todas las respuestas asociadas y la propia votación, ¿estás seguro/a?"
#: lib/claper_web/live/event_live/manage.html.heex:450
#: lib/claper_web/live/event_live/manage.html.heex:444
#, elixir-autogen, elixir-format
msgid "Press <strong>F</strong> in the presentation window to enable fullscreen"
msgstr "Pulsa <strong>F</strong> en la ventana de presentación para activar el modo pantalla completa"
@@ -416,7 +418,7 @@ msgstr "Pulsa <strong>F</strong> en la ventana de presentación para activar el
msgid "Ask, comment..."
msgstr "Pregunta, deja comentarios..."
#: lib/claper_web/live/event_live/manage.html.heex:1004
#: lib/claper_web/live/event_live/manage.html.heex:1116
#: lib/claper_web/live/stat_live/index.html.heex:71
#: lib/claper_web/live/stat_live/index.html.heex:271
#, elixir-autogen, elixir-format
@@ -455,7 +457,7 @@ msgstr "Si tienes problemas con el botón superior, copia y pega la URL de debaj
msgid "You can change your email by visiting the URL below"
msgstr "Puedes cambiar tu correo visitando la URL de debajo"
#: lib/claper_web/live/event_live/manage.html.heex:703
#: lib/claper_web/live/event_live/manage.html.heex:701
#, elixir-autogen, elixir-format
msgid "Add interaction"
msgstr "Añadir interacción"
@@ -573,7 +575,7 @@ msgstr "Historial de interacciones"
msgid "No messages has been sent"
msgstr "No se han enviado mensajes"
#: lib/claper_web/live/event_live/event_card_component.ex:255
#: lib/claper_web/live/event_live/event_card_component.ex:382
#, elixir-autogen, elixir-format
msgid "This will delete all data related to your event, this cannot be undone. Confirm ?"
msgstr "Esto borrará todos los datos relativos a tu evento, y no se puede deshacer. ¿Estás seguro/a?"
@@ -595,7 +597,7 @@ msgstr "Pico de audiencia"
msgid "Engagement rate"
msgstr "Nivel de participación"
#: lib/claper_web/live/event_live/event_card_component.ex:197
#: lib/claper_web/live/event_live/event_card_component.ex:256
#, elixir-autogen, elixir-format
msgid "Error when processing the file"
msgstr ""
@@ -608,7 +610,7 @@ msgstr "Acerca de"
#: lib/claper_web/live/event_live/join.html.heex:38
#: lib/claper_web/live/event_live/join.html.heex:61
#: lib/claper_web/templates/user_session/new.html.heex:60
#: lib/claper_web/templates/user_session/new.html.heex:62
#, elixir-autogen, elixir-format
msgid "Login"
msgstr "Iniciar sesión"
@@ -624,30 +626,21 @@ msgid "Or use the code:"
msgstr "O usa el código:"
#: lib/claper_web/templates/user_registration/new.html.heex:46
#: lib/claper_web/templates/user_session/new.html.heex:71
#: lib/claper_web/templates/user_session/new.html.heex:84
#, elixir-autogen, elixir-format
msgid "Create account"
msgstr "Crear cuenta"
#: lib/claper_web/live/user_settings_live/show.html.heex:118
#: lib/claper_web/live/user_settings_live/show.html.heex:161
#: lib/claper_web/templates/user_registration/new.html.heex:37
#: lib/claper_web/templates/user_reset_password/edit.html.heex:34
#: lib/claper_web/templates/user_session/new.html.heex:51
#: lib/claper_web/templates/user_session/new.html.heex:50
#: lib/claper_web/templates/user_session/new.html.heex:52
#, elixir-autogen, elixir-format
msgid "Password"
msgstr "Contraseña"
#: lib/claper_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format
msgid "Your email address"
msgstr "Tu dirección email"
#: lib/claper_web/templates/user_session/new.html.heex:49
#, elixir-autogen, elixir-format
msgid "Your password"
msgstr "Tu contraseña"
#: lib/claper_web/live/user_settings_live/show.ex:49
#: lib/claper_web/live/user_settings_live/show.ex:62
#, elixir-autogen, elixir-format
msgid "Change the password used to access your account."
msgstr "Cambiar la contraseña usada para acceder a tu cuenta."
@@ -658,16 +651,17 @@ msgid "Current password"
msgstr "Contraseña actual"
#: lib/claper_web/live/user_settings_live/show.html.heex:76
#: lib/claper_web/live/user_settings_live/show.html.heex:112
#, elixir-autogen, elixir-format
msgid "New password"
msgstr "Contraseña nueva"
#: lib/claper_web/live/user_settings_live/show.ex:46
#: lib/claper_web/live/user_settings_live/show.ex:59
#, elixir-autogen, elixir-format
msgid "Update your password"
msgstr "Actualizar tu contraseña"
#: lib/claper_web/live/user_settings_live/show.ex:98
#: lib/claper_web/live/user_settings_live/show.ex:159
#, elixir-autogen, elixir-format
msgid "Your password has been updated."
msgstr "Tu contraseña ha sido actualizada."
@@ -679,7 +673,7 @@ msgid_plural "Field %{count}"
msgstr[0] "Campo %{count}"
msgstr[1] "Campos %{count}"
#: lib/claper_web/live/event_live/manage.html.heex:207
#: lib/claper_web/live/event_live/manage.html.heex:201
#, elixir-autogen, elixir-format
msgid "Add form to collect data from your public."
msgstr "Añadir formulario para recopilar datos del público."
@@ -689,35 +683,35 @@ msgstr "Añadir formulario para recopilar datos del público."
msgid "Current form"
msgstr "Formulario actual"
#: lib/claper_web/live/event_live/manage.html.heex:301
#: lib/claper_web/live/event_live/manage.html.heex:295
#, elixir-autogen, elixir-format
msgid "Edit form"
msgstr "Editar formulario"
#: lib/claper_web/live/event_live/manage.html.heex:204
#: lib/claper_web/live/event_live/manage.html.heex:774
#: lib/claper_web/live/event_live/manage.html.heex:1253
#: lib/claper_web/live/event_live/manage.html.heex:198
#: lib/claper_web/live/event_live/manage.html.heex:823
#: lib/claper_web/live/event_live/manage.html.heex:1365
#: lib/claper_web/live/stat_live/index.html.heex:217
#, elixir-autogen, elixir-format
msgid "Form"
msgstr "Formulario"
#: lib/claper_web/live/event_live/manage.html.heex:1028
#: lib/claper_web/live/event_live/manage.html.heex:1140
#, elixir-autogen, elixir-format
msgid "Form submissions"
msgstr "Envíos de formulario"
#: lib/claper_web/live/event_live/manage.html.heex:1226
#: lib/claper_web/live/event_live/manage.html.heex:1338
#, elixir-autogen, elixir-format
msgid "Form submissions from attendees will appear here."
msgstr "Los envíos de formulario de los asistentes aparecerán aquí."
#: lib/claper_web/live/event_live/manage.ex:745
#: lib/claper_web/live/event_live/manage.ex:726
#, elixir-autogen, elixir-format
msgid "Name"
msgstr "Nombre"
#: lib/claper_web/live/event_live/manage.html.heex:300
#: lib/claper_web/live/event_live/manage.html.heex:294
#, elixir-autogen, elixir-format
msgid "New form"
msgstr "Nuevo formulario"
@@ -742,7 +736,7 @@ msgstr "Enviar"
msgid "Text"
msgstr "Texto"
#: lib/claper_web/live/event_live/manage.html.heex:1246
#: lib/claper_web/live/event_live/manage.html.heex:1358
#, elixir-autogen, elixir-format
msgid "This cannot be undone, confirm ?"
msgstr "Esto no se puede deshacer, ¿estás seguro/a?"
@@ -777,12 +771,12 @@ msgstr "Seleccione una opción"
msgid "Select one or multiple options"
msgstr "Seleccione una o varias opciones"
#: lib/claper_web/live/poll_live/form_component.html.heex:24
#: lib/claper_web/live/poll_live/form_component.html.heex:96
#, elixir-autogen, elixir-format
msgid "Multiple answers"
msgstr "Respuestas múltiples"
#: lib/claper_web/live/event_live/manage.html.heex:269
#: lib/claper_web/live/event_live/manage.html.heex:263
#, elixir-autogen, elixir-format
msgid "Import all interactions from another presentation"
msgstr "Importar todas las interacciones de otra presentación"
@@ -797,7 +791,7 @@ msgstr "La importación de interacciones ha fallado"
msgid "Interactions imported successfully"
msgstr "Interacciones importadas con éxito"
#: lib/claper_web/live/event_live/manage.html.heex:341
#: lib/claper_web/live/event_live/manage.html.heex:335
#, elixir-autogen, elixir-format
msgid "Select presentation"
msgstr "Seleccionar presentación"
@@ -871,7 +865,7 @@ msgstr "desactivada"
msgid "Account creation is disabled"
msgstr "La creación de cuentas está desactivada"
#: lib/claper_web/live/event_live/manage.html.heex:238
#: lib/claper_web/live/event_live/manage.html.heex:232
#, elixir-autogen, elixir-format
msgid "Add a Youtube video or any web content."
msgstr "Agregar vídeo de Youtube o cualquier contenido web."
@@ -881,7 +875,7 @@ msgstr "Agregar vídeo de Youtube o cualquier contenido web."
msgid "Confirm new password"
msgstr "Confirmar nueva contraseña"
#: lib/claper_web/templates/user_session/new.html.heex:66
#: lib/claper_web/templates/user_session/new.html.heex:79
#, elixir-autogen, elixir-format
msgid "Forgot your password?"
msgstr "¿Contraseña olvidada?"
@@ -917,22 +911,17 @@ msgstr "Restablecer tu contraseña"
msgid "Send link to reset password"
msgstr "Enviar enlace para restablecer contraseña"
#: lib/claper_web/live/embed_live/form_component.html.heex:38
#, elixir-autogen, elixir-format
msgid "Attendee can view the web content on their device"
msgstr "Los asistentes puede ver el contenido web en su dispositivo"
#: lib/claper_web/live/event_live/embed_component.ex:59
#, elixir-autogen, elixir-format
msgid "Current web content"
msgstr "Contenido actual"
#: lib/claper_web/live/event_live/manage.html.heex:322
#: lib/claper_web/live/event_live/manage.html.heex:316
#, elixir-autogen, elixir-format
msgid "Edit web content"
msgstr "Editar contenido web"
#: lib/claper_web/live/event_live/manage.html.heex:321
#: lib/claper_web/live/event_live/manage.html.heex:315
#, elixir-autogen, elixir-format
msgid "New web content"
msgstr "Nuevo contenido web"
@@ -942,12 +931,7 @@ msgstr "Nuevo contenido web"
msgid "See current web content"
msgstr "Ver contenido"
#: lib/claper_web/live/embed_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "The iframe component"
msgstr "El componente iframe"
#: lib/claper_web/live/embed_live/form_component.html.heex:62
#: lib/claper_web/live/embed_live/form_component.html.heex:80
#, elixir-autogen, elixir-format
msgid "This will delete the web content, are you sure?"
msgstr "Esto borrará el contenido web, ¿estás seguro/a?"
@@ -957,18 +941,13 @@ msgstr "Esto borrará el contenido web, ¿estás seguro/a?"
msgid "Title"
msgstr "Título"
#: lib/claper_web/live/event_live/manage.html.heex:236
#: lib/claper_web/live/event_live/manage.html.heex:817
#: lib/claper_web/live/event_live/manage.html.heex:230
#: lib/claper_web/live/event_live/manage.html.heex:867
#: lib/claper_web/live/stat_live/index.html.heex:259
#, elixir-autogen, elixir-format
msgid "Web content"
msgstr "Contenido"
#: lib/claper/embeds/embed.ex:50
#, elixir-autogen, elixir-format
msgid "Invalid embed format (should start with <iframe> and end with </iframe>)"
msgstr "Formato embebido inválido (debe comenzar con <iframe> y acabar con </iframe>)"
#: lib/claper_web/live/event_live/manageable_post_component.ex:38
#: lib/claper_web/live/event_live/manageable_post_component.ex:67
#, elixir-autogen, elixir-format
@@ -981,12 +960,12 @@ msgstr "Anclar"
msgid "Pinned"
msgstr "Anclado"
#: lib/claper_web/live/event_live/manage.html.heex:1020
#: lib/claper_web/live/event_live/manage.html.heex:1132
#, elixir-autogen, elixir-format
msgid "Pinned messages"
msgstr "Mensajes anclados"
#: lib/claper_web/live/event_live/manage.html.heex:1180
#: lib/claper_web/live/event_live/manage.html.heex:1292
#, elixir-autogen, elixir-format
msgid "Pinned messages will appear here."
msgstr "Los mensajes anclados aparecerán aquí."
@@ -1037,7 +1016,7 @@ msgstr "Guardado"
msgid "Access"
msgstr "Acceso"
#: lib/claper_web/live/user_settings_live/show.html.heex:180
#: lib/claper_web/live/user_settings_live/show.html.heex:285
#, elixir-autogen, elixir-format
msgid "All your events and files will be permanently deleted, are you sure?"
msgstr "Todos tus eventos y ficheros serán borrados para siempre, ¿estás seguro/a?"
@@ -1052,22 +1031,22 @@ msgstr "¿Estás seguro de que quieres finalizar este evento? Esta acción no pu
msgid "Attendees room"
msgstr "Sala de asistentes"
#: lib/claper_web/live/user_settings_live/show.html.heex:172
#: lib/claper_web/live/user_settings_live/show.html.heex:277
#, elixir-autogen, elixir-format
msgid "Be careful, these actions are irreversible"
msgstr "Ten cuidado, estas acciones son irreversibles"
#: lib/claper_web/live/user_settings_live/show.html.heex:169
#: lib/claper_web/live/user_settings_live/show.html.heex:274
#, elixir-autogen, elixir-format
msgid "Danger zone"
msgstr "Zona de peligro"
#: lib/claper_web/live/user_settings_live/show.html.heex:185
#: lib/claper_web/live/user_settings_live/show.html.heex:290
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete account"
msgstr "Borrar cuenta"
#: lib/claper_web/live/event_live/manage.html.heex:514
#: lib/claper_web/live/event_live/manage.html.heex:508
#, elixir-autogen, elixir-format
msgid "Open presentation"
msgstr "Abrir presentación"
@@ -1077,12 +1056,12 @@ msgstr "Abrir presentación"
msgid "Terminate"
msgstr "Terminar"
#: lib/claper_web/live/event_live/event_card_component.ex:244
#: lib/claper_web/live/event_live/event_card_component.ex:344
#, elixir-autogen, elixir-format
msgid "View report"
msgstr "Informe de visualización"
#: lib/claper_web/live/user_settings_live/show.ex:137
#: lib/claper_web/live/user_settings_live/show.ex:219
#, elixir-autogen, elixir-format
msgid "Your account has been deleted."
msgstr "Tu cuenta ha sido borrada"
@@ -1097,19 +1076,19 @@ msgstr "Código de acceso"
msgid "Animations in PPT/PPTX files are not supported, which is why we recommend exporting your presentation to PDF to ensure it displays correctly."
msgstr "No se soportan las animaciones de los ficheros PPT/PPTX, por lo que te recomendamos exportar tus presentaciones a formato PDF para tener la seguridad de que se mostrarán correctamente."
#: lib/claper_web/live/event_live/manage.html.heex:992
#: lib/claper_web/live/event_live/manage.html.heex:1104
#, elixir-autogen, elixir-format, fuzzy
msgid "Attendees interactions"
msgstr "Interacciones de asistentes"
#: lib/claper_web/live/event_live/event_form_component.html.heex:5
#: lib/claper_web/live/event_live/index.html.heex:76
#: lib/claper_web/live/event_live/manage.html.heex:382
#: lib/claper_web/live/event_live/manage.html.heex:376
#, elixir-autogen, elixir-format
msgid "Back"
msgstr "Atrás"
#: lib/claper_web/live/event_live/manage.html.heex:496
#: lib/claper_web/live/event_live/manage.html.heex:490
#, elixir-autogen, elixir-format
msgid "Click here to open the presentation window."
msgstr "Pulsa aquí para abrir la ventana de presentación."
@@ -1121,25 +1100,25 @@ msgstr "Colaboradores"
#: lib/claper_web/live/event_live/event_form_component.html.heex:6
#: lib/claper_web/live/event_live/index.html.heex:77
#: lib/claper_web/live/event_live/manage.html.heex:383
#: lib/claper_web/live/event_live/manage.html.heex:377
#: lib/claper_web/templates/lti/registration/success.html.heex:26
#, elixir-autogen, elixir-format, fuzzy
msgid "Finish"
msgstr "Finalizar"
#: lib/claper_web/live/event_live/manage.html.heex:994
#: lib/claper_web/live/event_live/manage.html.heex:1106
#, elixir-autogen, elixir-format
msgid "Here you'll find all interactions from your attendees. You can manage messages, pinned messages, and submitted forms."
msgstr "Aquí encontrarás todas las interacciones de tus asistentes. Puedes gestionar mensajes, mensajes anclados y formularios enviados."
#: lib/claper_web/live/event_live/manage.html.heex:994
#: lib/claper_web/live/event_live/manage.html.heex:1106
#, elixir-autogen, elixir-format
msgid "Identify users by their unique avatars."
msgstr "Identificar usuarios por sus avatares únicos."
#: lib/claper_web/live/event_live/event_form_component.html.heex:4
#: lib/claper_web/live/event_live/index.html.heex:75
#: lib/claper_web/live/event_live/manage.html.heex:381
#: lib/claper_web/live/event_live/manage.html.heex:375
#, elixir-autogen, elixir-format, fuzzy
msgid "Next"
msgstr "Siguiente"
@@ -1149,17 +1128,17 @@ msgstr "Siguiente"
msgid "Select your presentation file. Accepted formats are PDF, PPT, or PPTX. Ensure the file size does not exceed the maximum limit."
msgstr "Selecciona tu fichero de presentación. Los formatos aceptados son PDF, PPT, o PPTX. Asegúrate de que el tamaño del fichero no excede el límite máximo."
#: lib/claper_web/live/event_live/manage.html.heex:494
#: lib/claper_web/live/event_live/manage.html.heex:488
#, elixir-autogen, elixir-format, fuzzy
msgid "Time to launch your presentation!"
msgstr "¡Es el momento de lanzar tu presentación!"
#: lib/claper_web/live/event_live/manage.html.heex:1295
#: lib/claper_web/live/event_live/manage.html.heex:1407
#, elixir-autogen, elixir-format
msgid "Use the associated keyboard shortcuts for quick toggling of these settings."
msgstr "Usa los atajos de teclado asociados para conmutar estos ajustes."
#: lib/claper_web/live/event_live/manage.html.heex:1295
#: lib/claper_web/live/event_live/manage.html.heex:1407
#, elixir-autogen, elixir-format
msgid "You can control each setting for the presentation (showing on the big screen) and on the attendee's room."
msgstr "Puedes controlar cada ajuste para la presentación (lo que se muestra en la pantalla grande) y en la sala de asistentes."
@@ -1194,11 +1173,6 @@ msgstr "Fecha de inicio del evento"
msgid "If you don't have time and just want interactions without a presentation file, you can create a new event here."
msgstr "Si no tienes tiempo y sólo quieres interactuar sin ningún fichero de presentación, puedes crear un evento nuevo aquí."
#: lib/claper_web/live/event_live/manage.html.heex:660
#, elixir-autogen, elixir-format
msgid "If you have slides, you can navigate through the slides with ease using the arrow keys on your keyboard."
msgstr "Si tienes diapositivas, puedes navegar a través de ellas fácilmente usando las teclas de flecha de tu teclado."
#: lib/claper_web/live/event_live/event_form_component.html.heex:299
#, elixir-autogen, elixir-format, fuzzy
msgid "If you require assistance in managing your event, you can grant access to others. Simply enter their email addresses; once they register an account with these emails, they will be able to manage the event."
@@ -1250,7 +1224,7 @@ msgstr "Ajustes de presentación"
msgid "Quick event"
msgstr "Evento rápido"
#: lib/claper_web/live/event_live/index.ex:73
#: lib/claper_web/live/event_live/index.ex:80
#, elixir-autogen, elixir-format
msgid "Quick event created successfully"
msgstr "Evento rápido creado con éxito"
@@ -1280,11 +1254,6 @@ msgstr "Este código será usado por tus asistentes para acceder al evento. Tien
msgid "This event has been terminated"
msgstr "Este evento ha sido terminado"
#: lib/claper_web/live/event_live/manage.html.heex:660
#, elixir-autogen, elixir-format, fuzzy
msgid "This section contains all your presentation slides (if you have upload one). You have the option to add interactions to each slide."
msgstr "Esta sección contiene todas las diapositivas de tu presentación (si has subido una). Tienes la opción de añadir interacciones a cada diapositiva."
#: lib/claper_web/live/event_live/index.html.heex:117
#, elixir-autogen, elixir-format, fuzzy
msgid "Welcome to Claper! You can create a new event here."
@@ -1295,11 +1264,6 @@ msgstr "¡Bienvenido/a a Claper! Aquí puedes crear un nuevo evento."
msgid "When your event will start?"
msgstr "¿Cuándo empezará tu evento?"
#: lib/claper_web/live/event_live/manage.html.heex:659
#, elixir-autogen, elixir-format, fuzzy
msgid "Your slides and/or interactions"
msgstr "Tus diapositivas y/o interacciones"
#: lib/claper_web/live/event_live/show.html.heex:38
#, elixir-autogen, elixir-format
msgid "Create your next presentation with"
@@ -1312,22 +1276,22 @@ msgstr "Crea tu siguiente presentación con"
msgid "Event doesn't exist"
msgstr "El evento no existe"
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#: lib/claper_web/live/user_settings_live/show.html.heex:244
#, elixir-autogen, elixir-format
msgid "Customize your account"
msgstr "Personaliza tu cuenta"
#: lib/claper_web/live/user_settings_live/show.html.heex:159
#: lib/claper_web/live/user_settings_live/show.html.heex:264
#, elixir-autogen, elixir-format
msgid "Language"
msgstr "Idioma"
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#: lib/claper_web/live/user_settings_live/show.html.heex:241
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr "Preferencias"
#: lib/claper_web/live/user_settings_live/show.ex:119
#: lib/claper_web/live/user_settings_live/show.ex:180
#, elixir-autogen, elixir-format
msgid "Your preferences have been updated."
msgstr "Tus preferencias han sido actualizadas."
@@ -1337,22 +1301,22 @@ msgstr "Tus preferencias han sido actualizadas."
msgid "Question"
msgstr "Pregunta"
#: lib/claper_web/live/event_live/manage.html.heex:1012
#: lib/claper_web/live/event_live/manage.html.heex:1124
#, elixir-autogen, elixir-format
msgid "Questions"
msgstr "Preguntas"
#: lib/claper_web/live/event_live/manage.html.heex:1099
#: lib/claper_web/live/event_live/manage.html.heex:1211
#, elixir-autogen, elixir-format
msgid "Questions will appear here."
msgstr "Las preguntas aparecerán aquí."
#: lib/claper_web/live/event_live/manage.html.heex:1141
#: lib/claper_web/live/event_live/manage.html.heex:1253
#, elixir-autogen, elixir-format
msgid "Sort by date"
msgstr "Ordenar por fecha"
#: lib/claper_web/live/event_live/manage.html.heex:1120
#: lib/claper_web/live/event_live/manage.html.heex:1232
#, elixir-autogen, elixir-format
msgid "Sort by popularity"
msgstr "Ordenar por popularidad"
@@ -1373,7 +1337,7 @@ msgstr "Documentación"
msgid "My account"
msgstr "Mi cuenta"
#: lib/claper_web/live/user_settings_live/show.html.heex:96
#: lib/claper_web/live/user_settings_live/show.html.heex:139
#, elixir-autogen, elixir-format, fuzzy
msgid "Your personal informations to access your account"
msgstr "Tus información personal para acceder a tu cuenta"
@@ -1434,22 +1398,22 @@ msgid "Add Claper"
msgstr "Agregar Claper"
#: lib/claper_web/live/event_live/manage.html.heex:94
#: lib/claper_web/live/event_live/manage.html.heex:487
#: lib/claper_web/live/event_live/manage.html.heex:481
#, elixir-autogen, elixir-format
msgid "Close preview"
msgstr "Cerrar vista previa"
#: lib/claper_web/live/event_live/manage.html.heex:687
#: lib/claper_web/live/event_live/manage.html.heex:685
#, elixir-autogen, elixir-format, fuzzy
msgid "Create your first interaction."
msgstr "Crea tu primera interacción."
#: lib/claper_web/live/event_live/manage.html.heex:875
#: lib/claper_web/live/event_live/manage.html.heex:1025
#, elixir-autogen, elixir-format, fuzzy
msgid "Disable"
msgstr "Desactivar"
#: lib/claper_web/live/event_live/manage.html.heex:957
#: lib/claper_web/live/event_live/manage.html.heex:1069
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr "Activar"
@@ -1459,18 +1423,13 @@ msgstr "Activar"
msgid "Enable messages to change this option"
msgstr "Activar mensajes para cambiar esta opción"
#: lib/claper_web/live/event_live/manage.html.heex:918
#: lib/claper_web/live/event_live/manage.html.heex:749
#, elixir-autogen, elixir-format, fuzzy
msgid "Hide on presentation"
msgstr "Ocultar en la presentación"
#: lib/claper_web/live/event_live/manage.html.heex:933
#, elixir-autogen, elixir-format
msgid "Hide results for attendees"
msgstr "Ocultar resultados para los asistentes"
#: lib/claper_web/live/event_live/manage.html.heex:93
#: lib/claper_web/live/event_live/manage.html.heex:486
#: lib/claper_web/live/event_live/manage.html.heex:480
#, elixir-autogen, elixir-format
msgid "Open preview"
msgstr "Abrir vista previa"
@@ -1485,17 +1444,137 @@ msgstr "Mostrar instrucciones (Código QR)"
msgid "Show messages to change this option"
msgstr "Mostrar mensajes para cambiar esta opción"
#: lib/claper_web/live/event_live/manage.html.heex:921
#: lib/claper_web/live/event_live/manage.html.heex:752
#, elixir-autogen, elixir-format
msgid "Show on presentation"
msgstr "Mostrar en la presentación"
#: lib/claper_web/live/event_live/manage.html.heex:936
#, elixir-autogen, elixir-format
msgid "Show results for attendees"
msgstr "Mostrar resultados para los asistentes"
#: lib/claper_web/live/event_live/manage.html.heex:684
#: lib/claper_web/live/event_live/manage.html.heex:682
#, elixir-autogen, elixir-format
msgid "This slide does not have any interactions."
msgstr "Esta diapositiva no tiene interacciones."
#: lib/claper_web/live/user_settings_live/show.html.heex:176
#, elixir-autogen, elixir-format
msgid "Accounts linked"
msgstr "Cuentas vinculadas"
#: lib/claper_web/live/user_settings_live/show.html.heex:208
#: lib/claper_web/live/user_settings_live/show.html.heex:226
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unlink this account?"
msgstr "¿Estás seguro de que quieres desvincular esta cuenta?"
#: lib/claper_web/templates/user_session/new.html.heex:74
#, elixir-autogen, elixir-format
msgid "Login with %{provider}"
msgstr "Iniciar sesión con %{provider}"
#: lib/claper_web/live/user_settings_live/show.ex:101
#: lib/claper_web/live/user_settings_live/show.ex:115
#, elixir-autogen, elixir-format
msgid "The account has been unlinked."
msgstr "La cuenta ha sido desvinculada."
#: lib/claper_web/live/event_live/manage.html.heex:658
#, elixir-autogen, elixir-format
msgid "This section contains all your interactions."
msgstr "Esta sección contiene todas tus interacciones."
#: lib/claper_web/live/user_settings_live/show.html.heex:211
#: lib/claper_web/live/user_settings_live/show.html.heex:229
#, elixir-autogen, elixir-format, fuzzy
msgid "Unlink"
msgstr "Desvincular"
#: lib/claper_web/live/event_live/manage.html.heex:658
#, elixir-autogen, elixir-format
msgid "You can add interactions to your presentation slides."
msgstr "Puedes añadir interacciones a tus diapositivas de presentación."
#: lib/claper_web/live/event_live/manage.html.heex:657
#, elixir-autogen, elixir-format
msgid "Your interactions"
msgstr "Tus interacciones"
#: lib/claper_web/live/user_settings_live/show.html.heex:119
#, elixir-autogen, elixir-format, fuzzy
msgid "Confirm password"
msgstr "Confirmar nueva contraseña"
#: lib/claper_web/live/user_settings_live/show.ex:68
#, elixir-autogen, elixir-format
msgid "Set a new password"
msgstr "Establecer una nueva contraseña"
#: lib/claper_web/live/user_settings_live/show.ex:71
#, elixir-autogen, elixir-format
msgid "Set a new password for your account before unlinking it."
msgstr "Establece una nueva contraseña para tu cuenta antes de desvincularla."
#: lib/claper_web/live/user_settings_live/show.ex:204
#, elixir-autogen, elixir-format
msgid "Your password has been set, you can now unlink your account."
msgstr "Tu contraseña ha sido establecida, ahora puedes desvincular tu cuenta."
#: lib/claper_web/live/embed_live/form_component.html.heex:38
#, elixir-autogen, elixir-format
msgid "Iframe code"
msgstr "Código Iframe"
#: lib/claper_web/live/embed_live/form_component.html.heex:39
#, elixir-autogen, elixir-format
msgid "Link to the content"
msgstr "Enlace al contenido"
#: lib/claper/embeds/embed.ex:65
#: lib/claper/embeds/embed.ex:74
#: lib/claper/embeds/embed.ex:83
#, elixir-autogen, elixir-format
msgid "Please enter a valid %{provider} link"
msgstr "Por favor, introduce un enlace válido de %{provider}"
#: lib/claper/embeds/embed.ex:62
#: lib/claper/embeds/embed.ex:71
#: lib/claper/embeds/embed.ex:80
#, elixir-autogen, elixir-format
msgid "Please enter a valid link starting with http:// or https://"
msgstr "Por favor, introduce un enlace válido que comience con http:// o https://"
#: lib/claper/embeds/embed.ex:89
#, elixir-autogen, elixir-format
msgid "Please enter valid HTML content with an iframe tag"
msgstr "Por favor, introduce contenido HTML válido con una etiqueta iframe"
#: lib/claper_web/live/embed_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "Provider"
msgstr "Proveedor"
#: lib/claper_web/live/poll_live/form_component.html.heex:89
#, elixir-autogen, elixir-format
msgid "Attendees can see the results on their device"
msgstr "Los asistentes pueden ver los resultados en su dispositivo"
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#, elixir-autogen, elixir-format, fuzzy
msgid "Attendees can view the web content on their device"
msgstr "Los asistentes pueden ver el contenido web en su dispositivo"
#: lib/claper_web/live/embed_live/form_component.html.heex:49
#: lib/claper_web/live/poll_live/form_component.html.heex:82
#, elixir-autogen, elixir-format
msgid "Options"
msgstr "Opciones"
#: lib/claper_web/live/event_live/event_card_component.ex:186
#: lib/claper_web/live/event_live/event_card_component.ex:266
#: lib/claper_web/live/event_live/event_card_component.ex:355
#, elixir-autogen, elixir-format
msgid "Action"
msgstr "Acción"
#: lib/claper_web/live/event_live/event_card_component.ex:242
#, elixir-autogen, elixir-format
msgid "Duplicate"
msgstr "Duplicar"

View File

@@ -8,18 +8,18 @@ msgstr ""
"Language: fr\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: lib/claper_web/live/event_live/manage.html.heex:1293
#: lib/claper_web/live/user_settings_live/show.ex:55
#: lib/claper_web/live/event_live/manage.html.heex:1405
#: lib/claper_web/live/user_settings_live/show.ex:77
#, elixir-autogen, elixir-format
msgid "Settings"
msgstr "Paramètres"
#: lib/claper_web/live/event_live/manage.ex:746
#: lib/claper_web/live/event_live/manage.ex:727
#: lib/claper_web/live/form_live/form_component.html.heex:37
#: lib/claper_web/live/user_settings_live/show.html.heex:34
#: lib/claper_web/templates/user_registration/new.html.heex:29
#: lib/claper_web/templates/user_reset_password/new.html.heex:28
#: lib/claper_web/templates/user_session/new.html.heex:41
#: lib/claper_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format
msgid "Email"
msgstr "Email"
@@ -36,8 +36,8 @@ msgstr "Rejoignez l'expérience Claper"
msgid "Oops, check that all fields are filled in correctly."
msgstr "Oups, vérifiez que tous les champs sont remplis correctement."
#: lib/claper_web/live/user_settings_live/show.html.heex:112
#: lib/claper_web/live/user_settings_live/show.html.heex:127
#: lib/claper_web/live/user_settings_live/show.html.heex:155
#: lib/claper_web/live/user_settings_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "Change"
msgstr "Changer"
@@ -47,7 +47,8 @@ msgstr "Changer"
msgid "Code"
msgstr "Code"
#: lib/claper_web/live/user_settings_live/show.html.heex:103
#: lib/claper_web/live/user_settings_live/show.html.heex:146
#: lib/claper_web/templates/user_session/new.html.heex:40
#, elixir-autogen, elixir-format
msgid "Email address"
msgstr "Adresse email"
@@ -57,7 +58,7 @@ msgstr "Adresse email"
msgid "Logout"
msgstr "Déconnexion"
#: lib/claper_web/live/user_settings_live/show.html.heex:93
#: lib/claper_web/live/user_settings_live/show.html.heex:136
#, elixir-autogen, elixir-format
msgid "Personal informations"
msgstr "Informations personnelles"
@@ -99,7 +100,7 @@ msgstr "Soyez le premier à réagir !"
msgid "Join"
msgstr "Rejoindre"
#: lib/claper_web/live/event_live/index.ex:156
#: lib/claper_web/live/event_live/index.ex:180
#: lib/claper_web/live/event_live/join.html.heex:31
#: lib/claper_web/live/event_live/join.html.heex:54
#, elixir-autogen, elixir-format
@@ -171,60 +172,61 @@ msgstr "Retourner à l'accueil"
msgid "Created successfully"
msgstr "Mis à jour avec succès"
#: lib/claper_web/live/event_live/event_card_component.ex:186
#: lib/claper_web/live/event_live/event_card_component.ex:207
#: lib/claper_web/live/event_live/event_card_component.ex:224
#: lib/claper_web/live/event_live/event_card_component.ex:304
#: lib/claper_web/live/event_live/form_component.ex:97
#: lib/claper_web/live/event_live/index.ex:139
#: lib/claper_web/live/event_live/index.ex:161
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr "Modifier"
#: lib/claper_web/live/embed_live/form_component.html.heex:51
#: lib/claper_web/live/embed_live/form_component.html.heex:69
#: lib/claper_web/live/event_live/event_form_component.html.heex:25
#: lib/claper_web/live/event_live/event_form_component.html.heex:32
#: lib/claper_web/live/event_live/index.ex:146
#: lib/claper_web/live/event_live/index.ex:170
#: lib/claper_web/live/event_live/index.html.heex:64
#: lib/claper_web/live/form_live/form_component.html.heex:98
#: lib/claper_web/live/poll_live/form_component.html.heex:94
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#, elixir-autogen, elixir-format
msgid "Create"
msgstr "Créer"
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#: lib/claper_web/live/event_live/event_card_component.ex:249
#: lib/claper_web/live/embed_live/form_component.html.heex:74
#: lib/claper_web/live/event_live/event_card_component.ex:400
#: lib/claper_web/live/event_live/event_form_component.html.heex:37
#: lib/claper_web/live/event_live/manage.html.heex:1241
#: lib/claper_web/live/event_live/manage.html.heex:1353
#: lib/claper_web/live/event_live/manageable_post_component.ex:92
#: lib/claper_web/live/event_live/post_component.ex:70
#: lib/claper_web/live/event_live/post_component.ex:142
#: lib/claper_web/live/form_live/form_component.html.heex:103
#: lib/claper_web/live/poll_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:111
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr "Supprimer"
#: lib/claper_web/live/embed_live/form_component.html.heex:52
#: lib/claper_web/live/embed_live/form_component.html.heex:70
#: lib/claper_web/live/event_live/event_form_component.html.heex:24
#: lib/claper_web/live/event_live/event_form_component.html.heex:31
#: lib/claper_web/live/form_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:95
#: lib/claper_web/live/poll_live/form_component.html.heex:107
#: lib/claper_web/live/user_settings_live/show.html.heex:38
#: lib/claper_web/live/user_settings_live/show.html.heex:80
#: lib/claper_web/live/user_settings_live/show.html.heex:123
#, elixir-autogen, elixir-format
msgid "Save"
msgstr "Sauvegarder"
#: lib/claper_web/live/user_settings_live/show.ex:76
#: lib/claper_web/live/user_settings_live/show.ex:137
#, elixir-autogen, elixir-format
msgid "A link to confirm your email change has been sent to the new address."
msgstr "Un lien pour confirmer votre changement d'email a été envoyé à la nouvelle adresse."
#: lib/claper_web/live/user_settings_live/show.ex:40
#: lib/claper_web/live/user_settings_live/show.ex:53
#, elixir-autogen, elixir-format
msgid "Change the email address you want associated with your account."
msgstr "Modifiez l'email que vous souhaitez associer à votre compte."
#: lib/claper_web/live/user_settings_live/show.ex:37
#: lib/claper_web/live/user_settings_live/show.ex:50
#, elixir-autogen, elixir-format
msgid "Update your email"
msgstr "Changer votre email"
@@ -306,12 +308,12 @@ msgstr "Chargez un fichier"
msgid "or drag and drop"
msgstr "ou glisser-déposer"
#: lib/claper_web/live/event_live/event_form_component.ex:308
#: lib/claper_web/live/event_live/event_form_component.ex:313
#, elixir-autogen, elixir-format
msgid "You have selected an incorrect file type"
msgstr "Vous avez sélectionné un type de fichier incorrect"
#: lib/claper_web/live/event_live/event_form_component.ex:307
#: lib/claper_web/live/event_live/event_form_component.ex:312
#, elixir-autogen, elixir-format
msgid "Your file is too large"
msgstr "Votre fichier est trop volumineux"
@@ -326,12 +328,12 @@ msgstr "Changer le fichier"
msgid "Presentation replaced"
msgstr "Présentation remplacée"
#: lib/claper_web/live/event_live/manage.html.heex:280
#: lib/claper_web/live/event_live/manage.html.heex:274
#, elixir-autogen, elixir-format
msgid "Edit poll"
msgstr "Modifier le sondage"
#: lib/claper_web/live/event_live/manage.html.heex:279
#: lib/claper_web/live/event_live/manage.html.heex:273
#, elixir-autogen, elixir-format
msgid "New poll"
msgstr "Nouveau sondage"
@@ -341,7 +343,7 @@ msgstr "Nouveau sondage"
msgid "Title of your poll"
msgstr "Titre de votre sondage"
#: lib/claper_web/live/event_live/event_form_component.ex:309
#: lib/claper_web/live/event_live/event_form_component.ex:314
#, elixir-autogen, elixir-format
msgid "Upload failed"
msgstr "Échec du chargement"
@@ -352,12 +354,12 @@ msgid "Add poll to know opinion of your public."
msgstr "Ajoutez un sondage pour connaître l'opinion de votre public."
#: lib/claper_web/live/event_live/manage.html.heex:165
#: lib/claper_web/live/event_live/manage.html.heex:730
#: lib/claper_web/live/event_live/manage.html.heex:779
#, elixir-autogen, elixir-format
msgid "Poll"
msgstr "Sondage"
#: lib/claper_web/live/poll_live/form_component.html.heex:35
#: lib/claper_web/live/poll_live/form_component.html.heex:30
#, elixir-format, ex-autogen, elixir-autogen
msgid "Choice %{count}"
msgid_plural "Choice %{count}"
@@ -392,22 +394,22 @@ msgstr "Adresse email"
msgid "Changing your file will remove all interaction elements like polls associated."
msgstr "La modification de votre fichier supprimera tous les éléments d'interaction comme les sondages associés."
#: lib/claper_web/live/event_live/manage.html.heex:1058
#: lib/claper_web/live/event_live/manage.html.heex:1170
#, elixir-autogen, elixir-format
msgid "Messages from attendees will appear here."
msgstr "Les messages des participants apparaîtront ici."
#: lib/claper_web/live/event_live/event_card_component.ex:218
#: lib/claper_web/live/event_live/event_card_component.ex:318
#, elixir-autogen, elixir-format
msgid "Processing your file..."
msgstr "Traitement de votre fichier..."
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#: lib/claper_web/live/poll_live/form_component.html.heex:118
#, elixir-autogen, elixir-format
msgid "This will delete all responses associated and the poll itself, are you sure?"
msgstr "Cela supprimera toutes les réponses associées et le sondage lui-même, êtes-vous sûr ?"
#: lib/claper_web/live/event_live/manage.html.heex:450
#: lib/claper_web/live/event_live/manage.html.heex:444
#, elixir-autogen, elixir-format
msgid "Press <strong>F</strong> in the presentation window to enable fullscreen"
msgstr "Appuyez sur <strong>F</strong> dans la fenêtre de présentation pour activer le plein écran"
@@ -417,7 +419,7 @@ msgstr "Appuyez sur <strong>F</strong> dans la fenêtre de présentation pour ac
msgid "Ask, comment..."
msgstr "Questionnez, commentez..."
#: lib/claper_web/live/event_live/manage.html.heex:1004
#: lib/claper_web/live/event_live/manage.html.heex:1116
#: lib/claper_web/live/stat_live/index.html.heex:71
#: lib/claper_web/live/stat_live/index.html.heex:271
#, elixir-autogen, elixir-format
@@ -456,7 +458,7 @@ msgstr "Si vous rencontrez des difficultés avec le bouton ci-dessus, copiez et
msgid "You can change your email by visiting the URL below"
msgstr "Vous pouvez modifier votre email en visitant l'URL ci-dessous"
#: lib/claper_web/live/event_live/manage.html.heex:703
#: lib/claper_web/live/event_live/manage.html.heex:701
#, elixir-autogen, elixir-format, fuzzy
msgid "Add interaction"
msgstr "Ajouter une interaction"
@@ -576,7 +578,7 @@ msgstr "Historique des interactions"
msgid "No messages has been sent"
msgstr "Aucun message n'a été envoyé"
#: lib/claper_web/live/event_live/event_card_component.ex:255
#: lib/claper_web/live/event_live/event_card_component.ex:382
#, elixir-autogen, elixir-format
msgid "This will delete all data related to your event, this cannot be undone. Confirm ?"
msgstr "Cette opération supprimera toutes les données relatives à votre événement, elle ne peut être annulée. Confirmer ?"
@@ -599,7 +601,7 @@ msgstr "Pic d'audience"
msgid "Engagement rate"
msgstr "Taux d'engagement"
#: lib/claper_web/live/event_live/event_card_component.ex:197
#: lib/claper_web/live/event_live/event_card_component.ex:256
#, elixir-autogen, elixir-format
msgid "Error when processing the file"
msgstr "Erreur lors du traitement du fichier"
@@ -612,7 +614,7 @@ msgstr "A propos"
#: lib/claper_web/live/event_live/join.html.heex:38
#: lib/claper_web/live/event_live/join.html.heex:61
#: lib/claper_web/templates/user_session/new.html.heex:60
#: lib/claper_web/templates/user_session/new.html.heex:62
#, elixir-autogen, elixir-format
msgid "Login"
msgstr "Connexion"
@@ -628,30 +630,21 @@ msgid "Or use the code:"
msgstr "Ou utilisez le code:"
#: lib/claper_web/templates/user_registration/new.html.heex:46
#: lib/claper_web/templates/user_session/new.html.heex:71
#: lib/claper_web/templates/user_session/new.html.heex:84
#, elixir-autogen, elixir-format, fuzzy
msgid "Create account"
msgstr "Créer un compte"
#: lib/claper_web/live/user_settings_live/show.html.heex:118
#: lib/claper_web/live/user_settings_live/show.html.heex:161
#: lib/claper_web/templates/user_registration/new.html.heex:37
#: lib/claper_web/templates/user_reset_password/edit.html.heex:34
#: lib/claper_web/templates/user_session/new.html.heex:51
#: lib/claper_web/templates/user_session/new.html.heex:50
#: lib/claper_web/templates/user_session/new.html.heex:52
#, elixir-autogen, elixir-format
msgid "Password"
msgstr "Mot de passe"
#: lib/claper_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format, fuzzy
msgid "Your email address"
msgstr "Adresse email"
#: lib/claper_web/templates/user_session/new.html.heex:49
#, elixir-autogen, elixir-format
msgid "Your password"
msgstr "Votre mot de passe"
#: lib/claper_web/live/user_settings_live/show.ex:49
#: lib/claper_web/live/user_settings_live/show.ex:62
#, elixir-autogen, elixir-format
msgid "Change the password used to access your account."
msgstr "Changez le mot de passe utilisé pour accéder à votre compte."
@@ -662,16 +655,17 @@ msgid "Current password"
msgstr "Mot de passe actuel"
#: lib/claper_web/live/user_settings_live/show.html.heex:76
#: lib/claper_web/live/user_settings_live/show.html.heex:112
#, elixir-autogen, elixir-format, fuzzy
msgid "New password"
msgstr "Nouveau mot de passe"
#: lib/claper_web/live/user_settings_live/show.ex:46
#: lib/claper_web/live/user_settings_live/show.ex:59
#, elixir-autogen, elixir-format, fuzzy
msgid "Update your password"
msgstr "Changer votre email"
#: lib/claper_web/live/user_settings_live/show.ex:98
#: lib/claper_web/live/user_settings_live/show.ex:159
#, elixir-autogen, elixir-format, fuzzy
msgid "Your password has been updated."
msgstr "Votre mot de passe a été mis à jour."
@@ -684,7 +678,7 @@ msgstr[0] "Champ %{count}"
msgstr[1] "Champ %{count}"
msgstr[2] "Champ %{count}"
#: lib/claper_web/live/event_live/manage.html.heex:207
#: lib/claper_web/live/event_live/manage.html.heex:201
#, elixir-autogen, elixir-format
msgid "Add form to collect data from your public."
msgstr "Ajoutez un formulaire pour recueillir les données de votre public."
@@ -694,35 +688,35 @@ msgstr "Ajoutez un formulaire pour recueillir les données de votre public."
msgid "Current form"
msgstr "Sondage actuel"
#: lib/claper_web/live/event_live/manage.html.heex:301
#: lib/claper_web/live/event_live/manage.html.heex:295
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit form"
msgstr "Modifier"
#: lib/claper_web/live/event_live/manage.html.heex:204
#: lib/claper_web/live/event_live/manage.html.heex:774
#: lib/claper_web/live/event_live/manage.html.heex:1253
#: lib/claper_web/live/event_live/manage.html.heex:198
#: lib/claper_web/live/event_live/manage.html.heex:823
#: lib/claper_web/live/event_live/manage.html.heex:1365
#: lib/claper_web/live/stat_live/index.html.heex:217
#, elixir-autogen, elixir-format
msgid "Form"
msgstr "Formulaire"
#: lib/claper_web/live/event_live/manage.html.heex:1028
#: lib/claper_web/live/event_live/manage.html.heex:1140
#, elixir-autogen, elixir-format
msgid "Form submissions"
msgstr "Soumissions de formulaire"
#: lib/claper_web/live/event_live/manage.html.heex:1226
#: lib/claper_web/live/event_live/manage.html.heex:1338
#, elixir-autogen, elixir-format
msgid "Form submissions from attendees will appear here."
msgstr "Les formulaires soumis par les participants apparaîtront ici."
#: lib/claper_web/live/event_live/manage.ex:745
#: lib/claper_web/live/event_live/manage.ex:726
#, elixir-autogen, elixir-format
msgid "Name"
msgstr "Nom"
#: lib/claper_web/live/event_live/manage.html.heex:300
#: lib/claper_web/live/event_live/manage.html.heex:294
#, elixir-autogen, elixir-format
msgid "New form"
msgstr "Nouveau formulaire"
@@ -747,7 +741,7 @@ msgstr "Soumettre"
msgid "Text"
msgstr "Texte"
#: lib/claper_web/live/event_live/manage.html.heex:1246
#: lib/claper_web/live/event_live/manage.html.heex:1358
#, elixir-autogen, elixir-format
msgid "This cannot be undone, confirm ?"
msgstr "Cela ne peut pas être annulé, confirmez-vous ?"
@@ -782,12 +776,12 @@ msgstr "Sélectionnez une option"
msgid "Select one or multiple options"
msgstr "Sélectionner une ou plusieurs options"
#: lib/claper_web/live/poll_live/form_component.html.heex:24
#: lib/claper_web/live/poll_live/form_component.html.heex:96
#, elixir-autogen, elixir-format
msgid "Multiple answers"
msgstr "Réponses multiples"
#: lib/claper_web/live/event_live/manage.html.heex:269
#: lib/claper_web/live/event_live/manage.html.heex:263
#, elixir-autogen, elixir-format
msgid "Import all interactions from another presentation"
msgstr "Importer toutes les interactions d'une autre présentation"
@@ -802,7 +796,7 @@ msgstr "Échec de l'importation d'interactions"
msgid "Interactions imported successfully"
msgstr "Interactions importées avec succès"
#: lib/claper_web/live/event_live/manage.html.heex:341
#: lib/claper_web/live/event_live/manage.html.heex:335
#, elixir-autogen, elixir-format
msgid "Select presentation"
msgstr "Sélectionnez la présentation"
@@ -876,7 +870,7 @@ msgstr "désactivé"
msgid "Account creation is disabled"
msgstr "La création de compte est désactivée"
#: lib/claper_web/live/event_live/manage.html.heex:238
#: lib/claper_web/live/event_live/manage.html.heex:232
#, elixir-autogen, elixir-format
msgid "Add a Youtube video or any web content."
msgstr "Ajoutez une vidéo Youtube ou tout autre contenu web."
@@ -886,7 +880,7 @@ msgstr "Ajoutez une vidéo Youtube ou tout autre contenu web."
msgid "Confirm new password"
msgstr "Confirmer le nouveau mot de passe"
#: lib/claper_web/templates/user_session/new.html.heex:66
#: lib/claper_web/templates/user_session/new.html.heex:79
#, elixir-autogen, elixir-format
msgid "Forgot your password?"
msgstr "Mot de passe oublié ?"
@@ -922,22 +916,17 @@ msgstr "Changer votre mot de passe"
msgid "Send link to reset password"
msgstr "Envoyer le lien pour réinitialiser le mot de passe"
#: lib/claper_web/live/embed_live/form_component.html.heex:38
#, elixir-autogen, elixir-format
msgid "Attendee can view the web content on their device"
msgstr "Le participant peut voir le contenu web sur son appareil"
#: lib/claper_web/live/event_live/embed_component.ex:59
#, elixir-autogen, elixir-format, fuzzy
msgid "Current web content"
msgstr "Contenu web actuel"
#: lib/claper_web/live/event_live/manage.html.heex:322
#: lib/claper_web/live/event_live/manage.html.heex:316
#, elixir-autogen, elixir-format
msgid "Edit web content"
msgstr "Modifier le contenu web"
#: lib/claper_web/live/event_live/manage.html.heex:321
#: lib/claper_web/live/event_live/manage.html.heex:315
#, elixir-autogen, elixir-format
msgid "New web content"
msgstr "Nouveau contenu web"
@@ -947,12 +936,7 @@ msgstr "Nouveau contenu web"
msgid "See current web content"
msgstr "Voir le contenu web actuel"
#: lib/claper_web/live/embed_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "The iframe component"
msgstr "Le composant iframe"
#: lib/claper_web/live/embed_live/form_component.html.heex:62
#: lib/claper_web/live/embed_live/form_component.html.heex:80
#, elixir-autogen, elixir-format, fuzzy
msgid "This will delete the web content, are you sure?"
msgstr "Cela supprimera le contenu web, êtes-vous sûr?"
@@ -962,18 +946,13 @@ msgstr "Cela supprimera le contenu web, êtes-vous sûr?"
msgid "Title"
msgstr "Titre"
#: lib/claper_web/live/event_live/manage.html.heex:236
#: lib/claper_web/live/event_live/manage.html.heex:817
#: lib/claper_web/live/event_live/manage.html.heex:230
#: lib/claper_web/live/event_live/manage.html.heex:867
#: lib/claper_web/live/stat_live/index.html.heex:259
#, elixir-autogen, elixir-format
msgid "Web content"
msgstr "Contenu web"
#: lib/claper/embeds/embed.ex:50
#, elixir-autogen, elixir-format, fuzzy
msgid "Invalid embed format (should start with <iframe> and end with </iframe>)"
msgstr "Format d'intégration invalide (doit commencer par <iframe> et se terminer par </iframe>)"
#: lib/claper_web/live/event_live/manageable_post_component.ex:38
#: lib/claper_web/live/event_live/manageable_post_component.ex:67
#, elixir-autogen, elixir-format
@@ -986,12 +965,12 @@ msgstr "Épingler"
msgid "Pinned"
msgstr "Épinglé"
#: lib/claper_web/live/event_live/manage.html.heex:1020
#: lib/claper_web/live/event_live/manage.html.heex:1132
#, elixir-autogen, elixir-format, fuzzy
msgid "Pinned messages"
msgstr "Messages épinglés"
#: lib/claper_web/live/event_live/manage.html.heex:1180
#: lib/claper_web/live/event_live/manage.html.heex:1292
#, elixir-autogen, elixir-format
msgid "Pinned messages will appear here."
msgstr "Les messages épinglés apparaîtront ici."
@@ -1042,7 +1021,7 @@ msgstr "Enregistré"
msgid "Access"
msgstr "Accès"
#: lib/claper_web/live/user_settings_live/show.html.heex:180
#: lib/claper_web/live/user_settings_live/show.html.heex:285
#, elixir-autogen, elixir-format
msgid "All your events and files will be permanently deleted, are you sure?"
msgstr "Tous vos événements et fichiers seront définitivement supprimés, êtes-vous sûr ?"
@@ -1057,22 +1036,22 @@ msgstr "Êtes-vous sûr de vouloir terminer cet événement ? Cette action est i
msgid "Attendees room"
msgstr "Salle des participants"
#: lib/claper_web/live/user_settings_live/show.html.heex:172
#: lib/claper_web/live/user_settings_live/show.html.heex:277
#, elixir-autogen, elixir-format
msgid "Be careful, these actions are irreversible"
msgstr "Soyez prudent, ces actions sont irréversibles"
#: lib/claper_web/live/user_settings_live/show.html.heex:169
#: lib/claper_web/live/user_settings_live/show.html.heex:274
#, elixir-autogen, elixir-format
msgid "Danger zone"
msgstr "Zone de danger"
#: lib/claper_web/live/user_settings_live/show.html.heex:185
#: lib/claper_web/live/user_settings_live/show.html.heex:290
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete account"
msgstr "Supprimer le compte"
#: lib/claper_web/live/event_live/manage.html.heex:514
#: lib/claper_web/live/event_live/manage.html.heex:508
#, elixir-autogen, elixir-format
msgid "Open presentation"
msgstr "Ouvrir la présentation"
@@ -1082,12 +1061,12 @@ msgstr "Ouvrir la présentation"
msgid "Terminate"
msgstr "Terminer"
#: lib/claper_web/live/event_live/event_card_component.ex:244
#: lib/claper_web/live/event_live/event_card_component.ex:344
#, elixir-autogen, elixir-format
msgid "View report"
msgstr "Voir le rapport"
#: lib/claper_web/live/user_settings_live/show.ex:137
#: lib/claper_web/live/user_settings_live/show.ex:219
#, elixir-autogen, elixir-format
msgid "Your account has been deleted."
msgstr "Votre compte a été supprimé."
@@ -1102,19 +1081,19 @@ msgstr "Code d'accès"
msgid "Animations in PPT/PPTX files are not supported, which is why we recommend exporting your presentation to PDF to ensure it displays correctly."
msgstr "Les animations dans les fichiers PPT/PPTX ne sont pas prises en charge, c'est pourquoi nous recommandons d'exporter votre présentation en PDF pour garantir un affichage correct."
#: lib/claper_web/live/event_live/manage.html.heex:992
#: lib/claper_web/live/event_live/manage.html.heex:1104
#, elixir-autogen, elixir-format, fuzzy
msgid "Attendees interactions"
msgstr "Interactions des participants"
#: lib/claper_web/live/event_live/event_form_component.html.heex:5
#: lib/claper_web/live/event_live/index.html.heex:76
#: lib/claper_web/live/event_live/manage.html.heex:382
#: lib/claper_web/live/event_live/manage.html.heex:376
#, elixir-autogen, elixir-format
msgid "Back"
msgstr "Retour"
#: lib/claper_web/live/event_live/manage.html.heex:496
#: lib/claper_web/live/event_live/manage.html.heex:490
#, elixir-autogen, elixir-format
msgid "Click here to open the presentation window."
msgstr "Cliquez ici pour ouvrir la fenêtre de présentation."
@@ -1126,25 +1105,25 @@ msgstr "Animateurs"
#: lib/claper_web/live/event_live/event_form_component.html.heex:6
#: lib/claper_web/live/event_live/index.html.heex:77
#: lib/claper_web/live/event_live/manage.html.heex:383
#: lib/claper_web/live/event_live/manage.html.heex:377
#: lib/claper_web/templates/lti/registration/success.html.heex:26
#, elixir-autogen, elixir-format, fuzzy
msgid "Finish"
msgstr "Terminer"
#: lib/claper_web/live/event_live/manage.html.heex:994
#: lib/claper_web/live/event_live/manage.html.heex:1106
#, elixir-autogen, elixir-format
msgid "Here you'll find all interactions from your attendees. You can manage messages, pinned messages, and submitted forms."
msgstr "Ici, vous trouverez toutes les interactions de vos participants. Vous pouvez gérer les messages, les messages épinglés et les formulaires soumis."
#: lib/claper_web/live/event_live/manage.html.heex:994
#: lib/claper_web/live/event_live/manage.html.heex:1106
#, elixir-autogen, elixir-format
msgid "Identify users by their unique avatars."
msgstr "Identifiez les utilisateurs par leurs avatars uniques."
#: lib/claper_web/live/event_live/event_form_component.html.heex:4
#: lib/claper_web/live/event_live/index.html.heex:75
#: lib/claper_web/live/event_live/manage.html.heex:381
#: lib/claper_web/live/event_live/manage.html.heex:375
#, elixir-autogen, elixir-format, fuzzy
msgid "Next"
msgstr "Suivant"
@@ -1154,17 +1133,17 @@ msgstr "Suivant"
msgid "Select your presentation file. Accepted formats are PDF, PPT, or PPTX. Ensure the file size does not exceed the maximum limit."
msgstr "Sélectionnez votre fichier de présentation. Les formats acceptés sont PDF, PPT ou PPTX. Assurez-vous que la taille du fichier ne dépasse pas la limite maximale."
#: lib/claper_web/live/event_live/manage.html.heex:494
#: lib/claper_web/live/event_live/manage.html.heex:488
#, elixir-autogen, elixir-format
msgid "Time to launch your presentation!"
msgstr "Il est temps de lancer votre présentation !"
#: lib/claper_web/live/event_live/manage.html.heex:1295
#: lib/claper_web/live/event_live/manage.html.heex:1407
#, elixir-autogen, elixir-format
msgid "Use the associated keyboard shortcuts for quick toggling of these settings."
msgstr "Utilisez les raccourcis clavier associés pour basculer rapidement entre ces paramètres."
#: lib/claper_web/live/event_live/manage.html.heex:1295
#: lib/claper_web/live/event_live/manage.html.heex:1407
#, elixir-autogen, elixir-format
msgid "You can control each setting for the presentation (showing on the big screen) and on the attendee's room."
msgstr "Vous pouvez contrôler chaque paramètre pour la présentation (affichage sur le grand écran) et dans la salle des participants."
@@ -1199,11 +1178,6 @@ msgstr "Date de début de l'événement"
msgid "If you don't have time and just want interactions without a presentation file, you can create a new event here."
msgstr "Si vous n'avez pas le temps et que vous voulez simplement des interactions sans fichier de présentation, vous pouvez créer un nouvel événement ici."
#: lib/claper_web/live/event_live/manage.html.heex:660
#, elixir-autogen, elixir-format
msgid "If you have slides, you can navigate through the slides with ease using the arrow keys on your keyboard."
msgstr "Si vous avez des diapositives, vous pouvez naviguer facilement entre les diapositives en utilisant les touches fléchées de votre clavier."
#: lib/claper_web/live/event_live/event_form_component.html.heex:299
#, elixir-autogen, elixir-format
msgid "If you require assistance in managing your event, you can grant access to others. Simply enter their email addresses; once they register an account with these emails, they will be able to manage the event."
@@ -1255,7 +1229,7 @@ msgstr "Paramètres de présentation"
msgid "Quick event"
msgstr "Événement rapide"
#: lib/claper_web/live/event_live/index.ex:73
#: lib/claper_web/live/event_live/index.ex:80
#, elixir-autogen, elixir-format
msgid "Quick event created successfully"
msgstr "Événement rapide créé avec succès"
@@ -1285,11 +1259,6 @@ msgstr "Ce code sera utilisé par vos participants pour accéder à l'événemen
msgid "This event has been terminated"
msgstr "Cet événement viens d'être terminé"
#: lib/claper_web/live/event_live/manage.html.heex:660
#, elixir-autogen, elixir-format
msgid "This section contains all your presentation slides (if you have upload one). You have the option to add interactions to each slide."
msgstr "Cette section contient toutes vos diapositives de présentation (si vous en avez téléchargé une). Vous avez la possibilité d'ajouter des interactions à chaque diapositive."
#: lib/claper_web/live/event_live/index.html.heex:117
#, elixir-autogen, elixir-format
msgid "Welcome to Claper! You can create a new event here."
@@ -1300,11 +1269,6 @@ msgstr "Bienvenue sur Claper ! Vous pouvez créer un nouvel événement ici."
msgid "When your event will start?"
msgstr "Quand votre événement commencera-t-il ?"
#: lib/claper_web/live/event_live/manage.html.heex:659
#, elixir-autogen, elixir-format
msgid "Your slides and/or interactions"
msgstr "Vos diapositives et/ou interactions"
#: lib/claper_web/live/event_live/show.html.heex:38
#, elixir-autogen, elixir-format
msgid "Create your next presentation with"
@@ -1317,22 +1281,22 @@ msgstr "Créez votre prochaine présentation avec"
msgid "Event doesn't exist"
msgstr "L'événement n'existe pas"
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#: lib/claper_web/live/user_settings_live/show.html.heex:244
#, elixir-autogen, elixir-format
msgid "Customize your account"
msgstr "Personnalisez votre compte"
#: lib/claper_web/live/user_settings_live/show.html.heex:159
#: lib/claper_web/live/user_settings_live/show.html.heex:264
#, elixir-autogen, elixir-format
msgid "Language"
msgstr "Langue"
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#: lib/claper_web/live/user_settings_live/show.html.heex:241
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr "Préférences"
#: lib/claper_web/live/user_settings_live/show.ex:119
#: lib/claper_web/live/user_settings_live/show.ex:180
#, elixir-autogen, elixir-format
msgid "Your preferences have been updated."
msgstr "Vos préférences ont été mises à jour."
@@ -1342,22 +1306,22 @@ msgstr "Vos préférences ont été mises à jour."
msgid "Question"
msgstr "Question"
#: lib/claper_web/live/event_live/manage.html.heex:1012
#: lib/claper_web/live/event_live/manage.html.heex:1124
#, elixir-autogen, elixir-format
msgid "Questions"
msgstr "Questions"
#: lib/claper_web/live/event_live/manage.html.heex:1099
#: lib/claper_web/live/event_live/manage.html.heex:1211
#, elixir-autogen, elixir-format
msgid "Questions will appear here."
msgstr "Les questions apparaîtront ici."
#: lib/claper_web/live/event_live/manage.html.heex:1141
#: lib/claper_web/live/event_live/manage.html.heex:1253
#, elixir-autogen, elixir-format
msgid "Sort by date"
msgstr "Trier par date"
#: lib/claper_web/live/event_live/manage.html.heex:1120
#: lib/claper_web/live/event_live/manage.html.heex:1232
#, elixir-autogen, elixir-format
msgid "Sort by popularity"
msgstr "Trier par popularité"
@@ -1378,7 +1342,7 @@ msgstr "Documentation"
msgid "My account"
msgstr "Mon compte"
#: lib/claper_web/live/user_settings_live/show.html.heex:96
#: lib/claper_web/live/user_settings_live/show.html.heex:139
#, elixir-autogen, elixir-format, fuzzy
msgid "Your personal informations to access your account"
msgstr "Vos informations personnelles pour accéder à votre compte"
@@ -1439,22 +1403,22 @@ msgid "Add Claper"
msgstr "Ajouter Claper"
#: lib/claper_web/live/event_live/manage.html.heex:94
#: lib/claper_web/live/event_live/manage.html.heex:487
#: lib/claper_web/live/event_live/manage.html.heex:481
#, elixir-autogen, elixir-format
msgid "Close preview"
msgstr "Fermer l'aperçu"
#: lib/claper_web/live/event_live/manage.html.heex:687
#: lib/claper_web/live/event_live/manage.html.heex:685
#, elixir-autogen, elixir-format, fuzzy
msgid "Create your first interaction."
msgstr "Créez votre première interaction."
#: lib/claper_web/live/event_live/manage.html.heex:875
#: lib/claper_web/live/event_live/manage.html.heex:1025
#, elixir-autogen, elixir-format, fuzzy
msgid "Disable"
msgstr "Désactiver"
#: lib/claper_web/live/event_live/manage.html.heex:957
#: lib/claper_web/live/event_live/manage.html.heex:1069
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr "Activer"
@@ -1464,18 +1428,13 @@ msgstr "Activer"
msgid "Enable messages to change this option"
msgstr "Activer les messages pour modifier cette option"
#: lib/claper_web/live/event_live/manage.html.heex:918
#: lib/claper_web/live/event_live/manage.html.heex:749
#, elixir-autogen, elixir-format, fuzzy
msgid "Hide on presentation"
msgstr "Masquer dans la présentation"
#: lib/claper_web/live/event_live/manage.html.heex:933
#, elixir-autogen, elixir-format
msgid "Hide results for attendees"
msgstr "Masquer les résultats pour les participants"
#: lib/claper_web/live/event_live/manage.html.heex:93
#: lib/claper_web/live/event_live/manage.html.heex:486
#: lib/claper_web/live/event_live/manage.html.heex:480
#, elixir-autogen, elixir-format
msgid "Open preview"
msgstr "Ouvrir l'aperçu"
@@ -1490,17 +1449,137 @@ msgstr "Afficher les instructions (Code QR)"
msgid "Show messages to change this option"
msgstr "Afficher les messages pour modifier cette option"
#: lib/claper_web/live/event_live/manage.html.heex:921
#: lib/claper_web/live/event_live/manage.html.heex:752
#, elixir-autogen, elixir-format
msgid "Show on presentation"
msgstr "Afficher dans la présentation"
#: lib/claper_web/live/event_live/manage.html.heex:936
#, elixir-autogen, elixir-format
msgid "Show results for attendees"
msgstr "Afficher les résultats pour les participants"
#: lib/claper_web/live/event_live/manage.html.heex:684
#: lib/claper_web/live/event_live/manage.html.heex:682
#, elixir-autogen, elixir-format
msgid "This slide does not have any interactions."
msgstr "Cette diapositive n'a pas d'interactions."
#: lib/claper_web/live/user_settings_live/show.html.heex:176
#, elixir-autogen, elixir-format
msgid "Accounts linked"
msgstr "Comptes liés"
#: lib/claper_web/live/user_settings_live/show.html.heex:208
#: lib/claper_web/live/user_settings_live/show.html.heex:226
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unlink this account?"
msgstr "Êtes-vous sûr de vouloir délier ce compte ?"
#: lib/claper_web/templates/user_session/new.html.heex:74
#, elixir-autogen, elixir-format
msgid "Login with %{provider}"
msgstr "Se connecter avec %{provider}"
#: lib/claper_web/live/user_settings_live/show.ex:101
#: lib/claper_web/live/user_settings_live/show.ex:115
#, elixir-autogen, elixir-format
msgid "The account has been unlinked."
msgstr "Le compte a été délié."
#: lib/claper_web/live/event_live/manage.html.heex:658
#, elixir-autogen, elixir-format
msgid "This section contains all your interactions."
msgstr "Cette section contient toutes vos interactions."
#: lib/claper_web/live/user_settings_live/show.html.heex:211
#: lib/claper_web/live/user_settings_live/show.html.heex:229
#, elixir-autogen, elixir-format, fuzzy
msgid "Unlink"
msgstr "Délier"
#: lib/claper_web/live/event_live/manage.html.heex:658
#, elixir-autogen, elixir-format
msgid "You can add interactions to your presentation slides."
msgstr "Vous pouvez ajouter des interactions à vos diapositives de présentation."
#: lib/claper_web/live/event_live/manage.html.heex:657
#, elixir-autogen, elixir-format
msgid "Your interactions"
msgstr "Vos interactions"
#: lib/claper_web/live/user_settings_live/show.html.heex:119
#, elixir-autogen, elixir-format, fuzzy
msgid "Confirm password"
msgstr "Confirmer le nouveau mot de passe"
#: lib/claper_web/live/user_settings_live/show.ex:68
#, elixir-autogen, elixir-format
msgid "Set a new password"
msgstr "Définir un nouveau mot de passe"
#: lib/claper_web/live/user_settings_live/show.ex:71
#, elixir-autogen, elixir-format
msgid "Set a new password for your account before unlinking it."
msgstr "Définissez un nouveau mot de passe pour votre compte avant de le délier."
#: lib/claper_web/live/user_settings_live/show.ex:204
#, elixir-autogen, elixir-format
msgid "Your password has been set, you can now unlink your account."
msgstr "Votre mot de passe a été défini, vous pouvez maintenant délier votre compte."
#: lib/claper_web/live/embed_live/form_component.html.heex:38
#, elixir-autogen, elixir-format
msgid "Iframe code"
msgstr "Code Iframe"
#: lib/claper_web/live/embed_live/form_component.html.heex:39
#, elixir-autogen, elixir-format
msgid "Link to the content"
msgstr "Lien vers le contenu"
#: lib/claper/embeds/embed.ex:65
#: lib/claper/embeds/embed.ex:74
#: lib/claper/embeds/embed.ex:83
#, elixir-autogen, elixir-format
msgid "Please enter a valid %{provider} link"
msgstr "Veuillez entrer un lien %{provider} valide"
#: lib/claper/embeds/embed.ex:62
#: lib/claper/embeds/embed.ex:71
#: lib/claper/embeds/embed.ex:80
#, elixir-autogen, elixir-format
msgid "Please enter a valid link starting with http:// or https://"
msgstr "Veuillez entrer un lien valide commençant par http:// ou https://"
#: lib/claper/embeds/embed.ex:89
#, elixir-autogen, elixir-format
msgid "Please enter valid HTML content with an iframe tag"
msgstr "Veuillez entrer un contenu HTML valide avec une balise iframe"
#: lib/claper_web/live/embed_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "Provider"
msgstr "Fournisseur"
#: lib/claper_web/live/poll_live/form_component.html.heex:89
#, elixir-autogen, elixir-format
msgid "Attendees can see the results on their device"
msgstr "Les participants peuvent voir les résultats sur leur appareil"
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#, elixir-autogen, elixir-format, fuzzy
msgid "Attendees can view the web content on their device"
msgstr "Les participants peuvent voir le contenu web sur leur appareil"
#: lib/claper_web/live/embed_live/form_component.html.heex:49
#: lib/claper_web/live/poll_live/form_component.html.heex:82
#, elixir-autogen, elixir-format
msgid "Options"
msgstr "Options"
#: lib/claper_web/live/event_live/event_card_component.ex:186
#: lib/claper_web/live/event_live/event_card_component.ex:266
#: lib/claper_web/live/event_live/event_card_component.ex:355
#, elixir-autogen, elixir-format
msgid "Action"
msgstr "Action"
#: lib/claper_web/live/event_live/event_card_component.ex:242
#, elixir-autogen, elixir-format
msgid "Duplicate"
msgstr "Dupliquer"

View File

@@ -8,18 +8,18 @@ msgstr ""
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: lib/claper_web/live/event_live/manage.html.heex:1293
#: lib/claper_web/live/user_settings_live/show.ex:55
#: lib/claper_web/live/event_live/manage.html.heex:1405
#: lib/claper_web/live/user_settings_live/show.ex:77
#, elixir-autogen, elixir-format
msgid "Settings"
msgstr "Instellingen"
#: lib/claper_web/live/event_live/manage.ex:746
#: lib/claper_web/live/event_live/manage.ex:727
#: lib/claper_web/live/form_live/form_component.html.heex:37
#: lib/claper_web/live/user_settings_live/show.html.heex:34
#: lib/claper_web/templates/user_registration/new.html.heex:29
#: lib/claper_web/templates/user_reset_password/new.html.heex:28
#: lib/claper_web/templates/user_session/new.html.heex:41
#: lib/claper_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format
msgid "Email"
msgstr "E-mail"
@@ -36,8 +36,8 @@ msgstr "Doe mee met de Claper-ervaring"
msgid "Oops, check that all fields are filled in correctly."
msgstr "Oeps, controleer of alle velden correct zijn ingevuld."
#: lib/claper_web/live/user_settings_live/show.html.heex:112
#: lib/claper_web/live/user_settings_live/show.html.heex:127
#: lib/claper_web/live/user_settings_live/show.html.heex:155
#: lib/claper_web/live/user_settings_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "Change"
msgstr "Aanpassen"
@@ -47,7 +47,8 @@ msgstr "Aanpassen"
msgid "Code"
msgstr "Code"
#: lib/claper_web/live/user_settings_live/show.html.heex:103
#: lib/claper_web/live/user_settings_live/show.html.heex:146
#: lib/claper_web/templates/user_session/new.html.heex:40
#, elixir-autogen, elixir-format
msgid "Email address"
msgstr "E-mailadres"
@@ -57,7 +58,7 @@ msgstr "E-mailadres"
msgid "Logout"
msgstr "Uitloggen"
#: lib/claper_web/live/user_settings_live/show.html.heex:93
#: lib/claper_web/live/user_settings_live/show.html.heex:136
#, elixir-autogen, elixir-format
msgid "Personal informations"
msgstr "Persoonlijke informatie"
@@ -99,7 +100,7 @@ msgstr "Wees de eerste die reageert!"
msgid "Join"
msgstr "Meedoen"
#: lib/claper_web/live/event_live/index.ex:156
#: lib/claper_web/live/event_live/index.ex:180
#: lib/claper_web/live/event_live/join.html.heex:31
#: lib/claper_web/live/event_live/join.html.heex:54
#, elixir-autogen, elixir-format
@@ -171,60 +172,61 @@ msgstr "Terug"
msgid "Created successfully"
msgstr "Succesvol aangemaakt"
#: lib/claper_web/live/event_live/event_card_component.ex:186
#: lib/claper_web/live/event_live/event_card_component.ex:207
#: lib/claper_web/live/event_live/event_card_component.ex:224
#: lib/claper_web/live/event_live/event_card_component.ex:304
#: lib/claper_web/live/event_live/form_component.ex:97
#: lib/claper_web/live/event_live/index.ex:139
#: lib/claper_web/live/event_live/index.ex:161
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr "Bewerken"
#: lib/claper_web/live/embed_live/form_component.html.heex:51
#: lib/claper_web/live/embed_live/form_component.html.heex:69
#: lib/claper_web/live/event_live/event_form_component.html.heex:25
#: lib/claper_web/live/event_live/event_form_component.html.heex:32
#: lib/claper_web/live/event_live/index.ex:146
#: lib/claper_web/live/event_live/index.ex:170
#: lib/claper_web/live/event_live/index.html.heex:64
#: lib/claper_web/live/form_live/form_component.html.heex:98
#: lib/claper_web/live/poll_live/form_component.html.heex:94
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#, elixir-autogen, elixir-format
msgid "Create"
msgstr "Aanmaken"
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#: lib/claper_web/live/event_live/event_card_component.ex:249
#: lib/claper_web/live/embed_live/form_component.html.heex:74
#: lib/claper_web/live/event_live/event_card_component.ex:400
#: lib/claper_web/live/event_live/event_form_component.html.heex:37
#: lib/claper_web/live/event_live/manage.html.heex:1241
#: lib/claper_web/live/event_live/manage.html.heex:1353
#: lib/claper_web/live/event_live/manageable_post_component.ex:92
#: lib/claper_web/live/event_live/post_component.ex:70
#: lib/claper_web/live/event_live/post_component.ex:142
#: lib/claper_web/live/form_live/form_component.html.heex:103
#: lib/claper_web/live/poll_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:111
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr "Verwijderen"
#: lib/claper_web/live/embed_live/form_component.html.heex:52
#: lib/claper_web/live/embed_live/form_component.html.heex:70
#: lib/claper_web/live/event_live/event_form_component.html.heex:24
#: lib/claper_web/live/event_live/event_form_component.html.heex:31
#: lib/claper_web/live/form_live/form_component.html.heex:99
#: lib/claper_web/live/poll_live/form_component.html.heex:95
#: lib/claper_web/live/poll_live/form_component.html.heex:107
#: lib/claper_web/live/user_settings_live/show.html.heex:38
#: lib/claper_web/live/user_settings_live/show.html.heex:80
#: lib/claper_web/live/user_settings_live/show.html.heex:123
#, elixir-autogen, elixir-format
msgid "Save"
msgstr "Opslaan"
#: lib/claper_web/live/user_settings_live/show.ex:76
#: lib/claper_web/live/user_settings_live/show.ex:137
#, elixir-autogen, elixir-format
msgid "A link to confirm your email change has been sent to the new address."
msgstr "Er is een link naar het nieuwe adres verzonden om de e-mailwijziging te bevestigen."
#: lib/claper_web/live/user_settings_live/show.ex:40
#: lib/claper_web/live/user_settings_live/show.ex:53
#, elixir-autogen, elixir-format
msgid "Change the email address you want associated with your account."
msgstr "Wijzig het e-mailadres dat je aan jouw account wil koppelen."
#: lib/claper_web/live/user_settings_live/show.ex:37
#: lib/claper_web/live/user_settings_live/show.ex:50
#, elixir-autogen, elixir-format
msgid "Update your email"
msgstr "Werk uw e-mailadres bij"
@@ -306,12 +308,12 @@ msgstr "Een bestand uploaden"
msgid "or drag and drop"
msgstr "of slepen en neerzetten"
#: lib/claper_web/live/event_live/event_form_component.ex:308
#: lib/claper_web/live/event_live/event_form_component.ex:313
#, elixir-autogen, elixir-format
msgid "You have selected an incorrect file type"
msgstr "Je hebt een onjuist bestandstype geselecteerd"
#: lib/claper_web/live/event_live/event_form_component.ex:307
#: lib/claper_web/live/event_live/event_form_component.ex:312
#, elixir-autogen, elixir-format
msgid "Your file is too large"
msgstr "Het bestand is te groot"
@@ -326,12 +328,12 @@ msgstr "Bestand aanpassen"
msgid "Presentation replaced"
msgstr "Presentatie vervangen"
#: lib/claper_web/live/event_live/manage.html.heex:280
#: lib/claper_web/live/event_live/manage.html.heex:274
#, elixir-autogen, elixir-format
msgid "Edit poll"
msgstr "Peiling bewerken"
#: lib/claper_web/live/event_live/manage.html.heex:279
#: lib/claper_web/live/event_live/manage.html.heex:273
#, elixir-autogen, elixir-format
msgid "New poll"
msgstr "Nieuwe peiling"
@@ -341,7 +343,7 @@ msgstr "Nieuwe peiling"
msgid "Title of your poll"
msgstr "Titel van de peiling"
#: lib/claper_web/live/event_live/event_form_component.ex:309
#: lib/claper_web/live/event_live/event_form_component.ex:314
#, elixir-autogen, elixir-format
msgid "Upload failed"
msgstr "Uploaden mislukt"
@@ -352,12 +354,12 @@ msgid "Add poll to know opinion of your public."
msgstr "Voeg een peiling toe om achter de mening van het publiek te komen."
#: lib/claper_web/live/event_live/manage.html.heex:165
#: lib/claper_web/live/event_live/manage.html.heex:730
#: lib/claper_web/live/event_live/manage.html.heex:779
#, elixir-autogen, elixir-format
msgid "Poll"
msgstr "Peiling"
#: lib/claper_web/live/poll_live/form_component.html.heex:35
#: lib/claper_web/live/poll_live/form_component.html.heex:30
#, elixir-format, ex-autogen, elixir-autogen
msgid "Choice %{count}"
msgid_plural "Choice %{count}"
@@ -391,22 +393,22 @@ msgstr "E-mailadres van gebruiker"
msgid "Changing your file will remove all interaction elements like polls associated."
msgstr "Als je het bestand wijzigt, worden alle bijbehorende interactie-elementen, zoals peilingen, verwijderd."
#: lib/claper_web/live/event_live/manage.html.heex:1058
#: lib/claper_web/live/event_live/manage.html.heex:1170
#, elixir-autogen, elixir-format
msgid "Messages from attendees will appear here."
msgstr "Hier verschijnen berichten van deelnemers."
#: lib/claper_web/live/event_live/event_card_component.ex:218
#: lib/claper_web/live/event_live/event_card_component.ex:318
#, elixir-autogen, elixir-format
msgid "Processing your file..."
msgstr "Bestand verwerken..."
#: lib/claper_web/live/poll_live/form_component.html.heex:106
#: lib/claper_web/live/poll_live/form_component.html.heex:118
#, elixir-autogen, elixir-format
msgid "This will delete all responses associated and the poll itself, are you sure?"
msgstr "Hierdoor worden alle bijbehorende reacties en de peiling verwijderd. Weet je het zeker?"
#: lib/claper_web/live/event_live/manage.html.heex:450
#: lib/claper_web/live/event_live/manage.html.heex:444
#, elixir-autogen, elixir-format
msgid "Press <strong>F</strong> in the presentation window to enable fullscreen"
msgstr "Druk op <strong>F</strong> in het presentatievenster om volledig scherm in te schakelen"
@@ -416,7 +418,7 @@ msgstr "Druk op <strong>F</strong> in het presentatievenster om volledig scherm
msgid "Ask, comment..."
msgstr "Vraag, reageer..."
#: lib/claper_web/live/event_live/manage.html.heex:1004
#: lib/claper_web/live/event_live/manage.html.heex:1116
#: lib/claper_web/live/stat_live/index.html.heex:71
#: lib/claper_web/live/stat_live/index.html.heex:271
#, elixir-autogen, elixir-format
@@ -455,7 +457,7 @@ msgstr "Als je problemen ondervindt met de bovenstaande knop, kopieer en plak da
msgid "You can change your email by visiting the URL below"
msgstr "Je kunt het e-mailadres wijzigen door naar de onderstaande URL te gaan"
#: lib/claper_web/live/event_live/manage.html.heex:703
#: lib/claper_web/live/event_live/manage.html.heex:701
#, elixir-autogen, elixir-format
msgid "Add interaction"
msgstr "Voeg interactie toe"
@@ -573,7 +575,7 @@ msgstr "Interactie geschiedenis"
msgid "No messages has been sent"
msgstr "Er zijn geen berichten verzonden"
#: lib/claper_web/live/event_live/event_card_component.ex:255
#: lib/claper_web/live/event_live/event_card_component.ex:382
#, elixir-autogen, elixir-format
msgid "This will delete all data related to your event, this cannot be undone. Confirm ?"
msgstr "Hiermee worden alle gegevens met betrekking tot het evenement verwijderd. Dit kan niet ongedaan worden gemaakt. Bevestigen ?"
@@ -595,7 +597,7 @@ msgstr "Publiekspiek"
msgid "Engagement rate"
msgstr "Betrokkenheidspercentage"
#: lib/claper_web/live/event_live/event_card_component.ex:197
#: lib/claper_web/live/event_live/event_card_component.ex:256
#, elixir-autogen, elixir-format
msgid "Error when processing the file"
msgstr "Fout bij het verwerken van het bestand"
@@ -608,7 +610,7 @@ msgstr "Over"
#: lib/claper_web/live/event_live/join.html.heex:38
#: lib/claper_web/live/event_live/join.html.heex:61
#: lib/claper_web/templates/user_session/new.html.heex:60
#: lib/claper_web/templates/user_session/new.html.heex:62
#, elixir-autogen, elixir-format
msgid "Login"
msgstr "Inloggen"
@@ -624,30 +626,21 @@ msgid "Or use the code:"
msgstr "Of gebruik de code:"
#: lib/claper_web/templates/user_registration/new.html.heex:46
#: lib/claper_web/templates/user_session/new.html.heex:71
#: lib/claper_web/templates/user_session/new.html.heex:84
#, elixir-autogen, elixir-format
msgid "Create account"
msgstr "Account aanmaken"
#: lib/claper_web/live/user_settings_live/show.html.heex:118
#: lib/claper_web/live/user_settings_live/show.html.heex:161
#: lib/claper_web/templates/user_registration/new.html.heex:37
#: lib/claper_web/templates/user_reset_password/edit.html.heex:34
#: lib/claper_web/templates/user_session/new.html.heex:51
#: lib/claper_web/templates/user_session/new.html.heex:50
#: lib/claper_web/templates/user_session/new.html.heex:52
#, elixir-autogen, elixir-format
msgid "Password"
msgstr "Wachtwoord"
#: lib/claper_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format
msgid "Your email address"
msgstr "Jouw e-mailadres"
#: lib/claper_web/templates/user_session/new.html.heex:49
#, elixir-autogen, elixir-format
msgid "Your password"
msgstr "Jouw wachtwoord"
#: lib/claper_web/live/user_settings_live/show.ex:49
#: lib/claper_web/live/user_settings_live/show.ex:62
#, elixir-autogen, elixir-format
msgid "Change the password used to access your account."
msgstr "Wijzig het wachtwoord dat wordt gebruikt om toegang te krijgen tot jouw account."
@@ -658,16 +651,17 @@ msgid "Current password"
msgstr "Huidig wachtwoord"
#: lib/claper_web/live/user_settings_live/show.html.heex:76
#: lib/claper_web/live/user_settings_live/show.html.heex:112
#, elixir-autogen, elixir-format
msgid "New password"
msgstr "Nieuw wachtwoord"
#: lib/claper_web/live/user_settings_live/show.ex:46
#: lib/claper_web/live/user_settings_live/show.ex:59
#, elixir-autogen, elixir-format
msgid "Update your password"
msgstr "Update jouw wachtwoord"
#: lib/claper_web/live/user_settings_live/show.ex:98
#: lib/claper_web/live/user_settings_live/show.ex:159
#, elixir-autogen, elixir-format
msgid "Your password has been updated."
msgstr "Het wachtwoord is bijgewerkt."
@@ -679,7 +673,7 @@ msgid_plural "Field %{count}"
msgstr[0] "Veld %{count}"
msgstr[1] "Velden %{count}"
#: lib/claper_web/live/event_live/manage.html.heex:207
#: lib/claper_web/live/event_live/manage.html.heex:201
#, elixir-autogen, elixir-format
msgid "Add form to collect data from your public."
msgstr "Voeg een formulier toe om gegevens van het publiek te verzamelen."
@@ -689,35 +683,35 @@ msgstr "Voeg een formulier toe om gegevens van het publiek te verzamelen."
msgid "Current form"
msgstr "Huidig formulier"
#: lib/claper_web/live/event_live/manage.html.heex:301
#: lib/claper_web/live/event_live/manage.html.heex:295
#, elixir-autogen, elixir-format
msgid "Edit form"
msgstr "Formulier bewerken"
#: lib/claper_web/live/event_live/manage.html.heex:204
#: lib/claper_web/live/event_live/manage.html.heex:774
#: lib/claper_web/live/event_live/manage.html.heex:1253
#: lib/claper_web/live/event_live/manage.html.heex:198
#: lib/claper_web/live/event_live/manage.html.heex:823
#: lib/claper_web/live/event_live/manage.html.heex:1365
#: lib/claper_web/live/stat_live/index.html.heex:217
#, elixir-autogen, elixir-format
msgid "Form"
msgstr "Formulier"
#: lib/claper_web/live/event_live/manage.html.heex:1028
#: lib/claper_web/live/event_live/manage.html.heex:1140
#, elixir-autogen, elixir-format
msgid "Form submissions"
msgstr "Formulierinzendingen"
#: lib/claper_web/live/event_live/manage.html.heex:1226
#: lib/claper_web/live/event_live/manage.html.heex:1338
#, elixir-autogen, elixir-format
msgid "Form submissions from attendees will appear here."
msgstr "Formulierinzendingen van deelnemers worden hier weergegeven."
#: lib/claper_web/live/event_live/manage.ex:745
#: lib/claper_web/live/event_live/manage.ex:726
#, elixir-autogen, elixir-format
msgid "Name"
msgstr "Naam"
#: lib/claper_web/live/event_live/manage.html.heex:300
#: lib/claper_web/live/event_live/manage.html.heex:294
#, elixir-autogen, elixir-format
msgid "New form"
msgstr "Nieuw formulier"
@@ -742,7 +736,7 @@ msgstr "Indienen"
msgid "Text"
msgstr "Tekst"
#: lib/claper_web/live/event_live/manage.html.heex:1246
#: lib/claper_web/live/event_live/manage.html.heex:1358
#, elixir-autogen, elixir-format
msgid "This cannot be undone, confirm ?"
msgstr "Dit kan niet ongedaan worden gemaakt. Bevestigen ?"
@@ -777,12 +771,12 @@ msgstr "Selecteer een optie"
msgid "Select one or multiple options"
msgstr "Selecteer een of meerdere opties"
#: lib/claper_web/live/poll_live/form_component.html.heex:24
#: lib/claper_web/live/poll_live/form_component.html.heex:96
#, elixir-autogen, elixir-format
msgid "Multiple answers"
msgstr "Meerdere antwoorden"
#: lib/claper_web/live/event_live/manage.html.heex:269
#: lib/claper_web/live/event_live/manage.html.heex:263
#, elixir-autogen, elixir-format
msgid "Import all interactions from another presentation"
msgstr "Importeer alle interacties uit een andere presentatie"
@@ -797,7 +791,7 @@ msgstr "Importeren van interacties is mislukt"
msgid "Interactions imported successfully"
msgstr "Interacties zijn succesvol geimporteerd"
#: lib/claper_web/live/event_live/manage.html.heex:341
#: lib/claper_web/live/event_live/manage.html.heex:335
#, elixir-autogen, elixir-format
msgid "Select presentation"
msgstr "Presentatie selecteren"
@@ -871,7 +865,7 @@ msgstr "uitgeschakeld"
msgid "Account creation is disabled"
msgstr "Het aanmaken van een account is uitgeschakeld"
#: lib/claper_web/live/event_live/manage.html.heex:238
#: lib/claper_web/live/event_live/manage.html.heex:232
#, elixir-autogen, elixir-format
msgid "Add a Youtube video or any web content."
msgstr "Voeg een YouTube-video of andere webinhoud toe."
@@ -881,7 +875,7 @@ msgstr "Voeg een YouTube-video of andere webinhoud toe."
msgid "Confirm new password"
msgstr "Bevestig nieuw wachtwoord"
#: lib/claper_web/templates/user_session/new.html.heex:66
#: lib/claper_web/templates/user_session/new.html.heex:79
#, elixir-autogen, elixir-format
msgid "Forgot your password?"
msgstr "Wachtwoord vergeten?"
@@ -917,22 +911,17 @@ msgstr "Stel je wachtwoord opnieuw in"
msgid "Send link to reset password"
msgstr "Link verzenden om wachtwoord opnieuw in te stellen"
#: lib/claper_web/live/embed_live/form_component.html.heex:38
#, elixir-autogen, elixir-format
msgid "Attendee can view the web content on their device"
msgstr "Deelnemers kunnen de webinhoud op hun apparaat bekijken"
#: lib/claper_web/live/event_live/embed_component.ex:59
#, elixir-autogen, elixir-format
msgid "Current web content"
msgstr "Huidige webinhoud"
#: lib/claper_web/live/event_live/manage.html.heex:322
#: lib/claper_web/live/event_live/manage.html.heex:316
#, elixir-autogen, elixir-format
msgid "Edit web content"
msgstr "Webinhoud bewerken"
#: lib/claper_web/live/event_live/manage.html.heex:321
#: lib/claper_web/live/event_live/manage.html.heex:315
#, elixir-autogen, elixir-format
msgid "New web content"
msgstr "Nieuwe webinhoud"
@@ -942,12 +931,7 @@ msgstr "Nieuwe webinhoud"
msgid "See current web content"
msgstr "Bekijk de huidige webinhoud"
#: lib/claper_web/live/embed_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "The iframe component"
msgstr "Het iframe-component"
#: lib/claper_web/live/embed_live/form_component.html.heex:62
#: lib/claper_web/live/embed_live/form_component.html.heex:80
#, elixir-autogen, elixir-format
msgid "This will delete the web content, are you sure?"
msgstr "Hiermee wordt de webinhoud verwijderd. Weet je het zeker?"
@@ -957,18 +941,13 @@ msgstr "Hiermee wordt de webinhoud verwijderd. Weet je het zeker?"
msgid "Title"
msgstr "Titel"
#: lib/claper_web/live/event_live/manage.html.heex:236
#: lib/claper_web/live/event_live/manage.html.heex:817
#: lib/claper_web/live/event_live/manage.html.heex:230
#: lib/claper_web/live/event_live/manage.html.heex:867
#: lib/claper_web/live/stat_live/index.html.heex:259
#, elixir-autogen, elixir-format
msgid "Web content"
msgstr "Webinhoud"
#: lib/claper/embeds/embed.ex:50
#, elixir-autogen, elixir-format
msgid "Invalid embed format (should start with <iframe> and end with </iframe>)"
msgstr "Ongeldig insluitformaat (moet beginnen met <iframe> en eindigen met </iframe>)"
#: lib/claper_web/live/event_live/manageable_post_component.ex:38
#: lib/claper_web/live/event_live/manageable_post_component.ex:67
#, elixir-autogen, elixir-format
@@ -981,12 +960,12 @@ msgstr "Vastzetten"
msgid "Pinned"
msgstr "Vastgezet"
#: lib/claper_web/live/event_live/manage.html.heex:1020
#: lib/claper_web/live/event_live/manage.html.heex:1132
#, elixir-autogen, elixir-format
msgid "Pinned messages"
msgstr "Vastgezette berichten"
#: lib/claper_web/live/event_live/manage.html.heex:1180
#: lib/claper_web/live/event_live/manage.html.heex:1292
#, elixir-autogen, elixir-format
msgid "Pinned messages will appear here."
msgstr "Hier verschijnen vastgezette berichten."
@@ -1037,7 +1016,7 @@ msgstr "Opgeslagen"
msgid "Access"
msgstr "Toegang"
#: lib/claper_web/live/user_settings_live/show.html.heex:180
#: lib/claper_web/live/user_settings_live/show.html.heex:285
#, elixir-autogen, elixir-format
msgid "All your events and files will be permanently deleted, are you sure?"
msgstr "Al jouw evenementen en bestanden worden definitief verwijderd. Weet je dat zeker?"
@@ -1052,22 +1031,22 @@ msgstr "Weet je zeker dat je dit evenement wil stoppen? Deze actie kan niet onge
msgid "Attendees room"
msgstr "Deelnemers ruimte"
#: lib/claper_web/live/user_settings_live/show.html.heex:172
#: lib/claper_web/live/user_settings_live/show.html.heex:277
#, elixir-autogen, elixir-format
msgid "Be careful, these actions are irreversible"
msgstr "Wees voorzichtig, deze acties zijn onomkeerbaar"
#: lib/claper_web/live/user_settings_live/show.html.heex:169
#: lib/claper_web/live/user_settings_live/show.html.heex:274
#, elixir-autogen, elixir-format
msgid "Danger zone"
msgstr "Gevarenzone"
#: lib/claper_web/live/user_settings_live/show.html.heex:185
#: lib/claper_web/live/user_settings_live/show.html.heex:290
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete account"
msgstr "Account verwijderen"
#: lib/claper_web/live/event_live/manage.html.heex:514
#: lib/claper_web/live/event_live/manage.html.heex:508
#, elixir-autogen, elixir-format
msgid "Open presentation"
msgstr "Presentatie openen"
@@ -1077,12 +1056,12 @@ msgstr "Presentatie openen"
msgid "Terminate"
msgstr "Stoppen"
#: lib/claper_web/live/event_live/event_card_component.ex:244
#: lib/claper_web/live/event_live/event_card_component.ex:344
#, elixir-autogen, elixir-format
msgid "View report"
msgstr "Bekijk rapport"
#: lib/claper_web/live/user_settings_live/show.ex:137
#: lib/claper_web/live/user_settings_live/show.ex:219
#, elixir-autogen, elixir-format
msgid "Your account has been deleted."
msgstr "Je account is verwijderd."
@@ -1097,19 +1076,19 @@ msgstr "Toegangscode"
msgid "Animations in PPT/PPTX files are not supported, which is why we recommend exporting your presentation to PDF to ensure it displays correctly."
msgstr "Animaties in PPT/PPTX-bestanden worden niet ondersteund. Daarom raden wij je aan de presentatie naar PDF te exporteren om er zeker van te zijn dat deze correct wordt weergegeven."
#: lib/claper_web/live/event_live/manage.html.heex:992
#: lib/claper_web/live/event_live/manage.html.heex:1104
#, elixir-autogen, elixir-format, fuzzy
msgid "Attendees interactions"
msgstr "Interacties van deelnemers"
#: lib/claper_web/live/event_live/event_form_component.html.heex:5
#: lib/claper_web/live/event_live/index.html.heex:76
#: lib/claper_web/live/event_live/manage.html.heex:382
#: lib/claper_web/live/event_live/manage.html.heex:376
#, elixir-autogen, elixir-format
msgid "Back"
msgstr "Terug"
#: lib/claper_web/live/event_live/manage.html.heex:496
#: lib/claper_web/live/event_live/manage.html.heex:490
#, elixir-autogen, elixir-format
msgid "Click here to open the presentation window."
msgstr "Klik hier om het presentatievenster te openen."
@@ -1121,25 +1100,25 @@ msgstr "Facilitators"
#: lib/claper_web/live/event_live/event_form_component.html.heex:6
#: lib/claper_web/live/event_live/index.html.heex:77
#: lib/claper_web/live/event_live/manage.html.heex:383
#: lib/claper_web/live/event_live/manage.html.heex:377
#: lib/claper_web/templates/lti/registration/success.html.heex:26
#, elixir-autogen, elixir-format, fuzzy
msgid "Finish"
msgstr "Finish"
#: lib/claper_web/live/event_live/manage.html.heex:994
#: lib/claper_web/live/event_live/manage.html.heex:1106
#, elixir-autogen, elixir-format
msgid "Here you'll find all interactions from your attendees. You can manage messages, pinned messages, and submitted forms."
msgstr "Hier vind je alle interacties van je bezoekers. Je kunt berichten, vastgezette berichten en verzonden formulieren beheren."
#: lib/claper_web/live/event_live/manage.html.heex:994
#: lib/claper_web/live/event_live/manage.html.heex:1106
#, elixir-autogen, elixir-format
msgid "Identify users by their unique avatars."
msgstr "Identificeer gebruikers aan de hand van hun unieke avatars."
#: lib/claper_web/live/event_live/event_form_component.html.heex:4
#: lib/claper_web/live/event_live/index.html.heex:75
#: lib/claper_web/live/event_live/manage.html.heex:381
#: lib/claper_web/live/event_live/manage.html.heex:375
#, elixir-autogen, elixir-format, fuzzy
msgid "Next"
msgstr "Volgende"
@@ -1149,17 +1128,17 @@ msgstr "Volgende"
msgid "Select your presentation file. Accepted formats are PDF, PPT, or PPTX. Ensure the file size does not exceed the maximum limit."
msgstr "Selecteer het Presentatie. Geaccepteerde formaten zijn PDF, PPT of PPTX. Zorg ervoor dat de bestandsgrootte de maximale limiet niet overschrijdt."
#: lib/claper_web/live/event_live/manage.html.heex:494
#: lib/claper_web/live/event_live/manage.html.heex:488
#, elixir-autogen, elixir-format, fuzzy
msgid "Time to launch your presentation!"
msgstr "Tijd om je presentatie te starten!"
#: lib/claper_web/live/event_live/manage.html.heex:1295
#: lib/claper_web/live/event_live/manage.html.heex:1407
#, elixir-autogen, elixir-format
msgid "Use the associated keyboard shortcuts for quick toggling of these settings."
msgstr "Gebruik de bijbehorende sneltoetsen om snel tussen deze instellingen te schakelen."
#: lib/claper_web/live/event_live/manage.html.heex:1295
#: lib/claper_web/live/event_live/manage.html.heex:1407
#, elixir-autogen, elixir-format
msgid "You can control each setting for the presentation (showing on the big screen) and on the attendee's room."
msgstr "Je kunt elke instelling voor de presentatie (weergave op het grote scherm) en in de ruimte van de deelnemer beheren."
@@ -1194,11 +1173,6 @@ msgstr "Startdatum evenement"
msgid "If you don't have time and just want interactions without a presentation file, you can create a new event here."
msgstr "Als je geen tijd heeft en alleen interacties wilt zonder een Presentatie, kun je hier een nieuw evenement aanmaken."
#: lib/claper_web/live/event_live/manage.html.heex:660
#, elixir-autogen, elixir-format
msgid "If you have slides, you can navigate through the slides with ease using the arrow keys on your keyboard."
msgstr "Als je dia's hebt, kun je eenvoudig door de dia's navigeren met de pijltoetsen op het toetsenbord."
#: lib/claper_web/live/event_live/event_form_component.html.heex:299
#, elixir-autogen, elixir-format, fuzzy
msgid "If you require assistance in managing your event, you can grant access to others. Simply enter their email addresses; once they register an account with these emails, they will be able to manage the event."
@@ -1250,7 +1224,7 @@ msgstr "Presentatie-instellingen"
msgid "Quick event"
msgstr "Snel evenement"
#: lib/claper_web/live/event_live/index.ex:73
#: lib/claper_web/live/event_live/index.ex:80
#, elixir-autogen, elixir-format
msgid "Quick event created successfully"
msgstr "Snel evenement succesvol aangemaakt"
@@ -1280,11 +1254,6 @@ msgstr "Deze code wordt door je bezoekers gebruikt om toegang te krijgen tot het
msgid "This event has been terminated"
msgstr "Dit evenement is gestopt"
#: lib/claper_web/live/event_live/manage.html.heex:660
#, elixir-autogen, elixir-format, fuzzy
msgid "This section contains all your presentation slides (if you have upload one). You have the option to add interactions to each slide."
msgstr "Deze sectie bevat alle presentatiedia's (als je er een hebt geupload). Je hebt de mogelijkheid om interacties aan elke dia toe te voegen."
#: lib/claper_web/live/event_live/index.html.heex:117
#, elixir-autogen, elixir-format, fuzzy
msgid "Welcome to Claper! You can create a new event here."
@@ -1295,11 +1264,6 @@ msgstr "Welkom bij Claper! Hier kun je een nieuw evenement aanmaken."
msgid "When your event will start?"
msgstr "Wanneer begint het evenement?"
#: lib/claper_web/live/event_live/manage.html.heex:659
#, elixir-autogen, elixir-format, fuzzy
msgid "Your slides and/or interactions"
msgstr "De dia's en/of interacties"
#: lib/claper_web/live/event_live/show.html.heex:38
#, elixir-autogen, elixir-format
msgid "Create your next presentation with"
@@ -1312,22 +1276,22 @@ msgstr "Maak je volgende presentatie met"
msgid "Event doesn't exist"
msgstr "Evenement bestaat niet"
#: lib/claper_web/live/user_settings_live/show.html.heex:140
#: lib/claper_web/live/user_settings_live/show.html.heex:244
#, elixir-autogen, elixir-format
msgid "Customize your account"
msgstr "Pas je account aan"
#: lib/claper_web/live/user_settings_live/show.html.heex:159
#: lib/claper_web/live/user_settings_live/show.html.heex:264
#, elixir-autogen, elixir-format
msgid "Language"
msgstr "Taal"
#: lib/claper_web/live/user_settings_live/show.html.heex:137
#: lib/claper_web/live/user_settings_live/show.html.heex:241
#, elixir-autogen, elixir-format
msgid "Preferences"
msgstr "Voorkeuren"
#: lib/claper_web/live/user_settings_live/show.ex:119
#: lib/claper_web/live/user_settings_live/show.ex:180
#, elixir-autogen, elixir-format
msgid "Your preferences have been updated."
msgstr "Je voorkeuren zijn bijgewerkt."
@@ -1337,22 +1301,22 @@ msgstr "Je voorkeuren zijn bijgewerkt."
msgid "Question"
msgstr "Vraag"
#: lib/claper_web/live/event_live/manage.html.heex:1012
#: lib/claper_web/live/event_live/manage.html.heex:1124
#, elixir-autogen, elixir-format
msgid "Questions"
msgstr "Vragen"
#: lib/claper_web/live/event_live/manage.html.heex:1099
#: lib/claper_web/live/event_live/manage.html.heex:1211
#, elixir-autogen, elixir-format
msgid "Questions will appear here."
msgstr "Vragen zullen hier verschijnen"
#: lib/claper_web/live/event_live/manage.html.heex:1141
#: lib/claper_web/live/event_live/manage.html.heex:1253
#, elixir-autogen, elixir-format
msgid "Sort by date"
msgstr "Sorteren op datum"
#: lib/claper_web/live/event_live/manage.html.heex:1120
#: lib/claper_web/live/event_live/manage.html.heex:1232
#, elixir-autogen, elixir-format
msgid "Sort by popularity"
msgstr "Sorteer op populariteit"
@@ -1373,7 +1337,7 @@ msgstr "Documentatie"
msgid "My account"
msgstr "Mijn account"
#: lib/claper_web/live/user_settings_live/show.html.heex:96
#: lib/claper_web/live/user_settings_live/show.html.heex:139
#, elixir-autogen, elixir-format, fuzzy
msgid "Your personal informations to access your account"
msgstr "Je persoonlijke gegevens om toegang te krijgen tot je account"
@@ -1434,22 +1398,22 @@ msgid "Add Claper"
msgstr "Voeg Claper toe"
#: lib/claper_web/live/event_live/manage.html.heex:94
#: lib/claper_web/live/event_live/manage.html.heex:487
#: lib/claper_web/live/event_live/manage.html.heex:481
#, elixir-autogen, elixir-format
msgid "Close preview"
msgstr "Voorvertoning sluiten"
#: lib/claper_web/live/event_live/manage.html.heex:687
#: lib/claper_web/live/event_live/manage.html.heex:685
#, elixir-autogen, elixir-format, fuzzy
msgid "Create your first interaction."
msgstr "Maak je eerste interactie aan"
#: lib/claper_web/live/event_live/manage.html.heex:875
#: lib/claper_web/live/event_live/manage.html.heex:1025
#, elixir-autogen, elixir-format, fuzzy
msgid "Disable"
msgstr "Uitschakelen"
#: lib/claper_web/live/event_live/manage.html.heex:957
#: lib/claper_web/live/event_live/manage.html.heex:1069
#, elixir-autogen, elixir-format
msgid "Enable"
msgstr "Inschakelen"
@@ -1459,18 +1423,13 @@ msgstr "Inschakelen"
msgid "Enable messages to change this option"
msgstr "Schakel berichten in om deze optie te wijzigen"
#: lib/claper_web/live/event_live/manage.html.heex:918
#: lib/claper_web/live/event_live/manage.html.heex:749
#, elixir-autogen, elixir-format, fuzzy
msgid "Hide on presentation"
msgstr "Verbergen in presentatie"
#: lib/claper_web/live/event_live/manage.html.heex:933
#, elixir-autogen, elixir-format
msgid "Hide results for attendees"
msgstr "Resultaten verbergen voor deelnemers"
#: lib/claper_web/live/event_live/manage.html.heex:93
#: lib/claper_web/live/event_live/manage.html.heex:486
#: lib/claper_web/live/event_live/manage.html.heex:480
#, elixir-autogen, elixir-format
msgid "Open preview"
msgstr "Voorvertoning openen"
@@ -1485,17 +1444,137 @@ msgstr "Toon instructies (QR-code)"
msgid "Show messages to change this option"
msgstr "Toon berichten om deze optie te wijzigen"
#: lib/claper_web/live/event_live/manage.html.heex:921
#: lib/claper_web/live/event_live/manage.html.heex:752
#, elixir-autogen, elixir-format
msgid "Show on presentation"
msgstr "Tonen in presentatie"
#: lib/claper_web/live/event_live/manage.html.heex:936
#, elixir-autogen, elixir-format
msgid "Show results for attendees"
msgstr "Resultaten tonen voor deelnemers"
#: lib/claper_web/live/event_live/manage.html.heex:684
#: lib/claper_web/live/event_live/manage.html.heex:682
#, elixir-autogen, elixir-format
msgid "This slide does not have any interactions."
msgstr "Deze dia heeft geen interacties."
#: lib/claper_web/live/user_settings_live/show.html.heex:176
#, elixir-autogen, elixir-format
msgid "Accounts linked"
msgstr "Gekoppelde accounts"
#: lib/claper_web/live/user_settings_live/show.html.heex:208
#: lib/claper_web/live/user_settings_live/show.html.heex:226
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unlink this account?"
msgstr "Weet u zeker dat u dit account wilt ontkoppelen?"
#: lib/claper_web/templates/user_session/new.html.heex:74
#, elixir-autogen, elixir-format
msgid "Login with %{provider}"
msgstr "Inloggen met %{provider}"
#: lib/claper_web/live/user_settings_live/show.ex:101
#: lib/claper_web/live/user_settings_live/show.ex:115
#, elixir-autogen, elixir-format
msgid "The account has been unlinked."
msgstr "Het account is ontkoppeld."
#: lib/claper_web/live/event_live/manage.html.heex:658
#, elixir-autogen, elixir-format
msgid "This section contains all your interactions."
msgstr "Deze sectie bevat al uw interacties."
#: lib/claper_web/live/user_settings_live/show.html.heex:211
#: lib/claper_web/live/user_settings_live/show.html.heex:229
#, elixir-autogen, elixir-format, fuzzy
msgid "Unlink"
msgstr "Losmaken"
#: lib/claper_web/live/event_live/manage.html.heex:658
#, elixir-autogen, elixir-format
msgid "You can add interactions to your presentation slides."
msgstr "U kunt interacties toevoegen aan uw presentatiedia's."
#: lib/claper_web/live/event_live/manage.html.heex:657
#, elixir-autogen, elixir-format
msgid "Your interactions"
msgstr "Uw interacties"
#: lib/claper_web/live/user_settings_live/show.html.heex:119
#, elixir-autogen, elixir-format, fuzzy
msgid "Confirm password"
msgstr "Bevestig nieuw wachtwoord"
#: lib/claper_web/live/user_settings_live/show.ex:68
#, elixir-autogen, elixir-format
msgid "Set a new password"
msgstr "Stel een nieuw wachtwoord in"
#: lib/claper_web/live/user_settings_live/show.ex:71
#, elixir-autogen, elixir-format
msgid "Set a new password for your account before unlinking it."
msgstr "Stel een nieuw wachtwoord in voor uw account voordat u het ontkoppelt."
#: lib/claper_web/live/user_settings_live/show.ex:204
#, elixir-autogen, elixir-format
msgid "Your password has been set, you can now unlink your account."
msgstr "Uw wachtwoord is ingesteld, u kunt nu uw account ontkoppelen."
#: lib/claper_web/live/embed_live/form_component.html.heex:38
#, elixir-autogen, elixir-format
msgid "Iframe code"
msgstr "Iframe-code"
#: lib/claper_web/live/embed_live/form_component.html.heex:39
#, elixir-autogen, elixir-format
msgid "Link to the content"
msgstr "Link naar de inhoud"
#: lib/claper/embeds/embed.ex:65
#: lib/claper/embeds/embed.ex:74
#: lib/claper/embeds/embed.ex:83
#, elixir-autogen, elixir-format
msgid "Please enter a valid %{provider} link"
msgstr "Voer een geldige %{provider} link in"
#: lib/claper/embeds/embed.ex:62
#: lib/claper/embeds/embed.ex:71
#: lib/claper/embeds/embed.ex:80
#, elixir-autogen, elixir-format
msgid "Please enter a valid link starting with http:// or https://"
msgstr "Voer een geldige link in die begint met http:// of https://"
#: lib/claper/embeds/embed.ex:89
#, elixir-autogen, elixir-format
msgid "Please enter valid HTML content with an iframe tag"
msgstr "Voer geldige HTML-inhoud in met een iframe-tag"
#: lib/claper_web/live/embed_live/form_component.html.heex:25
#, elixir-autogen, elixir-format
msgid "Provider"
msgstr "Aanbieder"
#: lib/claper_web/live/poll_live/form_component.html.heex:89
#, elixir-autogen, elixir-format
msgid "Attendees can see the results on their device"
msgstr "Deelnemers kunnen de resultaten op hun apparaat zien"
#: lib/claper_web/live/embed_live/form_component.html.heex:56
#, elixir-autogen, elixir-format, fuzzy
msgid "Attendees can view the web content on their device"
msgstr "Deelnemers kunnen de webinhoud op hun apparaat bekijken"
#: lib/claper_web/live/embed_live/form_component.html.heex:49
#: lib/claper_web/live/poll_live/form_component.html.heex:82
#, elixir-autogen, elixir-format
msgid "Options"
msgstr "Opties"
#: lib/claper_web/live/event_live/event_card_component.ex:186
#: lib/claper_web/live/event_live/event_card_component.ex:266
#: lib/claper_web/live/event_live/event_card_component.ex:355
#, elixir-autogen, elixir-format
msgid "Action"
msgstr "Actie"
#: lib/claper_web/live/event_live/event_card_component.ex:242
#, elixir-autogen, elixir-format
msgid "Duplicate"
msgstr "Dupliceren"

View File

@@ -0,0 +1,24 @@
defmodule Claper.Repo.Migrations.AddOidcUsers do
use Ecto.Migration
def change do
create table(:oidc_users) do
add :sub, :string, null: false
add :name, :string
add :email, :string
add :issuer, :string, null: false
add :provider, :string, null: false
add :id_token, :text
add :refresh_token, :text
add :access_token, :text
add :expires_at, :naive_datetime
add :photo_url, :string
add :groups, {:array, :string}
add :roles, :string
add :organization, :string
add :user_id, references(:users, on_delete: :delete_all)
timestamps()
end
end
end

View File

@@ -0,0 +1,9 @@
defmodule Claper.Repo.Migrations.RemoveIsAdminFromUsers do
use Ecto.Migration
def change do
alter table(:users) do
remove :is_admin
end
end
end

View File

@@ -0,0 +1,9 @@
defmodule Claper.Repo.Migrations.AddIsRandomizedPasswordToUsers do
use Ecto.Migration
def change do
alter table(:users) do
add :is_randomized_password, :boolean, default: false
end
end
end

View File

@@ -0,0 +1,9 @@
defmodule Claper.Repo.Migrations.AddProviderToEmbeds do
use Ecto.Migration
def change do
alter table(:embeds) do
add :provider, :string, default: "custom"
end
end
end

View File

@@ -0,0 +1,9 @@
defmodule Claper.Repo.Migrations.AddShowResultsToPolls do
use Ecto.Migration
def change do
alter table(:polls) do
add :show_results, :boolean, default: true
end
end
end

View File

@@ -0,0 +1,9 @@
defmodule Claper.Repo.Migrations.RemoveShowPollResultsEnabledFromPresentationStates do
use Ecto.Migration
def change do
alter table(:presentation_states) do
remove :show_poll_results_enabled
end
end
end

View File

@@ -0,0 +1,13 @@
defmodule Claper.Repo.Migrations.RemoveUniquenessOfHashFromPresentationFiles do
use Ecto.Migration
def up do
drop_if_exists index(:presentation_files, [:hash])
create unique_index(:presentation_files, [:hash, :event_id])
end
def down do
drop_if_exists index(:presentation_files, [:hash, :event_id])
create unique_index(:presentation_files, [:hash])
end
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 B

View File

@@ -45,6 +45,7 @@ defmodule Claper.EmbedsTest do
title: "some title",
content:
"<iframe src=\"https://www.youtube.com/embed/9bZkp7q19f0\" frameborder=\"0\" allowfullscreen></iframe>",
provider: "custom",
presentation_file_id: presentation_file.id,
position: 0
}
@@ -56,6 +57,38 @@ defmodule Claper.EmbedsTest do
"<iframe src=\"https://www.youtube.com/embed/9bZkp7q19f0\" frameborder=\"0\" allowfullscreen></iframe>"
end
test "create_embed/1 with valid data creates a youtube embed" do
presentation_file = presentation_file_fixture()
valid_attrs = %{
title: "some title",
content: "https://youtu.be/dQw4w9WgXcQ?si=g1A6ZegIXzcrisSw",
provider: "youtube",
presentation_file_id: presentation_file.id,
position: 0
}
assert {:ok, %Embed{} = embed} = Embeds.create_embed(valid_attrs)
assert embed.title == "some title"
assert embed.content ==
"https://youtu.be/dQw4w9WgXcQ?si=g1A6ZegIXzcrisSw"
end
test "create_embed/1 with invalid data creates a youtube embed" do
presentation_file = presentation_file_fixture()
attrs = %{
title: "some title",
content: "https://youtube.com/dQw4w9WgXcQ?si=g1A6ZegIXzcrisSw",
provider: "youtube",
presentation_file_id: presentation_file.id,
position: 0
}
assert {:error, %Ecto.Changeset{}} = Embeds.create_embed(attrs)
end
test "create_embed/1 with invalid data returns error changeset" do
assert {:error, %Ecto.Changeset{}} = Embeds.create_embed(@invalid_attrs)
end
@@ -66,6 +99,7 @@ defmodule Claper.EmbedsTest do
update_attrs = %{
title: "some updated title",
provider: "custom",
content:
"<iframe src=\"https://www.youtube.com/embed/9bZkp7q19f0\" frameborder=\"0\"></iframe>"
}

View File

@@ -2,7 +2,15 @@ defmodule Claper.EventsTest do
use Claper.DataCase
alias Claper.Events
import Claper.{EventsFixtures, AccountsFixtures, PresentationsFixtures, PollsFixtures}
import Claper.{
EventsFixtures,
AccountsFixtures,
PresentationsFixtures,
PollsFixtures,
FormsFixtures,
EmbedsFixtures
}
describe "events" do
alias Claper.Events.Event
@@ -100,6 +108,36 @@ defmodule Claper.EventsTest do
end
end
test "duplicate_event/2 duplicates an event" do
user = user_fixture()
original_event = event_fixture(%{user: user, name: "Original Event"})
presentation_file = presentation_file_fixture(%{event: original_event})
poll_fixture(%{presentation_file_id: presentation_file.id})
form_fixture(%{presentation_file_id: presentation_file.id})
embed_fixture(%{presentation_file_id: presentation_file.id})
assert {:ok, duplicated_event} = Events.duplicate_event(user.id, original_event.uuid)
assert duplicated_event.id != original_event.id
assert duplicated_event.user_id == original_event.user_id
assert duplicated_event.name == "Original Event (Copy)"
assert duplicated_event.code != original_event.code
assert duplicated_event.uuid != original_event.uuid
# Check if the presentation file was duplicated
duplicated_presentation_file =
Claper.Presentations.get_presentation_file!(duplicated_event.id)
assert duplicated_presentation_file.id != presentation_file.id
assert duplicated_presentation_file.hash == presentation_file.hash
assert duplicated_presentation_file.length == presentation_file.length
# Check if polls, forms, and embeds were duplicated
assert length(Claper.Polls.list_polls(duplicated_presentation_file.id)) == 1
assert length(Claper.Forms.list_forms(duplicated_presentation_file.id)) == 1
assert length(Claper.Embeds.list_embeds(duplicated_presentation_file.id)) == 1
end
test "delete_event/1 deletes the event" do
event = event_fixture()

View File

@@ -13,11 +13,11 @@ defmodule Claper.PresentationsTest do
assert Presentations.get_presentation_file!(presentation_file.id) == presentation_file
end
test "get_presentation_file_by_hash!/2 returns the presentation_file with given hash" do
presentation_file = presentation_file_fixture(%{}, [:event])
test "get_presentation_files_by_hash!/2 returns the presentation_file with given hash" do
presentation_file = presentation_file_fixture(%{})
assert Presentations.get_presentation_file_by_hash!(presentation_file.hash) ==
presentation_file
assert Presentations.get_presentation_files_by_hash(presentation_file.hash) ==
[presentation_file]
end
test "create_presentation_file/1 with valid data creates a presentation_file" do

View File

@@ -13,7 +13,7 @@ defmodule ClaperWeb.LtiControllerTest do
test "renders log in page", %{conn: conn} do
conn = get(conn, ~p"/users/log_in")
response = html_response(conn, 200)
assert response =~ "Your email address"
assert response =~ "Email address"
end
test "redirects if already logged in", %{conn: conn, user: user} do

View File

@@ -11,7 +11,7 @@ defmodule ClaperWeb.UserSessionControllerTest do
test "renders log in page", %{conn: conn} do
conn = get(conn, ~p"/users/log_in")
response = html_response(conn, 200)
assert response =~ "Your email address"
assert response =~ "Email address"
end
test "redirects if already logged in", %{conn: conn, user: user} do

View File

@@ -48,7 +48,7 @@ defmodule Lti13.JwksTest do
typ: "JWT",
alg: "RS256",
kid: UUID.uuid4(),
active: true
active: false
}
jwk3 = %{
@@ -56,19 +56,18 @@ defmodule Lti13.JwksTest do
typ: "JWT",
alg: "RS256",
kid: UUID.uuid4(),
active: true
active: false
}
assert {:ok, %Jwk{}} = Lti13.Jwks.create_jwk(jwk1)
assert {:ok, %Jwk{}} = Lti13.Jwks.create_jwk(jwk2)
assert {:ok, %Jwk{}} = Lti13.Jwks.create_jwk(jwk3)
assert Lti13.Jwks.get_all_jwks() |> Enum.map(&Map.get(&1, :kid)) == [
active_jwk.kid,
jwk1.kid,
jwk2.kid,
jwk3.kid
]
all_jwks = Lti13.Jwks.get_all_jwks()
assert Enum.any?(all_jwks, fn jwk -> jwk.kid == active_jwk.kid end)
assert Enum.any?(all_jwks, fn jwk -> jwk.kid == jwk1.kid end)
assert Enum.any?(all_jwks, fn jwk -> jwk.kid == jwk2.kid end)
assert Enum.any?(all_jwks, fn jwk -> jwk.kid == jwk3.kid end)
end
test "get jwk by registration" do

View File

@@ -17,6 +17,23 @@ defmodule Claper.EmbedsFixtures do
content:
"<iframe src=\"https://www.youtube.com/embed/9bZkp7q19f0\" frameborder=\"0\" allowfullscreen></iframe>",
position: 0,
provider: "custom",
enabled: true,
attendee_visibility: true
})
|> Claper.Embeds.create_embed()
Claper.UtilFixture.merge_preload(embed, preload, %{})
end
def embed_youtube_fixture(attrs \\ %{}, preload \\ []) do
{:ok, embed} =
attrs
|> Enum.into(%{
title: "some title",
content: "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
position: 1,
provider: "youtube",
enabled: true,
attendee_visibility: true
})