From cdbaac06e0c218687fbb60b47de44a1831177ecc Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 11 Aug 2024 11:16:34 +0200 Subject: [PATCH] Add OIDC + better embeds --- .env.sample | 15 +- CHANGELOG.md | 9 +- LICENSE.txt | 149 ++++--- assets/js/app.js | 1 - config/runtime.exs | 50 ++- lib/claper/accounts.ex | 75 ++++ lib/claper/accounts/oidc/user.ex | 66 +++ lib/claper/accounts/user.ex | 8 +- lib/claper/application.ex | 5 +- lib/claper/embeds/embed.ex | 58 ++- lib/claper/events.ex | 132 ++++++ lib/claper/polls/poll.ex | 12 +- lib/claper/presentations.ex | 7 +- .../presentations/presentation_state.ex | 5 +- lib/claper/tasks/converter.ex | 12 +- lib/claper_web/controllers/user_auth.ex | 8 +- lib/claper_web/controllers/user_oidc_auth.ex | 118 ++++++ .../controllers/user_session_controller.ex | 22 +- lib/claper_web/endpoint.ex | 4 +- .../live/embed_live/form_component.ex | 7 + .../live/embed_live/form_component.html.heex | 32 +- .../live/event_live/embed_component.ex | 7 +- .../live/event_live/embed_iframe_component.ex | 47 +++ .../live/event_live/event_card_component.ex | 201 +++++++-- .../live/event_live/event_form_component.ex | 9 +- .../event_live/event_form_component.html.heex | 2 +- lib/claper_web/live/event_live/index.ex | 36 +- .../live/event_live/index.html.heex | 2 +- lib/claper_web/live/event_live/manage.ex | 40 -- .../live/event_live/manage.html.heex | 257 +++++++----- .../event_live/manager_settings_component.ex | 4 +- .../live/event_live/poll_component.ex | 4 +- lib/claper_web/live/event_live/presenter.ex | 18 +- .../live/event_live/presenter.html.heex | 47 ++- lib/claper_web/live/event_live/show.ex | 83 ++-- lib/claper_web/live/event_live/show.html.heex | 2 +- .../live/form_live/form_component.html.heex | 4 +- .../live/poll_live/form_component.html.heex | 22 +- lib/claper_web/live/stat_live/index.html.heex | 2 +- .../live/user_settings_live/show.ex | 84 +++- .../live/user_settings_live/show.html.heex | 113 ++++- lib/claper_web/router.ex | 6 +- .../templates/user_session/new.html.heex | 57 ++- .../views/components/input_component.ex | 20 +- lib/lti_13/tool/services/ags/line_item.ex | 1 - lib/lti_13/users.ex | 11 + mix.exs | 3 +- mix.lock | 6 +- priv/gettext/de/LC_MESSAGES/default.po | 385 +++++++++++------- priv/gettext/default.pot | 385 +++++++++++------- priv/gettext/en/LC_MESSAGES/default.po | 385 +++++++++++------- priv/gettext/es/LC_MESSAGES/default.po | 385 +++++++++++------- priv/gettext/fr/LC_MESSAGES/default.po | 385 +++++++++++------- priv/gettext/nl/LC_MESSAGES/default.po | 385 +++++++++++------- .../20240729152555_create_oidc_users.exs | 24 ++ ...40730123205_remove_is_admin_from_users.exs | 9 + ...31_add_is_randomized_password_to_users.exs | 9 + .../20240731132357_add_provider_to_embeds.exs | 9 + ...240801084601_add_show_results_to_polls.exs | 9 + ...sults_enabled_from_presentation_states.exs | 9 + ...ueness_of_hash_from_presentation_files.exs | 13 + priv/static/images/icons/lms.png | Bin 0 -> 3876 bytes priv/static/images/icons/openid.png | Bin 0 -> 774 bytes test/claper/embeds_test.exs | 34 ++ test/claper/events_test.exs | 40 +- test/claper/presentations_test.exs | 8 +- .../claper_web/controllers/lti_controller.exs | 2 +- .../user_session_controller_test.exs | 2 +- test/lti_13/jwks_test.exs | 15 +- test/support/fixtures/embeds__fixtures.ex | 17 + 70 files changed, 3029 insertions(+), 1364 deletions(-) create mode 100644 lib/claper/accounts/oidc/user.ex create mode 100644 lib/claper_web/controllers/user_oidc_auth.ex create mode 100644 lib/claper_web/live/event_live/embed_iframe_component.ex create mode 100644 priv/repo/migrations/20240729152555_create_oidc_users.exs create mode 100644 priv/repo/migrations/20240730123205_remove_is_admin_from_users.exs create mode 100644 priv/repo/migrations/20240730123331_add_is_randomized_password_to_users.exs create mode 100644 priv/repo/migrations/20240731132357_add_provider_to_embeds.exs create mode 100644 priv/repo/migrations/20240801084601_add_show_results_to_polls.exs create mode 100644 priv/repo/migrations/20240801084731_remove_show_poll_results_enabled_from_presentation_states.exs create mode 100644 priv/repo/migrations/20240801130739_remove_uniqueness_of_hash_from_presentation_files.exs create mode 100644 priv/static/images/icons/lms.png create mode 100644 priv/static/images/icons/openid.png diff --git a/.env.sample b/.env.sample index db6c64e..c12c7dc 100644 --- a/.env.sample +++ b/.env.sample @@ -36,4 +36,17 @@ MAIL_FROM_NAME=Claper # Claper configuration #ENABLE_ACCOUNT_CREATION=true -#GS_JPG_RESOLUTION=300x300 \ No newline at end of file +#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 \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 90a249d..acb1709 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/LICENSE.txt b/LICENSE.txt index 576c1e4..29ebfa5 100644 --- a/LICENSE.txt +++ b/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. 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 + + Copyright (C) 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 . 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 -. - - 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 -. +For more information on this, and how to apply and follow the GNU AGPL, see +. \ No newline at end of file diff --git a/assets/js/app.js b/assets/js/app.js index da91fe6..af51d19 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -494,7 +494,6 @@ Hooks.QRCode = { Hooks.Dropdown = { mounted() { this.el.addEventListener("click", (e) => { - e.preventDefault(); this.el.classList.toggle("hidden"); }); }, diff --git a/config/runtime.exs b/config/runtime.exs index 5ad65c6..7dc94de 100644 --- a/config/runtime.exs +++ b/config/runtime.exs @@ -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, diff --git a/lib/claper/accounts.ex b/lib/claper/accounts.ex index 5a510df..bc43e8b 100644 --- a/lib/claper/accounts.ex +++ b/lib/claper/accounts.ex @@ -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 diff --git a/lib/claper/accounts/oidc/user.ex b/lib/claper/accounts/oidc/user.ex new file mode 100644 index 0000000..0df03c2 --- /dev/null +++ b/lib/claper/accounts/oidc/user.ex @@ -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 diff --git a/lib/claper/accounts/user.ex b/lib/claper/accounts/user.ex index a2c8737..008e835 100644 --- a/lib/claper/accounts/user.ex +++ b/lib/claper/accounts/user.ex @@ -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 diff --git a/lib/claper/application.ex b/lib/claper/application.ex index 2484928..db1299c 100644 --- a/lib/claper/application.ex +++ b/lib/claper/application.ex @@ -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 diff --git a/lib/claper/embeds/embed.ex b/lib/claper/embeds/embed.ex index 9a2ec20..8030588 100644 --- a/lib/claper/embeds/embed.ex +++ b/lib/claper/embeds/embed.ex @@ -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//, - message: gettext("Invalid embed format (should start with )") - ) + |> 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//s, + message: gettext("Please enter valid HTML content with an iframe tag") + ) + + _ -> + changeset + end end end diff --git a/lib/claper/events.ex b/lib/claper/events.ex index f643a6c..b5807dc 100644 --- a/lib/claper/events.ex +++ b/lib/claper/events.ex @@ -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: <> + + 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. diff --git a/lib/claper/polls/poll.ex b/lib/claper/polls/poll.ex index 4239500..f340b53 100644 --- a/lib/claper/polls/poll.ex +++ b/lib/claper/polls/poll.ex @@ -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) diff --git a/lib/claper/presentations.ex b/lib/claper/presentations.ex index b44540b..680661e 100644 --- a/lib/claper/presentations.ex +++ b/lib/claper/presentations.ex @@ -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. diff --git a/lib/claper/presentations/presentation_state.ex b/lib/claper/presentations/presentation_state.ex index 8b2a060..24ff236 100644 --- a/lib/claper/presentations/presentation_state.ex +++ b/lib/claper/presentations/presentation_state.ex @@ -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 diff --git a/lib/claper/tasks/converter.ex b/lib/claper/tasks/converter.ex index 2420c31..6e5b3c3 100644 --- a/lib/claper/tasks/converter.ex +++ b/lib/claper/tasks/converter.ex @@ -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 diff --git a/lib/claper_web/controllers/user_auth.ex b/lib/claper_web/controllers/user_auth.ex index 5fb26fe..383c9f5 100644 --- a/lib/claper_web/controllers/user_auth.ex +++ b/lib/claper_web/controllers/user_auth.ex @@ -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. diff --git a/lib/claper_web/controllers/user_oidc_auth.ex b/lib/claper_web/controllers/user_oidc_auth.ex new file mode 100644 index 0000000..d2e85a2 --- /dev/null +++ b/lib/claper_web/controllers/user_oidc_auth.ex @@ -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 diff --git a/lib/claper_web/controllers/user_session_controller.ex b/lib/claper_web/controllers/user_session_controller.ex index 1de54e7..fca82ee 100644 --- a/lib/claper_web/controllers/user_session_controller.ex +++ b/lib/claper_web/controllers/user_session_controller.ex @@ -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 diff --git a/lib/claper_web/endpoint.ex b/lib/claper_web/endpoint.ex index 63ae0be..bb783e5 100644 --- a/lib/claper_web/endpoint.ex +++ b/lib/claper_web/endpoint.ex @@ -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, diff --git a/lib/claper_web/live/embed_live/form_component.ex b/lib/claper_web/live/embed_live/form_component.ex index fcf4dee..8bb7a7e 100644 --- a/lib/claper_web/live/embed_live/form_component.ex +++ b/lib/claper_web/live/embed_live/form_component.ex @@ -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 diff --git a/lib/claper_web/live/embed_live/form_component.html.heex b/lib/claper_web/live/embed_live/form_component.html.heex index bf07172..2d17912 100644 --- a/lib/claper_web/live/embed_live/form_component.html.heex +++ b/lib/claper_web/live/embed_live/form_component.html.heex @@ -18,24 +18,42 @@ required="true" /> -
- + +
+

