- if current_user
  .transparent_backdrop{style: 'display:none;'}
  .user_menu
    = link_to raw("#{t('nav.user.label', username: h(current_user.username))} ▼"), '#', onclick: "return handleUserMenuClick();"
    %div{ style: 'position:relative;top:3px;'}
      .user_options{style: 'display: none;'}
        - if current_user.teacher?
          = link_to t('nav.user.classroom'), followers_url
          %hr
        = link_to t('nav.user.stats'), root_url
        %br/
        = link_to t('nav.user.settings'), edit_user_registration_url
        %br/
        = link_to t('nav.user.prizes'), 'http://code.org/prize'
        %br/
        = link_to t('nav.user.logout'), destroy_user_session_url, method: :delete
- else
  = link_to t('nav.user.signup'), new_user_registration_url
  |
  = link_to t('nav.user.signin'), new_user_session_url

Move sign out method from "DELETE" to "GET

- if current_user
  .transparent_backdrop{style: 'display:none;'}
  .user_menu
    = link_to raw("#{t('nav.user.label', username: h(current_user.username))} ▼"), '#', onclick: "return handleUserMenuClick();"
    %div{ style: 'position:relative;top:3px;'}
      .user_options{style: 'display: none;'}
        - if current_user.teacher?
          = link_to t('nav.user.classroom'), followers_url
          %hr
        = link_to t('nav.user.stats'), root_url
        %br/
        = link_to t('nav.user.settings'), edit_user_registration_url
        %br/
        = link_to t('nav.user.prizes'), 'http://code.org/prize'
        %br/
        = link_to t('nav.user.logout'), destroy_user_session_url
- else
  = link_to t('nav.user.signup'), new_user_registration_url
  |
  = link_to t('nav.user.signin'), new_user_session_url


= f.input_field :quantity_population, as: :hidden, data: { intervention_updater: prefix + 'quantity_population', intervention_handler: "quantity" }
- if reference.handlers.any?
  - options = reference.handlers.map do |handler|
    - if handler.population?
      - [Nomen::Unit.find(:unity).human_name, handler.name]
    - elsif handler.widget == :number
      - unit = handler.unit? ? handler.unit : Nomen::Unit.find(:unity)
      - ["#{unit.symbol} (#{handler.human_name})", handler.name]
    - else
      - fail "Cannot handler #{handler.widget} handlers"
  = f.input(:quantity, wrapper: :append, required: f.object.class.validators_on(:quantity_population).any? { |v| v.is_a? ActiveRecord::Validations::PresenceValidator }) do
    = f.input :quantity_value, input_html: { data: { intervention_updater: prefix + 'quantity_value', intervention_field: 'quantity-value' } }, wrapper: :simplest
    = f.input(:quantity_handler, collection: options, include_blank: false, input_html: { data: { intervention_updater: prefix + 'quantity_handler', intervention_field: 'quantity-handler' } }, wrapper: :simplest)
    = f.error :quantity_population

Fix intervention costs parameters bug

= f.input_field :quantity_population, as: :hidden, data: { intervention_updater: prefix + 'quantity_population', intervention_handler: "quantity" }
- if reference.handlers.any?
  - options = reference.handlers.map do |handler|
    - if handler.population?
      - [Nomen::Unit.find(:unity).human_name, handler.name]
    - elsif handler.widget == :number
      - unit = handler.unit? ? handler.unit : Nomen::Unit.find(:unity)
      - ["#{unit.symbol} (#{handler.human_name})", handler.name]
    - else
      - fail "Cannot handler #{handler.widget} handlers"
  = f.input(:quantity, wrapper: :append, required: f.object.class.validators_on(:quantity_population).any? { |v| v.is_a? ActiveRecord::Validations::PresenceValidator }) do
    = f.input :quantity_value, input_html: { data: { intervention_updater: prefix + 'quantity_value', intervention_field: 'quantity-value', intervention_handler: "quantity" } }, wrapper: :simplest
    = f.input(:quantity_handler, collection: options, include_blank: false, input_html: { data: { intervention_updater: prefix + 'quantity_handler', intervention_field: 'quantity-handler' } }, wrapper: :simplest)
    = f.error :quantity_population


.user-profile
  .persona
    = image_tag 'butler/dummy_user.png'
    .name{ data: { toggle: 'dropdown' } }
      %strong= 'CURRENT USER EMAIL HERE'
      %p= 'CURRENT USER NAME HERE'
      %span.caret

    %ul.dropdown-menu.pull-right{ role: 'dropdown' }
      %li
        = link_to t('user.edit_account', default: :'butler.user.edit_account'), 'edit_user_path'

      %li.divider
      %li
        = link_to logout_path do
          = fa_icon 'power-off', text: t('butler.session.logout')

Swap hardcoded url for hint for user

.user-profile
  .persona
    = image_tag 'butler/dummy_user.png'
    .name{ data: { toggle: 'dropdown' } }
      %strong= 'CURRENT USER EMAIL HERE'
      %p= 'CURRENT USER NAME HERE'
      %span.caret

    %ul.dropdown-menu.pull-right{ role: 'dropdown' }
      %li
        = link_to t('user.edit_account', default: :'butler.user.edit_account'), 'edit_user_path'

      %li.divider
      %li
        = link_to 'LOG OUT PATH HERE' do
          = fa_icon 'power-off', text: t('butler.session.logout')


