Amend privacy policy

Amend privacy policy

Datenschutzerklärung

  Hier erfährst du, wie deine Daten verarbeitet werden.

Diese Datenschutzerklärung legt offen, was mit den von dieser Website erhobenen Daten geschieht. Sie richtet sich nach der <%= link "Europäischen Datenschutz-Grundverordnung (DSGVO)", to: "https://dsgvo-gesetz.de" %>.

1. Verantwortliche

    Verantwortlich im Sinne des <%= link "Art. 4 Abs. 7", to: "https://dsgvo-gesetz.de/art-4-dsgvo/" %> der DSGVO ist der Landesausschuss “Jugend musiziert” Nord- und Osteuropa. Ein Formular zur Kontaktaufnahme findest du auf der Seite <%= link "\"Kontakt\"", to: page_path(@conn, :contact) %>.

2. Welche Daten werden erhoben?

Bei der digitalen Anmeldung für das jeweilige Wettbewerbsjahr werden von den Teilnehmenden folgende Daten erhoben:

Persönliche Daten: Vor- und Familienname, Geburtsdatum

Kontaktdaten: Telefonnummer, E-Mailadresse

Wettbewerbsdaten: Kategorie, Instrument, Vorspielprogramm

Im Laufe des Wettbewerbs werden die Wettbewerbsdaten vom jeweiligen Organisationsteam um folgende Punkte ergänzt:

Auftrittszeit und -ort

Ergebnisse (Punkte und Prädikate)

Außerdem können während des Wettbewerbs vom jeweiligen Träger Bild- und Tondaten (z.B. Fotografien oder Videoaufnahmen) erhoben werden.

3. Warum werden diese Daten benötigt?

Die obenstehenden persönlichen Daten sowie Wettbewerbsdaten sind notwendig, um die Wettbewerbe “Jugend musiziert” und “Kinder musizieren” zu planen und durchzuführen. Die Kontaktdaten benötigen wir, um die Teilnehmenden bezüglich Anmeldung, Auftritt oder anderen Bereichen des Wettbewerbs zu kontaktieren. Bild- und Tondaten werden für die Berichterstattung und Dokumentation benötigt, um den öffentlichen und transparenten Charakters des Wettbewerbs zu wahren. Rechtsgrundlage hierfür ist <%= link "Art. 6 Abs. 1 lit. b und f", to: "https://dsgvo-gesetz.de/art-6-dsgvo/" %> der DSGVO.

4. Weitergabe von Daten an Dritte

Die erhobenen Daten werden nur an solche Dritte weitergegeben, die direkt an der Durchführung des jeweiligen Wettbewerbs beteiligt sind, wie z.B. der Jury und dem Organisationsteam.

Bei einer Weiterleitung zum Bundeswettbewerb werden die erhobenen Daten an den dortigen Träger (Deutsche Musikrat Projektgesellschaft mbH) weitergegeben.

Die unter (2) genannten Daten werden nicht an Dritte außerhalb des Wettbewerbs “Jugend musiziert” weitergegeben.

5. Aufbewahrung der Daten

Für Zwecke der Dokumentation, Statistik sowie Unterstützung bei späteren Anmeldungen werden die unter (2) genannten Daten auch über das Wettbewerbsjahr hinaus aufbewahrt. Rechtsgrundlage hierfür ist <%= link "Art. 6 Abs. 1 lit. b und f", to: "https://dsgvo-gesetz.de/art-6-dsgvo/" %> der DSGVO.

6. Inhalte von Dritten

Auf dieser Website setzen wir Karten (Google Maps) sowie Schriftarten (Google Fonts) des Anbieters Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA, ein. Hierfür besteht ein berechtigtes Interesse im Sinne des <%= link "Art. 6 Abs. 1 lit. f", to: "https://dsgvo-gesetz.de/art-6-dsgvo/" %> der DSGVO. Die Einbindung erfolgt durch einen Serveraufruf, bei dem die IP-Adresse des Besuchers an Google übertragen wird. Die Verarbeitung dieser unterliegt der <%= link "Datenschutzerklärung von Google", to: "https://www.google.com/policies/privacy/" %>.

7. Deine Rechte

Laut DSGVO hast du unter anderem das Recht, jederzeit und unentgeltlich

anzufragen, ob und welche personenbezogenen Daten verarbeitet werden (<%= link "Art. 15", to: "https://dsgvo-gesetz.de/art-15-dsgvo/" %>)

unrichtige personenbezogener Daten korrigieren zu lassen (<%= link "Art. 16", to: "https://dsgvo-gesetz.de/art-16-dsgvo/" %>)

die Löschung von personenbezogenen Daten zu verlangen, sofern die Verarbeitung nicht mehr erforderlich ist (<%= link "Art. 17", to: "https://dsgvo-gesetz.de/art-17-dsgvo/" %>)

einen Auszug deiner personenbezogenen Daten zu verlangen (<%= link "Art. 20", to: "https://dsgvo-gesetz.de/art-20-dsgvo/" %>)

Außerdem hast du das Recht auf Beschwerde bei einer <%= link "Aufsichtsbehörde", to: "https://www.bfdi.bund.de/DE/Infothek/Anschriften_Links/anschriften_links-node.html" %>, wenn du der Ansicht bist, dass die Verarbeitung deiner personenbezogenen Daten gegen die DSGVO verstößt.

8. Änderungen

Sollten wir Änderungen an dieser Datenschutzerklärung vornehmen, die eine Verarbeitung deiner Daten außerhalb obengenannter Zwecke vorsieht, so werden wir dich hierüber informieren und deine Einwilligung einholen, falls dies rechtlich erforderlich ist.

Stand: 1. November 2018

Datenschutzerklärung

  Hier erfährst du, wie deine Daten verarbeitet werden.

Diese Datenschutzerklärung legt offen, was mit den von dieser Website erhobenen Daten geschieht. Sie richtet sich nach der <%= link "Europäischen Datenschutz-Grundverordnung (DSGVO)", to: "https://dsgvo-gesetz.de" %>.

1. Verantwortliche

    Verantwortlich im Sinne des <%= link "Art. 4 Abs. 7", to: "https://dsgvo-gesetz.de/art-4-dsgvo/" %> der DSGVO ist der Landesausschuss “Jugend musiziert” Nord- und Osteuropa. Ein Formular zur Kontaktaufnahme findest du auf der Seite <%= link "\"Kontakt\"", to: page_path(@conn, :contact) %>.

2. Welche Daten werden erhoben?

Bei der digitalen Anmeldung für das jeweilige Wettbewerbsjahr werden von den Teilnehmenden folgende Daten erhoben:

Persönliche Daten: Vor- und Familienname, Geburtsdatum

Kontaktdaten: Telefonnummer, E-Mailadresse

Wettbewerbsdaten: Kategorie, Instrument, Vorspielprogramm

Im Laufe des Wettbewerbs werden die Wettbewerbsdaten vom jeweiligen Organisationsteam um folgende Punkte ergänzt:

Auftrittszeit und -ort

Ergebnisse (Punkte und Prädikate)

3. Warum werden diese Daten benötigt?

Die obenstehenden persönlichen Daten sowie Wettbewerbsdaten sind notwendig, um die Wettbewerbe “Jugend musiziert” und “Kinder musizieren” zu planen und durchzuführen. Die Kontaktdaten benötigen wir, um die Teilnehmenden bezüglich Anmeldung, Auftritt oder anderen Bereichen des Wettbewerbs zu kontaktieren. Rechtsgrundlage hierfür ist <%= link "Art. 6 Abs. 1 lit. b und f", to: "https://dsgvo-gesetz.de/art-6-dsgvo/" %> der DSGVO.

4. Weitergabe von Daten an Dritte

Die erhobenen Daten werden nur an solche Dritte weitergegeben, die direkt an der Durchführung des jeweiligen Wettbewerbs beteiligt sind, wie z.B. der Jury und dem Organisationsteam.

Bei einer Weiterleitung zum Bundeswettbewerb werden die erhobenen Daten an den dortigen Träger (Deutsche Musikrat Projektgesellschaft mbH) weitergegeben.

Die unter (2) genannten Daten werden nicht an Dritte außerhalb des Wettbewerbs “Jugend musiziert” weitergegeben.

5. Aufbewahrung der Daten

Für Zwecke der Dokumentation, Statistik sowie Unterstützung bei späteren Anmeldungen werden die unter (2) genannten Daten auch über das Wettbewerbsjahr hinaus aufbewahrt. Rechtsgrundlage hierfür ist <%= link "Art. 6 Abs. 1 lit. b und f", to: "https://dsgvo-gesetz.de/art-6-dsgvo/" %> der DSGVO.

6. Inhalte von Dritten

Auf dieser Website setzen wir Karten (Google Maps) sowie Schriftarten (Google Fonts) des Anbieters Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA, ein. Hierfür besteht ein berechtigtes Interesse im Sinne des <%= link "Art. 6 Abs. 1 lit. f", to: "https://dsgvo-gesetz.de/art-6-dsgvo/" %> der DSGVO. Die Einbindung erfolgt durch einen Serveraufruf, bei dem die IP-Adresse des Besuchers an Google übertragen wird. Die Verarbeitung dieser unterliegt der <%= link "Datenschutzerklärung von Google", to: "https://www.google.com/policies/privacy/" %>.