+ +
+

<%= gettext("Options") %>

+
<%= 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" ) %>
diff --git a/lib/claper_web/live/event_live/embed_component.ex b/lib/claper_web/live/event_live/embed_component.ex index aa3fd19..46ef274 100644 --- a/lib/claper_web/live/event_live/embed_component.ex +++ b/lib/claper_web/live/event_live/embed_component.ex @@ -60,7 +60,12 @@ defmodule ClaperWeb.EventLive.EmbedComponent do

<%= @embed.title %>

- <%= raw(@embed.content) %> + <.live_component + id="embed-component" + module={ClaperWeb.EventLive.EmbedIframeComponent} + provider={@embed.provider} + content={@embed.content} + />
diff --git a/lib/claper_web/live/event_live/embed_iframe_component.ex b/lib/claper_web/live/event_live/embed_iframe_component.ex new file mode 100644 index 0000000..ef53356 --- /dev/null +++ b/lib/claper_web/live/event_live/embed_iframe_component.ex @@ -0,0 +1,47 @@ +defmodule ClaperWeb.EventLive.EmbedIframeComponent do + use ClaperWeb, :live_component + + def render(assigns) do + ~H""" +
+ <%= case @provider do %> + <% "youtube" -> %> + + <% "vimeo" -> %> + + <% "canva" -> %> + + <% "googleslides" -> %> + + <% "custom" -> %> + <%= raw(@content) %> + <% end %> +
+ """ + end +end diff --git a/lib/claper_web/live/event_live/event_card_component.ex b/lib/claper_web/live/event_live/event_card_component.ex index 286d2a1..a6f53df 100644 --- a/lib/claper_web/live/event_live/event_card_component.ex +++ b/lib/claper_web/live/event_live/event_card_component.ex @@ -101,7 +101,7 @@ defmodule ClaperWeb.EventLive.EventCardComponent do -
+
<%= if not @is_leader do %> - - <%= gettext("Edit") %> - + <%= gettext("Action") %> + + + + + <% end %>
@@ -194,14 +255,57 @@ defmodule ClaperWeb.EventLive.EventCardComponent do <%= gettext("Error when processing the file") %> -
+
<%= if not @is_leader do %> - - <%= gettext("Edit") %> - + <%= gettext("Action") %> + + + + + <% end %>
@@ -240,21 +344,64 @@ defmodule ClaperWeb.EventLive.EventCardComponent do <%= gettext("View report") %> -
+
<%= 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" - ) %> + + <% end %>
diff --git a/lib/claper_web/live/event_live/event_form_component.ex b/lib/claper_web/live/event_live/event_form_component.ex index 483e620..b98c637 100644 --- a/lib/claper_web/live/event_live/event_form_component.ex +++ b/lib/claper_web/live/event_live/event_form_component.ex @@ -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 diff --git a/lib/claper_web/live/event_live/event_form_component.html.heex b/lib/claper_web/live/event_live/event_form_component.html.heex index 2d348ee..b6ba271 100644 --- a/lib/claper_web/live/event_live/event_form_component.html.heex +++ b/lib/claper_web/live/event_live/event_form_component.html.heex @@ -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" > <%= gettext("Remove") %> diff --git a/lib/claper_web/live/event_live/index.ex b/lib/claper_web/live/event_live/index.ex index 1eb53eb..d6c4f69 100644 --- a/lib/claper_web/live/event_live/index.ex +++ b/lib/claper_web/live/event_live/index.ex @@ -12,10 +12,12 @@ defmodule ClaperWeb.EventLive.Index do Gettext.put_locale(ClaperWeb.Gettext, locale) end + code = for _ <- 1..5, into: "", do: <> + 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: <> + 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: <> + socket |> assign(:page_title, gettext("Create")) |> assign(:event, %Event{ started_at: NaiveDateTime.utc_now(), - code: Enum.random(1000..9999), + code: code, leaders: [] }) end diff --git a/lib/claper_web/live/event_live/index.html.heex b/lib/claper_web/live/event_live/index.html.heex index c37385f..28b6cba 100644 --- a/lib/claper_web/live/event_live/index.html.heex +++ b/lib/claper_web/live/event_live/index.html.heex @@ -12,7 +12,7 @@ <% else %>
@@ -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" > - - <%= if @total_interactions == 0 && @event.presentation_file.length > 0 do %> - - <% end %> <% end %> <%= if @create=="poll" do %>
@@ -607,11 +571,11 @@
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: ""}"} >
0} @@ -627,14 +591,18 @@ > <%= if Application.get_env(:claper, :presentations) |> Keyword.get(:storage) == "local" do %> <% else %> - + 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 %> <% end %> @@ -755,49 +723,6 @@ -
  • - -
  • @@ -908,7 +833,9 @@ />
    - <%= gettext("Web content") %> + + <%= gettext("Web content") %> +
    %> <% end %> -

    <%= interaction.title %>

    +
    + <%= case interaction do %> + <% %Claper.Embeds.Embed{} -> %> + <%= case(interaction.provider) do %> + <% "youtube" -> %> + + + + + + + <% "vimeo" -> %> + + + + <% "canva" -> %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <% "googleslides" -> %> + + + + + + <% _ -> %> + <% end %> + <% _ -> %> + <% end %> + <%= interaction.title %> +
    <%= 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" > -
  • +
  • <%= link(gettext("Messages") <> " (#{@post_count})", to: "#", phx_click: "list-tab", phx_value_tab: :posts ) %>
  • -
  • +
  • <%= link(gettext("Questions") <> " (#{@question_count})", to: "#", phx_click: "list-tab", phx_value_tab: :questions ) %>
  • -
  • +
  • <%= link(gettext("Pinned messages") <> " (#{@pinned_post_count})", to: "#", phx_click: "list-tab", phx_value_tab: :pinned_posts ) %>
  • -
  • +
  • <%= link(gettext("Form submissions") <> " (#{@form_submit_count})", to: "#", phx_click: "list-tab", diff --git a/lib/claper_web/live/event_live/manager_settings_component.ex b/lib/claper_web/live/event_live/manager_settings_component.ex index 7b56d3a..a10d719 100644 --- a/lib/claper_web/live/event_live/manager_settings_component.ex +++ b/lib/claper_web/live/event_live/manager_settings_component.ex @@ -46,7 +46,7 @@ defmodule ClaperWeb.EventLive.ManagerSettingsComponent do
  • @@ -93,7 +93,7 @@ defmodule ClaperWeb.EventLive.PollComponent do >
    diff --git a/lib/claper_web/live/event_live/presenter.ex b/lib/claper_web/live/event_live/presenter.ex index d5063b2..df4cf4b 100644 --- a/lib/claper_web/live/event_live/presenter.ex +++ b/lib/claper_web/live/event_live/presenter.ex @@ -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 diff --git a/lib/claper_web/live/event_live/presenter.html.heex b/lib/claper_web/live/event_live/presenter.html.heex index 0d632ec..522d9ee 100644 --- a/lib/claper_web/live/event_live/presenter.html.heex +++ b/lib/claper_web/live/event_live/presenter.html.heex @@ -19,7 +19,7 @@
    @@ -46,28 +46,28 @@ <%= if @current_poll do %>
    -

    +

    <%= @current_poll.title %>

    -
    +
    <%= if (length @current_poll.poll_opts) > 0 do %> <%= for opt <- @current_poll.poll_opts do %> -
    +
    - + <%= opt.content %>
    - + <%= opt.percentage %>% (<%= opt.vote_count %>)
    @@ -80,7 +80,7 @@
    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 @@
    <%= if post.name do %> -

    +

    <%= post.name %>

    <% end %> -

    <%= post.body %>

    +

    <%= post.body %>

    <%= if post.like_count > 0 || post.love_count > 0 || post.lol_count > 0 do %>
    @@ -109,7 +109,7 @@ <%= if post.like_count > 0 do %> <%= post.like_count %> <% end %> @@ -118,7 +118,7 @@ <%= if post.love_count > 0 do %> <%= post.love_count %> <% end %> @@ -127,7 +127,7 @@ <%= if post.lol_count > 0 do %> <%= post.lol_count %> <% end %> @@ -144,11 +144,11 @@
    <%= if post.name do %> -

    +

    <%= post.name %>

    <% end %> -

    <%= post.body %>

    +

    <%= post.body %>

    <%= if post.like_count > 0 || post.love_count > 0 || post.lol_count > 0 do %>
    @@ -156,7 +156,7 @@ <%= if post.like_count > 0 do %> <%= post.like_count %> <% end %> @@ -165,7 +165,7 @@ <%= if post.love_count > 0 do %> <%= post.love_count %> <% end %> @@ -174,7 +174,7 @@ <%= if post.lol_count > 0 do %> <%= post.lol_count %> <% end %> @@ -188,7 +188,7 @@ <% end %>
    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 %>
    - <%= raw(@current_embed.content) %> + <.live_component + id="embed-component" + module={ClaperWeb.EventLive.EmbedIframeComponent} + provider={@current_embed.provider} + content={@current_embed.content} + />
    <% end %> -
    +
    <%= 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 %> diff --git a/lib/claper_web/live/event_live/show.ex b/lib/claper_web/live/event_live/show.ex index 70329bb..e570ec4 100644 --- a/lib/claper_web/live/event_live/show.ex +++ b/lib/claper_web/live/event_live/show.ex @@ -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 diff --git a/lib/claper_web/live/event_live/show.html.heex b/lib/claper_web/live/event_live/show.html.heex index a3920cd..182ca6e 100644 --- a/lib/claper_web/live/event_live/show.html.heex +++ b/lib/claper_web/live/event_live/show.html.heex @@ -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} />
    diff --git a/lib/claper_web/live/form_live/form_component.html.heex b/lib/claper_web/live/form_live/form_component.html.heex index 68ab605..c340190 100644 --- a/lib/claper_web/live/form_live/form_component.html.heex +++ b/lib/claper_web/live/form_live/form_component.html.heex @@ -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" >
    -
    - <%= checkbox(f, :multiple, class: "h-5 w-5") %> - <%= label(f, :multiple, gettext("Multiple answers"), class: "text-sm font-medium") %> -
    - <%= inputs_for f, :poll_opts, fn i -> %>
    @@ -84,6 +79,23 @@ +

    <%= gettext("Options") %>

    + +
    + <%= 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" + ) %> +
    + +
    + <%= checkbox(f, :multiple, class: "h-4 w-4") %> + <%= label(f, :multiple, gettext("Multiple answers"), class: "text-sm font-medium") %> +
    +
    + +
    + <% end %> + <%= for account <- @lti_accounts do %> +
    + + + LMS #<%= account.registration_id %> + + + + +
    + <% end %> +
    @@ -148,6 +252,7 @@
    -
    +

    <%= gettext("Danger zone") %> diff --git a/lib/claper_web/router.ex b/lib/claper_web/router.ex index e1ee9ba..5775e2c 100644 --- a/lib/claper_web/router.ex +++ b/lib/claper_web/router.ex @@ -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 diff --git a/lib/claper_web/templates/user_session/new.html.heex b/lib/claper_web/templates/user_session/new.html.heex index e2727d6..a4830dd 100644 --- a/lib/claper_web/templates/user_session/new.html.heex +++ b/lib/claper_web/templates/user_session/new.html.heex @@ -27,30 +27,32 @@

    - <.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 %> <% end %> - - +
    + + +
    <%= if Keyword.has_key?(@form.errors, @key) do %> @@ -121,11 +121,11 @@ defmodule ClaperWeb.Component.Input do @@ -176,7 +176,7 @@ defmodule ClaperWeb.Component.Input do <%= label(@form, @key, @name, class: "block text-sm font-medium text-gray-700") %>
    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" ) %>
    <%= 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" ) %>
    @@ -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" ) %> diff --git a/lib/lti_13/tool/services/ags/line_item.ex b/lib/lti_13/tool/services/ags/line_item.ex index 4c44ed8..d355199 100644 --- a/lib/lti_13/tool/services/ags/line_item.ex +++ b/lib/lti_13/tool/services/ags/line_item.ex @@ -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 diff --git a/lib/lti_13/users.ex b/lib/lti_13/users.ex index d59eb8d..c296321 100644 --- a/lib/lti_13/users.ex +++ b/lib/lti_13/users.ex @@ -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, diff --git a/mix.exs b/mix.exs index da9aaa0..d65dbce 100644 --- a/mix.exs +++ b/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 diff --git a/mix.lock b/mix.lock index 9b6572f..60d1c18 100644 --- a/mix.lock +++ b/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"}, diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index e903186..ce29446 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -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 F in the presentation window to enable fullscreen" msgstr "Drücken Sie F im Präsentationsfenster, um den Vollbildmodus zu aktivieren" @@ -416,7 +418,7 @@ msgstr "Drücken Sie F 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 )" -msgstr "Ungültiges Einbettungsformat (sollte mit 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" diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 4aef5a0..81a0647 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -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 F 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 )" -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 "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 5a9fada..386b770 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -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 F 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 )" -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 "" diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po index 8345b18..bacb7a0 100644 --- a/priv/gettext/es/LC_MESSAGES/default.po +++ b/priv/gettext/es/LC_MESSAGES/default.po @@ -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 F in the presentation window to enable fullscreen" msgstr "Pulsa F en la ventana de presentación para activar el modo pantalla completa" @@ -416,7 +418,7 @@ msgstr "Pulsa F 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 )" -msgstr "Formato embebido inválido (debe comenzar con )" - #: 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" diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po index 963e6ce..02b0ae1 100644 --- a/priv/gettext/fr/LC_MESSAGES/default.po +++ b/priv/gettext/fr/LC_MESSAGES/default.po @@ -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 F in the presentation window to enable fullscreen" msgstr "Appuyez sur F dans la fenêtre de présentation pour activer le plein écran" @@ -417,7 +419,7 @@ msgstr "Appuyez sur F 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 )" -msgstr "Format d'intégration invalide (doit commencer par )" - #: 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" diff --git a/priv/gettext/nl/LC_MESSAGES/default.po b/priv/gettext/nl/LC_MESSAGES/default.po index 217fe84..7097c0c 100644 --- a/priv/gettext/nl/LC_MESSAGES/default.po +++ b/priv/gettext/nl/LC_MESSAGES/default.po @@ -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 F in the presentation window to enable fullscreen" msgstr "Druk op F in het presentatievenster om volledig scherm in te schakelen" @@ -416,7 +418,7 @@ msgstr "Druk op F 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 )" -msgstr "Ongeldig insluitformaat (moet beginnen met )" - #: 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" diff --git a/priv/repo/migrations/20240729152555_create_oidc_users.exs b/priv/repo/migrations/20240729152555_create_oidc_users.exs new file mode 100644 index 0000000..c8d66ac --- /dev/null +++ b/priv/repo/migrations/20240729152555_create_oidc_users.exs @@ -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 diff --git a/priv/repo/migrations/20240730123205_remove_is_admin_from_users.exs b/priv/repo/migrations/20240730123205_remove_is_admin_from_users.exs new file mode 100644 index 0000000..f0072b3 --- /dev/null +++ b/priv/repo/migrations/20240730123205_remove_is_admin_from_users.exs @@ -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 diff --git a/priv/repo/migrations/20240730123331_add_is_randomized_password_to_users.exs b/priv/repo/migrations/20240730123331_add_is_randomized_password_to_users.exs new file mode 100644 index 0000000..e8372c6 --- /dev/null +++ b/priv/repo/migrations/20240730123331_add_is_randomized_password_to_users.exs @@ -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 diff --git a/priv/repo/migrations/20240731132357_add_provider_to_embeds.exs b/priv/repo/migrations/20240731132357_add_provider_to_embeds.exs new file mode 100644 index 0000000..d42b745 --- /dev/null +++ b/priv/repo/migrations/20240731132357_add_provider_to_embeds.exs @@ -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 diff --git a/priv/repo/migrations/20240801084601_add_show_results_to_polls.exs b/priv/repo/migrations/20240801084601_add_show_results_to_polls.exs new file mode 100644 index 0000000..875aedb --- /dev/null +++ b/priv/repo/migrations/20240801084601_add_show_results_to_polls.exs @@ -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 diff --git a/priv/repo/migrations/20240801084731_remove_show_poll_results_enabled_from_presentation_states.exs b/priv/repo/migrations/20240801084731_remove_show_poll_results_enabled_from_presentation_states.exs new file mode 100644 index 0000000..ae773d4 --- /dev/null +++ b/priv/repo/migrations/20240801084731_remove_show_poll_results_enabled_from_presentation_states.exs @@ -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 diff --git a/priv/repo/migrations/20240801130739_remove_uniqueness_of_hash_from_presentation_files.exs b/priv/repo/migrations/20240801130739_remove_uniqueness_of_hash_from_presentation_files.exs new file mode 100644 index 0000000..c4a09a0 --- /dev/null +++ b/priv/repo/migrations/20240801130739_remove_uniqueness_of_hash_from_presentation_files.exs @@ -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 diff --git a/priv/static/images/icons/lms.png b/priv/static/images/icons/lms.png new file mode 100644 index 0000000000000000000000000000000000000000..abfc10b06eee2bcf614fd3fc4194fcedcb54ab91 GIT binary patch literal 3876 zcmV+<58LpGP)e!C>vG1iX$L`i zh%62vh{BKr2n_@SWHBs`3Wz8O#3uVvAxl*%mD=8Wx6dmGW~r(q6>Mm}`oFKfx14+L zyYHTR&pr3tR|t9V;K73j4<0;t@NnOQk%xXETeq_M)(USyXY%1GPKJ2g5gb0M1Fc-y zfiV`)9psKFM5EDAXox@=cl70kLP<#pGkVk8i;$`FDPpn4A;O0sg1rbPEJ28)DAph# za-Ct>?{IKvzG~OOL+B2`pdpf$mgdDU)QYOAs^22_F$#k41{{x|yG+BgDY4|Si51k@ zvzWB&GdZ)_*FiFgfVdzy25}a19Br|VgY!eJYv1(aPJN+N9xf|KZZf1^osp4|K-2X1 zP|Tm;a=1G`LdcISYfId@bLU-EM$PI4fek5-W%8AOJ%m z_4AT$}bQ^0-fch80Ml^d~!lth>Wm@^UI0V5^OI+D!t$v zK60jac5WjY1cMqOgdhycSO}*VhoTHnM3%*38GA1%qaiJM0pD1Erb`)i1R=WlyDt?% zA0Dic1_w@o#=YJwiTRMLN8UzC# zAz+@O;P6NADi$F(vDs|MY&JiamzTE#-2>cM{PY}iO-&vsfbD*tW*Ce7k;$V2-rrtj zPxr=iKBTVx8KToAL!S)bd9If7@jar-IkCUX%c`A~FrKt)&qIs$Xj6)1S|s5k9#edL z;Mzdy)UQIIH;bd#a7_4=zm> zDB=fSP+bz7P!xmT{k=h*B%ls~LUo|fFBskEQ}~5#HZ%kpQ>MJa z>2w>20~s~U`>HxQc`{z5Y43jj#5Dqduc5qz=Ml!Ch;$9#niYY zr)D9!_a;31NWUh)LEUh}>?spTUjbreveQ@<_H1j($@uztPb5p_?B1X~MPGcG^ zlHv#U{6#C?Yg|4*p1*qK6toq?$Yr&vcRzXn84eR| z*4dequ04^L&??$&x`@NW3Kd)To$aq~ZkZ#V=T*oJrbMAGWr&EL%{r2sFdJHEDjM{f zh(t0JI!yLXdj&5n-ZIc!&GQphw4~2F8@%gaF^WP?M}eBa;J?5a$~ww#NMB5XPBZ{IwX{x9w zvNkquuGpcGIV;bt5h9UDDy>$F5zMaFK=XJ@F^Y@$nPP{Ou$vs5J_64z(z;4!tEz?` zDlno!w{;p5`O1o8WXFyP;MbeGr&H&Dz6%b!&;Yo#4#~Rp>qF<+jlA8=CQsVqvKa`?Z;;k2bWP@=`S~seQ>w{ zjSPWE;@VVVyczkhuj8a+x7|vTGi5!(vJXH(%N^%IDJ18KXq;MB;jCD}VvXqa9GDNe zrI&JY{$otrWu~#9XbrJhB9P4c9rga=Dl|x%7fz3}8aq}J0eu-(@MUJBW{r|B{cKL3 zgc9j+XJxoGhmikEcof?IK}RyRFA|=8m?Xlgd=w1lWpJxbyw5Pq2jEeygVRjcg`*$P zzm%-#t_%^J`h^MA%T~c@xs!ZSgsD{I0vH?qeePK-AxdpUa8qGv8rO2;ZQfv5hHa(+ zE#i7SUZas%n_G7B`t~%^q2Ji>+uy{omDk1zJkRz?Y|#5SE5|K`z#?suQz0S8a9YXL zbLY<4VBxnNf{?K?nJo19@#8mLK90D4Sxo&m{%P3t6s^H#(aYFDGoJ1A||qy}Z`@JU;yeG)Qo& z#>#qmr_jFs+i0~qEj0Vk*PJp?jEeJp9y!dr!&y0Q%^_GIp-vrDY@a)vb2*lvF-^|p zR6o6np?SnR)+h9G6_^eRJJ||mb|izjVaWUEKMzo^KRA~P9N(j* zX}Q-|oiQOB(9ei0M!g0`Nln+a7*>)*Mt|chy~BppXf({okt1J?ii(PuHf`DxbibgE zIVqY;3}%G!@jK)@B6@E02l=}0NyJ!}c0uAx^-sqg)h&*dKp^|p_z8I}4? z*@!WZsU|=DjQ59qw^tk1EQ{o{b(y@e<7sP6#g4|bUn*Ud*|ai!0;kt)vbF2xa;-PE zlS?^$_R|3tUrbY0qM&ub%Bt#TUaa5#rRtZL-#3kp9B;dohTX{j0A2ZZJo zuM@ws(w;3!XqpwDf+VbpvvPH`zki`}YGkptoHB8k)`N@W52i*>vjL{Aye+RTiQpP* z;*dgdI%MM>dsKik7)>y5LhK6D7}MNk==&9#44JInI33qqe~O}{emo{MO=bCo%A6C0 zjyAWt<4_@xCsf>)5CM}HESJm0z2aJQA3$<)=*H}I`}hvSEO@uubEIIN7vJeusSFt6_zM-SntPV7m9zQQ|Trg^CJrCtf#;K{iI(y%h#$V4`#F{%3 znSg+;$~}LMvKc$~@MhC^aSH^3C-(BOUiUlLhY{CdZ@Q|VLz4xX?mn3_CX;E%-*4S3 zh>ZxI+Oh7+5D~jAn5jhS^7n;ia>XIA(di4QO8REJHyn|S+x$1Tp zNVU7*pmKldO5R7&V$XI|E zD5=z;r^8#VW0;x?eZn)LF_X{JLCQ=@Dyx$)tVWgoy0Lc};o3Lv@*L+d-bQ(Ooe9}r z+;70r$q2y>-OkI892xx1+`Y`C7hdR;ML(1V>uHDk%V5ryit|kOd*a$A^kCV`VJE%` zR~|dJws#)ghaU!T7Rww*I|&ra>bw-H#b^LHG(`+!EwkBJ`}Q&X&Y}B|ppW)ks?V60 zj;~+aPr4?|Tfjw__+1v9){EDq;LlR+jsr=8)iRxQnv@cmtbqiE<}0%Io$Q*VEd{xe z#A*xZ{T#6VMx+?N(0|vVihz7o6Ytvx=&GO=jT&lVd;pbdYB*k zhGC4#-q3AJe?7c$<0qfn8X6Art!=9Wvw4wOr(12k{zFN_%=iO_l}kj$AuCM_s84jbQ8 z{oEq8x%@&g*J+4HxTh%+KfU0MhPmxOT-aT+ezn}^(Mh#nnp(T$G{ZEqA>ogP>^d^2 zPo7+bKnScoTy9_9FF>OeqWFIvOZx}>FRVQ*w14o&qBq89D>V>zdcaj)!D3FNiq5R? ze`{?UD0MqHQ#Lk8v5}378x^v*@Y})Gh`+Bdu%z*SVKI8!@A%Y3Z-h>>l|fBm8*)Pc literal 0 HcmV?d00001 diff --git a/priv/static/images/icons/openid.png b/priv/static/images/icons/openid.png new file mode 100644 index 0000000000000000000000000000000000000000..87504feaf21086e827bbdb49836d4616c583f82b GIT binary patch literal 774 zcmV+h1Nr=kP)5LQm5;>3&-~KJa4I_YrVa_3npz` z(rVyol<6q|2uIf!pdHu?d>zfys=AH4t~*Ck4j8Vrq1gneNIL5K{<@x?p2aqRAP9C# zx(s}%=YdGtUYGe&sWe~Gy@;T$}m&@fQNzZEp z?DKtp!&Kb^K@cpHbUgy#bS(4c$pAMjK}LXcxm<2`WSp1)l}cqEa8}Zfh%ETA0DvPl z^X81l3KA1Q($3L0Ph<@McjI14LzW;H;+l^OP%f97fQ`TbQwx&rOZsHl|5fCsl8#&G z-n`zqe+zI((j`fcfHzK*fCm=(oRfxTPSWRz0L%@X7J#3YBeWtF09Xn* z2!i!#$-py94a9zZHX7iJ

    R!3oh{hg+igZMjdpdVx$DREC9p6j>H4x^ZB_zzoiy_ zNjjKlfN@9ZV~xJ#q33xmPLjV$NLmiOtkGcok#rN-TB%fKB@V#I%%Q;57@eY-$V!s- z0c*^FlL&w@jW$*TaoXOof=?8{xcPVw@Hh@cwec6HoNwK2&Iu<8@;tA_OlD^6jQTE= zDC4#v$PD&oW(CS-UY0c2f6^K1Zgbiv{8Oe(nKBvu1&{RvAG+WZ!~g&Q07*qoM6N<$ Ef*^EOi2wiq literal 0 HcmV?d00001 diff --git a/test/claper/embeds_test.exs b/test/claper/embeds_test.exs index 9a26b09..d6fde8c 100644 --- a/test/claper/embeds_test.exs +++ b/test/claper/embeds_test.exs @@ -45,6 +45,7 @@ defmodule Claper.EmbedsTest do title: "some title", content: "", + provider: "custom", presentation_file_id: presentation_file.id, position: 0 } @@ -56,6 +57,38 @@ defmodule Claper.EmbedsTest do "" 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: "" } diff --git a/test/claper/events_test.exs b/test/claper/events_test.exs index c854ac6..9d3f88f 100644 --- a/test/claper/events_test.exs +++ b/test/claper/events_test.exs @@ -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() diff --git a/test/claper/presentations_test.exs b/test/claper/presentations_test.exs index 6c4ed1a..9610521 100644 --- a/test/claper/presentations_test.exs +++ b/test/claper/presentations_test.exs @@ -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 diff --git a/test/claper_web/controllers/lti_controller.exs b/test/claper_web/controllers/lti_controller.exs index 9ffcf20..0f92245 100644 --- a/test/claper_web/controllers/lti_controller.exs +++ b/test/claper_web/controllers/lti_controller.exs @@ -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 diff --git a/test/claper_web/controllers/user_session_controller_test.exs b/test/claper_web/controllers/user_session_controller_test.exs index 5d98881..0bd8ba0 100644 --- a/test/claper_web/controllers/user_session_controller_test.exs +++ b/test/claper_web/controllers/user_session_controller_test.exs @@ -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 diff --git a/test/lti_13/jwks_test.exs b/test/lti_13/jwks_test.exs index 9b23e08..b0352f7 100644 --- a/test/lti_13/jwks_test.exs +++ b/test/lti_13/jwks_test.exs @@ -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 diff --git a/test/support/fixtures/embeds__fixtures.ex b/test/support/fixtures/embeds__fixtures.ex index ca8e1d4..a3634f7 100644 --- a/test/support/fixtures/embeds__fixtures.ex +++ b/test/support/fixtures/embeds__fixtures.ex @@ -17,6 +17,23 @@ defmodule Claper.EmbedsFixtures do content: "", 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 })