# ------------------------------------------
# Monit configuration file for ElasticSearch
# ------------------------------------------

check process elasticsearch with pidfile <%= @pidfile %>
  start program = "/etc/init.d/elasticsearch restart" with timeout 60 seconds
  stop program  = "/etc/init.d/elasticsearch stop"
  if cpu > 90% for 15 cycles then restart
  if totalmem > 90% for 15 cycles then restart
  if loadavg(15min) greater than 10 for 50 cycles then stop
  group elasticsearch

<% if node.monit[:notify_email] %>
check host elasticsearch_connection with address 0.0.0.0
  if failed url http://0.0.0.0:9200/ with timeout 15 seconds then alert
  group elasticsearch

check host elasticsearch_cluster_health with address 0.0.0.0
  if failed url http://0.0.0.0:9200/_cluster/health
     and content == 'green'
     with timeout 60 seconds
     then alert
     alert <%= node.monit[:notify_email] %> with mail-format {
       subject:  [monit] elasticsearch: CLUSTER HEALTH PROBLEM at <%= node.hostname %>
       message:  [<%= node.hostname %>] $SERVICE $ACTION
                 <% if node.monit[:http_auth] && node.cloud %>
                 --
                 http://<%= node.monit[:http_auth]['username'] %>:<%= node.monit[:http_auth]['password_encoded'] %>@<%= node.cloud.public_hostname %>:2812/elasticsearch_cluster_health
                 <% end %>
     }
  group elasticsearch
<% end %>

# ------------------------------------------
# Monit configuration file for ElasticSearch
# ------------------------------------------

check process elasticsearch with pidfile <%= @pidfile %>
  start program = "/etc/init.d/elasticsearch restart" with timeout 60 seconds
  stop program  = "/etc/init.d/elasticsearch stop"
  if cpu > 90% for 15 cycles then alert
  if totalmem > 90% for 15 cycles then alert
  if loadavg(15min) greater than 10 for 50 cycles then alert
  group elasticsearch

<% if node.monit[:notify_email] %>
check host elasticsearch_connection with address 0.0.0.0
  if failed url http://0.0.0.0:9200/ with timeout 15 seconds then alert
  group elasticsearch

check host elasticsearch_cluster_health with address 0.0.0.0
  if failed url http://0.0.0.0:9200/_cluster/health
     and content == 'green'
     with timeout 60 seconds
     then alert
     alert <%= node.monit[:notify_email] %> with mail-format {
       subject:  [monit] elasticsearch: CLUSTER HEALTH PROBLEM at <%= node.hostname %>
       message:  [<%= node.hostname %>] $SERVICE $ACTION
                 <% if node.monit[:http_auth] && node.cloud %>
                 --
                 http://<%= node.monit[:http_auth]['username'] %>:<%= node.monit[:http_auth]['password_encoded'] %>@<%= node.cloud.public_hostname %>:2812/elasticsearch_cluster_health
                 <% end %>
     }
  group elasticsearch
<% end %>

Use only `alert` in Monit actions and leave invasive actions to supervisor intervention


<% provide(:title, 'Board Nomination') %>
<% provide(:jumbotron_class, 'contact') %>

<%= yield(:title) %>

Please use this nomination form to tell us about someone you think would be a great fit for VPAC Board!

    <%= form_tag(send_nomination_email_path) do %>

          <%= label_tag 'nominee', 'Nominee' %>
          <%= text_field_tag 'nominee', nil, class: 'form-control', placeholder: 'Nominee\'s Name' %>

          <%= label_tag 'email', 'Email' %>
          <%= email_field_tag 'email', nil, class: 'form-control', placeholder: 'Nominee\'s Email Address' %>

          <%= label_tag 'nominator', 'Nominator' %>
          <%= text_field_tag 'nominator', nil, class: 'form-control', placeholder: 'Your Name (optional)' %>

        <%= submit_tag nil, class: 'btn btn-default btn-about pull-right' %>
    <% end %>

<%= render 'layouts/footer' %>

<% provide(:title, 'Board Nomination') %>
<% provide(:jumbotron_class, 'contact') %>

<%= yield(:title) %>

Please use this nomination form to inform us of someone you think would be a great fit for VPAC Board!

    <%= form_tag(send_nomination_email_path) do %>

          <%= label_tag 'nominee', 'Nominee' %>
          <%= text_field_tag 'nominee', nil, class: 'form-control', placeholder: 'Nominee\'s Name' %>

          <%= label_tag 'email', 'Email' %>
          <%= email_field_tag 'email', nil, class: 'form-control', placeholder: 'Nominee\'s Email Address' %>

          <%= label_tag 'nominator', 'Nominator' %>
          <%= text_field_tag 'nominator', nil, class: 'form-control', placeholder: 'Your Name (optional)' %>

        <%= submit_tag nil, class: 'btn btn-default btn-about pull-right' %>
    <% end %>

<%= render 'layouts/footer' %>

Change text in nomination jumbotron

Change text in nomination jumbotron


<% form_tag url(:group, :list_groups), :method => 'post' do %>

      <%= I18n.translate 'view.list_groups.query' %>:

      <input type="text" value="<%= params[:query] %>" id="query" name="query" style="width: 450px;" maxlength="50"/>

      <input type="submit" value="<%= I18n.translate 'find' %>" class="btn" onclick="resetPagination()"/>

  <%= DataTable.new do |t|
    t.page_index = @current_page
    t.total = @groups.count
    t.data = @groups
    t.columns = [
      DataColumn.new(:title => 'Name', :ui => { :type => :text, :value => "%{name}" }, :width => 400),
      DataColumn.new(:ui => { :type => 'link', :value => "/group/%{id}", :label => I18n.translate('detail'), :class => 'btn btn-info btn-small' }, :width => 50)
    ]
  end.render :id => 'dt_groups', :csrf_token => csrf_token %>

<% end %>

<% if signed_user_has_permission? Rules::GROUP_CREATE_GROUP %>

  <a href="<%= url :group, :create %>" class="btn btn-info"><%= I18n.translate 'create_group' %>
<% end %>

Add create group button to list groups page.


<% title _("Prometheus 2.0 - Maintainer «") + @maintainer.name + _("»") %>

<%= _('Maintainer:') %> <%= @maintainer.name %>

 <%= link_to _('Information'), maintainer_path(@branch, @maintainer), :class => 'news', :title => _('information about maintainer') %>   <%= link_to _('Packages'), srpms_maintainer_path(@branch, @maintainer), :class => 'news', :title => _('packages which was built by this maintainer') %>   <%= link_to _('Gear'), gear_maintainer_path(@maintainer), :class => 'news', :title => _('gear') %>   <%= link_to _('Bugs and FR'), bugs_maintainer_path(@maintainer), :class => 'news', :title => _('Bugs/FR statistics assigned to this maintainer') %>   <%= _('FTBFS') %>   <%= link_to _('Repocop'), repocop_maintainer_path(@maintainer), :class => 'news', :title => _('repocop bugreports') %>

Add ftbfs page for maintainer

Add ftbfs page for maintainer


<li class="node node-depth-<%= section.depth %> section">

      <%= section.name %>

        Section

  <% if section.children.present? %>

      <%= render section.children %>

  <% end %>

<li class="node node-depth-<%= section.depth %> section">

      <%= section.name %>

        Section

      <%= link_to "+ Page", new_page_path(section_id: section.id) %>

  <% if section.children.present? %>

      <%= render section.children %>

  <% end %>

Add button to create new pages

Add button to create new pages


<%= render 'shared/error_messages', :object => f.object %>

<%= f.input :season, input_html: { value: JUMU_SEASON, class: "span1" } %>
<%= f.association :round %>
<%= f.association :host %>
<%= f.input :begins,
    prompt: { day: "Tag", month: "Monat", year: "Jahr" }, input_html: { class: "span2" } %>
<%= f.input :ends,
    prompt: { day: "Tag", month: "Monat", year: "Jahr" }, input_html: { class: "span2" } %>
<%= f.input :signup_deadline,
    prompt: { day: "Tag", month: "Monat", year: "Jahr" }, input_html: { class: "span2" } %>
<%= f.input :certificate_date,
    prompt: { day: "Tag", month: "Monat", year: "Jahr" }, input_html: { class: "span2" } %>
<%= f.input :timetables_public %>

<%= render 'shared/error_messages', :object => f.object %>

<%= f.input :season, input_html: { value: f.object.season || JUMU_SEASON, class: "span1" } %>
<%= f.association :round %>
<%= f.association :host %>
<%= f.input :begins,
    prompt: { day: "Tag", month: "Monat", year: "Jahr" }, input_html: { class: "span2" } %>
<%= f.input :ends,
    prompt: { day: "Tag", month: "Monat", year: "Jahr" }, input_html: { class: "span2" } %>
<%= f.input :signup_deadline,
    prompt: { day: "Tag", month: "Monat", year: "Jahr" }, input_html: { class: "span2" } %>
<%= f.input :certificate_date,
    prompt: { day: "Tag", month: "Monat", year: "Jahr" }, input_html: { class: "span2" } %>
<%= f.input :timetables_public %>

Set default season value in contest form only when not editing an existing contest


Search

<%= form_for search, url: specialist_documents_path(document_type), method: :get do |f| %>

    <%= f.text_field :term, {default_builder: true}, {placeholder: "Search term"} %>

    Search which field?
    <%= f.radio_button :attribute, "title", label: "Title" %>
    <%= f.radio_button :attribute, "slug", label: "Slug" %>

  <button type="submit" class="btn btn-success">Search</button>
<% end %>

Search

<%= form_for search, url: specialist_documents_path(document_type), method: :get do |f| %>

    <%= f.text_field :term, {default_builder: true}, {placeholder: "Search term"} %>

(case sensitive)

    Search which field?
    <%= f.radio_button :attribute, "title", label: "Title" %>
    <%= f.radio_button :attribute, "slug", label: "Slug" %>

  <button type="submit" class="btn btn-success">Search</button>
<% end %>

Add case sensitive help text to search form


          Flynn is designed, built, and managed by Cupcake.

          © 2013-2014 Apollic Software, LLC.

          Flynn is a trademark of Apollic Software, LLC.

              GitHub

              IRC

              Contact

              Blog

          Flynn is designed, built, and managed by Cupcake.

          © 2013-2014 Apollic Software, LLC.

          Flynn is a trademark of Apollic Software, LLC.

              Trademark Guidelines

              GitHub

              IRC

              Contact

              Blog

Add trademark guidelines to nav

website: Add trademark guidelines to nav


//= depend_on_asset "ajax-loader.gif"

(function($){

    $.widget( "core.bindReq", {

        options: {
            request: {
                dataType: "json",
                type: "POST"
            },
            loader: "div.content",
            serialized_data: "",
            custom: {}
        },

        _create: function() {
            this.context_loader = $(this.options.loader).busyBox({
                spinner: '<img src="<%= image_path('ajax-loader.gif')  %>" />',
                autoOpen: false
            });

        },
        perform: function() {
            var opts = this.options;
            var that = this;

            $.ajax($.extend({
                url: opts.context.prop("action"),
                data: opts.serialized_data,
                beforeSend: function() {
                    that.context_loader.busyBox("open");
                },
                success: function(response) {
                },
                complete: function() {
                    that.context_loader.busyBox("close");
                }
            }, this.options.request, this.options.custom));
        },

        _destroy: function() {
        }

    });

})(jQuery);

Fix assets dependencies for jquery loader

Change-Id: Id664647cf4d6a98302a830225de3194c47782f9b


---
title: Administering Cloud Foundry
---

This section presents a guide to managing Elastic Runtime at the administrator level.

## Table of Contents

* [Adding Buildpacks to Cloud Foundry](./buildpacks.html)
* [Creating Domains and Routes](./domains-routes.html)
* [Creating and Managing Users with the cf CLI](./cli-user-management.html)
* [Managing Users with the UAA CLI (UAAC)](./uaa-user-management.html)
* [Application Security Groups](./app-sec-groups.html)
* [Feature Flags](./listing-feature-flags.html)

---
title: Administering Cloud Foundry
---

This section presents a guide to managing Elastic Runtime at the administrator level.

## Table of Contents

* [Adding Buildpacks to Cloud Foundry](./buildpacks.html)
* [Managing Domains and Routes](./manage-domains-routes.html)
* [Creating and Managing Users with the cf CLI](./cli-user-management.html)
* [Managing Users with the UAA CLI (UAAC)](./uaa-user-management.html)
* [Application Security Groups](./app-sec-groups.html)
* [Feature Flags](./listing-feature-flags.html)

