= render "layouts/manage/page_title", title: "Bus Lists" do
  = link_to "New Bus List", new_manage_bus_list_path, class: "btn btn-sm btn-outline-secondary"

%div
  %table.table.table-striped.table-hover
    %thead
      %tr
        %th Name
        %th Capacity
        %th Needs Captain?
        %th Schools

    %tbody
      - @bus_lists.each do |bus_list|
        %tr
          %td= link_to(bus_list.name, manage_bus_list_path(bus_list))
          %td #{bus_list.passengers.count} / #{bus_list.capacity}
          %td= bus_list.needs_bus_captain ? "Yes".html_safe : "No"
          %td= bus_list.schools.count

Emphasize bus lists that need a captain

= render "layouts/manage/page_title", title: "Bus Lists" do
  = link_to "New Bus List", new_manage_bus_list_path, class: "btn btn-sm btn-outline-secondary"

%div
  %table.table.table-striped.table-hover
    %thead
      %tr
        %th Name
        %th Capacity
        %th Needs bus captain?
        %th Schools

    %tbody
      - @bus_lists.each do |bus_list|
        %tr
          %td= link_to(bus_list.name, manage_bus_list_path(bus_list))
          %td #{bus_list.passengers.count} / #{bus_list.capacity}
          %td= bus_list.needs_bus_captain ? "Needs bus captain".html_safe : "No"
          %td= bus_list.schools.count


.content#about{"ng-controller" => "AboutUsCtrl", bindonce: true}
  .row
    .small-12.large-6.columns
      %img.hero-img-small{"bo-src" => "CurrentHub.hub.promo_image"}
      %p.small-text{"bo-html" => "CurrentHub.hub.long_description"}
    .small-12.large-3.columns

    .small-12.large-3.columns
      %img{"bo-src" => "CurrentHub.hub.logo", "bo-if" => "CurrentHub.hub.logo"}

Tweak markup for ABOUT tab on mini menu

.content#about{"ng-controller" => "AboutUsCtrl", bindonce: true}
  .row
    .small-12.large-8.columns.panel
      %img.hero-img-small{"bo-src" => "CurrentHub.hub.promo_image", "bo-if" => "CurrentHub.hub.promo_image"}
      %p{"bo-html" => "CurrentHub.hub.long_description"}
    .small-12.large-4.columns


- @title = "Sign in"

- render "themes/seasonal"

.page-box.last-box.d-flex.align-items-center.theme-bg{ class: "theme-#{@theme}-focus-bg" }
  .container
    %p.lead.text-center.text-white Welcome back!

    .sign-up-form
      .sign-up-form-title
        Sign in

      = form_with model: resource, url: user_session_path, local: true do |form|
        .form-group
          = form.label :email
          = form.text_field :email, class: "form-control#{" is-invalid" if flash[:alert].present?}", autocomplete: "off"

        .form-group
          = form.label :password
          %small= link_to "(Forgot password?)", new_password_path(resource_name), tabindex: "-1"
          = form.password_field :password, class: "form-control#{" is-invalid" if flash[:alert].present?}", autocomplete: "current-password"
          - if flash[:alert].present?
            .invalid-feedback= flash[:alert].html_safe

        .form-group.submit-btn-container
          = form.submit "Sign in", class: "btn btn-primary btn-block btn-shadow"

        - flash[:alert] = nil

    .sign-up-form.text-center
      New to Slice?
      = link_to "Create an account.", new_user_registration_path

    - if devise_mapping.confirmable?
      .text-center{ style: "margin-bottom: 20px;" }
        = link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name)

Remove spell check from login form

- @title = "Sign in"

- render "themes/seasonal"

.page-box.last-box.d-flex.align-items-center.theme-bg{ class: "theme-#{@theme}-focus-bg" }
  .container
    %p.lead.text-center.text-white Welcome back!

    .sign-up-form
      .sign-up-form-title
        Sign in

      = form_with model: resource, url: user_session_path, local: true do |form|
        .form-group
          = form.label :email
          = form.email_field :email, class: "form-control#{" is-invalid" if flash[:alert].present?}", autocomplete: "off", autocorrect: "off", autocapitalize: "none", spellcheck: "false"

        .form-group
          = form.label :password
          %small= link_to "(Forgot password?)", new_password_path(resource_name), tabindex: "-1"
          = form.password_field :password, class: "form-control#{" is-invalid" if flash[:alert].present?}", autocomplete: "current-password"
          - if flash[:alert].present?
            .invalid-feedback= flash[:alert].html_safe

        .form-group.submit-btn-container
          = form.submit "Sign in", class: "btn btn-primary btn-block btn-shadow"

        - flash[:alert] = nil

    .sign-up-form.text-center
      New to
      = succeed "?" do
        = ENV["website_name"]
      = link_to "Create an account.", new_user_registration_path


= render :layout => "components/cards/card", :locals => {card: card, card_class: "card--poi card--poi--#{card[:topic].downcase}" } do

  = render :partial => '/components/cards/partials/things_to_do_card_tags', :locals => { :card => card }
  - if card[:image_url]
    %figure.card__hero
      = image_tag(card[:image_url], class: 'card__image')
  .card__content
    - if card[:category]
      %span.card__context
        = card[:category]
    %h1.card__name.js-card-name
      = card[:name]
    - if card[:duration].present?
      %p.card__tour-duration.copy--caption
        = card[:duration]
    %p.card__description
      = card[:description]
  - if card[:bookable?]
    %footer.card__footer
      %span.btn.btn--bookable.btn--full-width
        Book now

Update ttd card to use safe_image_tag

= render :layout => "components/cards/card", :locals => {card: card, card_class: "card--poi card--poi--#{card[:topic].downcase}" } do

  = render :partial => '/components/cards/partials/things_to_do_card_tags', :locals => { :card => card }
  - if card[:image_url]
    %figure.card__hero
      = safe_image_tag(card[:image_url], class: 'card__image')
  .card__content
    - if card[:category]
      %span.card__context
        = card[:category]
    %h1.card__name.js-card-name
      = card[:name]
    - if card[:duration].present?
      %p.card__tour-duration.copy--caption
        = card[:duration]
    %p.card__description
      = card[:description]
  - if card[:bookable?]
    %footer.card__footer
      %span.btn.btn--bookable.btn--full-width
        Book now


%h3.page-title
  System Hooks

%p.light
  #{link_to "System hooks ", help_system_hooks_path, class: "vlink"} can be
  used for binding events when GitLab creates a User or Project.

%hr

= form_for @hook, as: :hook, url: admin_hooks_path, html: { class: 'form-inline' } do |f|
  -if @hook.errors.any?
    .alert.alert-error
      - @hook.errors.full_messages.each do |msg|
        %p= msg
  .control-group
    = f.label :url, "URL:"
    .controls
      = f.text_field :url, class: "text_field input-xxlarge input-xpadding"

      = f.submit "Add System Hook", class: "btn btn-create"
%hr

