<%= link_to 'チェンジ！', 'shopping_list'%>

<%= link_to '買い物リスト', 'shopping_list'%>

<%= @menu['recipeTitle'] %>

    <img src="<%= @menu['foodImageUrl'] %>" width="600px" height="600px" class="img-rounded">

料理の説明

<%= @menu['recipeDescription'] %>

URL

<a href="<%= @menu['recipeUrl'] %>">楽天レシピのサイトへ

材料リスト

	<% @menu['recipeMaterial'].each do |mat| %>
	<%==  "
#{mat}
" %>
	<% end %>

所要時間

<%= @menu['recipeIndication'] %>

費用

<%= @menu['recipeCost'] %>

Add button (link href is dummy)

Add button (link href is dummy)


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

    <% if current_user %>
      <%= link_to image_tag("snowflake.png", class: "snowflake"), {:controller => "votes",
          :action => "create",
          :comment_id => comment.id,
          :user_id => current_user.id,
          :value => "1"},
          :method => "post" %>
    <% else %>
      <%= link_to image_tag("snowflake.png", class: "snowflake") %>
    <% end %>

    <%= comment.votes.sum(:value) %>

<%= comment.content%>

Posted by: <%= comment.user.name %>

<% end %>

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

    <% if current_user %>
      <%= link_to image_tag("snowflake.png", class: "snowflake"), {:controller => "votes",
          :action => "create",
          :comment_id => comment.id,
          :user_id => current_user.id,
          :value => "1"},
          :method => "post" %>
    <% else %>
      <%= link_to image_tag("snowflake.png", class: "snowflake") %>
    <% end %>

    <%= comment.votes.sum(:value) %>

<%= comment.content%>

Posted by: <%= comment.user.name %>

      <% if comment.user.id == current_user.id %>

<%= link_to 'Delete', comment_path(comment.id), method: :delete %>

      <% end %>

<% end %>

Include logic to show Delete link

Include logic to show Delete link


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

    <% if current_user %>
      <%= link_to image_tag("snowflake.png", class: "snowflake"), {:controller => "votes",
          :action => "create",
          :comment_id => comment.id,
          :user_id => current_user.id,
          :value => "1"},
          :method => "post" %>
    <% else %>
      <%= link_to image_tag("snowflake.png", class: "snowflake") %>
    <% end %>

    <%= comment.votes.sum(:value) %>

<%= comment.content%>

Posted by: <%= comment.user.name %>

      <% if comment.user.id == current_user.id %>

<%= link_to 'Delete', comment_path(comment.id), method: :delete %>

      <% else %>

      <% end %>

<% end %>

<% if @comments.empty? %>

Been on this trail recently?
 No one has posted yet, and others are wondering about the conditions!

<% end %>

Include statement for no trail posts

Include statement for no trail posts


學生的身分，對你而言代表著什麼？

          在日常生活中，你可曾有對資訊科學的憧憬，希望能認識更多同好、吸收新知？
          或是已經憑藉自身技藝遨遊於天際，在尋找展現自己的舞台、分享實務經驗？
          學生計算機年會能夠滿足你的一切！以學生為本、由學生自發舉辦，
          學生計算機年會（SITCON）不只是學生「學以致用、教學相長」的實際展現，
          更冀望所有對資訊有興趣的學生，能夠在年會裏齊聚一堂，彼此激盪、傳承、啟發。

          「知行合一，學以致用」對求學階段的我們而言並不陌生；
          然而跨出課業範疇，面對業界千奇百怪的問題與需求，又有多少人能真正發揮自己所學？
          學校傳授的知識，又有多少能夠實際應用於生活中呢？

          由學生自發組成、自主籌備、以學生為核心，SITCON 學生計算機年會冀望展現學生最真實的熱情與能量，
          使有成者能夠傳承己身經驗、初學者能對資訊領域有更深入的了解。
          SITCON 2014，請與我們一同激盪創新的靈感、分享實作的經驗，
          並與來自各地的學生共同探求理論與實務的平衡點。

Update SITCON description with more friendly one


<%# This is copied from blacklight-5.5.3/app/views/kaminari/blacklight_compact/_paginator.html.erb
so we can add a aria-hidden="true" attribute around it. If that gets added into
Blacklight, this file can be removed -%>
<% if total_pages > 1 -%>
  <%# #render checks if total_pages > 1, so we can't put our fallback
  in here .. -%>
  <%= paginator.render do -%>

      <%= prev_page_tag %> |

        <%= page_entries_info %>
       |
      <%= next_page_tag %>

  <% end -%>
<% else -%>

        <%= page_entries_info %>

<% end -%>

Remove aria-hidden from Previous, Page Count and Next pagination

These `aria-hidden` flags were added explictly from the generated paginator. Per
our accessibility report, the elements should be readded. Likely this file can
be simply removed, in line with the comment at the top. I'm confirming that and
will follow up with a removal if appropriate.

Fixes #3083.


<div class="outgoing correspondence box" id="outgoing-<%= outgoing_message.id.to_s %>">
  <%- if not outgoing_message.user_can_view?(@user) %>
    <%= render :partial => 'request/hidden_correspondence', :locals => { :message => outgoing_message }%>
  <%- else %>
    <%= render :partial => 'request/restricted_correspondence', :locals => {:message => outgoing_message } %>

      <%= _("From:") %> <%= @info_request.user_name %>

<%= simple_date(info_request_event.created_at) %>

    <%= render :partial => 'request/bubble', :locals => { :body => outgoing_message.get_body_for_html_display(), :attachments => nil }  %>

      <% if outgoing_message.status == 'ready' && !@info_request.is_external? %>
        <%= _('Warning: This message has not yet ' \
                 'been sent for an unknown reason.') %>
      <% end %>
      <%= link_to _("Link to this"), outgoing_message_path(outgoing_message), :class => "link_to_this" %>

  <%- end %>

<div class="outgoing correspondence box" id="outgoing-<%= outgoing_message.id.to_s %>">
  <%- if not outgoing_message.user_can_view?(@user) %>
    <%= render :partial => 'request/hidden_correspondence', :locals => { :message => outgoing_message }%>
  <%- else %>
    <%= render :partial => 'request/restricted_correspondence', :locals => {:message => outgoing_message } %>

      <%= _("From:") %> <%= @info_request.user_name %>

      <%= simple_date(info_request_event.created_at) %>
      <% if @user && @user.admin_page_links? %>
        (<%= link_to _('Logs'), outgoing_message_mail_server_logs_path(outgoing_message) %>)
      <% end %>

    <%= render :partial => 'request/bubble', :locals => { :body => outgoing_message.get_body_for_html_display(), :attachments => nil }  %>

      <% if outgoing_message.status == 'ready' && !@info_request.is_external? %>
        <%= _('Warning: This message has not yet ' \
                 'been sent for an unknown reason.') %>
      <% end %>
      <%= link_to _("Link to this"), outgoing_message_path(outgoing_message), :class => "link_to_this" %>

  <%- end %>

Add link to mail logs from correspondence bubble

Only allow site admins to view the link for now. The actual URL is
available to anyone, but shouldn't be readily found. This gives us a
little chance to check everything looks okay before we make public.


Bluepill.application("<%= app %>", :foreground => false, :log_file => "/var/log/bluepill.log") do |app|

  app.uid = "<%= user %>"
  app.gid = "<%= user %>"

<% engine.each_process do |name, process| %>
<% 1.upto(engine.formation[name]) do |num| %>
  <% port = engine.port_for(process, num) %>
  app.process("<%= name %>-<%= num %>") do |process|
    process.start_command = "<%= process.command %>"

    process.working_dir = "<%= engine.root %>"
    process.daemonize = true
    process.environment = <%= engine.env.merge("PORT" => port.to_s).inspect %>
    process.stop_signals = [:quit, 30.seconds, :term, 5.seconds, :kill]
    process.stop_grace_time = 45.seconds

    process.stdout = process.stderr = "<%= log %>/<%= app %>-<%= name %>-<%= num %>.log"

    process.monitor_children do |children|
      children.stop_command "kill {{PID}}"
    end

    process.group = "<%= app %>-<%= name %>"
  end
<% end %>
<% end %>
end

Bluepill.application("<%= app %>", :foreground => false, :log_file => "/var/log/bluepill.log") do |app|

  app.uid = "<%= user %>"
  app.gid = "<%= user %>"

<% engine.each_process do |name, process| %>
<% 1.upto(engine.formation[name]) do |num| %>
  <% port = engine.port_for(process, num) %>
  app.process("<%= name %>-<%= num %>") do |process|
    process.start_command = %Q{<%= process.command %>}

    process.working_dir = "<%= engine.root %>"
    process.daemonize = true
    process.environment = <%= engine.env.merge("PORT" => port.to_s).inspect %>
    process.stop_signals = [:quit, 30.seconds, :term, 5.seconds, :kill]
    process.stop_grace_time = 45.seconds

    process.stdout = process.stderr = "<%= log %>/<%= app %>-<%= name %>-<%= num %>.log"

    process.monitor_children do |children|
      children.stop_command "kill {{PID}}"
    end

    process.group = "<%= app %>-<%= name %>"
  end
<% end %>
<% end %>
end

Use %Q{} to allow commands with quotes

Use %Q{} to allow commands with quotes

I have this command in my Procfile: `sidekiq: bundle exec sidekiq -r "$(pwd)/app.rb"`. This generates an invalid ruby file. This commit uses %Q{} which allows for any combination of double quotes and single quotes.


    <% if params[:_from_parent] && @resource.typus_options_for(:hide_from_sidebar) %>

      <%= link_to params[:_from_parent] do %>
        Back
      <% end %>

    <% else %>
      <% if actions.any? %>
        <% actions.each do |action| %>
          <% klass = action[:url][:action].eql?(params[:action]) ? "active" : "inactive" %>
          <li class="<%= klass %>">
          <%= link_to url_for(action[:url]) do %>
            <i class="icon-<%= action[:icon] %>">
            <%= action[:message] %>
          <% end %>

        <% end %>
      <% end %>
    <% end %>

<% if custom_actions.any? %>

        <% custom_actions.each do |action| %>
          <% klass = action[:url][:action].eql?(params[:action]) ? "active" : "inactive" %>
          <li class="<%= klass %>">
          <%= link_to url_for(action[:url]) do %>
            <i class="icon-<%= action[:icon] %>">
            <%= action[:message] %>
          <% end %>

        <% end %>

<% end %>

    <% if params[:_from_parent] && @resource.typus_options_for(:hide_from_sidebar) %>

      <%= link_to params[:_from_parent] do %>
        Back
      <% end %>

    <% else %>
      <% if actions.any? %>
        <% actions.each do |action| %>
          <% klass = action[:url][:action].eql?(params[:action]) ? "active" : "inactive" %>
          <li class="<%= klass %>">
          <%= link_to url_for(action[:url]) do %>
            <i class="icon-<%= action[:icon] %>">
            <%= action[:message] %>
          <% end %>

        <% end %>
      <% end %>
    <% end %>

<% if custom_actions.any? %>

        <% custom_actions.each do |action| %>
          <%# klass = action[:url][:action].eql?(params[:action]) ? "active" : "inactive" %>
          <% klass = "" %>
          <li class="<%= klass %>">
          <%= link_to url_for(action[:url]) do %>
            <i class="icon-<%= action[:icon] %>">
            <%= action[:message] %>
          <% end %>

        <% end %>

<% end %>

Remove 'active' class from custom actions in sidebar


<%= @question.title %>

<%= @question.body %>

Answers:

<% if @question.answers %>

  <% @question.answers.each do |answer| %>

<%= answer.text %>

  <% end %>

<% end %>

<% if @errors %>

Errors:

    <% @errors.each do |error| %>

<%= error %>

    <% end %>

<% end %>

<form method="POST" action="/questions/<%= @question.id %>/answers/new">
<input type = "hidden" name = "answer[question_id]" value = "<%= @question.id %>">
<textarea rows = '4' cols = '50' name="answer[text]" placeholder = 'Write your answer here'></textarea>

<input type = "submit" value = "Submit Answer">
</form>

<%= @question.title %>

<%= @question.body %>

  <a href="/questions/<%= @question.id %>/edit">Edit Question

Answers:

<% if @question.answers %>

  <% @question.answers.each do |answer| %>

<%= answer.text %>

  <% end %>

<% end %>

<% if @errors %>

Errors:

    <% @errors.each do |error| %>

<%= error %>

    <% end %>

<% end %>