-# See config/browser.rb
- if !browser.modern?
  #support-navigator-banner.row
    .col-xs-12
      Attention, votre navigateur (#{browser.name} #{browser.version}) est trop ancien pour utiliser demarches-simplifiees.fr : certaines parties du site ne fonctionneront pas correctement.
      %br/
      %br/
      Nous vous recommendons fortement de
      %a{ href: "https://browser-update.org/fr/update.html", target: "_blank" }mettre à jour votre navigateur
      \.

Remove a space before a final period

-# See config/browser.rb
- if !browser.modern?
  #support-navigator-banner.row
    .col-xs-12
      Attention, votre navigateur (#{browser.name} #{browser.version}) est trop ancien pour utiliser demarches-simplifiees.fr : certaines parties du site ne fonctionneront pas correctement.
      %br/
      %br/
      Nous vous recommendons fortement de
      %a{ href: "https://browser-update.org/fr/update.html", target: "_blank" }mettre à jour votre navigateur
      %span<>
        \.


.top-area
  .nav-controls
    = form_tag request.original_url, method: :get, class: 'project-filter-form', id: 'project-filter-form' do |f|
      - if @projects.present?
        = search_field_tag :filter_projects, nil, placeholder: 'Filter by name', class: 'projects-list-filter form-control', spellcheck: false
      - if can? current_user, :create_projects, @group
        = link_to new_project_path(namespace_id: @group.id), class: 'btn btn-new pull-right' do
          = icon('plus')
          New Project

= render 'shared/projects/list', projects: @projects, projects_limit: 20, stars: false, skip_namespace: true

Remove unnecessary project limit argument from group projects page

.top-area
  .nav-controls
    = form_tag request.original_url, method: :get, class: 'project-filter-form', id: 'project-filter-form' do |f|
      - if @projects.present?
        = search_field_tag :filter_projects, nil, placeholder: 'Filter by name', class: 'projects-list-filter form-control', spellcheck: false
      - if can? current_user, :create_projects, @group
        = link_to new_project_path(namespace_id: @group.id), class: 'btn btn-new pull-right' do
          = icon('plus')
          New Project

= render 'shared/projects/list', projects: @projects, stars: false, skip_namespace: true


#contact-overlay.text-center
  %span#close= "X"
  %p= "This is the contact page."

  %p
  = "Address: 633 Folsom Street, "
  = "San Francisco, CA 94107"

  %p
  = "Telephone: 123-456-7890"

  %p
  = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut in mi et elit viverra ullamcorper. Integer sit amet elementum libero. Mauris commodo ullamcorper metus, sed finibus nunc consectetur at. Etiam dictum posuere velit, ut scelerisque mi. Duis molestie odio ut ligula fringilla bibendum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus tincidunt tellus et feugiat finibus."

Change icon to close contact page

#contact-overlay.text-center
  %span#close.glyphicon.glyphicon-remove
  %p= "This is the contact page."

  %p
  = "Address: 633 Folsom Street, "
  = "San Francisco, CA 94107"

  %p
  = "Telephone: 123-456-7890"

  %p
  = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut in mi et elit viverra ullamcorper. Integer sit amet elementum libero. Mauris commodo ullamcorper metus, sed finibus nunc consectetur at. Etiam dictum posuere velit, ut scelerisque mi. Duis molestie odio ut ligula fringilla bibendum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus tincidunt tellus et feugiat finibus."


- action ||= controller.action_name
- sidebar = "#{controller.controller_name}/sidebar_#{action}"
- sidebar = "admin/#{sidebar}" if controller.class.to_s.starts_with?("Admin::")

= yield(:sidebar)
- begin
  = render :partial => sidebar
  - rescue MissingTemplate
= render :partial => "common/recently"

Allow explicit controller name when refreshing sidebar

- view   ||= controller.controller_name
- action ||= controller.action_name
- sidebar = "#{view}/sidebar_#{action}"
- sidebar = "admin/#{sidebar}" if controller.class.to_s.starts_with?("Admin::")

= yield(:sidebar)
- begin
  = render :partial => sidebar
  - rescue MissingTemplate
= render :partial => "common/recently"


-#
  Show the user's dashboard.
  Currently only has the upload image form
  and the path to the user's repo

- content_for :title do
  Create New Project

= render 'shared/glimageshow', :glimages => @glimages

= render 'shared/messages'

#maincolumn
  %h2 Create a new project
  #upload
    = form_for @project, :class => 'fakeupload' do |f|
      = f.text_field :name, :placeholder => "Name for your project"
        = f.fields_for :glimage do |i|
          = render 'glimages/form', :form => i

Fix indent error in haml in projects/new


.contextual
  = icon_link_to :profit_sheet
  = icon_link_to :balance_sheet
  = contextual_links_for

%h1= link_to @tenant.company, @tenant.company

.form-view
  = render "form"

= render 'people/show_attachments'
= render 'tenants/sidebar'

Switch to the partial from application.

.contextual
  = icon_link_to :profit_sheet
  = icon_link_to :balance_sheet
  = contextual_links_for

%h1= link_to @tenant.company, @tenant.company

.form-view
  = render "form"

= render 'show_attachments'
= render 'tenants/sidebar'


!!! html
%html
  %head
    %title #{@g_set_title || t(:site_title)}
    %meta{name: "viewport", content: "width=device-width, initial-scale=1.0"}
    /
      HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries
      WARNING: Respond.js doesn't work if you view the page via file://

    / [if lt IE 9]
      %script{src: "https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"}
      %script{src: "https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"}

    = stylesheet_link_tag    "application", media: "all"
    = stylesheet_link_tag    "https://fonts.googleapis.com/css?family=Roboto:400,500,700", media: "all"
    = javascript_include_tag "application"
    = csrf_meta_tags
    = render 'google_analytics'
    :javascript
      addToHomescreen();

  %body
    = render 'header'
    = yield

Move addToHomeScreen to body tag

!!! html
%html
  %head
    %title #{@g_set_title || t(:site_title)}
    %meta{name: "viewport", content: "width=device-width, initial-scale=1.0"}
    /
      HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries
      WARNING: Respond.js doesn't work if you view the page via file://

    / [if lt IE 9]
      %script{src: "https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"}
      %script{src: "https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"}

    = stylesheet_link_tag    "application", media: "all"
    = stylesheet_link_tag    "https://fonts.googleapis.com/css?family=Roboto:400,500,700", media: "all"
    = javascript_include_tag "application"
    = csrf_meta_tags
    = render 'google_analytics'

  %body
    :javascript
      addToHomescreen();

    = render 'header'
    = yield


!!! Strict
%html
  %head
    %title
      = h("Blabbr - #{yield(:title)}")
    = stylesheet_link_tag 'style'
    %link{ :rel => "shortcut icon", :href => "/favicon.ico", :type => "image/x-icon"}
    = javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "jquery.rails.js", "jquery.autocomplete.js", "application.js"
    = csrf_meta_tag
  %body
    %header
      %h1
        = link_to "blabbr", root_path
      %nav
        %ul#user_info
          %li#avatar
            = link_to_avatar_thumb current_user
            = link_to current_user.nickname, user_path(current_user.permalink)
          %li
            = link_to t('home'), topics_path
          %li
            = link_to t('preferences'), dashboard_path
          %li
            = link_to t('logout'), logout_path
      %aside
        %ul.topic-list
          %li.new
            = link_to t('topics.new'), new_topic_path
          %li.new
            = link_to t('smilies.new'), new_smiley_path
    %hr
    - flash.each do |name, msg|
      = content_tag :div, msg, :id => "flash_#{name}"
    %h2
      = yield(:title)
    %section#contents
      =yield

Change route in application layout

!!! Strict
%html
  %head
    %title
      = h("Blabbr - #{yield(:title)}")
    = stylesheet_link_tag 'style'
    %link{ :rel => "shortcut icon", :href => "/favicon.ico", :type => "image/x-icon"}
    = javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "jquery.rails.js", "jquery.autocomplete.js", "application.js"
    = csrf_meta_tag
  %body
    %header
      %h1
        = link_to "blabbr", root_path
      %nav
        %ul#user_info
          %li#avatar
            = link_to_avatar_thumb current_user
            = link_to current_user.nickname, user_path(current_user.permalink)
          %li
            = link_to t('home'), topics_path
          %li
            = link_to t('preferences'), dashboard_path
          %li
            = link_to t('logout'), destroy_user_session_path
      %aside
        %ul.topic-list
          %li.new
            = link_to t('topics.new'), new_topic_path
          %li.new
            = link_to t('smilies.new'), new_smiley_path
    %hr
    - flash.each do |name, msg|
      = content_tag :div, msg, :id => "flash_#{name}"
    %h2
      = yield(:title)
    %section#contents
      =yield


- page_title(" - Venganzas del Pasado")
!!!
%html
  %head
    /[if lt IE 9]
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    = stylesheet_link_tag "application"
    = javascript_include_tag "application"
    %title= yield :title
    = yield :head
    = csrf_meta_tag
    %meta{ :name => 'description', :content => 'MP3 de La Venganza Será Terrible de Alejandro Dolina para descargar.'}
    %meta{ :charset => "utf-8"}
  %body{ :class => body_class }
    .topbar
      .topbar-inner
        .container
          = link_to 'Venganzas del Pasado', '/', :class => 'brand'
          = render 'layouts/menus/navigation'

    = render 'header'

    .container.main
      .row
        #content.span9
          -if notice.present?
            .alert-message.success.fade.in
              %a{ :class => "close", :href => "#" }
                ×
              = notice
          -if alert.present?
            .alert-message.error.fade.in
              %a{ :class => "close", :href => "#" }
                ×
              = alert
          = yield

        .span4.offset1
          = render 'sidebar'

    = render 'footer'

Add autodiscovery and favicon to layout

- page_title(" - Venganzas del Pasado")
!!!
%html
  %head
    /[if lt IE 9]
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    = stylesheet_link_tag "application"
    = javascript_include_tag "application"
    = auto_discovery_link_tag :rss, posts_path(:format => :rss),
      { :title => "RSS feed de Venganzas del Pasado" }
    = favicon_link_tag
    %title= yield :title
    = yield :head
    = csrf_meta_tag
    %meta{ :name => 'description', :content => 'MP3 de La Venganza Será Terrible de Alejandro Dolina para descargar.'}
    %meta{ :charset => "utf-8"}
  %body{ :class => body_class }
    .topbar
      .topbar-inner
        .container
          = link_to 'Venganzas del Pasado', '/', :class => 'brand'
          = render 'layouts/menus/navigation'

    = render 'header'

    .container.main
      .row
        #content.span9
          -if notice.present?
            .alert-message.success.fade.in
              %a{ :class => "close", :href => "#" }
                ×
              = notice
          -if alert.present?
            .alert-message.error.fade.in
              %a{ :class => "close", :href => "#" }
                ×
              = alert
          = yield

        .span4.offset1
          = render 'sidebar'

    = render 'footer'


= render "layouts/manage/page_title", title: "Hackathon Configuration"

.row
  .col-lg-6.mb-3
    .card
      .card-body
        %h5.card-title Hackathon Manager Config
        %h6.card-subtitle.mb-2.text-muted
          Hackathon Manager configuration can be changed in the source code at
          %code config/hackathon.yml
          \.
        %hr
        - Rails.configuration.hackathon.keys.each do |key|
          %p
            %b #{key}:
            %pre= Rails.configuration.hackathon[key]

  .col-lg-6.mb-3
    .card
      .card-body
        %h5.card-title Environment Variables
        %h6.card-subtitle.mb-2.text-muted
          Environment variables are configured on the production server.
        %hr
        %p
          %b Carpool Link:
          %pre= ENV['CARPOOL_LINK'] || '[No value]'
        %p
          %b AWS S3 Bucket for Resumes:
          %pre= ENV['AWS_BUCKET'] || '[No value]'

Remove carpool link env variable

= render "layouts/manage/page_title", title: "Hackathon Configuration"

.row
  .col-lg-6.mb-3
    .card
      .card-body
        %h5.card-title Hackathon Manager Config
        %h6.card-subtitle.mb-2.text-muted
          Hackathon Manager configuration can be changed in the source code at
          %code config/hackathon.yml
          \.
        %hr
        - Rails.configuration.hackathon.keys.each do |key|
          %p
            %b #{key}:
            %pre= Rails.configuration.hackathon[key]

  .col-lg-6.mb-3
    .card
      .card-body
        %h5.card-title Environment Variables
        %h6.card-subtitle.mb-2.text-muted
          Environment variables are configured on the production server.
        %hr
        %p
          %b AWS S3 Bucket for Resumes:
          %pre= ENV['AWS_BUCKET'] || '[No value]'


%link{rel: 'stylesheet', href:'/mailer.css'}
%table.row
  %tbody
    %tr
      %th
        %table
          %tr
            %td.main-content
              %p.paragraph
                = "Hi #{@greeted_users}."
                I hope your term is going well. Our student training modules provide
                students with critical information as they learn how to contribute
                to Wikipedia. I noticed that some of your students are not up-to-date
                with the student training modules as outlined on your course timeline.
              %p.paragraph
                The trainings can be easy to overlook, but they truly help your
                students as they navigate Wikipedia.
              %p.paragraph
                Of course, if your schedule has changed, just let us know and update it on your course page.
              %p.paragraph
                Looking forward to seeing all the great contributions your students make this term.
            %td.expander
        %table
          %tr
            %td.main-content
              %p.paragraph
                Best regards,
                %br
                %em
                  = @alert.from_user&.real_name || 'Wiki Ed'
.hidden
  %p -- DO NOT DELETE ANYTHING BELOW THIS LINE --
  %p ignore_creating_dashboard_ticket

Update text of 'untrained students' email

%link{rel: 'stylesheet', href:'/mailer.css'}
%table.row
  %tbody
    %tr
      %th
        %table
          %tr
            %td.main-content
              %p.paragraph
                = "Hi #{@greeted_users}."
                I hope your term is going well. Our student training modules provide
                students with critical information as they learn how to contribute
                to Wikipedia. I noticed that some of your students are not up-to-date
                with the student training modules as outlined on your course timeline.
              %p.paragraph
                The trainings can be easy to overlook, but they truly help your
                students as they navigate Wikipedia. The students who have overdue
                training modules will have received a reminder by email. You can also
                post a reminder to each of their Wikipedia talk pages if you wish; to do so,
                click the button with the 'comment' icon from the Students tab of your
                Dashboard course page.
              %p.paragraph
                Of course, if your schedule has changed, just let us know and update it on your course page.
              %p.paragraph
                Looking forward to seeing all the great contributions your students make this term.
            %td.expander
        %table
          %tr
            %td.main-content
              %p.paragraph
                Best regards,
                %br
                %em
                  = @alert.from_user&.real_name || 'Wiki Ed'
.hidden
  %p -- DO NOT DELETE ANYTHING BELOW THIS LINE --
  %p ignore_creating_dashboard_ticket


- if params[:day].present?
  - title_part = "Archivo del #{params[:day]}/#{params[:month]}/#{params[:year]}"
- elsif params[:month].present?
  - title_part = "Archivo de #{I18n.t('date.month_names')[params[:month].to_i]} del #{params[:year]}"
- else
  - title_part = "Archivo del año #{params[:year]}"

- if params[:page].nil?
  - the_title = title_part
- else
  - the_title = "#{title_part}, <small>Página #{params[:page]}</small>"
- page_title the_title
- meta_description strip_tags(the_title)

%h2.ribbon!= html_page_title

=render 'layouts/banners/b468x60'

.posts
  = render @posts

= paginate @posts, :window => 2

Improve meta description for posts archive

- if params[:day].present?
  - title_part = "Archivo de programas del #{params[:day]}/#{params[:month]}/#{params[:year]}"
- elsif params[:month].present?
  - title_part = "Archivo de programas de #{I18n.t('date.month_names')[params[:month].to_i]} del #{params[:year]}"
- else
  - title_part = "Archivo de programas del año #{params[:year]}"

- if params[:page].nil?
  - the_title = title_part
- else
  - the_title = "#{title_part}, <small>Página #{params[:page]}</small>"
- page_title the_title
- meta_description strip_tags("#{the_title} de La Venganza será Terrible")

%h2.ribbon!= html_page_title

=render 'layouts/banners/b468x60'

.posts
  = render @posts

= paginate @posts, :window => 2


.jumbotron
  %h1 The Art World in Your App
  .p
    The Artsy API provides access to images of historic artwork and related information on artsy.net for educational and other non-commercial purposes. It's currently available for playing, testing, and learning only, and not for production. Please contact us for all other inquiries.
  .p
    = link_to "Ready? Start Here", start_path, class: 'btn btn-primary btn-lg'
    = link_to 'Subscribe to the Dev Mailing List', 'http://groups.google.com/group/artsy-api-developers/subscribe', target: '_blank', class: 'btn btn-default btn-lg', id: 'subscribe_link'
  .p
    By using the API, you agree to our API Terms of Use.

.alert.alert-danger
  Note that the API is in super early beta and is currently available for internal, experimental use only. It's not available for production at this time, has limited scope, and will likely change.

.alert.alert-success
  Please do
  =link_to 'email us', 'mailto:engineering@artsy.net?subject=Artsy%20API%20Feedback'
  and tell us what you want to build or if you have any other feedback. We can't wait to see what you build!

Put the text on two lines, cause prettier.

.jumbotron
  %h1 The Art World in Your App
  .p
    The Artsy API provides access to images of historic artwork and related information on artsy.net for educational and other non-commercial purposes. It's currently available for playing, testing, and learning only, and not for production. Please contact us for all other inquiries.
  .p
    = link_to "Ready? Start Here", start_path, class: 'btn btn-primary btn-lg'
    = link_to 'Subscribe to the Dev Mailing List', 'http://groups.google.com/group/artsy-api-developers/subscribe', target: '_blank', class: 'btn btn-default btn-lg', id: 'subscribe_link'
  .p
    By using the API, you agree to our API Terms of Use.

.alert.alert-danger
  .p
    Note that the API is in super early beta and is currently available for internal, experimental use only.
  .p
    It's not available for production at this time, has limited scope, and will likely change.

.alert.alert-success
  Please do
  =link_to 'email us', 'mailto:engineering@artsy.net?subject=Artsy%20API%20Feedback'
  and tell us what you want to build or if you have any other feedback. We can't wait to see what you build!


.section
  %h1 Service Times
  %table.table.table-condensed.hidden-xs
    %tbody
      %tr
        %td Sunday
        %td 10 AM
        %td Sunday School
      %tr
        %td Sunday
        %td 11 AM
        %td Worship Service
      %tr
        %td Sunday
        %td 6 PM
        %td Evening Worship Service
      %tr
        %td Wednesday
        %td 7 PM
        %td Prayer Service

  %table.table.table-condensed.visible-xs-block
    %tbody
      %tr
        %td Sun 10 AM
        %td Sunday School
      %tr
        %td Sun 11 AM
        %td Worship Service
      %tr
        %td Sun 6 PM
        %td Evening Worship Service
      %tr
        %td Wed 7 PM
        %td Prayer Service

Add intro sentence above service time table

.section
  %h1 Service Times
  %p We meet weekly at the following times:
  %table.table.table-condensed.hidden-xs
    %tbody
      %tr
        %td Sunday
        %td 10 AM
        %td Sunday School
      %tr
        %td Sunday
        %td 11 AM
        %td Worship Service
      %tr
        %td Sunday
        %td 6 PM
        %td Evening Worship Service
      %tr
        %td Wednesday
        %td 7 PM
        %td Prayer Service

  %table.table.table-condensed.visible-xs-block
    %tbody
      %tr
        %td Sun 10 AM
        %td Sunday School
      %tr
        %td Sun 11 AM
        %td Worship Service
      %tr
        %td Sun 6 PM
        %td Evening Worship Service
      %tr
        %td Wed 7 PM
        %td Prayer Service


= f.field_container :shipping_categories do
  = f.label :shipping_category_id, t(:shipping_category)
  = f.collection_select(:shipping_category_id, Spree::ShippingCategory.all, :id, :name, {:include_blank => true}, {:class => 'select2 fullwidth'})
  = f.error_message_on :shipping_category_id

Remove blank option from shipping category dropdown

= f.field_container :shipping_categories do
  = f.label :shipping_category_id, t(:shipping_category)
  = f.collection_select(:shipping_category_id, Spree::ShippingCategory.all, :id, :name, {:include_blank => false}, {:class => 'select2 fullwidth'})
  = f.error_message_on :shipping_category_id


.row.row--leaderboard.is-closed
  .row__inner
    .ad-leaderboard
      #js-ad-leaderboard.ad-leaderboard__inner

Remove is-closed class from leaderboard row.

.row.row--leaderboard
  .row__inner
    .ad-leaderboard
      #js-ad-leaderboard.ad-leaderboard__inner


!!!
%html

    %head
        %meta{ charset: 'UTF-8' }
        %title Hello World!
        = stylesheet_link_tag 'layout'

    %body
        = yield

Use two space indentation in .haml files


%h3 Reduced stock available

%p While you've been shopping, the stock levels for one or more of the products in your cart have reduced. Here's what's changed:

%p{'ng-repeat' => "v in variants"}
  %em {{ v.name_to_display }} - {{ v.unit_to_display }}
  %span{'ng-if' => "v.count_on_hand == 0"}
    is now out of stock.
  %span{'ng-if' => "v.count_on_hand > 0"}
    now only has {{ v.count_on_hand }} remaining.

Add close button to out of stock modal

%a.close-reveal-modal{"ng-click" => "$close()"}
  %i.ofn-i_009-close

%h3 Reduced stock available

%p While you've been shopping, the stock levels for one or more of the products in your cart have reduced. Here's what's changed:

%p{'ng-repeat' => "v in variants"}
  %em {{ v.name_to_display }} - {{ v.unit_to_display }}
  %span{'ng-if' => "v.count_on_hand == 0"}
    is now out of stock.
  %span{'ng-if' => "v.count_on_hand > 0"}
    now only has {{ v.count_on_hand }} remaining.


%article.card.card--single.card--poi.card--poi--tour.js-card.js-single{class: stack_item.image_url ? 'card--small-image card--extended-content' : 'card--no-image' }
  %a.link--wrapper(href="/#{stack_item.slug}")
    = render :partial => '/components/cards/things_to_do/card_tags', :locals => { :stack_item => stack_item }
    - if stack_item.image_url
      %figure.card__hero
        = image_tag(stack_item.image_url, class: 'card__image')
    .card__content
      %span.card__context<
        Tour
      %h1.card__name.js-card-name<
        = stack_item.name
      %p.card__tour-duration.copy--caption<
        = stack_item.duration
      %p.card__description
        = stack_item.card_description
  - if stack_item.bookable?
    %footer.card__footer
      %span.btn.btn--bookable.btn--full-width
        Book now

Fix tours card bookable button


:javascript
  (function(){
    if (window.lp.enhanced === true && window.localStorage.getItem('_lpfont') != "true") {

      window.onload = function() {
        var xhr = new XMLHttpRequest();
        var compiledPath = "#{font_path('fonts.css')}";
        var newPath = "//www.lonelyplanet.com/assets/" + compiledPath.split('/assets/')[1]

        xhr.open('GET', newPath);

        xhr.onload = function (e) {
          window.localStorage.setItem('_lpfont', 'true')
        };

        xhr.send();
      }

    }
  })()

Enable local serve of fonts.css

:javascript
  (function(){
    if (window.lp.enhanced === true && window.localStorage.getItem('_lpfont') != "true") {

      window.onload = function() {
        var xhr = new XMLHttpRequest();
        var compiledPath = "#{font_path('fonts.css')}",
            host = window.location.host;

        if (host == "shop.lonelyplanet.com") {
          host = host.replace(/shop/, 'www');
        }

        xhr.open('GET', "//" + host + "/assets/" + compiledPath.split('/assets/')[1]);

        xhr.onload = function (e) {
          window.localStorage.setItem('_lpfont', 'true')
        };

        xhr.send();
      }

    }
  })()


:plain
  $(".comments").before("#{escape_javascript(render("comments/comment", comment: @comment))}")

Clear the comment input after create.

:plain
  $(".comments").before("#{escape_javascript(render("comments/comment", comment: @comment))}");
  $(".comment_form #comment_body").val("");


- content_for :title, @scraper.full_name
- set_meta_tags description: (!@scraper.description.blank? ? @scraper.description : 'A scraper to collect structured data from the web')

.container
  = sync partial: "show_partial", resource: @scraper, refetch: true

Use new method for the scraper description

- content_for :title, @scraper.full_name
- set_meta_tags description: scraper_description(@scraper)

.container
  = sync partial: "show_partial", resource: @scraper, refetch: true


= form_for @survey do |f|
  .field
    = f.label "Date"
  .field
    = f.label "Shift"
  .field
    = f.label "Time"
  .field
    = f.label "Driver"
  .actions
    = f.submit "Update"

Create instead of update for submit button

= form_for @survey do |f|
  .field
    = f.label "Date"
  .field
    = f.label "Shift"
  .field
    = f.label "Time"
  .field
    = f.label "Driver"
  .actions
    = f.submit "Create"


= div_for user do
  %div{:class => "thread #{cycle('thread-even','thread-odd')}"}
    .logo-in-thread
      = link_logo_image(user, :size => '32', :url => user_path(user), :title => user.name, :class => "logo logo-user")
    .thread-content
      .thread-text
        = simple_form_for :permission, :url => permission_path(permission), :html => { :method => :put } do |f|
          = select :join_request, :role_id, Institution.roles.map { |r| [ t("space.performances.#{r.name.downcase}"), r.id ] }, :selected => permission.role_id
          = f.submit t('_other.update'), :class => "btn btn-small"
      .thread-title
        = link_to(sanitize(user.name),user_path(user),:class=>"unified_user")
        .user-email
          = "(#{user.username}, #{user.email})"

Correct wrong param name in institution permissions view

= div_for user do
  %div{:class => "thread #{cycle('thread-even','thread-odd')}"}
    .logo-in-thread
      = link_logo_image(user, :size => '32', :url => user_path(user), :title => user.name, :class => "logo logo-user")
    .thread-content
      .thread-text
        = simple_form_for :permission, :url => permission_path(permission), :html => { :method => :put } do |f|
          = select :permission, :role_id, Institution.roles.map { |r| [ t("space.performances.#{r.name.downcase}"), r.id ] }, :selected => permission.role_id
          = f.submit t('_other.update'), :class => "btn btn-small"
      .thread-title
        = link_to(sanitize(user.name),user_path(user),:class=>"unified_user")
        .user-email
          = "(#{user.username}, #{user.email})"


.tab-page.partners-tab
  %h2 Our Partners

  %a{href: 'javascript:void(0)', ng: {click: 'openLink("http://www.thoughtworks.com")'}}
    %img.logo{src: 'img/tw_logo.png'}

Put a note in about ThoughtWorks

.tab-page.partners-tab
  %h2 Our Partners

  This app is built on the Jila framework, proudly created by ThoughtWorks.
  %a{href: 'javascript:void(0)', ng: {click: 'openLink("http://www.thoughtworks.com")'}}
    %img.logo{src: 'img/tw_logo.png'}


#main_div
  = render :partial => "layouts/flash_msg"
  - if @record.custom_button_sets.present?
    %hr
      %h3
        = _('Button Groups')
      %table.table.table-bordered.table-hover.table-striped
        %thead
          %th.table-view-pf-select
          %th
            = _('Text')
          %th
            = _('Hover Text')
        %tbody
          - @record.custom_button_sets.each do |obj|
            %tr
              %td.table-view-pf-select
                %i{:class => obj.set_data[:button_icon], :style => obj.set_data.key?(:button_color) ? "color: #{obj.set_data[:button_color]};" : nil}
              %td
                = obj[:name]
              %td
                = obj[:description]
  - if @record.custom_buttons.present?
    = render :partial => 'table_button' , :locals => {:buttons =>  @record.custom_buttons.sort_by{ |button| button.name.downcase }}
:javascript
  $('#searchbox').hide();

Unify sorting in GOD of Button Groups

#main_div
  = render :partial => "layouts/flash_msg"
  - if @record.custom_button_sets.present?
    %hr
      %h3
        = _('Button Groups')
      %table.table.table-bordered.table-hover.table-striped
        %thead
          %th.table-view-pf-select
          %th
            = _('Text')
          %th
            = _('Hover Text')
        %tbody
          - @record.custom_button_sets.sort_by{ |group | group.name }.each do |obj|
            %tr
              %td.table-view-pf-select
                %i{:class => obj.set_data[:button_icon], :style => obj.set_data.key?(:button_color) ? "color: #{obj.set_data[:button_color]};" : nil}
              %td
                = obj[:name]
              %td
                = obj[:description]
  - if @record.custom_buttons.present?
    = render :partial => 'table_button' , :locals => {:buttons =>  @record.custom_buttons.sort_by{ |button| button.name.downcase }}
:javascript
  $('#searchbox').hide();


-# Copyright (C) 2009, 2010, Collaborative Software Initiative
-#
-# This file is part of CSI TriSano Enterprise Edition..

-content_for :title do
  =t('trisano_auth.login')
- form_for @user_session do |form|
  = form.error_messages
  .formList
    %li
      = form.label :user_name, t('trisano_auth.username')
      = form.text_field :user_name
    %li
      = form.label :password, t("trisano_auth.password")
      = form.password_field :password
    %li
      = form.submit(t("trisano_auth.submit"))

Make login page's user name field mobile friendly

-# Copyright (C) 2009, 2010, Collaborative Software Initiative
-#
-# This file is part of CSI TriSano Enterprise Edition..

-content_for :title do
  =t('trisano_auth.login')
- form_for @user_session do |form|
  = form.error_messages
  .formList
    %li
      = form.label :user_name, t('trisano_auth.username')
      = form.text_field :user_name, :autocorrect => "off", :autocapitalize => "off"
    %li
      = form.label :password, t("trisano_auth.password")
      = form.password_field :password
    %li
      = form.submit(t("trisano_auth.submit"))


- sub_nav('Home', path(:asset_library), :root => true)
- sub_nav('All', path(:assets))
- sub_nav('Images', path(:image_assets))
- sub_nav('Documents', path(:document_assets))
- sub_nav('Video', path(:video_assets))
- sub_nav('Audio', path(:audio_assets))

- control('Collection', path(:new, :asset_collection), :new)
- control('Album', path(:new, :asset_album), :new)
- control('Asset', path(:new, :asset), :new)
- control('Bulk Upload', path(:bulk, :assets), :new)

Add icons to the asset library sub-nab.

- sub_nav('Overview', path(:asset_library), :root => true, :class => 'icon-home')
- sub_nav('All', path(:assets), :class => 'icon-th')
- sub_nav('Images', path(:image_assets), :class => 'icon-picture')
- sub_nav('Documents', path(:document_assets), :class => 'icon-doc-text')
- sub_nav('Video', path(:video_assets), :class => 'icon-video')
- sub_nav('Audio', path(:audio_assets), :class => 'icon-music')

- control('Collection', path(:new, :asset_collection), :new)
- control('Album', path(:new, :asset_album), :new)
- control('Asset', path(:new, :asset), :new)
- control('Bulk Upload', path(:bulk, :assets), :new)


!!! 5
%html
  %head
    / Title
    %title= "Watch Tower - #{@title}"

    / Meta tags
    %meta{:charset => "utf-8"}/
    %meta{:content => "IE=edge,chrome=1", "http-equiv" => "X-UA-Compatible"}/
    %meta{:content => "width=device-width,initial-scale=1", :name => "viewport"}/
    %meta{name: 'date_filtering_from', content: session[:date_filtering][:from_date] }/
    %meta{name: 'date_filtering_to', content: session[:date_filtering][:to_date]}/

    / Link tags
    %link{:href => asset_path('application.css'), :rel => "stylesheet"}/

    / Script tahs
    %script{:src => asset_path('application.js')}
  %body
    %section#wrapper

      %header
        #logo
          %a{href: "/"}
            %h1 Watch Tower

      %section#main
        %aside#date
          %input{type: 'text'}
        .page= yield

      %section#footer
        © Copyright 2011
        %a{href: 'https://github.com/TechnoGate', target: '_blank'}
          TechnoGate

Add version number and a few more information.

!!! 5
%html
  %head
    / Title
    %title= "Watch Tower - #{@title}"

    / Meta tags
    %meta{:charset => "utf-8"}/
    %meta{:content => "IE=edge,chrome=1", "http-equiv" => "X-UA-Compatible"}/
    %meta{:content => "width=device-width,initial-scale=1", :name => "viewport"}/
    %meta{name: 'date_filtering_from', content: session[:date_filtering][:from_date] }/
    %meta{name: 'date_filtering_to', content: session[:date_filtering][:to_date]}/

    / Link tags
    %link{:href => asset_path('application.css'), :rel => "stylesheet"}/

    / Script tahs
    %script{:src => asset_path('application.js')}
  %body
    %section#wrapper

      %header
        #logo
          %a{href: "/"}
            %h1 Watch Tower

      %section#main
        %aside#date
          %input{type: 'text'}
        .page= yield

      %section#footer
        %a{href: 'https://github.com/TechnoGate/watch_tower', target: '_blank'}
          WatchTower
        Version
        %a{href: "https://github.com/TechnoGate/watch_tower/tree/v#{WatchTower.version}", target: '_blank'}
          = WatchTower.version
        %br/
        © Copyright 2011
        %a{href: 'https://github.com/TechnoGate', target: '_blank'}
          TechnoGate


%h1 Listing <%= plural_table_name %>

%table
  %tr
<% for attribute in attributes -%>
    %th <%= attribute.human_name %>
<% end -%>
    %th
    %th
    %th

  - @<%= plural_table_name %>.each do |<%= singular_table_name %>|
    %tr
<% for attribute in attributes -%>
      %td= <%= singular_table_name %>.<%= attribute.name %>
<% end -%>
      %td= link_to 'Show', <%= singular_table_name %>
      %td= link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>)
      %td= link_to 'Destroy', <%= singular_table_name %>, :method => :delete, :data => { :confirm => 'Are you sure?' }

%br

= link_to 'New <%= human_name %>', new_<%= singular_table_name %>_path

Add table "tparts" in scaffold

%h1 Listing <%= plural_table_name %>

%table
  %thead
    %tr
  <% for attribute in attributes -%>
      %th <%= attribute.human_name %>
  <% end -%>
      %th
      %th
      %th

  %tbody
    - @<%= plural_table_name %>.each do |<%= singular_table_name %>|
      %tr
  <% for attribute in attributes -%>
        %td= <%= singular_table_name %>.<%= attribute.name %>
  <% end -%>
        %td= link_to 'Show', <%= singular_table_name %>
        %td= link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>)
        %td= link_to 'Destroy', <%= singular_table_name %>, :method => :delete, :data => { :confirm => 'Are you sure?' }

