.responses

  //- Like/unlike button

  if obj.liked
    a.unfavorite(href="#") Unlike
      i.fa.fa-thumbs-o-down
  else
    a.favorite(href="#") Like
      i.fa.fa-thumbs-o-up

  //- Comment button

  a.comment(href="#") Comment
    i.fa.fa-comment

  //- Share/unshare button

  if obj.pump_io && obj.pump_io.shared
    a.unshare(href="#") Unshare
      i.fa.fa-times
  else
    a.share(href="#") Share
      i.fa.fa-share

Remove "Comment" button on comments in the web UI

.responses

  //- Like/unlike button

  if obj.liked
    a.unfavorite(href="#") Unlike
      i.fa.fa-thumbs-o-down
  else
    a.favorite(href="#") Like
      i.fa.fa-thumbs-o-up

  //- Comment button

  unless obj.objectType == "comment"
    a.comment(href="#") Comment
      i.fa.fa-comment

  //- Share/unshare button

  if obj.pump_io && obj.pump_io.shared
    a.unshare(href="#") Unshare
      i.fa.fa-times
  else
    a.share(href="#") Share
      i.fa.fa-share


include _partial/mixins

doctype html
block vars
  - var bodyclass = null;
html(lang='en')
  head
include _partial/head
  body(class=bodyclass)
    block header
      if config.type != 'single'
        header.main
          div
            h1: a(href=config.root)= config.title
            nav.main-menu
              ul
                each link, name in config.menu
                  //- This is not working to set .active for the page. It should also check is_post for /blog/*
                  - var current = is_current(link + 'index.html') ? 'active' : null;
                  li: a(href=link, class= current)= name
                  li=page.link
    block main-container
      div(role="main")
        block content
          !=page.content
    block footer
      footer
        nav
          p
            | ©
            if config.year_started
              | #{config.year_started} –
            | #{ new Date().getFullYear() }
            | #{ config.title }
          ul
            each link, name in config.footerMenu
              li: a(href=link)=name

    block scripts
      !=js(theme.scripts)

Fix  which was closed just after


doctype xml
urlset(
  xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
)
  for artwork in models
    url
      loc='https://www.artsy.net/artwork/' + artwork.id
      image:image
        //-per Google: 'make sure that the hosting site (i.e. cloudfront) is verified in Search Console OR that you submit your sitemap using robots.txt
        image:loc=artwork.images[0].image_urls.large
        image:title=artwork.title
        if artwork.artist
          image:caption=artwork.title + ' is a work of art created by ' + artwork.artist.name + ' in ' + artwork.date + '.'
        else
          image:caption=artwork.title + ' is a work of art created in ' + artwork.date + '.'

Fix for when there's no "large" image url

doctype xml
urlset(
  xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
)
  for artwork in models
    url
      loc='https://www.artsy.net/artwork/' + artwork.id
      image:image
        //-per Google: 'make sure that the hosting site (i.e. cloudfront) is verified in Search Console OR that you submit your sitemap using robots.txt
        if artwork.images[0].image_urls.large
          image:loc=artwork.images[0].image_urls.large
        else
          image:loc=artwork.images[0].image_urls.square
        image:title=artwork.title
        if artwork.artist
          image:caption=artwork.title + ' is a work of art created by ' + artwork.artist.name + ' in ' + artwork.date + '.'
        else
          image:caption=artwork.title + ' is a work of art created in ' + artwork.date + '.'


div(ng-controller='PathologyCtrl' ng-show="pathology")
  // If multiple tumors exist, display a title for each tumor and
  //   place its content in a nested panel.
  div(ng-show="pathology.tumors.length > 1")
    div(ng-repeat="tumor in pathology.tumors")
      .qi-subtable-title Tumor {{ $index + 1 }}
      .qi-panel.qi-nested
        include tumor
  div(ng-show="pathology.tumors.length == 1")
    div(ng-init="tumor = pathology.tumors[0]")
      include tumor

Simplify multiple tumors in clinical profile.

div(ng-controller='PathologyCtrl' ng-show="pathology")
  // If multiple tumors exist, display a title for each tumor and
  //   place its content in a nested panel.
  div(ng-repeat="tumor in pathology.tumors" ng-show="pathology.tumors.length > 1")
    .qi-subtable-title Tumor {{ $index + 1 }}
    .qi-panel.qi-nested
      include tumor
  div(ng-init="tumor = pathology.tumors[0]" ng-show="pathology.tumors.length == 1")
    include tumor


if comments == null
  ui.loading.segment
else
  table.ui.loading.sortable.celled.table
    thead
      tr
        th ID
        th Người gửi
        th Nội dung
        th.date Ngày gửi
        th Chủ đề
        th Spam
        th Đánh giá
    tbody
      each comment in comments
        tr
          td
            a(href='https://facebook.com/' + comment.fb_id)= comment.fb_id
          td
            a(href='https://facebook.com/' + comment.creator.fb_id)= comment.creator.name
          td= comment.message
          td= comment.time_created.toUTCString()
          td= comment.topic
          td= comment.is_spam
          td= comment.sentiment

Fix link to post/comment, shorten IDs

if comments == null
  ui.loading.segment
else
  table.ui.compact.loading.sortable.celled.table
    thead
      tr
        th ID
        th Người gửi
        th Nội dung
        th.date Ngày gửi
        th Chủ đề
        th Spam
        th Đánh giá
    tbody
      each comment in comments
        tr
          td
            - var actualId = comment.fb_id.split('_')[0]
            a(href='https://facebook.com/' + actualId)= actualId
          td
            a(href='https://facebook.com/' + comment.creator.fb_id)= comment.creator.name
          td= comment.message
          td= comment.time_created.toUTCString()
          td= comment.topic
          td= comment.is_spam
          td= comment.sentiment


- load i18n

.page-title: .tabs
    h2 #{content_title}
    span.spacer
    ul
        li(class=('active' if tab == 'all_submissions_list' else ''))
            a(href=all_submissions_link) #[i.tab-icon.fa.fa-list] {% trans "All" %}
        if my_submissions_link or tab == 'my_submissions_tab'
            li(class=('active' if tab == 'my_submissions_tab' else ''))
                a(href=my_submissions_link) #[i.tab-icon.fa.fa-user] {% trans "Mine" %}
        if best_submissions_link
            li(class=('active' if tab == 'best_submissions_list' else ''))
                a(href=best_submissions_link) #[i.tab-icon.fa.fa-bar-chart] {% trans "Best" %}
        if tab == 'user_submissions_tab'
            li.active: a
                - blocktrans with username=tab_username
                    | {{ username }}'s
        if perms.judge.change_submission
            li: a(href='{% url "admin:judge_submission_changelist" %}') #[i.tab-icon.fa.fa-edit] {% trans "Admin" %}

Add an icon for user's submissions too

- load i18n

.page-title: .tabs
    h2 #{content_title}
    span.spacer
    ul
        li.tab(class=('active' if tab == 'all_submissions_list' else ''))
            a(href=all_submissions_link) #[i.tab-icon.fa.fa-list] {% trans "All" %}
        if my_submissions_link or tab == 'my_submissions_tab'
            li.tab(class=('active' if tab == 'my_submissions_tab' else ''))
                a(href=my_submissions_link) #[i.tab-icon.fa.fa-user] {% trans "Mine" %}
        if best_submissions_link
            li.tab(class=('active' if tab == 'best_submissions_list' else ''))
                a(href=best_submissions_link) #[i.tab-icon.fa.fa-bar-chart] {% trans "Best" %}
        if tab == 'user_submissions_tab'
            li.tab.active: a #[i.tab-icon.fa.fa-user]
                - blocktrans with username=tab_username
                    | {{ username }}'s
        if perms.judge.change_submission
            li.tab: a(href='{% url "admin:judge_submission_changelist" %}') #[i.tab-icon.fa.fa-edit] {% trans "Admin" %}


extends layouts/default

block content
  .ui.header
    h1.huge Hello, #{config.service.name}.
    p !{ markdown( config.service.mission ) }

  .ui.stackable.three.column.grid
    .column
      .ui.horizontal.segment.card
        h2.center-text Hand-rolled.
        p.center-text No black boxes or arcane scribbling here.  Pure Javascript, and direct access to everything.
    .column
      .ui.horizontal.segment.card
        h2.center-text Get Making.
        p.center-text Get started on that project now.  Don't worry about project setup.
    .column
      .ui.horizontal.segment.card
          h2.center-text Already registered?
          a.fluid.ui.button(href="/login", ng-class="{ active: isActive('/login') }") Log In

  .ui.stackable.three.column.grid
    .column
      h3 Resources

      .ui.list
        each resource in resources
          if (!resource.internal)
            a.item(href="#{resource.routes.query}") #{resource.plural}

    .column
      h3 Services

      .ui.list
        each service in services
          a.item(href="#{service.protocol}://#{service.authority}") #{service.name}

Adjust front page to incorporate new Semantic.

extends layouts/default

block content
  .ui.header
    h1.huge Hello, #{config.service.name}.
    p !{ markdown( config.service.mission ) }

  .ui.stackable.three.column.grid
    .column
      .ui.fluid.card
        .content
          h2.header Hand-rolled.
          p.description No black boxes or arcane scribbling here.  Pure Javascript, and direct access to everything.
    .column
      .ui.fluid.card
        .content
          h2.header Get Making.
          p.description Get started on that project now.  Don't worry about project setup.
    .column
      .ui.fluid.card
        .content
          h2.header Already registered?
        .ui.bottom.attached.button(href="/login", ng-class="{ active: isActive('/login') }") Log In

  .ui.stackable.three.column.grid
    .column
      h3 Resources

      .ui.list
        each resource in resources
          if (!resource.internal)
            a.item(href="#{resource.routes.query}") #{resource.plural}

    .column
      h3 Services

      .ui.list
        each service in services
          a.item(href="#{service.protocol}://#{service.authority}") #{service.name}


body(style="text-align:center;")
  div(style="height:325px; width:100%;")
  button(id="signin", class="btn btn-large btn-block persona-button orange", style="clear:both; max-width:500px; font-size:25px; line-height:1.1; margin:auto;")
    span Sign in with Persona
  script(src='/lib/jquery.min.js')
  script(src="/js/login.js")

Fix style on login button

body(style="text-align:center;")
  div(style="height:325px; width:100%;")
  button(id="signin", class="btn btn-block persona-button orange", style=" max-width:500px; font-size:25px; color:white; text-shadow:black 0 0 0; border-width:0px; line-height:1.1; margin:auto;")
    span Sign in with Persona
  script(src='/lib/jquery.min.js')
  script(src="/js/login.js")


- var short = alt.substring(0, alt.indexOf('_'));

.lazyload-wrapper(data-src-lg=base + short + '/' + alt + '.jpg?sw=400&sh=400')
  img.lazyload-small(src=base + short + '/' + alt + '.jpg?sw=10&sh=10')
  .lazyload-pad(style='padding-bottom: 100%')

Remove unnecessary var in template.


extends ./layout.jade

block tabNavigation
  - var patterns = page.parent
  if Object.keys(patterns).length > 1
    div.mdl-layout__tab-bar.mdl-js-ripple-effect
      - var index = 0
      each pattern, file in patterns
        a.mdl-layout__tab(class="#{index === 0 ? 'is-active' : ''}" href="#tab-#{parameterize(pattern.metadata.title)}")
          = pattern.metadata.title
        - index++