7. Deine Rechte

Laut DSGVO hast du unter anderem das Recht, jederzeit und unentgeltlich

anzufragen, ob und welche personenbezogenen Daten verarbeitet werden (<%= link "Art. 15", to: "https://dsgvo-gesetz.de/art-15-dsgvo/" %>)

unrichtige personenbezogener Daten korrigieren zu lassen (<%= link "Art. 16", to: "https://dsgvo-gesetz.de/art-16-dsgvo/" %>)

die Löschung von personenbezogenen Daten zu verlangen, sofern die Verarbeitung nicht mehr erforderlich ist (<%= link "Art. 17", to: "https://dsgvo-gesetz.de/art-17-dsgvo/" %>)

einen Auszug deiner personenbezogenen Daten zu verlangen (<%= link "Art. 20", to: "https://dsgvo-gesetz.de/art-20-dsgvo/" %>)

Außerdem hast du das Recht auf Beschwerde bei einer <%= link "Aufsichtsbehörde", to: "https://www.bfdi.bund.de/DE/Infothek/Anschriften_Links/anschriften_links-node.html" %>, wenn du der Ansicht bist, dass die Verarbeitung deiner personenbezogenen Daten gegen die DSGVO verstößt.

8. Änderungen

Sollten wir Änderungen an dieser Datenschutzerklärung vornehmen, die eine Verarbeitung deiner Daten außerhalb obengenannter Zwecke vorsieht, so werden wir dich hierüber informieren und deine Einwilligung einholen, falls dies rechtlich erforderlich ist.

Stand: 30. Oktober 2018


Show as monospaced text

Show as monospaced text

<%= gettext("Index - images") %>

  <%= for category <- @categories do %>

    <a id="tab-<%= category.slug %>" href="#" class="tab-link<%= if List.first(@categories) == category do %> is-active<% end %>">
      <%= String.capitalize(category.name) %>

      <a href="<%= Brando.helpers.admin_portfolio_image_series_path(@conn, :new, category.id) %>" class="btn btn-primary m-b-sm">
         <%= gettext("New image series") %>

      <button class="btn btn-default btn-dropdown m-b-sm">

            <input type="checkbox" class="o-c bars">

              <a href="<%= Brando.helpers.admin_portfolio_image_category_path(@conn, :edit, category.id) %>">
                 <%= gettext("Edit image category") %>

              <a href="<%= Brando.helpers.admin_portfolio_image_category_path(@conn, :sequence, category.id) %>">
                 <%= gettext("Sort image series in category") %>

              <a href="<%= Brando.helpers.admin_portfolio_image_category_path(@conn, :configure, category.id) %>">
                 <%= gettext("Configure category") %>

              <a href="<%= Brando.helpers.admin_portfolio_image_category_path(@conn, :delete_confirm, category.id) %>">
                 <%= gettext("Delete category") %>

      </button>
    <%= if category.image_series != [] do %>
      <%= for serie <- category.image_series do %>

            <%= String.capitalize(Brando.ImageSeries.__name__(:singular)) %>:

          <%= String.capitalize(serie.name) %>

            <button disabled class="delete-selected-images btn btn-danger m-b-sm">
              <%= gettext("Delete images") %>
            </button>
            <button disabled class="mark-as-cover btn btn-default m-b-sm">
              <%= gettext("Mark as cover") %>
            </button>
            <button disabled class="unmark-as-cover btn btn-default m-b-sm">
              <%= gettext("Remove cover") %>
            </button>

          <%= if serie.images != [] do %>
            <%= for image <- serie.images do %>

              <img data-title="<%= image.image.title %>"
                   data-credits="<%= image.image.credits %>"
                   data-id="<%= image.id %>"
                   data-series-id="<%= serie.id %>"
                   data-cover="<%= image.cover && 1 || 0 %>"
                   src="<%= img_url(image.image, :thumb, prefix: media_url()) %>" />

            <% end %>
          <% else %>

<%= gettext("No images") %>

          <% end %>

            <a href="<%= Brando.helpers.admin_portfolio_image_series_path(@conn, :upload, serie.id) %>" class="btn btn-default">

              <%= gettext("Upload images") %>

            <button class="btn btn-default btn-dropdown">

                  <input type="checkbox" class="o-c bars">

                   <a href="<%= Brando.helpers.admin_portfolio_image_series_path(@conn, :edit, serie.id) %>">
                      <%= gettext("Edit image series") %>

                    <a href="<%= Brando.helpers.admin_portfolio_image_series_path(@conn, :sequence, serie.id) %>">
                       <%= gettext("Sort images") %>

                    <a href="<%= Brando.helpers.admin_portfolio_image_series_path(@conn, :configure, serie.id) %>">
                       <%= gettext("Configure image series") %>

                    <a href="<%= Brando.helpers.admin_portfolio_image_series_path(@conn, :delete_confirm, serie.id) %>">
                       <%= gettext("Delete image series") %>

            </button>

      <% end %>
    <% else %>

<%= gettext("No image series") %>

    <% end %>

  <% end %>
  <a href="<%= Brando.helpers.admin_portfolio_image_category_path(@conn, :new) %>" class="btn btn-xs btn-default m-l-md"> <%= gettext("New image category") %>


Fix the repo config.

Fix the repo config.

<%= if @ecto do %>defmodule <%= @module %>.Repo do
  use Ecto.Repo,
  otp_app: :<%= @name %>,
  adapter: Ecto.Adapters.Postgres

  def init(_type, config) do
    # SEE https://hexdocs.pm/ecto/Ecto.Repo.html#module-urls for details
    config =
      case System.get_env("DATABASE_URL") do
        not_set when not_set in [nil, ""] ->
          config
        url ->
          Keyword.put(config, :url, url)
      end
    {:ok, config}
  end
end
<% end %>

<%= if @ecto do %>defmodule <%= @module %>.Repo do
  use Ecto.Repo,
  otp_app: :<%= @name %>,
  adapter: Ecto.Adapters.Postgres

  def init(_type, config) do
    # SEE https://hexdocs.pm/ecto/Ecto.Repo.html#module-urls for details
    config =
      case System.get_env("DATABASE_URL") do
        not_set when not_set in [nil, ""] ->
          config
        url ->
          Keyword.put(config, :url, url)
      end
  end
end
<% end %>


Trying to fix again

Trying to fix again

    <%= form_for @conn, commentstream_path(@conn, :submit), [name: :search],
    fn _ -> %>

      <%= raw ParamSession.form_session @conn %>
      <input type='hidden' name='f[resourcetype]' value='<%= @comments.resourcetype %>'>
      <input type='hidden' name='f[identifier]' value='<%= @comments.identifier %>'>
      <fieldset>

Comments

        <%= if @comments.comments && !Enum.empty?(@comments.comments) do %>
          <%= for comment <- Enum.reverse(@comments.comments) do %>

<%= comment["text"] %>
              (<%= comment["nick"] %>)

          <% end %>
        <% end %>

        Add new comment

          <textarea id="comment_area" name='f[comment]'></textarea>

Submit comment

        </fieldset>
      <% end %>


assets.html.eex i18n

assets.html.eex i18n

Assets

  <%= for asset <- @assets do %>

Asset

<%=Api.get_asset_name(asset.txid)%>

<%= gettext "Type" %>

<%=asset.type%>

<%= gettext "Supply" %>

<%=asset.amount%>

<%= gettext "Registered on" %>

              <%=
                {:ok, date_time} = DateTime.from_unix(asset.time, :second)
                DateTime.to_date(date_time)
              %>

<%= gettext "Addresses" %>

<%=asset.stats.addresses%>

<%= gettext "Issued" %>

<%=asset.issued%>

<%= gettext "Transactions" %>

<%=asset.stats.transactions%>

        <a href="<%= asset_path(@conn, :index, asset.txid)%>" alt="Find out more" title="Find out more" class="btn-primary"><%= gettext "More details" %>

  <%end%>

Assets

  <%= for asset <- @assets do %>

Asset

<%=Api.get_asset_name(asset.txid)%>

Type

<%=asset.type%>

Supply

<%=asset.amount%>

Registered on

              <%=
                {:ok, date_time} = DateTime.from_unix(asset.time, :second)
                DateTime.to_date(date_time)
              %>

Addresses

<%=asset.stats.addresses%>

Issued

<%=asset.issued%>

Transactions

<%=asset.stats.transactions%>

        <a href="<%= asset_path(@conn, :index, asset.txid)%>" alt="Find out more" title="Find out more" class="btn-primary">More details

  <%end%>


fix: removed bullets from video thumbnails styling

<%= if @next_meetup do %>

<%= next_or_most_recent_event(@next_meetup.utc_datetime) %>

<%= @next_meetup.name %>

<%= format_montreal_time(@next_meetup.utc_datetime) %>

        <%= @next_meetup.venue_name %>

        <%= @next_meetup.venue_address %>

Learn more on <a target="_blank" href=<%= @next_meetup.url %>>Meetup.com

<% end %>

About Montreal Elixir

Montreal's community for Elixir, a dynamic, functional language designed for building scalable and maintainable applications.

Recent updates (via Twitter)

View more on Twitter

New Videos

    <%= for video <- @new_videos do %>

        <img src="<%= video.img_url %>">

        <%= video.title %>

        <%= video.published_at %>

    <% end %>

