extends layout

block content
  .container
    include ./includes/searchbar.jade
  #query_info
    #result_head
      h3 Results
    #query_head
      p
       | Your query:
       em= query

  if results.length == 0
    .container
      p No results. Please try again!
  else
    each result in results
      .container
        .result
          .excerpt
            ul.default
              each highlighted in result.highlight.content
                li!= highlighted.replace(/(\r\n|\n|\r)/gm,"")
          .source
            strong= result.fields.title
            br
            a(href=result.fields.original_source_url) Source
  #pagination_container
    .pagination
      ul
        if currentPage > 1
          li.page-prev
            a(href='/search?q=' + query + '&page=' + (currentPage - 1)) Prev
        li
          ul
            - var i = 1
            while i <= pages + 1
              li
                if i == currentPage
                  a.current-page(href='/search?q=' + query + '&page=' + i)= i++
                else
                  a(href='/search?q=' + query + '&page=' + i)= i++
        if currentPage < pages
          li.page-next
            a(href='/search?q=' + query + '&page=' + (currentPage + 1)) Next

Add empty 'View Full Text' link.

extends layout

block content
  .container
    include ./includes/searchbar.jade
  #query_info
    #result_head
      h3 Results
    #query_head
      p
       | Your query:
       em= query

  if results.length == 0
    .container
      p No results. Please try again!
  else
    each result in results
      .container
        .result
          .excerpt
            ul.default
              each highlighted in result.highlight.content
                li!= highlighted.replace(/(\r\n|\n|\r)/gm,"")
          .source
            strong= result.fields.title
            br
            a(href='#') View Full Text
            br
            a(href=result.fields.original_source_url) Source
  #pagination_container
    .pagination
      ul
        if currentPage > 1
          li.page-prev
            a(href='/search?q=' + query + '&page=' + (currentPage - 1)) Prev
        li
          ul
            - var i = 1
            while i <= pages + 1
              li
                if i == currentPage
                  a.current-page(href='/search?q=' + query + '&page=' + i)= i++
                else
                  a(href='/search?q=' + query + '&page=' + i)= i++
        if currentPage < pages
          li.page-next
            a(href='/search?q=' + query + '&page=' + (currentPage + 1)) Next


doctype html
html
  head
    link(rel='stylesheet', href='style.css', type='text/css')
  body
    #wrapper
      h1 Spline playground
      canvas#playground(width='1160', height='500')
      pre#dbg
    script(src='bundle.js')

Add charset for dumb browsers

doctype html
html
  head
    link(rel='stylesheet', href='style.css', type='text/css')
    meta(charset='utf-8')
  body
    #wrapper
      h1 Spline playground
      canvas#playground(width='1160', height='500')
      pre#dbg
    script(src='bundle.js')


- var home = match.home, away = match.away;
- var plays = match.plays.concat(); plays.reverse();

div(data-role='page')
	div(data-role='header', data-position='fixed', data-theme='b')
		a(href='/', data-icon='home', data-iconpos='notext', data-direction='reverse') Home
		h1
			span= home.name
			span
				span= home.score
				|  x
				span= away.score
			span= away.name

	div(data-role='content')
		.content-secondary
			div(data-role='collapsible', data-collapsed='true')
				h3 Information

				!= partial('rooster', { collection: match.teams, as: 'team' })

		.content-primary
			ul(data-role='listview', data-inset='true')
				li(data-role='list-divider') Narration
				!= partial('partials/narration', { collection: plays, as: 'play', teams: teams })

	div(data-role='footer', data-position='fixed')
		// != partial('partials/timeline', { collection: plays, as: 'play', time: match.time, home: home.acronym, away: away.acronym })

Fix match header score spacing;

- var home = match.home, away = match.away;
- var plays = match.plays.concat(); plays.reverse();

div(data-role='page')
	div(data-role='header', data-position='fixed', data-theme='b')
		a(href='/', data-icon='home', data-iconpos='notext', data-direction='reverse') Home
		h1
			span= home.name
			span(style='margin:0 5px;')
				span= home.score
				|  x
				span= away.score
			span= away.name

	div(data-role='content')
		.content-secondary
			div(data-role='collapsible', data-collapsed='true')
				h3 Information

				!= partial('rooster', { collection: match.teams, as: 'team' })

		.content-primary
			ul(data-role='listview', data-inset='true')
				li(data-role='list-divider') Narration
				!= partial('partials/narration', { collection: plays, as: 'play', teams: teams })

	div(data-role='footer', data-position='fixed')
		// != partial('partials/timeline', { collection: plays, as: 'play', time: match.time, home: home.acronym, away: away.acronym })


nav.navbar.navbar-default
    .container-fluid
        .navbar-header
            button.navbar-toggle.collapsed(type='button', data-toggle='collapse', data-target='#bs-example-navbar-collapse-1')
                span.sr-only Toggle navigation
            span.icon-bar
            span.icon-bar
            span.icon-bar
            a.navbar-brand(href='/') techtalks.io
        #bs-example-navbar-collapse-1.collapse.navbar-collapse
            ul.nav.navbar-nav
                li.active
                    a(href='/') Home
                    span.sr-only (current)
                li
                    a(href='/') Collections
            ul.nav.navbar-nav.navbar-right
                li.dropdown
                    a.dropdown-toggle(href='#', data-toggle='dropdown', role='button', aria-expanded='false') ...
                        span.caret
                    ul.dropdown-menu(role='menu')
                        li
                            a(href='/about') About
                        li
                            a(href='/faq') FAQ
                if user
                    li
                        a(href='#', data-toggle='dropdown', role='button', aria-expanded='false')
                            span @
                            span= user.screen_name
                            span.caret
                        ul.dropdown-menu(role='menu')
                            li
                                a(href='/profile') Profile
                            li
                                a(href='/settings') Settings
                            li
                                a(href='/logout') Logout
                else
                    li
                        a(href='/login') Login
                li
                    a(href='/add')
                        i.fa.fa-bolt

Hide add if user is not authenticated

nav.navbar.navbar-default
    .container-fluid
        .navbar-header
            button.navbar-toggle.collapsed(type='button', data-toggle='collapse', data-target='#bs-example-navbar-collapse-1')
                span.sr-only Toggle navigation
            span.icon-bar
            span.icon-bar
            span.icon-bar
            a.navbar-brand(href='/') techtalks.io
        #bs-example-navbar-collapse-1.collapse.navbar-collapse
            ul.nav.navbar-nav
                li.active
                    a(href='/') Home
                    span.sr-only (current)
                li
                    a(href='/') Collections
            ul.nav.navbar-nav.navbar-right
                li.dropdown
                    a.dropdown-toggle(href='#', data-toggle='dropdown', role='button', aria-expanded='false') ...
                        span.caret
                    ul.dropdown-menu(role='menu')
                        li
                            a(href='/about') About
                        li
                            a(href='/faq') FAQ
                if user
                    li
                        a(href='#', data-toggle='dropdown', role='button', aria-expanded='false')
                            span @
                            span= user.screen_name
                            span.caret
                        ul.dropdown-menu(role='menu')
                            li
                                a(href='/profile') Profile
                            li
                                a(href='/settings') Settings
                            li
                                a(href='/logout') Logout
                else
                    li
                        a(href='/login') Login
                if user
                    li
                        a(href='/add')
                            i.fa.fa-bolt


iframe.video-player(data-bind="attr: {src: youtubeUrl}" frameborder="0" allowfullscreen)

Add basic html for like and dislike buttons

iframe.video-player(data-bind="attr: {src: youtubeUrl}" frameborder="0" allowfullscreen)

.button-area
  button.dislike
    img(src='img/dislike.svg')
  button.like
    img(src='img/like.svg')


span.title
  | shell
  span.bold share
.online
  span#online-counter 0
  |  user(s) online

Fix bug where the online count was appearing in a new line, after the title

.online
  span#online-counter 0
  |  user(s) online
span.title
  | shell
  span.bold share


extends layout

block content
  ul.list-group#message-list

  .input-group
    input#message-field.form-control(type='text', autofocus)
    span.input-group-btn
      button#message-send-button.btn.btn-primary(type='button') Send

  script#message-template(type="text/template").

      <%= name || 'Guest' %>:
      <%= message %>

Use Bootstrap media objects for messages

extends layout

block content
  ul.list-group#message-list

  .input-group
    input#message-field.form-control(type='text', autofocus)
    span.input-group-btn
      button#message-send-button.btn.btn-primary(type='button') Send

  script#message-template(type="text/template").

<%= name || 'Guest' %>

          <%= message %>


- var databaseInfo = assetstore.get('database') || {}
- var dbtypeNames = {mongo: 'MongoDB', sqlalchemy_postgres: 'PostgreSQL', sqlalchemy: 'Generic SQL'}

div
  b Type:
  span.g-assetstore-type  Database
div
  b Database Type:
  span  #{dbtypeNames[databaseInfo.dbtype]}
div
  b Database URI:
  span  #{databaseInfo.uri}

Redact the username and password from the assetstore page.

- var databaseInfo = assetstore.get('database') || {}
- var dbtypeNames = {mongo: 'MongoDB', sqlalchemy_postgres: 'PostgreSQL', sqlalchemy: 'Generic SQL'}

div
  b Type:
  span.g-assetstore-type  Database
div
  b Database Type:
  span  #{dbtypeNames[databaseInfo.dbtype]}
div
  b Database URI:
  span  #{databaseInfo.uri.replace(/\/\/[^@\/]+@/, '//[user information]@')}


#isic-app-header-container
#g-app-body-container
#isic-app-footer-container

#g-app-progress-container

#g-dialog-container.modal.fade
#g-alerts-container

Allow closing modal dialogs by pressing Escape

#isic-app-header-container
#g-app-body-container
#isic-app-footer-container

#g-app-progress-container

// Set tabindex on modal element to allow closing modal by pressing Escape. See:
// - http://getbootstrap.com/javascript/#modals-examples
// - http://stackoverflow.com/questions/12630156/
#g-dialog-container.modal.fade(tabindex="-1")
#g-alerts-container


extends ./base.jade
block append style
  link(rel="stylesheet", type="text/css", href="/assets/style.css")
block body
  nav
    .navlink
      a(href="/login") Login
    .navlink
      a(href="/signup") Sign Up
  .wrapper
    #chat
      p Chat with Cat
      #chatWindow
    form#catChat(class="catForm", name="catForm", action="/calls", method="POST")
      input#message(type="text", name="message", placeholder="Type your message here")
      a#sendMessage(class="sendMessage", href="#") Send Message
  img#cat(src="/assets/img/catSmall.png")
  p#errorMessage
block scripts
  script(src="/assets/catCall.js")

Add logout link to calls page

extends ./base.jade
block append style
  link(rel="stylesheet", type="text/css", href="/assets/style.css")
