doctype html
html(lang="en")
  head
    block title
    meta(charset="utf-8")
    meta(name="viewport", content="width=device-width, initial-scale=1")
    meta(http-equiv="x-ua-compatible", content="ie=edge")

    link(href="/bower_components/bootstrap/dist/css/bootstrap.min.css", rel="stylesheet")
    link(href="/bower_components/octicons/octicons/octicons.css", rel="stylesheet")
    link(href="/css/main.css", rel="stylesheet")
    block styles

  body
    nav#nav.navbar.navbar-dark.bg-inverse
      span.navbar-brand FGLab
      ul.nav.navbar-nav
        li.nav-item
          a.nav-link(href="/") #[span.octicon.octicon-home]
    .container
      block content
    block scripts

Add forward and back buttons

doctype html
html(lang="en")
  head
    block title
    meta(charset="utf-8")
    meta(name="viewport", content="width=device-width, initial-scale=1")
    meta(http-equiv="x-ua-compatible", content="ie=edge")

    link(href="/bower_components/bootstrap/dist/css/bootstrap.min.css", rel="stylesheet")
    link(href="/bower_components/octicons/octicons/octicons.css", rel="stylesheet")
    link(href="/css/main.css", rel="stylesheet")
    block styles

  body
    nav#nav.navbar.navbar-dark.bg-inverse
      span.navbar-brand FGLab
      ul.nav.navbar-nav
        li.nav-item
          a.nav-link(href="/") #[span.octicon.octicon-home]
        li.nav-item
          a.nav-link(href="javascript:history.back()") #[span.octicon.octicon-chevron-left]
        li.nav-item
          a.nav-link(href="javascript:history.forward()") #[span.octicon.octicon-chevron-right]
    .container
      block content
    block scripts