View more on YouTube

Monthly Meetup

        Become a member

        Come to a meetup

        Prepare and present a talk

        Watch our meetup presentations

        Sponsor an event

Resources

        View the community playbook

        Follow us on Twitter

        Contribute to this website

        Get help from community members on Slack (#montrealelixir)


podcast admin form

podcast admin form

<%= form_for @changeset, @action, fn f -> %>
  <%= if @changeset.action do %>

Oops, something went wrong! Please check the errors below.

  <% end %>

    <%= label f, :title, class: "control-label" %>
    <%= text_input f, :title, class: "form-control" %>
    <%= error_tag f, :title %>

    <%= label f, :blocked, class: "control-label" %>
    <%= checkbox f, :blocked, class: "form-control" %>
    <%= error_tag f, :blocked %>

    <%= label f, :update_paused, class: "control-label" %>
    <%= checkbox f, :update_paused, class: "form-control" %>
    <%= error_tag f, :update_paused %>

    <%= label f, :retired, class: "control-label" %>
    <%= checkbox f, :retired, class: "form-control" %>
    <%= error_tag f, :retired %>

    <%= label f, :website, class: "control-label" %>
    <%= text_input f, :website, class: "form-control" %>
    <%= error_tag f, :website %>

    <%= label f, :description, class: "control-label" %>
    <%= textarea f, :description, class: "form-control" %>
    <%= error_tag f, :description %>

    <%= label f, :summary, class: "control-label" %>
    <%= textarea f, :summary, class: "form-control" %>
    <%= error_tag f, :summary %>

    <%= label f, :image_title, class: "control-label" %>
    <%= text_input f, :image_title, class: "form-control" %>
    <%= error_tag f, :image_title %>

    <%= label f, :image_url, class: "control-label" %>
    <%= text_input f, :image_url, class: "form-control" %>
    <%= error_tag f, :image_url %>

    <%= label f, :last_build_date, class: "control-label" %>
    <%= datetime_select f, :last_build_date, class: "form-control" %>
    <%= error_tag f, :last_build_date %>

    <%= label f, :payment_link_title, class: "control-label" %>
    <%= text_input f, :payment_link_title, class: "form-control" %>
    <%= error_tag f, :payment_link_title %>

    <%= label f, :payment_link_url, class: "control-label" %>
    <%= text_input f, :payment_link_url, class: "form-control" %>
    <%= error_tag f, :payment_link_url %>

    <%= label f, :explicit, class: "control-label" %>
    <%= checkbox f, :explicit, class: "form-control" %>
    <%= error_tag f, :explicit %>

    <%= label f, :unique_identifier, class: "control-label" %>
    <%= text_input f, :unique_identifier, class: "form-control" %>
    <%= error_tag f, :unique_identifier %>

    <%= label f, :episodes_count, class: "control-label" %>
    <%= number_input f, :episodes_count, class: "form-control" %>
    <%= error_tag f, :episodes_count %>

    <%= label f, :followers_count, class: "control-label" %>
    <%= number_input f, :followers_count, class: "form-control" %>
    <%= error_tag f, :followers_count %>

    <%= label f, :likes_count, class: "control-label" %>
    <%= number_input f, :likes_count, class: "form-control" %>
    <%= error_tag f, :likes_count %>

    <%= label f, :subscriptions_count, class: "control-label" %>
    <%= number_input f, :subscriptions_count, class: "form-control" %>
    <%= error_tag f, :subscriptions_count %>

    <%= label f, :latest_episode_publishing_date, class: "control-label" %>
    <%= datetime_select f, :latest_episode_publishing_date, class: "form-control" %>
    <%= error_tag f, :latest_episode_publishing_date %>

    <%= label f, :publication_frequency, class: "control-label" %>
    <%= number_input f, :publication_frequency, class: "form-control" %>
    <%= error_tag f, :publication_frequency %>

    <%= submit "Submit", class: "btn btn-primary" %>

<% end %>

<%= form_for @changeset, @action, fn f -> %>
  <%= if @changeset.action do %>

Oops, something went wrong! Please check the errors below.

  <% end %>

    <%= label f, :title, class: "control-label" %>
    <%= text_input f, :title, class: "form-control" %>
    <%= error_tag f, :title %>

    <%= label f, :blocked, class: "control-label" %>
    <%= checkbox f, :blocked, class: "form-control" %>
    <%= error_tag f, :blocked %>

    <%= label f, :update_paused, class: "control-label" %>
    <%= checkbox f, :update_paused, class: "form-control" %>
    <%= error_tag f, :update_paused %>

    <%= label f, :retired, class: "control-label" %>
    <%= checkbox f, :retired, class: "form-control" %>
    <%= error_tag f, :retired %>

    <%= label f, :website, class: "control-label" %>
    <%= text_input f, :website, class: "form-control" %>
    <%= error_tag f, :website %>

    <%= label f, :description, class: "control-label" %>
    <%= textarea f, :description, class: "form-control" %>
    <%= error_tag f, :description %>

    <%= label f, :summary, class: "control-label" %>
    <%= textarea f, :summary, class: "form-control" %>
    <%= error_tag f, :summary %>

    <%= label f, :image_title, class: "control-label" %>
    <%= text_input f, :image_title, class: "form-control" %>
    <%= error_tag f, :image_title %>

    <%= label f, :image_url, class: "control-label" %>
    <%= text_input f, :image_url, class: "form-control" %>
    <%= error_tag f, :image_url %>

    <%= label f, :last_build_date, class: "control-label" %>
    <%= datetime_select f, :last_build_date, class: "form-control" %>
    <%= error_tag f, :last_build_date %>

    <%= label f, :payment_link_title, class: "control-label" %>
    <%= text_input f, :payment_link_title, class: "form-control" %>
    <%= error_tag f, :payment_link_title %>

    <%= label f, :payment_link_url, class: "control-label" %>
    <%= text_input f, :payment_link_url, class: "form-control" %>
    <%= error_tag f, :payment_link_url %>

    <%= label f, :explicit, class: "control-label" %>
    <%= checkbox f, :explicit, class: "form-control" %>
    <%= error_tag f, :explicit %>

    <%= label f, :unique_identifier, class: "control-label" %>
    <%= text_input f, :unique_identifier, class: "form-control" %>
    <%= error_tag f, :unique_identifier %>

    <%= submit "Submit", class: "btn btn-primary" %>

<% end %>


add to iframe as well

add to iframe as well

<link rel="stylesheet" href="https://cdn.shoelace.style/1.0.0-beta24/shoelace.css">

  <%= if @use_post_sign do %>

      Thanks for signing up to make calls! Here's your username and password.

        Username: <%= @username %>

        <a id="username-button" data-username="<%= @username %>" class="button" onclick="">
          Copy Username

        Password: <%= @password %>

        <a id="password-button" data-password="<%= @password %>" class="button">
          Copy Password

    <iframe src="<%= @post_sign_url %>" style="border:none; width: 100%; height: 100%;" />
  <% end %>
  <%= if @client == "beto" and not @use_post_sign do %>
    <link id="style-css" rel="stylesheet" href="https://betofortexas.com/wp-content/themes/wp-bft-flst/css/style.min.css?ver=1512705899" type="text/css" media="all">

        Thanks for signing up to make calls! Here's your username and password.

        Username: <%= @username %>

        Password: <%= @password %>

Click here to log in to the Beto dialer

      Login

Click here to open the call script

Mon-Fri: 5pm CT - 9pm CT || Sat-Sun: 10am CT - 9pm CT

Still have questions? Email organizing@betofortexas.com with "Beto Dialer" in the subject line and we will get back to you ASAP.

NOTE: Turn off your popup blocker to use the JD dialer

(click on the name of your browser to see the fullsize animation)

Change before you log in: Safari, Edge

Change while you log in: Chrome, Firefox

  <% else %>

      Thanks for signing up to make calls! Here's your username and password.

        Username: <%= @username %>

        <a id="username-button" data-username="<%= @username %>" class="button" onclick="">
          Copy Username

        Password: <%= @password %>

        <a id="password-button" data-password="<%= @password %>" class="button">
          Copy Password

  <% end %>

<link rel="stylesheet" href="https://cdn.shoelace.style/1.0.0-beta24/shoelace.css">

  <%= if @use_post_sign do %>

      Thanks for signing up to make calls! Here's your username and password.

      Username: <%= @username %>

      Password: <%= @password %>

    <iframe src="<%= @post_sign_url %>" style="border:none; width: 100%; height: 100%;" />
  <% end %>
  <%= if @client == "beto" and not @use_post_sign do %>
    <link id="style-css" rel="stylesheet" href="https://betofortexas.com/wp-content/themes/wp-bft-flst/css/style.min.css?ver=1512705899" type="text/css" media="all">

        Thanks for signing up to make calls! Here's your username and password.

        Username: <%= @username %>

        Password: <%= @password %>

Click here to log in to the Beto dialer

      Login

Click here to open the call script

Mon-Fri: 5pm CT - 9pm CT || Sat-Sun: 10am CT - 9pm CT

Still have questions? Email organizing@betofortexas.com with "Beto Dialer" in the subject line and we will get back to you ASAP.

NOTE: Turn off your popup blocker to use the JD dialer

(click on the name of your browser to see the fullsize animation)

Change before you log in: Safari, Edge

Change while you log in: Chrome, Firefox

  <% else %>

      Thanks for signing up to make calls! Here's your username and password.

      Username: <%= @username %>

      Password: <%= @password %>

  <% end %>


Improve responsiveness of action panel on contest detail page

  <%= name(@contest) %>

  <%= dates(@contest) %>

<%= gettext("Preparation") %>

          <%= icon_link "music", gettext("Show performances"),
            internal_contest_performance_path(@conn, :index, @contest)
            %>

          <%= icon_link "user", gettext("Show participants"),
            internal_contest_participant_path(@conn, :index, @contest)
            %>

          <%= icon_link "list-alt", gettext("Show categories"),
          internal_contest_contest_category_path(@conn, :index, @contest)
          %>


Improve user settings form

Improve user settings form

<%= form_for @changeset, @action, fn f -> %>
  <%= if @changeset.action do %>

Oops, something went wrong! Please check the errors below.

  <% end %>

  <%= input f, :email %>

<%= input f, :first_name %>

<%= input f, :last_name %>

  <%= input f, :contact_url %>

    <%= submit "Save", class: "btn btn-primary" %>

<% end %>


Automatically import plugins from rel/plugins

# Import all plugins from `rel/plugins`
# They can then be used by adding `plugin MyPlugin` to
# either an environment, or release definition, where
# `MyPlugin` is the name of the plugin module.
Path.join([__DIR__, "plugins", "*.exs"])
|> Path.wildcard()
|> Enum.map(&Code.eval_file(&1))

use Mix.Releases.Config,
    # This sets the default release built by `mix release`
    default_release: :default,
    # This sets the default environment used by `mix release`
    default_environment: :dev
<%= unless no_docs do %>
# For a full list of config options for both releases
# and environments, visit https://hexdocs.pm/distillery/configuration.html
<% end %>
<%= unless no_docs do %>
# You may define one or more environments in this file,
# an environment's settings will override those of a release
# when building in that environment, this combination of release
# and environment configuration is called a profile
<% end %>
environment :dev do
  set dev_mode: true
  set include_erts: false
  set cookie: <%= inspect(get_cookie.()) %>
end

environment :prod do
  set include_erts: true
  set include_src: false
  set cookie: <%= inspect(get_cookie.()) %>
end
<%= unless no_docs do %>
# You may define one or more releases in this file.
# If you have not set a default release, or selected one
# when running `mix release`, the first release in the file
# will be used by default<% end %>
<%= for release <- releases do %><%= if Keyword.get(release, :is_umbrella) do %>
release :<%= Keyword.get(release, :release_name) %> do
  set version: "0.1.0"
  set applications: [
<%= Enum.map(Keyword.get(release, :release_applications), fn {app, start_type} ->
    "    #{app}: :#{start_type}"
    end) |> Enum.join(",\n") %>
  ]
end<% else %>
release :<%= Keyword.get(release, :release_name) %> do
  set version: current_version(:<%= Keyword.get(release, :release_name)%>)
end<% end %>
<% end %>


front

front

    Welcome to Teal

    Create a new document


Display current room's users

Display current room's users


Change signal names from SIG<NAME> to <NAME>. Closes #19

#!/bin/sh

set -e

# Set VERBOSE to enable verbose logging of the boot script
#VERBOSE=true
# Path to this script
SCRIPT=$(readlink $0 || true)
if [ -z $SCRIPT ]; then
    SCRIPT=$0
fi;
# Parent directory of this script
SCRIPT_DIR="$(cd `dirname "$SCRIPT"` && pwd -P)"
# Root directory of all releases
RELEASE_ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd -P)"
# Name of the release
REL_NAME="<%= release_name %>"
# Current version of the release
REL_VSN="<%= release_version %>"
# Current version of ERTS being used
# If this is not present/unset, it will be detected
<%= unless is_nil(erts_vsn) do %>ERTS_VSN="<%= erts_vsn %>"<% end %>
# VM code loading mode, embedded by default, can also be interactive
# See http://erlang.org/doc/man/code.html
CODE_LOADING_MODE="${CODE_LOADING_MODE:-embedded}"
# Path to start_erl.data
START_ERL_DATA="$RELEASE_ROOT_DIR/releases/start_erl.data"
# Directory containing the current version of this release
REL_DIR="$RELEASE_ROOT_DIR/releases/$REL_VSN"
# The lib directory for this release
REL_LIB_DIR="$RELEASE_ROOT_DIR/lib"
# Options passed to erl
ERL_OPTS="<%= release.profile.erl_opts %>"
# When stdout is piped to a file, this is the directory those files will
# be stored in. defaults to /log in the release root directory
RUNNER_LOG_DIR="${RUNNER_LOG_DIR:-$RELEASE_ROOT_DIR/log}"
# A string of extra options to pass to erl, here for plugins
EXTRA_OPTS=""

