mirror of
https://github.com/ClaperCo/Claper.git
synced 2025-12-14 19:07:52 +01:00
Add OIDC + better embeds
This commit is contained in:
15
.env.sample
15
.env.sample
@@ -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
|
||||
@@ -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
|
||||
|
||||
|
||||
149
LICENSE.txt
149
LICENSE.txt
@@ -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/>.
|
||||
@@ -494,7 +494,6 @@ Hooks.QRCode = {
|
||||
Hooks.Dropdown = {
|
||||
mounted() {
|
||||
this.el.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
this.el.classList.toggle("hidden");
|
||||
});
|
||||
},
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
66
lib/claper/accounts/oidc/user.ex
Normal file
66
lib/claper/accounts/oidc/user.ex
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
118
lib/claper_web/controllers/user_oidc_auth.ex
Normal file
118
lib/claper_web/controllers/user_oidc_auth.ex
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
47
lib/claper_web/live/event_live/embed_iframe_component.ex
Normal file
47
lib/claper_web/live/event_live/embed_iframe_component.ex
Normal 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
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 %>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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") %>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
) %>
|
||||
|
||||
@@ -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"
|
||||
) %>
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
3
mix.exs
3
mix.exs
@@ -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
|
||||
|
||||
|
||||
6
mix.lock
6
mix.lock
@@ -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"},
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 ""
|
||||
|
||||
@@ -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 ""
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
24
priv/repo/migrations/20240729152555_create_oidc_users.exs
Normal file
24
priv/repo/migrations/20240729152555_create_oidc_users.exs
Normal 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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
BIN
priv/static/images/icons/lms.png
Normal file
BIN
priv/static/images/icons/lms.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.8 KiB |
BIN
priv/static/images/icons/openid.png
Normal file
BIN
priv/static/images/icons/openid.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 774 B |
@@ -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>"
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user