Update admin domains and routes topic name and link

[#89820792]


  <% dashboard = 'active' if params[:controller].include?('dashboard') %>

<%= link_to Typus::I18n.t("Dashboard"), admin_dashboard_path, :class => dashboard %>

  <% admin_user.applications.each do |application| %>

    <%
      apps = admin_user.application(application)
      klass = (@resource && apps.include?(@resource.model_name)) ? 'active' : nil
    %>

    <%
      url = { :controller => apps.first.tableize }
      html_options = { :class => klass }
    %>

<%= link_to Typus::I18n.t(application), url, html_options %>

  <% end %>

  <% dashboard = 'active' if params[:controller].include?('dashboard') %>

<%= link_to Typus::I18n.t("Dashboard"), admin_dashboard_path, :class => dashboard %>

  <% admin_user.applications.each do |application| %>

    <%
      apps = admin_user.application(application)
      klass = (@resource && apps.include?(@resource.model_name)) ? 'active' : nil
    %>

    <%
      url = { :controller => "/admin/#{apps.first.tableize}" }
      html_options = { :class => klass }
    %>

<%= link_to Typus::I18n.t(application), url, html_options %>

  <% end %>

Fix to make namespaced apps work

Fix to make namespaced apps work


# Controlling Concurrency

Some tasks need to be run with very strict concurrency rules to ensure their tasks don't collide. Common examples for needing concurrency control is for running deployments, app releases, or infrastructure tasks.

To help you control concurrency Buildkite provides two primitives: concurrency groups, and concurrency limits.

<%= toc %>

## Concurrency Groups

Concurrency groups are what Buildkite uses to group together jobs when applying concurrency limits. Any job in your organization with the same concurrency group will be subject to the concurrency limits you've set.

Examples for concurrency groups include:

* `our-payment-gateway/deployment`
* `terraform/update-state`
* `my-mobile-app/app-store-release`

## Concurrency Limits

Concurrency limits define the number of simultaneous build jobs that are allowed to be running at any one time.

A concurrency limit of `1` ensures that no two jobs with the same concurrency group will run at the same time.

## Example: Deploy Step

The following is an example [command step](/docs/agent/build-pipelines#command-steps) that would run a deployment step one-at-a-time, no matter how many builds are created:

```yaml
- command: 'deploy.sh'
  name: '\:rocket\: Deploy production'
  branches: 'master'
  agents:
    deploy: true
  concurrency: 1
  concurrency_group: 'our-payment-gateway/deploy'
```

Add a guide on concurrency

Add a guide on concurrency


# Launch the geo backend
launch=geo

# Make sure we don't cache anything as we give everybody a unique answer
query-cache-ttl=0
cache-ttl=0

# Turn off wildcards for performance
#Disable wildcard parameter as no longer compatible with recent pdns
#wildcards=no

# The zone we are managing
geo-zone=geo.openstreetmap.org

# The SOA record for the zone
geo-soa-values=a.ns.openstreetmap.org,hostmaster.openstreetmap.org

# The NS records for the zone
geo-ns-records=a.ns.openstreetmap.org

# Map IP addresses to geographic zones
geo-ip-map-zonefile=/etc/powerdns/countries.conf

# Map geographic zones to responses
geo-maps=/etc/powerdns/zones.d

# Launch the geo backend
launch=geo

# Make sure we don't cache anything as we give everybody a unique answer
query-cache-ttl=0
cache-ttl=0

# Turn off wildcards for performance
#Disable wildcard parameter as no longer compatible with recent pdns
#wildcards=no

# The zone we are managing
geo-zone=geo.openstreetmap.org

# The SOA record for the zone
geo-soa-values=a.ns.openstreetmap.org,hostmaster.openstreetmap.org

# The NS records for the zone
geo-ns-records=a.ns.openstreetmap.org,b.ns.openstreetmap.org,c.ns.openstreetmap.org

# Map IP addresses to geographic zones
geo-ip-map-zonefile=/etc/powerdns/countries.conf

# Map geographic zones to responses
geo-maps=/etc/powerdns/zones.d

Fix NS records on geo.openstreetmap.org

Fix NS records on geo.openstreetmap.org


<%= render "shared/globalize_locales",
           resource: @process,
           display_style: lambda { |locale| enable_translation_style(@process, locale) } %>

<%= translatable_form_for [:admin, @process] do |f| %>
  <%= f.translatable_fields do |translations_form| %>
    <div class="ckeditor">
      <%= translations_form.cktext_area :milestones_summary, ckeditor: { language: I18n.locale } %>
    </div>
  <% end %>

  <%= f.submit class: "button success" %>
<% end %>

<%= render "shared/globalize_locales",
           resource: @process,
           display_style: lambda { |locale| enable_translation_style(@process, locale) } %>

<%= translatable_form_for [:admin, @process] do |f| %>

    <%= f.translatable_fields do |translations_form| %>

        <%= translations_form.cktext_area :milestones_summary, ckeditor: { language: I18n.locale } %>

    <% end %>

      <%= f.submit class: "button success" %>

<% end %>

Align admin legislation milestones summary form fields with new translations interface


Tag Listing

<% n = 1 %>
<% collect_tags.each do |tag| %>
  <li class="r<%= n %>"><%= tag_link(tag) %>

  <% n = n == 2 ? 1 : 2 %>
<% end %>

Tag Listing

The following are a brief list of tags that can be used in YARD formatted
  documentation. See <%= link_file "Tags.md" %> for information on using tags.

<% n = 1 %>
<% collect_tags.each do |tag| %>
  <li class="r<%= n %>"><%= tag_link(tag) %>

  <% n = n == 2 ? 1 : 2 %>
<% end %>

Add note about tag listing on index page


--without-pear
--with-gd
--with-jpeg-dir=/usr
--with-png-dir=/usr
--enable-exif
--with-zlib
--with-zlib-dir=/usr
--with-kerberos
--with-imap-ssl
--with-openssl
--with-mcrypt=/usr
--with-pdo-sqlite
--enable-soap
--enable-xmlreader
--with-xsl
--enable-ftp
--enable-cgi
--with-curl=/usr
--with-tidy
--with-xmlrpc
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--enable-pcntl
--with-readline
--with-curl
--with-pdo-pgsql
--enable-mbstring
--enable-intl

--without-pear
--with-gd
--with-jpeg-dir=/usr
--with-png-dir=/usr
--enable-exif
--enable-zip
--with-zlib
--with-zlib-dir=/usr
--with-kerberos
--with-imap-ssl
--with-openssl
--with-mcrypt=/usr
--with-pdo-sqlite
--enable-soap
--enable-xmlreader
--with-xsl
--enable-ftp
--enable-cgi
--with-curl=/usr
--with-tidy
--with-xmlrpc
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--enable-pcntl
--with-readline
--enable-mbstring
--with-curl
--with-pdo-pgsql
--enable-intl

Add --enable-zip option to PHP's configure options.


ULTIMOS CURSOS

<% tracks.each do |track| %>

		<% if !track.contents.first.nil? %>
			<img src="<%= track.contents.first.file.url(:thumb) %>" style="width: 100%; max-height: 180px;" />
		<% else %>

		<% end %>
		<a href="<%= track_url(track) %>">
<%= track.title %>

<% end %>

ULTIMOS CURSOS

<% tracks.each do |track| %>

			<% if !track.contents.first.nil? %>
				<img src="<%= track.contents.first.file.url %>" style="height:100%;" />
			<% else %>

			<% end %>

		<a href="<%= track_url(track) %>">
<%= track.title %>

<% end %>

Update thumbnail display at index

Update thumbnail display at index


<%= render 'firms/trades/index', trades: @trades, trade_type: 'buys' %>

<% content_for :ready_js do %>
  JsModals.bindEvents()
<% end %>

<%= link_to t('view.budgets.title'), firm_budgets_path(@parent), class: 'btn' %>
<%= render 'firms/trades/index', trades: @trades, trade_type: params[:trade_type] %>

<% content_for :ready_js do %>
  JsModals.bindEvents()
<% end %>

Add link to budgets in products list

Add link to budgets in products list


---
title: Rate Limit Information Returned by the Cloud Controller API
owner: CAPI
---

The Cloud Controller API includes rate limit information in the HTTP header. Each header includes the following:

```
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 56
X-RateLimit-Reset: 1372700873
```

Use this table to understand the rate limit header.

Field Value
Description

 	X-RateLimit-Limit
 	The maximum number of attempts per User Account and Authentication (UAA) user, if a user is authenticated. The maximum number of attempts per IP address, if no user is authenticated.

 	X-RateLimit-Remaining
 	The number of attempts remaining.

 	X-RateLimit-Reset
 	The time remaining before the rate limit counter resets, in UTC epoch seconds.

When requests exceed the rate limit value, the Cloud Controller API returns a `429: Too Many Requests` error code.

---
title: Rate Limit Information Returned by the Cloud Controller API
owner: CAPI
---

The Cloud Controller API includes rate limit information in the HTTP header. Each header includes the following:

```
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 56
X-RateLimit-Reset: 1372700873
```

Use this table to understand the rate limit header.

Field Value
Description

 	X-RateLimit-Limit
 	The maximum number of attempts per User Account and Authentication (UAA) user, if a user is authenticated. The maximum number of attempts per IP address, if no user is authenticated.

 	X-RateLimit-Remaining
 	The number of attempts remaining.

 	X-RateLimit-Reset
 	The time when the rate limit counter resets, in UTC epoch seconds.

When requests exceed the rate limit value, the Cloud Controller API returns a `429: Too Many Requests` error code.

Fix ambiguous description of X-RateLimit-Reset

The meaning of `X-RateLimit-Reset` is not the time remaining in epoch seconds, but rather the time in epoch seconds at which the counter resets.


---
processes:
- name: gorouter
  executable: /var/vcap/packages/gorouter/bin/gorouter
  args:
  - -c
  - /var/vcap/jobs/gorouter/config/gorouter.yml
  limits:
    open_files: 100000
  env:
    GODEBUG: netdns=cgo,tls13=0
  hooks:
    pre_start: /var/vcap/jobs/gorouter/bin/bpm-pre-start
  capabilities:
  - NET_BIND_SERVICE

---
processes:
- name: gorouter
  executable: /var/vcap/packages/gorouter/bin/gorouter
  args:
  - -c
  - /var/vcap/jobs/gorouter/config/gorouter.yml
  limits:
    open_files: 100000
  env:
    GODEBUG: netdns=cgo
  hooks:
    pre_start: /var/vcap/jobs/gorouter/bin/bpm-pre-start
  capabilities:
  - NET_BIND_SERVICE

Remove TLSv1.3 GODEBUG BPM flag for Gorouter

Max TLS version is now configured as a BOSH spec property so we no
longer want to be hardcoding this as a GODEBUG flag in the BPM template.

[#172157317](https://www.pivotaltracker.com/story/show/172157317)


<% page_title @classification.name %>

<% content_for :classification_tab do %>
  <table class="<%= model_name %> table">

      Description
      <%= @classification.description %>

      Details
      <%= classification_contents_breakdown(@classification) %>

      Duration

        <% if @classification.start_date && @classification.end_date %>
          <%= @classification.start_date %> to <%= @classification.end_date %>
        <% end %>

      Related

        <% if @classification.related_classifications.any? %>

            <% @classification.related_classifications.each do |pa| %>
              <%= content_tag_for(:li, pa) do %>
                <%= link_to pa.name, [:admin, pa], title: "Edit #{model_name.humanize.downcase} #{pa.name}" %>
              <% end %>
            <% end %>

        <% else %>
          None
        <% end %>

    <%= link_to "Edit", [:edit, :admin, @classification], class: "btn btn-large btn-primary"%>

<% end %>

<%= render partial: 'tab_wrapper' %>

Use <th> tags for table headings

Use <th> tags for table headings


<%= form_for request do |f| %>

      <%= f.label :content, 'How can someone be a neighbor to you today? ' %>

      <%= f.text_field :content %>

  <%= f.submit 'Ping your neighbors!', class: 'button round success' %>

<% end %>

<%= form_for request do |f| %>

      <%= f.label :content, 'How can someone be a neighbor to you today? ' %>

      <%= f.text_field :content %>

  <%= f.submit 'Ping your neighbors!', class: 'button round ping' %>

<% end %>

Change spacing between form fields"

Change spacing between form fields"


source 'https://rubygems.org'

ruby '<%= Suspenders::RUBY_VERSION %>'

gem 'airbrake'
gem 'bourbon', '~> 3.2.1'
gem 'coffee-rails'
gem 'delayed_job_active_record'
gem 'email_validator'
gem 'flutie'
gem 'high_voltage'
gem 'jquery-rails'
gem 'neat', '~> 1.5.1'
gem 'pg'
gem 'rack-timeout'
gem 'rails', '<%= Suspenders::RAILS_VERSION %>'
gem 'recipient_interceptor'
gem 'sass-rails', '~> 4.0.3'
gem 'simple_form'
gem 'title'
gem 'uglifier'
gem 'unicorn'

group :development do
  gem 'foreman'
  gem 'spring'
  gem 'spring-commands-rspec'
end

group :development, :test do
  gem 'awesome_print'
  gem 'byebug'
  gem 'dotenv-rails'
  gem 'factory_girl_rails'
  gem 'pry-rails'
  gem 'rspec-rails', '~> 2.14.0'
end

group :test do
  gem 'capybara-webkit', '>= 1.0.0'
  gem 'database_cleaner'
  gem 'formulaic'
  gem 'launchy'
  gem 'shoulda-matchers', require: false
  gem 'timecop'
  gem 'webmock'
end

group :staging, :production do
  gem 'newrelic_rpm', '>= 3.7.3'
end

source 'https://rubygems.org'

ruby '<%= Suspenders::RUBY_VERSION %>'

gem 'airbrake'
gem 'bourbon', '~> 3.2.1'
gem 'coffee-rails'
gem 'delayed_job_active_record'
gem 'email_validator'
gem 'flutie'
gem 'high_voltage'
gem 'jquery-rails'
gem 'neat', '~> 1.5.1'
gem 'pg'
gem 'rack-timeout'
gem 'rails', '<%= Suspenders::RAILS_VERSION %>'
gem 'recipient_interceptor'
gem 'sass-rails', '~> 4.0.3'
gem 'simple_form'
gem 'title'
gem 'uglifier'
gem 'unicorn'

group :development do
  gem 'foreman'
  gem 'spring'
  gem 'spring-commands-rspec'
end

group :development, :test do
  gem 'awesome_print'
  gem 'byebug'
  gem 'dotenv-rails'
  gem 'factory_girl_rails'
  gem 'pry-rails'
  gem 'rspec-rails', '~> 2.14.0'
end

group :test do
  gem 'capybara-webkit', '>= 1.2.0'
  gem 'database_cleaner'
  gem 'formulaic'
  gem 'launchy'
  gem 'shoulda-matchers', require: false
  gem 'timecop'
  gem 'webmock'
end

group :staging, :production do
  gem 'newrelic_rpm', '>= 3.7.3'
end

Upgrade Capybara and Capybara Webkit

Upgrade Capybara and Capybara Webkit

The previous stable release of capybara-webkit didn't support Capybara 2.3. We
just released capybara-webkit 1.2, with support for the latest version.


<% sorted_variables.each do |item| %>
  <% dataset = Dataset.find(item.dataset_id) -%>
  <%= popularity = VariableList.all(:conditions=>"variable_id=" + item.id.to_s).size -%>

  <%= render :partial => "surveys/variables_table_row",:locals=>{:item => item, :dataset => dataset, :popularity => popularity, :curr_cycle=>cycle("_even","_odd")} %>
  <%= render :partial => "surveys/variables_table_expanded_row",:locals=>{:item => item, :dataset => dataset, :popularity => popularity, :hidden=>true,:curr_cycle=>current_cycle} %>
<% end %>

<% sorted_variables.each do |item| %>
  <% dataset = Dataset.find(item.dataset_id) -%>
  <% popularity = VariableList.all(:conditions=>"variable_id=" + item.id.to_s).size -%>

  <%= render :partial => "surveys/variables_table_row",:locals=>{:item => item, :dataset => dataset, :popularity => popularity, :curr_cycle=>cycle("_even","_odd")} %>
  <%= render :partial => "surveys/variables_table_expanded_row",:locals=>{:item => item, :dataset => dataset, :popularity => popularity, :hidden=>true,:curr_cycle=>current_cycle} %>
<% end %>

Fix for 948. Stopped temporary value popularity being written as it was created.


<% content_for :page_title do %>
  Your details
<% end %>

  <form action="/contact-details" method="post" class="form">

      First name
      <input type="text" class="form-control" id="name" name="name">

      Last name
      <input type="text" class="form-control" id="surname" name="surname">

      Email
      <input type="text" class="form-control" id="email" name="email">

      Phone
      <input type="text" class="form-control" id="phone" name="phone">

      <input type="submit" class="button" value="Continue">

  </form>

<% content_for :page_title do %>
  Your details
<% end %>

  <form action="/contact-details" method="post" class="form">

      First name
      <input type="text" class="form-control" id="name" name="name">

      Last name
      <input type="text" class="form-control" id="surname" name="surname">

      Email
      <input type="text" class="form-control" id="email" name="email">

      Mobile Phone

Include a country code, for example +447813123456

      <input type="text" class="form-control" id="phone" name="phone">

      <input type="submit" class="button" value="Continue">

  </form>

Add hint to phone field

Add hint to phone field


<%= document.title %>

  <% if document.summary.present? %>

<%= document.summary %>

  <% end %>
  <% if document.respond_to?(:nation_inapplicabilities) and document.nation_inapplicabilities.any? %>

Only applies to <%= only_applies_to_nations_list(@document) %>

  <% end %>

<%= document.title %>

  <% if document.summary.present? %>

<%= document.summary %>

  <% end %>
  <% if document.respond_to?(:nation_inapplicabilities) and document.nation_inapplicabilities.any? %>

Only applies to <%= only_applies_to_nations_list(@document) %>.

  <% end %>

Add full stop after only applies to (country name)

https://www.pivotaltracker.com/story/show/54105383


<script id="ga-params">
  window.GOVUK = window.GOVUK || {};
  window._gaq = window._gaq || [];
  GOVUK.Analytics = GOVUK.Analytics || {};
  <%#
    Slimmer inserts custom variables here
    https://github.com/alphagov/slimmer/blob/master/lib/slimmer/processors/google_analytics_configurator.rb
  %>
</script>

<script id="ga-params">
  window.GOVUK = window.GOVUK || {};
  window._gaq = window._gaq || [];
  GOVUK.Analytics = GOVUK.Analytics || {};
  <%#
    Slimmer < 8.0.0 inserts custom variables here
    Once all apps have been updated beyond this version, this can be removed
  %>
</script>

Update comment about slimmer inserting js

Only version below 8.0.0 insert these old custom variables. When all
apps have been updated to use a modern slimmer this template can be
removed entirely.


  Thank you for your order. Instructions have been sent to your e-mail address.

  To complete a payment at <%= link_to "purchase page", source.pay_url %>.

  <%= link_to source.instructions_url do %>
    How to make a payment.
  <% end %>

Remove link of instructions url

Remove link of instructions url


[Unit]
Description=Consul Agent
After=network.target

[Service]
User=<%= scope.lookupvar('consul::user') %>
Group=<%= scope.lookupvar('consul::group') %>
ExecStart=<%= scope.lookupvar('consul::bin_dir') %>/consul agent \
  -config-dir <%= scope.lookupvar('consul::config_dir') %> <%= scope.lookupvar('consul::extra_options') %>
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
LimitNOFILE=131072

[Install]
WantedBy=multi-user.target

[Unit]
Description=Consul Agent
After=network.target

[Service]
User=<%= scope.lookupvar('consul::user') %>
Group=<%= scope.lookupvar('consul::group') %>
ExecStart=<%= scope.lookupvar('consul::bin_dir') %>/consul agent \
  -config-dir <%= scope.lookupvar('consul::config_dir') %> <%= scope.lookupvar('consul::extra_options') %>
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
LimitNOFILE=131072

[Install]
WantedBy=multi-user.target

Change Systemd Restart= to on-failure

Change Systemd Restart= to on-failure

Let a human shut the agent down manually with a kill signal.


<% if presented_taxon.show_organisations? %>

Organisations

        <%= render 'govuk_publishing_components/components/document_list',
          items: presented_taxon.taxon_organisations,
          margin_top: true,
          margin_bottom: false
      %>

<% end %>

Split how organisation title and grid is rendered

We are changing how organisations are displayed to show a logo
if one exists. The first step is splitting out how the title
and document list is rendered so we can apply separate styling to
each.


<%= content_tag_for(:span, attachment, class: "inline") do %>
  <%= link_to attachment.title, attachment.url %>
  [<%= attachment_attributes(attachment) %>]
<% end %>

<%= content_tag_for(:span, attachment, class: "inline") do %>
  <%= link_to attachment.title, attachment.url %>
  (<%= attachment_attributes(attachment) %>)
<% end %>

Update non style guide compliant square brackets for inline attachments

https://www.pivotaltracker.com/story/show/58656846


<%= render partial: 'spree/admin/promotions/actions/promotion_calculators_with_custom_fields',
           locals: { calculators: Spree::Promotion::Actions::CreateItemAdjustments.calculators, promotion_action: promotion_action, param_prefix: param_prefix } %>

<%= render(
  "spree/admin/promotions/actions/promotion_calculators_with_custom_fields",
  calculators: Spree::Promotion::Actions::CreateItemAdjustments.calculators,
  promotion_action: promotion_action,
  param_prefix: param_prefix
) %>

Use new partial render markup for create item adjustments

This removes the need for specifying `partial` and `locals` keys as well
as bringing the line length down.


Question: avg(last_10m):avg:aws.rds.cpuutilization{!host:bosh-replica,!host:ccdb-replica1,!host:uaadb-replica} by {host} > 75

## Description:
High CPU utilization for the last 10 minutes on
Host: {{host.dbname}}
DB: {{host.dbname}}

## Escalation Path:
Depends on the DB.

## Possible Causes:
Traffic has increased substantially
Slow queries overwhelming database
RDS Migrations

## Potential Solutions:
Increase RDS instance type (This WILL cause downtime of about 30 seconds)
In extreme cases we have tracked down a user who posts consistently long running queries and suspended their apps.  Do this with extreme caution.
 You can check the currently running tasks in the database using the script in prod-aws/scripts/ccdb-job-list while logged into the prod jumpbox

##Feedback:
 Have feedback for this alert? [File an issue](https://github.com/pivotal-cf/datadog-config/issues/new) @pagerduty-datadog-cloudops-service

High database CPU utilization on {{host.name}}

Question: avg(last_10m):avg:aws.rds.cpuutilization{!host:bosh-replica,!host:ccdb-replica1,!host:uaadb-replica} by {host} > 75

## Description:
High CPU utilization for the last 10 minutes on
Host: {{host.dbname}}
DB: {{host.dbname}}

## Escalation Path:
Depends on the DB.
* ccdb: [page CAPI](https://cfoundry.pagerduty.com/services/P2JWWPW/integrations)

## Possible Causes:
Traffic has increased substantially
Slow queries overwhelming database
RDS Migrations

## Potential Solutions:
Increase RDS instance type (This WILL cause downtime of about 30 seconds)
In extreme cases we have tracked down a user who posts consistently long running queries and suspended their apps.  Do this with extreme caution.
 You can check the currently running tasks in the database using the script in prod-aws/scripts/ccdb-job-list while logged into the prod jumpbox

##Feedback:
 Have feedback for this alert? [File an issue](https://github.com/pivotal-cf/datadog-config/issues/new) @pagerduty-datadog-cloudops-service

Include link to CAPI Pagerduty service in high rds cpu alert

[#141318459] Page: high ccdb cpu usage


[<a href="https://github.com/nathanstitt/code/erb_latex/tree/master/<%= object.file %><% if object.line %>#L<%= object.line %><% end %>">github]

[<a href="https://github.com/nathanstitt/erb_latex/blob/master/<%= object.file %><% if object.line %>#L<%= object.line %><% end %>">github]

Fix github link to point to proper spot in repo


<% if @appointment_summary.errors.any? %>

    <% @appointment_summary.errors.full_messages.each do |msg| %>

<%= msg %>

    <% end %>

<% end %>

<%= form_for @appointment_summary, url: appointment_summaries_path do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name, class: 't-name' %>
  <%= f.label :email_address %>
  <%= f.text_field :email_address, class: 't-email-address' %>
  <%= f.submit 'Submit', class: 't-submit' %>
<% end %>

Add styling to new appointment summary form


<%= taxon.title %>

<%= taxon.description %>

              <%= render partial: 'tagged_content_list', locals: {
                tagged_content: tagged_content
              } %>

          <% child_taxons.each_with_index do |child_taxon, index| %>

<%= child_taxon.title %>

<%= child_taxon.description %>

              <div class="subsection__content" id="subsection_content_<%= index+1 %>">
                <%= render partial: 'tagged_content_list', locals: {
                  tagged_content: child_taxon.tagged_content
                } %>

          <% end %>

          <% ([taxon] + child_taxons).each_with_index do |taxon_for_list, index| %>

<%= taxon_for_list.title %>

<%= taxon_for_list.description %>

              <div class="subsection__content" id="subsection_content_<%= index %>">
                <%= render partial: 'tagged_content_list', locals: {
                  tagged_content: taxon_for_list.tagged_content
                } %>

          <% end %>

Add missing ID for existing aria-control

This commit fixes an accessibility issue whereby we didn't have an ID
set for the first subsection of the taxons' list, but had the
corresponding `aria-control` pointing to it.

This also simplifies the markup to avoid duplication.


  <% @budget.phases.published.each do |phase| %>
    <li class="phase <%= 'active' if phase == @budget.current_phase %>">

<%= t("budgets.phase.#{phase.kind}") %>

        <% if phase.starts_at.to_date.present? %>
          <%= format_date(phase.starts_at) %>
        <% end %>
        -
        <% if phase.ends_at.to_date.present? %>
          <%= format_date(phase.ends_at) %>
        <% end %>

<%= phase.summary %>

  <% end %>

  <% @budget.published_phases.each do |phase| %>
    <li class="phase <%= 'active' if phase == @budget.current_phase %>">

<%= t("budgets.phase.#{phase.kind}") %>

        <%= format_date(phase.starts_at) if phase.starts_at.present? %>
        -
        <%= format_date(phase.ends_at - 1.day) if phase.ends_at.present? %>

<%= phase.summary %>

  <% end %>

Use budget published_phases's method to get them ordered, and decrease final date


Search Questions

  <%= form_tag(questions_path, :method => "get", id: "search-form") do %>
    <%= text_field_tag :search, params[:search],   placeholder: "Search Questions" %>
    <%= submit_tag "Search", :name => nil %>
  <% end %>

  <% @questions.each do |question| %>

      <%= link_to(question.title, question) %>

  <% end %>

<%= link_to("Create Question", new_question_path) %>

Remove search bar and create questions link from /questions/index view


<script type="text/javascript">
  window.sessionStorage.jwt = "<%= @player.token %>"
  window.location.replace("<%= @referer %>")
</script>

<script type="text/javascript">
  window.sessionStorage.jwt = "<%= @player.token %>"
  window.location.replace("/")
</script>

Fix potential issue with logins

Fix potential issue with logins


Edit <%= resource_name.to_s.humanize %>

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>

<%= f.label :name, class: 'required' %>

  <%= f.text_field :name, autofocus: true, placeholder: 'This will be used in your commits' %>

<%= f.label :email, class: 'required' %>

  <%= f.email_field :email, autofocus: true %>

  <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>

Currently waiting confirmation for: <%= resource.unconfirmed_email %>

  <% end %>

<%= f.label :password %> (leave blank if you don't want to change it)

    <%= f.password_field :password, autocomplete: "off" %>

<%= f.label :password_confirmation %>

    <%= f.password_field :password_confirmation, autocomplete: "off" %>

<%= f.label :current_password %> (we need your current password to confirm your changes)

    <%= f.password_field :current_password, autocomplete: "off" %>

<%= f.submit "Update" %>

<% end %>

<%= print_errors :user %>

Edit <%= resource_name.to_s.humanize %>

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>

<%= f.label(:name, class: 'required') %>

  <%= f.text_field(:name, autofocus: true, placeholder: 'This will be used in your commits') %>

<%= f.label(:email, class: 'required') %>

  <%= f.email_field(:email, autofocus: true) %>

  <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>

Currently waiting confirmation for: <%= resource.unconfirmed_email %>

  <% end %>

<%= f.label(:password) %> (leave blank if you don't want to change it)

    <%= f.password_field :password, autocomplete: "off" %>

<%= f.label(:password_confirmation) %>

    <%= f.password_field :password_confirmation, autocomplete: 'off' %>

<%= f.label(:current_password) %> (we need your current password to confirm your changes)

    <%= f.password_field(:current_password, autocomplete: 'off') %>

<%= f.submit "Update" %>

<% end %>

<%= print_errors :user %>

Fix code style on devise template.

Fix code style on devise template.


<% content_for :title do%>
  <%= t('group.new.action')%>
<%end%>

<% toolbar :home, :option => 'groups' %>

<% sidebar :group_index %>

<%= render :partial => 'new' %>

<% content_for :title do%>
  <%= t('group.new.action')%>
<%end%>

<% toolbar :home, :option => 'groups' %>

<%= render :partial => 'new' %>

Remove sidebar in groups new

Remove sidebar in groups new


<% provide(:title, 'Sign Up') %>

Formulario de Registro

    <%= form_for @user, url: {action: "create"} do |f| %>
      <%= f.label :username, "Usuario:" %>
      <%= f.text_field :username %>

      <%= f.label :identity, "Cédula:" %>
      <%= f.text_field :identity %>

      <%= f.label :first_name, "Nombres:" %>
      <%= f.text_field :first_name %>

      <%= f.label :last_name, "Apellido" %>
      <%= f.text_field :last_name %>

      <%= f.label :birth_date, "Nacido en:" %>
      <%= f.text_field :birth_date, 'data-provide' => 'datepicker' %>

      <%= f.label :email, "Email:" %>
      <%= f.email_field :email %>

      <%= f.label :password, "Contraseña" %>
      <%= f.password_field :password %>

      <%= f.label :password_confirmation, "Confirmación" %>
      <%= f.password_field :password_confirmation %>

      <%= f.submit "Crear mi cuenta", class: "btn btn-primary" %>
    <% end %>

<% provide(:title, 'Sign Up') %>

Formulario de Registro

    <%= form_for @user, url: {action: "create"} do |f| %>
      <%= f.label :username, "Usuario:" %>
      <%= f.text_field :username %>

      <%= f.label :identity, "Cédula:" %>
      <%= f.text_field :identity %>

      <%= f.label :first_name, "Nombres:" %>
      <%= f.text_field :first_name %>

      <%= f.label :last_name, "Apellido" %>
      <%= f.text_field :last_name %>

      <%= f.label :birth_date, "Nacido en:" %>
      <%= f.text_field :birth_date, 'data-provide' => 'datepicker' %>

      <%= f.label :email, "Email:" %>
      <%= f.email_field :email %>

      <%= f.label :password, "Contraseña" %>
      <%= f.password_field :password %>

      <%= f.label :password_confirmation, "Confirmación" %>
      <%= f.password_field :password_confirmation %>

      <%= f.label :user_type, "Deseo: " %>
      <%= f.select :type, [['Vender/Arrendar', 'LeaseHolder'], ['Comprar/Alquilar', nil]]  %>

      <%= f.submit "Crear mi cuenta", class: "btn btn-primary" %>
    <% end %>

Add select field for user_type.

Add select field for user_type.


NameVirtualHost <%= vhost_name %>:<%= port %>
<VirtualHost <%= vhost_name %>:<%= port %>>
  <% if ssl == true %>
  SSLEngine on
  SSLCertificateFile <%= ssl_path %>/certs/pl.cert
  SSLCertificateKeyFile <%= ssl_path %>/private/pl.key
  <% end %>
  ServerName <%= srvname %>
<% if serveraliases.is_a? Array %>
<% serveraliases.each do |name| %><%= "  ServerAlias #{name}\n" %><% end %>
<% elsif serveraliases != '' %>
<%= "  ServerAlias #{serveraliases}" %>
<% end %>
   ProxyRequests Off
   <Proxy *>
     Order deny,allow
     Allow from all
   </Proxy>
   ProxyPass        / <%= dest %>/
   ProxyPassReverse / <%= dest %>/
   ProxyPreserveHost On

   ErrorLog /var/log/<%= scope.lookupvar("apache::params::apache_name") %>/<%= name %>_error.log
   LogLevel warn
   CustomLog /var/log/<%= scope.lookupvar("apache::params::apache_name") %>/<%= name %>_access.log combined

</VirtualHost>

NameVirtualHost <%= vhost_name %>:<%= port %>
<VirtualHost <%= vhost_name %>:<%= port %>>
  <% if ssl == true %>
  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
  SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!RC4:+HIGH:+MEDIUM:-LOW
  SSLCertificateFile <%= ssl_path %>/certs/pl.cert
  SSLCertificateKeyFile <%= ssl_path %>/private/pl.key
  <% end %>
  ServerName <%= srvname %>
<% if serveraliases.is_a? Array %>
<% serveraliases.each do |name| %><%= "  ServerAlias #{name}\n" %><% end %>
<% elsif serveraliases != '' %>
<%= "  ServerAlias #{serveraliases}" %>
<% end %>
   ProxyRequests Off
   <Proxy *>
     Order deny,allow
     Allow from all
   </Proxy>
   ProxyPass        / <%= dest %>/
   ProxyPassReverse / <%= dest %>/
   ProxyPreserveHost On

   ErrorLog /var/log/<%= scope.lookupvar("apache::params::apache_name") %>/<%= name %>_error.log
   LogLevel warn
   CustomLog /var/log/<%= scope.lookupvar("apache::params::apache_name") %>/<%= name %>_access.log combined

</VirtualHost>

Disable SSLv2 and SSLv3 to fix BEAST, POODLE, RC4 issues


proxy_connect_timeout   <%= scope.lookupvar('nginx::params::nx_proxy_connect_timeout') %>;
proxy_send_timeout      <%= scope.lookupvar('nginx::params::nx_proxy_send_timeout') %>;
proxy_read_timeout      <%= scope.lookupvar('nginx::params::nx_proxy_read_timeout') %>;
<% @proxy_set_header.each do |header| -%>
proxy_set_header        <%= header %>;
<% end %>

proxy_connect_timeout   <%= scope.lookupvar('nginx::params::nx_proxy_connect_timeout') %>;
proxy_send_timeout      <%= scope.lookupvar('nginx::params::nx_proxy_send_timeout') %>;
proxy_read_timeout      <%= scope.lookupvar('nginx::params::nx_proxy_read_timeout') %>;

# Needed for proxy keepalive connection
proxy_http_version      1.1;
proxy_set_header        Connection "";

<% @proxy_set_header.each do |header| -%>
proxy_set_header        <%= header %>;
<% end %>

Make sure nginx proxy will be able to keepalive


<%= form_for adonis ||= Adonis.new do |f| %>
    <%= f.label :id %>
    <%= f.text_field :id, disabled: true %>

    <%= f.label :hostname %>
    <%= f.text_field :hostname %>

    <%= f.label :identifier %>
    <%= f.text_field :identifier %>

    <%= f.label :inventory_number %>
    <%= f.text_field :inventory_number %>

    <%= f.label :model %>
    <%= select_tag :model_id, options_for_select(Model.includes(:name, :id).all) %>

    <%= f.label :status %>
    <%= select_tag :status_id, options_for_select(Status.includes(:name, :id).all) %>

    <%= f.label :ipv4_gateway %>
    <%= f.text_field :ipv4_gateway %>

    <%= f.label :ipv6_gateway %>
    <%= f.text_field :ipv6_gateway %>

    <%= f.label :root_password %>
    <%= f.text_field :root_password %>

    <%= f.label :admin_password %>
    <%= f.text_field :admin_password %>

    <%= f.label :deploy_password %>
    <%= f.text_field :deploy_password %>

    <%= f.submit t 'views.save' %>
<% end %>

<%= form_for adonis ||= Adonis.new do |f| %>
    <% if adonis.id %>
        <%= f.label :id %>
        <%= f.text_field :id, disabled: true %>
    <% end %>

    <%= f.label :hostname %>
    <%= f.text_field :hostname %>

    <%= f.label :identifier %>
    <%= f.text_field :identifier %>

    <%= f.label :inventory_number %>
    <%= f.text_field :inventory_number %>

    <%= f.label :model %>
    <%= select_tag :model_id, options_for_select(Model.includes(:name, :id).all) %>

    <%= f.label :status %>
    <%= select_tag :status_id, options_for_select(Status.includes(:name, :id).all) %>

    <%= f.label :ipv4_gateway %>
    <%= f.text_field :ipv4_gateway %>

    <%= f.label :ipv6_gateway %>
    <%= f.text_field :ipv6_gateway %>

    <%= f.label :root_password %>
    <%= f.text_field :root_password %>

    <%= f.label :admin_password %>
    <%= f.text_field :admin_password %>

    <%= f.label :deploy_password %>
    <%= f.text_field :deploy_password %>

    <%= f.submit t 'views.save' %>
<% end %>

Hide Adonis' id when creating new record

When creating a new server, the ID field is just confusing, because it cannot be changed anyway and is more for information purposes. Since the form is shared, an if clause has been added to hide the field if no ID is present.


            <% @suggestions.each do |suggestion| %>
              <%= suggestion.description %>
            <% end %>

          <% @event.invitees.each do |invitee| %>

              <% @suggestions.each do |suggestion| %>

              <% end %>

          <% end %>

      <form id="auto-complete">
        <input type="text" placeholder="+ Add participant…"/>
      </form>

          <% @event.invitees.each do |invitee| %>

                <%= invitee.name %>

          <% end %>

            <% @suggestions.each do |suggestion| %>
              <%= suggestion.description %>
            <% end %>

          <% @event.invitees.each do |invitee| %>

              <% @suggestions.each do |suggestion| %>

                <%# If user has voted for this suggestion, display: %>
                <%#  %>
                <%#    %>
                <%#  %>
              <% end %>

          <% end %>

      <form id="auto-complete">
        <input type="text" placeholder="+ Add participant…"/>
      </form>

          <% @event.invitees.each do |invitee| %>

                <%= invitee.name %>

          <% end %>

Fix markup typo and add comments about missing conditional.


<% content_for :title do %>
    <% if params[:search_param].present? %>
        <% "OpenSplitTime: Search events - #{params[:search_param]}" %>
    <% else %>
        <% "OpenSplitTime: Search events" %>
    <% end %>
<% end %>

Events

    <%= link_to 'Create New Event', new_event_path,
                class: 'btn btn-sm btn-success btn-margin-lg' %>

<%= render 'lookup' %>

    <%= will_paginate(inner_window: 2, outer_window: 0) %>

<% if @events.present? %>
    <%= render 'events', events: @events %>
<% else %>

    <% unless params[:search_param].blank? %>

No events match this search

    <% end %>
<% end %>

    <%= will_paginate(inner_window: 2, outer_window: 0) %>

<% content_for :title do %>
    <% if params[:search_param].present? %>
        <% "OpenSplitTime: Search events - #{params[:search_param]}" %>
    <% else %>
        <% "OpenSplitTime: Search events" %>
    <% end %>
<% end %>

Events

    <%= link_to 'Create New Event', new_event_path,
                class: 'btn btn-sm btn-success btn-margin-lg' %>

<%= render 'lookup' %>

    <%= will_paginate(inner_window: 2, outer_window: 0) %>

<% if @events.present? %>
    <%= render 'events', events: @events %>
<% else %>

    <% if params[:search_param].blank? %>

Enter an event name to search

        <% else %>

No events match this search

    <% end %>
<% end %>

    <%= will_paginate(inner_window: 2, outer_window: 0) %>

Add back explanatory message to event index when no search param exists.


// Support library for Analytical, allows for trigger analytics track/event commands via javascript
var Analytical = {

  track: function(page) {
    <%= analytical.now.track('__PAGE__').gsub(/"__PAGE__"/,'page') %>
  },

  event: function(name, data) {
    if (typeof data === 'undefined') { data = {}; }
		<%= analytical.now.event('__EVENT__', {}).gsub(/"__EVENT__"/,'name').gsub(/"?\{}"?/,'data') %>
  }

};

Add vendor javascript asset for Rails 3.1


     Develop

    <%= nav_link("Restart Web Server", "refresh", restart_url) %>
    <%= nav_link("Developer Documentation", "book", developer_docs_url) %>
    <%= nav_link(products_title(:dev), "gear", products_path(type: "dev")) %>
    <% if Configuration.app_sharing_enabled? %>
      <%= nav_link(products_title(:usr), "share-alt", products_path(type: "usr")) %>
    <% end %>

Use hidden class instead of id

Use hidden class instead of id


<%= content_for(:meta_title, t('nlt.change_your_city')) %>

<%= t('nlt.change_your_city') %>

    <%= render partial: "ask_form", :locals => { location_suggest: @location_suggest } %>

  <%= render partial: "partials/google_adsense", locals: { class_name: "desktop google_adsense_600_160", ad_slot: "6783776462"}  %>
  <%= render partial: "partials/google_adsense", locals: { class_name: "mobile google_adsense_336_280", ad_slot: "7225596067"}  %>

<%= content_for(:meta_title, t('nlt.change_your_city')) %>

<%= t('nlt.change_your_city') %>

    <%= render partial: "ask_form", :locals => { location_suggest: @location_suggest } %>

  <%= render partial: "partials/google_adsense", locals: { class_name: "google_adsense_336_280", ad_slot: "7225596067"}  %>

Improve adsense in location change page

Improve adsense in location change page

This change is for 2 reasons:

* This is basically the same template as "locations/list" but without
the location selector filled. It doesn't make a lot of sense to show
different banners.

* The form is "too horizontal" for a vertical banner.


<!DOCTYPE html>

  <title>Install Page</title>

Install the application

  <form method="GET" action="login">
    Type shop name:
    <input type="text" name="shop" placeholder="blabla.myshopify.com"/>
    <button type='submit'>Install</buttom>
  </form>

<!DOCTYPE html>

  <title>Install Page</title>

Install the application

  <form method="GET" action="login">
    Type shop name:
    <input type="text" name="shop" placeholder="blabla.myshopify.com"/>
    <button type='submit'>Install</button>
  </form>

Correct incorrectly spelled HTML tag: 'button'

Not 'buttom'.


<%= @story.title %>

  <%= @story.content.html_safe %>

    <%= @story.user.author %>
    <% if has_right?(:section => :stories, :id => @story.id) %>
      | <%= link_to t(:edit), edit_story_path(@story) %>
      | <%= link_to t(:destroy), @story, confirm: t(:are_you_sure), method: :delete %>
    <% end %>

<%=t :comments %>

  <%= render @story.comments %>

<%=t :add_comment %>

  <%= form_for([@story, @story.comments.build]) do |f| %>

      <% if current_user.nil? %>
        <%= f.label :author, t(:author) %>

        <%= f.text_field :author %>
      <% else %>

        <%= f.hidden_field :author, :value => current_user.author %>
        <%= f.hidden_field :user_id, :value => current_user.id %>
      <% end %>

      <%= f.text_area :body %>

      <%= f.submit %>

  <% end %>

<%= @story.title %>

  <%= @story.content.html_safe %>

    <%= @story.user.author %>
    <% if has_right?(:section => :stories, :id => @story.id) %>
      | <%= link_to t(:edit), edit_story_path(@story) %>
      | <%= link_to t(:destroy), @story, confirm: t(:are_you_sure), method: :delete %>
    <% end %>

<%=t :comments %>

  <%= render @story.comments %>

<%=t :add_comment %>

  <%= form_for([@story, @story.comments.build]) do |f| %>

      <% if current_user.nil? %>
        <%= f.label :author, t(:author) %>

        <%= f.text_field :author %>
      <% else %>
        <%= f.hidden_field :author, :value => current_user.author %>
        <%= f.hidden_field :user_id, :value => current_user.id %>
      <% end %>

      <%= f.label :body, t(:comment) %>

      <%= f.text_area :body %>

      <%= f.submit %>

  <% end %>

Improve look of the comments

Improve look of the comments


Guided Tour

    [application screenshot]

    Companies already using this app

Fix some typos with the grid

Fix some typos with the grid


        <%= link_to 'TIYD-Rails TA Page', root_path, class:"center" %>

Edit Profile

<%= render 'form' %>

        <%= link_to 'TIYD-Rails TA Page', root_path, class:"center" %>

        <%= link_to 'Home', root_path, class:"center" %>

Edit Profile

<%= render 'form' %>

Add Home link on Edit navbar

Add Home link on Edit navbar


See your support in action

  <button class="video inner-info" href="https://www.youtube.com/watch?v=Td4NJgWJmMo">Watch Now</button>

  Watch more videos

  <button class="video inner-info" href="https://www.youtube.com/watch?v=hquwElFso7M">Watch Now</button>

  <button class="video inner-info" href="https://www.youtube.com/watch?v=m4RbuLrJV48">Watch Now</button>

  <button class="video inner-info" href="http://www.youtube.com/watch?v=J6vyKzUlu4g">Watch Now</button>

Update link for watch more videos

Update link for watch more videos


/* DO NOT EDIT: File is auto-generated */
package <%= to_package(enumeration.ce.qualified_name) %>;

@javax.annotation.Generated( "Domgen" )
@java.lang.SuppressWarnings( { "UnusedDeclaration", "JavaDoc" } )
public enum <%= enumeration.ce.name %>
{
  <%= enumeration.values.collect {|k| "#{k.name}" } .join(",\n  ") %>
}

/* DO NOT EDIT: File is auto-generated */
package <%= to_package(enumeration.ce.qualified_name) %>;

@javax.annotation.Generated( "Domgen" )
@java.lang.SuppressWarnings( { "UnusedDeclaration", "JavaDoc" } )
public enum <%= enumeration.ce.name %>
  implements java.io.Serializable
{
  <%= enumeration.values.collect {|k| "#{k.name}" } .join(",\n  ") %>
}

Make this enumeration serializable so that auto_beans can use the same class


Hello,

<% if test.success? %>

An alert was issued for incoming data from the ODK Aggregate server
  <%= form.server.name %> at
  <%= link_to form.server.url, form.server.url %>. A submission for the form
  <%= form.name %> triggered an alert with this message:

<%= alert.message %>

<% else %>

An alert issued an error for incoming data from the ODK Aggregate server
  <%= form.server.name %> at
  <%= link_to form.server.url, form.server.url %>. A submission for the form
  <%= form.name %> could not be processed for the following
  reason:

<%= test.error %>

<% end %>

<%= link_to 'View Your Integrations', integrations_url(url_options) %>

<% if Rails.env.development? %>

<%= Time.now %>

<% end %>

Add hidden timestamp to emails sent locally

Gmail seems to block duplicate emails sent within the same few minutes.
Adding a timestamp uniquifies the emails.


      Supported Packages

    <% @supported_packages.each_slice(2) do |batch| %>

        <% batch.each do |package| %>

            <%=
              link_to package.name,
                package_path(package),
                class: "btn btn-default cs-full-width cs-left-align cs-no-margin #{ 'active' if current_page?(package_path(package)) }"
            %>

        <% end %>

    <% end %>

  <% if @has_many_supported %>

      <%= link_to root_path(user_id: @user), class: "btn btn-default cs-side-bar-footer-link cs-full-width cs-left-align cs-no-margin", style: "padding-left: 15px" do %>
        View all Supported Packages
      <% end %>

  <% end %>

      Supported Packages

    <% @supported_packages.each_slice(2) do |batch| %>

        <% batch.each do |package| %>

            <%=
              link_to package.name,
                package_path(package),
                class: "btn btn-default cs-full-width cs-left-align cs-no-margin #{ 'active' if current_page?(package_path(package)) }"
            %>

        <% end %>

    <% end %>

  <% if @has_many_supported %>

      <%= link_to packages_path(user_id: @user), class: "btn btn-default cs-side-bar-footer-link cs-full-width cs-left-align cs-no-margin", style: "padding-left: 15px" do %>
        View all Supported Packages
      <% end %>

  <% end %>

Fix bug where supported_packages linked to rootUrl


<% if record.statusable? %>
  <% label = local_assigns.fetch(:label, nil) %>
  <% date_label = local_assigns.fetch(:date_label, 'Published date') %>
  <div class="status-scheduler form-group">
    <%= f.input :status, as: :select, collection: record.class.statuses_for_select.collect { |k, v| [k.titleize, k] }, include_blank: false, label: label %>
    <% if record.respond_to?(:published_date) %>
      <%= f.input :published_date,
                  as: :datepicker,
                  timepicker: false,
                  hint: "Set the date of this record to a future date and it will be hidden until the start of this date.",
                  label: date_label %>
    <% elsif record.respond_to?(:scheduled_date) %>
      <%= f.input :scheduled_date,
                  as: :datepicker,
                  timepicker: false,
                  hint: "Set the date of this record to a future date and it will be hidden until the start of this date.",
                  label: date_label,
                  wrapper_html: {
                    class: ('active' if record.scheduled?) } %>
    <% end %>
  </div>
<% end %>

<% if record.statusable? %>
  <% label = local_assigns.fetch(:label, nil) %>
  <% hint = local_assigns.fetch(:hint, nil) %>
  <% date_label = local_assigns.fetch(:date_label, 'Published date') %>
  <div class="status-scheduler form-group">
    <%= f.input :status, as: :select, collection: record.class.statuses_for_select.collect { |k, v| [k.titleize, k] }, include_blank: false, label: label, hint: hint %>
    <% if record.respond_to?(:published_date) %>
      <%= f.input :published_date,
                  as: :datepicker,
                  timepicker: false,
                  hint: "Set the date of this record to a future date and it will be hidden until the start of this date.",
                  label: date_label %>
    <% elsif record.respond_to?(:scheduled_date) %>
      <%= f.input :scheduled_date,
                  as: :datepicker,
                  timepicker: false,
                  hint: "Set the date of this record to a future date and it will be hidden until the start of this date.",
                  label: date_label,
                  wrapper_html: {
                    class: ('active' if record.scheduled?) } %>
    <% end %>
  </div>
<% end %>

Allow setting status hint from partial

Allow setting status hint from partial


<% provide(:title, t(".new_choice")) %>

  <%= bootstrap_form_for(
        @choice,
        :url => catalog_admin_choice_set_choices_path) do |f| %>

      <%= select2_select(f, :parent_id, @choice_set.flat_ordered_choices.filter { |choice| choice.id != @choice.id }.map { |choice| [@choice_set.choice_prefixed_label(choice), choice.id] }, include_blank: ' ') %>

      <%= f.select :position, [[t('.position.first'), :first], [t('.position.last'), :last]] %>

    <%= render("catalog_admin/choices/choice_fields", :f => f) %>

      <%= f.primary(t(".create_choice")) %>
      <%= link_to(
            t("cancel"),
            catalog_admin_choice_sets_path,
            :class => "btn btn-link") %>

  <% end %>

<% provide(:title, t(".new_choice")) %>

  <%= bootstrap_form_for(
        @choice,
        :url => catalog_admin_choice_set_choices_path) do |f| %>

      <%= select2_select(f, :parent_id, @choice_set.flat_ordered_choices.filter { |choice| choice.id != @choice.id }.map { |choice| [@choice_set.choice_prefixed_label(choice), choice.id] }, include_blank: ' ') %>

      <%= f.select :position, [[t('.position.first'), :first], [t('.position.last'), :last]] %>

    <%= render("catalog_admin/choices/choice_fields", :f => f) %>

      <%= f.primary(t(".create_choice")) %>
      <%= link_to(
            t("cancel"),
            edit_catalog_admin_choice_set_path(
              @choice_set.catalog,
              I18n.locale,
              @choice_set),
            :class => "btn btn-link") %>

  <% end %>

Fix route when canceling a new choice

Fix route when canceling a new choice


  <%= form_for @consultant, url: update_consultant_path(@consultant) do |f| %>

Qual o seu nome?
    <%= f.text_field :name, class: "form-control" %>

<%= f.submit "Ir para a Secretária MK", class: 'secondary hollow button' %>

  <% end %>

  <%= form_for @consultant, url: update_consultant_path(@consultant) do |f| %>

Qual o seu nome?
    <%= f.text_field :name, required: true %>

<%= f.submit "Ir para a Secretária MK", class: 'secondary hollow button' %>

  <% end %>

Make consultant's name field required

Make consultant's name field required


<a href="/businesses/<%= current_business.id %>">Dinner Winner

<a class="business-dash" href="/businesses/<%= current_business.id %>">Business Dashboard

      |

<a id="deals-link" class="my-deals-link" href="/businesses/<%= current_business.id %>/deals">My Deal Templates

        |
        <a href="/businesses/<%= current_business.id %>/edit">

        <form class="sign-out-form" action="/businesses/sign_out" method="post"/>
          <input type="hidden" name="_method" value="delete">
          <input name="authenticity_token" type="hidden" value="token_value">
          <input type="submit" value="Logout">
        </form>

<a href="/businesses/<%= current_business.id %>">Dinner Winner

<a class="business-dash" href="/businesses/<%= current_business.id %>">Business Dashboard

      |

<a id="deals-link" class="my-deals-link" href="/businesses/<%= current_business.id %>/deals">My Deal Templates

        |
        <a href="/businesses/<%= current_business.id %>/edit">

        <form class="sign-out-form" action="/businesses/sign_out" method="post"/>
          <input type="hidden" name="_method" value="delete">
          <input name="authenticity_token" type="hidden" value="token_value">
          <button type="submit"></button>
        </form>

Add logout icon for business header

Add logout icon for business header


<% content_for :sidebar do %>

<% end %>

<% content_for :templates do %>
  <%= render "spree/templates/products/index" %>
  <%= render "spree/templates/products/preview" %>
  <%= render "spree/templates/products/show" %>
  <%= render "spree/templates/cart/show" %>
  <%= render "spree/templates/taxonomies/item" %>
<% end %>

Add pagination element at the bottom too


    <% @oils.each do |oil| %>
      <%= link_to oil.name, oil_path(oil) %>
    <% end %>

Create a generic oil index page

Create a generic oil index page


Welcome, <%= @user.name %>!

Your SoundTreks:

  <% @user.sound_treks.each do |sound_trek|%>

<%= link_to sound_trek.title, sound_trek_path(sound_trek) %>

  <% end %>

Welcome, <%= @user.uid %>!

Your SoundTreks:

  <% @user.sound_treks.each do |sound_trek|%>

<%= link_to sound_trek.title, sound_trek_path(sound_trek) %>

  <% end %>

Change user show page to display username in welcome message


User

Email: <%= @user.email %>

This user has signed in <%= @user.sign_in_count %> times!

<% if !@user.subjects.empty? %>

This user has created the following subjects in the database:

    <% @user.subjects.each do |s| %>

<%= link_to s.name, subject_path(s) %>

    <% end %>

<% end %>

User

Name: <%= @user.name %>

Email: <%= @user.email %>

<%= @user.name %> has signed in <%= @user.sign_in_count %> times!

<% if !@user.subjects.empty? %>

<%= @user.name %> has created the following subjects in the database:

    <% @user.subjects.each do |s| %>

<%= link_to s.name, subject_path(s) %>

    <% end %>

<% end %>

Add more info to user show page.

Add more info to user show page.


<%= @user.first_name %>'s Profile

<img class="profpic" width="150" height="150" src="<%= @user.picture %>" alt="<%= @user.first_name %>">

<%= @user.first_name %>'s Good Nghbor Points: <%= @user.vote_count %>

<%= @user.first_name %>'s Recent Activity:

<div id

Add proper rows/columns for mobile styling purposes


<% content_for :javascript_includes do %>
  <%= javascript_include_tag "jquery.dataTables.min.js" %>

<% end %>

      <td colspan="<%= @headers.size %>">Results for '<%= link_to(@task.measurable.name, @task.measurable) %>' on <%= link_to(@task.repository.name, @task.repository) %>

      <% @headers.each do |key|%>

          <%= key %>

      <% end %>

  <% @results.each do |res_row| %>

      <% @headers.each do |header|%>

        <%= res_row[header] =~ URI::regexp ? link_to(res_row[header]) : res_row[header] %>

      <% end %>

  <% end %>

<% content_for :javascript_includes do %>
  <%= javascript_include_tag "jquery.dataTables.min.js" %>

<% end %>

      <td colspan="<%= @headers.size %>">Results for '<%= link_to(@task.measurable.name, @task.measurable) %>' on <%= link_to(@task.repository.name, @task.repository) %>

      <% @headers.each do |key|%>

          <%= key %>

      <% end %>

  <% @results.each do |res_row| %>

      <% @headers.each do |header|%>

        <%= res_row[header] =~ URI::regexp ? link_to(res_row[header], res_row[header]) : res_row[header] %>

      <% end %>

  <% end %>

Make stuff clickable in the results and send people to the real results


<div data-module="track-smart-answer" data-smart-answer-node-type="outcome" data-smart-answer-slug="<%= outcome.slug %>">
  <%= render "govuk_publishing_components/components/heading", {
    text: outcome.title,
    margin_bottom: 4
  } %>

  <%= render "govuk_publishing_components/components/govspeak", {
    content: sanitize(outcome.body)
  } %>

<div data-module="track-smart-answer" data-smart-answer-node-type="outcome" data-smart-answer-slug="<%= outcome.slug %>">
  <%= render "govuk_publishing_components/components/heading", {
    text: outcome.title,
    margin_bottom: 4
  } %>

  <%= render "govuk_publishing_components/components/govspeak", {
    content: outcome.body.html_safe
  } %>

Make outcome body safe for simple smart answers

This was changed in 5fb281fc560b9a1d77a27ff555c834dcd1c7df09 and it
prevents tables from rendering correctly on the pages:

See
https://www.gov.uk/student-finance-forms/y/english-student-part-time/apply-for-student-loans-and-grants/2018-to-2019/no/no/yes
for an example.

I think it's fine to mark this string as HTML safe because it comes from
a trusted source and can only be modified by a content designer.


<%
  property_name = property[:name]
  label = property[:pretty_name]
  required = !property[:nullable?]
  model_name = @abstract_model.to_param
%>
              <%= label_tag label %>
              <%= text_area model_name, property_name, :cols => 50, :rows => 10, :class => "textField" %>

<%
  property_name = property[:name]
  label = property[:pretty_name]
  required = !property[:nullable?]
  model_name = @abstract_model.to_param
%>
              <%= label_tag label %>
              <%= text_area model_name, property_name, :cols => 50, :rows => 10, :class => "textField", :value => @object.send(property_name) %>

Fix a bug that was preventing a textarea to show it's content


<% content_for :content do %>

  <%= render 'shared/header' %>

        <%= yield %>

        <%= render 'shared/directory', items: category_navigation %>

    <%= render 'shared/footer_social_links' %>

<% end %>

<%= render template: 'layouts/base' %>

Move directory outside of container

Move directory outside of container


<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">

<%@write_section = lambda do |page| %>

	<%page.pages.each do |child|%>
		<%next if child.hide%>

 <OBJECT type="text/sitemap">
			<param name="Name" value="<%=CGI.escapeHTML child.title%>">
			<param name="Local" value="<%=FileUtils.win_path( @html_path / child.html_path ).gsub('&','%26')%>">
			<%if child.sublink?
				%><param name="ImageNumber" value="17"><%
			elsif child.leaf?
				%><param name="ImageNumber" value="11"><%
			end%>
			</OBJECT>
		<%@write_section[child] unless child.pages.empty?%>
	<%end%>

<%end%>

<%@write_section[@bundle.toc]%>

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">

<%@write_section = lambda do |page| %>

	<%page.pages.each do |child|%>
		<%next if child.hide%>

 <OBJECT type="text/sitemap">
			<param name="Name" value="<%=CGI.escapeHTML child.title%>">
			<param name="Local" value="<%=FileUtils.win_path( @html_path / child.html_path ).gsub('&','%26')%>">
			<%if child.icon?
				%><param name="ImageNumber" value="<%=child.icon%>"><%
			elsif child.sublink?
				%><param name="ImageNumber" value="17"><%
			elsif child.leaf?
				%><param name="ImageNumber" value="11"><%
			end%>
			</OBJECT>
		<%@write_section[child] unless child.pages.empty?%>
	<%end%>

<%end%>

<%@write_section[@bundle.toc]%>

Use custom icon if specified

Use custom icon if specified


# http://emberjs.com/guides/models/defining-a-store/

DS.CloudsdaleSerializer = DS.RESTSerializer.extend
  normalize: (type, prop, hash) ->
    normalized = {}
    for key of hash
      normalized[Ember.String.camelize(key)] = hash[key] if key

    return @_super(type, prop, normalized)

  serialize: (record, options) ->
    json = @_super(record, options)
    for key of json
      if decamelized = name.decamelize() isnt key
          json[decamelized] = json[name]
          delete json[name]
    return json

  extractMeta: (store, type, payload) ->
    if (payload && payload.collection)
      store.metaForType(type, payload.collection)
      delete payload.collection

    @_super(store, type, payload)

DS.CloudsdaleAdapter = DS.RESTAdapter.extend

  namespace: "v2"
  host: "<%= $settings[:api][:v2][:host] %>"
  serializer: DS.CloudsdaleSerializer.create()

  buildURL: (type, id) ->
    return this._super(type, id) + ".json"

  ajax: (url, type, hash) ->
    hash ||= {}
    hash.xhrFields =
      withCredentials: true

    this._super(url, type, hash)

  extractMeta: (loader, type, json) ->
    meta = json[@configOption(type, 'collection')]
    return if not meta
    Ember.set('App.metaDataForLastRequest', meta)
    this._super(loader, type, json)

Cloudsdale.Store = DS.Store.extend
  adapter: DS.CloudsdaleAdapter

# http://emberjs.com/guides/models/defining-a-store/

DS.CloudsdaleSerializer = DS.RESTSerializer.extend
  normalize: (type, hash, prop) ->
    normalized = {}
    for key of hash
      normalized[Ember.String.camelize(key)] = hash[key]

    return @_super(type, normalized, prop)

  serialize: (record, options) ->
    json = @_super(record, options)
    for key of json
      if decamelized = name.decamelize() isnt key
          json[decamelized] = json[name]
          delete json[name]
    return json

  extractMeta: (store, type, payload) ->
    if (payload && payload.collection)
      store.metaForType(type, payload.collection)
      delete payload.collection

    @_super(store, type, payload)

DS.CloudsdaleAdapter = DS.RESTAdapter.extend

  namespace: "v2"
  host: "<%= $settings[:api][:v2][:host] %>"
  defaultSerializer: "DS/cloudsdale"

  buildURL: (type, id) ->
    return this._super(type, id) + ".json"

  ajax: (url, type, hash) ->
    hash ||= {}
    hash.xhrFields =
      withCredentials: true

    this._super(url, type, hash)

  extractMeta: (loader, type, json) ->
    meta = json[@configOption(type, 'collection')]
    return if not meta
    Ember.set('App.metaDataForLastRequest', meta)
    this._super(loader, type, json)

Cloudsdale.Store = DS.Store.extend
  adapter: DS.CloudsdaleAdapter

Change in ember-data made me change for compliance.


Details

Created

<%= manifest.created %>

Size

<%= number_to_human_size(manifest.size) %>

Content Digest
<%= render partial: "shared/copy_to_clipboard", locals: { name: :content_digest, value: manifest.content_digest, title: "Copy sha" } %>

Put Create and Size on same row in details


<div class="section <%= generator_name %>">

Attributes

  <% [:class, :instance].select {|s| object.attributes[s].length > 0 }.each do |scope| %>
    <div class="<%= scope %>">

<%= scope.capitalize %> Attributes

      <% object.attributes[scope].sort_by {|o| o.to_s.downcase }.each do |name, rw| %>

          <%= h name %>

            [<%= [:read, :write].reject {|t| !rw[t] }.map {|t|
                rw[t].is_explicit? ? t[0,1].upcase : "#{t[0,1].upcase}"
              }.compact.join %>]

            <%= rw.values.compact.first.visibility %>

            <%= htmlify rw.values.compact.first.docstring.summary %>
            <% if rw[:read] && rw[:read].tag(:return) && rw[:read].tag(:return).types %>

                Returns:

                     <%= format_return_types rw[:read] %>

            <% end %>

      <% end %>

  <% end %>

<div class="section <%= generator_name %>">

Attributes

  <% ['class', 'instance'].select {|s| object.attributes[s].length > 0 }.each do |scope| %>
    <div class="<%= scope %>">

<%= scope.capitalize %> Attributes

      <% object.attributes[scope].sort_by {|o| o.to_s.downcase }.each do |name, rw| %>

          <%= h name %>

            [<%= ['read', 'write'].reject {|t| !rw[t] }.map {|t|
                rw[t].is_explicit? ? t[0,1].upcase : "#{t[0,1].upcase}"
              }.compact.join %>]

            <%= rw.values.compact.first.visibility %>

            <%= htmlify rw.values.compact.first.docstring.summary %>
            <% if rw[:read] && rw[:read].tag(:return) && rw[:read].tag(:return).types %>

                Returns:

                     <%= format_return_types rw[:read] %>

            <% end %>

      <% end %>

  <% end %>

Fix Ruby1.8 regression in attributes template (symbols cannot be capitalized)


---
title: Click Tracking - Dialog Documentation
description: Track links clicked by users inside a conversation.
keywords:
---

      <%= partial 'navigation' %>

Click Tracking

This action allows to track links clicked by users inside a conversation.

To use click tracking, wrap all your URLs like this: https://api.dialoganalytics.com/v1/click/:conversation_distinct_id?url=http://example.com, where :conversation_distinct_id is a unique conversation ID issued by the provider eg. Facebook, Kik or Smooch.

Dialog will track every click and redirect the user to the URL specified as the url parameter.

You don't need to provide authentication for this endpoint.

Add no authentication needed note

Add no authentication needed note


<p> Signup </p>
<%= form_for @user do |f| %>
  <%= f.label :user_name %>
  <%= f.text_field :user_name %>

  <%= f.label :email %>
  <%= f.text_field :email %>

  <%= f.label :password %>
  <%= f.password_field :password %>

  <%= f.submit %>
<% end %>

<p> Signup </p>
<%= form_for @user do |f| %>
  <%= f.label :user_name %>
  <%= f.text_field :user_name %>

  <%= f.label :email %>
  <%= f.text_field :email %>

  <%= f.label :password %>
  <%= f.password_field :password %>

  <%= f.submit id: 'create_user' %>
<% end %>

Add id to submit button on create user form


<%= render partial: "layouts/sidebar", locals: {cur_step: 4} %>

Sorry, something went wrong when generating your permit.

Please email us at sanantonio@codeforamerica.org

<%= render partial: "layouts/sidebar", locals: {cur_step: 4} %>

Sorry, something went wrong when generating your permit.

You may want to go back and click on the "Download then print" button again, as sometimes it took a bit longer to generate your permit.

If that still doesn't work, please email us at sanantonio@codeforamerica.org

Change the error statement a bit to help user retry


    <%= link_to gravatar_for(donation.user, class: "img-circle col-xs-12") %>
    <%= link_to(fa("trash"), destroy_donation_path(donation)) if current_user == donation.user %>

       <%= datetime_ago(donation.donated_at) %>

      <%= link_to donation.user.at_username, donation.user %>
      doou <%= "#{donation.amount} ml" %> em <%= donation.location %>

<%= donation.comment.truncate(100) %>

  <%= fa "tint" %>

Adjust styles of donation list

[Template] Adjust styles of donation list


<% provide(:title, current_user.name) %>

      <%= render 'users/user_info' %>

      <%= render 'lists/form' %>

Lists

    <%= form_tag root_url, method: :get, id: "lists_search" do %>
      <%= text_field_tag :search, params[:search],
        style: "width: 30%",
        autocomplete: "off",
        class: "vatop" %>
      <%= submit_tag "filter", name: nil, class: "btn vatop" %>
    <% end %>

      <%= render 'shared/feed' %>

Add user name to title on users home page


<h1> The user <%= "#{@comment.name}" %> left a comment on your post </h1>
<p> <%= "#{@comment.name} Says #{@comment.body} on your post #{@article.title}" %> </p>
  <br>
    <%= link_to "Go to the article?", @article %>

Add link to the article in comment email


<% params_prefix = "payment_source[#{payment_method.id}]" %>

<%= image_tag('smspay-logo.png', width: 75) %>

  <%= label_tag "Phone", Spree.t(:mobile_number, :scope => 'smspay') %>*
  <%= select_tag "#{params_prefix}[code]", options_for_select([
    ['+47', 47],
    ['+40', 40],
    ['+46', 46],
    ['+351', 35]
  ]) %>
  <%= text_field_tag "#{params_prefix}[number]" %>

<% params_prefix = "payment_source[#{payment_method.id}]" %>

  <%= image_tag('smspay-logo.png', width: 75) %>

    <%= label_tag "Phone", Spree.t(:mobile_number, :scope => 'smspay') %>*
    <%= select_tag "#{params_prefix}[code]", options_for_select([
      ['+47', 47],
      ['+40', 40],
      ['+46', 46],
      ['+351', 35]
    ]), class: 'form-control required' %>
    <%= text_field_tag "#{params_prefix}[number]", '', class: "form-control required" %>

Update form markup to use bootstrap 3 form style


# This file is generated automatically by Puppet - DO NOT EDIT
# Any manual changes will be overwritten
<% @mount_file_content.sort.each do |worker,directives| -%>

<%# Places comment before worker mappings -%>
<% if directives.has_key?('comment') -%>
# <%= directives['comment'] %>
<% end -%>
<% directives['uri_list'].sort.each do |uri| -%>
<%= uri %> = <%= worker %>
<% end -%>
<% end -%>

Create URI-worker mappings template for mod_jk


upstream unicorn {
  server unix:/tmp/unicorn.<%= application %>.sock fail_timeout=0;
}

server {
  listen 80 default deferred;
  server_name smartchat.smartlogic.io;
  root <%= current_path %>/public;

  if (-f $document_root/system/maintenance.html) {
    return 503;
  }
  error_page 503 @maintenance;
  location @maintenance {
    rewrite  ^(.*)$  /system/maintenance.html last;
    break;
  }

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

  error_page 500 502 503 /500.html;
  error_page 504 /504.html;

  client_max_body_size 4G;
  keepalive_timeout 10;
  server_tokens off;
}

upstream unicorn {
  server unix:/tmp/unicorn.<%= application %>.sock fail_timeout=0;
}

server {
  listen 80 default deferred;
  server_name smartchat.smartlogic.io;
  root <%= current_path %>/public;

  if (-f $document_root/system/maintenance.html) {
    return 503;
  }
  error_page 503 @maintenance;
  location @maintenance {
    rewrite  ^(.*)$  /system/maintenance.html last;
    break;
  }

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

  error_page 500 502 503 /500.html;
  error_page 504 /504.html;

  client_max_body_size 4G;
  keepalive_timeout 10;
  server_tokens off;
}

Use forwarded protocol so ELB can be the SSL point


input {
    file {
        path => "<%= p('ingestor_archiver.data_dir') %>/restore/**/*"
        path => "<%= p('ingestor_archiver.data_dir') %>/restore/*"
        sincedb_path => "<%= p('ingestor_archiver.data_dir') %>/logstash.sincedb"
        start_position => "beginning"
        stat_interval => 30
    }
}

filter {
    <% if 'DEBUG' == p('logstash.metadata_level') %>
        ruby {
            code => "event['@ingestor[timestamp]'] = Time.now.iso8601(3)"
            add_field => [ "@ingestor[service]", "archiver" ]
            add_field => [ "@ingestor[job]", "<%= name %>/<%= index %>" ]
        }
    <% end %>
}

output {
    <% if p("logstash_ingestor.debug") %>
        stdout {
            codec => "json"
        }
    <% end %>

    redis {
        host => "<%= p("redis.host") %>"
        port => "<%= p("redis.port") %>"
        data_type => "list"
        key => "<%= p("redis.key") %>"
        batch => true
        batch_events => 50
    }
}

input {
    file {
        path => "<%= p('ingestor_archiver.data_dir') %>/restore/**/*"
        path => "<%= p('ingestor_archiver.data_dir') %>/restore/*"
        codec => json
        sincedb_path => "<%= p('ingestor_archiver.data_dir') %>/logstash.sincedb"
        start_position => "beginning"
        stat_interval => 30
    }
}

filter {
    <% if 'DEBUG' == p('logstash.metadata_level') %>
        ruby {
            code => "event['@ingestor[timestamp]'] = Time.now.iso8601(3)"
            add_field => [ "@ingestor[service]", "archiver" ]
            add_field => [ "@ingestor[job]", "<%= name %>/<%= index %>" ]
        }
    <% end %>
}

output {
    <% if p("logstash_ingestor.debug") %>
        stdout {
            codec => "json"
        }
    <% end %>

    redis {
        host => "<%= p("redis.host") %>"
        port => "<%= p("redis.port") %>"
        data_type => "list"
        key => "<%= p("redis.key") %>"
        batch => true
        batch_events => 50
    }
}

Fix codec used in reading archive files

Fix codec used in reading archive files


<% content_for :header_title, "Confirmation" %>

Thanks for submitting an application!

      Here is a summary of the information that you are submitting. To follow up
      with your application, you can call 123-234-3456.

      Date: October 4, 2017

      Applicant(s): Harriett Fletcher

      Benefits: Medicaid

     The next step is to submit any paperwork you have on hand. Later you'll be
     provided with a full list of all the paperwork you'll need to share. Would
     you like to submit documents now?

      Back to Home

      Learn which documents to submit

Add celebration illustration to confirmation page


# DO NOT EDIT - This file is being maintained by Chef

MAILTO=admins@openstreetmap.org

*/30 * * * * blogs /usr/local/bin/pluto -q -c /srv/blogs.openstreetmap.org build -d /srv/blogs.openstreetmap.org -t osm -o /srv/blogs.openstreetmap.org/build /srv/blogs.openstreetmap.org/planet.ini > /dev/null

# DO NOT EDIT - This file is being maintained by Chef

MAILTO=admins@openstreetmap.org

*/30 * * * * blogs /usr/local/bin/pluto --quieter --config=/srv/blogs.openstreetmap.org build --dbpath=/srv/blogs.openstreetmap.org --template=osm --output=/srv/blogs.openstreetmap.org/build /srv/blogs.openstreetmap.org/planet.ini > /dev/null

Use --quieter switch to pluto

Use --quieter switch to pluto


<%
wayfinders = get_service_type('wayfinder') # Get all wayfinders for display.
unless wayfinders.empty? %>

<%
    wayfinders.each do |wayfinder|
      view_data = wayfinder.view_data %>

<%
        rfr_name = wayfinder.view_data[:rfr_name]
        wayfinder_attributes =
          (current_primary_institution.views.nil? or
            current_primary_institution.views["wayfinder_attributes"].nil? or
              current_primary_institution.views["wayfinder_attributes"][rfr_name].nil?) ?
                {} : current_primary_institution.views["wayfinder_attributes"][rfr_name]
        display_text = (wayfinder_attributes["display_text"].nil?) ?
          view_data[:display_text] : wayfinder_attributes["display_text"]
        url = (wayfinder_attributes["url_suffix"].nil?) ?
          view_data[:url] : "#{view_data[:url]}#{wayfinder_attributes["url_suffix"]}" %><%=
        content_tag "i", nil, :class => "icons-famfamfam-arrow_undo" %><%=
        link_to display_text, url, :target => "_blank" %>
        <%#= link_to view_data[:display_text], {:controller=>'link_router', :id=>wayfinder.id}, :class => "nyulibrary_icons_arrow_undo", :target => "_blank", 'id' => "svctype_link_#{wayfinder.id}" %>

<%
    end %>

<%
end %>

<%
wayfinders = get_service_type('wayfinder') # Get all wayfinders for display.
unless wayfinders.empty? %>

<%
    wayfinders.each do |wayfinder|
      view_data = wayfinder.view_data %>

<%
        rfr_name = wayfinder.view_data[:rfr_name]
        wayfinder_attributes =
          (current_primary_institution.views.nil? or
            current_primary_institution.views["wayfinder_attributes"].nil? or
              current_primary_institution.views["wayfinder_attributes"][rfr_name].nil?) ?
                {} : current_primary_institution.views["wayfinder_attributes"][rfr_name]
        display_text = (wayfinder_attributes["display_text"].nil?) ?
          view_data[:display_text] : wayfinder_attributes["display_text"]
        url = (wayfinder_attributes["url_suffix"].nil?) ?
          view_data[:url] : "#{view_data[:url]}#{wayfinder_attributes["url_suffix"]}" %><%=
        content_tag "i", nil, :class => "icons-famfamfam-arrow_undo" %><%=
        link_to display_text, url %>

<%
    end %>

<%
end %>

Remove commented out link_to from wayfinder partial


---
title: Installing the cf Command Line Interface
---

To install the cf CLI, download it from <%=vars.cli_download%> and follow the instructions for your operating system.

## Uninstall cf CLI v5 ##

If you previously used the cf CLI v5 Ruby gem, you must uninstall this gem before installing cf CLI v6.

To uninstall, run `gem uninstall cf`.

Note: To ensure that your Ruby environment manager registers the change, close and reopen your terminal.

## Windows Installation##

To install cf on Windows:

1. Unpack the zip file.
1. Double click the `cf` executable.
1. When prompted, click **Install**, then **Close**.

## Mac OSX and Linux Installation##

1. Open the .pkg file.
1. In the installer wizard, click **Continue**.
1. Select an install destination and click **Continue**.
1. When prompted, click **Install**.

## Next Steps ##
To verify your installation, open a terminal window and type `cf`.
If your installation was successful, the cf help listing appears.

For information on how to use the cf CLI version 6, see [Getting Started with cf CLI v6](../installcf/whats-new-v6.html).

---
title: Installing the cf Command Line Interface
---

To install the cf CLI, download it from <%=vars.cli_download%> and follow the instructions for your operating system.

## Uninstall cf CLI v5 ##

If you previously used the cf CLI v5 Ruby gem, you must uninstall this gem before installing cf CLI v6.

To uninstall, run `gem uninstall cf`.

Note: To ensure that your Ruby environment manager registers the change, close and reopen your terminal.

## Windows Installation##

To install cf on Windows:

1. Unpack the zip file.
1. Double click the `cf` executable.
1. When prompted, click **Install**, then **Close**.

## Mac OSX and Linux Installation##

1. Open the `.pkg` file.
1. In the installer wizard, click **Continue**.
1. Select an install destination and click **Continue**.
1. When prompted, click **Install**.

## Next Steps ##
To verify your installation, open a terminal window and type `cf`.
If your installation was successful, the cf help listing appears.

For information on how to use the cf CLI version 6, see [Getting Started with cf CLI v6](../installcf/whats-new-v6.html).

Format .pkg file in code span

Format .pkg file in code span


        <%= gravatar_image_tag comment.author.email,
            alt: comment.author.name,
            gravatar: { default: :identicon, size: 50 }
        %>

            <%= comment_author comment %> on <%= comment_time comment %>

        <%= comment.comment %>
        <% if policy(comment).destroy? %>
            <%= form_for [comment.commentable, comment], layout: :inline, method: :delete do |form| %>
                <%= form.submit '[Delete]', class: 'btn-xs', context: :link %>
            <% end %>
        <% end %>

Add a delete button to comments.

Add a delete button to comments.

Only if the user has permission.


<% @categories.each do |category| %>

<%= link_to category[:taxon].pretty_name, spree.nested_taxons_path(category[:taxon].permalink) %>

<%= category[:taxon].description %>

  <%= render :partial => 'products', :locals => { :products => category[:searcher].retrieve_products, :taxon => category[:taxon] } %>

<% end %>

<% @categories.each do |category| %>

<%= link_to category[:taxon].pretty_name, spree.nested_taxons_path(category[:taxon].permalink) %>

<%= raw category[:taxon].description %>

  <%= render :partial => 'products', :locals => { :products => category[:searcher].retrieve_products, :taxon => category[:taxon] } %>

<% end %>

Allow HTML in Taxon description

Allow HTML in Taxon description


# Scheduler Listener unit file
# Managed by puppet class profile::swh::deploy::scheduler
# Changes will be overwritten

[Unit]
Description=Software Heritage scheduler listener
Requires=network.target rabbitmq-server.service
After=network.target rabbitmq-server.service

[Service]
User=<%= @user %>
Group=<%= @group %>
Type=simple
Environment=SWH_LOG_TARGET=journal
ExecStart=/usr/bin/swh-scheduler --config-file <%= @config_file %> --log-level <%= @listener_log_level %> listener
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

# Scheduler Listener unit file
# Managed by puppet class profile::swh::deploy::scheduler
# Changes will be overwritten

[Unit]
Description=Software Heritage scheduler listener
Requires=network.target rabbitmq-server.service
After=network.target rabbitmq-server.service

[Service]
User=<%= @user %>
Group=<%= @group %>
Type=simple
Environment=SWH_LOG_TARGET=journal
ExecStart=/usr/bin/swh --log-level <%= @listener_log_level %> scheduler --config-file <%= @config_file %> listener
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Switch to latest cli call

scheduler-listener: Switch to latest cli call


<% content_for :page_title, @edition.title %>
<% content_for :title, "Associated user needs" %>
<% content_for :context, @edition.title %>
<% content_for :back_link do %>
  <%= render "govuk_publishing_components/components/back_link", href: admin_edition_path(@edition) %>
<% end %>

    <%= form_tag admin_update_needs_path(content_id: @document.content_id), method: :patch do %>
      <%= render "components/autocomplete", {
          id: "need_ids",
          name: "need_ids[]",
          label: {
            text: "Select associated user needs",
            bold: true,
            required: true,
          },
          heading_size: "l",
          select: {
            options: [""] + taggable_needs_container,
            multiple: true,
            selected: @document.need_ids,
          },
      } %>

        <%= render "govuk_publishing_components/components/button", {
          text: "Save"
        } %>
    <% end %>

<% content_for :page_title, @edition.title %>
<% content_for :title, "Associated user needs" %>
<% content_for :context, @edition.title %>

    <%= form_tag admin_update_needs_path(content_id: @document.content_id), method: :patch do %>
      <%= render "components/autocomplete", {
          id: "need_ids",
          name: "need_ids[]",
          label: {
            text: "Select associated user needs",
            bold: true,
            required: true,
          },
          heading_size: "l",
          select: {
            options: [""] + taggable_needs_container,
            multiple: true,
            selected: @document.need_ids,
          },
      } %>

        <%= render "govuk_publishing_components/components/button", {
          text: "Save"
        } %>
    <% end %>

Remove back button from user needs pages

In our like for like approach we're using the same buttons as before for the  new design system pages. This page previously had no back or cancel button.


<%= @article.title %>

<%= @article.text %>

<%= link_to 'Show all articles', articles_path %>

Comments:

	<% @article.comments.each do |comment|  %>

			<%= comment.author %> said:

			<%= comment.body %>

	<% end %>

Add comment:

		<%= form_for([@article, @article.comments.build]) do |f| %>

				<%= f.label :body %>

				<%= f.text_area :body %>

				<%= f.submit %>

		<% end %>

<%= @article.title %>

<%= @article.text %>

<%= link_to 'Show all articles', articles_path %>

Comments:

	<% @article.comments.each do |comment|  %>

			<%= comment.author %> said:

			<%= comment.body %>

	<% end %>

Add comment:

		<%= form_for([@article, @article.comments.build]) do |f| %>

				<%= f.label :body %>

				<%= f.text_area :body %>

				<%= f.submit 'Create comment'%>

		<% end %>

Change submit comment button text

Change submit comment button text


<!DOCTYPE html>
<html lang="<%= Organization.current.locale %>">

  <title><%= page_title subject %></title>
  <% unless input_kids? %>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <% end %>

  <meta name="description" content="<%= Organization.current.description %>"/>

  <%= open_graph_tags subject %>
  <%= assets_include_tags %>
  <%= csrf_meta_tags %>
  <%= globals_tags %>

  <%= login_form.header_html %>

<%= hidden_field_tag "mu-user-id", current_user&.id %>
<%= hidden_field_tag "mu-organization-id", Organization.current.id %>

<% if should_choose_organization? %>
    <%= render partial: 'layouts/organization_chooser' %>
<% end %>

<%= yield :navbar %>

<div class="<%= exercise_container_type %><%= @kids ? '-fluid' : '' %> mb-5" id="wrap">

    <% if notice %>
      <%= toast_notice(notice) %>
    <% elsif alert %>
      <%= toast_alert(alert) %>
    <% elsif info %>
      <%= toast_info(info) %>
    <% end %>

  <%= yield %>

<%= yield :no_container %>

<%= yield :footer %>

<!DOCTYPE html>
<html lang="<%= Organization.current.locale %>">

  <title><%= page_title subject %></title>
  <% unless input_kids? %>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <% end %>

  <meta name="description" content="<%= Organization.current.description %>"/>

  <%= open_graph_tags subject %>
  <%= assets_include_tags %>
  <%= csrf_meta_tags %>
  <%= globals_tags %>

  <%= login_form.header_html %>

<%= hidden_field_tag "mu-user-id", current_user&.id %>
<%= hidden_field_tag "mu-organization-id", Organization.current.id %>

<% if should_choose_organization? %>
    <%= render partial: 'layouts/organization_chooser' %>
<% end %>

<%= yield :navbar %>

<div class="<%= exercise_container_type %><%= ' mb-5' unless input_kids? %>" id="wrap">

    <% if notice %>
      <%= toast_notice(notice) %>
    <% elsif alert %>
      <%= toast_alert(alert) %>
    <% elsif info %>
      <%= toast_info(info) %>
    <% end %>

  <%= yield %>

<%= yield :no_container %>

<%= yield :footer %>

Use proper margin on kids

Use proper margin on kids