# Pre-start/stop event hook paths
PRE_START_HOOK="$REL_DIR/hooks/pre_start"
POST_START_HOOK="$REL_DIR/hooks/post_start"
PRE_STOP_HOOK="$REL_DIR/hooks/pre_stop"
POST_STOP_HOOK="$REL_DIR/hooks/post_stop"

# Get node pid
get_pid() {
    if output="$(nodetool rpcterms os getpid)"
    then
        echo "$output" | sed -e 's/"//g'
        return 0
    else
        echo "$output"
        return 1
    fi
}

# Generate a unique nodename
gen_nodename() {
    id="longname$(gen_id)-${NAME}"
    "$BINDIR/erl" -boot start_clean -eval '[Host] = tl(string:tokens(atom_to_list(node()),"@")), io:format("~s~n", [Host]), halt()' -noshell ${NAME_TYPE} $id
}

# Generate a random id
gen_id() {
    od -t x -N 4 /dev/urandom | head -n1 | awk '{print $2}'
}

# Control a node
# Use like `nodetool "ping"`
nodetool() {
    command="$1"; shift

    "$ERTS_DIR/bin/escript" "$ROOTDIR/bin/nodetool" "$NAME_TYPE" "$NAME" \
                            -setcookie "$COOKIE" "$command" $@
}

# Run an escript in the node's environment
# Use like `escript "path/to/escript"`
escript() {
    shift; scriptpath="$1"; shift
    export RELEASE_ROOT_DIR

    "$ERTS_DIR/bin/escript" "$ROOTDIR/$scriptpath" $@
}

# Private. For determining the version of ERTS available to the release
_detect_erts_vsn() {
    erl -boot start_clean -eval 'Ver = erlang:system_info(version), io:format("~s~n", [Ver]), halt()' -noshell
}

# Private. Gets a list of code paths for this release
_get_code_paths() {
    erl -noshell -boot start_clean -eval "{ok, [{release,_,_,Apps}]} = file:consult(\"$REL_DIR/$REL_NAME.rel\"),lists:foreach(fun(A) -> io:fwrite(\"-pa $ROOTDIR/lib/~p-~s/ebin \", [element(1, A), element(2, A)]) end, Apps),halt()."
}

# Private. For setting ERTS_DIR and ROOTDIR
_find_erts_dir() {
    __erts_dir="$RELEASE_ROOT_DIR/erts-$ERTS_VSN"
    if [ -d "$__erts_dir" ]; then
        ERTS_DIR="$__erts_dir";
        ROOTDIR="$RELEASE_ROOT_DIR"
    else
        __erl="$(which erl)"
        code="io:format(\"~s\", [code:root_dir()]), halt()."
        __erl_root="$("$__erl" -noshell -eval "$code")"
        ERTS_DIR="$__erl_root/erts-$ERTS_VSN"
        ROOTDIR="$__erl_root"
    fi
}

# Private. Open a shell on a remote node
_rem_sh() {
    # Generate a unique id used to allow multiple remsh to the same node
    # transparently
    id="remsh$(gen_id)-${NAME}"

    # Get the node's ticktime so that we use the same thing.
    TICKTIME="$(nodetool rpcterms net_kernel get_net_ticktime)"

    # Setup remote shell command to control node
    if [ ! -z "$USE_ERL_SHELL" ]; then
        exec "$BINDIR/erl" \
            -hidden \
            -boot start_clean -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" \
            -kernel net_ticktime $TICKTIME \
            "$NAME_TYPE" "$id" -remsh "$NAME" -setcookie "$COOKIE"
    else
        __code_paths=$(_get_code_paths)
        exec "$BINDIR/erl" \
            -pa "$CONSOLIDATED_DIR" \
            ${__code_paths} \
            -hidden -noshell \
            -boot start_clean -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" \
            -kernel net_ticktime $TICKTIME \
            -user Elixir.IEx.CLI "$NAME_TYPE" "$id" -setcookie "$COOKIE" \
            -extra --no-halt +iex -"$NAME_TYPE" "$id" --cookie "$COOKIE" --remsh "$NAME"
    fi
}

# Output a start command for the last argument of run_erl
_start_command() {
    printf "exec \"%s\" \"%s\" -- %s %s" "$RELEASE_ROOT_DIR/bin/$REL_NAME" \
           "$START_OPTION" "${ARGS}" "${EXTRA_OPTS}"
}