%br

= link_to 'New <%= human_name %>', new_<%= singular_table_name %>_path


#hubs.hubs{"ng-controller" => "HubsCtrl"}
  :javascript
    angular.module('Darkswarm').value('hubs', #{render "json/hubs"})

  .row
    .small-12.columns.text-center
      %h1 Ready to shop?
      %div
        Select a
        %ofn-modal{title: "food hub"}
          = render partial: "modals/food_hub"
        from the list below:
        %p

  #active-table-search.row
    .small-12.columns
      %input{type: :text,
      "ng-model" => "query",
      placeholder: "Search postcode, suburb or hub name...",
      "ng-debounce" => "150",
      "ofn-disable-enter" => true}

  .row{bindonce: true}
    .small-12.columns
      .active_table
        %hub.active_table_node.row{"ng-repeat" => "hub in filteredHubs = (hubs | hubs:query)",
        "ng-class" => "{'closed' : !open(), 'open' : open(), 'inactive' : !hub.active, 'current' : current()}",
        "ng-controller" => "HubNodeCtrl",
        id: "{{hub.hash}}"}
          .small-12.columns
            = render partial: 'home/skinny'
            = render partial: 'home/fat'

      .row{"ng-show" => "filteredHubs.length == 0"}
        .columns.small-12.text-center
          No results

Add search icon into search input on hubs

#hubs.hubs{"ng-controller" => "HubsCtrl"}
  :javascript
    angular.module('Darkswarm').value('hubs', #{render "json/hubs"})

  .row
    .small-12.columns.text-center
      %h1 Ready to shop?
      %div
        Select a
        %ofn-modal{title: "food hub"}
          = render partial: "modals/food_hub"
        from the list below:

  #active-table-search.row.pad-top
    .small-12.columns
      %i.ofn-i_020-search
      %input{type: :text,
      "ng-model" => "query",
      placeholder: "Search postcode, suburb or hub name...",
      "ng-debounce" => "150",
      "ofn-disable-enter" => true}

  .row{bindonce: true}
    .small-12.columns
      .active_table
        %hub.active_table_node.row{"ng-repeat" => "hub in filteredHubs = (hubs | hubs:query)",
        "ng-class" => "{'closed' : !open(), 'open' : open(), 'inactive' : !hub.active, 'current' : current()}",
        "ng-controller" => "HubNodeCtrl",
        id: "{{hub.hash}}"}
          .small-12.columns
            = render partial: 'home/skinny'
            = render partial: 'home/fat'

      .row{"ng-show" => "filteredHubs.length == 0"}
        .columns.small-12.text-center
          No results


- model_class = User
- content_for :actions do
  %li
    = link_to 'edit user', @user, :method => :edit
  %li
    = link_to 'delete user', @user, :method => :delete, :confirm => "Really delete #{@user.name}’s account?"
.page-header
  %h1
    = "Hi, #{@user.name}"
    %small
      Pick Your Poison.

.row
  .col-xs-3.col-sm-2.col-md-1
    = gravatar(@user)
  .col-xs-9.col-sm-10.col-md-11
    %dl.dl-horizontal
      %dt
        = model_class.human_attribute_name(:email)
      %dd
        = @user.email
      %dt
        = model_class.human_attribute_name(:balance)
      %dd
        =m @user.balance

%hr

.row
  = render @drinks, :locals => {:user => @user}

.row
  = render partial: 'bills'

Fix the link to user settings.

- model_class = User
- content_for :actions do
  %li
    = link_to 'edit user', edit_user_path(@user)
  %li
    = link_to 'delete user', @user, :method => :delete, :confirm => "Really delete #{@user.name}’s account?"
.page-header
  %h1
    = "Hi, #{@user.name}"
    %small
      Pick Your Poison.

.row
  .col-xs-3.col-sm-2.col-md-1
    = gravatar(@user)
  .col-xs-9.col-sm-10.col-md-11
    %dl.dl-horizontal
      %dt
        = model_class.human_attribute_name(:email)
      %dd
        = @user.email
      %dt
        = model_class.human_attribute_name(:balance)
      %dd
        =m @user.balance

%hr

.row
  = render @drinks, :locals => {:user => @user}

.row
  = render partial: 'bills'


:javascript
  var MOJ = MOJ || {};

  MOJ.ExpenseReasons = {
    "A": #{ExpenseType::REASON_SET_A.values.to_json},
    "B": #{ExpenseType::REASON_SET_B.values.to_json}
  };

Fix JSON escaping inside HAML/JS templates

- data = { A: ExpenseType::REASON_SET_A.values, B: ExpenseType::REASON_SET_B.values }
:javascript
  var MOJ = MOJ || {};

  MOJ.ExpenseReasons = #{data.to_json.html_safe}


.hidden-xs
  - if current_user
    = link_to new_snippet_path, class: "btn btn-grouped btn-create new-snippet-link", title: "New Snippet" do
      New Snippet
  - if can?(current_user, :update_personal_snippet, @snippet)
    = link_to edit_snippet_path(@snippet), class: "btn btn-grouped snippable-edit" do
      Edit
  - if can?(current_user, :admin_personal_snippet, @snippet)
    = link_to snippet_path(@snippet), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-grouped btn-warning", title: 'Delete Snippet' do
      Delete
- if current_user
  .visible-xs-block.dropdown
    %button.btn.btn-default.btn-block.append-bottom-0.prepend-top-5{ data: { toggle: "dropdown" } }
      Options
      %span.caret
    .dropdown-menu.dropdown-menu-full-width
      %ul
        %li
          = link_to new_snippet_path, title: "New Snippet" do
            New Snippet
        - if can?(current_user, :update_personal_snippet, @snippet)
          %li
            = link_to edit_snippet_path(@snippet) do
              Edit
        - if can?(current_user, :admin_personal_snippet, @snippet)
          %li
            = link_to snippet_path(@snippet), method: :delete, data: { confirm: "Are you sure?" }, title: 'Delete Snippet' do
              Delete

Use btn-danger for delete button.

.hidden-xs
  - if current_user
    = link_to new_snippet_path, class: "btn btn-grouped btn-create new-snippet-link", title: "New Snippet" do
      New Snippet
  - if can?(current_user, :update_personal_snippet, @snippet)
    = link_to edit_snippet_path(@snippet), class: "btn btn-grouped snippable-edit" do
      Edit
  - if can?(current_user, :admin_personal_snippet, @snippet)
    = link_to snippet_path(@snippet), method: :delete, data: { confirm: "Are you sure?" }, class: "btn btn-grouped btn-danger", title: 'Delete Snippet' do
      Delete
- if current_user
  .visible-xs-block.dropdown
    %button.btn.btn-default.btn-block.append-bottom-0.prepend-top-5{ data: { toggle: "dropdown" } }
      Options
      %span.caret
    .dropdown-menu.dropdown-menu-full-width
      %ul
        %li
          = link_to new_snippet_path, title: "New Snippet" do
            New Snippet
        - if can?(current_user, :update_personal_snippet, @snippet)
          %li
            = link_to edit_snippet_path(@snippet) do
              Edit
        - if can?(current_user, :admin_personal_snippet, @snippet)
          %li
            = link_to snippet_path(@snippet), method: :delete, data: { confirm: "Are you sure?" }, title: 'Delete Snippet' do
              Delete


- cache [contact, '#splash#social'] do
  %section#social-media
    .container
      .row
        .col-md-12.text-center
          - if contact.blog?
            = link_to "#{ contact.blog }" do
              %i.fa-solid.fa-square-rss.fa-4x
          - if contact.facebook?
            = link_to "#{ contact.facebook }" do
              %i.fa-solid.fa-facebook.fa-4x
          - if contact.twitter?
            = link_to "#{ contact.twitter }" do
              %i.fa-solid.fa-twitter.fa-4x
          - if contact.instagram?
            = link_to "#{ contact.instagram }" do
              %i.fa-solid.fa-instagram.fa-4x
          - if contact.googleplus?
            = link_to "#{ contact.googleplus }" do
              %i.fa-solid.fa-google-plus.fa-4x
          - if contact.mastodon?
            = link_to "#{ contact.mastodon }" do
              %i.fa-solid.fa-mastodon.fa-4x
          - if contact.youtube?
            = link_to "#{ contact.youtube }" do
              %i.fa-solid.fa-youtube.fa-4x
          - if contact.email?
            = mail_to "#{ contact.email }" do
              %i.fa-solid.fa-envelope.fa-4x

Use the correct fonts for social media

- cache [contact, '#splash#social'] do
  %section#social-media
    .container
      .row
        .col-md-12.text-center
          - if contact.blog?
            = link_to "#{ contact.blog }" do
              %i.fa-solid.fa-square-rss.fa-4x
          - if contact.facebook?
            = link_to "#{ contact.facebook }" do
              %i.fa-brand.fa-facebook.fa-4x
          - if contact.twitter?
            = link_to "#{ contact.twitter }" do
              %i.fa-brand.fa-twitter.fa-4x
          - if contact.instagram?
            = link_to "#{ contact.instagram }" do
              %i.fa-brand.fa-instagram.fa-4x
          - if contact.googleplus?
            = link_to "#{ contact.googleplus }" do
              %i.fa-brand.fa-google-plus.fa-4x
          - if contact.mastodon?
            = link_to "#{ contact.mastodon }" do
              %i.fa-brand.fa-mastodon.fa-4x
          - if contact.youtube?
            = link_to "#{ contact.youtube }" do
              %i.fa-brand.fa-youtube.fa-4x
          - if contact.email?
            = mail_to "#{ contact.email }" do
              %i.fa-solid.fa-envelope.fa-4x


= render 'sign_in_to_apply'
%ul.fa-ul
  - if offer.published?
    %li
      = fa_icon('calendar li fw')
      = t('offers.published_time_ago', time: time_ago_in_words(offer.published_at))
  %li
    = fa_icon('money li')
    != salary_and_wage_for(offer)
  %li= fa_icon('map-marker li', text: offer.location.to_s)
  - if offer.contact_email.present?
    %li
      = fa_icon('envelope li')
      = link_to add_soft_break_to_email(offer.contact_email), "mailto:#{offer.contact_email}"
  - if offer.contact_phone.present?
    %li
      = fa_icon('phone li')
      = offer.contact_phone
  %li
    = fa_icon('eye li')
    = t('offers.view_count', count: offer.views)
  %li
    - if logged_in? && current_user.id == offer.company_id
      = link_to offer_applications_path(offer) do
        = fa_icon('user li')
        = offer.applicant_count_in_words
    - else
      = fa_icon('user li')
      = offer.applicant_count_in_words

Remove applicant count from offer details


.md-area
  .md-header
    %ul.nav-links.clearfix
      %li.active
        %a.js-md-write-button{ href: "#md-write-holder", tabindex: -1 }
          Write
      %li
        %a.js-md-preview-button{ href: "#md-preview-holder", tabindex: -1 }
          Preview

      - if @issue.confidential?
        %li.confidential-issue-warning
          = icon('warning')
          %span This is a confidential issue. Your comment will not be visible to the public.

      %li.pull-right
        %button.zen-control.zen-control-full.js-zen-enter{ type: 'button', tabindex: -1 }
          Go full screen

  .md-write-holder
    = yield
  .md.md-preview-holder.js-md-preview.hide{class: (preview_class if defined?(preview_class))}

  - if defined?(referenced_users) && referenced_users
    %div.referenced-users.hide
      %span
        = icon('exclamation-triangle')
        You are about to add
        %strong
          %span.js-referenced-users-count 0
          people
        to the discussion. Proceed with caution.

Fix error on non-issue pages with comment areas.

.md-area
  .md-header
    %ul.nav-links.clearfix
      %li.active
        %a.js-md-write-button{ href: "#md-write-holder", tabindex: -1 }
          Write
      %li
        %a.js-md-preview-button{ href: "#md-preview-holder", tabindex: -1 }
          Preview

      - if defined?(@issue) && @issue.confidential?
        %li.confidential-issue-warning
          = icon('warning')
          %span This is a confidential issue. Your comment will not be visible to the public.

      %li.pull-right
        %button.zen-control.zen-control-full.js-zen-enter{ type: 'button', tabindex: -1 }
          Go full screen

  .md-write-holder
    = yield
  .md.md-preview-holder.js-md-preview.hide{class: (preview_class if defined?(preview_class))}

  - if defined?(referenced_users) && referenced_users
    %div.referenced-users.hide
      %span
        = icon('exclamation-triangle')
        You are about to add
        %strong
          %span.js-referenced-users-count 0
          people
        to the discussion. Proceed with caution.


- if devise_mapping.omniauthable? && MnoEnterprise.style.devise.omniauth_link_shown
  .sign-in-using
    = t('mno_enterprise.auth.shared.links.or_sign_in_using')
  .oauth-sso
    - resource_class.omniauth_providers.each do |provider|
      - if provider.to_s == 'intuit'
        = link_to "", omniauth_authorize_path(resource_name, provider), class: "omniauth intuit"
      - else
        = link_to(omniauth_authorize_path(resource_name, provider), class: "omniauth") do
          %i{class: "fa fa-#{provider}"}

Fix SSO links when no providers configured

- if devise_mapping.omniauthable? && MnoEnterprise.style.devise.omniauth_link_shown && resource_class.omniauth_providers.any?
  .sign-in-using
    = t('mno_enterprise.auth.shared.links.or_sign_in_using')
  .oauth-sso
    - resource_class.omniauth_providers.each do |provider|
      - if provider.to_s == 'intuit'
        = link_to "", omniauth_authorize_path(resource_name, provider), class: "omniauth intuit"
      - else
        = link_to(omniauth_authorize_path(resource_name, provider), class: "omniauth") do
          %i{class: "fa fa-#{provider}"}


=form_tag search_path, method: "get", class: "search-form form-inline" do
  %label.sr-only{for: "query"} Search
  .input-group.col-sm-12.col-md-9.col-lg-8
    = hidden_field_tag :type, @type
    %input.form-control#query{required: "required", type: "search", maxlength: "256", name: "q", value: "#{@q if !@q.blank?}"}/
    .input-group-btn
      %button.btn.btn-primary{type: "submit"} Search
  - if @q.blank?
    %p.search-suggestions
      Try #{link_to "parliament", search_path(q: "parliament")},
      #{ link_to "gov.uk", search_path(q: "gov.uk")} or
      #{ link_to "slovakia", search_path(q: "slovakia")}

Maintain filter settings when submiting new search

=form_tag search_path, method: "get", class: "search-form form-inline" do
  %label.sr-only{for: "query"} Search
  .input-group.col-sm-12.col-md-9.col-lg-8
    = hidden_field_tag :type, @type
    = hidden_field_tag :show, @show
    %input.form-control#query{required: "required", type: "search", maxlength: "256", name: "q", value: "#{@q if !@q.blank?}"}/
    .input-group-btn
      %button.btn.btn-primary{type: "submit"} Search
  - if @q.blank?
    %p.search-suggestions
      Try #{link_to "parliament", search_path(q: "parliament")},
      #{ link_to "gov.uk", search_path(q: "gov.uk")} or
      #{ link_to "slovakia", search_path(q: "slovakia")}


- project = local_assigns.fetch(:project)

= content_for :flash_message do
  = render partial: 'deletion_failed', locals: { project: project }
  - if current_user && can?(current_user, :download_code, project)
    = render 'shared/no_ssh'
    = render 'shared/no_password'
    - unless project.empty_repo?
      = render 'shared/auto_devops_implicitly_enabled_banner', project: project

Resolve CE/EE diffs in _flash_messages

- project = local_assigns.fetch(:project)

= content_for :flash_message do
  = render partial: 'deletion_failed', locals: { project: project }
  - if current_user && can?(current_user, :download_code, project)
    = render 'shared/no_ssh'
    = render 'shared/no_password'
    - unless project.empty_repo?
      = render 'shared/auto_devops_implicitly_enabled_banner', project: project
    = render_if_exists 'projects/above_size_limit_warning', project: project


%h2= t_title

= semantic_form_for @salary, :url => new_salary_path, :method => :get do |f|
  = f.semantic_errors

  = f.inputs do
    = f.input :employee, :as => :combobox
    = f.input :duration_from, :discard_day => true, :start_year => Time.now.year - 2, :end_year => Time.now.year + 1, :include_blank => false

  = f.buttons do
    = f.commit_button

Use standard date_field for salary duration field.

%h2= t_title

= semantic_form_for @salary, :url => new_salary_path, :method => :get do |f|
  = f.semantic_errors

  = f.inputs do
    .row
      .span8= f.input :employee, :as => :combobox
    .row
      .span8= f.input :duration_from, :as => :date_field

  = f.buttons do
    = f.commit_button


!!!
%html
  %head
    %title Tahi
    = stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true
    = javascript_include_tag "application", "data-turbolinks-track" => true
    = csrf_meta_tags
  %body
    #overlay{style: 'display: none'}
      %header
        %a.btn.btn-primary.close-overlay{href: "#"} Close
      %main
      %footer
        %a.btn.btn-primary.close-overlay{href: "#"} Close

    #nav-container
      %nav#nav-bar
        %header
          = link_to root_path do
            %i.glyphicon.glyphicon-home
            Tahi
        %section
          %ul
            %li.nav-bar-item= active_link_to 'Dashboard', root_path
            - if current_user && current_user.admin?
              %li.nav-bar-item= active_link_to 'Admin', admin_users_path
          %ul
            - if current_user
              %li.nav-bar-text= link_to 'Sign out', destroy_user_session_path, method: :delete
              %li.nav-bar-text Welcome back, #{current_user.username}

    .container
      %p.notice= notice
      %p.alert= alert
      = yield

Hide link to dashboard when not signed in

!!!
%html
  %head
    %title Tahi
    = stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true
    = javascript_include_tag "application", "data-turbolinks-track" => true
    = csrf_meta_tags
  %body
    #overlay{style: 'display: none'}
      %header
        %a.btn.btn-primary.close-overlay{href: "#"} Close
      %main
      %footer
        %a.btn.btn-primary.close-overlay{href: "#"} Close

    #nav-container
      %nav#nav-bar
        %header
          = link_to root_path do
            %i.glyphicon.glyphicon-home
            Tahi
        %section
          %ul
            - if current_user
              %li.nav-bar-item= active_link_to 'Dashboard', root_path
              - if current_user.admin?
                %li.nav-bar-item= active_link_to 'Admin', admin_users_path
          %ul
            - if current_user
              %li.nav-bar-text= link_to 'Sign out', destroy_user_session_path, method: :delete
              %li.nav-bar-text Welcome back, #{current_user.username}

    .container
      %p.notice= notice
      %p.alert= alert
      = yield


.row
  .col-md-12
    .panel.panel-default
      .panel-body
        = haml :'partials/search'
      %table.table.table-striped
        %thead
          %tr
            %th User email
            %th Action
            %th IP Address
            %th Browser
            %th Device
            %th Platform
            %th Created at
        %tbody
          - if list.count > 0
            - list.all.each do |entity|
              %tr
                %td
                  -if entity.user
                    %a{ href: "#{settings.map_path}/users/#{entity.user.id}" }= entity.user.email
                  -else
                    None
                %td= entity.action
                %td= entity.ip_address
                %td= entity.browser
                %td= entity.device
                %td= entity.platform
                %td= entity.created_at.strftime('%Y-%m-%d %H:%M:%S')
          - else
            %tr
              %td.text-center{ colspan: 4 } No records

=pagination(list, base_path)

Check for unknown audit log values

.row
  .col-md-12
    .panel.panel-default
      .panel-body
        = haml :'partials/search'
      %table.table.table-striped
        %thead
          %tr
            %th User email
            %th Action
            %th Details
            %th IP Address
            %th Browser
            %th Device
            %th Platform
            %th Created at
        %tbody
          - if list.count > 0
            - list.all.each do |entity|
              %tr
                %td
                  -if entity.user
                    %a{ href: "#{settings.map_path}/users/#{entity.user.id}" }= entity.user.email
                  -else
                    None
                %td= entity.action
                %td= entity.details
                %td= entity.ip_address || 'Unknown'
                %td= entity.browser || 'Unknown'
                %td= entity.device || 'Unknown'
                %td= entity.platform || 'Unknown'
                %td= entity.created_at&.strftime('%Y-%m-%d %H:%M:%S') || 'Unknown'
          - else
            %tr
              %td.text-center{ colspan: 4 } No records

=pagination(list, base_path)


.content#commentaires_flux{style:'width:100%;'}
  %div#commentaire_new{style: 'width:80%; margin-left:auto; margin-right:auto'}
    = form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: @facade.dossier.id }), class: 'form-inline', method: 'POST') do
      %textarea.form-control{id: 'texte_commentaire', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', maxlength: '255', placeholder:"Dialoguer avec votre interlocuteur privilégié en charge de votre dossier."}
      %input.form-control.btn.btn-success{:type => 'submit', :value => 'Poster', style: 'float:right'}
  %br
  %br

  -@facade.commentaires.each do |com|
    %span.text-info#email_contact{style: 'font-weight:bold'}
      =com.email
    %span#created_at
      \-
      =com.created_at_fr
    %br
    .description#body
      =com.body
    %br

Delete max length on comment area

.content#commentaires_flux{style:'width:100%;'}
  %div#commentaire_new{style: 'width:80%; margin-left:auto; margin-right:auto'}
    = form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: @facade.dossier.id }), class: 'form-inline', method: 'POST') do
      %textarea.form-control{id: 'texte_commentaire', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', placeholder:"Dialoguer avec votre interlocuteur privilégié en charge de votre dossier."}
      %input.form-control.btn.btn-success{:type => 'submit', :value => 'Poster', style: 'float:right'}
  %br
  %br

  -@facade.commentaires.each do |com|
    %span.text-info#email_contact{style: 'font-weight:bold'}
      =com.email
    %span#created_at
      \-
      =com.created_at_fr
    %br
    .description#body
      =com.body
    %br


.group
  .group-heading{style: "background-image: url(#{asset_path 'cover-photo-gradient-card.png'}), url('#{image_url group.cover_photo.url(:card)}')"}
    .group-logo{style: "background-image: url('#{image_url group.logo.url(:card)}')"}

    -if group.category.present?
      .group-category.shadow
        =link_to t(group.category.translatable_name), category_explore_path(group.category)

    .group-title
      %h1.shadow=link_to group.full_name, group

  .group-description
    .logo-placeholder
    = render_rich_text group.description

  .group-content
    %ul.discussion-list
      -group.discussions.visible_to_public.not_by_helper_bot.preload(:most_recent_motion).last(5).each do |discussion|
        - if discussion.most_recent_motion.present?
          = render 'motion_line_item', item: discussion.most_recent_motion
        -else
          = render 'discussion_line_item', item: discussion

Truncate long group names in /explore

.group
  .group-heading{style: "background-image: url(#{asset_path 'cover-photo-gradient-card.png'}), url('#{image_url group.cover_photo.url(:card)}')"}
    .group-logo{style: "background-image: url('#{image_url group.logo.url(:card)}')"}

    -if group.category.present?
      .group-category.shadow
        =link_to t(group.category.translatable_name), category_explore_path(group.category)

    .group-title
      %h1.shadow=link_to group.full_name.truncate(50), group

  .group-description
    .logo-placeholder
    = render_rich_text group.description

  .group-content
    %ul.discussion-list
      -group.discussions.visible_to_public.not_by_helper_bot.preload(:most_recent_motion).last(5).each do |discussion|
        - if discussion.most_recent_motion.present?
          = render 'motion_line_item', item: discussion.most_recent_motion
        -else
          = render 'discussion_line_item', item: discussion


- form_for :search, @search do |f|
  = f.error_messages

  %p
    = f.label :location_id, '1.) Select a location'
    = collection_select(:search, :location_id, Location.all, :location_id, :name, {:prompt => "Please select a location"})

  %p
    = f.label :sheltered, '2.) Put weather into consideration?'
    = f.check_box :sheltered

  %p
    = f.label :submit, '3.)'
    = f.submit 'Where should I have lunch?'

- if @current_conditions
  %section.current_conditions
    %h2
      = image_tag WEATHER_ICON_ROOT_PATH+@current_conditions.icon, :alt => @current_conditions.condition
      Current Weather Conditions
    %p
      %strong Condition:
      = h @current_conditions.condition
    %p
      %strong Temp:
      = h @current_conditions.temp_c + '°C'
    %p
      %strong Wind:
      = h @current_conditions.wind_condition.sub /Wind: /, ''
    %p
      %strong Humidity:
      = h @current_conditions.humidity.sub /Humidity: /, ''

- if @venue
  %h2 Venue Information
  %p
    %label Venue Name:
    = h @venue.name
  %p
    = h @venue.comments
  = map_canvas("map_canvas", @venue.address)

Add section markup for venue info. Remove invalid <label/> usage.

- form_for :search, @search do |f|
  = f.error_messages

  %p
    = f.label :location_id, '1.) Select a location'
    = collection_select(:search, :location_id, Location.all, :location_id, :name, {:prompt => "Please select a location"})

  %p
    = f.label :sheltered, '2.) Put weather into consideration?'
    = f.check_box :sheltered

  %p
    = f.label :submit, '3.)'
    = f.submit 'Where should I have lunch?'

- if @current_conditions
  %section.current_conditions
    %h2
      = image_tag WEATHER_ICON_ROOT_PATH+@current_conditions.icon, :alt => @current_conditions.condition
      Current Weather Conditions
    %p
      %strong Condition:
      = h @current_conditions.condition
    %p
      %strong Temp:
      = h @current_conditions.temp_c + '°C'
    %p
      %strong Wind:
      = h @current_conditions.wind_condition.sub /Wind: /, ''
    %p
      %strong Humidity:
      = h @current_conditions.humidity.sub /Humidity: /, ''

- if @venue
  %section.venue
    %h2 Venue Information
    %p
      %strong Venue Name:
      = h @venue.name
    %p
      = h @venue.comments
    = map_canvas("map_canvas", @venue.address)


%main.row
  .cell.well.well--l
    .js-search
      .split
        .split-cell.form.form--inline
          = form_tag articles_path, method: :get, remote: true, class: 'js-search-form' do
            = search_field_tag :search, params[:search],
              class: 'form-input js-search-input',
              placeholder: 'Search articles by keyword',
              autofocus: true
        .split-cell.mlxs
          = link_to "Fresh", fresh_articles_path, class: "btn #{action_name == 'fresh' ? 'btn--b' : ''}"
          = link_to "Stale", stale_articles_path, class: "btn #{action_name == 'stale' ? 'btn--b' : ''}"
          = link_to "Rotten", rotten_articles_path, class: "btn #{action_name == 'rotten' ? 'btn--b' : ''}"

      %ul.list.list--xs.js-search-results
        = render @articles

Add link to article endorsements & subscriptions

%main.row
  .cell.well.well--l
    .js-search
      .split
        .split-cell.form.form--inline
          = form_tag articles_path, method: :get, remote: true, class: 'js-search-form' do
            = search_field_tag :search, params[:search],
              class: 'form-input js-search-input',
              placeholder: 'Search articles by keyword',
              autofocus: true
        .split-cell.mlxs
          = link_to "Fresh", fresh_articles_path, class: "btn #{action_name == 'fresh' ? 'btn--b' : ''}"
          = link_to "Stale", stale_articles_path, class: "btn #{action_name == 'stale' ? 'btn--b' : ''}"
          = link_to "Rotten", rotten_articles_path, class: "btn #{action_name == 'rotten' ? 'btn--b' : ''}"

      %ul.list.list--xs.js-search-results
        = render @articles

    .split.mtm.mbm.fr
      .split-cell
        = link_to "Article Subscriptions", subscriptions_path, class: "btn btn--b mls"
        = link_to "Article Endorsements", endorsements_path, class: "btn btn--b mls"


.well
  .post
    .row
      .span1
        = render :partial => "shared/avatar", :locals => { :member => post.author }
      .span7
        - if defined?(subject)
          %h3= link_to strip_tags(post.subject), post

        .post-meta
          %p
            Posted by
            = link_to post.author.login_name, member_path(post.author)
            - if post.forum
              in
              = link_to post.forum, post.forum
            at
            = post.created_at

        .post-body
          :markdown
            #{ strip_tags post.body }

        - unless defined?(hide_comments)
          .post-comments
            = pluralize(post.comments.count, "comment")
            = link_to "Read", post
            %br
            = link_to "Comment", new_comment_path(:post_id => post.id)

Use a ul.inline for "N comments | Comment" links.

.well
  .post
    .row
      .span1
        = render :partial => "shared/avatar", :locals => { :member => post.author }
      .span7
        - if defined?(subject)
          %h3= link_to strip_tags(post.subject), post

        .post-meta
          %p
            Posted by
            = link_to post.author.login_name, member_path(post.author)
            - if post.forum
              in
              = link_to post.forum, post.forum
            at
            = post.created_at

        .post-body
          :markdown
            #{ strip_tags post.body }

        - unless defined?(hide_comments)
          .post-comments
            %ul.inline
              %li= link_to pluralize(post.comments.count, "comment"), post
              %li= link_to "Comment", new_comment_path(:post_id => post.id)


.footer{style: 'text-align:center;'}
  %p<
  Math Support Finder™ is a trademark of
  = link_to "Beneficent Technology, Inc.", 'http://benetech.org', target: "_blank"
  This website is copyright © 2015 - 2016, Beneficent Technology, Inc.

Remove inline style for footer.

.footer
  %p<
  Math Support Finder™ is a trademark of
  = link_to "Beneficent Technology, Inc.", 'http://benetech.org', target: "_blank"
  This website is copyright © 2015 - 2016, Beneficent Technology, Inc.


.row
  .six.columns
    %a{:href => root_url(:subdomain => false)}
      = image_tag('courseware.png', :alt => 'The Courseware Project')
  .six.columns.align-right
    - if logged_in?
      .small.button.dropdown.naked
        %a{:href => '#'}
          .avatar
            = gravatar_image_tag(current_user.email, :alt => current_user.name, :gravatar => {:size => 32})
        %span
        %ul
          - if logged_in?
            %li
              = link_to _('Dashboard'), dashboard_home_url(:subdomain => false)
            %li
              = link_to _('Profile'), me_users_url(:subdomain => false)
            %li
              = link_to _('Logout'), logout_url(:subdomain => false)

Add invitation item to the top menu.

.row
  .six.columns
    %a{:href => root_url(:subdomain => false)}
      = image_tag('courseware.png', :alt => 'The Courseware Project')
  .six.columns.align-right
    - if logged_in?
      .small.button.dropdown.naked
        %a{:href => '#'}
          .avatar
            = gravatar_image_tag(current_user.email, :alt => current_user.name, :gravatar => {:size => 32})
        %span
        %ul
          - if logged_in?
            %li
              = link_to _('Dashboard'), dashboard_home_url(:subdomain => false)
            %li
              = link_to _('Profile'), me_users_url(:subdomain => false)
            %li
              = link_to _('Invite a friend'), invite_users_url(:subdomain => false)
            %li
              = link_to _('Logout'), logout_url(:subdomain => false)


.page-header
  %h1= t_title

%ul.tabs
  %li.active= link_to "Kontakte (#{@people.count})", '#contacts-tab'
  %li= link_to "Rechnungen (#{@invoices.count})", '#invoices-tab'

.tab-content
  #contacts-tab.active= render 'list', :records => @people
  #invoices-tab= render 'list', :records => @invoices

Use invoices/list for invoice results in search view.

.page-header
  %h1= t_title

%ul.tabs
  %li.active= link_to "Kontakte (#{@people.count})", '#contacts-tab'
  %li= link_to "Rechnungen (#{@invoices.count})", '#invoices-tab'

.tab-content
  #contacts-tab.active= render 'list', :records => @people
  #invoices-tab= render 'invoices/list', :collection => @invoices


#form_div
  #basic_info_div
  = render :partial => "layouts/flash_msg"
  %table.table.table-bordered.table-striped
    %thead
      %tr
        %th{:colspan => "2"}= _('Details')
    %tbody
      - {:name        => _("Name"),
         :description => _("Description"),
         :draft       => _("Draft"),
         :read_only   => _("Read Only"),
         :orderable?  => _("Orderable"),
         :created_at  => _("Created On"),
         :updated_at  => _("Updated On")}.each do |sym, label|
        %tr
          %td.label
            = label
          %td
            - case sym
            - when :draft, :orderable?
              = @record.orchestration_template.send(sym) ? _("True") : _("False")
            - when :read_only
              = @record.orchestration_template.in_use? ? _("True") : _("False")
            - else
              = @record.orchestration_template.send(sym)

  - if @record.orchestration_template.content
    %hr
    #form_div
      = text_area_tag("template_content", @record.orchestration_template.content, :style => "display:none;")
      = render :partial => "/layouts/my_code_mirror",
        :locals => {:text_area_id => "template_content",
                    :mode         => "yaml",
                    :line_numbers => true,
                    :read_only    => true}
      :javascript
        ManageIQ.editor.refresh();

Fix Orchestration stack summary screen styling

#form_div
  #basic_info_div
  = render :partial => "layouts/flash_msg"
  %table.table.table-bordered.table-striped.table-summary-screen
    %thead
      %tr
        %th{:colspan => "2"}= _('Details')
    %tbody
      - {:name        => _("Name"),
         :description => _("Description"),
         :draft       => _("Draft"),
         :read_only   => _("Read Only"),
         :orderable?  => _("Orderable"),
         :created_at  => _("Created On"),
         :updated_at  => _("Updated On")}.each do |sym, label|
        %tr
          %td.label
            = label
          %td
            - case sym
            - when :draft, :orderable?
              = @record.orchestration_template.send(sym) ? _("True") : _("False")
            - when :read_only
              = @record.orchestration_template.in_use? ? _("True") : _("False")
            - else
              = @record.orchestration_template.send(sym)

  - if @record.orchestration_template.content
    %hr
    #form_div
      = text_area_tag("template_content", @record.orchestration_template.content, :style => "display:none;")
      = render :partial => "/layouts/my_code_mirror",
        :locals => {:text_area_id => "template_content",
                    :mode         => "yaml",
                    :line_numbers => true,
                    :read_only    => true}
      :javascript
        ManageIQ.editor.refresh();


:markdown
  # # Big title
  ## ## Medium title
  ### ### Small title

  * `*italic*` => *italic*
  * `**bold**` => **bold**
  * `[link](http://example.com)` => [link](http://example.com)
  * `![image](http://image.jpg)` => displays the image in the URL
  * `<email@example.com>` – <email@example.com> (a link to a mail address)

  ## Lists

  Bulleted list (`*` transforms into • ):

      * this
      * is a
      * bulleted
      * list

  Numbered list:

      1. this
      2. is a
      3. numbered
      4. list

  ## Paragraphs

  You separate paragraphs with an empty new line:

      This is one paragraph.

      This is another paragraph.

  To make a line break (without making a new paragraph), use `<br>`:

      This is one line<br>
      Which I wanted to break.

Update markdown reference with quotations

:markdown
  # # Big title
  ## ## Medium title
  ### ### Small title

  * `*italic*` => *italic*
  * `**bold**` => **bold**
  * `[link](http://example.com)` => [link](http://example.com)
  * `![image](http://image.jpg)` => displays the image in the URL
  * `<email@example.com>` – <email@example.com> (a link to a mail address)

  Lists
  --------

  Bulleted list (`*` transforms into • ):

      * this
      * is a
      * bulleted
      * list

  Numbered list:

      1. this
      2. is a
      3. numbered
      4. list

  Paragraphs
  ----------

  You separate paragraphs with an empty new line:

      This is one paragraph.

      This is another paragraph.

  To make a line break (without making a new paragraph), use `<br>`:

      This is one line<br>
      Which I wanted to break.

  Quotations
  ----------

  In order to make a quotation, put a ">" in the beginning of the paragraph:

      > The world is a dangerous place to live; not because of the people who are evil, but because of the people who don't do anything about it.

  And you get some quotation-looking text:

  > The world is a dangerous place to live; not because of the people who are evil, but because of the people who don't do anything about it.


- unless @cookies_preferences_set
  .govuk-cookie-banner{ role: 'region', 'aria-label': t('.title'), 'tab-index': '-1' }
    .govuk-cookie-banner__message.govuk-width-container

      .govuk-grid-row
        .govuk-grid-column-two-thirds
          %h2.govuk-cookie-banner__heading.govuk-heading-m
            = t('.title')

          .govuk-cookie-banner__content
            = t('.content_html')

      .govuk-button-group
        = govuk_link_button(t('.accept_button'), '?usage_opt_in=true&show_confirmation=true')
        = govuk_link_button(t('.reject_button'), '?usage_opt_in=false&show_confirmation=true')

        = govuk_link_to(t('.view_cookies'), cookies_path)

- if @show_confirm_banner == "true"
  .govuk-cookie-banner{ role: 'alert', 'aria-label': t('.title'), 'tab-index': '-1' }
    .govuk-cookie-banner__confirmation.govuk-width-container
      .govuk-grid-row
        .govuk-grid-column-two-thirds

          .govuk-cookie-banner__content
            = t('.cookie_confirmation_html', link: cookies_path)

      .govuk-button-group
        = govuk_link_button(t('.hide_button'), '?show_confirmation=false')

Add data-nosnippet attribute to cookie banner

- unless @cookies_preferences_set
  .govuk-cookie-banner{ role: 'region', 'aria-label': t('.title'), 'tab-index': '-1', 'data-nosnippet': true }
    .govuk-cookie-banner__message.govuk-width-container

      .govuk-grid-row
        .govuk-grid-column-two-thirds
          %h2.govuk-cookie-banner__heading.govuk-heading-m
            = t('.title')

          .govuk-cookie-banner__content
            = t('.content_html')

      .govuk-button-group
        = govuk_link_button(t('.accept_button'), '?usage_opt_in=true&show_confirmation=true')
        = govuk_link_button(t('.reject_button'), '?usage_opt_in=false&show_confirmation=true')

        = govuk_link_to(t('.view_cookies'), cookies_path)

- if @show_confirm_banner == "true"
  .govuk-cookie-banner{ role: 'alert', 'aria-label': t('.title'), 'tab-index': '-1', 'data-nosnippet': true }
    .govuk-cookie-banner__confirmation.govuk-width-container
      .govuk-grid-row
        .govuk-grid-column-two-thirds

          .govuk-cookie-banner__content
            = t('.cookie_confirmation_html', link: cookies_path)

      .govuk-button-group
        = govuk_link_button(t('.hide_button'), '?show_confirmation=false')


/ %h2= t('.title')

= comfy_form_for @page, :as => :page, label_col: "form__label-heading", control_col: "form__input-wrapper", :url => {:action => :create}, :html => {:multipart => true, :autocomplete => 'off'} do |form|
  = render form

Remove title from new view


- @no_container = true

- page_title @path.presence || "Files", @ref
= content_for :meta_tags do
  - if current_user
    = auto_discovery_link_tag(:atom, namespace_project_commits_url(@project.namespace, @project, @ref, format: :atom, private_token: current_user.private_token), title: "#{@project.name}:#{@ref} commits")
= render 'projects/last_push'
= render "projects/commits/head"

%div{ class: container_class }
  .tree-controls
    = render 'projects/find_file_link'
    = render 'projects/buttons/download', project: @project, ref: @ref

  #tree-holder.tree-holder.clearfix
    .nav-block
      = render 'projects/tree/tree_header', tree: @tree

    = render 'projects/tree/tree_content', tree: @tree

Move create MR banner below subnav

- @no_container = true

- page_title @path.presence || "Files", @ref
= content_for :meta_tags do
  - if current_user
    = auto_discovery_link_tag(:atom, namespace_project_commits_url(@project.namespace, @project, @ref, format: :atom, private_token: current_user.private_token), title: "#{@project.name}:#{@ref} commits")
= render "projects/commits/head"
= render 'projects/last_push'

%div{ class: container_class }
  .tree-controls
    = render 'projects/find_file_link'
    = render 'projects/buttons/download', project: @project, ref: @ref

  #tree-holder.tree-holder.clearfix
    .nav-block
      = render 'projects/tree/tree_header', tree: @tree

    = render 'projects/tree/tree_content', tree: @tree


- if fee.fee_type.requires_dates_attended?
  .dates-wrapper.form-group
    %div
      - fee.dates_attended.build unless fee.dates_attended.any?
      = f.fields_for :dates_attended do |date_attended|
        -# TODO: Numbering, the implementation used on fees will not work here.
        = render partial: 'date_attended_fields', locals: { f: date_attended, submodel_count: date_attended.index+1, parent_model_prefix: "basic_fee_#{@basic_fee_count}", locale_scope: 'external_users.claims.basic_fees.basic_fee_fields_primary.date_label' }

    = link_to_add_association t('.add_dates'), f, :dates_attended, class: 'form-group', partial: 'date_attended_fields', render_options: { locals: { } }, data: {'association-insertion-method' => 'append', 'association-insertion-node' => 'div', 'association-insertion-traversal' => 'prev'}

Add messy conditional logic for fee scheme

- if fee.fee_type.requires_dates_attended? && !fee.claim.agfs_reform?
  .dates-wrapper.form-group
    %div
      - fee.dates_attended.build unless fee.dates_attended.any?
      = f.fields_for :dates_attended do |date_attended|
        -# TODO: Numbering, the implementation used on fees will not work here.
        = render partial: 'date_attended_fields', locals: { f: date_attended, submodel_count: date_attended.index+1, parent_model_prefix: "basic_fee_#{@basic_fee_count}", locale_scope: 'external_users.claims.basic_fees.basic_fee_fields_primary.date_label' }

    = link_to_add_association t('.add_dates'), f, :dates_attended, class: 'form-group', partial: 'date_attended_fields', render_options: { locals: { } }, data: {'association-insertion-method' => 'append', 'association-insertion-node' => 'div', 'association-insertion-traversal' => 'prev'}


%section.container(style="margin-top: 3em;")
  %h1 Utensils

  %p<
    %strong Client side component library

  %p » Jasmine Tests
  %p » Documentation
  %p » Live Documentation

  %figure(style="margin-top: 3em;")<
    %img(src="https://secure.gravatar.com/avatar/aa8ea677b07f626479fd280049b0e19f?s=75" alt="modeset")

Change the link to specs on the front page

%section.container(style="margin-top: 3em;")
  %h1 Utensils

  %p<
    %strong Client side component library

  %p » Teabag Specs
  %p » Documentation
  %p » Live Documentation

  %figure(style="margin-top: 3em;")<
    %img(src="https://secure.gravatar.com/avatar/aa8ea677b07f626479fd280049b0e19f?s=75" alt="modeset")


---
title: Development
pageable: true
---

%h2 Source Code

Blivet's source code is hosted on
= succeed '.' do
  %a(href="https://github.com/dwlehman/blivet/") GitHub

%h2 Documentation

Documentation is currently hosted on
= succeed '.' do
  %a(href="http://blivet.readthedocs.org") readthedocs.org

API documentation is available
= succeed '.' do
  %a(href="http://dlehman.fedorapeople.org/blivet-docs/modules.html") here

%h2 Contributing

Pull requests are accepted, as are git-generated patches sent to
anaconda-patches@lists.fedorahosted.org for review.

%h2 Major Planned Features

%ul
  %li System event handling (uevents initially)
  %li Creation of LVM RAID (We can already recognize and use these.)

Add a link to anaconda-patches list information page.

---
title: Development
pageable: true
---

%h2 Source Code

Blivet's source code is hosted on
= succeed '.' do
  %a(href="https://github.com/dwlehman/blivet/") GitHub

%h2 Documentation

Documentation is currently hosted on
= succeed '.' do
  %a(href="http://blivet.readthedocs.org") readthedocs.org

API documentation is available
= succeed '.' do
  %a(href="http://dlehman.fedorapeople.org/blivet-docs/modules.html") here

%h2 Contributing

Pull requests are accepted, as are git-generated patches sent to
anaconda-patches@lists.fedorahosted.org for review. You can subscribe or
read the list archives
= succeed '.' do
  %a(href="https://lists.fedorahosted.org/mailman/listinfo/anaconda-patches") here

%h2 Major Planned Features

%ul
  %li System event handling (uevents initially)
  %li Creation of LVM RAID (We can already recognize and use these.)


%h3 General

- if app
  %p
    These are the details that you need to be able to send email via Cuttlefish for the #{app.name} App.
    Specific instructions for sending mail from different frameworks and languages is further down the page.

  %table.table.table-condensed
    %tr
      %td Host
      %td
        %strong= Rails.configuration.cuttlefish_domain
    %tr
      %td Port
      %td
        %strong= Rails.configuration.cuttlefish_smtp_port
    %tr
      %td Username
      %td
        %strong= app.smtp_username
    %tr
      %td Password
      %td
        %strong= app.smtp_password
    %tr
      %td Authentication
      %td
        %strong plain
- else
  %p
    Simply point your application to send emails via SMTP to port #{Rails.configuration.cuttlefish_smtp_port} on
    #{Rails.configuration.cuttlefish_domain}. No authentication is necessary.
  %p
    See below for specific instructions for sending mail from different frameworks and languages.

Add SMTP protocol to general emailing instructions

%h3 General

- if app
  %p
    These are the details that you need to be able to send email via Cuttlefish for the #{app.name} App.
    Specific instructions for sending mail from different frameworks and languages is further down the page.

  %table.table.table-condensed
    %tr
      %td Protocol
      %td
        %strong= link_to "SMTP", "http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol"
    %tr
      %td Host
      %td
        %strong= Rails.configuration.cuttlefish_domain
    %tr
      %td Port
      %td
        %strong= Rails.configuration.cuttlefish_smtp_port
    %tr
      %td Username
      %td
        %strong= app.smtp_username
    %tr
      %td Password
      %td
        %strong= app.smtp_password
    %tr
      %td Authentication
      %td
        %strong plain
- else
  %p
    Simply point your application to send emails via SMTP to port #{Rails.configuration.cuttlefish_smtp_port} on
    #{Rails.configuration.cuttlefish_domain}. No authentication is necessary.
  %p
    See below for specific instructions for sending mail from different frameworks and languages.


%h1 Sent Email

%div
  %b Sent Date
  = @email.sent_at

%div
  %b Sent By
  = @email.sent_by

%div
  %b Subject
  = @email.subject

%div
  %b Body
  = @email.body

%div
  %b Addresses
  = @email.email_addresses

%div
  %b Address Description
  = @email.email_addresses_description

Clean up display of sent-emails, show whitespace

%h1 Sent Email

%div
  %b Sent Date
  = @email.sent_at

%div
  %b Sent By
  = @email.sent_by

%div
  %b Subject
  = @email.subject

%div
  %b Body
  = simple_format(@email.body)

%div
  %b Addresses
  = @email.email_addresses

%div
  %b Address Description
  = @email.email_addresses_description


%h1= t('.heading', id: @order.id)

%p
  %strong= t('.currency')
  = @order.currency.upcase
= render @order.cart, currency: @order.currency, view_format: :order

= form_with url: "https://ssl.dotpay.pl/" + (Rails.env.production? ? 't2/' : 'test_payment/'), method: :post, local: true do |f|
  = f.hidden_field :id, value: dotpay_id(@order.currency)
  = f.hidden_field :currency, value: @order.currency.upcase
  = f.hidden_field :amount, value: sprintf("%.2f", @order.total)
  = f.hidden_field :control, value: @order.unique_token
  = f.hidden_field :description, value: t('.payment_description')
  = f.submit t('.confirm_and_pay'), class: 'button large'

Set api_version param for Dotpay payments

%h1= t('.heading', id: @order.id)

%p
  %strong= t('.currency')
  = @order.currency.upcase
= render @order.cart, currency: @order.currency, view_format: :order

= form_with url: "https://ssl.dotpay.pl/" + (Rails.env.production? ? 't2/' : 'test_payment/'), method: :post, local: true do |f|
  = f.hidden_field :id, value: dotpay_id(@order.currency)
  = f.hidden_field :api_version, value: 'dev'
  = f.hidden_field :currency, value: @order.currency.upcase
  = f.hidden_field :amount, value: sprintf("%.2f", @order.total)
  = f.hidden_field :control, value: @order.unique_token
  = f.hidden_field :description, value: t('.payment_description')
  = f.submit t('.confirm_and_pay'), class: 'button large'


%footer
  %ul
    - Settings.footer.each do |entry|
      %li>
        - if entry.href
          = link_to entry.text, entry.href
        - else
          = entry.text

Fix footer to the bottom

%nav.navbar.navbar-default.navbar-fixed-bottom{role:'navigation'}
  %ul.nav.navbar-nav
    - Settings.footer.each do |entry|
      %li>
        - if entry.href
          = link_to entry.text, entry.href
        - else
          = entry.text


.module.widget.block{:class => 'widget-about'}
  -#i18n
  %h3= I18n.t(:"widgets.#{widget.name}.welcome", :default => "Welcome")

  %aside
    = current_group.description

  %footer
    =link_to t('layouts.application.faq'), page_path('faq')
    =link_to t("scaffold.more"), group_path(current_group)
.clear

Add markdown for about widget

.module.widget.block{:class => 'widget-about'}
  -#i18n
  %h3= I18n.t(:"widgets.#{widget.name}.welcome", :default => "Welcome")

  %aside
    .markdown
      = find_and_preserve(shapado_auto_link(markdown(current_group.description)))

  %footer
    =link_to t('layouts.application.faq'), page_path('faq')
    =link_to t("scaffold.more"), group_path(current_group)
.clear


- set_title t('documents.admin')

= link_to members_control_panel_path do
  .samf-button.plain.mb-3
    = t("common.back")

%h1.mb-2.mt-2
  = t("documents.admin")

- if can? :new, Event
  = link_to new_document_path do
    .samf-button.green.mb-3
      = t('documents.new_document')

%table
  %thead
    %tr
      %th= t('documents.title')
      %th= t('documents.publication_date')
      %th= t('documents.uploader')
      %th
      %th
  - @categories.each do |category|
    %tbody
      %tr.category
        %td{colspan: 5}
          = category.title
      - if category.documents.empty?
        %tr.empty
          %td{colspan: 5}= t('documents.no_documents')
      - else
        - category.documents.each do |document|
          %tr
            %td= link_to document.title, document.file.url
            %td= document.publication_date
            %td= document.uploader.full_name
            %td
              - if can? :edit, document
                = link_to edit_document_path(document) do
                  .samf-button.small.blue
                    = t('crud.edit')
            %td
              - if can? :destroy, document
                = link_to document, data: { confirm: t('documents.confirm_delete') }, method: :delete do
                  .samf-button.small
                    = t('crud.destroy')

Change the required role for making a new document from Event to Document

- set_title t('documents.admin')

= link_to members_control_panel_path do
  .samf-button.plain.mb-3
    = t("common.back")

%h1.mb-2.mt-2
  = t("documents.admin")

- if can? :new, Document
  = link_to new_document_path do
    .samf-button.green.mb-3
      = t('documents.new_document')

%table
  %thead
    %tr
      %th= t('documents.title')
      %th= t('documents.publication_date')
      %th= t('documents.uploader')
      %th
      %th
  - @categories.each do |category|
    %tbody
      %tr.category
        %td{colspan: 5}
          = category.title
      - if category.documents.empty?
        %tr.empty
          %td{colspan: 5}= t('documents.no_documents')
      - else
        - category.documents.each do |document|
          %tr
            %td= link_to document.title, document.file.url
            %td= document.publication_date
            %td= document.uploader.full_name
            %td
              - if can? :edit, document
                = link_to edit_document_path(document) do
                  .samf-button.small.blue
                    = t('crud.edit')
            %td
              - if can? :destroy, document
                = link_to document, data: { confirm: t('documents.confirm_delete') }, method: :delete do
                  .samf-button.small
                    = t('crud.destroy')


.tabs
  %ul
    - tabs.each do |tab|
      %li
        = link_to(tab[:url], :class => tab[:active] ? "active" : "") do
          - unless request.fullpath.include?("/admin")
            - img_base_path = "tab_icons/#{tab[:text].to_s.downcase.sub(/^tab_/, '')}"
            - if Rails.application.assets.find_asset("#{img_base_path}.png")
              = image_tag("#{img_base_path}#{tab[:active] ? "_active" : ""}.png")
          = t(tab[:text])

= show_flash
%table{ :width => "100%", :height => "100%", :cellpadding => 0, :cellspacing => 0, :class => :tabbed }
  %tr
    %td{ :class => :sidebar, :id => :sidebar, :valign => :top }
      = render "layouts/sidebar"
    %td{ :class => :main, :id => :main, :valign => :top }
      = yield

Remove empty class when not needed

.tabs
  %ul
    - tabs.each do |tab|
      %li
        = link_to(tab[:url], :class => tab[:active] ? "active" : nil) do
          - unless request.fullpath.include?("/admin")
            - img_base_path = "tab_icons/#{tab[:text].to_s.downcase.sub(/^tab_/, '')}"
            - if Rails.application.assets.find_asset("#{img_base_path}.png")
              = image_tag("#{img_base_path}#{tab[:active] ? "_active" : ""}.png")
          = t(tab[:text])

= show_flash
%table{ :width => "100%", :height => "100%", :cellpadding => 0, :cellspacing => 0, :class => :tabbed }
  %tr
    %td{ :class => :sidebar, :id => :sidebar, :valign => :top }
      = render "layouts/sidebar"
    %td{ :class => :main, :id => :main, :valign => :top }
      = yield


!!!
%html{lang: I18n.locale}
  %head
    %meta{charset: "utf-8"}
    %meta{name: "viewport", content: "width=device-width, initial-scale=1, shrink-to-fit=no"}
    %meta{"http-equiv": "x-ua-compatible", content: "ie=edge"}
    %meta{:name => "description", :content => "Participatory budgeting"}
    %meta{:name => "keywords", :content => "open budget participatory budgeting"}
    %meta{:property => "og:title", :content => "OpenBudgets"}
    %meta{:property => "og:description", :content => "Participatory budgeting"}
    %title= _('OpenBudgets')
    = csrf_meta_tags
    = stylesheet_link_tag    'application', media: 'all'
    = javascript_include_tag 'application'
  %body{ class: (scope.blank? ? 'voting' : scope) + ' ' + controller.controller_name + ' ' + controller.action_name }
    .wrapper
      = render 'partials/header'
      %main.main-container{ role: 'main' }
        = render 'partials/alerts'
        = yield
    = render 'partials/footer'

Add support for Google Analytics tracking script

!!!
%html{lang: I18n.locale}
  %head
    %meta{charset: "utf-8"}
    %meta{name: "viewport", content: "width=device-width, initial-scale=1, shrink-to-fit=no"}
    %meta{"http-equiv": "x-ua-compatible", content: "ie=edge"}
    %meta{:name => "description", :content => "Participatory budgeting"}
    %meta{:name => "keywords", :content => "open budget participatory budgeting"}
    %meta{:property => "og:title", :content => "OpenBudgets"}
    %meta{:property => "og:description", :content => "Participatory budgeting"}
    %title= _('OpenBudgets')
    = csrf_meta_tags
    = stylesheet_link_tag    'application', media: 'all'
    = javascript_include_tag 'application'
    - if Rails.env.production? and ENV['ANALYTICS_ID']
      :javascript
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
         (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
         m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
         })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
         ga('create', '#{ENV['ANALYTICS_ID']}', 'auto');
         ga('send', 'pageview');
  %body{ class: (scope.blank? ? 'voting' : scope) + ' ' + controller.controller_name + ' ' + controller.action_name }
    .wrapper
      = render 'partials/header'
      %main.main-container{ role: 'main' }
        = render 'partials/alerts'
        = yield
    = render 'partials/footer'


= turbo_frame_tag "moderation_reports" do
  #reports
    - @reports.each do |r|
      = render "moderation/moderationbox", report: r

  - if @more_data_available
    .d-flex.justify-content-center.justify-content-sm-start#paginator
      = button_to moderation_reports_path(last_id: @reports_last_id, type: params[:type]), class: "btn btn-light" do
        = t("voc.load")

Remove turbo-frame tag in moderation report view