<form method="POST" action="/questions/<%= @question.id %>/answers/new">
<input type = "hidden" name = "answer[question_id]" value = "<%= @question.id %>">
<textarea rows = '4' cols = '50' name="answer[text]" placeholder = 'Write your answer here'></textarea>

<input type = "submit" value = "Submit Answer">
</form>

Add link to edit question

Add link to edit question


  <%= form_for(:user, url: signup_path) do |f| %>
   <%= f.label :username %>
   <%= f.text_field :username %>
   <%= f.label :password %>
   <%= f.password_field :password %>
   <%= f.label :password_confirmation %>
   <%= f.password_field :password_confirmation %>
   <%= f.label :first_name %>
   <%= f.text_field :first_name %>
   <%= f.label :last_name %>
   <%= f.text_field :last_name %>
   <%= f.label :email %>
   <%= f.text_field :email %>
   <%= f.label :pic_url%>
   <%= f.text_field :pic_url %>
   <%= f.label :website_url %>
   <%= f.text_field :website_url %>
   <%= f.label :bio %>
   <%= f.text_area :bio %>
   <%= f.submit "Sign Up" %>
  <% end %>

Create skeletal signup page for user

Create skeletal signup page for user


<% content_for :title, "Create an Account" %>

Create an Account

	<%= form_for :user, url: users_path do |f| %>
	  <%= render "shared/errors" %>
	  <%= f.label :username %>
	  <%= f.text_field :username %>

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

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

	  <%= f.submit "Create Account" %>
	<% end %>

	<%= link_to raw(" Sign Up with Instagram"), '/auth/instagram', :class => "button" %>
	<%= link_to raw(" Sign Up with Twitter"), '/auth/twitter', :class => "button" %>

Fix sign up page so div is centered with gray background filling width


    <title>Project '<%= project_name %>'</title>

Dependencies and licensing for project '<%= project_name %>' %>

        Gem
        Version
        Author
        Summary
        Description
        License
        Homepage

      <% list.each do |gem_name, values| %>
        <tr id="<%= h gem_name %>">
          <%= h gem_name %>
          <% values.each do |key, val| %>

              <% case key
              when 'homepage' %>
                <a href="<%= val %>"><%= val %>
              <% when 'license' %>
                <%# TODO: Link to license text here %>
                <a href="<%= Diligent::Info.license_text(val) %>"><%= val %>
              <% else %>
                <%= h val %>
              <% end %>

          <% end %>

      <% end %>

    <title>Project '<%= project_name %>'</title>

Dependencies and licensing for project '<%= project_name %>'

        Gem
        Version
        Author
        Summary
        Description
        License

      <% list.each do |gem_name, values| %>
        <tr id="<%= h gem_name %>">
          <a href="<%= values['homepage'] %>"><%= h gem_name %>
          <% values.each do |key, val| %>

              <% case key
              when 'license' %>
                <%# TODO: Link to license text here %>
                <a href="<%= Diligent::Info.license_text(val) %>"><%= val %>
              <% else %>
                <%= h val %>
              <% end %>

          <% end %>

      <% end %>

Remove the homepage column and just do it as a link


---
pageable: true
per_page: 12
---

Articles tagged '<%= tagname %>'

<% if paginate && num_pages > 1 %>

Page <%= page_number %> of <%= num_pages %>

  <% if prev_page %>

<%= link_to 'Previous page', prev_page %>

  <% end %>
<% end %>

  <% page_articles.each_with_index do |article, i| %>

<%= link_to article.title, article %> <%= article.date.strftime('%b %e') %>

  <% end %>

<% if paginate %>
  <% if next_page %>

<%= link_to 'Next page', next_page %>

  <% end %>
<% end %>

---
pageable: true
per_page: 12
---

Articles tagged “<%= tagname %>”

<% if paginate && num_pages > 1 %>

Page <%= page_number %> of <%= num_pages %>

  <% if prev_page %>

<%= link_to 'Previous page', prev_page %>

  <% end %>
<% end %>

  <% page_articles.each_with_index do |article, i| %>

<%= link_to article.title, article %> <%= article.date.strftime('%b %e') %>

  <% end %>

<% if paginate %>
  <% if next_page %>

<%= link_to 'Next page', next_page %>

  <% end %>
<% end %>

Use special quotes in Blog tag page

Use special quotes in Blog tag page


<% current = current_page_preferences? %>
<li class="thredded--user-navigation--settings thredded--user-navigation--item<%= ' thredded--is-current' if current %>">
  <%= link_to current ? (messageboard ? messageboard_topics_path(messageboard) : messageboards_path)
                      : edit_preferences_path(messageboard) do %>
    <%= inline_svg 'thredded/settings.svg', class: 'thredded--icon', title: t('thredded.nav.settings') %>
    <%= t('thredded.nav.settings') %>
  <% end %>

<% current = current_page_preferences? %>
<li class="thredded--user-navigation--settings thredded--user-navigation--item<%= ' thredded--is-current' if current %>">
  <%= link_to current ? (messageboard ? messageboard_topics_path(messageboard) : messageboards_path)
                      : edit_preferences_path(messageboard), rel: 'nofollow' do %>
    <%= inline_svg 'thredded/settings.svg', class: 'thredded--icon', title: t('thredded.nav.settings') %>
    <%= t('thredded.nav.settings') %>
  <% end %>

Add rel=nofollow to the preferences link


require 'minitest/autorun'
require_relative '<%= exercise_name %>'

# Common test data version: <%= canonical_data_version %> <%= abbreviated_commit_hash %>
class <%= exercise_name_camel %>Test < Minitest::Test
  # assert_in_delta will pass if the difference
  # between the values being compared is less
  # than the allowed delta
  DELTA = 0.01

<% test_cases.each_with_index do |test_case, idx| %>
  def <%= test_case.name %>
    <%= test_case.skipped(idx) %>
    <%= test_case.workload %>
  end

<% end %>
<%= IO.read(EXERCISM_RUBY_LIB + '/bookkeeping.md') %>

  def test_bookkeeping
    skip
    assert_equal <%= version %>, BookKeeping::VERSION
  end
end

require 'minitest/autorun'
require_relative '<%= exercise_name %>'

# Common test data version: <%= canonical_data_version %> <%= abbreviated_commit_hash %>
class <%= exercise_test_classname %> < Minitest::Test
  # assert_in_delta will pass if the difference
  # between the values being compared is less
  # than the allowed delta
  DELTA = 0.01

<% test_cases.each_with_index do |test_case, idx| %>
  def <%= test_case.name %>
    <%= test_case.skipped(idx) %>
    <%= test_case.workload %>
  end

<% end %>
<%= IO.read(EXERCISM_RUBY_LIB + '/bookkeeping.md') %>

  def test_bookkeeping
    skip
    assert_equal <%= version %>, BookKeeping::VERSION
  end
end

Update template for class name

Update template for class name


<button class="btn btn-default">

  <%= t("my_modules.buttons.uncomplete") %>
</button>

Fix button icon for uncomplete task

Fix button icon for uncomplete task


Admininstrative Menu

<%= link_to 'Manage Events', events_path %>

<%= link_to 'Manage Scenarios', scenarios_path %>

<%= link_to 'Manage Users', users_path %>

<% if user_signed_in? && current_user.email = 'silbeg@gmail.com' %>
    <%= debug ENV.to_h.to_yaml %>
<% end %>

Admininstrative Menu

<%= link_to 'Manage Events', events_path %>

<%= link_to 'Manage Scenarios', scenarios_path %>

<%= link_to 'Manage Users', users_path %>

<% if user_signed_in? && current_user.email == 'silbeg@gmail.com' && params['show-env'] %>
    <%= debug ENV.to_h.to_yaml %>
<% end %>

Add param `show-env` to keep page cleaner


  Title:
  <%= @album.title %>

<%= link_to 'Edit', edit_album_path(@album) %> |
<%= link_to 'Back', albums_path %>

    Title:
    <%= @album.title %>

  <%#= link_to 'Edit', edit_album_path(@album) %> |
  <%#= link_to 'Back', albums_path %>

Add padding, do not show edit and back paths for now


Log in

            <%= form_for :session,
                html: { class: "mdl-card mdl-shadow--2dp card-form" },
                url: login_path do |f|%>

                        <%= f.label :email, class: "mdl-textfield__label" %>
                        <%= f.email_field :email, class: "mdl-textfield__input" %>

                        <%= f.label :password, class: "mdl-textfield__label" %>
                        <%= f.password_field :password,
                            class: "mdl-textfield__input",
                            autocomplete: "off" %>

                    <%= f.submit "Log in",
                        class: "mdl-button mdl-js-button mdl-button--raised
                                mdl-button--colored mdl-js-ripple-effect" %>

            <% end %>

Create the sign up view template for the sessions controller


List of Trails

<% @trails.each do |trail| %>

<%= link_to trail.name, trail_path(trail) %>

<% end %>

<%= link_to '← Mountain List'.html_safe, root_path %>

<%= @mountain.name %> Trails

<% @trails.each do |trail| %>

<%= link_to trail.name, trail_path(trail) %>

<% end %>

<%= link_to '← Mountain List'.html_safe, root_path %>

Include Mountain name on trail index

Include Mountain name on trail index


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

SECTION NEW

# ACTION	SOURCE	DEST	PROTO		DEST		SOURCE	ORIGINAL	RATE
#						PORTS		PORTS	DEST		LIMIT
<% @rules.each do |r| -%>
<%= r[:action] %>		<%= r[:source] %>	<%= r[:dest] %>	<%= r[:proto] %>		<%= r[:dest_ports] %>	<%= r[:source_ports] %>	-	<%= r[:rate_limit] %>
<% end -%>

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

?SECTION NEW

# ACTION	SOURCE	DEST	PROTO		DEST		SOURCE	ORIGINAL	RATE
#						PORTS		PORTS	DEST		LIMIT
<% @rules.each do |r| -%>
<%= r[:action] %>		<%= r[:source] %>	<%= r[:dest] %>	<%= r[:proto] %>		<%= r[:dest_ports] %>	<%= r[:source_ports] %>	-	<%= r[:rate_limit] %>
<% end -%>

Add leading ? to SECTION line in shorewall rules


<% content_for :title do %>
  Same-sex marriage and civil partnership in <%= calculator.country_name_lowercase_prefix %>
<% end %>

<% content_for :body do %>
  <% if calculator.ceremony_country == 'gibraltar' %>
    Gibraltar is a British overseas territory.

    Contact the Gibraltar Government to find out about getting married there, including what documents you’ll need.

    <%= render partial: 'contact_details_for_gibraltar.govspeak.erb' %>
  <% else  %>
    It’s not possible to get legal recognition for your same-sex relationship in <%= calculator.country_name_lowercase_prefix %>.
  <% end %>
<% end %>

<% content_for :title do %>
  Same-sex marriage and civil partnership in <%= calculator.country_name_lowercase_prefix %>
<% end %>

<% content_for :body do %>
  It’s not possible to get legal recognition for your same-sex relationship in <%= calculator.country_name_lowercase_prefix %>.
<% end %>

Update same sex not possible outcome

Update same sex not possible outcome

I've removed the logic and content related to ceremonies in Gibraltar.

This diff is best viewed using the `--ignore-all-space` option.


<% content_for :title, "Finder Frontend" %>

<%= render "govuk_publishing_components/components/title", title: "Finder Frontend" %>

<%= render "govuk_publishing_components/components/govspeak" do %>

This page is only visible in development and Heroku.

The following pages are rendered by this application:

  <% @rendered_pages.each do |page| %>

<%= link_to page.fetch("title"), page.fetch("link") %>

  <% end %>

<% end %>

<% content_for :title, "Finder Frontend" %>

<%= render "govuk_publishing_components/components/title", title: "Finder Frontend" %>

<%= render "govuk_publishing_components/components/govspeak" do %>

This page is only visible in development and Heroku.

The following pages are rendered by this application:

<%= link_to "Get ready for Brexit questions", checklist_questions_path %>

  <% @rendered_pages.each do |page| %>

<%= link_to page.fetch("title"), page.fetch("link") %>

  <% end %>

<% end %>

Add "Get ready for Brexit questions" to development index

This page was previously not showing as it is a special route and not on
the whitelist [1] for search-api.

As this page is likely the most frequently reviewed page of Finder
Frontend I've put it to the top of the list for convenience.

[1]: https://github.com/alphagov/search-api/blob/a58e8e6f4325494ec88e4244f785f6b83228b5cd/config/govuk_index/migrated_formats.yaml#L283-L284


      <%= link_to Spree.t(:home), spree.root_path, class: 'nav-link' %>

        <%= link_to_cart %>

