extends layout

block content
  .page-header
    h3 Contact Form

  form.form-horizontal(role='form', method='POST')
    input(type='hidden', name='_csrf', value=token)
    .form-group
      label(class='col-sm-2 control-label', for='name') Name
      .col-sm-8
        input.form-control(type='name', name='name', id='name', autofocus=true)
    .form-group
      label(class='col-sm-2 control-label', for='email') Email
      .col-sm-8
        input.form-control(type='text', name='email', id='email')
    .form-group
      label(class='col-sm-2 control-label', for='message') Body
      .col-sm-8
        textarea.form-control(type='text', name='message', id='message', rows='7')
    .form-group
      .col-sm-offset-2.col-sm-8
        button.btn.btn-default(type='submit')
          i.fa.fa-mail-forward
          | Send
        img.pull-right(height='34', src='/img/sendgrid.png')

Update textfield type for Name

extends layout

block content
  .page-header
    h3 Contact Form

  form.form-horizontal(role='form', method='POST')
    input(type='hidden', name='_csrf', value=token)
    .form-group
      label(class='col-sm-2 control-label', for='name') Name
      .col-sm-8
        input.form-control(type='text', name='name', id='name', autofocus=true)
    .form-group
      label(class='col-sm-2 control-label', for='email') Email
      .col-sm-8
        input.form-control(type='text', name='email', id='email')
    .form-group
      label(class='col-sm-2 control-label', for='message') Body
      .col-sm-8
        textarea.form-control(type='text', name='message', id='message', rows='7')
    .form-group
      .col-sm-offset-2.col-sm-8
        button.btn.btn-default(type='submit')
          i.fa.fa-mail-forward
          | Send
        img.pull-right(height='34', src='/img/sendgrid.png')


div.create-warning(ng-if="!canCreatePrivateProjects.valid && canCreatePrivateProjects.reason == 'max_private_projects'")
    svg.icon.icon-exclamation
        use(xlink:href="#icon-exclamation")
    span {{ 'WIZARD.MAX_PRIVATE_PROJECTS' | translate }}
    div
        span {{ 'WIZARD.CREATE_MORE_PROJECTS' | translate }}
        a(
            href=""
            title="{{'WIZARD.CHANGE_PLAN' | translate }}"
            tg-nav="project-admin-project-profile-modules:project=project.slug"
        ) {{'WIZARD.CHANGE_PLAN' | translate }}

div.create-warning(ng-if="!canCreatePublicProjects.valid && canCreatePublicProjects.reason == 'max_public_projects'")
    svg.icon.icon-exclamation
        use(xlink:href="#icon-exclamation")
    span {{ 'WIZARD.MAX_PUBLIC_PROJECTS' | translate }}
    div
        span {{ 'WIZARD.CREATE_MORE_PROJECTS' | translate }}
        a(
            href=""
            title="{{'WIZARD.CHANGE_PLAN' | translate }}"
            tg-nav="project-admin-project-profile-modules:project=project.slug"
        ) {{'WIZARD.CHANGE_PLAN' | translate }}

Add nav URL to plugin

div.create-warning(ng-if="!canCreatePrivateProjects.valid && canCreatePrivateProjects.reason == 'max_private_projects'")
    svg.icon.icon-exclamation
        use(xlink:href="#icon-exclamation")
    span {{ 'WIZARD.MAX_PRIVATE_PROJECTS' | translate }}
    div
        span {{ 'WIZARD.CREATE_MORE_PROJECTS' | translate }}
        a(
            href=""
            title="{{'WIZARD.CHANGE_PLAN' | translate }}"
            tg-nav="user-settings-contrib:plugin='subscriptions'",
        ) {{'WIZARD.CHANGE_PLAN' | translate }}

div.create-warning(ng-if="!canCreatePublicProjects.valid && canCreatePublicProjects.reason == 'max_public_projects'")
    svg.icon.icon-exclamation
        use(xlink:href="#icon-exclamation")
    span {{ 'WIZARD.MAX_PUBLIC_PROJECTS' | translate }}
    div
        span {{ 'WIZARD.CREATE_MORE_PROJECTS' | translate }}
        a(
            href=""
            title="{{'WIZARD.CHANGE_PLAN' | translate }}"
            tg-nav="user-settings-contrib:plugin='subscriptions'",
        ) {{'WIZARD.CHANGE_PLAN' | translate }}


doctype html
html
  head
    title= title
    script(type='text/javascript', src='/tanura.js')
    script(type='text/javascript', src='/script.js')
    meta(
        name='viewport',
        content='width=400, initial-scale=1, minimum-scale=1, maximum-scale=1')
  body
    block content

Load Tanura asynchronously in the demo app.

doctype html
html
  head
    title= title
    script(type='text/javascript', async, src='/tanura.js')
    script(type='text/javascript', async, src='/script.js')
    meta(
        name='viewport',
        content='width=400, initial-scale=1, minimum-scale=1, maximum-scale=1')
  body
    block content


section.code-samples.column-contain.hidden-xs
  .code-sample-block.first-sample-block
      h4.code-header Setup
      pre.prettyprint
        code.
          var SingleLink = Backbone.Marionette.ItemView.extend({
            tagName: "li",
            template: _.template("<a href='<%%-path%>'><%%-path%>")
          });

          var ListView = Backbone.Marionette.CollectionView.extend({
            tagName: 'ul',
            childView: SingleLink
          });

  .code-sample-block.second-sample-block
    h4.code-header Using
    pre.prettyprint
      code.
        var list = new Backbone.Collection([
          {path: 'http://google.com'},
          {path: 'http://mojotech.com'},
        ]);

        (new ListView({
          collection: list,
          el: '.link-area'
        })).render();

  .code-sample-block.code-results-block
    h4.code-header.code-header-results Results
    .result
      ul
        li
          a(href="http://google.com", target="_blank") http://google.com
        li
          a(href="http://mojotech.com", target="_blank") http://mojotech.com
    .cl
  .cl

Update code section headings to be more descriptive

section.code-samples.column-contain.hidden-xs
  .code-sample-block.first-sample-block
      h4.code-header Define view classes
      pre.prettyprint
        code.
          var SingleLink = Marionette.ItemView.extend({
            tagName: "li",
            template: _.template("<a href='<%-path%>'><%-path%>")
          });

          var ListView = Marionette.CollectionView.extend({
            tagName: 'ul',
            childView: SingleLink
          });

  .code-sample-block.second-sample-block
    h4.code-header Pass in data
    pre.prettyprint
      code.
        var list = new Backbone.Collection([
          {path: 'http://google.com'},
          {path: 'http://mojotech.com'},
        ]);

        (new ListView({
          collection: list,
          el: '.link-area'
        })).render();

  .code-sample-block.code-results-block
    h4.code-header.code-header-results Results
    .result
      ul
        li
          a(href="http://google.com", target="_blank") http://google.com
        li
          a(href="http://mojotech.com", target="_blank") http://mojotech.com
    .cl
  .cl


footer.d-footer
  .container
    .row
      | © Interplanetary Networks, Inc. |
      | Except as
      a(href='http://ipn.io/legal/policies')  noted
      | , content licensed
      a(href='https://creativecommons.org/licenses/by/3.0/')  CC-BY 3.0
      |  | Source on
      a(href='https://github.com/ipfs/distributions')  Github

Change copyright to IPFS Community

footer.d-footer
  .container
    .row
      | © IPFS Community |
      | Except as
      a(href='http://ipn.io/legal/policies')  noted
      | , content licensed
      a(href='https://creativecommons.org/licenses/by/3.0/')  CC-BY 3.0
      |  | Source on
      a(href='https://github.com/ipfs/distributions')  Github


for suggestionSet in suggestions
  .personalize-suggestions-set( data-id= suggestionSet.id )
    header.personalize-suggestions-set-header
      = suggestionSet.get('name')

    for artist in suggestionSet.get('suggestions').models
      .personalize-suggestion.is-artist
        img.personalize-suggestion-thumbnail(
          src= artist.imageUrl('square')
          alt= artist.get('name')
          onerror='this.style.display="none";'
        )
        .personalize-suggestion-name
          = artist.get('name')
        .personalize-suggestion-info
          if artist.get('nationality') && artist.get('years')
            | #{artist.get('nationality')}, #{artist.get('years')}
          else
            |

        a.avant-garde-button-white.follow-button( data-id=artist.id )

Replace with missing_image instead of hiding

for suggestionSet in suggestions
  .personalize-suggestions-set( data-id= suggestionSet.id )
    header.personalize-suggestions-set-header
      = suggestionSet.get('name')

    for artist in suggestionSet.get('suggestions').models
      .personalize-suggestion.is-artist
        img.personalize-suggestion-thumbnail(
          src= artist.imageUrl('square')
          alt= artist.get('name')
          onerror='this.src="/images/missing_image.png";'
        )
        .personalize-suggestion-name
          = artist.get('name')
        .personalize-suggestion-info
          if artist.get('nationality') && artist.get('years')
            | #{artist.get('nationality')}, #{artist.get('years')}
          else
            |

        a.avant-garde-button-white.follow-button( data-id=artist.id )


.mlf-upper: .main-layout-container
  .mlf-upper-column
    h4 Collecting
    a.mlf-collector-faq( href='/#' ) Buying from Galleries FAQ
    a.mlf-auction-faq( href='/#' ) Buying from Auctions FAQ
    a( href='/consign' ) Consign with Artsy
    a( href='/professional-buyer' ) Artsy for Professional Buyers
  .mlf-upper-column
    h4 Education
    a( href='/artsy-education' ) Education
    a( href='/about/the-art-genome-project' ) The Art Genome Project
  .mlf-upper-column
    h4 About Artsy
    a( href='/about' ) About
    a( href='https://medium.com/artsy-blog' ) Blog
    a( href='/about/jobs' ) Jobs
    a( href='http://artsy.github.com/open-source/', target='_blank' ) Open Source
    a( href='/about/press' ) Press
  .mlf-upper-column
    h4 Partnering with Artsy
    a( href='/gallery-partnerships' ) Artsy for Galleries
    a( href='/institution-partnerships' ) Artsy for Museums
    a( href='/auction-partnerships' ) Artsy for Auctions
  .mlf-upper-column-aside
    div
      h4 General questions & feedback?
      a( href='/contact' ) Contact Artsy
      a.mlf-feedback( href='#' ) Send us feedback

Upgrade blog link to https

.mlf-upper: .main-layout-container
  .mlf-upper-column
    h4 Collecting
    a.mlf-collector-faq( href='/#' ) Buying from Galleries FAQ
    a.mlf-auction-faq( href='/#' ) Buying from Auctions FAQ
    a( href='/consign' ) Consign with Artsy
    a( href='/professional-buyer' ) Artsy for Professional Buyers
  .mlf-upper-column
    h4 Education
    a( href='/artsy-education' ) Education
    a( href='/about/the-art-genome-project' ) The Art Genome Project
  .mlf-upper-column
    h4 About Artsy
    a( href='/about' ) About
    a( href='https://medium.com/artsy-blog' ) Blog
    a( href='/about/jobs' ) Jobs
    a( href='https://artsy.github.com/open-source/', target='_blank' ) Open Source
    a( href='/about/press' ) Press
  .mlf-upper-column
    h4 Partnering with Artsy
    a( href='/gallery-partnerships' ) Artsy for Galleries
    a( href='/institution-partnerships' ) Artsy for Museums
    a( href='/auction-partnerships' ) Artsy for Auctions
  .mlf-upper-column-aside
    div
      h4 General questions & feedback?
      a( href='/contact' ) Contact Artsy
      a.mlf-feedback( href='#' ) Send us feedback