-if @hooks.any?
  %h3
    Hooks
    %small (#{@hooks.count})
  %br
  %table
    %tr
      %th URL
      %th Method
      %th
    - @hooks.each do |hook|
      %tr
        %td
          = link_to admin_hook_path(hook) do
            %strong= hook.url
          = link_to 'Test Hook', admin_hook_test_path(hook), class: "btn btn-small pull-right"
        %td POST
        %td
          = link_to 'Remove', admin_hook_path(hook), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-remove btn-small pull-right"

Fix broken UI for admin system hooks

%h3.page-title
  System hooks

%p.light
  #{link_to "System hooks ", help_system_hooks_path, class: "vlink"} can be
  used for binding events when GitLab creates a User or Project.

%hr

= form_for @hook, as: :hook, url: admin_hooks_path, html: { class: 'form-inline' } do |f|
  -if @hook.errors.any?
    .alert.alert-error
      - @hook.errors.full_messages.each do |msg|
        %p= msg
  .control-group
    = f.label :url, "URL:"
    .controls
      = f.text_field :url, class: "text_field input-xxlarge input-xpadding"

      = f.submit "Add System Hook", class: "btn btn-create"
%hr

-if @hooks.any?
  .ui-box
    .title
      System hooks (#{@hooks.count})
    %ul.well-list
      - @hooks.each do |hook|
        %li
          .pull-right
            = link_to 'Test Hook', admin_hook_test_path(hook), class: "btn btn-small"
            = link_to 'Remove', admin_hook_path(hook), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-remove btn-small"
          = link_to admin_hook_path(hook) do
            %strong= hook.url


- model_class = Email
.page-header
  %h1=t '.title', :default => model_class.model_name.human

%p
  %strong From:
  = link_to @email.from, emails_path(:from => @email.from)
%p
  %strong To:
  = @email.to.map{|e| link_to e, emails_path(to: e)}.join(", ").html_safe
%hr
- if @email.data.nil?
  %em
    Full text of email is not available
- else
  %p
    = @email.data.gsub("\r\n", "<br\>").html_safe if @email.data
%hr
%p
  %strong Received:
  = time_ago_in_words(@email.created_at)
  ago (#{@email.created_at})
%p
  - if @email.delivered == true
    %strong Delivered succesfully
  - elsif @email.delivered == false
    %strong Not delivered
  - else
    %strong Delivery status unknown

- unless @email.postfix_log_lines.empty?
  %table.table.table-condensed
    %caption Delivery Logs
    %thead
      %tr
        %th To
        %th DSN
        %th Status
    %tbody
      - @email.postfix_log_lines.each do |line|
        %tr
          %td= line.to
          %td= line.dsn
          %td.status{title: line.status}= truncate(line.status)

.form-actions
  = link_to t('.back', :default => t("helpers.links.back")), emails_path, :class => 'btn'

Make the delivery status a little label

.page-header
  %h1 Email
  %p
  - if @email.delivered == true
    %span.label.label-success Delivered
  - elsif @email.delivered == false
    %span.label.label-warning Not delivered
  - else
    %span.label Delivery status unknown

%p
  %strong From:
  = link_to @email.from, emails_path(:from => @email.from)
%p
  %strong To:
  = @email.to.map{|e| link_to e, emails_path(to: e)}.join(", ").html_safe
%hr
- if @email.data.nil?
  %em
    Full text of email is not available
- else
  %p
    = @email.data.gsub("\r\n", "<br\>").html_safe if @email.data
%hr
%p
  %strong Received:
  = time_ago_in_words(@email.created_at)
  ago (#{@email.created_at})

- unless @email.postfix_log_lines.empty?
  %table.table.table-condensed
    %caption Delivery Logs
    %thead
      %tr
        %th To
        %th DSN
        %th Status
    %tbody
      - @email.postfix_log_lines.each do |line|
        %tr
          %td= line.to
          %td= line.dsn
          %td.status{title: line.status}= truncate(line.status)

.form-actions
  = link_to t('.back', :default => t("helpers.links.back")), emails_path, :class => 'btn'


- content_for :injection_data do
  = inject_available_shipping_methods
  = inject_available_payment_methods
  = inject_saved_credit_cards

= form_for current_order,
  url: order_path(current_order),
  html: {name: "checkout",
    id: "checkout_form",
    novalidate: true,
    "ng-submit" => "purchase($event, checkout)"} do |f|

  = render "checkout/details", f: f
  = render "checkout/billing", f: f
  = render "checkout/shipping", f: f
  = render "checkout/payment", f: f
  = render "checkout/already_ordered", f: f if show_bought_items?
  = render "checkout/terms_and_conditions", f: f
  %p
    %button.button.primary{ type: :submit, ng: { disabled: "terms_and_conditions_activated && !terms_and_conditions_accepted" } }
      = t :checkout_send
    / {{ checkout.$valid }}

Remove passing of unused variable

- content_for :injection_data do
  = inject_available_shipping_methods
  = inject_available_payment_methods
  = inject_saved_credit_cards

= form_for current_order,
  url: order_path(current_order),
  html: {name: "checkout",
    id: "checkout_form",
    novalidate: true,
    "ng-submit" => "purchase($event, checkout)"} do |f|

  = render "checkout/details", f: f
  = render "checkout/billing", f: f
  = render "checkout/shipping", f: f
  = render "checkout/payment", f: f
  = render "checkout/already_ordered", f: f if show_bought_items?
  = render "checkout/terms_and_conditions"
  %p
    %button.button.primary{ type: :submit, ng: { disabled: "terms_and_conditions_activated && !terms_and_conditions_accepted" } }
      = t :checkout_send
    / {{ checkout.$valid }}


%li
  %a
    %div
      = icon "fa-cog fa-fw fa-lg"
      Installing Plugins
      - if installing_gem?
        %span{class: "badge pull-right"}= installing_gems.length

- if installing_gem?
  - installing_gems.each do |plugin|
    = alert_line 'fa-refresh fa-spin', "#{plugin.gem_name} (#{plugin.version})"
- else
  = alert_line "fa-check text-muted", t('terms.no_alert')

%li{class: "divider"}

%li
  %a
    %div
      = icon "fa-cog fa-fw fa-lg"
      Uninstalling Plugins
      - if uninstalling_gem?
        %span{class: "badge pull-right"}= uninstalling_gems.length

- if uninstalling_gem?
  - uninstalling_gems.each do |plugin|
    = alert_line 'fa-spinner fa-spin', plugin.gem_name
- else
  = alert_line "fa-check text-muted", t('terms.no_alert')

Fix to display installing version on alert area

%li
  %a
    %div
      = icon "fa-cog fa-fw fa-lg"
      Installing Plugins
      - if installing_gem?
        %span{class: "badge pull-right"}= installing_gems.length

- if installing_gem?
  - installing_gems.each do |plugin|
    = alert_line 'fa-refresh fa-spin', "#{plugin.gem_name} (#{plugin.version || plugin.latest_version})"
- else
  = alert_line "fa-check text-muted", t('terms.no_alert')

%li{class: "divider"}

%li
  %a
    %div
      = icon "fa-cog fa-fw fa-lg"
      Uninstalling Plugins
      - if uninstalling_gem?
        %span{class: "badge pull-right"}= uninstalling_gems.length

- if uninstalling_gem?
  - uninstalling_gems.each do |plugin|
    = alert_line 'fa-spinner fa-spin', plugin.gem_name
- else
  = alert_line "fa-check text-muted", t('terms.no_alert')


- content_for :after_title, " - #{t(Features.wiki_ed? ? 'application.explore' : 'courses_generic.explore')}"

%header.main-page
  .container
    %h1= Figaro.env.dashboard_title
    = render 'courses/header_stats', presenter: @presenter

.container
  = render 'campaigns/campaigns', presenter: @presenter
  %hr
  = render 'courses/campaign_courses', presenter: @presenter

Remove misleading stats partial from Explore page

- content_for :after_title, " - #{t(Features.wiki_ed? ? 'application.explore' : 'courses_generic.explore')}"

%header.main-page
  .container
    %h1= Figaro.env.dashboard_title

.container
  = render 'campaigns/campaigns', presenter: @presenter
  %hr
  = render 'courses/campaign_courses', presenter: @presenter


- content_for :title, "Search"
- set_meta_tags description: "Search morph.io scrapers and users#{" for ‘" + @q + "’" if @q}"

.container
  %h1.label-heading
    Search
  = render partial: "search_form"
  - if @q
    - if @all_scrapers.total_count.zero? && @owners.empty?
      %h2 No results found
      %p= no_search_results_message("scrapers or users", @q)
      %p
        Suggestions:
      %ul
        %li check the spelling
        %li try some more general or alternate terms
      %p You could also try browsing all #{link_to "scrapers", scrapers_path} or #{link_to "users", users_path}.
    - else
      .search-results.row
        .col-xs-12
          = render partial: "search_type_nav"

        - if @type == "users"
          = render "results_owners"
        - else
          = render "results_scrapers"

Add the query to the search <title> if there is one

- content_for :title, "Search#{" ‘" + @q + "’" if @q}"
- set_meta_tags description: "Search morph.io scrapers and users#{" for ‘" + @q + "’" if @q}"

.container
  %h1.label-heading
    Search
  = render partial: "search_form"
  - if @q
    - if @all_scrapers.total_count.zero? && @owners.empty?
      %h2 No results found
      %p= no_search_results_message("scrapers or users", @q)
      %p
        Suggestions:
      %ul
        %li check the spelling
        %li try some more general or alternate terms
      %p You could also try browsing all #{link_to "scrapers", scrapers_path} or #{link_to "users", users_path}.
    - else
      .search-results.row
        .col-xs-12
          = render partial: "search_type_nav"

        - if @type == "users"
          = render "results_owners"
        - else
          = render "results_scrapers"


- field_set_tag "Log in" do
  - form_tag session_path do
    .aligned
      %ul
        %li
          = label_tag 'login', 'Username', :class=>"right"
          = text_field_tag 'login', @login
        %li
          = label_tag :password, "Password", :class=>"right"
          = password_field_tag
        %li
          = label_tag 'submit', '', :class=>"right"
          = submit_tag 'Login'

        %li
          = label_tag 'remember_me', 'Remember me', :class=>"right"
          = check_box_tag 'remember_me', '1'
  %ul.menu_h_right
    %li= link_to 'Forgot my password', forgot_password_path

Change naming of remember me to stay logged in

- field_set_tag "Log in" do
  - form_tag session_path do
    .aligned
      %ul
        %li
          = label_tag 'login', 'Username', :class=>"right"
          = text_field_tag 'login', @login
        %li
          = label_tag :password, "Password", :class=>"right"
          = password_field_tag
        %li
          = label_tag 'submit', '', :class=>"right"
          = submit_tag 'Login'

        %li
          = label_tag 'remember_me', 'Stay logged in', :class=>"right"
          = check_box_tag 'remember_me', '1'
  %ul.menu_h_right
    %li= link_to 'Forgot my password', forgot_password_path


- content_for(:body_id, 'jobs_flow')
- content_for(:title, "New #{@template.name} Remote Deployment Target")

%h1 create a new job
%p!= markdown_to_html(@template.description)
%p.microcopy All fields required.
= form_for @job do |f|
  = f.hidden_field :template_id
  %ul
    = f.fields_for :override do |ov|
      = ov.fields_for :environment do |env|
        %li
          = env.hidden_field :variable
          = env.text_field :value, placeholder: env.object.variable, required: true
          %label= env.object.description

  = f.submit 'Add New Target', class: 'button-positive'

Remove copy that is often reduntant.

- content_for(:body_id, 'jobs_flow')
- content_for(:title, "New #{@template.name}")

%h1 create a new job
%p!= markdown_to_html(@template.description)
%p.microcopy All fields required.
= form_for @job do |f|
  = f.hidden_field :template_id
  %ul
    = f.fields_for :override do |ov|
      = ov.fields_for :environment do |env|
        %li
          = env.hidden_field :variable
          = env.text_field :value, placeholder: env.object.variable, required: true
          %label= env.object.description

  = f.submit 'Add New Target', class: 'button-positive'


- content_for :title do
  Commit Stats Over Past #{@days_ago} Days

%p #{@commit_set.count} commits
%table
  %tbody
    - @commit_set.top_authors.each do |object|
      %tr
        %td= object[:commit_set].count
        %td
          %a{ href: name_to_slug(object[:author]) }= object[:author]
        %td= breakdown(object[:commit_set])

Make commit stats view pretty

- content_for :title do
  Commit Stats Over Past #{@days_ago} Days

%h2 #{@commit_set.count} commits
%table.table.table-striped.table-hover.table-bordered
  %thead
    %tr
      %th Total commits
      %th Author
      %th Breakdown by project
  %tbody
    - @commit_set.top_authors.each do |object|
      %tr
        %td= object[:commit_set].count
        %td
          %a{ href: name_to_slug(object[:author]) }= object[:author]
        %td= breakdown(object[:commit_set])


!!! Strict
%html{:lang => "en", "xml:lang" => "en", :xmlns => "http://www.w3.org/1999/xhtml"}
  %head
    %title= title
    = stylesheet_link_tag 'compiled/screen.css', :media => 'screen, projection'
    = stylesheet_link_tag 'compiled/print.css', :media => 'print'
    /[if lt IE 8]
      = stylesheet_link_tag 'compiled/ie.css', :media => 'screen, projection'
    = render 'layouts/stylesheets'
    = javascript_include_tag :defaults
    = javascript_include_tag 'jquery-1.4.2.min'
    = javascript_tag "jQuery.noConflict();"
    = javascript_include_tag 'jquery.form'
    = javascript_include_tag 'chat'
    = javascript_meta_information
    = javascript_include_tag 'supervision'
    = javascript_include_tag 'jquery.rating'
    = csrf_meta_tag

  %body
    #outer
      = render 'layouts/header'

      #content.round
        - flash.each do |key, value|
          %div{:class => "flash #{key}"}= value
        = yield
      = render 'layouts/footer'

Remove obsolete jquery script link

!!! Strict
%html{:lang => "en", "xml:lang" => "en", :xmlns => "http://www.w3.org/1999/xhtml"}
  %head
    %title= title
    = csrf_meta_tag
    = javascript_meta_information

    = stylesheet_link_tag 'compiled/screen.css', :media => 'screen, projection'
    = stylesheet_link_tag 'compiled/print.css', :media => 'print'
    /[if lt IE 8]
      = stylesheet_link_tag 'compiled/ie.css', :media => 'screen, projection'
    = render 'layouts/stylesheets'

    = javascript_include_tag :defaults
    = javascript_include_tag 'jquery.form'
    = javascript_include_tag 'chat'
    = javascript_include_tag 'supervision'
    = javascript_include_tag 'jquery.rating'

  %body
    #outer
      = render 'layouts/header'

      #content.round
        - flash.each do |key, value|
          %div{:class => "flash #{key}"}= value
        = yield
      = render 'layouts/footer'


%ul#recent_activities{:class => "#{'refresh' if @page == 1}"}
  -@recent_channels.each do |channel|
    -last_post = @recent_posts[channel.id]
    -has_posts = channel.has_posts?(current_user, last_post)
    %li{:class => "#{'visited' if has_posts} channel", "data-last-id" => last_post.id}
      .name
        -if last_post
          .user-color{:style => "background-color: #{last_post.user.color}"}
          =render :partial => "shared/user", :object => last_post.user
        -else

      .date
        -if last_post && channel
          =link_to last_post.created_at.try(:strftime, '%Y/%m/%d %H:%M:%S'), channel_path(channel, :anchor => channel_anchor(channel, current_user, last_post))
        -else
          No Posts yet.
      -if (mentions = channel.num_mentions(current_user)) > 0
        .post-count.mentions= mentions
      =link_to format_title(channel), channel_path(channel), :class => "channel-link"

%br/
%br/
=will_paginate @recent_channels, :params => {:controller => "channels", :action => "index"}

Handle no last_post for channel

%ul#recent_activities{:class => "#{'refresh' if @page == 1}"}
  -@recent_channels.each do |channel|
    -last_post = @recent_posts[channel.id]
    -has_posts = channel.has_posts?(current_user, last_post)
    %li{:class => "#{'visited' if has_posts} channel", "data-last-id" => (last_post.id rescue 0)}
      .name
        -if last_post
          .user-color{:style => "background-color: #{last_post.user.color}"}
          =render :partial => "shared/user", :object => last_post.user
        -else

      .date
        -if last_post && channel
          =link_to last_post.created_at.try(:strftime, '%Y/%m/%d %H:%M:%S'), channel_path(channel, :anchor => channel_anchor(channel, current_user, last_post))
        -else
          No Posts yet.
      -if (mentions = channel.num_mentions(current_user)) > 0
        .post-count.mentions= mentions
      =link_to format_title(channel), channel_path(channel), :class => "channel-link"

%br/
%br/
=will_paginate @recent_channels, :params => {:controller => "channels", :action => "index"}


- provide :title, 'Projects'

.page-header
  %h1= yield :title

- if @projects.any?
  %table.table.table-striped
    %thead
      %tr
        %th Name
        %th Viewports
        %th
          = succeed 's' do
            %abbr.initialism{ title: 'Uniform Resource Locators' } URL
        %th
        %th

    %tbody
      - @projects.each do |project|
        %tr
          %td= link_to project.name, project, class: 'url-multiline'
          %td= project.viewports.map(&:to_s).join(', ')
          %td= project.urls.count
          %td
            = link_to edit_project_path(project) do
              %span.glyphicon.glyphicon-edit
          %td
            = link_to project, method: :delete, data: { confirm: 'Are you sure?' } do
              %span.glyphicon.glyphicon-remove

= link_to new_project_path, class: 'btn btn-primary' do
  %span.glyphicon.glyphicon-plus
  Add new Project

Remove direct-link to edit project form index page

- provide :title, 'Projects'

.page-header
  %h1= yield :title

- if @projects.any?
  %table.table.table-striped
    %thead
      %tr
        %th Name
        %th Viewports
        %th
          = succeed 's' do
            %abbr.initialism{ title: 'Uniform Resource Locators' } URL
        %th

    %tbody
      - @projects.each do |project|
        %tr
          %td= link_to project.name, project, class: 'url-multiline'
          %td= project.viewports.map(&:to_s).join(', ')
          %td= project.urls.count
          %td
            = link_to project, method: :delete, data: { confirm: 'Are you sure?' } do
              %span.glyphicon.glyphicon-remove

= link_to new_project_path, class: 'btn btn-primary' do
  %span.glyphicon.glyphicon-plus
  Add new Project


- storing ||= f.object
- variant = Maybe(storing.parcel_item.variant)

.nested-fields.storing-fields
  = f.referenced_association :storage, source: :storage, label: false, input_html: { class: 'storing-storage', data: { required: true } }
  .storing-quantifier
    = f.input :quantity, label: false, wrapper: :append do
      = f.input_field :quantity, class: 'storing-quantity', placeholder: '0', data: { required: true }
      %span.add-on.item-population-unit-name
        = variant.unit_name.or_else('#')
  .act
    - if f.object.destroyable?
      = link_to_remove_association(content_tag(:i) + h(:destroy.tl), f, 'data-no-turbolink' => true, class: 'destroy remove remove-item')

Fix bug where we could remove a storage zone even if there was only one (despite it's allowed when there are 2 storage zone)

- storing ||= f.object
- variant = Maybe(storing.parcel_item.variant)

.nested-fields.storing-fields
  = f.referenced_association :storage, source: :storage, label: false, input_html: { class: 'storing-storage', data: { required: true } }
  .storing-quantifier
    = f.input :quantity, label: false, wrapper: :append do
      = f.input_field :quantity, class: 'storing-quantity', placeholder: '0', data: { required: true }
      %span.add-on.item-population-unit-name
        = variant.unit_name.or_else('#')
  .nested-remove.act
    - if f.object.destroyable?
      = link_to_remove_association(content_tag(:i) + h(:destroy.tl), f, 'data-no-turbolink' => true, class: 'destroy remove remove-item')


-if flash[:error]
  -if flash[:error].kind_of?(String)
    .flash-subset
      %div.heading
        =image_tag 'flash_error_icon.png', :alt => 'Errors'
        =flash[:error]
-else
  - @pool.catalogs.each do |catalog|
    %div.catalog_deployments_and_images
      %h1
        = catalog.name
        = t('.catalog')
      - catalog.deployables.each do |deployable|
        %h2
          = deployable.name
          = t('.deployable')

        - deployable.fetch_images.compact.each do |image|
          %h3
            = t('.image')
            = "#{image.name} (#{image.uuid})"

          %ul
            - image.provider_images.each do |provider_image|
              %li= t('.pushed', :uuid => provider_image.uuid, :provider => provider_image.provider_name)

Fix permission checking on pools/_images

-if flash[:error]
  -if flash[:error].kind_of?(String)
    .flash-subset
      %div.heading
        =image_tag 'flash_error_icon.png', :alt => 'Errors'
        =flash[:error]
-else
  - @pool.catalogs.list_for_user(current_user, Privilege::VIEW).each do |catalog|
    %div.catalog_deployments_and_images
      %h1
        = catalog.name
        = t('.catalog')
      - catalog.deployables.each do |deployable|
        %h2
          = deployable.name
          = t('.deployable')

        - deployable.fetch_images.compact.each do |image|
          %h3
            = t('.image')
            = "#{image.name} (#{image.uuid})"

          %ul
            - image.provider_images.each do |provider_image|
              %li= t('.pushed', :uuid => provider_image.uuid, :provider => provider_image.provider_name)


- if %w(containers).include?(@display)
    = render :partial => "layouts/gtl", :locals => {:action_url => "show/#{@record.id}"}
- else
    - case @showtype
    - when "timeline"
        = render(:partial => "layouts/tl_show")
        :javascript
            var miq_after_onload = "miqAsyncAjax('#{url_for(:action => @ajax_action, :id => @record)}');"
    - when "performance"
        = render(:partial => "layouts/performance")
        :javascript
            var miq_after_onload = "miqAsyncAjax('#{url_for(:action => @ajax_action, :id => @record)}');"
    - else
        = render :partial => @showtype

Fix Pod - Services relationship

- if %w(containers container_services).include?(@display)
    = render :partial => "layouts/gtl", :locals => {:action_url => "show/#{@record.id}"}
- else
    - case @showtype
    - when "timeline"
        = render(:partial => "layouts/tl_show")
        :javascript
            var miq_after_onload = "miqAsyncAjax('#{url_for(:action => @ajax_action, :id => @record)}');"
    - when "performance"
        = render(:partial => "layouts/performance")
        :javascript
            var miq_after_onload = "miqAsyncAjax('#{url_for(:action => @ajax_action, :id => @record)}');"
    - else
        = render :partial => @showtype


%script{src:"#{url("bootstrap.file-input.js")}"}
%a{href:"/", class:"btn btn-default"} Back
%div.col-md-6.col-md-offset-3
  %h2 Import from CSV
  %form{action: "/transaction/import", method: "post", enctype: "multipart/form-data",  class: "form-horizontal"}
    %div.form-group
      %label.col-md-2 CSV file
      %div.col-md-10
        %input.file-inputs{type: "file", name: "file"}
    %div.form-group
      %div.col-md-10.col-md-offset-2
        %label Default shared for imported transactions
        %input{type: "checkbox", value: "t", checked: true, name: "shared"}
    %div.form-group
      %button{type: "submit", class: "btn btn-primary"} Submit

%div.col-md-6.col-md-offset-3
  %h2 Export to CSV
  %form{action: "/transaction/export", method: "post"}
    %button.btn.btn-primary{type: "submit"} Export
%script{src: "/input.js", type: "text/javascript"}

Rewrite CSV page using two parallel panels (import/export)

%script{src:"#{url("bootstrap.file-input.js")}"}

%div.col-md-10.col-md-offset-1{style: "margin-bottom: 50px;"}
  %a.btn.btn-default.pull-right{href:"/"} Back
  %h2 CSV Import / Export

%div.col-md-5.col-md-offset-1
  %div.panel.panel-default
    %div.panel-heading Import
    %div.panel-body
      %form{action: "/transaction/import", method: "post", enctype: "multipart/form-data",  class: "form-horizontal"}
        %div.form-group.col-md-12
          %label CSV file:
          %input.file-inputs{type: "file", name: "file"}
        %div.form-group.col-md-12
          %label Shared:
          %input{type: "checkbox", value: "t", checked: true, name: "shared"}
        %div.form-group.col-md-12
          %button.pull-right{type: "submit", class: "btn btn-primary"} Import transactions

%div.col-md-5
  %div.panel.panel-default
    %div.panel-heading Export
    %div.panel-body
      Export all the transactions in a CSV file
      %form{action: "/transaction/export", method: "post"}
        %button.btn.btn-primary.pull-right{type: "submit"} Export transactions

%script{src: "/input.js", type: "text/javascript"}


%head
  %title #{page.blog_title} :: #{page.title}
  - if page.respond_to? :description
    %meta(name="description" content="#{page.description}")/
  - if page.respond_to? :keywords
    %meta(name="keywords" content="#{page.keywords}")/
  %link(href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css")
  %script(src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js" type="text/javascript")
  %script(src="/javascripts/mootools-1.2.4.2-more.js" type="text/javascript")
  - if page.respond_to? :twitter_user
    :javascript
      var twitter_user = "#{page.twitter_user}"
      var show_replies = #{page.show_replies};
      var tweet_count = #{page.tweet_count};
    %script(src="/javascripts/octopress.js" type="text/javascript")
    %script(src="/javascripts/twitter.js" type="text/javascript")
  - if page.respond_to? :google_analytics
    %script(src="http://www.google-analytics.com/ga.js" type="text/javascript")

  - # RSS Feed
  %link(href="/atom.xml" rel="alternate" title="#{page.blog_title}" type="application/atom+xml")

Enforce UTF-8 in meta tag to avoid character set problems.

%head
  %title #{page.blog_title} :: #{page.title}
  %meta(http-equiv="Content-Type" content="text/html; charset=utf-8")
  - if page.respond_to? :description
    %meta(name="description" content="#{page.description}")/
  - if page.respond_to? :keywords
    %meta(name="keywords" content="#{page.keywords}")/
  %link(href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css")
  %script(src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js" type="text/javascript")
  %script(src="/javascripts/mootools-1.2.4.2-more.js" type="text/javascript")
  - if page.respond_to? :twitter_user
    :javascript
      var twitter_user = "#{page.twitter_user}"
      var show_replies = #{page.show_replies};
      var tweet_count = #{page.tweet_count};
    %script(src="/javascripts/octopress.js" type="text/javascript")
    %script(src="/javascripts/twitter.js" type="text/javascript")
  - if page.respond_to? :google_analytics
    %script(src="http://www.google-analytics.com/ga.js" type="text/javascript")

  - # RSS Feed
  %link(href="/atom.xml" rel="alternate" title="#{page.blog_title}" type="application/atom+xml")


%html
  %head
    %link{ :href => "/stylesheets/master.css", :rel => "stylesheet", :media => "screen", :type => "text/css", :charset => "utf-8" }/
    %script{ :src => "/javascripts/jquery-1.3.2.min.js",    :type => "text/javascript" }
    :javascript
      $(function() {
        $('#insertLink form').submit(function() {
          self.parent.document.execCommand('insertHTML', false, '\n' + $('input', this).val() + '\n');
          self.parent.tb_remove();
          return false;
        });

        $('a.cancel').click(function() {
          self.parent.tb_remove();
          return false;
        });

        $('#insertLink input');
      });
  %body
    #insertLink
      = form :action => '/' do
        %p
          %label{:for => 'insertLinkURL'} URL
          %input#insertLinkURL{:size => 50}
        %p.help
          For example http://twitter.com/til
        %p
          = submit 'OK'
          %a.cancel{:href=>"#"} Cancel

Set insertLink input field focus

%html
  %head
    %link{ :href => "/stylesheets/master.css", :rel => "stylesheet", :media => "screen", :type => "text/css", :charset => "utf-8" }/
    %script{ :src => "/javascripts/jquery-1.3.2.min.js",    :type => "text/javascript" }
    :javascript
      $(function() {
        $('#insertLink form').submit(function() {
          self.parent.document.execCommand('insertHTML', false, '\n' + $('input', this).val() + '\n');
          self.parent.tb_remove();
          return false;
        });

        $('a.cancel').click(function() {
          self.parent.tb_remove();
          return false;
        });
        // No idea why, but setting the focus only works in a timeout
        setTimeout(function() {
          $('#insertLink input').get(0).focus();
        }, 500);
      });
  %body
    #insertLink
      = form :action => '/' do
        %p
          %label{:for => 'insertLinkURL'} URL
          %input#insertLinkURL{:size => 50}
        %p.help
          For example http://twitter.com/til
        %p
          = submit 'OK'
          %a.cancel{:href=>"#"} Cancel


#lightbox_wrapper{ :style => "display: none;" }
  #lightbox_report_backdrop
  #lightbox_report
    %input#lightbox_report_update.button{:type => "button", :value=>"update now"}
    #lightbox_closer=image_tag('window/lightbox/buttons.png')
    #report
      The report should go here.

Remove the "update now" button in lightbox report.

#lightbox_wrapper{ :style => "display: none;" }
  #lightbox_report_backdrop
  #lightbox_report
    #lightbox_closer=image_tag('window/lightbox/buttons.png')
    #report
      The report should go here.


%h2
  #{@section.name}

%p
  %nav.breadcrumbs
    %ul
      %li
        = link_to 'Editorial', :editorial_root
      %li
        #{@section.name}

%h3 Pages

%p= link_to 'Add_page', new_editorial_node_path(section: @section.id)

%p
  -if @filter != 'submissions'
    =link_to 'Submissions', editorial_section_path(@section, filter: 'submissions')
  -else
    Submissions

  -if @filter != 'my_pages'
    =link_to 'My pages', editorial_section_path(@section, filter: 'my_pages')
  -else
    My pages

  -if @filter != nil
    =link_to 'All content', editorial_section_path(@section)
  -else
    All pages

%table{border: 1, cellpadding: 10}
  %thead
    %tr
      %td Title
      %td Type
      %td Status
      %td Author(s)
  %tbody
    - @section.nodes.order(updated_at: :desc).each do |page|
      %tr
        %td
          =link_to "#{page.name}", editorial_node_path(page.id)
        %td #{page.type}
        %td #{page.state}
        %td Author

Fix bug so New Page is now linking to prepare/interstitial

%h2
  #{@section.name}

%p
  %nav.breadcrumbs
    %ul
      %li
        = link_to 'Editorial', :editorial_root
      %li
        #{@section.name}

%h3 Pages

%p= link_to 'Add_page', prepare_editorial_nodes_path(section: @section.id)

%p
  -if @filter != 'submissions'
    =link_to 'Submissions', editorial_section_path(@section, filter: 'submissions')
  -else
    Submissions

  -if @filter != 'my_pages'
    =link_to 'My pages', editorial_section_path(@section, filter: 'my_pages')
  -else
    My pages

  -if @filter != nil
    =link_to 'All content', editorial_section_path(@section)
  -else
    All pages

%table{border: 1, cellpadding: 10}
  %thead
    %tr
      %td Title
      %td Type
      %td Status
      %td Author(s)
  %tbody
    - @section.nodes.order(updated_at: :desc).each do |page|
      %tr
        %td
          =link_to "#{page.name}", editorial_node_path(page.id)
        %td #{page.type}
        %td #{page.state}
        %td Author


- breadcrumb_title "Clusters"
- page_title "Clusters"

.clusters-container
  - if @clusters.empty?
    = render "empty_state"
  - else
    .top-area.adjust
      .nav-text
        = s_("ClusterIntegration|Clusters can be used to deploy applications and to provide Review Apps for this project")
      .pull-right.nav-bar-right
        = link_to s_("ClusterIntegration|Add cluster"), new_project_cluster_path(@project), class: "btn btn-success disabled has-tooltip js-add-cluster", title: s_("ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate")
    .ci-table.js-clusters-list
      .gl-responsive-table-row.table-row-header{ role: "row" }
        .table-section.section-30{ role: "rowheader" }
          = s_("ClusterIntegration|Cluster")
        .table-section.section-30{ role: "rowheader" }
          = s_("ClusterIntegration|Environment pattern")
        .table-section.section-30{ role: "rowheader" }
          = s_("ClusterIntegration|Project namespace")
        .table-section.section-10{ role: "rowheader" }
      - @clusters.each do |cluster|
        = render "cluster", cluster: cluster.present(current_user: current_user)
    = paginate @clusters, theme: "gitlab"

Remove Add Cluster button in clusters/index

- breadcrumb_title "Clusters"
- page_title "Clusters"

.clusters-container
  - if @clusters.empty?
    = render "empty_state"
  - else
    .top-area.adjust
      .nav-text
        = s_("ClusterIntegration|Clusters can be used to deploy applications and to provide Review Apps for this project")
    .ci-table.js-clusters-list
      .gl-responsive-table-row.table-row-header{ role: "row" }
        .table-section.section-30{ role: "rowheader" }
          = s_("ClusterIntegration|Cluster")
        .table-section.section-30{ role: "rowheader" }
          = s_("ClusterIntegration|Environment pattern")
        .table-section.section-30{ role: "rowheader" }
          = s_("ClusterIntegration|Project namespace")
        .table-section.section-10{ role: "rowheader" }
      - @clusters.each do |cluster|
        = render "cluster", cluster: cluster.present(current_user: current_user)
    = paginate @clusters, theme: "gitlab"


%ul.center-top-menu
  = nav_link(path: ['projects#index', 'root#index']) do
    = link_to dashboard_projects_path, title: 'Home', class: 'shortcuts-activity', data: {placement: 'right'} do
      Your Projects
  = nav_link(page: starred_dashboard_projects_path) do
    = link_to starred_dashboard_projects_path, title: 'Starred Projects', data: {placement: 'right'} do
      Starred Projects
  = nav_link(page: [explore_root_path, trending_explore_projects_path, starred_explore_projects_path, explore_projects_path], html_options: { class: 'hidden-xs' }) do
    = link_to explore_root_path, title: 'Explore', data: {placement: 'right'} do
      Explore Projects

Fix incorrect active state for "Your Projects" tab

%ul.center-top-menu
  = nav_link(page: [dashboard_projects_path, root_path]) do
    = link_to dashboard_projects_path, title: 'Home', class: 'shortcuts-activity', data: {placement: 'right'} do
      Your Projects
  = nav_link(page: starred_dashboard_projects_path) do
    = link_to starred_dashboard_projects_path, title: 'Starred Projects', data: {placement: 'right'} do
      Starred Projects
  = nav_link(page: [explore_root_path, trending_explore_projects_path, starred_explore_projects_path, explore_projects_path], html_options: { class: 'hidden-xs' }) do
    = link_to explore_root_path, title: 'Explore', data: {placement: 'right'} do
      Explore Projects


= simple_form_for resource do |f|
  = f.input :booking_import_attachment_id, :as => :hidden

  .row-fluid
    .span6
      = f.input :reference

  .row-fluid
    .span6
      = f.input :start_date, :as => :date_field
    .span6
      = f.input :end_date, :as => :date_field

  .row-fluid
    .span6
      = f.association :account

  .row-fluid.form-actions
    = f.button :submit

  %table.table.table-striped.table-condensed
    = f.fields_for :bookings do |b|
      %tr[b.object]
        %td.value_date= b.input :value_date, :as => :string, :wrapper => :inline
        %td.amount.currency= b.input :amount, :as => :string, :wrapper => :inline
        %td.title= b.input :title, :wrapper => :inline
        %td.comments= b.input :comments, :wrapper => :inline, :input_html => {:rows => 2}
        %td.debit_account= b.association :debit_account, :wrapper => :inline
        %td.credit_account= b.association :credit_account, :wrapper => :inline

Make most fields readonly and out of tabindex in booking import form.

= simple_form_for resource do |f|
  = f.input :booking_import_attachment_id, :as => :hidden

  .row-fluid
    .span6
      = f.input :reference

  .row-fluid
    .span6
      = f.input :start_date, :as => :date_field
    .span6
      = f.input :end_date, :as => :date_field

  .row-fluid
    .span6
      = f.association :account

  .row-fluid.form-actions
    = f.button :submit

  %table.table.table-striped.table-condensed
    = f.fields_for :bookings do |b|
      %tr[b.object]
        %td.value_date= b.input :value_date, :as => :string, :wrapper => :inline, :readonly => true, :input_html => { :tabindex => -1 }
        %td.amount.currency= b.input :amount, :as => :string, :wrapper => :inline, :readonly => true, :input_html => { :tabindex => -1 }
        %td.title= b.input :title, :wrapper => :inline, :readonly => true, :input_html => { :tabindex => -1 }
        %td.comments= b.input :comments, :wrapper => :inline, :input_html => {:rows => 2}
        %td.debit_account= b.association :debit_account, :wrapper => :inline
        %td.credit_account= b.association :credit_account, :wrapper => :inline


= form_tag('/organizations', :method => :get, :id=>"search-form") do
  %section#search-box
    %div
      %section#keyword-search-box
        %label{:for => "keyword"}
          I need...
        = search_field_tag :keyword, params[:keyword], :placeholder => "what are you looking for?", :list => "search-keywords"
        - cache ['keywords-list', *cip_keywords] do
          %datalist#search-keywords
            - cip_keywords.each do |keyword|
              %option{:value=>keyword}
                = keyword

        =# hidden_field_tag "service_area", "smc"
        = hidden_field_tag "kind", "Human Services"

      %button{:type=>'submit',:id=>'find-btn', :title=>"Search"}
        %span{"data-icon"=>"🔍" , :class=>"search-button ohana-icon"}
        %span Search

Add comment to default kind --> human services on _box partial

= form_tag('/organizations', :method => :get, :id=>"search-form") do
  %section#search-box
    %div
      %section#keyword-search-box
        %label{:for => "keyword"}
          I need...
        = search_field_tag :keyword, params[:keyword], :placeholder => "what are you looking for?", :list => "search-keywords"
        - cache ['keywords-list', *cip_keywords] do
          %datalist#search-keywords
            - cip_keywords.each do |keyword|
              %option{:value=>keyword}
                = keyword

        =# hidden_field_tag "service_area", "smc"
        =# hidden_field_tag "kind", "Human Services"

      %button{:type=>'submit',:id=>'find-btn', :title=>"Search"}
        %span{"data-icon"=>"🔍" , :class=>"search-button ohana-icon"}
        %span Search


- repo ||= 'etsource'

.details
  = gravatar_image_tag(commit.author.email, size: 140, class: 'avatar', gravatar: { default: 'http://beta.et-engine.com/assets/quintel-avatar.png' })
  %span.message
    %a.sha{ href: "https://github.com/quintel/#{ repo }/commit/#{ commit.sha }" }
      = truncate(commit.message.split("\n").first, length: 80)
  %span.author
    = commit.author.name
    %span.date
      == authored #{ time_ago_in_words(commit.date) } ago
.links
  %a.sha{ href: "https://github.com/quintel/#{ repo }/commit/#{ commit.sha }" }
    %span.ref= commit.sha[0..9]
    →

Fix link to default avatar

- repo ||= 'etsource'

.details
  = gravatar_image_tag(commit.author.email, size: 140, class: 'avatar', gravatar: { default: asset_url('quintel-avatar.png') })
  %span.message
    %a.sha{ href: "https://github.com/quintel/#{ repo }/commit/#{ commit.sha }" }
      = truncate(commit.message.split("\n").first, length: 80)
  %span.author
    = commit.author.name
    %span.date
      == authored #{ time_ago_in_words(commit.date) } ago
.links
  %a.sha{ href: "https://github.com/quintel/#{ repo }/commit/#{ commit.sha }" }
    %span.ref= commit.sha[0..9]
    →


.navbar
  %nav.footer
    %div
      = link_to controller: "help", action: "syntax" do
        Syntax Help
      •
      = link_to controller: "help", action: "rules" do
        Rules
      •
      = link_to controller: "help", action: "contact" do
        Contact
    %div
      = link_to controller: "set", action: "index" do
        Sets
      •
      = link_to controller: "artist", action: "index" do
        Artists
      •
      = link_to controller: "format", action: "index" do
        Formats
      •
      = link_to controller: "deck", action: "index" do
        Decks

Add Cockatrice download link to footer

.navbar
  %nav.footer
    %div
      = link_to controller: "help", action: "syntax" do
        Syntax Help
      •
      = link_to controller: "help", action: "rules" do
        Rules
      •
      = link_to controller: "help", action: "contact" do
        Contact
    %div
      = link_to controller: "set", action: "index" do
        Sets
      •
      = link_to controller: "artist", action: "index" do
        Artists
      •
      = link_to controller: "format", action: "index" do
        Formats
      •
      = link_to controller: "deck", action: "index" do
        Decks
      •
      %a{href: "/trice.zip"}
        Cockatrice Download


.form
  = simple_form_for @article do |f|

    = f.input_field :title, class: 'form-input form-input--clear mbs tfh tsxl', placeholder: 'Enter an Article Title'
    = f.input_field :content, class: 'form-input form-textarea mbs', rows: 12
    = f.input_field :tag_tokens, label: "Tags", input_html: { data: {load: @tags} }
    - if @article.author.blank?
      = f.input :author_id, as: :hidden, input_html: { value: current_user.try(:id) }
    = f.input :editor_id, as: :hidden, input_html: { value: current_user.try(:id) }
    = f.button :submit, class: "btn btn--a mtm"

Revert Article Tokeninput to `input` method

.form
  = simple_form_for @article do |f|

    = f.input_field :title, class: 'form-input form-input--clear mbs tfh tsxl', placeholder: 'Enter an Article Title'
    = f.input_field :content, class: 'form-input form-textarea mbs', rows: 12
    = f.input :tag_tokens, label: "Tags", input_html: { data: {load: @tags} }
    - if @article.author.blank?
      = f.input :author_id, as: :hidden, input_html: { value: current_user.try(:id) }
    = f.input :editor_id, as: :hidden, input_html: { value: current_user.try(:id) }
    = f.button :submit, class: "btn btn--a mtm"


-if logged_in?
  %h1
    Welcome
    = link_to(current_user.login)

  %br
    .well

Add course tables to dashboard

-if logged_in?
  %h1
    Welcome
    = link_to(current_user.login)
  %br

  - unless @registered_courses.nil?
    - @registered_courses.each do |registered_course|
      .well
        %h4 CourseName
        %br
        %table.table
          %tr
            %th Submissions
            %th Status
            %th Deadline

  - else
    %br
      .well
        You are currently not registered to any course


#drawer
  .new_note_search_container
    = form_tag notes_url, method: :get, class: "flex" do
      = text_field_tag :search, params[:search], placeholder: "Search"
    = link_to notes_path, method: :post, class: "new_note_link" do
      %i.material-icons add
  - notes.each do |note|
    = link_to note_path(note, search: params[:search]),
        class: "truncated-note #{active_note(note, params)}" do
      .time_ago
        = time_ago_in_words note.updated_at, include_seconds: true
      .note
        - if note.content.blank?
          %p.temp_note This is a new note that is waiting to be written
        - else
          = truncate_html standard_markdown(note), length: 60, omission: ""

Add some new lines to _drawer partial

#drawer
  .new_note_search_container
    = form_tag notes_url, method: :get, class: "flex" do
      = text_field_tag :search, params[:search], placeholder: "Search"

    = link_to notes_path, method: :post, class: "new_note_link" do
      %i.material-icons add

  - notes.each do |note|
    = link_to note_path(note, search: params[:search]),
        class: "truncated-note #{active_note(note, params)}" do
      .time_ago= time_ago_in_words note.updated_at, include_seconds: true
      .note
        - if note.content.blank?
          %p.temp_note This is a new note that is waiting to be written
        - else
          = truncate_html standard_markdown(note), length: 90, omission: ""


#homepage-content.even
  Welcome to the Glowfic Constellation. Admire the tiny, tiny words.

  %p
    There is a (work in progress) community
    = link_to 'guide to Glowfic.', 'https://docs.google.com/document/d/1_4Z2zdRKaSwZPm3S0X14DYoo7w46U_MZ4En6oOediNQ/edit'

  %p
    Join our community on:
    %ul
      %li= link_to "Alicorn's forum", 'http://alicorn.elcenia.com/board/index.php', target: '_blank'
      %li= link_to "IRC", 'https://client00.chat.mibbit.com/?channel=%23glowfic&server=irc.psigenix.net', target: '_blank'
      %li= link_to "Discord", 'https://discord.gg/Ss6fRFj', target: '_blank'
      %li= link_to "Tumblr", 'http://alicorn.elcenia.com/board/viewtopic.php?f=10&t=615', target: '_blank'

Remove Tumblr information from the home page until a more public-facing list has been curated


- if @asset.depreciable?
  = format_field("Book Value", format_as_currency(@asset.book_value))

Fix issue loading accounting view component

- if asset.depreciable?
  = format_field("Book Value", format_as_currency(asset.book_value))


= render "header", division: @division

%h2 Related Policies

= render "current_policies_list", division: @division, display: @display

%h3 Make a new connection

- if user_signed_in?
  = simple_form_for @policy_division, url: create_policy_division_path(division_params(@division)), html: {class: 'form-inline policyvote'} do |f|
    %legend.small
      %p Connect this division with relevant policies.
      %p Please read policy definitions and the division’s description before altering list.
    - if @policy_division.errors.any?
      .alert.alert-danger= @policy_division.errors.full_messages.to_sentence
    %fieldset
      %label People who are for
      - # TODO: Don't display policies already selected
      = f.collection_select :policy_id, Policy.all, "id", "name", {prompt: "Select related policy"}, size: 1, class: "selectpicker", data: {width: "auto"}
      would have
      %label voted
      = vote_select(f, nil, prompt: "Select vote")
    = f.submit 'Connect policy', class: 'btn btn-primary'
- else
  %p
    = link_to "Login", new_user_session_path, title: "Login to edit policies"
    to edit policy connections.

Sort policies by name in select

= render "header", division: @division

%h2 Related Policies

= render "current_policies_list", division: @division, display: @display

%h3 Make a new connection

- if user_signed_in?
  = simple_form_for @policy_division, url: create_policy_division_path(division_params(@division)), html: {class: 'form-inline policyvote'} do |f|
    %legend.small
      %p Connect this division with relevant policies.
      %p Please read policy definitions and the division’s description before altering list.
    - if @policy_division.errors.any?
      .alert.alert-danger= @policy_division.errors.full_messages.to_sentence
    %fieldset
      %label People who are for
      - # TODO: Don't display policies already selected
      = f.collection_select :policy_id, Policy.all.order(:name), "id", "name", {prompt: "Select related policy"}, size: 1, class: "selectpicker", data: {width: "auto"}
      would have
      %label voted
      = vote_select(f, nil, prompt: "Select vote")
    = f.submit 'Connect policy', class: 'btn btn-primary'
- else
  %p
    = link_to "Login", new_user_session_path, title: "Login to edit policies"
    to edit policy connections.


%p
  = label_tag 'settings[rescue][resync_all_projects]', l(:label_resync_all_projects)
  = check_box_tag 'settings[rescue][resync_all_projects]', 'true', false

%p
  = label_tag 'settings[rescue][resync_all_ssh_keys]', l(:label_resync_all_ssh_keys)
  = check_box_tag 'settings[rescue][resync_all_ssh_keys]', 'true', false

%p
  = label_tag 'settings[rescue][regenerate_all_ssh_keys]', l(:label_regenerate_all_ssh_keys)
  = check_box_tag 'settings[rescue][regenerate_all_ssh_keys]', 'true', false
  %span{ style: 'display: inline-table;' }
    %em= l(:label_regenerate_all_ssh_keys_desc)
    %br
    %em
      = fa_icon('fa-warning')
      = l(:label_regenerate_all_ssh_keys_desc2)

%p
  = label_tag 'settings[rescue][flush_gitolite_cache]', l(:label_flush_cache)
  = check_box_tag 'settings[rescue][flush_gitolite_cache]', 'true', false

Remove regenerate_all_ssh_keys check box (too dangerous)

%p
  = label_tag 'settings[rescue][resync_all_projects]', l(:label_resync_all_projects)
  = check_box_tag 'settings[rescue][resync_all_projects]', 'true', false

%p
  = label_tag 'settings[rescue][resync_all_ssh_keys]', l(:label_resync_all_ssh_keys)
  = check_box_tag 'settings[rescue][resync_all_ssh_keys]', 'true', false

%p
  = label_tag 'settings[rescue][flush_gitolite_cache]', l(:label_flush_cache)
  = check_box_tag 'settings[rescue][flush_gitolite_cache]', 'true', false


%tr.nested-fields
  %td
    = f.text_field :description, value: f.object.description, disabled: true
  %td
    = f.number_field :quantity, value: @claim.new_record? ? nil : f.object.quantity, class: 'quantity'
  %td
    = f.number_field :rate, value: @claim.new_record? ? nil : number_with_precision(f.object.rate, precision: 2), class: 'rate'
  %td
    = f.number_field :amount, value: @claim.new_record? ? nil : number_with_precision(f.object.amount, precision: 2), class: 'amount', disabled: true

  = f.hidden_field :fee_type_id, value: f.object.fee_type_id

Set default zero values in basic fees

%tr.nested-fields
  %td
    = f.text_field :description, value: f.object.description, disabled: true
  %td
    = f.number_field :quantity, value: f.object.quantity, class: 'quantity'
  %td
    = f.number_field :rate, value: number_with_precision(f.object.rate, precision: 2), class: 'rate'
  %td
    = f.number_field :amount, value: number_with_precision(f.object.amount, precision: 2), class: 'amount', disabled: true

  = f.hidden_field :fee_type_id, value: f.object.fee_type_id


%h2 #{@language}

- if @users.any?
  #users.row.clearfix
    .col-md-12
      %h3
        =t("language.developers.count", count: user_count, language: @language)
        = link_to t("view_all"), users_language_path(@language.downcase), :class => 'btn btn-default'

        %ul.avatar-list.clearfix
          = render @users

- if @pull_requests.any?
  #pull_requests.row.clearfix
    .col-md-12
      %h3
        =t("language.pull_requests.latest.count", count: pull_request_count_for_language, language: @language)
        = link_to t("view_all"), pull_requests_language_path(@language.downcase), :class => 'btn btn-default pull-right'

      = render @pull_requests

- if @projects.any?
  #projects.row.clearfix
    .col-md-12
      %h3
        = t("language.projects_count", count: project_count_for_language, language: @language)
        = link_to t("language.projects.suggest", language: @language), new_project_path(language: @language.downcase), :class => 'btn btn-default pull-right'
        = link_to t("view_all"), projects_language_path(@language.downcase), :class => 'btn btn-default pull-right'

    = render @projects

Remove big gap on language pages


%html{lang: "en"}
  %head
    %meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"}
      %title
        GitLab
  :css
    img {
      max-width: 100%;
      height: auto;
    }
    p.details {
      font-style:italic;
      color:#777
    }
    .footer p {
      font-size:small;
      color:#777
    }
    pre.commit-message {
      white-space: pre-wrap;
    }
    .file-stats a {
      text-decoration: none;
    }
    .file-stats .new-file {
      color: #090;
    }
    .file-stats .deleted-file {
      color: #B00;
    }
  %body
    %div.content
      = yield
    %div.footer{style: "margin-top: 10px;"}
      %p
        —
        %br
        - if @target_url
          #{link_to "View it on GitLab", @target_url}
          = email_action @target_url
        - if @project && !@disable_footer
          You're receiving this notification because you are a member of the #{link_to_unless @target_url, @project.name_with_namespace, namespace_project_url(@project.namespace, @project)} project team.

Add "Reply to this email directly" to notification footer.

%html{lang: "en"}
  %head
    %meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"}
      %title
        GitLab
  :css
    img {
      max-width: 100%;
      height: auto;
    }
    p.details {
      font-style:italic;
      color:#777
    }
    .footer p {
      font-size:small;
      color:#777
    }
    pre.commit-message {
      white-space: pre-wrap;
    }
    .file-stats a {
      text-decoration: none;
    }
    .file-stats .new-file {
      color: #090;
    }
    .file-stats .deleted-file {
      color: #B00;
    }
  %body
    %div.content
      = yield
    %div.footer{style: "margin-top: 10px;"}
      %p
        —
        %br
        - if @target_url
          - if @reply_by_email
            Reply to this email directly or
            #{link_to "view it on GitLab", @target_url}.
          - else
            #{link_to "View it on GitLab", @target_url}
          = email_action @target_url
        - if @project && !@disable_footer
          You're receiving this notification because you are a member of the #{link_to_unless @target_url, @project.name_with_namespace, namespace_project_url(@project.namespace, @project)} project team.


- form_for :searches, ([@search]) do |f|
  = f.error_messages

  %p
    %label{ :for => 'location_id' } 1.) Select a location
    %select#location_id{ :name => "location_id" }
      %option{ :value => "" }
        Please select a location
        - Location.all.each do |location|
          %option{ :value => location.id, :selected => location.id == @search.location_id.to_i }
            = h location.name
  %p
    %label 2.)
    = f.submit 'Where should I have lunch?'

  %p= h @search.venue_name
  %p= h @search.comments
  = map_canvas("map_canvas", @search.venue_address)

Hide search results if no data

- form_for :searches, ([@search]) do |f|
  = f.error_messages

  %p
    %label{ :for => 'location_id' } 1.) Select a location
    %select#location_id{ :name => "location_id" }
      %option{ :value => "" }
        Please select a location
        - Location.all.each do |location|
          %option{ :value => location.id, :selected => location.id == @search.location_id.to_i }
            = h location.name
  %p
    %label 2.)
    = f.submit 'Where should I have lunch?'

- if @search.venue_name
  %p= h @search.venue_name
  %p= h @search.comments
  = map_canvas("map_canvas", @search.venue_address)


= content_tag(:span, h(log_line.text).gsub("\n", "
").html_safe, class: "#{log_line.stream} log_line")

Remove strange hack with carriage returns on the logs

= content_tag(:span, log_line.text, class: "#{log_line.stream} log_line")


- sidebar = render 'sidebar'
!!! 5
%html
  %head
    =render '/app_frame/layout/head'
  %body
    .topbar
      .fill
        .container-fluid
          =link_to(Settings.app_name, controller_namespaces + [:root], :class => 'brand')
          %ul.nav
            =render "/#{controller_namespaces.join("/")}/layout/top_menu"
          %ul.nav.secondary-nav
            =render "/#{controller_namespaces.join("/")}/layout/secondary_menu"

    #main.container-fluid
      -if sidebar.present?
        .content
          =render 'breadcrumb'
          =render '/app_frame/layout/flashes'
          =yield
        .sidebar
          = sidebar
      -else
        =render 'breadcrumb'
        =render '/app_frame/layout/flashes'
        =yield

Add dropdown functionality to topbar

- sidebar = render 'sidebar'
!!! 5
%html
  %head
    =render '/app_frame/layout/head'
  %body
    .topbar{:'data-dropdown'=>"dropdown"}
      .fill
        .container-fluid
          =link_to(Settings.app_name, controller_namespaces + [:root], :class => 'brand')
          %ul.nav
            =render "/#{controller_namespaces.join("/")}/layout/top_menu"
          %ul.nav.secondary-nav
            =render "/#{controller_namespaces.join("/")}/layout/secondary_menu"

    #main.container-fluid
      -if sidebar.present?
        .content
          =render 'breadcrumb'
          =render '/app_frame/layout/flashes'
          =yield
        .sidebar
          = sidebar
      -else
        =render 'breadcrumb'
        =render '/app_frame/layout/flashes'
        =yield


:ruby
  rep = CapitalPlanSummaryReport.new
  @data = rep.get_data(@organization_list, {})

.row
  - @data[:data].each do |row|
    = render :partial => 'capital_projects/capital_plan_summary_detail', :locals => {:year => row[0], :num_replace => row[1], :num_rehab => row[2], :cost => row[3]}

Remove possible class var clash

:ruby
  rep = CapitalPlanSummaryReport.new
  results = rep.get_data(@organization_list, {})

.row
  - results[:data].each do |row|
    = render :partial => 'capital_projects/capital_plan_summary_detail', :locals => {:year => row[0], :num_replace => row[1], :num_rehab => row[2], :cost => row[3]}


%h2.panel__heading
  %span.panel__heading-icon.fa.fa-edit
  Your recent drafts
- PagePresenter.collect(@last_draft_pages).each do |page|
  %p
    = link_to page.label, edit_comfy_admin_cms_site_page_path(page.site, page)
    | Last edit:
    = page.last_update

Update Drafts dashboard panel heading copy

%h2.panel__heading
  %span.panel__heading-icon.fa.fa-edit
  Recent drafts
- PagePresenter.collect(@last_draft_pages).each do |page|
  %p
    = link_to page.label, edit_comfy_admin_cms_site_page_path(page.site, page)
    | Last edit:
    = page.last_update


%p
  Uw arts of behandelaar, #{mail_to @requester_name}, heeft met u afgesproken dat u een vragenlijst gaat invullen. Als dit inderdaad het geval is, klik dan op onderstaande link.

%p
  = link_to 'Vul de vragenlijst in', @link

%p
  Als dit niet het geval is, kunt u deze e-mail als niet verzonden beschouwen.

Remove broken mailto link from invitation email

%p
  Uw arts of behandelaar, #{@requester_name}, heeft met u afgesproken dat u een vragenlijst gaat invullen. Als dit inderdaad het geval is, klik dan op onderstaande link.

%p
  = link_to 'Vul de vragenlijst in', @link

%p
  Als dit niet het geval is, kunt u deze e-mail als niet verzonden beschouwen.


%p
  The General Meeting that happend on
  = task.subject.happened_on.to_s(:long_ordinal)
  needs to have its minutes recorded.
%p
  = link_to("Enter minutes for this meeting", general_meeting_path(task.subject))

Fix that meeting minute task partial didn't link to meeting edit page.

%p
  The General Meeting that happend on
  = task.subject.happened_on.to_s(:long_ordinal)
  needs to have its minutes recorded.
%p
  = link_to("Enter minutes for this meeting", edit_general_meeting_path(task.subject))


= nav_entry t('views.navigation.notifications'), notifications_path, badge: notification_count, class: 'd-block d-sm-none'
- notifications = Notification.for(current_user).where(new: true).limit(4)
%li.nav-item.dropdown.d-none.d-sm-block
  %a.nav-link.dropdown-toggle{href: "#", "data-toggle" => "dropdown"}
    - if notification_count.nil?
      %i.fa.fa-bell-o
    - else
      %i.fa.fa-bell
    %span.sr-only Notifications
    %span.badge= notification_count
  .dropdown-menu.notification-dropdown
    - if notifications.count == 0
      .dropdown-item.text-center.p-2
        %i.fa.fa-bell-o.notification__bell-icon
        %p No new notifications.
      %a.dropdown-item.text-center{href: notifications_path('all')}
        %i.fa.fa-fw.fa-chevron-right
        Show all notifications
    - else
      - notifications.each do |notification|
        .dropdown-item
          = render "notifications/type/#{notification.target_type.downcase}", notification: notification

      %a.dropdown-item.text-center{href: notifications_path}
        %i.fa.fa-fw.fa-chevron-right
        Show all new notifications

Fix notification menu clipping out of view

= nav_entry t('views.navigation.notifications'), notifications_path, badge: notification_count, class: 'd-block d-sm-none'
- notifications = Notification.for(current_user).where(new: true).limit(4)
%li.nav-item.dropdown.d-none.d-sm-block
  %a.nav-link.dropdown-toggle{href: "#", "data-toggle" => "dropdown"}
    - if notification_count.nil?
      %i.fa.fa-bell-o
    - else
      %i.fa.fa-bell
    %span.sr-only Notifications
    %span.badge= notification_count
  .dropdown-menu.dropdown-menu-right.notification-dropdown
    - if notifications.count == 0
      .dropdown-item.text-center.p-2
        %i.fa.fa-bell-o.notification__bell-icon
        %p No new notifications.
      %a.dropdown-item.text-center{href: notifications_path('all')}
        %i.fa.fa-fw.fa-chevron-right
        Show all notifications
    - else
      - notifications.each do |notification|
        .dropdown-item
          = render "notifications/type/#{notification.target_type.downcase}", notification: notification

      %a.dropdown-item.text-center{href: notifications_path}
        %i.fa.fa-fw.fa-chevron-right
        Show all new notifications


= render(:partial => 'shared/form_errors', :locals => {:obj => @asset_event}) unless @asset_event.errors.empty?

.row
  .col-md-3
    = dialog_tag('Asset', {:icon => "fa fa-list", :class => "header-part"}) do
      = render :partial => 'assets/summary', :locals => {:asset => @asset}
  .col-md-6
    - event_name = @asset_event.asset_event_type.class_name == 'RehabilitationUpdateEvent' ? 'Rebuild / Rehabilitation' : @asset_event.asset_event_type.name
    = dialog_tag(event_name, {:icon => @asset_event.asset_event_type.display_icon_name, :class => "header-part"}) do
      = render "#{@asset_event.class.name.underscore}_form"
  .col-md-3
    = dialog_tag('Notes', {:icon => 'fa fa-book', :class => "header-part"}) do
      = render "#{@asset_event.class.name.underscore}_notes"

= render 'scripts'

Revert "TTPLAT-919 update event label"

= render(:partial => 'shared/form_errors', :locals => {:obj => @asset_event}) unless @asset_event.errors.empty?

.row
  .col-md-3
    = dialog_tag('Asset', {:icon => "fa fa-list", :class => "header-part"}) do
      = render :partial => 'assets/summary', :locals => {:asset => @asset}
  .col-md-6
    = dialog_tag(@asset_event.asset_event_type.name, {:icon => @asset_event.asset_event_type.display_icon_name, :class => "header-part"}) do
      = render "#{@asset_event.class.name.underscore}_form"
  .col-md-3
    = dialog_tag('Notes', {:icon => 'fa fa-book', :class => "header-part"}) do
      = render "#{@asset_event.class.name.underscore}_notes"

= render 'scripts'


-record = local_assigns[:record] || nil
-form = local_assigns[:form] || nil

-if record
  -record.comments.each do |comment|
    =form.simple_fields_for "comments_attributes[]", comment do |comment_form|
      =comment_form.input :id, wrapper_html: {class: "hidden"}
      =comment_form.input :locale, wrapper_html: {class: "hidden"}
      =comment_form.input :comment, label: "Comment (#{comment_form.object.locale})"

Fix weird bug with comments attributes fields

-record = local_assigns[:record] || nil
-form = local_assigns[:form] || nil

-if record
  -record.comments.each do |comment|
    =form.simple_fields_for :comments, comment do |comment_form|
      =comment_form.input :id, wrapper_html: {class: "hidden"}
      =comment_form.input :locale, wrapper_html: {class: "hidden"}
      =comment_form.input :comment, label: "Comment (#{comment_form.object.locale})"


!!! 5
%html{ html_attrs }
  %head
    %title omelet
    = stylesheet_link_tag    "omelet_ui/application", :media => "all"
    = javascript_include_tag "omelet_ui/application"
    = csrf_meta_tags

  %body
    -# = render :partial => 'layouts/sidebar'
    %article
      -# = render :partial => 'layouts/breadcrumb'
      %header
        #welcome-text
          Hey there Jerad. Need to go
          = link_to "back to the homepage?", OmeletUi.home_path
        #return-text
          powered by omelet

      %nav
        #title-container
          #company-name
            = OmeletUi.app_name
          #reports-text
            reports
        #all-button
          #all-button-icon
            M
          #all-button-text
            ALL
        #queued-button
          #queued-button-icon
            S
          #queued-button-text
            QUEUED
        #completed-button
          #completed-button-icon
            F
          #completed-button-text
            FINISHED
      %section
        = yield

Fix report view so that it doesn't reffer to the user as Jerad

!!! 5
%html{ html_attrs }
  %head
    %title omelet
    = stylesheet_link_tag    "omelet_ui/application", :media => "all"
    = javascript_include_tag "omelet_ui/application"
    = csrf_meta_tags

  %body
    -# = render :partial => 'layouts/sidebar'
    %article
      -# = render :partial => 'layouts/breadcrumb'
      %header
        #welcome-text
          Hey there! Need to go
          = link_to "back to the homepage?", OmeletUi.home_path
        #return-text
          powered by omelet

      %nav
        #title-container
          #company-name
            = OmeletUi.app_name
          #reports-text
            reports
        #all-button
          #all-button-icon
            M
          #all-button-text
            ALL
        #queued-button
          #queued-button-icon
            S
          #queued-button-text
            QUEUED
        #completed-button
          #completed-button-icon
            F
          #completed-button-text
            FINISHED
      %section
        = yield


.dropdown.inline
  = dropdown_toggle(member_sort_options_hash[@sort], { toggle: 'dropdown' }, { id: 'sort-members-dropdown' })
  %ul.dropdown-menu.dropdown-menu-align-right.dropdown-menu-selectable
    %li.dropdown-header
      Sort by
    - member_sort_options_hash.each do |value, title|
      %li
        = link_to filter_group_project_member_path(sort: value), class: ("is-active" if @sort == value) do
          = title

Remove unnecessary curly braces from sort dropdown partial

.dropdown.inline
  = dropdown_toggle(member_sort_options_hash[@sort], { toggle: 'dropdown' }, id: 'sort-members-dropdown')
  %ul.dropdown-menu.dropdown-menu-align-right.dropdown-menu-selectable
    %li.dropdown-header
      Sort by
    - member_sort_options_hash.each do |value, title|
      %li
        = link_to filter_group_project_member_path(sort: value), class: ("is-active" if @sort == value) do
          = title


= render :partial => 'spree/admin/shared/order_tabs', :locals => { :current => 'Adjustments' }

- content_for :page_title do
  %i.icon-arrow-right
  = t(:adjustments)

- content_for :page_actions do
  %li= button_link_to t(:new_adjustment), new_admin_order_adjustment_url(@order), :icon => 'icon-plus'
  %li= button_link_to t(:back_to_orders_list), admin_orders_path, :icon => 'icon-arrow-left'

= render :partial => 'adjustments_table'

= button_link_to t(:continue), @order.cart? ? new_admin_order_payment_url(@order) : admin_orders_url, :icon => 'icon-arrow-right'

Fix route on "continue" button on admin adjustments page

= render :partial => 'spree/admin/shared/order_tabs', :locals => { :current => 'Adjustments' }

- content_for :page_title do
  %i.icon-arrow-right
  = t(:adjustments)

- content_for :page_actions do
  %li= button_link_to t(:new_adjustment), new_admin_order_adjustment_url(@order), :icon => 'icon-plus'
  %li= button_link_to t(:back_to_orders_list), admin_orders_path, :icon => 'icon-arrow-left'

= render :partial => 'adjustments_table'

= button_link_to t(:continue), admin_order_payments_url(@order), :icon => 'icon-arrow-right'


%head
  %title
    SUSE Hack Week - Past Project
  %link{ :href => "../../images/favicon.gif", :rel => "shortcut icon" }
  %link{ :href => "../../css/hackweek-single-page.css", :type => "text/css", :rel => "stylesheet" }
%body
  #navigation
    %li#start-link.logo.invert
      %a{ :href => "../../index.html" }
        %img{ :width => "112", :height => "52", :border => "0", :src => "../../images/px.gif" }
    %li#what-is-link.invert
      %a{ :href => "../../index.html#what-is" }
        what is hack week?
    %li#agenda-link.invert
      %a{ :href => "../../index.html#agenda" }
        agenda
    %li#projects-link.invert
      %a{ :href => "../../index.html#projects" }
        projects
    %li#where-link.invert
      %a{ :href => "../../index.html#where" }
        where?
  #content
    #wrapper
      #wrapper-title
        %h1
          = render_title
        %p
      #wrapper-content
        = render_content

Remove <p> from wrapper-title div

%head
  %title
    SUSE Hack Week - Past Project
  %link{ :href => "../../images/favicon.gif", :rel => "shortcut icon" }
  %link{ :href => "../../css/hackweek-single-page.css", :type => "text/css", :rel => "stylesheet" }
%body
  #navigation
    %li#start-link.logo.invert
      %a{ :href => "../../index.html" }
        %img{ :width => "112", :height => "52", :border => "0", :src => "../../images/px.gif" }
    %li#what-is-link.invert
      %a{ :href => "../../index.html#what-is" }
        what is hack week?
    %li#agenda-link.invert
      %a{ :href => "../../index.html#agenda" }
        agenda
    %li#projects-link.invert
      %a{ :href => "../../index.html#projects" }
        projects
    %li#where-link.invert
      %a{ :href => "../../index.html#where" }
        where?
  #content
    #wrapper
      #wrapper-title
        %h1
          = render_title
      #wrapper-content
        = render_content


= render partial: 'shared/alerts'
.container
  %h2 drop it like it's hot
  %h5 drag your splits onto this page, or any page
  %form{action: upload_path, method: :post, enctype: "multipart/form-data"}
    %input{type: :hidden, name: 'authenticity_token', value: form_authenticity_token}
    .form-group
      %input{type: :file, name: 'file'}
    .form-group
      %input{type: :submit, value: 'upload'}

Remove authenticity token from manual upload form

= render partial: 'shared/alerts'
.container
  %h2 drop it like it's hot
  %h5 drag your splits onto this page, or any page
  %form{action: upload_path, method: :post, enctype: "multipart/form-data"}
    .form-group
      %input{type: :file, name: 'file'}
    .form-group
      %input{type: :submit, value: 'upload'}


%h1 Buildpacks

.alert.alert-info
  %i.fa.fa-flask.fa-3x.pull-left
  N.B. Buildpacks are currently experimental and not available to everyone. If you would like access
  to Buildpacks and agree to give us feedback please contact us and we'll enable the feature for you.

:markdown
  #{render "buildpacks.md"}

  ## Ruby

  #{render "buildpacks_ruby.md"}

  ## PHP

  #{render "buildpacks_php.md"}

  ## Perl

  #{render "buildpacks_perl.md"}

  ## Python

  #{render "buildpacks_python.md"}

Put different language sections in a tab area

%h1 Buildpacks

.alert.alert-info
  %i.fa.fa-flask.fa-3x.pull-left
  N.B. Buildpacks are currently experimental and not available to everyone. If you would like access
  to Buildpacks and agree to give us feedback please contact us and we'll enable the feature for you.

:markdown
  #{render "buildpacks.md"}

%ul.nav.nav-tabs
  %li.active= link_to "Ruby", "#ruby", data: {toggle: "tab"}
  %li= link_to "PHP", "#php", data: {toggle: "tab"}
  %li= link_to "Perl", "#perl", data: {toggle: "tab"}
  %li= link_to "Python", "#python", data: {toggle: "tab"}
.tab-content
  .tab-pane.fade.in.active#ruby
    :markdown
      #{render "buildpacks_ruby.md"}
  .tab-pane.fade#php
    :markdown
      #{render "buildpacks_php.md"}
  .tab-pane.fade#perl
    :markdown
      #{render "buildpacks_perl.md"}
  .tab-pane.fade#python
    :markdown
      #{render "buildpacks_python.md"}


- site_name = Growstuff::Application.config.site_name
%p Hello #{@notification.recipient.login_name},

%p
  You have received a message from
  = link_to @notification.sender.login_name, url_for(:controller => 'members', :action => 'show', :id => @notification.sender.id, :only_path => false )
  on #{site_name} at #{@notification.created_at.to_s(:date)}
  - if @notification.post
    in response to
    = link_to @notification.post.subject, url_for(:controller => 'posts', :action => 'show', :id => @notification.post.id, :only_path => false)
  \.
%blockquote
  :markdown
    #{strip_tags @notification.body}

%p
  = link_to "View this message in your inbox", url_for(:controller => 'notifications', :action => 'show', :id => @notification.id, :only_path => false)
  %br/
  = link_to "Turn off these notifications", edit_member_registration_url

%p
  The #{site_name} team.
  %br/
  =link_to root_url, root_url

Tidy up URL handlers in notification email.

- site_name = Growstuff::Application.config.site_name
%p Hello #{@notification.recipient.login_name},

%p
  You have received a message from
  = link_to @notification.sender.login_name, member_url(@notification.sender)
  on #{site_name} at #{@notification.created_at.to_s(:date)}
  - if @notification.post
    in response to
    = link_to @notification.post.subject, post_url(@notification.post)
  \.
%blockquote
  :markdown
    #{strip_tags @notification.body}

%p
  = link_to "View this message in your inbox", notification_url(@notification)
  %br/
  = link_to "Turn off these notifications", edit_member_registration_url

%p
  The #{site_name} team.
  %br/
  =link_to root_url, root_url


%section#team.container
  %h3.section__title= I18n.t("corporate.team.title")
  .row
    - data.team.each do |member|
      .col-3.col.col--centered
        %img{src: gravatar_for(member.email), class: "avatar", alt: member.email}
        %h4= member.name
        %ul.social-networks
          %li
            %a{href: "https://github.com/#{member.github}", target: "_blank"} Github
          %li
            %a{href: "https://twitter.com/#{member.twitter}", target: "_blank"} Twitter
  .row
    .col-1.col.col--centered
      %p= I18n.t("corporate.team.join-us")

Support team members without twitter account

%section#team.container
  %h3.section__title= I18n.t("corporate.team.title")
  .row
    - data.team.each do |member|
      .col-3.col.col--centered
        %img{src: gravatar_for(member.email), class: "avatar", alt: member.email}
        %h4= member.name
        %ul.social-networks
          %li
            %a{href: "https://github.com/#{member.github}", target: "_blank"} Github
          - if member.twitter
            %li
              %a{href: "https://twitter.com/#{member.twitter}", target: "_blank"}
                Twitter
  .row
    .col-1.col.col--centered
      %p= I18n.t("corporate.team.join-us")


- if @harvest.planting
  = link_to "#{@harvest.planting.crop.name} planted on #{@harvest.planting.planted_at}",
    planting_path(@harvest.planting)
  in
  = link_to @harvest.planting.garden, garden_path(@harvest.planting.garden)
- elsif @matching_plantings && @harvest.owner == current_member
  Is this from one of these plantings?
  = form_for(@harvest) do |f|
    - @matching_plantings.each do |planting|
      = f.radio_button :planting_id, planting.id
      = label_tag(:planting, planting)
      %br/
    = f.submit "save", class: 'btn btn-default btn-xs'
- else
  Unknown

Use .field to format planting options on harvests

- if @harvest.planting
  = link_to "#{@harvest.planting.crop.name} planted on #{@harvest.planting.planted_at}",
    planting_path(@harvest.planting)
  in
  = link_to @harvest.planting.garden, garden_path(@harvest.planting.garden)
- elsif @matching_plantings && @harvest.owner == current_member
  Is this from one of these plantings?
  = form_for(@harvest) do |f|
    - @matching_plantings.each do |planting|
      .field
        = f.radio_button :planting_id, planting.id
        = label_tag(:planting, planting)
    = f.submit "save", class: 'btn btn-default btn-xs'
- else
  Unknown


- content_for :header do
  #{@team.display_name}

- content_for :subheading do
  #{@team.division.name} - #{@solved_challenges.count} solved challenges

= render partial: 'team_summary'

Add pluralization for users solved challenges

- content_for :header do
  #{@team.display_name}

- content_for :subheading do
  #{@team.division.name} - #{@solved_challenges.size} solved #{pluralize(@solved_challenges.size, 'challenge')}

= render partial: 'team_summary'


!!!
- conditional_html
%head
  %meta{:charset => "utf-8"}
  %title Tweet Depository
  = csrf_meta_tags
  %meta{:content => "Archive your Tweets", :name => "description"}
  %meta{:content => "on", "http-equiv" => "cleartype"}
  %meta{:content => "IE=edge,chrome=1", "http-equiv" => "X-UA-Compatible"}
  %meta{:content => "width=device-width, initial-scale=1.0", :name => "viewport"}

  = favicon_link_tag "/favicon.ico"
  = stylesheet_link_tag "global", media: "all"
  = stylesheet_link_tag "ss-standard", media: "all"
  = javascript_include_tag "application"

%body
  %article
    - if notice
      .flash.notice= notice
    - if alert
      .flash.alert= alert
    = yield

Use noindex, nofollow if the timeline is private.

!!!
- conditional_html
%head
  %meta{:charset => "utf-8"}
  %title Tweet Depository
  = csrf_meta_tags
  %meta{:content => "Archive your Tweets", :name => "description"}
  %meta{:content => "on", "http-equiv" => "cleartype"}
  %meta{:content => "IE=edge,chrome=1", "http-equiv" => "X-UA-Compatible"}
  %meta{:content => "width=device-width, initial-scale=1.0", :name => "viewport"}

  - unless ENV["PUBLIC_TIMELINE"] =~ /\Atrue\z/i
    %meta{:content => "noindex, nofollow", :name => "robots"}

  = favicon_link_tag "/favicon.ico"
  = stylesheet_link_tag "global", media: "all"
  = stylesheet_link_tag "ss-standard", media: "all"
  = javascript_include_tag "application"

%body
  %article
    - if notice
      .flash.notice= notice
    - if alert
      .flash.alert= alert
    = yield


- if can? :destroy, @scraper
  .row
    .col-md-8
      .panel.panel-danger
        .panel-heading
          %h3.panel-title Here be dragons!
        .panel-body
          %p
            %strong Be careful here, these actions can't be undone.
        %ul.danger-settings-options-list.list-group
          %li.list-group-item
            %h4 Clear this scraper’s database
            %p All your data will be gone!
            = button_to "Clear database", clear_scraper_path(@scraper),
              {class: "btn btn-danger", data: {confirm: "All your data will be gone!"}}
          %li.list-group-item
            %h4 Delete this scraper
            %p Delete the entire scraper from morph.io, data and all.
            = button_to "Delete scraper", @scraper,
              {class: "btn btn-danger", method: :delete, data: {confirm: "Delete #{@scraper.full_name}?"}}

Make the alert messages more conversational and engaging

- if can? :destroy, @scraper
  .row
    .col-md-8
      .panel.panel-danger
        .panel-heading
          %h3.panel-title Here be dragons!
        .panel-body
          %p
            %strong Be careful here, these actions can't be undone.
        %ul.danger-settings-options-list.list-group
          %li.list-group-item
            %h4 Clear this scraper’s database
            %p All your data will be gone!
            = button_to "Clear database", clear_scraper_path(@scraper),
              {class: "btn btn-danger", data: {confirm: "All the data you’ve scraped will be deleted. Are you sure you want to clear this scraper’s database?"}}
          %li.list-group-item
            %h4 Delete this scraper
            %p Delete the entire scraper from morph.io, data and all.
            = button_to "Delete scraper", @scraper,
              {class: "btn btn-danger", method: :delete, data: {confirm: "Scraper #{@scraper.full_name} and its database will be deleted from morph.io. Are you sure you want to delete your scraper?"}}


%ul.new-session-tabs.nav-links.nav-tabs
  - if crowd_enabled?
    %li.active
      = link_to "Crowd", "#crowd", 'data-toggle' => 'tab'
  - @ldap_servers.each_with_index do |server, i|
    %li{class: (:active if i.zero? && !crowd_enabled?)}
      = link_to server['label'], "#{server['provider_name']}",  'data-toggle' => 'tab'
  - if signin_enabled?
    %li
      = link_to 'Standard', '#ldap-standard', 'data-toggle' => 'tab'

Fix href to server pane.

%ul.new-session-tabs.nav-links.nav-tabs
  - if crowd_enabled?
    %li.active
      = link_to "Crowd", "#crowd", 'data-toggle' => 'tab'
  - @ldap_servers.each_with_index do |server, i|
    %li{class: (:active if i.zero? && !crowd_enabled?)}
      = link_to server['label'], "##{server['provider_name']}",  'data-toggle' => 'tab'
  - if signin_enabled?
    %li
      = link_to 'Standard', '#ldap-standard', 'data-toggle' => 'tab'


.contextual
  = link_to t_action('new', Salary), new_salary_path(:salary => {:employee_id => @employee.id}), :class => "icon icon-add"
%h2= t_title :index, Salary

- @salaries = @employee.salaries
= render 'salaries/list'

Drop double newline at EOF.


-if @subscription
  =formalize do |f|
    -f.title :coordinates
    -f.field :subscription, :contact_id, :choices=>:subscription_contacts
    -f.field :subscription, :comment, :field=>:textarea
  #subscription-duration{"data-refresh"=>url_for(:controller=>:subscriptions, :action=>:coordinates, :mode=>:duration), "data-refresh-mode"=>"update"}=render :partial=>"duration_form"

Normalize partial name to ensure working outside of subscriptions controller

-if @subscription
  =formalize do |f|
    -f.title :coordinates
    -f.field :subscription, :contact_id, :choices=>:subscription_contacts
    -f.field :subscription, :comment, :field=>:textarea
  #subscription-duration{"data-refresh"=>url_for(:controller=>:subscriptions, :action=>:coordinates, :mode=>:duration), "data-refresh-mode"=>"update"}=render :partial=>"subscriptions/duration_form"


- if !ETModel::Version.prerelease? && scenario.updated_at && scenario.updated_at < ETModel::Version::DATE
  .warning
    = previous_version_scenario_warning(scenario, ETModel::Version::DATE)
    .links
      = link_to('View recent model updates →', whats_new_path)

Fix translation on scenario version warning

- if !ETModel::Version.prerelease? && scenario.updated_at && scenario.updated_at < ETModel::Version::DATE
  .warning
    = previous_version_scenario_warning(scenario, ETModel::Version::DATE)
    .links
      = link_to("#{t('scenario.warning.view_updates')} →", whats_new_path)


%h2 A review of your Personalised Learning Profile
= create_event_form ReviewLine do |f|
  .span9
    .row
      .span1= image_tag "events/reviews.png"
      .span4
        %h5
          Please review all
          = Settings.one_to_one_prompts.split("|").map(&:lines).reject(&:blank?).count
          areas in the dropdown list below
        = select_tag "unitxhoose", options_for_select(Settings.one_to_one_prompts.lines.select{|l| l.start_with? "|"}.map{|l| [l[1..-1],"prompt#{l.gsub(/\W+/,"_")}"]}),:class => "span4"
        = f.hidden_field :unit
        = f.text_area :body, :style => "height:100px"
      - Settings.one_to_one_prompts.split("|").map(&:lines).reject(&:blank?).each do |l|
        .span4.the_prompts{:id => "prompt_#{l.first.gsub(/\W+/,"_")}"}
          %h4 Questions to prompt conversation:
          %ul
            - l[1..-1].each do |i|
              %li= i
  = add_event_button
:coffeescript
  $('#unitxhoose').change (e) ->
    $('.the_prompts').hide('fast')
    $('#' + $('#unitxhoose').val()).show('fast')
    unit = $('option[value=' + $('#unitxhoose').val() + ']').html()
    $('#review_line_unit').val(unit)
  $('#unitxhoose').change()

Change of wording from 'Profile' to 'Programme'.

%h2 A review of your Personalised Learning Programme
= create_event_form ReviewLine do |f|
  .span9
    .row
      .span1= image_tag "events/reviews.png"
      .span4
        %h5
          Please review all
          = Settings.one_to_one_prompts.split("|").map(&:lines).reject(&:blank?).count
          areas in the dropdown list below
        = select_tag "unitxhoose", options_for_select(Settings.one_to_one_prompts.lines.select{|l| l.start_with? "|"}.map{|l| [l[1..-1],"prompt#{l.gsub(/\W+/,"_")}"]}),:class => "span4"
        = f.hidden_field :unit
        = f.text_area :body, :style => "height:100px"
      - Settings.one_to_one_prompts.split("|").map(&:lines).reject(&:blank?).each do |l|
        .span4.the_prompts{:id => "prompt_#{l.first.gsub(/\W+/,"_")}"}
          %h4 Questions to prompt conversation:
          %ul
            - l[1..-1].each do |i|
              %li= i
  = add_event_button
:coffeescript
  $('#unitxhoose').change (e) ->
    $('.the_prompts').hide('fast')
    $('#' + $('#unitxhoose').val()).show('fast')
    unit = $('option[value=' + $('#unitxhoose').val() + ']').html()
    $('#review_line_unit').val(unit)
  $('#unitxhoose').change()


%div.panel.panel-default.app-tile

  .panel-heading
    .row
      .col-sm-10
        %h3.panel-title
          = app.name
      .col-sm-2
        .pull-right
          = subtle_button(icon_class: 'fa-pencil', href: edit_app_path(app))

  .panel-body
    - app.requirements.each do |req|
      .row.requirement-row
        .col-sm-10
          %h4
            = req
            = subtle_button(icon_class: 'fa-plus', anchor_class: 'add-expectation',  href: new_expectation_path(requirement_id: req.id), tooltip: 'Add a new expectation')
        .col-sm-2
          .pull-right
            = subtle_button(icon_class: 'fa-pencil', href: edit_requirement_path(req))

      - req.expectations.each do |exp|
        = render partial: 'apps/expectation', locals: {exp: exp}

  // Button to create a new App
  .panel-footer
    - button_class = app.requirements.empty? ? 'primary' : 'default'
    = button(icon_class: 'fa-plus', text: 'New Requirement', button_classes: 'btn-sm btn-'+button_class, href: new_requirement_path(app_id: app.id))

Move new-expectation button to a new location, below expectation

%div.panel.panel-default.app-tile

  .panel-heading
    .row
      .col-sm-10
        %h3.panel-title
          = app.name
      .col-sm-2
        .pull-right
          = subtle_button(icon_class: 'fa-pencil', href: edit_app_path(app))

  .panel-body
    - app.requirements.each do |req|
      .row.requirement-row
        .col-sm-10
          %h4
            = req
        .col-sm-2
          .pull-right
            = subtle_button(icon_class: 'fa-pencil', href: edit_requirement_path(req))
      - req.expectations.each do |exp|
        = render partial: 'apps/expectation', locals: {exp: exp}
      %p
        = subtle_button(icon_class: 'fa-plus', anchor_class: 'add-expectation',  href: new_expectation_path(requirement_id: req.id), tooltip: 'Add a new expectation (test)')

  // Button to create a new App
  .panel-footer
    - button_class = app.requirements.empty? ? 'primary' : 'default'
    = button(icon_class: 'fa-plus', text: 'New Requirement', button_classes: 'btn-sm btn-'+button_class, href: new_requirement_path(app_id: app.id))


%h2.effective-orders-page-title= (@page_title || 'Payment Required')

- if EffectiveOrders.cheque[:success_message].present?
  %p.effective-orders-page-content
    = EffectiveOrders.cheque_success_message

= render @order

Fix busted cheque success message

%h2.effective-orders-page-title= (@page_title || 'Payment Required')

- if EffectiveOrders.cheque[:success_message].present?
  %p.effective-orders-page-content
    = EffectiveOrders.cheque[:success_message]

= render @order


= form_tag spree.order_cycle_management_admin_reports_url do |f|
  %br
  = label_tag nil, "Order Cycle: "
  = select_tag(:order_cycle_id,
    options_for_select(report_order_cycle_options(@order_cycles), params[:order_cycle_id]),
              include_blank: true)
  %br
  %br
  = label_tag nil, "Payment Methods (hold Ctrl to select multiple payment methods)"
  %br

  = select_tag(:payment_method_name,
      options_for_select(report_payment_method_options(@orders), params[:payment_method_name]),
               multiple: true, include_blank: true)
  %br
  %br
  = label_tag nil, "Shipping Method: "
  = select_tag(:shipping_method_name,
      options_for_select(report_shipping_method_options(@orders), params[:shipping_method_name]),
	       include_blank: true)
  %br
  %br
  = check_box_tag :csv
  = label_tag :csv, "Download as csv"
  %br
  %br
  = button t(:search)

%br
%br
%table#listing_order_payment_methods.index
  %thead
    %tr{'data-hook' => "orders_header"}
      - @report.header.each do |heading|
        %th=heading
  %tbody
    - @report.table.each do |row|
      %tr
        - row.each do |column|
          %td= column
    - if @report.table.empty?
      %tr
        %td{:colspan => "2"}= t(:none)

Add additional rows to payment method selection

= form_tag spree.order_cycle_management_admin_reports_url do |f|
  %br
  = label_tag nil, "Order Cycle: "
  = select_tag(:order_cycle_id,
    options_for_select(report_order_cycle_options(@order_cycles), params[:order_cycle_id]),
              include_blank: true)
  %br
  %br
  = label_tag nil, "Payment Methods (hold Ctrl to select multiple payment methods)"
  %br

  = select_tag(:payment_method_name,
      options_for_select(report_payment_method_options(@orders), params[:payment_method_name]),
               multiple: true, include_blank: true, size: 10)
  %br
  %br
  = label_tag nil, "Shipping Method: "
  = select_tag(:shipping_method_name,
      options_for_select(report_shipping_method_options(@orders), params[:shipping_method_name]),
	       include_blank: true)
  %br
  %br
  = check_box_tag :csv
  = label_tag :csv, "Download as csv"
  %br
  %br
  = button t(:search)

%br
%br
%table#listing_order_payment_methods.index
  %thead
    %tr{'data-hook' => "orders_header"}
      - @report.header.each do |heading|
        %th=heading
  %tbody
    - @report.table.each do |row|
      %tr
        - row.each do |column|
          %td= column
    - if @report.table.empty?
      %tr
        %td{:colspan => "2"}= t(:none)


- if current_user.pull_requests.year(current_year).any?
  = render :partial => 'pull_requests/pull_request', :collection => pull_requests
- else
  %p=t("dashboard.no_pull_requests")

Add better PR message when it isn't december.

- if current_user.pull_requests.year(current_year).any?
  = render :partial => 'pull_requests/pull_request', :collection => pull_requests
- elsif DateTime.new(current_year, 12, 1) > DateTime.now
  %p='24 Pull Requests runs from 1st-24th December, come back then!'
- else
  %p=t("dashboard.no_pull_requests")


%p
  %em Custom Standard
  is a custom rotating Constructed format modeled after Standard. It consists of some of the most recently finished custom sets.

%p
  More information

%p
  You can explore past Custom Standards with queries like "f:cstd time:setcode", or "f:cstd time:date", for example:

%ul
  = search_help "f:cstd time:ayr", "Custom Standard when Aenyr was added (the first Custom Standard format)"
  = search_help "f:cstd time:ldo", "Custom Standard when Lorado was added (the second Custom Standard format)"

Update Custom Standard format page, removing outdated format info document

%p
  %em Custom Standard
  is a custom rotating Constructed format modeled after Standard. It consists of some of the most recently finished custom sets.

%p
  To play, join #custom-standard on the Custom Magic Discord server.

%p
  You can explore past Custom Standards with queries like "f:cs time:setcode", or "f:cs time:date", for example:

%ul
  = search_help "f:cs time:ayr", "Custom Standard when Aenyr was added (the first Custom Standard format)"
  = search_help "f:cs time:ldo", "Custom Standard when Lorado was added (the second Custom Standard format)"