Restrict new course button to coordinators.

      Courses

    <%= if @conn.assigns.current_user.role == "Coordinator" do %>

        <%= link "New course", to: offered_course_path(@conn, :new), class: "mdl-button mdl-js-button mdl-button--raised" %>

    <% end %>

        Course type
        Term name
        Term start date
        Term end date
        Number of sessions

      <%= Enum.with_index(@offered_courses) |> Enum.map(fn {offered_course,index} -> %>

            <%= offered_course.course.name %>

            <%= offered_course.term.name %>

            <%= offered_course.term.start_date %>

            <%= offered_course.term.end_date %>

            <%= offered_course.number_of_sessions %>

            <button id="tr_menu_<%= offered_course.id %>"
                    class="mdl-button mdl-js-button mdl-button--icon"
            >
              more_vert
            </button>
            <ul
              class="
                mdl-menu mdl-js-menu
                <%=
                  if index > 10 and index > length(@offered_courses)-4 do
                    'mdl-menu--top-right'
                  else
                    'mdl-menu--bottom-right'
                  end
                %>
              "
              for="tr_menu_<%= offered_course.id %>"
            >

                <%= link "Show", to: offered_course_path(@conn, :show, offered_course) %>

              <%= if @conn.assigns.current_user.role == "Coordinator" do %>

                  <%= link "Edit", to: offered_course_path(@conn, :edit, offered_course) %>

                  <%= link "Delete", to: offered_course_path(@conn, :delete, offered_course), method: :delete,
                  data: [confirm: """
                  Are you sure?
                  All of its attached classes and relevant attendances will be removed.
                  """] %>

              <% end %>

      <% end) %>

      Courses

      <%= link "New course", to: offered_course_path(@conn, :new), class: "mdl-button mdl-js-button mdl-button--raised" %>

        Course type
        Term name
        Term start date
        Term end date
        Number of sessions

      <%= Enum.with_index(@offered_courses) |> Enum.map(fn {offered_course,index} -> %>

            <%= offered_course.course.name %>

            <%= offered_course.term.name %>

            <%= offered_course.term.start_date %>

            <%= offered_course.term.end_date %>

            <%= offered_course.number_of_sessions %>

            <button id="tr_menu_<%= offered_course.id %>"
                    class="mdl-button mdl-js-button mdl-button--icon"
            >
              more_vert
            </button>
            <ul
              class="
                mdl-menu mdl-js-menu
                <%=
                  if index > 10 and index > length(@offered_courses)-4 do
                    'mdl-menu--top-right'
                  else
                    'mdl-menu--bottom-right'
                  end
                %>
              "
              for="tr_menu_<%= offered_course.id %>"
            >

                <%= link "Show", to: offered_course_path(@conn, :show, offered_course) %>

              <%= if @conn.assigns.current_user.role == "Coordinator" do %>

                  <%= link "Edit", to: offered_course_path(@conn, :edit, offered_course) %>

                  <%= link "Delete", to: offered_course_path(@conn, :delete, offered_course), method: :delete,
                  data: [confirm: """
                  Are you sure?
                  All of its attached classes and relevant attendances will be removed.
                  """] %>

              <% end %>

      <% end) %>