head
  meta(charset='utf-8')
  meta(http-equiv='X-UA-Compatible' content='IE=edge,chrome=1')
  meta(name='viewport' content='width=device-width, initial-scale=1')
  meta(name='keywords' content='QIN MR imaging')
  meta(name='description' content='Imaging Profile - display imaging and clinical data.')

  script(
    data-main='/javascripts/main',
    src='//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.14/require.js'
  )
  //
    If the CloudFlare CDN requirejs host is down, then fall back to the
    server installed copy.
  script
    | if (typeof define == 'undefined' || !define.amd) {
    |   document.write(
    |     unescape("%3Cscript data-main='/javascripts/main', src='/javascript/lib/require.js'%3E")
    |   );
    | }

  link(href='/static/stylesheets/app.css' rel='stylesheet')
  link(href='/static/media/favicon.ico' rel='shortcut icon' type='image/x-icon')

  title
    block title
      | quip - Quantitative Imaging Profile

Bump the require CDN version.

head
  meta(charset='utf-8')
  meta(http-equiv='X-UA-Compatible' content='IE=edge,chrome=1')
  meta(name='viewport' content='width=device-width, initial-scale=1')
  meta(name='keywords' content='QIN MR imaging')
  meta(name='description' content='Imaging Profile - display imaging and clinical data.')

  script(
    data-main='/javascripts/main',
    src='//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.22/require.js'
  )
  //
    If the CloudFlare CDN requirejs host is down, then fall back to the
    server installed copy.
  script
    | if (typeof define == 'undefined' || !define.amd) {
    |   document.write(
    |     unescape("%3Cscript data-main='/javascripts/main', src='/javascript/lib/require.js'%3E")
    |   );
    | }

  link(href='/static/stylesheets/app.css' rel='stylesheet')
  link(href='/static/media/favicon.ico' rel='shortcut icon' type='image/x-icon')

  title
    block title
      | quip - Quantitative Imaging Profile


extends ../layout

mixin sidebarItem(name,subItems)
  li=name
          ul
            each val in subItems
              li
                a=val

block content
  .page-header
    h3 All Projects
    //sidebar list
    div
      .col-sm-3
      //parent list
      ul
        mixin sidebarItem('Project status',['Development','Public test','Official / running'])
        mixin sidebarItem('Dedicated for',['Civil society organizations','Cities','Watchdogs'])
        mixin sidebarItem('Development status',['active','Suspended'])
        mixin sidebarItem('Join as',['backend developer','frontend developer','designer','editorial staff'])
        mixin sidebarItem('Developed locally in',['San Francisco'])
        mixin sidebarItem('Technologies',['Android','AngularJS','Django','iOS','Javascript'])
    //Add projects
    div.row
      .col-sm-9
        each project in projects
          .project-card
            figure
              a(href=project.homepage)
                img(src='http://placehold.it/200x200' width='200' height='200' alt='placeholder')
              div
                h3
                  a(href=project.homepage)
                    =project.name
                br
                p.description= project.description
                br

Add the basic grid structure to product page

extends ../layout

mixin sidebarItem(name,subItems)
  li=name
          ul
            each val in subItems
              li
                a=val

block content
  .page-header
    h3 All Projects
    //sidebar list
    .row
      .col-sm-3
        //parent list
        ul
          mixin sidebarItem('Project status',['Development','Public test','Official / running'])
          mixin sidebarItem('Dedicated for',['Civil society organizations','Cities','Watchdogs'])
          mixin sidebarItem('Development status',['active','Suspended'])
          mixin sidebarItem('Join as',['backend developer','frontend developer','designer','editorial staff'])
          mixin sidebarItem('Developed locally in',['San Francisco'])
          mixin sidebarItem('Technologies',['Android','AngularJS','Django','iOS','Javascript'])
      //Add projects
      .col-sm-9
        each project in projects
          .project-card
            figure
              a(href=project.homepage)
                img(src='http://placehold.it/200x200' width='200' height='200' alt='placeholder')
              div
                h3
                  a(href=project.homepage)
                    =project.name
                br
                p.description= project.description
                br


extends ../layout

mixin sidebarItem(name,subItems)
  li=name
          ul
            each val in subItems
              li
                a=val

block content
  .page-header
    h3 All Projects
    //sidebar list
    .row
      .col-sm-3
        //parent list
        ul
          mixin sidebarItem('Project status',['Development','Public test','Official / running'])
          mixin sidebarItem('Dedicated for',['Civil society organizations','Cities','Watchdogs'])
          mixin sidebarItem('Development status',['active','Suspended'])
          mixin sidebarItem('Join as',['backend developer','frontend developer','designer','editorial staff'])
          mixin sidebarItem('Developed locally in',['San Francisco'])
          mixin sidebarItem('Technologies',['Android','AngularJS','Django','iOS','Javascript'])
      //Add projects
      .col-sm-9
        each project in projects
          .project-card.thumbnail
            figure
              a(href=project.homepage)
                img(src='http://placehold.it/200x200' width='200' height='200' alt='placeholder')
              div
                h3
                  a(href=project.homepage)
                    =project.name
                br
                p.description= project.description
                br

Add changes to h3 element

extends ../layout

mixin sidebarItem(name,subItems)
  li=name
          ul
            each val in subItems
              li
                a=val

block content
  .page-header
    h2 All Projects
    //sidebar list
    .row
      .col-sm-3
        //parent list
        ul
          mixin sidebarItem('Project status',['Development','Public test','Official / running'])
          mixin sidebarItem('Dedicated for',['Civil society organizations','Cities','Watchdogs'])
          mixin sidebarItem('Development status',['active','Suspended'])
          mixin sidebarItem('Join as',['backend developer','frontend developer','designer','editorial staff'])
          mixin sidebarItem('Developed locally in',['San Francisco'])
          mixin sidebarItem('Technologies',['Android','AngularJS','Django','iOS','Javascript'])
      //Add projects
      .col-sm-9
        each project in projects
          .project-card.thumbnail
            figure
              a(href=project.homepage)
                img(src='http://placehold.it/200x200' width='200' height='200' alt='placeholder')
              div
                h3
                  a(href=project.homepage)
                    =project.name
                br
                p.description= project.description
                br


section.stickers.column-contain
  .sticker-pics.left
    img(src="images/stickers1.jpg", alt="")
    img(src="images/stickers2.jpg", alt="")
    img(src="images/stickers3.jpg", alt="")
  .sticker-order.right
    header
      h2 Stickers!
    p.
      These awesome stickers are printed by StickerMule, and are the highest quality vinyl stickers, coming in at 2.27x3 inches. The perfect size for any space on your laptop lid.
    a.tiny-link(href = "http://devswag.com/products/marionette-stickers-4", target= "_blank")
      Order Yours Now!
      i.icon-arrow-right
  .cl

Fix Jade typo where “Order” didn’t show up


doctype html

html
  head
    link(rel="stylesheet" href="/static/css/bootstrap.min.css")
    link(rel="stylesheet" href="/static/css/main.css")

    script(type="application/javascript" src="/static/js/react.min.js")
    script(type="application/javascript" src="/static/js/zepto.min.js")
    script(type="application/javascript" src="/static/js/index.js")

  body
    .container
      h1 Upload
      #reactWrapper

Set the title to 'Upload'

doctype html

html
  head
    title Upload

    link(rel="stylesheet" href="/static/css/bootstrap.min.css")
    link(rel="stylesheet" href="/static/css/main.css")

    script(type="application/javascript" src="/static/js/react.min.js")
    script(type="application/javascript" src="/static/js/zepto.min.js")
    script(type="application/javascript" src="/static/js/index.js")

  body
    .container
      h1 Upload
      #reactWrapper


div.navbar.navbar-fixed-top
  div.navbar-inner
    div.container-fluid
      a.btn.btn-navbar(data-toggle="collapse",data-target=".nav-collapse")
        span.icon-bar

      a.brand(href="#") DMV

      div.nav-collapse
        ul.nav
          li
            a(href="https://github.com/rwldrn/dmv", target="_blank") code@github

div#take-photo.span1
  a.btn.btn-large.btn-danger(href="#")
    b.icon-camera.icon-white

div#saved-photo.row.navbar-inner
  ul#saved

#container

div.container
  div#obsolete.row
    h1 Your browser will soon be obsolete.

    h3 To use this demo, you will need:

    dl
      dd
        a(href="http://dev.opera.com/labs", target="_blank") Opera Labs Camera build
      dd
        a(href="http://tools.google.com/dlpage/chromesxs", target="_blank") Google Chrome Canary, with WebRTC and MediaStreams enabled (via about:flags)

    h3
      a(href="http://weblog.bocoup.com/javascript-webrtc-opera-mobile-12/") Find out more

Add note about how to enable webrtc in chrome canary

div.navbar.navbar-fixed-top
  div.navbar-inner
    div.container-fluid
      a.btn.btn-navbar(data-toggle="collapse",data-target=".nav-collapse")
        span.icon-bar

      a.brand(href="#") DMV

      div.nav-collapse
        ul.nav
          li
            a(href="https://github.com/rwldrn/dmv", target="_blank") code@github

div#take-photo.span1
  a.btn.btn-large.btn-danger(href="#")
    b.icon-camera.icon-white

div#saved-photo.row.navbar-inner
  ul#saved

#container

div.container
  div#obsolete.row
    h1 Your browser will soon be obsolete.

    h3 To use this demo, you will need:

    dl
      dd
        a(href="http://dev.opera.com/labs", target="_blank") Opera Labs Camera build
      dd
        a(href="http://tools.google.com/dlpage/chromesxs", target="_blank") Google Chrome Canary
        p.
          and enable MediaStream in chrome://flags

    h3
      a(href="http://weblog.bocoup.com/javascript-webrtc-opera-mobile-12/") Find out more


doctype
html
	head
		meta(http-equiv="Content-Type" content="text/html; charset=utf-8;")
		meta(name="viewport" content="width=device-width, initial-scale=1.0")
		block meta
		title(ng-bind-template="{{ pageTitle }} - Semaphore") Semaphore
		link(href="/favicon.ico" type="image/x-icon" rel="icon")
		link(href="/favicon.ico" type="image/x-icon" rel="shortcut icon")

		//- all css goes here
		block css

		link(rel="stylesheet" href="/css/semaphore.css")

	body
		.navbar.navbar-default
			.container-fluid
				.navbar-header
					a.navbar-brand(ui-sref="homepage") Semaphore

				nav.nav.navbar-nav
					li: a(ui-sref="playbooks") Playbooks
					li: a(ui-sref="identities.list") Identities
					li: a(ui.sref="users.list") Users

				nav.nav.navbar-nav.pull-right
					li: a(ui-sref="addPlaybook") Add Playbook

		.container-fluid
			.col-lg-12
				block content
					ui-view(autoscroll="false")
						p.lead.text-center
							i.fa.fa-spin.fa-cog
							|  Loading...

		block js
			script(src="/vendor/requirejs/require.js" data-main="/js/semaphore.js")

		//- page-specific js
		block addonjs

Fix navigation err 'ui.sref' -> 'ui-sref'

doctype
html
	head
		meta(http-equiv="Content-Type" content="text/html; charset=utf-8;")
		meta(name="viewport" content="width=device-width, initial-scale=1.0")
		block meta
		title(ng-bind-template="{{ pageTitle }} - Semaphore") Semaphore
		link(href="/favicon.ico" type="image/x-icon" rel="icon")
		link(href="/favicon.ico" type="image/x-icon" rel="shortcut icon")

		//- all css goes here
		block css

		link(rel="stylesheet" href="/css/semaphore.css")

	body
		.navbar.navbar-default
			.container-fluid
				.navbar-header
					a.navbar-brand(ui-sref="homepage") Semaphore

				nav.nav.navbar-nav
					li: a(ui-sref="playbooks") Playbooks
					li: a(ui-sref="identities.list") Identities
					li: a(ui-sref="users.list") Users

				nav.nav.navbar-nav.pull-right
					li: a(ui-sref="addPlaybook") Add Playbook

		.container-fluid
			.col-lg-12
				block content
					ui-view(autoscroll="false")
						p.lead.text-center
							i.fa.fa-spin.fa-cog
							|  Loading...

		block js
			script(src="/vendor/requirejs/require.js" data-main="/js/semaphore.js")

		//- page-specific js
		block addonjs