block body
  nav
    .navlink
      a(href="/login") Login
    .navlink
      a(href="/signup") Sign Up
    .navlink
      a(href="/logout") Log out
  .wrapper
    #chat
      p Chat with Cat
      #chatWindow
    form#catChat(class="catForm", name="catForm", action="/calls", method="POST")
      input#message(type="text", name="message", placeholder="Type your message here")
      a#sendMessage(class="sendMessage", href="#") Send Message
  img#cat(src="/assets/img/catSmall.png")
  p#errorMessage
block scripts
  script(src="/assets/catCall.js")


extends ./layout.jade
block style
  link(rel='stylesheet', href='public/stylesheets/home.css')
block content
  #conversion
    pre#jade
      code
        :jadesrc
          doctype 5
          html(lang="en")
            head
              title= pageTitle
              script(type='text/javascript')
                if (foo) {
                   bar()
                }
            body
              h1 Jade - node template engine
              #container.col
                if youAreUsingJade
                  p You are amazing
                else
                  p Get on it!
                p.
                  Jade is a terse and simple
                  templating language with a
                  strong focus on performance
                  and powerful features.
    #arrow
    pre#html
      code
        :htmlsrc
          <!DOCTYPE html>

              <title>Jade</title>

Jade - node template engine

You are amazing

Jade is a terse and simple
                   templating language with a
                   strong focus on performance
                   and powerful features.

Add a dot after script tag

extends ./layout.jade
block style
  link(rel='stylesheet', href='public/stylesheets/home.css')
block content
  #conversion
    pre#jade
      code
        :jadesrc
          doctype 5
          html(lang="en")
            head
              title= pageTitle
              script(type='text/javascript').
                if (foo) {
                   bar()
                }
            body
              h1 Jade - node template engine
              #container.col
                if youAreUsingJade
                  p You are amazing
                else
                  p Get on it!
                p.
                  Jade is a terse and simple
                  templating language with a
                  strong focus on performance
                  and powerful features.
    #arrow
    pre#html
      code
        :htmlsrc
          <!DOCTYPE html>

              <title>Jade</title>

Jade - node template engine

You are amazing

Jade is a terse and simple
                   templating language with a
                   strong focus on performance
                   and powerful features.


extends /templates/base

block content
  div
    ol.breadcrumb
      li
        a(href="/editor", data-i18n="editor.main_title") CodeCombat Editors
      li
        a(href="/editor/article", data-i18n="editor.article_title") Article Editor
      li.active
        | #{view.article.attributes.name}

  - var authorized = !me.get('anonymous');
  button.article-tool-button(data-i18n="general.version_history").btn.btn-primary#history-button Version History
  button.article-tool-button(data-toggle="coco-modal", data-target="modal/RevertModal", data-i18n="editor.revert", disabled=authorized === true ? undefined : "true").btn.btn-primary#revert-button Revert
  button.article-tool-button(data-i18n="article.edit_btn_preview", disabled=authorized === true ? undefined : "true").btn.btn-primary#preview-button Preview
  button.article-tool-button(data-i18n="common.save", disabled=authorized === true ? undefined : "true").btn.btn-primary#save-button Save

  h3(data-i18n="article.edit_article_title") Edit Article
    span
     |: "#{view.article.attributes.name}"

  #article-treema

  #article-view

  h3(data-i18n="resources.patches") Patches
  .patches-view

  hr

  div#error-view

Remove dead line from ArticleEditView template

extends /templates/base

block content
  div
    ol.breadcrumb
      li
        a(href="/editor", data-i18n="editor.main_title") CodeCombat Editors
      li
        a(href="/editor/article", data-i18n="editor.article_title") Article Editor
      li.active
        | #{view.article.attributes.name}

  - var authorized = !me.get('anonymous');
  button.article-tool-button(data-i18n="general.version_history").btn.btn-primary#history-button Version History
  button.article-tool-button(data-toggle="coco-modal", data-target="modal/RevertModal", data-i18n="editor.revert", disabled=authorized === true ? undefined : "true").btn.btn-primary#revert-button Revert
  button.article-tool-button(data-i18n="article.edit_btn_preview", disabled=authorized === true ? undefined : "true").btn.btn-primary#preview-button Preview
  button.article-tool-button(data-i18n="common.save", disabled=authorized === true ? undefined : "true").btn.btn-primary#save-button Save

  h3(data-i18n="article.edit_article_title") Edit Article
    span
     |: "#{view.article.attributes.name}"

  #article-treema

  h3(data-i18n="resources.patches") Patches
  .patches-view

  hr

  div#error-view


#header-container
  a(href='#', id='toggleButton')
    span.bar-icon
    span.bar-icon
    span.bar-icon

  h1#logo
    a(href='/')
      img(src=config['logo']).logo
      span.logo-link= t('common.app-name')

  .user-nav.btn-group
    .user
    a(href='/signin').login.pull-right.anonymous-citizen
      i.icon-signin
      span= t('header.signin')
    a(href='/signup').login.pull-right.anonymous-citizen
      i.icon-user
      span= t('header.signup')
    a.login.pull-left(href=config['organization url'], target='_blank')
      span= config['organization name']
    //- a.login.pull-left(href='#', id='feedback')
    //-   span= t('header.feedback')

Fix organization link to open on same tab

#header-container
  a(href='#', id='toggleButton')
    span.bar-icon
    span.bar-icon
    span.bar-icon

  h1#logo
    a(href='/')
      img(src=config['logo']).logo
      span.logo-link= t('common.app-name')

  .user-nav.btn-group
    .user
    a(href='/signin').login.pull-right.anonymous-citizen
      i.icon-signin
      span= t('header.signin')
    a(href='/signup').login.pull-right.anonymous-citizen
      i.icon-user
      span= t('header.signup')
    a.login.pull-left(href=config['organization url'])
      span= config['organization name']
    //- a.login.pull-left(href='#', id='feedback')
    //-   span= t('header.feedback')


extends layout

block content
    h1= title
    form(action='/sellers',method='post')
        label(for='url') Add seller URL
        input(id='url',type='text',value='',placeholder='http://192.168.1.1:3000',name='url')
        input(type='submit',value='Register')
    h2 Registered sellers
    table
      thead
        tr
            th Seller
            th Cash
      tbody
      for seller in sellers
        tr
          td= seller.name
          td= seller.cash

Refresh the seller view every 5 sec

extends layout
block content
    meta(http-equiv="refresh" content="5")
    h1= title
    form(action='/sellers',method='post')
        label(for='url') Add seller URL
        input(id='url',type='text',value='',placeholder='http://192.168.1.1:3000',name='url')
        input(type='submit',value='Register')
    h2 Registered sellers
    table
      thead
        tr
            th Seller
            th Cash
      tbody
      for seller in sellers
        tr
          td= seller.name
          td= seller.cash


.container
  h1 Timeline of the Grand Rapids Budget Process

  #timeline-embed
  script(type='text/javascript').
    var timeline_config = {
    width:              '100%',
    height:             '600',
    source:             'https://docs.google.com/spreadsheets/d/1xkIincjOWQcctlGgbmXOKnI-bZZZyZugOy3KFBgA4IE&output=html',
    embed_id:           'timeline-embed',               //OPTIONAL USE A DIFFERENT DIV ID FOR EMBED
    start_at_end:       false,                          //OPTIONAL START AT LATEST DATE
    start_at_slide:     '0',                            //OPTIONAL START AT SPECIFIC SLIDE
    start_zoom_adjust:  '1',                            //OPTIONAL TWEAK THE DEFAULT ZOOM LEVEL
    hash_bookmark:      true,                           //OPTIONAL LOCATION BAR HASHES
    font:               'Bevan-PotanoSans',             //OPTIONAL FONT
    }
  script(type='text/javascript', src='http://cdn.knightlab.com/libs/timeline/latest/js/storyjs-embed.js')

Revert "change ending of url to match Oakland"

.container
  h1 Timeline of the Grand Rapids Budget Process

  #timeline-embed
  script(type='text/javascript').
    var timeline_config = {
    width:              '100%',
    height:             '600',
    source:             'https://docs.google.com/spreadsheets/d/1xkIincjOWQcctlGgbmXOKnI-bZZZyZugOy3KFBgA4IE/pubhtml',
    embed_id:           'timeline-embed',               //OPTIONAL USE A DIFFERENT DIV ID FOR EMBED
    start_at_end:       false,                          //OPTIONAL START AT LATEST DATE
    start_at_slide:     '0',                            //OPTIONAL START AT SPECIFIC SLIDE
    start_zoom_adjust:  '1',                            //OPTIONAL TWEAK THE DEFAULT ZOOM LEVEL
    hash_bookmark:      true,                           //OPTIONAL LOCATION BAR HASHES
    font:               'Bevan-PotanoSans',             //OPTIONAL FONT
    }
  script(type='text/javascript', src='http://cdn.knightlab.com/libs/timeline/latest/js/storyjs-embed.js')


!!! 5
html(lang='#{lang}', xmlns='http://www.w3.org/1999/xhtml')
    include ../includes/header
    body#body
        header#header
        section#content.container
            block main
        footer#footer
    block footer
        // Base libraries like jQuery/Yepnope
    block loaderscript
        // Script that does all the loading

Update JADE template to new doctype tag

doctype html
html(lang='#{lang}', xmlns='http://www.w3.org/1999/xhtml')
    include ../includes/header
    body#body
        header#header
        section#content.container
            block main
        footer#footer
    block footer
        // Base libraries like jQuery/Yepnope
    block loaderscript
        // Script that does all the loading


title= title
meta(charset='utf-8')
| !{cachify_css('/components/bootstrap/dist/css/bootstrap.css')}
| !{cachify_css('/css/style.css')}

Change title and adapt display to viewport size

title=gebo-server
meta(charset='utf-8')
meta(name='viewport', content="width=device-width")
| !{cachify_css('/components/bootstrap/dist/css/bootstrap.css')}
| !{cachify_css('/css/style.css')}


meta(charset='utf-8')
meta(http-equiv='X-UA-Compatible', content='IE=edge,chrome=1')
meta(name='viewport', content='width=device-width')
link(rel='stylesheet', href='/css/bootstrap.min.css')
link(rel='stylesheet', href='/css/bootstrap-responsive.min.css')
link(rel='stylesheet', href='/css/font-awesome.min.css')
// IE7 support isn't really needed, but this addition is so easy I might as well
<!--[if lte IE 7]> <link rel="stylesheet" href="/css/font-awesome-ie7.min.css"> <![endif]-->
link(rel='stylesheet', href='/css/main.css')
<!--[if gte IE 8]> <link rel="stylesheet" href="/css/ie9.css"> <![endif]-->

Change the X-UA-Compatible meta value to 'IE=edge'