# If ERTS_VSN is not set, detect it
if [ -z "$ERTS_VSN" ]; then
    ERTS_VSN="$(_detect_erts_vsn)"
    echo "$ERTS_VSN $REL_VSN" > "$START_ERL_DATA"
fi

# Allow override of where to look for config files
# By default it's $CWD/
if [ -z "$RELEASE_CONFIG_DIR" ]; then
    RELEASE_CONFIG_DIR="$RELEASE_ROOT_DIR"
fi

# Set VMARGS_PATH, the path to the vm.args file to use
# Use $RELEASE_CONFIG_DIR/vm.args if exists, otherwise releases/VSN/vm.args
if [ -z "$VMARGS_PATH" ]; then
    if [ -f "$RELEASE_CONFIG_DIR/vm.args" ]; then
        VMARGS_PATH="$RELEASE_CONFIG_DIR/vm.args"
    else
        VMARGS_PATH="$REL_DIR/vm.args"
    fi
fi

orig_vmargs_path="$VMARGS_PATH.orig"
if [ $REPLACE_OS_VARS ]; then
    #Make sure we don't break dev mode by keeping the symbolic link to
    #the user's vm.args
    if [ ! -L "$orig_vmargs_path" ]; then
       #we're in copy mode, rename the vm.args file to vm.args.orig
       mv "$VMARGS_PATH" "$orig_vmargs_path"
    fi

    awk '{while(match($0,"[$]{[^}]*}")) {var=substr($0,RSTART+2,RLENGTH -3);gsub("[$]{"var"}",ENVIRON[var])}}1' < "$orig_vmargs_path" > "$VMARGS_PATH"
 else
    #We don't need to replace env. vars, just rename the
    #symlink vm.args.orig to vm.args, and keep it as a
    #symlink.
    if [ -L "$orig_vmargs_path" ]; then
       mv "$orig_vmargs_path" "$VMARGS_PATH"
    fi
fi

# Make sure log directory exists
mkdir -p "$RUNNER_LOG_DIR"

# Set SYS_CONFIG_PATH, the path to the sys.config file to use
# Use $RELEASE_CONFIG_DIR/sys.config if exists, otherwise releases/VSN/sys.config
if [ -z "$SYS_CONFIG_PATH" ]; then
    if [ -f "$RELEASE_CONFIG_DIR/sys.config" ]; then
        SYS_CONFIG_PATH="$RELEASE_CONFIG_DIR/sys.config"
    else
        SYS_CONFIG_PATH="$REL_DIR/sys.config"
    fi
fi

orig_sys_config_path="$SYS_CONFIG_PATH.orig"
if [ $REPLACE_OS_VARS ]; then
    #Make sure we don't break dev mode by keeping the symbolic link to
    #the user's sys.config
    if [ ! -L "$orig_sys_config_path" ]; then
       #We're in copy mode, rename sys.config to sys.config.orig
       mv "$SYS_CONFIG_PATH" "$orig_sys_config_path"
    fi

    awk '{while(match($0,"[$]{[^}]*}")) {var=substr($0,RSTART+2,RLENGTH -3);gsub("[$]{"var"}",ENVIRON[var])}}1' < "$orig_sys_config_path" > "$SYS_CONFIG_PATH"
 else
    #We don't need to replace env. vars, just rename the
    #symlink sys.config.orig to sys.config. Keep it as
    #a symlink.
    if [ -L "$orig_sys_config_path" ]; then
       mv "$orig_sys_config_path"  "$SYS_CONFIG_PATH"
    fi
fi

# Extract the target node name from node.args
# Should be `-sname somename` or `-name somename@somehost`
NAME_ARG=$(egrep '^-s?name' "$VMARGS_PATH" || true)
if [ -z "$NAME_ARG" ]; then
    echo "vm.args needs to have either -name or -sname parameter."
    exit 1
fi

# Extract the name type and name from the NAME_ARG for REMSH
# NAME_TYPE should be -name or -sname
NAME_TYPE="$(echo "$NAME_ARG" | awk '{print $1}')"
# NAME will be either `somename` or `somename@somehost`
NAME="$(echo "$NAME_ARG" | awk '{print $2}')"

# Where the pipe will be stored when using `start`
# This is used so you can attach the running application to the current
# shell using `attach`
PIPE_DIR="${PIPE_DIR:-$RELEASE_ROOT_DIR/tmp/erl_pipes/$NAME/}"

# Extract the target cookie
COOKIE_ARG="$(grep '^-setcookie' "$VMARGS_PATH" || true)"
DEFAULT_COOKIE_FILE="$HOME/.erlang.cookie"
if [ -z "$COOKIE_ARG" ]; then
    if [ -f "$DEFAULT_COOKIE_FILE" ]; then
        COOKIE="$(cat "$DEFAULT_COOKIE_FILE")"
    else
        printf "a secret cookie must be provided in one of the following ways:\n  - with vm.args using the -setcookie parameter,\n  or\n  by writing the cookie to '$DEFAULT_COOKIE_FILE', with permissions set to 0400"
        exit 1
    fi
else
    # Extract cookie name from COOKIE_ARG
    COOKIE="$(echo "$COOKIE_ARG" | awk '{print $2}')"
fi

_find_erts_dir
export ROOTDIR="$RELEASE_ROOT_DIR"
export BINDIR="$ERTS_DIR/bin"
export EMU="beam"
export PROGNAME="erl"
export LD_LIBRARY_PATH="$ERTS_DIR/lib:$LD_LIBRARY_PATH"
ERTS_LIB_DIR="$ERTS_DIR/../lib"
CONSOLIDATED_DIR="$ROOTDIR/lib/${REL_NAME}-${REL_VSN}/consolidated"

cd "$ROOTDIR"

# User can specify an sname without @hostname
# This will fail when creating remote shell
# So here we check for @ and add @hostname if missing
case $NAME in
    *@*)
        # Nothing to do
        ;;
    *)
        NAME=$NAME@$(gen_nodename)
        ;;
esac

