diff --git a/.build b/.build index 5c94787..570e29d 100644 --- a/.build +++ b/.build @@ -122,8 +122,8 @@ dist/merriweather-latin-ext-300-normal-K6L27CZ5.woff2 dist/merriweather-vietnamese-300-italic-EHHNZPUO.woff2 dist/merriweather-vietnamese-300-normal-U376L4Z4.woff2 dist/remixicon-NKANDIL5.woff2 -dist/search_items-1C7F6EC5.js -dist/sidebar_items-3229396A.js +dist/search_items-5EA5ACC6.js +dist/sidebar_items-F19A6797.js features.html howto.html index.html diff --git a/404.html b/404.html index fd9852f..9350d77 100644 --- a/404.html +++ b/404.html @@ -5,15 +5,15 @@ - + -
iex> deliver_magic_link(user, &Routes.user_confirmation_url(conn, :confirm_magic, &1))
-{:ok, %{to: ..., body: ...}}
+iex> deliver_magic_link(user, &Routes.user_confirmation_url(conn, :confirm_magic, &1))
+{:ok, %{to: ..., body: ...}}
iex> deliver_update_email_instructions(user, current_email, &Routes.user_update_email_url(conn, :edit, &1))
-{:ok, %{to: ..., body: ...}}
+iex> deliver_update_email_instructions(user, current_email, &Routes.user_update_email_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
iex> deliver_user_confirmation_instructions(user, &Routes.user_confirmation_url(conn, :edit, &1))
-{:ok, %{to: ..., body: ...}}
+iex> deliver_user_confirmation_instructions(user, &Routes.user_confirmation_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
-iex> deliver_user_confirmation_instructions(confirmed_user, &Routes.user_confirmation_url(conn, :edit, &1))
-{:error, :already_confirmed}
+iex> deliver_user_confirmation_instructions(confirmed_user, &Routes.user_confirmation_url(conn, :edit, &1))
+{:error, :already_confirmed}
iex> deliver_user_reset_password_instructions(user, &Routes.user_reset_password_url(conn, :edit, &1))
-{:ok, %{to: ..., body: ...}}
+iex> deliver_user_reset_password_instructions(user, &Routes.user_reset_password_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
iex> get_user!(123)
-%User{}
+iex> get_user!(123)
+%User{}
-iex> get_user!(456)
+iex> get_user!(456)
** (Ecto.NoResultsError)
iex> get_user_by_email("foo@example.com")
-%User{}
+iex> get_user_by_email("foo@example.com")
+%User{}
-iex> get_user_by_email("unknown@example.com")
+iex> get_user_by_email("unknown@example.com")
nil
@@ -795,10 +795,10 @@ and the token is deleted.
Examples
-iex> get_user_by_email_and_password("foo@example.com", "correct_password")
-%User{}
+iex> get_user_by_email_and_password("foo@example.com", "correct_password")
+%User{}
-iex> get_user_by_email_and_password("foo@example.com", "invalid_password")
+iex> get_user_by_email_and_password("foo@example.com", "invalid_password")
nil
@@ -827,10 +827,10 @@ and the token is deleted.
Examples
-iex> get_user_by_reset_password_token("validtoken")
-%User{}
+iex> get_user_by_reset_password_token("validtoken")
+%User{}
-iex> get_user_by_reset_password_token("invalidtoken")
+iex> get_user_by_reset_password_token("invalidtoken")
nil
@@ -903,11 +903,11 @@ and the token is deleted.
Examples
-iex> register_user(%{field: value})
-{:ok, %User{}}
+iex> register_user(%{field: value})
+{:ok, %User{}}
-iex> register_user(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> register_user(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -935,11 +935,11 @@ and the token is deleted.
Examples
-iex> reset_user_password(user, %{password: "new long password", password_confirmation: "new long password"})
-{:ok, %User{}}
+iex> reset_user_password(user, %{password: "new long password", password_confirmation: "new long password"})
+{:ok, %User{}}
-iex> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"})
-{:error, %Ecto.Changeset{}}
+iex> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"})
+{:error, %Ecto.Changeset{}}
@@ -990,11 +990,11 @@ The confirmed_at date is also updated to the current time.
Examples
-iex> update_user_password(user, "valid password", %{password: ...})
-{:ok, %User{}}
+iex> update_user_password(user, "valid password", %{password: ...})
+{:ok, %User{}}
-iex> update_user_password(user, "invalid password", %{password: ...})
-{:error, %Ecto.Changeset{}}
+iex> update_user_password(user, "invalid password", %{password: ...})
+{:error, %Ecto.Changeset{}}
@@ -1022,10 +1022,10 @@ The confirmed_at date is also updated to the current time.
Examples
-iex> update_user_password(user, "valid password", %{password: ...})
-{:ok, %User{}}
-iex> update_user_password(user, "invalid password", %{password: ...})
-{:error, %Ecto.Changeset{}}
+iex> update_user_password(user, "valid password", %{password: ...})
+{:ok, %User{}}
+iex> update_user_password(user, "invalid password", %{password: ...})
+{:error, %Ecto.Changeset{}}
diff --git a/Claper.Events.ActivityLeader.html b/Claper.Events.ActivityLeader.html
index eefab64..2103a4b 100644
--- a/Claper.Events.ActivityLeader.html
+++ b/Claper.Events.ActivityLeader.html
@@ -5,15 +5,15 @@
-
+
- Claper.Events.ActivityLeader — Claper v1.4.1
+ Claper.Events.ActivityLeader — Claper v1.5.0
-
+
@@ -72,7 +72,7 @@
Claper
iex> change_activity_leader(activity_leader)
-%Ecto.Changeset{data: %ActivityLeader{}}
+iex> change_activity_leader(activity_leader)
+%Ecto.Changeset{data: %ActivityLeader{}}
@@ -377,8 +377,8 @@ Functions
Examples
-iex> change_event(event)
-%Ecto.Changeset{data: %Event{}}
+iex> change_event(event)
+%Ecto.Changeset{data: %Event{}}
@@ -428,11 +428,11 @@ Functions
Examples
-iex> create_event(%{field: value})
-{:ok, %Event{}}
+iex> create_event(%{field: value})
+{:ok, %Event{}}
-iex> create_event(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_event(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -460,11 +460,11 @@ Functions
Examples
-iex> delete_event(event)
-{:ok, %Event{}}
+iex> delete_event(event)
+{:ok, %Event{}}
-iex> delete_event(event)
-{:error, %Ecto.Changeset{}}
+iex> delete_event(event)
+{:error, %Ecto.Changeset{}}
@@ -492,10 +492,10 @@ Functions
Examples
-iex> get_activity_leader!(123)
-%ActivityLeader{}
+iex> get_activity_leader!(123)
+%ActivityLeader{}
-iex> get_activity_leader!(456)
+iex> get_activity_leader!(456)
** (Ecto.NoResultsError)
@@ -524,8 +524,8 @@ Functions
Examples
-iex> get_activity_leaders_for_event!(event)
-[%ActivityLeader{}, ...]
+iex> get_activity_leaders_for_event!(event)
+[%ActivityLeader{}, ...]
@@ -553,8 +553,8 @@ Functions
Examples
-iex> get_different_event_with_code("Hello", 123)
-%Event{}
+iex> get_different_event_with_code("Hello", 123)
+%Event{}
@@ -584,10 +584,10 @@ Functions
Examples
-iex> get_event!("123e4567-e89b-12d3-a456-426614174000")
-%Event{}
+iex> get_event!("123e4567-e89b-12d3-a456-426614174000")
+%Event{}
-iex> get_event!("123e4567-e89b-12d3-a456-4266141740111")
+iex> get_event!("123e4567-e89b-12d3-a456-4266141740111")
** (Ecto.NoResultsError)
@@ -642,10 +642,10 @@ Functions
Examples
-iex> get_event_with_code!("Hello")
-%Event{}
+iex> get_event_with_code!("Hello")
+%Event{}
-iex> get_event_with_code!("Old event")
+iex> get_event_with_code!("Old event")
** (Ecto.NoResultsError)
@@ -676,10 +676,10 @@ Functions
Examples
-iex> get_managed_event!(user, "123e4567-e89b-12d3-a456-426614174000")
-%Event{}
+iex> get_managed_event!(user, "123e4567-e89b-12d3-a456-426614174000")
+%Event{}
-iex> get_managed_event!(another_user, "123e4567-e89b-12d3-a456-426614174000")
+iex> get_managed_event!(another_user, "123e4567-e89b-12d3-a456-426614174000")
** (Ecto.NoResultsError)
@@ -710,10 +710,10 @@ Functions
Examples
-iex> get_user_event!(user, "123e4567-e89b-12d3-a456-426614174000")
-%Event{}
+iex> get_user_event!(user, "123e4567-e89b-12d3-a456-426614174000")
+%Event{}
-iex> get_user_event!(another_user, "123e4567-e89b-12d3-a456-426614174000")
+iex> get_user_event!(another_user, "123e4567-e89b-12d3-a456-426614174000")
** (Ecto.NoResultsError)
@@ -742,11 +742,11 @@ Functions
Examples
-iex> import(user_id, from_event_uuid, to_event_uuid)
-{:ok, %Event{}}
+iex> import(user_id, from_event_uuid, to_event_uuid)
+{:ok, %Event{}}
-iex> import(user_id, from_event_uuid, to_event_uuid)
-{:error, %Ecto.Changeset{}}
+iex> import(user_id, from_event_uuid, to_event_uuid)
+{:error, %Ecto.Changeset{}}
@@ -774,7 +774,7 @@ Functions
Examples
-iex> is_leaded_by("email@example.com", 123)
+iex> is_leaded_by("email@example.com", 123)
true
@@ -805,8 +805,8 @@ Functions
Examples
-iex> list_events(123)
-[%Event{}, ...]
+iex> list_events(123)
+[%Event{}, ...]
@@ -836,8 +836,8 @@ Functions
Examples
-iex> list_managed_events_by("email@example.com")
-[%Event{}, ...]
+iex> list_managed_events_by("email@example.com")
+[%Event{}, ...]
@@ -865,11 +865,11 @@ Functions
Examples
-iex> update_event(event, %{field: new_value})
-{:ok, %Event{}}
+iex> update_event(event, %{field: new_value})
+{:ok, %Event{}}
-iex> update_event(event, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_event(event, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Claper.Forms.Field.html b/Claper.Forms.Field.html
index 67e1c55..c0b3862 100644
--- a/Claper.Forms.Field.html
+++ b/Claper.Forms.Field.html
@@ -5,15 +5,15 @@
-
+
- Claper.Forms.Field — Claper v1.4.1
+ Claper.Forms.Field — Claper v1.5.0
-
+
@@ -72,7 +72,7 @@
Claper
iex> change_form(form)
-%Ecto.Changeset{data: %Form{}}
+iex> change_form(form)
+%Ecto.Changeset{data: %Form{}}
@@ -417,8 +417,8 @@ Functions
Examples
-iex> change_form_submit(form_submit)
-%Ecto.Changeset{data: %FormSubmit{}}
+iex> change_form_submit(form_submit)
+%Ecto.Changeset{data: %FormSubmit{}}
@@ -448,11 +448,11 @@ Functions
Examples
-iex> create_form(%{field: value})
-{:ok, %Form{}}
+iex> create_form(%{field: value})
+{:ok, %Form{}}
-iex> create_form(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_form(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -482,11 +482,11 @@ Functions
Examples
-iex> create_form_submit(%{field: value})
-{:ok, %FormSubmit{}}
+iex> create_form_submit(%{field: value})
+{:ok, %FormSubmit{}}
-iex> create_form_submit(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_form_submit(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -514,11 +514,11 @@ Functions
Examples
-iex> create_or_update_form_submit(%{field: value})
-{:ok, %FormSubmit{}}
+iex> create_or_update_form_submit(%{field: value})
+{:ok, %FormSubmit{}}
-iex> create_or_update_form_submit(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_or_update_form_submit(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -568,11 +568,11 @@ Functions
Examples
-iex> delete_form("123e4567-e89b-12d3-a456-426614174000", form)
-{:ok, %Form{}}
+iex> delete_form("123e4567-e89b-12d3-a456-426614174000", form)
+{:ok, %Form{}}
-iex> delete_form("123e4567-e89b-12d3-a456-426614174000", form)
-{:error, %Ecto.Changeset{}}
+iex> delete_form("123e4567-e89b-12d3-a456-426614174000", form)
+{:error, %Ecto.Changeset{}}
@@ -600,11 +600,11 @@ Functions
Examples
-iex> delete_form_submit(post, event_id)
-{:ok, %FormSubmit{}}
+iex> delete_form_submit(post, event_id)
+{:ok, %FormSubmit{}}
-iex> delete_form_submit(post, event_id)
-{:error, %Ecto.Changeset{}}
+iex> delete_form_submit(post, event_id)
+{:error, %Ecto.Changeset{}}
@@ -656,10 +656,10 @@ Functions
Examples
-iex> get_form!(123)
-%Poll{}
+iex> get_form!(123)
+%Poll{}
-iex> get_form!(456)
+iex> get_form!(456)
** (Ecto.NoResultsError)
@@ -688,8 +688,8 @@ Functions
Examples
-iex> get_form!(123, 0)
-%Form{}
+iex> get_form!(123, 0)
+%Form{}
@@ -717,8 +717,8 @@ Functions
Examples
-iex> get_form_submit!(321, 123)
-%FormSubmit{}
+iex> get_form_submit!(321, 123)
+%FormSubmit{}
@@ -748,10 +748,10 @@ Functions
Examples
-iex> get_form_submit_by_id!("123e4567-e89b-12d3-a456-426614174000")
-%Post{}
+iex> get_form_submit_by_id!("123e4567-e89b-12d3-a456-426614174000")
+%Post{}
-iex> get_form_submit_by_id!("123e4567-e89b-12d3-a456-426614174123")
+iex> get_form_submit_by_id!("123e4567-e89b-12d3-a456-426614174123")
** (Ecto.NoResultsError)
@@ -780,8 +780,8 @@ Functions
Examples
-iex> list_form_submits(123)
-[%FormSubmit{}, ...]
+iex> list_form_submits(123)
+[%FormSubmit{}, ...]
@@ -809,8 +809,8 @@ Functions
Examples
-iex> list_forms(123)
-[%Form{}, ...]
+iex> list_forms(123)
+[%Form{}, ...]
@@ -838,8 +838,8 @@ Functions
Examples
-iex> list_forms_at_position(123, 0)
-[%Form{}, ...]
+iex> list_forms_at_position(123, 0)
+[%Form{}, ...]
@@ -911,11 +911,11 @@ Functions
Examples
-iex> update_form("123e4567-e89b-12d3-a456-426614174000", form, %{field: new_value})
-{:ok, %Form{}}
+iex> update_form("123e4567-e89b-12d3-a456-426614174000", form, %{field: new_value})
+{:ok, %Form{}}
-iex> update_form("123e4567-e89b-12d3-a456-426614174000", form, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_form("123e4567-e89b-12d3-a456-426614174000", form, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Claper.Mailer.html b/Claper.Mailer.html
index 9e9140c..dfe6c28 100644
--- a/Claper.Mailer.html
+++ b/Claper.Mailer.html
@@ -5,15 +5,15 @@
-
+
- Claper.Mailer — Claper v1.4.1
+ Claper.Mailer — Claper v1.5.0
-
+
@@ -72,7 +72,7 @@
Claper
iex> change_poll(poll)
-%Ecto.Changeset{data: %Poll{}}
+iex> change_poll(poll)
+%Ecto.Changeset{data: %Poll{}}
@@ -377,11 +377,11 @@ Functions
Examples
-iex> create_poll(%{field: value})
-{:ok, %Poll{}}
+iex> create_poll(%{field: value})
+{:ok, %Poll{}}
-iex> create_poll(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_poll(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -411,11 +411,11 @@ Functions
Examples
-iex> create_poll_vote(%{field: value})
-{:ok, %PollVote{}}
+iex> create_poll_vote(%{field: value})
+{:ok, %PollVote{}}
-iex> create_poll_vote(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_poll_vote(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -443,11 +443,11 @@ Functions
Examples
-iex> delete_poll("123e4567-e89b-12d3-a456-426614174000", poll)
-{:ok, %Poll{}}
+iex> delete_poll("123e4567-e89b-12d3-a456-426614174000", poll)
+{:ok, %Poll{}}
-iex> delete_poll("123e4567-e89b-12d3-a456-426614174000", poll)
-{:error, %Ecto.Changeset{}}
+iex> delete_poll("123e4567-e89b-12d3-a456-426614174000", poll)
+{:error, %Ecto.Changeset{}}
@@ -497,10 +497,10 @@ Functions
Examples
-iex> get_poll!(123)
-%Poll{}
+iex> get_poll!(123)
+%Poll{}
-iex> get_poll!(456)
+iex> get_poll!(456)
** (Ecto.NoResultsError)
@@ -529,8 +529,8 @@ Functions
Examples
-iex> get_poll!(123, 0)
-%Poll{}
+iex> get_poll!(123, 0)
+%Poll{}
@@ -558,8 +558,8 @@ Functions
Examples
-iex> get_poll_vote!(321, 123)
-[%PollVote{}]
+iex> get_poll_vote!(321, 123)
+[%PollVote{}]
@@ -587,8 +587,8 @@ Functions
Examples
-iex> list_polls(123)
-[%Poll{}, ...]
+iex> list_polls(123)
+[%Poll{}, ...]
@@ -616,8 +616,8 @@ Functions
Examples
-iex> list_polls_at_position(123, 0)
-[%Poll{}, ...]
+iex> list_polls_at_position(123, 0)
+[%Poll{}, ...]
@@ -689,8 +689,8 @@ Functions
Examples
-iex> set_percentages(poll)
-%Poll{}
+iex> set_percentages(poll)
+%Poll{}
@@ -718,11 +718,11 @@ Functions
Examples
-iex> update_poll("123e4567-e89b-12d3-a456-426614174000", poll, %{field: new_value})
-{:ok, %Poll{}}
+iex> update_poll("123e4567-e89b-12d3-a456-426614174000", poll, %{field: new_value})
+{:ok, %Poll{}}
-iex> update_poll("123e4567-e89b-12d3-a456-426614174000", poll, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_poll("123e4567-e89b-12d3-a456-426614174000", poll, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Claper.Posts.Post.html b/Claper.Posts.Post.html
index b4211c4..3340cb4 100644
--- a/Claper.Posts.Post.html
+++ b/Claper.Posts.Post.html
@@ -5,15 +5,15 @@
-
+
- Claper.Posts.Post — Claper v1.4.1
+ Claper.Posts.Post — Claper v1.5.0
-
+
@@ -72,7 +72,7 @@
Claper
@@ -296,11 +296,11 @@ Functions
Examples
-iex> create_reaction(%{field: value})
-{:ok, %Reaction{}}
+iex> create_reaction(%{field: value})
+{:ok, %Reaction{}}
-iex> create_reaction(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_reaction(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -350,11 +350,11 @@ Functions
Examples
-iex> delete_post(post)
-{:ok, %Post{}}
+iex> delete_post(post)
+{:ok, %Post{}}
-iex> delete_post(post)
-{:error, %Ecto.Changeset{}}
+iex> delete_post(post)
+{:error, %Ecto.Changeset{}}
@@ -382,11 +382,11 @@ Functions
Examples
-iex> delete_reaction(reaction)
-{:ok, %Reaction{}}
+iex> delete_reaction(reaction)
+{:ok, %Reaction{}}
-iex> delete_reaction(reaction)
-{:error, %Ecto.Changeset{}}
+iex> delete_reaction(reaction)
+{:error, %Ecto.Changeset{}}
@@ -416,10 +416,10 @@ Functions
Examples
-iex> get_post!("123e4567-e89b-12d3-a456-426614174000")
-%Post{}
+iex> get_post!("123e4567-e89b-12d3-a456-426614174000")
+%Post{}
-iex> get_post!("123e4567-e89b-12d3-a456-426614174123")
+iex> get_post!("123e4567-e89b-12d3-a456-426614174123")
** (Ecto.NoResultsError)
@@ -448,10 +448,10 @@ Functions
Examples
-iex> get_reaction!(123)
-%Reaction{}
+iex> get_reaction!(123)
+%Reaction{}
-iex> get_reaction!(456)
+iex> get_reaction!(456)
** (Ecto.NoResultsError)
@@ -526,11 +526,11 @@ Functions
Examples
-iex> update_post(post, %{field: new_value})
-{:ok, %Post{}}
+iex> update_post(post, %{field: new_value})
+{:ok, %Post{}}
-iex> update_post(post, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_post(post, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Claper.Presentations.PresentationFile.html b/Claper.Presentations.PresentationFile.html
index 42a28e3..16ca4b7 100644
--- a/Claper.Presentations.PresentationFile.html
+++ b/Claper.Presentations.PresentationFile.html
@@ -5,15 +5,15 @@
-
+
- Claper.Presentations.PresentationFile — Claper v1.4.1
+ Claper.Presentations.PresentationFile — Claper v1.5.0
-
+
@@ -72,7 +72,7 @@
Claper
iex> create_presentation_file(%{field: value})
-{:ok, %PresentationFile{}}
+iex> create_presentation_file(%{field: value})
+{:ok, %PresentationFile{}}
-iex> create_presentation_file(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_presentation_file(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -270,11 +270,11 @@ Functions
Examples
-iex> create_presentation_state(%{field: value})
-{:ok, %PresentationState{}}
+iex> create_presentation_state(%{field: value})
+{:ok, %PresentationState{}}
-iex> create_presentation_state(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_presentation_state(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -304,10 +304,10 @@ Functions
Examples
-iex> get_presentation_file!(123)
-%PresentationFile{}
+iex> get_presentation_file!(123)
+%PresentationFile{}
-iex> get_presentation_file!(456)
+iex> get_presentation_file!(456)
** (Ecto.NoResultsError)
@@ -380,11 +380,11 @@ Functions
Examples
-iex> update_presentation_file(presentation_file, %{field: new_value})
-{:ok, %PresentationFile{}}
+iex> update_presentation_file(presentation_file, %{field: new_value})
+{:ok, %PresentationFile{}}
-iex> update_presentation_file(presentation_file, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_presentation_file(presentation_file, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -412,11 +412,11 @@ Functions
Examples
-iex> update_presentation_state(presentation_state, %{field: new_value})
-{:ok, %PresentationState{}}
+iex> update_presentation_state(presentation_state, %{field: new_value})
+{:ok, %PresentationState{}}
-iex> update_presentation_state(presentation_state, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_presentation_state(presentation_state, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Claper.Release.html b/Claper.Release.html
index 9dae0e7..b3d781d 100644
--- a/Claper.Release.html
+++ b/Claper.Release.html
@@ -5,15 +5,15 @@
-
+
- Claper.Release — Claper v1.4.1
+ Claper.Release — Claper v1.5.0
-
+
@@ -72,7 +72,7 @@
Claper
import ClaperWeb.Gettext
# Simple translation
-gettext("Here is the string to translate")
+gettext("Here is the string to translate")
# Plural translation
-ngettext("Here is the string to translate",
+ngettext("Here is the string to translate",
"Here are the strings to translate",
- 3)
+ 3)
# Domain-based translation
-dgettext("errors", "Here is the error message to translate")
See the Gettext Docs for detailed usage.
+dgettext("errors", "Here is the error message to translate")
See the Gettext Docs for detailed usage.
@@ -147,7 +147,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.dgettext/3.
+ Callback implementation for Gettext.Backend.dgettext/3.
@@ -157,7 +157,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.dgettext_noop/2.
+ Callback implementation for Gettext.Backend.dgettext_noop/2.
@@ -167,7 +167,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.dngettext/5.
+ Callback implementation for Gettext.Backend.dngettext/5.
@@ -177,7 +177,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.dngettext_noop/3.
+ Callback implementation for Gettext.Backend.dngettext_noop/3.
@@ -187,7 +187,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.dpgettext/4.
+ Callback implementation for Gettext.Backend.dpgettext/4.
@@ -205,7 +205,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.dpngettext/6.
+ Callback implementation for Gettext.Backend.dpngettext/6.
@@ -223,7 +223,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.gettext/2.
+ Callback implementation for Gettext.Backend.gettext/2.
@@ -233,7 +233,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.gettext_comment/1.
+ Callback implementation for Gettext.Backend.gettext_comment/1.
@@ -243,7 +243,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.gettext_noop/1.
+ Callback implementation for Gettext.Backend.gettext_noop/1.
@@ -253,7 +253,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.handle_missing_bindings/2.
+ Callback implementation for Gettext.Backend.handle_missing_bindings/2.
@@ -263,7 +263,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.handle_missing_plural_translation/7.
+ Callback implementation for Gettext.Backend.handle_missing_plural_translation/7.
@@ -273,7 +273,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.handle_missing_translation/5.
+ Callback implementation for Gettext.Backend.handle_missing_translation/5.
@@ -299,7 +299,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.ngettext/4.
+ Callback implementation for Gettext.Backend.ngettext/4.
@@ -309,7 +309,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.ngettext_noop/2.
+ Callback implementation for Gettext.Backend.ngettext_noop/2.
@@ -319,7 +319,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.pgettext/3.
+ Callback implementation for Gettext.Backend.pgettext/3.
@@ -337,7 +337,7 @@ your module gains a set of macros for translations, for example:
- Callback implementation for Gettext.Backend.pngettext/5.
+ Callback implementation for Gettext.Backend.pngettext/5.
@@ -386,7 +386,7 @@ Functions
-Callback implementation for Gettext.Backend.dgettext/3.
+Callback implementation for Gettext.Backend.dgettext/3.
@@ -410,7 +410,7 @@ Functions
-Callback implementation for Gettext.Backend.dgettext_noop/2.
+Callback implementation for Gettext.Backend.dgettext_noop/2.
@@ -436,7 +436,7 @@ Functions
-Callback implementation for Gettext.Backend.dngettext/5.
+Callback implementation for Gettext.Backend.dngettext/5.
@@ -460,7 +460,7 @@ Functions
-Callback implementation for Gettext.Backend.dngettext_noop/3.
+Callback implementation for Gettext.Backend.dngettext_noop/3.
@@ -486,7 +486,7 @@ Functions
-Callback implementation for Gettext.Backend.dpgettext/4.
+Callback implementation for Gettext.Backend.dpgettext/4.
@@ -536,7 +536,7 @@ Functions
-Callback implementation for Gettext.Backend.dpngettext/6.
+Callback implementation for Gettext.Backend.dpngettext/6.
@@ -586,7 +586,7 @@ Functions
-Callback implementation for Gettext.Backend.gettext/2.
+Callback implementation for Gettext.Backend.gettext/2.
@@ -610,7 +610,7 @@ Functions
-Callback implementation for Gettext.Backend.gettext_comment/1.
+Callback implementation for Gettext.Backend.gettext_comment/1.
@@ -634,7 +634,7 @@ Functions
-Callback implementation for Gettext.Backend.gettext_noop/1.
+Callback implementation for Gettext.Backend.gettext_noop/1.
@@ -656,7 +656,7 @@ Functions
-Callback implementation for Gettext.Backend.handle_missing_bindings/2.
+Callback implementation for Gettext.Backend.handle_missing_bindings/2.
@@ -678,7 +678,7 @@ Functions
-Callback implementation for Gettext.Backend.handle_missing_plural_translation/7.
+Callback implementation for Gettext.Backend.handle_missing_plural_translation/7.
@@ -700,7 +700,7 @@ Functions
-Callback implementation for Gettext.Backend.handle_missing_translation/5.
+Callback implementation for Gettext.Backend.handle_missing_translation/5.
@@ -774,7 +774,7 @@ Functions
-Callback implementation for Gettext.Backend.ngettext/4.
+Callback implementation for Gettext.Backend.ngettext/4.
@@ -798,7 +798,7 @@ Functions
-Callback implementation for Gettext.Backend.ngettext_noop/2.
+Callback implementation for Gettext.Backend.ngettext_noop/2.
@@ -824,7 +824,7 @@ Functions
-Callback implementation for Gettext.Backend.pgettext/3.
+Callback implementation for Gettext.Backend.pgettext/3.
@@ -874,7 +874,7 @@ Functions
-Callback implementation for Gettext.Backend.pngettext/5.
+Callback implementation for Gettext.Backend.pngettext/5.
diff --git a/ClaperWeb.LayoutView.html b/ClaperWeb.LayoutView.html
index d662b2e..ce4269b 100644
--- a/ClaperWeb.LayoutView.html
+++ b/ClaperWeb.LayoutView.html
@@ -5,15 +5,15 @@
-
+
- ClaperWeb.LayoutView — Claper v1.4.1
+ ClaperWeb.LayoutView — Claper v1.5.0
-
+
@@ -72,7 +72,7 @@
Claper
: @post.id || :new,
action: @live_action,
post: @post,
- return_to: Routes.post_index_path(@socket, :index) %>
+ return_to: Routes.post_index_path(@socket, :index) %>
diff --git a/ClaperWeb.ModalComponent.html b/ClaperWeb.ModalComponent.html
index 7eb7421..08188df 100644
--- a/ClaperWeb.ModalComponent.html
+++ b/ClaperWeb.ModalComponent.html
@@ -5,15 +5,15 @@
-
+
- ClaperWeb.ModalComponent — Claper v1.4.1
+ ClaperWeb.ModalComponent — Claper v1.5.0
-
+
@@ -72,7 +72,7 @@
Claper
config = %{
+config = %{
region: "us-east-1",
- access_key_id: System.fetch_env!("AWS_ACCESS_KEY_ID"),
- secret_access_key: System.fetch_env!("AWS_SECRET_ACCESS_KEY")
-}
+ access_key_id: System.fetch_env!("AWS_ACCESS_KEY_ID"),
+ secret_access_key: System.fetch_env!("AWS_SECRET_ACCESS_KEY")
+}
-{:ok, fields} =
- SimpleS3Upload.sign_form_upload(config, "my-bucket",
+{:ok, fields} =
+ SimpleS3Upload.sign_form_upload(config, "my-bucket",
key: "public/my-file-name",
content_type: "image/png",
max_file_size: 10_000,
- expires_in: :timer.hours(1)
- )
+ expires_in: :timer.hours(1)
+ )
diff --git a/Utils.FileUpload.html b/Utils.FileUpload.html
index 8f7de4e..ac76995 100644
--- a/Utils.FileUpload.html
+++ b/Utils.FileUpload.html
@@ -5,15 +5,15 @@
-
+
- Utils.FileUpload — Claper v1.4.1
+ Utils.FileUpload — Claper v1.5.0
-
+
@@ -72,7 +72,7 @@
Claper
and comment as follows:
#export RELEASE_DISTRIBUTION=sname
#export RELEASE_NODE=<%= @release.name %>
In Kubernetes, you have to use libcluster to make the nodes discoverable. You can use the following configuration in your config/prod.exs:
config :libcluster,
- topologies: [
- default: [
+ topologies: [
+ default: [
strategy: Cluster.Strategy.Kubernetes,
- config: [
+ config: [
mode: :dns,
kubernetes_node_basename: "claper",
kubernetes_selector: "app=claper",
kubernetes_namespace: "default",
polling_interval: 10_000
- ]
- ]
- ]
+
]
+ ]
+ ]
helm-chart
diff --git a/dist/search_items-1C7F6EC5.js b/dist/search_items-5EA5ACC6.js
similarity index 76%
rename from dist/search_items-1C7F6EC5.js
rename to dist/search_items-5EA5ACC6.js
index 484fbb2..3453db8 100644
--- a/dist/search_items-1C7F6EC5.js
+++ b/dist/search_items-5EA5ACC6.js
@@ -1 +1 @@
-searchNodes=[{"doc":"Claper keeps the contexts that define your domain and business logic. Contexts are also responsible for managing your data, regardless if it comes from the database, an external API or others.","ref":"Claper.html","title":"Claper","type":"module"},{"doc":"The Forms context.","ref":"Claper.Forms.html","title":"Claper.Forms","type":"module"},{"doc":"Add an empty form field to a form changeset.","ref":"Claper.Forms.html#add_form_field/1","title":"Claper.Forms.add_form_field/1","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for tracking form changes. Examples iex> change_form ( form ) % Ecto.Changeset { data : % Form { } }","ref":"Claper.Forms.html#change_form/2","title":"Claper.Forms.change_form/2","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for tracking form submit changes. Examples iex> change_form_submit ( form_submit ) % Ecto.Changeset { data : % FormSubmit { } }","ref":"Claper.Forms.html#change_form_submit/2","title":"Claper.Forms.change_form_submit/2","type":"function"},{"doc":"Creates a form. Examples iex> create_form ( %{ field : value } ) { :ok , % Form { } } iex> create_form ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Forms.html#create_form/1","title":"Claper.Forms.create_form/1","type":"function"},{"doc":"Creates a form submit. Examples iex> create_form_submit ( %{ field : value } ) { :ok , % FormSubmit { } } iex> create_form_submit ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Forms.html#create_form_submit/1","title":"Claper.Forms.create_form_submit/1","type":"function"},{"doc":"Creates or update a FormSubmit. Examples iex> create_or_update_form_submit ( %{ field : value } ) { :ok , % FormSubmit { } } iex> create_or_update_form_submit ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Forms.html#create_or_update_form_submit/2","title":"Claper.Forms.create_or_update_form_submit/2","type":"function"},{"doc":"","ref":"Claper.Forms.html#create_or_update_form_submit/3","title":"Claper.Forms.create_or_update_form_submit/3","type":"function"},{"doc":"Deletes a form. Examples iex> delete_form ( "123e4567-e89b-12d3-a456-426614174000" , form ) { :ok , % Form { } } iex> delete_form ( "123e4567-e89b-12d3-a456-426614174000" , form ) { :error , % Ecto.Changeset { } }","ref":"Claper.Forms.html#delete_form/2","title":"Claper.Forms.delete_form/2","type":"function"},{"doc":"Deletes a form submit. Examples iex> delete_form_submit ( post , event_id ) { :ok , % FormSubmit { } } iex> delete_form_submit ( post , event_id ) { :error , % Ecto.Changeset { } }","ref":"Claper.Forms.html#delete_form_submit/2","title":"Claper.Forms.delete_form_submit/2","type":"function"},{"doc":"","ref":"Claper.Forms.html#disable_all/2","title":"Claper.Forms.disable_all/2","type":"function"},{"doc":"Gets a single form. Raises Ecto.NoResultsError if the Form does not exist. Examples iex> get_form! ( 123 ) % Poll { } iex> get_form! ( 456 ) ** (Ecto.NoResultsError)","ref":"Claper.Forms.html#get_form!/2","title":"Claper.Forms.get_form!/2","type":"function"},{"doc":"Gets a single form for a given position. Examples iex> get_form! ( 123 , 0 ) % Form { }","ref":"Claper.Forms.html#get_form_current_position/2","title":"Claper.Forms.get_form_current_position/2","type":"function"},{"doc":"Gets a single FormSubmit. Examples iex> get_form_submit! ( 321 , 123 ) % FormSubmit { }","ref":"Claper.Forms.html#get_form_submit/2","title":"Claper.Forms.get_form_submit/2","type":"function"},{"doc":"Gets a single FormSubmit by its ID. Raises Ecto.NoResultsError if the FormSubmit does not exist. Examples iex> get_form_submit_by_id! ( "123e4567-e89b-12d3-a456-426614174000" ) % Post { } iex> get_form_submit_by_id! ( "123e4567-e89b-12d3-a456-426614174123" ) ** (Ecto.NoResultsError)","ref":"Claper.Forms.html#get_form_submit_by_id!/2","title":"Claper.Forms.get_form_submit_by_id!/2","type":"function"},{"doc":"Returns the list of form submissions for a given presentation file. Examples iex> list_form_submits ( 123 ) [ % FormSubmit { } , ... ]","ref":"Claper.Forms.html#list_form_submits/1","title":"Claper.Forms.list_form_submits/1","type":"function"},{"doc":"Returns the list of forms for a given presentation file. Examples iex> list_forms ( 123 ) [ % Form { } , ... ]","ref":"Claper.Forms.html#list_forms/1","title":"Claper.Forms.list_forms/1","type":"function"},{"doc":"Returns the list of forms for a given presentation file and a given position. Examples iex> list_forms_at_position ( 123 , 0 ) [ % Form { } , ... ]","ref":"Claper.Forms.html#list_forms_at_position/2","title":"Claper.Forms.list_forms_at_position/2","type":"function"},{"doc":"Remove a form field from a form changeset.","ref":"Claper.Forms.html#remove_form_field/2","title":"Claper.Forms.remove_form_field/2","type":"function"},{"doc":"","ref":"Claper.Forms.html#set_default/3","title":"Claper.Forms.set_default/3","type":"function"},{"doc":"Updates a form. Examples iex> update_form ( "123e4567-e89b-12d3-a456-426614174000" , form , %{ field : new_value } ) { :ok , % Form { } } iex> update_form ( "123e4567-e89b-12d3-a456-426614174000" , form , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Forms.html#update_form/3","title":"Claper.Forms.update_form/3","type":"function"},{"doc":"","ref":"Claper.Forms.Field.html","title":"Claper.Forms.Field","type":"module"},{"doc":"","ref":"Claper.Forms.Form.html","title":"Claper.Forms.Form","type":"module"},{"doc":"","ref":"Claper.Forms.FormSubmit.html","title":"Claper.Forms.FormSubmit","type":"module"},{"doc":"","ref":"Claper.Mailer.html","title":"Claper.Mailer","type":"module"},{"doc":"","ref":"Claper.Mailer.html#deliver/2","title":"Claper.Mailer.deliver/2","type":"function"},{"doc":"","ref":"Claper.Mailer.html#deliver!/2","title":"Claper.Mailer.deliver!/2","type":"function"},{"doc":"","ref":"Claper.Mailer.html#deliver_many/2","title":"Claper.Mailer.deliver_many/2","type":"function"},{"doc":"The Presentations context.","ref":"Claper.Presentations.html","title":"Claper.Presentations","type":"module"},{"doc":"Creates a presentation_files. Examples iex> create_presentation_file ( %{ field : value } ) { :ok , % PresentationFile { } } iex> create_presentation_file ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Presentations.html#create_presentation_file/1","title":"Claper.Presentations.create_presentation_file/1","type":"function"},{"doc":"Creates a presentation_state. Examples iex> create_presentation_state ( %{ field : value } ) { :ok , % PresentationState { } } iex> create_presentation_state ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Presentations.html#create_presentation_state/1","title":"Claper.Presentations.create_presentation_state/1","type":"function"},{"doc":"Gets a single presentation_files. Raises Ecto.NoResultsError if the Presentation files does not exist. Examples iex> get_presentation_file! ( 123 ) % PresentationFile { } iex> get_presentation_file! ( 456 ) ** (Ecto.NoResultsError)","ref":"Claper.Presentations.html#get_presentation_file!/2","title":"Claper.Presentations.get_presentation_file!/2","type":"function"},{"doc":"","ref":"Claper.Presentations.html#get_presentation_file_by_hash!/1","title":"Claper.Presentations.get_presentation_file_by_hash!/1","type":"function"},{"doc":"","ref":"Claper.Presentations.html#subscribe/1","title":"Claper.Presentations.subscribe/1","type":"function"},{"doc":"Updates a presentation_files. Examples iex> update_presentation_file ( presentation_file , %{ field : new_value } ) { :ok , % PresentationFile { } } iex> update_presentation_file ( presentation_file , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Presentations.html#update_presentation_file/2","title":"Claper.Presentations.update_presentation_file/2","type":"function"},{"doc":"Updates a presentation_state. Examples iex> update_presentation_state ( presentation_state , %{ field : new_value } ) { :ok , % PresentationState { } } iex> update_presentation_state ( presentation_state , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Presentations.html#update_presentation_state/2","title":"Claper.Presentations.update_presentation_state/2","type":"function"},{"doc":"","ref":"Claper.Presentations.PresentationFile.html","title":"Claper.Presentations.PresentationFile","type":"module"},{"doc":"","ref":"Claper.Presentations.PresentationState.html","title":"Claper.Presentations.PresentationState","type":"module"},{"doc":"Used for executing DB release tasks when run in production without Mix installed.","ref":"Claper.Release.html","title":"Claper.Release","type":"module"},{"doc":"","ref":"Claper.Release.html#migrate/0","title":"Claper.Release.migrate/0","type":"function"},{"doc":"","ref":"Claper.Release.html#rollback/2","title":"Claper.Release.rollback/2","type":"function"},{"doc":"","ref":"Claper.Repo.html","title":"Claper.Repo","type":"module"},{"doc":"Callback implementation for Ecto.Repo.aggregate/3 .","ref":"Claper.Repo.html#aggregate/3","title":"Claper.Repo.aggregate/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.aggregate/4 .","ref":"Claper.Repo.html#aggregate/4","title":"Claper.Repo.aggregate/4","type":"function"},{"doc":"Callback implementation for Ecto.Repo.all/2 .","ref":"Claper.Repo.html#all/2","title":"Claper.Repo.all/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.checked_out?/0 .","ref":"Claper.Repo.html#checked_out?/0","title":"Claper.Repo.checked_out?/0","type":"function"},{"doc":"Callback implementation for Ecto.Repo.checkout/2 .","ref":"Claper.Repo.html#checkout/2","title":"Claper.Repo.checkout/2","type":"function"},{"doc":"","ref":"Claper.Repo.html#child_spec/1","title":"Claper.Repo.child_spec/1","type":"function"},{"doc":"Callback implementation for Ecto.Repo.config/0 .","ref":"Claper.Repo.html#config/0","title":"Claper.Repo.config/0","type":"function"},{"doc":"Callback implementation for Ecto.Repo.default_options/1 .","ref":"Claper.Repo.html#default_options/1","title":"Claper.Repo.default_options/1","type":"function"},{"doc":"Callback implementation for Ecto.Repo.delete/2 .","ref":"Claper.Repo.html#delete/2","title":"Claper.Repo.delete/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.delete!/2 .","ref":"Claper.Repo.html#delete!/2","title":"Claper.Repo.delete!/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.delete_all/2 .","ref":"Claper.Repo.html#delete_all/2","title":"Claper.Repo.delete_all/2","type":"function"},{"doc":"A convenience function for SQL-based repositories that forces all connections in the pool to disconnect within the given interval. See Ecto.Adapters.SQL.disconnect_all/3 for more information.","ref":"Claper.Repo.html#disconnect_all/2","title":"Claper.Repo.disconnect_all/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.exists?/2 .","ref":"Claper.Repo.html#exists?/2","title":"Claper.Repo.exists?/2","type":"function"},{"doc":"A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar depending on the adapter to obtain statistics for the given query. See Ecto.Adapters.SQL.explain/4 for more information.","ref":"Claper.Repo.html#explain/3","title":"Claper.Repo.explain/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.get/3 .","ref":"Claper.Repo.html#get/3","title":"Claper.Repo.get/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.get!/3 .","ref":"Claper.Repo.html#get!/3","title":"Claper.Repo.get!/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.get_by/3 .","ref":"Claper.Repo.html#get_by/3","title":"Claper.Repo.get_by/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.get_by!/3 .","ref":"Claper.Repo.html#get_by!/3","title":"Claper.Repo.get_by!/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.get_dynamic_repo/0 .","ref":"Claper.Repo.html#get_dynamic_repo/0","title":"Claper.Repo.get_dynamic_repo/0","type":"function"},{"doc":"Callback implementation for Ecto.Repo.in_transaction?/0 .","ref":"Claper.Repo.html#in_transaction?/0","title":"Claper.Repo.in_transaction?/0","type":"function"},{"doc":"Callback implementation for Ecto.Repo.init/2 .","ref":"Claper.Repo.html#init/2","title":"Claper.Repo.init/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.insert/2 .","ref":"Claper.Repo.html#insert/2","title":"Claper.Repo.insert/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.insert!/2 .","ref":"Claper.Repo.html#insert!/2","title":"Claper.Repo.insert!/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.insert_all/3 .","ref":"Claper.Repo.html#insert_all/3","title":"Claper.Repo.insert_all/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.insert_or_update/2 .","ref":"Claper.Repo.html#insert_or_update/2","title":"Claper.Repo.insert_or_update/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.insert_or_update!/2 .","ref":"Claper.Repo.html#insert_or_update!/2","title":"Claper.Repo.insert_or_update!/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.load/2 .","ref":"Claper.Repo.html#load/2","title":"Claper.Repo.load/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.one/2 .","ref":"Claper.Repo.html#one/2","title":"Claper.Repo.one/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.one!/2 .","ref":"Claper.Repo.html#one!/2","title":"Claper.Repo.one!/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.preload/3 .","ref":"Claper.Repo.html#preload/3","title":"Claper.Repo.preload/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.prepare_query/3 .","ref":"Claper.Repo.html#prepare_query/3","title":"Claper.Repo.prepare_query/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.put_dynamic_repo/1 .","ref":"Claper.Repo.html#put_dynamic_repo/1","title":"Claper.Repo.put_dynamic_repo/1","type":"function"},{"doc":"A convenience function for SQL-based repositories that executes the given query. See Ecto.Adapters.SQL.query/4 for more information.","ref":"Claper.Repo.html#query/3","title":"Claper.Repo.query/3","type":"function"},{"doc":"A convenience function for SQL-based repositories that executes the given query. See Ecto.Adapters.SQL.query!/4 for more information.","ref":"Claper.Repo.html#query!/3","title":"Claper.Repo.query!/3","type":"function"},{"doc":"A convenience function for SQL-based repositories that executes the given multi-result query. See Ecto.Adapters.SQL.query_many/4 for more information.","ref":"Claper.Repo.html#query_many/3","title":"Claper.Repo.query_many/3","type":"function"},{"doc":"A convenience function for SQL-based repositories that executes the given multi-result query. See Ecto.Adapters.SQL.query_many!/4 for more information.","ref":"Claper.Repo.html#query_many!/3","title":"Claper.Repo.query_many!/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.reload/2 .","ref":"Claper.Repo.html#reload/2","title":"Claper.Repo.reload/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.reload!/2 .","ref":"Claper.Repo.html#reload!/2","title":"Claper.Repo.reload!/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.rollback/1 .","ref":"Claper.Repo.html#rollback/1","title":"Claper.Repo.rollback/1","type":"function"},{"doc":"Callback implementation for Ecto.Repo.start_link/1 .","ref":"Claper.Repo.html#start_link/1","title":"Claper.Repo.start_link/1","type":"function"},{"doc":"Callback implementation for Ecto.Repo.stop/1 .","ref":"Claper.Repo.html#stop/1","title":"Claper.Repo.stop/1","type":"function"},{"doc":"Callback implementation for Ecto.Repo.stream/2 .","ref":"Claper.Repo.html#stream/2","title":"Claper.Repo.stream/2","type":"function"},{"doc":"A convenience function for SQL-based repositories that translates the given query to SQL. See Ecto.Adapters.SQL.to_sql/3 for more information.","ref":"Claper.Repo.html#to_sql/2","title":"Claper.Repo.to_sql/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.transaction/2 .","ref":"Claper.Repo.html#transaction/2","title":"Claper.Repo.transaction/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.update/2 .","ref":"Claper.Repo.html#update/2","title":"Claper.Repo.update/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.update!/2 .","ref":"Claper.Repo.html#update!/2","title":"Claper.Repo.update!/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.update_all/3 .","ref":"Claper.Repo.html#update_all/3","title":"Claper.Repo.update_all/3","type":"function"},{"doc":"","ref":"Claper.Schema.html","title":"Claper.Schema","type":"module"},{"doc":"The Stats context.","ref":"Claper.Stats.html","title":"Claper.Stats","type":"module"},{"doc":"","ref":"Claper.Stats.html#distinct_poster_count/1","title":"Claper.Stats.distinct_poster_count/1","type":"function"},{"doc":"","ref":"Claper.Stats.html#total_vote_count/1","title":"Claper.Stats.total_vote_count/1","type":"function"},{"doc":"This module is used to convert presentations from PDF or PPT to images. We use a hash to identify the presentation. A new hash is generated when the conversion is finished and the presentation is being uploaded.","ref":"Claper.Tasks.Converter.html","title":"Claper.Tasks.Converter","type":"module"},{"doc":"Remove the presentation files directory","ref":"Claper.Tasks.Converter.html#clear/1","title":"Claper.Tasks.Converter.clear/1","type":"function"},{"doc":"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.","ref":"Claper.Tasks.Converter.html#convert/5","title":"Claper.Tasks.Converter.convert/5","type":"function"},{"doc":"The entrypoint for defining your web interface, such as controllers, views, channels and so on. This can be used in your application as: use ClaperWeb , :controller use ClaperWeb , :view The definitions below will be executed for every view, controller, etc, so keep them short and clean, focused on imports, uses and aliases. Do NOT define functions inside the quoted expressions below. Instead, define any helper function in modules and import those modules here.","ref":"ClaperWeb.html","title":"ClaperWeb","type":"module"},{"doc":"When used, dispatch to the appropriate controller/view/etc.","ref":"ClaperWeb.html#__using__/1","title":"ClaperWeb.__using__/1","type":"macro"},{"doc":"","ref":"ClaperWeb.html#channel/0","title":"ClaperWeb.channel/0","type":"function"},{"doc":"","ref":"ClaperWeb.html#controller/0","title":"ClaperWeb.controller/0","type":"function"},{"doc":"","ref":"ClaperWeb.html#live_component/0","title":"ClaperWeb.live_component/0","type":"function"},{"doc":"","ref":"ClaperWeb.html#live_view/0","title":"ClaperWeb.live_view/0","type":"function"},{"doc":"","ref":"ClaperWeb.html#router/0","title":"ClaperWeb.router/0","type":"function"},{"doc":"","ref":"ClaperWeb.html#view/0","title":"ClaperWeb.view/0","type":"function"},{"doc":"","ref":"ClaperWeb.html#view_component/0","title":"ClaperWeb.view_component/0","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Alert.html","title":"ClaperWeb.Component.Alert","type":"module"},{"doc":"","ref":"ClaperWeb.Component.Alert.html#error/1","title":"ClaperWeb.Component.Alert.error/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Alert.html#info/1","title":"ClaperWeb.Component.Alert.info/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html","title":"ClaperWeb.Component.Input","type":"module"},{"doc":"","ref":"ClaperWeb.Component.Input.html#check/1","title":"ClaperWeb.Component.Input.check/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#checked/3","title":"ClaperWeb.Component.Input.checked/3","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#code/1","title":"ClaperWeb.Component.Input.code/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#date/1","title":"ClaperWeb.Component.Input.date/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#date_range/1","title":"ClaperWeb.Component.Input.date_range/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#email/1","title":"ClaperWeb.Component.Input.email/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#password/1","title":"ClaperWeb.Component.Input.password/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#select/1","title":"ClaperWeb.Component.Input.select/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#text/1","title":"ClaperWeb.Component.Input.text/1","type":"function"},{"doc":"","ref":"ClaperWeb.ComponentView.html","title":"ClaperWeb.ComponentView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.ComponentView.html#__resource__/0","title":"ClaperWeb.ComponentView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.ComponentView.html#render/2","title":"ClaperWeb.ComponentView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.ComponentView.html#template_not_found/2","title":"ClaperWeb.ComponentView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.Endpoint.html","title":"ClaperWeb.Endpoint","type":"module"},{"doc":"Callback implementation for Phoenix.Endpoint.broadcast/3 .","ref":"ClaperWeb.Endpoint.html#broadcast/3","title":"ClaperWeb.Endpoint.broadcast/3","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.broadcast!/3 .","ref":"ClaperWeb.Endpoint.html#broadcast!/3","title":"ClaperWeb.Endpoint.broadcast!/3","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.broadcast_from/4 .","ref":"ClaperWeb.Endpoint.html#broadcast_from/4","title":"ClaperWeb.Endpoint.broadcast_from/4","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.broadcast_from!/4 .","ref":"ClaperWeb.Endpoint.html#broadcast_from!/4","title":"ClaperWeb.Endpoint.broadcast_from!/4","type":"function"},{"doc":"Callback implementation for Plug.call/2 .","ref":"ClaperWeb.Endpoint.html#call/2","title":"ClaperWeb.Endpoint.call/2","type":"function"},{"doc":"Returns the child specification to start the endpoint under a supervision tree.","ref":"ClaperWeb.Endpoint.html#child_spec/1","title":"ClaperWeb.Endpoint.child_spec/1","type":"function"},{"doc":"Returns the endpoint configuration for key Returns default if the key does not exist.","ref":"ClaperWeb.Endpoint.html#config/2","title":"ClaperWeb.Endpoint.config/2","type":"function"},{"doc":"Reloads the configuration given the application environment changes.","ref":"ClaperWeb.Endpoint.html#config_change/2","title":"ClaperWeb.Endpoint.config_change/2","type":"function"},{"doc":"Returns the host for the given endpoint.","ref":"ClaperWeb.Endpoint.html#host/0","title":"ClaperWeb.Endpoint.host/0","type":"function"},{"doc":"Callback implementation for Plug.init/1 .","ref":"ClaperWeb.Endpoint.html#init/1","title":"ClaperWeb.Endpoint.init/1","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.local_broadcast/3 .","ref":"ClaperWeb.Endpoint.html#local_broadcast/3","title":"ClaperWeb.Endpoint.local_broadcast/3","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.local_broadcast_from/4 .","ref":"ClaperWeb.Endpoint.html#local_broadcast_from/4","title":"ClaperWeb.Endpoint.local_broadcast_from/4","type":"function"},{"doc":"Generates the path information when routing to this endpoint.","ref":"ClaperWeb.Endpoint.html#path/1","title":"ClaperWeb.Endpoint.path/1","type":"function"},{"doc":"Generates the script name.","ref":"ClaperWeb.Endpoint.html#script_name/0","title":"ClaperWeb.Endpoint.script_name/0","type":"function"},{"doc":"Starts the endpoint supervision tree. All other options are merged into the endpoint configuration.","ref":"ClaperWeb.Endpoint.html#start_link/1","title":"ClaperWeb.Endpoint.start_link/1","type":"function"},{"doc":"Generates a base64-encoded cryptographic hash (sha512) to a static file in priv/static . Meant to be used for Subresource Integrity with CDNs.","ref":"ClaperWeb.Endpoint.html#static_integrity/1","title":"ClaperWeb.Endpoint.static_integrity/1","type":"function"},{"doc":"Returns a two item tuple with the first item being the static_path and the second item being the static_integrity .","ref":"ClaperWeb.Endpoint.html#static_lookup/1","title":"ClaperWeb.Endpoint.static_lookup/1","type":"function"},{"doc":"Generates a route to a static file in priv/static .","ref":"ClaperWeb.Endpoint.html#static_path/1","title":"ClaperWeb.Endpoint.static_path/1","type":"function"},{"doc":"Generates the static URL without any path information. It uses the configuration under :static_url to generate such. It falls back to :url if :static_url is not set.","ref":"ClaperWeb.Endpoint.html#static_url/0","title":"ClaperWeb.Endpoint.static_url/0","type":"function"},{"doc":"Generates the endpoint base URL but as a URI struct. It uses the configuration under :url to generate such. Useful for manipulating the URL data and passing it to URL helpers.","ref":"ClaperWeb.Endpoint.html#struct_url/0","title":"ClaperWeb.Endpoint.struct_url/0","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.subscribe/2 .","ref":"ClaperWeb.Endpoint.html#subscribe/2","title":"ClaperWeb.Endpoint.subscribe/2","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.unsubscribe/1 .","ref":"ClaperWeb.Endpoint.html#unsubscribe/1","title":"ClaperWeb.Endpoint.unsubscribe/1","type":"function"},{"doc":"Generates the endpoint base URL without any path information. It uses the configuration under :url to generate such.","ref":"ClaperWeb.Endpoint.html#url/0","title":"ClaperWeb.Endpoint.url/0","type":"function"},{"doc":"Conveniences for translating and building error messages.","ref":"ClaperWeb.ErrorHelpers.html","title":"ClaperWeb.ErrorHelpers","type":"module"},{"doc":"Generates tag for inlined form input errors.","ref":"ClaperWeb.ErrorHelpers.html#error_tag/2","title":"ClaperWeb.ErrorHelpers.error_tag/2","type":"function"},{"doc":"Translates an error message using gettext.","ref":"ClaperWeb.ErrorHelpers.html#translate_error/1","title":"ClaperWeb.ErrorHelpers.translate_error/1","type":"function"},{"doc":"","ref":"ClaperWeb.ErrorView.html","title":"ClaperWeb.ErrorView","type":"module"},{"doc":"","ref":"ClaperWeb.ErrorView.html#404.html/1","title":"ClaperWeb.ErrorView.404.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.ErrorView.html#500.html/1","title":"ClaperWeb.ErrorView.500.html/1","type":"function"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.ErrorView.html#__resource__/0","title":"ClaperWeb.ErrorView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.ErrorView.html#render/2","title":"ClaperWeb.ErrorView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.ErrorView.html#template_not_found/2","title":"ClaperWeb.ErrorView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.FormLive.FormComponent.html","title":"ClaperWeb.FormLive.FormComponent","type":"module"},{"doc":"Callback implementation for Phoenix.LiveComponent.render/1 .","ref":"ClaperWeb.FormLive.FormComponent.html#render/1","title":"ClaperWeb.FormLive.FormComponent.render/1","type":"function"},{"doc":"A module providing Internationalization with a gettext-based API. By using Gettext , your module gains a set of macros for translations, for example: import ClaperWeb.Gettext # Simple translation gettext ( "Here is the string to translate" ) # Plural translation ngettext ( "Here is the string to translate" , "Here are the strings to translate" , 3 ) # Domain-based translation dgettext ( "errors" , "Here is the error message to translate" ) See the Gettext Docs for detailed usage.","ref":"ClaperWeb.Gettext.html","title":"ClaperWeb.Gettext","type":"module"},{"doc":"Callback implementation for Gettext.Backend.dgettext/3 .","ref":"ClaperWeb.Gettext.html#dgettext/3","title":"ClaperWeb.Gettext.dgettext/3","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.dgettext_noop/2 .","ref":"ClaperWeb.Gettext.html#dgettext_noop/2","title":"ClaperWeb.Gettext.dgettext_noop/2","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.dngettext/5 .","ref":"ClaperWeb.Gettext.html#dngettext/5","title":"ClaperWeb.Gettext.dngettext/5","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.dngettext_noop/3 .","ref":"ClaperWeb.Gettext.html#dngettext_noop/3","title":"ClaperWeb.Gettext.dngettext_noop/3","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.dpgettext/4 .","ref":"ClaperWeb.Gettext.html#dpgettext/4","title":"ClaperWeb.Gettext.dpgettext/4","type":"macro"},{"doc":"","ref":"ClaperWeb.Gettext.html#dpgettext_noop/3","title":"ClaperWeb.Gettext.dpgettext_noop/3","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.dpngettext/6 .","ref":"ClaperWeb.Gettext.html#dpngettext/6","title":"ClaperWeb.Gettext.dpngettext/6","type":"macro"},{"doc":"","ref":"ClaperWeb.Gettext.html#dpngettext_noop/4","title":"ClaperWeb.Gettext.dpngettext_noop/4","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.gettext/2 .","ref":"ClaperWeb.Gettext.html#gettext/2","title":"ClaperWeb.Gettext.gettext/2","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.gettext_comment/1 .","ref":"ClaperWeb.Gettext.html#gettext_comment/1","title":"ClaperWeb.Gettext.gettext_comment/1","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.gettext_noop/1 .","ref":"ClaperWeb.Gettext.html#gettext_noop/1","title":"ClaperWeb.Gettext.gettext_noop/1","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.handle_missing_bindings/2 .","ref":"ClaperWeb.Gettext.html#handle_missing_bindings/2","title":"ClaperWeb.Gettext.handle_missing_bindings/2","type":"function"},{"doc":"Callback implementation for Gettext.Backend.handle_missing_plural_translation/7 .","ref":"ClaperWeb.Gettext.html#handle_missing_plural_translation/7","title":"ClaperWeb.Gettext.handle_missing_plural_translation/7","type":"function"},{"doc":"Callback implementation for Gettext.Backend.handle_missing_translation/5 .","ref":"ClaperWeb.Gettext.html#handle_missing_translation/5","title":"ClaperWeb.Gettext.handle_missing_translation/5","type":"function"},{"doc":"","ref":"ClaperWeb.Gettext.html#lgettext/5","title":"ClaperWeb.Gettext.lgettext/5","type":"function"},{"doc":"","ref":"ClaperWeb.Gettext.html#lngettext/7","title":"ClaperWeb.Gettext.lngettext/7","type":"function"},{"doc":"Callback implementation for Gettext.Backend.ngettext/4 .","ref":"ClaperWeb.Gettext.html#ngettext/4","title":"ClaperWeb.Gettext.ngettext/4","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.ngettext_noop/2 .","ref":"ClaperWeb.Gettext.html#ngettext_noop/2","title":"ClaperWeb.Gettext.ngettext_noop/2","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.pgettext/3 .","ref":"ClaperWeb.Gettext.html#pgettext/3","title":"ClaperWeb.Gettext.pgettext/3","type":"macro"},{"doc":"","ref":"ClaperWeb.Gettext.html#pgettext_noop/2","title":"ClaperWeb.Gettext.pgettext_noop/2","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.pngettext/5 .","ref":"ClaperWeb.Gettext.html#pngettext/5","title":"ClaperWeb.Gettext.pngettext/5","type":"macro"},{"doc":"","ref":"ClaperWeb.Gettext.html#pngettext_noop/3","title":"ClaperWeb.Gettext.pngettext_noop/3","type":"macro"},{"doc":"","ref":"ClaperWeb.LayoutView.html","title":"ClaperWeb.LayoutView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.LayoutView.html#__resource__/0","title":"ClaperWeb.LayoutView.__resource__/0","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#active_class/2","title":"ClaperWeb.LayoutView.active_class/2","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#active_link/3","title":"ClaperWeb.LayoutView.active_link/3","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#active_live_class/2","title":"ClaperWeb.LayoutView.active_live_class/2","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#app.html/1","title":"ClaperWeb.LayoutView.app.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#email.html/1","title":"ClaperWeb.LayoutView.email.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#live.html/1","title":"ClaperWeb.LayoutView.live.html/1","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.LayoutView.html#render/2","title":"ClaperWeb.LayoutView.render/2","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#root.html/1","title":"ClaperWeb.LayoutView.root.html/1","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.LayoutView.html#template_not_found/2","title":"ClaperWeb.LayoutView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#user.html/1","title":"ClaperWeb.LayoutView.user.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.LiveHelpers.html","title":"ClaperWeb.LiveHelpers","type":"module"},{"doc":"Renders a component inside the ClaperWeb.ModalComponent component. The rendered modal receives a :return_to option to properly update the URL when the modal is closed. Examples < % = live_modal ClaperWeb.PostLive.FormComponent , id : @post . id || :new , action : @live_action , post : @post , return_to : Routes . post_index_path ( @socket , :index ) % >","ref":"ClaperWeb.LiveHelpers.html#live_modal/2","title":"ClaperWeb.LiveHelpers.live_modal/2","type":"function"},{"doc":"","ref":"ClaperWeb.ModalComponent.html","title":"ClaperWeb.ModalComponent","type":"module"},{"doc":"","ref":"ClaperWeb.ModalComponent.html#hide_modal/1","title":"ClaperWeb.ModalComponent.hide_modal/1","type":"function"},{"doc":"","ref":"ClaperWeb.Notifiers.UserNotifier.html","title":"ClaperWeb.Notifiers.UserNotifier","type":"module"},{"doc":"","ref":"ClaperWeb.Notifiers.UserNotifier.html#magic/2","title":"ClaperWeb.Notifiers.UserNotifier.magic/2","type":"function"},{"doc":"","ref":"ClaperWeb.Notifiers.UserNotifier.html#render_body/3","title":"ClaperWeb.Notifiers.UserNotifier.render_body/3","type":"function"},{"doc":"","ref":"ClaperWeb.Notifiers.UserNotifier.html#update_email/2","title":"ClaperWeb.Notifiers.UserNotifier.update_email/2","type":"function"},{"doc":"","ref":"ClaperWeb.Notifiers.UserNotifier.html#welcome/1","title":"ClaperWeb.Notifiers.UserNotifier.welcome/1","type":"function"},{"doc":"","ref":"ClaperWeb.PageController.html","title":"ClaperWeb.PageController","type":"module"},{"doc":"","ref":"ClaperWeb.PageController.html#index/2","title":"ClaperWeb.PageController.index/2","type":"function"},{"doc":"","ref":"ClaperWeb.PageController.html#privacy/2","title":"ClaperWeb.PageController.privacy/2","type":"function"},{"doc":"","ref":"ClaperWeb.PageController.html#tos/2","title":"ClaperWeb.PageController.tos/2","type":"function"},{"doc":"","ref":"ClaperWeb.PageView.html","title":"ClaperWeb.PageView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.PageView.html#__resource__/0","title":"ClaperWeb.PageView.__resource__/0","type":"function"},{"doc":"","ref":"ClaperWeb.PageView.html#privacy.html/1","title":"ClaperWeb.PageView.privacy.html/1","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.PageView.html#render/2","title":"ClaperWeb.PageView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.PageView.html#template_not_found/2","title":"ClaperWeb.PageView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.PageView.html#tos.html/1","title":"ClaperWeb.PageView.tos.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.Plugs.Locale.html","title":"ClaperWeb.Plugs.Locale","type":"module"},{"doc":"","ref":"ClaperWeb.Plugs.Locale.html#call/2","title":"ClaperWeb.Plugs.Locale.call/2","type":"function"},{"doc":"","ref":"ClaperWeb.Plugs.Locale.html#extract_accept_language/1","title":"ClaperWeb.Plugs.Locale.extract_accept_language/1","type":"function"},{"doc":"","ref":"ClaperWeb.Plugs.Locale.html#init/1","title":"ClaperWeb.Plugs.Locale.init/1","type":"function"},{"doc":"Provides presence tracking to channels and processes. See the Phoenix.Presence docs for more details.","ref":"ClaperWeb.Presence.html","title":"ClaperWeb.Presence","type":"module"},{"doc":"","ref":"ClaperWeb.Presence.html#child_spec/1","title":"ClaperWeb.Presence.child_spec/1","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.fetch/2 .","ref":"ClaperWeb.Presence.html#fetch/2","title":"ClaperWeb.Presence.fetch/2","type":"function"},{"doc":"","ref":"ClaperWeb.Presence.html#fetchers_pids/0","title":"ClaperWeb.Presence.fetchers_pids/0","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.get_by_key/2 .","ref":"ClaperWeb.Presence.html#get_by_key/2","title":"ClaperWeb.Presence.get_by_key/2","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.list/1 .","ref":"ClaperWeb.Presence.html#list/1","title":"ClaperWeb.Presence.list/1","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.track/3 .","ref":"ClaperWeb.Presence.html#track/3","title":"ClaperWeb.Presence.track/3","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.track/4 .","ref":"ClaperWeb.Presence.html#track/4","title":"ClaperWeb.Presence.track/4","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.untrack/2 .","ref":"ClaperWeb.Presence.html#untrack/2","title":"ClaperWeb.Presence.untrack/2","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.untrack/3 .","ref":"ClaperWeb.Presence.html#untrack/3","title":"ClaperWeb.Presence.untrack/3","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.update/3 .","ref":"ClaperWeb.Presence.html#update/3","title":"ClaperWeb.Presence.update/3","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.update/4 .","ref":"ClaperWeb.Presence.html#update/4","title":"ClaperWeb.Presence.update/4","type":"function"},{"doc":"","ref":"ClaperWeb.Router.html","title":"ClaperWeb.Router","type":"module"},{"doc":"","ref":"ClaperWeb.Router.html#api/2","title":"ClaperWeb.Router.api/2","type":"function"},{"doc":"","ref":"ClaperWeb.Router.html#attendee_registration/2","title":"ClaperWeb.Router.attendee_registration/2","type":"function"},{"doc":"","ref":"ClaperWeb.Router.html#browser/2","title":"ClaperWeb.Router.browser/2","type":"function"},{"doc":"Callback invoked by Plug on every request.","ref":"ClaperWeb.Router.html#call/2","title":"ClaperWeb.Router.call/2","type":"function"},{"doc":"Callback required by Plug that initializes the router for serving web requests.","ref":"ClaperWeb.Router.html#init/1","title":"ClaperWeb.Router.init/1","type":"function"},{"doc":"","ref":"ClaperWeb.Router.html#protect_with_basic_auth/2","title":"ClaperWeb.Router.protect_with_basic_auth/2","type":"function"},{"doc":"","ref":"ClaperWeb.StatController.html","title":"ClaperWeb.StatController","type":"module"},{"doc":"","ref":"ClaperWeb.StatController.html#export/2","title":"ClaperWeb.StatController.export/2","type":"function"},{"doc":"","ref":"ClaperWeb.StatLive.Index.html","title":"ClaperWeb.StatLive.Index","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.StatLive.Index.html#render/1","title":"ClaperWeb.StatLive.Index.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.Telemetry.html","title":"ClaperWeb.Telemetry","type":"module"},{"doc":"Returns a specification to start this module under a supervisor. See Supervisor .","ref":"ClaperWeb.Telemetry.html#child_spec/1","title":"ClaperWeb.Telemetry.child_spec/1","type":"function"},{"doc":"","ref":"ClaperWeb.Telemetry.html#metrics/0","title":"ClaperWeb.Telemetry.metrics/0","type":"function"},{"doc":"","ref":"ClaperWeb.Telemetry.html#start_link/1","title":"ClaperWeb.Telemetry.start_link/1","type":"function"},{"doc":"","ref":"ClaperWeb.UserNotifierView.html","title":"ClaperWeb.UserNotifierView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserNotifierView.html#__resource__/0","title":"ClaperWeb.UserNotifierView.__resource__/0","type":"function"},{"doc":"","ref":"ClaperWeb.UserNotifierView.html#change.html/1","title":"ClaperWeb.UserNotifierView.change.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.UserNotifierView.html#magic.html/1","title":"ClaperWeb.UserNotifierView.magic.html/1","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserNotifierView.html#render/2","title":"ClaperWeb.UserNotifierView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserNotifierView.html#template_not_found/2","title":"ClaperWeb.UserNotifierView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserNotifierView.html#welcome.html/1","title":"ClaperWeb.UserNotifierView.welcome.html/1","type":"function"},{"doc":"Dependency-free S3 Form Upload using HTTP POST sigv4 https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html","ref":"SimpleS3Upload.html","title":"SimpleS3Upload","type":"module"},{"doc":"Signs a form upload. The configuration is a map which must contain the following keys: :region - The AWS region, such as "us-east-1" :access_key_id - The AWS access key id :secret_access_key - The AWS secret access key Returns a map of form fields to be used on the client via the JavaScript FormData API. Options :key - The required key of the object to be uploaded. :max_file_size - The required maximum allowed file size in bytes. :content_type - The required MIME type of the file to be uploaded. :expires_in - The required expiration time in milliseconds from now before the signed upload expires. Examples config = %{ region : "us-east-1" , access_key_id : System . fetch_env! ( "AWS_ACCESS_KEY_ID" ) , secret_access_key : System . fetch_env! ( "AWS_SECRET_ACCESS_KEY" ) } { :ok , fields } = SimpleS3Upload . sign_form_upload ( config , "my-bucket" , key : "public/my-file-name" , content_type : "image/png" , max_file_size : 10_000 , expires_in : :timer . hours ( 1 ) )","ref":"SimpleS3Upload.html#sign_form_upload/3","title":"SimpleS3Upload.sign_form_upload/3","type":"function"},{"doc":"","ref":"Utils.FileUpload.html","title":"Utils.FileUpload","type":"module"},{"doc":"","ref":"Utils.FileUpload.html#upload/3","title":"Utils.FileUpload.upload/3","type":"function"},{"doc":"The Accounts context.","ref":"Claper.Accounts.html","title":"Claper.Accounts","type":"module"},{"doc":"Emulates that the email will change without actually changing it in the database. Examples iex> apply_user_email ( user , "valid password" , %{ email : ... } ) { :ok , % User { } } iex> apply_user_email ( user , "invalid password" , %{ email : ... } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Accounts.html#apply_user_email/2","title":"Claper.Accounts.apply_user_email/2","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for changing the user email. Examples iex> change_user_email ( user ) % Ecto.Changeset { data : % User { } }","ref":"Claper.Accounts.html#change_user_email/2","title":"Claper.Accounts.change_user_email/2","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for changing the user password. Examples iex> change_user_password ( user ) % Ecto.Changeset { data : % User { } }","ref":"Claper.Accounts.html#change_user_password/2","title":"Claper.Accounts.change_user_password/2","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for tracking user changes. Examples iex> change_user_registration ( user ) % Ecto.Changeset { data : % User { } }","ref":"Claper.Accounts.html#change_user_registration/2","title":"Claper.Accounts.change_user_registration/2","type":"function"},{"doc":"","ref":"Claper.Accounts.html#confirm_magic/1","title":"Claper.Accounts.confirm_magic/1","type":"function"},{"doc":"Confirms a user by the given token. If the token matches, the user account is marked as confirmed and the token is deleted.","ref":"Claper.Accounts.html#confirm_user/1","title":"Claper.Accounts.confirm_user/1","type":"function"},{"doc":"Deletes the signed token with the given context.","ref":"Claper.Accounts.html#delete_session_token/1","title":"Claper.Accounts.delete_session_token/1","type":"function"},{"doc":"Delivers the magic link email to the given user. Examples iex> deliver_magic_link ( user , & Routes . user_confirmation_url ( conn , :confirm_magic , &1 ) ) { :ok , %{ to : ... , body : ... } }","ref":"Claper.Accounts.html#deliver_magic_link/2","title":"Claper.Accounts.deliver_magic_link/2","type":"function"},{"doc":"Delivers the update email instructions to the given user. Examples iex> deliver_update_email_instructions ( user , current_email , & Routes . user_update_email_url ( conn , :edit , &1 ) ) { :ok , %{ to : ... , body : ... } }","ref":"Claper.Accounts.html#deliver_update_email_instructions/3","title":"Claper.Accounts.deliver_update_email_instructions/3","type":"function"},{"doc":"Delivers the confirmation email instructions to the given user. Examples iex> deliver_user_confirmation_instructions ( user , & Routes . user_confirmation_url ( conn , :edit , &1 ) ) { :ok , %{ to : ... , body : ... } } iex> deliver_user_confirmation_instructions ( confirmed_user , & Routes . user_confirmation_url ( conn , :edit , &1 ) ) { :error , :already_confirmed }","ref":"Claper.Accounts.html#deliver_user_confirmation_instructions/2","title":"Claper.Accounts.deliver_user_confirmation_instructions/2","type":"function"},{"doc":"Delivers the reset password email to the given user. Examples iex> deliver_user_reset_password_instructions ( user , & Routes . user_reset_password_url ( conn , :edit , &1 ) ) { :ok , %{ to : ... , body : ... } }","ref":"Claper.Accounts.html#deliver_user_reset_password_instructions/2","title":"Claper.Accounts.deliver_user_reset_password_instructions/2","type":"function"},{"doc":"Generates a session token.","ref":"Claper.Accounts.html#generate_user_session_token/1","title":"Claper.Accounts.generate_user_session_token/1","type":"function"},{"doc":"Gets a single user. Raises Ecto.NoResultsError if the User does not exist. Examples iex> get_user! ( 123 ) % User { } iex> get_user! ( 456 ) ** (Ecto.NoResultsError)","ref":"Claper.Accounts.html#get_user!/1","title":"Claper.Accounts.get_user!/1","type":"function"},{"doc":"Gets a user by email. Examples iex> get_user_by_email ( "foo@example.com" ) % User { } iex> get_user_by_email ( "unknown@example.com" ) nil","ref":"Claper.Accounts.html#get_user_by_email/1","title":"Claper.Accounts.get_user_by_email/1","type":"function"},{"doc":"Gets a user by email and password. Examples iex> get_user_by_email_and_password ( "foo@example.com" , "correct_password" ) % User { } iex> get_user_by_email_and_password ( "foo@example.com" , "invalid_password" ) nil","ref":"Claper.Accounts.html#get_user_by_email_and_password/2","title":"Claper.Accounts.get_user_by_email_and_password/2","type":"function"},{"doc":"Gets the user by reset password token. Examples iex> get_user_by_reset_password_token ( "validtoken" ) % User { } iex> get_user_by_reset_password_token ( "invalidtoken" ) nil","ref":"Claper.Accounts.html#get_user_by_reset_password_token/1","title":"Claper.Accounts.get_user_by_reset_password_token/1","type":"function"},{"doc":"Gets the user with the given signed token.","ref":"Claper.Accounts.html#get_user_by_session_token/1","title":"Claper.Accounts.get_user_by_session_token/1","type":"function"},{"doc":"Verify the token for a given user email is valid.","ref":"Claper.Accounts.html#magic_token_valid?/1","title":"Claper.Accounts.magic_token_valid?/1","type":"function"},{"doc":"Registers a user. Examples iex> register_user ( %{ field : value } ) { :ok , % User { } } iex> register_user ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Accounts.html#register_user/1","title":"Claper.Accounts.register_user/1","type":"function"},{"doc":"Resets the user password. Examples iex> reset_user_password ( user , %{ password : "new long password" , password_confirmation : "new long password" } ) { :ok , % User { } } iex> reset_user_password ( user , %{ password : "valid" , password_confirmation : "not the same" } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Accounts.html#reset_user_password/2","title":"Claper.Accounts.reset_user_password/2","type":"function"},{"doc":"Updates the user email using the given token. If the token matches, the user email is updated and the token is deleted. The confirmed_at date is also updated to the current time.","ref":"Claper.Accounts.html#update_user_email/2","title":"Claper.Accounts.update_user_email/2","type":"function"},{"doc":"Updates the user password. Examples iex> update_user_password ( user , "valid password" , %{ password : ... } ) { :ok , % User { } } iex> update_user_password ( user , "invalid password" , %{ password : ... } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Accounts.html#update_user_password/2","title":"Claper.Accounts.update_user_password/2","type":"function"},{"doc":"Updates the user password. Examples iex> update_user_password ( user , "valid password" , %{ password : ... } ) { :ok , % User { } } iex> update_user_password ( user , "invalid password" , %{ password : ... } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Accounts.html#update_user_password/3","title":"Claper.Accounts.update_user_password/3","type":"function"},{"doc":"","ref":"Claper.Accounts.User.html","title":"Claper.Accounts.User","type":"module"},{"doc":"Confirms the account by setting confirmed_at .","ref":"Claper.Accounts.User.html#confirm_changeset/1","title":"Claper.Accounts.User.confirm_changeset/1","type":"function"},{"doc":"A user changeset for changing the email. It requires the email to change otherwise an error is added.","ref":"Claper.Accounts.User.html#email_changeset/2","title":"Claper.Accounts.User.email_changeset/2","type":"function"},{"doc":"A user changeset for changing the password.","ref":"Claper.Accounts.User.html#password_changeset/3","title":"Claper.Accounts.User.password_changeset/3","type":"function"},{"doc":"","ref":"Claper.Accounts.User.html#registration_changeset/3","title":"Claper.Accounts.User.registration_changeset/3","type":"function"},{"doc":"Verifies the password. If there is no user or the user doesn't have a password, we call Bcrypt.no_user_verify/0 to avoid timing attacks.","ref":"Claper.Accounts.User.html#valid_password?/2","title":"Claper.Accounts.User.valid_password?/2","type":"function"},{"doc":"Validates the current password otherwise adds an error to the changeset.","ref":"Claper.Accounts.User.html#validate_current_password/2","title":"Claper.Accounts.User.validate_current_password/2","type":"function"},{"doc":"","ref":"Claper.Accounts.UserNotifier.html","title":"Claper.Accounts.UserNotifier","type":"module"},{"doc":"Deliver instructions to confirm account.","ref":"Claper.Accounts.UserNotifier.html#deliver_confirmation_instructions/2","title":"Claper.Accounts.UserNotifier.deliver_confirmation_instructions/2","type":"function"},{"doc":"","ref":"Claper.Accounts.UserNotifier.html#deliver_magic_link/2","title":"Claper.Accounts.UserNotifier.deliver_magic_link/2","type":"function"},{"doc":"Deliver instructions to reset a user password.","ref":"Claper.Accounts.UserNotifier.html#deliver_reset_password_instructions/2","title":"Claper.Accounts.UserNotifier.deliver_reset_password_instructions/2","type":"function"},{"doc":"Deliver instructions to update a user email.","ref":"Claper.Accounts.UserNotifier.html#deliver_update_email_instructions/2","title":"Claper.Accounts.UserNotifier.deliver_update_email_instructions/2","type":"function"},{"doc":"","ref":"Claper.Accounts.UserNotifier.html#deliver_welcome/1","title":"Claper.Accounts.UserNotifier.deliver_welcome/1","type":"function"},{"doc":"","ref":"Claper.Accounts.UserToken.html","title":"Claper.Accounts.UserToken","type":"module"},{"doc":"Builds a token and its hash to be delivered to the user's email. The non-hashed token is sent to the user email while the hashed part is stored in the database. The original token cannot be reconstructed, which means anyone with read-only access to the database cannot directly use the token in the application to gain access. Furthermore, if the user changes their email in the system, the tokens sent to the previous email are no longer valid. Users can easily adapt the existing code to provide other types of delivery methods, for example, by phone numbers.","ref":"Claper.Accounts.UserToken.html#build_email_token/2","title":"Claper.Accounts.UserToken.build_email_token/2","type":"function"},{"doc":"","ref":"Claper.Accounts.UserToken.html#build_magic_token/2","title":"Claper.Accounts.UserToken.build_magic_token/2","type":"function"},{"doc":"Generates a token that will be stored in a signed place, such as session or cookie. As they are signed, those tokens do not need to be hashed. The reason why we store session tokens in the database, even though Phoenix already provides a session cookie, is because Phoenix' default session cookies are not persisted, they are simply signed and potentially encrypted. This means they are valid indefinitely, unless you change the signing/encryption salt. Therefore, storing them allows individual user sessions to be expired. The token system can also be extended to store additional data, such as the device used for logging in. You could then use this information to display all valid sessions and devices in the UI and allow users to explicitly expire any session they deem invalid.","ref":"Claper.Accounts.UserToken.html#build_session_token/1","title":"Claper.Accounts.UserToken.build_session_token/1","type":"function"},{"doc":"Returns the token struct for the given token value and context.","ref":"Claper.Accounts.UserToken.html#token_and_context_query/2","title":"Claper.Accounts.UserToken.token_and_context_query/2","type":"function"},{"doc":"Gets all tokens for the given user for the given contexts.","ref":"Claper.Accounts.UserToken.html#user_and_contexts_query/2","title":"Claper.Accounts.UserToken.user_and_contexts_query/2","type":"function"},{"doc":"","ref":"Claper.Accounts.UserToken.html#user_magic_and_contexts_expiry_query/1","title":"Claper.Accounts.UserToken.user_magic_and_contexts_expiry_query/1","type":"function"},{"doc":"","ref":"Claper.Accounts.UserToken.html#user_magic_and_contexts_query/2","title":"Claper.Accounts.UserToken.user_magic_and_contexts_query/2","type":"function"},{"doc":"Checks if the token is valid and returns its underlying lookup query. The query returns the user found by the token, if any. This is used to validate requests to change the user email. It is different from verify_email_token_query/2 precisely because verify_email_token_query/2 validates the email has not changed, which is the starting point by this function. The given token is valid if it matches its hashed counterpart in the database and if it has not expired (after @change_email_validity_in_days). The context must always start with "change:".","ref":"Claper.Accounts.UserToken.html#verify_change_email_token_query/2","title":"Claper.Accounts.UserToken.verify_change_email_token_query/2","type":"function"},{"doc":"Checks if the token is valid and returns its underlying lookup query. The query returns the user found by the token, if any. The given token is valid if it matches its hashed counterpart in the database and the user email has not changed. This function also checks if the token is being used within a certain period, depending on the context. The default contexts supported by this function are either "confirm", for account confirmation emails, and "reset_password", for resetting the password. For verifying requests to change the email, see verify_change_email_token_query/2 .","ref":"Claper.Accounts.UserToken.html#verify_email_token_query/2","title":"Claper.Accounts.UserToken.verify_email_token_query/2","type":"function"},{"doc":"","ref":"Claper.Accounts.UserToken.html#verify_magic_token_query/2","title":"Claper.Accounts.UserToken.verify_magic_token_query/2","type":"function"},{"doc":"Checks if the token is valid and returns its underlying lookup query. The query returns the user found by the token, if any. The token is valid if it matches the value in the database and it has not expired (after @session_validity_in_days).","ref":"Claper.Accounts.UserToken.html#verify_session_token_query/1","title":"Claper.Accounts.UserToken.verify_session_token_query/1","type":"function"},{"doc":"","ref":"ClaperWeb.AttendeeLiveAuth.html","title":"ClaperWeb.AttendeeLiveAuth","type":"module"},{"doc":"","ref":"ClaperWeb.AttendeeLiveAuth.html#on_mount/4","title":"ClaperWeb.AttendeeLiveAuth.on_mount/4","type":"function"},{"doc":"","ref":"ClaperWeb.AttendeeRegistrationView.html","title":"ClaperWeb.AttendeeRegistrationView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.AttendeeRegistrationView.html#__resource__/0","title":"ClaperWeb.AttendeeRegistrationView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.AttendeeRegistrationView.html#render/2","title":"ClaperWeb.AttendeeRegistrationView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.AttendeeRegistrationView.html#template_not_found/2","title":"ClaperWeb.AttendeeRegistrationView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserAuth.html","title":"ClaperWeb.UserAuth","type":"module"},{"doc":"Authenticates the user by looking into the session and remember me token.","ref":"ClaperWeb.UserAuth.html#fetch_current_user/2","title":"ClaperWeb.UserAuth.fetch_current_user/2","type":"function"},{"doc":"Logs the user in. It renews the session ID and clears the whole session to avoid fixation attacks. See the renew_session function to customize this behaviour. It also sets a :live_socket_id key in the session, so LiveView sessions are identified and automatically disconnected on log out. The line can be safely removed if you are not using LiveView.","ref":"ClaperWeb.UserAuth.html#log_in_user/3","title":"ClaperWeb.UserAuth.log_in_user/3","type":"function"},{"doc":"Logs the user out. It clears all session data for safety. See renew_session.","ref":"ClaperWeb.UserAuth.html#log_out_user/1","title":"ClaperWeb.UserAuth.log_out_user/1","type":"function"},{"doc":"Used for routes that require the user to not be authenticated.","ref":"ClaperWeb.UserAuth.html#redirect_if_user_is_authenticated/2","title":"ClaperWeb.UserAuth.redirect_if_user_is_authenticated/2","type":"function"},{"doc":"Used for routes that require the user to be authenticated. If you want to enforce the user email is confirmed before they use the application at all, here would be a good place.","ref":"ClaperWeb.UserAuth.html#require_authenticated_user/2","title":"ClaperWeb.UserAuth.require_authenticated_user/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserConfirmationController.html","title":"ClaperWeb.UserConfirmationController","type":"module"},{"doc":"","ref":"ClaperWeb.UserConfirmationController.html#confirm_magic/2","title":"ClaperWeb.UserConfirmationController.confirm_magic/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserConfirmationController.html#create/2","title":"ClaperWeb.UserConfirmationController.create/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserConfirmationController.html#new/2","title":"ClaperWeb.UserConfirmationController.new/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserConfirmationController.html#update/2","title":"ClaperWeb.UserConfirmationController.update/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserConfirmationView.html","title":"ClaperWeb.UserConfirmationView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserConfirmationView.html#__resource__/0","title":"ClaperWeb.UserConfirmationView.__resource__/0","type":"function"},{"doc":"","ref":"ClaperWeb.UserConfirmationView.html#new.html/1","title":"ClaperWeb.UserConfirmationView.new.html/1","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserConfirmationView.html#render/2","title":"ClaperWeb.UserConfirmationView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserConfirmationView.html#template_not_found/2","title":"ClaperWeb.UserConfirmationView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserLiveAuth.html","title":"ClaperWeb.UserLiveAuth","type":"module"},{"doc":"","ref":"ClaperWeb.UserLiveAuth.html#on_mount/4","title":"ClaperWeb.UserLiveAuth.on_mount/4","type":"function"},{"doc":"","ref":"ClaperWeb.UserRegistrationController.html","title":"ClaperWeb.UserRegistrationController","type":"module"},{"doc":"","ref":"ClaperWeb.UserRegistrationController.html#confirm/2","title":"ClaperWeb.UserRegistrationController.confirm/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserRegistrationController.html#create/2","title":"ClaperWeb.UserRegistrationController.create/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserRegistrationController.html#new/2","title":"ClaperWeb.UserRegistrationController.new/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserRegistrationView.html","title":"ClaperWeb.UserRegistrationView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserRegistrationView.html#__resource__/0","title":"ClaperWeb.UserRegistrationView.__resource__/0","type":"function"},{"doc":"","ref":"ClaperWeb.UserRegistrationView.html#confirm.html/1","title":"ClaperWeb.UserRegistrationView.confirm.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.UserRegistrationView.html#new.html/1","title":"ClaperWeb.UserRegistrationView.new.html/1","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserRegistrationView.html#render/2","title":"ClaperWeb.UserRegistrationView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserRegistrationView.html#template_not_found/2","title":"ClaperWeb.UserRegistrationView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserResetPasswordController.html","title":"ClaperWeb.UserResetPasswordController","type":"module"},{"doc":"","ref":"ClaperWeb.UserResetPasswordController.html#create/2","title":"ClaperWeb.UserResetPasswordController.create/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserResetPasswordController.html#edit/2","title":"ClaperWeb.UserResetPasswordController.edit/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserResetPasswordController.html#new/2","title":"ClaperWeb.UserResetPasswordController.new/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserResetPasswordView.html","title":"ClaperWeb.UserResetPasswordView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserResetPasswordView.html#__resource__/0","title":"ClaperWeb.UserResetPasswordView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserResetPasswordView.html#render/2","title":"ClaperWeb.UserResetPasswordView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserResetPasswordView.html#template_not_found/2","title":"ClaperWeb.UserResetPasswordView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSessionController.html","title":"ClaperWeb.UserSessionController","type":"module"},{"doc":"","ref":"ClaperWeb.UserSessionController.html#create/2","title":"ClaperWeb.UserSessionController.create/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSessionController.html#delete/2","title":"ClaperWeb.UserSessionController.delete/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSessionController.html#new/2","title":"ClaperWeb.UserSessionController.new/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSessionView.html","title":"ClaperWeb.UserSessionView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserSessionView.html#__resource__/0","title":"ClaperWeb.UserSessionView.__resource__/0","type":"function"},{"doc":"","ref":"ClaperWeb.UserSessionView.html#new.html/1","title":"ClaperWeb.UserSessionView.new.html/1","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserSessionView.html#render/2","title":"ClaperWeb.UserSessionView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserSessionView.html#template_not_found/2","title":"ClaperWeb.UserSessionView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSettingsController.html","title":"ClaperWeb.UserSettingsController","type":"module"},{"doc":"","ref":"ClaperWeb.UserSettingsController.html#confirm_email/2","title":"ClaperWeb.UserSettingsController.confirm_email/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSettingsController.html#edit/2","title":"ClaperWeb.UserSettingsController.edit/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSettingsController.html#update/2","title":"ClaperWeb.UserSettingsController.update/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSettingsLive.Show.html","title":"ClaperWeb.UserSettingsLive.Show","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.UserSettingsLive.Show.html#render/1","title":"ClaperWeb.UserSettingsLive.Show.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.UserSettingsView.html","title":"ClaperWeb.UserSettingsView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserSettingsView.html#__resource__/0","title":"ClaperWeb.UserSettingsView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserSettingsView.html#render/2","title":"ClaperWeb.UserSettingsView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserSettingsView.html#template_not_found/2","title":"ClaperWeb.UserSettingsView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserView.html","title":"ClaperWeb.UserView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserView.html#__resource__/0","title":"ClaperWeb.UserView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserView.html#render/2","title":"ClaperWeb.UserView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserView.html#template_not_found/2","title":"ClaperWeb.UserView.template_not_found/2","type":"function"},{"doc":"The Events context. An activity leader is a facilitator, a user invited to manage an event.","ref":"Claper.Events.html","title":"Claper.Events","type":"module"},{"doc":"Returns an %Ecto.Changeset{} for tracking facilitator changes. Examples iex> change_activity_leader ( activity_leader ) % Ecto.Changeset { data : % ActivityLeader { } }","ref":"Claper.Events.html#change_activity_leader/2","title":"Claper.Events.change_activity_leader/2","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for tracking event changes. Examples iex> change_event ( event ) % Ecto.Changeset { data : % Event { } }","ref":"Claper.Events.html#change_event/2","title":"Claper.Events.change_event/2","type":"function"},{"doc":"","ref":"Claper.Events.html#count_events_month/1","title":"Claper.Events.count_events_month/1","type":"function"},{"doc":"Creates a event. Examples iex> create_event ( %{ field : value } ) { :ok , % Event { } } iex> create_event ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Events.html#create_event/1","title":"Claper.Events.create_event/1","type":"function"},{"doc":"Deletes a event. Examples iex> delete_event ( event ) { :ok , % Event { } } iex> delete_event ( event ) { :error , % Ecto.Changeset { } }","ref":"Claper.Events.html#delete_event/1","title":"Claper.Events.delete_event/1","type":"function"},{"doc":"Gets a single facilitator. Raises Ecto.NoResultsError if the Activity leader does not exist. Examples iex> get_activity_leader! ( 123 ) % ActivityLeader { } iex> get_activity_leader! ( 456 ) ** (Ecto.NoResultsError)","ref":"Claper.Events.html#get_activity_leader!/1","title":"Claper.Events.get_activity_leader!/1","type":"function"},{"doc":"Gets all facilitators for a given event. Examples iex> get_activity_leaders_for_event! ( event ) [ % ActivityLeader { } , ... ]","ref":"Claper.Events.html#get_activity_leaders_for_event/1","title":"Claper.Events.get_activity_leaders_for_event/1","type":"function"},{"doc":"Get a single event with the same code excluding a specific event. Examples iex> get_different_event_with_code ( "Hello" , 123 ) % Event { }","ref":"Claper.Events.html#get_different_event_with_code/2","title":"Claper.Events.get_different_event_with_code/2","type":"function"},{"doc":"Gets a single event. Raises Ecto.NoResultsError if the Event does not exist. Examples iex> get_event! ( "123e4567-e89b-12d3-a456-426614174000" ) % Event { } iex> get_event! ( "123e4567-e89b-12d3-a456-4266141740111" ) ** (Ecto.NoResultsError)","ref":"Claper.Events.html#get_event!/2","title":"Claper.Events.get_event!/2","type":"function"},{"doc":"","ref":"Claper.Events.html#get_event_with_code/2","title":"Claper.Events.get_event_with_code/2","type":"function"},{"doc":"Gets a single event by code. Raises Ecto.NoResultsError if the Event does not exist. Examples iex> get_event_with_code! ( "Hello" ) % Event { } iex> get_event_with_code! ( "Old event" ) ** (Ecto.NoResultsError)","ref":"Claper.Events.html#get_event_with_code!/2","title":"Claper.Events.get_event_with_code!/2","type":"function"},{"doc":"Gets a single managed event. Raises Ecto.NoResultsError if the Event does not exist. Examples iex> get_managed_event! ( user , "123e4567-e89b-12d3-a456-426614174000" ) % Event { } iex> get_managed_event! ( another_user , "123e4567-e89b-12d3-a456-426614174000" ) ** (Ecto.NoResultsError)","ref":"Claper.Events.html#get_managed_event!/3","title":"Claper.Events.get_managed_event!/3","type":"function"},{"doc":"Gets a single user's event. Raises Ecto.NoResultsError if the Event does not exist. Examples iex> get_user_event! ( user , "123e4567-e89b-12d3-a456-426614174000" ) % Event { } iex> get_user_event! ( another_user , "123e4567-e89b-12d3-a456-426614174000" ) ** (Ecto.NoResultsError)","ref":"Claper.Events.html#get_user_event!/3","title":"Claper.Events.get_user_event!/3","type":"function"},{"doc":"Import interactions from another event Examples iex> import ( user_id , from_event_uuid , to_event_uuid ) { :ok , % Event { } } iex> import ( user_id , from_event_uuid , to_event_uuid ) { :error , % Ecto.Changeset { } }","ref":"Claper.Events.html#import/3","title":"Claper.Events.import/3","type":"function"},{"doc":"Check if a user is a facilitator of a specific event. Examples iex> is_leaded_by ( "email@example.com" , 123 ) true","ref":"Claper.Events.html#is_leaded_by/2","title":"Claper.Events.is_leaded_by/2","type":"function"},{"doc":"Returns the list of events of a given user. Examples iex> list_events ( 123 ) [ % Event { } , ... ]","ref":"Claper.Events.html#list_events/2","title":"Claper.Events.list_events/2","type":"function"},{"doc":"Returns the list of events managed by a given user email. Examples iex> list_managed_events_by ( "email@example.com" ) [ % Event { } , ... ]","ref":"Claper.Events.html#list_managed_events_by/2","title":"Claper.Events.list_managed_events_by/2","type":"function"},{"doc":"Updates a event. Examples iex> update_event ( event , %{ field : new_value } ) { :ok , % Event { } } iex> update_event ( event , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Events.html#update_event/2","title":"Claper.Events.update_event/2","type":"function"},{"doc":"","ref":"Claper.Events.ActivityLeader.html","title":"Claper.Events.ActivityLeader","type":"module"},{"doc":"","ref":"Claper.Events.Event.html","title":"Claper.Events.Event","type":"module"},{"doc":"","ref":"Claper.Events.Event.html#create_changeset/2","title":"Claper.Events.Event.create_changeset/2","type":"function"},{"doc":"","ref":"Claper.Events.Event.html#downcase_code/1","title":"Claper.Events.Event.downcase_code/1","type":"function"},{"doc":"","ref":"Claper.Events.Event.html#restart_changeset/1","title":"Claper.Events.Event.restart_changeset/1","type":"function"},{"doc":"","ref":"Claper.Events.Event.html#started?/1","title":"Claper.Events.Event.started?/1","type":"function"},{"doc":"","ref":"Claper.Events.Event.html#subscribe/1","title":"Claper.Events.Event.subscribe/1","type":"function"},{"doc":"","ref":"Claper.Events.Event.html#update_changeset/2","title":"Claper.Events.Event.update_changeset/2","type":"function"},{"doc":"","ref":"ClaperWeb.EventController.html","title":"ClaperWeb.EventController","type":"module"},{"doc":"","ref":"ClaperWeb.EventController.html#attendee_identifier/2","title":"ClaperWeb.EventController.attendee_identifier/2","type":"function"},{"doc":"","ref":"ClaperWeb.EventController.html#slide_generate/2","title":"ClaperWeb.EventController.slide_generate/2","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.EventCardComponent.html","title":"ClaperWeb.EventLive.EventCardComponent","type":"module"},{"doc":"Callback implementation for Phoenix.LiveComponent.render/1 .","ref":"ClaperWeb.EventLive.EventCardComponent.html#render/1","title":"ClaperWeb.EventLive.EventCardComponent.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.EventFormComponent.html","title":"ClaperWeb.EventLive.EventFormComponent","type":"module"},{"doc":"","ref":"ClaperWeb.EventLive.EventFormComponent.html#error_to_string/1","title":"ClaperWeb.EventLive.EventFormComponent.error_to_string/1","type":"function"},{"doc":"Callback implementation for Phoenix.LiveComponent.render/1 .","ref":"ClaperWeb.EventLive.EventFormComponent.html#render/1","title":"ClaperWeb.EventLive.EventFormComponent.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.FormComponent.html","title":"ClaperWeb.EventLive.FormComponent","type":"module"},{"doc":"","ref":"ClaperWeb.EventLive.FormComponent.html#toggle_form/1","title":"ClaperWeb.EventLive.FormComponent.toggle_form/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Index.html","title":"ClaperWeb.EventLive.Index","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.EventLive.Index.html#render/1","title":"ClaperWeb.EventLive.Index.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Join.html","title":"ClaperWeb.EventLive.Join","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.EventLive.Join.html#render/1","title":"ClaperWeb.EventLive.Join.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Manage.html","title":"ClaperWeb.EventLive.Manage","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.EventLive.Manage.html#render/1","title":"ClaperWeb.EventLive.Manage.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Manage.html#toggle_add_modal/1","title":"ClaperWeb.EventLive.Manage.toggle_add_modal/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.PollComponent.html","title":"ClaperWeb.EventLive.PollComponent","type":"module"},{"doc":"","ref":"ClaperWeb.EventLive.PollComponent.html#toggle_poll/1","title":"ClaperWeb.EventLive.PollComponent.toggle_poll/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.PostComponent.html","title":"ClaperWeb.EventLive.PostComponent","type":"module"},{"doc":"Callback implementation for Phoenix.LiveComponent.render/1 .","ref":"ClaperWeb.EventLive.PostComponent.html#render/1","title":"ClaperWeb.EventLive.PostComponent.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Presenter.html","title":"ClaperWeb.EventLive.Presenter","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.EventLive.Presenter.html#render/1","title":"ClaperWeb.EventLive.Presenter.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Show.html","title":"ClaperWeb.EventLive.Show","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.EventLive.Show.html#render/1","title":"ClaperWeb.EventLive.Show.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Show.html#toggle_side_menu/1","title":"ClaperWeb.EventLive.Show.toggle_side_menu/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventView.html","title":"ClaperWeb.EventView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.EventView.html#__resource__/0","title":"ClaperWeb.EventView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.EventView.html#render/2","title":"ClaperWeb.EventView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.EventView.html#template_not_found/2","title":"ClaperWeb.EventView.template_not_found/2","type":"function"},{"doc":"The Polls context.","ref":"Claper.Polls.html","title":"Claper.Polls","type":"module"},{"doc":"Add an empty poll opt to a poll changeset.","ref":"Claper.Polls.html#add_poll_opt/1","title":"Claper.Polls.add_poll_opt/1","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for tracking poll changes. Examples iex> change_poll ( poll ) % Ecto.Changeset { data : % Poll { } }","ref":"Claper.Polls.html#change_poll/2","title":"Claper.Polls.change_poll/2","type":"function"},{"doc":"Creates a poll. Examples iex> create_poll ( %{ field : value } ) { :ok , % Poll { } } iex> create_poll ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Polls.html#create_poll/1","title":"Claper.Polls.create_poll/1","type":"function"},{"doc":"Creates a poll_vote. Examples iex> create_poll_vote ( %{ field : value } ) { :ok , % PollVote { } } iex> create_poll_vote ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Polls.html#create_poll_vote/1","title":"Claper.Polls.create_poll_vote/1","type":"function"},{"doc":"Deletes a poll. Examples iex> delete_poll ( "123e4567-e89b-12d3-a456-426614174000" , poll ) { :ok , % Poll { } } iex> delete_poll ( "123e4567-e89b-12d3-a456-426614174000" , poll ) { :error , % Ecto.Changeset { } }","ref":"Claper.Polls.html#delete_poll/2","title":"Claper.Polls.delete_poll/2","type":"function"},{"doc":"","ref":"Claper.Polls.html#disable_all/2","title":"Claper.Polls.disable_all/2","type":"function"},{"doc":"Gets a single poll and set percentages for each poll options. Raises Ecto.NoResultsError if the Poll does not exist. Examples iex> get_poll! ( 123 ) % Poll { } iex> get_poll! ( 456 ) ** (Ecto.NoResultsError)","ref":"Claper.Polls.html#get_poll!/1","title":"Claper.Polls.get_poll!/1","type":"function"},{"doc":"Gets a single poll for a given position. Examples iex> get_poll! ( 123 , 0 ) % Poll { }","ref":"Claper.Polls.html#get_poll_current_position/2","title":"Claper.Polls.get_poll_current_position/2","type":"function"},{"doc":"Gets a all poll_vote. Examples iex> get_poll_vote! ( 321 , 123 ) [ % PollVote { } ]","ref":"Claper.Polls.html#get_poll_vote/2","title":"Claper.Polls.get_poll_vote/2","type":"function"},{"doc":"Returns the list of polls for a given presentation file. Examples iex> list_polls ( 123 ) [ % Poll { } , ... ]","ref":"Claper.Polls.html#list_polls/1","title":"Claper.Polls.list_polls/1","type":"function"},{"doc":"Returns the list of polls for a given presentation file and a given position. Examples iex> list_polls_at_position ( 123 , 0 ) [ % Poll { } , ... ]","ref":"Claper.Polls.html#list_polls_at_position/2","title":"Claper.Polls.list_polls_at_position/2","type":"function"},{"doc":"Remove a poll opt from a poll changeset.","ref":"Claper.Polls.html#remove_poll_opt/2","title":"Claper.Polls.remove_poll_opt/2","type":"function"},{"doc":"","ref":"Claper.Polls.html#set_default/3","title":"Claper.Polls.set_default/3","type":"function"},{"doc":"Calculate percentage of all poll options for a given poll. Examples iex> set_percentages ( poll ) % Poll { }","ref":"Claper.Polls.html#set_percentages/1","title":"Claper.Polls.set_percentages/1","type":"function"},{"doc":"Updates a poll. Examples iex> update_poll ( "123e4567-e89b-12d3-a456-426614174000" , poll , %{ field : new_value } ) { :ok , % Poll { } } iex> update_poll ( "123e4567-e89b-12d3-a456-426614174000" , poll , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Polls.html#update_poll/3","title":"Claper.Polls.update_poll/3","type":"function"},{"doc":"","ref":"Claper.Polls.html#vote/4","title":"Claper.Polls.vote/4","type":"function"},{"doc":"","ref":"Claper.Polls.Poll.html","title":"Claper.Polls.Poll","type":"module"},{"doc":"","ref":"Claper.Polls.PollOpt.html","title":"Claper.Polls.PollOpt","type":"module"},{"doc":"","ref":"Claper.Polls.PollVote.html","title":"Claper.Polls.PollVote","type":"module"},{"doc":"","ref":"ClaperWeb.PollLive.FormComponent.html","title":"ClaperWeb.PollLive.FormComponent","type":"module"},{"doc":"Callback implementation for Phoenix.LiveComponent.render/1 .","ref":"ClaperWeb.PollLive.FormComponent.html#render/1","title":"ClaperWeb.PollLive.FormComponent.render/1","type":"function"},{"doc":"The Posts context.","ref":"Claper.Posts.html","title":"Claper.Posts","type":"module"},{"doc":"Creates a post. Examples iex> create_post ( event , %{ field : value } ) { :ok , % Post { } } iex> create_post ( event , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Posts.html#create_post/2","title":"Claper.Posts.create_post/2","type":"function"},{"doc":"Creates a reaction. Examples iex> create_reaction ( %{ field : value } ) { :ok , % Reaction { } } iex> create_reaction ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Posts.html#create_reaction/1","title":"Claper.Posts.create_reaction/1","type":"function"},{"doc":"","ref":"Claper.Posts.html#delete_all_posts/3","title":"Claper.Posts.delete_all_posts/3","type":"function"},{"doc":"Deletes a post. Examples iex> delete_post ( post ) { :ok , % Post { } } iex> delete_post ( post ) { :error , % Ecto.Changeset { } }","ref":"Claper.Posts.html#delete_post/1","title":"Claper.Posts.delete_post/1","type":"function"},{"doc":"Deletes a reaction. Examples iex> delete_reaction ( reaction ) { :ok , % Reaction { } } iex> delete_reaction ( reaction ) { :error , % Ecto.Changeset { } }","ref":"Claper.Posts.html#delete_reaction/1","title":"Claper.Posts.delete_reaction/1","type":"function"},{"doc":"Gets a single post. Raises Ecto.NoResultsError if the Post does not exist. Examples iex> get_post! ( "123e4567-e89b-12d3-a456-426614174000" ) % Post { } iex> get_post! ( "123e4567-e89b-12d3-a456-426614174123" ) ** (Ecto.NoResultsError)","ref":"Claper.Posts.html#get_post!/2","title":"Claper.Posts.get_post!/2","type":"function"},{"doc":"Gets a single reaction. Raises Ecto.NoResultsError if the Reaction does not exist. Examples iex> get_reaction! ( 123 ) % Reaction { } iex> get_reaction! ( 456 ) ** (Ecto.NoResultsError)","ref":"Claper.Posts.html#get_reaction!/1","title":"Claper.Posts.get_reaction!/1","type":"function"},{"doc":"Get event posts","ref":"Claper.Posts.html#list_posts/2","title":"Claper.Posts.list_posts/2","type":"function"},{"doc":"","ref":"Claper.Posts.html#reacted_posts/3","title":"Claper.Posts.reacted_posts/3","type":"function"},{"doc":"Updates a post. Examples iex> update_post ( post , %{ field : new_value } ) { :ok , % Post { } } iex> update_post ( post , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Posts.html#update_post/2","title":"Claper.Posts.update_post/2","type":"function"},{"doc":"","ref":"Claper.Posts.Post.html","title":"Claper.Posts.Post","type":"module"},{"doc":"","ref":"Claper.Posts.Reaction.html","title":"Claper.Posts.Reaction","type":"module"},{"doc":"","ref":"ClaperWeb.PostController.html","title":"ClaperWeb.PostController","type":"module"},{"doc":"","ref":"ClaperWeb.PostController.html#create/2","title":"ClaperWeb.PostController.create/2","type":"function"},{"doc":"","ref":"ClaperWeb.PostController.html#index/2","title":"ClaperWeb.PostController.index/2","type":"function"},{"doc":"","ref":"ClaperWeb.PostView.html","title":"ClaperWeb.PostView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.PostView.html#__resource__/0","title":"ClaperWeb.PostView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.PostView.html#render/2","title":"ClaperWeb.PostView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.PostView.html#template_not_found/2","title":"ClaperWeb.PostView.template_not_found/2","type":"function"},{"doc":"Claper turns your presentations into an interactive, engaging and exciting experience. Claper has a two-sided mission: The first one is to help these people presenting an idea or a message by giving them the opportunity to make their presentation unique and to have real-time feedback from their audience. The second one is to help each participant to take their place, to be an actor in the presentation, in the meeting and to feel important and useful.","ref":"overview.html","title":"Overview","type":"extras"},{"doc":"","ref":"configuration.html","title":"Configuration","type":"extras"},{"doc":"All configuration used by the app is stored in the .env file. You can find an example file in .env.sample , but you should copy it to .env and fill it with your own values (described below). Storage Variable Values Default Required Description PRESENTATION_STORAGE local, s3 local - Define where the presentation files will be stored AWS_ACCESS_KEY_ID - - only for s3 Your AWS Access Key ID AWS_SECRET_ACCESS_KEY - - only for s3 Your AWS Secret Access Key AWS_PRES_BUCKET - - only for s3 The name of the bucket where the presentation files will be stored AWS_REGION - - only for s3 The region where the bucket is located Mail Variable Values Default Required Description MAIL_TRANSPORT local, smtp local - Define how the emails will be sent MAIL_FROM - Claper - Email address used to send emails MAIL_FROM_NAME - noreply@claper.co - Name used to send emails SMTP_RELAY - - only for smtp SMTP relay server SMTP_USERNAME - - only for smtp SMTP username SMTP_PASSWORD - - only for smtp SMTP password SMTP_PORT - 25 - SMTP port SMTP_TLS always, never, if_available always - SMTP TLS SMTP_AUTH always, never, if_available always - SMTP Auth SMTP_SSL true, false true - SMTP SSL ENABLE_MAILBOX_ROUTE true, false false - Enable/disable route to local mailbox ( /dev/mailbox ) MAILBOX_USER - - - Basic auth user for mailbox route MAILBOX_PASSWORD - - - Basic auth password for mailbox route Application Variable Values Default Required Description ENABLE_ACCOUNT_CREATION true, false true - Enable/disable user registration MAX_FILE_SIZE_MB - 15 - Max file size to upload in MB GS_JPG_RESOLUTION - 300x300 - Resolution (DPI) of the JPG generated from PDF, higher resolution means bigger files but better quality","ref":"configuration.html#environment-file","title":"Configuration - Environment file","type":"extras"},{"doc":"You can use all local variables plus the following: Variable Values Default Required Description DATABASE_URL - - ✓ Postgres connection string SECRET_KEY_BASE - - ✓ Generate it with mix phx.gen.secret ENDPOINT_HOST - localhost - Host used to access the app (used for url generation) ENDPOINT_PORT - 80 - Port used to access the app (used for url generation) PORT - 4000 - Port to listen to","ref":"configuration.html#production-docker","title":"Configuration - Production / Docker","type":"extras"},{"doc":"","ref":"installation.html","title":"Local installation","type":"extras"},{"doc":"To run Claper on your local environment you need to have: Postgres >= 9 Elixir >= 1.13.2 Erlang >= 24 NPM >= 6.14.17 NodeJS >= 14.19.2 Ghostscript >= 9.5.0 (for PDF support) Libreoffice >= 6.4 (for PPT/PPTX support) You can also use Docker to easily run a Postgres instance: docker run -p 5432:5432 -e POSTGRES_PASSWORD=claper -e POSTGRES_USER=claper -e POSTGRES_DB=claper --name claper-db -d postgres:9 Clone the repo git clone https://github.com/ClaperCo/Claper.git Install dependencies mix deps.get Migrate your database mix ecto.migrate Install JS dependencies cd assets && npm i Allow execution of startup file chmod +x ./start.sh Start Phoenix endpoint with ./start.sh Now you can visit localhost:4000 from your browser. If you have configured MAIL to local , you can access to the mailbox at localhost:4000/dev/mailbox .","ref":"installation.html#prerequisites","title":"Local installation - Prerequisites","type":"extras"},{"doc":"A Docker Compose reference file is provided in the repository. You can use it to run Claper with Docker Compose. git clone https://github.com/ClaperCo/Claper.git cd Claper docker-compose up ARM architecture If you are using an ARM architecture (like Apple M1), the original Docker image won't work. You can build the image yourself by replacing the BUILDER_IMAGE argument in the Dockerfile with ARG BUILDER_IMAGE="hexpm/elixir-arm64:1.13.2-erlang-24.2.1-debian-bullseye-20210902-slim" and then build the image as described above.","ref":"installation.html#using-docker-compose","title":"Local installation - Using Docker Compose","type":"extras"},{"doc":"","ref":"deployment.html","title":"Deployment","type":"extras"},{"doc":"To run Claper on your production environment you need to have: Postgres >= 9 Elixir >= 1.13.2 Erlang >= 24 NPM >= 6.14.17 NodeJS >= 14.19.2 Ghostscript >= 9.5.0 (for PDF support) Libreoffice >= 6.4 (for PPT/PPTX support)","ref":"deployment.html#prerequisites","title":"Deployment - Prerequisites","type":"extras"},{"doc":"Clone the repo git clone https://github.com/ClaperCo/Claper.git Install dependencies mix deps.get --only prod Migrate your database mix ecto.migrate Compile assets MIX_ENV=prod mix compile Deploy assets MIX_ENV=prod mix assets.deploy Start Phoenix endpoint with MIX_ENV=prod mix phx.server You can follow the steps from the official Phoenix guide for further details and release management: Introduction to Deployement and Deploying with Releases .","ref":"deployment.html#steps-without-docker","title":"Deployment - Steps (without docker)","type":"extras"},{"doc":"You can follow the same steps as in the installation guide to run Claper with Docker.","ref":"deployment.html#steps-with-docker","title":"Deployment - Steps (with docker)","type":"extras"},{"doc":"This an example of Nginx configuration file to run Claper behind Nginx. server { listen 80; server_name app.claper.co; # Your own domain location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://localhost:4000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }","ref":"deployment.html#behind-nginx","title":"Deployment - Behind Nginx","type":"extras"},{"doc":"Here is a docker-compose example to run Claper behind Traefik. version: "3.0" services: db: image: postgres:9 environment: POSTGRES_PASSWORD: claper POSTGRES_USER: claper POSTGRES_DB: claper app: build: . environment: DATABASE_URL: postgres://claper:claper@db:5432/claper SECRET_KEY_BASE: 0LZiQBLw4WvqPlz4cz8RsHJlxNiSqM9B48y4ChyJ5v1oA0L/TPIqRjQNdPZN3iEG MAIL_TRANSPORT: local ENDPOINT_HOST: claper.local ENDPOINT_PORT: 4000 labels: - "traefik.enable=true" - "traefik.http.routers.claper.rule=Host(`claper.local`)" - "traefik.http.routers.claper.entrypoints=web" depends_on: - db - traefik traefik: image: traefik command: #- "--log.level=DEBUG" - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" ports: - "80:80" - "8080:8080"","ref":"deployment.html#behind-traefik","title":"Deployment - Behind Traefik","type":"extras"},{"doc":"Change the rel/env.sh.eex file to uncomment: export POD_A_RECORD=$(echo $POD_IP | sed 's/\\./-/g') export RELEASE_DISTRIBUTION=name export RELEASE_NODE=<%= @release.name %>@$(echo $POD_A_RECORD).$(echo $NAMESPACE).pod.cluster.local and comment as follows: #export RELEASE_DISTRIBUTION=sname #export RELEASE_NODE=<%= @release.name %> In Kubernetes, you have to use libcluster to make the nodes discoverable. You can use the following configuration in your config/prod.exs : config :libcluster , topologies : [ default : [ strategy : Cluster.Strategy.Kubernetes , config : [ mode : :dns , kubernetes_node_basename : "claper" , kubernetes_selector : "app=claper" , kubernetes_namespace : "default" , polling_interval : 10_000 ] ] ] Helm chart You can check the Claper Helm chart to deploy Claper on Kubernetes.","ref":"deployment.html#behind-kubernetes","title":"Deployment - Behind Kubernetes","type":"extras"},{"doc":"You can configure different storage options for your presentations. By default, Claper uses the local storage. Each presentation has a unique hash that is generated in two steps, first with :erlang.phash2("\#{code}-\#{name}") and then :erlang.phash2("\#{hash}-\#{System.system_time(:second)}") .","ref":"storage.html","title":"Presentation storage","type":"extras"},{"doc":"The local storage is the default storage option. It stores the presentations in the priv/static/uploads/[hash] folder.","ref":"storage.html#local-storage","title":"Presentation storage - Local storage","type":"extras"},{"doc":"You can use S3 storage to store your presentations. When user upload a new presentation, the destination file is uploaded to S3 in your bucket in presentations/[hash] and the local file is deleted.","ref":"storage.html#s3-storage","title":"Presentation storage - S3 storage","type":"extras"},{"doc":"The main goal of Claper is to provide a simple and easy to use integrate feedback during your presentations. We don't want to add a lot of features but instead focusing on the core features that are needed to provide a good feedback experience.","ref":"features.html","title":"Features","type":"extras"},{"doc":"Users can send instant message during the presentation and interact to others messages with emoji reactions.","ref":"features.html#questions-and-answers","title":"Features - Questions and Answers","type":"extras"},{"doc":"You can add polls during your presentation. Users can vote to the poll and see the results in real time. When you create a new presentation, click on Present/Customize , select the slide where you want to add poll and click Add interaction . During your presentation, enable Active poll results on the dashboard to see the poll results in real time. You can choose between single choice and multiple choice polls.","ref":"features.html#polls","title":"Features - Polls","type":"extras"},{"doc":"You can also add forms during your presentation. Users can fill the form and you can see all submissions in real time. When you create a new presentation, click on Present/Customize , select the slide where you want to add form and click Add interaction . After your presentation, you can export all the submissions in CSV format.","ref":"features.html#forms","title":"Features - Forms","type":"extras"},{"doc":"You can moderate the messages during your presentation. You can delete messages or ban users from the dashboard. Banning the user will prevent him to send messages during the presentation and is based on a token that is stored in the browser. If the user clear his cookies, he will be able to send messages again.","ref":"features.html#moderation-tools","title":"Features - Moderation tools","type":"extras"},{"doc":"You can add users as facilitators to your presentation. Facilitators can moderate the messages from the dashboard but cannot deleted or edit your presentation.","ref":"features.html#facilitators","title":"Features - Facilitators","type":"extras"},{"doc":"When the presentation is over, you can access to the report with all the messages and reactions and other statistics about the presentation engagement.","ref":"features.html#reports","title":"Features - Reports","type":"extras"},{"doc":"","ref":"howto.html","title":"How-to","type":"extras"},{"doc":"The first thing you need to have is your Powerpoint or Keynote presentation . Do you plan to add a poll or ask questions? Plan slides that will include interactions, for example for a poll, a slide with the title of your poll. Each interaction will be linked to a slide in your presentation. When everything is ready, you must save/export your presentation in PDF or PPT/PPTX format . It is recommended to use PDF format, which will guarantee you a final rendering identical to the original. You now have your exported presentation and ready to be imported into Claper.","ref":"howto.html#preparations","title":"How-to - Preparations","type":"extras"},{"doc":"Log in to your Claper account and create a new presentation. Upload your file then choose a name for your event, a code that will allow your attendees to join the event and a start and end date. Your attendees will not be able to join the event before the start date and will not be able to join it after the end date. Note that at the end of your presentation, you will have access to your statistical report in order to know the engagement rate and other useful metrics. Before saving, you can add facilitators with their email. They will only be able to moderate your presentation and project it. Your presentation will appear in their dashboard after they log in. The first step is finished , wait a few minutes for your file to be processed. It's time to add interactions! You can add interactions during your presentation or prepare them ahead of time. Click on Present/Customize , you will find all the slides of your presentation. Below each slide, you can add interactions that will be available when the slide is active. In the right side you will have access to all posts, which is useful for moderators who can moderate posts by deleting them or banning disruptive attendees. At the bottom right you will be able to view the instructions with the QR to join your meeting, it's best to activate it at the beginning of the presentation before you start talking . You also have the option to display messages from your attendees and the result of the current poll.","ref":"howto.html#using-claper","title":"How-to - Using Claper","type":"extras"},{"doc":"You are finally ready to start! That's what the Start button in the top right corner is for. This will open a new window that will be used during your presentation. To go into full screen mode, press the F key. To control your presentation, use the moderation screen, you can also control your presentation on your phone if you are logged in with your account. You are finally ready to interact effectively with your audience!","ref":"howto.html#presenting","title":"How-to - Presenting","type":"extras"}]
\ No newline at end of file
+searchNodes=[{"doc":"Claper keeps the contexts that define your domain and business logic. Contexts are also responsible for managing your data, regardless if it comes from the database, an external API or others.","ref":"Claper.html","title":"Claper","type":"module"},{"doc":"The Forms context.","ref":"Claper.Forms.html","title":"Claper.Forms","type":"module"},{"doc":"Add an empty form field to a form changeset.","ref":"Claper.Forms.html#add_form_field/1","title":"Claper.Forms.add_form_field/1","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for tracking form changes. Examples iex> change_form ( form ) % Ecto.Changeset { data : % Form { } }","ref":"Claper.Forms.html#change_form/2","title":"Claper.Forms.change_form/2","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for tracking form submit changes. Examples iex> change_form_submit ( form_submit ) % Ecto.Changeset { data : % FormSubmit { } }","ref":"Claper.Forms.html#change_form_submit/2","title":"Claper.Forms.change_form_submit/2","type":"function"},{"doc":"Creates a form. Examples iex> create_form ( %{ field : value } ) { :ok , % Form { } } iex> create_form ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Forms.html#create_form/1","title":"Claper.Forms.create_form/1","type":"function"},{"doc":"Creates a form submit. Examples iex> create_form_submit ( %{ field : value } ) { :ok , % FormSubmit { } } iex> create_form_submit ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Forms.html#create_form_submit/1","title":"Claper.Forms.create_form_submit/1","type":"function"},{"doc":"Creates or update a FormSubmit. Examples iex> create_or_update_form_submit ( %{ field : value } ) { :ok , % FormSubmit { } } iex> create_or_update_form_submit ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Forms.html#create_or_update_form_submit/2","title":"Claper.Forms.create_or_update_form_submit/2","type":"function"},{"doc":"","ref":"Claper.Forms.html#create_or_update_form_submit/3","title":"Claper.Forms.create_or_update_form_submit/3","type":"function"},{"doc":"Deletes a form. Examples iex> delete_form ( "123e4567-e89b-12d3-a456-426614174000" , form ) { :ok , % Form { } } iex> delete_form ( "123e4567-e89b-12d3-a456-426614174000" , form ) { :error , % Ecto.Changeset { } }","ref":"Claper.Forms.html#delete_form/2","title":"Claper.Forms.delete_form/2","type":"function"},{"doc":"Deletes a form submit. Examples iex> delete_form_submit ( post , event_id ) { :ok , % FormSubmit { } } iex> delete_form_submit ( post , event_id ) { :error , % Ecto.Changeset { } }","ref":"Claper.Forms.html#delete_form_submit/2","title":"Claper.Forms.delete_form_submit/2","type":"function"},{"doc":"","ref":"Claper.Forms.html#disable_all/2","title":"Claper.Forms.disable_all/2","type":"function"},{"doc":"Gets a single form. Raises Ecto.NoResultsError if the Form does not exist. Examples iex> get_form! ( 123 ) % Poll { } iex> get_form! ( 456 ) ** (Ecto.NoResultsError)","ref":"Claper.Forms.html#get_form!/2","title":"Claper.Forms.get_form!/2","type":"function"},{"doc":"Gets a single form for a given position. Examples iex> get_form! ( 123 , 0 ) % Form { }","ref":"Claper.Forms.html#get_form_current_position/2","title":"Claper.Forms.get_form_current_position/2","type":"function"},{"doc":"Gets a single FormSubmit. Examples iex> get_form_submit! ( 321 , 123 ) % FormSubmit { }","ref":"Claper.Forms.html#get_form_submit/2","title":"Claper.Forms.get_form_submit/2","type":"function"},{"doc":"Gets a single FormSubmit by its ID. Raises Ecto.NoResultsError if the FormSubmit does not exist. Examples iex> get_form_submit_by_id! ( "123e4567-e89b-12d3-a456-426614174000" ) % Post { } iex> get_form_submit_by_id! ( "123e4567-e89b-12d3-a456-426614174123" ) ** (Ecto.NoResultsError)","ref":"Claper.Forms.html#get_form_submit_by_id!/2","title":"Claper.Forms.get_form_submit_by_id!/2","type":"function"},{"doc":"Returns the list of form submissions for a given presentation file. Examples iex> list_form_submits ( 123 ) [ % FormSubmit { } , ... ]","ref":"Claper.Forms.html#list_form_submits/1","title":"Claper.Forms.list_form_submits/1","type":"function"},{"doc":"Returns the list of forms for a given presentation file. Examples iex> list_forms ( 123 ) [ % Form { } , ... ]","ref":"Claper.Forms.html#list_forms/1","title":"Claper.Forms.list_forms/1","type":"function"},{"doc":"Returns the list of forms for a given presentation file and a given position. Examples iex> list_forms_at_position ( 123 , 0 ) [ % Form { } , ... ]","ref":"Claper.Forms.html#list_forms_at_position/2","title":"Claper.Forms.list_forms_at_position/2","type":"function"},{"doc":"Remove a form field from a form changeset.","ref":"Claper.Forms.html#remove_form_field/2","title":"Claper.Forms.remove_form_field/2","type":"function"},{"doc":"","ref":"Claper.Forms.html#set_default/3","title":"Claper.Forms.set_default/3","type":"function"},{"doc":"Updates a form. Examples iex> update_form ( "123e4567-e89b-12d3-a456-426614174000" , form , %{ field : new_value } ) { :ok , % Form { } } iex> update_form ( "123e4567-e89b-12d3-a456-426614174000" , form , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Forms.html#update_form/3","title":"Claper.Forms.update_form/3","type":"function"},{"doc":"","ref":"Claper.Forms.Field.html","title":"Claper.Forms.Field","type":"module"},{"doc":"","ref":"Claper.Forms.Form.html","title":"Claper.Forms.Form","type":"module"},{"doc":"","ref":"Claper.Forms.FormSubmit.html","title":"Claper.Forms.FormSubmit","type":"module"},{"doc":"","ref":"Claper.Mailer.html","title":"Claper.Mailer","type":"module"},{"doc":"","ref":"Claper.Mailer.html#deliver/2","title":"Claper.Mailer.deliver/2","type":"function"},{"doc":"","ref":"Claper.Mailer.html#deliver!/2","title":"Claper.Mailer.deliver!/2","type":"function"},{"doc":"","ref":"Claper.Mailer.html#deliver_many/2","title":"Claper.Mailer.deliver_many/2","type":"function"},{"doc":"The Presentations context.","ref":"Claper.Presentations.html","title":"Claper.Presentations","type":"module"},{"doc":"Creates a presentation_files. Examples iex> create_presentation_file ( %{ field : value } ) { :ok , % PresentationFile { } } iex> create_presentation_file ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Presentations.html#create_presentation_file/1","title":"Claper.Presentations.create_presentation_file/1","type":"function"},{"doc":"Creates a presentation_state. Examples iex> create_presentation_state ( %{ field : value } ) { :ok , % PresentationState { } } iex> create_presentation_state ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Presentations.html#create_presentation_state/1","title":"Claper.Presentations.create_presentation_state/1","type":"function"},{"doc":"Gets a single presentation_files. Raises Ecto.NoResultsError if the Presentation files does not exist. Examples iex> get_presentation_file! ( 123 ) % PresentationFile { } iex> get_presentation_file! ( 456 ) ** (Ecto.NoResultsError)","ref":"Claper.Presentations.html#get_presentation_file!/2","title":"Claper.Presentations.get_presentation_file!/2","type":"function"},{"doc":"","ref":"Claper.Presentations.html#get_presentation_file_by_hash!/1","title":"Claper.Presentations.get_presentation_file_by_hash!/1","type":"function"},{"doc":"","ref":"Claper.Presentations.html#subscribe/1","title":"Claper.Presentations.subscribe/1","type":"function"},{"doc":"Updates a presentation_files. Examples iex> update_presentation_file ( presentation_file , %{ field : new_value } ) { :ok , % PresentationFile { } } iex> update_presentation_file ( presentation_file , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Presentations.html#update_presentation_file/2","title":"Claper.Presentations.update_presentation_file/2","type":"function"},{"doc":"Updates a presentation_state. Examples iex> update_presentation_state ( presentation_state , %{ field : new_value } ) { :ok , % PresentationState { } } iex> update_presentation_state ( presentation_state , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Presentations.html#update_presentation_state/2","title":"Claper.Presentations.update_presentation_state/2","type":"function"},{"doc":"","ref":"Claper.Presentations.PresentationFile.html","title":"Claper.Presentations.PresentationFile","type":"module"},{"doc":"","ref":"Claper.Presentations.PresentationState.html","title":"Claper.Presentations.PresentationState","type":"module"},{"doc":"Used for executing DB release tasks when run in production without Mix installed.","ref":"Claper.Release.html","title":"Claper.Release","type":"module"},{"doc":"","ref":"Claper.Release.html#migrate/0","title":"Claper.Release.migrate/0","type":"function"},{"doc":"","ref":"Claper.Release.html#rollback/2","title":"Claper.Release.rollback/2","type":"function"},{"doc":"","ref":"Claper.Repo.html","title":"Claper.Repo","type":"module"},{"doc":"Callback implementation for Ecto.Repo.aggregate/3 .","ref":"Claper.Repo.html#aggregate/3","title":"Claper.Repo.aggregate/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.aggregate/4 .","ref":"Claper.Repo.html#aggregate/4","title":"Claper.Repo.aggregate/4","type":"function"},{"doc":"Callback implementation for Ecto.Repo.all/2 .","ref":"Claper.Repo.html#all/2","title":"Claper.Repo.all/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.checked_out?/0 .","ref":"Claper.Repo.html#checked_out?/0","title":"Claper.Repo.checked_out?/0","type":"function"},{"doc":"Callback implementation for Ecto.Repo.checkout/2 .","ref":"Claper.Repo.html#checkout/2","title":"Claper.Repo.checkout/2","type":"function"},{"doc":"","ref":"Claper.Repo.html#child_spec/1","title":"Claper.Repo.child_spec/1","type":"function"},{"doc":"Callback implementation for Ecto.Repo.config/0 .","ref":"Claper.Repo.html#config/0","title":"Claper.Repo.config/0","type":"function"},{"doc":"Callback implementation for Ecto.Repo.default_options/1 .","ref":"Claper.Repo.html#default_options/1","title":"Claper.Repo.default_options/1","type":"function"},{"doc":"Callback implementation for Ecto.Repo.delete/2 .","ref":"Claper.Repo.html#delete/2","title":"Claper.Repo.delete/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.delete!/2 .","ref":"Claper.Repo.html#delete!/2","title":"Claper.Repo.delete!/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.delete_all/2 .","ref":"Claper.Repo.html#delete_all/2","title":"Claper.Repo.delete_all/2","type":"function"},{"doc":"A convenience function for SQL-based repositories that forces all connections in the pool to disconnect within the given interval. See Ecto.Adapters.SQL.disconnect_all/3 for more information.","ref":"Claper.Repo.html#disconnect_all/2","title":"Claper.Repo.disconnect_all/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.exists?/2 .","ref":"Claper.Repo.html#exists?/2","title":"Claper.Repo.exists?/2","type":"function"},{"doc":"A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar depending on the adapter to obtain statistics for the given query. See Ecto.Adapters.SQL.explain/4 for more information.","ref":"Claper.Repo.html#explain/3","title":"Claper.Repo.explain/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.get/3 .","ref":"Claper.Repo.html#get/3","title":"Claper.Repo.get/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.get!/3 .","ref":"Claper.Repo.html#get!/3","title":"Claper.Repo.get!/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.get_by/3 .","ref":"Claper.Repo.html#get_by/3","title":"Claper.Repo.get_by/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.get_by!/3 .","ref":"Claper.Repo.html#get_by!/3","title":"Claper.Repo.get_by!/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.get_dynamic_repo/0 .","ref":"Claper.Repo.html#get_dynamic_repo/0","title":"Claper.Repo.get_dynamic_repo/0","type":"function"},{"doc":"Callback implementation for Ecto.Repo.in_transaction?/0 .","ref":"Claper.Repo.html#in_transaction?/0","title":"Claper.Repo.in_transaction?/0","type":"function"},{"doc":"Callback implementation for Ecto.Repo.init/2 .","ref":"Claper.Repo.html#init/2","title":"Claper.Repo.init/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.insert/2 .","ref":"Claper.Repo.html#insert/2","title":"Claper.Repo.insert/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.insert!/2 .","ref":"Claper.Repo.html#insert!/2","title":"Claper.Repo.insert!/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.insert_all/3 .","ref":"Claper.Repo.html#insert_all/3","title":"Claper.Repo.insert_all/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.insert_or_update/2 .","ref":"Claper.Repo.html#insert_or_update/2","title":"Claper.Repo.insert_or_update/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.insert_or_update!/2 .","ref":"Claper.Repo.html#insert_or_update!/2","title":"Claper.Repo.insert_or_update!/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.load/2 .","ref":"Claper.Repo.html#load/2","title":"Claper.Repo.load/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.one/2 .","ref":"Claper.Repo.html#one/2","title":"Claper.Repo.one/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.one!/2 .","ref":"Claper.Repo.html#one!/2","title":"Claper.Repo.one!/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.preload/3 .","ref":"Claper.Repo.html#preload/3","title":"Claper.Repo.preload/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.prepare_query/3 .","ref":"Claper.Repo.html#prepare_query/3","title":"Claper.Repo.prepare_query/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.put_dynamic_repo/1 .","ref":"Claper.Repo.html#put_dynamic_repo/1","title":"Claper.Repo.put_dynamic_repo/1","type":"function"},{"doc":"A convenience function for SQL-based repositories that executes the given query. See Ecto.Adapters.SQL.query/4 for more information.","ref":"Claper.Repo.html#query/3","title":"Claper.Repo.query/3","type":"function"},{"doc":"A convenience function for SQL-based repositories that executes the given query. See Ecto.Adapters.SQL.query!/4 for more information.","ref":"Claper.Repo.html#query!/3","title":"Claper.Repo.query!/3","type":"function"},{"doc":"A convenience function for SQL-based repositories that executes the given multi-result query. See Ecto.Adapters.SQL.query_many/4 for more information.","ref":"Claper.Repo.html#query_many/3","title":"Claper.Repo.query_many/3","type":"function"},{"doc":"A convenience function for SQL-based repositories that executes the given multi-result query. See Ecto.Adapters.SQL.query_many!/4 for more information.","ref":"Claper.Repo.html#query_many!/3","title":"Claper.Repo.query_many!/3","type":"function"},{"doc":"Callback implementation for Ecto.Repo.reload/2 .","ref":"Claper.Repo.html#reload/2","title":"Claper.Repo.reload/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.reload!/2 .","ref":"Claper.Repo.html#reload!/2","title":"Claper.Repo.reload!/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.rollback/1 .","ref":"Claper.Repo.html#rollback/1","title":"Claper.Repo.rollback/1","type":"function"},{"doc":"Callback implementation for Ecto.Repo.start_link/1 .","ref":"Claper.Repo.html#start_link/1","title":"Claper.Repo.start_link/1","type":"function"},{"doc":"Callback implementation for Ecto.Repo.stop/1 .","ref":"Claper.Repo.html#stop/1","title":"Claper.Repo.stop/1","type":"function"},{"doc":"Callback implementation for Ecto.Repo.stream/2 .","ref":"Claper.Repo.html#stream/2","title":"Claper.Repo.stream/2","type":"function"},{"doc":"A convenience function for SQL-based repositories that translates the given query to SQL. See Ecto.Adapters.SQL.to_sql/3 for more information.","ref":"Claper.Repo.html#to_sql/2","title":"Claper.Repo.to_sql/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.transaction/2 .","ref":"Claper.Repo.html#transaction/2","title":"Claper.Repo.transaction/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.update/2 .","ref":"Claper.Repo.html#update/2","title":"Claper.Repo.update/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.update!/2 .","ref":"Claper.Repo.html#update!/2","title":"Claper.Repo.update!/2","type":"function"},{"doc":"Callback implementation for Ecto.Repo.update_all/3 .","ref":"Claper.Repo.html#update_all/3","title":"Claper.Repo.update_all/3","type":"function"},{"doc":"","ref":"Claper.Schema.html","title":"Claper.Schema","type":"module"},{"doc":"The Stats context.","ref":"Claper.Stats.html","title":"Claper.Stats","type":"module"},{"doc":"","ref":"Claper.Stats.html#distinct_poster_count/1","title":"Claper.Stats.distinct_poster_count/1","type":"function"},{"doc":"","ref":"Claper.Stats.html#total_vote_count/1","title":"Claper.Stats.total_vote_count/1","type":"function"},{"doc":"This module is used to convert presentations from PDF or PPT to images. We use a hash to identify the presentation. A new hash is generated when the conversion is finished and the presentation is being uploaded.","ref":"Claper.Tasks.Converter.html","title":"Claper.Tasks.Converter","type":"module"},{"doc":"Remove the presentation files directory","ref":"Claper.Tasks.Converter.html#clear/1","title":"Claper.Tasks.Converter.clear/1","type":"function"},{"doc":"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.","ref":"Claper.Tasks.Converter.html#convert/5","title":"Claper.Tasks.Converter.convert/5","type":"function"},{"doc":"The entrypoint for defining your web interface, such as controllers, views, channels and so on. This can be used in your application as: use ClaperWeb , :controller use ClaperWeb , :view The definitions below will be executed for every view, controller, etc, so keep them short and clean, focused on imports, uses and aliases. Do NOT define functions inside the quoted expressions below. Instead, define any helper function in modules and import those modules here.","ref":"ClaperWeb.html","title":"ClaperWeb","type":"module"},{"doc":"When used, dispatch to the appropriate controller/view/etc.","ref":"ClaperWeb.html#__using__/1","title":"ClaperWeb.__using__/1","type":"macro"},{"doc":"","ref":"ClaperWeb.html#channel/0","title":"ClaperWeb.channel/0","type":"function"},{"doc":"","ref":"ClaperWeb.html#controller/0","title":"ClaperWeb.controller/0","type":"function"},{"doc":"","ref":"ClaperWeb.html#live_component/0","title":"ClaperWeb.live_component/0","type":"function"},{"doc":"","ref":"ClaperWeb.html#live_view/0","title":"ClaperWeb.live_view/0","type":"function"},{"doc":"","ref":"ClaperWeb.html#router/0","title":"ClaperWeb.router/0","type":"function"},{"doc":"","ref":"ClaperWeb.html#view/0","title":"ClaperWeb.view/0","type":"function"},{"doc":"","ref":"ClaperWeb.html#view_component/0","title":"ClaperWeb.view_component/0","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Alert.html","title":"ClaperWeb.Component.Alert","type":"module"},{"doc":"","ref":"ClaperWeb.Component.Alert.html#error/1","title":"ClaperWeb.Component.Alert.error/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Alert.html#info/1","title":"ClaperWeb.Component.Alert.info/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html","title":"ClaperWeb.Component.Input","type":"module"},{"doc":"","ref":"ClaperWeb.Component.Input.html#check/1","title":"ClaperWeb.Component.Input.check/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#checked/3","title":"ClaperWeb.Component.Input.checked/3","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#code/1","title":"ClaperWeb.Component.Input.code/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#date/1","title":"ClaperWeb.Component.Input.date/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#date_range/1","title":"ClaperWeb.Component.Input.date_range/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#email/1","title":"ClaperWeb.Component.Input.email/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#password/1","title":"ClaperWeb.Component.Input.password/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#select/1","title":"ClaperWeb.Component.Input.select/1","type":"function"},{"doc":"","ref":"ClaperWeb.Component.Input.html#text/1","title":"ClaperWeb.Component.Input.text/1","type":"function"},{"doc":"","ref":"ClaperWeb.ComponentView.html","title":"ClaperWeb.ComponentView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.ComponentView.html#__resource__/0","title":"ClaperWeb.ComponentView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.ComponentView.html#render/2","title":"ClaperWeb.ComponentView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.ComponentView.html#template_not_found/2","title":"ClaperWeb.ComponentView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.Endpoint.html","title":"ClaperWeb.Endpoint","type":"module"},{"doc":"Callback implementation for Phoenix.Endpoint.broadcast/3 .","ref":"ClaperWeb.Endpoint.html#broadcast/3","title":"ClaperWeb.Endpoint.broadcast/3","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.broadcast!/3 .","ref":"ClaperWeb.Endpoint.html#broadcast!/3","title":"ClaperWeb.Endpoint.broadcast!/3","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.broadcast_from/4 .","ref":"ClaperWeb.Endpoint.html#broadcast_from/4","title":"ClaperWeb.Endpoint.broadcast_from/4","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.broadcast_from!/4 .","ref":"ClaperWeb.Endpoint.html#broadcast_from!/4","title":"ClaperWeb.Endpoint.broadcast_from!/4","type":"function"},{"doc":"Callback implementation for Plug.call/2 .","ref":"ClaperWeb.Endpoint.html#call/2","title":"ClaperWeb.Endpoint.call/2","type":"function"},{"doc":"Returns the child specification to start the endpoint under a supervision tree.","ref":"ClaperWeb.Endpoint.html#child_spec/1","title":"ClaperWeb.Endpoint.child_spec/1","type":"function"},{"doc":"Returns the endpoint configuration for key Returns default if the key does not exist.","ref":"ClaperWeb.Endpoint.html#config/2","title":"ClaperWeb.Endpoint.config/2","type":"function"},{"doc":"Reloads the configuration given the application environment changes.","ref":"ClaperWeb.Endpoint.html#config_change/2","title":"ClaperWeb.Endpoint.config_change/2","type":"function"},{"doc":"Returns the host for the given endpoint.","ref":"ClaperWeb.Endpoint.html#host/0","title":"ClaperWeb.Endpoint.host/0","type":"function"},{"doc":"Callback implementation for Plug.init/1 .","ref":"ClaperWeb.Endpoint.html#init/1","title":"ClaperWeb.Endpoint.init/1","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.local_broadcast/3 .","ref":"ClaperWeb.Endpoint.html#local_broadcast/3","title":"ClaperWeb.Endpoint.local_broadcast/3","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.local_broadcast_from/4 .","ref":"ClaperWeb.Endpoint.html#local_broadcast_from/4","title":"ClaperWeb.Endpoint.local_broadcast_from/4","type":"function"},{"doc":"Generates the path information when routing to this endpoint.","ref":"ClaperWeb.Endpoint.html#path/1","title":"ClaperWeb.Endpoint.path/1","type":"function"},{"doc":"Generates the script name.","ref":"ClaperWeb.Endpoint.html#script_name/0","title":"ClaperWeb.Endpoint.script_name/0","type":"function"},{"doc":"Starts the endpoint supervision tree. All other options are merged into the endpoint configuration.","ref":"ClaperWeb.Endpoint.html#start_link/1","title":"ClaperWeb.Endpoint.start_link/1","type":"function"},{"doc":"Generates a base64-encoded cryptographic hash (sha512) to a static file in priv/static . Meant to be used for Subresource Integrity with CDNs.","ref":"ClaperWeb.Endpoint.html#static_integrity/1","title":"ClaperWeb.Endpoint.static_integrity/1","type":"function"},{"doc":"Returns a two item tuple with the first item being the static_path and the second item being the static_integrity .","ref":"ClaperWeb.Endpoint.html#static_lookup/1","title":"ClaperWeb.Endpoint.static_lookup/1","type":"function"},{"doc":"Generates a route to a static file in priv/static .","ref":"ClaperWeb.Endpoint.html#static_path/1","title":"ClaperWeb.Endpoint.static_path/1","type":"function"},{"doc":"Generates the static URL without any path information. It uses the configuration under :static_url to generate such. It falls back to :url if :static_url is not set.","ref":"ClaperWeb.Endpoint.html#static_url/0","title":"ClaperWeb.Endpoint.static_url/0","type":"function"},{"doc":"Generates the endpoint base URL but as a URI struct. It uses the configuration under :url to generate such. Useful for manipulating the URL data and passing it to URL helpers.","ref":"ClaperWeb.Endpoint.html#struct_url/0","title":"ClaperWeb.Endpoint.struct_url/0","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.subscribe/2 .","ref":"ClaperWeb.Endpoint.html#subscribe/2","title":"ClaperWeb.Endpoint.subscribe/2","type":"function"},{"doc":"Callback implementation for Phoenix.Endpoint.unsubscribe/1 .","ref":"ClaperWeb.Endpoint.html#unsubscribe/1","title":"ClaperWeb.Endpoint.unsubscribe/1","type":"function"},{"doc":"Generates the endpoint base URL without any path information. It uses the configuration under :url to generate such.","ref":"ClaperWeb.Endpoint.html#url/0","title":"ClaperWeb.Endpoint.url/0","type":"function"},{"doc":"Conveniences for translating and building error messages.","ref":"ClaperWeb.ErrorHelpers.html","title":"ClaperWeb.ErrorHelpers","type":"module"},{"doc":"Generates tag for inlined form input errors.","ref":"ClaperWeb.ErrorHelpers.html#error_tag/2","title":"ClaperWeb.ErrorHelpers.error_tag/2","type":"function"},{"doc":"Translates an error message using gettext.","ref":"ClaperWeb.ErrorHelpers.html#translate_error/1","title":"ClaperWeb.ErrorHelpers.translate_error/1","type":"function"},{"doc":"","ref":"ClaperWeb.ErrorView.html","title":"ClaperWeb.ErrorView","type":"module"},{"doc":"","ref":"ClaperWeb.ErrorView.html#404.html/1","title":"ClaperWeb.ErrorView.404.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.ErrorView.html#500.html/1","title":"ClaperWeb.ErrorView.500.html/1","type":"function"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.ErrorView.html#__resource__/0","title":"ClaperWeb.ErrorView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.ErrorView.html#render/2","title":"ClaperWeb.ErrorView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.ErrorView.html#template_not_found/2","title":"ClaperWeb.ErrorView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.FormLive.FormComponent.html","title":"ClaperWeb.FormLive.FormComponent","type":"module"},{"doc":"Callback implementation for Phoenix.LiveComponent.render/1 .","ref":"ClaperWeb.FormLive.FormComponent.html#render/1","title":"ClaperWeb.FormLive.FormComponent.render/1","type":"function"},{"doc":"A module providing Internationalization with a gettext-based API. By using Gettext , your module gains a set of macros for translations, for example: import ClaperWeb.Gettext # Simple translation gettext ( "Here is the string to translate" ) # Plural translation ngettext ( "Here is the string to translate" , "Here are the strings to translate" , 3 ) # Domain-based translation dgettext ( "errors" , "Here is the error message to translate" ) See the Gettext Docs for detailed usage.","ref":"ClaperWeb.Gettext.html","title":"ClaperWeb.Gettext","type":"module"},{"doc":"Callback implementation for Gettext.Backend.dgettext/3 .","ref":"ClaperWeb.Gettext.html#dgettext/3","title":"ClaperWeb.Gettext.dgettext/3","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.dgettext_noop/2 .","ref":"ClaperWeb.Gettext.html#dgettext_noop/2","title":"ClaperWeb.Gettext.dgettext_noop/2","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.dngettext/5 .","ref":"ClaperWeb.Gettext.html#dngettext/5","title":"ClaperWeb.Gettext.dngettext/5","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.dngettext_noop/3 .","ref":"ClaperWeb.Gettext.html#dngettext_noop/3","title":"ClaperWeb.Gettext.dngettext_noop/3","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.dpgettext/4 .","ref":"ClaperWeb.Gettext.html#dpgettext/4","title":"ClaperWeb.Gettext.dpgettext/4","type":"macro"},{"doc":"","ref":"ClaperWeb.Gettext.html#dpgettext_noop/3","title":"ClaperWeb.Gettext.dpgettext_noop/3","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.dpngettext/6 .","ref":"ClaperWeb.Gettext.html#dpngettext/6","title":"ClaperWeb.Gettext.dpngettext/6","type":"macro"},{"doc":"","ref":"ClaperWeb.Gettext.html#dpngettext_noop/4","title":"ClaperWeb.Gettext.dpngettext_noop/4","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.gettext/2 .","ref":"ClaperWeb.Gettext.html#gettext/2","title":"ClaperWeb.Gettext.gettext/2","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.gettext_comment/1 .","ref":"ClaperWeb.Gettext.html#gettext_comment/1","title":"ClaperWeb.Gettext.gettext_comment/1","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.gettext_noop/1 .","ref":"ClaperWeb.Gettext.html#gettext_noop/1","title":"ClaperWeb.Gettext.gettext_noop/1","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.handle_missing_bindings/2 .","ref":"ClaperWeb.Gettext.html#handle_missing_bindings/2","title":"ClaperWeb.Gettext.handle_missing_bindings/2","type":"function"},{"doc":"Callback implementation for Gettext.Backend.handle_missing_plural_translation/7 .","ref":"ClaperWeb.Gettext.html#handle_missing_plural_translation/7","title":"ClaperWeb.Gettext.handle_missing_plural_translation/7","type":"function"},{"doc":"Callback implementation for Gettext.Backend.handle_missing_translation/5 .","ref":"ClaperWeb.Gettext.html#handle_missing_translation/5","title":"ClaperWeb.Gettext.handle_missing_translation/5","type":"function"},{"doc":"","ref":"ClaperWeb.Gettext.html#lgettext/5","title":"ClaperWeb.Gettext.lgettext/5","type":"function"},{"doc":"","ref":"ClaperWeb.Gettext.html#lngettext/7","title":"ClaperWeb.Gettext.lngettext/7","type":"function"},{"doc":"Callback implementation for Gettext.Backend.ngettext/4 .","ref":"ClaperWeb.Gettext.html#ngettext/4","title":"ClaperWeb.Gettext.ngettext/4","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.ngettext_noop/2 .","ref":"ClaperWeb.Gettext.html#ngettext_noop/2","title":"ClaperWeb.Gettext.ngettext_noop/2","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.pgettext/3 .","ref":"ClaperWeb.Gettext.html#pgettext/3","title":"ClaperWeb.Gettext.pgettext/3","type":"macro"},{"doc":"","ref":"ClaperWeb.Gettext.html#pgettext_noop/2","title":"ClaperWeb.Gettext.pgettext_noop/2","type":"macro"},{"doc":"Callback implementation for Gettext.Backend.pngettext/5 .","ref":"ClaperWeb.Gettext.html#pngettext/5","title":"ClaperWeb.Gettext.pngettext/5","type":"macro"},{"doc":"","ref":"ClaperWeb.Gettext.html#pngettext_noop/3","title":"ClaperWeb.Gettext.pngettext_noop/3","type":"macro"},{"doc":"","ref":"ClaperWeb.LayoutView.html","title":"ClaperWeb.LayoutView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.LayoutView.html#__resource__/0","title":"ClaperWeb.LayoutView.__resource__/0","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#active_class/2","title":"ClaperWeb.LayoutView.active_class/2","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#active_link/3","title":"ClaperWeb.LayoutView.active_link/3","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#active_live_class/2","title":"ClaperWeb.LayoutView.active_live_class/2","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#app.html/1","title":"ClaperWeb.LayoutView.app.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#email.html/1","title":"ClaperWeb.LayoutView.email.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#live.html/1","title":"ClaperWeb.LayoutView.live.html/1","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.LayoutView.html#render/2","title":"ClaperWeb.LayoutView.render/2","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#root.html/1","title":"ClaperWeb.LayoutView.root.html/1","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.LayoutView.html#template_not_found/2","title":"ClaperWeb.LayoutView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.LayoutView.html#user.html/1","title":"ClaperWeb.LayoutView.user.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.LiveHelpers.html","title":"ClaperWeb.LiveHelpers","type":"module"},{"doc":"Renders a component inside the ClaperWeb.ModalComponent component. The rendered modal receives a :return_to option to properly update the URL when the modal is closed. Examples < % = live_modal ClaperWeb.PostLive.FormComponent , id : @post . id || :new , action : @live_action , post : @post , return_to : Routes . post_index_path ( @socket , :index ) % >","ref":"ClaperWeb.LiveHelpers.html#live_modal/2","title":"ClaperWeb.LiveHelpers.live_modal/2","type":"function"},{"doc":"","ref":"ClaperWeb.ModalComponent.html","title":"ClaperWeb.ModalComponent","type":"module"},{"doc":"","ref":"ClaperWeb.ModalComponent.html#hide_modal/1","title":"ClaperWeb.ModalComponent.hide_modal/1","type":"function"},{"doc":"","ref":"ClaperWeb.Notifiers.UserNotifier.html","title":"ClaperWeb.Notifiers.UserNotifier","type":"module"},{"doc":"","ref":"ClaperWeb.Notifiers.UserNotifier.html#magic/2","title":"ClaperWeb.Notifiers.UserNotifier.magic/2","type":"function"},{"doc":"","ref":"ClaperWeb.Notifiers.UserNotifier.html#render_body/3","title":"ClaperWeb.Notifiers.UserNotifier.render_body/3","type":"function"},{"doc":"","ref":"ClaperWeb.Notifiers.UserNotifier.html#update_email/2","title":"ClaperWeb.Notifiers.UserNotifier.update_email/2","type":"function"},{"doc":"","ref":"ClaperWeb.Notifiers.UserNotifier.html#welcome/1","title":"ClaperWeb.Notifiers.UserNotifier.welcome/1","type":"function"},{"doc":"","ref":"ClaperWeb.PageController.html","title":"ClaperWeb.PageController","type":"module"},{"doc":"","ref":"ClaperWeb.PageController.html#index/2","title":"ClaperWeb.PageController.index/2","type":"function"},{"doc":"","ref":"ClaperWeb.PageController.html#privacy/2","title":"ClaperWeb.PageController.privacy/2","type":"function"},{"doc":"","ref":"ClaperWeb.PageController.html#tos/2","title":"ClaperWeb.PageController.tos/2","type":"function"},{"doc":"","ref":"ClaperWeb.PageView.html","title":"ClaperWeb.PageView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.PageView.html#__resource__/0","title":"ClaperWeb.PageView.__resource__/0","type":"function"},{"doc":"","ref":"ClaperWeb.PageView.html#privacy.html/1","title":"ClaperWeb.PageView.privacy.html/1","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.PageView.html#render/2","title":"ClaperWeb.PageView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.PageView.html#template_not_found/2","title":"ClaperWeb.PageView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.PageView.html#tos.html/1","title":"ClaperWeb.PageView.tos.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.Plugs.Locale.html","title":"ClaperWeb.Plugs.Locale","type":"module"},{"doc":"","ref":"ClaperWeb.Plugs.Locale.html#call/2","title":"ClaperWeb.Plugs.Locale.call/2","type":"function"},{"doc":"","ref":"ClaperWeb.Plugs.Locale.html#extract_accept_language/1","title":"ClaperWeb.Plugs.Locale.extract_accept_language/1","type":"function"},{"doc":"","ref":"ClaperWeb.Plugs.Locale.html#init/1","title":"ClaperWeb.Plugs.Locale.init/1","type":"function"},{"doc":"Provides presence tracking to channels and processes. See the Phoenix.Presence docs for more details.","ref":"ClaperWeb.Presence.html","title":"ClaperWeb.Presence","type":"module"},{"doc":"","ref":"ClaperWeb.Presence.html#child_spec/1","title":"ClaperWeb.Presence.child_spec/1","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.fetch/2 .","ref":"ClaperWeb.Presence.html#fetch/2","title":"ClaperWeb.Presence.fetch/2","type":"function"},{"doc":"","ref":"ClaperWeb.Presence.html#fetchers_pids/0","title":"ClaperWeb.Presence.fetchers_pids/0","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.get_by_key/2 .","ref":"ClaperWeb.Presence.html#get_by_key/2","title":"ClaperWeb.Presence.get_by_key/2","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.list/1 .","ref":"ClaperWeb.Presence.html#list/1","title":"ClaperWeb.Presence.list/1","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.track/3 .","ref":"ClaperWeb.Presence.html#track/3","title":"ClaperWeb.Presence.track/3","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.track/4 .","ref":"ClaperWeb.Presence.html#track/4","title":"ClaperWeb.Presence.track/4","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.untrack/2 .","ref":"ClaperWeb.Presence.html#untrack/2","title":"ClaperWeb.Presence.untrack/2","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.untrack/3 .","ref":"ClaperWeb.Presence.html#untrack/3","title":"ClaperWeb.Presence.untrack/3","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.update/3 .","ref":"ClaperWeb.Presence.html#update/3","title":"ClaperWeb.Presence.update/3","type":"function"},{"doc":"Callback implementation for Phoenix.Presence.update/4 .","ref":"ClaperWeb.Presence.html#update/4","title":"ClaperWeb.Presence.update/4","type":"function"},{"doc":"","ref":"ClaperWeb.Router.html","title":"ClaperWeb.Router","type":"module"},{"doc":"","ref":"ClaperWeb.Router.html#api/2","title":"ClaperWeb.Router.api/2","type":"function"},{"doc":"","ref":"ClaperWeb.Router.html#attendee_registration/2","title":"ClaperWeb.Router.attendee_registration/2","type":"function"},{"doc":"","ref":"ClaperWeb.Router.html#browser/2","title":"ClaperWeb.Router.browser/2","type":"function"},{"doc":"Callback invoked by Plug on every request.","ref":"ClaperWeb.Router.html#call/2","title":"ClaperWeb.Router.call/2","type":"function"},{"doc":"Callback required by Plug that initializes the router for serving web requests.","ref":"ClaperWeb.Router.html#init/1","title":"ClaperWeb.Router.init/1","type":"function"},{"doc":"","ref":"ClaperWeb.Router.html#protect_with_basic_auth/2","title":"ClaperWeb.Router.protect_with_basic_auth/2","type":"function"},{"doc":"","ref":"ClaperWeb.StatController.html","title":"ClaperWeb.StatController","type":"module"},{"doc":"","ref":"ClaperWeb.StatController.html#export/2","title":"ClaperWeb.StatController.export/2","type":"function"},{"doc":"","ref":"ClaperWeb.StatLive.Index.html","title":"ClaperWeb.StatLive.Index","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.StatLive.Index.html#render/1","title":"ClaperWeb.StatLive.Index.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.Telemetry.html","title":"ClaperWeb.Telemetry","type":"module"},{"doc":"Returns a specification to start this module under a supervisor. See Supervisor .","ref":"ClaperWeb.Telemetry.html#child_spec/1","title":"ClaperWeb.Telemetry.child_spec/1","type":"function"},{"doc":"","ref":"ClaperWeb.Telemetry.html#metrics/0","title":"ClaperWeb.Telemetry.metrics/0","type":"function"},{"doc":"","ref":"ClaperWeb.Telemetry.html#start_link/1","title":"ClaperWeb.Telemetry.start_link/1","type":"function"},{"doc":"","ref":"ClaperWeb.UserNotifierView.html","title":"ClaperWeb.UserNotifierView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserNotifierView.html#__resource__/0","title":"ClaperWeb.UserNotifierView.__resource__/0","type":"function"},{"doc":"","ref":"ClaperWeb.UserNotifierView.html#change.html/1","title":"ClaperWeb.UserNotifierView.change.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.UserNotifierView.html#magic.html/1","title":"ClaperWeb.UserNotifierView.magic.html/1","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserNotifierView.html#render/2","title":"ClaperWeb.UserNotifierView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserNotifierView.html#template_not_found/2","title":"ClaperWeb.UserNotifierView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserNotifierView.html#welcome.html/1","title":"ClaperWeb.UserNotifierView.welcome.html/1","type":"function"},{"doc":"Dependency-free S3 Form Upload using HTTP POST sigv4 https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html","ref":"SimpleS3Upload.html","title":"SimpleS3Upload","type":"module"},{"doc":"Signs a form upload. The configuration is a map which must contain the following keys: :region - The AWS region, such as "us-east-1" :access_key_id - The AWS access key id :secret_access_key - The AWS secret access key Returns a map of form fields to be used on the client via the JavaScript FormData API. Options :key - The required key of the object to be uploaded. :max_file_size - The required maximum allowed file size in bytes. :content_type - The required MIME type of the file to be uploaded. :expires_in - The required expiration time in milliseconds from now before the signed upload expires. Examples config = %{ region : "us-east-1" , access_key_id : System . fetch_env! ( "AWS_ACCESS_KEY_ID" ) , secret_access_key : System . fetch_env! ( "AWS_SECRET_ACCESS_KEY" ) } { :ok , fields } = SimpleS3Upload . sign_form_upload ( config , "my-bucket" , key : "public/my-file-name" , content_type : "image/png" , max_file_size : 10_000 , expires_in : :timer . hours ( 1 ) )","ref":"SimpleS3Upload.html#sign_form_upload/3","title":"SimpleS3Upload.sign_form_upload/3","type":"function"},{"doc":"","ref":"Utils.FileUpload.html","title":"Utils.FileUpload","type":"module"},{"doc":"","ref":"Utils.FileUpload.html#upload/3","title":"Utils.FileUpload.upload/3","type":"function"},{"doc":"The Accounts context.","ref":"Claper.Accounts.html","title":"Claper.Accounts","type":"module"},{"doc":"Emulates that the email will change without actually changing it in the database. Examples iex> apply_user_email ( user , "valid password" , %{ email : ... } ) { :ok , % User { } } iex> apply_user_email ( user , "invalid password" , %{ email : ... } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Accounts.html#apply_user_email/2","title":"Claper.Accounts.apply_user_email/2","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for changing the user email. Examples iex> change_user_email ( user ) % Ecto.Changeset { data : % User { } }","ref":"Claper.Accounts.html#change_user_email/2","title":"Claper.Accounts.change_user_email/2","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for changing the user password. Examples iex> change_user_password ( user ) % Ecto.Changeset { data : % User { } }","ref":"Claper.Accounts.html#change_user_password/2","title":"Claper.Accounts.change_user_password/2","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for tracking user changes. Examples iex> change_user_registration ( user ) % Ecto.Changeset { data : % User { } }","ref":"Claper.Accounts.html#change_user_registration/2","title":"Claper.Accounts.change_user_registration/2","type":"function"},{"doc":"","ref":"Claper.Accounts.html#confirm_magic/1","title":"Claper.Accounts.confirm_magic/1","type":"function"},{"doc":"Confirms a user by the given token. If the token matches, the user account is marked as confirmed and the token is deleted.","ref":"Claper.Accounts.html#confirm_user/1","title":"Claper.Accounts.confirm_user/1","type":"function"},{"doc":"Deletes the signed token with the given context.","ref":"Claper.Accounts.html#delete_session_token/1","title":"Claper.Accounts.delete_session_token/1","type":"function"},{"doc":"Delivers the magic link email to the given user. Examples iex> deliver_magic_link ( user , & Routes . user_confirmation_url ( conn , :confirm_magic , &1 ) ) { :ok , %{ to : ... , body : ... } }","ref":"Claper.Accounts.html#deliver_magic_link/2","title":"Claper.Accounts.deliver_magic_link/2","type":"function"},{"doc":"Delivers the update email instructions to the given user. Examples iex> deliver_update_email_instructions ( user , current_email , & Routes . user_update_email_url ( conn , :edit , &1 ) ) { :ok , %{ to : ... , body : ... } }","ref":"Claper.Accounts.html#deliver_update_email_instructions/3","title":"Claper.Accounts.deliver_update_email_instructions/3","type":"function"},{"doc":"Delivers the confirmation email instructions to the given user. Examples iex> deliver_user_confirmation_instructions ( user , & Routes . user_confirmation_url ( conn , :edit , &1 ) ) { :ok , %{ to : ... , body : ... } } iex> deliver_user_confirmation_instructions ( confirmed_user , & Routes . user_confirmation_url ( conn , :edit , &1 ) ) { :error , :already_confirmed }","ref":"Claper.Accounts.html#deliver_user_confirmation_instructions/2","title":"Claper.Accounts.deliver_user_confirmation_instructions/2","type":"function"},{"doc":"Delivers the reset password email to the given user. Examples iex> deliver_user_reset_password_instructions ( user , & Routes . user_reset_password_url ( conn , :edit , &1 ) ) { :ok , %{ to : ... , body : ... } }","ref":"Claper.Accounts.html#deliver_user_reset_password_instructions/2","title":"Claper.Accounts.deliver_user_reset_password_instructions/2","type":"function"},{"doc":"Generates a session token.","ref":"Claper.Accounts.html#generate_user_session_token/1","title":"Claper.Accounts.generate_user_session_token/1","type":"function"},{"doc":"Gets a single user. Raises Ecto.NoResultsError if the User does not exist. Examples iex> get_user! ( 123 ) % User { } iex> get_user! ( 456 ) ** (Ecto.NoResultsError)","ref":"Claper.Accounts.html#get_user!/1","title":"Claper.Accounts.get_user!/1","type":"function"},{"doc":"Gets a user by email. Examples iex> get_user_by_email ( "foo@example.com" ) % User { } iex> get_user_by_email ( "unknown@example.com" ) nil","ref":"Claper.Accounts.html#get_user_by_email/1","title":"Claper.Accounts.get_user_by_email/1","type":"function"},{"doc":"Gets a user by email and password. Examples iex> get_user_by_email_and_password ( "foo@example.com" , "correct_password" ) % User { } iex> get_user_by_email_and_password ( "foo@example.com" , "invalid_password" ) nil","ref":"Claper.Accounts.html#get_user_by_email_and_password/2","title":"Claper.Accounts.get_user_by_email_and_password/2","type":"function"},{"doc":"Gets the user by reset password token. Examples iex> get_user_by_reset_password_token ( "validtoken" ) % User { } iex> get_user_by_reset_password_token ( "invalidtoken" ) nil","ref":"Claper.Accounts.html#get_user_by_reset_password_token/1","title":"Claper.Accounts.get_user_by_reset_password_token/1","type":"function"},{"doc":"Gets the user with the given signed token.","ref":"Claper.Accounts.html#get_user_by_session_token/1","title":"Claper.Accounts.get_user_by_session_token/1","type":"function"},{"doc":"Verify the token for a given user email is valid.","ref":"Claper.Accounts.html#magic_token_valid?/1","title":"Claper.Accounts.magic_token_valid?/1","type":"function"},{"doc":"Registers a user. Examples iex> register_user ( %{ field : value } ) { :ok , % User { } } iex> register_user ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Accounts.html#register_user/1","title":"Claper.Accounts.register_user/1","type":"function"},{"doc":"Resets the user password. Examples iex> reset_user_password ( user , %{ password : "new long password" , password_confirmation : "new long password" } ) { :ok , % User { } } iex> reset_user_password ( user , %{ password : "valid" , password_confirmation : "not the same" } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Accounts.html#reset_user_password/2","title":"Claper.Accounts.reset_user_password/2","type":"function"},{"doc":"Updates the user email using the given token. If the token matches, the user email is updated and the token is deleted. The confirmed_at date is also updated to the current time.","ref":"Claper.Accounts.html#update_user_email/2","title":"Claper.Accounts.update_user_email/2","type":"function"},{"doc":"Updates the user password. Examples iex> update_user_password ( user , "valid password" , %{ password : ... } ) { :ok , % User { } } iex> update_user_password ( user , "invalid password" , %{ password : ... } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Accounts.html#update_user_password/2","title":"Claper.Accounts.update_user_password/2","type":"function"},{"doc":"Updates the user password. Examples iex> update_user_password ( user , "valid password" , %{ password : ... } ) { :ok , % User { } } iex> update_user_password ( user , "invalid password" , %{ password : ... } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Accounts.html#update_user_password/3","title":"Claper.Accounts.update_user_password/3","type":"function"},{"doc":"","ref":"Claper.Accounts.User.html","title":"Claper.Accounts.User","type":"module"},{"doc":"Confirms the account by setting confirmed_at .","ref":"Claper.Accounts.User.html#confirm_changeset/1","title":"Claper.Accounts.User.confirm_changeset/1","type":"function"},{"doc":"A user changeset for changing the email. It requires the email to change otherwise an error is added.","ref":"Claper.Accounts.User.html#email_changeset/2","title":"Claper.Accounts.User.email_changeset/2","type":"function"},{"doc":"A user changeset for changing the password.","ref":"Claper.Accounts.User.html#password_changeset/3","title":"Claper.Accounts.User.password_changeset/3","type":"function"},{"doc":"","ref":"Claper.Accounts.User.html#registration_changeset/3","title":"Claper.Accounts.User.registration_changeset/3","type":"function"},{"doc":"Verifies the password. If there is no user or the user doesn't have a password, we call Bcrypt.no_user_verify/0 to avoid timing attacks.","ref":"Claper.Accounts.User.html#valid_password?/2","title":"Claper.Accounts.User.valid_password?/2","type":"function"},{"doc":"Validates the current password otherwise adds an error to the changeset.","ref":"Claper.Accounts.User.html#validate_current_password/2","title":"Claper.Accounts.User.validate_current_password/2","type":"function"},{"doc":"","ref":"Claper.Accounts.UserNotifier.html","title":"Claper.Accounts.UserNotifier","type":"module"},{"doc":"Deliver instructions to confirm account.","ref":"Claper.Accounts.UserNotifier.html#deliver_confirmation_instructions/2","title":"Claper.Accounts.UserNotifier.deliver_confirmation_instructions/2","type":"function"},{"doc":"","ref":"Claper.Accounts.UserNotifier.html#deliver_magic_link/2","title":"Claper.Accounts.UserNotifier.deliver_magic_link/2","type":"function"},{"doc":"Deliver instructions to reset a user password.","ref":"Claper.Accounts.UserNotifier.html#deliver_reset_password_instructions/2","title":"Claper.Accounts.UserNotifier.deliver_reset_password_instructions/2","type":"function"},{"doc":"Deliver instructions to update a user email.","ref":"Claper.Accounts.UserNotifier.html#deliver_update_email_instructions/2","title":"Claper.Accounts.UserNotifier.deliver_update_email_instructions/2","type":"function"},{"doc":"","ref":"Claper.Accounts.UserNotifier.html#deliver_welcome/1","title":"Claper.Accounts.UserNotifier.deliver_welcome/1","type":"function"},{"doc":"","ref":"Claper.Accounts.UserToken.html","title":"Claper.Accounts.UserToken","type":"module"},{"doc":"Builds a token and its hash to be delivered to the user's email. The non-hashed token is sent to the user email while the hashed part is stored in the database. The original token cannot be reconstructed, which means anyone with read-only access to the database cannot directly use the token in the application to gain access. Furthermore, if the user changes their email in the system, the tokens sent to the previous email are no longer valid. Users can easily adapt the existing code to provide other types of delivery methods, for example, by phone numbers.","ref":"Claper.Accounts.UserToken.html#build_email_token/2","title":"Claper.Accounts.UserToken.build_email_token/2","type":"function"},{"doc":"","ref":"Claper.Accounts.UserToken.html#build_magic_token/2","title":"Claper.Accounts.UserToken.build_magic_token/2","type":"function"},{"doc":"Generates a token that will be stored in a signed place, such as session or cookie. As they are signed, those tokens do not need to be hashed. The reason why we store session tokens in the database, even though Phoenix already provides a session cookie, is because Phoenix' default session cookies are not persisted, they are simply signed and potentially encrypted. This means they are valid indefinitely, unless you change the signing/encryption salt. Therefore, storing them allows individual user sessions to be expired. The token system can also be extended to store additional data, such as the device used for logging in. You could then use this information to display all valid sessions and devices in the UI and allow users to explicitly expire any session they deem invalid.","ref":"Claper.Accounts.UserToken.html#build_session_token/1","title":"Claper.Accounts.UserToken.build_session_token/1","type":"function"},{"doc":"Returns the token struct for the given token value and context.","ref":"Claper.Accounts.UserToken.html#token_and_context_query/2","title":"Claper.Accounts.UserToken.token_and_context_query/2","type":"function"},{"doc":"Gets all tokens for the given user for the given contexts.","ref":"Claper.Accounts.UserToken.html#user_and_contexts_query/2","title":"Claper.Accounts.UserToken.user_and_contexts_query/2","type":"function"},{"doc":"","ref":"Claper.Accounts.UserToken.html#user_magic_and_contexts_expiry_query/1","title":"Claper.Accounts.UserToken.user_magic_and_contexts_expiry_query/1","type":"function"},{"doc":"","ref":"Claper.Accounts.UserToken.html#user_magic_and_contexts_query/2","title":"Claper.Accounts.UserToken.user_magic_and_contexts_query/2","type":"function"},{"doc":"Checks if the token is valid and returns its underlying lookup query. The query returns the user found by the token, if any. This is used to validate requests to change the user email. It is different from verify_email_token_query/2 precisely because verify_email_token_query/2 validates the email has not changed, which is the starting point by this function. The given token is valid if it matches its hashed counterpart in the database and if it has not expired (after @change_email_validity_in_days). The context must always start with "change:".","ref":"Claper.Accounts.UserToken.html#verify_change_email_token_query/2","title":"Claper.Accounts.UserToken.verify_change_email_token_query/2","type":"function"},{"doc":"Checks if the token is valid and returns its underlying lookup query. The query returns the user found by the token, if any. The given token is valid if it matches its hashed counterpart in the database and the user email has not changed. This function also checks if the token is being used within a certain period, depending on the context. The default contexts supported by this function are either "confirm", for account confirmation emails, and "reset_password", for resetting the password. For verifying requests to change the email, see verify_change_email_token_query/2 .","ref":"Claper.Accounts.UserToken.html#verify_email_token_query/2","title":"Claper.Accounts.UserToken.verify_email_token_query/2","type":"function"},{"doc":"","ref":"Claper.Accounts.UserToken.html#verify_magic_token_query/2","title":"Claper.Accounts.UserToken.verify_magic_token_query/2","type":"function"},{"doc":"Checks if the token is valid and returns its underlying lookup query. The query returns the user found by the token, if any. The token is valid if it matches the value in the database and it has not expired (after @session_validity_in_days).","ref":"Claper.Accounts.UserToken.html#verify_session_token_query/1","title":"Claper.Accounts.UserToken.verify_session_token_query/1","type":"function"},{"doc":"","ref":"ClaperWeb.AttendeeLiveAuth.html","title":"ClaperWeb.AttendeeLiveAuth","type":"module"},{"doc":"","ref":"ClaperWeb.AttendeeLiveAuth.html#on_mount/4","title":"ClaperWeb.AttendeeLiveAuth.on_mount/4","type":"function"},{"doc":"","ref":"ClaperWeb.AttendeeRegistrationView.html","title":"ClaperWeb.AttendeeRegistrationView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.AttendeeRegistrationView.html#__resource__/0","title":"ClaperWeb.AttendeeRegistrationView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.AttendeeRegistrationView.html#render/2","title":"ClaperWeb.AttendeeRegistrationView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.AttendeeRegistrationView.html#template_not_found/2","title":"ClaperWeb.AttendeeRegistrationView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserAuth.html","title":"ClaperWeb.UserAuth","type":"module"},{"doc":"Authenticates the user by looking into the session and remember me token.","ref":"ClaperWeb.UserAuth.html#fetch_current_user/2","title":"ClaperWeb.UserAuth.fetch_current_user/2","type":"function"},{"doc":"Logs the user in. It renews the session ID and clears the whole session to avoid fixation attacks. See the renew_session function to customize this behaviour. It also sets a :live_socket_id key in the session, so LiveView sessions are identified and automatically disconnected on log out. The line can be safely removed if you are not using LiveView.","ref":"ClaperWeb.UserAuth.html#log_in_user/3","title":"ClaperWeb.UserAuth.log_in_user/3","type":"function"},{"doc":"Logs the user out. It clears all session data for safety. See renew_session.","ref":"ClaperWeb.UserAuth.html#log_out_user/1","title":"ClaperWeb.UserAuth.log_out_user/1","type":"function"},{"doc":"Used for routes that require the user to not be authenticated.","ref":"ClaperWeb.UserAuth.html#redirect_if_user_is_authenticated/2","title":"ClaperWeb.UserAuth.redirect_if_user_is_authenticated/2","type":"function"},{"doc":"Used for routes that require the user to be authenticated. If you want to enforce the user email is confirmed before they use the application at all, here would be a good place.","ref":"ClaperWeb.UserAuth.html#require_authenticated_user/2","title":"ClaperWeb.UserAuth.require_authenticated_user/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserConfirmationController.html","title":"ClaperWeb.UserConfirmationController","type":"module"},{"doc":"","ref":"ClaperWeb.UserConfirmationController.html#confirm_magic/2","title":"ClaperWeb.UserConfirmationController.confirm_magic/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserConfirmationController.html#create/2","title":"ClaperWeb.UserConfirmationController.create/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserConfirmationController.html#new/2","title":"ClaperWeb.UserConfirmationController.new/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserConfirmationController.html#update/2","title":"ClaperWeb.UserConfirmationController.update/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserConfirmationView.html","title":"ClaperWeb.UserConfirmationView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserConfirmationView.html#__resource__/0","title":"ClaperWeb.UserConfirmationView.__resource__/0","type":"function"},{"doc":"","ref":"ClaperWeb.UserConfirmationView.html#new.html/1","title":"ClaperWeb.UserConfirmationView.new.html/1","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserConfirmationView.html#render/2","title":"ClaperWeb.UserConfirmationView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserConfirmationView.html#template_not_found/2","title":"ClaperWeb.UserConfirmationView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserLiveAuth.html","title":"ClaperWeb.UserLiveAuth","type":"module"},{"doc":"","ref":"ClaperWeb.UserLiveAuth.html#on_mount/4","title":"ClaperWeb.UserLiveAuth.on_mount/4","type":"function"},{"doc":"","ref":"ClaperWeb.UserRegistrationController.html","title":"ClaperWeb.UserRegistrationController","type":"module"},{"doc":"","ref":"ClaperWeb.UserRegistrationController.html#confirm/2","title":"ClaperWeb.UserRegistrationController.confirm/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserRegistrationController.html#create/2","title":"ClaperWeb.UserRegistrationController.create/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserRegistrationController.html#new/2","title":"ClaperWeb.UserRegistrationController.new/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserRegistrationView.html","title":"ClaperWeb.UserRegistrationView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserRegistrationView.html#__resource__/0","title":"ClaperWeb.UserRegistrationView.__resource__/0","type":"function"},{"doc":"","ref":"ClaperWeb.UserRegistrationView.html#confirm.html/1","title":"ClaperWeb.UserRegistrationView.confirm.html/1","type":"function"},{"doc":"","ref":"ClaperWeb.UserRegistrationView.html#new.html/1","title":"ClaperWeb.UserRegistrationView.new.html/1","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserRegistrationView.html#render/2","title":"ClaperWeb.UserRegistrationView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserRegistrationView.html#template_not_found/2","title":"ClaperWeb.UserRegistrationView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserResetPasswordController.html","title":"ClaperWeb.UserResetPasswordController","type":"module"},{"doc":"","ref":"ClaperWeb.UserResetPasswordController.html#create/2","title":"ClaperWeb.UserResetPasswordController.create/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserResetPasswordController.html#edit/2","title":"ClaperWeb.UserResetPasswordController.edit/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserResetPasswordController.html#new/2","title":"ClaperWeb.UserResetPasswordController.new/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserResetPasswordView.html","title":"ClaperWeb.UserResetPasswordView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserResetPasswordView.html#__resource__/0","title":"ClaperWeb.UserResetPasswordView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserResetPasswordView.html#render/2","title":"ClaperWeb.UserResetPasswordView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserResetPasswordView.html#template_not_found/2","title":"ClaperWeb.UserResetPasswordView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSessionController.html","title":"ClaperWeb.UserSessionController","type":"module"},{"doc":"","ref":"ClaperWeb.UserSessionController.html#create/2","title":"ClaperWeb.UserSessionController.create/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSessionController.html#delete/2","title":"ClaperWeb.UserSessionController.delete/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSessionController.html#new/2","title":"ClaperWeb.UserSessionController.new/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSessionView.html","title":"ClaperWeb.UserSessionView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserSessionView.html#__resource__/0","title":"ClaperWeb.UserSessionView.__resource__/0","type":"function"},{"doc":"","ref":"ClaperWeb.UserSessionView.html#new.html/1","title":"ClaperWeb.UserSessionView.new.html/1","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserSessionView.html#render/2","title":"ClaperWeb.UserSessionView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserSessionView.html#template_not_found/2","title":"ClaperWeb.UserSessionView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSettingsController.html","title":"ClaperWeb.UserSettingsController","type":"module"},{"doc":"","ref":"ClaperWeb.UserSettingsController.html#confirm_email/2","title":"ClaperWeb.UserSettingsController.confirm_email/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSettingsController.html#edit/2","title":"ClaperWeb.UserSettingsController.edit/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSettingsController.html#update/2","title":"ClaperWeb.UserSettingsController.update/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserSettingsLive.Show.html","title":"ClaperWeb.UserSettingsLive.Show","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.UserSettingsLive.Show.html#render/1","title":"ClaperWeb.UserSettingsLive.Show.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.UserSettingsView.html","title":"ClaperWeb.UserSettingsView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserSettingsView.html#__resource__/0","title":"ClaperWeb.UserSettingsView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserSettingsView.html#render/2","title":"ClaperWeb.UserSettingsView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserSettingsView.html#template_not_found/2","title":"ClaperWeb.UserSettingsView.template_not_found/2","type":"function"},{"doc":"","ref":"ClaperWeb.UserView.html","title":"ClaperWeb.UserView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.UserView.html#__resource__/0","title":"ClaperWeb.UserView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.UserView.html#render/2","title":"ClaperWeb.UserView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.UserView.html#template_not_found/2","title":"ClaperWeb.UserView.template_not_found/2","type":"function"},{"doc":"The Events context. An activity leader is a facilitator, a user invited to manage an event.","ref":"Claper.Events.html","title":"Claper.Events","type":"module"},{"doc":"Returns an %Ecto.Changeset{} for tracking facilitator changes. Examples iex> change_activity_leader ( activity_leader ) % Ecto.Changeset { data : % ActivityLeader { } }","ref":"Claper.Events.html#change_activity_leader/2","title":"Claper.Events.change_activity_leader/2","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for tracking event changes. Examples iex> change_event ( event ) % Ecto.Changeset { data : % Event { } }","ref":"Claper.Events.html#change_event/2","title":"Claper.Events.change_event/2","type":"function"},{"doc":"","ref":"Claper.Events.html#count_events_month/1","title":"Claper.Events.count_events_month/1","type":"function"},{"doc":"Creates a event. Examples iex> create_event ( %{ field : value } ) { :ok , % Event { } } iex> create_event ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Events.html#create_event/1","title":"Claper.Events.create_event/1","type":"function"},{"doc":"Deletes a event. Examples iex> delete_event ( event ) { :ok , % Event { } } iex> delete_event ( event ) { :error , % Ecto.Changeset { } }","ref":"Claper.Events.html#delete_event/1","title":"Claper.Events.delete_event/1","type":"function"},{"doc":"Gets a single facilitator. Raises Ecto.NoResultsError if the Activity leader does not exist. Examples iex> get_activity_leader! ( 123 ) % ActivityLeader { } iex> get_activity_leader! ( 456 ) ** (Ecto.NoResultsError)","ref":"Claper.Events.html#get_activity_leader!/1","title":"Claper.Events.get_activity_leader!/1","type":"function"},{"doc":"Gets all facilitators for a given event. Examples iex> get_activity_leaders_for_event! ( event ) [ % ActivityLeader { } , ... ]","ref":"Claper.Events.html#get_activity_leaders_for_event/1","title":"Claper.Events.get_activity_leaders_for_event/1","type":"function"},{"doc":"Get a single event with the same code excluding a specific event. Examples iex> get_different_event_with_code ( "Hello" , 123 ) % Event { }","ref":"Claper.Events.html#get_different_event_with_code/2","title":"Claper.Events.get_different_event_with_code/2","type":"function"},{"doc":"Gets a single event. Raises Ecto.NoResultsError if the Event does not exist. Examples iex> get_event! ( "123e4567-e89b-12d3-a456-426614174000" ) % Event { } iex> get_event! ( "123e4567-e89b-12d3-a456-4266141740111" ) ** (Ecto.NoResultsError)","ref":"Claper.Events.html#get_event!/2","title":"Claper.Events.get_event!/2","type":"function"},{"doc":"","ref":"Claper.Events.html#get_event_with_code/2","title":"Claper.Events.get_event_with_code/2","type":"function"},{"doc":"Gets a single event by code. Raises Ecto.NoResultsError if the Event does not exist. Examples iex> get_event_with_code! ( "Hello" ) % Event { } iex> get_event_with_code! ( "Old event" ) ** (Ecto.NoResultsError)","ref":"Claper.Events.html#get_event_with_code!/2","title":"Claper.Events.get_event_with_code!/2","type":"function"},{"doc":"Gets a single managed event. Raises Ecto.NoResultsError if the Event does not exist. Examples iex> get_managed_event! ( user , "123e4567-e89b-12d3-a456-426614174000" ) % Event { } iex> get_managed_event! ( another_user , "123e4567-e89b-12d3-a456-426614174000" ) ** (Ecto.NoResultsError)","ref":"Claper.Events.html#get_managed_event!/3","title":"Claper.Events.get_managed_event!/3","type":"function"},{"doc":"Gets a single user's event. Raises Ecto.NoResultsError if the Event does not exist. Examples iex> get_user_event! ( user , "123e4567-e89b-12d3-a456-426614174000" ) % Event { } iex> get_user_event! ( another_user , "123e4567-e89b-12d3-a456-426614174000" ) ** (Ecto.NoResultsError)","ref":"Claper.Events.html#get_user_event!/3","title":"Claper.Events.get_user_event!/3","type":"function"},{"doc":"Import interactions from another event Examples iex> import ( user_id , from_event_uuid , to_event_uuid ) { :ok , % Event { } } iex> import ( user_id , from_event_uuid , to_event_uuid ) { :error , % Ecto.Changeset { } }","ref":"Claper.Events.html#import/3","title":"Claper.Events.import/3","type":"function"},{"doc":"Check if a user is a facilitator of a specific event. Examples iex> is_leaded_by ( "email@example.com" , 123 ) true","ref":"Claper.Events.html#is_leaded_by/2","title":"Claper.Events.is_leaded_by/2","type":"function"},{"doc":"Returns the list of events of a given user. Examples iex> list_events ( 123 ) [ % Event { } , ... ]","ref":"Claper.Events.html#list_events/2","title":"Claper.Events.list_events/2","type":"function"},{"doc":"Returns the list of events managed by a given user email. Examples iex> list_managed_events_by ( "email@example.com" ) [ % Event { } , ... ]","ref":"Claper.Events.html#list_managed_events_by/2","title":"Claper.Events.list_managed_events_by/2","type":"function"},{"doc":"Updates a event. Examples iex> update_event ( event , %{ field : new_value } ) { :ok , % Event { } } iex> update_event ( event , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Events.html#update_event/2","title":"Claper.Events.update_event/2","type":"function"},{"doc":"","ref":"Claper.Events.ActivityLeader.html","title":"Claper.Events.ActivityLeader","type":"module"},{"doc":"","ref":"Claper.Events.Event.html","title":"Claper.Events.Event","type":"module"},{"doc":"","ref":"Claper.Events.Event.html#create_changeset/2","title":"Claper.Events.Event.create_changeset/2","type":"function"},{"doc":"","ref":"Claper.Events.Event.html#downcase_code/1","title":"Claper.Events.Event.downcase_code/1","type":"function"},{"doc":"","ref":"Claper.Events.Event.html#restart_changeset/1","title":"Claper.Events.Event.restart_changeset/1","type":"function"},{"doc":"","ref":"Claper.Events.Event.html#started?/1","title":"Claper.Events.Event.started?/1","type":"function"},{"doc":"","ref":"Claper.Events.Event.html#subscribe/1","title":"Claper.Events.Event.subscribe/1","type":"function"},{"doc":"","ref":"Claper.Events.Event.html#update_changeset/2","title":"Claper.Events.Event.update_changeset/2","type":"function"},{"doc":"","ref":"ClaperWeb.EventController.html","title":"ClaperWeb.EventController","type":"module"},{"doc":"","ref":"ClaperWeb.EventController.html#attendee_identifier/2","title":"ClaperWeb.EventController.attendee_identifier/2","type":"function"},{"doc":"","ref":"ClaperWeb.EventController.html#slide_generate/2","title":"ClaperWeb.EventController.slide_generate/2","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.EventCardComponent.html","title":"ClaperWeb.EventLive.EventCardComponent","type":"module"},{"doc":"Callback implementation for Phoenix.LiveComponent.render/1 .","ref":"ClaperWeb.EventLive.EventCardComponent.html#render/1","title":"ClaperWeb.EventLive.EventCardComponent.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.EventFormComponent.html","title":"ClaperWeb.EventLive.EventFormComponent","type":"module"},{"doc":"","ref":"ClaperWeb.EventLive.EventFormComponent.html#error_to_string/1","title":"ClaperWeb.EventLive.EventFormComponent.error_to_string/1","type":"function"},{"doc":"Callback implementation for Phoenix.LiveComponent.render/1 .","ref":"ClaperWeb.EventLive.EventFormComponent.html#render/1","title":"ClaperWeb.EventLive.EventFormComponent.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.FormComponent.html","title":"ClaperWeb.EventLive.FormComponent","type":"module"},{"doc":"","ref":"ClaperWeb.EventLive.FormComponent.html#toggle_form/1","title":"ClaperWeb.EventLive.FormComponent.toggle_form/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Index.html","title":"ClaperWeb.EventLive.Index","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.EventLive.Index.html#render/1","title":"ClaperWeb.EventLive.Index.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Join.html","title":"ClaperWeb.EventLive.Join","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.EventLive.Join.html#render/1","title":"ClaperWeb.EventLive.Join.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Manage.html","title":"ClaperWeb.EventLive.Manage","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.EventLive.Manage.html#render/1","title":"ClaperWeb.EventLive.Manage.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Manage.html#toggle_add_modal/1","title":"ClaperWeb.EventLive.Manage.toggle_add_modal/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.PollComponent.html","title":"ClaperWeb.EventLive.PollComponent","type":"module"},{"doc":"","ref":"ClaperWeb.EventLive.PollComponent.html#toggle_poll/1","title":"ClaperWeb.EventLive.PollComponent.toggle_poll/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.PostComponent.html","title":"ClaperWeb.EventLive.PostComponent","type":"module"},{"doc":"Callback implementation for Phoenix.LiveComponent.render/1 .","ref":"ClaperWeb.EventLive.PostComponent.html#render/1","title":"ClaperWeb.EventLive.PostComponent.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Presenter.html","title":"ClaperWeb.EventLive.Presenter","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.EventLive.Presenter.html#render/1","title":"ClaperWeb.EventLive.Presenter.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Show.html","title":"ClaperWeb.EventLive.Show","type":"module"},{"doc":"Callback implementation for Phoenix.LiveView.render/1 .","ref":"ClaperWeb.EventLive.Show.html#render/1","title":"ClaperWeb.EventLive.Show.render/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Show.html#toggle_nickname_popup/1","title":"ClaperWeb.EventLive.Show.toggle_nickname_popup/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventLive.Show.html#toggle_side_menu/1","title":"ClaperWeb.EventLive.Show.toggle_side_menu/1","type":"function"},{"doc":"","ref":"ClaperWeb.EventView.html","title":"ClaperWeb.EventView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.EventView.html#__resource__/0","title":"ClaperWeb.EventView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.EventView.html#render/2","title":"ClaperWeb.EventView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.EventView.html#template_not_found/2","title":"ClaperWeb.EventView.template_not_found/2","type":"function"},{"doc":"The Polls context.","ref":"Claper.Polls.html","title":"Claper.Polls","type":"module"},{"doc":"Add an empty poll opt to a poll changeset.","ref":"Claper.Polls.html#add_poll_opt/1","title":"Claper.Polls.add_poll_opt/1","type":"function"},{"doc":"Returns an %Ecto.Changeset{} for tracking poll changes. Examples iex> change_poll ( poll ) % Ecto.Changeset { data : % Poll { } }","ref":"Claper.Polls.html#change_poll/2","title":"Claper.Polls.change_poll/2","type":"function"},{"doc":"Creates a poll. Examples iex> create_poll ( %{ field : value } ) { :ok , % Poll { } } iex> create_poll ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Polls.html#create_poll/1","title":"Claper.Polls.create_poll/1","type":"function"},{"doc":"Creates a poll_vote. Examples iex> create_poll_vote ( %{ field : value } ) { :ok , % PollVote { } } iex> create_poll_vote ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Polls.html#create_poll_vote/1","title":"Claper.Polls.create_poll_vote/1","type":"function"},{"doc":"Deletes a poll. Examples iex> delete_poll ( "123e4567-e89b-12d3-a456-426614174000" , poll ) { :ok , % Poll { } } iex> delete_poll ( "123e4567-e89b-12d3-a456-426614174000" , poll ) { :error , % Ecto.Changeset { } }","ref":"Claper.Polls.html#delete_poll/2","title":"Claper.Polls.delete_poll/2","type":"function"},{"doc":"","ref":"Claper.Polls.html#disable_all/2","title":"Claper.Polls.disable_all/2","type":"function"},{"doc":"Gets a single poll and set percentages for each poll options. Raises Ecto.NoResultsError if the Poll does not exist. Examples iex> get_poll! ( 123 ) % Poll { } iex> get_poll! ( 456 ) ** (Ecto.NoResultsError)","ref":"Claper.Polls.html#get_poll!/1","title":"Claper.Polls.get_poll!/1","type":"function"},{"doc":"Gets a single poll for a given position. Examples iex> get_poll! ( 123 , 0 ) % Poll { }","ref":"Claper.Polls.html#get_poll_current_position/2","title":"Claper.Polls.get_poll_current_position/2","type":"function"},{"doc":"Gets a all poll_vote. Examples iex> get_poll_vote! ( 321 , 123 ) [ % PollVote { } ]","ref":"Claper.Polls.html#get_poll_vote/2","title":"Claper.Polls.get_poll_vote/2","type":"function"},{"doc":"Returns the list of polls for a given presentation file. Examples iex> list_polls ( 123 ) [ % Poll { } , ... ]","ref":"Claper.Polls.html#list_polls/1","title":"Claper.Polls.list_polls/1","type":"function"},{"doc":"Returns the list of polls for a given presentation file and a given position. Examples iex> list_polls_at_position ( 123 , 0 ) [ % Poll { } , ... ]","ref":"Claper.Polls.html#list_polls_at_position/2","title":"Claper.Polls.list_polls_at_position/2","type":"function"},{"doc":"Remove a poll opt from a poll changeset.","ref":"Claper.Polls.html#remove_poll_opt/2","title":"Claper.Polls.remove_poll_opt/2","type":"function"},{"doc":"","ref":"Claper.Polls.html#set_default/3","title":"Claper.Polls.set_default/3","type":"function"},{"doc":"Calculate percentage of all poll options for a given poll. Examples iex> set_percentages ( poll ) % Poll { }","ref":"Claper.Polls.html#set_percentages/1","title":"Claper.Polls.set_percentages/1","type":"function"},{"doc":"Updates a poll. Examples iex> update_poll ( "123e4567-e89b-12d3-a456-426614174000" , poll , %{ field : new_value } ) { :ok , % Poll { } } iex> update_poll ( "123e4567-e89b-12d3-a456-426614174000" , poll , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Polls.html#update_poll/3","title":"Claper.Polls.update_poll/3","type":"function"},{"doc":"","ref":"Claper.Polls.html#vote/4","title":"Claper.Polls.vote/4","type":"function"},{"doc":"","ref":"Claper.Polls.Poll.html","title":"Claper.Polls.Poll","type":"module"},{"doc":"","ref":"Claper.Polls.PollOpt.html","title":"Claper.Polls.PollOpt","type":"module"},{"doc":"","ref":"Claper.Polls.PollVote.html","title":"Claper.Polls.PollVote","type":"module"},{"doc":"","ref":"ClaperWeb.PollLive.FormComponent.html","title":"ClaperWeb.PollLive.FormComponent","type":"module"},{"doc":"Callback implementation for Phoenix.LiveComponent.render/1 .","ref":"ClaperWeb.PollLive.FormComponent.html#render/1","title":"ClaperWeb.PollLive.FormComponent.render/1","type":"function"},{"doc":"The Posts context.","ref":"Claper.Posts.html","title":"Claper.Posts","type":"module"},{"doc":"Creates a post. Examples iex> create_post ( event , %{ field : value } ) { :ok , % Post { } } iex> create_post ( event , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Posts.html#create_post/2","title":"Claper.Posts.create_post/2","type":"function"},{"doc":"Creates a reaction. Examples iex> create_reaction ( %{ field : value } ) { :ok , % Reaction { } } iex> create_reaction ( %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Posts.html#create_reaction/1","title":"Claper.Posts.create_reaction/1","type":"function"},{"doc":"","ref":"Claper.Posts.html#delete_all_posts/3","title":"Claper.Posts.delete_all_posts/3","type":"function"},{"doc":"Deletes a post. Examples iex> delete_post ( post ) { :ok , % Post { } } iex> delete_post ( post ) { :error , % Ecto.Changeset { } }","ref":"Claper.Posts.html#delete_post/1","title":"Claper.Posts.delete_post/1","type":"function"},{"doc":"Deletes a reaction. Examples iex> delete_reaction ( reaction ) { :ok , % Reaction { } } iex> delete_reaction ( reaction ) { :error , % Ecto.Changeset { } }","ref":"Claper.Posts.html#delete_reaction/1","title":"Claper.Posts.delete_reaction/1","type":"function"},{"doc":"Gets a single post. Raises Ecto.NoResultsError if the Post does not exist. Examples iex> get_post! ( "123e4567-e89b-12d3-a456-426614174000" ) % Post { } iex> get_post! ( "123e4567-e89b-12d3-a456-426614174123" ) ** (Ecto.NoResultsError)","ref":"Claper.Posts.html#get_post!/2","title":"Claper.Posts.get_post!/2","type":"function"},{"doc":"Gets a single reaction. Raises Ecto.NoResultsError if the Reaction does not exist. Examples iex> get_reaction! ( 123 ) % Reaction { } iex> get_reaction! ( 456 ) ** (Ecto.NoResultsError)","ref":"Claper.Posts.html#get_reaction!/1","title":"Claper.Posts.get_reaction!/1","type":"function"},{"doc":"Get event posts","ref":"Claper.Posts.html#list_posts/2","title":"Claper.Posts.list_posts/2","type":"function"},{"doc":"","ref":"Claper.Posts.html#reacted_posts/3","title":"Claper.Posts.reacted_posts/3","type":"function"},{"doc":"Updates a post. Examples iex> update_post ( post , %{ field : new_value } ) { :ok , % Post { } } iex> update_post ( post , %{ field : bad_value } ) { :error , % Ecto.Changeset { } }","ref":"Claper.Posts.html#update_post/2","title":"Claper.Posts.update_post/2","type":"function"},{"doc":"","ref":"Claper.Posts.Post.html","title":"Claper.Posts.Post","type":"module"},{"doc":"","ref":"Claper.Posts.Post.html#nickname_changeset/2","title":"Claper.Posts.Post.nickname_changeset/2","type":"function"},{"doc":"","ref":"Claper.Posts.Reaction.html","title":"Claper.Posts.Reaction","type":"module"},{"doc":"","ref":"ClaperWeb.PostController.html","title":"ClaperWeb.PostController","type":"module"},{"doc":"","ref":"ClaperWeb.PostController.html#create/2","title":"ClaperWeb.PostController.create/2","type":"function"},{"doc":"","ref":"ClaperWeb.PostController.html#index/2","title":"ClaperWeb.PostController.index/2","type":"function"},{"doc":"","ref":"ClaperWeb.PostView.html","title":"ClaperWeb.PostView","type":"module"},{"doc":"The resource name, as an atom, for this view","ref":"ClaperWeb.PostView.html#__resource__/0","title":"ClaperWeb.PostView.__resource__/0","type":"function"},{"doc":"Renders the given template locally.","ref":"ClaperWeb.PostView.html#render/2","title":"ClaperWeb.PostView.render/2","type":"function"},{"doc":"Callback invoked when no template is found. By default it raises but can be customized to render a particular template.","ref":"ClaperWeb.PostView.html#template_not_found/2","title":"ClaperWeb.PostView.template_not_found/2","type":"function"},{"doc":"Claper turns your presentations into an interactive, engaging and exciting experience. Claper has a two-sided mission: The first one is to help these people presenting an idea or a message by giving them the opportunity to make their presentation unique and to have real-time feedback from their audience. The second one is to help each participant to take their place, to be an actor in the presentation, in the meeting and to feel important and useful. Languages suppported: 🇬🇧 English, 🇫🇷 French, 🇩🇪 German.","ref":"overview.html","title":"Overview","type":"extras"},{"doc":"","ref":"configuration.html","title":"Configuration","type":"extras"},{"doc":"All configuration used by the app is stored in the .env file. You can find an example file in .env.sample , but you should copy it to .env and fill it with your own values (described below). Storage Variable Values Default Required Description PRESENTATION_STORAGE local, s3 local - Define where the presentation files will be stored AWS_ACCESS_KEY_ID - - only for s3 Your AWS Access Key ID AWS_SECRET_ACCESS_KEY - - only for s3 Your AWS Secret Access Key AWS_PRES_BUCKET - - only for s3 The name of the bucket where the presentation files will be stored AWS_REGION - - only for s3 The region where the bucket is located Mail Variable Values Default Required Description MAIL_TRANSPORT local, smtp local - Define how the emails will be sent MAIL_FROM - Claper - Email address used to send emails MAIL_FROM_NAME - noreply@claper.co - Name used to send emails SMTP_RELAY - - only for smtp SMTP relay server SMTP_USERNAME - - only for smtp SMTP username SMTP_PASSWORD - - only for smtp SMTP password SMTP_PORT - 25 - SMTP port SMTP_TLS always, never, if_available always - SMTP TLS SMTP_AUTH always, never, if_available always - SMTP Auth SMTP_SSL true, false true - SMTP SSL ENABLE_MAILBOX_ROUTE true, false false - Enable/disable route to local mailbox ( /dev/mailbox ) MAILBOX_USER - - - Basic auth user for mailbox route MAILBOX_PASSWORD - - - Basic auth password for mailbox route Application Variable Values Default Required Description ENABLE_ACCOUNT_CREATION true, false true - Enable/disable user registration MAX_FILE_SIZE_MB - 15 - Max file size to upload in MB GS_JPG_RESOLUTION - 300x300 - Resolution (DPI) of the JPG generated from PDF, higher resolution means bigger files but better quality","ref":"configuration.html#environment-file","title":"Configuration - Environment file","type":"extras"},{"doc":"You can use all local variables plus the following: Variable Values Default Required Description DATABASE_URL - - ✓ Postgres connection string SECRET_KEY_BASE - - ✓ Generate it with mix phx.gen.secret ENDPOINT_HOST - localhost - Host used to access the app (used for url generation) ENDPOINT_PORT - 80 - Port used to access the app (used for url generation) PORT - 4000 - Port to listen to","ref":"configuration.html#production-docker","title":"Configuration - Production / Docker","type":"extras"},{"doc":"","ref":"installation.html","title":"Local installation","type":"extras"},{"doc":"To run Claper on your local environment you need to have: Postgres >= 9 Elixir >= 1.13.2 Erlang >= 24 NPM >= 6.14.17 NodeJS >= 14.19.2 Ghostscript >= 9.5.0 (for PDF support) Libreoffice >= 6.4 (for PPT/PPTX support) You can also use Docker to easily run a Postgres instance: docker run -p 5432:5432 -e POSTGRES_PASSWORD=claper -e POSTGRES_USER=claper -e POSTGRES_DB=claper --name claper-db -d postgres:9 Clone the repo git clone https://github.com/ClaperCo/Claper.git Install dependencies mix deps.get Migrate your database mix ecto.migrate Install JS dependencies cd assets && npm i Allow execution of startup file chmod +x ./start.sh Start Phoenix endpoint with ./start.sh Now you can visit localhost:4000 from your browser. If you have configured MAIL to local , you can access to the mailbox at localhost:4000/dev/mailbox .","ref":"installation.html#prerequisites","title":"Local installation - Prerequisites","type":"extras"},{"doc":"A Docker Compose reference file is provided in the repository. You can use it to run Claper with Docker Compose. git clone https://github.com/ClaperCo/Claper.git cd Claper docker-compose up ARM architecture If you are using an ARM architecture (like Apple M1), the original Docker image won't work. You can build the image yourself by replacing the BUILDER_IMAGE argument in the Dockerfile with ARG BUILDER_IMAGE="hexpm/elixir-arm64:1.13.2-erlang-24.2.1-debian-bullseye-20210902-slim" and then build the image as described above.","ref":"installation.html#using-docker-compose","title":"Local installation - Using Docker Compose","type":"extras"},{"doc":"","ref":"deployment.html","title":"Deployment","type":"extras"},{"doc":"To run Claper on your production environment you need to have: Postgres >= 9 Elixir >= 1.13.2 Erlang >= 24 NPM >= 6.14.17 NodeJS >= 14.19.2 Ghostscript >= 9.5.0 (for PDF support) Libreoffice >= 6.4 (for PPT/PPTX support)","ref":"deployment.html#prerequisites","title":"Deployment - Prerequisites","type":"extras"},{"doc":"Clone the repo git clone https://github.com/ClaperCo/Claper.git Install dependencies mix deps.get --only prod Migrate your database mix ecto.migrate Compile assets MIX_ENV=prod mix compile Deploy assets MIX_ENV=prod mix assets.deploy Start Phoenix endpoint with MIX_ENV=prod mix phx.server You can follow the steps from the official Phoenix guide for further details and release management: Introduction to Deployement and Deploying with Releases .","ref":"deployment.html#steps-without-docker","title":"Deployment - Steps (without docker)","type":"extras"},{"doc":"You can follow the same steps as in the installation guide to run Claper with Docker.","ref":"deployment.html#steps-with-docker","title":"Deployment - Steps (with docker)","type":"extras"},{"doc":"This an example of Nginx configuration file to run Claper behind Nginx. server { listen 80; server_name app.claper.co; # Your own domain location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://localhost:4000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }","ref":"deployment.html#behind-nginx","title":"Deployment - Behind Nginx","type":"extras"},{"doc":"Here is a docker-compose example to run Claper behind Traefik. version: "3.0" services: db: image: postgres:9 environment: POSTGRES_PASSWORD: claper POSTGRES_USER: claper POSTGRES_DB: claper app: build: . environment: DATABASE_URL: postgres://claper:claper@db:5432/claper SECRET_KEY_BASE: 0LZiQBLw4WvqPlz4cz8RsHJlxNiSqM9B48y4ChyJ5v1oA0L/TPIqRjQNdPZN3iEG MAIL_TRANSPORT: local ENDPOINT_HOST: claper.local ENDPOINT_PORT: 4000 labels: - "traefik.enable=true" - "traefik.http.routers.claper.rule=Host(`claper.local`)" - "traefik.http.routers.claper.entrypoints=web" depends_on: - db - traefik traefik: image: traefik command: #- "--log.level=DEBUG" - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" ports: - "80:80" - "8080:8080"","ref":"deployment.html#behind-traefik","title":"Deployment - Behind Traefik","type":"extras"},{"doc":"Change the rel/env.sh.eex file to uncomment: export POD_A_RECORD=$(echo $POD_IP | sed 's/\\./-/g') export RELEASE_DISTRIBUTION=name export RELEASE_NODE=<%= @release.name %>@$(echo $POD_A_RECORD).$(echo $NAMESPACE).pod.cluster.local and comment as follows: #export RELEASE_DISTRIBUTION=sname #export RELEASE_NODE=<%= @release.name %> In Kubernetes, you have to use libcluster to make the nodes discoverable. You can use the following configuration in your config/prod.exs : config :libcluster , topologies : [ default : [ strategy : Cluster.Strategy.Kubernetes , config : [ mode : :dns , kubernetes_node_basename : "claper" , kubernetes_selector : "app=claper" , kubernetes_namespace : "default" , polling_interval : 10_000 ] ] ] Helm chart You can check the Claper Helm chart to deploy Claper on Kubernetes.","ref":"deployment.html#behind-kubernetes","title":"Deployment - Behind Kubernetes","type":"extras"},{"doc":"You can configure different storage options for your presentations. By default, Claper uses the local storage. Each presentation has a unique hash that is generated in two steps, first with :erlang.phash2("\#{code}-\#{name}") and then :erlang.phash2("\#{hash}-\#{System.system_time(:second)}") .","ref":"storage.html","title":"Presentation storage","type":"extras"},{"doc":"The local storage is the default storage option. It stores the presentations in the priv/static/uploads/[hash] folder.","ref":"storage.html#local-storage","title":"Presentation storage - Local storage","type":"extras"},{"doc":"You can use S3 storage to store your presentations. When user upload a new presentation, the destination file is uploaded to S3 in your bucket in presentations/[hash] and the local file is deleted.","ref":"storage.html#s3-storage","title":"Presentation storage - S3 storage","type":"extras"},{"doc":"The main goal of Claper is to provide a simple and easy to use integrate feedback during your presentations. We don't want to add a lot of features but instead focusing on the core features that are needed to provide a good feedback experience.","ref":"features.html","title":"Features","type":"extras"},{"doc":"Users can send instant message during the presentation and interact to others messages with emoji reactions. You can choose to be anoynmous or use your own name before sending a message.","ref":"features.html#questions-and-answers","title":"Features - Questions and Answers","type":"extras"},{"doc":"You can add polls during your presentation. Users can vote to the poll and see the results in real time. When you create a new presentation, click on Present/Customize , select the slide where you want to add poll and click Add interaction . During your presentation, enable Active poll results on the dashboard to see the poll results in real time. You can choose between single choice and multiple choice polls.","ref":"features.html#polls","title":"Features - Polls","type":"extras"},{"doc":"You can also add forms during your presentation. Users can fill the form and you can see all submissions in real time. When you create a new presentation, click on Present/Customize , select the slide where you want to add form and click Add interaction . After your presentation, you can export all the submissions in CSV format.","ref":"features.html#forms","title":"Features - Forms","type":"extras"},{"doc":"You can moderate the messages during your presentation. You can delete messages or ban users from the dashboard. Banning the user will prevent him to send messages during the presentation and is based on a token that is stored in the browser. If the user clear his cookies, he will be able to send messages again. Control your presentation You have several settings to control your presentation like avoiding anonymous chat messages, disabling the chat, showing poll results on the screen or instructions to join your Clapper event.","ref":"features.html#moderation-tools","title":"Features - Moderation tools","type":"extras"},{"doc":"You can add users as facilitators to your presentation. Facilitators can moderate the messages from the dashboard but cannot deleted or edit your presentation.","ref":"features.html#facilitators","title":"Features - Facilitators","type":"extras"},{"doc":"When the presentation is over, you can access to the report with all the messages and reactions and other statistics about the presentation engagement.","ref":"features.html#reports","title":"Features - Reports","type":"extras"},{"doc":"","ref":"howto.html","title":"How-to","type":"extras"},{"doc":"The first thing you need to have is your Powerpoint or Keynote presentation . Do you plan to add a poll or ask questions? Plan slides that will include interactions, for example for a poll, a slide with the title of your poll. Each interaction will be linked to a slide in your presentation. When everything is ready, you must save/export your presentation in PDF or PPT/PPTX format . It is recommended to use PDF format, which will guarantee you a final rendering identical to the original. You now have your exported presentation and ready to be imported into Claper.","ref":"howto.html#preparations","title":"How-to - Preparations","type":"extras"},{"doc":"Log in to your Claper account and create a new presentation. Upload your file then choose a name for your event, a code that will allow your attendees to join the event and a start and end date. Your attendees will not be able to join the event before the start date and will not be able to join it after the end date. Note that at the end of your presentation, you will have access to your statistical report in order to know the engagement rate and other useful metrics. Before saving, you can add facilitators with their email. They will only be able to moderate your presentation and project it. Your presentation will appear in their dashboard after they log in. The first step is finished , wait a few minutes for your file to be processed. It's time to add interactions! You can add interactions during your presentation or prepare them ahead of time. Click on Present/Customize , you will find all the slides of your presentation. Below each slide, you can add interactions that will be available when the slide is active. In the right side you will have access to all posts, which is useful for moderators who can moderate posts by deleting them or banning disruptive attendees. At the bottom right you will be able to view the instructions with the QR to join your meeting, it's best to activate it at the beginning of the presentation before you start talking . You also have the option to display messages from your attendees and the result of the current poll.","ref":"howto.html#using-claper","title":"How-to - Using Claper","type":"extras"},{"doc":"You are finally ready to start! That's what the Start button in the top right corner is for. This will open a new window that will be used during your presentation. To go into full screen mode, press the F key. To control your presentation, use the moderation screen, you can also control your presentation on your phone if you are logged in with your account. You are finally ready to interact effectively with your audience!","ref":"howto.html#presenting","title":"How-to - Presenting","type":"extras"}]
\ No newline at end of file
diff --git a/dist/sidebar_items-3229396A.js b/dist/sidebar_items-F19A6797.js
similarity index 89%
rename from dist/sidebar_items-3229396A.js
rename to dist/sidebar_items-F19A6797.js
index 0555030..56b2f56 100644
--- a/dist/sidebar_items-3229396A.js
+++ b/dist/sidebar_items-F19A6797.js
@@ -1 +1 @@
-sidebarNodes={"extras":[{"group":"","headers":[{"anchor":"modules","id":"Modules"}],"id":"api-reference","title":"API Reference"},{"group":"Introduction","headers":[],"id":"overview","title":"Overview"},{"group":"Introduction","headers":[{"anchor":"environment-file","id":"Environment file"},{"anchor":"production-docker","id":"Production / Docker"}],"id":"configuration","title":"Configuration"},{"group":"Introduction","headers":[{"anchor":"prerequisites","id":"Prerequisites"},{"anchor":"using-docker-compose","id":"Using Docker Compose"}],"id":"installation","title":"Local installation"},{"group":"Introduction","headers":[{"anchor":"prerequisites","id":"Prerequisites"},{"anchor":"steps-without-docker","id":"Steps (without docker)"},{"anchor":"steps-with-docker","id":"Steps (with docker)"},{"anchor":"behind-nginx","id":"Behind Nginx"},{"anchor":"behind-traefik","id":"Behind Traefik"},{"anchor":"behind-kubernetes","id":"Behind Kubernetes"}],"id":"deployment","title":"Deployment"},{"group":"Introduction","headers":[{"anchor":"local-storage","id":"Local storage"},{"anchor":"s3-storage","id":"S3 storage"}],"id":"storage","title":"Presentation storage"},{"group":"Usage","headers":[{"anchor":"questions-and-answers","id":"Questions and Answers"},{"anchor":"polls","id":"Polls"},{"anchor":"forms","id":"Forms"},{"anchor":"moderation-tools","id":"Moderation tools"},{"anchor":"facilitators","id":"Facilitators"},{"anchor":"reports","id":"Reports"}],"id":"features","title":"Features"},{"group":"Usage","headers":[{"anchor":"preparations","id":"Preparations"},{"anchor":"using-claper","id":"Using Claper"},{"anchor":"presenting","id":"Presenting"}],"id":"howto","title":"How-to"}],"modules":[{"group":"","id":"Claper","sections":[],"title":"Claper"},{"group":"","id":"Claper.Forms","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"add_form_field/1","id":"add_form_field/1","title":"add_form_field(changeset)"},{"anchor":"change_form/2","id":"change_form/2","title":"change_form(form, attrs \\\\ %{})"},{"anchor":"change_form_submit/2","id":"change_form_submit/2","title":"change_form_submit(form_submit, attrs \\\\ %{})"},{"anchor":"create_form/1","id":"create_form/1","title":"create_form(attrs \\\\ %{})"},{"anchor":"create_form_submit/1","id":"create_form_submit/1","title":"create_form_submit(attrs \\\\ %{})"},{"anchor":"create_or_update_form_submit/2","id":"create_or_update_form_submit/2","title":"create_or_update_form_submit(event_uuid, attrs)"},{"anchor":"create_or_update_form_submit/3","id":"create_or_update_form_submit/3","title":"create_or_update_form_submit(fs, event_uuid, attrs)"},{"anchor":"delete_form/2","id":"delete_form/2","title":"delete_form(event_uuid, form)"},{"anchor":"delete_form_submit/2","id":"delete_form_submit/2","title":"delete_form_submit(event_uuid, fs)"},{"anchor":"disable_all/2","id":"disable_all/2","title":"disable_all(presentation_file_id, position)"},{"anchor":"get_form!/2","id":"get_form!/2","title":"get_form!(id, preload \\\\ [])"},{"anchor":"get_form_current_position/2","id":"get_form_current_position/2","title":"get_form_current_position(presentation_file_id, position)"},{"anchor":"get_form_submit/2","id":"get_form_submit/2","title":"get_form_submit(user_id, form_id)"},{"anchor":"get_form_submit_by_id!/2","id":"get_form_submit_by_id!/2","title":"get_form_submit_by_id!(id, preload \\\\ [])"},{"anchor":"list_form_submits/1","id":"list_form_submits/1","title":"list_form_submits(presentation_file_id)"},{"anchor":"list_forms/1","id":"list_forms/1","title":"list_forms(presentation_file_id)"},{"anchor":"list_forms_at_position/2","id":"list_forms_at_position/2","title":"list_forms_at_position(presentation_file_id, position)"},{"anchor":"remove_form_field/2","id":"remove_form_field/2","title":"remove_form_field(changeset, field)"},{"anchor":"set_default/3","id":"set_default/3","title":"set_default(id, presentation_file_id, position)"},{"anchor":"update_form/3","id":"update_form/3","title":"update_form(event_uuid, form, attrs)"}]}],"sections":[],"title":"Claper.Forms"},{"group":"","id":"Claper.Forms.Field","sections":[],"title":"Claper.Forms.Field"},{"group":"","id":"Claper.Forms.Form","sections":[],"title":"Claper.Forms.Form"},{"group":"","id":"Claper.Forms.FormSubmit","sections":[],"title":"Claper.Forms.FormSubmit"},{"group":"","id":"Claper.Mailer","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"deliver/2","id":"deliver/2","title":"deliver(email, config \\\\ [])"},{"anchor":"deliver!/2","id":"deliver!/2","title":"deliver!(email, config \\\\ [])"},{"anchor":"deliver_many/2","id":"deliver_many/2","title":"deliver_many(emails, config \\\\ [])"}]}],"sections":[],"title":"Claper.Mailer"},{"group":"","id":"Claper.Presentations","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"create_presentation_file/1","id":"create_presentation_file/1","title":"create_presentation_file(attrs \\\\ %{})"},{"anchor":"create_presentation_state/1","id":"create_presentation_state/1","title":"create_presentation_state(attrs \\\\ %{})"},{"anchor":"get_presentation_file!/2","id":"get_presentation_file!/2","title":"get_presentation_file!(id, preload \\\\ [])"},{"anchor":"get_presentation_file_by_hash!/1","id":"get_presentation_file_by_hash!/1","title":"get_presentation_file_by_hash!(hash)"},{"anchor":"subscribe/1","id":"subscribe/1","title":"subscribe(presentation_file_id)"},{"anchor":"update_presentation_file/2","id":"update_presentation_file/2","title":"update_presentation_file(presentation_file, attrs)"},{"anchor":"update_presentation_state/2","id":"update_presentation_state/2","title":"update_presentation_state(presentation_state, attrs)"}]}],"sections":[],"title":"Claper.Presentations"},{"group":"","id":"Claper.Presentations.PresentationFile","sections":[],"title":"Claper.Presentations.PresentationFile"},{"group":"","id":"Claper.Presentations.PresentationState","sections":[],"title":"Claper.Presentations.PresentationState"},{"group":"","id":"Claper.Release","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"migrate/0","id":"migrate/0","title":"migrate()"},{"anchor":"rollback/2","id":"rollback/2","title":"rollback(repo, version)"}]}],"sections":[],"title":"Claper.Release"},{"group":"","id":"Claper.Repo","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"aggregate/3","id":"aggregate/3","title":"aggregate(queryable, aggregate, opts \\\\ [])"},{"anchor":"aggregate/4","id":"aggregate/4","title":"aggregate(queryable, aggregate, field, opts)"},{"anchor":"all/2","id":"all/2","title":"all(queryable, opts \\\\ [])"},{"anchor":"checked_out?/0","id":"checked_out?/0","title":"checked_out?()"},{"anchor":"checkout/2","id":"checkout/2","title":"checkout(fun, opts \\\\ [])"},{"anchor":"child_spec/1","id":"child_spec/1","title":"child_spec(opts)"},{"anchor":"config/0","id":"config/0","title":"config()"},{"anchor":"default_options/1","id":"default_options/1","title":"default_options(operation)"},{"anchor":"delete/2","id":"delete/2","title":"delete(struct, opts \\\\ [])"},{"anchor":"delete!/2","id":"delete!/2","title":"delete!(struct, opts \\\\ [])"},{"anchor":"delete_all/2","id":"delete_all/2","title":"delete_all(queryable, opts \\\\ [])"},{"anchor":"disconnect_all/2","id":"disconnect_all/2","title":"disconnect_all(interval, opts \\\\ [])"},{"anchor":"exists?/2","id":"exists?/2","title":"exists?(queryable, opts \\\\ [])"},{"anchor":"explain/3","id":"explain/3","title":"explain(operation, queryable, opts \\\\ [])"},{"anchor":"get/3","id":"get/3","title":"get(queryable, id, opts \\\\ [])"},{"anchor":"get!/3","id":"get!/3","title":"get!(queryable, id, opts \\\\ [])"},{"anchor":"get_by/3","id":"get_by/3","title":"get_by(queryable, clauses, opts \\\\ [])"},{"anchor":"get_by!/3","id":"get_by!/3","title":"get_by!(queryable, clauses, opts \\\\ [])"},{"anchor":"get_dynamic_repo/0","id":"get_dynamic_repo/0","title":"get_dynamic_repo()"},{"anchor":"in_transaction?/0","id":"in_transaction?/0","title":"in_transaction?()"},{"anchor":"init/2","id":"init/2","title":"init(type, config)"},{"anchor":"insert/2","id":"insert/2","title":"insert(struct, opts \\\\ [])"},{"anchor":"insert!/2","id":"insert!/2","title":"insert!(struct, opts \\\\ [])"},{"anchor":"insert_all/3","id":"insert_all/3","title":"insert_all(schema_or_source, entries, opts \\\\ [])"},{"anchor":"insert_or_update/2","id":"insert_or_update/2","title":"insert_or_update(changeset, opts \\\\ [])"},{"anchor":"insert_or_update!/2","id":"insert_or_update!/2","title":"insert_or_update!(changeset, opts \\\\ [])"},{"anchor":"load/2","id":"load/2","title":"load(schema_or_types, data)"},{"anchor":"one/2","id":"one/2","title":"one(queryable, opts \\\\ [])"},{"anchor":"one!/2","id":"one!/2","title":"one!(queryable, opts \\\\ [])"},{"anchor":"preload/3","id":"preload/3","title":"preload(struct_or_structs_or_nil, preloads, opts \\\\ [])"},{"anchor":"prepare_query/3","id":"prepare_query/3","title":"prepare_query(operation, query, opts)"},{"anchor":"put_dynamic_repo/1","id":"put_dynamic_repo/1","title":"put_dynamic_repo(dynamic)"},{"anchor":"query/3","id":"query/3","title":"query(sql, params \\\\ [], opts \\\\ [])"},{"anchor":"query!/3","id":"query!/3","title":"query!(sql, params \\\\ [], opts \\\\ [])"},{"anchor":"query_many/3","id":"query_many/3","title":"query_many(sql, params \\\\ [], opts \\\\ [])"},{"anchor":"query_many!/3","id":"query_many!/3","title":"query_many!(sql, params \\\\ [], opts \\\\ [])"},{"anchor":"reload/2","id":"reload/2","title":"reload(queryable, opts \\\\ [])"},{"anchor":"reload!/2","id":"reload!/2","title":"reload!(queryable, opts \\\\ [])"},{"anchor":"rollback/1","id":"rollback/1","title":"rollback(value)"},{"anchor":"start_link/1","id":"start_link/1","title":"start_link(opts \\\\ [])"},{"anchor":"stop/1","id":"stop/1","title":"stop(timeout \\\\ 5000)"},{"anchor":"stream/2","id":"stream/2","title":"stream(queryable, opts \\\\ [])"},{"anchor":"to_sql/2","id":"to_sql/2","title":"to_sql(operation, queryable)"},{"anchor":"transaction/2","id":"transaction/2","title":"transaction(fun_or_multi, opts \\\\ [])"},{"anchor":"update/2","id":"update/2","title":"update(struct, opts \\\\ [])"},{"anchor":"update!/2","id":"update!/2","title":"update!(struct, opts \\\\ [])"},{"anchor":"update_all/3","id":"update_all/3","title":"update_all(queryable, updates, opts \\\\ [])"}]}],"sections":[],"title":"Claper.Repo"},{"group":"","id":"Claper.Schema","sections":[],"title":"Claper.Schema"},{"group":"","id":"Claper.Stats","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"distinct_poster_count/1","id":"distinct_poster_count/1","title":"distinct_poster_count(event_id)"},{"anchor":"total_vote_count/1","id":"total_vote_count/1","title":"total_vote_count(presentation_file_id)"}]}],"sections":[],"title":"Claper.Stats"},{"group":"","id":"Claper.Tasks.Converter","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"clear/1","id":"clear/1","title":"clear(hash)"},{"anchor":"convert/5","id":"convert/5","title":"convert(user_id, file, hash, ext, presentation_file_id)"}]}],"sections":[],"title":"Claper.Tasks.Converter"},{"group":"","id":"ClaperWeb","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__using__/1","id":"__using__/1","title":"__using__(which)"},{"anchor":"channel/0","id":"channel/0","title":"channel()"},{"anchor":"controller/0","id":"controller/0","title":"controller()"},{"anchor":"live_component/0","id":"live_component/0","title":"live_component()"},{"anchor":"live_view/0","id":"live_view/0","title":"live_view()"},{"anchor":"router/0","id":"router/0","title":"router()"},{"anchor":"view/0","id":"view/0","title":"view()"},{"anchor":"view_component/0","id":"view_component/0","title":"view_component()"}]}],"sections":[],"title":"ClaperWeb"},{"group":"","id":"ClaperWeb.Component.Alert","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"error/1","id":"error/1","title":"error(assigns)"},{"anchor":"info/1","id":"info/1","title":"info(assigns)"}]}],"sections":[],"title":"ClaperWeb.Component.Alert"},{"group":"","id":"ClaperWeb.Component.Input","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"check/1","id":"check/1","title":"check(assigns)"},{"anchor":"checked/3","id":"checked/3","title":"checked(is_checked, key, js \\\\ %JS{})"},{"anchor":"code/1","id":"code/1","title":"code(assigns)"},{"anchor":"date/1","id":"date/1","title":"date(assigns)"},{"anchor":"date_range/1","id":"date_range/1","title":"date_range(assigns)"},{"anchor":"email/1","id":"email/1","title":"email(assigns)"},{"anchor":"password/1","id":"password/1","title":"password(assigns)"},{"anchor":"select/1","id":"select/1","title":"select(assigns)"},{"anchor":"text/1","id":"text/1","title":"text(assigns)"}]}],"sections":[],"title":"ClaperWeb.Component.Input"},{"group":"","id":"ClaperWeb.ComponentView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.ComponentView"},{"group":"","id":"ClaperWeb.Endpoint","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"broadcast/3","id":"broadcast/3","title":"broadcast(topic, event, msg)"},{"anchor":"broadcast!/3","id":"broadcast!/3","title":"broadcast!(topic, event, msg)"},{"anchor":"broadcast_from/4","id":"broadcast_from/4","title":"broadcast_from(from, topic, event, msg)"},{"anchor":"broadcast_from!/4","id":"broadcast_from!/4","title":"broadcast_from!(from, topic, event, msg)"},{"anchor":"call/2","id":"call/2","title":"call(conn, opts)"},{"anchor":"child_spec/1","id":"child_spec/1","title":"child_spec(opts)"},{"anchor":"config/2","id":"config/2","title":"config(key, default \\\\ nil)"},{"anchor":"config_change/2","id":"config_change/2","title":"config_change(changed, removed)"},{"anchor":"host/0","id":"host/0","title":"host()"},{"anchor":"init/1","id":"init/1","title":"init(opts)"},{"anchor":"local_broadcast/3","id":"local_broadcast/3","title":"local_broadcast(topic, event, msg)"},{"anchor":"local_broadcast_from/4","id":"local_broadcast_from/4","title":"local_broadcast_from(from, topic, event, msg)"},{"anchor":"path/1","id":"path/1","title":"path(path)"},{"anchor":"script_name/0","id":"script_name/0","title":"script_name()"},{"anchor":"start_link/1","id":"start_link/1","title":"start_link(opts \\\\ [])"},{"anchor":"static_integrity/1","id":"static_integrity/1","title":"static_integrity(path)"},{"anchor":"static_lookup/1","id":"static_lookup/1","title":"static_lookup(path)"},{"anchor":"static_path/1","id":"static_path/1","title":"static_path(path)"},{"anchor":"static_url/0","id":"static_url/0","title":"static_url()"},{"anchor":"struct_url/0","id":"struct_url/0","title":"struct_url()"},{"anchor":"subscribe/2","id":"subscribe/2","title":"subscribe(topic, opts \\\\ [])"},{"anchor":"unsubscribe/1","id":"unsubscribe/1","title":"unsubscribe(topic)"},{"anchor":"url/0","id":"url/0","title":"url()"}]}],"sections":[],"title":"ClaperWeb.Endpoint"},{"group":"","id":"ClaperWeb.ErrorHelpers","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"error_tag/2","id":"error_tag/2","title":"error_tag(form, field)"},{"anchor":"translate_error/1","id":"translate_error/1","title":"translate_error(arg)"}]}],"sections":[],"title":"ClaperWeb.ErrorHelpers"},{"group":"","id":"ClaperWeb.ErrorView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"404.html/1","id":"404.html/1","title":"404.html(arg)"},{"anchor":"500.html/1","id":"500.html/1","title":"500.html(arg)"},{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.ErrorView"},{"group":"","id":"ClaperWeb.FormLive.FormComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.FormLive.FormComponent"},{"group":"","id":"ClaperWeb.Gettext","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"dgettext/3","id":"dgettext/3","title":"dgettext(domain, msgid, bindings \\\\ Macro.escape(%{}))"},{"anchor":"dgettext_noop/2","id":"dgettext_noop/2","title":"dgettext_noop(domain, msgid)"},{"anchor":"dngettext/5","id":"dngettext/5","title":"dngettext(domain, msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))"},{"anchor":"dngettext_noop/3","id":"dngettext_noop/3","title":"dngettext_noop(domain, msgid, msgid_plural)"},{"anchor":"dpgettext/4","id":"dpgettext/4","title":"dpgettext(domain, msgctxt, msgid, bindings \\\\ Macro.escape(%{}))"},{"anchor":"dpgettext_noop/3","id":"dpgettext_noop/3","title":"dpgettext_noop(domain, msgctxt, msgid)"},{"anchor":"dpngettext/6","id":"dpngettext/6","title":"dpngettext(domain, msgctxt, msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))"},{"anchor":"dpngettext_noop/4","id":"dpngettext_noop/4","title":"dpngettext_noop(domain, msgctxt, msgid, msgid_plural)"},{"anchor":"gettext/2","id":"gettext/2","title":"gettext(msgid, bindings \\\\ Macro.escape(%{}))"},{"anchor":"gettext_comment/1","id":"gettext_comment/1","title":"gettext_comment(comment)"},{"anchor":"gettext_noop/1","id":"gettext_noop/1","title":"gettext_noop(msgid)"},{"anchor":"handle_missing_bindings/2","id":"handle_missing_bindings/2","title":"handle_missing_bindings(exception, incomplete)"},{"anchor":"handle_missing_plural_translation/7","id":"handle_missing_plural_translation/7","title":"handle_missing_plural_translation(locale, domain, msgctxt, msgid, msgid_plural, n, bindings)"},{"anchor":"handle_missing_translation/5","id":"handle_missing_translation/5","title":"handle_missing_translation(locale, domain, msgctxt, msgid, bindings)"},{"anchor":"lgettext/5","id":"lgettext/5","title":"lgettext(locale, domain, msgctxt \\\\ nil, msgid, bindings)"},{"anchor":"lngettext/7","id":"lngettext/7","title":"lngettext(locale, domain, msgctxt \\\\ nil, msgid, msgid_plural, n, bindings)"},{"anchor":"ngettext/4","id":"ngettext/4","title":"ngettext(msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))"},{"anchor":"ngettext_noop/2","id":"ngettext_noop/2","title":"ngettext_noop(msgid, msgid_plural)"},{"anchor":"pgettext/3","id":"pgettext/3","title":"pgettext(msgctxt, msgid, bindings \\\\ Macro.escape(%{}))"},{"anchor":"pgettext_noop/2","id":"pgettext_noop/2","title":"pgettext_noop(msgid, context)"},{"anchor":"pngettext/5","id":"pngettext/5","title":"pngettext(msgctxt, msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))"},{"anchor":"pngettext_noop/3","id":"pngettext_noop/3","title":"pngettext_noop(msgctxt, msgid, msgid_plural)"}]}],"sections":[],"title":"ClaperWeb.Gettext"},{"group":"","id":"ClaperWeb.LayoutView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"active_class/2","id":"active_class/2","title":"active_class(conn, path)"},{"anchor":"active_link/3","id":"active_link/3","title":"active_link(conn, text, opts)"},{"anchor":"active_live_class/2","id":"active_live_class/2","title":"active_live_class(conn, path)"},{"anchor":"app.html/1","id":"app.html/1","title":"app.html(arg)"},{"anchor":"email.html/1","id":"email.html/1","title":"email.html(arg)"},{"anchor":"live.html/1","id":"live.html/1","title":"live.html(arg)"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"root.html/1","id":"root.html/1","title":"root.html(arg)"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"},{"anchor":"user.html/1","id":"user.html/1","title":"user.html(arg)"}]}],"sections":[],"title":"ClaperWeb.LayoutView"},{"group":"","id":"ClaperWeb.LiveHelpers","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"live_modal/2","id":"live_modal/2","title":"live_modal(component, opts)"}]}],"sections":[],"title":"ClaperWeb.LiveHelpers"},{"group":"","id":"ClaperWeb.ModalComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"hide_modal/1","id":"hide_modal/1","title":"hide_modal(js \\\\ %JS{})"}]}],"sections":[],"title":"ClaperWeb.ModalComponent"},{"group":"","id":"ClaperWeb.Notifiers.UserNotifier","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"magic/2","id":"magic/2","title":"magic(email, url)"},{"anchor":"render_body/3","id":"render_body/3","title":"render_body(email, template, assigns \\\\ %{})"},{"anchor":"update_email/2","id":"update_email/2","title":"update_email(user, url)"},{"anchor":"welcome/1","id":"welcome/1","title":"welcome(email)"}]}],"sections":[],"title":"ClaperWeb.Notifiers.UserNotifier"},{"group":"","id":"ClaperWeb.PageController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"index/2","id":"index/2","title":"index(conn, params)"},{"anchor":"privacy/2","id":"privacy/2","title":"privacy(conn, params)"},{"anchor":"tos/2","id":"tos/2","title":"tos(conn, params)"}]}],"sections":[],"title":"ClaperWeb.PageController"},{"group":"","id":"ClaperWeb.PageView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"privacy.html/1","id":"privacy.html/1","title":"privacy.html(arg)"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"},{"anchor":"tos.html/1","id":"tos.html/1","title":"tos.html(arg)"}]}],"sections":[],"title":"ClaperWeb.PageView"},{"group":"","id":"ClaperWeb.Plugs.Locale","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"call/2","id":"call/2","title":"call(conn, opts)"},{"anchor":"extract_accept_language/1","id":"extract_accept_language/1","title":"extract_accept_language(conn)"},{"anchor":"init/1","id":"init/1","title":"init(opts)"}]}],"sections":[],"title":"ClaperWeb.Plugs.Locale"},{"group":"","id":"ClaperWeb.Presence","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"child_spec/1","id":"child_spec/1","title":"child_spec(opts)"},{"anchor":"fetch/2","id":"fetch/2","title":"fetch(topic, presences)"},{"anchor":"fetchers_pids/0","id":"fetchers_pids/0","title":"fetchers_pids()"},{"anchor":"get_by_key/2","id":"get_by_key/2","title":"get_by_key(topic, key)"},{"anchor":"list/1","id":"list/1","title":"list(topic)"},{"anchor":"track/3","id":"track/3","title":"track(socket, key, meta)"},{"anchor":"track/4","id":"track/4","title":"track(pid, topic, key, meta)"},{"anchor":"untrack/2","id":"untrack/2","title":"untrack(socket, key)"},{"anchor":"untrack/3","id":"untrack/3","title":"untrack(pid, topic, key)"},{"anchor":"update/3","id":"update/3","title":"update(socket, key, meta)"},{"anchor":"update/4","id":"update/4","title":"update(pid, topic, key, meta)"}]}],"sections":[],"title":"ClaperWeb.Presence"},{"group":"","id":"ClaperWeb.Router","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"api/2","id":"api/2","title":"api(conn, _)"},{"anchor":"attendee_registration/2","id":"attendee_registration/2","title":"attendee_registration(conn, _)"},{"anchor":"browser/2","id":"browser/2","title":"browser(conn, _)"},{"anchor":"call/2","id":"call/2","title":"call(conn, opts)"},{"anchor":"init/1","id":"init/1","title":"init(opts)"},{"anchor":"protect_with_basic_auth/2","id":"protect_with_basic_auth/2","title":"protect_with_basic_auth(conn, _)"}]}],"sections":[],"title":"ClaperWeb.Router"},{"group":"","id":"ClaperWeb.StatController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"export/2","id":"export/2","title":"export(conn, map)"}]}],"sections":[],"title":"ClaperWeb.StatController"},{"group":"","id":"ClaperWeb.StatLive.Index","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.StatLive.Index"},{"group":"","id":"ClaperWeb.Telemetry","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"child_spec/1","id":"child_spec/1","title":"child_spec(init_arg)"},{"anchor":"metrics/0","id":"metrics/0","title":"metrics()"},{"anchor":"start_link/1","id":"start_link/1","title":"start_link(arg)"}]}],"sections":[],"title":"ClaperWeb.Telemetry"},{"group":"","id":"ClaperWeb.UserNotifierView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"change.html/1","id":"change.html/1","title":"change.html(arg)"},{"anchor":"magic.html/1","id":"magic.html/1","title":"magic.html(arg)"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"},{"anchor":"welcome.html/1","id":"welcome.html/1","title":"welcome.html(arg)"}]}],"sections":[],"title":"ClaperWeb.UserNotifierView"},{"group":"","id":"SimpleS3Upload","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"sign_form_upload/3","id":"sign_form_upload/3","title":"sign_form_upload(config, bucket, opts)"}]}],"sections":[],"title":"SimpleS3Upload"},{"group":"","id":"Utils.FileUpload","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"upload/3","id":"upload/3","title":"upload(type, path, old_path)"}]}],"sections":[],"title":"Utils.FileUpload"},{"group":"User management","id":"Claper.Accounts","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"apply_user_email/2","id":"apply_user_email/2","title":"apply_user_email(user, attrs)"},{"anchor":"change_user_email/2","id":"change_user_email/2","title":"change_user_email(user, attrs \\\\ %{})"},{"anchor":"change_user_password/2","id":"change_user_password/2","title":"change_user_password(user, attrs \\\\ %{})"},{"anchor":"change_user_registration/2","id":"change_user_registration/2","title":"change_user_registration(user, attrs \\\\ %{})"},{"anchor":"confirm_magic/1","id":"confirm_magic/1","title":"confirm_magic(token)"},{"anchor":"confirm_user/1","id":"confirm_user/1","title":"confirm_user(token)"},{"anchor":"delete_session_token/1","id":"delete_session_token/1","title":"delete_session_token(token)"},{"anchor":"deliver_magic_link/2","id":"deliver_magic_link/2","title":"deliver_magic_link(email, magic_link_url_fun)"},{"anchor":"deliver_update_email_instructions/3","id":"deliver_update_email_instructions/3","title":"deliver_update_email_instructions(user, current_email, update_email_url_fun)"},{"anchor":"deliver_user_confirmation_instructions/2","id":"deliver_user_confirmation_instructions/2","title":"deliver_user_confirmation_instructions(user, confirmation_url_fun)"},{"anchor":"deliver_user_reset_password_instructions/2","id":"deliver_user_reset_password_instructions/2","title":"deliver_user_reset_password_instructions(user, reset_password_url_fun)"},{"anchor":"generate_user_session_token/1","id":"generate_user_session_token/1","title":"generate_user_session_token(user)"},{"anchor":"get_user!/1","id":"get_user!/1","title":"get_user!(id)"},{"anchor":"get_user_by_email/1","id":"get_user_by_email/1","title":"get_user_by_email(email)"},{"anchor":"get_user_by_email_and_password/2","id":"get_user_by_email_and_password/2","title":"get_user_by_email_and_password(email, password)"},{"anchor":"get_user_by_reset_password_token/1","id":"get_user_by_reset_password_token/1","title":"get_user_by_reset_password_token(token)"},{"anchor":"get_user_by_session_token/1","id":"get_user_by_session_token/1","title":"get_user_by_session_token(token)"},{"anchor":"magic_token_valid?/1","id":"magic_token_valid?/1","title":"magic_token_valid?(email)"},{"anchor":"register_user/1","id":"register_user/1","title":"register_user(attrs)"},{"anchor":"reset_user_password/2","id":"reset_user_password/2","title":"reset_user_password(user, attrs)"},{"anchor":"update_user_email/2","id":"update_user_email/2","title":"update_user_email(user, token)"},{"anchor":"update_user_password/2","id":"update_user_password/2","title":"update_user_password(user, attrs)"},{"anchor":"update_user_password/3","id":"update_user_password/3","title":"update_user_password(user, password, attrs)"}]}],"sections":[],"title":"Claper.Accounts"},{"group":"User management","id":"Claper.Accounts.User","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"confirm_changeset/1","id":"confirm_changeset/1","title":"confirm_changeset(user)"},{"anchor":"email_changeset/2","id":"email_changeset/2","title":"email_changeset(user, attrs)"},{"anchor":"password_changeset/3","id":"password_changeset/3","title":"password_changeset(user, attrs, opts \\\\ [])"},{"anchor":"registration_changeset/3","id":"registration_changeset/3","title":"registration_changeset(user, attrs, opts \\\\ [])"},{"anchor":"valid_password?/2","id":"valid_password?/2","title":"valid_password?(arg1, password)"},{"anchor":"validate_current_password/2","id":"validate_current_password/2","title":"validate_current_password(changeset, password)"}]}],"sections":[],"title":"Claper.Accounts.User"},{"group":"User management","id":"Claper.Accounts.UserNotifier","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"deliver_confirmation_instructions/2","id":"deliver_confirmation_instructions/2","title":"deliver_confirmation_instructions(user, url)"},{"anchor":"deliver_magic_link/2","id":"deliver_magic_link/2","title":"deliver_magic_link(email, url)"},{"anchor":"deliver_reset_password_instructions/2","id":"deliver_reset_password_instructions/2","title":"deliver_reset_password_instructions(user, url)"},{"anchor":"deliver_update_email_instructions/2","id":"deliver_update_email_instructions/2","title":"deliver_update_email_instructions(user, url)"},{"anchor":"deliver_welcome/1","id":"deliver_welcome/1","title":"deliver_welcome(email)"}]}],"sections":[],"title":"Claper.Accounts.UserNotifier"},{"group":"User management","id":"Claper.Accounts.UserToken","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"build_email_token/2","id":"build_email_token/2","title":"build_email_token(user, context)"},{"anchor":"build_magic_token/2","id":"build_magic_token/2","title":"build_magic_token(email, context)"},{"anchor":"build_session_token/1","id":"build_session_token/1","title":"build_session_token(user)"},{"anchor":"token_and_context_query/2","id":"token_and_context_query/2","title":"token_and_context_query(token, context)"},{"anchor":"user_and_contexts_query/2","id":"user_and_contexts_query/2","title":"user_and_contexts_query(user, contexts)"},{"anchor":"user_magic_and_contexts_expiry_query/1","id":"user_magic_and_contexts_expiry_query/1","title":"user_magic_and_contexts_expiry_query(email)"},{"anchor":"user_magic_and_contexts_query/2","id":"user_magic_and_contexts_query/2","title":"user_magic_and_contexts_query(email, contexts)"},{"anchor":"verify_change_email_token_query/2","id":"verify_change_email_token_query/2","title":"verify_change_email_token_query(token, context)"},{"anchor":"verify_email_token_query/2","id":"verify_email_token_query/2","title":"verify_email_token_query(token, context)"},{"anchor":"verify_magic_token_query/2","id":"verify_magic_token_query/2","title":"verify_magic_token_query(token, context)"},{"anchor":"verify_session_token_query/1","id":"verify_session_token_query/1","title":"verify_session_token_query(token)"}]}],"sections":[],"title":"Claper.Accounts.UserToken"},{"group":"User management","id":"ClaperWeb.AttendeeLiveAuth","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"on_mount/4","id":"on_mount/4","title":"on_mount(atom, params, session, socket)"}]}],"sections":[],"title":"ClaperWeb.AttendeeLiveAuth"},{"group":"User management","id":"ClaperWeb.AttendeeRegistrationView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.AttendeeRegistrationView"},{"group":"User management","id":"ClaperWeb.UserAuth","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"fetch_current_user/2","id":"fetch_current_user/2","title":"fetch_current_user(conn, opts)"},{"anchor":"log_in_user/3","id":"log_in_user/3","title":"log_in_user(conn, user, params \\\\ %{})"},{"anchor":"log_out_user/1","id":"log_out_user/1","title":"log_out_user(conn)"},{"anchor":"redirect_if_user_is_authenticated/2","id":"redirect_if_user_is_authenticated/2","title":"redirect_if_user_is_authenticated(conn, opts)"},{"anchor":"require_authenticated_user/2","id":"require_authenticated_user/2","title":"require_authenticated_user(conn, opts)"}]}],"sections":[],"title":"ClaperWeb.UserAuth"},{"group":"User management","id":"ClaperWeb.UserConfirmationController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"confirm_magic/2","id":"confirm_magic/2","title":"confirm_magic(conn, params)"},{"anchor":"create/2","id":"create/2","title":"create(conn, map)"},{"anchor":"new/2","id":"new/2","title":"new(conn, params)"},{"anchor":"update/2","id":"update/2","title":"update(conn, map)"}]}],"sections":[],"title":"ClaperWeb.UserConfirmationController"},{"group":"User management","id":"ClaperWeb.UserConfirmationView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"new.html/1","id":"new.html/1","title":"new.html(arg)"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.UserConfirmationView"},{"group":"User management","id":"ClaperWeb.UserLiveAuth","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"on_mount/4","id":"on_mount/4","title":"on_mount(atom, params, session, socket)"}]}],"sections":[],"title":"ClaperWeb.UserLiveAuth"},{"group":"User management","id":"ClaperWeb.UserRegistrationController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"confirm/2","id":"confirm/2","title":"confirm(conn, params)"},{"anchor":"create/2","id":"create/2","title":"create(conn, map)"},{"anchor":"new/2","id":"new/2","title":"new(conn, params)"}]}],"sections":[],"title":"ClaperWeb.UserRegistrationController"},{"group":"User management","id":"ClaperWeb.UserRegistrationView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"confirm.html/1","id":"confirm.html/1","title":"confirm.html(arg)"},{"anchor":"new.html/1","id":"new.html/1","title":"new.html(arg)"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.UserRegistrationView"},{"group":"User management","id":"ClaperWeb.UserResetPasswordController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"create/2","id":"create/2","title":"create(conn, map)"},{"anchor":"edit/2","id":"edit/2","title":"edit(conn, params)"},{"anchor":"new/2","id":"new/2","title":"new(conn, params)"}]}],"sections":[],"title":"ClaperWeb.UserResetPasswordController"},{"group":"User management","id":"ClaperWeb.UserResetPasswordView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.UserResetPasswordView"},{"group":"User management","id":"ClaperWeb.UserSessionController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"create/2","id":"create/2","title":"create(conn, map)"},{"anchor":"delete/2","id":"delete/2","title":"delete(conn, params)"},{"anchor":"new/2","id":"new/2","title":"new(conn, params)"}]}],"sections":[],"title":"ClaperWeb.UserSessionController"},{"group":"User management","id":"ClaperWeb.UserSessionView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"new.html/1","id":"new.html/1","title":"new.html(arg)"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.UserSessionView"},{"group":"User management","id":"ClaperWeb.UserSettingsController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"confirm_email/2","id":"confirm_email/2","title":"confirm_email(conn, map)"},{"anchor":"edit/2","id":"edit/2","title":"edit(conn, params)"},{"anchor":"update/2","id":"update/2","title":"update(conn, params)"}]}],"sections":[],"title":"ClaperWeb.UserSettingsController"},{"group":"User management","id":"ClaperWeb.UserSettingsLive.Show","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.UserSettingsLive.Show"},{"group":"User management","id":"ClaperWeb.UserSettingsView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.UserSettingsView"},{"group":"User management","id":"ClaperWeb.UserView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.UserView"},{"group":"Events","id":"Claper.Events","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"change_activity_leader/2","id":"change_activity_leader/2","title":"change_activity_leader(activity_leader, attrs \\\\ %{})"},{"anchor":"change_event/2","id":"change_event/2","title":"change_event(event, attrs \\\\ %{})"},{"anchor":"count_events_month/1","id":"count_events_month/1","title":"count_events_month(user_id)"},{"anchor":"create_event/1","id":"create_event/1","title":"create_event(attrs)"},{"anchor":"delete_event/1","id":"delete_event/1","title":"delete_event(event)"},{"anchor":"get_activity_leader!/1","id":"get_activity_leader!/1","title":"get_activity_leader!(id)"},{"anchor":"get_activity_leaders_for_event/1","id":"get_activity_leaders_for_event/1","title":"get_activity_leaders_for_event(event_id)"},{"anchor":"get_different_event_with_code/2","id":"get_different_event_with_code/2","title":"get_different_event_with_code(code, event_id)"},{"anchor":"get_event!/2","id":"get_event!/2","title":"get_event!(id, preload \\\\ [])"},{"anchor":"get_event_with_code/2","id":"get_event_with_code/2","title":"get_event_with_code(code, preload \\\\ [])"},{"anchor":"get_event_with_code!/2","id":"get_event_with_code!/2","title":"get_event_with_code!(code, preload \\\\ [])"},{"anchor":"get_managed_event!/3","id":"get_managed_event!/3","title":"get_managed_event!(current_user, id, preload \\\\ [])"},{"anchor":"get_user_event!/3","id":"get_user_event!/3","title":"get_user_event!(user_id, id, preload \\\\ [])"},{"anchor":"import/3","id":"import/3","title":"import(user_id, from_event_uuid, to_event_uuid)"},{"anchor":"is_leaded_by/2","id":"is_leaded_by/2","title":"is_leaded_by(email, event)"},{"anchor":"list_events/2","id":"list_events/2","title":"list_events(user_id, preload \\\\ [])"},{"anchor":"list_managed_events_by/2","id":"list_managed_events_by/2","title":"list_managed_events_by(email, preload \\\\ [])"},{"anchor":"update_event/2","id":"update_event/2","title":"update_event(event, attrs)"}]}],"sections":[],"title":"Claper.Events"},{"group":"Events","id":"Claper.Events.ActivityLeader","sections":[],"title":"Claper.Events.ActivityLeader"},{"group":"Events","id":"Claper.Events.Event","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"create_changeset/2","id":"create_changeset/2","title":"create_changeset(event, attrs)"},{"anchor":"downcase_code/1","id":"downcase_code/1","title":"downcase_code(changeset)"},{"anchor":"restart_changeset/1","id":"restart_changeset/1","title":"restart_changeset(event)"},{"anchor":"started?/1","id":"started?/1","title":"started?(event)"},{"anchor":"subscribe/1","id":"subscribe/1","title":"subscribe(event_id)"},{"anchor":"update_changeset/2","id":"update_changeset/2","title":"update_changeset(event, attrs)"}]}],"sections":[],"title":"Claper.Events.Event"},{"group":"Events","id":"ClaperWeb.EventController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"attendee_identifier/2","id":"attendee_identifier/2","title":"attendee_identifier(conn, opts)"},{"anchor":"slide_generate/2","id":"slide_generate/2","title":"slide_generate(conn, opts)"}]}],"sections":[],"title":"ClaperWeb.EventController"},{"group":"Events","id":"ClaperWeb.EventLive.EventCardComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(assigns)"}]}],"sections":[],"title":"ClaperWeb.EventLive.EventCardComponent"},{"group":"Events","id":"ClaperWeb.EventLive.EventFormComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"error_to_string/1","id":"error_to_string/1","title":"error_to_string(arg)"},{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.EventLive.EventFormComponent"},{"group":"Events","id":"ClaperWeb.EventLive.FormComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"toggle_form/1","id":"toggle_form/1","title":"toggle_form(js \\\\ %JS{})"}]}],"sections":[],"title":"ClaperWeb.EventLive.FormComponent"},{"group":"Events","id":"ClaperWeb.EventLive.Index","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.EventLive.Index"},{"group":"Events","id":"ClaperWeb.EventLive.Join","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.EventLive.Join"},{"group":"Events","id":"ClaperWeb.EventLive.Manage","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"},{"anchor":"toggle_add_modal/1","id":"toggle_add_modal/1","title":"toggle_add_modal(js \\\\ %JS{})"}]}],"sections":[],"title":"ClaperWeb.EventLive.Manage"},{"group":"Events","id":"ClaperWeb.EventLive.PollComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"toggle_poll/1","id":"toggle_poll/1","title":"toggle_poll(js \\\\ %JS{})"}]}],"sections":[],"title":"ClaperWeb.EventLive.PollComponent"},{"group":"Events","id":"ClaperWeb.EventLive.PostComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(assigns)"}]}],"sections":[],"title":"ClaperWeb.EventLive.PostComponent"},{"group":"Events","id":"ClaperWeb.EventLive.Presenter","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.EventLive.Presenter"},{"group":"Events","id":"ClaperWeb.EventLive.Show","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"},{"anchor":"toggle_side_menu/1","id":"toggle_side_menu/1","title":"toggle_side_menu(js \\\\ %JS{})"}]}],"sections":[],"title":"ClaperWeb.EventLive.Show"},{"group":"Events","id":"ClaperWeb.EventView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.EventView"},{"group":"Polls","id":"Claper.Polls","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"add_poll_opt/1","id":"add_poll_opt/1","title":"add_poll_opt(changeset)"},{"anchor":"change_poll/2","id":"change_poll/2","title":"change_poll(poll, attrs \\\\ %{})"},{"anchor":"create_poll/1","id":"create_poll/1","title":"create_poll(attrs \\\\ %{})"},{"anchor":"create_poll_vote/1","id":"create_poll_vote/1","title":"create_poll_vote(attrs \\\\ %{})"},{"anchor":"delete_poll/2","id":"delete_poll/2","title":"delete_poll(event_uuid, poll)"},{"anchor":"disable_all/2","id":"disable_all/2","title":"disable_all(presentation_file_id, position)"},{"anchor":"get_poll!/1","id":"get_poll!/1","title":"get_poll!(id)"},{"anchor":"get_poll_current_position/2","id":"get_poll_current_position/2","title":"get_poll_current_position(presentation_file_id, position)"},{"anchor":"get_poll_vote/2","id":"get_poll_vote/2","title":"get_poll_vote(user_id, poll_id)"},{"anchor":"list_polls/1","id":"list_polls/1","title":"list_polls(presentation_file_id)"},{"anchor":"list_polls_at_position/2","id":"list_polls_at_position/2","title":"list_polls_at_position(presentation_file_id, position)"},{"anchor":"remove_poll_opt/2","id":"remove_poll_opt/2","title":"remove_poll_opt(changeset, poll_opt)"},{"anchor":"set_default/3","id":"set_default/3","title":"set_default(id, presentation_file_id, position)"},{"anchor":"set_percentages/1","id":"set_percentages/1","title":"set_percentages(poll)"},{"anchor":"update_poll/3","id":"update_poll/3","title":"update_poll(event_uuid, poll, attrs)"},{"anchor":"vote/4","id":"vote/4","title":"vote(user_id, event_uuid, poll_opts, poll_id)"}]}],"sections":[],"title":"Claper.Polls"},{"group":"Polls","id":"Claper.Polls.Poll","sections":[],"title":"Claper.Polls.Poll"},{"group":"Polls","id":"Claper.Polls.PollOpt","sections":[],"title":"Claper.Polls.PollOpt"},{"group":"Polls","id":"Claper.Polls.PollVote","sections":[],"title":"Claper.Polls.PollVote"},{"group":"Polls","id":"ClaperWeb.PollLive.FormComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.PollLive.FormComponent"},{"group":"Posts","id":"Claper.Posts","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"create_post/2","id":"create_post/2","title":"create_post(event, attrs)"},{"anchor":"create_reaction/1","id":"create_reaction/1","title":"create_reaction(attrs)"},{"anchor":"delete_all_posts/3","id":"delete_all_posts/3","title":"delete_all_posts(atom, attendee_identifier, event)"},{"anchor":"delete_post/1","id":"delete_post/1","title":"delete_post(post)"},{"anchor":"delete_reaction/1","id":"delete_reaction/1","title":"delete_reaction(params)"},{"anchor":"get_post!/2","id":"get_post!/2","title":"get_post!(id, preload \\\\ [])"},{"anchor":"get_reaction!/1","id":"get_reaction!/1","title":"get_reaction!(id)"},{"anchor":"list_posts/2","id":"list_posts/2","title":"list_posts(event_id, preload \\\\ [])"},{"anchor":"reacted_posts/3","id":"reacted_posts/3","title":"reacted_posts(event_id, user_id, icon)"},{"anchor":"update_post/2","id":"update_post/2","title":"update_post(post, attrs)"}]}],"sections":[],"title":"Claper.Posts"},{"group":"Posts","id":"Claper.Posts.Post","sections":[],"title":"Claper.Posts.Post"},{"group":"Posts","id":"Claper.Posts.Reaction","sections":[],"title":"Claper.Posts.Reaction"},{"group":"Posts","id":"ClaperWeb.PostController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"create/2","id":"create/2","title":"create(conn, map)"},{"anchor":"index/2","id":"index/2","title":"index(conn, map)"}]}],"sections":[],"title":"ClaperWeb.PostController"},{"group":"Posts","id":"ClaperWeb.PostView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.PostView"}],"tasks":[]}
\ No newline at end of file
+sidebarNodes={"extras":[{"group":"","headers":[{"anchor":"modules","id":"Modules"}],"id":"api-reference","title":"API Reference"},{"group":"Introduction","headers":[],"id":"overview","title":"Overview"},{"group":"Introduction","headers":[{"anchor":"environment-file","id":"Environment file"},{"anchor":"production-docker","id":"Production / Docker"}],"id":"configuration","title":"Configuration"},{"group":"Introduction","headers":[{"anchor":"prerequisites","id":"Prerequisites"},{"anchor":"using-docker-compose","id":"Using Docker Compose"}],"id":"installation","title":"Local installation"},{"group":"Introduction","headers":[{"anchor":"prerequisites","id":"Prerequisites"},{"anchor":"steps-without-docker","id":"Steps (without docker)"},{"anchor":"steps-with-docker","id":"Steps (with docker)"},{"anchor":"behind-nginx","id":"Behind Nginx"},{"anchor":"behind-traefik","id":"Behind Traefik"},{"anchor":"behind-kubernetes","id":"Behind Kubernetes"}],"id":"deployment","title":"Deployment"},{"group":"Introduction","headers":[{"anchor":"local-storage","id":"Local storage"},{"anchor":"s3-storage","id":"S3 storage"}],"id":"storage","title":"Presentation storage"},{"group":"Usage","headers":[{"anchor":"questions-and-answers","id":"Questions and Answers"},{"anchor":"polls","id":"Polls"},{"anchor":"forms","id":"Forms"},{"anchor":"moderation-tools","id":"Moderation tools"},{"anchor":"facilitators","id":"Facilitators"},{"anchor":"reports","id":"Reports"}],"id":"features","title":"Features"},{"group":"Usage","headers":[{"anchor":"preparations","id":"Preparations"},{"anchor":"using-claper","id":"Using Claper"},{"anchor":"presenting","id":"Presenting"}],"id":"howto","title":"How-to"}],"modules":[{"group":"","id":"Claper","sections":[],"title":"Claper"},{"group":"","id":"Claper.Forms","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"add_form_field/1","id":"add_form_field/1","title":"add_form_field(changeset)"},{"anchor":"change_form/2","id":"change_form/2","title":"change_form(form, attrs \\\\ %{})"},{"anchor":"change_form_submit/2","id":"change_form_submit/2","title":"change_form_submit(form_submit, attrs \\\\ %{})"},{"anchor":"create_form/1","id":"create_form/1","title":"create_form(attrs \\\\ %{})"},{"anchor":"create_form_submit/1","id":"create_form_submit/1","title":"create_form_submit(attrs \\\\ %{})"},{"anchor":"create_or_update_form_submit/2","id":"create_or_update_form_submit/2","title":"create_or_update_form_submit(event_uuid, attrs)"},{"anchor":"create_or_update_form_submit/3","id":"create_or_update_form_submit/3","title":"create_or_update_form_submit(fs, event_uuid, attrs)"},{"anchor":"delete_form/2","id":"delete_form/2","title":"delete_form(event_uuid, form)"},{"anchor":"delete_form_submit/2","id":"delete_form_submit/2","title":"delete_form_submit(event_uuid, fs)"},{"anchor":"disable_all/2","id":"disable_all/2","title":"disable_all(presentation_file_id, position)"},{"anchor":"get_form!/2","id":"get_form!/2","title":"get_form!(id, preload \\\\ [])"},{"anchor":"get_form_current_position/2","id":"get_form_current_position/2","title":"get_form_current_position(presentation_file_id, position)"},{"anchor":"get_form_submit/2","id":"get_form_submit/2","title":"get_form_submit(user_id, form_id)"},{"anchor":"get_form_submit_by_id!/2","id":"get_form_submit_by_id!/2","title":"get_form_submit_by_id!(id, preload \\\\ [])"},{"anchor":"list_form_submits/1","id":"list_form_submits/1","title":"list_form_submits(presentation_file_id)"},{"anchor":"list_forms/1","id":"list_forms/1","title":"list_forms(presentation_file_id)"},{"anchor":"list_forms_at_position/2","id":"list_forms_at_position/2","title":"list_forms_at_position(presentation_file_id, position)"},{"anchor":"remove_form_field/2","id":"remove_form_field/2","title":"remove_form_field(changeset, field)"},{"anchor":"set_default/3","id":"set_default/3","title":"set_default(id, presentation_file_id, position)"},{"anchor":"update_form/3","id":"update_form/3","title":"update_form(event_uuid, form, attrs)"}]}],"sections":[],"title":"Claper.Forms"},{"group":"","id":"Claper.Forms.Field","sections":[],"title":"Claper.Forms.Field"},{"group":"","id":"Claper.Forms.Form","sections":[],"title":"Claper.Forms.Form"},{"group":"","id":"Claper.Forms.FormSubmit","sections":[],"title":"Claper.Forms.FormSubmit"},{"group":"","id":"Claper.Mailer","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"deliver/2","id":"deliver/2","title":"deliver(email, config \\\\ [])"},{"anchor":"deliver!/2","id":"deliver!/2","title":"deliver!(email, config \\\\ [])"},{"anchor":"deliver_many/2","id":"deliver_many/2","title":"deliver_many(emails, config \\\\ [])"}]}],"sections":[],"title":"Claper.Mailer"},{"group":"","id":"Claper.Presentations","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"create_presentation_file/1","id":"create_presentation_file/1","title":"create_presentation_file(attrs \\\\ %{})"},{"anchor":"create_presentation_state/1","id":"create_presentation_state/1","title":"create_presentation_state(attrs \\\\ %{})"},{"anchor":"get_presentation_file!/2","id":"get_presentation_file!/2","title":"get_presentation_file!(id, preload \\\\ [])"},{"anchor":"get_presentation_file_by_hash!/1","id":"get_presentation_file_by_hash!/1","title":"get_presentation_file_by_hash!(hash)"},{"anchor":"subscribe/1","id":"subscribe/1","title":"subscribe(presentation_file_id)"},{"anchor":"update_presentation_file/2","id":"update_presentation_file/2","title":"update_presentation_file(presentation_file, attrs)"},{"anchor":"update_presentation_state/2","id":"update_presentation_state/2","title":"update_presentation_state(presentation_state, attrs)"}]}],"sections":[],"title":"Claper.Presentations"},{"group":"","id":"Claper.Presentations.PresentationFile","sections":[],"title":"Claper.Presentations.PresentationFile"},{"group":"","id":"Claper.Presentations.PresentationState","sections":[],"title":"Claper.Presentations.PresentationState"},{"group":"","id":"Claper.Release","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"migrate/0","id":"migrate/0","title":"migrate()"},{"anchor":"rollback/2","id":"rollback/2","title":"rollback(repo, version)"}]}],"sections":[],"title":"Claper.Release"},{"group":"","id":"Claper.Repo","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"aggregate/3","id":"aggregate/3","title":"aggregate(queryable, aggregate, opts \\\\ [])"},{"anchor":"aggregate/4","id":"aggregate/4","title":"aggregate(queryable, aggregate, field, opts)"},{"anchor":"all/2","id":"all/2","title":"all(queryable, opts \\\\ [])"},{"anchor":"checked_out?/0","id":"checked_out?/0","title":"checked_out?()"},{"anchor":"checkout/2","id":"checkout/2","title":"checkout(fun, opts \\\\ [])"},{"anchor":"child_spec/1","id":"child_spec/1","title":"child_spec(opts)"},{"anchor":"config/0","id":"config/0","title":"config()"},{"anchor":"default_options/1","id":"default_options/1","title":"default_options(operation)"},{"anchor":"delete/2","id":"delete/2","title":"delete(struct, opts \\\\ [])"},{"anchor":"delete!/2","id":"delete!/2","title":"delete!(struct, opts \\\\ [])"},{"anchor":"delete_all/2","id":"delete_all/2","title":"delete_all(queryable, opts \\\\ [])"},{"anchor":"disconnect_all/2","id":"disconnect_all/2","title":"disconnect_all(interval, opts \\\\ [])"},{"anchor":"exists?/2","id":"exists?/2","title":"exists?(queryable, opts \\\\ [])"},{"anchor":"explain/3","id":"explain/3","title":"explain(operation, queryable, opts \\\\ [])"},{"anchor":"get/3","id":"get/3","title":"get(queryable, id, opts \\\\ [])"},{"anchor":"get!/3","id":"get!/3","title":"get!(queryable, id, opts \\\\ [])"},{"anchor":"get_by/3","id":"get_by/3","title":"get_by(queryable, clauses, opts \\\\ [])"},{"anchor":"get_by!/3","id":"get_by!/3","title":"get_by!(queryable, clauses, opts \\\\ [])"},{"anchor":"get_dynamic_repo/0","id":"get_dynamic_repo/0","title":"get_dynamic_repo()"},{"anchor":"in_transaction?/0","id":"in_transaction?/0","title":"in_transaction?()"},{"anchor":"init/2","id":"init/2","title":"init(type, config)"},{"anchor":"insert/2","id":"insert/2","title":"insert(struct, opts \\\\ [])"},{"anchor":"insert!/2","id":"insert!/2","title":"insert!(struct, opts \\\\ [])"},{"anchor":"insert_all/3","id":"insert_all/3","title":"insert_all(schema_or_source, entries, opts \\\\ [])"},{"anchor":"insert_or_update/2","id":"insert_or_update/2","title":"insert_or_update(changeset, opts \\\\ [])"},{"anchor":"insert_or_update!/2","id":"insert_or_update!/2","title":"insert_or_update!(changeset, opts \\\\ [])"},{"anchor":"load/2","id":"load/2","title":"load(schema_or_types, data)"},{"anchor":"one/2","id":"one/2","title":"one(queryable, opts \\\\ [])"},{"anchor":"one!/2","id":"one!/2","title":"one!(queryable, opts \\\\ [])"},{"anchor":"preload/3","id":"preload/3","title":"preload(struct_or_structs_or_nil, preloads, opts \\\\ [])"},{"anchor":"prepare_query/3","id":"prepare_query/3","title":"prepare_query(operation, query, opts)"},{"anchor":"put_dynamic_repo/1","id":"put_dynamic_repo/1","title":"put_dynamic_repo(dynamic)"},{"anchor":"query/3","id":"query/3","title":"query(sql, params \\\\ [], opts \\\\ [])"},{"anchor":"query!/3","id":"query!/3","title":"query!(sql, params \\\\ [], opts \\\\ [])"},{"anchor":"query_many/3","id":"query_many/3","title":"query_many(sql, params \\\\ [], opts \\\\ [])"},{"anchor":"query_many!/3","id":"query_many!/3","title":"query_many!(sql, params \\\\ [], opts \\\\ [])"},{"anchor":"reload/2","id":"reload/2","title":"reload(queryable, opts \\\\ [])"},{"anchor":"reload!/2","id":"reload!/2","title":"reload!(queryable, opts \\\\ [])"},{"anchor":"rollback/1","id":"rollback/1","title":"rollback(value)"},{"anchor":"start_link/1","id":"start_link/1","title":"start_link(opts \\\\ [])"},{"anchor":"stop/1","id":"stop/1","title":"stop(timeout \\\\ 5000)"},{"anchor":"stream/2","id":"stream/2","title":"stream(queryable, opts \\\\ [])"},{"anchor":"to_sql/2","id":"to_sql/2","title":"to_sql(operation, queryable)"},{"anchor":"transaction/2","id":"transaction/2","title":"transaction(fun_or_multi, opts \\\\ [])"},{"anchor":"update/2","id":"update/2","title":"update(struct, opts \\\\ [])"},{"anchor":"update!/2","id":"update!/2","title":"update!(struct, opts \\\\ [])"},{"anchor":"update_all/3","id":"update_all/3","title":"update_all(queryable, updates, opts \\\\ [])"}]}],"sections":[],"title":"Claper.Repo"},{"group":"","id":"Claper.Schema","sections":[],"title":"Claper.Schema"},{"group":"","id":"Claper.Stats","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"distinct_poster_count/1","id":"distinct_poster_count/1","title":"distinct_poster_count(event_id)"},{"anchor":"total_vote_count/1","id":"total_vote_count/1","title":"total_vote_count(presentation_file_id)"}]}],"sections":[],"title":"Claper.Stats"},{"group":"","id":"Claper.Tasks.Converter","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"clear/1","id":"clear/1","title":"clear(hash)"},{"anchor":"convert/5","id":"convert/5","title":"convert(user_id, file, hash, ext, presentation_file_id)"}]}],"sections":[],"title":"Claper.Tasks.Converter"},{"group":"","id":"ClaperWeb","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__using__/1","id":"__using__/1","title":"__using__(which)"},{"anchor":"channel/0","id":"channel/0","title":"channel()"},{"anchor":"controller/0","id":"controller/0","title":"controller()"},{"anchor":"live_component/0","id":"live_component/0","title":"live_component()"},{"anchor":"live_view/0","id":"live_view/0","title":"live_view()"},{"anchor":"router/0","id":"router/0","title":"router()"},{"anchor":"view/0","id":"view/0","title":"view()"},{"anchor":"view_component/0","id":"view_component/0","title":"view_component()"}]}],"sections":[],"title":"ClaperWeb"},{"group":"","id":"ClaperWeb.Component.Alert","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"error/1","id":"error/1","title":"error(assigns)"},{"anchor":"info/1","id":"info/1","title":"info(assigns)"}]}],"sections":[],"title":"ClaperWeb.Component.Alert"},{"group":"","id":"ClaperWeb.Component.Input","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"check/1","id":"check/1","title":"check(assigns)"},{"anchor":"checked/3","id":"checked/3","title":"checked(is_checked, key, js \\\\ %JS{})"},{"anchor":"code/1","id":"code/1","title":"code(assigns)"},{"anchor":"date/1","id":"date/1","title":"date(assigns)"},{"anchor":"date_range/1","id":"date_range/1","title":"date_range(assigns)"},{"anchor":"email/1","id":"email/1","title":"email(assigns)"},{"anchor":"password/1","id":"password/1","title":"password(assigns)"},{"anchor":"select/1","id":"select/1","title":"select(assigns)"},{"anchor":"text/1","id":"text/1","title":"text(assigns)"}]}],"sections":[],"title":"ClaperWeb.Component.Input"},{"group":"","id":"ClaperWeb.ComponentView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.ComponentView"},{"group":"","id":"ClaperWeb.Endpoint","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"broadcast/3","id":"broadcast/3","title":"broadcast(topic, event, msg)"},{"anchor":"broadcast!/3","id":"broadcast!/3","title":"broadcast!(topic, event, msg)"},{"anchor":"broadcast_from/4","id":"broadcast_from/4","title":"broadcast_from(from, topic, event, msg)"},{"anchor":"broadcast_from!/4","id":"broadcast_from!/4","title":"broadcast_from!(from, topic, event, msg)"},{"anchor":"call/2","id":"call/2","title":"call(conn, opts)"},{"anchor":"child_spec/1","id":"child_spec/1","title":"child_spec(opts)"},{"anchor":"config/2","id":"config/2","title":"config(key, default \\\\ nil)"},{"anchor":"config_change/2","id":"config_change/2","title":"config_change(changed, removed)"},{"anchor":"host/0","id":"host/0","title":"host()"},{"anchor":"init/1","id":"init/1","title":"init(opts)"},{"anchor":"local_broadcast/3","id":"local_broadcast/3","title":"local_broadcast(topic, event, msg)"},{"anchor":"local_broadcast_from/4","id":"local_broadcast_from/4","title":"local_broadcast_from(from, topic, event, msg)"},{"anchor":"path/1","id":"path/1","title":"path(path)"},{"anchor":"script_name/0","id":"script_name/0","title":"script_name()"},{"anchor":"start_link/1","id":"start_link/1","title":"start_link(opts \\\\ [])"},{"anchor":"static_integrity/1","id":"static_integrity/1","title":"static_integrity(path)"},{"anchor":"static_lookup/1","id":"static_lookup/1","title":"static_lookup(path)"},{"anchor":"static_path/1","id":"static_path/1","title":"static_path(path)"},{"anchor":"static_url/0","id":"static_url/0","title":"static_url()"},{"anchor":"struct_url/0","id":"struct_url/0","title":"struct_url()"},{"anchor":"subscribe/2","id":"subscribe/2","title":"subscribe(topic, opts \\\\ [])"},{"anchor":"unsubscribe/1","id":"unsubscribe/1","title":"unsubscribe(topic)"},{"anchor":"url/0","id":"url/0","title":"url()"}]}],"sections":[],"title":"ClaperWeb.Endpoint"},{"group":"","id":"ClaperWeb.ErrorHelpers","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"error_tag/2","id":"error_tag/2","title":"error_tag(form, field)"},{"anchor":"translate_error/1","id":"translate_error/1","title":"translate_error(arg)"}]}],"sections":[],"title":"ClaperWeb.ErrorHelpers"},{"group":"","id":"ClaperWeb.ErrorView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"404.html/1","id":"404.html/1","title":"404.html(arg)"},{"anchor":"500.html/1","id":"500.html/1","title":"500.html(arg)"},{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.ErrorView"},{"group":"","id":"ClaperWeb.FormLive.FormComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.FormLive.FormComponent"},{"group":"","id":"ClaperWeb.Gettext","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"dgettext/3","id":"dgettext/3","title":"dgettext(domain, msgid, bindings \\\\ Macro.escape(%{}))"},{"anchor":"dgettext_noop/2","id":"dgettext_noop/2","title":"dgettext_noop(domain, msgid)"},{"anchor":"dngettext/5","id":"dngettext/5","title":"dngettext(domain, msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))"},{"anchor":"dngettext_noop/3","id":"dngettext_noop/3","title":"dngettext_noop(domain, msgid, msgid_plural)"},{"anchor":"dpgettext/4","id":"dpgettext/4","title":"dpgettext(domain, msgctxt, msgid, bindings \\\\ Macro.escape(%{}))"},{"anchor":"dpgettext_noop/3","id":"dpgettext_noop/3","title":"dpgettext_noop(domain, msgctxt, msgid)"},{"anchor":"dpngettext/6","id":"dpngettext/6","title":"dpngettext(domain, msgctxt, msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))"},{"anchor":"dpngettext_noop/4","id":"dpngettext_noop/4","title":"dpngettext_noop(domain, msgctxt, msgid, msgid_plural)"},{"anchor":"gettext/2","id":"gettext/2","title":"gettext(msgid, bindings \\\\ Macro.escape(%{}))"},{"anchor":"gettext_comment/1","id":"gettext_comment/1","title":"gettext_comment(comment)"},{"anchor":"gettext_noop/1","id":"gettext_noop/1","title":"gettext_noop(msgid)"},{"anchor":"handle_missing_bindings/2","id":"handle_missing_bindings/2","title":"handle_missing_bindings(exception, incomplete)"},{"anchor":"handle_missing_plural_translation/7","id":"handle_missing_plural_translation/7","title":"handle_missing_plural_translation(locale, domain, msgctxt, msgid, msgid_plural, n, bindings)"},{"anchor":"handle_missing_translation/5","id":"handle_missing_translation/5","title":"handle_missing_translation(locale, domain, msgctxt, msgid, bindings)"},{"anchor":"lgettext/5","id":"lgettext/5","title":"lgettext(locale, domain, msgctxt \\\\ nil, msgid, bindings)"},{"anchor":"lngettext/7","id":"lngettext/7","title":"lngettext(locale, domain, msgctxt \\\\ nil, msgid, msgid_plural, n, bindings)"},{"anchor":"ngettext/4","id":"ngettext/4","title":"ngettext(msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))"},{"anchor":"ngettext_noop/2","id":"ngettext_noop/2","title":"ngettext_noop(msgid, msgid_plural)"},{"anchor":"pgettext/3","id":"pgettext/3","title":"pgettext(msgctxt, msgid, bindings \\\\ Macro.escape(%{}))"},{"anchor":"pgettext_noop/2","id":"pgettext_noop/2","title":"pgettext_noop(msgid, context)"},{"anchor":"pngettext/5","id":"pngettext/5","title":"pngettext(msgctxt, msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))"},{"anchor":"pngettext_noop/3","id":"pngettext_noop/3","title":"pngettext_noop(msgctxt, msgid, msgid_plural)"}]}],"sections":[],"title":"ClaperWeb.Gettext"},{"group":"","id":"ClaperWeb.LayoutView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"active_class/2","id":"active_class/2","title":"active_class(conn, path)"},{"anchor":"active_link/3","id":"active_link/3","title":"active_link(conn, text, opts)"},{"anchor":"active_live_class/2","id":"active_live_class/2","title":"active_live_class(conn, path)"},{"anchor":"app.html/1","id":"app.html/1","title":"app.html(arg)"},{"anchor":"email.html/1","id":"email.html/1","title":"email.html(arg)"},{"anchor":"live.html/1","id":"live.html/1","title":"live.html(arg)"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"root.html/1","id":"root.html/1","title":"root.html(arg)"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"},{"anchor":"user.html/1","id":"user.html/1","title":"user.html(arg)"}]}],"sections":[],"title":"ClaperWeb.LayoutView"},{"group":"","id":"ClaperWeb.LiveHelpers","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"live_modal/2","id":"live_modal/2","title":"live_modal(component, opts)"}]}],"sections":[],"title":"ClaperWeb.LiveHelpers"},{"group":"","id":"ClaperWeb.ModalComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"hide_modal/1","id":"hide_modal/1","title":"hide_modal(js \\\\ %JS{})"}]}],"sections":[],"title":"ClaperWeb.ModalComponent"},{"group":"","id":"ClaperWeb.Notifiers.UserNotifier","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"magic/2","id":"magic/2","title":"magic(email, url)"},{"anchor":"render_body/3","id":"render_body/3","title":"render_body(email, template, assigns \\\\ %{})"},{"anchor":"update_email/2","id":"update_email/2","title":"update_email(user, url)"},{"anchor":"welcome/1","id":"welcome/1","title":"welcome(email)"}]}],"sections":[],"title":"ClaperWeb.Notifiers.UserNotifier"},{"group":"","id":"ClaperWeb.PageController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"index/2","id":"index/2","title":"index(conn, params)"},{"anchor":"privacy/2","id":"privacy/2","title":"privacy(conn, params)"},{"anchor":"tos/2","id":"tos/2","title":"tos(conn, params)"}]}],"sections":[],"title":"ClaperWeb.PageController"},{"group":"","id":"ClaperWeb.PageView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"privacy.html/1","id":"privacy.html/1","title":"privacy.html(arg)"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"},{"anchor":"tos.html/1","id":"tos.html/1","title":"tos.html(arg)"}]}],"sections":[],"title":"ClaperWeb.PageView"},{"group":"","id":"ClaperWeb.Plugs.Locale","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"call/2","id":"call/2","title":"call(conn, opts)"},{"anchor":"extract_accept_language/1","id":"extract_accept_language/1","title":"extract_accept_language(conn)"},{"anchor":"init/1","id":"init/1","title":"init(opts)"}]}],"sections":[],"title":"ClaperWeb.Plugs.Locale"},{"group":"","id":"ClaperWeb.Presence","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"child_spec/1","id":"child_spec/1","title":"child_spec(opts)"},{"anchor":"fetch/2","id":"fetch/2","title":"fetch(topic, presences)"},{"anchor":"fetchers_pids/0","id":"fetchers_pids/0","title":"fetchers_pids()"},{"anchor":"get_by_key/2","id":"get_by_key/2","title":"get_by_key(topic, key)"},{"anchor":"list/1","id":"list/1","title":"list(topic)"},{"anchor":"track/3","id":"track/3","title":"track(socket, key, meta)"},{"anchor":"track/4","id":"track/4","title":"track(pid, topic, key, meta)"},{"anchor":"untrack/2","id":"untrack/2","title":"untrack(socket, key)"},{"anchor":"untrack/3","id":"untrack/3","title":"untrack(pid, topic, key)"},{"anchor":"update/3","id":"update/3","title":"update(socket, key, meta)"},{"anchor":"update/4","id":"update/4","title":"update(pid, topic, key, meta)"}]}],"sections":[],"title":"ClaperWeb.Presence"},{"group":"","id":"ClaperWeb.Router","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"api/2","id":"api/2","title":"api(conn, _)"},{"anchor":"attendee_registration/2","id":"attendee_registration/2","title":"attendee_registration(conn, _)"},{"anchor":"browser/2","id":"browser/2","title":"browser(conn, _)"},{"anchor":"call/2","id":"call/2","title":"call(conn, opts)"},{"anchor":"init/1","id":"init/1","title":"init(opts)"},{"anchor":"protect_with_basic_auth/2","id":"protect_with_basic_auth/2","title":"protect_with_basic_auth(conn, _)"}]}],"sections":[],"title":"ClaperWeb.Router"},{"group":"","id":"ClaperWeb.StatController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"export/2","id":"export/2","title":"export(conn, map)"}]}],"sections":[],"title":"ClaperWeb.StatController"},{"group":"","id":"ClaperWeb.StatLive.Index","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.StatLive.Index"},{"group":"","id":"ClaperWeb.Telemetry","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"child_spec/1","id":"child_spec/1","title":"child_spec(init_arg)"},{"anchor":"metrics/0","id":"metrics/0","title":"metrics()"},{"anchor":"start_link/1","id":"start_link/1","title":"start_link(arg)"}]}],"sections":[],"title":"ClaperWeb.Telemetry"},{"group":"","id":"ClaperWeb.UserNotifierView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"change.html/1","id":"change.html/1","title":"change.html(arg)"},{"anchor":"magic.html/1","id":"magic.html/1","title":"magic.html(arg)"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"},{"anchor":"welcome.html/1","id":"welcome.html/1","title":"welcome.html(arg)"}]}],"sections":[],"title":"ClaperWeb.UserNotifierView"},{"group":"","id":"SimpleS3Upload","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"sign_form_upload/3","id":"sign_form_upload/3","title":"sign_form_upload(config, bucket, opts)"}]}],"sections":[],"title":"SimpleS3Upload"},{"group":"","id":"Utils.FileUpload","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"upload/3","id":"upload/3","title":"upload(type, path, old_path)"}]}],"sections":[],"title":"Utils.FileUpload"},{"group":"User management","id":"Claper.Accounts","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"apply_user_email/2","id":"apply_user_email/2","title":"apply_user_email(user, attrs)"},{"anchor":"change_user_email/2","id":"change_user_email/2","title":"change_user_email(user, attrs \\\\ %{})"},{"anchor":"change_user_password/2","id":"change_user_password/2","title":"change_user_password(user, attrs \\\\ %{})"},{"anchor":"change_user_registration/2","id":"change_user_registration/2","title":"change_user_registration(user, attrs \\\\ %{})"},{"anchor":"confirm_magic/1","id":"confirm_magic/1","title":"confirm_magic(token)"},{"anchor":"confirm_user/1","id":"confirm_user/1","title":"confirm_user(token)"},{"anchor":"delete_session_token/1","id":"delete_session_token/1","title":"delete_session_token(token)"},{"anchor":"deliver_magic_link/2","id":"deliver_magic_link/2","title":"deliver_magic_link(email, magic_link_url_fun)"},{"anchor":"deliver_update_email_instructions/3","id":"deliver_update_email_instructions/3","title":"deliver_update_email_instructions(user, current_email, update_email_url_fun)"},{"anchor":"deliver_user_confirmation_instructions/2","id":"deliver_user_confirmation_instructions/2","title":"deliver_user_confirmation_instructions(user, confirmation_url_fun)"},{"anchor":"deliver_user_reset_password_instructions/2","id":"deliver_user_reset_password_instructions/2","title":"deliver_user_reset_password_instructions(user, reset_password_url_fun)"},{"anchor":"generate_user_session_token/1","id":"generate_user_session_token/1","title":"generate_user_session_token(user)"},{"anchor":"get_user!/1","id":"get_user!/1","title":"get_user!(id)"},{"anchor":"get_user_by_email/1","id":"get_user_by_email/1","title":"get_user_by_email(email)"},{"anchor":"get_user_by_email_and_password/2","id":"get_user_by_email_and_password/2","title":"get_user_by_email_and_password(email, password)"},{"anchor":"get_user_by_reset_password_token/1","id":"get_user_by_reset_password_token/1","title":"get_user_by_reset_password_token(token)"},{"anchor":"get_user_by_session_token/1","id":"get_user_by_session_token/1","title":"get_user_by_session_token(token)"},{"anchor":"magic_token_valid?/1","id":"magic_token_valid?/1","title":"magic_token_valid?(email)"},{"anchor":"register_user/1","id":"register_user/1","title":"register_user(attrs)"},{"anchor":"reset_user_password/2","id":"reset_user_password/2","title":"reset_user_password(user, attrs)"},{"anchor":"update_user_email/2","id":"update_user_email/2","title":"update_user_email(user, token)"},{"anchor":"update_user_password/2","id":"update_user_password/2","title":"update_user_password(user, attrs)"},{"anchor":"update_user_password/3","id":"update_user_password/3","title":"update_user_password(user, password, attrs)"}]}],"sections":[],"title":"Claper.Accounts"},{"group":"User management","id":"Claper.Accounts.User","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"confirm_changeset/1","id":"confirm_changeset/1","title":"confirm_changeset(user)"},{"anchor":"email_changeset/2","id":"email_changeset/2","title":"email_changeset(user, attrs)"},{"anchor":"password_changeset/3","id":"password_changeset/3","title":"password_changeset(user, attrs, opts \\\\ [])"},{"anchor":"registration_changeset/3","id":"registration_changeset/3","title":"registration_changeset(user, attrs, opts \\\\ [])"},{"anchor":"valid_password?/2","id":"valid_password?/2","title":"valid_password?(arg1, password)"},{"anchor":"validate_current_password/2","id":"validate_current_password/2","title":"validate_current_password(changeset, password)"}]}],"sections":[],"title":"Claper.Accounts.User"},{"group":"User management","id":"Claper.Accounts.UserNotifier","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"deliver_confirmation_instructions/2","id":"deliver_confirmation_instructions/2","title":"deliver_confirmation_instructions(user, url)"},{"anchor":"deliver_magic_link/2","id":"deliver_magic_link/2","title":"deliver_magic_link(email, url)"},{"anchor":"deliver_reset_password_instructions/2","id":"deliver_reset_password_instructions/2","title":"deliver_reset_password_instructions(user, url)"},{"anchor":"deliver_update_email_instructions/2","id":"deliver_update_email_instructions/2","title":"deliver_update_email_instructions(user, url)"},{"anchor":"deliver_welcome/1","id":"deliver_welcome/1","title":"deliver_welcome(email)"}]}],"sections":[],"title":"Claper.Accounts.UserNotifier"},{"group":"User management","id":"Claper.Accounts.UserToken","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"build_email_token/2","id":"build_email_token/2","title":"build_email_token(user, context)"},{"anchor":"build_magic_token/2","id":"build_magic_token/2","title":"build_magic_token(email, context)"},{"anchor":"build_session_token/1","id":"build_session_token/1","title":"build_session_token(user)"},{"anchor":"token_and_context_query/2","id":"token_and_context_query/2","title":"token_and_context_query(token, context)"},{"anchor":"user_and_contexts_query/2","id":"user_and_contexts_query/2","title":"user_and_contexts_query(user, contexts)"},{"anchor":"user_magic_and_contexts_expiry_query/1","id":"user_magic_and_contexts_expiry_query/1","title":"user_magic_and_contexts_expiry_query(email)"},{"anchor":"user_magic_and_contexts_query/2","id":"user_magic_and_contexts_query/2","title":"user_magic_and_contexts_query(email, contexts)"},{"anchor":"verify_change_email_token_query/2","id":"verify_change_email_token_query/2","title":"verify_change_email_token_query(token, context)"},{"anchor":"verify_email_token_query/2","id":"verify_email_token_query/2","title":"verify_email_token_query(token, context)"},{"anchor":"verify_magic_token_query/2","id":"verify_magic_token_query/2","title":"verify_magic_token_query(token, context)"},{"anchor":"verify_session_token_query/1","id":"verify_session_token_query/1","title":"verify_session_token_query(token)"}]}],"sections":[],"title":"Claper.Accounts.UserToken"},{"group":"User management","id":"ClaperWeb.AttendeeLiveAuth","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"on_mount/4","id":"on_mount/4","title":"on_mount(atom, params, session, socket)"}]}],"sections":[],"title":"ClaperWeb.AttendeeLiveAuth"},{"group":"User management","id":"ClaperWeb.AttendeeRegistrationView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.AttendeeRegistrationView"},{"group":"User management","id":"ClaperWeb.UserAuth","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"fetch_current_user/2","id":"fetch_current_user/2","title":"fetch_current_user(conn, opts)"},{"anchor":"log_in_user/3","id":"log_in_user/3","title":"log_in_user(conn, user, params \\\\ %{})"},{"anchor":"log_out_user/1","id":"log_out_user/1","title":"log_out_user(conn)"},{"anchor":"redirect_if_user_is_authenticated/2","id":"redirect_if_user_is_authenticated/2","title":"redirect_if_user_is_authenticated(conn, opts)"},{"anchor":"require_authenticated_user/2","id":"require_authenticated_user/2","title":"require_authenticated_user(conn, opts)"}]}],"sections":[],"title":"ClaperWeb.UserAuth"},{"group":"User management","id":"ClaperWeb.UserConfirmationController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"confirm_magic/2","id":"confirm_magic/2","title":"confirm_magic(conn, params)"},{"anchor":"create/2","id":"create/2","title":"create(conn, map)"},{"anchor":"new/2","id":"new/2","title":"new(conn, params)"},{"anchor":"update/2","id":"update/2","title":"update(conn, map)"}]}],"sections":[],"title":"ClaperWeb.UserConfirmationController"},{"group":"User management","id":"ClaperWeb.UserConfirmationView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"new.html/1","id":"new.html/1","title":"new.html(arg)"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.UserConfirmationView"},{"group":"User management","id":"ClaperWeb.UserLiveAuth","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"on_mount/4","id":"on_mount/4","title":"on_mount(atom, params, session, socket)"}]}],"sections":[],"title":"ClaperWeb.UserLiveAuth"},{"group":"User management","id":"ClaperWeb.UserRegistrationController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"confirm/2","id":"confirm/2","title":"confirm(conn, params)"},{"anchor":"create/2","id":"create/2","title":"create(conn, map)"},{"anchor":"new/2","id":"new/2","title":"new(conn, params)"}]}],"sections":[],"title":"ClaperWeb.UserRegistrationController"},{"group":"User management","id":"ClaperWeb.UserRegistrationView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"confirm.html/1","id":"confirm.html/1","title":"confirm.html(arg)"},{"anchor":"new.html/1","id":"new.html/1","title":"new.html(arg)"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.UserRegistrationView"},{"group":"User management","id":"ClaperWeb.UserResetPasswordController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"create/2","id":"create/2","title":"create(conn, map)"},{"anchor":"edit/2","id":"edit/2","title":"edit(conn, params)"},{"anchor":"new/2","id":"new/2","title":"new(conn, params)"}]}],"sections":[],"title":"ClaperWeb.UserResetPasswordController"},{"group":"User management","id":"ClaperWeb.UserResetPasswordView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.UserResetPasswordView"},{"group":"User management","id":"ClaperWeb.UserSessionController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"create/2","id":"create/2","title":"create(conn, map)"},{"anchor":"delete/2","id":"delete/2","title":"delete(conn, params)"},{"anchor":"new/2","id":"new/2","title":"new(conn, params)"}]}],"sections":[],"title":"ClaperWeb.UserSessionController"},{"group":"User management","id":"ClaperWeb.UserSessionView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"new.html/1","id":"new.html/1","title":"new.html(arg)"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.UserSessionView"},{"group":"User management","id":"ClaperWeb.UserSettingsController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"confirm_email/2","id":"confirm_email/2","title":"confirm_email(conn, map)"},{"anchor":"edit/2","id":"edit/2","title":"edit(conn, params)"},{"anchor":"update/2","id":"update/2","title":"update(conn, params)"}]}],"sections":[],"title":"ClaperWeb.UserSettingsController"},{"group":"User management","id":"ClaperWeb.UserSettingsLive.Show","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.UserSettingsLive.Show"},{"group":"User management","id":"ClaperWeb.UserSettingsView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.UserSettingsView"},{"group":"User management","id":"ClaperWeb.UserView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.UserView"},{"group":"Events","id":"Claper.Events","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"change_activity_leader/2","id":"change_activity_leader/2","title":"change_activity_leader(activity_leader, attrs \\\\ %{})"},{"anchor":"change_event/2","id":"change_event/2","title":"change_event(event, attrs \\\\ %{})"},{"anchor":"count_events_month/1","id":"count_events_month/1","title":"count_events_month(user_id)"},{"anchor":"create_event/1","id":"create_event/1","title":"create_event(attrs)"},{"anchor":"delete_event/1","id":"delete_event/1","title":"delete_event(event)"},{"anchor":"get_activity_leader!/1","id":"get_activity_leader!/1","title":"get_activity_leader!(id)"},{"anchor":"get_activity_leaders_for_event/1","id":"get_activity_leaders_for_event/1","title":"get_activity_leaders_for_event(event_id)"},{"anchor":"get_different_event_with_code/2","id":"get_different_event_with_code/2","title":"get_different_event_with_code(code, event_id)"},{"anchor":"get_event!/2","id":"get_event!/2","title":"get_event!(id, preload \\\\ [])"},{"anchor":"get_event_with_code/2","id":"get_event_with_code/2","title":"get_event_with_code(code, preload \\\\ [])"},{"anchor":"get_event_with_code!/2","id":"get_event_with_code!/2","title":"get_event_with_code!(code, preload \\\\ [])"},{"anchor":"get_managed_event!/3","id":"get_managed_event!/3","title":"get_managed_event!(current_user, id, preload \\\\ [])"},{"anchor":"get_user_event!/3","id":"get_user_event!/3","title":"get_user_event!(user_id, id, preload \\\\ [])"},{"anchor":"import/3","id":"import/3","title":"import(user_id, from_event_uuid, to_event_uuid)"},{"anchor":"is_leaded_by/2","id":"is_leaded_by/2","title":"is_leaded_by(email, event)"},{"anchor":"list_events/2","id":"list_events/2","title":"list_events(user_id, preload \\\\ [])"},{"anchor":"list_managed_events_by/2","id":"list_managed_events_by/2","title":"list_managed_events_by(email, preload \\\\ [])"},{"anchor":"update_event/2","id":"update_event/2","title":"update_event(event, attrs)"}]}],"sections":[],"title":"Claper.Events"},{"group":"Events","id":"Claper.Events.ActivityLeader","sections":[],"title":"Claper.Events.ActivityLeader"},{"group":"Events","id":"Claper.Events.Event","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"create_changeset/2","id":"create_changeset/2","title":"create_changeset(event, attrs)"},{"anchor":"downcase_code/1","id":"downcase_code/1","title":"downcase_code(changeset)"},{"anchor":"restart_changeset/1","id":"restart_changeset/1","title":"restart_changeset(event)"},{"anchor":"started?/1","id":"started?/1","title":"started?(event)"},{"anchor":"subscribe/1","id":"subscribe/1","title":"subscribe(event_id)"},{"anchor":"update_changeset/2","id":"update_changeset/2","title":"update_changeset(event, attrs)"}]}],"sections":[],"title":"Claper.Events.Event"},{"group":"Events","id":"ClaperWeb.EventController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"attendee_identifier/2","id":"attendee_identifier/2","title":"attendee_identifier(conn, opts)"},{"anchor":"slide_generate/2","id":"slide_generate/2","title":"slide_generate(conn, opts)"}]}],"sections":[],"title":"ClaperWeb.EventController"},{"group":"Events","id":"ClaperWeb.EventLive.EventCardComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(assigns)"}]}],"sections":[],"title":"ClaperWeb.EventLive.EventCardComponent"},{"group":"Events","id":"ClaperWeb.EventLive.EventFormComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"error_to_string/1","id":"error_to_string/1","title":"error_to_string(arg)"},{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.EventLive.EventFormComponent"},{"group":"Events","id":"ClaperWeb.EventLive.FormComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"toggle_form/1","id":"toggle_form/1","title":"toggle_form(js \\\\ %JS{})"}]}],"sections":[],"title":"ClaperWeb.EventLive.FormComponent"},{"group":"Events","id":"ClaperWeb.EventLive.Index","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.EventLive.Index"},{"group":"Events","id":"ClaperWeb.EventLive.Join","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.EventLive.Join"},{"group":"Events","id":"ClaperWeb.EventLive.Manage","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"},{"anchor":"toggle_add_modal/1","id":"toggle_add_modal/1","title":"toggle_add_modal(js \\\\ %JS{})"}]}],"sections":[],"title":"ClaperWeb.EventLive.Manage"},{"group":"Events","id":"ClaperWeb.EventLive.PollComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"toggle_poll/1","id":"toggle_poll/1","title":"toggle_poll(js \\\\ %JS{})"}]}],"sections":[],"title":"ClaperWeb.EventLive.PollComponent"},{"group":"Events","id":"ClaperWeb.EventLive.PostComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(assigns)"}]}],"sections":[],"title":"ClaperWeb.EventLive.PostComponent"},{"group":"Events","id":"ClaperWeb.EventLive.Presenter","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.EventLive.Presenter"},{"group":"Events","id":"ClaperWeb.EventLive.Show","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"},{"anchor":"toggle_nickname_popup/1","id":"toggle_nickname_popup/1","title":"toggle_nickname_popup(js \\\\ %JS{})"},{"anchor":"toggle_side_menu/1","id":"toggle_side_menu/1","title":"toggle_side_menu(js \\\\ %JS{})"}]}],"sections":[],"title":"ClaperWeb.EventLive.Show"},{"group":"Events","id":"ClaperWeb.EventView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.EventView"},{"group":"Polls","id":"Claper.Polls","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"add_poll_opt/1","id":"add_poll_opt/1","title":"add_poll_opt(changeset)"},{"anchor":"change_poll/2","id":"change_poll/2","title":"change_poll(poll, attrs \\\\ %{})"},{"anchor":"create_poll/1","id":"create_poll/1","title":"create_poll(attrs \\\\ %{})"},{"anchor":"create_poll_vote/1","id":"create_poll_vote/1","title":"create_poll_vote(attrs \\\\ %{})"},{"anchor":"delete_poll/2","id":"delete_poll/2","title":"delete_poll(event_uuid, poll)"},{"anchor":"disable_all/2","id":"disable_all/2","title":"disable_all(presentation_file_id, position)"},{"anchor":"get_poll!/1","id":"get_poll!/1","title":"get_poll!(id)"},{"anchor":"get_poll_current_position/2","id":"get_poll_current_position/2","title":"get_poll_current_position(presentation_file_id, position)"},{"anchor":"get_poll_vote/2","id":"get_poll_vote/2","title":"get_poll_vote(user_id, poll_id)"},{"anchor":"list_polls/1","id":"list_polls/1","title":"list_polls(presentation_file_id)"},{"anchor":"list_polls_at_position/2","id":"list_polls_at_position/2","title":"list_polls_at_position(presentation_file_id, position)"},{"anchor":"remove_poll_opt/2","id":"remove_poll_opt/2","title":"remove_poll_opt(changeset, poll_opt)"},{"anchor":"set_default/3","id":"set_default/3","title":"set_default(id, presentation_file_id, position)"},{"anchor":"set_percentages/1","id":"set_percentages/1","title":"set_percentages(poll)"},{"anchor":"update_poll/3","id":"update_poll/3","title":"update_poll(event_uuid, poll, attrs)"},{"anchor":"vote/4","id":"vote/4","title":"vote(user_id, event_uuid, poll_opts, poll_id)"}]}],"sections":[],"title":"Claper.Polls"},{"group":"Polls","id":"Claper.Polls.Poll","sections":[],"title":"Claper.Polls.Poll"},{"group":"Polls","id":"Claper.Polls.PollOpt","sections":[],"title":"Claper.Polls.PollOpt"},{"group":"Polls","id":"Claper.Polls.PollVote","sections":[],"title":"Claper.Polls.PollVote"},{"group":"Polls","id":"ClaperWeb.PollLive.FormComponent","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"render/1","id":"render/1","title":"render(arg)"}]}],"sections":[],"title":"ClaperWeb.PollLive.FormComponent"},{"group":"Posts","id":"Claper.Posts","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"create_post/2","id":"create_post/2","title":"create_post(event, attrs)"},{"anchor":"create_reaction/1","id":"create_reaction/1","title":"create_reaction(attrs)"},{"anchor":"delete_all_posts/3","id":"delete_all_posts/3","title":"delete_all_posts(atom, attendee_identifier, event)"},{"anchor":"delete_post/1","id":"delete_post/1","title":"delete_post(post)"},{"anchor":"delete_reaction/1","id":"delete_reaction/1","title":"delete_reaction(params)"},{"anchor":"get_post!/2","id":"get_post!/2","title":"get_post!(id, preload \\\\ [])"},{"anchor":"get_reaction!/1","id":"get_reaction!/1","title":"get_reaction!(id)"},{"anchor":"list_posts/2","id":"list_posts/2","title":"list_posts(event_id, preload \\\\ [])"},{"anchor":"reacted_posts/3","id":"reacted_posts/3","title":"reacted_posts(event_id, user_id, icon)"},{"anchor":"update_post/2","id":"update_post/2","title":"update_post(post, attrs)"}]}],"sections":[],"title":"Claper.Posts"},{"group":"Posts","id":"Claper.Posts.Post","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"nickname_changeset/2","id":"nickname_changeset/2","title":"nickname_changeset(post, attrs)"}]}],"sections":[],"title":"Claper.Posts.Post"},{"group":"Posts","id":"Claper.Posts.Reaction","sections":[],"title":"Claper.Posts.Reaction"},{"group":"Posts","id":"ClaperWeb.PostController","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"create/2","id":"create/2","title":"create(conn, map)"},{"anchor":"index/2","id":"index/2","title":"index(conn, map)"}]}],"sections":[],"title":"ClaperWeb.PostController"},{"group":"Posts","id":"ClaperWeb.PostView","nodeGroups":[{"key":"functions","name":"Functions","nodes":[{"anchor":"__resource__/0","id":"__resource__/0","title":"__resource__()"},{"anchor":"render/2","id":"render/2","title":"render(template, assigns \\\\ %{})"},{"anchor":"template_not_found/2","id":"template_not_found/2","title":"template_not_found(template, assigns)"}]}],"sections":[],"title":"ClaperWeb.PostView"}],"tasks":[]}
\ No newline at end of file
diff --git a/features.html b/features.html
index 4a95d06..bcb610c 100644
--- a/features.html
+++ b/features.html
@@ -5,15 +5,15 @@
-
+
- Features — Claper v1.4.1
+ Features — Claper v1.5.0
-
+
@@ -72,7 +72,7 @@
Claper