meta(charset='utf-8')
meta(http-equiv='X-UA-Compatible', content='IE=edge')
meta(name='viewport', content='width=device-width')
link(rel='stylesheet', href='/css/bootstrap.min.css')
link(rel='stylesheet', href='/css/bootstrap-responsive.min.css')
link(rel='stylesheet', href='/css/font-awesome.min.css')
// IE7 support isn't really needed, but this addition is so easy I might as well
<!--[if lte IE 7]> <link rel="stylesheet" href="/css/font-awesome-ie7.min.css"> <![endif]-->
link(rel='stylesheet', href='/css/main.css')
<!--[if gte IE 8]> <link rel="stylesheet" href="/css/ie9.css"> <![endif]-->


include ../../templates/mixins

+settings-section('information', 'Information')
  include ../../components/information/index

+settings-section('password', 'Password')
  include ../../components/password/index

if user.get('roles').includes('team')
  +settings-section('two-factor-authentication', '')
    #stitch-two-factor-authentication
      != stitch.components.TwoFactorAuthentication({ mountId: 'stitch-two-factor-authentication' })

+settings-section('linked-accounts', 'Linked Accounts')
  include ../../components/linked_accounts/index

+settings-section('email-preferences', 'Email Preferences')
  include ../../components/email_preferences/index

.settings-section
  .settings-section__main
    a.settings-disable-link.garamond-button-text( href='/user/delete' )
      | Delete Account

Add lab feature to reveal 2FA enrollment UI

include ../../templates/mixins

+settings-section('information', 'Information')
  include ../../components/information/index

+settings-section('password', 'Password')
  include ../../components/password/index

if user.get('roles').includes('team') || user.get('lab_features').includes('2FA')
  +settings-section('two-factor-authentication', '')
    #stitch-two-factor-authentication
      != stitch.components.TwoFactorAuthentication({ mountId: 'stitch-two-factor-authentication' })

+settings-section('linked-accounts', 'Linked Accounts')
  include ../../components/linked_accounts/index

+settings-section('email-preferences', 'Email Preferences')
  include ../../components/email_preferences/index

.settings-section
  .settings-section__main
    a.settings-disable-link.garamond-button-text( href='/user/delete' )
      | Delete Account


---
layout: default
title: Blog
---
h1 {{ page.title }}
{% for post in site.posts %}
h2
  a(href="{{ post.url }}") {{ post.title }}
  span.small « {{ post.date | date_to_string }}
.well {{ post.excerpt }}
{% endfor %}

Add class 'active' to the active page

---
layout: default
title: Blog
---
script
  $(function () { $("#blog-nav-button").addClass("active"); });
h1 {{ page.title }}
{% for post in site.posts %}
h2
  a(href="{{ post.url }}") {{ post.title }}
  span.small « {{ post.date | date_to_string }}
.well {{ post.excerpt }}
{% endfor %}


.modal-dialog
    .modal-content
        .modal-header
            button.close(type="button", data-dismiss="modal")
                span(aria-hidden="true")
                    | ×
                span.sr-only
                    | Close
            h4.modal-title
                | #{prompt}
        .modal-body
            .form-inline
              select(id="prompt-choice")
                each choice in choices
                  option= choice
        .modal-footer
            a.th-confirm-button.btn.btn-small() Done

Fix select to use bootstrap style

.modal-dialog
    .modal-content
        .modal-header
            button.close(type="button", data-dismiss="modal")
                span(aria-hidden="true")
                    | ×
                span.sr-only
                    | Close
            h4.modal-title
                | #{prompt}
        .modal-body
            .form-inline
              select.form-control(id="prompt-choice")
                each choice in choices
                  option= choice
        .modal-footer
            a.th-confirm-button.btn.btn-small() Done


div(class="match clearfix col-xs-5")
  img(class="match-img" ng-src="/public/logos/{{logo.org._id}}/{{logo._id}}.png")
div(class="col-xs-7 center-block")
  b {{logo.name}}
  span(class="label label-default") {{logo.active | isActive}}
  br
  | {{logo.org.name}}
  span(class="label label-success") {{logo.org.active | isActive}}
  br
  em Uploaded:
  | {{logo.date}}
  br
  ul.tags(ng-repeat="tag in logo.org.tags")
    li {{tag}} {{$last ? '' : ', '}}
  br
  br
  span(class="label label-danger") {{logo.distance | matchPercent}}% match

Remove uploaded date from logo details

div(class="match clearfix col-xs-5")
  img(class="match-img" ng-src="/public/logos/{{logo.org._id}}/{{logo._id}}.png")
div(class="col-xs-7 center-block")
  b {{logo.name}}
  span(class="label label-default") {{logo.active | isActive}}
  br
  | {{logo.org.name}}
  span(class="label label-success") {{logo.org.active | isActive}}
  br
  ul.tags(ng-repeat="tag in logo.org.tags")
    li {{tag}} {{$last ? '' : ', '}}
  br
  br
  span(class="label label-danger") {{logo.distance | matchPercent}}% match


extends ../layout

block content
  .col-sm-8.col-sm-offset-2
    form(method='POST')
      legend Sign In
      .form-group
        .btn-group.btn-group-justified
          a.btn.btn-facebook(href='/auth/facebook')
            i.fa.fa-facebook
            | Facebook
          a.btn.btn-twitter(href='/auth/twitter')
            i.fa.fa-twitter
            | Twitter
          a.btn.btn-github(href='/auth/github')
            i.fa.fa-github
            | GitHub
          a.btn.btn-google-plus(href='/auth/google')
            i.fa.fa-google-plus
            | Google
      .form-group
        label.control-label(for='email') Email
        input.form-control(type='text', name='email', id='email', placeholder='Email', autofocus=true)
      .form-group
        label.control-label(for='username') Password
        input.form-control(type='password', name='password', id='password', placeholder='Password')
      .form-group
        button.btn.btn-primary(type='submit')
          i.fa.fa-unlock-alt
          | Login

Add help-block with "Forgot your password"

extends ../layout

block content
  .col-sm-8.col-sm-offset-2
    form(method='POST')
      legend Sign In
      .form-group
        .btn-group.btn-group-justified
          a.btn.btn-facebook(href='/auth/facebook')
            i.fa.fa-facebook
            | Facebook
          a.btn.btn-twitter(href='/auth/twitter')
            i.fa.fa-twitter
            | Twitter
          a.btn.btn-github(href='/auth/github')
            i.fa.fa-github
            | GitHub
          a.btn.btn-google-plus(href='/auth/google')
            i.fa.fa-google-plus
            | Google
      .form-group
        label.control-label(for='email') Email
        input.form-control(type='text', name='email', id='email', placeholder='Email', autofocus=true)
      .form-group
        label.control-label(for='username') Password
        input.form-control(type='password', name='password', id='password', placeholder='Password')
        .help-block
          a(href='/login/forgot') Forgot Your Password?
      .form-group
        button.btn.btn-primary(type='submit')
          i.fa.fa-unlock-alt
          | Login


extends layout

block content
  h1 Diff of HTMLs
  p An unofficial diffs between WHATWG HTML Standard and W3C HTML 5.1 Editor's Draft.

  h2 Table of contents of the HTML specifications
  p as of ...
  ol
    each chapter in index
      li
        | #{chapter.heading}
        if chapter.sections
          ol
            each section in chapter.sections
              li
                - var href = '/diff/' + section.htmlPath
                a(href=href)
                  - var heading = section.heading === '__pre__' ? '(preface)' : section.heading
                  | #{heading}
                  span.icons
                    if section.whatwg
                      img.whatwg(alt='WHATWG', src='/images/whatwg.svg')
                    if section.w3c
                      img.w3c(alt='W3C', src='/images/w3c.svg')

Use mixin to handle h4 sections

extends layout

mixin list(sections)
  ol
    each section in sections
      li
        - var heading = section.heading === '__pre__' ? '(preface)' : section.heading
        if section.sections.length === 0
          - var href = 'diff/' + section.path
          a(href=href)
            | #{heading}
            span.icons
              if section.whatwg
                img.whatwg(alt='WHATWG', src='/images/whatwg.svg')
              if section.w3c
                img.w3c(alt='W3C', src='/images/w3c.svg')
        else
          | #{heading}
          +list(section.sections)

block content
  h1 Diff of HTMLs
  p An unofficial diffs between WHATWG HTML Standard and W3C HTML 5.1 Editor's Draft.

  h2 Table of contents of the HTML specifications
  p as of ...
  +list(index)


h3 Companies house
table.table-detail
  tbody
    tr
      th(width='30%') Region
      td South West
    tr
      th Registered office address
      td
        | #{company.registered_office_address.address_line_1},
        | #{company.registered_office_address.address_line_2},
        | #{company.registered_office_address.locality},
        | #{company.registered_office_address.region},
        | #{company.registered_office_address.postal_code}
    tr
      th Company type
      td= company.type
    tr
      th Company status
      td= company.company_status
    tr
      th Nature of business (SIC)
      td
        each code in company.sic_codes
          = code
h3 UKTI
table.table-detail
  tbody
    tr
      th(width='30%') Website
      td
    tr
      th Business description
      td
    tr
      th Export experience
      td
        | 2012 - Argentina
        br
        | 2010 - Brazil
    tr
      th Countries of interest
      td
        | Argentina
        br
        | Greece
        br
        | Denmark

Fix error when missing sic codes

h3 Companies house
table.table-detail
  tbody
    tr
      th(width='30%') Region
      td South West
    tr
      th Registered office address
      td
        | #{company.registered_office_address.address_line_1},
        | #{company.registered_office_address.address_line_2},
        | #{company.registered_office_address.locality},
        | #{company.registered_office_address.region},
        | #{company.registered_office_address.postal_code}
    tr
      th Company type
      td= company.type
    tr
      th Company status
      td= company.company_status
    tr
      th Nature of business (SIC)
      td
        if company.sic_codes
          each code in company.sic_codes
            = code
h3 UKTI
table.table-detail
  tbody
    tr
      th(width='30%') Website
      td
    tr
      th Business description
      td
    tr
      th Export experience
      td
        | 2012 - Argentina
        br
        | 2010 - Brazil
    tr
      th Countries of interest
      td
        | Argentina
        br
        | Greece
        br
        | Denmark


h2.md-title(layout-align="center end") CHOOSE YOUR PROJECT

div(ng-show='filteredBoards.length')
    h3 Your projects
    md-grid-list(md-cols="5" md-gutter="1em" md-row-height="4:3")
        md-grid-tile.project-tile.clickable(ng-repeat="board in filteredBoards = (boards | filter:{idOrganization:'!'})" ng-click="selectBoard(board.id)") {{board.name}}