Fix the equality comparison in windows batch files (#541)

According to [documentation](https://ss64.com/nt/if.html),
equality comparison in Windows batch files should use the
[`equ` operator](https://ss64.com/nt/equ.html).

The previous version would output `eq was unexpected at this time.`

:: Discover the current release directory from the directory
:: of this script and the start_erl.data file
@echo off
set script_dir=%~dp0
for %%A in ("%script_dir%\..") do (
  set release_root_dir=%%~fA
)
set rel_name=<%= release_name %>
set rel_vsn=<%= release_version %>
set boot_script=%release_root_dir%\releases\%rel_vsn%\%rel_name%.ps1

:: Use pwsh.exe rather than powershell.exe if available
set prog=powershell
where pwsh >nul 2>nul
if %ERRORLEVEL% equ 0 (
  set prog=pwsh
)
%prog% -NonInteractive -NoProfile -ExecutionPolicy Bypass -Command "& "%boot_script%" @args" %*

:: Discover the current release directory from the directory
:: of this script and the start_erl.data file
@echo off
set script_dir=%~dp0
for %%A in ("%script_dir%\..") do (
  set release_root_dir=%%~fA
)
set rel_name=<%= release_name %>
set rel_vsn=<%= release_version %>
set boot_script=%release_root_dir%\releases\%rel_vsn%\%rel_name%.ps1

:: Use pwsh.exe rather than powershell.exe if available
set prog=powershell
where pwsh >nul 2>nul
if %ERRORLEVEL% eq 0 (
  set prog=pwsh
)
%prog% -NonInteractive -NoProfile -ExecutionPolicy Bypass -Command "& "%boot_script%" @args" %*


footer

footer

Panoptikum

META

Code of Conduct

Complaints

Community

Imprint

ABOUT

Blog

About

Talks

FAQ

DEMO

Random

Podcasters

The huge podcast list

Podcast Buttons

SUPPORTED BY

Stefan a.k.a. Informatom

Community Manager Sonja

Mittenin.at

Vienna Beamers

      Hosted by Informatom EDV-Dienstleistungen e.U.

Panoptikum

META

Code of Conduct

Complaints

Community

Imprint

ABOUT

Blog

About

Talks

DEMO

Random

Podcasters

The huge podcast list

Podcast Buttons

SUPPORTED BY

Stefan a.k.a. Informatom

Community Manager Sonja

Mittenin.at

Vienna Beamers

      Hosted by Informatom EDV-Dienstleistungen e.U.


Tweak Rules page styling

Tweak Rules page styling

Teilnahmeregeln

  Hier erfährst du, wie du an “Jugend musiziert” teilnehmen kannst.

Bitte lies dir zunächst die aktuelle Ausschreibung durch. Dort findest du unter anderem die Altersgruppen, Teilnahmebedingungen sowie alle offiziellen Kategorien:

      <%= icon_link "file", "Ausschreibung 2019", static_path(@conn, "/resources/Ausschreibung_2019.pdf"), class: "btn btn-info" %>

In der Region Nord- und Osteuropa bestehen zusätzlich die folgenden Sonderregelungen:

Populäre Musik

Erweiterung offizieller Pop-Kategorien

Grundsätzlich gilt: Ist eine Pop-Kategorie offiziell ausgeschrieben, gelten für sie die Regeln der Ausschreibung. Eine Weiterleitung ist dann je nach Altersgruppe bis zum Bundeswettbewerb möglich.

Die Region Nord- und Osteuropa erweitert diese Kategorie(n) um die Sonderregelung, dass im Landeswettbewerb bis zu drei jugendliche Begleiter mitwirken können, deren gemeinsame Altersgruppe zwischen III und VI liegen muss. Sie müssen im Regionalwettbewerb ebenfalls 23 Punkte erreicht haben und werden gesondert als Begleitgruppe gewertet. Für den Bundeswettbewerb gilt dann nur noch die offizielle Ausschreibung.

Sonderkategorien

In der Region Nord- und Osteuropa werden außerdem die untenstehenden Sonderkategorien angeboten. In diesen ist die Teilnahme grundsätzlich nur in den Altersgruppen III–VI (bei Gesangskategorien: III–VII) möglich, und sie führen nur bis zum Landeswettbewerb.

Für die Begleitgruppe wird eine gemeinsame Altersgruppe errechnet, die zwischen III und VI liegen muss.

              Instrumental-Solo (Pop)

Zugelassen sind alle elektronisch verstärkten Instrumente, für die im Wettbewerbsjahr keine offizielle Pop-Kategorie ausgeschrieben ist. Ebenfalls erlaubt sind akustische Instrumente, nicht jedoch Klavier. Eine Teilnahme mit Keyboard ist dagegen möglich, sofern dessen klangtechnische Möglichkeiten ausgeschöpft werden.

Empfohlen wird eine große Bandbreite an Stilistiken und Techniken der populären Musik. Bei elektronisch verstärkten Instrumenten empfiehlt sich die Verwendung unterschiedlicher Sounds. Bei akustischen Instrumenten sollten auch Spieltechniken verwendet werden, die bei der Interpretation klassischer Musik nicht üblich sind.

Vorspielprogramm

Ein Titel muss völlig unbegleitet präsentiert werden. Bei begleiteten Titeln muss die solistische Rolle klar zum Tragen kommen, z.B. in Form eines Instrumentalsolos.

Nur ein Titel darf mit Playback begleitet werden. Der eigene Part darf nicht im Playback gedoppelt sein.

Bei höchstens einem Werk ist ein Loop zulässig.

Die Auftrittszeit (siehe Tabelle) darf einschließlich Umbau und Stimmen nicht überschritten werden.

                  Altersgruppe
                  Programm
                  Auftrittszeit

                  III
                  mindestens zwei stilistisch unterschiedliche Titel
                  10–15 Minuten

                  IV
                  mindestens drei stilistisch unterschiedliche Titel, darunter eine eigene Komposition oder Improvisation
                  10–15 Minuten

                  V und VI
                  mindestens drei stilistisch unterschiedliche Titel, darunter eine eigene Komposition oder Improvisation
                  15–20 Minuten

Begleiter

Zugelassen für alle Altersgruppen sind bis zu drei jugendliche Begleiter, die gesondert als Begleitgruppe bewertet werden. Gewertet wird nur, wer an mindestens zwei Stücken mitwirkt. Auch Begleitgruppen brauchen für eine Weiterleitung mindestens 23 Punkte. Alternativ ist auch ein erwachsener, nicht zu bewertender Begleiter möglich.

“Kinder musizieren” (Kimu)

Der Wettbewerb “Kinder musizieren” wird mittlerweile an zahlreichen Schulen der Region Nord- und Osteuropa angeboten. Es kann mit einem beliebigen Instrument oder Gesang teilgenommen werden. Auch Mehrfachteilnahmen und Ensemblespiel sind erlaubt.

Empfohlen wird Kimu besonders für Instrumentalanfänger, die noch keine oder wenig Bühnenerfahrung besitzen. Kimu ist der sanfte Einstieg, bei dem die Motivation zum Weitermachen im Vordergrund steht.

      Teilnahmeanforderungen:

Mindestens zwei Stücke unterschiedlichen Charakters (z.B. schnell – langsam)

Vorspieldauer: höchstens 5 Minuten

Die Anmeldung findet, genau wie für den "großen" Jumu-Wettbewerb, über diese Website statt. Dazu einfach auf der <%= link "Anmeldeseite", to: page_path(@conn, :registration) %> den Kimu-Wettbewerb der jeweiligen Schule auswählen!

Teilnahmeregeln

  Hier erfährst du, wie du an “Jugend musiziert” teilnehmen kannst.

Bitte lies dir zunächst die aktuelle Ausschreibung durch. Dort findest du unter anderem die Altersgruppen, Teilnahmebedingungen sowie alle offiziellen Kategorien:

      <%= icon_link "file", "Ausschreibung 2019", static_path(@conn, "/resources/Ausschreibung_2019.pdf"), class: "btn btn-link" %>

In der Region Nord- und Osteuropa bestehen zusätzlich die folgenden Sonderregelungen:

Populäre Musik

1. Erweiterung offizieller Pop-Kategorien

Grundsätzlich gilt: Ist eine Pop-Kategorie offiziell ausgeschrieben, gelten für sie die Regeln der Ausschreibung. Eine Weiterleitung ist dann je nach Altersgruppe bis zum Bundeswettbewerb möglich.

Die Region Nord- und Osteuropa erweitert diese Kategorie(n) um die Sonderregelung, dass im Landeswettbewerb bis zu drei jugendliche Begleiter mitwirken können, deren gemeinsame Altersgruppe zwischen III und VI liegen muss. Sie müssen im Regionalwettbewerb ebenfalls 23 Punkte erreicht haben und werden gesondert als Begleitgruppe gewertet. Für den Bundeswettbewerb gilt dann nur noch die offizielle Ausschreibung.

2. Sonderkategorien

In der Region Nord- und Osteuropa werden außerdem die untenstehenden Sonderkategorien angeboten. In diesen ist die Teilnahme grundsätzlich nur in den Altersgruppen III–VI (bei Gesangskategorien: III–VII) möglich, und sie führen nur bis zum Landeswettbewerb.

Für die Begleitgruppe wird eine gemeinsame Altersgruppe errechnet, die zwischen III und VI liegen muss.

              Instrumental-Solo (Pop)

Zugelassen sind alle elektronisch verstärkten Instrumente, für die im Wettbewerbsjahr keine offizielle Pop-Kategorie ausgeschrieben ist. Ebenfalls erlaubt sind akustische Instrumente, nicht jedoch Klavier. Eine Teilnahme mit Keyboard ist dagegen möglich, sofern dessen klangtechnische Möglichkeiten ausgeschöpft werden.

Empfohlen wird eine große Bandbreite an Stilistiken und Techniken der populären Musik. Bei elektronisch verstärkten Instrumenten empfiehlt sich die Verwendung unterschiedlicher Sounds. Bei akustischen Instrumenten sollten auch Spieltechniken verwendet werden, die bei der Interpretation klassischer Musik nicht üblich sind.

Vorspielprogramm

Ein Titel muss völlig unbegleitet präsentiert werden. Bei begleiteten Titeln muss die solistische Rolle klar zum Tragen kommen, z.B. in Form eines Instrumentalsolos.

Nur ein Titel darf mit Playback begleitet werden. Der eigene Part darf nicht im Playback gedoppelt sein.

Bei höchstens einem Werk ist ein Loop zulässig.

Die Auftrittszeit (siehe Tabelle) darf einschließlich Umbau und Stimmen nicht überschritten werden.

                  Altersgruppe
                  Programm
                  Auftrittszeit

                  III
                  mindestens zwei stilistisch unterschiedliche Titel
                  10–15 Minuten

                  IV
                  mindestens drei stilistisch unterschiedliche Titel, darunter eine eigene Komposition oder Improvisation
                  10–15 Minuten

                  V und VI
                  mindestens drei stilistisch unterschiedliche Titel, darunter eine eigene Komposition oder Improvisation
                  15–20 Minuten

Begleiter

Zugelassen für alle Altersgruppen sind bis zu drei jugendliche Begleiter, die gesondert als Begleitgruppe bewertet werden. Gewertet wird nur, wer an mindestens zwei Stücken mitwirkt. Auch Begleitgruppen brauchen für eine Weiterleitung mindestens 23 Punkte. Alternativ ist auch ein erwachsener, nicht zu bewertender Begleiter möglich.

“Kinder musizieren” (Kimu)

Der Wettbewerb “Kinder musizieren” wird mittlerweile an zahlreichen Schulen der Region Nord- und Osteuropa angeboten. Es kann mit einem beliebigen Instrument oder Gesang teilgenommen werden. Auch Mehrfachteilnahmen und Ensemblespiel sind erlaubt.

Empfohlen wird Kimu besonders für Instrumentalanfänger, die noch keine oder wenig Bühnenerfahrung besitzen. Kimu ist der sanfte Einstieg, bei dem die Motivation zum Weitermachen im Vordergrund steht.

      Teilnahmeanforderungen:

Mindestens zwei Stücke unterschiedlichen Charakters (z.B. schnell – langsam)

Vorspieldauer: höchstens 5 Minuten

Die Anmeldung findet, genau wie für den "großen" Jumu-Wettbewerb, über diese Website statt. Dazu einfach auf der <%= link "Anmeldeseite", to: page_path(@conn, :registration) %> den Kimu-Wettbewerb der jeweiligen Schule auswählen!


processus

processus

<%= render Matrice.PageView, "_section_header.html", title: "processus" %>

Co-créer des laboratoires de projets avec les partenaires

Chaque Matrice est thématique et se crée autour d’un grand partenaire. Dans ce programme, les étudiants sont confrontés à des institutions publiques, des entreprises, des laboratoires de recherche, tous porteurs d’enjeux d’ampleur.

Sont alors crées des équipes constituées d’étudiants d’origine différentes et connectées avec des professionnels portant les problématiques.

Toutes les équipes constituées autour d’un même enjeu formeront une « Matrice », c’est à dire un laboratoire de projets.

          <img src="<%= static_path(@conn, "/images/processus/1.jpg") %>" alt="Un programme de formation">

En chiffres

          Une Matrice c’est :

1 ou 2 grands partenaires institutionnels ou privés

Un processus de formation en 10 mois, décliné en 4 phases  (Immersion, Élaboration, Production, Action)

20 à 40 étudiants

2 à 4 écoles et universités mobilisées, dont 42

4 à 8 projets créés et développés

Un dispositif en 4 phases

Le dispositif s’articule en 4 grandes phases et nécessite, en amont, un temps spécifique, avec les partenaires, destiné au ciblage des besoins et des enjeux : choix des experts, implication de l’institution ou de l’entreprise, identification des écoles et des universités, recrutement spécifique des étudiants.

Le programme de formation à proprement parler dure en moyenne 10 mois et comprend 3 niveaux d’accompagnement :

la connaissance du sujet (contexte, environnement, histoire, enjeux) ;

la conceptualisation du projet et sa mise en production ;

la gestion humaine du collectif, dans le but d’acquérir une identité d’entrepreneur.

Les principales phases du programme de formation

          <img src="<%= static_path(@conn, "/images/graph.png") %>" alt="Les principales phases du programme de formation">

Phase 1 / Immersion

Les étudiants plongent dans le sujet et la problématique. C’est une phase de rencontres destinée à créer une communauté mixte.

Rencontre des étudiants entre eux, et début de métissage entre des personnes issues d’écoles différentes aux langages, modes de pensées et méthodologies distinctes. L’équipe pédagogique est là pour poser le cadre de cette rencontre et de la coopération future.

Rencontre avec un partenaire, un milieu et sa culture spécifique : codes, vocabulaire, représentations. Des acteurs ou experts viennent présenter aux étudiants les enjeux importants qui les animent.

Cette phase très intense se termine par un sprint créatif à l’issue duquel de premiers groupes d’étudiants sont constitués autour d’idées validées par une communauté de spécialistes.

Phase 2 / Élaboration

C’est la phase de construction et de maturation des équipes et des idées.

Elle a deux enjeux principaux : la transformation d’un groupe d’étudiants en équipe véritable et la maturation d’une idée en projet viable.
          Les étudiants vont sur le terrain, rencontrent les acteurs-clés et réalisent une étude de l’environnement afin d’aboutir à un projet réellement innovant.
          L’originalité de ce moment est qu’il n’est pas seulement une phase de conception innovante, mais une étape d’un processus où les équipes sont invitées à vivre le collectif tout en développant leurs projets.

Phase 3 / Production

Cette phase permet de passer du concept au produit.

Elle correspond à la transformation des projets en objets réels, pensés et réalisés. Sous forme de modélisation (2D, 3D), de maquette, ou bien de démonstrateur fonctionnel, les prototypes permettent de réaliser des tests partiels afin de valider ou non les choix effectués lors de la phase d’élaboration.

Du prototypage jusqu’aux enjeux juridiques et modèle économique viable, le projet est envisagé sous toutes ses facettes en vue d’une solution la plus complète possible.

Phase 4 / Action

Après la production, vient le lancement et la mise à l’épreuve de la solution et de l’équipe dans un premier environnement facilité. L’accompagnement des équipes projets se poursuit sur le terrain en situation réelle par une phase de co-développement au sein d’une coopérative d’activité et d’emploi. Conçu dans une véritable dimension collective, cette structure permet d’intégrer toutes les Matrices projet dans une aventure entrepreneuriale commune (échange de ressources, de compétences, réseautage, aide structurelle…). Le but étant d’accélérer l’entrée dans la vie économique et de favoriser la croissance.

A l’issue du programme de formation, quels qu’en soient les formats finaux (startup, business unit…), la Matrice donnera naissance à des projets pertinents et insérés dans un écosystème, mais aussi à des étudiants capables d’innover et d’entreprendre. Pour ceux qui le souhaitent s’ouvre alors une phase d’Expansion. Un accompagnement stratégique transversal est proposé pour accélérer le développement, multiplier les opportunités et continuer à penser les projets dans une perspective collaborative.

        <quote>“Matrice est un programme tout terrain, ouvert à chaque champ professionnel, chaque entreprise, chaque collectivité ou institution publique…”</quote>

Un processus complet pour les étudiants

Le programme de formation vise une transformation des étudiants en innovateurs à travers un processus complet centré sur l’apprentissage personnel, la responsabilisation et l’autonomisation, la compréhension du fonctionnement d’un collectif et le développement d’un esprit critique.

Un levier de transformation pour les partenaires

En se déployant sur un sujet, avec une institution ou une entreprise, Matrice se fait aussi programme de formation professionnelle pour des collaborateurs ou agents embarqués dans la transformation réelle, concrète et par le faire, de l’entreprise ou de l’institution publique à laquelle ils appartiennent.

En ce sens, Matrice est un véritable levier de transformation donnant accès à une force de développement.

En savoir +

          <img src="<%= static_path(@conn, "/images/academie-pedago/matrice-arts.jpg") %>" alt="Un programme de formation">


Add ability to not flash firmware from configurator

    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> Configure your firmware </title>
    <link rel="stylesheet" href="/styles.css">

Configure your FarmBot

Firmware

        Your firmware is flashing.

        <form action=configure_firmware method=post>
          <fieldset>
            <select id="firmware_hardware" name=firmware_hardware>
              <option value="arduino"> Arduino/RAMPS (Genesis v1.2) </option>
              <option value="farmduino"> Farmduino (Genesis v1.3) </option>
              <option value="farmduino_k14"> Farmduino (Genesis v1.4) </option>
              <option value="custom"> Custom board </option>
            </select>
          </fieldset>

      <input type=submit value="next">

    </form>

    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> Configure your firmware </title>
    <link rel="stylesheet" href="/styles.css">

Configure your FarmBot

Firmware

        Your firmware is flashing.

        <form action=configure_firmware method=post>
          <fieldset>
            <select id="firmware_hardware" name=firmware_hardware>
              <option value="arduino"> Arduino/RAMPS (Genesis v1.2) </option>
              <option value="farmduino"> Farmduino (Genesis v1.3) </option>
              <option value="farmduino_k14"> Farmduino (Genesis v1.4) </option>
            </select>
          </fieldset>

      <input type=submit value="next">

    </form>


fix links

fix links

Panoptikum.io

META

Code of Conduct

Privacy

Complaints

Community

Imprint

ABOUT

About

Blog

Talks

FAQ

DEMO

Random

Podcasters + Personas

New podcasts

New episodes

Podcast Buttons

SUPPORTED BY

Stefan a.k.a. Informatom

Community Manager Sonja

Mittenin.at

Vienna Beamers

      Hosted by Informatom EDV-Dienstleistungen e.U.

Panoptikum.io

META

Code of Conduct

Privacy

Complaints

Community

Imprint

ABOUT

About

Blog

Talks

FAQ

DEMO

Random

Podcasters

New podcasts

New episodes

Podcast Buttons

SUPPORTED BY

Stefan a.k.a. Informatom

Community Manager Sonja

Mittenin.at

Vienna Beamers

      Hosted by Informatom EDV-Dienstleistungen e.U.


Add extra verbiage to login step of configurator

<!DOCTYPE html>

    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> Configure your Farmbot account </title>
    <link rel="stylesheet" href="/styles.css">

Configure FarmBot <%= version %>

FarmBot Web App Account

        <form method=post action=configure_credentials>
          <fieldset>
            Email
            <input value="<%= email %>" type="email" name="email" required>

            Password

              <input value="<%= password %>" type="password" name="password" id="password" required>

             Server
            <input value="<%= server %>" type="url" name=server required>

          </fieldset>

            WARNING:

            Entering a bad password or email at this step will result in a CODE 24 error.
            The device will not come online and you will need to re-run configurator.

            Always double check your email and password before proceeding.

      <input type="submit" value="Finish">

    </form>

<!DOCTYPE html>

    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> Configure your Farmbot account </title>
    <link rel="stylesheet" href="/styles.css">

Configure FarmBot <%= version %>

FarmBot Web App Account

        <form method=post action=configure_credentials>
          <fieldset>
            Email
            <input value="<%= email %>" type="email" name="email" required>

            Password

              <input value="<%= password %>" type="password" name="password" id="password" required>

             Server
            <input value="<%= server %>" type="url" name=server required>

          </fieldset>

      <input type="submit" value="Finish">

    </form>


Perf: (nit) serve favicon from CDN

Perf: (nit) serve favicon from CDN

<!DOCTYPE html>

    <link rel="shortcut icon" href="<%= Routes.static_url(@conn, "/favicon.ico") %>">
    <%= if Application.get_env(:remote_retro, :env) == :prod do %>

    <% else %>

    <% end %>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="A real-time application for conducting Agile retrospectives">
    <meta name="google-site-verification" content="T5W8sjrjt-BmTK5SYTjPM-FQZD8oGNatTNAJSyRex7o" />
    <meta name="author" content="">
    <title><%= assigns[:title] || "RemoteRetro.org | Free. World-class. Agile retrospectives." %></title>

    <link rel="stylesheet" href="<%= Routes.static_url(@conn, "/css/semantic-ui/semantic.min.css") %>">
    <link rel="stylesheet" href="<%= app_css(@conn) %>">
    <link rel="apple-touch-icon" href="<%= Routes.static_url(@conn, "/images/apple-touch-icon.png") %>">

    <%= if Application.get_env(:remote_retro, :env) == :test do %>

    <% end %>

  <body class="<%= assigns[:body_class] %>">

    <%= unless assigns[:omit_header] do %>

RemoteRetro

Built by

<img height="21" width="21" src="<%= Routes.static_url(@conn, "/images/stride_logo.png") %>" alt="Stride" />

          <%= if assigns[:current_user] do %>

              Log Out

          <% end %>

    <% end %>
      <%= @inner_content %>

    <%= if assigns[:include_js] do %>

    <% end %>

<!DOCTYPE html>

    <%= if Application.get_env(:remote_retro, :env) == :prod do %>

    <% else %>

    <% end %>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="A real-time application for conducting Agile retrospectives">
    <meta name="google-site-verification" content="T5W8sjrjt-BmTK5SYTjPM-FQZD8oGNatTNAJSyRex7o" />
    <meta name="author" content="">
    <title><%= assigns[:title] || "RemoteRetro.org | Free. World-class. Agile retrospectives." %></title>

    <link rel="stylesheet" href="<%= Routes.static_url(@conn, "/css/semantic-ui/semantic.min.css") %>">
    <link rel="stylesheet" href="<%= app_css(@conn) %>">
    <link rel="apple-touch-icon" href="<%= Routes.static_url(@conn, "/images/apple-touch-icon.png") %>">

    <%= if Application.get_env(:remote_retro, :env) == :test do %>

    <% end %>

  <body class="<%= assigns[:body_class] %>">

    <%= unless assigns[:omit_header] do %>

RemoteRetro

Built by

<img height="21" width="21" src="<%= Routes.static_url(@conn, "/images/stride_logo.png") %>" alt="Stride" />

          <%= if assigns[:current_user] do %>

              Log Out

          <% end %>

    <% end %>
      <%= @inner_content %>

    <%= if assigns[:include_js] do %>

    <% end %>


Adds "usebackq" option to for loop

Adds "usebackq" option to for loop

:: This batch file handles managing an Erlang node as a Windows service.
::
:: Check the :usage section for information about what this script provides

@echo off

:: Set variables that describe the release
set rel_name=<%= release_name %>
set rel_vsn=<%= release_version %>
set erts_vsn=<%= erts_vsn %>
set erl_opts=<%= erl_opts %>

:: Discover the release root directory from the directory
:: of this script
set script_dir=%~dp0
for %%A in ("%script_dir%\..\..") do (
  set release_root_dir=%%~fA
)
set rel_dir=%release_root_dir%\releases\%rel_vsn%

if "%RELEASE_MUTABLE_DIR%"=="" (
  set mutable_dir=%release_root_dir%\var
) else (
  set mutable_dir=%RELEASE_MUTABLE_DIR%
)

if "%RELEASE_CONFIG_DIR%"=="" (
  set config_dir=%release_root_dir%
) else (
  set config_dir=%RELEASE_CONFIG_DIR%
)

set log_dir=%mutable_dir%\log

:: Create directories which don't exist
if not exist %mutable_dir% mkdir %mutable_dir%
if not exist %config_dir% mkdir %config_dir%
if not exist %log_dir% mkdir %log_dir%

call :find_erts_dir
call :find_sys_config
call :find_vm_args
call :set_boot_script_var

set service_name=%rel_name%_%rel_vsn%
set bindir=%erts_dir%\bin
set progname=erl.exe
set clean_boot_script=%release_root_dir%\bin\start_clean
set erlsrv="%bindir%\erlsrv.exe"
set epmd="%bindir%\epmd.exe"
set escript="%bindir%\escript.exe"
set werl="%bindir%\werl.exe"
set nodetool="%release_root_dir%\bin\nodetool"
set consolidated_dir=%rootdir%\lib\%rel_name%-%rel_vsn%\consolidated
set hook_dir=%rel_dir%\hooks
set command_dir=%rel_dir%\commands

:: Extract node type and name from vm.args
for /f "usebackq tokens=1-2" %%I in (`findstr /b "\-name \-sname" "%vm_args%"`) do (
  set node_type=%%I
  set node_name=%%J
)

:: Extract cookie from vm.args
for /f "usebackq tokens=1-2" %%I in (`findstr /b \-setcookie "%vm_args%"`) do (
  set cookie=%%J
)

:: Write the erl.ini file to set up paths relative to this script
call :write_ini

:: If a start.boot file is not present, copy one from the named .boot file
if not exist "%rel_dir%\start.boot" (
  copy "%rel_dir%\%rel_name%.boot" "%rel_dir%\start.boot" >nul
)

set taskname="%1"
shift /1
set args=

setlocal EnableDelayedExpansion
:parse_args
set param=%1
if "!param!"=="" goto :args_parsed
if "!args!"=="" (
  set largs=%param%
) else (
  set largs=%largs% %param%
)
set "delim= "
shift /1
goto :parse_args
:args_parsed
endlocal & set args=%largs%

if %taskname%=="install" goto install
if %taskname%=="uninstall" goto uninstall
if %taskname%=="start" goto start
if %taskname%=="foreground" goto foreground
if %taskname%=="console" goto console
if %taskname%=="stop" goto stop
if %taskname%=="restart" call :stop && goto start
if %taskname%=="reboot" call :stop && goto start
if %taskname%=="reload_config" goto reload_config
if %taskname%=="upgrade" goto upgrade
if %taskname%=="downgrade" goto upgrade
if %taskname%=="attach" goto remote_console
if %taskname%=="remote_console" goto remote_console
if %taskname%=="pid" goto pid
if %taskname%=="ping" goto ping
if %taskname%=="pingpeer" goto pingpeer
if %taskname%=="escript" goto escript
if %taskname%=="rpc" goto rpc
if %taskname%=="rpcterms" goto rpcterms
if %taskname%=="eval" goto eval
if %taskname%=="command" goto command
if %taskname%=="describe" goto describe
if %taskname%=="" goto usage
if exist "%command_dir%\%taskname%" (
  "%command_dir%\%taskname%" %*
) else (
  echo Unknown command: %taskname%
)
goto :eof

:: Find the ERTS dir
:find_erts_dir
if "%erts_vsn%"=="" (
  call :use_system_erts
) else (
  call :use_bundled_erts
)
goto :eof

:: Load system ERTS info
:use_system_erts
for /f "delims=" %%i in ('where erl') do set system_erl="%%i"
if %system_erl%=="" (
  echo failed to locate the Erlang Runtime System!
  exit 1
)
set system_root_dir_cmd=%system_erl% -noshell -eval "io:format(\"~s\", [filename:nativename(code:root_dir())])." -s init stop
for /f "delims=" %%i in (`%%system_root_dir_cmd%%`) do set system_root=%%i
set system_erts_vsn_cmd=%system_erl% -noshell -eval "Ver=erlang:system_info(version),io:format(\"~s\", [Ver])" -s init stop
for /f "delims=" %%i in (`%%system_erts_vsn_cmd%%`) do set system_erts_vsn=%%i
set erl=%system_erl%
set erts_vsn=%system_erts_vsn%
set rootdir=%system_root%
set erts_dir=%rootdir%\erts-%erts_vsn%
goto :eof

:: Load bundled ERTS info
:use_bundled_erts
set erts_dir=%release_root_dir%\erts-%erts_vsn%
set erl=%erts_dir%\bin\erl
set rootdir=%release_root_dir%
goto :eof

:: Find the sys.config file
:find_sys_config
set possible_sys=%release_config_dir%\sys.config
if exist %possible_sys% (
  set sys_config_src=%possible_sys%
) else (
  set sys_config_src=%rel_dir%\sys.config
)
set sys_config_target=%config_dir%\sys.config
:: Replace environment variables
powershell -command "$content = get-content %sys_config_src%; [regex]::matches($content, '\${[\w\d_-]+}') | foreach { $content = $content.Replace($_.value, [System.Environment]::GetEnvironmentVariable($_.value)) }; out-file -filepath %sys_config_target% -inputobject $content -encoding ascii"
set sys_config=%sys_config_target%
goto :eof

:find_vm_args
set possible_vmargs=%release_config_dir%\vm.args
if exist %possible_vmargs% (
  set vmargs_src=%possible_vmargs%
) else (
  set vmargs_src=%rel_dir%\vm.args
)
set vmargs_target=%config_dir%\vm.args
:: Replace environment variables
powershell -command "$content = get-content %vmargs_src%; [regex]::matches($content, '\${[\w\d_-]+}') | foreach { $content = $content.Replace($_.value, [System.Environment]::GetEnvironmentVariable($_.value)) }; out-file -filepath %vmargs_target% -inputobject $content -encoding ascii"
set vm_args=%vmargs_target%
goto :eof

:: set boot_script variable
:set_boot_script_var
if exist %rel_dir%\%rel_name%.boot (
  set boot_script=%rel_dir%\%rel_name%
) else (
  set boot_script=%rel_dir%\start
)
goto :eof

:: Write the erl.ini file
:write_ini
set erl_ini=%erts_dir%\bin\erl.ini
set converted_bindir=%bindir:\=\\%
set converted_rootdir=%rootdir:\=\\%
echo [erlang] > "%erl_ini%"
echo Bindir=%converted_bindir% >> "%erl_ini%"
echo Progname=%progname% >> "%erl_ini%"
echo Rootdir=%converted_rootdir% >> "%erl_ini%"
goto :eof

:: Display usage information
:usage
echo Usage: %~n0 ^<task^>
echo.
echo Service Control
echo =====================
echo install                             # installs the release as a service
echo uninstall                           # uninstalls the release service
echo start                               # starts the service
echo start_boot                          # not implemented
echo foreground                          # start the release in the foreground
echo console                             # run the release in a local shell
echo console_clean                       # not implemented
echo stop                                # stops the service
echo restart                             # restarts the release service
echo reboot                              # alias for restart on Windows
echo reload_config                       # reload the current system's configuration from disk
echo.
echo Upgrades
echo =====================
echo upgrade ^<version^>                   # upgrade the current release service
echo downgrade ^<version^>                 # downgrade the current release service
echo.
echo Utilities
echo =====================
echo attach                              # alias for remote_console on Windows
echo remote_console                      # open a remote console connected to the release
echo pid                                 # get the process id of the running release
echo ping                                # ping the current release service, pong is returned if ok
echo pingpeer ^<peer^>                     # check if a peer node is running, pong is returned if ok
echo escript ^<file^>                      # execute an escript
echo rpc ^<mod^> ^<fun^> ^[^<args..^>^]          # execute an RPC call using the given MFA
echo rpcterms ^<mod^> ^<fun^> ^[^<expr^>^]       # execute an RPC call using the given Erlang expr for args
echo eval ^<expr^>                         # execute the given Erlang expr on the running node
echo command ^<mod^> ^<fun^> ^[^<args..^>^]      # execute the given module/function in a clean VM
echo describe                            # list details about the release
echo.
echo Custom Commands
echo ======================
for %%i in (%command_dir%\*.d\*.bat) do (
  echo %%~ni
)
goto :eof

:: Install the release as a Windows service
:: or install the specified version passed as argument
:install
setlocal EnableDelayedExpansion
set service_args=%erl_opts% -setcookie "!cookie!" ++ ^
       -rootdir "%rootdir%" ^
       -reldir "%release_root_dir%\releases"
set start_erl=%erts_dir%\bin\start_erl.exe
set description=Erlang node %node_name% in %rootdir%
if "" == "%args%" (
  :: Install the service
  %erlsrv% add %service_name% ^
            -c "%description%" ^
            %node_type% "%node_name%" ^
            -w "%mutable_dir%" ^
            -m "%start_erl%" ^
            -args "!service_args!" ^
            -debugtype new ^
            -stopaction "init:stop()."
  endlocal
) else (
  :: relup and reldown
  endlocal
  goto upgrade
)
goto :eof

:: Uninstall the Windows service
:uninstall
%erlsrv% remove %service_name%
%epmd% -kill
goto :eof

:: Start the Windows service
:start
call :pre_configure_hooks
call :post_configure_hooks
call :pre_start_hooks
%erlsrv% start %service_name%
call :post_start_hooks
goto :eof

:: Stop the Windows service
:stop
call :pre_stop_hooks
%erlsrv% stop %service_name%
call :post_stop_hooks
goto :eof

:: Upgrade this release
:upgrade
setlocal EnableDelayedExpansion
if "" == "%args%" (
  echo Missing version argument
  echo Usage: %rel_name% %taskname% {version}
  set ERRORLEVEL=1
  exit /b %ERRORLEVEL%
)
set source_version=%rel_vsn%
set target_version=%args%
:: Unpack
%escript% "%root_dir%\bin\release_utils.escript" ^
    unpack_release %rel_name% "%node_type%" "%node_name%" "!cookie!" "%target_version%"
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
:: Update env
set rel_vsn=%target_version%
set rel_dir=%release_root_dir\releases\%target_version%
:: TODO: init_configs
if exists "%rel_dir%\sys.config.bak" do (
  move /Y "%rel_dir%\sys.config.bak" "%rel_dir%\sys.config"
)
if exists "%rel_dir%\vm.args.bak" do (
  move /Y "%rel_dir%\vm.args.bak" "%rel_dir%\vm.args"
)
copy /B /Y "%rel_dir%/sys.config" "%rel_dir%\sys.config.bak"
copy /B /Y "%rel_dir%/vm.args" "%rel_dir%\vm.args.bak"
copy /B /Y "%sys_config" "%rel_dir%/sys.config"
copy /B /Y "%vm_args%" "%rel_dir%/vm.args"
:: Run pre hooks
call :pre_configure_hooks
call :post_configure_hooks
call :pre_upgrade_hooks
:: Perform upgrade
%escript% "%rootdir%/bin/release_utils.escript" ^
    install_release "%rel_name%" "%node_type%" "%node_name%" "!cookie!" "%target_version%"
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
:: Cleanup
move /Y "%rel_dir%\sys.config.bak" "%rel_dir%\sys.config"
move /Y "%rel_dir%\vm.args.bak" "%rel_dir%\vm.args"
:: Run post hooks
call :post_upgrade_hooks
endlocal
goto :eof

:: Start a console
:console
call :pre_configure_hooks
call :post_configure_hooks
call :pre_start_hooks
start "%rel_name% console" %werl% -boot "%boot_script%" ^
       -config "%sys_config%"  ^
       -args_file "%vm_args%" ^
       -user Elixir.IEx.CLI ^
       -extra --no-halt +iex
goto :eof

:: Start the release in the foreground
:foreground
call :pre_configure_hooks
call :post_configure_hooks
call :pre_start_hooks
set EMU=beam
set PROGNAME=%~n0
start "" /B "%erl%" -noshell -noinput +Bd ^
       -boot "%boot_script%" ^
       -boot_var ERTS_LIB_DIR "%erts_dir%\..\lib" ^
       -env ERL_LIBS "%release_root_dir%\lib%" ^
       -pa "%consolidated_dir%" ^
       -args_file "%vm_args%" ^
       -config "%sys_config%" ^
       %erl_opts% ^
       -extra %extra_opts%
call :set_pid
call :post_start_hooks

:wait_for_exit
tasklist /FI "PID eq %pid%" | find /I "erl.exe"
if %ERRORLEVEL% geq 1 (
  :: Process has shutdown
  call :post_stop_hooks
) else (
  sleep 5
  goto :wait_for_exit
)
goto :eof

:: Ping the running node
:ping
setlocal EnableDelayedExpansion
%escript% %nodetool% ping %node_type% "%node_name%" -setcookie "!cookie!"
endlocal
goto :eof

:: Ping a peer node
:: Ping a peer node
:pingpeer
setlocal EnableDelayedExpansion
if "%args"=="" (
  echo "Peer name is required!"
  exit 1
) else (
  %escript% %nodetool% ping %node_type% "%args%" -setcookie "!cookie!"
)
endlocal
goto :eof

:: Execute an escript
:escript
%escript% %args%
goto :eof

:: Execute an RPC command
:rpc
call :ping>NUL
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
setlocal EnableDelayedExpansion
%escript% %nodetool% rpc %node_type% %node_name% -setcookie "!cookie!" %args%
endlocal
goto :eof

:: Execute an RPC command where args are expressed
:: in the form of an Erlang expression
:rpcterms
call :ping>NUL
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
setlocal EnableDelayedExpansion
%escript% %nodetool% rpcterms %node_type% %node_name% -setcookie "!cookie!" %args%
endlocal
goto :eof

:: Eval an expression on the running node
:eval
call :ping>NUL
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
setlocal EnableDelayedExpansion
%escript% %nodetool% eval %node_type% %node_name% -setcookie "!cookie!" !args!
endlocal
goto :eof

:: Execute a command in a clean Erlang VM
:command
for /f "tokens=1-2*" %%a in ("%args%") do (
  set module=%%a
  set function=%%b
  set command_args=%%c
)
%erl% -boot_var ERTS_LIB_DIR "%erts_dir%\..\lib" ^
       -hidden -noshell -boot start_clean ^
       -pa "%consolidated_dir%" ^
       -s %module% %function% -s init stop
       -extra %command_args%
goto :eof

:: Get the process id of the running node
:pid
call :ping>NUL
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
setlocal EnableDelayedExpansion
%escript% %nodetool% eval %node_type% %node_name% -setcookie "!cookie!" "erlang:list_to_integer(os:getpid())."
endlocal
goto :eof

:set_pid
call :ping>NUL
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
setlocal EnableDelayedExpansion
set get_pid_cmd=%escript% %nodetool% eval %node_type% %node_name% -setcookie "!cookie!" "erlang:list_to_integer(os:getpid())."
for /f "usebackq delims=" %%i in (`%%get_pid_cmd%%`) do set pid=%%i
endlocal
goto :eof

:: Reload the running configuration
:reload_config
call :ping>NUL
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
call :pre_configure_hooks
call :post_configure_hooks
setlocal EnableDelayedExpansion
%escript% %nodetool% reload_config %node_type% %node_name% -setcookie "!cookie!" "%sys_config%"
endlocal
goto :eof

:: Describe this release
:describe
setlocal EnableDelayedExpansion
echo Service Information
echo =====================
%erlsrv% list %service_name%
echo.
echo Release Metadata
echo =====================
echo ERTS                %erts_vsn%
echo Release Directory   %rel_dir%
echo Config File         %sys_config%
echo Args File           %vm_args%
echo Name Type           %node_type%
echo Node Name           %node_name%
echo Node Cookie         !cookie!
echo Extra Opts          %erl_opts%
echo.
echo Hooks:
for %%i in (%hook_dir%\*.d\*.bat) do (
  echo %%i
)
echo.
echo Commands:
for %%i in (%command_dir%\*.d\*.bat) do (
  echo %%i
)
endlocal
goto :eof

:: Remote shell to a running node
:remote_console
call :ping
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
setlocal EnableDelayedExpansion
set id=remsh%RANDOM%-%node_name%
start "%node_name% attach" %werl% -hidden -noshell -boot "%clean_boot_script%" ^
       -user Elixir.IEx.CLI %node_type% %id% -setcookie "!cookie!" ^
       -extra --no-halt +iex -%node_type% %id% --cookie "!cookie!" --remsh %node_name%
endlocal
goto :eof

:: Hook helpers
:execute_hooks
for /r "%hook_dir%\%1.d" %%f in (*.bat) do (
  echo Running %1 hook: %%f
  %%f
  if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
)
goto :eof

:pre_configure_hooks
call :execute_hooks pre_configure
goto :eof

:post_configure_hooks
call :execute_hooks post_configure
goto :eof

:pre_start_hooks
call :execute_hooks pre_start
goto :eof

:post_start_hooks
call :execute_hooks post_start
goto :eof

:pre_stop_hooks
call :execute_hooks pre_stop
goto :eof

:post_stop_hooks
call :execute_hooks post_stop
goto :eof

:pre_upgrade_hooks
call :execute_hooks pre_upgrade
goto :eof

:post_upgrade_hooks
call :execute_hooks post_upgrade
goto :eof

:: This batch file handles managing an Erlang node as a Windows service.
::
:: Check the :usage section for information about what this script provides

@echo off

:: Set variables that describe the release
set rel_name=<%= release_name %>
set rel_vsn=<%= release_version %>
set erts_vsn=<%= erts_vsn %>
set erl_opts=<%= erl_opts %>

:: Discover the release root directory from the directory
:: of this script
set script_dir=%~dp0
for %%A in ("%script_dir%\..\..") do (
  set release_root_dir=%%~fA
)
set rel_dir=%release_root_dir%\releases\%rel_vsn%

if "%RELEASE_MUTABLE_DIR%"=="" (
  set mutable_dir=%release_root_dir%\var
) else (
  set mutable_dir=%RELEASE_MUTABLE_DIR%
)

if "%RELEASE_CONFIG_DIR%"=="" (
  set config_dir=%release_root_dir%
) else (
  set config_dir=%RELEASE_CONFIG_DIR%
)

set log_dir=%mutable_dir%\log

:: Create directories which don't exist
if not exist %mutable_dir% mkdir %mutable_dir%
if not exist %config_dir% mkdir %config_dir%
if not exist %log_dir% mkdir %log_dir%

call :find_erts_dir
call :find_sys_config
call :find_vm_args
call :set_boot_script_var

set service_name=%rel_name%_%rel_vsn%
set bindir=%erts_dir%\bin
set progname=erl.exe
set clean_boot_script=%release_root_dir%\bin\start_clean
set erlsrv="%bindir%\erlsrv.exe"
set epmd="%bindir%\epmd.exe"
set escript="%bindir%\escript.exe"
set werl="%bindir%\werl.exe"
set nodetool="%release_root_dir%\bin\nodetool"
set consolidated_dir=%rootdir%\lib\%rel_name%-%rel_vsn%\consolidated
set hook_dir=%rel_dir%\hooks
set command_dir=%rel_dir%\commands

:: Extract node type and name from vm.args
for /f "usebackq tokens=1-2" %%I in (`findstr /b "\-name \-sname" "%vm_args%"`) do (
  set node_type=%%I
  set node_name=%%J
)

:: Extract cookie from vm.args
for /f "usebackq tokens=1-2" %%I in (`findstr /b \-setcookie "%vm_args%"`) do (
  set cookie=%%J
)

:: Write the erl.ini file to set up paths relative to this script
call :write_ini

:: If a start.boot file is not present, copy one from the named .boot file
if not exist "%rel_dir%\start.boot" (
  copy "%rel_dir%\%rel_name%.boot" "%rel_dir%\start.boot" >nul
)

set taskname="%1"
shift /1
set args=

setlocal EnableDelayedExpansion
:parse_args
set param=%1
if "!param!"=="" goto :args_parsed
if "!args!"=="" (
  set largs=%param%
) else (
  set largs=%largs% %param%
)
set "delim= "
shift /1
goto :parse_args
:args_parsed
endlocal & set args=%largs%

if %taskname%=="install" goto install
if %taskname%=="uninstall" goto uninstall
if %taskname%=="start" goto start
if %taskname%=="foreground" goto foreground
if %taskname%=="console" goto console
if %taskname%=="stop" goto stop
if %taskname%=="restart" call :stop && goto start
if %taskname%=="reboot" call :stop && goto start
if %taskname%=="reload_config" goto reload_config
if %taskname%=="upgrade" goto upgrade
if %taskname%=="downgrade" goto upgrade
if %taskname%=="attach" goto remote_console
if %taskname%=="remote_console" goto remote_console
if %taskname%=="pid" goto pid
if %taskname%=="ping" goto ping
if %taskname%=="pingpeer" goto pingpeer
if %taskname%=="escript" goto escript
if %taskname%=="rpc" goto rpc
if %taskname%=="rpcterms" goto rpcterms
if %taskname%=="eval" goto eval
if %taskname%=="command" goto command
if %taskname%=="describe" goto describe
if %taskname%=="" goto usage
if exist "%command_dir%\%taskname%" (
  "%command_dir%\%taskname%" %*
) else (
  echo Unknown command: %taskname%
)
goto :eof

:: Find the ERTS dir
:find_erts_dir
if "%erts_vsn%"=="" (
  call :use_system_erts
) else (
  call :use_bundled_erts
)
goto :eof

:: Load system ERTS info
:use_system_erts
for /f "delims=" %%i in ('where erl') do set system_erl="%%i"
if %system_erl%=="" (
  echo failed to locate the Erlang Runtime System!
  exit 1
)
set system_root_dir_cmd=%system_erl% -noshell -eval "io:format(\"~s\", [filename:nativename(code:root_dir())])." -s init stop
for /f "delims=" %%i in (`%%system_root_dir_cmd%%`) do set system_root=%%i
set system_erts_vsn_cmd=%system_erl% -noshell -eval "Ver=erlang:system_info(version),io:format(\"~s\", [Ver])" -s init stop
for /f "delims=" %%i in (`%%system_erts_vsn_cmd%%`) do set system_erts_vsn=%%i
set erl=%system_erl%
set erts_vsn=%system_erts_vsn%
set rootdir=%system_root%
set erts_dir=%rootdir%\erts-%erts_vsn%
goto :eof

:: Load bundled ERTS info
:use_bundled_erts
set erts_dir=%release_root_dir%\erts-%erts_vsn%
set erl=%erts_dir%\bin\erl
set rootdir=%release_root_dir%
goto :eof

:: Find the sys.config file
:find_sys_config
set possible_sys=%release_config_dir%\sys.config
if exist %possible_sys% (
  set sys_config_src=%possible_sys%
) else (
  set sys_config_src=%rel_dir%\sys.config
)
set sys_config_target=%config_dir%\sys.config
:: Replace environment variables
powershell -command "$content = get-content %sys_config_src%; [regex]::matches($content, '\${[\w\d_-]+}') | foreach { $content = $content.Replace($_.value, [System.Environment]::GetEnvironmentVariable($_.value)) }; out-file -filepath %sys_config_target% -inputobject $content -encoding ascii"
set sys_config=%sys_config_target%
goto :eof

:find_vm_args
set possible_vmargs=%release_config_dir%\vm.args
if exist %possible_vmargs% (
  set vmargs_src=%possible_vmargs%
) else (
  set vmargs_src=%rel_dir%\vm.args
)
set vmargs_target=%config_dir%\vm.args
:: Replace environment variables
powershell -command "$content = get-content %vmargs_src%; [regex]::matches($content, '\${[\w\d_-]+}') | foreach { $content = $content.Replace($_.value, [System.Environment]::GetEnvironmentVariable($_.value)) }; out-file -filepath %vmargs_target% -inputobject $content -encoding ascii"
set vm_args=%vmargs_target%
goto :eof

:: set boot_script variable
:set_boot_script_var
if exist %rel_dir%\%rel_name%.boot (
  set boot_script=%rel_dir%\%rel_name%
) else (
  set boot_script=%rel_dir%\start
)
goto :eof

:: Write the erl.ini file
:write_ini
set erl_ini=%erts_dir%\bin\erl.ini
set converted_bindir=%bindir:\=\\%
set converted_rootdir=%rootdir:\=\\%
echo [erlang] > "%erl_ini%"
echo Bindir=%converted_bindir% >> "%erl_ini%"
echo Progname=%progname% >> "%erl_ini%"
echo Rootdir=%converted_rootdir% >> "%erl_ini%"
goto :eof

:: Display usage information
:usage
echo Usage: %~n0 ^<task^>
echo.
echo Service Control
echo =====================
echo install                             # installs the release as a service
echo uninstall                           # uninstalls the release service
echo start                               # starts the service
echo start_boot                          # not implemented
echo foreground                          # start the release in the foreground
echo console                             # run the release in a local shell
echo console_clean                       # not implemented
echo stop                                # stops the service
echo restart                             # restarts the release service
echo reboot                              # alias for restart on Windows
echo reload_config                       # reload the current system's configuration from disk
echo.
echo Upgrades
echo =====================
echo upgrade ^<version^>                   # upgrade the current release service
echo downgrade ^<version^>                 # downgrade the current release service
echo.
echo Utilities
echo =====================
echo attach                              # alias for remote_console on Windows
echo remote_console                      # open a remote console connected to the release
echo pid                                 # get the process id of the running release
echo ping                                # ping the current release service, pong is returned if ok
echo pingpeer ^<peer^>                     # check if a peer node is running, pong is returned if ok
echo escript ^<file^>                      # execute an escript
echo rpc ^<mod^> ^<fun^> ^[^<args..^>^]          # execute an RPC call using the given MFA
echo rpcterms ^<mod^> ^<fun^> ^[^<expr^>^]       # execute an RPC call using the given Erlang expr for args
echo eval ^<expr^>                         # execute the given Erlang expr on the running node
echo command ^<mod^> ^<fun^> ^[^<args..^>^]      # execute the given module/function in a clean VM
echo describe                            # list details about the release
echo.
echo Custom Commands
echo ======================
for %%i in (%command_dir%\*.d\*.bat) do (
  echo %%~ni
)
goto :eof

:: Install the release as a Windows service
:: or install the specified version passed as argument
:install
setlocal EnableDelayedExpansion
set service_args=%erl_opts% -setcookie "!cookie!" ++ ^
       -rootdir "%rootdir%" ^
       -reldir "%release_root_dir%\releases"
set start_erl=%erts_dir%\bin\start_erl.exe
set description=Erlang node %node_name% in %rootdir%
if "" == "%args%" (
  :: Install the service
  %erlsrv% add %service_name% ^
            -c "%description%" ^
            %node_type% "%node_name%" ^
            -w "%mutable_dir%" ^
            -m "%start_erl%" ^
            -args "!service_args!" ^
            -debugtype new ^
            -stopaction "init:stop()."
  endlocal
) else (
  :: relup and reldown
  endlocal
  goto upgrade
)
goto :eof

:: Uninstall the Windows service
:uninstall
%erlsrv% remove %service_name%
%epmd% -kill
goto :eof

:: Start the Windows service
:start
call :pre_configure_hooks
call :post_configure_hooks
call :pre_start_hooks
%erlsrv% start %service_name%
call :post_start_hooks
goto :eof

:: Stop the Windows service
:stop
call :pre_stop_hooks
%erlsrv% stop %service_name%
call :post_stop_hooks
goto :eof

:: Upgrade this release
:upgrade
setlocal EnableDelayedExpansion
if "" == "%args%" (
  echo Missing version argument
  echo Usage: %rel_name% %taskname% {version}
  set ERRORLEVEL=1
  exit /b %ERRORLEVEL%
)
set source_version=%rel_vsn%
set target_version=%args%
:: Unpack
%escript% "%root_dir%\bin\release_utils.escript" ^
    unpack_release %rel_name% "%node_type%" "%node_name%" "!cookie!" "%target_version%"
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
:: Update env
set rel_vsn=%target_version%
set rel_dir=%release_root_dir\releases\%target_version%
:: TODO: init_configs
if exists "%rel_dir%\sys.config.bak" do (
  move /Y "%rel_dir%\sys.config.bak" "%rel_dir%\sys.config"
)
if exists "%rel_dir%\vm.args.bak" do (
  move /Y "%rel_dir%\vm.args.bak" "%rel_dir%\vm.args"
)
copy /B /Y "%rel_dir%/sys.config" "%rel_dir%\sys.config.bak"
copy /B /Y "%rel_dir%/vm.args" "%rel_dir%\vm.args.bak"
copy /B /Y "%sys_config" "%rel_dir%/sys.config"
copy /B /Y "%vm_args%" "%rel_dir%/vm.args"
:: Run pre hooks
call :pre_configure_hooks
call :post_configure_hooks
call :pre_upgrade_hooks
:: Perform upgrade
%escript% "%rootdir%/bin/release_utils.escript" ^
    install_release "%rel_name%" "%node_type%" "%node_name%" "!cookie!" "%target_version%"
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
:: Cleanup
move /Y "%rel_dir%\sys.config.bak" "%rel_dir%\sys.config"
move /Y "%rel_dir%\vm.args.bak" "%rel_dir%\vm.args"
:: Run post hooks
call :post_upgrade_hooks
endlocal
goto :eof

:: Start a console
:console
call :pre_configure_hooks
call :post_configure_hooks
call :pre_start_hooks
start "%rel_name% console" %werl% -boot "%boot_script%" ^
       -config "%sys_config%"  ^
       -args_file "%vm_args%" ^
       -user Elixir.IEx.CLI ^
       -extra --no-halt +iex
goto :eof

:: Start the release in the foreground
:foreground
call :pre_configure_hooks
call :post_configure_hooks
call :pre_start_hooks
set EMU=beam
set PROGNAME=%~n0
start "" /B "%erl%" -noshell -noinput +Bd ^
       -boot "%boot_script%" ^
       -boot_var ERTS_LIB_DIR "%erts_dir%\..\lib" ^
       -env ERL_LIBS "%release_root_dir%\lib%" ^
       -pa "%consolidated_dir%" ^
       -args_file "%vm_args%" ^
       -config "%sys_config%" ^
       %erl_opts% ^
       -extra %extra_opts%
call :set_pid
call :post_start_hooks

:wait_for_exit
tasklist /FI "PID eq %pid%" | find /I "erl.exe"
if %ERRORLEVEL% geq 1 (
  :: Process has shutdown
  call :post_stop_hooks
) else (
  sleep 5
  goto :wait_for_exit
)
goto :eof

:: Ping the running node
:ping
setlocal EnableDelayedExpansion
%escript% %nodetool% ping %node_type% "%node_name%" -setcookie "!cookie!"
endlocal
goto :eof

:: Ping a peer node
:: Ping a peer node
:pingpeer
setlocal EnableDelayedExpansion
if "%args"=="" (
  echo "Peer name is required!"
  exit 1
) else (
  %escript% %nodetool% ping %node_type% "%args%" -setcookie "!cookie!"
)
endlocal
goto :eof

:: Execute an escript
:escript
%escript% %args%
goto :eof

:: Execute an RPC command
:rpc
call :ping>NUL
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
setlocal EnableDelayedExpansion
%escript% %nodetool% rpc %node_type% %node_name% -setcookie "!cookie!" %args%
endlocal
goto :eof

:: Execute an RPC command where args are expressed
:: in the form of an Erlang expression
:rpcterms
call :ping>NUL
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
setlocal EnableDelayedExpansion
%escript% %nodetool% rpcterms %node_type% %node_name% -setcookie "!cookie!" %args%
endlocal
goto :eof

:: Eval an expression on the running node
:eval
call :ping>NUL
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
setlocal EnableDelayedExpansion
%escript% %nodetool% eval %node_type% %node_name% -setcookie "!cookie!" !args!
endlocal
goto :eof

:: Execute a command in a clean Erlang VM
:command
for /f "tokens=1-2*" %%a in ("%args%") do (
  set module=%%a
  set function=%%b
  set command_args=%%c
)
%erl% -boot_var ERTS_LIB_DIR "%erts_dir%\..\lib" ^
       -hidden -noshell -boot start_clean ^
       -pa "%consolidated_dir%" ^
       -s %module% %function% -s init stop
       -extra %command_args%
goto :eof

:: Get the process id of the running node
:pid
call :ping>NUL
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
setlocal EnableDelayedExpansion
%escript% %nodetool% eval %node_type% %node_name% -setcookie "!cookie!" "erlang:list_to_integer(os:getpid())."
endlocal
goto :eof

:set_pid
call :ping>NUL
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
setlocal EnableDelayedExpansion
set get_pid_cmd=%escript% %nodetool% eval %node_type% %node_name% -setcookie "!cookie!" "erlang:list_to_integer(os:getpid())."
for /f "delims=" %%i in (`%%get_pid_cmd%%`) do set pid=%%i
endlocal
goto :eof

:: Reload the running configuration
:reload_config
call :ping>NUL
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
call :pre_configure_hooks
call :post_configure_hooks
setlocal EnableDelayedExpansion
%escript% %nodetool% reload_config %node_type% %node_name% -setcookie "!cookie!" "%sys_config%"
endlocal
goto :eof

:: Describe this release
:describe
setlocal EnableDelayedExpansion
echo Service Information
echo =====================
%erlsrv% list %service_name%
echo.
echo Release Metadata
echo =====================
echo ERTS                %erts_vsn%
echo Release Directory   %rel_dir%
echo Config File         %sys_config%
echo Args File           %vm_args%
echo Name Type           %node_type%
echo Node Name           %node_name%
echo Node Cookie         !cookie!
echo Extra Opts          %erl_opts%
echo.
echo Hooks:
for %%i in (%hook_dir%\*.d\*.bat) do (
  echo %%i
)
echo.
echo Commands:
for %%i in (%command_dir%\*.d\*.bat) do (
  echo %%i
)
endlocal
goto :eof

:: Remote shell to a running node
:remote_console
call :ping
if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
setlocal EnableDelayedExpansion
set id=remsh%RANDOM%-%node_name%
start "%node_name% attach" %werl% -hidden -noshell -boot "%clean_boot_script%" ^
       -user Elixir.IEx.CLI %node_type% %id% -setcookie "!cookie!" ^
       -extra --no-halt +iex -%node_type% %id% --cookie "!cookie!" --remsh %node_name%
endlocal
goto :eof

:: Hook helpers
:execute_hooks
for /r "%hook_dir%\%1.d" %%f in (*.bat) do (
  echo Running %1 hook: %%f
  %%f
  if %ERRORLEVEL% GEQ 1 exit %ERRORLEVEL%
)
goto :eof

:pre_configure_hooks
call :execute_hooks pre_configure
goto :eof

:post_configure_hooks
call :execute_hooks post_configure
goto :eof

:pre_start_hooks
call :execute_hooks pre_start
goto :eof

:post_start_hooks
call :execute_hooks post_start
goto :eof

:pre_stop_hooks
call :execute_hooks pre_stop
goto :eof

:post_stop_hooks
call :execute_hooks post_stop
goto :eof

:pre_upgrade_hooks
call :execute_hooks pre_upgrade
goto :eof

:post_upgrade_hooks
call :execute_hooks post_upgrade
goto :eof


Change email svg images to png

Change email svg images to png

    <%= render @view_module, @view_template, assigns %>

Our amazing partners and sponsors

        © Porto Summer of Code 2017


Fix warnings

Fix warnings

<%= render "form.html", conn: @conn,
                        changeset: @changeset,
                        action: setting_path(@conn, :update),
                        title: title()
%>

<%= render "form.html", conn: @conn,
                        changeset: @changeset,
                        action: setting_path(@conn, :update),
                        title: title
%>


Switch + - button locations

Switch + - button locations

<div class="tab-pane js-stock-type <%= active(@stock_type, @stock_by_type)%>" id="<%= @stock_type %>">

    <%= @stock_type %> <%= gettext("remaining:") %>
      <span class="js-credit-count" data-credit-type="<%= @type_id %>" >
        <%=  @credits[@stock_type] %>

    <%# TBD?
      <colgroup>
        <col>
        <col>
        <col>
        <col>
        <col>
        <col>
        <col>
        <col>
        <col>
        <col>
      </colgroup>
    %>

      <%= gettext("Food description") %>
      <%= gettext("Food packaging") %>
      <%= gettext("Manufacturer info (if available)") %>
      <%= gettext("Weight") %>
      <%= gettext("Quantity available") %>
      <%= @stock_type %> <%= gettext("cost")%>

      <%= gettext("Quantity requested") %>

      <%= for stock <- @stocks do %>
        <tr class="js-stock-row" data-stock-id="<%= stock.id %>">

            <%= stock_description(stock) %>

            <%= stock.packaging %>

            <%= stock.food_id && stock.food.manufacturer_name %>

            <%= stock.weight %>

            <%= stock.quantity %>

            <%= stock.credits_per_package %>

            <button class="js-remove-stock" type="button">
            -
            </button>

            <%= quantity(stock, @package) %>

            <button class="js-add-stock" type="button">
            +
            </button>

            <button class="js-clear-stock" type="button">
            X
            </button>

      <% end %>

<div class="tab-pane js-stock-type <%= active(@stock_type, @stock_by_type)%>" id="<%= @stock_type %>">

    <%= @stock_type %> <%= gettext("remaining:") %>
      <span class="js-credit-count" data-credit-type="<%= @type_id %>" >
        <%=  @credits[@stock_type] %>

    <%# TBD?
      <colgroup>
        <col>
        <col>
        <col>
        <col>
        <col>
        <col>
        <col>
        <col>
        <col>
        <col>
      </colgroup>
    %>

      <%= gettext("Food description") %>
      <%= gettext("Food packaging") %>
      <%= gettext("Manufacturer info (if available)") %>
      <%= gettext("Weight") %>
      <%= gettext("Quantity available") %>
      <%= @stock_type %> <%= gettext("cost")%>

      <%= gettext("Quantity requested") %>

      <%= for stock <- @stocks do %>
        <tr class="js-stock-row" data-stock-id="<%= stock.id %>">

            <%= stock_description(stock) %>

            <%= stock.packaging %>

            <%= stock.food_id && stock.food.manufacturer_name %>

            <%= stock.weight %>

            <%= stock.quantity %>

            <%= stock.credits_per_package %>

            <button class="js-add-stock" type="button">
            +
            </button>

            <%= quantity(stock, @package) %>

            <button class="js-remove-stock" type="button">
            -
            </button>

            <button class="js-clear-stock" type="button">
            X
            </button>

      <% end %>


Show participant name fields on detail page

  <%= full_name(@participant) %>

  <%= gettext("First name") %>:
  <%= @participant.given_name %>

  <%= gettext("Last name") %>:
  <%= @participant.family_name %>

  <%= gettext("Birthdate") %>:
  <%= format_date(@participant.birthdate) %>

  <%= gettext("Phone") %>:
  <%= link @participant.phone, to: "tel:#{@participant.phone}" %>

  <%= gettext("Email") %>:
  <%= link @participant.email, to: "mailto:#{@participant.email}" %>

  <%= full_name(@participant) %>

  <%= gettext("Birthdate") %>:
  <%= format_date(@participant.birthdate) %>

  <%= gettext("Phone") %>:
  <%= link @participant.phone, to: "tel:#{@participant.phone}" %>

  <%= gettext("Email") %>:
  <%= link @participant.email, to: "mailto:#{@participant.email}" %>


simplify post view

simplify post view

<%= @post.title %>

    <%= @post.body %>

<%= link "Back", to: post_path(@conn, :index) %>

<%= link "Edit", to: post_path(@conn, :edit, @post) %>
<%= link "Delete", to: post_path(@conn, :delete, @post), method: :delete %>

Show post

    Title:
    <%= @post.title %>

    Body:
    <%= @post.body %>

<%= link "Back", to: post_path(@conn, :index) %>

<%= link "Edit", to: post_path(@conn, :edit, @post) %>
<%= link "Delete", to: post_path(@conn, :delete, @post), method: :delete %>


Improve batch details status readability

The current batch details status list is simply a space delimited list
of all statuses. This can be quite difficult to read with more than one
or two statuses. Instead, use an unordered list, with one status per
line to improve readability with many statuses.

  <a href="<%= Confex.fetch_env!(:bors, :html_github_root) %>/<%= @project.name %>/">
    <%= @project.name %>

  ›
  <a href="<%= project_path(@conn, :log, @project) %>">
    History

  Batch Details

<%= if @batch do %>

Date: <%= htmlify_naive_datetime(@batch.updated_at) %>

Priority: <%= @batch.priority %>

State: <%= stringify_state(@batch.state) %>

Status:

  <%= for status <- @statuses do %>

    <%= if status.url do %>
    <a href="<%= status.url %>"><%= status.identifier %> (<%= stringify_state(status.state) %>)
    <% else %>
    <%= status.identifier %> (<%= stringify_state(status.state) %>)
    <% end %>

  <% end %>

  Pull Requests:
  <%= for patch <- @patches do %>
  <a href="<%= Confex.fetch_env!(:bors, :html_github_root) %>/<%= @project.name %>/pull/<%= patch.pr_xref %>">#<%= patch.pr_xref %>
  <% end %>

<% else %>
There is no such batch
<% end %>


center player

center player

  <%= case @player do %>
    <%= "podlove" -> %>
      <%= render "_podlove_webplayer4.html", episode: @episode,
                                             conn: @conn %>
    <% "podigee" -> %>

  <% end %>

  <%#
    CDN - Repo: https://cdn.podigee.com/podcast-player/javascripts/podigee-podcast-player.js
    Github - Version: https://podigee.github.io/podigee-podcast-player/build/javascripts/podigee-podcast-player.js
  %>

<%= case @player do %>
  <%= "podlove" -> %>
    <%= render "_podlove_webplayer4.html", episode: @episode,
                                           conn: @conn %>
  <% "podigee" -> %>
    <script>
      window.playerConfiguration = <%= podigee_episodestruct(@episode) %>
    </script>
    <script id="player" class="podigee-podcast-player"
            src="/podigee-podcast-player/javascripts/podigee-podcast-player.js"
            data-configuration="playerConfiguration"></script>

    <script>
    // demo function, outputs the current time of the player
      function time() {
        iframe = document.querySelectorAll(".podigee-podcast-player")[0]
        player = new playerjs.Player(iframe);
        player.on('ready', function(){
          player.getCurrentTime(function(value) {alert(value) })
        })
      }
    </script>
<% end %>

<%#
  CDN - Repo: https://cdn.podigee.com/podcast-player/javascripts/podigee-podcast-player.js
  Github - Version: https://podigee.github.io/podigee-podcast-player/build/javascripts/podigee-podcast-player.js
%>


footer

footer

Panoptikum.io

META

Code of Conduct

Complaints

Community

Imprint

ABOUT

Blog

Rationale

Talks

FAQ

DEMO

Random

Podcasters

The huge podcast list

Podcast Buttons

SUPPORTED BY

Stefan a.k.a. Informatom

Community Manager Sonja

Mittenin.at

Vienna Beamers

      Hosted by Informatom EDV-Dienstleistungen e.U.

Panoptikum

META

Code of Conduct

Complaints

Community

Imprint

ABOUT

Blog

Rationale

Talks

FAQ

DEMO

Random

Podcasters

The huge podcast list

Podcast Buttons

SUPPORTED BY

Stefan a.k.a. Informatom

Community Manager Sonja

Mittenin.at

Vienna Beamers

      Hosted by Informatom EDV-Dienstleistungen e.U.


And error bars... wow that was easy

And error bars... wow that was easy

<!DOCTYPE html>

    <meta http-equiv="content-type" content="text/html; charset=utf8">

    <%= for {name, _} <- suite.run_times do %>
      <div class="raw-run-times" data-job-name="<%= name %>">

    <% end %>


Temporarily fix pre-LW panel wording

Temporarily fix pre-LW panel wording

Landeswettbewerbe <%= year(@contest) %>

      Die Landeswettbewerbe finden dieses Jahr in Valencia, Warschau und Rom statt.

Aktuelle Infos

Weitergeleitete Teilnehmer im Verbund 1 (blau) und Verbund 3 (gelb) können sich jetzt für den Landeswettbewerb anmelden.

Im Verbund 2 (grün) werden alle weitergeleiteten Teilnehmer automatisch zum LW angemeldet und erhalten per Mail rechtzeitig einen neuen Änderungscode.

Landeswettbewerb <%= year(@contest) %>

      Der Landeswettbewerb findet dieses Jahr an der <%= @contest.host.name %> statt.

Aktuelle Infos

      Alle weitergeleiteten Teilnehmer werden automatisch zum LW angemeldet. Sie bekommen rechtzeitig per Mail einen neuen Änderungscode, mit dem sie ihre Anmeldung noch bis zum <%= deadline(@contest) %> <%= link "bearbeiten", to: Routes.page_path(@conn, :edit_registration) %> können.


fixed recorder url

fixed recorder url

  <%= render SignDict.SharedView, "navigation.html", conn: @conn, current_user: @current_user %>

<%= render SignDict.SharedView, "searchbar.html", conn: @conn, current_user: @current_user, searchbar: assigns[:searchbar] %>

    <video class="so-video--player" playsinline src="<%= @video.video_url %>" loop controls poster="<%= @video.thumbnail_url %>"></video>

<%= @entry.text %>

      <%= if String.length(@entry.description) > 0 do %>

<%= @entry.description %>

      <% end %>

              <%= cond do %>
              <% @current_user == nil -> %>

              <% @voted_video && @video.id == @voted_video.id -> %>
                <%= form_for @conn, vote_path(@conn, :delete, @video), [method: :delete, as: :vote], fn _f -> %>

                    <button type="submit" class="so-voting-box--vote-button so-voting-box--vote-button_selected">
                      <i class="fa fa-chevron-up" aria-label="<%= gettext("Don't vote this video up") %>">
                    </button>

                <% end %>
              <% true -> %>
                <%= form_for @conn, vote_path(@conn, :create, @video), [as: :vote], fn _f -> %>

                    <button type="submit" class="so-voting-box--vote-button">
                      <i class="fa fa-chevron-up" aria-label="<%= gettext("Vote this video up") %>">
                    </button>

                <% end %>
              <% end %>

              <%= @video.vote_count %>

              <%= cond do %>
                <% @current_user == nil -> %>
                  <%= raw gettext("Please login to vote for this video.", login_url: session_path(@conn, :new)) %>
                <% @voted_video && @video.id == @voted_video.id -> %>
                  <%= gettext("You voted for this video. You can remove your vote by clicking on the arrow.") %>
                <% true -> %>
                  <%= gettext("Does this video show the sign you know for this word? If yes, please vote by clicking on the up arrow.") %>
              <% end %>

          <%= link @video.user.name, to: user_path(@conn, :show, @video.user) %>

            <%= gettext("User") %>

          <%= Date.to_string @video.inserted_at %>

            <%= gettext("Date of upload") %>

      <%= if @video.original_href do %>

          <%= gettext("Source:") %>
          <%= link @video.copyright, to: @video.original_href %>

      <% end %>
      <a rel="license" href="http://creativecommons.org/licenses/<%= @video.license %>">
        <img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/<%= @video.license %>/88x31.png" />

<%= gettext("Variations »%{entry}«", entry: @entry.text) %>

          <%= if Enum.count(@videos) > 0 do %>

              <%= for video <- @videos do %>
                <li class="so-video-list--item <%= if video.id == @video.id, do: "so-video-list--item_selected" %>">

                      <a href='<%= entry_video_path(@conn, :show, @entry, video.id) %>' aria-label='<%= gettext("Choose this variant") %>'>
                        <%= img_tag(video.thumbnail_url, class: "o-image", alt: gettext("Thumbnail for Video")) %>

                          <%= gettext("by") %> <%= link video.user.name, to: user_path(@conn, :show, video.user) %>

                          <%= relative_date(video.inserted_at, past_text: gettext("${time} ago")) %>

                          <i class="fa fa-chevron-up so-video-list--details--votes <%= if @voted_video && video.id == @voted_video.id, do: "so-video-list--details--votes_voted" %>" aria-label="Votes for this video">
                          <%= video.vote_count %>

              <% end %>

          <% else %>

              <%= gettext("No other variations") %>

          <% end %>

          <%= if SignDict.User.has_flag?(@current_user, "recording") do %>

                <%= gettext("Know another variation for this word? You do? Please help us and record it with your webcam.") %>

              <%= link gettext("Record new video"), to: recorder_path(@conn, :index, @video.entry_id), class: "sc-button sc-button--small" %>

          <% end %>

<%= render SignDict.SharedView, "footer.html", conn: @conn %>

  <%= render SignDict.SharedView, "navigation.html", conn: @conn, current_user: @current_user %>

<%= render SignDict.SharedView, "searchbar.html", conn: @conn, current_user: @current_user, searchbar: assigns[:searchbar] %>

    <video class="so-video--player" playsinline src="<%= @video.video_url %>" loop controls poster="<%= @video.thumbnail_url %>"></video>

<%= @entry.text %>

      <%= if String.length(@entry.description) > 0 do %>

<%= @entry.description %>

      <% end %>

              <%= cond do %>
              <% @current_user == nil -> %>

              <% @voted_video && @video.id == @voted_video.id -> %>
                <%= form_for @conn, vote_path(@conn, :delete, @video), [method: :delete, as: :vote], fn _f -> %>

                    <button type="submit" class="so-voting-box--vote-button so-voting-box--vote-button_selected">
                      <i class="fa fa-chevron-up" aria-label="<%= gettext("Don't vote this video up") %>">
                    </button>

                <% end %>
              <% true -> %>
                <%= form_for @conn, vote_path(@conn, :create, @video), [as: :vote], fn _f -> %>

                    <button type="submit" class="so-voting-box--vote-button">
                      <i class="fa fa-chevron-up" aria-label="<%= gettext("Vote this video up") %>">
                    </button>

                <% end %>
              <% end %>

              <%= @video.vote_count %>

              <%= cond do %>
                <% @current_user == nil -> %>
                  <%= raw gettext("Please login to vote for this video.", login_url: session_path(@conn, :new)) %>
                <% @voted_video && @video.id == @voted_video.id -> %>
                  <%= gettext("You voted for this video. You can remove your vote by clicking on the arrow.") %>
                <% true -> %>
                  <%= gettext("Does this video show the sign you know for this word? If yes, please vote by clicking on the up arrow.") %>
              <% end %>

          <%= link @video.user.name, to: user_path(@conn, :show, @video.user) %>

            <%= gettext("User") %>

          <%= Date.to_string @video.inserted_at %>

            <%= gettext("Date of upload") %>

      <%= if @video.original_href do %>

          <%= gettext("Source:") %>
          <%= link @video.copyright, to: @video.original_href %>

      <% end %>
      <a rel="license" href="http://creativecommons.org/licenses/<%= @video.license %>">
        <img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/<%= @video.license %>/88x31.png" />

<%= gettext("Variations »%{entry}«", entry: @entry.text) %>

          <%= if Enum.count(@videos) > 0 do %>

              <%= for video <- @videos do %>
                <li class="so-video-list--item <%= if video.id == @video.id, do: "so-video-list--item_selected" %>">

                      <a href='<%= entry_video_path(@conn, :show, @entry, video.id) %>' aria-label='<%= gettext("Choose this variant") %>'>
                        <%= img_tag(video.thumbnail_url, class: "o-image", alt: gettext("Thumbnail for Video")) %>

                          <%= gettext("by") %> <%= link video.user.name, to: user_path(@conn, :show, video.user) %>

                          <%= relative_date(video.inserted_at, past_text: gettext("${time} ago")) %>

                          <i class="fa fa-chevron-up so-video-list--details--votes <%= if @voted_video && video.id == @voted_video.id, do: "so-video-list--details--votes_voted" %>" aria-label="Votes for this video">
                          <%= video.vote_count %>

              <% end %>

          <% else %>

              <%= gettext("No other variations") %>

          <% end %>

          <%= if SignDict.User.has_flag?(@current_user, "recording") do %>

                <%= gettext("Know another variation for this word? You do? Please help us and record it with your webcam.") %>

              <%= link gettext("Record new video"), to: recorder_path(@conn, :index, entry_id: @video.entry_id), class: "sc-button sc-button--small" %>

          <% end %>

<%= render SignDict.SharedView, "footer.html", conn: @conn %>


mention highlightjs on the about page

mention highlightjs on the about page

  Welcome to ticket poker.

What?

  This is an online tool to facilitate planning poker for development teams, especially remote or partially-remote teams.

Why?

  I'm working in a distributed development team, and wanted a better way for us to estimate tickets.

  Plus, I wanted to build something using
  Elixir/Phoenix,
  ReactJS
  and websockets.
  This project also uses
  Materialize CSS,
  highlight.js,
  and clipboard.js

How?

  Just create your team and get started. There are no accounts or passwords. Don't forget to bookmark your team's URL.
  When you create a ticket, share its URL with the members of your team and ask everyone to estimate its size.

  For more information, check out this
  blog post

What prevents someone changing a different person's estimate?

  Wheaton's Law
  If your team is not complying with Wheaton's Law, this tool will not help you.

Who?

  Me:
  [Twitter]
  [Github]
  [Blog]

Source

  The source code is on
  Github.
  Feedback/suggestions/pull requests are very welcome.

  Back

  Welcome to ticket poker.

What?

  This is an online tool to facilitate planning poker for development teams, especially remote or partially-remote teams.

Why?

  I'm working in a distributed development team, and wanted a better way for us to estimate tickets.

  Plus, I wanted to build something using
  Elixir/Phoenix,
  ReactJS
  and websockets.
  This project also uses Materialize CSS
  and clipboard.js

How?

  Just create your team and get started. There are no accounts or passwords. Don't forget to bookmark your team's URL.
  When you create a ticket, share its URL with the members of your team and ask everyone to estimate its size.

  For more information, check out this
  blog post

What prevents someone changing a different person's estimate?

  Wheaton's Law
  If your team is not complying with Wheaton's Law, this tool will not help you.

Who?

  Me:
  [Twitter]
  [Github]
  [Blog]

Source

  The source code is on
  Github.
  Feedback/suggestions/pull requests are very welcome.

  Back


hint minutes

hint minutes

<%= @path %> Task

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

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

      <% end %>

            Name
            <%= text_input f, :name, placeholder: "Name", class: "form-control input-sm", required: true %>

            Interval
             <%= number_input f, :interval, placeholder: "Interval(minutes)", class: "form-control input-sm", min: 1 %>

            Url
            <%= url_input f, :url, placeholder: "Url", class: "form-control input-sm" %>

            Method
            <%= select f, :method, ["get","post","put", "patch"], prompt: "method", required: true, class: "form-control input-sm" %>

            Headers
            <%= textarea f, :headers, placeholder: "Headers", value: Poison.encode!(field_value(f, :headers)) ,class: "form-control input-sm"%>

            Params
            <%= textarea f, :params, placeholder: "Params", value: Poison.encode!(field_value(f, :params)), class: "form-control input-sm"%>

            Expect
            <%= textarea f, :expect, placeholder: "Expect",  value: Poison.encode!(field_value(f, :expect)),class: "form-control input-sm", required: true %>

            Active
            <%= checkbox f, :active , class: "minimal-check", checked_value: true, unchecked_value: false %>

            Group

            <%= multiple_select f, :groups, @all_groups,
                selected: (if @path === "Edit", do: Map.get(@changeset.data, :groups), else: []) |>  Enum.map(& "#{&1.id}"),
                class: "form-control chosen-select input-sm",
                data: [placeholder: "Choose Group"],
                name: "group_ids[]",
                required: true %>

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

      <% end %>

<%= @path %> Task

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

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

      <% end %>

            Name
            <%= text_input f, :name, placeholder: "Name", class: "form-control input-sm", required: true %>

            Interval
             <%= number_input f, :interval, placeholder: "Interval", class: "form-control input-sm", min: 1 %>

            Url
            <%= url_input f, :url, placeholder: "Url", class: "form-control input-sm" %>

            Method
            <%= select f, :method, ["get","post","put", "patch"], prompt: "method", required: true, class: "form-control input-sm" %>

            Headers
            <%= textarea f, :headers, placeholder: "Headers", value: Poison.encode!(field_value(f, :headers)) ,class: "form-control input-sm"%>

            Params
            <%= textarea f, :params, placeholder: "Params", value: Poison.encode!(field_value(f, :params)), class: "form-control input-sm"%>

            Expect
            <%= textarea f, :expect, placeholder: "Expect",  value: Poison.encode!(field_value(f, :expect)),class: "form-control input-sm", required: true %>

            Active
            <%= checkbox f, :active , class: "minimal-check", checked_value: true, unchecked_value: false %>

            Group

            <%= multiple_select f, :groups, @all_groups,
                selected: (if @path === "Edit", do: Map.get(@changeset.data, :groups), else: []) |>  Enum.map(& "#{&1.id}"),
                class: "form-control chosen-select input-sm",
                data: [placeholder: "Choose Group"],
                name: "group_ids[]",
                required: true %>

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

      <% end %>


input form for dec_health_points

input form for dec_health_points

<% alias BsWeb.SnakeForm %>

<% initial_empty_snakes = 10 %>
<% n = max((initial_empty_snakes - length(@form.data.snakes)) - 1, 0) + 1 %>
<% snakes = List.duplicate(%SnakeForm{}, n)%>

<fieldset>

    <%= label :f, :width, "Board Width" %>
    <%= number_input @form, :width, required: true %>

    <%= label @form, :height %>
    <%= number_input @form, :height, required: true %>

    <%= label @form, :delay, "Turn delay (ms)" %>
    <%= number_input @form, :delay, required: true %>

    <%= label @form, :recv_timeout, "API timeout (ms)" %>
    <%= number_input @form, :recv_timeout, required: true %>

    <%= label @form, :max_food %>
    <%= number_input @form, :max_food, required: true %>

    <%= label @form, :snake_start_length %>
    <%= number_input @form, :snake_start_length, required: true %>

    <%= label @form, "Health lost per turn" %>
    <%= number_input @form, :dec_health_points, required: true %>

    <%= label @form, :game_mode %>
    <%= select @form, :game_mode, BsRepo.GameForm.game_modes(), required: true %>

</fieldset>

<fieldset>

Snakes

        url
        delete

      <%= inputs_for @form, :snakes, [append: snakes], fn g -> %>

          <%= url_input g, :url,
              title: "Please enter a valid url (e.g. http://localhost:4000)",
              pattern: "https?://.+" %>
          <%= checkbox g, :delete %>

      <% end %>

</fieldset>

<% alias BsWeb.SnakeForm %>

<% initial_empty_snakes = 10 %>
<% n = max((initial_empty_snakes - length(@form.data.snakes)) - 1, 0) + 1 %>
<% snakes = List.duplicate(%SnakeForm{}, n)%>

<fieldset>

    <%= label :f, :width, "Board Width" %>
    <%= number_input @form, :width, required: true %>

    <%= label @form, :height %>
    <%= number_input @form, :height, required: true %>

    <%= label @form, :delay, "Turn delay (ms)" %>
    <%= number_input @form, :delay, required: true %>

    <%= label @form, :recv_timeout, "API timeout (ms)" %>
    <%= number_input @form, :recv_timeout, required: true %>

    <%= label @form, :max_food %>
    <%= number_input @form, :max_food, required: true %>

    <%= label @form, :snake_start_length %>
    <%= number_input @form, :snake_start_length, required: true %>

    <%= label @form, :game_mode %>
    <%= select @form, :game_mode, BsRepo.GameForm.game_modes(), required: true %>

</fieldset>

<fieldset>

Snakes

        url
        delete

      <%= inputs_for @form, :snakes, [append: snakes], fn g -> %>

          <%= url_input g, :url,
              title: "Please enter a valid url (e.g. http://localhost:4000)",
              pattern: "https?://.+" %>
          <%= checkbox g, :delete %>

      <% end %>

</fieldset>


Fix typo in templates/registration/new.html.eex

<%= form_for @changeset, registration_path(@conn, :create), fn form -> %>
  <%= if form.errors != [] do %>

Error!

        <%= for {attr, message} <- form.errors do %>

<%= humanize(attr) %> <%= message %>

        <% end %>

  <% end %>

          <input class="form-control" id="user_name" name="user[name]" type="text"  placeholder="ユーザID">

          <input class="form-control" id="user_password" name="user[password]" type="password"  placeholder="パスワード">

          <%= submit "新規登録", class: "btn btn-primary" %>

<% end %>


Give the "no emails" page a bit more room (#190)

<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <title>Email Preview</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/4.0.0/normalize.css" charset="utf-8">

No emails sent. Maybe because:

          Not using Bamboo.LocalAdapter. Make sure you have
          your mailer configured to use Bamboo.LocalAdapter or the
          emails will not show up here.

          You recently restarted your server. The previewer
          does not persist emails so whenever you restart the server the list
          will be cleared.


Fix admin navbar

Fix admin navbar

      <a class="navbar-item" href="<%= offer_path(@conn, :index) %>">
        <%= img_tag static_path(@conn, "/images/logo.svg"), class: "logo" %>
        <%= gettext("ElixirJobs") %>

        <a class="navbar-item" href="<%= offer_path(@conn, :new) %>"><%= gettext "Publish an offer" %>
        <a class="navbar-item" href="<%= page_path(@conn, :about) %>"><%= gettext "About" %>

        <%= if user_logged_in?(@conn) do %>
        <%= link(gettext("Pending offers"), to: admin_offer_path(@conn, :index_unpublished), class: "navbar-item")%>
        <%= link(gettext("Published offers"), to: admin_offer_path(@conn, :index_published), class: "navbar-item")%>
        <%= link(gettext("Log out"), to: auth_path(@conn, :delete), class: "navbar-item") %>
        <% end %>

        <a class="navbar-item" href="<%= offer_path(@conn, :rss) %>">

      <a class="navbar-item" href="<%= offer_path(@conn, :index) %>">
        <%= img_tag static_path(@conn, "/images/logo.svg"), class: "logo" %>
        <%= gettext("ElixirJobs") %>

        <a class="navbar-item" href="<%= offer_path(@conn, :new) %>"><%= gettext "Publish an offer" %>
        <a class="navbar-item" href="<%= page_path(@conn, :about) %>"><%= gettext "About" %>
        <%= if user_logged_in?(@conn) do %>
        <%= gettext "Administration" %>
        <%= link(gettext("Published offers"), to: admin_offer_path(@conn, :index_published), class: "navbar-item")%>
        <%= link(gettext("Pending offers"), to: admin_offer_path(@conn, :index_unpublished), class: "navbar-item")%>

        <% else %>
        <% end %>

        <%= if user_logged_in?(@conn) do %>
        <%= link(gettext("Log out"), to: auth_path(@conn, :delete), class: "navbar-item") %>
        <% end %>

        <a class="navbar-item" href="<%= offer_path(@conn, :rss) %>">


A Simple Home Page

A Simple Home Page

Welcome to Rumbl.io!

Rumbl out loud.

Resources

        Guides

        Docs

        Source

Help

        Mailing list

        #elixir-lang on freenode IRC

        @elixirphoenix

Welcome to Phoenix!

A productive web framework that
does not compromise speed and maintainability.

Resources

        Guides

        Docs

        Source

Help

        Mailing list

        #elixir-lang on freenode IRC

        @elixirphoenix


try to fix fastclick delay on android chrome

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="theme-color" content="#F0F3F7" />
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="description" content="whistler news reader">
    <meta name="author" content="Frederik Dietz">

    <title>whistler news reader</title>

    <link href="https://fonts.googleapis.com/css?family=Merriweather:300,400" rel="stylesheet" type="text/css">
    <link href='https://fonts.googleapis.com/css?family=Lato:400,600' rel='stylesheet' type='text/css'>
  </head>

  <body>
    <%= render @view_module, @view_template, assigns %>
    <%= if Mix.env == :dev do %>
      <script src="http://localhost:4001/bundle.js"></script>
    <% else %>
      <script src="<%= static_path(@conn, "/js/bundle.js") %>"></script>
    <% end %>
  </body>
</html>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="theme-color" content="#F0F3F7" />
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="description" content="whistler news reader">
    <meta name="author" content="Frederik Dietz">

    <title>whistler news reader</title>

    <link href="https://fonts.googleapis.com/css?family=Merriweather:300,400" rel="stylesheet" type="text/css">
    <link href='https://fonts.googleapis.com/css?family=Lato:400,600' rel='stylesheet' type='text/css'>
  </head>

  <body>
    <%= render @view_module, @view_template, assigns %>
    <%= if Mix.env == :dev do %>
      <script src="http://localhost:4001/bundle.js"></script>
    <% else %>
      <script src="<%= static_path(@conn, "/js/bundle.js") %>"></script>
    <% end %>
  </body>
</html>


Update google analytics unique identifier.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://fonts.googleapis.com/css?family=Assistant:300|Loved+by+the+King|Just+Another+Hand" rel="stylesheet">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Parkinson's and Me</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">
  </head>

  <body>

    <main>
      <%= render @view_module, @view_template, assigns %>
    </main>

    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-4855628-20', 'auto');
      ga('send', 'pageview');
    </script>
    <script>
      var trackOutboundLink = function(url) {
        ga('send', 'event', 'outbound', 'click', url, {
         'transport': 'beacon',
         'hitCallback': function(){document.location = url;}
        });
      }
    </script>
    <script src="<%= static_path(@conn, "/js/elm.js") %>"></script>
    <script src="<%= static_path(@conn, "/js/app.js") %>"></script>

  </body>
</html>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://fonts.googleapis.com/css?family=Assistant:300|Loved+by+the+King|Just+Another+Hand" rel="stylesheet">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Parkinson's and Me</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">
  </head>

  <body>

    <main>
      <%= render @view_module, @view_template, assigns %>
    </main>

    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-4855628-21', 'auto');
      ga('send', 'pageview');
    </script>
    <script>
      var trackOutboundLink = function(url) {
        ga('send', 'event', 'outbound', 'click', url, {
         'transport': 'beacon',
         'hitCallback': function(){document.location = url;}
        });
      }
    </script>
    <script src="<%= static_path(@conn, "/js/elm.js") %>"></script>
    <script src="<%= static_path(@conn, "/js/app.js") %>"></script>

  </body>
</html>


adds horizental scrolling to course conflict matrix

Course Conflict

      <%= for {course_id, _courses} <- @matrix do %>
         <%= course_name(@courses, course_id) %>
      <% end %>
       Total students

    <%= for {course1_id, courses} <- @matrix do %>

         <%= course_name(@courses, course1_id) %>

        <%= for {course2_id, students} <- courses do %>
          <%= if course1_id == course2_id do %>
            NA
          <% else %>
             <%= students %>
          <% end %>
        <% end %>

         <%= total_students(@courses, course1_id) %>

    <% end %>


Add Google Analytics

Add Google Analytics

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>ElixirFriends!</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">
  </head>

  <body>
    <div class="ui container">
      <%= @inner %>
    </div> <!-- /container -->
    <script src="<%= static_path(@conn, "/js/app.js") %>"></script>
    <script>require("web/static/js/app")</script>
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-44717355-3', 'auto');
      ga('send', 'pageview');

    </script>
  </body>
</html>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>ElixirFriends!</title>
    <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">
  </head>

  <body>
    <div class="ui container">
      <%= @inner %>
    </div> <!-- /container -->
    <script src="<%= static_path(@conn, "/js/app.js") %>"></script>
    <script>require("web/static/js/app")</script>
  </body>
</html>