.pull-left.margin-left-10
	.btn-toolbar(ng-show='!showRemoveConfirm')
		button.btn.btn-danger.btn-sm.viewBtn(ng-click='removeAttendanceEntry()')
			span.glyphicon.glyphicon-remove.white
		button.btn.btn-default.btn-sm.viewBtn(ng-click='editAchievements(row.entity)', ng-show='!row.entity.workshop') Edit Achievements
	.btn-toolbar(ng-show='showRemoveConfirm')
		span.text-muted Remove entry?
		button.btn.btn-sm.btn-danger(type='button', ng-click='confirmRemove(row, true)') Yes
		button.btn.btn-sm.btn-success(type='button', ng-click='confirmRemove(row, false)') No

Remove Edit Achievements button for attendance items for programs that have no achievements

.pull-left.margin-left-10
	.btn-toolbar(ng-show='!showRemoveConfirm')
		button.btn.btn-danger.btn-sm.viewBtn(ng-click='removeAttendanceEntry()')
			span.glyphicon.glyphicon-remove.white
		button.btn.btn-default.btn-sm.viewBtn(ng-click='editAchievements(row.entity)', ng-show='!row.entity.workshop && row.entity.sortedRanks.length>0') Edit Achievements
	.btn-toolbar(ng-show='showRemoveConfirm')
		span.text-muted Remove entry?
		button.btn.btn-sm.btn-danger(type='button', ng-click='confirmRemove(row, true)') Yes
		button.btn.btn-sm.btn-success(type='button', ng-click='confirmRemove(row, false)') No


doctype xml
urlset(
  xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'
  xmlns:news='http://www.google.com/schemas/sitemap-news/0.9'
)
    for article in articles
      url
        loc= 'https://www.artsy.net/article/' + article.get('slug')
        news:news
          news:publication
            news:name Artsy
            news:language en
          news:publication_date= article.get('published_at')
          news:title= article.get('thumbnail_title')
          news:keywords= article.get('tags')

Update news RSS and sitemap

doctype xml
urlset(
  xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'
  xmlns:news='http://www.google.com/schemas/sitemap-news/0.9'
)
    for article in articles
      url
        loc= 'https://www.artsy.net/article/' + article.get('slug')
        news:news
          news:publication
            news:name Artsy
            news:language en
          news:publication_date= article.get('published_at')
          news:title= article.get('thumbnail_title')
          news:keywords= article.get('tags')
          news:genres UserGenerated


extends ../_base.jade

block title
	| Tabs vs spaces

block content
	include:markdown README.md

Make tabs vs spaces readme include relative

extends ../_base.jade

block title
	| Tabs vs spaces

block content
	include:markdown ./README.md


.api.col-sm-3.col-md-3.sidebar(ng-controller="ApiCtrl")
  input.eventric-api--search(ng-model="searchText", placeholder="Search API")
  ul.nav.nav-sidebar(ng-repeat="(moduleName, apis) in API_OVERVIEW", ng-show="(apis| filter:searchText).length")
    li.module
      a {{moduleName}}
    li(ng-repeat="api in apis | filter:searchText", ui-sref-active="active")
      a(ui-sref="api({ 'functionName' : api.name, 'moduleName' : api.module })") {{api.name}}
.col-sm-9.col-sm-offset-3.col-md-9.col-md-offset-3.main
  .eventric-api--detail(ng-show="api.name")
    h1 {{api.name}}

    .eventric-api--missing(ng-hide="api.description") Missing Description
    .eventric-api--description(ng-show="api.description")
      blockquote
        p(ng-bind-html="api.description | unsafe")

    .eventric-api--missing(ng-hide="api.description") Missing Example Code
    .eventric-api--example-code(ng-show="api.example")
      strong Example
      pre(ng-bind-html="api.example | unsafe")

Use the Comment-Section Directive in API-Pages

.api.col-sm-3.col-md-3.sidebar(ng-controller="ApiCtrl")
  input.eventric-api--search(ng-model="searchText", placeholder="Search API")
  ul.nav.nav-sidebar(ng-repeat="(moduleName, apis) in API_OVERVIEW", ng-show="(apis| filter:searchText).length")
    li.module
      a {{moduleName}}
    li(ng-repeat="api in apis | filter:searchText", ui-sref-active="active")
      a(ui-sref="api({ 'functionName' : api.name, 'moduleName' : api.module })") {{api.name}}
.col-sm-9.col-sm-offset-3.col-md-9.col-md-offset-3.main
  .eventric-api--detail(ng-show="api.name")
    h1 {{api.name}}

    .eventric-api--missing(ng-hide="api.description") Missing Description
    .eventric-api--description(ng-show="api.description")
      blockquote
        p(ng-bind-html="api.description | unsafe")

    .eventric-api--missing(ng-hide="api.description") Missing Example Code
    .eventric-api--example-code(ng-show="api.example")
      strong Example
      pre(ng-bind-html="api.example | unsafe")

    comment-section(
      disqus-shortname="EventricJS"
      disqus-identifier="{{api.source}}"
      disqus-title="{{api.name}}"
    )


header
  .centerBox
    h1.name(style="opacity:0;") Grant Timmerman
    h3.bio(style="opacity:0;")
      a(href='https://www.google.com/') Google Developer Platform Engineer
    ul(style='opacity:0;')
      a(href='#about')
        li About
      a(href='https://github.com/grant')
        li GitHub
      a(href='https://github.com/grant/talks')
        li Talks
      a(href='#projects')
        li Projects
  .arrow
    i.fa.fa-angle-down

Add link to experience section

header
  .centerBox
    h1.name(style="opacity:0;") Grant Timmerman
    h3.bio(style="opacity:0;")
      a(href='https://www.google.com/') Google Developer Platform Engineer
    ul(style='opacity:0;')
      a(href='#about')
        li About
      a(href='#experience')
        li Experience
      a(href='https://github.com/grant')
        li GitHub
      a(href='https://github.com/grant/talks')
        li Talks
      a(href='#projects')
        li Projects
  .arrow
    i.fa.fa-angle-down


extends layout

block header
  meta(name="description", content="The blog and project site of Adam Heins.")
  title Adam Heins

block content
  article
    section
      h1 Welcome
      p.
        Welcome to my website, which is home to my personal blog and project
        portfolio. Take a look around, stay a while. If you want to get in touch,
        send me an email at
        #[a(href="mailto:mail@adamheins.com") mail@adamheins.com].
      p.
        The code for this website is open source and can be viewed
        #[a(href="https://github.com/adamheins/personal-website") here].
    section
      h2 Recent Articles
      .article-flavour The latest articles from my blog.
      ul.bare
        each article in articles
          li
            a(href= "/blog/" + article.link)= article.title
    section
      h2 Recent Projects
      .article-flavour Some of the personal projects I've been working on lately.
      ul.bare
        li
          a(href="https://github.com/adamheins/f") f
        li
          a(href="https://github.com/adamheins/stercus") Stercus
        li
          a(href="http://adamheins.github.io/predator-prey-sim/").
            Predator Prey Simulation
    section
      h2 Other Links
      .article-flavour Additional miscellaneous pages.
      ul.bare
        li
          a(href="/tools") Tools
        li
          a(href="https://github.com/adamheins/dotfiles") Dotfiles
        li
          a(href="/pgp") PGP

Add link to vim configuration.

extends layout

block header
  meta(name="description", content="The blog and project site of Adam Heins.")
  title Adam Heins

block content
  article
    section
      h1 Welcome
      p.
        Welcome to my website, which is home to my personal blog and project
        portfolio. Take a look around, stay a while. If you want to get in touch,
        send me an email at
        #[a(href="mailto:mail@adamheins.com") mail@adamheins.com].
      p.
        The code for this website is open source and can be viewed
        #[a(href="https://github.com/adamheins/personal-website") here].
    section
      h2 Recent Articles
      .article-flavour The latest articles from my blog.
      ul.bare
        each article in articles
          li
            a(href= "/blog/" + article.link)= article.title
    section
      h2 Recent Projects
      .article-flavour Some of the personal projects I've been working on lately.
      ul.bare
        li
          a(href="https://github.com/adamheins/f") f
        li
          a(href="https://github.com/adamheins/stercus") Stercus
        li
          a(href="http://adamheins.github.io/predator-prey-sim/").
            Predator Prey Simulation
    section
      h2 Other Links
      .article-flavour Additional miscellaneous pages.
      ul.bare
        li
          a(href="/tools") Tools
        li
          a(href="https://github.com/adamheins/dotfiles") Dotfiles
        li
          a(href="https://github.com/adamheins/.vim") Vim Configuration
        li
          a(href="/pgp") PGP


extends layout
block content

    form(method='POST', action='/forms/postData', role="form")
        input(type='submit', id='submit', name='submit',
        value='Clear Post Data', class='btn btn-default')

    = postData

Clean up post data a little

extends layout
block content

    form(method='POST', action='/forms/postData', role="form")
        input(type='submit', id='submit', name='submit',
        value='Clear Post Data', class='btn btn-default')

    textarea(cols=200, rows='auto', id='data')
      = postData

    script(src="//code.jquery.com/jquery-1.11.0.min.js")
    script(type='text/javascript').
      $(function() {
         $('textarea').height($('textarea').prop('scrollHeight'));
      });


div.header
  div.text-center
    img(src="/images/logo.png").rounded
    h1 !{config.site.title}
    h2 !{config.site.description}
  - if (data.menu.pages.length) {
  ul.pages.text-center
    - for (var i in data.menu.pages) {
    -   var cPage = data.menu.pages[i];
    -   var classes = "page" + (cPage.label === data.menu.active.label ? " active" : "");
    li(class=classes)
        a(href=cPage.url)= cPage.label
    - }
  - }

Use path instead of url

div.header
  div.text-center
    img(src="/images/logo.png").rounded
    h1 !{config.site.title}
    h2 !{config.site.description}
  - if (data.menu.pages.length) {
  ul.pages.text-center
    - for (var i in data.menu.pages) {
    -   var cPage = data.menu.pages[i];
    -   var classes = "page" + (cPage.label === data.menu.active.label ? " active" : "");
    li(class=classes)
        a(href=cPage.path)= cPage.label
    - }
  - }


!!! 5
html(lang='en', data-ng-app='kewl')
    head
        title Kewl brunch skeleton
        link(rel='stylesheet', href='css/app.css')
        link(rel='icon', type='image/x-icon', href='favicon.ico')
        meta(charset='utf-8')
    body
        .navbar.navbar-default
            .container
                a.navbar-brand(href='.') Angular <3 APIs = Kewl

        main.container(data-ng-view)

        :coffeescript
            window.onload = -> console.log Object.keys(window)
        script(src='js/vendor.js')
        script(src='js/partials.js')
        script(src='js/app.js')

Add Github button and fix indentation

!!! 5
html(lang='en', data-ng-app='kewl')
  head
    title Kewl brunch skeleton
    link(rel='stylesheet', href='css/app.css')
    link(rel='icon', type='image/x-icon', href='favicon.ico')
    meta(charset='utf-8')
  body
    .navbar.navbar-default
      .container
        a.navbar-brand(href='.') Angular <3 APIs = Kewl
        ul.nav.navbar-nav.navbar-right
          li
            a(href='https://github.com/davinov/kewl')
              i.icon.icon-github
              |  Source code on GitHub

    main.container(data-ng-view)

    :coffeescript
      window.onload = -> console.log Object.keys(window)
    script(src='js/vendor.js')
    script(src='js/partials.js')
    script(src='js/app.js')