div(ng-repeat='organization in organizations')
    h3 {{organization.name}}
    md-grid-list(md-cols="5" md-gutter="1em" md-row-height="4:3")
        md-grid-tile.project-tile.clickable(ng-repeat="board in boards | filter:board.idOrganization=organization.id" ng-click="selectBoard(board.id)") {{board.name}}

Change name to displayName for organizations in project

h2.md-title(layout-align="center end") CHOOSE YOUR PROJECT

div(ng-show='filteredBoards.length')
    h3 Your projects
    md-grid-list(md-cols="5" md-gutter="1em" md-row-height="4:3")
        md-grid-tile.project-tile.clickable(ng-repeat="board in filteredBoards = (boards | filter:{idOrganization:'!'})" ng-click="selectBoard(board.id)") {{board.name}}

div(ng-repeat='organization in organizations')
    h3 {{organization.displayName}}
    md-grid-list(md-cols="5" md-gutter="1em" md-row-height="4:3")
        md-grid-tile.project-tile.clickable(ng-repeat="board in boards | filter:board.idOrganization=organization.id" ng-click="selectBoard(board.id)") {{board.name}}


doctype html
html(lang="en", manifest="app.manifest")
  head
    meta(charset="utf-8")
    meta(name="viewport", content="width=device-width, minimum-scale=1, maximum-scale=1, user-scalable=no, minimal-ui")
    title readfwd.com
  body
    p Hello, world!
    // build:js({.tmp,dist}) js/main.js
    script(src="js/main.js")
    // endbuild

Add meta fragment tag for SPA SEO.

doctype html
html(lang="en", manifest="app.manifest")
  head
    meta(charset="utf-8")
    meta(name="fragment", content="!")
    meta(name="viewport", content="width=device-width, minimum-scale=1, maximum-scale=1, user-scalable=no, minimal-ui")
    title readfwd.com
  body
    p Hello, world!
    // build:js({.tmp,dist}) js/main.js
    script(src="js/main.js")
    // endbuild


extends layout

block content
  h1 #{title}
  br

  form(action="/completetask", method="post")
    table.table.table-striped.table-bordered
      tr
        td Name
        td Category
        td Date
        td Complete
      if (typeof tasks === "undefined")
        tr
          td
      else
        each task in tasks
          tr
            td #{task.name}
            td #{task.category}
            - var date  = new Date(task.date);
            - var day   = date.getDate();
            - var month = date.getMonth() + 1;
            - var year  = date.getFullYear();
            td #{month + "/" + day + "/" + year}
            td
              input(type="checkbox", name="#{task.id}", value="#{!task.completed}", checked=task.completed)
    button.btn(type="submit") Update tasks
  hr
  form.well(action="/addtask", method="post")
    label Item Name:
    input(name="name", type="textbox")
    label Item Category:
    input(name="category", type="textbox")
    br
    button.btn(type="submit") Add item

Use Bootstrap forms and primary button style

extends layout
 block content
    h1 #{title}
    br

    form(action="/completetask", method="post")
      table.table.table-striped.table-bordered
        tr
          td Name
          td Category
          td Date
          td Complete
        if (typeof tasks === "undefined")
          tr
            td
        else
          each task in tasks
            tr
              td #{task.name}
              td #{task.category}
              - var date  = new Date(task.date);
              - var day   = date.getDate();
              - var month = date.getMonth() + 1;
              - var year  = date.getFullYear();
              td #{month + "/" + day + "/" + year}
              td
                input(type="checkbox", name="#{task.id}", value="#{!task.completed}", checked=task.completed)
      button.btn.btn-primary(type="submit") Update tasks
    hr
    form.well(action="/addtask", method="post")
      .form-group
        label(for="name") Item Name:
        input.form-control(name="name", type="textbox")
      .form-group
        label(for="category") Item Category:
        input.form-control(name="category", type="textbox")


extends ../views/layout

block content
  .pool
    .pool-id Pool ##{id}
    .question= question
    ul.choices
      for choice in choices
        li.choice= choice

Add href to Pool ID and Choices.

extends ../views/layout

block content
  .pool
    .pool-id
      a(href='/pool/#{id}') Pool ##{id}
    .question= question
    ul.choices
      for choice, i in choices
        li.choice
          a(href='/pool/#{id}/choose/#{i}')= choice


//Place references to your scripts here
script(src="js/jquery.js")
script(src="js/bootstrap.min.js")
script(src="js/validator.min.js")
script(src="js/egress-validators.js")
script(src="js/googleanalytics.js")
script.
    if(window.location.href !== "http://today-was.herokuapp.com/" && window.location.href !== "http://todaywas.herokuapp.com/") {
        var msg = "

You are on a development server.

";
        $(".container").eq(0).next().html(msg + $(".container").eq(0).next().html());
    }

    $(".btn").button();
    $("#journalContentHidden").removeClass("hidden");

Fix dev warning showing up when not on dev sever

//Place references to your scripts here
script(src="js/jquery.js")
script(src="js/bootstrap.min.js")
script(src="js/validator.min.js")
script(src="js/egress-validators.js")
script(src="js/googleanalytics.js")
script.
    if(window.location.href.indexOf("http://today-was.herokuapp.com/") !== 0  &&  window.location.href.indexOf("http://todaywas.herokuapp.com/") !== 0) {
        var msg = "

You are on a development server.

";
        $(".container").eq(0).next().html(msg + $(".container").eq(0).next().html());
    }

    $(".btn").button();
    $("#journalContentHidden").removeClass("hidden");


doctype html
html
  head
    meta(http-equiv="Content-Type", content="text/html; charset=utf-8")
    meta(name="viewport", content="width=device-width, initial-scale=1")
    title #{__('TITLE', community)}
    link(href="css/style.css", rel="stylesheet", type="text/css")
    link(href="//fonts.googleapis.com/css?family=Lato:300,400,700,900,700italic|Open+Sans:700italic,400,600,300,700,800", rel="stylesheet", type="text/css")
  body
    #wrapper
      .main
        .header
          h1
            strong #{community}
          h2 #{__('HEADER', community)}
        .content
          .information
            form(method="POST", action="/invite")#join-form.form
              input(type="text", name="email", placeholder="#{__('ENTER_EMAIL')}")#slack-email.field
              if tokenRequired
                input(type="text", name="token", placeholder="#{__('ENTER_TOKEN')}")#slack-token.field
              input(type="submit", value="Join").submit
    script.
      var tokenRequired = #{tokenRequired};
      var form = document.getElementById('join-form');
      var email = document.getElementById('slack-email');
      var token = document.getElementById('slack-token');
      form.addEventListener('submit', function(evt) {
        if (!email.value) {
          evt.preventDefault();
        }
        if (tokenRequired && !token.value) {
          evt.preventDefault();
        }
      });

Use type=email on input field

doctype html
html
  head
    meta(http-equiv="Content-Type", content="text/html; charset=utf-8")
    meta(name="viewport", content="width=device-width, initial-scale=1")
    title #{__('TITLE', community)}
    link(href="css/style.css", rel="stylesheet", type="text/css")
    link(href="//fonts.googleapis.com/css?family=Lato:300,400,700,900,700italic|Open+Sans:700italic,400,600,300,700,800", rel="stylesheet", type="text/css")
  body
    #wrapper
      .main
        .header
          h1
            strong #{community}
          h2 #{__('HEADER', community)}
        .content
          .information
            form(method="POST", action="/invite")#join-form.form
              input(type="email", name="email", placeholder="#{__('ENTER_EMAIL')}")#slack-email.field
              if tokenRequired
                input(type="text", name="token", placeholder="#{__('ENTER_TOKEN')}")#slack-token.field
              input(type="submit", value="Join").submit
    script.
      var tokenRequired = #{tokenRequired};
      var form = document.getElementById('join-form');
      var email = document.getElementById('slack-email');
      var token = document.getElementById('slack-token');
      form.addEventListener('submit', function(evt) {
        if (!email.value) {
          evt.preventDefault();
        }
        if (tokenRequired && !token.value) {
          evt.preventDefault();
        }
      });


doctype html
html(lang='en')
  head
    meta(charset='utf-8')
    meta(name='viewport', content='width=device-width,initial-scale=1')
    title Reactive Pepyatka
    link(rel='stylesheet', href='[[ assets/vendor-css/font-awesome.min.css ]]')
    unless opts.hot
        link(rel='stylesheet', href='[[ common-*.css ]]')
        link(rel='stylesheet', href='[[ app-*.css ]]')
    noscript
      style.
        .jsonly { display: none }
    link(rel='icon', href='[[ assets/images/favicon.ico ]]', type='image/x-icon')
  body
    #app
      .container
        .row.header-row
          .col-md-4
            .header
              h1.title
                a(href='/') freefeed
              .jsonly
                p Hold on there, tiger.
        .row
          .col-md-9
            .content
              .box
                noscript
                  #js-disabled-warn.alert.alert-danger(role='alert')
                    strong Javascript is disabled!
                    |  Looks like you have JavaScript disabled in your browser. Please enable it to enjoy our service.
    if opts.livereload
      script( src="/webpack-dev-server.js" )
    script(src='[[ app-*.js ]]')

Update style of the initial loading screen