block content
  - var index = 0
  each pattern, file in page.parent
    section.mdl-layout__tab-panel(class="#{index === 0 ? 'is-active' : ''}" id="tab-#{parameterize(pattern.metadata.title)}")
      div.page-content
        div.wpl-card-pattern.mdl-card.mdl-shadow--2dp
          div.mdl-card__title.mdl-card--expand
            h2.mdl-card__title-text= pattern.metadata.title
          div.mdl-card__supporting-text
            if pattern.metadata.description
              = pattern.metadata.description
              hr
            div.wpl-layout__source
              if pattern.metadata.use_source === false
                !{pattern.html}
              else
                div(data-iframe)
                  !{pattern.html}
                  link(rel='stylesheet', href=contents.stylesheets['base.css'].url)
                  script(src=contents.javascripts['base.js'].url)
            if pattern.metadata.show_code !== false
              hr
              pre
                code.language-markup= pattern.html
    - index++

Fix jade warning "Warning: missing space before text for"

extends ./layout.jade

block tabNavigation
  - var patterns = page.parent
  if Object.keys(patterns).length > 1
    div.mdl-layout__tab-bar.mdl-js-ripple-effect
      - var index = 0
      each pattern, file in patterns
        a.mdl-layout__tab(class="#{index === 0 ? 'is-active' : ''}" href="#tab-#{parameterize(pattern.metadata.title)}")
          = pattern.metadata.title
        - index++

block content
  - var index = 0
  each pattern, file in page.parent
    section.mdl-layout__tab-panel(class="#{index === 0 ? 'is-active' : ''}" id="tab-#{parameterize(pattern.metadata.title)}")
      div.page-content
        div.wpl-card-pattern.mdl-card.mdl-shadow--2dp
          div.mdl-card__title.mdl-card--expand
            h2.mdl-card__title-text= pattern.metadata.title
          div.mdl-card__supporting-text
            if pattern.metadata.description
              = pattern.metadata.description
              hr
            div.wpl-layout__source
              if pattern.metadata.use_source === false
                | !{pattern.html}
              else
                div(data-iframe)
                  | !{pattern.html}
                  link(rel='stylesheet', href=contents.stylesheets['base.css'].url)
                  script(src=contents.javascripts['base.js'].url)
            if pattern.metadata.show_code !== false
              hr
              pre
                code.language-markup= pattern.html
    - index++


extends layouts/default

block content
  .ui.header
    h1.huge Hello, #{config.service.name}.
    h2 !{ markdown( config.service.mission ) }

    p !{ markdown( config.service.description ) }

  .ui.stackable.three.column.grid
    for point in config.service.points
      .column
        .ui.fluid.card
          .content
            h2.header #{ point.header }
            //- TODO: use marked config, not a regex, to fix errant <p> tags
            p.description
              | !{ markdown( point.description ).replace(/<p>(.*)<\/p>/, '$1') }
          if (point.action)
            .ui.bottom.attached.button(href="#{point.action.link}") !{point.action.text}

  .ui.stackable.three.column.grid
    .column
      h3 Resources
      .ui.list
        each resource in resources
          if (!resource.internal)
            a.item(href="#{resource.routes.query}") #{resource.plural}

    .column
      h3 Services

      .ui.list
        each service in services
          a.item(href="#{service.protocol}://#{service.authority}") #{service.name}

Make action items actual links.

extends layouts/default

block content
  .ui.header
    h1.huge Hello, #{config.service.name}.
    h2 !{ markdown( config.service.mission ) }

    p !{ markdown( config.service.description ) }

  .ui.stackable.three.column.grid
    for point in config.service.points
      .column
        .ui.fluid.card
          .content
            h2.header #{ point.header }
            //- TODO: use marked config, not a regex, to fix errant <p> tags
            p.description
              | !{ markdown( point.description ).replace(/<p>(.*)<\/p>/, '$1') }
          if (point.action)
            a.ui.bottom.attached.button(href="#{point.action.link}") !{point.action.text}

  .ui.stackable.three.column.grid
    .column
      h3 Resources
      .ui.list
        each resource in resources
          if (!resource.internal)
            a.item(href="#{resource.routes.query}") #{resource.plural}

    .column
      h3 Services

      .ui.list
        each service in services
          a.item(href="#{service.protocol}://#{service.authority}") #{service.name}


mixin comment(title, str)
  .comment
    h2= title
    p.body= str

mixin comment (title, str)
  .comment
    h2= title
    p.body= str

#user
  h1 Tobi
  .comments
    +comment('This',
            (('is regular, javascript')))

mixin list()
  ul
    li foo
    li bar
    li baz

body
  mixin list()

Add test case for mixin declaration with a trailing space

mixin comment(title, str)
  .comment
    h2= title
    p.body= str

mixin comment (title, str)
  .comment
    h2= title
    p.body= str

#user
  h1 Tobi
  .comments
    +comment('This',
            (('is regular, javascript')))

mixin list
  ul
    li foo
    li bar
    li baz

body
  mixin list()


span.icon.icon-icon-search
span.input-container
  input.form-control(type="search", placeholder!=t('sidebar.search'), value!=input_query)
  span.action-button.close-button(type="button")
    span.icon-icon-close

Add title to search input for accessibility.

span.icon.icon-icon-search
span.input-container
  input.form-control(type="search", placeholder!=t('sidebar.search'), title!=t('sidebar.search'), value!=input_query)
  span.action-button.close-button(type="button")
    span.icon-icon-close