extends ../layout-wide
block content
  iframe#wikiFrame(frameborder='no')
  script.
    var wikiUrl = '//freecodecamp.github.io/wiki';
    var wikiOrigin = /https?:\/\/freecodecamp.github.io/;
    var requestedPath = !{JSON.stringify(path) || ''};
    var lang = window.location.toString().match(/\/\w{2}\//);
    lang = (lang) ? lang[0] : '/en/';
    $('#wikiFrame').attr(
      'src',
      wikiUrl + (requestedPath ? requestedPath : lang)
    );
    window.addEventListener('message', function(e) {
      if (!wikiOrigin.test(e.origin)) {
        return null;
      }
      history.replaceState(history.state, null, e.data);
      return null;
    });

Add trailing slash to wiki iframe src if omitted

extends ../layout-wide
block content
  iframe#wikiFrame(frameborder='no')
  script.
    var wikiUrl = '//freecodecamp.github.io/wiki';
    var wikiOrigin = /https?:\/\/freecodecamp.github.io/;
    var requestedPath = !{JSON.stringify(path) || ''};
    if (requestedPath !== '' && requestedPath.slice(-1) !== '/') {
      requestedPath += '/';
    }
    var lang = window.location.toString().match(/\/\w{2}\//);
    lang = (lang) ? lang[0] : '/en/';
    $('#wikiFrame').attr(
      'src',
      wikiUrl + (requestedPath ? requestedPath : lang)
    );
    window.addEventListener('message', function(e) {
      if (!wikiOrigin.test(e.origin)) {
        return null;
      }
      history.replaceState(history.state, null, e.data);
      return null;
    });


.persistent-player(ng-class="{show: !!player.global.nowPlaying}")
  .scrubber-track
    .scrubber(ng-style="{width: player.global.progress() }")
  prx-player-button(sound="player.global.nowPlaying")
  a(ui-sref="player.global.nowPlaying.story", ng-if="player.global.nowPlaying")
    prx-img.thumb(src="player.global.nowPlaying.story.imageUrl")
  .timecode {{player.global.nowPlaying.position | timeCode }}
  .about(ng-if="player.global.nowPlaying")
    a.title(ui-sref="player.global.nowPlaying.story", ui-sref-active="current") {{player.global.nowPlaying.story.title}}
    a.byline(ui-sref="player.global.nowPlaying.producer", ui-sref-active="current") by {{player.global.nowPlaying.producer.name}}
  ul.actions(ng-flag="lovesharebuy")
    li.share
    li.love

Move image within an ng-if so it will be recompiled.

.persistent-player(ng-class="{show: !!player.global.nowPlaying}")
  .scrubber-track
    .scrubber(ng-style="{width: player.global.progress() }")
  prx-player-button(sound="player.global.nowPlaying")
  div(ng-if="player.global.nowPlaying")
    a(ui-sref="player.global.nowPlaying.story")
      prx-img.thumb(src="player.global.nowPlaying.story.imageUrl")
  .timecode {{player.global.nowPlaying.position | timeCode }}
  .about(ng-if="player.global.nowPlaying")
    a.title(ui-sref="player.global.nowPlaying.story", ui-sref-active="current") {{player.global.nowPlaying.story.title}}
    a.byline(ui-sref="player.global.nowPlaying.producer", ui-sref-active="current") by {{player.global.nowPlaying.producer.name}}
  ul.actions(ng-flag="lovesharebuy")
    li.share
    li.love


.row
  .columns.small-centered.small-12.medium-8.large-6
    | #{locals.name}: <strong>#{locals.account_balance}</strong> PLN
    br
    span=locals.account_number || "Number not provided"

Add an empty balance text

.row
  .columns.small-centered.small-12.medium-8.large-6
    span #{locals.name}:
    if locals.account_balance
      strong#{locals.account_balance}
      | PLN
    else
      | No debt found
    br
    span=locals.account_number || "Number not provided"


#landing
	.row
		.cell
			.side_list#left_side
				.left_back
				.right_back
				h2 Twitter Topics
				table.room_list
					- each topic in w.app.twitterTopics.sortedList
						tr
							td.count= topic.channel ? topic.channel.clients.userCount : topic.clients
							td
								- var strip_pound = topic.name.replace("#","");
								a(href="/chat/" + strip_pound)= topic.name.substring(0,20)
		.cell
			.channel_selector
				.right_back.back
				.left_back.back
				h1.title Wompt is Group Chat
				.subtitle !{w.subtitle}
				form(method='post')
					input.text.big.inline_label#channel(name='channel', title="Chat topic", type='text')
					input.submit#join(type='submit', value="Join Chat Channel")
		.cell
			.side_list#right_side
				.left_back
				.right_back
				h2 Trending Topics
				table.room_list
					- each chan in w.app.popular_channels.sorted_list
						tr
							td
								a(href="/chat/" + chan.name)= chan.name.substring(0,20)
							td.count= chan.clients.userCount
		.clear

Add "enter a topic" text to channel name input field on landing page

#landing
	.row
		.cell
			.side_list#left_side
				.left_back
				.right_back
				h2 Twitter Topics
				table.room_list
					- each topic in w.app.twitterTopics.sortedList
						tr
							td.count= topic.channel ? topic.channel.clients.userCount : topic.clients
							td
								- var strip_pound = topic.name.replace("#","");
								a(href="/chat/" + strip_pound)= topic.name.substring(0,20)
		.cell
			.channel_selector
				.right_back.back
				.left_back.back
				h1.title Wompt is Group Chat
				.subtitle !{w.subtitle}
				form(method='post')
					input.text.big.inline_label#channel(name='channel', title="Chat topic", type='text', placeholder="Enter a topic")
					input.submit#join(type='submit', value="Join Chat Channel")
		.cell
			.side_list#right_side
				.left_back
				.right_back
				h2 Trending Topics
				table.room_list
					- each chan in w.app.popular_channels.sorted_list
						tr
							td
								a(href="/chat/" + chan.name)= chan.name.substring(0,20)
							td.count= chan.clients.userCount
		.clear


extends layout

block content
  h1= title
  p Here you can search NASA's
    a(href='http://skyview.gsfc.nasa.gov/skymorph/') SkyMorph
    |  databases for some cool images of your favorite celestial bodies.
  p New searches will take a while to return results.

  #observations-search
    form#simple-search.tab
      fieldset
        legend
          | Simple
          a(href)#advanced-link Advanced
        p Try
          for target in sample_targets
            a(href='#target=#{target}')= target
            |,
          | or something
        input#target(type='text')
        input(type='submit', value='Get em')
        img#loader(src='images/loading.gif')

    form#advanced-search.tab
      fieldset
        legend
          a(href)#simple-link Simple
          |  Advanced
        dl
          for param in orbital_params
            dt= param.name
            dd
              input(id=param.id)
              | #{param.unit}
        input(type='submit', value='Reach for the stars')
        img#loader(src='images/loading.gif')

    #error
    #observations

  script(src='/javascripts/main.js')

Add link to project page

extends layout

block content
  h1= title
  p Here you can search NASA's
    a(href='http://skyview.gsfc.nasa.gov/skymorph/') SkyMorph
    |  databases for some cool images of your favorite celestial bodies.
  p New searches will take a while to return results. Made for the
    a(href='http://spaceappschallenge.org/project/skymorphius/')
      | SpaceApps Challenge
    |  in 2013.

  #observations-search
    form#simple-search.tab
      fieldset
        legend
          | Simple
          a(href)#advanced-link Advanced
        p Try
          for target in sample_targets
            a(href='#target=#{target}')= target
            |,
          | or something
        input#target(type='text')
        input(type='submit', value='Get em')
        img#loader(src='images/loading.gif')

    form#advanced-search.tab
      fieldset
        legend
          a(href)#simple-link Simple
          |  Advanced
        dl
          for param in orbital_params
            dt= param.name
            dd
              input(id=param.id)
              | #{param.unit}
        input(type='submit', value='Reach for the stars')
        img#loader(src='images/loading.gif')

    #error
    #observations

  script(src='/javascripts/main.js')


.navbar.navbar-inverse
    .container
        a.navbar-brand.logo(href='/') SwiftCODE
        ul.nav.navbar-nav
            li(class= path=='/lobby' ? 'active' : '')
                a(href='/lobby') Lobby
            li(class= path=='/game' ? 'active' : '')
                a(href='/game') Game
            li(class= path=='/about' ? 'active' : '')
                a(href='/about') About
        if !user
            form.navbar-form.pull-right.form-parsley(action='/login', method='POST')
                .form-group
                    input.form-control(type='text', placeholder='Username', name='username', autofocus, data-required='true', data-rangelength='[2, 32]', data-placement='bottom')
                .form-group
                    input.form-control(type='password', placeholder='Password', name='password', data-required='true', data-minlength='8', data-placement='bottom')
                button.btn(type='submit') Log in
        else
            ul.nav.navbar-nav.pull-right
                li.dropdown
                    a.dropdown-toggle(href='#', data-toggle='dropdown')= user.username
                        //- The below is an empty space after the username
                        |
                        b.caret
                    ul.dropdown-menu
                        li
                            a(href='/logout') Log out

Add link to admin page for admin users

.navbar.navbar-inverse
    .container
        a.navbar-brand.logo(href='/') SwiftCODE
        ul.nav.navbar-nav
            li(class= path=='/lobby' ? 'active' : '')
                a(href='/lobby') Lobby
            li(class= path=='/game' ? 'active' : '')
                a(href='/game') Game
            li(class= path=='/about' ? 'active' : '')
                a(href='/about') About
        if !user
            form.navbar-form.pull-right.form-parsley(action='/login', method='POST')
                .form-group
                    input.form-control(type='text', placeholder='Username', name='username', autofocus, data-required='true', data-rangelength='[2, 32]', data-placement='bottom')
                .form-group
                    input.form-control(type='password', placeholder='Password', name='password', data-required='true', data-minlength='8', data-placement='bottom')
                button.btn(type='submit') Log in
        else
            ul.nav.navbar-nav.pull-right
                li.dropdown
                    a.dropdown-toggle(href='#', data-toggle='dropdown')= user.username
                        //- The below is an empty space after the username
                        |
                        b.caret
                    ul.dropdown-menu
                        if user.isAdmin
                            li
                                a(href='/admin') Admin
                        li
                            a(href='/logout') Log out


extends layout

block body
  .container
    .navbar.navbar-default(role="navigation")
      .navbar-header
        button.navbar-toggle(type="button", data-toggle="collapse", data-target=".navbar-ex1-collapse")
          span.sr-only Toggle navigation
          span.icon-bar
          span.icon-bar
          span.icon-bar
        a.navbar-brand(href="#") SiseTV
      .collapse.navbar-collapse.navbar-ex1-collapse
        ul.nav.navbar-nav
          li
            a(href="/admin/cc") Content Control
          li
            a(href="/admin/admin") Admin Panel
        .navbar-text.navbar-right
          a(ng-href="/api/logout" target="_self") Log out
    - if (error!="")
    .alert.alert-dismissable.alert-danger
      button(type="button" class="close" data-dismiss="alert") ×
      p #{error}
    div(ng-controller="AppCtrl as app")
      div(ng-view)
  footer(clas="footer")
    .container
      hr
      .col-lg-6
        div Rasmus Saks & Al William Tammsaar
      .col-lg-6(class="text-right")
        div
          a(href="https://github.com/Rezonation/sisetv") Source code
          | released under MIT License

Fix error message box always being shown


extends layout

mixin displayFeature(feature)
  .panel.panel-default
    .panel-heading: h3.panel-title= feature.name
    ul.list-group: each key in Object.keys(feature.examples)
      +displayExample(key, feature.examples[key])

mixin displayExample(technology, code)
  li.list-group-item.active
    .list-group-item-heading= technology
    p.list-group-item-text
      ul.list-inline
        if typeof code === 'string'
          li: code= code
        else
          each str in code
            li: code= str

block content
  // results
  h2 Results
  if features.length > 0
    ol: each feature in features
      li: +displayFeature(feature)
  else
    h3.text-muted No results

Increase header sizes by 1

extends layout

mixin displayFeature(feature)
  .panel.panel-default
    .panel-heading: h2.panel-title= feature.name
    ul.list-group: each key in Object.keys(feature.examples)
      +displayExample(key, feature.examples[key])

mixin displayExample(technology, code)
  li.list-group-item.active
    .list-group-item-heading= technology
    p.list-group-item-text
      ul.list-inline
        if typeof code === 'string'
          li: code= code
        else
          each str in code
            li: code= str

block content
  // results
  h1 Results
  if features.length > 0
    ol: each feature in features
      li: +displayFeature(feature)
  else
    h2.text-muted No results


doctype html

html
	head
		meta(charset='utf-8')
		meta(name='viewport' content='width=device-width, initial-scale=1')

		link(href='/css/main.css' rel='stylesheet')
		link(href='/css/expander.css' rel='stylesheet')

	body
		div#test
			p.child some
			p.child other
		block body

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

Change paths to work from the filesystem

doctype html

html
	head
		meta(charset='utf-8')
		meta(name='viewport' content='width=device-width, initial-scale=1')

		link(href='css/demo.css' rel='stylesheet')
		link(href='css/expander.css' rel='stylesheet')

	body
		block body

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


.contain-to-grid
  nav.top-bar(data-topbar)
    ul.title-area
      li.name
        h1
          a(href="#") Regard
      li.toggle-topbar.menu-icon
        a(href="#")
    section.top-bar-section
      ul.right
        li
          a(href="#") Blog
        li
          a(href="#") Contact us

Add logo to the header

.contain-to-grid
  nav.top-bar(data-topbar)
    ul.title-area
      li.name
        h1
          a(href="/")
            img(src="/assets/img/regard-logo-color.png" height="64px" width="64px")

      li.toggle-topbar.menu-icon
        a(href="#")
    section.top-bar-section
      ul.right
        li
          a(href="#") Blog
        li
          a(href="#") Contact us


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, maximum-scale=1')

if config.author
  meta(name='author', content=config.author)

block page_description
  meta(name='description', content=config.description)

title
  block window_title
    = config.title
//- link(rel='alternate', href=locals.url+'/feed.xml', type='application/rss+xml', title=locals.description)

link(href=config.root + 'favicon.png', rel='icon')

link(rel='alternate', href=theme.rss ? theme.rss : config.root + 'atom.xml', title='config.title', type='application/atom.xml')

link(href='http://fonts.googleapis.com/css?family=Open+Sans:400', rel='stylesheet')
link(href='http://fonts.googleapis.com/css?family=Source+Code+Pro:400,600', rel='stylesheet', type='text/css')
link(rel='stylesheet', href=config.root + 'stylesheets/app.css')

Correct title tag in RSS link

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, maximum-scale=1')

if config.author
  meta(name='author', content=config.author)

block page_description
  meta(name='description', content=config.description)

title
  block window_title
    = config.title
//- link(rel='alternate', href=locals.url+'/feed.xml', type='application/rss+xml', title=locals.description)

link(href=config.root + 'favicon.png', rel='icon')

link(rel='alternate', href=theme.rss ? theme.rss : config.root + 'atom.xml', title=config.title, type='application/atom.xml')

link(href='http://fonts.googleapis.com/css?family=Open+Sans:400', rel='stylesheet')
link(href='http://fonts.googleapis.com/css?family=Source+Code+Pro:400,600', rel='stylesheet', type='text/css')
link(rel='stylesheet', href=config.root + 'stylesheets/app.css')


footer
  p Made with ♥ by
    a(href="https://github.com/marionettejs/marionettejs.com/graphs/contributors", target="_blank") all of us
    | .  Insights by
    a(href="//www.hotjar.com/?utm_source=badge", target="_blank") Hotjar
    | .
  a(href="#top", class="top") Top

Restructure footer copy line paragraphs - separate lines - distinctive main claim line just by semantics applied to second paragraph

footer
  p Made with ♥ by
    a(href="https://github.com/marionettejs/marionettejs.com/graphs/contributors", target="_blank") all of us
  p
    small Insights by
      a(href="//www.hotjar.com/?utm_source=badge", target="_blank") Hotjar

  a(href="#top", class="top") Top


.block-sidebar__section
  if connections && connections.length
    - s = connections.length == 1 ? '' : 's'
    .block-sidebar__separator(id="tab-connection-count") #{connections.length} Connection#{s}
    .js-connections-list
      for channel in connections
        .block-connection-outer
          include ../../../../components/list_view/templates/_connection

    .js-url-connections-list
      //- rendered on the client

Comment out connect button for now

.block-sidebar__section
  if connections && connections.length
    - s = connections.length == 1 ? '' : 's'
    .block-sidebar__separator(id="tab-connection-count") #{connections.length} Connection#{s}
    .js-connections-list
      for channel in connections
        .block-connection-outer
          include ../../../../components/list_view/templates/_connection

    .js-url-connections-list
      //- rendered on the client

    //- strong.js-connect-button Connect →
    //- .block-connect-container
    //-   //- rendered on the client


//- Override any locals with `append locals`
block locals
  assetPackage = 'all'
  bodyClass = (sd.HIDE_HEADER ? 'body-header-fixed' : '')

doctype html
html( data-useragent=userAgent )
  head
    block head
    include head
    link( type='text/css', rel='stylesheet', href=(sd.ASSET_PATH + 'main_layout' + sd.CSS_EXT) )
    link( type='text/css', rel='stylesheet', href=(sd.ASSET_PATH + assetPackage + sd.CSS_EXT) )
    if sd.MICROSITE
      link( type='text/css', rel='stylesheet', href=(sd.ASSET_PATH + 'microsite' + sd.CSS_EXT) )
  body( class=bodyClass )
    include ../../modal/template
    if sd.MICROSITE
      include ../header/templates/microsite
    else
      include ../header/templates/index
    #main-layout-container
      if sd.MICROSITE
        include ../../../components/microsite/header
      block body
      .main-layout-footer-push
    #scripts
      include scripts
      script( src=(sd.ASSET_PATH + 'main_layout' + sd.JS_EXT) )
      script( src=(sd.ASSET_PATH + assetPackage + sd.JS_EXT) )
      if sd.MICROSITE
        script( src=(sd.ASSET_PATH + 'microsite' + sd.JS_EXT) )
      block scripts
    include ../footer/template

Set the class on the body tag if we are in the microsite context

//- Override any locals with `append locals`
block locals
  assetPackage = 'all'
  bodyClass = (sd.HIDE_HEADER ? 'body-header-fixed' : '')
  bodyClass = bodyClass + (sd.MICROSITE ? ' is-microsite' : '')

doctype html
html( data-useragent=userAgent )
  head
    block head
    include head
    link( type='text/css', rel='stylesheet', href=(sd.ASSET_PATH + 'main_layout' + sd.CSS_EXT) )
    link( type='text/css', rel='stylesheet', href=(sd.ASSET_PATH + assetPackage + sd.CSS_EXT) )
    if sd.MICROSITE
      link( type='text/css', rel='stylesheet', href=(sd.ASSET_PATH + 'microsite' + sd.CSS_EXT) )
  body( class=bodyClass )
    include ../../modal/template
    if sd.MICROSITE
      include ../header/templates/microsite
    else
      include ../header/templates/index
    #main-layout-container
      if sd.MICROSITE
        include ../../../components/microsite/header
      block body
      .main-layout-footer-push
    #scripts
      include scripts
      script( src=(sd.ASSET_PATH + 'main_layout' + sd.JS_EXT) )
      script( src=(sd.ASSET_PATH + assetPackage + sd.JS_EXT) )
      if sd.MICROSITE
        script( src=(sd.ASSET_PATH + 'microsite' + sd.JS_EXT) )
      block scripts
    include ../footer/template


mixin renderOne(toy)
  .col-md-4
    .listing
      h3
        a(href="/toys/#{toy.id}")= toy.title
      p
        img.thumbnail.img-responsive(src="#{toy.image.cdnUri}/detail_#{toy.image.files[0]}")
      p !{toy.description}
      p.text-success
        | Age group: #{toy.agegroup}

mixin renderRow(first, second, third)
  .row.vspace-two
    +renderOne(first)
    +renderOne(second)
    +renderOne(third)

mixin renderToys(toys)
  - for (var i = 0; i <= toys.length-3; i=i+3)
    +renderRow(toys[i], toys[i+1], toys[i+2])
  - if (i < toys.length-1)
    .row.vspace-two
      +renderOne(toys[i-2])
      +renderOne(toys[i-1])
  - else
      +renderOne(toys[i-1])

Fix looping through the toys

mixin renderOne(toy)
  .col-md-4
    .listing
      h3
        a(href="/toys/#{toy.id}")= toy.title
      p
        img.thumbnail.img-responsive(src="#{toy.image.cdnUri}/detail_#{toy.image.files[0]}")
      p !{toy.description}
      p.text-success
        | Age group: #{toy.agegroup}

mixin renderRow(first, second, third)
  .row.vspace-two
    +renderOne(first)
    +renderOne(second)
    +renderOne(third)

mixin renderToys(toys)
  - var i = toys.length
  - for (; i > 2; i=i-3)
    +renderRow(toys[i], toys[i-1], toys[i-2])
  - if (i == 2)
    .row.vspace-two
      +renderOne(toys[i-2])
      +renderOne(toys[i-1])
  - else
      +renderOne(toys[i-1])


!!! 5
html
    head
        title #{network.graph.name}
        script(type="text/javascript", src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js")
        script(type="text/javascript", src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js")
        script(type="text/javascript", src="/js/jquery.jsPlumb-1.3.1-all-min.js")
        script(type="text/javascript", src="/js/jquery.countdown.min.js")
        script(type="text/javascript", src="/js/network.js")
        link(rel="stylesheet", type="text/css", href="/css/network.css")
        link(rel="stylesheet", type="text/css", href="/css/jquery.countdown.css")
    body
        header
            h1 #{network.graph.name}
            #uptime
        div(id="network", about=network.id)
            - each node in network.graph.nodes
                div(id=node.id)
                    p #{node.component}

Set viewport so webOS browser can drag elements

!!! 5
html
    head
        title #{network.graph.name}
        script(type="text/javascript", src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js")
        script(type="text/javascript", src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js")
        script(type="text/javascript", src="/js/jquery.jsPlumb-1.3.1-all-min.js")
        script(type="text/javascript", src="/js/jquery.countdown.min.js")
        script(type="text/javascript", src="/js/network.js")
        link(rel="stylesheet", type="text/css", href="/css/network.css")
        link(rel="stylesheet", type="text/css", href="/css/jquery.countdown.css")
        meta(name="viewport", content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;")
    body
        header
            h1 #{network.graph.name}
            #uptime
        div(id="network", about=network.id)
            - each node in network.graph.nodes
                div(id=node.id)
                    p #{node.component}


doctype html
html(lang="en")
    head
        title chartly - tau - 0.0.3

        script(src="app-bundle.min.js")

        link(rel="stylesheet",href="app.css")

      body
        h1 tau skeleton
        canvas(class="content")

Add reference to phaser.js as it is no longer included in the browserify build.

doctype html
html(lang="en")
    head
        title chartly - tau - 0.0.3

        script(src="src/lib/phaser.js")
        script(src="app-bundle.js")

        link(rel="stylesheet",href="app.css")

      body
        h1 tau skeleton
        canvas(class="content")


extends ../layout

block content
  .list-group
    each bin in bins
      a.list-group-item(href="/" + bin.hash)
        .pull-right
          small: i= moment(bin.createdAt).format('LLLL')
          span
          if bin.visibility === "Public"
            span.label.label-pill.label-primary= bin.visibility
          else
            span.label.label-pill.label-default= bin.visibility
        div!= bin.content.replace(/
/g, '{br}').replace(/<\/?[^>]+(>|$)/g, '').replace(/\{br\}/g, '
')

Add new lines for ending div tags

extends ../layout

block content
  .list-group
    each bin in bins
      a.list-group-item(href="/" + bin.hash)
        .pull-right
          small: i= moment(bin.createdAt).format('LLLL')
          span
          if bin.visibility === "Public"
            span.label.label-pill.label-primary= bin.visibility
          else
            span.label.label-pill.label-default= bin.visibility
        div!= bin.content.replace(/(
|<\/div>)/g, '{br}').replace(/<\/?[^>]+(>|$)/g, '').replace(/\{br\}/g, '
')


.mgr-cells.js-mgr-cells
  for installShot in partner_show.install_shots
    .mgr-cell.js-mgr-cell
      img(
        src= installShot.carousel_image.url
        alt= installShot.caption
        title= installShot.caption
        data-zoom-url= installShot.zoom_image
      )

      if installShot.caption
        .show-installation-shot-caption( style="width: #{installShot.carousel_image.width}px")
          = installShot.caption

- length = partner_show.install_shots.length
nav.mgr-navigation.js-mgr-navigation
  include ../../../components/merry_go_round/templates/navigation

Check to see if that exists...

.mgr-cells.js-mgr-cells
  for installShot in partner_show.install_shots
    if installShot.carousel_image
      .mgr-cell.js-mgr-cell
        img(
          src= installShot.carousel_image.url
          alt= installShot.caption
          title= installShot.caption
          data-zoom-url= installShot.zoom_image
        )

        if installShot.caption
          .show-installation-shot-caption( style="width: #{installShot.carousel_image.width}px")
            = installShot.caption

- length = partner_show.install_shots.length
nav.mgr-navigation.js-mgr-navigation
  include ../../../components/merry_go_round/templates/navigation


extends layout
block body
  .container
    br
    br
    .col-lg-6.col-lg-offset-3.panel.panel-default
      form(method='POST', action='/auth/login')
        - if (error!="")
        .alert.alert-dismissable.alert-danger
        button(type="button" class="close" data-dismiss="alert") ×
        p #{error}
        h2 Reset password
        br
        h3 User: #{user}
        br
        .form-group
          label Old password:
          input.form-control(type='password', name='oldpassword', required)
        br
        .form-group
          label New password:
          input.form-control(type='password', name='password', required)
        div
          button.btn.btn-default.pull-right(type='submit') Log in
        br
        br
        br

Fix alert box always being shown on reset password page


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) Learn
    .col-xs-4.service-type(name=RequestType.SHARE) Share
    .col-xs-4.service-type(name=RequestType.EXCHANGE) Exchange
    .clearfix.visible-xs-block.visible-sm-block
    .col-md-6.category-filter
      .glyphicon.glyphicon-triangle-right
      label Categories
      .skill-select
        each skill in current_user_interests
          .skill-label(name="#{skill.name}") #{skill.label}
    .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-wrapper
        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')

Change copy on learn, share, exchange tabs

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
      .glyphicon.glyphicon-triangle-right
      label Categories
      .skill-select
        each skill in current_user_interests
          .skill-label(name="#{skill.name}") #{skill.label}
    .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-wrapper
        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')


doctype html
html
	head
		title= title
		link(rel='stylesheet', href='stylesheets/style.css')
		link(rel='stylesheet', href='https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css')
		link(rel='stylesheet', href='stylesheets/jquery.datetimepicker.css')
		script(src='//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js')
		script(src='javascripts/main.js')
		script(src='javascripts/jquery.datetimepicker.full.min.js')
		script(src='javascripts/moment.js')
		meta(name="viewport", content="width=device-width, initial-scale=1")
	body
		block content

Select JQuery version by browser capabilities

doctype html
html
	head
		title= title
		<script>if('querySelector' in document && 'localStorage' in window && 'addEventListener' in window) { document.write('<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"><\/script>') } else { document.write('<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"><\/script>') }</script>
		link(rel='stylesheet', href='stylesheets/style.css')
		link(rel='stylesheet', href='https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css')
		link(rel='stylesheet', href='stylesheets/jquery.datetimepicker.css')
		script(src='javascripts/main.js')
		script(src='javascripts/jquery.datetimepicker.full.min.js')
		script(src='javascripts/moment.js')
		meta(name="viewport", content="width=device-width, initial-scale=1")
	body
		block content


- var section;
- var getSectionFiles = function (sect) { return Object.keys(files).filter(function (f) { return files[f].data.section === sect;});};

.sidebar
  .sidebar-inner: ul

    - section = getSectionFiles('tutorials');
    li.l1 Respoke Concepts
    include sidebar-section

    li.l1(class=(path === 'frequently-asked-questions.html' ? 'active':''))
        a(href="/frequently-asked-questions.html") FAQ
    li.l1(class=(path === 'changelog.html' ? 'active':'')): a(href="/changelog.html") Changelog

    - section = getSectionFiles('js-library');
    li.l1 Javascript Client
    li.l2: a(href="http://respoke.github.io/respoke" target="_blank") Reference
        |  →
    include sidebar-section

    li.l1 Admin API
    li.l2 Coming soon

Add menu items for Admin API section

- var section;
- var getSectionFiles = function (sect) { return Object.keys(files).filter(function (f) { return files[f].data.section === sect;});};

.sidebar
  .sidebar-inner: ul

    - section = getSectionFiles('tutorials');
    li.l1 Respoke Concepts
    include sidebar-section

    li.l1(class=(path === 'frequently-asked-questions.html' ? 'active':''))
        a(href="/frequently-asked-questions.html") FAQ
    li.l1(class=(path === 'changelog.html' ? 'active':'')): a(href="/changelog.html") Changelog

    - section = getSectionFiles('js-library');
    li.l1 Javascript Client
    li.l2: a(href="http://respoke.github.io/respoke" target="_blank") Reference
        |  →
    include sidebar-section

    - section = getSectionFiles('admin-api');
    li.l1 Admin API
    include sidebar-section

    li.l2 Coming soon


if index > 1
  br
if index == '0'
  p
    | We recommned using
    a(href='https://postimg.org/' target='_blank') postimg.org
    | for free image hosting
label(for='i10_#{index}') Image URL
  span=(img.urlError)? ` (${img.urlError})` : ''
input(id='i10_#{index}', type='text', name='i10[#{index}]', placeholder='Enter url of a self hosted image', area-invalid=(error && error.i10_0)? 'true':'false', value='#{img.url}')

if index == '0'
  pre.
    Eg. https://s15.postimg.org/ynmtf53ez/mario.png
else
  br
  br
label(for='i11_#{index}') Image title
  span=(img.labelError)? ` (${img.labelError})` : ''
input(id='i11_#{index}', type='text', name='i11[#{index}]', placeholder='Enter image title', area-invalid=(error && error.i11_0)? 'true':'false', value='#{img.label}')

if index == '0'
  pre.
    Eg. Mario
else
  br

Change input type for url

if index > 1
  br
if index == '0'
  p
    | We recommned using
    a(href='https://postimg.org/' target='_blank') postimg.org
    | for free image hosting
label(for='i10_#{index}') Image URL
  span=(img.urlError)? ` (${img.urlError})` : ''
input(id='i10_#{index}', type='url', name='i10[#{index}]', placeholder='Enter url of a self hosted image', area-invalid=(error && error.i10_0)? 'true':'false', value='#{img.url}')

if index == '0'
  pre.
    Eg. https://s15.postimg.org/ynmtf53ez/mario.png
else
  br
  br
label(for='i11_#{index}') Image title
  span=(img.labelError)? ` (${img.labelError})` : ''
input(id='i11_#{index}', type='text', name='i11[#{index}]', placeholder='Enter image title', area-invalid=(error && error.i11_0)? 'true':'false', value='#{img.label}')

if index == '0'
  pre.
    Eg. Mario
else
  br


extends base

block content
  #app-container
    #map
  #tour-region
  #feedback-form-container.modal
  img.cloud.cloud-top(src!=staticFile('images/cloud-top.png'))
  img.cloud.cloud-bottom(src!=staticFile('images/cloud-bottom.png'))
  #landing-logo.overlay
  #persistent-logo.overlay
  #navigation-region.overlay
  .top-right-controls
    #language-selector.overlay
    #personalisation.overlay
    #service-cart.overlay
  #app-container
    #map
  #landing-logo.overlay
  #persistent-logo.overlay
  script(type='text/javascript', src!=staticFile('vendor/jade-runtime.js'))
  script(type='text/javascript', src!=staticFile('templates.js'))
  script(type='text/javascript', data-main!=staticFile('js/app'), src!=staticFile('vendor/require.js'))

Remove duplicate element from merge.

extends base

block content
  #tour-region
  #feedback-form-container.modal
  img.cloud.cloud-top(src!=staticFile('images/cloud-top.png'))
  img.cloud.cloud-bottom(src!=staticFile('images/cloud-bottom.png'))
  #landing-logo.overlay
  #persistent-logo.overlay
  #navigation-region.overlay
  .top-right-controls
    #language-selector.overlay
    #personalisation.overlay
    #service-cart.overlay
  #app-container
    #map
  #landing-logo.overlay
  #persistent-logo.overlay
  script(type='text/javascript', src!=staticFile('vendor/jade-runtime.js'))
  script(type='text/javascript', src!=staticFile('templates.js'))
  script(type='text/javascript', data-main!=staticFile('js/app'), src!=staticFile('vendor/require.js'))


extends layout

mixin displayFeature(feature)
  .panel.panel-default
    .panel-heading: h2.panel-title= feature.name
    ul.list-group: each key in Object.keys(feature.examples)
      +displayExample(key, feature.examples[key])

mixin displayExample(technology, snippets)
  li.list-group-item: .row
    .col-md-2.technology= technology
    ul.col-md-10.list-inline
      each snippet in toArray(snippets)
        li: code= snippet

block content
  .well: .container.search-bar
    // search form
    form.input-group.input-group-lg(role='search')
      input.form-control(type='search', name='query', placeholder='Search for code snippets', value=query, autofocus)
      .input-group-btn
        button.btn.btn-primary(type='submit')
          span.glyphicon.glyphicon-search

  .container
    // results
    .search-results
      h1 Results
      if features.length > 0
        ol: each feature in features
          li: +displayFeature(feature)
      else
        h2.text-muted No results

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

Update the HTML view to support the new schema

extends layout

mixin displayFeature(feature)
  .panel.panel-default
    .panel-heading: h2.panel-title= feature.name
    ul.list-group: each example in feature.examples
      +displayExample(example.technology, example.snippets)

mixin displayExample(technology, snippets)
  li.list-group-item: .row
    .col-md-2.technology= technology
    ul.col-md-10.list-inline
      each snippet in toArray(snippets)
        li: code= snippet

block content
  .well: .container.search-bar
    // search form
    form.input-group.input-group-lg(role='search')
      input.form-control(type='search', name='query', placeholder='Search for code snippets', value=query, autofocus)
      .input-group-btn
        button.btn.btn-primary(type='submit')
          span.glyphicon.glyphicon-search

  .container
    // results
    .search-results
      h1 Results
      if features.length > 0
        ol: each feature in features
          li: +displayFeature(feature)
      else
        h2.text-muted No results

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


.layersPanelContainer
    .panelTitle
      | Session Layers
    .layersList
      ul.datasets
        each dataset in datasets
          li.dataset= dataset.get('name')
              i.icon-eye-off.m-remove-dataset-from-layer&attributes({'m-dataset-id': dataset.get('_id')})
              each option in layersOrderOptions
                  i(class='icon-angle-#{option.class} m-order-layer')&attributes({'m-dataset-id': dataset.get('_id'), 'm-order-option': option.method})
              if dataset.getDatasetType() === 'wms'
                  .m-opacity-container
                    i.icon-ajust
                    input.m-opacity-range&attributes({'m-dataset-id': dataset.get('_id')})(type='range', min=0, max=1, step=0.01, value=dataset.get('opacity'))

Disable icons if layer falls first/last in the layers session

.layersPanelContainer
    .panelTitle
      | Session Layers
    .layersList
      ul.datasets
        each dataset, index in datasets
          li.dataset= dataset.get('name')
              i.icon-eye-off.m-remove-dataset-from-layer&attributes({'m-dataset-id': dataset.get('_id')})
              each option in layersOrderOptions
                  if ((index === 0 && option.class.indexOf('up') > -1) || (index === datasets.length - 1 && option.class.indexOf('down') > -1 ))
                      - var disable = 'm-disable-text'
                  else
                      - var disable = ''
                  i(class='icon-angle-#{option.class} m-order-layer #{disable}')&attributes({'m-dataset-id': dataset.get('_id'), 'm-order-option': option.method})
              if dataset.getDatasetType() === 'wms'
                  .m-opacity-container
                    i.icon-ajust
                    input.m-opacity-range&attributes({'m-dataset-id': dataset.get('_id')})(type='range', min=0, max=1, step=0.01, value=dataset.get('opacity'))


doctype html

html
  head
    meta(charset='UTF-8')
    meta(name="viewport" content="width=device-width, initial-scale=1")
    title Checkdesk
    link(href='/css/stylesheet.css', rel='stylesheet')
    link(href='/images/logo/favicon.ico', rel='icon')
    script(src='/js/config.js')
    link(href='https://fonts.googleapis.com/css?family=Roboto+Condensed:400,300,700|Merriweather:400,400italic,700italic,700|Roboto:700,500,400,300,100,900|' rel='stylesheet' type='text/css')

  body
    #root
  script(src='/js/index.bundle.js')

Reduce unnecessary Google Fonts requests

doctype html

html
  head
    meta(charset='UTF-8')
    meta(name="viewport" content="width=device-width, initial-scale=1")
    title Checkdesk
    link(href='/css/stylesheet.css', rel='stylesheet')
    link(href='/images/logo/favicon.ico', rel='icon')
    script(src='/js/config.js')
    link(href='https://fonts.googleapis.com/css?family=Roboto+Condensed:700,400|Merriweather:400|Roboto:400,700,500,300|' rel='stylesheet' type='text/css')

  body
    #root
  script(src='/js/index.bundle.js')


doctype html
html
  head
    title shellshare
    meta(charset='utf-8')
    if isDev
      link(rel='stylesheet', href='/stylesheet/vendor/cssreset.css')
      link(rel='stylesheet', href='/stylesheet/vendor/cssbase.css')
      link(rel='stylesheet', href='/stylesheet/vendor/ansi2html.css')
      link(rel='stylesheet', href='/stylesheet/room.css')
    else
      link(rel='stylesheet', href='/stylesheet/vendor/ansi2html.min.css')
      link(rel='stylesheet', href='/stylesheet/room.min.css')
    link(rel='stylesheet', href='//fonts.googleapis.com/css?family=Inconsolata')
  body
    .wrapper
      header
        .online
          span#online-counter 0
          |  user
          span#online-counter-plural s
          |  online
        h1.title
          a(href='/')
            span.title-shell shell
            span.title-share share
      .main
        #terminal
      include footer
  if isDev
    script(src='/javascript/room.bundle.js' async defer)
  else
    script(src='/javascript/room.bundle.min.js' async defer)

Add <script>s inside the <body> tag


doctype html
html
  head
    title= theme + ' preview'
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    script#webkite-results(type='application/javascript').
      var webkiteConfig = {
        theme         : "iago/#{theme}",
        style         : "light",
        datasetId     : "e5582c49-8f7f-41ae-b17f-2f21b78ef956",
        themeServer   : "http://localhost:3000",
        resultsServer : "http://results.webkite.org",
        env           : "develop",

        perPage       : 12,
        sorts         : ["Last Name"],
        filters       : ["Department", "University", "Degree"]
      };

      (function() {
        var wk = document.createElement('script');
        wk.type = 'application/javascript';
        wk.src = '//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js';
        //wk.setAttribute('data-main', 'http://jafar.webkite.org/stable/webkite-embed.min.js');
        wk.setAttribute('data-main', 'http://localhost/~greg/jafar/dist/webkite-embed.min.js');
        wk.async = true;
        document.body.appendChild(wk);
      })();

Use correct port for jafar themeServer config

doctype html
html
  head
    title= theme + ' preview'
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    script#webkite-results(type='application/javascript').
      var webkiteConfig = {
        theme         : "iago/#{theme}",
        style         : "light",
        datasetId     : "e5582c49-8f7f-41ae-b17f-2f21b78ef956",
        themeServer   : "http://localhost:1460",
        resultsServer : "http://results.webkite.org",
        env           : "develop",

        perPage       : 12,
        sorts         : ["Last Name"],
        filters       : ["Department", "University", "Degree"]
      };

      (function() {
        var wk = document.createElement('script');
        wk.type = 'application/javascript';
        wk.src = '//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js';
        //wk.setAttribute('data-main', 'http://jafar.webkite.org/stable/webkite-embed.min.js');
        wk.setAttribute('data-main', 'http://localhost/~greg/jafar/dist/webkite-embed.min.js');
        wk.async = true;
        document.body.appendChild(wk);
      })();


extends /_layout.jade

block vars
  - var title = 'Modals'

block content
  article
    :md
      # Modals

  +exampleWithCode
    script(src='./modal.min.js')

  +exampleWithCode
    .modal(data-modal-id='modal', role='dialog')
      button.modal-close(data-modal-action='close')
      .grid-fluid
        .row
          .col.xs
            h2.modal-header Show some farmhouse style
        .row
          .col.xs
            p
              | The earliest chandeliers fitted cushion is just go distressed
              | edges and shape and ivory stoneware Chalk Note the place, and
              | enjoy. A durable poly insert that decision-making a contemporary
              | space. It’s safe bet you know you like, indoors and solids. You
              | don’t need is all the rows of muted shades of sheer jasmine and
              | neutral hues, from the stir in the view. Hand-painted in the
              | look you'd like a lovely or covered outdoor life. So which means
              | more tempting? How can throw.

        .row.xs-end
          .col.xs
            button.button-md.button-secondary(data-modal-action='cancel') Cancel
          .col.xs
            button.button-md.button-primary(data-modal-action='confirm') OK

  a(href='#modal') Trigger Modal

Update reference to modal JS.

extends /_layout.jade

block vars
  - var title = 'Modals'

block content
  article
    :md
      # Modals

  +exampleWithCode
    script(src='./modal.js')

  +exampleWithCode
    .modal(data-modal-id='modal', role='dialog')
      button.modal-close(data-modal-action='close')
      .grid-fluid
        .row
          .col.xs
            h2.modal-header Show some farmhouse style
        .row
          .col.xs
            p
              | The earliest chandeliers fitted cushion is just go distressed
              | edges and shape and ivory stoneware Chalk Note the place, and
              | enjoy. A durable poly insert that decision-making a contemporary
              | space. It’s safe bet you know you like, indoors and solids. You
              | don’t need is all the rows of muted shades of sheer jasmine and
              | neutral hues, from the stir in the view. Hand-painted in the
              | look you'd like a lovely or covered outdoor life. So which means
              | more tempting? How can throw.

        .row.xs-end
          .col.xs
            button.button-md.button-secondary(data-modal-action='cancel') Cancel
          .col.xs
            button.button-md.button-primary(data-modal-action='confirm') OK

  a(href='#modal') Trigger Modal


// The Help control.
button.btn.btn-default.btn-med.qi-navbar-choice(
  type='button', ng-controller='HelpCtrl',
  ng-click="toggleHelp()"
)
  .glyphicon.glyphicon-question-sign

Remove blanks from empty lines.


extends layout

block content
  h1 Server Side Template Injection Example 1
  p.
    The following form is vulnerable to a Server Side Template Injection.
  div
    form(name="preview", method="post")
          div.input
              textarea(cols="80", rows="10", name="tpl")
          div.actions
              input(type="submit", value="Preview")
  p
    //- TODO: Figure out how to properly reroute to index
    a(href="http://localhost:3000") Return to Index

Add initial context for SSTI

extends layout

block content
  h1 Server Side Template Injection Example 1
  p.
    Modern web applications make frequent use of templates such as Jade (now
    called "Pug") and Jinja2 to embed dynamic content in pages. When this
    dynamic content is provided by an untrustworthy source (i.e. users), it
    can lead to a form of exploitation known as Template Injection.
  p.
    The following form is vulnerable to a Server Side Template Injection.
  div
    form(name="preview", method="post")
          div.input
              textarea(cols="80", rows="10", name="tpl")
          div.actions
              input(type="submit", value="Preview")
  p
    //- TODO: Figure out how to properly reroute to index
    a(href="http://localhost:3000") Return to Index


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="") Media Kit
      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

Add link to media pdf

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="http://s3.amazonaws.com/arena-attachments/1827767/732ceac1695f6bd9d1ed3bc658376a96.pdf?1519918658") Media Kit
      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


extends ../layout/partial

include include/accordion-heading-mixin

block billboard
  | {{ image.parent.session.subject.collection | capitalize }}
  | Patient {{ image.parent.session.subject.number }}
  | Session {{ image.parent.session.number }}
  | {{ image.parent | imageContainerTitle }}
  | Time Point {{ image.timePoint }}

block content
  // The modeling parameter overlay select.
  include include/image-overlay-select
  // The image display.
  qi-image.qi-panel.qi-image
    // The opacity, axis and threshold image controls.
    include include/image-controls

block help-text
  // The nested quote ensures evaluation to a string rather than
  // a scope variable.
  .qi-help-text(ng-include="'/partials/help/volume.html'")

Change Time Point to Volume in title.

extends ../layout/partial

include include/accordion-heading-mixin

block billboard
  | {{ volume.container.session.subject.collection | capitalize }}
  | Patient {{ volume.container.session.subject.number }}
  | Session {{ volume.container.session.number }}
  | {{ volume.container._cls }}
  | Volume {{ volume.number }}

block content
  // The modeling parameter overlay select.
  include include/image-overlay-select
  // The image display.
  qi-image.qi-panel.qi-image
    // The opacity, axis and threshold image controls.
    include include/image-controls

block help-text
  // The nested quote ensures evaluation to a string rather than
  // a scope variable.
  .qi-help-text(ng-include="'/partials/help/volume.html'")


extends layout

block head
    script(src='js/vendor/xdate.js')
    script(src='js/vendor/underscore.js')
    script(src='js/vendor/backbone.js')
    script(src='js/vendor/Chart.js/Chart.js')
    script(src='js/main.js')

block content
    .cdns
    .latencies.row
        .main.small-12.large-8.columns
            .chartContainer
        .sidebar.small-12.large-4.columns
            .allControlsContainer
            .legendContainer
            .help.panel.uptime
                h3
                    small Uptime
                p The higher the uptime the better. Usually this is around 100% but sometimes you might see small dips.
            .help.panel.latency
                h3
                    small Latency
                p The lower the latency the better. Your visitors will be able to reach your content faster. CDNs reduce latency globally.

Mark all controls container as a panel

extends layout

block head
    script(src='js/vendor/xdate.js')
    script(src='js/vendor/underscore.js')
    script(src='js/vendor/backbone.js')
    script(src='js/vendor/Chart.js/Chart.js')
    script(src='js/main.js')

block content
    .cdns
    .latencies.row
        .main.small-12.large-8.columns
            .chartContainer
        .sidebar.small-12.large-4.columns
            .allControlsContainer.panel
            .legendContainer
            .help.panel.uptime
                h3
                    small Uptime
                p The higher the uptime the better. Usually this is around 100% but sometimes you might see small dips.
            .help.panel.latency
                h3
                    small Latency
                p The lower the latency the better. Your visitors will be able to reach your content faster. CDNs reduce latency globally.


extends layout

block content
    .row
        .large-8.columns
            h4 RheinMainJS geht weiter!
            :markdown
                Die JavaScript User Group in Wiesbaden und Mainz macht mit erweitertem Orga-Team weiter! Folgt uns auf [Twitter](https://twitter.com/RheinMainJS) und [Google+](http://google.com/+RheinmainjsDe) für aktuelle News.
            :markdown
                #### Nächstes Treffen
                Unser nächstes Treffen findet am 16. Oktober 2014 ab 19 Uhr bei [//SEIBERT/MEDIA](http://www.seibert-media.net/) in Wiesbaden statt.

            :markdown
                Du möchtest einen Vortrag halten? Dann melde dich bei uns: [orga@rheinmainjs.de](mailto:orga@rheinmainjs.de)!
        .large-4.columns
            .panel.radius
                :markdown
                    #### Anmeldung
                    Bitte melde dich [hier auf Google+](https://plus.google.com/b/113716277582361446417/113716277582361446417) für das aktuelle Treffen an. Du erleichterst uns damit die Planung!

            include includes/twitter

Update Google Plus event link

extends layout

block content
    .row
        .large-8.columns
            h4 RheinMainJS geht weiter!
            :markdown
                Die JavaScript User Group in Wiesbaden und Mainz macht mit erweitertem Orga-Team weiter! Folgt uns auf [Twitter](https://twitter.com/RheinMainJS) und [Google+](http://google.com/+RheinmainjsDe) für aktuelle News.
            :markdown
                #### Nächstes Treffen
                Unser nächstes Treffen findet am 16. Oktober 2014 ab 19 Uhr bei [//SEIBERT/MEDIA](http://www.seibert-media.net/) in Wiesbaden statt.

            :markdown
                Du möchtest einen Vortrag halten? Dann melde dich bei uns: [orga@rheinmainjs.de](mailto:orga@rheinmainjs.de)!
        .large-4.columns
            .panel.radius
                :markdown
                    #### Anmeldung
                    Bitte melde dich [hier auf Google+](https://plus.google.com/u/0/events/ciud4asgib53lsqd6r2o5o1i3b8) für das aktuelle Treffen an. Du erleichterst uns damit die Planung!

            include includes/twitter


h1 Send message to Artsy
hr
.contact-iph-body
  p #{representative.get('name')}, an Artsy Specialist, is available to answer
    |  your questions and help you collect through Artsy.
.contact-iph-icon: img(
  src= representative.iconImageUrl()
  alt= representative.get('name')
)
hr

Set the known dimensions to avoid content shift

h1 Send message to Artsy
hr
.contact-iph-body
  p #{representative.get('name')}, an Artsy Specialist, is available to answer
    |  your questions and help you collect through Artsy.
.contact-iph-icon: img(
  src= representative.iconImageUrl()
  alt= representative.get('name')
  width='60', height='60'
)
hr


// IndieWeb components, with <3
//- Consider updating /contact at the same time
//- TODO fix this to just resolve to /contact - see https://indieweb.org/antipatterns#invisible_metadata
link(rel='me', href='mailto:alex@strugee.net')
link(rel='me', href='sms:17607054581')
link(rel='me', href='xmpp:alex@strugee.net')
link(rel='me', href='https://github.com/strugee')
link(rel='me', href='https://twitter.com/strugee2')
link(rel='me', href='https://plus.google.com/+AlexJordan')
link(rel='me', href='https://pump.strugee.net/alex')
link(rel='me', href='https://pod.strugee.net/people/82e1c9a030600133e0ca20474782d58c')
link(rel='me', href='https://media.strugee.net/u/alex')
link(rel='me', href='https://twitter.com/strugee2')
link(rel='me', href='https://plus.google.com/+AlexJordan')
link(rel='me', href='https://www.instagram.com/strugee2/')

Add IndieAuth.com as an auth endpoint

// IndieWeb components, with <3
//- Consider updating /contact at the same time
//- TODO fix this to just resolve to /contact - see https://indieweb.org/antipatterns#invisible_metadata
link(rel='me', href='mailto:alex@strugee.net')
link(rel='me', href='sms:17607054581')
link(rel='me', href='xmpp:alex@strugee.net')
link(rel='me', href='https://github.com/strugee')
link(rel='me', href='https://twitter.com/strugee2')
link(rel='me', href='https://plus.google.com/+AlexJordan')
link(rel='me', href='https://pump.strugee.net/alex')
link(rel='me', href='https://pod.strugee.net/people/82e1c9a030600133e0ca20474782d58c')
link(rel='me', href='https://media.strugee.net/u/alex')
link(rel='me', href='https://twitter.com/strugee2')
link(rel='me', href='https://plus.google.com/+AlexJordan')
link(rel='me', href='https://www.instagram.com/strugee2/')
link(rel='authorization_endpoint', href='https://indieauth.com/auth')


tr(data-bind="css:{'bg-danger':hasError, 'bg-warning':hasWarning, 'bg-info':hasInfo}, visible:isVisible")
  th
    label(data-bind='text:label')
    span(data-bind='visible:isRequired') *
  td
    select(data-bind="options:values, value:value, optionsCaption: '(None)'")
  td
    span(data-bind='text:description')
tr(data-bind="css:{'bg-danger':hasError, 'bg-warning':hasWarning, 'bg-info':hasInfo}, visible:hasMessage")
  th
  td(colspan='2' data-bind='text:message')

Rename model input dropdown caption to Choose...

tr(data-bind="css:{'bg-danger':hasError, 'bg-warning':hasWarning, 'bg-info':hasInfo}, visible:isVisible")
  th
    label(data-bind='text:label')
    span(data-bind='visible:isRequired') *
  td
    select(data-bind="options:values, value:value, optionsCaption: '(Choose...)'")
  td
    span(data-bind='text:description')
tr(data-bind="css:{'bg-danger':hasError, 'bg-warning':hasWarning, 'bg-info':hasInfo}, visible:hasMessage")
  th
  td(colspan='2' data-bind='text:message')


doctype html
html(lang="en")
  head
    meta(charset="utf-8")
    meta(http-equiv="X-UA-Compatible", content="IE=edge")
    meta(name="viewport", content="width=device-width, initial-scale=1")

    title Resume

    link(rel="stylesheet", href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css", integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7", crossorigin="anonymous")
    link(rel="stylesheet", href="main.css")
  body
    main.container
      .row.header
        header
          div.col-md-4
            span.contact-name= person.name
          div.col-md-4.text-center
            span.contact-email= person.email
          div.col-md-4.text-right
            span.contact-phone= $utils.phone.format(person.phone, "NNN.NNN.NNNN")

      article
        block content

Add github info to person header

doctype html
html(lang="en")
  head
    meta(charset="utf-8")
    meta(http-equiv="X-UA-Compatible", content="IE=edge")
    meta(name="viewport", content="width=device-width, initial-scale=1")

    title Resume

    link(rel="stylesheet", href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css", integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7", crossorigin="anonymous")
    link(rel="stylesheet", href="main.css")
  body
    main.container
      .row.header
        header
          div.col-md-3
            span.contact-name= person.name
          div.col-md-3.text-center
            span.contact-email= person.email
          div.col-md-3.text-center
            span.contact-github= person.github
          div.col-md-3.text-right
            span.contact-phone= $utils.phone.format(person.phone, "NNN.NNN.NNNN")

      article
        block content


style.
  #error h1 {
    color: #7f8c8d;
    font-size: 96px;
    margin-top: 1em;
    display: block;
    text-align: center;
  }
  #error h3 {
    color: #95a5a6;
    font-size: 32px;
    display: block;
    text-align: center;
  }
main#error
  h1 Error #{status}
  h3
    if status === 404
      | The content you are looking for is not found.
    else
      | Something bad happened. Sorry about that.

Add style to error page - in case of stand-alone

include ../mixins/dependencies
header
  +styles
  style.
    #error h1 {
      color: #7f8c8d;
      font-size: 96px;
      margin-top: 1em;
      display: block;
      text-align: center;
    }
    #error h3 {
      color: #95a5a6;
      font-size: 32px;
      display: block;
      text-align: center;
    }
main#error
  h1 Error #{status}
  h3
    if status === 404
      | The content you are looking for is not found.
    else
      | Something bad happened. Sorry about that.


extends layout

mixin displayFeature(feature)
  .panel.panel-default
    .panel-heading: h2.panel-title= feature.name
    dl.panel-body: each example in feature.examples
      +displayExample(example.technology, example.snippets)

mixin displayExample(technology, snippets)
  dt: h4= technology
  each snippet in snippets
    dd: code= snippet

block content
  // header
  .page-header
    a.btn.btn-default.pull-right(href='https://github.com/nicolasmccurdy/rose' target='_blank').
      GitHub Repository
    h1: a(href='/') Rose

    // search form
    form.input-group.input-group-lg(role='search')
      input.form-control(type='search', name='query', placeholder='Search for features, technologies, or code snippets', value=query, autofocus)
      .input-group-btn
        button.btn.btn-primary(type='submit')
          span.glyphicon.glyphicon-search

  // results
  .search-results
    if features.length > 0
      each feature in features
        +displayFeature(feature)
    else
      h2.text-muted No results

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

Add a brief description to the page header

extends layout

mixin displayFeature(feature)
  .panel.panel-default
    .panel-heading: h2.panel-title= feature.name
    dl.panel-body: each example in feature.examples
      +displayExample(example.technology, example.snippets)

mixin displayExample(technology, snippets)
  dt: h4= technology
  each snippet in snippets
    dd: code= snippet

block content
  // header
  .page-header
    a.btn.btn-default.pull-right(href='https://github.com/nicolasmccurdy/rose' target='_blank').
      GitHub Repository
    h1
      a(href='/') Rose
      p: small An interactive, technical, and openly editable Rosetta Stone for developers.

    // search form
    form.input-group.input-group-lg(role='search')
      input.form-control(type='search', name='query', placeholder='Search for features, technologies, or code snippets', value=query, autofocus)
      .input-group-btn
        button.btn.btn-primary(type='submit')
          span.glyphicon.glyphicon-search

  // results
  .search-results
    if features.length > 0
      each feature in features
        +displayFeature(feature)
    else
      h2.text-muted No results

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


doctype 5
html
    head
        meta(charset='utf-8')
        title It's Friday!
        style
            @import url('/css/friday.css');
    body
        #msg-list
            if flashMsg
                .msg= flashMsg

        #content
            if !authenticated
                include sign-in
            else
                include settings
            include about

        #container
            object(type='application/x-shockwave-flash', data='/flash/friday.swf')
                param(name='movie', value='/flash/friday.swf')
                param(name='wmode', value='transparent')
            object(type='application/x-shockwave-flash', data='/flash/not_friday.swf')
                param(name='movie', value='/flash/not_friday.swf')
                param(name='wmode', value='transparent')

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

Fix a bug where flash messages were escaped

doctype 5
html
    head
        meta(charset='utf-8')
        title It's Friday!
        style
            @import url('/css/friday.css');
    body
        #msg-list
            if flashMsg
                .msg
                    |!{flashMsg}

        #content
            if !authenticated
                include sign-in
            else
                include settings
            include about

        #container
            object(type='application/x-shockwave-flash', data='/flash/friday.swf')
                param(name='movie', value='/flash/friday.swf')
                param(name='wmode', value='transparent')
            object(type='application/x-shockwave-flash', data='/flash/not_friday.swf')
                param(name='movie', value='/flash/not_friday.swf')
                param(name='wmode', value='transparent')

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


include ../../../util/activator
header#main-layout-header(class= sd.HEADER_CLASS ? sd.HEADER_CLASS : '')
  unless user || sd.HIDE_HEADER
    #main-layout-welcome-header
      #main-layout-welcome-header-aside
        .mlwha-outer
          .mlwha-inner
            | Discover art from leading galleries,
            br
            | museums, and private collections.
      i#main-layout-welcome-logo.icon-logotype

  include ./small_screen_header.jade
  include ./large_screen_header.jade

Use flag as sole source of truth

include ../../../util/activator

header#main-layout-header( class= sd.HEADER_CLASS ? sd.HEADER_CLASS : '' )
  unless sd.HIDE_HEADER
    #main-layout-welcome-header
      #main-layout-welcome-header-aside
        .mlwha-outer
          .mlwha-inner
            | Discover art from leading galleries,
            br
            | museums, and private collections.

      i#main-layout-welcome-logo.icon-logotype

  include ./small_screen_header.jade
  include ./large_screen_header.jade


div.login-form-container(tg-login)
    form.login-form(ng-submit="ctrl.submit()")
        fieldset
            input(type="text", name="username", ng-model="data.username", placeholder="Username or Email",
                  data-required="true")
        fieldset.login-password
            input(type="password", name="password", ng-model="data.password", data-required="true",
                  placeholder="Password")
            // This should be hidden when focus on pass
            a.forgot-pass(href="", title="Did you forgot your pass?") Forgot it?

        fieldset
            a.button.button-login.button-gray(href="", ng-click="ctrl.submit()", title="Sign in") Sign in
            input(type="submit", class="hidden")

    p.login-text
        span Not registered yet?
        a(href="", title="Register")  create your free account here

Add tg-nav to register and forgot-password links

div.login-form-container(tg-login)
    form.login-form(ng-submit="ctrl.submit()")
        fieldset
            input(type="text", name="username", ng-model="data.username", data-required="true",
                  placeholder="Username or Email")
        fieldset.login-password
            input(type="password", name="password", ng-model="data.password", data-required="true",
                  placeholder="Password")
            // This should be hidden when focus on pass
            a.forgot-pass(href="", tg-nav="forgot-password", title="Did you forgot your password?") Forgot it?

        fieldset
            a.button.button-login.button-gray(href="", ng-click="ctrl.submit()", title="Sign in") Sign in
            input(type="submit", class="hidden")

    p.login-text
        span Not registered yet?
        a(href="", tg-nav="register", title="Register")  create your free account here


extends ../layout

block content
  h1 Foursquare API
  h2= results
  a.btn.btn-large.btn-primary(href='/auth/foursquare') Get Foursquare Token

  ul.nav.nav-tabs
    li.active
      a(href='#trending', data-toggle='tab') Trending Venues
    li
      a(href='#nearby', data-toggle='tab') Nearby
  .tab-content
    #trending.tab-pane.fade.active.in
      h4 Locations
      ul.list-group
        for venue in venues
          li.list-group-item
            span.badge #{venue.stats.checkinsCount}
            | #{venue.name}
    #nearby.tab-pane.fade
      p TODO: Nearby

Hide Get Foursquare Token if it's already saved in DB

extends ../layout

block content
  h1 Foursquare API

  if !user.tokens.foursquare
    a.btn.btn-large.btn-primary(href='/auth/foursquare') Get Foursquare Token

  ul.nav.nav-tabs
    li.active
      a(href='#trending', data-toggle='tab') Trending Venues
    li
      a(href='#nearby', data-toggle='tab') Nearby
  .tab-content
    #trending.tab-pane.fade.active.in
      h4 Locations
      ul.list-group
        for venue in venues
          li.list-group-item
            span.badge #{venue.stats.checkinsCount}
            | #{venue.name}
    #nearby.tab-pane.fade
      p TODO: Nearby


div.form-group.qualify.category.otherprograms
    span.form-group-label
        | Do you currently receive any of the following:
        ul
            li
                | Medi-Cal?
            li
                | Food Stamps/SNAP?
            li
                | TANF?
            li
                | FDPIR?
            li
                | WIC benefits from another state?
    button(ng-click='next("qualify.income")')
        | No
    button(ng-click='result(true)')
        | Yes

Update qualify quiz, now gives negative response on negative to all category questions.

div.form-group.qualify.category.otherprograms
    span.form-group-label
        | Do you currently receive any of the following:
        ul
            li
                | Medi-Cal?
            li
                | Food Stamps/SNAP?
            li
                | TANF?
            li
                | FDPIR?
            li
                | WIC benefits from another state?
    button(ng-click='result(false, "category")')
        | No
    button(ng-click='result(true)')
        | Yes


mixin display_boolean(name, value, handler, help_text)
  .switch
    - if (handler)
      input(type='hidden', name=name, value='0')
      input(type='checkbox', id='s_' + name, value='1', name=name, checked=value, data-on-change=handler)
    - else
      input(type='hidden', name=name, value='0')
      input(type='checkbox', id='s_' + name, value='1', name=name, checked=value)
    label(for='s_' + name, data-yes=self.t('admin.phrases.yes'), data-no=self.t('admin.phrases.no')): i

  - if (help_text)
    span.help-block #{help_text}

Add type casting to boolean settings partial

mixin display_boolean(name, value, handler, help_text)
  - console.log(value);

  //- type cast value
  - if (value === '0' || value === 'false')
    - value = null

  .switch
    - if (handler)
      input(type='hidden', name=name, value='0')
      input(type='checkbox', id='s_' + name, value='1', name=name, checked=value, data-on-change=handler)
    - else
      input(type='hidden', name=name, value='0')
      input(type='checkbox', id='s_' + name, value='1', name=name, checked=value)
    label(for='s_' + name, data-yes=self.t('admin.phrases.yes'), data-no=self.t('admin.phrases.no')): i

  - if (help_text)
    span.help-block #{help_text}


div.login-form-container(tg-login)
    form.login-form
        fieldset
            input(
                type="text"
                autocorrect="off"
                autocapitalize="none"
                name="username"
                data-required="true"
                placeholder="{{'LOGIN_COMMON.PLACEHOLDER_AUTH_NAME' | translate}}"
            )

        fieldset.login-password
            input(
                type="password"
                name="password"
                tg-capslock
                data-required="true"
                placeholder="{{'LOGIN_COMMON.PLACEHOLDER_AUTH_PASSWORD' | translate}}"
            )

            // This should be hidden when focus on pass
            a.forgot-pass(
                href=""
                tg-nav="forgot-password"
                title="{{'LOGIN_COMMON.TITLE_LINK_FORGOT_PASSWORD' | translate}}"
                translate="LOGIN_COMMON.LINK_FORGOT_PASSWORD"
            )

        fieldset
            button.button-green.submit-button(
                type="submit"
                title="{{'LOGIN_COMMON.ACTION_SIGN_IN' | translate}}"
                translate="LOGIN_COMMON.ACTION_SIGN_IN"
            )

        fieldset(
            ng-repeat="plugin in contribPlugins|filter:{type: 'auth'}"
            ng-include="plugin.template"
        )

    tg-public-register-message

Add autofocus in login page

div.login-form-container(tg-login)
    form.login-form
        fieldset
            input(
                type="text"
                autocorrect="off"
                autocapitalize="none"
                autofocus
                required
                name="username"
                data-required="true"
                placeholder="{{'LOGIN_COMMON.PLACEHOLDER_AUTH_NAME' | translate}}"
            )

        fieldset.login-password
            input(
                type="password"
                name="password"
                tg-capslock
                data-required="true"
                placeholder="{{'LOGIN_COMMON.PLACEHOLDER_AUTH_PASSWORD' | translate}}"
            )

            // This should be hidden when focus on pass
            a.forgot-pass(
                href=""
                tg-nav="forgot-password"
                title="{{'LOGIN_COMMON.TITLE_LINK_FORGOT_PASSWORD' | translate}}"
                translate="LOGIN_COMMON.LINK_FORGOT_PASSWORD"
            )

        fieldset
            button.button-green.submit-button(
                type="submit"
                title="{{'LOGIN_COMMON.ACTION_SIGN_IN' | translate}}"
                translate="LOGIN_COMMON.ACTION_SIGN_IN"
            )

        fieldset(
            ng-repeat="plugin in contribPlugins|filter:{type: 'auth'}"
            ng-include="plugin.template"
        )

    tg-public-register-message


doctype html
html
  head
    meta(charset='utf-8')
    meta(http-equiv='X-UA-Compatible', content='IE=edge')
    meta(name='viewport', content='width=device-width, initial-scale=1.0')
    meta(name='description', content='')
    meta(name='author', content='TrashTeam')
    title #{title} - Starter Template for Bootstrap
    != css('styles')
    != js('application')
  body
    #wrap
      include partials/navigation
      .container
        include partials/flash
        block content
          h1 Quels déchêt souhaitez-vous jeter ?
          select
            each dechet, d in dechets
              option(value=d) Déchet #{dechet}
    include partials/footer

Update du template de choix des déchêts

doctype html
html
  head
    meta(charset='utf-8')
    meta(http-equiv='X-UA-Compatible', content='IE=edge')
    meta(name='viewport', content='width=device-width, initial-scale=1.0')
    meta(name='description', content='')
    meta(name='author', content='TrashTeam')
    title #{title} - Starter Template for Bootstrap
    != css('styles')
    != js('application')
  body
    #wrap
      include partials/navigation
      .container
        include partials/flash
        block content
          h1 Quels déchêt souhaitez-vous jeter ?
          h2 Choisissez la catégorie
          select
            option(value=bois) Bois
            option(value=metal) Métal
            option(value=deee) Électronique & Électro-ménager
            option(value=informatique) Informatique
            option(value=divers) Divers

            // each dechet, d in dechets
              // option(value=d) Déchet #{dechet}
          h2 Dans cette catégorie, quel est votre déchêt ?
          select
            option(value=type) Nom du déchêt
    include partials/footer


doctype html
html
  head
    meta(charset='utf-8')
    meta(http-equiv='refresh' content='1;url=#{destination}')
    link(rel='canonical' href=destination)
    script.
      window.location.replace('#{destination}');
  body
    = 'This page has been moved '
    a(href=destination)= 'here'
    = '.'

Add meta tag to skip indexing

doctype html
html
  head
    meta(charset='utf-8')
    meta(name='robots' content='noindex')
    meta(http-equiv='refresh' content='1;url=#{destination}')
    link(rel='canonical' href=destination)
    script.
      window.location.replace('#{destination}');
  body
    = 'This page has been moved '
    a(href=destination)= 'here'
    = '.'


doctype html
html(lang="en")
    head
        meta(charset = "UTF-8")
        meta(
            name    = "viewport",
            content = "width = device-width, initial-scale = 1, maximum-scale = 1, user-scalable = no"
        )
        title
            | Maestro

        //- CSS Includes
        link(
            rel  = "stylesheet",
            href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"
        )

        //- Custom CSS
        link(
            rel  = "stylesheet",
            type = "text/css",
            href = "styles/stdtheme.css"
        )

        //- JS includes
        script(src = "http://code.jquery.com/jquery-1.11.3.min.js")
        script(src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js")

        //- Custom JS
        script(src = "js/app.js")

    body
        .container-fluid
            //- Header
            include ./views/header.jade
            .tael-container

Add comment on .tael-container div

doctype html
html(lang="en")
    head
        meta(charset = "UTF-8")
        meta(
            name    = "viewport",
            content = "width = device-width, initial-scale = 1, maximum-scale = 1, user-scalable = no"
        )
        title
            | Maestro

        //- CSS Includes
        link(
            rel  = "stylesheet",
            href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"
        )

        //- Custom CSS
        link(
            rel  = "stylesheet",
            type = "text/css",
            href = "styles/stdtheme.css"
        )

        //- JS includes
        script(src = "http://code.jquery.com/jquery-1.11.3.min.js")
        script(src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js")

        //- Custom JS
        script(src = "js/app.js")

    body
        .container-fluid
            //- Header
            include ./views/header.jade
            //- Tael container, which is used by TaelJS
            .tael-container


section.support.column-contain
  .social-network-col
    ul
      li
        i.icon-twitter
        a(href= "https://twitter.com/marionettejs", target= "_blank") @marionettejs on Twitter
      li
        i.icon-google-plus
        a(href= "https://plus.google.com/101060306397560578875", target= "_blank") Marionette.js on Google+
      li
        i.icon-github
        a(href= "https://github.com/marionettejs/backbone.marionette", target="_blank") Marionette.js on GitHub
      li
        i.irc
        a(href= "http://freenode.net", target="_blank") #marionette on freenode IRC
  article.support_article
    h2 Contribute to Marionette.js
    p.
      Marionette greatly appreciates the community! We welcome your support and contributions. Please visit the GitHub repo to report bugs, suggest your ideas, help other users out, and even contribute code.

    a.btn.btn-issues(href="https://github.com/marionettejs/backbone.marionette/issues", target="_blank") GitHub Issues
  .cl

Update to correct URL for G+

section.support.column-contain
  .social-network-col
    ul
      li
        i.icon-twitter
        a(href= "https://twitter.com/marionettejs", target= "_blank") @marionettejs on Twitter
      li
        i.icon-google-plus
        a(href= "https://plus.google.com/communities/111798429561476246318", target= "_blank") Marionette.js on Google+
      li
        i.icon-github
        a(href= "https://github.com/marionettejs/backbone.marionette", target="_blank") Marionette.js on GitHub
      li
        i.irc
        a(href= "http://freenode.net", target="_blank") #marionette on freenode IRC
  article.support_article
    h2 Contribute to Marionette.js
    p.
      Marionette greatly appreciates the community! We welcome your support and contributions. Please visit the GitHub repo to report bugs, suggest your ideas, help other users out, and even contribute code.

    a.btn.btn-issues(href="https://github.com/marionettejs/backbone.marionette/issues", target="_blank") GitHub Issues
  .cl


extends ../../layout

block content
	.content.content-alt
		.container
			.row
				.col-md-8.col-md-offset-2
					.card.project-invite-invalid
						.page-header.text-centered
							h1  #{translate("invite_not_valid")}
						.row.text-center
							.col-md-12
								p
									| #{translate("invite_not_valid_description")}
						.row.text-center.actions
							.col-md-12
								a.btn.btn-info(href="/project") #{translate("back_to_your_projects")}

Add a dot to end of sentence.

extends ../../layout

block content
	.content.content-alt
		.container
			.row
				.col-md-8.col-md-offset-2
					.card.project-invite-invalid
						.page-header.text-centered
							h1  #{translate("invite_not_valid")}
						.row.text-center
							.col-md-12
								p
									| #{translate("invite_not_valid_description")}.
						.row.text-center.actions
							.col-md-12
								a.btn.btn-info(href="/project") #{translate("back_to_your_projects")}


---
layout: default
---

article.uk-article
    h2.heading-margin-top= document.title
    p.uk-article-meta Posted by #{document.author} on #{document.date}
    div.uk-margin-top!= content

.uk-panel.uk-panel-box
    include disqus.html

Use hr instead of panel-box for comments

---
layout: default
---

article.uk-article
    h2.heading-margin-top= document.title
    p.uk-article-meta Posted by #{document.author} on #{document.date}
    div.uk-margin-top!= content

hr

include disqus.html


div.error-main
    div.error-container
        img(src="/images/logo.png", alt="Taiga")
        h1 Not found
        p.error-text Error 404. The page you are looking for no longer exists. Perhaps you can return back to TAIGA homepage and see if you can find what you are looking for.
        a(href="#", title="") Go back to login

Change copy of 404 error page

div.error-main
    div.error-container
        img(src="/images/logo.png", alt="Taiga")
        h1 Not found
        p.error-text Error 404. The page you are looking for no longer exists. Perhaps you can return back to TAIGA homepage and see if you can find what you are looking for.
        a(href="/", title="") Take me home


extends layout

block content
  h1= activity.name + ' ' + edition.name

  .spacer
  h5= 'Start: ' + edition.start
  h5= 'End: ' + edition.end

  .spacer
  h2 People involved
  - for (var u in users)
    - if (users[u].info.google)
      a(href='/people/' + users[u].info.google.email.split('@')[0]) #{u}
      = ' - ' + users[u].role
    - else
      p #{u} - #{users[u].role}
  .spacer

  - if (user && user.isMember)
    h2 Add a new role
    form(method='post', action='/activities/' + activity.link + '/' + edition.link + '/add_role')
      input(name='edition', type='hidden', value=edition._id)
      label Name
      input(name='name', type='text', required)
      label Role
      select(name='role')
        - each role in roles
          option(value= role)= role
      input(type='submit', value='Add')

  .spacer
  h2 Events
  - each e in events
    h5= e.name
    = 'Dates: ' + e.start + ' ' + e.end
    br
    = 'Location: ' + e.location

Handle no events in activity page; add link to add new event

extends layout

block content
  h1= activity.name + ' ' + edition.name

  .spacer
  h5= 'Start: ' + edition.start
  h5= 'End: ' + edition.end

  .spacer
  h2 People involved
  - for (var u in users)
    - if (users[u].info.google)
      a(href='/people/' + users[u].info.google.email.split('@')[0]) #{u}
      = ' - ' + users[u].role
    - else
      p #{u} - #{users[u].role}
  .spacer

  - if (user && user.isMember)
    h2 Add a new role
    form(method='post', action='/activities/' + activity.link + '/' + edition.link + '/add_role')
      input(name='edition', type='hidden', value=edition._id)
      label Name
      input(name='name', type='text', required)
      label Role
      select(name='role')
        - each role in roles
          option(value= role)= role
      input(type='submit', value='Add')

  .spacer
  h2 Events
  - if (events.length != 0)
    - each e in events
      h5= e.name
      = 'Dates: ' + e.start + ' ' + e.end
      br
      = 'Location: ' + e.location
  - else
    h4 No events here!

  - if (user && user.isMember)
      a(href='/events/edit') Add an event.


section.screencasts.inspector.column-contain
  h2 Marionette Inspector - Chrome Extension

  ul
    li
      .col-2-3
        a.link(href="http://chrome.google.com/webstore/detail/marionette-inspector/fbgfjlockdhidoaempmjcddibjklhpka", target= "_blank")
          img.thumbnail.left(src="images/screenshots/inspector-screenshots.gif", alt="Marionette Inspector")

      .col-1-3.right
        p.description.
          A world-class inspector for exploring your application's views, models, events and more. You won't know how you got by without it.

        a.btn.btn-action(href="http://chrome.google.com/webstore/detail/marionette-inspector/fbgfjlockdhidoaempmjcddibjklhpka", target="_blank") Install Now
        a.btn.btn-action.secondary-color(href = "http://youtu.be/jbGm3mJXh_s", target= "_blank") Watch Video

Add micro data for Marionette Inspector

section.screencasts.inspector.column-contain(itemscope, itemtype="http://schema.org/WebApplication")
  h2(itemprop="name") Marionette Inspector - Chrome Extension

  ul
    li
      .col-2-3
        a.link(itemprop="url", href="http://chrome.google.com/webstore/detail/marionette-inspector/fbgfjlockdhidoaempmjcddibjklhpka", target= "_blank")
          img.thumbnail.left(itemprop="image", src="images/screenshots/inspector-screenshots.gif", alt="Marionette Inspector")

      .col-1-3.right
        p.description(itemprop="description").
          A world-class inspector for exploring your application's views, models, events and more. You won't know how you got by without it.

        a.btn.btn-action(itemprop="downloadUrl", href="http://chrome.google.com/webstore/detail/marionette-inspector/fbgfjlockdhidoaempmjcddibjklhpka", target="_blank") Install Now
        a.btn.btn-action.secondary-color(href = "http://youtu.be/jbGm3mJXh_s", target= "_blank") Watch Video


extends layout

block content
    div.jumbotron
        h1 What is this thing?
        p.lead It’s a site you join via pull request. Other than that, it’s up to you.
        a(class='button btn btn-info btn-large', href='https://github.com/larvalabs/pullup')
            span.fa.fa-download Pull from Github

    h3 FAQ
    dl.faq
        dt What does the site do?
        dd Not much yet! So far it’s just a terrible and featureless clone of Hacker News, but it would be great if it ended up growing into something else.
        dt How exactly do I join?
        dd Add a feature, fix a bug, improve the design, whatever you like. See more details over here.
        dt What feature should I add?
        dd Right now we could use things like commenting, voting, bookmarklet and so on. If you’re ambitious maybe private messaging? Almost anything, as even this page sucks, for example.
        dt What technology is the site using?
        dd
            a(href="http://nodejs.org/") NodeJS
            | ,#{' '}
            a(href="http://expressjs.com/") Express
            | , and#{' '}
            a(href="http://www.mongodb.org/") Mongo
            | . We figured pretty much everybody knows JavaScript, so it’d be a good universal language for the site.
        dt Why did you make this?
        dd We wondered what a site would be like where every user had contributed some code. It should mean no spam, no content marketing, and hopefully a stronger feeling of community.

Fix text style and capitalization for consistency

extends layout

block content
    div.jumbotron
        h1 What is this thing?
        p.lead It’s a site you join via pull request. Other than that, it’s up to you.
        a(class='button btn btn-info btn-large', href='https://github.com/larvalabs/pullup')
            span.fa.fa-download
            | Pull from GitHub

    h3 FAQ
    dl.faq
        dt What does the site do?
        dd Not much yet! So far it’s just a terrible and featureless clone of Hacker News, but it would be great if it ended up growing into something else.
        dt How exactly do I join?
        dd Add a feature, fix a bug, improve the design, whatever you like. See more details over here.
        dt What feature should I add?
        dd Right now we could use things like commenting, voting, bookmarklet and so on. If you’re ambitious maybe private messaging? Almost anything, as even this page sucks, for example.
        dt What technology is the site using?
        dd
            a(href="http://nodejs.org/") NodeJS
            | ,#{' '}
            a(href="http://expressjs.com/") Express
            | , and#{' '}
            a(href="http://www.mongodb.org/") Mongo
            | . We figured pretty much everybody knows JavaScript, so it’d be a good universal language for the site.
        dt Why did you make this?
        dd We wondered what a site would be like where every user had contributed some code. It should mean no spam, no content marketing, and hopefully a stronger feeling of community.


!!! 5
html(lang='es')
  include ../includes/head
  body
    section.content
      section.container
        block content
    include ../includes/foot

Change doctype definition because it does not work in some computers

doctype 5
html(lang='es')
  include ../includes/head
  body
    section.content
      section.container
        block content
    include ../includes/foot


section(data-background="#2980b9")
  h3.white Slides disponíveis em
  p.fragment ☞  mabrasil.github.io/slides-cocoaheads-2015

Update link to online slides

section(data-background="#2980b9")
  h3.white Slides disponíveis em
  p.fragment ☞  mabrasil.github.io/talks/2015/cocoaheads


footer
  .container
    .row.partners-title
      .col-sm-12
        h3 Partners
    .row.partners-logos
      each sponsor in brigade.sponsors
        if (!(sponsor.main) && (sponsor.link !== "undefined"))
          .col-md-4
            a(href=sponsor.link target="_blank")
              img(src=sponsor.image, alt=sponsor.name)
        else
          .col-md-4
            a()
              img(src=sponsor.image, alt=sponsor.name)
  .row.footer-nav
    .col-sm-12
      ul
        li#menu-item-385.menu-item.menu-item-type-post_type.menu-item-object-page.menu-item-385
          a(href='http://codeforpoland.org/')=brigade.name
        if brigade.theme.page.events
          li
            a(href='/events') Events
        if brigade.theme.page.projects
          li
            a(href='/projects') Projects
        if brigade.theme.page.blog
          li
            a(href='/blog') Blog
        each external in brigade.theme.page.external
          li
            a(href=external.link, target=external.target)=external.name
        if brigade.theme.page.about
          li
            a(href='/contact') Contact

        li.float.right
          a(href='https://github.com/sfbrigade/brigadehub') powered by brigadehub

Add link to Google feedback form

footer
  .container
    .row.partners-title
      .col-sm-12
        h3 Partners
    .row.partners-logos
      each sponsor in brigade.sponsors
        if (!(sponsor.main) && (sponsor.link !== "undefined"))
          .col-md-4
            a(href=sponsor.link target="_blank")
              img(src=sponsor.image, alt=sponsor.name)
        else
          .col-md-4
            a()
              img(src=sponsor.image, alt=sponsor.name)
  .row.footer-nav
    .col-sm-12
      ul
        li#menu-item-385.menu-item.menu-item-type-post_type.menu-item-object-page.menu-item-385
          a(href='http://codeforpoland.org/')=brigade.name
        if brigade.theme.page.events
          li
            a(href='/events') Events
        if brigade.theme.page.projects
          li
            a(href='/projects') Projects
        if brigade.theme.page.blog
          li
            a(href='/blog') Blog
        each external in brigade.theme.page.external
          li
            a(href=external.link, target=external.target)=external.name
        if brigade.theme.page.about
          li
            a(href='/contact') Contact

        li.text-center
          a(href='https://goo.gl/forms/2SMf3qX8ihfqvEC13' target='_blank') brigadehub feedback
        li.float.right
          a(href='https://github.com/sfbrigade/brigadehub') powered by brigadehub


- var iconExcludes = [ 'battery_20', 'battery_30', 'battery_40', 'battery_50', 'battery_60', 'battery_70', 'battery_80', 'battery_90','battery_charging_20', 'battery_charging_30', 'battery_charging_40', 'battery_charging_50', 'battery_charging_60', 'battery_charging_70', 'battery_charging_80', 'battery_charging_90', 'signal_cellular_0_bar', 'signal_cellular_1_bar', 'signal_cellular_2_bar', 'signal_cellular_3_bar', 'signal_cellular_connected_no_internet_0_bar', 'signal_cellular_connected_no_internet_1_bar', 'signal_cellular_connected_no_internet_2_bar', 'signal_cellular_connected_no_internet_3_bar', 'signal_wifi_0_bar', 'signal_wifi_1_bar', 'signal_wifi_2_bar', 'signal_wifi_3_bar', 'signal_wifi_0_bar_lock', 'signal_wifi_1_bar_lock', 'signal_wifi_2_bar_lock', 'signal_wifi_3_bar_lock' ];

Add additional icon to exclude list

- var iconExcludes = [ 'battery_20', 'battery_30', 'battery_40', 'battery_50', 'battery_60', 'battery_70', 'battery_80', 'battery_90','battery_charging_20', 'battery_charging_30', 'battery_charging_40', 'battery_charging_50', 'battery_charging_60', 'battery_charging_70', 'battery_charging_80', 'battery_charging_90', 'signal_cellular_0_bar', 'signal_cellular_1_bar', 'signal_cellular_2_bar', 'signal_cellular_3_bar', 'signal_cellular_connected_no_internet_0_bar', 'signal_cellular_connected_no_internet_1_bar', 'signal_cellular_connected_no_internet_2_bar', 'signal_cellular_connected_no_internet_3_bar', 'signal_wifi_0_bar', 'signal_wifi_1_bar', 'signal_wifi_2_bar', 'signal_wifi_3_bar', 'signal_wifi_0_bar_lock', 'signal_wifi_1_bar_lock', 'signal_wifi_2_bar_lock', 'signal_wifi_3_bar_lock', 'play_circle_filled_white' ];


mixin FeedPosts()
  -var posts = getPages({type:"post"})
  -posts.sort(function(prev, next){return prev.date > next.date ? -1 : 1})
  -posts = posts.slice(0, 20)
  each post in posts
    item
      title #{post.title}
      description
        | <![CDATA[[
        | !{getFeedDescription(post.slug)}
        | ]]>
      pubDate #{(new Date(post.date)).toUTCString()}
      <link>#{lang.baseURL}/#{uri(post.slug + '.html')}</link>
      guid(isPermaLink="true") #{lang.baseURL}/#{uri(post.slug + '.html')}

Remove extra bracket in the RSS feed template

mixin FeedPosts()
  -var posts = getPages({type:"post"})
  -posts.sort(function(prev, next){return prev.date > next.date ? -1 : 1})
  -posts = posts.slice(0, 20)
  each post in posts
    item
      title #{post.title}
      description
        | <![CDATA[
        | !{getFeedDescription(post.slug)}
        | ]]>
      pubDate #{(new Date(post.date)).toUTCString()}
      <link>#{lang.baseURL}/#{uri(post.slug + '.html')}</link>
      guid(isPermaLink="true") #{lang.baseURL}/#{uri(post.slug + '.html')}