doctype html
html(lang='en')
  head
    meta(charset='utf-8')
    meta(name='viewport', content='width=device-width,initial-scale=1')
    title FreeFeed
    link(rel='stylesheet', href='[[ assets/vendor-css/font-awesome.min.css ]]')
    unless opts.hot
        link(rel='stylesheet', href='[[ common-*.css ]]')
        link(rel='stylesheet', href='[[ app-*.css ]]')
    noscript
      style.
        .jsonly { display: none }
    style.
      body { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 16px }
      h1 { font-size: 36px; font-weight: 500 }
      h1 a { color: #222; text-decoration: none }
    link(rel='icon', href='[[ assets/images/favicon.ico ]]', type='image/x-icon')
  body
    #app
      .container
        .row.header-row
          .col-md-4
            .header
              h1.title
                a(href='/') FreeFeed
              .jsonly
                p Loading...
        .row
          .col-md-9
            .content
              .box
                noscript
                  #js-disabled-warn.alert.alert-danger(role='alert')
                    strong Javascript is disabled!
                    |  Looks like you have JavaScript disabled in your browser. Please enable it to enjoy our service.
    if opts.livereload
      script( src="/webpack-dev-server.js" )
    script(src='[[ app-*.js ]]')


if theme.logo
  a(href= config.root)
    img(src= theme.logo, alt= config.title, title= config.title)
h1
  a(href= config.root, alt= config.title, title= config.title)= config.title
!= markdown(config.description)
nav
  ul
    each url, label in config.menu
      li
        a(href= url, alt= label)= label

Add title tag to nav links

if theme.logo
  a(href= config.root)
    img(src= theme.logo, alt= config.title, title= config.title)
h1
  a(href= config.root, alt= config.title, title= config.title)= config.title
!= markdown(config.description)
nav
  ul
    each url, label in config.menu
      li
        a(href= url, alt= label, title= label)= label


header.LoggedOutHeader.js-logged-out-header
  a.LoggedOutHeader__logo( href='/' )
    span
      include ../../../public/images/arena-mark.svg
    strong Are.na

  unless sd.CURRENT_PATH === '/'
    include ../components/menu/index

  .LoggedOutHeader__menu
      a( href='/pricing' data-id="pricing" ) Pricing

      if sd.EXPLORE_LINK == 'explore'
        a( href='/explore' data-id="explore" ) Explore
      else
        a( href='/examples' data-id="examples" ) Examples

      a( href='/blog' data-id="blog" ) Blog

      if user
        a.js-log-out( href='/me/sign_out' data-id="log-out") Log out
      else
        a( href='/sign_up' data-id="sign-up") Sign up
        a( href='/log_in' data-id="log-in") Log in

Use "Explore" for both links

header.LoggedOutHeader.js-logged-out-header
  a.LoggedOutHeader__logo( href='/' )
    span
      include ../../../public/images/arena-mark.svg
    strong Are.na

  unless sd.CURRENT_PATH === '/'
    include ../components/menu/index

  .LoggedOutHeader__menu
      a( href='/pricing' data-id="pricing" ) Pricing

      if sd.EXPLORE_LINK == 'explore'
        a( href='/explore' data-id="explore" ) Explore
      else
        a( href='/examples' data-id="examples" ) Explore

      a( href='/blog' data-id="blog" ) Blog

      if user
        a.js-log-out( href='/me/sign_out' data-id="log-out") Log out
      else
        a( href='/sign_up' data-id="sign-up") Sign up
        a( href='/log_in' data-id="log-in") Log in


extends layout

block content
  .page-header
    h1
      a(href='/') ghlint
      |
      small A linter for GitHub projects.
  form(action='/', role='form')
    span#linter-help.help-block Choose an owner or repository to lint.
    .form-group
      .input-group
        input.form-control(name='repo', placeholder='owner or owner/repository', aria-describedby='linter-help', autofocus)
        span.input-group-btn
          input.btn.btn-primary(type='submit', value='Lint')
  if repos
    for repo in repos
      hr
      h2(class=colorClass(!repo.results.length))
        span.glyphicon.icon-column(class=iconClass(!repo.results.length))
        a(href='https://github.com/'+repo.owner)= repo.owner
        span.text-muted  /
        strong
          a(href='https://github.com/'+repo.owner+'/'+repo.name)= repo.name
      ul.checklist
        for result in repo.results
          li= result
  footer
    hr
    p
      | © 2014 Nicolas McCurdy
      br
      | not affiliated with GitHub

Remove extra horizontal rules between results

extends layout

block content
  .page-header
    h1
      a(href='/') ghlint
      |
      small A linter for GitHub projects.
  form(action='/', role='form')
    span#linter-help.help-block Choose an owner or repository to lint.
    .form-group
      .input-group
        input.form-control(name='repo', placeholder='owner or owner/repository', aria-describedby='linter-help', autofocus)
        span.input-group-btn
          input.btn.btn-primary(type='submit', value='Lint')
  if repos
    hr
    for repo in repos
      h2(class=colorClass(!repo.results.length))
        span.glyphicon.icon-column(class=iconClass(!repo.results.length))
        a(href='https://github.com/'+repo.owner)= repo.owner
        span.text-muted  /
        strong
          a(href='https://github.com/'+repo.owner+'/'+repo.name)= repo.name
      ul.checklist
        for result in repo.results
          li= result
  footer
    hr
    p
      | © 2014 Nicolas McCurdy
      br
      | not affiliated with GitHub


extends layout

mixin displayFeature(feature)
  h3= feature.name
  dl.dl-horizontal: each key in Object.keys(feature.examples)
    +displayExample(key, feature.examples[key])

mixin displayExample(technology, code)
  dt= technology
  dd
    if typeof code === 'string'
      code= code
    else
      each str in code
        div: 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

Use panels and list groups to display results

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
      if typeof code === 'string'
        code= code
      else
        each str in code
          div: 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


extends /src/layouts/post.jade

block exports
  -exports.title = "C'est quoi putain de code ?"

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

Change name of website for better consistency

extends /src/layouts/post.jade

block exports
  -exports.title = "C'est quoi Putain de code ?"

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


!!! 5
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    //link(rel='stylesheet', href='/stylesheets/chunkfive-fontface.css')
    script(type="text/javascript", src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js")
    script(type="text/javascript", src="/javascripts/client.js")
    script(type='text/javascript')
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-2392929-6']);
        _gaq.push(['_trackPageview']);

        (function() {
            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
        })();
  body
    header
    section#wrapper!= body

Add meta tags to page

!!! 5
html
  head
    title= title
    meta(name='description', content='Enter your Twitter screen name, we will try to find the Google+ profiles of everyone you follow')
    meta(name='keywords', content='Google+, Twitter, Import Twitter Google+')
    link(rel='stylesheet', href='/stylesheets/style.css')
    //link(rel='stylesheet', href='/stylesheets/chunkfive-fontface.css')
    script(type="text/javascript", src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js")
    script(type="text/javascript", src="/javascripts/client.js")
    script(type='text/javascript')
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-2392929-6']);
        _gaq.push(['_trackPageview']);

        (function() {
            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
        })();
  body
    header
    section#wrapper!= body


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

title
    block site_title
        = config.title
block description
    meta(name="description", content= config.description ? config.description : 'A Blog Powered By Hexo')

meta(name="viewport", content="width=device-width, initial-scale=1")
meta(name="theme-color", content="#FB4D42")
link(rel="short icon", href=url_for(theme.favicon))
link(rel="stylesheet", href=url_for("css/apollo.css"))
link(rel="stylesheet", href=url_for("css/zoom.css"))

Add essential tags for basic, minimalist website

meta(charset="utf-8")
meta(http-equiv="x-ua-compatible", content="ie=edge")
meta(name="viewport", content="width=device-width, initial-scale=1, shrink-to-fit=no")

title
    block site_title
        = config.title
block description
    meta(name="description", content= config.description ? config.description : 'A Blog Powered By Hexo')

meta(name="viewport", content="width=device-width, initial-scale=1")
meta(name="theme-color", content="#FB4D42")
meta(name="google-site-verification", content="rk-Nc1c8xi1CdZ0ZQIVV-ifsndGrHanIuSHI-yTHZYE")
link(rel="short icon", href=url_for(theme.favicon))
link(rel="stylesheet", href=url_for("css/apollo.css"))
link(rel="stylesheet", href=url_for("css/zoom.css"))


if urlConnections
  h5 Blocks with this URL also appear in
  for channel in urlConnections
    .block-connection-outer
      include ../../../components/list_view/templates/_connection

Add check for url connection length

if urlConnections && urlConnections.length
  h5 Blocks with this URL also appear in
  for channel in urlConnections
    .block-connection-outer
      include ../../../components/list_view/templates/_connection


nav.navbar.navbar-default.navbar-fixed-top(role="navigation")
  .container
    .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="#") Angular-xeditable #{env == 'prod' ? '' : '(dev)'}

    .collapse.navbar-collapse.navbar-ex1-collapse
      ul.nav.navbar-nav
        li.active
          a(href="#") Home
        li
          a(href="https://github.com/vitalets/angular-xeditable") Github
        if env !== 'prod'
          li
            a(href="/test/e2e/dev-test.html") dev-test
          li
            a(href="/test/e2e/docs-test.html") prod-test

      form.navbar-form.navbar-right
        a.btn.btn-primary(href="zip/angular-xeditable-"+version+'.zip', style="font-weight:bold")
          span.glyphicon.glyphicon-save(style="margin-right:10px")
          | Download #{version} ~ #{size}kb

      if env == 'prod'
        div(style="padding-top: 13px")
          include social.html

FIx GitHub title in docs

nav.navbar.navbar-default.navbar-fixed-top(role="navigation")
  .container
    .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="#") Angular-xeditable #{env == 'prod' ? '' : '(dev)'}

    .collapse.navbar-collapse.navbar-ex1-collapse
      ul.nav.navbar-nav
        li.active
          a(href="#") Home
        li
          a(href="https://github.com/vitalets/angular-xeditable") GitHub
        if env !== 'prod'
          li
            a(href="/test/e2e/dev-test.html") dev-test
          li
            a(href="/test/e2e/docs-test.html") prod-test

      form.navbar-form.navbar-right
        a.btn.btn-primary(href="zip/angular-xeditable-"+version+'.zip', style="font-weight:bold")
          span.glyphicon.glyphicon-save(style="margin-right:10px")
          | Download #{version} ~ #{size}kb

      if env == 'prod'
        div(style="padding-top: 13px")
          include social.html


extends ./_layouts/default.jade

block variables
  - var title = "Bubble Chart"
  - var description = "This page shows the current version of Gapminder's bubble chart."
  - var tool = "BubbleChart"
  - var source_code = "https://github.com/Gapminder/vizabi/tree/develop/src/tools/bubblechart"
  - var chart_buttons = "['colors', 'find', 'size', 'trails', 'lock', 'moreoptions', 'fullscreen']"
  - var chart_dialogs = "{'popup': ['colors', 'find', 'size', 'moreoptions'], 'sidebar': ['colors', 'find', 'size', 'zoom'], 'moreoptions': ['opacity', 'speed', 'axes', 'size', 'colors', 'label', 'zoom','presentation', 'about']}"

Add "zoom" to popups. Fixes the ghost shadow of the zoom dialog

extends ./_layouts/default.jade

block variables
  - var title = "Bubble Chart"
  - var description = "This page shows the current version of Gapminder's bubble chart."
  - var tool = "BubbleChart"
  - var source_code = "https://github.com/Gapminder/vizabi/tree/develop/src/tools/bubblechart"
  - var chart_buttons = "['colors', 'find', 'size', 'trails', 'lock', 'moreoptions', 'fullscreen']"
  - var chart_dialogs = "{'popup': ['colors', 'find', 'size', 'zoom', 'moreoptions'], 'sidebar': ['colors', 'find', 'size', 'zoom'], 'moreoptions': ['opacity', 'speed', 'axes', 'size', 'colors', 'label', 'zoom','presentation', 'about']}"


include ../../../components/share/template

mixin artist-header(artist)
  header.artist-header
    h1.avant-garde-header-center= artist.get('name')

    if artist.get('published_artworks_count')
      nav.artist-share
        +share(title + artist.get('name') + ' on Artsy', artist.imageUrl('large'))

    if (artist.get('nationality') && artist.get('years'))
      h2 #{artist.get('nationality')}, #{artist.get('years')}

    if artist.get('published_artworks_count') === 0
      .artist-header-empty
        | There are no #{artist.get('name')} works on Artsy yet.
        br
        | Follow the artist to get alerts when works are added.

    button#artist-follow-button.avant-garde-button-white.follow-button

    .bisected-header
      if artist.get('blurb')
        .bisected-header-cell
          .artist-blurb
            h2 Biography
            .blurb!= artist.mdToHtml('blurb')

      .bisected-header-cell: .artist-related-genes.related-genes

    if artist.get('published_artworks_count')
      .artist-works-sort: include ../templates/sort

Remove undefined title from share mixin

include ../../../components/share/template

mixin artist-header(artist)
  header.artist-header
    h1.avant-garde-header-center= artist.get('name')

    if artist.get('published_artworks_count')
      nav.artist-share
        +share(artist.get('name') + ' on Artsy', artist.imageUrl('large'))

    if (artist.get('nationality') && artist.get('years'))
      h2 #{artist.get('nationality')}, #{artist.get('years')}

    if artist.get('published_artworks_count') === 0
      .artist-header-empty
        | There are no #{artist.get('name')} works on Artsy yet.
        br
        | Follow the artist to get alerts when works are added.

    button#artist-follow-button.avant-garde-button-white.follow-button

    .bisected-header
      if artist.get('blurb')
        .bisected-header-cell
          .artist-blurb
            h2 Biography
            .blurb!= artist.mdToHtml('blurb')

      .bisected-header-cell: .artist-related-genes.related-genes

    if artist.get('published_artworks_count')
      .artist-works-sort: include ../templates/sort


extends layouts/default

block content
  h2 Maki Plugins

  .ui.divided.items
    for plugin in plugins
      a.item(href="#{plugin.uri}")
        //-if (plugin.image)
          .image
            img(src="#{plugin.image}")
        .content
          .header #{plugin.name}
            .ui.label #{plugin.version}
            .ui.label #{plugin.coverage}%

Add links to actual page.

extends layouts/default

block content
  h2 Maki Plugins

  .ui.divided.items
    for plugin in plugins
      a.item(href="https://github.com/martindale/#{plugin.name}")
        //-if (plugin.image)
          .image
            img(src="#{plugin.image}")
        .content
          .header #{plugin.name}
            .ui.label #{plugin.version}
            .ui.label #{plugin.coverage}%


h2 <%= data.title %>
div.unknownpage-content <%= data.content %>

<% if(data.isUnathorized) { %>
div.unknownpage-content-links.clearfix
  a.login-link(href='/login') Log in
  a.signup-link(href='/signup') Sign up
<% } %>

Fix links on error page

h2 <%= data.title %>
div.unknownpage-content <%= data.content %>

<% if(data.isUnathorized) { %>
div.unknownpage-content-links.clearfix
  a.login-link(href='/u/login') Log in
  a.signup-link(href='/u/signup') Sign up
<% } %>


include ../../sections/_nav
.masthead
  .wrapper
    .left
      //- we inline svg by using data:image
      //- keep clean markup in development by includes
      include ../../partials/_marionette_logo
      include ../../partials/_marionette_text
    .right
      h1(itemprop="alternativeHeadline") Download Options
      br
      p(itemprop="description") Get Marionette just the way you want it. We offically distribute via npm, bower, and static builds via our site.
    .cl

Fix typo on download page

include ../../sections/_nav
.masthead
  .wrapper
    .left
      //- we inline svg by using data:image
      //- keep clean markup in development by includes
      include ../../partials/_marionette_logo
      include ../../partials/_marionette_text
    .right
      h1(itemprop="alternativeHeadline") Download Options
      br
      p(itemprop="description") Get Marionette just the way you want it. We officially distribute via npm, bower, and static builds via our site.
    .cl


h2 Les news
h3
  md-button.md-primary(ng-if="!isAddNewsFormOpen", aria-label="Open form for adding a news")
    i.fa.fa-plus.fa-5x(ng-click="toggleAddNewsForm()")
  md-button.md-warn(ng-if="isAddNewsFormOpen", aria-label="Close form for adding a news")
    i.fa.fa-times.fa-5x(ng-click="toggleAddNewsForm()")
form(ng-if="isAddNewsFormOpen")
  md-input-container
    label Contenu
    input(type="text", ng-model="newNews.body")
  md-input-container
    md-button.md-primary.md-raised(ng-click="addNews()") Ajouter la news
md-list
  md-list-item(ng-repeat="news in allNews")
    md-list-item-text
      p {{ news.body }}
      p par {{ news.improvedUser.firstName }} {{ news.improvedUser.lastName }} le {{ news.sentAt | date:'medium' }}
      md-divider(ng-if="!$last")

Fix event on button instead of icon

h2 Les news
h3
  md-button.md-primary(aria-label="Open form for adding a news", ng-if="!isAddNewsFormOpen", ng-click="toggleAddNewsForm()")
    i.fa.fa-plus.fa-5x()
  md-button.md-warn(aria-label="Close form for adding a news", ng-if="isAddNewsFormOpen", ng-click="toggleAddNewsForm()")
    i.fa.fa-times.fa-5x
form(ng-if="isAddNewsFormOpen")
  md-input-container
    label Contenu
    input(type="text", ng-model="newNews.body")
  md-input-container
    md-button.md-primary.md-raised(ng-click="addNews()") Ajouter la news
md-list
  md-list-item(ng-repeat="news in allNews")
    md-list-item-text
      p {{ news.body }}
      p par {{ news.improvedUser.firstName }} {{ news.improvedUser.lastName }} le {{ news.sentAt | date:'medium' }}
      md-divider(ng-if="!$last")


extends layout

block body
  main
    h1 Instant.io - Streaming file transfer over WebTorrent
    p Download/upload files using the WebTorrent protocol (BitTorrent over WebRTC). This is a beta.
    h2#logHeading(style='display: none') Log
    .speed
    .log

    h2 Start seeding
    p
      | Drag-and-drop a file (or files) to begin sharing. Or choose a file:
      | #{ ' ' }
      input(type='file', name='upload', multiple, webkitdirectory)

    h2 Start downloading
    form
      label(for='infoHash') Download a file by info hash
      input(name='infoHash')
      button(type='submit') Download

    footer
      p: small WebTorrent is powered by JavaScript and WebRTC. Works in Chrome, Firefox, and Opera (desktop and Android).
      p: small Code is available on GitHub under MIT License. Run localStorage.debug = '*' in the console and refresh to enable verbose logs.

Revert "Support directory seeding from upload input"

extends layout

block body
  main
    h1 Instant.io - Streaming file transfer over WebTorrent
    p Download/upload files using the WebTorrent protocol (BitTorrent over WebRTC). This is a beta.
    h2#logHeading(style='display: none') Log
    .speed
    .log

    h2 Start seeding
    p
      | Drag-and-drop a file (or files) to begin sharing. Or choose a file:
      | #{ ' ' }
      input(type='file', name='upload', multiple)

    h2 Start downloading
    form
      label(for='infoHash') Download a file by info hash
      input(name='infoHash')
      button(type='submit') Download

    footer
      p: small WebTorrent is powered by JavaScript and WebRTC. Works in Chrome, Firefox, and Opera (desktop and Android).
      p: small Code is available on GitHub under MIT License. Run localStorage.debug = '*' in the console and refresh to enable verbose logs.


a.button-tribe(
    ng-href="{{::vm.tribeHost}}/gigs/import-from-taiga?project={{projectSlug}}&us={{usId}}",
    title="{{ 'US.TRIBE.PUBLISH' | translate }}"
    target="_blank"
)
    img.tribe-logo(
        src="/#{v}/images/tribe-logo.png"
        alt="{{ 'US.TRIBE.PUBLISH' | translate }}"
    )
    span {{ 'US.TRIBE.PUBLISH' | translate }}

Fix the send to tribe button for the new changes on Taiga Tribe

a.button-tribe(
    ng-href="{{::vm.tribeHost}}/taiga-integration/receive?project={{projectSlug}}&us={{usId}}",
    title="{{ 'US.TRIBE.PUBLISH' | translate }}"
    target="_blank"
)
    img.tribe-logo(
        src="/#{v}/images/tribe-logo.png"
        alt="{{ 'US.TRIBE.PUBLISH' | translate }}"
    )
    span {{ 'US.TRIBE.PUBLISH' | translate }}


if STATUSES.merchandisable
  h2.artist-section-header Books & Catalogs for purchase
  #artist-page-merchandisable-section.merchandisable-items
    if books.length
      for book in books
        a.merchandisable-item( href= book.get('external_url'), target='_blank' )
          .merchandisable-item-image: img(
            src= book.cropUrlFor('image_url', { width: 175, height: 225 })
            alt= book.get('title')
          )
          .merchandisable-item-metadata
            h4.merchandisable-item-title
              = book.get('title')
            if book.has('author_name')
              .merchandisable-item-author
                | by #{book.get('author_name')}
            if book.has('publish_date')
              .merchandisable-item-publish-date(
                datetime= book.get('publish_date')
              ) (#{book.date('publish_date').format('D MMMM YYYY')})
    else
      .loading-spinner

if books.length && bibliography.length
  hr

if STATUSES.bibliography
  h2.artist-section-header
  #artist-page-bibliography-section: .loading-spinner
    //- Rendered elsewhere

Handle formatting for whole years for publication date

if STATUSES.merchandisable
  h2.artist-section-header Books & Catalogs for purchase
  #artist-page-merchandisable-section.merchandisable-items
    if books.length
      for book in books
        a.merchandisable-item( href= book.get('external_url'), target='_blank' )
          .merchandisable-item-image: img(
            src= book.cropUrlFor('image_url', { width: 175, height: 225 })
            alt= book.get('title')
          )
          .merchandisable-item-metadata
            h4.merchandisable-item-title
              = book.get('title')
            if book.has('author_name')
              .merchandisable-item-author
                | by #{book.get('author_name')}
            if book.has('publish_date')
              .merchandisable-item-publish-date( datetime= book.get('publish_date') )
                - wholeYear = book.date('publish_date').dayOfYear() === 1
                | (#{book.date('publish_date').format(wholeYear ? 'YYYY' : 'D MMMM YYYY')})
    else
      .loading-spinner

if books.length && bibliography.length
  hr

if STATUSES.bibliography
  h2.artist-section-header
  #artist-page-bibliography-section: .loading-spinner
    //- Rendered elsewhere


doctype html
html
  body
    h1 Hellow World!
    p goodbye!

Add default sudoku puzzle grid

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


---
title: Site Title
description: Site description goes here.
---

extends ../templates/page

block vars
  - bodyClass = 'home'

block page-header
  header.pitch
    :markdown
      # Site Pitch
      AIDA block.

    a.primary.button(href='#') Call to Action

block content
  :markdown
    Content here.

Fix duplicate header tag on home page

---
title: "Site Title"
description: "Site description goes here."
---

extends ../templates/page

block vars
  - bodyClass = 'home'

block page-header
  :markdown
    # Site Pitch
    AIDA block.

  a.primary.button(href='#') Call to Action

block content
  :markdown
    Content here.


!!!5
html
  head
    script(language="javascript" type="text/javascript" src="js/jquery.min.js")
    <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="js/excanvas.min.js"></script><![endif]-->
    script(language="javascript" type="text/javascript" src="js/jquery.flot.min.js")
    script(language="javascript" type="text/javascript" src="js/jquery.flot.time.min.js")
    != js('plot')
    != css('style')
  body
    #graphs

Add a link to the feedback page

!!!5
html
  head
    script(language="javascript" type="text/javascript" src="js/jquery.min.js")
    <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="js/excanvas.min.js"></script><![endif]-->
    script(language="javascript" type="text/javascript" src="js/jquery.flot.min.js")
    script(language="javascript" type="text/javascript" src="js/jquery.flot.time.min.js")
    != js('plot')
    != css('style')
  body
    #graphs

    h2 Feedback
    .description Use the link below to see the feedback the users left.
    a(href="feedback") Show Feedback


extends ../layout

block content
  .wrapper: .checkout.container: .content
    header
      h1 Hi, #[br] Let's test a transaction
      p Make a test payment with Braintree using PayPal or a card

    form#payment-form(action="/checkouts", method="post")
      section
        .bt-drop-in-wrapper
          #bt-dropin

        label(for="amount")
          span.input-label Amount
          .input-wrapper.amount-wrapper
            input#amount(name="amount" type="tel" min="1" placeholder="Amount" value="10")

      button.button(type="submit")
        span Test Transaction

  script(src="https://js.braintreegateway.com/v2/braintree.js")
  script.
    (function () {
      var checkout = new Demo({
        formID: 'payment-form'
      });

      var token = "#{clientToken}";
      braintree.setup(token, "dropin", {
        container: "bt-dropin"
      });
    })()

Update braintree.js to latest version

extends ../layout

block content
  .wrapper: .checkout.container: .content
    header
      h1 Hi, #[br] Let's test a transaction
      p Make a test payment with Braintree using PayPal or a card

    form#payment-form(action="/checkouts", method="post")
      section
        .bt-drop-in-wrapper
          #bt-dropin

        label(for="amount")
          span.input-label Amount
          .input-wrapper.amount-wrapper
            input#amount(name="amount" type="tel" min="1" placeholder="Amount" value="10")

      button.button(type="submit")
        span Test Transaction

  script(src="https://js.braintreegateway.com/js/braintree-2.27.0.min.js")
  script.
    (function () {
      var checkout = new Demo({
        formID: 'payment-form'
      });

      var token = "#{clientToken}";
      braintree.setup(token, "dropin", {
        container: "bt-dropin"
      });
    })()


!!! 5
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    script(src="//ajax.googleapis.com/ajax/libs/dojo/1.9.0/dojo/dojo.js")
    script(src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js", data-dojo-config="async: true")
    block head
  body
    section#wrapper
      block content
      footer
        section.css-table
          section.four-column
            section.cell
            section.cell
            section.cell
            section.cell
              | Powered by
              a(href="http://nodejs.org") node.js
              |  |
              a(href="https://github.com/shyboynccu/icalgen") Source

Add "Fork me on GitHub" ribbon

!!! 5
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    script(src="//ajax.googleapis.com/ajax/libs/dojo/1.9.0/dojo/dojo.js")
    script(src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js", data-dojo-config="async: true")
    a(href="https://github.com/shyboynccu/icalgen")
      img(style="position: absolute; top: 0; right: 0; border: 0;", src="https://camo.githubusercontent.com/e7bbb0521b397edbd5fe43e7f760759336b5e05f/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f677265656e5f3030373230302e706e67", alt="Fork me on GitHub", data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_green_007200.png")

    block head
  body
    section#wrapper
      block content
      footer
        section.css-table
          section.four-column
            section.cell
            section.cell
            section.cell
            section.cell
              | Powered by
              a(href="http://nodejs.org") node.js
              |  |
              a(href="https://github.com/shyboynccu/icalgen") Source


div.kanban-tagline
    a.taskboard-tag
div.kanban-task-inner
    p.task-text
        span.task-num(tg-bo-ref="us.ref")
        a.task-name(href="", title="", tg-bind-html="us.subject")

    tg-kanban-user-avatar(model="us.assigned_to", click="ctrl.changeUsAssignedTo(us)")

    a.icon.icon-edit(href="", title="Edit", ng-click="ctrl.editUserStory(us)")
    a.icon.icon-drag-h(href="", title="Drag&Drop")
    a.task-points(href="", title="task points", tg-bind-html="us.total_points") --

Add link to userstory detail on kanban userstory item.

div.kanban-tagline
    a.taskboard-tag
div.kanban-task-inner
    p.task-text
        span.task-num(tg-bo-ref="us.ref")
        a.task-name(href="", title="", tg-bind-html="us.subject",
                    tg-nav="project-userstories-detail:project=project.slug,ref=us.ref")

    tg-kanban-user-avatar(model="us.assigned_to", click="ctrl.changeUsAssignedTo(us)")

    a.icon.icon-edit(href="", title="Edit", ng-click="ctrl.editUserStory(us)")
    a.icon.icon-drag-h(href="", title="Drag&Drop")
    a.task-points(href="", title="task points", tg-bind-html="us.total_points") --


extend ../layout

block title
  | People

block content
  h1 People

  p.admin-options
    a#new-person(href="#") Add a new person

  if people.length
    ul
      for person in people
        li
          //- if person.images.length
          //-   img(src="/image/#{person.images[0]}-original", height="60")
          a(href="#{ person.slug_url }") #{ person.name }

  else
    div.info
      h3
        | There are no people in the system yet, you should probably add some!

      p
        | Use the link above. It'll just ask you for their name, once you've
        | created their page you can add more details.

      p
        | If you already have data in a spreadsheet or similar you can use the
        a(href="/migration", id="migration_tool") migration tool
        |  to import it.

Use a different message for anon users when there are no people records

extend ../layout

block title
  | People

block content
  h1 People

  p.admin-options
    a#new-person(href="#") Add a new person

  if people.length
    ul
      for person in people
        li
          //- if person.images.length
          //-   img(src="/image/#{person.images[0]}-original", height="60")
          a(href="#{ person.slug_url }") #{ person.name }

  else
    if locals.user
      div.info
        h3
          | There are no people in the system yet, you should probably add some!

        p
          | Use the link above. It'll just ask you for their name, once you've
          | created their page you can add more details.

        p
          | If you already have data in a spreadsheet or similar you can use the
          a(href="/migration", id="migration_tool") migration tool
          |  to import it.
    else
      div.info
        | No people have been entered yet.


button.btn.btn-lg.btn-illustrated.cast-button(title=castVerbose)
  span(data-i18n="play_level.tome_run_button_ran") Ran

if !observing
  if mirror
    .ladder-submission-view
  else
    button.btn.btn-lg.btn-illustrated.submit-button(title=castRealTimeVerbose)
      span(data-i18n="play_level.tome_submit_button") Submit
      span.spl.secret.submit-again-time

    button.btn.btn-lg.btn-illustrated.done-button.secret
      span(data-i18n="play_level.done") Done

Fix done button in LevelPlayView in IE9

button.btn.btn-lg.btn-illustrated.cast-button(title=castVerbose)
  span(data-i18n="play_level.tome_run_button_ran") Ran

if !observing
  if mirror
    .ladder-submission-view
  else
    button.btn.btn-lg.btn-illustrated.submit-button(title=castRealTimeVerbose)
      span(data-i18n="play_level.tome_submit_button") Submit
      span.spl.secret.submit-again-time

    button.btn.btn-lg.btn-illustrated.btn-success.done-button.secret
      span(data-i18n="play_level.done") Done


p.admin-subtitle(
    ng-if="project.i_am_owner == true && project.total_memberships >= 3"
    translate="ADMIN.MEMBERSHIPS.LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER_WITH_LIMITED_PLAN"
    translate-values="{members: project.total_memberships}"
)

p.admin-subtitle(
    ng-if="project.i_am_owner == false"
    translate="ADMIN.MEMBERSHIPS.LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN"
    translate-values="{owner_email: project.owner.username}"
)

Update html and add button

div.no-more-membership
    p.admin-subtitle(
        ng-if="project.i_am_owner == true && project.total_memberships >= 3"
        translate="ADMIN.MEMBERSHIPS.LIMIT_USERS_WARNING_MESSAGE_FOR_OWNER_WITH_LIMITED_PLAN"
        translate-values="{members: project.total_memberships}"
    )

    p.admin-subtitle(
        ng-if="project.i_am_owner == false"
        translate="ADMIN.MEMBERSHIPS.LIMIT_USERS_WARNING_MESSAGE_FOR_ADMIN"
        translate-values="{owner_email: ownerEmail}"
    )

    .action-buttons
        a.button-green(
            translate="ADMIN.MEMBERSHIPS.UPGRADE_BUTTON"
            title="{{ ADMIN.MEMBERSHIPS.UPGRADE_BUTTON | translate }}",
            href="/user-settings/contrib/subscriptions"
            ng-if="project.i_am_owner == true"
        )


.row: .col-xs-12
  ul.nav.nav-tabs
    li(ng-class="{'active': 'both'}[view]"): button.btn.btn-default(type="button" ng-click="view='markdown'" ng-init="view='markdown'") Markdown
    li(ng-class="{'active': 'both'}[view]"): button.btn.btn-default(type="button" ng-click="view='preview'") Vorschau
    li(ng-class="{'active': 'both'}[view]"): button.btn.btn-default(type="button" ng-click="view='both'") nebeneinander
.row(ng-switch="view")
  .col-xs-12(ng-switch-when="markdown")
    textarea.form-control(ng-model="model[options.key]")
  .col-xs-12(ng-switch-when="preview" markdown="model[options.key]" math-jax)
  .col-xs-6(ng-switch-when="both")
    textarea.form-control(ng-model="model[options.key]")
  .col-xs-6(ng-switch-when="both" markdown="model[options.key]" math-jax)

Remove grid divs from horizontalMarkdownArea

ul.nav.nav-tabs
  li(ng-class="{'active': 'both'}[view]"): button.btn.btn-default(type="button" ng-click="view='markdown'" ng-init="view='markdown'") Markdown
  li(ng-class="{'active': 'both'}[view]"): button.btn.btn-default(type="button" ng-click="view='preview'") Vorschau
textarea.form-control(ng-if="view === 'markdown'" ng-model="model[options.key]")
div(ng-if="view === 'preview'" markdown="model[options.key]" math-jax)


li.person.list-group-item
  img(data-hook="avatar", width="40", height="40")
  a(data-hook="name")
  span.btn-group.pull-right
    a.btn.btn-default(data-hook="action-edit") edit
    a.btn.btn-danger(href="#", data-hook="action-delete") delete

Handle long lines on small screen width

li.person.list-group-item.container
  img(data-hook="avatar", width="40", height="40")
  a(data-hook="name")
  span.btn-group.pull-right
    a.btn.btn-default(data-hook="action-edit") edit
    a.btn.btn-danger(href="#", data-hook="action-delete") delete


extends layout

block content
  script(src="https://cdn.auth0.com/js/lock-8.2.js")

  div(id="root" style="width: 280px; margin: 40px auto; padding: 10px;")

  script.
    var lock = new Auth0Lock('#{env.AUTH0_CLIENT_ID}', '#{env.AUTH0_DOMAIN}');
    lock.show({
        container: 'root'
      , callbackURL: '#{env.AUTH0_CALLBACK_URL}'
      , responseType: 'code'
      , authParams: {
        scope: 'openid name email picture'
      }
    });

Update lock to version 9

extends layout

block content
  script(src="https://cdn.auth0.com/js/lock-9.0.js")

  div(id="root" style="width: 280px; margin: 40px auto; padding: 10px;")

  script.
    var lock = new Auth0Lock('#{env.AUTH0_CLIENT_ID}', '#{env.AUTH0_DOMAIN}');
    lock.show({
        container: 'root'
      , callbackURL: '#{env.AUTH0_CALLBACK_URL}'
      , responseType: 'code'
      , authParams: {
        scope: 'openid name email picture'
      }
    });


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

block content

  h1 #{item.title}

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

  h2 Edit

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

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

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

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

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

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

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

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

Replace Soundcloud "slug" with "id", since that's what we use.

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

block content

  h1 #{item.title}

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

  h2 Edit

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

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

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

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

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

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

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

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


extends base

block content
  #app-container
    #map
  img.cloud.cloud-top(src!=staticFile('images/cloud-top.png'),alt='')
  img.cloud.cloud-bottom(src!=staticFile('images/cloud-bottom.png'),alt='')
  #landing-logo.overlay
  #persistent-logo.overlay
  #navigation-region.overlay
  .top-right-controls
    #language-selector.overlay
    #personalisation.overlay
    #service-cart.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'))

Change top level element ordering for accessibility.

extends base

block content
  img.cloud.cloud-top(src!=staticFile('images/cloud-top.png'),alt='')
  img.cloud.cloud-bottom(src!=staticFile('images/cloud-bottom.png'),alt='')
  #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'))


.isic-image-details-container
  .button
    img(src='#{imgRoot}/ex.svg')

  if image.id
    .isic-image-details-name= image.name()

    button.btn.btn-large.btn-default.fullscreen Fullscreen
    button.btn.btn-large.btn-default.openwindow Open in new window

    table.table.table-condensed.isic-image-details-table
      tbody
        tr
          td.isic-image-details-table-section-header(colspan=2) Info
        tr
          td Dataset
          td= image.get('dataset')['name']
        tr
          td Created
          td= created
        tr
          td License
          td
            if license.url
              a(target="_blank", href=license.url)= license.name
            else
              = license.name

        tr
          td.isic-image-details-table-section-header(colspan=2) Clinical Metadata
        each value, key in clinicalMetadata
          tr
            td= key
            td= value

        tr
          td.isic-image-details-table-section-header(colspan=2) Acquisition Metadata
        each value, key in acquisitionMetadata
          tr
            td= key
            td !{value}

    #isic-image-details-segmentations-display-view-container

Make buttons small and move them next to image name

.isic-image-details-container
  .button
    img(src='#{imgRoot}/ex.svg')

  if image.id
    .isic-image-details-name= image.name()
      button.btn.btn-xs.btn-default.fullscreen Fullscreen
      button.btn.btn-xs.btn-default.openwindow Open in new window

    table.table.table-condensed.isic-image-details-table
      tbody
        tr
          td.isic-image-details-table-section-header(colspan=2) Info
        tr
          td Dataset
          td= image.get('dataset')['name']
        tr
          td Created
          td= created
        tr
          td License
          td
            if license.url
              a(target="_blank", href=license.url)= license.name
            else
              = license.name

        tr
          td.isic-image-details-table-section-header(colspan=2) Clinical Metadata
        each value, key in clinicalMetadata
          tr
            td= key
            td= value

        tr
          td.isic-image-details-table-section-header(colspan=2) Acquisition Metadata
        each value, key in acquisitionMetadata
          tr
            td= key
            td !{value}

    #isic-image-details-segmentations-display-view-container


div
  ul.pagination.ng-cloak
    li(ng-class="{'disabled': !page.active}", ng-repeat='page in pages', ng-switch='page.type')
      a(ng-switch-when='prev', ng-click='goToPage(page.number)', href='') «
      a(ng-switch-when='first', ng-click='goToPage(page.number)', href='') {{page.number}}
      a(ng-switch-when='page', ng-click='goToPage(page.number)', href='') {{page.number}}
      a(ng-switch-when='more', ng-click='goToPage(page.number)', href='') …
      a(ng-switch-when='last', ng-click='goToPage(page.number)', href='') {{page.number}}
      a(ng-switch-when='next', ng-click='goToPage(page.number)', href='') »
  .btn-group.pull-right(ng-show="params.counts.length")
    button.btn.btn-mini(ng-repeat="count in params.counts", type='button', ng-class="{'active':params.count == count}", ng-click='changeCount(count)') {{count}}

Fix for pagination classes on Twitter Bootstrap

div.pagintaion.ng-cloak
  ul
    li(ng-class="{'disabled': !page.active}", ng-repeat='page in pages', ng-switch='page.type')
      a(ng-switch-when='prev', ng-click='goToPage(page.number)', href='') «
      a(ng-switch-when='first', ng-click='goToPage(page.number)', href='') {{page.number}}
      a(ng-switch-when='page', ng-click='goToPage(page.number)', href='') {{page.number}}
      a(ng-switch-when='more', ng-click='goToPage(page.number)', href='') …
      a(ng-switch-when='last', ng-click='goToPage(page.number)', href='') {{page.number}}
      a(ng-switch-when='next', ng-click='goToPage(page.number)', href='') »
  .btn-group.pull-right(ng-show="params.counts.length")
    button.btn.btn-mini(ng-repeat="count in params.counts", type='button', ng-class="{'active':params.count == count}", ng-click='changeCount(count)') {{count}}


script(src='//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js')
script window.jQuery || document.write('<script src="/static/script/vendor/jquery.js"><\/script>')
script(src='/static/script/main.js')

Include vendor.js file in the template

script(src='//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js')
script window.jQuery || document.write('<script src="/static/script/vendor/jquery.js"><\/script>')
script(src='/static/script/vendor.js')
script(src='/static/script/main.js')


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

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

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

  body
    publish-app

Clear console to cut down on noise (where possible)

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

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

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

  body
    publish-app


extends dummy-layout

block head
    title Taiga  Your agile, free, and open source project management tool

block content
    div.wrapper
        div.login-main
            div.login-container
                h1.logo
                    img(src="/images/logo.png", alt="TAIGA")
                p.tagline Your agile, free, and open source project management tool

                include views/modules/change-password-from-recovery-form

Change logo on change password from recovery partial.

extends dummy-layout

block head
    title Taiga  Your agile, free, and open source project management tool

block content
    div.wrapper
        div.login-main
            div.login-container
                h1.logo
                    img.logo-svg(src="/svg/logo.svg", alt="TAIGA")
                p.tagline Your agile, free, and open source project management tool

                include views/modules/change-password-from-recovery-form


//- Items in navbar
//- Only contains thousnds of li, a

mixin nav_item(name, url)
  li
    a(href= url)= name

+nav_item('about us', '/')
+nav_item('news', 'news.html')
+nav_item('upcoming events', 'events.html')
+nav_item('photo gallery', 'gallery.html')
+nav_item('membership', 'membership.html')
+nav_item('souvenirs', 'souvenirs.html')

Use relative links in navbar instead of absolute

//- Items in navbar
//- Only contains thousnds of li, a

mixin nav_item(name, url)
  li
    a(href= url)= name

+nav_item('about us', 'index.html')
+nav_item('news', 'news.html')
+nav_item('upcoming events', 'events.html')
+nav_item('photo gallery', 'gallery.html')
+nav_item('membership', 'membership.html')
+nav_item('souvenirs', 'souvenirs.html')


.container-fluid
  .hero-unit
    h1 Trello calendar
    p You trello cards with a due date, on a web-calendar or your own calendar app.
    p
      a.btn.btn-large.btn-primary(href='/login') Login with Trello

  section.row-fluid
    .span4
      h2 Features
      ul
        li Show cards from your trello boards with a due date
        li Filter cards by boards
        li Show only cards assigned to you
        li Hide archived cards
        li Update due date by drag'n drop
    .span4
      h2 ICS feed
      p
        | The ICS feed allows you to show your cards on Google calendar or Thunderbird Lightning for example.
    .span4
      h2 Security
      if https
        p All data are transmitted over HTTPS.
      p No data are stored on our server.
      p We ask for both read and write permissions. The write permission is to be able to update due date on cards.

  footer
    p This service is not affilied with
      a(href="https://trello.com") trello
      .
    p
      | © 2012 François de Metz
      br
      | This website is a free software. Fork
      a(href="https://github.com/francois2metz/trello-calendar") trello-calendar
      |  on github.

Add ics features in the home page.

.container-fluid
  .hero-unit
    h1 Trello calendar
    p You trello cards with a due date, on a web-calendar or your own calendar app.
    p
      a.btn.btn-large.btn-primary(href='/login') Login with Trello

  section.row-fluid
    .span4
      h2 Features
      ul
        li Show cards from your trello boards with a due date
        li Filter cards by boards
        li Show only cards assigned to you
        li Hide archived cards
        li Update due date by drag'n drop
    .span4
      h2 ICS feed
      p
        | The ICS feed allows you to show your cards on Google calendar or Thunderbird Lightning for example.
      ul
        li Set optional default reminder
        li Show only cards assigned to you
    .span4
      h2 Security
      if https
        p All data are transmitted over HTTPS.
      p No data are stored on our server.
      p We ask for both read and write permissions. The write permission is to be able to update due date on cards.

  footer
    p This service is not affilied with
      a(href="https://trello.com") trello
      .
    p
      | © 2012 François de Metz
      br
      | This website is a free software. Fork
      a(href="https://github.com/francois2metz/trello-calendar") trello-calendar
      |  on github.