- self.add_raw_data('expand_links_cache_task', self.task_info);

#rebuild-expand-links-cache-task.rebuild-widget
  h4
    = self.t('title')
    = ' '
    small(data-bind='visible: started, text: (current() / total() * 100 || 0).toFixed(2) + "%"')

  .progress
    .progress-bar(
      data-bind='style: { width: (current() / total() * 100).toFixed(4) + "%" }, visible: current() && total() && current() !== total()'
      style='display: none'
    )
    .progress-bar(
      data-bind='visible: current() && total() && current() === total()'
      style='display: none; width: 100%'
    )= self.t('complete')

  div
    button.btn.btn-secondary(
      data-on-click='admin.core.rebuild.blocks.expand_links_cache.start'
      data-bind='visible: !started()'
    )= self.t('start')

    button.btn.btn-danger(
      data-on-click='admin.core.rebuild.blocks.expand_links_cache.stop'
      data-bind='visible: started'
      style='display: none'
    )= self.t('stop')

Fix progress bars in admin interface

- self.add_raw_data('expand_links_cache_task', self.task_info);

#rebuild-expand-links-cache-task.rebuild-widget
  h4
    = self.t('title')
    = ' '
    small(data-bind='visible: started, text: (current() / total() * 100 || 0).toFixed(2) + "%"')

  progress.progress(
    value=0
    max=100
    data-bind='value: (current() / total() * 100) || 0'
  )

  div
    button.btn.btn-secondary(
      data-on-click='admin.core.rebuild.blocks.expand_links_cache.start'
      data-bind='visible: !started()'
    )= self.t('start')

    button.btn.btn-danger(
      data-on-click='admin.core.rebuild.blocks.expand_links_cache.stop'
      data-bind='visible: started'
      style='display: none'
    )= self.t('stop')


.h-panel-title-container
  span.h-panel-title
    block title
      | #{title}
  span.h-panel-controls
    if collapsed
      i.icon-down-open
    else
      i.icon-up-open
    i.icon-cancel.h-remove-panel(data-target='##{id}')

- var attrs = {}
if !collapsed
  - attrs.class = 'in'
.h-panel-content.collapse&attributes(attrs)
  block content

Remove close buttons by default

.h-panel-title-container
  span.h-panel-title
    block title
      | #{title}
  span.h-panel-controls
    if collapsed
      i.icon-down-open
    else
      i.icon-up-open
    if removeButton
      i.icon-cancel.h-remove-panel(data-target='##{id}')

- var attrs = {}
if !collapsed
  - attrs.class = 'in'
.h-panel-content.collapse&attributes(attrs)
  block content


doctype html
html
  head
    title KSU CIS Open House Tree
    meta(name='viewport', content='width=device-width, initial-scale=1')
    link(href='css/style.css', rel='stylesheet', type='text/css')
    // webfonts
    link(href='http://fonts.googleapis.com/css?family=Open+Sans:700,300,600,800,400', rel='stylesheet', type='text/css')
    link(href='http://fonts.googleapis.com/css?family=Marvel:400,700', rel='stylesheet', type='text/css')
    // //webfonts
  body
    h1 KSU CIS Open House Tree Moderator
    .registration
      h2 Moderator
      p
        | Decide whether or not the name should be added to the tree.
      form
        input#accept(type='submit', value='ACCEPT NAME')
        input#decline(type='submit', value='DECLINE NAME')
    .registration
      h2 Modify Tree
      p
        | Either specify a value to remove from the tree or clear the tree
      form
        input#delete(type='submit', value='DELETE ELEMENT')
        input#clear(type='submit', value='CLEAR TREE')
    script(src='https://cdn.socket.io/socket.io-1.4.5.js')
    script(src='https://code.jquery.com/jquery-2.2.1.min.js')
    script(src='/js/moderator.js')

Remove the Tree Modification Functionality

doctype html
html
  head
    title KSU CIS Open House Tree
    meta(name='viewport', content='width=device-width, initial-scale=1')
    link(href='css/style.css', rel='stylesheet', type='text/css')
    // webfonts
    link(href='http://fonts.googleapis.com/css?family=Open+Sans:700,300,600,800,400', rel='stylesheet', type='text/css')
    link(href='http://fonts.googleapis.com/css?family=Marvel:400,700', rel='stylesheet', type='text/css')
    // //webfonts
  body
    h1 KSU CIS Open House Tree Moderator
    .registration
      h2 Moderator
      p
        | Decide whether or not the name should be added to the tree.
      form
        input#accept(type='submit', value='ACCEPT NAME')
        input#decline(type='submit', value='DECLINE NAME')
    script(src='https://cdn.socket.io/socket.io-1.4.5.js')
    script(src='https://code.jquery.com/jquery-2.2.1.min.js')
    script(src='/js/moderator.js')


- var percent = pokemon.getPercentHP()
- var color = ((percent <= 25) ? "#f00" : (percent <= 50) ? "#ff0" : "#0f0")
- var style = "width: " + percent + "%"
- var greenStyle = style + "; background-color: " + color
a.sprite.preload(href=pokemon.getPokedexUrl(), target='_blank', data-name = pokemon.get('name'), data-forme = pokemon.get('forme'), data-shiny = (pokemon.get('shiny') ? "true" : "false"))
.pokemon-info
  span.pokemon-meta
    a.pokemon-name(href=pokemon.getPokedexUrl(), target="_blank")
      = pokemon.get('name')
    if pokemon.get('gender') === 'F'
      span.gender.gender_female  ♀
    else if pokemon.get('gender') === 'M'
      span.gender.gender_male  ♂
    if pokemon.get('level') != 100
      span.pokemon-level
        span.pokemon-level-text  Lv.
        = pokemon.get('level')
  .hp-text #{percent}%
  .hp(style = greenStyle)
  .hp-gradient
  .pokemon-effects

Remove link to pokemon above the HP bar

- var percent = pokemon.getPercentHP()
- var color = ((percent <= 25) ? "#f00" : (percent <= 50) ? "#ff0" : "#0f0")
- var style = "width: " + percent + "%"
- var greenStyle = style + "; background-color: " + color
a.sprite.preload(href=pokemon.getPokedexUrl(), target='_blank', data-name = pokemon.get('name'), data-forme = pokemon.get('forme'), data-shiny = (pokemon.get('shiny') ? "true" : "false"))
.pokemon-info
  span.pokemon-meta
    span.pokemon-name= pokemon.get('name')
    if pokemon.get('gender') === 'F'
      span.gender.gender_female  ♀
    else if pokemon.get('gender') === 'M'
      span.gender.gender_male  ♂
    if pokemon.get('level') != 100
      span.pokemon-level
        span.pokemon-level-text  Lv.
        = pokemon.get('level')
  .hp-text #{percent}%
  .hp(style = greenStyle)
  .hp-gradient
  .pokemon-effects