doctype html
html
  head
    title= title
    link(rel="icon", sizes="16x16", type="image/png", href="/favicon.png")
    link(href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/css/bootstrap.min.css", rel="stylesheet")
    link(rel="stylesheet", href="/stylesheets/style.css")
    meta(name="description", content="Crafatar is a blazing fast Minecraft avatar API with support for avatars, 1.8 skins, and even 3D renders!")
    meta(name="keywords", content="minecraft, avatar, renders, skins, uuid, username")
    meta(name="viewport", content="initial-scale=1,maximum-scale=1")
  body
    a.forkme(href="https://github.com/crafatar/crafatar", target="_blank") Fork me on GitHub
    a.sponsor(href="https://akliz.net/crafatar", target="_blank", title="Crafatar is sponsored by Akliz")
      img(src="/images/akliz.png", alt="Akliz")
    .navbar.navbar-default.navbar-fixed-top
        .container
          .navbar-header
            a.navbar-brand(href="/") Crafatar
          .navbar-header
            a.navbar-brand.twitter(href="https://twitter.com/Crafatar", target="_blank") @crafatar
    block content

Revert "add missing @ for twitter username"

doctype html
html
  head
    title= title
    link(rel="icon", sizes="16x16", type="image/png", href="/favicon.png")
    link(href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/css/bootstrap.min.css", rel="stylesheet")
    link(rel="stylesheet", href="/stylesheets/style.css")
    meta(name="description", content="Crafatar is a blazing fast Minecraft avatar API with support for avatars, 1.8 skins, and even 3D renders!")
    meta(name="keywords", content="minecraft, avatar, renders, skins, uuid, username")
    meta(name="viewport", content="initial-scale=1,maximum-scale=1")
  body
    a.forkme(href="https://github.com/crafatar/crafatar", target="_blank") Fork me on GitHub
    a.sponsor(href="https://akliz.net/crafatar", target="_blank", title="Crafatar is sponsored by Akliz")
      img(src="/images/akliz.png", alt="Akliz")
    .navbar.navbar-default.navbar-fixed-top
        .container
          .navbar-header
            a.navbar-brand(href="/") Crafatar
          .navbar-header
            a.navbar-brand.twitter(href="https://twitter.com/Crafatar", target="_blank") crafatar
    block content


extends layout

block stylesheets
    link( href="css/app.css" rel="stylesheet")

block scripts
    script(src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js")
    //- Bootstrap JS for the mobile navbar
    script(src="//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js")

block content
    include ../inc/navbar

    .container-fluid.main.debug
        block header
        .view
            block view

    include ../inc/footer

Move Bootstrap JS to bottom of page

extends layout

block stylesheets
    link( href="css/app.css" rel="stylesheet")

block scripts
    script(src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js")

block content
    include ../inc/navbar

    .container-fluid.main.debug
        block header
        .view
            block view

    include ../inc/footer

block bottom
    //- Bootstrap JS for the mobile navbar
    script(src="//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js")


extends layout

block content
  .page-header
    h1
      a(href='/') ghlint
      |
      small A linter for GitHub projects.
  form(action='/', role='form')
    .form-group
      label(for='repo') Repository
      .input-group
        input#repo.form-control(name='repo', placeholder='user/repository', autofocus)
        span.input-group-btn
          input.btn.btn-primary(type='submit', value='Lint')
  if repos
    for repo in repos
      .panel.panel-default
        .panel-heading
          h3.panel-title= repo.name
        table.table.table-bordered
          thead
            tr
              th Linter
              th Status
          tbody
            for result in repo.results
              tr(class=(result.result ? 'success' : 'danger'))
                td= result.message
                td= result.result

Use list groups with icons instead of tables

extends layout

block content
  .page-header
    h1
      a(href='/') ghlint
      |
      small A linter for GitHub projects.
  form(action='/', role='form')
    .form-group
      label(for='repo') Repository
      .input-group
        input#repo.form-control(name='repo', placeholder='user/repository', autofocus)
        span.input-group-btn
          input.btn.btn-primary(type='submit', value='Lint')
  if repos
    for repo in repos
      .panel.panel-default
        .panel-heading
          h3.panel-title= repo.name
        ul.list-group
          for result in repo.results
            li.list-group-item(class='list-group-item-'+(result.result ? 'success' : 'danger'))
              span.glyphicon(class='glyphicon-'+(result.result ? 'ok' : 'remove'))
              |
              span= result.message


extends ./layout.jade

block content
  h1 Welcome to Leaves!
  p You've now created a brand new Leaves site. The page you're looking at is the home page which is located at <b>view/index.jade</b>.

  h2 Documentation
  ul
    li: a(href='https://github.com/claudetech/leaves') Leaves
    li: a(href='http://jade-lang.com/') jade
    li: a(href='http://learnboost.github.io/stylus/') Stylus
    li: a(href='http://roots.cx/axis/') Axis
    li: a(href='http://coffeescript.org/') CoffeeScript

Fix typo in initial template.

extends ./layout.jade

block content
  h1 Welcome to Leaves!
  p You've now created a brand new Leaves site. The page you're looking at is the home page which is located at <b>views/index.jade</b>.

  h2 Documentation
  ul
    li: a(href='https://github.com/claudetech/leaves') Leaves
    li: a(href='http://jade-lang.com/') jade
    li: a(href='http://learnboost.github.io/stylus/') Stylus
    li: a(href='http://roots.cx/axis/') Axis
    li: a(href='http://coffeescript.org/') CoffeeScript


extends ../layout/default.jade

block content
    - var canEdit = req.user.hasPermission('system.widgets.toggle');
    .panel.panel-primary
        .panel-heading
            | Visible Widgets
        table.table
            thead
                th Controller
                th Action
                if canEdit
                    th Actions
            tbody
                each widget in visible
                    tr
                        td= widget.controller
                        td= widget.action
                        if canEdit
                            td
                                form(method='POST',action='/widget/' + widget.id.replace('#', '_') + '/hide')
                                    button.btn.btn-primary(type='submit')
                                        span.fa.fa-eye-slash

    .panel.panel-info
        .panel-heading
            | Hidden Widgets
        table.table
            thead
                th Controller
                th Action
                if canEdit
                    th Actions
            tbody
                each widget in hidden
                    tr
                        td= widget.controller
                        td= widget.action
                        if canEdit
                            td
                                form(method='POST',action='/widget/' + widget.id.replace('#', '_') + '/show')
                                    button.btn.btn-primary(type='submit')
                                        span.fa.fa-eye

Make table a bit more consistent looking.

extends ../layout/default.jade

block content
    - var canEdit = req.user.hasPermission('system.widgets.toggle');
    .panel.panel-primary
        .panel-heading
            | Visible Widgets
        table.table
            thead
                th Controller
                th Action
                if canEdit
                    th Actions
            tbody
                each widget in visible
                    tr
                        td= widget.controller
                        td.col-md-4= widget.action
                        if canEdit
                            td.col-md-1
                                form(method='POST',action='/widget/' + widget.id.replace('#', '_') + '/hide')
                                    button.btn.btn-primary(type='submit')
                                        span.fa.fa-eye-slash

    .panel.panel-info
        .panel-heading
            | Hidden Widgets
        table.table
            thead
                th Controller
                th Action
                if canEdit
                    th Actions
            tbody
                each widget in hidden
                    tr
                        td= widget.controller
                        td.col-md-4= widget.action
                        if canEdit
                            td.col-md-1
                                form(method='POST',action='/widget/' + widget.id.replace('#', '_') + '/show')
                                    button.btn.btn-primary(type='submit')
                                        span.fa.fa-eye


extends ../layout

block content
  h2 API Browser

  ol
    li
      a(href='/api/aviary') Aviary
    li
      a(href='/api/facebook') Facebook
      small  ⇢ Login Required
    li
      a(href='/api/foursquare') Foursquare
      small  ⇢ Login Required
    li
      a(href='/api/github') GitHub
      small  ⇢ Login Required
    li
      a(href='/api/lastfm') Last.fm
    li
      a(href='/api/nyt') New York Times
    li
      a(href='/api/paypal') PayPal
      small  ⇢ Login Required
    li
      a(href='/api/steam') Steam
    li
      a(href='/api/twilio') Twilio
    li
      a(href='/api/tumblr') Tumblr
      small  ⇢ Login Required
    li
      a(href='/api/twitter') Twitter
      small  ⇢ Login Required
    li
      a(href='/api/scraping') Web Scraping
    li
      a(href='/api/venmo') Venmo

Add login required label on Vemo link

extends ../layout

block content
  h2 API Browser

  ol
    li
      a(href='/api/aviary') Aviary
    li
      a(href='/api/facebook') Facebook
      small  ⇢ Login Required
    li
      a(href='/api/foursquare') Foursquare
      small  ⇢ Login Required
    li
      a(href='/api/github') GitHub
      small  ⇢ Login Required
    li
      a(href='/api/lastfm') Last.fm
    li
      a(href='/api/nyt') New York Times
    li
      a(href='/api/paypal') PayPal
      small  ⇢ Login Required
    li
      a(href='/api/steam') Steam
    li
      a(href='/api/twilio') Twilio
    li
      a(href='/api/tumblr') Tumblr
      small  ⇢ Login Required
    li
      a(href='/api/twitter') Twitter
      small  ⇢ Login Required
    li
      a(href='/api/scraping') Web Scraping
    li
      a(href='/api/venmo') Venmo
      small  ⇢ Login Required


h1 Checkout
label(for="amount") amount
input(type="text", name="amount", id="amount")
form(id='checkout', action='/checkout', method='post')
  div(id='payment-form')
  input(type='submit', value='Pay $10')

script(src='https://js.braintreegateway.com/v2/braintree.js')
script.
  var token = "#{clientToken}";
  braintree.setup(token, "dropin", {
    container: "payment-form"
  });

Fix drop in form route to direct to checkouts

for msg in messages
  div #{msg.msg}

h1 Checkout
label(for="amount") amount
input(type="text", name="amount", id="amount")
form(id='checkout', action='/checkouts', method='post')
  div(id='payment-form')
  input(type='submit', value='Pay $10')

script(src='https://js.braintreegateway.com/v2/braintree.js')
script.
  var token = "#{clientToken}";
  braintree.setup(token, "dropin", {
    container: "payment-form"
  });


doctype html
html
  head
    script(src='http://code.jquery.com/jquery-1.11.3.min.js')
  body
    navbar#navbar
      #[a(href="/") Create ]
      #[a(href="/items") Search ]
      #[a(href="/update") Update ]
    h1 Search results
    p Find other items
    form(action="/items", method="post")
      input(type='text', id='searchBox' name="keyword")
      input(type='submit', id='searchButton', value='Search')
    - if (result.length < 1)
      p No results found
    - for r in result
      br
      table(style="border: 1px solid black")
        - for val, key in r
          tr
            td(style="border: 1px solid black") #{key}
            td(style="border: 1px solid black") #{val}
        td #[a(href="/update/#{r._id}") Update ] | #[a(href="/delete/#{r._id}") Delete]

Delete update link in search result page

doctype html
html
  head
    script(src='http://code.jquery.com/jquery-1.11.3.min.js')
  body
    navbar#navbar
      #[a(href="/") Create ]
      #[a(href="/items") Search ]
    h1 Search results
    p Find other items
    form(action="/items", method="post")
      input(type='text', id='searchBox' name="keyword")
      input(type='submit', id='searchButton', value='Search')
    - if (result.length < 1)
      p No results found
    - for r in result
      br
      table(style="border: 1px solid black")
        - for val, key in r
          tr
            td(style="border: 1px solid black") #{key}
            td(style="border: 1px solid black") #{val}
        td #[a(href="/update/#{r._id}") Update ] | #[a(href="/delete/#{r._id}") Delete]


extends base

block content
  #tour-region
  #feedback-form-container.modal
  img.cloud.cloud-top(src!=staticFile('images/cloud-top.png'), data-no-retina, alt="")
  img.cloud.cloud-bottom(src!=staticFile('images/cloud-bottom.png'), data-no-retina, alt="")
  #landing-logo.overlay
  #persistent-logo.overlay
  #disclaimers.overlay
  #navigation-region.overlay
  .top-right-controls
    #language-selector.overlay
    #personalisation.overlay
    #service-cart.overlay
  #app-container
    #map
  #feature-tour-start.overlay
  script(type='text/javascript', src!=staticFile('vendor/jade-runtime.js'))
  script(type='text/javascript', src!=staticFile('js/templates.js'))
  script(type='text/javascript', src!=staticFile('vendor/require.js'))
  script(type='text/javascript').
    require(['static/js/app/config'], function() {
      if (appSettings.use_client_bundle) {
        require.config({paths: {'app/main': 'bundle'}});
      }

      require(["app/main"]);
    });

Add custom Sentry configuration to main.jade (moved from app.coffee)

extends base

block content
  #tour-region
  #feedback-form-container.modal
  img.cloud.cloud-top(src!=staticFile('images/cloud-top.png'), data-no-retina, alt="")
  img.cloud.cloud-bottom(src!=staticFile('images/cloud-bottom.png'), data-no-retina, alt="")
  #landing-logo.overlay
  #persistent-logo.overlay
  #disclaimers.overlay
  #navigation-region.overlay
  .top-right-controls
    #language-selector.overlay
    #personalisation.overlay
    #service-cart.overlay
  #app-container
    #map
  #feature-tour-start.overlay
  script(type='text/javascript', src!=staticFile('vendor/jade-runtime.js'))
  script(type='text/javascript', src!=staticFile('js/templates.js'))
  script(type='text/javascript', src!=staticFile('vendor/require.js'))
  script(type='text/javascript').
    require(['static/js/app/config'], function() {
      if (appSettings.use_client_bundle) {
        require.config({paths: {'app/main': 'bundle'}});
      }

      if (appSettings.sentry_url) {
        var config = {};
        if (appSettings.sentry_disable) {
          config.shouldSendCallback = function () {
            return false;
          }
        }

        requirejs(['raven'], function(Raven) {
          Raven.config(appSettings.sentry_url, config).install();
          Raven.setExtraContext = {
            gitCommit: appSettings.git_commit_id
          };
        });
      } else {
        requirejs(['raven'], function(Raven) {
          Raven.debug = false;
        });
      }

      require(['app/main']);
    });


extends layout

block content
    p.lead Hello, #{agent.name}
    p
        i #{oauth.req.clientName}
        | needs #{oauth.req.scope.join('/')} access to the files it stores in your account

    pre
        ul.unstyled
            li Email: #{oauth.req.clientID}
            li Callback: #{oauth.req.redirectURI}
            li Permissions: #{oauth.req.scope.join('/')}
            li Your IP: #{oauth.client.ip}
    p.
        Do you trust this application?

    form(action="/dialog/authorize/decision", method="post")
        input(name="transaction_id", type="hidden", value="#{transactionID}")
        div
            input(type="submit", value="Yes", id="allow")
            input(type="submit", value="No", name="cancel", id="deny")

Remove join operation on scope

extends layout

block content
    p.lead Hello, #{agent.name}
    p
        i #{oauth.req.clientName}
        | needs #{oauth.req.scope} access to the files it stores in your account

    pre
        ul.unstyled
            li Email: #{oauth.req.clientID}
            li Callback: #{oauth.req.redirectURI}
            li Permissions: #{oauth.req.scope}
            li Your IP: #{oauth.client.ip}
    p.
        Do you trust this application?

    form(action="/dialog/authorize/decision", method="post")
        input(name="transaction_id", type="hidden", value="#{transactionID}")
        div
            input(type="submit", value="Yes", id="allow")
            input(type="submit", value="No", name="cancel", id="deny")


doctype html
html
  head
    title= appTitle
    script(type="text/javascript", src="/js/jquery-2.0.3.min.js")
    link(rel='stylesheet', href='/css/bootstrap-3.0.2/css/bootstrap.min.css')
    link(rel='stylesheet', href='/css/bootstrap-3.0.2/css/bootstrap-theme.min.css')
    link(rel='stylesheet', href='/css/style.css')
    script(type="text/javascript", src="/css/bootstrap-3.0.2/js/bootstrap.min.js")
    script(type="text/javascript", src="/js/blog.js")
    meta(name="viewport", content="width=device-width, initial-scale=1.0")
  body
    #wrap
      .container
        h1.page-header= appTitle
        p.lead Welcome to a simple Blog Engine by
          a(href='http://mishrabhinav.com') mishrabhinav
          |. Please enjoy.
        block page
        block alert
          div.alert.alert-warning.hidden
        .content
        block header
          div
            include includes/menu

          block content
    block footer
      footer
        .container
          p
            | Copyright © 2016 | Issues? Submit to
            a(href="https://github.com/mishrabhinav/BEng/issues")  GitHub
            | .

Update Layout. Fix link issues.

doctype html
html
  head
    title= appTitle
    script(type="text/javascript", src="/js/jquery-2.0.3.min.js")
    link(rel='stylesheet', href='/css/bootstrap-3.0.2/css/bootstrap.min.css')
    link(rel='stylesheet', href='/css/bootstrap-3.0.2/css/bootstrap-theme.min.css')
    link(rel='stylesheet', href='/css/style.css')
    script(type="text/javascript", src="/css/bootstrap-3.0.2/js/bootstrap.min.js")
    script(type="text/javascript", src="/js/blog.js")
    meta(name="viewport", content="width=device-width, initial-scale=1.0")
  body
    #wrap
      .container
        h1.page-header= appTitle
        p.lead Welcome to a simple Blog Engine by
          a(href='http://mishrabhinav.com') mishrabhinav
          |.
        block page
        block alert
          div.alert.alert-warning.hidden
        .content
        block header
          div
            include includes/menu

          block content
    block footer
      footer
        .container
          p
            | Copyright © 2016 | Issues? Submit to
            a(href="https://github.com/mishrabhinav/blog-engine/issues")  GitHub
            | .


mixin pluginentry(plugininfo)
    tr
        td= plugininfo.name
        td= plugininfo.version
        td
            if plugininfo.author
                = plugininfo.author
        td
            if plugininfo.description
                = plugininfo.description

Use displayName in plugin entry.

mixin pluginentry(plugininfo)
    tr
        td= plugininfo.displayName
        td= plugininfo.version
        td
            if plugininfo.author
                = plugininfo.author
        td
            if plugininfo.description
                = plugininfo.description


//
   Created by Indexyz on 2017/4/7.

doctype html
html
    head
        block head
        block title
        //meta(name="viewport", content="width=device-width, initial-scale=1")
        script(src="/js/material.min.js")
        link(rel='stylesheet', href='https://code.getmdl.io/1.3.0/material.indigo-pink.min.css')
        link(rel='stylesheet', href='//fonts.googleapis.com/icon?family=Material+Icons')
        link(rel='stylesheet', href='/css/style.css')
    body

        block body
        block javascript

Fix not change size in moblie drive

//
   Created by Indexyz on 2017/4/7.

doctype html
html
    head
        block head
        block title
        //meta(name="viewport", content="width=device-width, initial-scale=1")
        script(src="/js/material.min.js")
        meta(http-equiv='X-UA-Compatible', content='IE=edge')
        meta(name='viewport', content='width=device-width, initial-scale=1.0, minimum-scale=1.0')

        link(rel='stylesheet', href='https://code.getmdl.io/1.3.0/material.indigo-pink.min.css')
        link(rel='stylesheet', href='//fonts.googleapis.com/icon?family=Material+Icons')
        link(rel='stylesheet', href='/css/style.css')
    body

        block body
        block javascript


extends ../../../components/layout/index--info

block vars
  - extraClasses = 'no-messages body--static'

block body
  .gs
    h1 Are.na / Getting Started
    .gs__body
      include ./slides/1-channels.jade
      include ./slides/2-blocks.jade
      include ./slides/3-connections.jade
      include ./slides/4-users.jade
      include ./slides/5-feed.jade
    .gs__profile
      a.btn(href="/") Go to your profile

Check for user to add profile button

extends ../../../components/layout/index--info

block vars
  - extraClasses = 'no-messages body--static'

block body
  .gs
    h1 Are.na / Getting Started
    .gs__body
      include ./slides/1-channels.jade
      include ./slides/2-blocks.jade
      include ./slides/3-connections.jade
      include ./slides/4-users.jade
      include ./slides/5-feed.jade
    if user
      .gs__profile
        a.btn(href="/#{user.get('slug')}") Go to your profile


include _mixins

- var prepend = buildPath ? buildPath : '../..';

doctype html
html
  head
    block vars
    block title
     title #{title ? title + ' | ' : ''}Rocketbelt Pattern Library
    block styles
      link(rel='stylesheet', href=prepend + '/css/site.min.css')
    script(src='https://code.jquery.com/jquery-2.2.4.min.js')
  body.grid-fluid
    .row(style='flex-wrap: nowrap;')
      nav.col.xs(style='flex-grow: 0;')
        block sidebar
          +buildNav(nav, prepend)
      .col.xs
        block main
          main.grid-fluid.no-margin
            .row
              .col.xs
                block content

    script(src=prepend + '/js/prism.js')
    script(src=prepend + '/js/clipboard.min.js')
    script(src=prepend + '/js/site.js')

    include _analytics

Add `lang` to root element.

include _mixins

- var prepend = buildPath ? buildPath : '../..';

doctype html
html(lang='en')
  head
    block vars
    block title
     title #{title ? title + ' | ' : ''}Rocketbelt Pattern Library
    block styles
      link(rel='stylesheet', href=prepend + '/css/site.min.css')
    script(src='https://code.jquery.com/jquery-2.2.4.min.js')
  body.grid-fluid
    .row(style='flex-wrap: nowrap;')
      nav.col.xs(style='flex-grow: 0;')
        block sidebar
          +buildNav(nav, prepend)
      .col.xs
        block main
          main.grid-fluid.no-margin
            .row
              .col.xs
                block content

    script(src=prepend + '/js/prism.js')
    script(src=prepend + '/js/clipboard.min.js')
    script(src=prepend + '/js/site.js')

    include _analytics


extends layout

block title
  title= post.title.text

block meta
  meta(property='description', content=post.desc.text)

  meta(name='og:url', content=site.site_url + post.url)
  if (post.image)
      meta(name='og:image', content=post.image.src)
  meta(name='og:title', content=post.title.text)
  meta(name='og:description', content=post.desc.text)

block content
  article.post-item
    header.post-item__header
      h1= post.title.text
      span.post-item__meta
        time= post.date.text
        |  —
        a(href='https://github.com/denysdovhan/denysdovhan.github.io/edit/premaster/posts/#{post.url}.md') edit on github
    section.post-item__content
      != post.content.html

block footer
  | If you think «#{post.title.text}» is awesome, please
  a(href='/rss.xml', target='_blank') subscribe to RSS
  |, share it to you
  a(href='https://twitter.com/intent/tweet?url=http://denysdovhan.com/#{post.url}&text=#{post.title.text}&via=denysdovhan', target="_blank") followers in Twitter
  |  and
  a(href='https://www.facebook.com/sharer.php?u=http://denysdovhan.com/#{post.url}&t=#{post.title.text}', target="_blank") friends in Facebook

Fix edit on github button.

extends layout

block title
  title= post.title.text

block meta
  meta(property='description', content=post.desc.text)

  meta(name='og:url', content=site.site_url + post.url)
  if (post.image)
      meta(name='og:image', content=post.image.src)
  meta(name='og:title', content=post.title.text)
  meta(name='og:description', content=post.desc.text)

block content
  article.post-item
    header.post-item__header
      h1= post.title.text
      span.post-item__meta
        time= post.date.text
        |  —
        a(href='https://github.com/denysdovhan/denysdovhan.github.io/edit/premaster/posts/#{post.filename}') edit on github
    section.post-item__content
      != post.content.html

block footer
  | If you think «#{post.title.text}» is awesome, please
  a(href='/rss.xml', target='_blank') subscribe to RSS
  |, share it to you
  a(href='https://twitter.com/intent/tweet?url=http://denysdovhan.com/#{post.url}&text=#{post.title.text}&via=denysdovhan', target="_blank") followers in Twitter
  |  and
  a(href='https://www.facebook.com/sharer.php?u=http://denysdovhan.com/#{post.url}&t=#{post.title.text}', target="_blank") friends in Facebook


extends ../layout

block content
  h1 New Poem
  h3 Create a new poem
  form(action="/poem", method="post")
    input(type="text", name="name", placeholder="Poem Name", size=50)
    p
      input.poetsearch.typeahead(type="text", placeholder="Add other poets")
      ul.poets
        li.poet= user.name
          input(type="hidden", value="#{user.id}")
    input(type="submit", value="Start Poem")

  script(src="/js/vendor/jquery-1.10.2.min.js")
  script(src="/js/vendor/typeahead.min.js")
  script(src="/js/poem/new.js")

Fix bug: user was not being added as poet

extends ../layout

block content
  h1 New Poem
  h3 Create a new poem
  form(action="/poem", method="post")
    input(type="text", name="name", placeholder="Poem Name", size=50)
    p
      input.poetsearch.typeahead(type="text", placeholder="Add other poets")
      ul.poets
        li.poet= user.name
          input(type="hidden", name="poets", value="#{user.id}")
    input(type="submit", value="Start Poem")

  script(src="/js/vendor/jquery-1.10.2.min.js")
  script(src="/js/vendor/typeahead.min.js")
  script(src="/js/poem/new.js")


- var commonTerms = public._data.commonTerms

ul.menu.list-horz.list-plain
	+menu_link('download.html', commonTerms.download[language])
	+menu_link('start.html', commonTerms.gettingStarted[language])
	+menu_link('modules.html', commonTerms.modules[language])
	//- +menu_link('showcase.html', 'Showcase')
	+menu_link('contributing.html', commonTerms.contributing[language])
	+language_link('/en', 'EN', 'first')
	+language_link('/pt', 'PT')
	+language_link('/es', 'ES', 'last')
	li.styleguide-github-star
		iframe(src="https://ghbtns.com/github-btn.html?user=hugeinc&repo=styleguide&type=watch&count=true", frameborder="0", scrolling="0", width="170px", height="20px")

Fix English translation link path

- var commonTerms = public._data.commonTerms

ul.menu.list-horz.list-plain
	+menu_link('download.html', commonTerms.download[language])
	+menu_link('start.html', commonTerms.gettingStarted[language])
	+menu_link('modules.html', commonTerms.modules[language])
	//- +menu_link('showcase.html', 'Showcase')
	+menu_link('contributing.html', commonTerms.contributing[language])
	+language_link('/', 'EN', 'first')
	+language_link('/pt', 'PT')
	+language_link('/es', 'ES', 'last')
	li.styleguide-github-star
		iframe(src="https://ghbtns.com/github-btn.html?user=hugeinc&repo=styleguide&type=watch&count=true", frameborder="0", scrolling="0", width="170px", height="20px")


template(name="index")
  .col-50.sm-row(class="{{#unless compare latest.count 'or' uploads}}no-file{{/unless}}")
    if compare latest.count 'or' uploads
      .listing: table.table: tbody
        each uploads
          +uploadRow
        each latest.each
          +listingRow
        if compare filesLength '>' latest.count
          tr: td(data-load-more colspan="3")
            h3.no-margin.center
              if loadMore
                span.lnr.lnr-download
              else
                | Load More
    else
      h3.files-note
        if userOnly
          | You have no uploaded files
        else
          | Be the first to upload a file

Use spinner while loading more results

template(name="index")
  .col-50.sm-row(class="{{#unless compare latest.count 'or' uploads}}no-file{{/unless}}")
    if compare latest.count 'or' uploads
      .listing: table.table: tbody
        each uploads
          +uploadRow
        each latest.each
          +listingRow
        if compare filesLength '>' latest.count
          tr: td(data-load-more colspan="3")
            h3.no-margin.center
              if loadMore
                i.la.la-circle-o-notch.la-spin
              else
                | Load More
    else
      h3.files-note
        if userOnly
          | You have no uploaded files
        else
          | Be the first to upload a file


doctype html
html
  head
    title seat.camp
    link(type='text/css', rel='stylesheet',
      href='http://fonts.googleapis.com/css?family=Roboto:300,700,400')
    link(type='text/css', rel='stylesheet', href='sprite-content-white.css')
    link(type='text/css', rel='stylesheet', href='styles.css')
  body
    header.shadow-1
      p seat.camp
      p#active-users ?
    ul#message-list
    footer
      div.preview-container.shadow-1
          video#preview
      form.shadow-1
        input#message(type='text', maxlength='250', autofocus='true')
        p#char-counter 250
        button#send(type='submit')
          div.icon.icon-ic_send_white_24dp
    script(type='text/javascript', src='client.js')

Fix loading fonts on https.

doctype html
html
  head
    title seat.camp
    link(type='text/css', rel='stylesheet',
      href='//fonts.googleapis.com/css?family=Roboto:300,700,400')
    link(type='text/css', rel='stylesheet', href='sprite-content-white.css')
    link(type='text/css', rel='stylesheet', href='styles.css')
  body
    header.shadow-1
      p seat.camp
      p#active-users ?
    ul#message-list
    footer
      div.preview-container.shadow-1
          video#preview
      form.shadow-1
        input#message(type='text', maxlength='250', autofocus='true')
        p#char-counter 250
        button#send(type='submit')
          div.icon.icon-ic_send_white_24dp
    script(type='text/javascript', src='client.js')


extends layouts/_base

block title
    title Cozy Cloud

block content
    main(role='application')

block js
    script
        if name
            | var username='#{name}';
    script(src="/scripts/vendor.js")
    script(src="/scripts/app.js", onload="require('initialize');")

Add a meta description of what is cozy

extends layouts/_base

block title
    title Cozy - Your Personal Cloud
    meta(name="description", content="Cozy is an app-based personal cloud you can host at home. It allows you to own and connect your data. It turns a low-cost piece of hardware like a Raspberry Pi 2 or an online VPS into a powerful app platform. It comes with common applications like a contacts manager, calendar, webmail and filebox."

block content
    main(role='application')

block js
    script
        if name
            | var username='#{name}';
    script(src="/scripts/vendor.js")
    script(src="/scripts/app.js", onload="require('initialize');")


extends layout

block content
    iframe(src="https://dashboard.graphdat.com/embed/e.39fc390b51?d-w=1&d-h=2&d-pad=5&d-header=0&d-legend=0&d-light=1&d-bg=000000&d-sg-reqresptime=0-1-1-1&d-sg-reqcount=0-0-1-1",
           width='100%', height='550', frameborder='0', style="margin-top:-20px;")
    br

    include _partials/footer

block last
    script.
        $(window).load(function() {
            $('ul.nav.navbar-nav li').each(function() { $(this).removeClass('active'); });
            $('li#extras').addClass('active');
            $('li#app').addClass('active');
        });

//- vim: ft=jade sw=4 sts=4 et:

Revert "tweaking app stats graphs"

extends layout

block content
    iframe(src="https://dashboard.graphdat.com/embed/e.39fc390b51?d-w=1&d-h=2&d-pad=5&d-header=0&d-legend=0&d-light=1&d-bg=000000&d-sg-reqresptime=0-0-1-1&d-sg-reqcount=0-1-1-1",
           width='100%', height='550', frameborder='0', style="margin-top:-20px;")
    br

    include _partials/footer

block last
    script.
        $(window).load(function() {
            $('ul.nav.navbar-nav li').each(function() { $(this).removeClass('active'); });
            $('li#extras').addClass('active');
            $('li#app').addClass('active');
        });

//- vim: ft=jade sw=4 sts=4 et:


extends ../layout

block content
  h2 API Browser

  ol
    li
      a(href='/api/aviary') Aviary
    li
      a(href='/api/facebook') Facebook
      small  ⇢ Login Required
    li
      a(href='/api/foursquare') Foursquare
      small  ⇢ Login Required
    li
      a(href='/api/github') GitHub
      small  ⇢ Login Required
    li
      a(href='/api/lastfm') Last.fm
    li
      a(href='/api/nyt') New York Times
    li
      a(href='/api/paypal') PayPal
      small  ⇢ Login Required
    li
      a(href='/api/steam') Steam
    li
      a(href='/api/twilio') Twilio
    li
      a(href='/api/tumblr') Tumblr
      small  ⇢ Login Required
    li
      a(href='/api/twitter') Twitter
      small  ⇢ Login Required
    li
      a(href='/api/scraping') Web Scraping
    li
      a(href='/api/venmo') Venmo

Add login required label on Vemo link

extends ../layout

block content
  h2 API Browser

  ol
    li
      a(href='/api/aviary') Aviary
    li
      a(href='/api/facebook') Facebook
      small  ⇢ Login Required
    li
      a(href='/api/foursquare') Foursquare
      small  ⇢ Login Required
    li
      a(href='/api/github') GitHub
      small  ⇢ Login Required
    li
      a(href='/api/lastfm') Last.fm
    li
      a(href='/api/nyt') New York Times
    li
      a(href='/api/paypal') PayPal
      small  ⇢ Login Required
    li
      a(href='/api/steam') Steam
    li
      a(href='/api/twilio') Twilio
    li
      a(href='/api/tumblr') Tumblr
      small  ⇢ Login Required
    li
      a(href='/api/twitter') Twitter
      small  ⇢ Login Required
    li
      a(href='/api/scraping') Web Scraping
    li
      a(href='/api/venmo') Venmo
      small  ⇢ Login Required


ul#navbar_menu.nav.navbar-nav
	li#home.navbar_list_item(class= activeTab === '/' ? 'active' : undefined)
		a.navbar_link(href="#") Home
	li#about.navbar_list_item(class= activeTab === '/about' ? 'active' : undefined)
		a.navbar_link(href="#") About Us
	li#facts.navbar_list_item.dropdown(class= activeTab === '/facts' ? 'active' : undefined)
		a.dropdown-toggle.navbar_link(href="#" data-toggle="dropdown") Get the Facts
			span.caret
		ul#facts_dropdown_menu.dropdown-menu
			li
				a(href="#") For Medical Professionals
	li#stories.navbar_list_item(class= activeTab === '/stories' ? 'acticve' : undefined)
		a.navbar_link(href="#") Survivor Stories
	li#dedications.navbar_list_item(class= activeTab === '/dedications' ? 'acticve' : undefined)
		a.navbar_link(href="#") Dedications
	li#professionals.navbar_list_item(class= activeTab === '/book' ? 'active' : undefined)
		a.navbar_link(href="#") Book
	li#partners.navbar_list_item(class= activeTab === '/partners' ? 'active' : undefined)
		a.navbar_link(href="#") Partners

Add FAQ link to navbar 'Get the Facts' dropdown menu.

ul#navbar_menu.nav.navbar-nav
	li#home.navbar_list_item(class= activeTab === '/' ? 'active' : undefined)
		a.navbar_link(href="#") Home
	li#about.navbar_list_item(class= activeTab === '/about' ? 'active' : undefined)
		a.navbar_link(href="#") About Us
	li#facts.navbar_list_item.dropdown(class= activeTab === '/facts' ? 'active' : undefined)
		a.dropdown-toggle.navbar_link(href="#" data-toggle="dropdown") Get the Facts
			span.caret
		ul#facts_dropdown_menu.dropdown-menu
			li
				a(href="#") FAQ
			li
				a(href="#") For Medical Professionals
	li#stories.navbar_list_item(class= activeTab === '/stories' ? 'acticve' : undefined)
		a.navbar_link(href="#") Survivor Stories
	li#dedications.navbar_list_item(class= activeTab === '/dedications' ? 'acticve' : undefined)
		a.navbar_link(href="#") Dedications
	li#professionals.navbar_list_item(class= activeTab === '/book' ? 'active' : undefined)
		a.navbar_link(href="#") Book
	li#partners.navbar_list_item(class= activeTab === '/partners' ? 'active' : undefined)
		a.navbar_link(href="#") Partners


extends layout

block title
  title= 'Search Results' + ' : ' + locals.settings.site_owner['company']

block head

block content

  section
    h1 Search Results for "#{cse_query}"

    // See public/js/google_search.js
    gcse:searchresults-only

block footer

Fix search results rendering bug

extends layout

block title
  title= 'Search Results' + ' : ' + locals.settings.site_owner['company']

block head

block content

  section
    h1 Search Results for "#{cse_query}"

    //- Fix for the bottom of the link title being clipped off
    div(style='line-height: 1.4em; font-size: 16px;')
      // See public/js/google_search.js
      gcse:searchresults-only

block footer


#auth-page.vam-outer
  .vam-inner
    include ./_header
      aside
        = copy.get('register') || 'Enter your name, email and password to join'

    section#auth-body
      .auth-register
        form.auth-form
          .auth-errors
          input.bordered-input.is-block(
            name='name', type='text', placeholder='Full Name', value= name, required, autofocus= autofocus
          )
          input#js-mailcheck-input-modal.bordered-input.is-block(
            name='email', type='email', placeholder='Email', value= email, required
          )
          #js-mailcheck-hint-modal
          input.bordered-input.is-block(
            name= 'password'
            type= 'password'
            value= password
            placeholder= 'Password'
            autocomplete= 'on'
            pattern= '.{6,}'
            title= '6 characters minimum'
            required
          )
          button#auth-submit.avant-garde-button-black.is-block Join Artsy

    include ./_signup_footer

Change Order of Inputs on Auth Modal

#auth-page.vam-outer
  .vam-inner
    include ./_header
      aside
        = copy.get('register') || 'Enter your name, email and password to join'

    section#auth-body
      .auth-register
        form.auth-form
          .auth-errors
          input#js-mailcheck-input-modal.bordered-input.is-block(
            name='email', type='email', placeholder='Email', value= email, required
          )
          #js-mailcheck-hint-modal
          input.bordered-input.is-block(
            name= 'password'
            type= 'password'
            value= password
            placeholder= 'Password'
            autocomplete= 'on'
            pattern= '.{6,}'
            title= '6 characters minimum'
            required
          )
          input.bordered-input.is-block(
            name='name', type='text', placeholder='Full Name', value= name, required, autofocus= autofocus
          )
          button#auth-submit.avant-garde-button-black.is-block Join Artsy

    include ./_signup_footer


div.col-md-12
  h2 D Latch
  img(src="/images/d-latch.svg", alt="D latch schematic")
  p A D latch has two inputs and one or two outputs:
  ul
    li E: Input.
    li D: Input.
    li Q: Output. On the positive edge of E, Q takes on the value of D and holds that value until the next positive edge on E.
    li Q: Output. Always contains the inverse of Q. Optional.
  p A D latch can be implemented in Verilog as follows:
  pre: code.language-verilog
    include ../code/_d-latch.v

Change a missed code.verilog class

div.col-md-12
  h2 D Latch
  img(src="/images/d-latch.svg", alt="D latch schematic")
  p A D latch has two inputs and one or two outputs:
  ul
    li E: Input.
    li D: Input.
    li Q: Output. On the positive edge of E, Q takes on the value of D and holds that value until the next positive edge on E.
    li Q: Output. Always contains the inverse of Q. Optional.
  p A D latch can be implemented in Verilog as follows:
  pre: code.verilog
    include ../code/_d-latch.v


div(class="row")
  div(class="col-md-10 col-md-offset-1")
    form
      div(class="form-group")
        h3 Search
        input(ng-model="searchInput", class="form-control", type="text", placeholder="song, album, or artist name...")

div(class="row")
  fl-loading(data="SpotifySearch.status", template="search/loading.html")
  fl-error(data="SpotifySearch.status", template="search/error.html")

div(ng-if="!SpotifySearch.status.loading && !SpotifySearch.status.error", class="row")
  div(class="col-md-10 col-md-offset-1")
    div(class="row")
      div(ng-repeat="r in SpotifySearch.results", class="col-md-6 search-result")
        h4(class="track truncate") {{ r.name }}
        p(class="artist truncate") Artist:
          a(ng-href="/artist/{{ r.artists[0].href }}") {{ r.artists[0].name }}
        p(class="album truncate") Album:
          a(ng-href="/album/{{ r.album.href }}") {{ r.album.name }}
        p(class="year") Year: {{ r.album.released }}
        div(class="buttons btn-toolbar")
          a(ng-click="Jukebox.play(r.href)", class="btn btn-small btn-success") add to queue

Apply column div to restrict width

div(class="row")
  div(class="col-md-10 col-md-offset-1")
    form
      div(class="form-group")
        h3 Search
        input(ng-model="searchInput", class="form-control", type="text", placeholder="song, album, or artist name...")

div(class="row")
  div(class="col-md-10 col-md-offset-1")
    fl-loading(data="SpotifySearch.status", template="search/loading.html")
    fl-error(data="SpotifySearch.status", template="search/error.html")

div(ng-if="!SpotifySearch.status.loading && !SpotifySearch.status.error", class="row")
  div(class="col-md-10 col-md-offset-1")
    div(class="row")
      div(ng-repeat="r in SpotifySearch.results", class="col-md-6 search-result")
        h4(class="track truncate") {{ r.name }}
        p(class="artist truncate") Artist:
          a(ng-href="/artist/{{ r.artists[0].href }}") {{ r.artists[0].name }}
        p(class="album truncate") Album:
          a(ng-href="/album/{{ r.album.href }}") {{ r.album.name }}
        p(class="year") Year: {{ r.album.released }}
        div(class="buttons btn-toolbar")
          a(ng-click="Jukebox.play(r.href)", class="btn btn-small btn-success") add to queue


.home--splash
  .home--splash__copy
    h1 Connect content with context.
    a.btn(data-client="auth" href="/sign_up") Sign up
  .home--splash__image
    img(src='/images/home/hero.jpg')

Change order for mobile homepage

.home--splash
  .home--splash__image
    img(src='/images/home/hero.jpg')
  .home--splash__copy
    h1 Connect content with context.
    a.btn(data-client="auth" href="/sign_up") Sign up


doctype html
html(lang="en")
  head
    title="Legacy Code Conf"
    link(
      rel="stylesheet"
	    type="text/css"
	    href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css")
    // link(
    //  rel="stylesheet"
    //  type="text/css"
    //  href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css")
    link(
      rel="stylesheet"
      type="text/css"
      href="./css/styles.css")
  body
    h1 Legacy Code Conf
    nav(class="navbar navbar-default navbar-fixed-bottom"
        role="navigation")
      div.navbar-header
        span.navbar-brand="Register your interest"
      include ./partials/mailing-list-signup.jade

Add navbar to the top of the page

- var stylesheets = ['./css/bootstrap.min.css', './css/toolkit-startup.min.css', './css/styles.css'];
- var scripts = ['./js/jquery.min.js', './js/toolkit.min.js'];
doctype html
html(lang="en")
  head
    title="Legacy Conf 2016 - 8 October 2016 - Cambridge, UK - The world's first conference dedicated to defeating Legacy Code"
    for stylesheet in stylesheets
      link(rel="stylesheet" href=stylesheet)
    meta(charset="utf-8")
    meta(http-equiv="X-UA-Compatible" content="IE=edge")
    meta(name="viewport" content="width=device-width,initial-scale=1.0")
  body
    div.stage
      div#carousel.content-block
        nav.navbar.navbar-default(role="navigation")
          div.spacer
            div.navbar-header
              span.navbar-brand="LegacyConf"
              ul.nav.navbar-nav.navbar-right
                li
                  a(href="/about")="About"
                li
                  a(href="/sponsors")="Sponsors"
        div
          div.spacer
            h1 Legacy Code Conf
      div.content-block
    nav(class="navbar navbar-default navbar-fixed-bottom")
      div.navbar-header
        span.navbar-brand="Register your interest"
      include ./partials/mailing-list-signup.jade
    for script in scripts
      script(src=script)


include ../layout/panelMixins.jade

+panel-title('Sources')
  i.m-add-source.m-icon-enabled.icon-plus-squared(title="Add new source")
  i(class='icon-up-open',
    data-toggle='collapse',
    data-target='#m-source-panel > .m-panel-content')

if sources
  +panel-content('collapse in')
    .m-sources
      each source in sources
        if source.metadata()
          .m-source
            span(title=source.get('name'))= source.get('name').length > 13 ? source.get('name').slice(0,13) + "..." : source.get('name')
              - var attributes = {'cid': source.cid}
              - var sourceType = sourceTypes[source.getSourceType()]
              - var classes = 'm-icon-enabled m-display-source-action ' + sourceType.icon + ' ' + sourceType.action
              i(class=classes)&attributes(attributes)
              //- trash icon to delete source
              - classes = 'icon-trash m-icon-enabled m-delete-source'
              i(title='delete source', class=classes)&attributes(attributes)
              //- info icon for minerva metadata display
              i(title='display source info').icon-info-circled.m-icon-info.m-icon-enabled&attributes(attributes)

Fix issue with no action in source

include ../layout/panelMixins.jade

+panel-title('Sources')
  i.m-add-source.m-icon-enabled.icon-plus-squared(title="Add new source")
  i(class='icon-up-open',
    data-toggle='collapse',
    data-target='#m-source-panel > .m-panel-content')

if sources
  +panel-content('collapse in')
    .m-sources
      each source in sources
        if source.metadata()
          .m-source
            span(title=source.get('name'))= source.get('name').length > 13 ? source.get('name').slice(0,13) + "..." : source.get('name')
              - var attributes = {'cid': source.cid}
              - var sourceType = sourceTypes[source.getSourceType()]

              if sourceType
                - var classes = 'm-icon-enabled m-display-source-action ' + sourceType.icon + ' ' + sourceType.action
                i(class=classes)&attributes(attributes)
              //- trash icon to delete source
              - classes = 'icon-trash m-icon-enabled m-delete-source'
              i(title='delete source', class=classes)&attributes(attributes)
              //- info icon for minerva metadata display
              i(title='display source info').icon-info-circled.m-icon-info.m-icon-enabled&attributes(attributes)


extends ../layout/auth

block js
	script(src='/keystone/js/packages.js')
	script.
		var Keystone = {
			brand: !{JSON.stringify(brand || '')},
			csrf_token_key: !{JSON.stringify(csrf_token_key || '')},
			csrf_token_value: !{JSON.stringify(csrf_token_value || '')},
			logo: !{JSON.stringify(logo || '')},
			messages: !{JSON.stringify(messages || '')},
			user: !{JSON.stringify(user || '')},
			userCanAccessKeystone: !{user && user.canAccessKeystone ? 'true' : 'false'},
		};
	script(src='/keystone/js/signin.js')

block content
	div#signin-view

Use should default to false, not empty string

extends ../layout/auth

block js
	script(src='/keystone/js/packages.js')
	script.
		var Keystone = {
			brand: !{JSON.stringify(brand || '')},
			csrf_token_key: !{JSON.stringify(csrf_token_key || '')},
			csrf_token_value: !{JSON.stringify(csrf_token_value || '')},
			logo: !{JSON.stringify(logo || '')},
			messages: !{JSON.stringify(messages || '')},
			user: !{JSON.stringify(user || null)},
			userCanAccessKeystone: !{user && user.canAccessKeystone ? 'true' : 'false'},
		};
	script(src='/keystone/js/signin.js')

block content
	div#signin-view


doctype
html
    head
        title= title

        meta(charset='utf-8')
        meta(name='viewport', content='width=device-width, initial-scale=1')
        meta(name='author', content=config.authors.join(', '))
        meta(name='description', content=(description || config.description))
        meta(name='globalsign-domain-verification' content='vJwh9ymdYQvKKoNsjOXy8GEoFDllB-6CS3whL8b9XH')
        meta('http-equiv'='X-UA-Compatible' content='IE=edge')

        link(rel='shortcut', href=config.favicon)

        link(rel='stylesheet', href=helpers.theme.css(config, theme))

        - if (config.stylesheets)
            - each css in config.stylesheets
                link(rel='stylesheet', href=css)

        - if (config.javascript && config.javascript.before)
            - each js in config.javascript.before
                script(src=js, charset="utf-8")

        block head

    body
        include _partials/header

        block content

        - if (config.google_analytics)
            include _partials/javascripts/google_analytics

        - if (config.javascript && config.javascript.after)
            - each js in config.javascript.after
                script(src=js)

        //-include _partials/footer
        include _partials/javascripts/after

        block last

//- vim: ft=jade sw=4 sts=4 et:

Fix `head` meta properties order.

doctype
html
    head
        meta(charset='utf-8')
        meta('http-equiv'='X-UA-Compatible' content='IE=edge')
        meta(name='viewport', content='width=device-width, initial-scale=1')
        title=title
        meta(name='author', content=config.authors.join(', '))
        meta(name='description', content=(description || config.description))
        meta(name='globalsign-domain-verification' content='vJwh9ymdYQvKKoNsjOXy8GEoFDllB-6CS3whL8b9XH')

        link(rel='shortcut icon', href=config.favicon)

        link(rel='stylesheet', href=helpers.theme.css(config, theme))

        - if (config.stylesheets)
            - each css in config.stylesheets
                link(rel='stylesheet', href=css)

        - if (config.javascript && config.javascript.before)
            - each js in config.javascript.before
                script(src=js, charset="utf-8")

        block head

    body
        include _partials/header

        block content

        - if (config.google_analytics)
            include _partials/javascripts/google_analytics

        - if (config.javascript && config.javascript.after)
            - each js in config.javascript.after
                script(src=js)

        //-include _partials/footer
        include _partials/javascripts/after

        block last

//- vim: ft=jade sw=4 sts=4 et:


a.promote-button.is-editable(
    href=""
    tg-check-permission="add_us"
    title="{{ 'ISSUES.ACTION_PROMOTE_TO_US' | translate }}"
)
    tg-svg(svg-icon="icon-promote")

Fix promote button rounded corners

a.promote-button.button-gray.is-editable(
    href=""
    tg-check-permission="add_us"
    title="{{ 'ISSUES.ACTION_PROMOTE_TO_US' | translate }}"
)
    tg-svg(svg-icon="icon-promote")


html(lang='en')
  head
    title Publish
    meta(name='viewport', content='width=device-width, initial-scale=1')
    base(href='/')
    link(rel='icon' href='/assets/images/favicon.png')

    if locals.dist
      script(src='/publish.min.js')
    else
      script(src='/jspm_packages/system.js')
      script(src='/config/systemjs.config.js')
      script.
        var readyForMainLoad;
        if (location.origin.match(/localhost|\.dev/)) {
          System.trace = true;
          readyForMainLoad = System.import('capaj/systemjs-hot-reloader').then((HotReloader) => {
            hr = new HotReloader.default('http://localhost:3000');

            // reload same-named components when css changes
            hr.on('change', (fileName) => {
              if (console['clear']) console['clear']();
              console.log(`---- hot-reloaded ${fileName} ----`);
              if (fileName.match(/app\.component/)) {
                hr.hotReload('app/app.component.ts');
              } else if (fileName.match(/storyedit\.forms/)) {
                hr.hotReload('app/storyedit/directives/edit.component.ts');
              } else if (fileName.match(/\.css$/)) {
                hr.hotReload(fileName.replace(/\.css$/, '.ts'));
              }
            });
          });
        }
        Promise.resolve(readyForMainLoad).then(() => {
          System.import('app/main').then(null, console.error.bind(console));
        });

  body
    script
      = locals.config
    publish-app

Allow .docker, use whatever the browser location is for hot reload

html(lang='en')
  head
    title Publish
    meta(name='viewport', content='width=device-width, initial-scale=1')
    base(href='/')
    link(rel='icon' href='/assets/images/favicon.png')

    if locals.dist
      script(src='/publish.min.js')
    else
      script(src='/jspm_packages/system.js')
      script(src='/config/systemjs.config.js')
      script.
        var readyForMainLoad;
        if (location.origin.match(/localhost|\.dev|\.docker/)) {
          System.trace = true;
          readyForMainLoad = System.import('capaj/systemjs-hot-reloader').then((HotReloader) => {
            hr = new HotReloader.default(location.origin);

            // reload same-named components when css changes
            hr.on('change', (fileName) => {
              if (console['clear']) console['clear']();
              console.log(`---- hot-reloaded ${fileName} ----`);
              if (fileName.match(/app\.component/)) {
                hr.hotReload('app/app.component.ts');
              } else if (fileName.match(/storyedit\.forms/)) {
                hr.hotReload('app/storyedit/directives/edit.component.ts');
              } else if (fileName.match(/\.css$/)) {
                hr.hotReload(fileName.replace(/\.css$/, '.ts'));
              }
            });
          });
        }
        Promise.resolve(readyForMainLoad).then(() => {
          System.import('app/main').then(null, console.error.bind(console));
        });

  body
    script
      = locals.config
    publish-app


extends layout

block content
    iframe.iframe-extras(src='http://embed.verite.co/timeline/?source=0AgzjZpa-s_3adFpEMVdJTU90X1F5WHJsV2k5YmZTdXc&font=Bevan-PotanoSans&maptype=toner&lang=en&height=550')

    p.timeline-js Powered by a(href="http://timeline.verite.co/", target="_blank") Timeline.JS

    include _partials/footer

block last
    script
        :uglify
            $(window).load(function() {
                $('ul.nav.navbar-nav li').each(function() { $(this).removeClass('active'); });
                $('li#extras').addClass('active');
                $('li#birthday').addClass('active');
            });

//- vim: ft=jade sw=4 sts=4 et:

Update timeline URL to the latest one and fix a Jade issue.

extends layout

block content
    iframe.iframe-extras(src='http://cdn.knightlab.com/libs/timeline/latest/embed/index.html?source=0AgzjZpa-s_3adFpEMVdJTU90X1F5WHJsV2k5YmZTdXc&font=Bevan-PotanoSans&maptype=toner&lang=en&height=550')

    p.timeline-js Powered by
        a(href="http://timeline.knightlab.com/", target="_blank") TimelineJS

    include _partials/footer

block last
    script
        :uglify
            $(window).load(function() {
                $('ul.nav.navbar-nav li').each(function() { $(this).removeClass('active'); });
                $('li#extras').addClass('active');
                $('li#birthday').addClass('active');
            });

//- vim: ft=jade sw=4 sts=4 et:


.row
  .col-xs-9
    if profileSet
      each profile in profiles
        span.icon(class!=profile['icon'])
      each profile, i in profiles
        span.profile
          != ' ' + profile['text']
        if i == profiles.length - 2
          = t('general.and')
        else if i != profiles.length - 1
          = ', '
        else if i == profiles.length - 1
          = '.'
    else
      p= t('accessibility.profile_not_set')
  .col-xs-3
    a.set-accessibility-profile(href='#')
      = t('transit.route_settings.edit')

Fix typo breaking accessibility profile summary in route settings

.row
  .col-xs-9
    if profile_set
      each profile in profiles
        span.icon(class!=profile['icon'])
      each profile, i in profiles
        span.profile
          != ' ' + profile['text']
        if i == profiles.length - 2
          = t('general.and')
        else if i != profiles.length - 1
          = ', '
        else if i == profiles.length - 1
          = '.'
    else
      p= t('accessibility.profile_not_set')
  .col-xs-3
    a.set-accessibility-profile(href='#')
      = t('transit.route_settings.edit')


extends ../layout

block title
  | PigeonApp - Thank you for flying with us!

block app
  section
    include ../partials/header

  section#confirm
    .page-cloud-brown
    .page-brown
      .padding
        .text-center
          form.pure-form
            div.step-indicator
              span.fly-check.done
              span.fly-check.done
              span.fly-check.now.done

            .spacer-40

            .step.current-step
              h1 You are now ready to fly!
              .spacer-5
              h3 Now that everything is completed, we are sending
              h3.text-left
                | 1 - An
                strong email to your address
                | with instructions on how to
                strong integrate PigeonApp in your website
                | .
              h3.text-left
                | 2 - A
                strong confirmation email to the destination address
                | just to ensure Pigeon will not be used against its purpose

              .spacer-20
              p
                small Thanks for flying with us!

                .code-form
                  input(type='text' placeholder='Insert the 7 digits code' maxlength='7')
                  button.pure-button
                    span Activate

      .spacer-20

  section#footer
    .page-cloud-white
    .page-white
      include ../partials/footer

Add more spacer in footer

extends ../layout

block title
  | PigeonApp - Thank you for flying with us!

block app
  section
    include ../partials/header

  section#confirm
    .page-cloud-brown
    .page-brown
      .padding
        .text-center
          form.pure-form
            div.step-indicator
              span.fly-check.done
              span.fly-check.done
              span.fly-check.now.done

            .spacer-40

            .step.current-step
              h1 You are now ready to fly!
              .spacer-5
              h3 Now that everything is completed, we are sending
              h3.text-left
                | 1 - An
                strong email to your address
                | with instructions on how to
                strong integrate PigeonApp in your website
                | .
              h3.text-left
                | 2 - A
                strong confirmation email to the destination address
                | just to ensure Pigeon will not be used against its purpose

              .spacer-20
              p
                small Thanks for flying with us!

                .code-form
                  input(type='text' placeholder='Insert the 7 digits code' maxlength='7')
                  button.pure-button
                    span Activate

      .spacer-20

  section#footer
    .page-cloud-white
    .page-white
      include ../partials/footer
      .spacer-20


extends layout

block content
  #content
    h1= title
    .spacer

    .left
      h3 ROSEDu Challenge Cookbook
      p Glad you joined our challenge! To get started you should join the ROSEdu Challenge,
        go to Home page and click "Start".
      p As you can see you have many projects from which you can choose from. You don't have
        to pick just one, you can add contributions to all of them. We encourgae you to
        discover all of them.
      p Each project has a mentor which can help you get started with the project, and
        review your code.

    .right
      .submenu
        .submenu-item-selected FAQ
        a(href='/contact')
          .submenu-item Contact

  .spacer

Add help sections in FAQ

extends layout

block content
  #content
    h1= title
    .spacer

    .left
      h3 ROSEDu Challenge Cookbook
      p Glad you joined our challenge! To get started you should join the ROSEdu Challenge,
        go to Home page and click "Start".
      p As you can see you have many projects from which you can choose from. You don't have
        to pick just one, you can add contributions to all of them. We encourgae you to
        discover all of them.
      p Each project has a mentor which can help you get started with the project, and
        review your code.

      h3 Why ROSEdu Challenge?
      p We love Open Source and we have a lot of projects which need attention.
      Events like Upstream Challenge, ROSEDu Summer of Code inspired us in this quest.
      p Learn by contributing! :)

      h3 How to contribute to Open Source?
      p Github has a good a(href='https://guides.github.com/activities/contributing-to-open-source/')= "tutorial" which we recommend you read.
      p You will quickly discover that each project is unique (of course). Most of the projects
      have a Development/Hask section in the repository README.md, search for that when you browse
      a new project.

      h3 How to get started with Git and GitHub?
      p We recommend you start with a(href='https://try.github.io/levels/1/challenges/1')= "Learn Git" and for more
      answers nothing is better than a(href='http://git-scm.com/docs')= "official docs".
      p GitHub is very easy to ease, their a(href='https://guides.github.com/introduction/flow/index.html')= "flow introduction"
      will help you get started.

      h3 Whom I can ask for help?
      p You can drop as an email from the a(href='/contact')="Contact" section, or
      a(href='https://github.com/blog/821-mention-somebody-they-re-notified')="mention one of the mentors" in an issue or pull request.

    .right
      .submenu
        .submenu-item-selected FAQ
        a(href='/contact')
          .submenu-item Contact

  .spacer


extends layout

block content
  h1 L-Systems

  form(name="lsys_form", method="post", action="/new_lsystem")
    label(for="alphabet") Alphabet
    br
    input(type="text", name="alphabet")
    br
    label(for="axiom") Axiom
    br
    input(type="text", name="axiom")
    br
    label(for="axiom") Rules
    br
    textarea(name="rules")
    br
    label(for="angle")
    br
    input(type="text", name="angle")
    br
    label(for="draw_chars")
    br
    input(type="text", name="draw_chars")
    br
    label(for="iterations") Iterations
    br
    input(type="text", name="iterations")
    br
    input(type="submit", value="Create")

Fix labels on LSystem form

extends layout

block content
  h1 L-Systems

  form(name="lsys_form", method="post", action="/new_lsystem")
    label(for="alphabet") Alphabet
    br
    input(type="text", name="alphabet")
    br
    label(for="axiom") Axiom
    br
    input(type="text", name="axiom")
    br
    label(for="axiom") Rules
    br
    textarea(name="rules")
    br
    label(for="angle") Angle
    br
    input(type="text", name="angle")
    br
    label(for="draw_chars") Drawing Characters (letters that correspond to draw)
    br
    input(type="text", name="draw_chars")
    br
    label(for="iterations") Iterations
    br
    input(type="text", name="iterations")
    br
    input(type="submit", value="Create")


extends ../node_modules/maki/views/layouts/default

block content

  h1 #{item.title}

  h2 Preview
  .preview !{ markdown( item.description ) }

  h2 Edit

  form.ui.form(action="/recordings/#{item.slug}", method="POST")
    input(type="hidden", name="method", value="PATCH")

    .field
      label Title
      input(type="text", name="title", value="#{item.title}")

    .field
      label Description
      textarea(name="description", style="height: 20em;") #{item.description}

    .field
      label YouTube Video ID
      input(type="text", name="youtube", value="#{item.youtube || ''}")

    .field
      label Soundcloud ID
      input(type="text", name="soundcloud", value="#{item.soundcloud || ''}")

    button.ui.submit.button(type="submit") Edit »

block scripts
  script(src="/js/marked.min.js")
  script.
    $('textarea[name=description]').keyup( renderPreview );

    function renderPreview() {
      var value = this.value;
      var rendered = marked( value );
      $('.preview').html( rendered );
    }

Tidy up already verbose form.

extends ../node_modules/maki/views/layouts/default

block content

  h1 #{item.title}

  h2 Preview
  .preview !{ markdown( item.description ) }

  h2 Edit

  form.ui.form(action="/recordings/#{item.slug}", method="POST")
    input(type="hidden", name="method", value="PATCH")

    .field
      label Title
      input(type="text", name="title", value="#{item.title}")

    .field
      label Description
      textarea(name="description", style="height: 20em;") #{item.description}

    .two.fields
      .field
        label YouTube Video ID
        input(type="text", name="youtube", value="#{item.youtube || ''}")

      .field
        label Soundcloud ID
        input(type="text", name="soundcloud", value="#{item.soundcloud || ''}")

    button.ui.submit.button(type="submit") Edit »

block scripts
  script(src="/js/marked.min.js")
  script.
    $('textarea[name=description]').keyup( renderPreview );

    function renderPreview() {
      var value = this.value;
      var rendered = marked( value );
      $('.preview').html( rendered );
    }


extends ../../../layouts/base-whitefooter.jade

block head
  title DC/OS Release 1.8.6

block content

  .container.container--dark-background
    +header

    .container__content
      h1 DC/OS Release 1.8.6
      p.hero-subtitle
        a(href='https://downloads.dcos.io/dcos/stable/dcos_generate_config.sh').cta.cta--button Download
        a(href='/docs/1.8/').cta.cta--text View Documentation →

  .container
    .container__content
      .container__content--release-notes.docs-layout__docs-content
        include:markdown notes.md

  .container
      +footer

Add link to 1.8.6 bits

extends ../../../layouts/base-whitefooter.jade

block head
  title DC/OS Release 1.8.6

block content

  .container.container--dark-background
    +header

    .container__content
      h1 DC/OS Release 1.8.6
      p.hero-subtitle
        a(href='https://downloads.dcos.io/dcos/stable/commit/cfccfbf84bbba30e695ae4887b65db44ff216b1d/dcos_generate_config.sh').cta.cta--button Download
        a(href='/docs/1.8/').cta.cta--text View Documentation →

  .container
    .container__content
      .container__content--release-notes.docs-layout__docs-content
        include:markdown notes.md

  .container
      +footer


- if (!item && comment) {
-   var item = comment;
-   var context = 'comment';
- }
- if (!item && post) {
-   var item = post;
-   var context = 'post';
- }

.left.floated(style="width: 3em; text-align: center;")
  .ui.mini.statistic
    if (user)
      a.label(data-intent="upvote", data-id="#{item._id}", data-context="#{context}", data-for="#{user._id}")
        i.chevron.up.icon
      .value(style="font-size: 1em;", data-bind="#{item._id}") #{item && item.score || 0}
      a.label(data-intent="downvote", data-id="#{item._id}", data-context="#{context}", data-for="#{user._id}")
        i.chevron.down.icon
    else
      a.label(data-intent="upvote", data-id="#{item._id}", data-context="#{context}", data-for="#{user._id}")
        i.chevron.up.icon
      .value(style="font-size: 1em;") #{item && item.score || 0}
      a.label(data-intent="downvote", data-id="#{item._id}", data-context="#{context}", data-for="#{user._id}")
        i.chevron.down.icon

Fix bug in templating for logged-out users.

- if (!item && comment) {
-   var item = comment;
-   var context = 'comment';
- }
- if (!item && post) {
-   var item = post;
-   var context = 'post';
- }

.left.floated(style="width: 3em; text-align: center;")
  .ui.mini.statistic
    if (user)
      a.label(data-intent="upvote", data-id="#{item._id}", data-context="#{context}", data-for="#{user._id}")
        i.chevron.up.icon
      .value(style="font-size: 1em;", data-bind="#{item._id}") #{item && item.score || 0}
      a.label(data-intent="downvote", data-id="#{item._id}", data-context="#{context}", data-for="#{user._id}")
        i.chevron.down.icon
    else
      a.label.tooltipped(title="Register or sign in to vote!")
        i.chevron.up.icon
      .value(style="font-size: 1em;") #{item && item.score || 0}
      a.label.tooltipped(title="Register or sign in to vote!")
        i.chevron.down.icon


.page-header
    h3
        span.vote-count=votes.votes
        if !votes.votedFor
            form(action='/news/' + item._id, method='POST', class='upvote-form')
                input(type='hidden', name='amount', value='1')
                button(type='submit', class='upvote')
                    i.fa.fa-chevron-up

        a(href=item.url)= item.title
        if item.summary && ! item.isSelfPost()
            |
            a(href="#", class="show-summary")
                | ...
        +delete(item.poster, '/news/' + item._id + '/delete')
    p.voters
        each voter, index in votes.voters
            a.voter(href="/user/#{voter}")=voter
    h4
        div(class="item-summary")!= item.summary
    = 'submitted '
    span.timeago(title="#{item.created}")= timeago(item.created)
    = ' from '
    a(href='/news/source/' + item.source, class='source')= item.source
    = ' by '
    a(href='/user/' + item.poster.username, class='user')= item.poster.username
    if item.poster.profile.description
        = ', '
        span(title="User description")= item.poster.profile.description

Make news item time linkable

.page-header
    h3
        span.vote-count=votes.votes
        if !votes.votedFor
            form(action='/news/' + item._id, method='POST', class='upvote-form')
                input(type='hidden', name='amount', value='1')
                button(type='submit', class='upvote')
                    i.fa.fa-chevron-up

        a(href=item.url)= item.title
        if item.summary && ! item.isSelfPost()
            |
            a(href="#", class="show-summary")
                | ...
        +delete(item.poster, '/news/' + item._id + '/delete')
    p.voters
        each voter, index in votes.voters
            a.voter(href="/user/#{voter}")=voter
    h4
        div(class="item-summary")!= item.summary
    = 'submitted '
    a.timeago(href="/news/#{item.id}", title="#{item.created}")= timeago(item.created)
    = ' from '
    a(href='/news/source/' + item.source, class='source')= item.source
    = ' by '
    a(href='/user/' + item.poster.username, class='user')= item.poster.username
    if item.poster.profile.description
        = ', '
        span(title="User description")= item.poster.profile.description


extend layout

block content
    div#chat
        div.row
            div.welcome.top-buffer
            div.top-buffer#setYourName
                label(for="name", autocomplete="off") Enter your chat name
                    div.input-group
                        input#name.form-control(name="name", type="text")
                        span.input-group-btn
                            button#setName.btn.btn-default(type="button") Set Name
        div#chatbox
        div.input-group
            input#message(type="text", autocomplete="off").form-control
            span.input-group-btn
                button#sendMessage(type="button").btn.btn-default Send

    script(src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js")
    script(src="/javascripts/socket.io.js")
    script(src="/javascripts/chat.js")

Add paragraph item to use for when user is typing message

extend layout

block content
    div#chat
        div.row
            div.welcome.top-buffer
            div.top-buffer#setYourName
                label(for="name", autocomplete="off") Enter your chat name
                    div.input-group
                        input#name.form-control(name="name", type="text")
                        span.input-group-btn
                            button#setName.btn.btn-default(type="button") Set Name
        div#chatbox
        div.input-group
            input#message(type="text", autocomplete="off").form-control
            span.input-group-btn
                button#sendMessage(type="button").btn.btn-default Send
        p.user-typing

    script(src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js")
    script(src="/javascripts/socket.io.js")
    script(src="/javascripts/chat.js")


html
  body
    for msg in messages
      div #{msg.msg}

  h1 Transaction
    h2 Details
    table
      tr
        th Property
        th Value
      tr
        td id
        td= transaction.id
      tr
        td type
        td= transaction.type
      tr
        td amount
        td= transaction.amount
      tr
        td status
        td= transaction.status
      tr
        td createdAt
        td= transaction.createdAt
      tr
        td updatedAt
        td= transaction.updatedAt

    h2 Credit Card Details
    table
      tr
        th Property
        th Value
      tr
        td token
        td= transaction.creditCard.token
      tr
        td bin
        td= transaction.creditCard.bin
      tr
        td last4
        td= transaction.creditCard.last4
      tr
        td cardType
        td= transaction.creditCard.cardType
      tr
        td expirationDate
        td= transaction.creditCard.expirationDate
      tr
        td cardholderName
        td= transaction.creditCard.cardholderName
      tr
        td customerLocation
        td= transaction.creditCard.customerLocation

    h2 Customer Details
    table
      tr
        th Property
        th Value
      tr
        td id
        td= transaction.customer.id
      tr
        td firstName
        td= transaction.customer.firstName
      tr
        td lastName
        td= transaction.customer.lastName
      tr
        td email
        td= transaction.customer.email
      tr
        td company
        td= transaction.customer.company
      tr
        td website
        td= transaction.customer.website
      tr
        td phone
        td= transaction.customer.phone
      tr
        td fax
        td= transaction.customer.fax

Add link to return to checkouts new page

html
  body
    for msg in messages
      div #{msg.msg}

  h1 Transaction
    h2 Details
    table
      tr
        th Property
        th Value
      tr
        td id
        td= transaction.id
      tr
        td type
        td= transaction.type
      tr
        td amount
        td= transaction.amount
      tr
        td status
        td= transaction.status
      tr
        td createdAt
        td= transaction.createdAt
      tr
        td updatedAt
        td= transaction.updatedAt

    h2 Credit Card Details
    table
      tr
        th Property
        th Value
      tr
        td token
        td= transaction.creditCard.token
      tr
        td bin
        td= transaction.creditCard.bin
      tr
        td last4
        td= transaction.creditCard.last4
      tr
        td cardType
        td= transaction.creditCard.cardType
      tr
        td expirationDate
        td= transaction.creditCard.expirationDate
      tr
        td cardholderName
        td= transaction.creditCard.cardholderName
      tr
        td customerLocation
        td= transaction.creditCard.customerLocation

    h2 Customer Details
    table
      tr
        th Property
        th Value
      tr
        td id
        td= transaction.customer.id
      tr
        td firstName
        td= transaction.customer.firstName
      tr
        td lastName
        td= transaction.customer.lastName
      tr
        td email
        td= transaction.customer.email
      tr
        td company
        td= transaction.customer.company
      tr
        td website
        td= transaction.customer.website
      tr
        td phone
        td= transaction.customer.phone
      tr
        td fax
        td= transaction.customer.fax

    p
      a(href='/checkouts/new') Return to checkout page


doctype html
html
  head
    include _head
    include _mixins
  body(itemscope, itemtype='https://schema.org/WebPage')
    header(itemscope, itemtype='https://schema.org/WPHeader')
      include _header
    main(itemscope, itemtype='https://schema.org/Blog')
      include _content
    include _scripts

Add space div for header background

doctype html
html
  head
    include _head
    include _mixins
  body(itemscope, itemtype='https://schema.org/WebPage')
    header(itemscope, itemtype='https://schema.org/WPHeader')
      include _header
      .space
    main(itemscope, itemtype='https://schema.org/Blog')
      include _content
    include _scripts


doctype html
html(lang='en')
	head
		meta(charset="utf-8")
		block title

		link(rel='stylesheet' href='//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css')
		link(rel='stylesheet' href='/styles/main.min.css')
		block styles

	body
		block content

	script(src='/scripts/main.min.js')
	block scripts

Add proper meta viewport attributes for mobile.

doctype html
html(lang='en')
	head
		meta(charset="utf-8")
		meta(name="viewport" content="width=device-width, initial-scale=1")
		block title

		link(rel='stylesheet' href='//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css')
		link(rel='stylesheet' href='/styles/main.min.css')
		block styles

	body
		block content

	script(src='/scripts/main.min.js')
	block scripts


.AboutPosts.PageNarrowBreakout
  a.AboutPost( href='https://www.are.na/lucy-siyao-liu/orthographies' )
    .AboutPost__cover(
      style='background-image: url("https://d2w9rnfcy7mm78.cloudfront.net/1289511/large_e9633fb2e60304030f3bb831b30450b1.jpg")'
    )
    h3.Type
      strong Orthographies

    p.Type
      | A fall 2017 course taught by Lucy Siyao Liu in MIT’s Arts, Culture, and Technology program. Exercises, projects, and references are all clearly organized into channels within the class channel.

  a.AboutPost( href='https://www.are.na/sfpc-arena/channels')
    .AboutPost__cover(
      style='background-image: url("https://d2w9rnfcy7mm78.cloudfront.net/785357/large_a9b4ce77bf21d4fc76bb197462d7fdd9")'
    )
    h3.Type
      strong SFPC

    p.Type
      | SFPC is an artist-run school in New York that explores intersections of code, design, hardware and theory. The school maintains channels for all kinds of information and resources.

  a.AboutPost( href='https://www.are.na/chris-collins/uic-nma-topics-in-new-media' )
    .AboutPost__cover(
      style='background-image: url("https://d2w9rnfcy7mm78.cloudfront.net/438461/original_ed30ed66ea2e2fd780618bf4415aa9ee.gif")'
    )
    h3.Type
      strong Topics in New Media

    p.Type
      | This was a fall 2015 course taught by Chris Collins at the University of Illinois, Chicago. This channel is an informal site where students all shared links relevant to their coursework.

Remove uncofirmed examples for now

.AboutPosts.PageNarrowBreakout
  a.AboutPost( href='https://www.are.na/lucy-siyao-liu/orthographies' )
    .AboutPost__cover(
      style='background-image: url("https://d2w9rnfcy7mm78.cloudfront.net/1289511/large_e9633fb2e60304030f3bb831b30450b1.jpg")'
    )
    h3.Type
      strong Orthographies

    p.Type
      | A fall 2017 course taught by Lucy Siyao Liu in the Art, Culture Technology Program (ACT) at MIT. Exercises, projects, and references are all clearly organized into channels within the class channel.