# Check the first argument for instructions
case "$1" in
    start|start_boot)

        # Make sure there is not already a node running
        #RES=`$NODETOOL ping`
        #if [ "$RES" = "pong" ]; then
        #    echo "Node is already running!"
        #    exit 1
        #fi
        # Save this for later.
        CMD=$1
        case "$1" in
            start)
                shift
                START_OPTION="console"
                HEART_OPTION="start"
                ;;
            start_boot)
                shift
                START_OPTION="console_boot"
                HEART_OPTION="start_boot"
                ;;
        esac
        ARGS="$@"
        RUN_PARAM="$@"

        [ -f "$PRE_START_HOOK" ] && . "$PRE_START_HOOK"

        # Set arguments for the heart command
        set -- "$SCRIPT_DIR/$REL_NAME" "$HEART_OPTION"
        [ "$RUN_PARAM" ] && set -- "$@" "$RUN_PARAM"

        # Export the HEART_COMMAND
        HEART_COMMAND="$RELEASE_ROOT_DIR/bin/$REL_NAME $CMD"
        export HEART_COMMAND

        mkdir -p "$PIPE_DIR"

        "$BINDIR/run_erl" -daemon "$PIPE_DIR" "$RUNNER_LOG_DIR" \
                          "$(_start_command)"

        [ -f "$POST_START_HOOK" ] && . "$POST_START_HOOK"
        ;;

    stop)
        [ -f "$PRE_STOP_HOOK" ] && . "$PRE_STOP_HOOK"
        # Wait for the node to completely stop...
        PID="$(get_pid)"
        if ! nodetool "stop"; then
            exit 1
        fi
        while $(kill -s 0 "$PID" 2>/dev/null);
        do
            sleep 1
        done
        [ -f "$POST_STOP_HOOK" ] && . "$POST_STOP_HOOK"
        ;;

    restart)
        [ -f "$PRE_START_HOOK" ] && . "$PRE_START_HOOK"
        ## Restart the VM without exiting the process
        if ! nodetool "restart"; then
            exit 1
        fi
        ;;

    reboot)
        [ -f "$PRE_START_HOOK" ] && . "$PRE_START_HOOK"
        ## Restart the VM completely (uses heart to restart it)
        if ! nodetool "reboot"; then
            exit 1
        fi
        ;;

    pid)
        ## Get the VM's pid
        if ! get_pid; then
            exit 1
        fi
        ;;

    ping)
        ## See if the VM is alive
        if ! nodetool "ping"; then
            exit 1
        fi
        ;;

    escript)
        ## Run an escript under the node's environment
        if ! escript $@; then
            exit 1
        fi
        ;;

    attach)
        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        shift
        exec "$BINDIR/to_erl" "$PIPE_DIR"
        ;;

    remote_console)
        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        shift
        _rem_sh
        ;;

    upgrade|downgrade|install)
        if [ -z "$2" ]; then
            echo "Missing package argument"
            echo "Usage: $REL_NAME $1 {package base name}"
            echo "NOTE {package base name} MUST NOT include the .tar.gz suffix"
            exit 1
        fi

        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        exec "$BINDIR/escript" "$ROOTDIR/bin/install_upgrade.escript" \
             "install" "$REL_NAME" "$NAME_TYPE" "$NAME" "$COOKIE" "$2"
        ;;

    unpack)
        if [ -z "$2" ]; then
            echo "Missing package argument"
            echo "Usage: $REL_NAME $1 {package base name}"
            echo "NOTE {package base name} MUST NOT include the .tar.gz suffix"
            exit 1
        fi

        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        exec "$BINDIR/escript" "$ROOTDIR/bin/install_upgrade.escript" \
             "unpack" "$REL_NAME" "$NAME_TYPE" "$NAME" "$COOKIE" "$2"
        ;;

    console|console_clean|console_boot)
        # .boot file typically just $REL_NAME (ie, the app name)
        # however, for debugging, sometimes start_clean.boot is useful.
        # For e.g. 'setup', one may even want to name another boot script.
        case "$1" in
            console)
                if [ -f "$REL_DIR/$REL_NAME.boot" ]; then
                  BOOTFILE="$REL_DIR/$REL_NAME"
                else
                  BOOTFILE="$REL_DIR/start"
                fi
                ;;
            console_clean)
                BOOTFILE="$ROOTDIR/bin/start_clean"
                ;;
            console_boot)
                shift
                BOOTFILE="$1"
                shift
                ;;
        esac
        # Setup beam-required vars
        EMU="beam"
        PROGNAME="${0#*/}"

        export EMU
        export PROGNAME

        # Store passed arguments since they will be erased by `set`
        ARGS="$@"

        # Start the VM, executing pre_start hook along
        # the way. We can't run the post_start hook because
        # the console will crash with no TTY attached
        [ -f "$PRE_START_HOOK" ] && . "$PRE_START_HOOK"

        __code_paths=$(_get_code_paths)
        # Build an array of arguments to pass to exec later on
        # Build it here because this command will be used for logging.
        set -- "$BINDIR/erlexec" \
            -boot "$BOOTFILE" \
            -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" \
            -env ERL_LIBS "$REL_LIB_DIR" \
            -pa "$CONSOLIDATED_DIR" \
            ${__code_paths} \
            -args_file "$VMARGS_PATH" \
            -config "$SYS_CONFIG_PATH" \
            -mode "$CODE_LOADING_MODE" \
            ${ERL_OPTS} \
            -user Elixir.IEx.CLI \
            -extra --no-halt +iex

        # Dump environment info for logging purposes
        if [ ! -z $VERBOSE ]; then
            echo "Exec: $@" -- ${1+$ARGS} ${EXTRA_OPTS}
            echo "Root: $ROOTDIR"

            # Log the startup
            echo "$RELEASE_ROOT_DIR"
        fi;

        logger -t "$REL_NAME[$$]" "Starting up"

        exec "$@" -- ${1+$ARGS} ${EXTRA_OPTS}
        ;;

    foreground)
        # start up the release in the foreground for use by runit
        # or other supervision services

        [ -f "$REL_DIR/$REL_NAME.boot" ] && BOOTFILE="$REL_NAME" || BOOTFILE=start
        FOREGROUNDOPTIONS="-noshell -noinput +Bd"

        # Setup beam-required vars
        EMU=beam
        PROGNAME="${0#*/}"

        export EMU
        export PROGNAME

        # Store passed arguments since they will be erased by `set`
        ARGS="$@"

        # Start the VM, executing pre and post start hooks
        [ -f "$PRE_START_HOOK" ] && . "$PRE_START_HOOK"

        # Build an array of arguments to pass to exec later on
        # Build it here because this command will be used for logging.
        set -- "$BINDIR/erlexec" $FOREGROUNDOPTIONS \
            -boot "$REL_DIR/$BOOTFILE" -mode "$CODE_LOADING_MODE" -config "$SYS_CONFIG_PATH" \
            -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" \
            -args_file "$VMARGS_PATH" \
            -env ERL_LIBS "$REL_LIB_DIR" \
            -pa "$CONSOLIDATED_DIR" \
            ${ERL_OPTS} \
            -extra ${EXTRA_OPTS}

        # Dump environment info for logging purposes
        if [ ! -z $VERBOSE ]; then
            echo "Exec: $@" -- ${1+$ARGS}
            echo "Root: $ROOTDIR"
        fi;

        trap '{}' QUIT TERM KILL HUP USR1 USR2
        "$@" -- ${1+$ARGS} &
        __bg_pid=$!
        [ -f "$POST_START_HOOK" ] && . "$POST_START_HOOK"
        wait $__bg_pid
        ;;
    rpc)
        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        shift

        nodetool rpc $@
        ;;
    rpcterms)
        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        shift

        nodetool rpcterms $@
        ;;
    eval)
        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        shift
        nodetool "eval" $@
        ;;
    command)
        # Execute as command-line utility
        #
        # Like the escript command, this does not start the OTP application.
        # If your command depends on a running OTP application,
        # use
        #
        #     {:ok, _} = Application.ensure_all_started(:your_app)

        shift
        MODULE="$1"; shift
        FUNCTION="$1"; shift

        # Save extra arguments
        ARGS="$@"

        # Build arguments for erlexec
        set -- "$ERL_OPTS"
        [ "$SYS_CONFIG_PATH" ] && set -- "$@" -config "$SYS_CONFIG_PATH"
        set -- "$@" -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR"
        set -- "$@" -noshell
        set -- "$@" -boot start_clean
        set -- "$@" -s "$MODULE" "$FUNCTION"

        $BINDIR/erlexec $@ -extra $ARGS
        exit "$?"
        ;;
    *)
        __command_path="$REL_DIR/commands/$1"
        if [ -f "$__command_path" ]; then
            . "$__command_path"
        else
            echo "Usage: $REL_NAME {start|start_boot <file>|foreground|stop|restart|reboot|pid|ping|console|console_clean|console_boot <file>|attach|remote_console|upgrade|downgrade|install|escript|rpc|rpcterms|eval|command <module> <function> <args>}"
            exit 1
        fi
        ;;
esac

exit 0

#!/bin/sh

set -e

# Set VERBOSE to enable verbose logging of the boot script
#VERBOSE=true
# Path to this script
SCRIPT=$(readlink $0 || true)
if [ -z $SCRIPT ]; then
    SCRIPT=$0
fi;
# Parent directory of this script
SCRIPT_DIR="$(cd `dirname "$SCRIPT"` && pwd -P)"
# Root directory of all releases
RELEASE_ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd -P)"
# Name of the release
REL_NAME="<%= release_name %>"
# Current version of the release
REL_VSN="<%= release_version %>"
# Current version of ERTS being used
# If this is not present/unset, it will be detected
<%= unless is_nil(erts_vsn) do %>ERTS_VSN="<%= erts_vsn %>"<% end %>
# VM code loading mode, embedded by default, can also be interactive
# See http://erlang.org/doc/man/code.html
CODE_LOADING_MODE="${CODE_LOADING_MODE:-embedded}"
# Path to start_erl.data
START_ERL_DATA="$RELEASE_ROOT_DIR/releases/start_erl.data"
# Directory containing the current version of this release
REL_DIR="$RELEASE_ROOT_DIR/releases/$REL_VSN"
# The lib directory for this release
REL_LIB_DIR="$RELEASE_ROOT_DIR/lib"
# Options passed to erl
ERL_OPTS="<%= release.profile.erl_opts %>"
# When stdout is piped to a file, this is the directory those files will
# be stored in. defaults to /log in the release root directory
RUNNER_LOG_DIR="${RUNNER_LOG_DIR:-$RELEASE_ROOT_DIR/log}"
# A string of extra options to pass to erl, here for plugins
EXTRA_OPTS=""

# Pre-start/stop event hook paths
PRE_START_HOOK="$REL_DIR/hooks/pre_start"
POST_START_HOOK="$REL_DIR/hooks/post_start"
PRE_STOP_HOOK="$REL_DIR/hooks/pre_stop"
POST_STOP_HOOK="$REL_DIR/hooks/post_stop"

# Get node pid
get_pid() {
    if output="$(nodetool rpcterms os getpid)"
    then
        echo "$output" | sed -e 's/"//g'
        return 0
    else
        echo "$output"
        return 1
    fi
}

# Generate a unique nodename
gen_nodename() {
    id="longname$(gen_id)-${NAME}"
    "$BINDIR/erl" -boot start_clean -eval '[Host] = tl(string:tokens(atom_to_list(node()),"@")), io:format("~s~n", [Host]), halt()' -noshell ${NAME_TYPE} $id
}

# Generate a random id
gen_id() {
    od -t x -N 4 /dev/urandom | head -n1 | awk '{print $2}'
}

# Control a node
# Use like `nodetool "ping"`
nodetool() {
    command="$1"; shift

    "$ERTS_DIR/bin/escript" "$ROOTDIR/bin/nodetool" "$NAME_TYPE" "$NAME" \
                            -setcookie "$COOKIE" "$command" $@
}

# Run an escript in the node's environment
# Use like `escript "path/to/escript"`
escript() {
    shift; scriptpath="$1"; shift
    export RELEASE_ROOT_DIR

    "$ERTS_DIR/bin/escript" "$ROOTDIR/$scriptpath" $@
}

# Private. For determining the version of ERTS available to the release
_detect_erts_vsn() {
    erl -boot start_clean -eval 'Ver = erlang:system_info(version), io:format("~s~n", [Ver]), halt()' -noshell
}