template(name='usersNew')
  .title-crumbs
    .page-title
      h2 Register for a user account
    .page-breadcrumbs
      | / Users / New

  .users-new
    .container
      .row
        .reg-message
          p The IOOS Catalog Harvest Registry site is intended as the user interface for users affiliated with one of the IOOS data provider organizations (include link here to the Catalog Organizations page: https://data.ioos.us/organization) to publish web accessible folders or CS-W services with metadata records for the Catalog to harvest.
      .row
        .reg-message
          p If you are affiliated with an IOOS organization and need access to this functionality for dataset publishing, please fill out the information below and we will verify your request. We will not approve requests for general users who do not require access to this tool.
      .row
        .col-md-offset-3.col-md-6.col-sm-12
          +quickForm id="newUser" schema=formSchema type="normal"
        .col-md-3
          .note
            p If you already registered for an account but did not receive an email.
              a#resend-link(href="#" onclick="return false;") Click here
              | to resend your email.

Update link to organizations page

template(name='usersNew')
  .title-crumbs
    .page-title
      h2 Register for a user account
    .page-breadcrumbs
      | / Users / New

  .users-new
    .container
      .row
        .reg-message
          p The IOOS Catalog Harvest Registry site is intended as the user interface for users affiliated with one of the IOOS data provider organizations to publish web accessible folders or CS-W services with metadata records for the Catalog to harvest.
      .row
        .reg-message
          p If you are affiliated with an IOOS organization and need access to this functionality for dataset publishing, please fill out the information below and we will verify your request. We will not approve requests for general users who do not require access to this tool.
      .row
        .col-md-offset-3.col-md-6.col-sm-12
          +quickForm id="newUser" schema=formSchema type="normal"
        .col-md-3
          .note
            p If you already registered for an account but did not receive an email.
              a#resend-link(href="#" onclick="return false;") Click here
              | to resend your email.


doctype html
html(lang='en-us')
  head
    meta(charset='UTF-8')
    meta(name='viewport' content='width=device-width' initial-scale='1')

    title Buckle

    // Bower
    // link(rel='stylesheet' href='bower_components/normalize-css/normalize.css')

    // Buckle
    link(href='buckle/styles/css/buckle.css', rel='stylesheet', type='text/css')

  body
    include menu.jade

    #page.page
      include header.jade
      include buckle.jade

      // Modules
      include blog.jade

      // Components
      //- include menu-sidebar.jade
      include heading.jade
      include code.jade
      include blockquote.jade
      include horizontal-rule.jade
      include list.jade

    // Bower
    script(src='bower_components/jquery/dist/jquery.min.js')

    // Buckle
    script(src='buckle/scripts/js/jquery.buckle.js')

Include normalize.css and remove buckle.jade

doctype html
html(lang='en-us')
  head
    meta(charset='UTF-8')
    meta(name='viewport' content='width=device-width' initial-scale='1')

    title Buckle

    // Bower
    link(rel='stylesheet' href='bower_components/normalize-css/normalize.css')

    // Buckle
    link(href='buckle/styles/css/buckle.css', rel='stylesheet', type='text/css')

  body
    include menu.jade

    #page.page
      include header.jade
      //- include buckle.jade

      // Modules
      include blog.jade

      // Components
      //- include menu-sidebar.jade
      include heading.jade
      include code.jade
      include blockquote.jade
      include horizontal-rule.jade
      include list.jade

    // Bower
    script(src='bower_components/jquery/dist/jquery.min.js')

    // Buckle
    script(src='buckle/scripts/js/jquery.buckle.js')


.wrapper
  .center
    .grid-input
      .column-input
        .input-group-vertical
          include github-commit.jade
          include github-commit.jade
          include github-commit.jade
          include github-commit.jade

Add a transparent github example

.wrapper
  .center
    .grid-input
      .column-input
        .input-group-vertical
          include github-commit.jade
          include github-commit.jade
          include github-commit.jade
          include github-commit.jade

.wrapper.transparent
  .center
    .grid-input
      .column-input
        .input-group-vertical
          include github-commit.jade
          include github-commit.jade
          include github-commit.jade
          include github-commit.jade


.related-articles
  for article in articles
    .related-article
      a.ra-image.hoverable-image-link( href="/article/#{article.get('slug')}" )
        img(
          src= crop(article.get('thumbnail_image'), { width: 300, height: 225 })
          alt= article.get('title')
        )
      .ra-blurb
        a.ra-author( href="/editorial" )
          | By Artsy Editorial
        a( href="/article/#{article.get('slug')}" )
          if article.get('thumbnail_title')
            h3.ra-title= article.get('thumbnail_title')
          if article.get('thumbnail_teaser')
            .ra-summary
              = _s.prune(article.get('thumbnail_teaser'), 450)
              span.ra-go Go to article
  if remaining > 0
    .related-articles-show-all.avant-garde-button-white.is-block
      | Show More Related Articles (#{remaining})

Use real author in artist/:id/articles

.related-articles
  for article in articles
    .related-article
      a.ra-image.hoverable-image-link( href="/article/#{article.get('slug')}" )
        img(
          src= crop(article.get('thumbnail_image'), { width: 300, height: 225 })
          alt= article.get('title')
        )
      .ra-blurb
        a.ra-author( href="/#{article.get('author').profile_handle}" )
          | By #{article.get('author').name}
        a( href="/article/#{article.get('slug')}" )
          if article.get('thumbnail_title')
            h3.ra-title= article.get('thumbnail_title')
          if article.get('thumbnail_teaser')
            .ra-summary
              = _s.prune(article.get('thumbnail_teaser'), 450)
              span.ra-go Go to article
  if remaining > 0
    .related-articles-show-all.avant-garde-button-white.is-block
      | Show More Related Articles (#{remaining})


footer.LoggedOutFooter
  .LoggedOutFooter__sections
    section
      span Contact
      a(href="mailto:everyone@are.na") Email
      a(href="https://twitter.com/AREdotNA") Twitter
      a(href="https://www.instagram.com/aredotna/") Instagram
    section
      span Company
      a(href="/about#team") Team
      a(href="https://www.are.na/share/bEAsbbB") Media Kit
      a(href="/privacy") Privacy policy
      a(href="/terms") Terms of use
      a(href="/faqs") FAQs
    section
      span Community
      a(href="/blog") Blog
      a(href="/education") Education
      a(href="/about") Projects
    section
      span Mobile
      a(href=sd.ITUNES_LINK) Download iOS App

Change link to say press kit

footer.LoggedOutFooter
  .LoggedOutFooter__sections
    section
      span Contact
      a(href="mailto:everyone@are.na") Email
      a(href="https://twitter.com/AREdotNA") Twitter
      a(href="https://www.instagram.com/aredotna/") Instagram
    section
      span Company
      a(href="/about#team") Team
      a(href="https://www.are.na/share/bEAsbbB") Press Kit
      a(href="/privacy") Privacy policy
      a(href="/terms") Terms of use
      a(href="/faqs") FAQs
    section
      span Community
      a(href="/blog") Blog
      a(href="/education") Education
      a(href="/about") Projects
    section
      span Mobile
      a(href=sd.ITUNES_LINK) Download iOS App


doctype html
html#ng-app(lang='en' ng-app='qiprofile')
  include head
  body.container-fluid
    include header
    block partial
    include footer
  include foot

Move the ng-app declaration to the body element.

doctype html
html
  include head
  body#ng-app.container-fluid(lang='en' ng-app='qiprofile')
    include header
    block partial
    include footer
  include foot


h1.sr-only
  !=t('general.site_title')
div.feedback-prompt
  a(href='#', data-uv-trigger='contact', class="prompt-button")
    = t('app_feedback.prompt')
div.bottom-logo
  a.external-link(href=root)
    img.logo(src=staticPath("images/logos/service-map-logo-#{lang}-small.png") alt!=t('assistive.to_frontpage'))

Disable main page feedback balloon.

h1.sr-only
  !=t('general.site_title')
//- div.feedback-prompt
//-   a(href='#', data-uv-trigger='contact', class="prompt-button")
//-     = t('app_feedback.prompt')
div.bottom-logo
  a.external-link(href=root)
    img.logo(src=staticPath("images/logos/service-map-logo-#{lang}-small.png") alt!=t('assistive.to_frontpage'))


.flow-widget
    // ko with:scalaCodeView
    h4(data-bind="text:\"Status: \"+status")
    h4 Console Output:
    p(data-bind="text:output" style="white-space: pre-wrap")

    h4 Scala Response:
    p(data-bind="text: response, visible: scalaResponseVisible " style="white-space: pre-wrap")
    a(href="#" data-bind="click: toggleResponseVisibility, text: scalaLinkText")

    h4 Executed Code:
    p(data-bind="text: code, visible: scalaCodeVisible " style="white-space: pre-wrap")
    a(href="#" data-bind="click: toggleCodeVisibility, text: scalaCodeLinkText")
    // /ko

Use MonoSpace font in Scala cell console & interpreter output

.flow-widget
    // ko with:scalaCodeView
    h4(data-bind="text:\"Status: \"+status")
    h4 Console Output:
    p(data-bind="text:output" style='white-space: pre-wrap; font-family: Courier')

    h4 Scala Response:
    p(data-bind="text: response, visible: scalaResponseVisible" style='white-space: pre-wrap; font-family: Courier')
    a(href="#" data-bind="click: toggleResponseVisibility, text: scalaLinkText")

    h4 Executed Code:
    p(data-bind="text: code, visible: scalaCodeVisible" style='white-space: pre-wrap; font-family: Courier')
    a(href="#" data-bind="click: toggleCodeVisibility, text: scalaCodeLinkText")
    // /ko


doctype html
html
  body
    table
      tr
        td 5
        td 3
        td
        td
        td 7
        td
        td
        td
        td
      tr
        td 6
        td
        td
        td 1
        td 9
        td 5
        td
        td
        td
      tr
        td
        td 9
        td 8
        td
        td
        td
        td
        td 6
        td
      tr
        td 8
        td
        td
        td
        td 6
        td
        td
        td
        td 3
      tr
        td 4
        td
        td
        td 8
        td
        td 3
        td
        td
        td 1
      tr
        td 7
        td
        td
        td
        td 2
        td
        td
        td
        td 6
      tr
        td
        td 6
        td
        td
        td
        td
        td 2
        td 8
        td
      tr
        td
        td
        td
        td 4
        td 1
        td 9
        td
        td
        td 5
      tr
        td
        td
        td
        td
        td 8
        td
        td
        td 7
        td 9

    form
      div
        button I've Solved It

    form
      fieldset
        legend Row 1 Column 1
        ol
          li
            label Potential Answer
            input(type='text')
          li
            label Final Answer
            input(type='tel')
          li
            button Update Cell

Add a simple page header

doctype html
html
  body
    h1 @bitfyre Sudoku
    table
      tr
        td 5
        td 3
        td
        td
        td 7
        td
        td
        td
        td
      tr
        td 6
        td
        td
        td 1
        td 9
        td 5
        td
        td
        td
      tr
        td
        td 9
        td 8
        td
        td
        td
        td
        td 6
        td
      tr
        td 8
        td
        td
        td
        td 6
        td
        td
        td
        td 3
      tr
        td 4
        td
        td
        td 8
        td
        td 3
        td
        td
        td 1
      tr
        td 7
        td
        td
        td
        td 2
        td
        td
        td
        td 6
      tr
        td
        td 6
        td
        td
        td
        td
        td 2
        td 8
        td
      tr
        td
        td
        td
        td 4
        td 1
        td 9
        td
        td
        td 5
      tr
        td
        td
        td
        td
        td 8
        td
        td
        td 7
        td 9

    form
      div
        button I've Solved It

    form
      fieldset
        legend Row 1 Column 1
        ol
          li
            label Potential Answer
            input(type='text')
          li
            label Final Answer
            input(type='tel')
          li
            button Update Cell


---
title: "Blog"
layout: "default"
isPage: true
---
p Here's a listing of all my blog posts, sorted in reverse chronological order.

ul
  for post in getCollection("html").findAllLive({relativeOutDirPath: "posts"}).toJSON()
    li: a(href="#{post.url}") #{post.title}

Sort blog listings in reverse chronology.

---
title: "Blog"
layout: "default"
isPage: true
---
p Here's a listing of all my blog posts, sorted in reverse chronological order.

ul
  for post in getCollection("posts").toJSON().sort(compareDate)
    li: a(href="#{post.url}") #{post.title} - #{post.date}


mixin userCard(curr_user, card_user)
  include ../partials/userCard
extends ../layout

block content
  include ../partials/newrequest
  input#csrf_token(type='hidden', name='_csrf', value=_csrf)
  .row.filter-options
    .col-xs-4.service-type.selected(name=RequestType.LEARN) I want help with
    .col-xs-4.service-type(name=RequestType.SHARE) I can offer
    .col-xs-4.service-type(name=RequestType.EXCHANGE) I want to share
    .clearfix.visible-xs-block.visible-sm-block
    .col-md-6.category-filter
      label Select your interests
      .skill-select
        each skill in user._interests.slice(0, 5)
          .skill-label(name="#{skill._id}") #{skill.label[locale]}
    .col-md-6.range-filter
      label#distance-label Distance
      input#distance-slider(data-slider-id='distance-slider' type="text")
    .col-md-12.button-wrapper
        button.btn.btn-primary.btn-large.filter-button(type='submit') Apply filter
        button.btn.btn-primary.btn-large(onclick="location.href='/users/surprise';" type='submit') Surprise me!
  .grid.user-list
    each person, i in users
      mixin userCard(user, person)

  script(src='/js/showall.js')
  script(src='/js/profile.js')

Add wrapper CSS class to community page

mixin userCard(curr_user, card_user)
  include ../partials/userCard
extends ../layout

block content
  .community-page
    include ../partials/newrequest
    input#csrf_token(type='hidden', name='_csrf', value=_csrf)
    .row.filter-options
      .col-xs-4.service-type.selected(name=RequestType.LEARN) I want help with
      .col-xs-4.service-type(name=RequestType.SHARE) I can offer
      .col-xs-4.service-type(name=RequestType.EXCHANGE) I want to share
      .clearfix.visible-xs-block.visible-sm-block
      .col-md-6.category-filter
        label Select your interests
        .skill-select
          each skill in user._interests.slice(0, 5)
            .skill-label(name="#{skill._id}") #{skill.label[locale]}
      .col-md-6.range-filter
        label#distance-label Distance
        input#distance-slider(data-slider-id='distance-slider' type="text")
      .col-md-12.button-wrapper
          button.btn.btn-primary.btn-large.filter-button(type='submit') Apply filter
          button.btn.btn-primary.btn-large(onclick="location.href='/users/surprise';" type='submit') Surprise me!
    .grid.user-list
      each person, i in users
        mixin userCard(user, person)

  script(src='/js/showall.js')
  script(src='/js/profile.js')


extends layout

block content
  // App information
  h1= title
  p A simple tool for experimenting with JS libraries in your web console.
  p.
    Development versions of jQuery and Underscore are included in this page,
    with no other JavaScript files. To use your web console with these
    libraries, simply open it up on this page and hack away.

  footer
    | © 2014
    a(href='http://thenickperson.com/') Nicolas McCurdy

  // List of active libraries
  h2 Current libraries
  if activeLibraries
    ul: each activeLibrary in activeLibraries
      if activeLibrary
        li: a(href=activeLibrary.url)= activeLibrary.name
  else
    p none

  // List of all known libraries
  h2 All libraries
  form
    select.chosen-select(name='libraries', multiple, size=15)
      each library in libraries
        option(value=library.name, selected=isActiveLibrary(library, activeLibraries))= library.name
    input(type='submit', value='Load')

  // Load the JavaScript files for all active libraries
  if activeLibraries
    each activeLibrary in activeLibraries
      if activeLibrary
        script(src=activeLibrary.url)

Update the description text on the home page

extends layout

block content
  // App information
  h1= title
  p A simple tool for experimenting with JS libraries in your web console.
  p.
    You may use the field below to pick JavaScript libraries to load. Once you
    press "Load", the page will be reloaded with the libraries of your choice
    included. To use your web console with these libraries, simply open it up on
    this page and hack away.
  p.
    Please note that jQuery and Chosen will be loaded at all times, as JS Box
    uses them internally.

  footer
    | © 2014
    a(href='http://thenickperson.com/') Nicolas McCurdy

  // List of active libraries
  h2 Current libraries
  if activeLibraries
    ul: each activeLibrary in activeLibraries
      if activeLibrary
        li: a(href=activeLibrary.url)= activeLibrary.name
  else
    p none

  // List of all known libraries
  h2 All libraries
  form
    select.chosen-select(name='libraries', multiple, size=15)
      each library in libraries
        option(value=library.name, selected=isActiveLibrary(library, activeLibraries))= library.name
    input(type='submit', value='Load')

  // Load the JavaScript files for all active libraries
  if activeLibraries
    each activeLibrary in activeLibraries
      if activeLibrary
        script(src=activeLibrary.url)


- 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) {% 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) {% trans "Mine" %}
        if best_submissions_link
            li(class=('active' if tab == 'best_submissions_list' else ''))
                a(href=best_submissions_link) {% 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" %}') {% trans "Admin" %}

Add icons to submission list tabs

- 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" %}


mixin postMetadata(author, categories)
	p.post-metadata Published by #[a.p-author.h-card(href='https://strugee.net/', rel='author')= author] and categorized as
		for category, index in categories
			a(href='/blog/category/' + category + '/') #{category}
			if index < categories.length - 1
			| ,

Make categories metadata use proper grammar

mixin postMetadata(author, categories)
	p.post-metadata Published by #[a.p-author.h-card(href='https://strugee.net/', rel='author')= author] and categorized as
		for category, index in categories
			a(href='/blog/category/' + category + '/') #{category}
			if index < categories.length - 2
				| ,
			else if index === categories.length - 2
				|  and


{
"id": "#{comment._id}",
"_id": "#{comment._id}",
"from_id": "#{comment.from_id}",
"to_id": "#{comment.to_id}",
"wall_id": "#{comment.wall_id}",
"type": "#{comment.type}",
"privacy": "#{comment.privacy}",
"content":
- if (typeof comment.content === "object")
  {
  "type": "#{comment.content.type}",
  "picture_set_id": "#{comment.content.picture_set_id}",
  "picture_set_name": "#{comment.content.picture_set_name}",
  "pictures":
  - var pictures = comment.content.pictures;
  include ../profiles/pictures
  },
- else
  - var commentContent = _s.escapeHTML(comment.content).replace(/\r\n/gm, '
').replace(/\n/gm, '
');
  "!{commentContent}"
,
"added_at": #{comment.added_at || 0},
"created_at": "#{comment.created_at}",
"updated_at": "#{comment.updated_at}",
"timeline": "#{comment.timeline}",
"from_user":
- var profile = comment.from_user
- if (comment.from_user)
  include ../profiles/_user
- else
  {}
}

Trim new lines in comments

{
"id": "#{comment._id}",
"_id": "#{comment._id}",
"from_id": "#{comment.from_id}",
"to_id": "#{comment.to_id}",
"wall_id": "#{comment.wall_id}",
"type": "#{comment.type}",
"privacy": "#{comment.privacy}",
"content":
- if (typeof comment.content === "object")
  {
  "type": "#{comment.content.type}",
  "picture_set_id": "#{comment.content.picture_set_id}",
  "picture_set_name": "#{comment.content.picture_set_name}",
  "pictures":
  - var pictures = comment.content.pictures;
  include ../profiles/pictures
  },
- else
  - var commentContent = _s.escapeHTML(_s.trim(comment.content)).replace(/\r\n/gm, '
').replace(/\n/gm, '
');
  "!{commentContent}"
,
"added_at": #{comment.added_at || 0},
"created_at": "#{comment.created_at}",
"updated_at": "#{comment.updated_at}",
"timeline": "#{comment.timeline}",
"from_user":
- var profile = comment.from_user
- if (comment.from_user)
  include ../profiles/_user
- else
  {}
}


.isic-header-wrapper
  .isic-icons-wrapper
    a.isic-link-home(title="Home", href="#")
      i.icon-home
      span Home
    a.isic-link-forum(title="Forum", href="#forum")
      i.icon-chat
      span Forum
    if datasetContributor
      a.isic-link-dataset-upload(title="Upload Dataset", href="#uploadDataset")
        i.icon-upload
        span Upload Dataset
    a.isic-link-studies(title="Annotation Studies", href="#studies")
      i.icon-eye
      span Annotation Studies
    a.isic-link-featuresets(title="Featuresets", href="#featuresets")
      i.icon-list
      span Featuresets
    a.isic-link-featuresets(title="Your Tasks", href="#tasks")
      i.icon-check
      span Your Tasks
  .isic-current-user-wrapper
  .g-clear-both

Fix a small typo in the header

.isic-header-wrapper
  .isic-icons-wrapper
    a.isic-link-home(title="Home", href="#")
      i.icon-home
      span Home
    a.isic-link-forum(title="Forum", href="#forum")
      i.icon-chat
      span Forum
    if datasetContributor
      a.isic-link-dataset-upload(title="Upload Dataset", href="#uploadDataset")
        i.icon-upload
        span Upload Dataset
    a.isic-link-studies(title="Annotation Studies", href="#studies")
      i.icon-eye
      span Annotation Studies
    a.isic-link-featuresets(title="Featuresets", href="#featuresets")
      i.icon-list
      span Featuresets
    a.isic-link-tasks(title="Your Tasks", href="#tasks")
      i.icon-check
      span Your Tasks
  .isic-current-user-wrapper
  .g-clear-both


//- each ability:
//-   name: str
//-   short: str
form(id="abilityAdd" onsubmit="addAbility()" action="javascript:void(0);")
	.row.abilityRow
		.col-xs-4
			input(type="text" name="name" placeholder="ability name")
		.col-xs-3
			input(type="text" name="short" placeholder="abbreviation")
		.col-xs-5
			input(type="submit" value="Add")

Make input button a styled bootstrap button. Super.

//- each ability:
//-   name: str
//-   short: str
form(id="abilityAdd" onsubmit="addAbility()" action="javascript:void(0);")
	.row.abilityRow
		.col-xs-4
			input(type="text" name="name" placeholder="ability name")
		.col-xs-3
			input(type="text" name="short" placeholder="abbreviation")
		.col-xs-5
			button.btn.btn-default.btn-md(type="submit")
				span.glyphicon.glyphicon-ok
				|   Add


extend layout

block login
  form(method='post', action='/authenticate')
    input(type='text', name='pin', required)
    if error
      p.error= error
    input(type='hidden', name='crumb', value='#{crumb}')
    button(type='submit') log in

block content
  h1 check your phone

  p Enter the 4-digit PIN from your phone to log in.

Disable autocompletion on pin entry

extend layout

block login
  form(method='post', action='/authenticate')
    input(type='text', name='pin', autocomplete='off', required)
    if error
      p.error= error
    input(type='hidden', name='crumb', value='#{crumb}')
    button(type='submit') log in

block content
  h1 check your phone

  p Enter the 4-digit PIN from your phone to log in.


extends /templates/base

//- DO NOT TRANSLATE

block content

  if me.isAdmin()
    h1 Subscription Cancellations
    .small Returning #{view.limit} max latest cancellations, set 'limit' query variable to change.
    br
    if view.cancelEvents
      table.table-striped.table-condensed
        tr
          td Date
          td User Id
          td Message
        each event in view.cancelEvents
          tr
            td #{view.objectIdToDate(event._id).toISOString()}
            td #{event.user}
            if event.properties
              td #{event.properties.message}
            else
              td
    else
      h3 Loading..

Exclude empty messages from sub cancellations admin page

extends /templates/base

//- DO NOT TRANSLATE

block content

  if me.isAdmin()
    h1 Subscription Cancellations
    .small Returning #{view.limit} max latest cancellations, set 'limit' query variable to change.
    br
    if view.cancelEvents
      table.table-striped.table-condensed
        tr
          td Date
          td User Id
          td Message
        each event in view.cancelEvents
          if !event.properties.message
            - continue;
          tr
            td #{view.objectIdToDate(event._id).toISOString()}
            td #{event.user}
            if event.properties
              td #{event.properties.message}
            else
              td
    else
      h3 Loading..


doctype html
html(lang='en', ng-app='gokibitz' iframe-resizer ng-class='{ "is-iframed": $rootScope-iframed }')
	head
		base(href='/')
		meta(charset='utf-8')
		meta(name='viewport', content='width=device-width, initial-scale=1.0')
		meta(property='og:image', content='https://gokibitz.com#{og.image}')
		meta(property='og:url', content='https://gokibitz.com#{og.url}')
		meta(name='twitter:card', content='#{twitter.card}')
		meta(name='twitter:site', content='#{twitter.site}')
		meta(name='twitter:title', content='#{twitter.title}')
		meta(name='twitter:description', content='#{twitter.description}')
		meta(name='twitter:image', content='#{twitter.image}')
		meta(name='twitter:image:alt', content='#{twitter.alt}')
		title(ng-bind='$root.pageTitle') GoKibitz: Move-by-move conversations about go games.
		link(rel='stylesheet', href='/css/app.css')
		style .ng-cloak { display:none; }
		script(src='/js/modernizr.js')
		include favicon

	body
		include navbar

		block header

		div#container
			block content

		include footer

		script(src='/js/app.js')
		include analytics

Add URL prefix to twitter image

doctype html
html(lang='en', ng-app='gokibitz' iframe-resizer ng-class='{ "is-iframed": $rootScope-iframed }')
	head
		base(href='/')
		meta(charset='utf-8')
		meta(name='viewport', content='width=device-width, initial-scale=1.0')
		meta(property='og:image', content='https://gokibitz.com#{og.image}')
		meta(property='og:url', content='https://gokibitz.com#{og.url}')
		meta(name='twitter:card', content='#{twitter.card}')
		meta(name='twitter:site', content='#{twitter.site}')
		meta(name='twitter:title', content='#{twitter.title}')
		meta(name='twitter:description', content='#{twitter.description}')
		meta(name='twitter:image', content='https://gokibitz.com#{twitter.image}')
		meta(name='twitter:image:alt', content='#{twitter.alt}')
		title(ng-bind='$root.pageTitle') GoKibitz: Move-by-move conversations about go games.
		link(rel='stylesheet', href='/css/app.css')
		style .ng-cloak { display:none; }
		script(src='/js/modernizr.js')
		include favicon

	body
		include navbar

		block header

		div#container
			block content

		include footer

		script(src='/js/app.js')
		include analytics


doctype html
html(lang="en")
  head
    title= CircuitSim
    meta(charset='UTF-8')
    style
      include styles.css

  body
    #circuitsim

    script(src='./demo.js')

Add extra meta tags in html, including viewport

doctype html
html(lang="en")
  head
    title= CircuitSim
    meta(charset='utf-8')
    meta(http-equiv='X-UA-Compatible', content='IE=edge')
    meta(name='description', content='Electronic circuit simulator')
    meta(name='viewport', content='width=device-width, initial-scale=1')
    style
      include styles.css

  body
    #circuitsim

    script(src='./demo.js')


.current-progress(style!='width:<%- progress %>%')
    span.tasks-completed
        | <%- totalClosedTasks %>/<%- totalTasks %> tasks completed

Fix task completed title width

.current-progress(style!='width:<%- progress %>%')
div.tasks-completed
    | <%- totalClosedTasks %>/<%- totalTasks %> tasks completed


extends layout/layout

block vars
  - bodyClass = ""
  - pageTitle = "!Unshare your Profile Card"
  - pageTitleDataL8n = "content:unshare/title"

block headerScripts

block headerContent
  li.tabs__item: a.tabs__link(href="./profile", data-l8n="content:unshare/profile-link") !Profile
  li.tabs__item: a.tabs__link.clj--sign-out__link.func--sign-out__link(href="./sign-out", data-l8n="content:unshare/sign-out-link") !Sign out

block content
  .middle-container
    +modal(null,'','clj-wip')
      +set('modalTitle')
        span(data-l8n="content:unshare/modal-unshare-title") Are you sure you want to unshare your Profile Card with
        = " "
        span.clj--app-name Green Party
        |?
      +set('modalBody')
        p(data-l8n="content:unshare/modal-unshare-lede")
          | If you unshare you will need to approve Green Party again to sign in.
      +set('modalButtons')
        .modal-buttons__primary
          a.button.button--full-width(href="/profile") !Unshare Profile Card
        .modal-buttons__secondary
          a.button.button--full-width.button--secondary(href="/profile") !Cancel

Add data l8n to the unshare profile page

extends layout/layout

block vars
  - bodyClass = ""
  - pageTitle = "!Unshare your Profile Card"
  - pageTitleDataL8n = "content:unshare/title"

block headerScripts

block headerContent
  li.tabs__item: a.tabs__link(href="./profile", data-l8n="content:unshare/profile-link") !Profile
  li.tabs__item: a.tabs__link.clj--sign-out__link.func--sign-out__link(href="./sign-out", data-l8n="content:unshare/sign-out-link") !Sign out

block content
  .middle-container
    +modal(null,'','clj-wip')
      +set('modalTitle')
        span(data-l8n="content:unshare/modal-unshare-title") Are you sure you want to unshare your Profile Card with
        = " "
        span.clj--app-name Green Party
        |?
      +set('modalBody')
        p(data-l8n="content:unshare/modal-unshare-lede")
          | If you unshare you will need to approve Green Party again to sign in.
      +set('modalButtons')
        .modal-buttons__primary
          a.button.button--full-width(href="/profile", data-l8n="content:unshare/modal-unshare-ok-button") !Unshare Profile Card
        .modal-buttons__secondary
          a.button.button--full-width.button--secondary(href="/profile", data-l8n="content:unshare/modal-unshare-cancel-button") !Cancel


script(type="text/ng-template", id="tournament-noaccess")
 div You don't have access to view this tournament. Sorry!

Allow reconnect if broadcast is turned private

script(type="text/ng-template", id="tournament-noaccess")
 div You don't have access to view this tournament. Sorry! If you wait around, the owner might open it up for public viewing.


nav.sidebar-nav
  .back-container.text-center
    a(href='/').btn.btn-primary=t('sidebar.back')
  #filter-container.dropdown-department

  #list-container

Put the back button on bottom

nav.sidebar-nav
  #filter-container.dropdown-department

  #list-container
  .back-container.text-center
    a(href='/').btn.btn-primary
      span.glyphicon.glyphicon-chevron-left
      =t('sidebar.back')


doctype html
html
	head
		title AutoRobot

	body
		#root

	script(type="text/javascript" src="./../../app/index.js")

Add async option to user script

doctype html
html
	head
		title AutoRobot
		link(type="text/css" rel="stylesheet" href="./../../static/css/main.css")
		script(type="text/javascript" src="./../../app/index.js" async)
	body
		#root.container.flex.root


extend layout

block content
  h1= user

  if userOp
    p This user is an operator

  if op && !userOp && !banned
    form(method='post', action='/ban')
      input(type='hidden', name='phone', value='#{phone}')
      input(type='hidden', name='uid', value='#{uid}')
      input(type='hidden', name='crumb', value='#{crumb}')
      button.ban(type='submit') ban this account

  if banned
    p This account is currently banned.

    if op
      form(method='post', action='/unban')
        input(type='hidden', name='phone', value='#{phone}')
        input(type='hidden', name='uid', value='#{uid}')
        input(type='hidden', name='crumb', value='#{crumb}')
        button.unban(type='submit') unban this account

  h2 websites
  ul.websites
    li!= websites

  h2 bio
  p!= bio

  h2 recent posts
  #posts
    for post in posts
      article
        time
          a(href='/post/#{post.key}')= post.value.created
        pre!= post.value.content
    .pagination
      if next && lastKey
        a(href='/user/#{uid}?last=#{lastKey}') older

block login

Put bios inside a <pre> instead of a <p>

extend layout

block content
  h1= user

  if userOp
    p This user is an operator

  if op && !userOp && !banned
    form(method='post', action='/ban')
      input(type='hidden', name='phone', value='#{phone}')
      input(type='hidden', name='uid', value='#{uid}')
      input(type='hidden', name='crumb', value='#{crumb}')
      button.ban(type='submit') ban this account

  if banned
    p This account is currently banned.

    if op
      form(method='post', action='/unban')
        input(type='hidden', name='phone', value='#{phone}')
        input(type='hidden', name='uid', value='#{uid}')
        input(type='hidden', name='crumb', value='#{crumb}')
        button.unban(type='submit') unban this account

  h2 websites
  ul.websites
    li!= websites

  h2 bio
  pre!= bio

  h2 recent posts
  #posts
    for post in posts
      article
        time
          a(href='/post/#{post.key}')= post.value.created
        pre!= post.value.content
    .pagination
      if next && lastKey
        a(href='/user/#{uid}?last=#{lastKey}') older

block login


meta(charset="utf-8")
meta(name="X-UA-Compatible", content="IE=edge")

title
    block site_title
        = config.title
block description
    meta(name="description", content= config.description ? config.description : 'A Blog Powered By Hexo')
meta(name="viewport", content="width=device-width, initial-scale=1")
link(rel="short icon", href=url_for(theme.favicon))
link(rel="stylesheet", href=url_for("styles/sleepless.css"))

Add USTC Google Fonts Mirror as an option

meta(charset="utf-8")
meta(name="X-UA-Compatible", content="IE=edge")

title
    block site_title
        = config.title
block description
    meta(name="description", content= config.description ? config.description : 'A Blog Powered By Hexo')
meta(name="viewport", content="width=device-width, initial-scale=1")
link(rel="short icon", href=url_for(theme.favicon))
link(rel="stylesheet", href="//#{theme.use_ustc_mirror ? 'fonts.lug.ustc.edu.cn' : 'fonts.googleapis.com'}/css?family=Source+Sans+Pro:400,600|Roboto|Mono")
link(rel="stylesheet", href=url_for("styles/sleepless.css"))


extends layout

append styles
  link(href='/styles/plug.css',rel='stylesheet')
  link(href='/styles/icons.css',rel='stylesheet')

block content
  .infocard
    img(src=plug.images[720]).plugimage
    h2.plugvenue= plug.venue
    h3.plugname= plug.name
    .ownercredit
      ="mapped by "
      //- if the currently logged-in user mapped this
      if currentUser && plug.owner._id == currentUser._id
        a(href='/user/'+plug.owner.username).ownername you
      else
        a(href='/user/'+plug.owner.username).ownername
          = plug.owner.username
          img(src='//gravatar.com/avatar/'+plug.owner.emailMD5).owneravatar

  userUpvolted = currentUser && ~plug.upvolters.indexOf(currentUser._id)

  #upvolt-button(class = (userUpvolted ? 'upvolted' : ''))
    span.icon-upvolt
    =' '
    span#upvolt-count= plug.upvolters.length
    =' Upvolts'
  if currentUser
    script var csrfToken = !{JSON.stringify(csrfToken)};
    script(src="/upvolt.js")

Fix obsolete variable declaration in jade view

extends layout

append styles
  link(href='/styles/plug.css',rel='stylesheet')
  link(href='/styles/icons.css',rel='stylesheet')

block content
  .infocard
    img(src=plug.images[720]).plugimage
    h2.plugvenue= plug.venue
    h3.plugname= plug.name
    .ownercredit
      ="mapped by "
      //- if the currently logged-in user mapped this
      if currentUser && plug.owner._id == currentUser._id
        a(href='/user/'+plug.owner.username).ownername you
      else
        a(href='/user/'+plug.owner.username).ownername
          = plug.owner.username
          img(src='//gravatar.com/avatar/'+plug.owner.emailMD5).owneravatar

  - var userUpvolted = currentUser && ~plug.upvolters.indexOf(currentUser._id)

  #upvolt-button(class = (userUpvolted ? 'upvolted' : ''))
    span.icon-upvolt
    =' '
    span#upvolt-count= plug.upvolters.length
    =' Upvolts'
  if currentUser
    script var csrfToken = !{JSON.stringify(csrfToken)};
    script(src="/upvolt.js")


template(name='home')
  h1 Meteor Icon
  img.demo-icon(src='package/tomi:upload-jquery')
  textarea.embed-code(rows='5' cols='50')
  form.demo-form
    input.package-name(type='text', required
     placeholder='Your package name (e.g. iron:router)')
    input.btn(type='submit', value='Get one')
head
  link(href='https://fonts.googleapis.com/css?family=Montserrat',
   rel='stylesheet', type='text/css')
  link(rel="icon", type="image/png", href="/favicon-32x32.png", sizes="32x32")
body
  | {{> home}}

Use HTML5 input attributes to validate and protect input

template(name='home')
  h1 Meteor Icon
  img.demo-icon(src='package/tomi:upload-jquery')
  textarea.embed-code(rows='5' cols='50' readonly='readonly')
  form.demo-form
    input.package-name(type='text' required, pattern='.+\\:.+'
     placeholder='Your package name (e.g. iron:router)')
    input.btn(type='submit' value='Get one')
head
  link(href='https://fonts.googleapis.com/css?family=Montserrat'
   rel='stylesheet' type='text/css')
  link(rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32")
body
  | {{> home}}


div.intro
  div.intro-ribbon
    canvas.stars
    div.tagline-container
      h1.tagline Social Argument Collaboration
      h2
        span.audience: span.placeholder ~
        span.learn-more.action Learn More
  div.intro-panel.argumenta-bootstrap
    canvas.stars
    div.row-fluid
      div.span4
        h4.activity-header
          span.glyphicon.glyphicon-list
          | Arguments & Propositions
        div.activity
          | Create Arguments from Propositions — a series of premises
          | leading to a conclusion. 240 characters each!
      div.span4
        h4.activity-header
          span.glyphicon.glyphicon-tag
          | Support & Dispute Tags
        div.activity
          | Use Support and Dispute Tags to link any proposition with a related
          | argument, establishing a chain of reasoning.
      div.span4
        h4.activity-header
          span.glyphicon.glyphicon-link
          | Citations
        div.activity
          | Citations link propositions with any external resource
          | via text, embedded media, or URLs.
    div.intro-actions
      if !username
        span.show-join.action Join!

Use ribbon icon for tags

div.intro
  div.intro-ribbon
    canvas.stars
    div.tagline-container
      h1.tagline Social Argument Collaboration
      h2
        span.audience: span.placeholder ~
        span.learn-more.action Learn More
  div.intro-panel.argumenta-bootstrap
    canvas.stars
    div.row-fluid
      div.span4
        h4.activity-header
          span.glyphicon.glyphicon-list
          | Arguments & Propositions
        div.activity
          | Create Arguments from Propositions — a series of premises
          | leading to a conclusion. 240 characters each!
      div.span4
        h4.activity-header
          span.glyphicon.glyphicon-bookmark
          | Support & Dispute Tags
        div.activity
          | Use Support and Dispute Tags to link any proposition with a related
          | argument, establishing a chain of reasoning.
      div.span4
        h4.activity-header
          span.glyphicon.glyphicon-link
          | Citations
        div.activity
          | Citations link propositions with any external resource
          | via text, embedded media, or URLs.
    div.intro-actions
      if !username
        span.show-join.action Join!


h2 Your teams
.clearfix
  each team in teams
    .left.select-team
      h2= team.getName()
      .team-pbv
        | PBV:
        if team.getPBV() <= 1000
          = team.getPBV() + '\/1000'
        else
          span.pbv-over-max
            = team.getPBV()
          | /1000
      != window.JST['team']({team: team.models, window: window})
      .team-meta
        span.fake_link.export-team
          span.icon-upload
          |  Export
        |  |
        span.fake_link.clone-team
          span.icon-copy
          |  Clone
        |  |
        span.fake_link.delete-team
          span.icon-remove
          |  Delete
.button.button-primary.add-new-team Add new team
.button.import-team Import

Make /1000 outside of condition

h2 Your teams
.clearfix
  each team in teams
    .left.select-team
      h2= team.getName()
      .team-pbv
        | PBV:
        if team.getPBV() <= 1000
          = team.getPBV()
        else
          span.pbv-over-max
            = team.getPBV()
        | /1000
      != window.JST['team']({team: team.models, window: window})
      .team-meta
        span.fake_link.export-team
          span.icon-upload
          |  Export
        |  |
        span.fake_link.clone-team
          span.icon-copy
          |  Clone
        |  |
        span.fake_link.delete-team
          span.icon-remove
          |  Delete
.button.button-primary.add-new-team Add new team
.button.import-team Import


doctype html
html
    head
        meta(charset='utf-8')
        title SimpleFace Configuration
        include ./favicon.jade
        link(rel='stylesheet', type='text/css', href='css/default.css')
        script(src='js/scripts.js')
    body
        h1.title SimpleFace Configuration
        .item-container
            .item-container-content
                .item
                    Use this page to customize the simpleface watchface.
        .item-container
            .item-container-header Forecast
            .item-container-content
                label.item API Key
                    input(id='forecastAPIKey', type='text',
                        placeholder='forecast.io API Key')
            .item-container-footer
                | Go to #[a(href='https://developer.forecast.io') forecast.io]
                | to register and get your API key for free.
        .item-container
            .item-container-header Temperature Units
            .item-container-content
                label.item US
                    input(id='unitsUSA', type='radio', class='item-radio',
                        name='units', value='us', checked)
                label.item Metric
                    input(id='unitsMetric', type='radio', class='item-radio',
                        name='units', value='si')
        .item-container
            .button-container
                input(id='cancelButton', type='button', class='item-button'
                    value='CANCEL')
                input(id='submitButton', type='button', class='item-button'
                    value='SAVE')

Add missing commas for buttons

doctype html
html
    head
        meta(charset='utf-8')
        title SimpleFace Configuration
        include ./favicon.jade
        link(rel='stylesheet', type='text/css', href='css/default.css')
        script(src='js/scripts.js')
    body
        h1.title SimpleFace Configuration
        .item-container
            .item-container-content
                .item
                    Use this page to customize the simpleface watchface.
        .item-container
            .item-container-header Forecast
            .item-container-content
                label.item API Key
                    input(id='forecastAPIKey', type='text',
                        placeholder='forecast.io API Key')
            .item-container-footer
                | Go to #[a(href='https://developer.forecast.io') forecast.io]
                | to register and get your API key for free.
        .item-container
            .item-container-header Temperature Units
            .item-container-content
                label.item US
                    input(id='unitsUSA', type='radio', class='item-radio',
                        name='units', value='us', checked)
                label.item Metric
                    input(id='unitsMetric', type='radio', class='item-radio',
                        name='units', value='si')
        .item-container
            .button-container
                input(id='cancelButton', type='button', class='item-button',
                    value='CANCEL')
                input(id='submitButton', type='button', class='item-button',
                    value='SAVE')


extends layout

block content
  h1= title
  p Welcome to #{title}
  a(href="https://www.facebook.com/dialog/oauth?client_id=" + facebookAppId + "&redirect_uri=http://localhost:3000/facebook/&scope=public_profile,user_friends,email,user_about_me,user_actions.books,user_actions.fitness,user_actions.music,user_actions.news,user_actions.video,user_birthday,user_education_history,user_events,user_games_activity,user_hometown,user_likes,user_location,user_managed_groups,user_photos,user_posts,user_relationships,user_relationship_details,user_religion_politics,user_tagged_places,user_videos,user_website,user_work_history") Sync with Facebook

Fix problem with fb redirect uri

extends layout

block content
  h1= title
  p Welcome to #{title}
  a(href="https://www.facebook.com/dialog/oauth?client_id=" + facebookAppId + "&redirect_uri=https://salty-beach-7387.herokuapp.com/facebook/&scope=public_profile,user_friends,email,user_about_me,user_actions.books,user_actions.fitness,user_actions.music,user_actions.news,user_actions.video,user_birthday,user_education_history,user_events,user_games_activity,user_hometown,user_likes,user_location,user_managed_groups,user_photos,user_posts,user_relationships,user_relationship_details,user_religion_politics,user_tagged_places,user_videos,user_website,user_work_history") Sync with Facebook


a.search-result(href="#")
  if object_type == 'service'
    span.icon.icon-icon-browse
  if object_type == 'unit'
    - rootId = (root_services !== undefined && root_services.length) ? root_services[0] : 0
    div(class="color-ball service-background-color-#{rootId}")
  if object_type == 'address'
    span.icon.icon-icon-address
  span.title
    = name
  span.specifier
    = specifier_text
  if distance !== undefined
    span.specifier.distance
      = humanDistance(distance)
  if shortcomings !== undefined
    span.specifier.shortcomings
      = humanShortcomings(shortcomings)

Update root service attribute name.

a.search-result(href="#")
  if object_type == 'service'
    span.icon.icon-icon-browse
  if object_type == 'unit'
    - rootId = (root_ontologytreenodes !== undefined && root_ontologytreenodes.length) ? root_ontologytreenodes[0] : 0
    div(class="color-ball service-background-color-#{rootId}")
      = rootId
  if object_type == 'address'
    span.icon.icon-icon-address
  span.title
    = name
  span.specifier
    = specifier_text
  if distance !== undefined
    span.specifier.distance
      = humanDistance(distance)
  if shortcomings !== undefined
    span.specifier.shortcomings
      = humanShortcomings(shortcomings)


extends /src/layouts/post

block exports
  -exports.type = "post"
  -exports.comments = true
  -exports.authors = ["madx"]
  -exports.title = "Laissez vous pousser la barbe, apprenez à écrire des Makefiles"
  -exports.tags = ["shell", "makefile"]
  -exports.date = "2014-11-03"

block main
  +Post(exports.title)
    include:md index.md

Fix small typo in title on post about Makefiles

extends /src/layouts/post

block exports
  -exports.type = "post"
  -exports.comments = true
  -exports.authors = ["madx"]
  -exports.title = "Laissez-vous pousser la barbe, apprenez à écrire des Makefiles"
  -exports.tags = ["shell", "makefile"]
  -exports.date = "2014-11-03"

block main
  +Post(exports.title)
    include:md index.md


doctype html
html( data-path= sd.CURRENT_PATH, data-logged-in=(user && true) )
  head
    include ../modules/title
    include ../modules/meta
    include ../modules/styles

    block head
  body
    block precontainer
    .Container.js-container
      .Container__content
        block container

      block footer

    block body

    include ../modules/analytics
    include ../modules/scripts

Move blockhead to the top

doctype html
html( data-path= sd.CURRENT_PATH, data-logged-in=(user && true) )
  head
    block head

    include ../modules/title
    include ../modules/meta
    include ../modules/styles

  body
    block precontainer
    .Container.js-container
      .Container__content
        block container

      block footer

    block body

    include ../modules/analytics
    include ../modules/scripts


doctype 5
html
  head
    title Champions | SETM
    meta(name='viewport', content='width=device-width, initial-scale=1')
    link(rel='stylesheet', href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css')
    link(rel='stylesheet', href='/css/splash.css')
    script(src='https://code.jquery.com/jquery-1.11.1.min.js')
    script(src='//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js')
  body
    div(class='container')
      table(class='table')
        thead
          tr
            th
            th Champ Name
            th Minion Kills per min
        each champ in champions
          tr
            td
              img(src='http://ddragon.leagueoflegends.com/cdn/#{version}/img/champion/#{champInfo[champ.get('identifier')]}.png')
            td= champInfo[champ.get('identifier')]
            td= champ.get('minionsKilled') ? champ.get('minionsKilled').toFixed(1) : 0

    div= champInfoDebug

Make this link to the champ page so that we have an easy way to get to each champion's page.

doctype 5
html
  head
    title Champions | SETM
    meta(name='viewport', content='width=device-width, initial-scale=1')
    link(rel='stylesheet', href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css')
    link(rel='stylesheet', href='/css/splash.css')
    script(src='https://code.jquery.com/jquery-1.11.1.min.js')
    script(src='//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js')
  body
    div(class='container')
      table(class='table')
        thead
          tr
            th
            th Champ Name
            th Minion Kills per min
        each champ in champions
          tr
            td
              a(href='/champion/#{champ.get("identifier")}')
                img(src='http://ddragon.leagueoflegends.com/cdn/#{version}/img/champion/#{champInfo[champ.get('identifier')]}.png')
            td= champInfo[champ.get('identifier')]
            td= champ.get('minionsKilled') ? champ.get('minionsKilled').toFixed(1) : 0

    div= champInfoDebug


extends layout

block content
	div#content
		div#toast

		- var message = "Welcome " + user.displayName + "! "
		p#welcome: #[= message] #[a(href="prefs") Preferences] #[a(href="logout") Log out]

		div
			p Add task: #[input#inputCourseCode(type="text", placeholder="course code", name="coursecode")] #[input#inputTask(type="text", placeholder="task", name="task")] #[input#inputDeadline(type="text", name="deadline", placeholder="deadline")] #[input#inputWeight(type="number", min="0", max="100", placeholder="10.0", name="weight")]%    #[button#btnSubmit(type="submit") submit]

		div#tasksList
			table#tasksTable
				tr
					th
					th Code
					th Task
					th Deadline
					th Weight
					th Priority

			h2 Completed Items
			table#completedTable
				tr
					th
					th Code
					th Task
					th Deadline
					th Weight

Set step size to one tenth of a percent

extends layout

block content
	div#content
		div#toast

		- var message = "Welcome " + user.displayName + "! "
		p#welcome: #[= message] #[a(href="prefs") Preferences] #[a(href="logout") Log out]

		div
			p Add task: #[input#inputCourseCode(type="text", placeholder="course code", name="coursecode")] #[input#inputTask(type="text", placeholder="task", name="task")] #[input#inputDeadline(type="text", name="deadline", placeholder="deadline")] #[input#inputWeight(type="number", min="0", max="100", step="0.1", placeholder="10.0", name="weight")]%    #[button#btnSubmit(type="submit") submit]

		div#tasksList
			table#tasksTable
				tr
					th
					th Code
					th Task
					th Deadline
					th Weight
					th Priority

			h2 Completed Items
			table#completedTable
				tr
					th
					th Code
					th Task
					th Deadline
					th Weight


extends layout

block content
    .header.jumbotron.subhead
        .row
            .col-md-6
                if (!agent)
                    h1 Welcome
                    p.lead Don't forget to seed the database:
                    code $ grunt dbseed
                else
                    p.lead Hello, #{agent.name}
            if (!agent)
                .col-md-6
                    div.pull-right
                        h2 New to gebo?
                        form.form-signin(action="/signup", method="post", autocomplete="off")
                            input.form-control(type="text", name="name", placeholder="Name")
                            input.form-control(type="text", name="email", placeholder="Email")
                            input.form-control(type="password", name="password", placeholder="Password")
                            button.btn.btn-md.btn-primary.btn-block(type="submit") Sign up

Clean up and simplify default gebo homepage

extends layout

block content
    .header.jumbotron.subhead
        .row
            .col-md-6
                if (!agent)
                    h1 Welcome
                    //- p.lead Don't forget to seed the database:
                    //- code $ grunt dbseed
                else
                    p.lead Hello, #{agent.name}
            //- if (!agent)
                //- .col-md-6
                    //- div.pull-right
                        //- h2 New to gebo?
                        //- form.form-signin(action="/signup", method="post", autocomplete="off")
                            //- input.form-control(type="text", name="name", placeholder="Name")
                            //- input.form-control(type="text", name="email", placeholder="Email")
                            //- input.form-control(type="password", name="password", placeholder="Password")
                            //- button.btn.btn-md.btn-primary.btn-block(type="submit") Sign up