Bring back .navbar-right class for deface overrides from spree_i18n.


<%= t("supporters.title") %>

<%= t("members.text", :link => link_to(t("members.link"), i18n_path('/supporters.html'))) %>

Add hidden heading to the members section


set daemon 120
set logfile /var/log/monit.log
set idfile /var/lib/monit/id
set statefile /var/lib/monit/state
set eventqueue
  basedir /var/lib/monit/events
  slots 100

check process puma
  with pidfile /var/run/puma.pid
  start program = "/usr/local/bundle/bin/puma --config /app/docker/puma_config.rb"
  stop program = "/usr/bin/pkill --pidfile /var/run/puma.pid"

check process memcache
  with pidfile /var/run/memcached.pid
  start program = "/etc/init.d/memcached start"
  stop program = "/etc/init.d/memcached stop"

check process varnish
  with pidfile /var/run/varnishd.pid
  start program = "/etc/init.d/varnish start"
  stop program = "/etc/init.d/varnish stop"
<% 0.upto((ENV['NUM_DELAYED_JOB_WORKERS'] || 1).to_i - 1) do |i| %>
check process delayed_job.<%= i %>
  with pidfile /var/run/delayed_job.<%= i %>.pid
  start program = "/app/script/delayed_job start --pid-dir=/var/run --identifier=<%= i %>"
  stop program = "/app/script/delayed_job stop --pid-dir=/var/run --identifier=<%= i %>"
<% end %>

set daemon 120
set logfile /var/log/monit.log
set idfile /var/lib/monit/id
set statefile /var/lib/monit/state
set eventqueue
  basedir /var/lib/monit/events
  slots 100

<%= ENV['MONIT_MAILSERVER'] %>

check process puma
  with pidfile /var/run/puma.pid
  start program = "/usr/local/bundle/bin/puma --config /app/docker/puma_config.rb"
  stop program = "/usr/bin/pkill --pidfile /var/run/puma.pid"

check process memcache
  with pidfile /var/run/memcached.pid
  start program = "/etc/init.d/memcached start"
  stop program = "/etc/init.d/memcached stop"

check process varnish
  with pidfile /var/run/varnishd.pid
  start program = "/etc/init.d/varnish start"
  stop program = "/etc/init.d/varnish stop"
<% 0.upto((ENV['NUM_DELAYED_JOB_WORKERS'] || 1).to_i - 1) do |i| %>
check process delayed_job.<%= i %>
  with pidfile /var/run/delayed_job.<%= i %>.pid
  start program = "/app/script/delayed_job start --pid-dir=/var/run --identifier=<%= i %>"
  stop program = "/app/script/delayed_job stop --pid-dir=/var/run --identifier=<%= i %>"
<% end %>

Set monit mailserver from environment variable.


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