# Private. Gets a list of code paths for this release
_get_code_paths() {
    erl -noshell -boot start_clean -eval "{ok, [{release,_,_,Apps}]} = file:consult(\"$REL_DIR/$REL_NAME.rel\"),lists:foreach(fun(A) -> io:fwrite(\"-pa $ROOTDIR/lib/~p-~s/ebin \", [element(1, A), element(2, A)]) end, Apps),halt()."
}

# Private. For setting ERTS_DIR and ROOTDIR
_find_erts_dir() {
    __erts_dir="$RELEASE_ROOT_DIR/erts-$ERTS_VSN"
    if [ -d "$__erts_dir" ]; then
        ERTS_DIR="$__erts_dir";
        ROOTDIR="$RELEASE_ROOT_DIR"
    else
        __erl="$(which erl)"
        code="io:format(\"~s\", [code:root_dir()]), halt()."
        __erl_root="$("$__erl" -noshell -eval "$code")"
        ERTS_DIR="$__erl_root/erts-$ERTS_VSN"
        ROOTDIR="$__erl_root"
    fi
}

# Private. Open a shell on a remote node
_rem_sh() {
    # Generate a unique id used to allow multiple remsh to the same node
    # transparently
    id="remsh$(gen_id)-${NAME}"

    # Get the node's ticktime so that we use the same thing.
    TICKTIME="$(nodetool rpcterms net_kernel get_net_ticktime)"

    # Setup remote shell command to control node
    if [ ! -z "$USE_ERL_SHELL" ]; then
        exec "$BINDIR/erl" \
            -hidden \
            -boot start_clean -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" \
            -kernel net_ticktime $TICKTIME \
            "$NAME_TYPE" "$id" -remsh "$NAME" -setcookie "$COOKIE"
    else
        __code_paths=$(_get_code_paths)
        exec "$BINDIR/erl" \
            -pa "$CONSOLIDATED_DIR" \
            ${__code_paths} \
            -hidden -noshell \
            -boot start_clean -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" \
            -kernel net_ticktime $TICKTIME \
            -user Elixir.IEx.CLI "$NAME_TYPE" "$id" -setcookie "$COOKIE" \
            -extra --no-halt +iex -"$NAME_TYPE" "$id" --cookie "$COOKIE" --remsh "$NAME"
    fi
}

# Output a start command for the last argument of run_erl
_start_command() {
    printf "exec \"%s\" \"%s\" -- %s %s" "$RELEASE_ROOT_DIR/bin/$REL_NAME" \
           "$START_OPTION" "${ARGS}" "${EXTRA_OPTS}"
}

# If ERTS_VSN is not set, detect it
if [ -z "$ERTS_VSN" ]; then
    ERTS_VSN="$(_detect_erts_vsn)"
    echo "$ERTS_VSN $REL_VSN" > "$START_ERL_DATA"
fi

# Allow override of where to look for config files
# By default it's $CWD/
if [ -z "$RELEASE_CONFIG_DIR" ]; then
    RELEASE_CONFIG_DIR="$RELEASE_ROOT_DIR"
fi

# Set VMARGS_PATH, the path to the vm.args file to use
# Use $RELEASE_CONFIG_DIR/vm.args if exists, otherwise releases/VSN/vm.args
if [ -z "$VMARGS_PATH" ]; then
    if [ -f "$RELEASE_CONFIG_DIR/vm.args" ]; then
        VMARGS_PATH="$RELEASE_CONFIG_DIR/vm.args"
    else
        VMARGS_PATH="$REL_DIR/vm.args"
    fi
fi

orig_vmargs_path="$VMARGS_PATH.orig"
if [ $REPLACE_OS_VARS ]; then
    #Make sure we don't break dev mode by keeping the symbolic link to
    #the user's vm.args
    if [ ! -L "$orig_vmargs_path" ]; then
       #we're in copy mode, rename the vm.args file to vm.args.orig
       mv "$VMARGS_PATH" "$orig_vmargs_path"
    fi

    awk '{while(match($0,"[$]{[^}]*}")) {var=substr($0,RSTART+2,RLENGTH -3);gsub("[$]{"var"}",ENVIRON[var])}}1' < "$orig_vmargs_path" > "$VMARGS_PATH"
 else
    #We don't need to replace env. vars, just rename the
    #symlink vm.args.orig to vm.args, and keep it as a
    #symlink.
    if [ -L "$orig_vmargs_path" ]; then
       mv "$orig_vmargs_path" "$VMARGS_PATH"
    fi
fi

# Make sure log directory exists
mkdir -p "$RUNNER_LOG_DIR"

# Set SYS_CONFIG_PATH, the path to the sys.config file to use
# Use $RELEASE_CONFIG_DIR/sys.config if exists, otherwise releases/VSN/sys.config
if [ -z "$SYS_CONFIG_PATH" ]; then
    if [ -f "$RELEASE_CONFIG_DIR/sys.config" ]; then
        SYS_CONFIG_PATH="$RELEASE_CONFIG_DIR/sys.config"
    else
        SYS_CONFIG_PATH="$REL_DIR/sys.config"
    fi
fi

orig_sys_config_path="$SYS_CONFIG_PATH.orig"
if [ $REPLACE_OS_VARS ]; then
    #Make sure we don't break dev mode by keeping the symbolic link to
    #the user's sys.config
    if [ ! -L "$orig_sys_config_path" ]; then
       #We're in copy mode, rename sys.config to sys.config.orig
       mv "$SYS_CONFIG_PATH" "$orig_sys_config_path"
    fi

    awk '{while(match($0,"[$]{[^}]*}")) {var=substr($0,RSTART+2,RLENGTH -3);gsub("[$]{"var"}",ENVIRON[var])}}1' < "$orig_sys_config_path" > "$SYS_CONFIG_PATH"
 else
    #We don't need to replace env. vars, just rename the
    #symlink sys.config.orig to sys.config. Keep it as
    #a symlink.
    if [ -L "$orig_sys_config_path" ]; then
       mv "$orig_sys_config_path"  "$SYS_CONFIG_PATH"
    fi
fi

# Extract the target node name from node.args
# Should be `-sname somename` or `-name somename@somehost`
NAME_ARG=$(egrep '^-s?name' "$VMARGS_PATH" || true)
if [ -z "$NAME_ARG" ]; then
    echo "vm.args needs to have either -name or -sname parameter."
    exit 1
fi

# Extract the name type and name from the NAME_ARG for REMSH
# NAME_TYPE should be -name or -sname
NAME_TYPE="$(echo "$NAME_ARG" | awk '{print $1}')"
# NAME will be either `somename` or `somename@somehost`
NAME="$(echo "$NAME_ARG" | awk '{print $2}')"

# Where the pipe will be stored when using `start`
# This is used so you can attach the running application to the current
# shell using `attach`
PIPE_DIR="${PIPE_DIR:-$RELEASE_ROOT_DIR/tmp/erl_pipes/$NAME/}"

# Extract the target cookie
COOKIE_ARG="$(grep '^-setcookie' "$VMARGS_PATH" || true)"
DEFAULT_COOKIE_FILE="$HOME/.erlang.cookie"
if [ -z "$COOKIE_ARG" ]; then
    if [ -f "$DEFAULT_COOKIE_FILE" ]; then
        COOKIE="$(cat "$DEFAULT_COOKIE_FILE")"
    else
        printf "a secret cookie must be provided in one of the following ways:\n  - with vm.args using the -setcookie parameter,\n  or\n  by writing the cookie to '$DEFAULT_COOKIE_FILE', with permissions set to 0400"
        exit 1
    fi
else
    # Extract cookie name from COOKIE_ARG
    COOKIE="$(echo "$COOKIE_ARG" | awk '{print $2}')"
fi

_find_erts_dir
export ROOTDIR="$RELEASE_ROOT_DIR"
export BINDIR="$ERTS_DIR/bin"
export EMU="beam"
export PROGNAME="erl"
export LD_LIBRARY_PATH="$ERTS_DIR/lib:$LD_LIBRARY_PATH"
ERTS_LIB_DIR="$ERTS_DIR/../lib"
CONSOLIDATED_DIR="$ROOTDIR/lib/${REL_NAME}-${REL_VSN}/consolidated"

cd "$ROOTDIR"

# User can specify an sname without @hostname
# This will fail when creating remote shell
# So here we check for @ and add @hostname if missing
case $NAME in
    *@*)
        # Nothing to do
        ;;
    *)
        NAME=$NAME@$(gen_nodename)
        ;;
esac