<%= node[:web][:log_directory] %>/*.log {
  daily
  missingok
  rotate 7
  compress
  delaycompress
  notifempty
  create 0660 rails rails
  sharedscripts
  postrotate
<% if File.directory?("#{node[:web][:base_directory]}/rails") -%>
    PASSENGER_INSTANCE_REGISTRY_DIR=<%= node[:passenger][:instance_registry_dir] %> /usr/bin/passenger-config restart-app --ignore-app-not-running --name rails > /dev/null
<% end -%>
<% if File.directory?("#{node[:web][:base_directory]}/gpx-import") -%>
    /bin/systemctl try-reload-or-restart gpx-import
<% end -%>
<% if File.directory?("#{node[:web][:base_directory]}/cgimap") -%>
    /bin/systemctl reload cgimap
    /usr/bin/rsync --preallocate <%= node[:web][:log_directory] %>/cgimap.log.2.gz ironbelly::logs/www.openstreetmap.org/cgimap-<%= node[:hostname] %>-`date -d "-2 days" +%Y-%m-%d`.gz
<% end -%>
  endscript
}

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

<%= node[:web][:log_directory] %>/*.log {
  daily
  missingok
  rotate 7
  compress
  delaycompress
  notifempty
  create 0660 rails rails
  sharedscripts
  postrotate
<% if File.directory?("#{node[:web][:base_directory]}/rails") -%>
    /bin/sleep 30
    PASSENGER_INSTANCE_REGISTRY_DIR=<%= node[:passenger][:instance_registry_dir] %> /usr/bin/passenger-config restart-app --ignore-app-not-running --name rails > /dev/null
<% end -%>
<% if File.directory?("#{node[:web][:base_directory]}/gpx-import") -%>
    /bin/systemctl try-reload-or-restart gpx-import
<% end -%>
<% if File.directory?("#{node[:web][:base_directory]}/cgimap") -%>
    /bin/systemctl reload cgimap
    /usr/bin/rsync --preallocate <%= node[:web][:log_directory] %>/cgimap.log.2.gz ironbelly::logs/www.openstreetmap.org/cgimap-<%= node[:hostname] %>-`date -d "-2 days" +%Y-%m-%d`.gz
<% end -%>
  endscript
}

Add a short delay when rotating passenger logs

If the machine is idle then we may try and rotate the passenger
logs very quickly after the apache logs, in which case apache can
still be reloading which breaks the passenger log rotation.


<form class="form-horizontal">
    <fieldset>
        <legend>Sign up</legend>

                    <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
                    <%= devise_error_messages! %>

<%= f.label :email %>*

                    <%= f.email_field :email %>

                    <%= f.label :phone %>

                    <%= f.phone_field :phone %>

                    <%= f.label :password %>*

                    <%= f.password_field :password %>

                    <%= f.label :password_confirmation %>*

                    <%= f.password_field :password_confirmation %>

                    <%= f.submit "Sign Up", :class => 'btn btn-primary' %>

                <% end %>
                <%= render "links" %>

    </fieldset>
</form>

Remove form within a form on new user reg page


<%= f.submit raw('◀ Back'), :name => 'move:back', :class => 'back-page' %>

Sign your petition

<%= petition.action %>

<%= render 'petitions/create/error_summary', f: f %>

<%= f.fields_for :creator_signature, petition.creator_signature do |csf| %>
  <%= render :partial => 'signatures/form', :locals => { :f => csf, :signature => csf.object, :context => 'create-petition' } %>
<% end %>

<%= f.submit 'Continue', :name => 'move:next', :class => 'button', :tabindex => increment %>

Your name will be published on this petition as the petition creator.

Other than that, we won’t publish your personal details anywhere or use them for anything other than this petition.

We will email you about this petition, and nothing else. You can unsubscribe at any time.

Create petition -- use div instead of section

section must have a heading


#[feature(globs, macro_rules, struct_variant)];
extern mod extra;

fn main() {
  fn type_of<T>(_: &T) -> &'static str {
    unsafe {
      (*std::unstable::intrinsics::get_tydesc::<T>()).name
    }
  } struct Foo<T>(T);

  <%= history %>;

  <% if let_var %>
  <%= rust_code %>;
  println!("<%= let_var%> = {:?} : {:s}", <%= let_var %>, type_of(&<%= let_var %>));
  <% else %>
  let _result = { <%= rust_code %> };
  println!("{:?} : {:s}", _result, type_of(&_result));
  <% end %>
}

#[feature(globs, macro_rules, struct_variant)];
extern mod extra;

fn type_of<T>(_: &T) -> &'static str {
  unsafe { (*std::unstable::intrinsics::get_tydesc::<T>()).name }
}

fn main() {
  <%= history %>;

  <% if let_var %>
  <%= rust_code %>;
  println!("<%= let_var%> = {:?} : {:s}", <%= let_var %>, type_of(&<%= let_var %>));
  <% else %>
  let _result = { <%= rust_code %> };
  println!("{:?} : {:s}", _result, type_of(&_result));
  <% end %>
}

Clean up Rust code template

Clean up Rust code template

Derp, what the crap was going on in there? o_O


<% wrap_layout :layout do %>

<%= current_article.title %>

<%= current_article.date.strftime('%b %e') %>

    <% if current_page.data.soundcloud_id %>

        <iframe
          width="100%"
          height="450"
          scrolling="no"
          frameborder="no"
          src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/<%= current_page.data.soundcloud_id %>&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true">

    <% end %>

    <%= current_article.body %>

<% end %>

<% wrap_layout :layout do %>

<%= current_article.date.strftime('%b %e') %>

<%= current_article.title %>

<%= current_article.data.topic_list %>

    <% if current_page.data.soundcloud_id %>

        <iframe
          width="100%"
          height="450"
          scrolling="no"
          frameborder="no"
          src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/<%= current_page.data.soundcloud_id %>&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true">

    <% end %>

    <%= current_article.body %>

<% end %>

Add topic list to details blog layout

Add topic list to details blog layout


[uwsgi]

# Bind to the specified UNIX/TCP socket using default protocol
<% if @use_tcp -%>
socket         = <%= @tcp_socket %>
<% else -%>
socket         = <%= @unix_socket %>
# Change socket permissions so Nginx can talk with uWSGI
chmod-socket   = 666
<% end -%>

# chdir to specified directory before apps loading
chdir          = <%= @project_path %>
# Load .wsgi file
wsgi-file      = <%= @project_app %>

# Spawn the specified number of workers/processes
processes      = <%= @processes %>
# Run each worker in prethreaded mode with the specified number of threads
threads        = <%= @threads %>

# Make uWSGI exit rather than go into "full dynamic mode"
need-app       = true
# Load apps in each worker instead of the master
lazy-apps      = true

# Do not use multiple interpreters (where available)
single-interpreter = true

# Monitor python modules mtime to trigger reload (use only in development)
py-autoreload  = 1

Update tabulation of key/value columns

Update tabulation of key/value columns


---
tenant: <%=@node['bcpc']['admin_tenant']%>
user: '<%="#{get_config('keystone-test-user')}"%>'
password: '<%="#{get_config('keystone-test-password')}"%>'
auth_url: https://<%="#{node[:bcpc][:management][:vip]}"%>:5000/v2.0/
timeout: 300

Extend timeout on nova functional test

Extend timeout on nova functional test


Outbox

    <% @mailbox_conversations.each do |email|  %>

        <%= check_box_tag 'email_ids[]', email.id -%>
        <%= link_to email.subject, mail_conversation_path(email)%>
        <%= email.updated_at.strftime("%m/%d/%Y") %>

    <% end %>

Outbox

  <% if @mailbox_conversations.count <= 0 %>

    "Empty Outbox"

  <% else %>

  <form action="/mail_conversations/trashing" method="post">
    <% @mailbox_conversations.each do |email|  %>

        <input id="email[]" name="email[<% email.id %>]" type="checkbox" value="<%= email.id %>" />
        <%= link_to email.subject, mail_conversation_path(email)%>
        <%= email.updated_at.strftime("%m/%d/%Y") %>

    <% end %>
    <input class="glyphicon glyphicon-trash", type="submit" value="Trash">
  </form>

<% end %>

Create trashing route for checkboxes in the outbox folder.


# This file is managed by Puppet
# Fail2Ban configuration file, overrides options set in jail.conf

[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban
# will not ban a host which matches an address in this list. Several
# addresses can be defined using space separator.
ignoreip = <%= whitelist_ips.join(" ") %>

# This file is managed by Puppet
# Fail2Ban configuration file, overrides options set in jail.conf

[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban
# will not ban a host which matches an address in this list. Several
# addresses can be defined using space separator.
ignoreip = <%= @whitelist_ips.join(" ") %>

Fix warning from template not using @ variable.

This was causing the following warning when running:

Variable access via 'whitelist_ips' is deprecated. Use '@whitelist_ips' instead.
template[/tmp/vagrant-puppet/modules-23039c89beb50fcef185f61334e7b97e/ci_environment/templates/etc/fail2ban/jail.local.erb]:8


      <%= select_tag "#{param_prefix}[preferred_operator_min]", options_for_select(Spree::Promotion::Rules::ItemTotal::OPERATORS_MIN.map{|o| [Spree.t("item_total_rule.operators.#{o}"),o]}, promotion_rule.preferred_operator_min), { class: 'select2 select_item_total mb-3' } %>
      <%= select_tag "#{param_prefix}[preferred_operator_max]", options_for_select(Spree::Promotion::Rules::ItemTotal::OPERATORS_MAX.map{|o| [Spree.t("item_total_rule.operators.#{o}"),o]}, promotion_rule.preferred_operator_max), { class: 'select2 select_item_total' } %>

      <%= text_field_tag "#{param_prefix}[preferred_amount_min]", promotion_rule.preferred_amount_min, class: 'form-control mb-3' %>
      <%= text_field_tag "#{param_prefix}[preferred_amount_max]", promotion_rule.preferred_amount_max, class: 'form-control' %>

      <%= select_tag "#{param_prefix}[preferred_operator_min]", options_for_select(Spree::Promotion::Rules::ItemTotal::OPERATORS_MIN.map{|o| [Spree.t("item_total_rule.operators.#{o}"),o]}, promotion_rule.preferred_operator_min), { class: 'custom-select select_item_total mb-3' } %>
      <%= select_tag "#{param_prefix}[preferred_operator_max]", options_for_select(Spree::Promotion::Rules::ItemTotal::OPERATORS_MAX.map{|o| [Spree.t("item_total_rule.operators.#{o}"),o]}, promotion_rule.preferred_operator_max), { class: 'custom-select select_item_total' } %>

      <%= text_field_tag "#{param_prefix}[preferred_amount_min]", promotion_rule.preferred_amount_min, class: 'form-control mb-3' %>
      <%= text_field_tag "#{param_prefix}[preferred_amount_max]", promotion_rule.preferred_amount_max, class: 'form-control' %>

Swap select2 for bootstrap custom-select.


<%= notice %>

  Name:
  <span class="rest-in-place"
        data-url=<%= url_for(@user) %>
        data-object="user"
        data-attribute="name">
    <%= @user.name %>

  Age:
  <%= @user.age %>

<%= link_to 'Edit', edit_user_path(@user) %> |
<%= link_to 'Back', users_path %>

<%= notice %>

  Name:
  <span class="rest-in-place"
        data-url=<%= url_for(@user) %>
        data-object="user"
        data-attribute="name">
    <%= @user.name %>

  Age:
  <span class="rest-in-place"
        data-url="<%= url_for(@user) %>"
        data-object="user"
        data-attribute="age">
    <%= @user.age %>

  <input class="slider"
         data-slider-id="user-<%= @user.id %>-age"
         type="text" data-slider-min="0"
         data-slider-max="199"
         data-slider-step="1"
         data-slider-value="<%= @user.age %>" />

<%= link_to 'Edit', edit_user_path(@user) %> |
<%= link_to 'Back', users_path %>

Fix rip slider markup in test app.

Fix rip slider markup in test app.


        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false">
          Toggle navigation

        </button>
        Dialog | docs

        <%= link_to 'Sign In', 'https://app.dialoganalytics.com/users/sign_in', class: 'btn btn-link navbar-btn navbar-right' %>

            <%= link_to 'Overview', 'index.html' %>

            <%= link_to 'Metrics', 'metrics.html' %>

        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false">
          Toggle navigation

        </button>
        Dialog | docs

        <%= link_to 'Sign In', 'https://app.dialoganalytics.com/users/sign_in', class: 'btn btn-link navbar-btn navbar-right' %>

            <%= link_to 'Overview', 'index.html' %>

            ← back to Dialog

Remove hidden link and add back to dialog


$ ->
  $('select#retailer_country_code').change (event) ->
    select_wrapper = $('#retailer_state_code_wrapper')

    $('select', select_wrapper).attr('disabled', true)

    country_code = $(this).val()

    url = "/<%= Refinery::Core.backend_route %>/retailers/subregion_options?parent_region=#{country_code}"
    select_wrapper.load(url)

Fix subregion-select path for ajax : add missing file


<%- if current_user %>
  <%= link_to "Sign out", :destroy_user_session, class: "btn btn-default btn-links", role: "button" %>
  <%- if controller_name != 'registrations' %>
    <%= link_to "Update account", :edit_user_registration, class: "btn btn-default btn-links", role: "button" %>
  <% end %>
<% end -%>

<% if defined? resource_name %>

  <%- if controller_name != 'sessions' and not current_user %>
    <%= link_to "Sign in to an existing account", new_session_path(resource_name), class: "btn btn-default btn-links", role: "button" %>
  <% end -%>

  <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
    <%= link_to "Sign up for a new account", new_registration_path(resource_name), class: "btn btn-default btn-links", role: "button" %>
  <% end -%>

  <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
    <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name), class: "btn btn-default btn-links", role: "button" %>
  <% end -%>

<% end %>

5829: Add missing erb partial for rendering buttons for links to other account
service actions.


Update your expenses!

<%= form_tag(expensesheet_path(current_user), method: "PATCH") do %>
  Housing
  <%= text_field_tag 'expense[Housing]', @expenses['Housing'].amount %>
  Transportation
  <%= text_field_tag 'expense[Transportation]', @expenses['Transportation'].amount %>
  Food
  <%= text_field_tag 'expense[Food]', @expenses['Food'].amount %>
  Phone
  <%= text_field_tag 'expense[Phone]', @expenses['Phone'].amount %>
  Misc.
  <%= text_field_tag 'expense[Misc]', @expenses['Misc'].amount %>
  <%= button_tag 'Add Expenses', html: {:class => "button round"} %>
<% end %>

Update your expenses!

<%= form_tag(expensesheet_path(current_user), method: "PATCH") do %>
  Housing
  <%= text_field_tag 'expense[Housing]', @expenses['Housing'].amount %>
  Transportation
  <%= text_field_tag 'expense[Transportation]', @expenses['Transportation'].amount %>
  Food
  <%= text_field_tag 'expense[Food]', @expenses['Food'].amount %>
  Phone
  <%= text_field_tag 'expense[Phone]', @expenses['Phone'].amount %>
  Misc.
  <%= text_field_tag 'expense[Misc]', @expenses['Misc'].amount %>
  <%= button_tag 'Update Expenses', html: {:class => "button round"} %>
<% end %>

Edit submit button for working edit expenses


<meta charset="utf-8">
<title><%= title %></title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<meta name="viewport" content="initial-scale=1, minimal-ui, user-scalable=no">
<%== meta_data_tags %>
<%= canonical_tag %>
<%= favicon_link_tag image_path('favicon.ico') %>
<%= stylesheet_link_tag 'spree/frontend/all', :media => 'screen' %>
<%= csrf_meta_tags %>
<%= javascript_include_tag 'spree/frontend/all' %>

<%= render "spree/shared/routes" %>
<%= render "spree/shared/frontend_routes" %>

<!--[if lt IE 9]>
  <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6/html5shiv.min.js"></script>
<![endif]-->
<%= yield :head %>

<meta charset="utf-8">
<title><%= title %></title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<meta name="viewport" content="initial-scale=1, minimal-ui, user-scalable=no">
<%== meta_data_tags %>
<%= canonical_tag %>
<%= favicon_link_tag image_path('favicon.ico') %>
<%= stylesheet_link_tag 'spree/frontend/all', :media => 'screen' %>
<%= javascript_include_tag 'spree/frontend/all' %>
<%= csrf_meta_tags %>

<%= render "spree/shared/routes" %>
<%= render "spree/shared/frontend_routes" %>

<!--[if lt IE 9]>
  <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6/html5shiv.min.js"></script>
<![endif]-->
<%= yield :head %>

Move js up a line in head

Move js up a line in head


All Articles

	<% @articles.each do |article| %>

			<%= link_to article.title, article_path(article), class: "article_title" %>

	<% end %>

<%= link_to "Create a New Article", new_article_path, class: "new_article"%>

Remove newline as a frivolous commit to clean working directory


<%= navigation true %>

<%= link_to "Witchifier", witchifier_path %>

Void

A Year At LinkedIn

Add link to A Year at Linkedin in projects page


<form action="<%= main_app.search_results_path %>" method="get" role="search" class="search">
  <%= t('search_box.label') %>
  <input class="search__input" type="search" name="query" value="<%= params[:query] %>" placeholder="<%= t('search_box.placeholder') %>"/>
  <button class="search__submit <%= 'search__submit--green' if search_in_page_header %>" type="submit">

    <%= t('search_box.button_text') %>
  </button>
</form>

<form action="<%= main_app.search_results_path %>" method="get" role="search" class="search">
  <%= t('search_box.label') %>
  <input class="search__input" id="search" type="search" name="query" value="<%= params[:query] %>" placeholder="<%= t('search_box.placeholder') %>"/>
  <button class="search__submit <%= 'search__submit--green' if search_in_page_header %>" type="submit">

    <%= t('search_box.button_text') %>
  </button>
</form>

Add missing for/id to search box

Add missing for/id to search box


#!/bin/sh

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

for prefix in chef-server chef-repository chef-git forum git lists munin osm-blog osm-donate osmf-crm osmf-ledgersmb wiki-wiki.osmfoundation.org osqa otrs sotm svn switch2osm trac wiki-board.osmfoundation.org wiki-dwg.osmfoundation.org wiki-wiki.openstreetmap.org
do
  /usr/local/bin/expire-backups --days=3 --weeks=3 --months=3 /store/backup $prefix
done

/usr/local/bin/expire-backups --weeks=5 /store/backup osm

/usr/local/bin/expire-backups --months=3 /store/backup nominatim

/usr/local/bin/expire-backups --days=180 /store/logs/planet.openstreetmap.org
/usr/local/bin/expire-backups --days=180 /store/logs/tile.openstreetmap.org
/usr/local/bin/expire-backups --days=180 /store/logs/www.openstreetmap.org

Expire archived logs after 180 days

Expire archived logs after 180 days


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

/var/log/apache2/*.log {
  daily
  size 1G
  missingok
  rotate 52
  compress
  delaycompress
  notifempty
  create 640 root adm
  sharedscripts
  postrotate
    /usr/bin/service apache2 reload > /dev/null 2>&1
  endscript
}

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

/var/log/apache2/*.log {
  daily
  size 1G
  missingok
  rotate 52
  compress
  delaycompress
  notifempty
  create 640 root adm
  sharedscripts
  postrotate
    /bin/systemctl reload apache2
  endscript
}

Fix tile server log rotation

Fix tile server log rotation


---
title: CLI Tunneling
---

Note: Applies to CLI v2.

CLI supports tunneling all of its traffic (HTTP and SSH) through a SOCKS 5 proxy specified via `BOSH_ALL_PROXY` environment variable. (Custom environment variable was chosen instead of using `all_proxy` environment variable to avoid accidently tunneling non-CLI traffic.)

Common use cases for tunneling through a jumpbox VM include:

- deploying Director VM with `bosh create-env` command
- accessing the Director and UAA APIs

# set a tunnel
# -D : local SOCKS port
# -f : forks the process in the background
# -C : compresses data before sending
# -N : tells SSH that no command will be sent once the tunnel is up
$ ssh -D 5000 -fNC jumpbox@jumpbox-ip -i jumpbox.key

# let CLI know via environment variable
$ export BOSH_ALL_PROXY=socks5://localhost:5000

$ bosh create-env bosh-deployment/bosh.yml ...
$ bosh alias-env aws -e director-ip --ca-cert ...

---
title: CLI Tunneling
---

Note: Applies to CLI v2.

CLI supports tunneling all of its traffic (HTTP and SSH) through a SOCKS 5 proxy specified via `BOSH_ALL_PROXY` environment variable. (Custom environment variable was chosen instead of using `all_proxy` environment variable to avoid accidently tunneling non-CLI traffic.)

Common use cases for tunneling through a jumpbox VM include:

- deploying Director VM with `bosh create-env` command
- accessing the Director and UAA APIs

# set a tunnel
# -D : local SOCKS port
# -f : forks the process in the background
# -C : compresses data before sending
# -N : tells SSH that no command will be sent once the tunnel is up
# -4 : force SSH to use IPv4 to avoid the dreaded `bind: Cannot assign requested address` error
$ ssh -4 -D 5000 -fNC jumpbox@jumpbox-ip -i jumpbox.key

# let CLI know via environment variable
$ export BOSH_ALL_PROXY=socks5://localhost:5000

$ bosh create-env bosh-deployment/bosh.yml ...
$ bosh alias-env aws -e director-ip --ca-cert ...

Add -4 option to fix IPv6 problems

Add -4 option to fix IPv6 problems

Added the `-4` option to the SSH command to avoid the `bind: Cannot assign requested address` on modern systems that try to listen on the IPv6 address `::1`


    <%= link_to project.title, project_path(project)%>

<%= project.description %>

Project Lead: <%= project.creator.username %>

City: <%= project.creator.location %>

      <% project.tags.each do |tag| %>

<%= link_to tag.name, tag_path(tag), class: "tag"%>

  <% end %>

    <%= link_to project.title, project_path(project)%>
    (
Location: <%= project.creator.city %>, <%= project.creator.state %>
)

<%= project.description %>

Project Lead: <%= project.creator.username %>

      <% project.tags.each do |tag| %>

<%= link_to tag.name, tag_path(tag), class: "tag"%>

  <% end %>

Add city and state to view

Add city and state to view


<title>Student Insights</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,300' rel='stylesheet' type='text/css'>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => false %>
<link rel="apple-touch-icon" href="/icon.png"/>
<%= content_tag('div', '', id: 'env-for-js', 'data-env-for-js-json': EnvForJs.new.to_json) %>
<%= javascript_include_tag Webpack.bundle('rollbar.js') %>
<%= csrf_meta_tags %>

<title>Student Insights: <%= PerDistrict.new.district_name %></title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,300' rel='stylesheet' type='text/css'>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => false %>
<link rel="apple-touch-icon" href="/icon.png"/>
<%= content_tag('div', '', id: 'env-for-js', 'data-env-for-js-json': EnvForJs.new.to_json) %>
<%= javascript_include_tag Webpack.bundle('rollbar.js') %>
<%= csrf_meta_tags %>

Add district name to HTML head tag

Add district name to HTML head tag


<%= @post.title %> - <%= @post.address %>

<%= @post.content %>

Comments

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

<%= comment.user.user_name %> says <%= comment.content %>

  <% end %>

<%= link_to "Add Comment", new_post_comment_path(@post) %>

<%= @post.title %> - <%= @post.address %>

<%= @post.content %>

Comments

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

<%= comment.user.user_name %> says <%= comment.content %>

    <%=  link_to 'upvote', upvote_comment_path(comment), method: :put%>
    <%=  link_to 'downvote', downvote_comment_path(comment), method: :put%>
  <%= comment.get_upvotes.size %>
  <% end %>

<%= link_to "Add Comment", new_post_comment_path(@post) %>

Add links to vote on comments

Add links to vote on comments


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

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

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

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

<%= @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:

Add page formatting for foundations

Add page formatting for foundations


Newsletters

      <% (current_site.the_post_type("newsclippings").the_posts.decorate rescue {}).each_with_index do |clipping, index| %>

<a rel="bookmark" href="<%= clipping.the_field("new-clipping-link") %>"><%= clipping.the_title %>

<%= clipping.the_field("news-clipping-date") %>

<%= clipping.the_field("news-clipping-source") %>

      <% end %>

Newsletters

      <% (current_site.the_post_type("newsclippings").the_posts.decorate rescue {}).each_with_index do |clipping, index| %>

<a href="<%= clipping.the_field("news-clipping-link") %>"><%= clipping.the_title %>

<%= clipping.the_field("news-clipping-date") %>

<%= clipping.the_field("news-clipping-source") %>

      <% end %>

Correct link to news clippings

Correct link to news clippings


<%= form_for @feedback do |f| %>
  <fieldset class="user-fields">
    <legend>About You</legend>

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

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

  </fieldset>

  <fieldset class="feedback-fields">
    <legend>Leave Your Feedback</legend>

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

      <%= f.label :description %>
      <%= f.text_area :description %>

  </fieldset>

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

<%= form_for @feedback do |f| %>
  <% if @feedback.errors.any? %>

        <%= I18n.t('activerecord.errors.header', :default => 'Invalid Fields') %>

        <%= I18n.t('activerecord.errors.message', :default => 'Correct the following errors and try again.') %>

        <% @feedback.errors.full_messages.each do |message| %>

<%= message.html_safe %>

        <% end %>

  <% end %>

  <fieldset class="user-fields">
    <legend>About You</legend>

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

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

  </fieldset>

  <fieldset class="feedback-fields">
    <legend>Leave Your Feedback</legend>

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

      <%= f.label :description %>
      <%= f.text_area :description %>

  </fieldset>

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

Add error messages to feedback form

Add error messages to feedback form


Use I18n.t instead of Spree's JS `t` function


Appointment Index Page

Show by mentor phase:

    <% 5.times do |i| %>

<%=link_to i, appointments_path(phase: i)%>

    <% end %>

<%@appointments.each do |appt|%>

<%= appt.start_time%>

<% end %>

Appointment Index Page

Show by mentor phase:

    <% 5.times do |i| %>

<%=link_to i, appointments_path(phase: i)%>

    <% end %>

    <%@appointments.each do |appt|%>

<%= appt.start_time%>

<%=link_to appt.start_time, appointment_path(appt) %>

    <% end %>

Make appointments clickable from appt index page


<%= render :partial => "stories/stories_grid", locals: { stories: @stories } %>

Chapters Currently Writing:

<%= render :partial => "chapters/chapter", collection: @current_chapters %>

<% if !@stories.empty? %>

My Stories:

<%= render partial: "stories/story", collection: @stories %>
<% else %>

You have no stories. <%= link_to "Create one now.", new_story_path %>

<% end %>

<% if !@current_chapters.empty? %>

Chapters Currently Writing:

<%= render partial: "chapters/chapter", collection: @current_chapters %>
<% end %>

Change My Stories page to use Bootstrap 4


    <% link_to '/' do %><%= image_tag 'bytepushers_black.png', alt: 'Logo cube' %><% end %>

<%= link_to 'about', '/pages/about.html' %>

<%= link_to 'startups', '#' %>

<%= link_to 'design', '/design.html' %>

<%= link_to 'code', '/code.html' %>

    <% link_to '/' do %><%= image_tag 'bytepushers_black.png', alt: 'Logo cube' %><% end %>

<%= link_to 'about', '/pages/about.html' %>

<%= link_to 'startups', '/startups.html' %>

<%= link_to 'design', '/design.html' %>

<%= link_to 'code', '/code.html' %>

Add Startup Category link in navbar

Add Startup Category link in navbar


<form method="post" action='/voteable_type/<%= .id %>/upvote' class="inline">
  <button type="submit" name="submit_param" value="submit_value" class="fa fa-sort-desc vote-button upvote-button"></button>
</form>

  <%= .votes %>

<form method="post" action='/voteable_type/<%= .id %>/downvote' class="inline">
  <button type="submit" name="submit_param" value="submit_value" class="fa fa-sort-desc vote-button downvote-button"></button>
</form>

  <form method="post" action='/<%= voteable.class.name.downcase %>s/<%= voteable.id %>/upvote' class="inline">
    <button type="submit" name="upvote" value="upvote" class="vote-button" id="upvote-button"></button>
  </form>

    <%= answer.votes.count %>

  <form method="post" action='/<%= voteable.class.name.downcase %>s/<%= voteable.id %>/downvote' class="inline">
    <button type="submit" name="downvote" value="downvote" class="vote-button" id="downvote-button"></button>
  </form>

Create partial for vote buttons and score


<%= notice %>

Listing Posts

      Title
      Body

    <% @posts.each do |post| %>

        <%= post.title %>
        <%= post.body %>
        <%= link_to 'Show', post %>

    <% end %>

<%= link_to 'New Post', new_post_path %>

<%= notice %>

<% @posts.each do |post| %>

<%= link_to "#{post.title}", post %>

<%= post.body %>

<% end %>

<%= link_to 'New Post', new_post_path %>

Remove table index page for a simpler list of posts


<% if @page.layout.present? and @page.render_layout_as_partial? %>
  <%= render partial: @page.layout %>
<% else %>
  <% content_for :head do -%>
    <%- if @page.meta_title.present? -%>
      <meta name="title" content="<%= @page.meta_title %>">
    <%- else -%>
      <meta name="title" content="<%= @page.title %>">
    <%- end -%>
    <meta name="keywords" content="<%= @page.meta_keywords %>">
    <meta name="description" content="<%= @page.meta_description %>">
  <% end -%>

  <% content_for :sidebar do %>
    <% if (defined?(@products) && @products) && (defined?(@taxon) && @taxon) %>
      <%= render partial: 'spree/shared/filters' %>
    <% elsif defined?(@taxonomies) && @taxonomies %>
      <%= render partial: 'spree/shared/taxonomies' %>
    <% end %>
  <% end %>

<%= @page.title %>

    <%= raw @page.body %>

<% end %>

Update template for Spree 4.1+

Update template for Spree 4.1+


Questions

<% @map = ResponseMap.find(params[:map_id]) %>
<% @questionnaire = Questionnaire.find(@map.reviewed_object_id) %>
<% @reviewee_participant=AssignmentTeam.find(@map.reviewee_id).participants.first%>

<%= render :partial => 'submitted_content/hyperlink', :locals => {:participant => @reviewee_participant, stage: ""} %>

<%= form_tag :controller => 'student_quizzes', :action => 'record_response',
  :assignment_id => params[:assignment_id],
  :participant_id => params[:participant_id],
  :map_id => params[:map_id] do %>

  <%= hidden_field_tag :questionnaire_id, "#{@questionnaire.id}" %>
  <%= hidden_field_tag :assignment_id, "#{params[:assignment_id]}" %>
  <%= render :partial => 'quiz_form', :locals => { :questionnaire_id => @questionnaire.id,:display=>"take" } %>
  <%= submit_tag "Submit Quiz", :name=>"save" %>
<% end %>

Questions

<% @map = ResponseMap.find(params[:map_id]) %>
<% @questionnaire = Questionnaire.find(@map.reviewed_object_id) %>
<% @reviewee_participant=AssignmentTeam.find(@map.reviewee_id).participants.first%>
<%  @assignment = Assignment.find(params[:assignment_id])%>

<%= render :partial => 'submitted_content/main', :locals => {:participant => @reviewee_participant, :stage => ""} %>

<%= form_tag :controller => 'student_quizzes', :action => 'record_response',
  :assignment_id => params[:assignment_id],
  :participant_id => params[:participant_id],
  :map_id => params[:map_id] do %>

  <%= hidden_field_tag :questionnaire_id, "#{@questionnaire.id}" %>
  <%= hidden_field_tag :assignment_id, "#{params[:assignment_id]}" %>
  <%= render :partial => 'quiz_form', :locals => { :questionnaire_id => @questionnaire.id,:display=>"take" } %>
  <%= submit_tag "Submit Quiz", :name=>"save" %>
<% end %>

Fix the view for taking quizzes.

Fix the view for taking quizzes.


filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => <%= @logstash_filter_pattern_params['syslog_filter_match'] %>
    }
  }
}

filter {
  if [type] == "syslog" {
    # Do not log passwords when they came from puppet-agent. Be case insensitive
    # about it.
    # Watch for mysql "access denied for user " logs, as these do not contain
    # passwords - could be logged.
    if [message] =~ "(?i)puppet-agent"
     and [message] =~ "(?i)password"
     and [message] !~ "(?i)1045, \"Access denied for user" {
      drop {}
    }
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => <%= @logstash_filter_pattern_params['syslog_filter_match'] %>
    }
  }
}

Update syslog filter in logstash

Update syslog filter in logstash

By filtering the messages in syslog part we might
not storage these messages which have password in it.
Look for puppet-agent, password string within string message
and be case insensitive about it.

Change-Id: I09b750d4126eda075922957e8c338c6ac2a385b6


<% content_for :title, t("coronavirus_local_restrictions.lookup.title") %>

    <% if !@location_lookup.data.first.england? %>
      <%= render partial: "coronavirus_local_restrictions/devolved_nation" %>
    <% elsif @restriction.present? && @restriction.alert_level == 2 %>
        <%= render partial: "coronavirus_local_restrictions/tier_two_restrictions" %>
    <% elsif @restriction.present? && @restriction.alert_level == 3 %>
        <%= render partial: "coronavirus_local_restrictions/tier_three_restrictions" %>
    <% else %>
      <%= render partial: "coronavirus_local_restrictions/tier_one_restrictions" %>
    <% end %>

<% content_for :title, t("coronavirus_local_restrictions.lookup.title") %>

    <% if !@location_lookup.data.first.england? %>
      <%= render partial: "coronavirus_local_restrictions/devolved_nation" %>
    <% elsif @restriction.present? && @restriction.current.present? && @restriction.current_alert_level == 2 %>
        <%= render partial: "coronavirus_local_restrictions/tier_two_restrictions" %>
    <% elsif @restriction.present? && @restriction.current.present? && @restriction.current_alert_level == 3 %>
        <%= render partial: "coronavirus_local_restrictions/tier_three_restrictions" %>
    <% else %>
      <%= render partial: "coronavirus_local_restrictions/tier_one_restrictions" %>
    <% end %>

Update the results view to use the current alert level


Requirements <%= title %>
<% unless authors.empty? %>
<% authors.each do |author| -%>
- <%= format_author(author) %>
<% end -%>
<% end -%>
<% introduction.each do |paragraph| %>
<%= paragraph %>
<% end %>
USER STORIES
<% stories.each do |header, stories| -%>
<% if header.strip == '' %>
<% else -%>
<%= "\n#{header}\n\n" %>
<% end -%>
<% stories.each do |story| -%>
<%= format_story(story) %>
<% end -%>
<% end -%>
<% definitions.each do |header, definitions| -%>
<% if header.strip == '' -%>
<% else -%>
<%= "\n#{header}\n\n" %>
<% end %>
<% definitions.each do |definition| -%>
<%= format_definition(definition) %>
<% end %>
<% end %>

Requirements <%= title %>
<% unless authors.empty? %>
<% authors.each do |author| -%>
- <%= format_author(author) %>
<% end -%>
<% end -%>
<% introduction.each do |paragraph| %>
<%= paragraph %>
<% end %>
USER STORIES
<% stories.each do |header, stories| -%>
<% if header.strip == '' %>
<% else -%>
<%= "\n#{header}\n\n" -%>
<% end -%>
<% stories.each do |story| -%>
<%= format_story(story) -%>
<% end -%>
<% end -%>
<% definitions.each do |header, definitions| -%>
<% if header.strip == '' -%>
<% else -%>
<%= "\n#{header}\n\n" -%>
<% end -%>
<% definitions.each do |definition| -%>
<%= format_definition(definition) %>
<% end -%>
<% end %>

Remove extraneous newlines from the saga template.

Allows the autofill feature to be used without adding blank lines.


<%= form_for @expense do |f| %>
  <%= f.text_field :amount, placeholder: "$ Housing" %><br>
  <%= f.hidden_field :expense_type_id, :value => 1 %>
  <%= f.submit "Add Expense" %>
<% end %>

<%= form_for @expense do |f| %>
  <%= f.text_field :amount, placeholder: "$ Housing" %>

  <%= f.hidden_field :expense_type_id, :value => 1 %>

  <%= f.text_field :amount, placeholder: "$ Transportation" %>

  <%= f.hidden_field :expense_type_id, :value => 2 %>

  <%= f.text_field :amount, placeholder: "$ Food" %>

  <%= f.hidden_field :expense_type_id, :value => 3 %>

  <%= f.text_field :amount, placeholder: "$ Phone" %>

  <%= f.hidden_field :expense_type_id, :value => 4 %>

  <%= f.text_field :amount, placeholder: "$ Misc. 1" %>

  <%= f.hidden_field :expense_type_id, :value => 5 %>

  <%= f.text_field :amount, placeholder: "$ Misc. 2" %>

  <%= f.hidden_field :expense_type_id, :value => 6 %>

  <%= f.text_field :amount, placeholder: "$ Misc. 3" %>

  <%= f.hidden_field :expense_type_id, :value => 7 %>
  <%= f.submit "Add Expense" %>
<% end %>

Add more fields to new expense form

Add more fields to new expense form


  search
  <input type="text" name="" placeholder="search companies">
  <button>Search</button>

    <%= render '/projects/project_card' %>

  search
  <input type="text" name="" placeholder="search projects">
  <button>Search</button>

    <%= render '/projects/project_card' %>

Change placeholder to say projects instead of companies on project page


---

- job:
    name: <%= @job_name %>
    display-name: <%= @job_name %>
    project-type: freestyle
    properties:
      - build-discarder:
          days-to-keep: 30
          artifact-num-to-keep: 5
    builders:
      - trigger-builds:
          - project: run-rake-task
            block: true
            predefined-parameters: |
              TARGET_APPLICATION=rummager
              MACHINE_CLASS=search
              RAKE_TASK="analytics:create_data_import_csv EXPORT_PATH=/data/export/enhanced_ecommerce"
          - project: run-rake-task
            block: true
            predefined-parameters: |
              TARGET_APPLICATION=rummager
              MACHINE_CLASS=search
              RAKE_TASK="analytics:delete_old_files EXPORT_PATH=/data/export/enhanced_ecommerce EXPORT_FILE_LIMIT=10"
    triggers:
        - timed: '<%= @cron_schedule %>'
    publishers:
        - trigger-parameterized-builds:
            - project: Success_Passive_Check
              condition: 'SUCCESS'
              predefined-parameters: |
                  NSCA_CHECK_DESCRIPTION=<%= @service_description %>
                  NSCA_OUTPUT=<%= @service_description %> success
            - project: Failure_Passive_Check
              condition: 'FAILED'
              predefined-parameters: |
                  NSCA_CHECK_DESCRIPTION=<%= @service_description %>
                  NSCA_OUTPUT=<%= @service_description %> failed

---

- job:
    name: <%= @job_name %>
    display-name: <%= @job_name %>
    project-type: freestyle
    properties:
      - build-discarder:
          days-to-keep: 30
          artifact-num-to-keep: 5
    builders:
      - trigger-builds:
          - project: run-rake-task
            block: true
            predefined-parameters: |
              TARGET_APPLICATION=rummager
              MACHINE_CLASS=search
              RAKE_TASK="analytics:create_data_import_csv[/data/export/enhanced_ecommerce]"
          - project: run-rake-task
            block: true
            predefined-parameters: |
              TARGET_APPLICATION=rummager
              MACHINE_CLASS=search
              RAKE_TASK="analytics:delete_old_files[/data/export/enhanced_ecommerce,10]"
    triggers:
        - timed: '<%= @cron_schedule %>'
    publishers:
        - trigger-parameterized-builds:
            - project: Success_Passive_Check
              condition: 'SUCCESS'
              predefined-parameters: |
                  NSCA_CHECK_DESCRIPTION=<%= @service_description %>
                  NSCA_OUTPUT=<%= @service_description %> success
            - project: Failure_Passive_Check
              condition: 'FAILED'
              predefined-parameters: |
                  NSCA_CHECK_DESCRIPTION=<%= @service_description %>
                  NSCA_OUTPUT=<%= @service_description %> failed

Fix exporting enhanced ecommerce data

Fix exporting enhanced ecommerce data

This task uses the Jenkins run-rake-task task. The analytics:create_data_import_csv
and analytics:create_data_import_csv have been modified to accept
parameters instead of environment variables.

See: git:
 - https://github.com/alphagov/rummager/pull/1317,
 - https://github.com/alphagov/govuk-puppet/pull/8301


<!DOCTYPE HTML>

    <title>The Tangent</title>
  	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    <link rel="stylesheet" href="/stylesheets/bootstrap.min.css">

          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
            Toggle navigation

          </button>
          The Tangent

Articles

      <%= yield %>

Add bottom padding to editor layout

Add bottom padding to editor layout


<%= plural_table_name.humanize %>

<% attributes.each do |attribute| -%>
    <%= attribute.human_name %>
<% end -%>

<%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>

<% attributes.each do |attribute| -%>
    <%%= <%= singular_table_name %>.<%= attribute.name %> %>
<% end -%>
    <%%= link_to 'Show', "/<%= plural_name %>/#{<%= singular_table_name %>.id}" %>
    <%%= link_to 'Edit', "/<%= plural_name %>/#{<%= singular_table_name %>.id}/edit" %>
    <%%= link_to 'Destroy', "/<%= plural_name %>/#{<%= singular_table_name %>.id}", method: 'delete', data: { confirm: 'Do you really want to delete this resource?' } %>

<%% end %>

<%%= link_to 'New <%= human_name %>', "/<%= plural_name %>/new" %>

<%= plural_table_name.humanize %>

<%%= link_to 'Add a New <%= human_name.titleize %>', "/<%= plural_name %>/new" %>

<% attributes.each do |attribute| -%>
      <%= attribute.human_name %>
<% end -%>

  <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>

  <% attributes.each do |attribute| -%>
      <%%= <%= singular_table_name %>.<%= attribute.name %> %>
  <% end -%>
      <%%= link_to 'Show', "/<%= plural_name %>/#{<%= singular_table_name %>.id}" %>
      <%%= link_to 'Edit', "/<%= plural_name %>/#{<%= singular_table_name %>.id}/edit" %>
      <%%= link_to 'Destroy', "/<%= plural_name %>/#{<%= singular_table_name %>.id}", method: 'delete', data: { confirm: "Do you really want to delete this <%= singular_table_name %>?" } %>

  <%% end %>

Apply bootstrap css class to the table, and customize the delete confirmation message.


<%= simple_form_for(@clock) do |f| %>
  <%= f.error_notification %>

    <%= f.association :users %>
    <%= f.association :statuses %>

    <%= f.button :submit %>

<% end %>

<%= simple_form_for(@clock) do |f| %>
  <%= f.error_notification %>

    <%= f.association :users %>

    <% @clock.statuses.each do |status| %>
      <%= render partial: 'statuses/form', locals: { '@status'.to_sym => status } %>
    <% end %>

    <%= f.button :submit %>

<% end %>

Embed the status form partial in clock's edit


<div class="member_info_block">
  <h1> <%= @member.full_name %> </h1>
  <h2> with <%= @posts.total_count %> <%= "post".pluralize(@posts.total_count) %> </h2>
  <h2> since <%= @member.created_at.to_s :month_year %> </h2>

  <% if @member.id == session[:member_id] %>
    <%= link_to "New Post", new_post_path, class: "button" %>
    <%= link_to "Invites (#{@member.invites_left} left)", invites_path, class: "button invites_button" %>
    <%= link_to "Settings", edit_member_path(@member), class: "button settings_button" %>
  <% end %>
</div>

<%= render 'posts/posts_list' %>

<div class="member_info_block">
  <h1> <%= @member.full_name %> </h1>
  <h2> with <%= @posts.total_count %> <%= "post".pluralize(@posts.total_count) %> </h2>
  <h2> since <%= @member.created_at.to_s :month_year %> </h2>

  <% if @member.id == session[:member_id] %>
    <%= link_to "New Post", new_post_path, class: "button" %>
    <%= link_to "New Bit", new_bit_path, class: "button" %>
    <%= link_to "Invites (#{@member.invites_left} left)", invites_path, class: "button invites_button" %>
    <%= link_to "Settings", edit_member_path(@member), class: "button settings_button" %>
  <% end %>
</div>

<%= render 'posts/posts_list' %>

Add Bit from Member Town

Add Bit from Member Town


---
- job:
    name: content_data_api_import_etl_master_process
    display-name: Content Data API - ETL master
    project-type: freestyle
    description: "
Run the etl:master rake task.
"
    builders:
      - trigger-builds:
          - project: run-rake-task
            block: true
            predefined-parameters: |
              TARGET_APPLICATION=content-data-api
              MACHINE_CLASS=backend
              RAKE_TASK=etl:master
    wrappers:
      - ansicolor:
          colormap: xterm
  <% if @rake_etl_master_process_cron_schedule %>
    triggers:
      - timed: <%= @rake_etl_master_process_cron_schedule %>
  <% end %>
    logrotate:
        numToKeep: 10
    publishers:
      - trigger-parameterized-builds:
          - project: Success_Passive_Check
            condition: 'SUCCESS'
            predefined-parameters: |
                NSCA_CHECK_DESCRIPTION=<%= @service_description %>
                NSCA_OUTPUT=<%= @service_description %> success
          - project: Failure_Passive_Check
            condition: 'FAILED'
            predefined-parameters: |
                NSCA_CHECK_DESCRIPTION=<%= @service_description %>
                NSCA_OUTPUT=<%= @service_description %> failed
                NSCA_CODE=2

---
- job:
    name: content_data_api_import_etl_master_process
    display-name: Content Data API - ETL master
    project-type: freestyle
    description: "
Run the etl:master rake task.
"
    builders:
      - trigger-builds:
          - project: run-rake-task
            block: true
            predefined-parameters: |
              TARGET_APPLICATION=content-data-api
              MACHINE_CLASS=backend
              RAKE_TASK=etl:master
    wrappers:
      - ansicolor:
          colormap: xterm
  <% if @rake_etl_master_process_cron_schedule %>
    triggers:
      - timed: <%= @rake_etl_master_process_cron_schedule %>
  <% end %>
    logrotate:
        daysToKeep: 365
    publishers:
      - trigger-parameterized-builds:
          - project: Success_Passive_Check
            condition: 'SUCCESS'
            predefined-parameters: |
                NSCA_CHECK_DESCRIPTION=<%= @service_description %>
                NSCA_OUTPUT=<%= @service_description %> success
          - project: Failure_Passive_Check
            condition: 'FAILED'
            predefined-parameters: |
                NSCA_CHECK_DESCRIPTION=<%= @service_description %>
                NSCA_OUTPUT=<%= @service_description %> failed
                NSCA_CODE=2

Extend retention on the Content Data API ETL master job

As it's useful to see builds going back further than ~10 days.


About This Site

Redesign

  Over the past year, Portland Code School has experienced an extraordinary rate of change and growth. To celebrate and encapsulate the new experience PCS provides, a complete website redesign was in order!

Tools:

  This site is built using <%= link_to "Middleman", "http://middlemanapp.com/" %>, <%= link_to "Github Pages", "http://pages.github.com/" %>, the <%= link_to "Middleman Github Pages gem", "https://github.com/neo/middleman-gh-pages" %>, <%= link_to "Font Awesome by Dave Gandy", "http://fontawesome.io" %>, and <%= link_to "Bootstrap 3", "http://getbootstrap.com/" %>.

Core Development Team:

Technical and Design Lead: <%= link_to "Shawna C. Scott", "http://shawnacscott.com" %>

<%= link_to "Timothy Winters", "https://github.com/timothywinters" %>

Additional Contributors:

<%= link_to "Al Zimmerman", "https://github.com/Auraelius" %>

<%= link_to "Cris Kelly", "https://github.com/criskelly" %>

<%= link_to "Chris Peddecord", "https://github.com/trippel" %>

Contributing:

  Contributors are always welcome! If you would like to contribute, please read the documentation for any of the tools we use you are not familiar with, listed above. Once you've done that, there are three different ways you can contribute:

<%= link_to "File an issue", "https://github.com/criskelly/pcsredesign/issues" %> if you find any problems, or have suggestions for improvements or additional content you'd like to see.

For those of you new to the GitHub contribution game, check out our <%= link_to "open issues", "https://github.com/criskelly/pcsredesign/issues?state=open" %> to get an idea of what to work on.

If you have a feature you'd like to see on our site and want to tackle it yourself, feel free to <%= link_to "fork our repo", "https://github.com/criskelly/pcsredesign/fork" %> and send a pull request to our <%= link_to "integration branch", "https://github.com/criskelly/pcsredesign/tree/integration" %>.

    NOTE: Keep in mind that we may not merge every pull request if it doesn't fit with our overall mission and design plan. It is not a reflection on you or the quality of your code!

Add content to 'About this site' page

Add content to 'About this site' page


<%
  form = local_assigns[:form]
  errors = form&.errors
%>

Estimate how much your guaranteed income could be

<%= render 'calculators/error_summary', messages: errors&.messages if form&.invalid? %>

<form action="/guaranteed-income/estimate#form" method="get">
  <%= render 'calculators/form_input_currency',
             field: :pot,
             value: form&.pot,
             label: 'Amount you’ll have in your pot',
             error_messages: errors&.get(:pot) %>

  <%= render 'calculators/form_input_number',
             field: :age,
             css_classes: 'js-scroll-target',
             value: form&.age,
             label: 'Your age when you plan to retire',
             error_messages: errors&.get(:age) %>

  <%= render 'calculators/form_input_submit' %>
</form>

<% if form %>

<% end %>

<%
  form = local_assigns[:form]
  errors = form&.errors
%>

Estimate how much your guaranteed income could be

<%= render 'calculators/error_summary', messages: errors&.messages if form&.invalid? %>

<form action="/guaranteed-income/estimate#form" method="get">
  <%= render 'calculators/form_input_currency',
             field: :pot,
             value: form&.pot,
             label: 'How much is in your pot?',
             error_messages: errors&.get(:pot) %>

  <%= render 'calculators/form_input_number',
             field: :age,
             css_classes: 'js-scroll-target',
             value: form&.age,
             label: 'What age do you want to retire?',
             error_messages: errors&.get(:age) %>

  <%= render 'calculators/form_input_submit' %>
</form>

<% if form %>

<% end %>

Use question style for annuity calculator labels


<%= form.label :title, :Title, {:class => 'big'} %>

<%= form.text_field :title, {:class => 'big'} %>

<%= form.label :description %>

<%= form.text_area :description %>

<% unless @collection.albums.empty? %>
<%= form.label :albums %>

<% for album in @collection.albums %>
<%= form.fields_for :album_list do |album_fields| %>

<% if album.photos.empty? %>
	<%= album.title %>
<% else %>
<%= image_tag album.photos.first.file.album.url, :alt => album.title %>
<% end %>
<%= album_fields.hidden_field album.id %>

<% end %>
<% end %>

<%
grouped_options = [
	['Available albums',[['Choose album to add','']]],
	['Not used', Album.unused.map{|album|[album.title, album.id]} ],
	['In use', Album.used.map{|album|[album.title, album.id]} ]
]
grouped_options_for_select(grouped_options)
%>
<%= select_tag 'available_albums', grouped_options_for_select(grouped_options) %>

<% end %>

<%= form.label :title, :Title, {:class => 'big'} %>

<%= form.text_field :title, {:class => 'big'} %>

<%= form.label :description %>

<%= form.text_area :description %>

<% unless @collection.albums.empty? %>
<%= form.label :albums %>

<% for album in @collection.albums %>
<%= form.fields_for :album_list do |album_fields| %>

<%= image_tag "delete-24x24.png", :class => "delete", :alt => "Delete" -%>

<% if album.photos.empty? %>
	<%= album.title %>
<% else %>
<%= image_tag album.photos.first.file.album.url, :alt => album.title %>
<% end %>
<%= album_fields.hidden_field album.id %>

<% end %>
<% end %>

<%
grouped_options = [
	['Available albums',[['Choose album to add','']]],
	['Not used', Album.unused.map{|album|[album.title, album.id]} ],
	['In use', Album.used.map{|album|[album.title, album.id]} ]
]
grouped_options_for_select(grouped_options)
%>
<%= select_tag 'available_albums', grouped_options_for_select(grouped_options) %>

<% end %>

Use image_path for local image, for asset hosts and such.


<%
# USAGE: Displays a version picker for the given object.
#
# VARIABLES:
# * record: The record to show a version picker for.
# * target: The DOM id to update when refreshing the version.
%>

<% if record.versions.present? %>
  <form class="version_chooser">
    <div>
      Version <%= select_tag("version", options_for_select(record.versions.reverse.map { |version| ["#{version.created_at.strftime('%B %d, %Y at %I:%M %p')}", version.id]})) %><%= image_tag "spinner.gif", :alt => "Spinner", :id => "version_loading" :style => "display: none; margin-left: 0.5em;" %>
    </div>
  </form>
  <% content_for :javascript_insert do %>
    <script type='text/javascript'>
      $(function() {
        $('#version').change(function(event) {
          $('#version_loading').show();
          var version_id = event.target.value;
          $('#<%= target %>').load('/versions/'+version_id+'/edit', function(response, status, xhr) {
            $('#version_loading').hide();
          });
        })
      })
    </script>
  <% end %>
<% end %>

<%
# USAGE: Displays a version picker for the given object.
#
# VARIABLES:
# * record: The record to show a version picker for.
# * target: The DOM id to update when refreshing the version.
%>

<% if record.versions.present? %>
  <form class="version_chooser">
    <div>
      Version <%= select_tag("version", options_for_select(record.versions.reverse.map { |version| ["#{version.created_at.strftime('%B %d, %Y at %I:%M %p')}", version.id]})) %><%= image_tag "spinner.gif", :alt => "Spinner", :id => "version_loading", :style => "display: none; margin-left: 0.5em;" %>
    </div>
  </form>
  <% content_for :javascript_insert do %>
    <script type='text/javascript'>
      $(function() {
        $('#version').change(function(event) {
          $('#version_loading').show();
          var version_id = event.target.value;
          $('#<%= target %>').load('/versions/'+version_id+'/edit', function(response, status, xhr) {
            $('#version_loading').hide();
          });
        })
      })
    </script>
  <% end %>
<% end %>

Fix typo in view, introduced when switching to asset pipeline


  <%= f.input :name, label: false %>
  <%= f.input :sets, label: false %>
  <%= f.input :reps, label: false %>
  <%= f.input :load, label: false %>
  <%= f.input :url, label: false %>

Add new routine large screen form

Add new routine large screen form


List#show

Find me in app/views/list/show.html.erb

Make show pg refer to list

Make show pg refer to list


New Plant

    <%= button_to 'Back to my plants', [:plants] %>

        <%= form_for @plant, url: plants_path do |form| %>

          <% if form.object.errors.any? %>

              The following errors prevented saving:

                <% form.object.errors.full_messages.each do |error| %>

<%= error %>

                <% end %>

          <% end %>

            <%= form.label :nickname %>
            <%= form.text_field :nickname, class: 'form-control' %>

            <%= form.label :common_name %>
            <%= form.text_area :common_name, class: 'form-control' %>

            <%= form.label :light %>
            <%= form.text_area :light, class: 'form-control' %>

            <%= form.label :water_freq %>
            <%= form.number_field :water_freq, class: 'form-control' %>

          <%= form.submit 'Create Plant', class: 'btn btn-primary' %>
        <% end %>

New Plant

    <%= link_to 'Back', :plants, class: 'button' %>

        <%= form_for @plant, url: plants_path do |form| %>

          <% if form.object.errors.any? %>

              The following errors prevented saving:

                <% form.object.errors.full_messages.each do |error| %>

<%= error %>

                <% end %>

          <% end %>

            <%= form.label :nickname %>
            <%= form.text_field :nickname, class: 'form-control' %>

            <%= form.label :common_name %>
            <%= form.text_area :common_name, class: 'form-control' %>

            <%= form.label :light %>
            <%= form.text_area :light, class: 'form-control' %>

            <%= form.label :water_freq %>
            <%= form.number_field :water_freq, class: 'form-control' %>

          <%= form.submit 'Create Plant', class: 'btn btn-primary' %>
        <% end %>

Fix back button on Create Plant page

Fix back button on Create Plant page


<%= error_messages_for 'user' %>

<%= form_tag :action => 'update', :id => @user do %>
	<%= render :partial => "form" %>

	<%= submit_tag _("Save"), :class => 'nolabel' %>
<% end %>

<% if current_user.admin? %>
	<fieldset class="basic">
		<legend><%=_ 'Project access control' %></legend>

<%= render :partial => "project_permissions" %>

	</fieldset>
<% end %>

<%= render :partial => "/pages/notes", :object => @user.notes %>

<%= error_messages_for 'user' %>

<%= form_tag :action => 'update', :id => @user do %>
	<%= render :partial => "form" %>

	<%= submit_tag _("Save"), :class => 'nolabel' %>
<% end %>

<% if current_user.admin? %>
	<fieldset class="basic">
		<legend><%=_ 'Project access control' %></legend>

<%= render :partial => "project_permissions" %>

	</fieldset>
<% end %>

<%= render :partial => "/pages/notes", :locals =>{ :notes=> @user.notes} %>

Fix render partial notes for Rails 3.

Fix render partial notes for Rails 3.


<% content_for :page_class, 'contacts-show' %>
<% content_for :breadcrumbs do %>

    <%= link_to organisation.title, "/government/organisations/#{organisation.slug}" %>

    <%= link_to "Contact #{organisation.abbreviation}", calculate_contacts_index_path(organisation) %>

<% end %>

Contact details

<%= @contact.title %>

  <% if @contact.quick_links.any? %>

        <% @contact.quick_links.each do |quick_link| %>

            <%= link_to quick_link.title, quick_link.url %>

        <% end %>

  <% end %>

<%= render "contact_details", contact: @contact %>

<% if @contact.query_response_time %>

<%= link_to "Find out when to expect a response to your query", "http://www.hmrc.gov.uk/tools/progress-tool/index.htm" %>

<% end -%>

<% content_for :page_class, 'contact-show' %>
<% content_for :breadcrumbs do %>

    <%= link_to organisation.title, "/government/organisations/#{organisation.slug}" %>

    <%= link_to "Contact #{organisation.abbreviation}", calculate_contacts_index_path(organisation) %>

<% end %>

Contact details

<%= @contact.title %>

  <% if @contact.quick_links.any? %>

        <% @contact.quick_links.each do |quick_link| %>

            <%= link_to quick_link.title, quick_link.url %>

        <% end %>

  <% end %>

<%= render "contact_details", contact: @contact %>

<% if @contact.query_response_time %>

<%= link_to "Find out when to expect a response to your query", "http://www.hmrc.gov.uk/tools/progress-tool/index.htm" %>

<% end -%>

Fix typo in CSS class name.

Fix typo in CSS class name.

I made a boo-boo, and introduced a typo in c68f8d9.  This resulted in
most of the CSS not applying.


  <%= metric_configuration.metric.name %>
  <%= metric_configuration.metric.code %>
  <% unless metric_configuration.metric.is_a? KalibroClient::Entities::Miscellaneous::HotspotMetric %>
    <%= metric_configuration.weight %>
  <% end %>

    <%= link_to_show_page(metric_configuration, @kalibro_configuration.id) %>

  <% if kalibro_configuration_owner? @kalibro_configuration.id %>

      <%= link_to_edit_form(metric_configuration, @kalibro_configuration.id) %>

      <%= link_to t_action(:destroy, MetricConfiguration), kalibro_configuration_metric_configuration_path(@kalibro_configuration.id, metric_configuration.id),
                   method: :delete, data: { confirm: t('want_destroy_metric_configuration') },
                   class: 'btn btn-danger' %>

  <% end %>

  <%= metric_configuration.metric.name %>
  <%= metric_configuration.metric.code %>
  <% unless metric_configuration.metric.is_a? KalibroClient::Entities::Miscellaneous::HotspotMetric %>
    <%= metric_configuration.weight %>
  <% end %>

    <%= link_to_show_page(metric_configuration, @kalibro_configuration.id) %>

  <% if kalibro_configuration_owner? @kalibro_configuration.id %>
    <% if metric_configuration.metric.type != "HotspotMetricSnapshot" %>

        <%= link_to_edit_form(metric_configuration, @kalibro_configuration.id) %>

    <% end %>

    <%= link_to t_action(:destroy, MetricConfiguration), kalibro_configuration_metric_configuration_path(@kalibro_configuration.id, metric_configuration.id),
        method: :delete, data: { confirm: t('want_destroy_metric_configuration') },
        class: 'btn btn-danger' %>

  <% end %>

Remove edit button from metric configuration list

There are no attributes to be edited on a hotspot metric configuration

Signed off by: Diego Araújo <diegoamc90@gmail.com>


Append 'last updated' to datetime

Append 'last updated' to datetime


env: <%= @worker[:env] %>
linux:
  host: <%= @hostname %>
  log_level: <%= @worker[:log_level] %>
  amqp:
  <% @amqp.each do |key, value| -%>
    <%= key %>: <%= value %>
  <% end -%>
  vms:
    provider: <%= @worker[:provider] %>
    count: <%= @worker[:vms] %>
  blue_box:
    customer_id: <%= @bluebox[:customer_id] %>
    api_key: <%= @bluebox[:api_key] %>
    flavor_id: <%= @bluebox[:flavor_id] %>
    location_id: <%= @bluebox[:location_id] %>
  librato:
    email: <%= @librato[:email] %>
    token: <%= @librato[:api_token] %>
  language_mappings:
    haskell: jvm
    clojure: jvm
    scala: jvm
    groovy: jvm
    java: jvm

Add more language mappings for the jvm image.


# This file is managed by Puppet. Local changes will be clobbered.

server {
  server_name <%= @full_domain %>;

  listen localhost:80;

  proxy_connect_timeout 1s;
  proxy_read_timeout 15s;

  access_log /var/log/nginx/<%= @full_domain %>-access.log timed_combined;
  access_log /var/log/nginx/<%= @full_domain %>-json.event.access.log json_event;
  error_log /var/log/nginx/<%= @full_domain %>-error.log;

  location / {
    try_files $uri/index.html $uri.html $uri @app;
  }

  location /publisher {
    proxy_pass http://localhost:3079;
  }

  location /signon {
    proxy_pass http://localhost:3080;
  }

  location /whitehall {
    proxy_pass http://localhost:3081;
  }

  root /data/vhost/<%= @full_domain %>/current/public;

}

# This file is managed by Puppet. Local changes will be clobbered.

server {
  server_name <%= @full_domain %>;

  listen localhost:80;

  proxy_connect_timeout 1s;
  proxy_read_timeout 15s;

  access_log /var/log/nginx/<%= @full_domain %>-access.log timed_combined;
  access_log /var/log/nginx/<%= @full_domain %>-json.event.access.log json_event;
  error_log /var/log/nginx/<%= @full_domain %>-error.log;

  location / {
    try_files $uri/index.html $uri.html $uri @app;
  }

  location /publisher {
    proxy_pass http://localhost:3079;
  }

  location /signon {
    proxy_pass http://localhost:3080;
  }

  location /whitehall {
    proxy_pass http://localhost:3081;
  }

  location /transition {
    proxy_pass http://localhost:3086;
  }

  root /data/vhost/<%= @full_domain %>/current/public;

}

Add transition on port 3086 to sidekiq-monitoring


<div class="comment_in_request" id="comment-<%=comment.id.to_s%>">
    <% if comment.user && comment.user.profile_photo && !@render_to_file %>

            <img src="<%= get_profile_photo_url(:url_name => comment.user.url_name) %>" alt="">

    <% end %>

        <%# When not logged in, but mid-comment-leaving, there'll be no comment.user %>
        <%= comment.user ? user_link(comment.user) : _("You") %> <%= _("left an annotation") %> (<%= simple_date(comment.created_at || Time.now) %>)

        <%= image_tag "quote-marks.png", :class => "comment_quote" %>
        <%= comment.get_body_for_html_display %>

        <% if !comment.id.nil? %>
            <% if !@user.nil? && @user.admin_page_links? %>
                <%= link_to "Admin", admin_request_edit_comment_path(comment) %> |
            <% end %>
            <%= link_to "Link to this", comment_path(comment), :class => "link_to_this" %>

        <% end %>

<div class="comment_in_request" id="comment-<%=comment.id.to_s%>">
    <% if comment.user && comment.user.profile_photo && !@render_to_file %>

            <img src="<%= get_profile_photo_url(:url_name => comment.user.url_name) %>" alt="">

    <% end %>

        <%# When not logged in, but mid-comment-leaving, there'll be no comment.user %>
        <%= comment.user ? user_link(comment.user) : _("You") %> <%= _("left an annotation") %> (<%= simple_date(comment.created_at || Time.now) %>)

        <%= comment.get_body_for_html_display %>

        <% if !comment.id.nil? %>
            <% if !@user.nil? && @user.admin_page_links? %>
                <%= link_to "Admin", admin_request_edit_comment_path(comment) %> |
            <% end %>
            <%= link_to "Link to this", comment_path(comment), :class => "link_to_this" %>

        <% end %>

Remove the quote from a comment in request correspondence.

It gets hidden by the current stylesheet, so easier and more efficient
not to render it at all.


<%= link_to 'Become
 a Member', '/index.html' %>

<%= link_to 'Explore
 Benefits', '/levels.html' %>

<%= link_to 'Circle
 Membership', '/circle.html' %>

Donor and
 Member Wall

Quick
 Donation

Frequently
 Asked Questions

<%= link_to 'Become
 a Member', '/index.html' %>

<%= link_to 'Explore
 Benefits', '/levels.html' %>

<%= link_to 'Circle
 Membership', '/circle.html' %>

Donor and
 Member Wall

Corporate
 Sponsors

Frequently
 Asked Questions

Update nav to add corporate sponsors in place of quick donate


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

// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)
Unattended-Upgrade::Remove-Unused-Dependencies "<%= node[:apt][:unattended_upgrades][:remove_unused_dependencies] ? 'true' : 'false' %>";

// Don't install recommended packages as we don't want to get
// new postgres versions automatically
APT::Install-Recommends "false";

Disable automatic installation of recommended packages


This is where your form will go for creating new items.

<%= render 'form', item: @item %>

Add div.form container around new item form


<% if @family_people.length > 1 %>

    Family
  <% if @logged_in.admin?(:edit_profiles)  %>
    <%= link_to 'edit', @family, :class => 'discreet' %>
  <% elsif me? %>
    <%= link_to 'edit', edit_person_path(@logged_in), :class => 'discreet' %>
  <% end %>

    <% @family_people.each do |person| %>

          <a href="<%= url_for person %>">
            <%= render :partial => 'people/thumbnail', :locals => {:person => person} %>

          <%= link_to h(person.name), person %>
          <% unless person.visible?(@family) %>
            <%= image_tag('lock.gif', :alt => 'Hidden Profile', :class => 'icon') %>
          <% end %>

    <% end %>

<% end %>

<% if @family_people.length > 1 %>

    Family <%= render :partial => 'families/thumbnail', :locals => {:family => @family} %>
  <% if @logged_in.admin?(:edit_profiles)  %>
    <%= link_to 'edit', @family, :class => 'discreet' %>
  <% elsif me? %>
    <%= link_to 'edit', edit_person_path(@logged_in), :class => 'discreet' %>
  <% end %>

    <% @family_people.each do |person| %>

          <a href="<%= url_for person %>">
            <%= render :partial => 'people/thumbnail', :locals => {:person => person} %>

          <%= link_to h(person.name), person %>
          <% unless person.visible?(@family) %>
            <%= image_tag('lock.gif', :alt => 'Hidden Profile', :class => 'icon') %>
          <% end %>

    <% end %>

<% end %>

Add family thumbnail on profile page.

Add family thumbnail on profile page.


# This file is managed by gitlab-ctl. Manual changes will be
# erased! To change the contents below, edit /etc/gitlab/gitlab.rb
# and run `sudo gitlab-ctl reconfigure`.

<% rails_app = @app == 'gitlab' ? 'Gitlab' : 'GitlabCi' %>
<% container = @app == 'gitlab' ? 'gitlab-rails' : 'gitlab-ci' %>

if Rails.env.production?
  <%= rails_app =>::Application.config.action_mailer.delivery_method = :smtp

  ActionMailer::Base.smtp_settings = {
    authentication: <%= @smtp_authentication.to_s.to_sym.inspect %>,
<% %w{ address port user_name password domain enable_starttls_auto tls openssl_verify_mode }.each do |key| %>
  <% value = node['gitlab'][container]["smtp_#{key}"] %>
  <% unless value.nil? %>
    <%= "#{key}: #{value.inspect}," %>
  <% end %>
<% end %>
  }
end

# This file is managed by gitlab-ctl. Manual changes will be
# erased! To change the contents below, edit /etc/gitlab/gitlab.rb
# and run `sudo gitlab-ctl reconfigure`.

<% rails_app = @app == 'gitlab' ? 'Gitlab' : 'GitlabCi' %>
<% container = @app == 'gitlab' ? 'gitlab-rails' : 'gitlab-ci' %>

if Rails.env.production?
  <%= rails_app %>::Application.config.action_mailer.delivery_method = :smtp

  ActionMailer::Base.smtp_settings = {
    authentication: <%= @smtp_authentication.to_s.to_sym.inspect %>,
<% %w{ address port user_name password domain enable_starttls_auto tls openssl_verify_mode }.each do |key| %>
  <% value = node['gitlab'][container]["smtp_#{key}"] %>
    <%= "#{key}: #{value.inspect}," unless value.nil? %>
<% end %>
  }
end

Fix smtp settings template typo.

Fix smtp settings template typo.


<%
  data_attributes ||= {}
  data_attributes[:module] = 'app-escape-link'
%>
<%= link_to "Leave this site", destroy_session_flow_path(ext_r: "true"), class: "app-c-escape-link govuk-link", rel: "nofollow noreferrer noopener", target: "_blank", data: data_attributes %>

<%
  data_attributes ||= {}
  data_attributes[:module] = 'app-escape-link'
%>
<%= link_to("Hide this page",
  destroy_session_flow_path(ext_r: "true"),
  class: "app-c-escape-link govuk-link",
  rel: "nofollow noreferrer noopener",
  target: "_blank",
  data: data_attributes,
  aria: {
    label: "Hide this page. Quick exit button, it opens BBC Weather in a new tab"
  }
) %>

Fix the 'Leave this site' link purpose

Fix the 'Leave this site' link purpose

The leave this site button does not properly explain what it does, so it could be more accessible for people using screen readers

We need to design the content for what this says, so that we can make sure people get the right idea of what is happening.

See page 15 of the report - https://drive.google.com/drive/folders/13sklGDeiQv95CFXFglXZ_ka-NpOK5cGL

Also look at the discussion on the component in the design system

So people with accessibility needs can use the button

Button content:

Change from:
Leave this site

To:
Hide this page

Add hidden screen reader text:
Quick exit button, it opens BBC Weather in a new tab

Change link to:
BBC Weather - https://www.bbc.co.uk/weather

Standard followed:
https://www.w3.org/WAI/WCAG21/Techniques/aria/ARIA8.html

---

When JavaScript is disabled the link will open in a new tab so the perpetrator won’t be able to press back.
When JavaScript is enabled, in addition to the above we try to prevent the perpetrator from discovering the initial tab by changing the location of the original page.

---

https://trello.com/c/FGFqviB4/180-accessibility-smart-answer-fix-the-leave-this-site-link-purpose