# Check the first argument for instructions
case "$1" in
    start|start_boot)

        # Make sure there is not already a node running
        #RES=`$NODETOOL ping`
        #if [ "$RES" = "pong" ]; then
        #    echo "Node is already running!"
        #    exit 1
        #fi
        # Save this for later.
        CMD=$1
        case "$1" in
            start)
                shift
                START_OPTION="console"
                HEART_OPTION="start"
                ;;
            start_boot)
                shift
                START_OPTION="console_boot"
                HEART_OPTION="start_boot"
                ;;
        esac
        ARGS="$@"
        RUN_PARAM="$@"

        [ -f "$PRE_START_HOOK" ] && . "$PRE_START_HOOK"

        # Set arguments for the heart command
        set -- "$SCRIPT_DIR/$REL_NAME" "$HEART_OPTION"
        [ "$RUN_PARAM" ] && set -- "$@" "$RUN_PARAM"

        # Export the HEART_COMMAND
        HEART_COMMAND="$RELEASE_ROOT_DIR/bin/$REL_NAME $CMD"
        export HEART_COMMAND

        mkdir -p "$PIPE_DIR"

        "$BINDIR/run_erl" -daemon "$PIPE_DIR" "$RUNNER_LOG_DIR" \
                          "$(_start_command)"

        [ -f "$POST_START_HOOK" ] && . "$POST_START_HOOK"
        ;;

    stop)
        [ -f "$PRE_STOP_HOOK" ] && . "$PRE_STOP_HOOK"
        # Wait for the node to completely stop...
        PID="$(get_pid)"
        if ! nodetool "stop"; then
            exit 1
        fi
        while $(kill -s 0 "$PID" 2>/dev/null);
        do
            sleep 1
        done
        [ -f "$POST_STOP_HOOK" ] && . "$POST_STOP_HOOK"
        ;;

    restart)
        [ -f "$PRE_START_HOOK" ] && . "$PRE_START_HOOK"
        ## Restart the VM without exiting the process
        if ! nodetool "restart"; then
            exit 1
        fi
        ;;

    reboot)
        [ -f "$PRE_START_HOOK" ] && . "$PRE_START_HOOK"
        ## Restart the VM completely (uses heart to restart it)
        if ! nodetool "reboot"; then
            exit 1
        fi
        ;;

    pid)
        ## Get the VM's pid
        if ! get_pid; then
            exit 1
        fi
        ;;

    ping)
        ## See if the VM is alive
        if ! nodetool "ping"; then
            exit 1
        fi
        ;;

    escript)
        ## Run an escript under the node's environment
        if ! escript $@; then
            exit 1
        fi
        ;;

    attach)
        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        shift
        exec "$BINDIR/to_erl" "$PIPE_DIR"
        ;;

    remote_console)
        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        shift
        _rem_sh
        ;;

    upgrade|downgrade|install)
        if [ -z "$2" ]; then
            echo "Missing package argument"
            echo "Usage: $REL_NAME $1 {package base name}"
            echo "NOTE {package base name} MUST NOT include the .tar.gz suffix"
            exit 1
        fi

        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        exec "$BINDIR/escript" "$ROOTDIR/bin/install_upgrade.escript" \
             "install" "$REL_NAME" "$NAME_TYPE" "$NAME" "$COOKIE" "$2"
        ;;

    unpack)
        if [ -z "$2" ]; then
            echo "Missing package argument"
            echo "Usage: $REL_NAME $1 {package base name}"
            echo "NOTE {package base name} MUST NOT include the .tar.gz suffix"
            exit 1
        fi

        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        exec "$BINDIR/escript" "$ROOTDIR/bin/install_upgrade.escript" \
             "unpack" "$REL_NAME" "$NAME_TYPE" "$NAME" "$COOKIE" "$2"
        ;;

    console|console_clean|console_boot)
        # .boot file typically just $REL_NAME (ie, the app name)
        # however, for debugging, sometimes start_clean.boot is useful.
        # For e.g. 'setup', one may even want to name another boot script.
        case "$1" in
            console)
                if [ -f "$REL_DIR/$REL_NAME.boot" ]; then
                  BOOTFILE="$REL_DIR/$REL_NAME"
                else
                  BOOTFILE="$REL_DIR/start"
                fi
                ;;
            console_clean)
                BOOTFILE="$ROOTDIR/bin/start_clean"
                ;;
            console_boot)
                shift
                BOOTFILE="$1"
                shift
                ;;
        esac
        # Setup beam-required vars
        EMU="beam"
        PROGNAME="${0#*/}"

        export EMU
        export PROGNAME

        # Store passed arguments since they will be erased by `set`
        ARGS="$@"

        # Start the VM, executing pre_start hook along
        # the way. We can't run the post_start hook because
        # the console will crash with no TTY attached
        [ -f "$PRE_START_HOOK" ] && . "$PRE_START_HOOK"

        __code_paths=$(_get_code_paths)
        # Build an array of arguments to pass to exec later on
        # Build it here because this command will be used for logging.
        set -- "$BINDIR/erlexec" \
            -boot "$BOOTFILE" \
            -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" \
            -env ERL_LIBS "$REL_LIB_DIR" \
            -pa "$CONSOLIDATED_DIR" \
            ${__code_paths} \
            -args_file "$VMARGS_PATH" \
            -config "$SYS_CONFIG_PATH" \
            -mode "$CODE_LOADING_MODE" \
            ${ERL_OPTS} \
            -user Elixir.IEx.CLI \
            -extra --no-halt +iex

        # Dump environment info for logging purposes
        if [ ! -z $VERBOSE ]; then
            echo "Exec: $@" -- ${1+$ARGS} ${EXTRA_OPTS}
            echo "Root: $ROOTDIR"

            # Log the startup
            echo "$RELEASE_ROOT_DIR"
        fi;

        logger -t "$REL_NAME[$$]" "Starting up"

        exec "$@" -- ${1+$ARGS} ${EXTRA_OPTS}
        ;;

    foreground)
        # start up the release in the foreground for use by runit
        # or other supervision services

        [ -f "$REL_DIR/$REL_NAME.boot" ] && BOOTFILE="$REL_NAME" || BOOTFILE=start
        FOREGROUNDOPTIONS="-noshell -noinput +Bd"

        # Setup beam-required vars
        EMU=beam
        PROGNAME="${0#*/}"

        export EMU
        export PROGNAME

        # Store passed arguments since they will be erased by `set`
        ARGS="$@"

        # Start the VM, executing pre and post start hooks
        [ -f "$PRE_START_HOOK" ] && . "$PRE_START_HOOK"

        # Build an array of arguments to pass to exec later on
        # Build it here because this command will be used for logging.
        set -- "$BINDIR/erlexec" $FOREGROUNDOPTIONS \
            -boot "$REL_DIR/$BOOTFILE" -mode "$CODE_LOADING_MODE" -config "$SYS_CONFIG_PATH" \
            -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" \
            -args_file "$VMARGS_PATH" \
            -env ERL_LIBS "$REL_LIB_DIR" \
            -pa "$CONSOLIDATED_DIR" \
            ${ERL_OPTS} \
            -extra ${EXTRA_OPTS}

        # Dump environment info for logging purposes
        if [ ! -z $VERBOSE ]; then
            echo "Exec: $@" -- ${1+$ARGS}
            echo "Root: $ROOTDIR"
        fi;

        trap '{}' QUIT TERM KILL HUP SIGUSR1 SIGUSR2
        "$@" -- ${1+$ARGS} &
        __bg_pid=$!
        [ -f "$POST_START_HOOK" ] && . "$POST_START_HOOK"
        wait $__bg_pid
        ;;
    rpc)
        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        shift

        nodetool rpc $@
        ;;
    rpcterms)
        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        shift

        nodetool rpcterms $@
        ;;
    eval)
        # Make sure a node IS running
        if ! nodetool "ping" > /dev/null; then
            echo "Node is not running!"
            exit 1
        fi

        shift
        nodetool "eval" $@
        ;;
    command)
        # Execute as command-line utility
        #
        # Like the escript command, this does not start the OTP application.
        # If your command depends on a running OTP application,
        # use
        #
        #     {:ok, _} = Application.ensure_all_started(:your_app)

        shift
        MODULE="$1"; shift
        FUNCTION="$1"; shift

        # Save extra arguments
        ARGS="$@"

        # Build arguments for erlexec
        set -- "$ERL_OPTS"
        [ "$SYS_CONFIG_PATH" ] && set -- "$@" -config "$SYS_CONFIG_PATH"
        set -- "$@" -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR"
        set -- "$@" -noshell
        set -- "$@" -boot start_clean
        set -- "$@" -s "$MODULE" "$FUNCTION"

        $BINDIR/erlexec $@ -extra $ARGS
        exit "$?"
        ;;
    *)
        __command_path="$REL_DIR/commands/$1"
        if [ -f "$__command_path" ]; then
            . "$__command_path"
        else
            echo "Usage: $REL_NAME {start|start_boot <file>|foreground|stop|restart|reboot|pid|ping|console|console_clean|console_boot <file>|attach|remote_console|upgrade|downgrade|install|escript|rpc|rpcterms|eval|command <module> <function> <args>}"
            exit 1
        fi
        ;;
esac

exit 0


enable pagination of domains

enable pagination of domains

<%= gettext("Domain") %>: <%= @domain.domain %>

<%= if Canada.Can.can? @current_user, :edit, @domain do %>

    <%= link gettext("Edit"), to: backend_domain_path(@conn, :edit, @domain), class: "c-button" %>

<% end %>

<%= gettext("Entries") %>

<%= render SignDictWeb.Backend.SharedView, "entries_table.html", conn: @conn, entries: @entries %>

<%= pagination_links @entries %>

<%= gettext("Domain") %>: <%= @domain.domain %>

<%= if Canada.Can.can? @current_user, :edit, @domain do %>

    <%= link gettext("Edit"), to: backend_domain_path(@conn, :edit, @domain), class: "c-button" %>

<% end %>

<%= gettext("Entries") %>

<%= render SignDictWeb.Backend.SharedView, "entries_table.html", conn: @conn, entries: @entries %>

<%#= pagination_links @entries %>