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

Use https for akliz link

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


doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='//cdnjs.cloudflare.com/ajax/libs/normalize/3.0.1/normalize.min.css')
  body
    block content

Set the viewport for mobile devices

doctype html
html
  head
    title= title
    meta(name='viewport', content='width=device-width, initial-scale=1.0')
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='//cdnjs.cloudflare.com/ajax/libs/normalize/3.0.1/normalize.min.css')
  body
    block content


!!!
html
  head
    meta(charset="utf-8")
    title #{title ? title + ' | ' + siteName : siteName}
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='/widgets/css/argumenta.css')
  body.argumenta
    div.wrapper
      div.header
        a.header-logo(href="/")= siteName
        - if (username)
          ul.nav-logout
            li Logged in as
                a(href="/#{username}") #{username}
                |  (
                a(href="/logout") Sign out
                | )
        - else
          ul.nav-login
            li
              a(href="/login") Sign in
              |  or
              a(href="/join") Join now!
      div.toolbar
        a.button(href="/arguments/new") New Argument
      div.notifications
        each message in messages
          div.info= "Info: " + message
        each error in errors
          div.error= "Error: " + error
      block content
    block scripts
      script(src="http://code.jquery.com/jquery-1.8.1.js")
      script(src="/javascripts/autosize/jquery.autosize.js")
      script(src="/javascripts/charcount/jquery.charcount.js")
      script(src="/javascripts/objects.js")
      script
        var jquery = $.noConflict();
        var browserify = { require: require };
        var require = undefined;
      script(src='/widgets/js/require.js', data-main='/widgets/js/main')

Use HTTPS for loading external assets.

!!!
html
  head
    meta(charset="utf-8")
    title #{title ? title + ' | ' + siteName : siteName}
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='/widgets/css/argumenta.css')
  body.argumenta
    div.wrapper
      div.header
        a.header-logo(href="/")= siteName
        - if (username)
          ul.nav-logout
            li Logged in as
                a(href="/#{username}") #{username}
                |  (
                a(href="/logout") Sign out
                | )
        - else
          ul.nav-login
            li
              a(href="/login") Sign in
              |  or
              a(href="/join") Join now!
      div.toolbar
        a.button(href="/arguments/new") New Argument
      div.notifications
        each message in messages
          div.info= "Info: " + message
        each error in errors
          div.error= "Error: " + error
      block content
    block scripts
      script(src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js")
      script(src="/javascripts/autosize/jquery.autosize.js")
      script(src="/javascripts/charcount/jquery.charcount.js")
      script(src="/javascripts/objects.js")
      script
        var jquery = $.noConflict();
        var browserify = { require: require };
        var require = undefined;
      script(src='/widgets/js/require.js', data-main='/widgets/js/main')


md-toolbar(ng-show="!state.searching" ng-click="state.searching = !state.searching")
  .md-toolbar-tools
    h1 MT News Archive
    span(flex)
    md-button(aria-label="search")
      md-icon search
md-toolbar.md-hue-2(ng-show="state.searching")
  .md-toolbar-tools
    md-button(ng-click="state.searching = !state.searching" aria-label="Back")
      md-icon arrow_back
    h1(flex="10") Back
    md-input-container.md-accent(flex)
      label Search
      input.search(ng-model="state.searchString")
    md-input-container.md-accent
      label After
      input(ng-model="state.after" type="date")
    md-input-container.md-accent
      label Before
      input(ng-model="state.before" type="date")
    md-button(aria-label="search" ng-click="state.search()")
      md-icon search

Add a form-level action for searching.

md-toolbar(ng-show="!state.searching" ng-click="state.searching = !state.searching")
  .md-toolbar-tools
    h1 MT News Archive
    span(flex)
    md-button(aria-label="search")
      md-icon search
md-toolbar.md-hue-2(ng-show="state.searching")
  form(ng-submit="state.search()")
    .md-toolbar-tools
      md-button(ng-click="state.searching = !state.searching" aria-label="Back")
        md-icon arrow_back
      h1(flex="10") Back
      md-input-container.md-accent(flex)
        label Search
        input.search(ng-model="state.searchString")
      md-input-container.md-accent
        label After
        input(ng-model="state.after" type="date")
      md-input-container.md-accent
        label Before
        input(ng-model="state.before" type="date")
      md-button(aria-label="search" ng-click="state.search()")
        md-icon search


!!! 5
html
	head
		!=partial('layouts/_head')
	body(id=w.page_name)
		!=partial('layouts/_header')
		.main
			!{body}
		!=partial('layouts/_footer')
		- if(w.jquery)
			script(src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js", type="text/javascript")
		- if(w.page_js)
			!{assetHelpers.assetGroupTag(w.page_js, w.user && w.user.doc)}
		!=partial('shared/_ga')

Add XML namespace to HTML tag for facebook

!!! 5
html("xmlns\u003Afb"="http://www.facebook.com/2008/fbml", xmlns="http://www.w3.org/1999/xhtml")
	head
		!=partial('layouts/_head')
	body(id=w.page_name)
		!=partial('layouts/_header')
		.main
			!{body}
		!=partial('layouts/_footer')
		- if(w.jquery)
			script(src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js", type="text/javascript")
		- if(w.page_js)
			!{assetHelpers.assetGroupTag(w.page_js, w.user && w.user.doc)}
		!=partial('shared/_ga')


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

Change doctype definition because it does not work in some computers

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


div.hidden-xs
  a.btn.btn-social-icon.btn-lg.btn-vk(ng-click='authenticateVk()')
    i.fa.fa-vk
  a.btn.btn-social-icon.btn-lg.btn-facebook(ng-click='authenticateFb()')
    i.fa.fa-facebook
.row.visible-xs
  .col-xs-4
    a.btn.btn-block.btn-lg.btn-vk(ng-click='authenticateVk()')
      i.fa.fa-vk.visible-xs
      span.hidden-xs VK
  .col-xs-4
    a.btn.btn-block.btn-lg.btn-facebook(ng-click='authenticateFb()')
      i.fa.fa-facebook.visible-xs
      span.hidden-xs Facebook
  .col-xs-4

Fix auth modal for mobile

div.hidden-xs
  a.btn.btn-social-icon.btn-lg.btn-vk(ng-click='authenticateVk()')
    i.fa.fa-vk
  a.btn.btn-social-icon.btn-lg.btn-facebook(ng-click='authenticateFb()')
    i.fa.fa-facebook
.row.visible-xs
  .col-xs-3
    a.btn.btn-block.btn-lg.btn-vk(ng-click='authenticateVk()')
      i.fa.fa-vk.visible-xs
      span.hidden-xs VK
  .col-xs-3
    a.btn.btn-block.btn-lg.btn-facebook(ng-click='authenticateFb()')
      i.fa.fa-facebook.visible-xs
      span.hidden-xs Facebook
  .col-xs-6


div.artist-page-cta-overlay__register
  form.auth-form(
    action=sd.AP.loginPagePath
    method='POST'
  )
    .auth-errors
    input.bordered-input.is-block(
      name='name', type='text', placeholder='Your full name', autofocus=true, required
    )
    input#js-mailcheck-input-modal.bordered-input.is-block(
      name='email', type='email', placeholder='Your email address', required
    )
    #js-mailcheck-hint-modal
    input.bordered-input.is-block(
      name= 'password'
      type= 'password'
      placeholder= 'Create a password'
      autocomplete= 'on'
      pattern= '.{6,}'
      title= '6 characters minimum'
      required
    )

    input( type="hidden" name="_csrf" value=sd.CSRF_TOKEN )
    button#auth-submit.avant-garde-button-black.is-block Sign Up

  h2
    span Or

  a.auth-signup-facebook.avant-garde-button-black(href='/users/auth/facebook')
    i.icon-facebook
    | Continue with Facebook

  include ./register_footer.jade

Send to payoff after registration w/ Facebook

div.artist-page-cta-overlay__register
  form.auth-form(
    action=sd.AP.loginPagePath
    method='POST'
  )
    .auth-errors
    input.bordered-input.is-block(
      name='name', type='text', placeholder='Your full name', autofocus=true, required
    )
    input#js-mailcheck-input-modal.bordered-input.is-block(
      name='email', type='email', placeholder='Your email address', required
    )
    #js-mailcheck-hint-modal
    input.bordered-input.is-block(
      name= 'password'
      type= 'password'
      placeholder= 'Create a password'
      autocomplete= 'on'
      pattern= '.{6,}'
      title= '6 characters minimum'
      required
    )

    input( type="hidden" name="_csrf" value=sd.CSRF_TOKEN )
    button#auth-submit.avant-garde-button-black.is-block Sign Up

  h2
    span Or

  a.auth-signup-facebook.avant-garde-button-black(href="/users/auth/facebook?redirect-to=#{artist.get('href')}/payoff")
    i.icon-facebook
    | Continue with Facebook

  include ./register_footer.jade


extends layout

block content
  h2.display-data Routes

  ul
    each route in mainRoutes
      li
        a(href="#{route.route}")= route.name

Make the welcome page friendly, with text and things like that

extends layout

block content
  h2.display-data Routes
  - if (!mainRoutes.length)
    p
      | Well done young Padawan! You've created your first app with bumm!
      br
      br
      | If you don't see any routes here switch
      | to the command line again and scaffold some model, routes and views
      pre
        > bumm scaffold item name:string
      | This command creates a model "item" with one property "name" of type string, the route file is placed under "routes/item.js",
      | and the views can be found under "views/item".
      br
      br
      | Or create some rest resource using command
      pre
        > bumm resource item name:string
      | That creates a model "item" with one property "name" of type string, the route file is placed under "routes/item.js",
      | and since this rest resource is intended to be used as API method no views are generated.
      br
      br
      | Or scaffold some CRUD stuff under an "admin" route
      pre
        > bumm scaffold admin/item name:string
      | Which creates a model "item" with one property "name" of type string, the route file is placed under "routes/admin/item.js",
      | and the views can be found under "views/admin/item". You can access this route via "/admin/items"...

    h3 Have fun!

  ul
    each route in mainRoutes
      li
        a(href="#{route.route}")= route.name


extends ../layouts/page

include ../mixins/post

block article-nav
  .card
    .card-block
      .card-title
        i.fa.fa-road.m-r-1
        span 睡吧指南导航
    .list-group.list-group-flush
      each indice in indices
        if !indice.tutorialCount
          a.list-group-item(href='/tutorial/' + indice.key, class=(post && post.key == indice.key ? 'active': ''))
            i.fa.fa-file-text-o.m-r-1
            =indice.title
        else if indice.tutorialCount > 0
          a.list-group-item(href='/tutorial/categories/' + indice.key, class=(category && category.key == indice.key ? 'active': ''))
            i.fa.fa-tag.m-r-1
            =indice.name

block article
  if post
    +content-post(post, comments)
  else if posts
    +content-posts(category, posts)
  else
    h2 无效的内容

Add back to upper level feature

extends ../layouts/page

include ../mixins/post

block article-nav
  .card
    .card-block
      .card-title
        i.fa.fa-road.m-r-1
        span 睡吧指南导航
    .list-group.list-group-flush
      each indice in indices
        if !indice.tutorialCount
          a.list-group-item(href='/tutorial/' + indice.key, class=(post && post.key == indice.key ? 'active': ''))
            i.fa.fa-file-text-o.m-r-1
            =indice.title
        else if indice.tutorialCount > 0
          a.list-group-item(href='/tutorial/categories/' + indice.key, class=(category && category.key == indice.key ? 'active': ''))
            i.fa.fa-tag.m-r-1
            =indice.name

block article
  if post
    if category && category.key
      .nav-back.m-b-2.m-t-1
        a.btn.btn-link(href='/tutorial/categories/' + category.key)
          i.fa.fa-chevron-left
          span.m-l-1 #{category.name}
    +content-post(post, comments)
  else if posts
    +content-posts(category, posts)
  else
    h2 无效的内容


// timeline-attachment directive
div.activity-image-attachment
    blockquote
        img(ng-src="{{::attachment.url}}", alt="{{::attachment.filename}}")

Add links to he timeline images

// timeline-attachment directive
div.activity-image-attachment
    blockquote
        a(href="{{::attachment.url}}", title="See {{::attachment.filename}}")
            img(ng-src="{{::attachment.url}}", alt="{{::attachment.filename}}")


.ChannelBlockGroup(data-id=channel.id)
  .ChannelBlockGroup__divider
  .ChannelBlockGroup__inner.js-channel
    - block = channel
    include ../../block_v2/templates/block
    for block in channel.kind.blocks
      include ../../block_v2/templates/block

Add js class to channel group

.ChannelBlockGroup.js-channel-group(data-id=channel.id)
  .ChannelBlockGroup__divider
  .ChannelBlockGroup__inner.js-channel
    - block = channel
    include ../../block_v2/templates/block
    for block in channel.kind.blocks
      include ../../block_v2/templates/block


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

		title Cthulhu Character Generator

		link(rel="import" href="../components/polymer/polymer.html")
		link(rel="import" href="../components/imd/imd.html")
		link(rel="import" href="../components/cthulhu-application/cthulhu-application.html")

	body
		cthulhu-application

Drop in some dirty CSS resets for body

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

		title Cthulhu Character Generator

		link(rel="import" href="../components/polymer/polymer.html")
		link(rel="import" href="../components/imd/imd.html")
		link(rel="import" href="../components/cthulhu-application/cthulhu-application.html")

	//- TODO hide the style reset for body's margins into Less files
	body(style="padding:0px; margin:0px; color: #1C2B1B;")
		cthulhu-application


.container
  h1 Timeline of the Grand Rapids Budget Process

  #timeline-embed
  script(type='text/javascript').
    var timeline_config = {
    width:              '100%',
    height:             '600',
    source:             'http://docs.google.com/spreadsheets/d/1jL2_7lJSgbLchJfAGWrST16ZxKe5Z-vbOfrAu14QyG8/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/timeline3/latest/js/timeline.js')

Revert "change https to http"

.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/1jL2_7lJSgbLchJfAGWrST16ZxKe5Z-vbOfrAu14QyG8/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='https://cdn.knightlab.com/libs/timeline3/latest/js/timeline.js')


mixin action-info(profile, timestamp)
  a(href=profile.profileUrl)
    img.action-info-user-avatar.img-circle(
      src=profile._json.avatar_url,
      alt=profile.displayName + ' Avatar'
    )
  span.action-info-timestamp= moment.unix(timestamp).fromNow()

mixin exp-info(exp)
  .exp-name= exp.title
  .exp-details
    span.exp-details-item
      span.glyphicon.glyphicon-book
      = exp.owner + '/' + exp.repo

    span.exp-details-item
      span.glyphicon.glyphicon-bookmark
      = exp.branch

Make the mixin more robust.

mixin action-info(profile, timestamp)
  if profile && profile.profileUrl && profile.displayName
    a(href=profile.profileUrl)
      img.action-info-user-avatar.img-circle(
        src=profile._json.avatar_url,
        alt=profile.displayName + ' Avatar'
      )
  span.action-info-timestamp= moment.unix(timestamp).fromNow()

mixin exp-info(exp)
  .exp-name= exp.title
  .exp-details
    span.exp-details-item
      span.glyphicon.glyphicon-book
      = exp.owner + '/' + exp.repo

    span.exp-details-item
      span.glyphicon.glyphicon-bookmark
      = exp.branch


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', 'trails', 'lock', 'size', 'moreoptions', 'fullscreen']"
  - var chart_dialogs = "{'popup': ['colors', 'find', 'size', 'moreoptions'], 'sidebar': ['colors', 'find', 'size'], 'moreoptions': ['opacity', 'speed', 'axes', 'size', 'colors', 'presentation', 'about']}"

Put size button before trails an lock

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'], 'moreoptions': ['opacity', 'speed', 'axes', 'size', 'colors', 'presentation', 'about']}"


.grid
  //- Side menu
  .settings-menu
    ul.nav
      li
        a(ui-sref = '.servers', ui-sref-active = 'active')
          i.fa.fa-fw.fa-cloud.fa-menu
          |  Servers
        a(ui-sref = '.users')
          i.fa.fa-fw.fa-user.fa-menu
          |  Users
        a.disabled(ui-sref = '.groups')
          i.fa.fa-fw.fa-users.fa-menu
          |  Groups
        a(ui-sref = '.acls')
          i.fa.fa-fw.fa-key.fa-menu
          |  ACLs

  //- Content
  div.settings-content(ui-view = '')

Hide link to not implemented Groups page.

.grid
  //- Side menu
  .settings-menu
    ul.nav
      li
        a(ui-sref = '.servers', ui-sref-active = 'active')
          i.fa.fa-fw.fa-cloud.fa-menu
          |  Servers
        a(ui-sref = '.users')
          i.fa.fa-fw.fa-user.fa-menu
          |  Users
        //- a.disabled(ui-sref = '.groups')
        //-   i.fa.fa-fw.fa-users.fa-menu
        //-   |  Groups
        a(ui-sref = '.acls')
          i.fa.fa-fw.fa-key.fa-menu
          |  ACLs

  //- Content
  div.settings-content(ui-view = '')


!!!
html(lang='en')
  head
    title Wassup
  body
    h1 Wassup
    block content

Use colors to show when urls are up and down

!!!
html(lang='en')
  head
    title Wassup
    style(type='text/css').
      .up { color: green; }
      .down { color: red; }
  body
    h1 Wassup
    block content


p
  small
    | posted by #{post.author} on #{post.date.getFullYear()}.#{post.date.getMonth()+1}.#{post.date.getDate()} | #{post.category} |
    each tag in post.tags
      a(href=tagUrl(tag)) #{tag}
      |
    a(href="/rss")
      img(src="/images/rss-small-red.png")

Add small post meta separator

p
  small
    | posted by #{post.author} on #{post.date.getFullYear()}.#{post.date.getMonth()+1}.#{post.date.getDate()} | #{post.category} |
    each tag in post.tags
      a(href=tagUrl(tag)) #{tag}
      |
    | |


doctype html
head
  title=title
  script(src='/js/bundle.js')
  script(src='/js/analytics.js', async)
  link(rel='stylesheet', href='/css/main.css')
  link(rel='stylesheet' href='/css/font-awesome/font-awesome.css')
  link(rel='stylesheet' href='/css/highlight-default.css')
  link(rel='shortcut icon', href='/img/favicon.ico')
  if fbTitle
    meta(property='og:title', content=fbTitle)
  if fbSiteName
    meta(property='og:site_name', content=fbSiteName)
  if fbShareUrl
    meta(property='og:url', content=fbShareUrl)
  if fbDescription
    meta(property='og:description', content=fbDescription)
  if fbImageUrl
    meta(property='og:image' content=fbImageUrl)
  else
    meta(property='og:image' content='http://www.brianbondy.com/img/avatar.png')
body

Add theme color for testing

doctype html
head
  title=title
  script(src='/js/bundle.js')
  script(src='/js/analytics.js', async)
  link(rel='stylesheet', href='/css/main.css')
  link(rel='stylesheet' href='/css/font-awesome/font-awesome.css')
  link(rel='stylesheet' href='/css/highlight-default.css')
  link(rel='shortcut icon', href='/img/favicon.ico')
  meta(name='theme-color', content='#4d90fe')

  if fbTitle
    meta(property='og:title', content=fbTitle)
  if fbSiteName
    meta(property='og:site_name', content=fbSiteName)
  if fbShareUrl
    meta(property='og:url', content=fbShareUrl)
  if fbDescription
    meta(property='og:description', content=fbDescription)
  if fbImageUrl
    meta(property='og:image' content=fbImageUrl)
  else
    meta(property='og:image' content='http://www.brianbondy.com/img/avatar.png')
body


extends layout

block append vars
  - bodyclass = 'article-detail'

block prepend title
  | #{ page.title + ' - '}

block header
  include author
  h1= page.title
  p.author
    | #{ 'Written by ' }
    mixin author(page.metadata.author)

block content
  article.article
    section.content!= typogr(page.html).typogrify()
  a(href="http://creativecommons.org/licenses/by-sa/4.0/", rel="license")
    img(alt="Licencia Creative Commons", style="border-width:0", src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png")
  br
  p(class="creativecommons")="Esta obra de "
    a(xmlns:cc="http://creativecommons.org/ns#", href=locals.url, property="cc:attributionName", rel="cc:attributionURL")=page.metadata.author
    =" está bajo una "
    a(rel="license", href="http://creativecommons.org/licenses/by-sa/4.0/")="Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional"

block prepend footer
  div.nav
    a(href=contents.index.url) « Full blog

Add social share icons and scrolled header

extends layout

block append vars
  - bodyclass = 'article-detail'

block prepend title
  | #{ page.title + ' - '}

block header
  include author
  h1= page.title
  p.author
    | #{ 'Written by ' }
    mixin author(page.metadata.author)
  div(class="hide")
    a(href="http://www.facebook.com/share.php?u="+locals.url+page.url)
      i(class="fa fa-facebook share-icon")
    a(href="http://twitter.com/share?text="+page.title+"&url="+locals.url+page.url)
      i(class="fa fa-twitter share-icon")
    a(href="https://www.linkedin.com/cws/share?url="+locals.url+page.url)
      i(class="fa fa-linkedin share-icon")

block content
  article.article
    section.content!= typogr(page.html).typogrify()
  a(href="http://creativecommons.org/licenses/by-sa/4.0/", rel="license")
    img(alt="Licencia Creative Commons", style="border-width:0", src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png")
  br
  p(class="creativecommons")="Esta obra de "
    a(xmlns:cc="http://creativecommons.org/ns#", href=locals.url, property="cc:attributionName", rel="cc:attributionURL")=page.metadata.author
    =" está bajo una "
    a(rel="license", href="http://creativecommons.org/licenses/by-sa/4.0/")="Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional"

block prepend footer
  div.nav
    a(href=contents.index.url) « Full blog


.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

Use icons for buttons instead of text

.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
        span.glyphicon.glyphicon-zoom-in
      button.btn.btn-xs.btn-default.openwindow
        span.glyphicon.glyphicon-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


include ./recipient-selector.jade

.modal.pump-modal.hide.fade#modal-picture(tabindex="-1", role="dialog", aria-labelledby="post-label", aria-hidden="true")
  .modal-header
    button.close(type="button", data-dismiss="modal", aria-hidden="true") ×
    h3#post-label Post a picture

  .modal-body
    .picture-fineupload
    form#post-picture(action="/main/upload", enctype="multipart/form-data")
      fieldset
        label(for="title") Title
        input#picture-title(type="text", placeholder="(optional)", name="title")
        label(for="description") Description
        textarea.span5#picture-description(name="description", placeholder="Description (optional)", rows="3")

        div
          +recipient-selector({name: "to", id: "picture-to", label: "To"})

        div
          +recipient-selector({name: "cc", id: "picture-cc", label: "CC"})

  .modal-footer
    button.btn.btn-primary#send-picture(type="submit") Send

Fix picture upload button not appearing

include ./recipient-selector.jade

.modal.pump-modal.hide.fade#modal-picture(tabindex="-1", role="dialog", aria-labelledby="post-label", aria-hidden="true")
  .modal-header
    button.close(type="button", data-dismiss="modal", aria-hidden="true") ×
    h3#post-label Post a picture

  .modal-body
    #picture-fineupload
    form#post-picture(action="/main/upload", enctype="multipart/form-data")
      fieldset
        label(for="title") Title
        input#picture-title(type="text", placeholder="(optional)", name="title")
        label(for="description") Description
        textarea.span5#picture-description(name="description", placeholder="Description (optional)", rows="3")

        div
          +recipient-selector({name: "to", id: "picture-to", label: "To"})

        div
          +recipient-selector({name: "cc", id: "picture-cc", label: "CC"})

  .modal-footer
    button.btn.btn-primary#send-picture(type="submit") Send


template(name="header")
	nav.navbar.navbar-default.navbar-fixed-top
		.container-fluid
			.navbar-header
				button.navbar-toggle.collapsed(type="button" data-toggle="collapse" data-target="#mkp-navbar" aria-expended="false")
					span.sr-only {{_ "toggleNav"}}
					span.icon-bar
					span.icon-bar
					span.icon-bar
				a.navbar-brand(href="{{pathFor 'home'}}") {{_ "applicationName"}}
			#mkp-navbar.collapse.navbar-collapse
				ul.nav.navbar-nav
					li.active
						a(href="{{pathFor 'home'}}") {{_ "ownedMangas"}}
					li
						a(href="#") {{_ "missingMangas"}}
				form.navbar-form.navbar-left(role="search")
					.form-group
						input.form-control(type="text" placeholder="Search")
					button.btn.btn-default(type="submit") {{_ "go"}}
				.nav.navbar-nav.navbar-right
					+loginButtons

Add dynamic active class depending on the page route

template(name="header")
	nav.navbar.navbar-default.navbar-fixed-top
		.container-fluid
			.navbar-header
				button.navbar-toggle.collapsed(type="button" data-toggle="collapse" data-target="#mkp-navbar" aria-expended="false")
					span.sr-only {{_ "toggleNav"}}
					span.icon-bar
					span.icon-bar
					span.icon-bar
				a.navbar-brand(href="{{pathFor 'home'}}") {{_ "applicationName"}}
			#mkp-navbar.collapse.navbar-collapse
				ul.nav.navbar-nav
					li(class="#{homeActive}")
						a(href="{{pathFor 'home'}}") {{_ "ownedMangas"}}
					li(class="#{missingActive}")
						a(href="{{pathFor 'missingMangas'}}") {{_ "missingMangas"}}
				form.navbar-form.navbar-left(role="search")
					.form-group
						input.form-control(type="text" placeholder="Search")
					button.btn.btn-default(type="submit") {{_ "go"}}
				.nav.navbar-nav.navbar-right
					+loginButtons


extends layout

block content
  .page-header
    h3 Contact Form

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

Update textfield type for Name

extends layout

block content
  .page-header
    h3 Contact Form

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


mixin slide6
    +b('section')
        +e('h1')!= "6. Fast communications"

Add content to slide 6

mixin slide6
    +b('section')
        +e('section')
            +e('h1')!= "6. Fast communications"

            +b('aside').notes
                +e('p')!= "And the last my recommendation is to use fast communications and to help each other with fast and useful answers."


h1.iq-headline
  if user.get('prequalified')
    | Please complete profile information to be shared with the gallery.
    | You only need to fill this out once.
  else
    | #{artwork.related().partner.get('name')} asks for some additional information before placing an inquiry.
    | You only have to do this once.

form.iq-form.stacked-form
  label.avant-garde-form-label( for='profession' )
    | Profession (#{user.get('prequalified') ? 'Optional' : 'Required'})
  input.bordered-input(
    name='profession'
    id='profession'
    value= user.get('profession')
    required= !user.get('prequalified')
  )

  label.avant-garde-form-label( for='location' )
    | Location (#{user.get('prequalified') ? 'Optional' : 'Required'})
  .js-location-search
    //- Rendered separately

  label.avant-garde-form-label( for='phone' )
    | Phone Number (#{user.get('prequalified') ? 'Optional' : 'Required'})
  input.bordered-input(
    name='phone'
    id='phone'
    type='tel'
    value= user.get('phone')
    required= !user.get('prequalified')
  )

  button.avant-garde-button-black.iq-next( type='submit' ) Next

include ./partials/nevermind

Update to use partner `pre_qualify`

- partner = artwork.related().partner

h1.iq-headline
  if partner.get('pre_qualify')
    | #{partner.get('name')} asks for some additional information before placing an inquiry.
    | You only have to do this once.
  else
    | Please complete profile information to be shared with the gallery.
    | You only need to fill this out once.

form.iq-form.stacked-form
  label.avant-garde-form-label( for='profession' )
    | Profession (#{partner.get('pre_qualify') ? 'Required' : 'Optional'})
  input.bordered-input(
    name='profession'
    id='profession'
    value= user.get('profession')
    required= partner.get('pre_qualify')
  )

  label.avant-garde-form-label( for='location' )
    | Location (#{partner.get('pre_qualify') ? 'Required' : 'Optional'})
  .js-location-search
    //- Rendered separately

  label.avant-garde-form-label( for='phone' )
    | Phone Number (#{partner.get('pre_qualify') ? 'Required' : 'Optional'})
  input.bordered-input(
    name='phone'
    id='phone'
    type='tel'
    value= user.get('phone')
    required= partner.get('pre_qualify')
  )

  button.avant-garde-button-black.iq-next( type='submit' ) Next

include ./partials/nevermind


doctype html
html
  head
    meta(charset='utf-8')
    title CoffeeLintMate
    //- insert styles from args
    style !{style}
  body
    header
      .info.has-filepath
        if errors.length > 0
          - var problems = (errors.length > 1) ? 'problems':'problem'
          span.desc CoffeeLintMate found #{errors.length} #{problems}:
        else
          span.desc Lint-free!

        span.filepath #{filepath}
        a.info(href='http://rondevera.github.com/jslintmate/', title='About JSLintMate 1.4') info

    if errors.length > 0
      .results.results-problems
        ul.problems
          for err in errors
            li
              a(href='txmt://open?url=#{filepath}&line=#{err.lineNumber}')
                span.location Line #{err.lineNumber}
                span.desc #{err.message}
                pre !{err.line}

    else
      .results.results-success
        p.success Lint-free!

    //- insert unescaped javascript from args
    script !{script}

Add protocol to access file.

doctype html
html
  head
    meta(charset='utf-8')
    title CoffeeLintMate
    //- insert styles from args
    style !{style}
  body
    header
      .info.has-filepath
        if errors.length > 0
          - var problems = (errors.length > 1) ? 'problems':'problem'
          span.desc CoffeeLintMate found #{errors.length} #{problems}:
        else
          span.desc Lint-free!

        span.filepath #{filepath}
        a.info(href='http://rondevera.github.com/jslintmate/', title='About JSLintMate 1.4') info

    if errors.length > 0
      .results.results-problems
        ul.problems
          for err in errors
            li
              a(href='txmt://open?url=file://#{filepath}&line=#{err.lineNumber}')
                span.location Line #{err.lineNumber}
                span.desc #{err.message}
                pre !{err.line}

    else
      .results.results-success
        p.success Lint-free!

    //- insert unescaped javascript from args
    script !{script}


layout: index
description: Lightviz -- A lightweight data visualization tool
subtitle: View your data in ParaView LightViz
cmd: npm install light-viz.js
comments: false
---

ul#intro-feature-list
  li.intro-feature-wrap
    .intro-feature
      .intro-feature-icon
        i.fa.fa-cloud-download
      h3.intro-feature-title
        a(href="https://www.npmjs.com/package/light-viz").link Releases
      p.intro-feature-desc ParaView Lightviz is available via npm.

  li.intro-feature-wrap
    .intro-feature
      .intro-feature-icon
          i.fa.fa-life-ring
      h3.intro-feature-title
        a(href="http://www.kitware.com/products/support").link Support and Services
      p.intro-feature-desc Kitware offers advanced software R&D solutions and services. Find out how we can help with your next project.

Add npm version icon on home page

layout: index
description: Lightviz -- A lightweight data visualization tool
subtitle: View your data in ParaView LightViz
cmd: npm install light-viz.js
comments: false
---

ul#intro-feature-list
  li.intro-feature-wrap
    .intro-feature
      .intro-feature-icon
        i.fa.fa-cloud-download
      h3.intro-feature-title
        a(href="https://www.npmjs.com/package/light-viz").link Releases
        img(style="padding-left: 25px",src="https://badge.fury.io/js/light-viz.svg")
      p.intro-feature-desc ParaView LightViz is available via npm.

  li.intro-feature-wrap
    .intro-feature
      .intro-feature-icon
          i.fa.fa-life-ring
      h3.intro-feature-title
        a(href="http://www.kitware.com/products/support").link Support and Services
      p.intro-feature-desc Kitware offers advanced software R&D solutions and services. Find out how we can help with your next project.


- title('Get started')

div.left
    :markdown
        ## Get started

        Three small steps to get it running:

        - Clone the github repo
        - Install module
        - Start server

        Then go to `http://localhost:5000/` and see the base template. It's time to customize it to your needs.

div.right
    :markdown
        ### Commands to run
        ```
        git clone git@github.com:pillars/bibliosoph.git my-documentation-website
        cd my-documentation-website
        npm install
        node app.js
        ```

Improve the get started documentation

- title('Get started')

div.left
    :markdown
        ## Get started

        ### Using Git

        Three small steps to get it running:

        - Clone the project github repo
        - Install module
        - Start server

        Then go to `http://localhost:5000/` and see the base template. It's time to customize it to your needs.

div.right
    :markdown
        ### Commands to run
        ```
        git clone git@github.com:pillars/bibliosoph.git my-documentation-website
        cd my-documentation-website
        npm install
        node app.js
        ```

div.left
    :markdown
        ### Using Grunt and grunt-init

        The advantage of using grunt-init is that it will guide you into populating the config.json.

        - Clone the grunt-init github repo
        - Init bibliosoph and answer the questions
        - Start server

        Then go to `http://localhost:5000/` and see the base template. It's time to customize it to your needs.

div.right
    :markdown
        ### Commands to run
        ```
        git clone git@github.com:pillars/grunt-init-bibliosoph.git ~/.grunt-init/bibliosoph
        mkdir my-documentation-website
        cd my-documentation-website
        grunt-init bibliosoph
        npm install
        node app.js
        ```


!!!
html
  head
    title Grunt car engine
    <% if (cssreset == 'meyer') { %>
    link(type='text/css', rel='stylesheet', href='css/reset.css')
    <% } %>
    link(type='text/css', rel='stylesheet', href='css/application.css')
  body

Normalize css auto include ai header jade template.

!!!
html
  head
    title Grunt car engine
    <% if (cssreset == 'meyer') { %>
    link(type='text/css', rel='stylesheet', href='css/reset.css')
    <% } %>
    <% if (cssreset == 'normalize') { %>
    link(type='text/css', rel='stylesheet', href='css/normalize.css')
    <% } %>
    link(type='text/css', rel='stylesheet', href='css/application.css')
  body


extends ../layout
block content
  h1= count
    small  Scholarly pursuits denied
  each event in events
    .well
      h3 #{event.name}
        em  (#{event.profession})
      blockquote #{event.story}
      small
        em= event.accessed.calendar()
        |
        span #{event.profession}  from #{event.location}

Remove duplicate mention of submitter’s occupation

extends ../layout
block content
  h1= count
    small  Scholarly pursuits denied
  each event in events
    .well
      h3 #{event.name}
        em  (#{event.profession})
      blockquote #{event.story}
      small
        em= event.accessed.calendar()
        |
        span from #{event.location}


#nav-wrapper(ng-controller="NavCtrl")
  ul#nav(data-collapse-nav="", data-slim-scroll="", data-highlight-active="")
    li
      a(ui-sref="definations")
        i.glyphicon.glyphicon-th
          span.icon-bg.bg-danger
        span تعاریف اولیه
      ul
        li
          a(ui-sref="users")
            i.glyphicon.glyphicon-th
              span.icon-bg.bg-danger
            span کاربر

Replace Li class with fa-left

#nav-wrapper(ng-controller="NavCtrl")
  ul#nav(data-collapse-nav="", data-slim-scroll="", data-highlight-active="")
    li
      a(ui-sref="definations")
        i.glyphicon.glyphicon-th
          span.icon-bg.bg-danger
        span تعاریف اولیه
      ul
        li
          a(ui-sref="users")
            i.fa.fa-caret-left
            span کاربر


extends ../../../components/path/templates/path

block path
  li.path__username(class=author.isPremium() ? 'is-premium' : '')
    a(href="/" + author.get('slug'))=author.get('username')
    if author.isPremium() && !followers && !following
      a.premium-badge(href="/tools/premium")
        .premium-badge__stars ✶✶
        .premium-badge__cracker
          include ../../../public/images/premium.svg
  if followers
    li.path__sub Followers
  if following
    li.path__sub Following

block right
  if author && user && author.id == user.id
    .channel-settings.edit-profile.is-editable
      a(href="/manage") Manage channels

block metadata
  .metadata
    if author.isPremium() && ((user && author.id == user.id) || author.has('metadata'))
      include metadata_pockets/about
    if user && user.has('username')
      include metadata_pockets/info
    unless following || followers
      include metadata_pockets/view
    unless following || followers || alpha
      include metadata_pockets/sort

Allow non-premium to edit bio

extends ../../../components/path/templates/path

block path
  li.path__username(class=author.isPremium() ? 'is-premium' : '')
    a(href="/" + author.get('slug'))=author.get('username')
    if author.isPremium() && !followers && !following
      a.premium-badge(href="/tools/premium")
        .premium-badge__stars ✶✶
        .premium-badge__cracker
          include ../../../public/images/premium.svg
  if followers
    li.path__sub Followers
  if following
    li.path__sub Following

block right
  if author && user && author.id == user.id
    .channel-settings.edit-profile.is-editable
      a(href="/manage") Manage channels

block metadata
  .metadata
    if (user && author.id == user.id) || author.has('metadata')
      include metadata_pockets/about
    if user && user.has('username')
      include metadata_pockets/info
    unless following || followers
      include metadata_pockets/view
    unless following || followers || alpha
      include metadata_pockets/sort


extends layout

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

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

    include _partials/footer

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

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

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

extends layout

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

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

    include _partials/footer

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

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


extends ../layout

//- http://fullcalendar.io/docs/usage/

block content
  if !error
    .row.page-header
      h3 All Events
    .row
      p
        #events-calendar
    script.
      // make this object available to frontend js for rendering in calendar
      window._events = !{JSON.stringify(events).replace(/<\//g, "<\\/")}
    h1 Upcoming events list
    table.table
      thead
        tr
          th Event name
          th Date & time
          th Venue
          th Address
          th Meetup page link
      tbody
        each event in upcomingevents
          tr
            td #{event.title}
            td #{event.start}
            td #{event.venue}
            td #{event.address}, #{event.city}
            td
              a(href='#{event.url_page}', target='_blank') Event Meetup Page

  else
    h3 There was a problem fetching your events from Meetup

Embed Meetup.com RSVP onto event page for each event. NOTE: must change API secret when page is deployed.

extends ../layout

//- http://fullcalendar.io/docs/usage/

block content
  if !error
    .row.page-header
      h3 All Events
    .row
      p
        #events-calendar
    script.
      // make this object available to frontend js for rendering in calendar
      window._events = !{JSON.stringify(events).replace(/<\//g, "<\\/")}
    h1 Upcoming events list
    table.table
      thead
        tr
          th Event name
          th Date & time
          th Venue
          th Address
          th
      tbody
        each event in upcomingevents
          tr
            td #{event.title}
            td #{event.start}
            td #{event.venue}
            td #{event.address}, #{event.city}
            td
              a(href='#{event.url_page}', class="mu-rsvp-btn") RSVP

  else
    h3 There was a problem fetching your events from Meetup

  script.
    ! function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0];
      if (!d.getElementById(id)) {
          js = d.createElement(s);
          js.id = id;
          js.async = true;
          js.src = "https://a248.e.akamai.net/secure.meetupstatic.com/s/script/2012676015776998360572/api/mu.btns.js?id=hrb1idk1jr1295hel65ak1ku9";
          fjs.parentNode.insertBefore(js, fjs);
      }
    }(document, "script", "mu-bootjs");


mixin nav-element(componentName, href)
  li.list__element
    a.link.list__link(href="##{href}", :class="{ 'list__link--active': currentPosition === '#{href}' }")= componentName

ul.list(
  :class="{ 'list--sticky': isNavSticky }"
)
  li.list__heading Setup
  +nav-element('Getting Started', '#getting-started')

  li.list__heading Examples
  +nav-element('Select (primitive)', 'select-primitive')
  +nav-element('Select (object)', 'select-object')
  +nav-element('Select with search', 'select-search')
  +nav-element('Multiselect with search', 'multiselect-search')
  +nav-element('Asynchronous select', 'ajax')
  +nav-element('Tagging', 'tagging')
  +nav-element('Action select', 'action')
  +nav-element('Custom configuration', 'custom')

  li.list__heading API
  +nav-element('Props', 'props')
  +nav-element('Events', 'events')
  +nav-element('Slots', 'slots')

Fix 'getting-started' link in doc

mixin nav-element(componentName, href)
  li.list__element
    a.link.list__link(href="##{href}", :class="{ 'list__link--active': currentPosition === '#{href}' }")= componentName

ul.list(
  :class="{ 'list--sticky': isNavSticky }"
)
  li.list__heading Setup
  +nav-element('Getting Started', 'getting-started')

  li.list__heading Examples
  +nav-element('Select (primitive)', 'select-primitive')
  +nav-element('Select (object)', 'select-object')
  +nav-element('Select with search', 'select-search')
  +nav-element('Multiselect with search', 'multiselect-search')
  +nav-element('Asynchronous select', 'ajax')
  +nav-element('Tagging', 'tagging')
  +nav-element('Action select', 'action')
  +nav-element('Custom configuration', 'custom')

  li.list__heading API
  +nav-element('Props', 'props')
  +nav-element('Events', 'events')
  +nav-element('Slots', 'slots')


doctype html
html(lang="en")
  head
    title Interactive Activities - Council for Economic Education
  body
    div#main
    script#activity-data(type='text/json')!= JSON.stringify(activities)
    if dev
      script(src='/bower_components/requirejs/require.js', data-main='/scripts/amd-config')
    else
      script(src='/scripts/main.js')

Add note for users with JavaScript disabled

doctype html
html(lang="en")
  head
    title Interactive Activities - Council for Economic Education
  body
    div#main
    noscript
      h1 Interactive Activities - Council for Economic Education
      p
        | This page requires JavaScript to function properly. Visit
        a(href="http://www.enable-javascript.com/") enable-javascript.com
        |  to learn how you can enable JavaScript in your web browser.
    script#activity-data(type='text/json')!= JSON.stringify(activities)
    if dev
      script(src='/bower_components/requirejs/require.js', data-main='/scripts/amd-config')
    else
      script(src='/scripts/main.js')


section.history
    ul.history-tabs
        li
            a(href="#", class="active", data-section-class="history-comments")
                span.icon.icon-comment
                span.tab-title(translate="COMMENTS.TITLE")
        li
            a(href="#", data-section-class="history-activity")
                span.icon.icon-issues
                span.tab-title(translate="ACTIVITY.TITLE")
    section.history-comments
        .comments-list
        div(tg-check-permission!="modify_<%- type %>", tg-toggle-comment, class="add-comment")
            textarea(ng-attr-placeholder="{{'COMMENTS.TYPE_NEW_COMMENT' | translate}}", ng-model!="<%- ngmodel %>.comment", tg-markitup="tg-markitup")
            <% if (mode !== "edit") { %>
            a(class="help-markdown", href="https://taiga.io/support/taiga-markdown-syntax/", target="_blank", title="{{'COMMON.WYSIWYG.MARKDOWN_HELP' | translate}}")
                span.icon.icon-help
                span(translate="COMMON.WYSIWYG.MARKDOWN_HELP")
            button(type="button", ng-disabled!="!<%- ngmodel %>.comment.length" title="{{'COMMENTS.COMMENT' | translate}}", translate="COMMENTS.COMMENT", class="button button-green save-comment")
            <% } %>
    section.history-activity.hidden
        .changes-list

Hide history and comments if user has no permissions

section.history(tg-check-permission!="modify_<%- type %>")
    ul.history-tabs
        li
            a(href="#", class="active", data-section-class="history-comments")
                span.icon.icon-comment
                span.tab-title(translate="COMMENTS.TITLE")
        li
            a(href="#", data-section-class="history-activity")
                span.icon.icon-issues
                span.tab-title(translate="ACTIVITY.TITLE")
    section.history-comments
        .comments-list
        div(tg-toggle-comment, class="add-comment")
            textarea(ng-attr-placeholder="{{'COMMENTS.TYPE_NEW_COMMENT' | translate}}", ng-model!="<%- ngmodel %>.comment", tg-markitup="tg-markitup")
            <% if (mode !== "edit") { %>
            a(class="help-markdown", href="https://taiga.io/support/taiga-markdown-syntax/", target="_blank", title="{{'COMMON.WYSIWYG.MARKDOWN_HELP' | translate}}")
                span.icon.icon-help
                span(translate="COMMON.WYSIWYG.MARKDOWN_HELP")
            button(type="button", ng-disabled!="!<%- ngmodel %>.comment.length" title="{{'COMMENTS.COMMENT' | translate}}", translate="COMMENTS.COMMENT", class="button button-green save-comment")
            <% } %>
    section.history-activity.hidden
        .changes-list


doctype html
html(lang='en')
  head
    meta(charset='utf-8')
    meta(name='viewport', content='width=device-width, minimum-scale=1.0')
    title ShieldBattery
    block headScripts
    script(type='text/javascript', src='/scripts/client.js', defer, async)
    link(href='https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic|Material+Icons',
        rel='stylesheet', type='text/css')
    link(href='/styles/site.css', rel='stylesheet', type='text/css')
    link(rel='icon', type='image/x-icon', href='/images/favicon.ico')
  body
    block content

Allow zooming on mobile, remove unnecessary Roboto weights.

doctype html
html(lang='en')
  head
    meta(charset='utf-8')
    title ShieldBattery
    block headScripts
    script(type='text/javascript', src='/scripts/client.js', defer, async)
    link(href='https://fonts.googleapis.com/css?family=Roboto:300,400,500|Material+Icons',
        rel='stylesheet', type='text/css')
    link(href='/styles/site.css', rel='stylesheet', type='text/css')
    link(rel='icon', type='image/x-icon', href='/images/favicon.ico')
  body
    block content


div(class="row")
  div(class="col-md-4 col-md-offset-4")
    form(ng-submit="signup()", id="signup-form", novalidate)
      div(class="form-group")
        label Email
        input(ng-model="signup.identifier", class="form-control", type="email" required)
      div(class="form-group")
        label Password
        input(ng-model="signup.password", class="form-control", type="password" required)
      div(class="row")
        div(class="col-md-6")
          div(class="form-group")
            label First Name
            input(ng-model="signup.first_name", class="form-control", type="text" required)
        div(class="col-md-6")
          div(class="form-group")
            label Last Name
            input(ng-model="signup.last_name", class="form-control", type="text" required)
      div(class="btn-toolbar")
        button(type="submit", class="btn btn-block btn-primary") Signup

Add names to input props

div(class="row")
  div(class="col-md-4 col-md-offset-4")
    form(ng-submit="signup()", id="signup-form", name="signupForm", novalidate)
      div(class="form-group")
        label Email
        input(ng-model="signup.identifier", class="form-control", type="email",
              name="email", required)
      div(class="form-group")
        label Password
        input(ng-model="signup.password", class="form-control", type="password",
              name="password", required)
      div(class="row")
        div(class="col-md-6")
          div(class="form-group")
            label First Name
            input(ng-model="signup.first_name", ng-minlength=1, ng-maxlength=50,
                  class="form-control", type="text", name="firstName", required)
        div(class="col-md-6")
          div(class="form-group")
            label Last Name
            input(ng-model="signup.last_name", ng-minlength=1, ng-maxlength=50,
                  class="form-control", type="text", name="firstName",  required)
      div(class="btn-toolbar")
        button(type="submit", class="btn btn-block btn-primary") Signup


h1 Blog acp page
p Last update #{self.req_time}

Move breadcrumbs stub from layout to current pages(ACP)

ul.breadcrumbs
  li: a(href='#') Breadcrumbs
  li: a(href='#') Should
  li: a(href='#') Be
  li: a(href='#') Here

h1 Blog acp page
p Last update #{self.req_time}


mixin blogpostList(posts, level)
  each post in posts
    +blogpost(post.title, post.date, post.author, post.categories, level, post.slug, post.read)
      p!= post.plot
      .blog-footer
        a(href='post/' + post.slug) Read more

mixin blogpost(title, date, author, postCategories, level, postSlug, postRead)
  article.blog-post
    .blog-title
      if level == 2
        h2
          a(href='post/' + postSlug) #{title}
      else
        h2(style='color: #009ee3') #{title}
    .dati #{date}
    .blog-body
      if block
        block
  hr

Add Author name to each blog

mixin blogpostList(posts, level)
  each post in posts
    +blogpost(post.title, post.date, post.author, post.categories, level, post.slug, post.read)
      p!= post.plot
      .blog-footer
        a(href='post/' + post.slug) Read more

mixin blogpost(title, date, author, postCategories, level, postSlug, postRead)
  article.blog-post
    .blog-title
      if level == 2
        h2
          a(href='post/' + postSlug) #{title}
      else
        h2(style='color: #009ee3') #{title}
    .blog-post-meta(style="font-weight: bold") #{date} by #{author.name}
    .blog-body
      if block
        block
  hr


ul.check-list
    li(ng-repeat="(checkKey, check) in checklist",
        translate='',
        ng-class="{\
            'text-info': !completed,\
            'text-success': check.status && completed,\
            'text-danger': !check.status && completed\
        }")
        span.glyphicon(ng-class="{\
            'glyphicon-ban-circle': !completed,\
            'glyphicon-ok-circle': check.status && completed,\
            'glyphicon-remove-circle': !check.status && completed\
        }")
        span(translate='{{::check.label}}')

Add new line at the end of the file


extends ../layout

block links
  link(rel="stylesheet" href="/styles/booking_ticket.css")

block content
  include head_bar.jade

  div#booking_hint
    img(src="/static/pictures/assets/getTicket_img_cellphone.png")
  div#input_hint
  div#booking_ticket_container
    table#booking_info_container
      tr
        td
          div#movie_info_poster
            img#movie_info_poster_img(src='')
        td
          div#movie_info_time
            div#movie_info_date date
            div#movie_info_show_time time
        td
          div#movie_info_loc
            div#movie_info_cinema cinema
            div#movie_info_cinema_hall cinema_hall
            div#movie_info_seats seats
    div#phone_check_container

block scripts
  script(type="text/javascript" src="/scripts/booking_ticket.js")
  script(type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js")

Clean useless contents in booking ticket page

extends ../layout

block links
  link(rel="stylesheet" href="/styles/booking_ticket.css")

block content
  include head_bar.jade

  div#booking_hint
    img(src="/static/pictures/assets/getTicket_img_cellphone.png")
  div#input_hint
  div#booking_ticket_container
    table#booking_info_container
      tr
        td
          div#movie_info_poster
            img#movie_info_poster_img(src='')
        td
          div#movie_info_time
            div#movie_info_date
            div#movie_info_show_time
        td
          div#movie_info_loc
            div#movie_info_cinema
            div#movie_info_cinema_hall
            div#movie_info_seats
    div#phone_check_container

block scripts
  script(type="text/javascript" src="/scripts/booking_ticket.js")
  script(type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js")


.modal-content
    .modal-header
        button.close(type='button', ng-click='modalInstance.dismiss()', aria-label='Close')
            span(aria-hidden='true') ×
        h4.modal-title(ng-if='error.title') {{ (translationPrefix + '.' + error.title) | translate }}
        h4.modal-title(ng-if='!error.title') {{ (translationPrefix + '.default-title') | translate }}
    .modal-body
        div.panel.panel-danger.error-panel(ng-repeat="(code, data) in error.errors")
            div.panel-heading {{ (translationPrefix + '.' + code) | translate }}
            div.panel-body
                p.error-data
                    span.error-line(ng-repeat="line in data.data | normalizeErrorData") {{ line }}
                p.error-help(ng-if="data.help") {{ data.help }}
    .modal-footer
        button.btn.btn-default(type='button', ng-click='modalInstance.dismiss()')
            span(translate='') modal.close

Fix display of errors with duplicate lines

.modal-content
    .modal-header
        button.close(type='button', ng-click='modalInstance.dismiss()', aria-label='Close')
            span(aria-hidden='true') ×
        h4.modal-title(ng-if='error.title') {{ (translationPrefix + '.' + error.title) | translate }}
        h4.modal-title(ng-if='!error.title') {{ (translationPrefix + '.default-title') | translate }}
    .modal-body
        div.panel.panel-danger.error-panel(ng-repeat="(code, data) in error.errors")
            div.panel-heading {{ (translationPrefix + '.' + code) | translate }}
            div.panel-body
                p.error-data
                    span.error-line(ng-repeat="line in data.data | normalizeErrorData track by $index") {{ line }}
                p.error-help(ng-if="data.help") {{ data.help }}
    .modal-footer
        button.btn.btn-default(type='button', ng-click='modalInstance.dismiss()')
            span(translate='') modal.close


mixin romtable(allRoms)
  div.table-responsive
    table.table.table-striped#rom-table
      thead
        tr
          th.col-device Device
          th.col-updatechannel Type
          th.col-filename Filename
          th.col-size Size
          th.col-date Date Added
      tbody
        each rom in allRoms
          tr
            - var deviceArticle = contents.devices[rom.DeviceId + '.json']
            td
              a(href="#{deviceArticle.url}") #{deviceArticle.metadata.name}
              if deviceArticle.metadata.displayName
                br
                small #{deviceArticle.metadata.displayName}
            td #{rom.updateChannel}
            td
              b Download:
              a(href="#{rom.downloadUrl}") #{rom.filename}
              if rom.subdirectory
                br
                small directory: #{rom.subdirectory}
              br
              small md5sum: #{rom.md5sum}
            td(data-order=rom.fileSize)
              if rom.fileSize
                | #{filesize(rom.fileSize)}
              else
                i (unknown)
            - var romTimestamp = new Date(rom.createdAt)
            td(data-order=romTimestamp.toISOString())
              | #{romTimestamp.toUTCString()}

Enable table-hover for the rom-table.

mixin romtable(allRoms)
  div.table-responsive
    table.table.table-striped.table-hover#rom-table
      thead
        tr
          th.col-device Device
          th.col-updatechannel Type
          th.col-filename Filename
          th.col-size Size
          th.col-date Date Added
      tbody
        each rom in allRoms
          tr
            - var deviceArticle = contents.devices[rom.DeviceId + '.json']
            td
              a(href="#{deviceArticle.url}") #{deviceArticle.metadata.name}
              if deviceArticle.metadata.displayName
                br
                small #{deviceArticle.metadata.displayName}
            td #{rom.updateChannel}
            td
              b Download:
              a(href="#{rom.downloadUrl}") #{rom.filename}
              if rom.subdirectory
                br
                small directory: #{rom.subdirectory}
              br
              small md5sum: #{rom.md5sum}
            td(data-order=rom.fileSize)
              if rom.fileSize
                | #{filesize(rom.fileSize)}
              else
                i (unknown)
            - var romTimestamp = new Date(rom.createdAt)
            td(data-order=romTimestamp.toISOString())
              | #{romTimestamp.toUTCString()}


extends layout

block css
  link(rel="stylesheet" href='css/pages/index.css')

block js
  script(src='js/index.js')

block content
  h1 hi

Add html structure for front page

extends layout

block css
  link(rel="stylesheet" href='css/pages/index.css')

block js
  script(src='js/index.js')

block content
  .popcorn-layer
  .logo-layer
    img.logo(src='')
    .login-area
      | facebook login
    .popcorn


ul.post-items
  each post in page.posts.toArray()
    li.post-item
      h3.post-item__title
        a(href=url_for(post.path))= post.title

Add lede to archive page

ul.post-items
  each post in page.posts.toArray()
    li.post-item
      h3.post-item__title
        a(href=url_for(post.path))= post.title
      p= post.lede


extends layout

block content
    .page-header
        h1 Vote

    p Drag and drop to rank the countries in order of preference!
    script(src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js")
    script(src="javascripts/jquery-ui-1.10.4.custom.min.js")
    script(src="javascripts/jquery.ui.touchpunch.min.js")

    form#vote-form(action="/")
        ul#sortable.list-unstyled
            - each country in countries
                li(id=country.id)
                    p.bg-info #{country.name}
        p
            input(type="submit" value="Submit").btn.btn-primary.btn-lg

    script(src="javascripts/vote-form.js" type="text/javascript" charset="utf-8")

Add data-role="listview" to list to try and get it working on mobile

extends layout

block content
    .page-header
        h1 Vote

    p Drag and drop to rank the countries in order of preference!
    script(src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js")
    script(src="javascripts/jquery-ui-1.10.4.custom.min.js")
    script(src="javascripts/jquery.ui.touchpunch.min.js")

    form#vote-form(action="/")
        ul#sortable.list-unstyled(data-role="listview")
            - each country in countries
                li(id=country.id)
                    p.bg-info #{country.name}
        p
            input(type="submit" value="Submit").btn.btn-primary.btn-lg

    script(src="javascripts/vote-form.js" type="text/javascript" charset="utf-8")


//- 💫 INCLUDES > TOP NAVIGATION

include _mixins

nav.c-nav.u-text.js-nav(class=landing ? "c-nav--theme" : null)
    a(href='/') #[+logo]

    if SUBSECTION != "index"
        .u-text-label.u-padding-small.u-hidden-xs=SUBSECTION

    ul.c-nav__menu
        if ALPHA
            - var NAVIGATION = { "Usage": "/docs/usage", "Reference": "/docs/api" }

        each url, item in NAVIGATION
            li.c-nav__menu__item(class=(url == "/") ? "u-hidden-xs" : null)
                +a(url)=item

        li.c-nav__menu__item
            +a(gh("spaCy"))(aria-label="GitHub").u-hidden-xs #[+icon("github", 20)]

Fix overwriting of navigation in ALPHA mode

//- 💫 INCLUDES > TOP NAVIGATION

include _mixins

nav.c-nav.u-text.js-nav(class=landing ? "c-nav--theme" : null)
    a(href='/') #[+logo]

    if SUBSECTION != "index"
        .u-text-label.u-padding-small.u-hidden-xs=SUBSECTION

    ul.c-nav__menu
        - var NAV = ALPHA ? { "Usage": "/docs/usage", "Reference": "/docs/api" } : NAVIGATION

        each url, item in NAV
            li.c-nav__menu__item(class=(url == "/") ? "u-hidden-xs" : null)
                +a(url)=item

        li.c-nav__menu__item
            +a(gh("spaCy"))(aria-label="GitHub").u-hidden-xs #[+icon("github", 20)]


template(name='home')
	.jumbotron.shadow.text-center
		h1 {{_ "ApplicationName"}}
		p {{_ "appTeaserPhrase"}}
		if currentUser
			+creationGame
		else
			p {{_ "loginToBeginTakingStats"}}
	div
		h2 {{_ "followDirect"}}
		.row
			each game
				+GameCard
			else
				p.no-games {{_ "noLiveGames"}}
		p
			a(href="{{pathFor 'liveGames'}}") {{_ "orSelectARunningGame"}}
	div
		h2 {{_ "seeEndedGames"}}
		.row
			each endedGame
				+GameCard
			else
				p.no-games {{_ "noLiveGames"}}
		p
			a(href="{{pathFor 'liveGames'}}") {{_ "orSelectAnEndedGame"}}

Add footer to the template

template(name='home')
	.jumbotron.shadow.text-center
		h1 {{_ "ApplicationName"}}
		p {{_ "appTeaserPhrase"}}
		if currentUser
			+creationGame
		else
			p {{_ "loginToBeginTakingStats"}}
	div
		h2 {{_ "followDirect"}}
		.row
			each game
				+GameCard
			else
				p.no-games {{_ "noLiveGames"}}
		p
			a(href="{{pathFor 'liveGames'}}") {{_ "orSelectARunningGame"}}
	div
		h2 {{_ "seeEndedGames"}}
		.row
			each endedGame
				+GameCard
			else
				p.no-games {{_ "noLiveGames"}}
		p
			a(href="{{pathFor 'liveGames'}}") {{_ "orSelectAnEndedGame"}}
	+footer


if artwork.is_buy_nowable
  .artwork-auction__buy-now
    .artwork-auction__buy-now__label
      | Buy Now

    .artwork-auction__buy-now__amount
      = artwork.sale_message

    form.artwork-auction__buy-now__form.js-artwork-auction-buy-now-form
      button.avant-garde-button-black.is-block( class='js-artwork-auction-buy-now' )
        | Buy Now

Remove unnecessary js class from buy now auction form

if artwork.is_buy_nowable
  .artwork-auction__buy-now
    .artwork-auction__buy-now__label
      | Buy Now

    .artwork-auction__buy-now__amount
      = artwork.sale_message

    form.artwork-auction__buy-now__form
      button.avant-garde-button-black.is-block( class='js-artwork-auction-buy-now' )
        | Buy Now


-@ val books: Seq[(String, String)]
- attributes("title") = "Alexandria"

div.container
        div(class="panel panel-default" id="catalogue")
            div.panel-heading
                strong Catalogue
            table.table.table-hover
                th Title
                th Author
                - for( (titlestring, author) <- books)
                    tr
                        td=titlestring
                        td=author

Fix bad indent in template


span.icon.icon-icon-browse
h3.text=t('sidebar.browse')
span.short-text=t('sidebar.browse_short')
span.action-button.close-button(type="button")
  span.icon-icon-close

Hide redundant text from AT.

span.icon.icon-icon-browse
h3.text=t('sidebar.browse')
span(aria-hidden='true').short-text=t('sidebar.browse_short')
span.action-button.close-button(type="button")
  span.icon-icon-close


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')

Update jQuery to version 2.1.4

script(src='//ajax.googleapis.com/ajax/libs/jquery/2.1.4/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')


extends layout

block content
  div(class='ui segment narrow')
    h3(class='ui segment stacked inverted blue block header') Traces of #{deviceId}
    form(class='ui form', id='device-form')
      input(type='hidden', name='deviceId', value='#{deviceId}')
    div(class='divided very relaxed list', id='records-list', style='display: none;')
      div(class='item', id='sample-item', style='display: none;')
        div(class='content')
          div(class='location') Longitude: ...;Latitude: ...
          div(class='timestamp') DateTime: ...

  script(type='text/javascript', src='/javascripts/records-fetching.js')

Revert "quick fix of the shit"

extends layout

block content
  div(class='ui segment narrow')
    h3(class='ui segment stacked inverted blue block header') Traces of #{deviceId}
    form(class='ui form', id='device-form')
      input(type='hidden', name='userName', value='#{user.userName}')
      input(type='hidden', name='deviceId', value='#{deviceId}')
    div(class='divided very relaxed list', id='records-list', style='display: none;')
      div(class='item', id='sample-item', style='display: none;')
        div(class='content')
          div(class='location') Longitude: ...;Latitude: ...
          div(class='timestamp') DateTime: ...

  script(type='text/javascript', src='/javascripts/records-fetching.js')


doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/css/style.css')
    script(src='jquery/dist/jquery.min.js')
    script(src='materialize/bin/materialize.js')
    meta(charset="utf-8")
    meta(name="viewport" content="width=device-width, initial-scale=1.0")

    block header
  body.valign-wrapper(style="height: 100%;")
    block content

Add materialize css so styles actually load

doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/css/style.css')
    link(rel='stylesheet', href='/materialize/bin/materialize.css')
    script(src='jquery/dist/jquery.min.js')
    script(src='materialize/bin/materialize.js')
    meta(charset="utf-8")
    meta(name="viewport" content="width=device-width, initial-scale=1.0")

    block header
  body.valign-wrapper(style="height: 100%;")
    block content


doctype html
html
  head
    title Clock
    link(rel="stylesheet", href="/css/clock.css")
    link(rel="stylesheet", href="/css/vendor/jquery.marquee.css")
    script(type="text/javascript", src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js")
    script(type="text/javascript", src="http://momentjs.com/downloads/moment.min.js")
    script(type="text/javascript", src="/js/jquery.marquee.js")
    script(type="text/javascript", src="/js/clock.js")
  body
    #marquee
      ul.marquee
        - for (var i = 0; i < marquees.length; i++) {
          li= marquees[i].text
        - }
    #wrapper
      #clock
        p#date
        p#time
      #schedule
        ol
          - for (var i = 0; i < periods.length; i++) {
              li.
                #{periods[i].text}: <time datetime="#{periods[i].datetime.start}">#{periods[i].normalized.start}</time> – <time datetime="#{periods[i].datetime.finish}">#{periods[i].normalized.finish}</time>
          - }

Use http non-specific js link

doctype html
html
  head
    title Clock
    link(rel="stylesheet", href="/css/clock.css")
    link(rel="stylesheet", href="/css/vendor/jquery.marquee.css")
    script(type="text/javascript", src="//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js")
    script(type="text/javascript", src="//momentjs.com/downloads/moment.min.js")
    script(type="text/javascript", src="/js/jquery.marquee.js")
    script(type="text/javascript", src="/js/clock.js")
  body
    #marquee
      ul.marquee
        - for (var i = 0; i < marquees.length; i++) {
          li= marquees[i].text
        - }
    #wrapper
      #clock
        p#date
        p#time
      #schedule
        ol
          - for (var i = 0; i < periods.length; i++) {
              li.
                #{periods[i].text}: <time datetime="#{periods[i].datetime.start}">#{periods[i].normalized.start}</time> – <time datetime="#{periods[i].datetime.finish}">#{periods[i].normalized.finish}</time>
          - }


extends layout

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

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

  h2 Current library
  if scriptUrl
    a(href=scriptUrl)= scriptUrl
  else
    p none

  h2 All libraries
  ul
    each package in libraryUrls
      li
        a(href='?scriptUrl='+encodeURIComponent(package.url))= package.name

  script(src=scriptUrl)

Use a select input in a form instead of the list of links for package selection

extends layout

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

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

  h2 Current library
  if scriptUrl
    a(href=scriptUrl)= scriptUrl
  else
    p none

  h2 All libraries
  form
    select(name='scriptUrl')
      each package in libraryUrls
        option(value=package.url)= package.name
    input(type='submit', value='Load')

  script(src=scriptUrl)


include includes/head
body
    include includes/nav
    .container
        .text-center.tw-template
            h1
                img(src="assets/img/good_day.gif" alt="I got to say it was a good day, a quote from Ice Cube's 'Today Was a Good Day'")
            p.lead Was it really? Join to begin rating your days on a 1 to 5 scale.

    include includes/scripts
    include includes/foot

Make ice cube gif centered and bootstrap responsive

include includes/head
body
    include includes/nav
    .container
        .text-center.tw-template
            h1
                img.img-responsive(style="margin: 0 auto;" src="assets/img/good_day.gif" alt="I got to say it was a good day, a quote from Ice Cube's 'Today Was a Good Day'")
            p.lead Was it really? Join to begin rating your days on a 1 to 5 scale.

    include includes/scripts
    include includes/foot


extends layout

block content

  h3 Auth0 passport-auth0-oidc sample
  br
  button.btn.btn-primary(onclick="signin()") Login

block script
  script(src='https://cdn.auth0.com/js/lock/11.0.0-beta.1/lock.min.js')
  script.

    function signin() {
      var lock = new Auth0Lock('#{env.AUTH0_CLIENT_ID}', '#{env.AUTH0_DOMAIN}', {
        auth: {
          redirectUrl: '#{env.AUTH0_CALLBACK_URL}',
          responseType: 'code',
          params: {
            scope: 'openid'
          }
        }
      });

      lock.show();
    }

Update to use the released version of Lock 11

extends layout

block content

  h3 Auth0 passport-auth0-oidc sample
  br
  button.btn.btn-primary(onclick="signin()") Login

block script
  script(src='https://cdn.auth0.com/js/lock/11.0.0/lock.min.js')
  script.

    function signin() {
      var lock = new Auth0Lock('#{env.AUTH0_CLIENT_ID}', '#{env.AUTH0_DOMAIN}', {
        auth: {
          redirectUrl: '#{env.AUTH0_CALLBACK_URL}',
          responseType: 'code',
          params: {
            scope: 'openid'
          }
        }
      });

      lock.show();
    }


extends layout/layout

block vars
  - bodyClass = "func--error-500-page"
  - pageTitle = "!Error-500"
  - pageTitleDataL8n = "content:error-500/title"

block headerScripts

block content
  .middle-container
    h1.page-title.clj--error-page-header(data-l8n="content:error-500/page-header") !Sorry something went wrong
    p.clj--error-page-intro(data-l8n="content:error-500/page-intro") !An unexpected error has occured, please try again. We apologise for any inconvenience.
    div.clj--error-page-content(data-l8n="html:error-500/page-content")
      h2 !What do I do now?
        ul
          li !Return home

Add a box around the error 500 page

extends layout/layout

block vars
  - bodyClass = "func--error-500-page"
  - pageTitle = "!Error-500"
  - pageTitleDataL8n = "content:error-500/title"

block headerScripts

block content
  .box
    h1.page-title.clj--error-page-header(data-l8n="content:error-500/page-header") !Sorry something went wrong
    p.clj--error-page-intro(data-l8n="content:error-500/page-intro") !An unexpected error has occured, please try again. We apologise for any inconvenience.
    div.clj--error-page-content(data-l8n="html:error-500/page-content")
      h2 !What do I do now?
        ul
          li !Return home


title= article.get('thumbnail_title')
meta( property="og:title", content=article.get('thumbnail_title') )
meta( name="description", content=article.get('thumbnail_teaser') )
meta( property="og:description", content=article.get('thumbnail_teaser') )
meta( property="twitter:description", content=article.get('thumbnail_teaser') )
link( rel="canonical", href=(sd.APP_URL + '/article/' + article.get('slug')) )
meta( property="og:url", content=(sd.APP_URL + '/article/' + article.get('slug')) )
meta( property="og:type", content="article" )
meta( property="og:published_time", content=article.get('published_at') )
meta( property="twitter:card", content="summary_large_image" )
meta( property="og:image", content=article.get('thumbnail_image') )
meta( property="news_keywords", content=article.get('tags').join(','))
if sd.INCLUDE_ESCAPED_FRAGMENT
  meta( name='fragment', content='!' )

Fix for case when no tags are entered

title= article.get('thumbnail_title')
meta( property="og:title", content=article.get('thumbnail_title') )
meta( name="description", content=article.get('thumbnail_teaser') )
meta( property="og:description", content=article.get('thumbnail_teaser') )
meta( property="twitter:description", content=article.get('thumbnail_teaser') )
link( rel="canonical", href=(sd.APP_URL + '/article/' + article.get('slug')) )
meta( property="og:url", content=(sd.APP_URL + '/article/' + article.get('slug')) )
meta( property="og:type", content="article" )
meta( property="og:published_time", content=article.get('published_at') )
meta( property="twitter:card", content="summary_large_image" )
meta( property="og:image", content=article.get('thumbnail_image') )
meta( property="news_keywords", content=article.get('tags') && article.get('tags').join(',')
if sd.INCLUDE_ESCAPED_FRAGMENT
  meta( name='fragment', content='!' )


template(name="cover")
	.grid-item.mangas-cover
		a.thumbnail(href="{{pathFor 'tomeDetails'}}")
			img(src="#{cover}" alt="#{title}")

Change the alt of the picture to mangasName in place of title

template(name="cover")
	.grid-item.mangas-cover
		a.thumbnail(href="{{pathFor 'tomeDetails'}}")
			img(src="#{cover}" alt="#{mangasName}")


!!!
html(lang="en")
  head
    != partial("_shared/head")
    != partial("_shared/font-face")
  body
    if current.source == 'index'
      .container.container--articles(role="main")
        != yield
    else
      != partial(current.path[0] + "/_nest", { yield: yield })
    != partial("_shared/footer")
  if disqus
    != partial("_shared/comment-count")
  if analytics
    != partial("_shared/analytics")

Improve conditional to restore 404 content

!!!
html(lang="en")
  head
    != partial("_shared/head")
    != partial("_shared/font-face")
  body
    if current.source == 'index' || current.path.length == 1
      .container.container--articles(role="main")
        != yield
    else
      != partial(current.path[0] + "/_nest", { yield: yield })
    != partial("_shared/footer")
  if disqus
    != partial("_shared/comment-count")
  if analytics
    != partial("_shared/analytics")


doctype html
html
  meta(charset="utf-8")
  meta(http-equiv="x-ua-compatible" content="ie=edge")

  title EXPER3 2015

  link(rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/3.0.3/normalize.min.css")

  script(src="scripts/placeholder.js")

  body
    div Test

Remove Redundant doctype from Jade


doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/c3/c3.css')
    link(rel='stylesheet', href='/dist/style.min.css')
    script(src='jquery/dist/jquery.min.js')
    script(src='/d3/d3.min.js')
    script(src='/c3/c3.min.js')
  body
    block content
    script(src='/dist/production.min.js')

Revert to using non-minified for now

doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/c3/c3.css')
    link(rel='stylesheet', href='/dist/style.min.css')
    script(src='jquery/dist/jquery.min.js')
    script(src='/d3/d3.min.js')
    script(src='/c3/c3.min.js')
  body
    block content
    //- script(src='/dist/production.min.js')
    script(src='/javascripts/visualizer.js')
    script(src='/javascripts/fetchMessages.js')
    script(src='/javascripts/login.js')


mixin updatetypefiltersidebar()
  div.sidebar-nav.well.hidden(data-filter-area-for='.col-updatechannel', data-visible-with-js-enabled)
    ul.nav.nav-pills.nav-stacked
      li.nav-header
        h3 Type
      li.active
        a(href='#', data-filter-value='', title="Show the files for all update-types") all

Use the same wording for "Update type" as the CMUpdater app.

mixin updatetypefiltersidebar()
  div.sidebar-nav.well.hidden(data-filter-area-for='.col-updatechannel', data-visible-with-js-enabled)
    ul.nav.nav-pills.nav-stacked
      li.nav-header
        h3 Update type
      li.active
        a(href='#', data-filter-value='', title="Show the files for all update-types") all


.media#profile-block(data-profile-id="#{profile.id}")
  span.pull-left
    if profile.image && profile.image.url
      img.img-rounded.media-object(src="#{profile.image.url}", width="128", height="128")
    else
      img.img-rounded.media-object(src="/images/default.png", width="128", height="128")
  .media-body
  .pull-right
    - var person = profile
    include ./profile-responses.jade
  h1.media-header= profile.displayName
    small
        if profile.id && profile.id.substr(0, 5) == 'acct:'
          #{profile.id.substr(5)}
        else
          #{profile.preferredUsername}

    if profile.location
      p.location= profile.location.displayName
    if profile.summary
      p.summary= profile.summary
    // TODO: HOME PAGE HERE

Fix profile descriptions appearing huge


ul.g-item-list
  each item in items
    li.g-item-list-entry
      if checkboxes
        input.g-list-checkbox(type="checkbox", g-item-cid="#{item.cid}")
      a.g-item-list-link.g-right-border(g-item-cid="#{item.cid}")
        i.icon-doc-text-inv
        | #{item.get('name')}
      a.g-right-border(href=item.downloadUrl())
        i.icon-download
      a.g-view-inline(target="_blank" href=item.downloadUrl({contentDisposition: 'inline'}))
        i.icon-eye
      .g-item-size #{girder.formatSize(item.get('size'))}
  if (hasMore)
    li.g-show-more
      a.g-show-more-items
        i.icon-level-down
        | Show more items...

Remove extra separator between action icons

ul.g-item-list
  each item in items
    li.g-item-list-entry
      if checkboxes
        input.g-list-checkbox(type="checkbox", g-item-cid="#{item.cid}")
      a.g-item-list-link.g-right-border(g-item-cid="#{item.cid}")
        i.icon-doc-text-inv
        | #{item.get('name')}
      a(href=item.downloadUrl())
        i.icon-download
      a.g-view-inline(target="_blank" href=item.downloadUrl({contentDisposition: 'inline'}))
        i.icon-eye
      .g-item-size #{girder.formatSize(item.get('size'))}
  if (hasMore)
    li.g-show-more
      a.g-show-more-items
        i.icon-level-down
        | Show more items...


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

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

Bring branch update with develop

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

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


extends ../layout

block content
  .fill.flex-center.flex-column
    unless replay
      p No replay found.
    else
      h1.mt-header.mb1
        = replay.getFormat()
        \: #{replay.getName()}
      #replay.relative(style = 'width: 100%; height: 100%;')

block footer
  if replay
    script.
      var PokeBattle = {};
      PokeBattle.autoConnect = false;
    script(src=asset_path('js/data.js', {fingerprint: replay.version('js/data.js')}))
    script(src=asset_path('js/vendor.js', {fingerprint: replay.version('js/vendor.js')}))
    script(src=asset_path('js/templates.js', {fingerprint: replay.version('js/templates.js')}))
    script(src=asset_path('js/replays.js', {fingerprint: replay.version('js/app.js')}))
    script.
      var replay = !{JSON.stringify(replay.toJSON())};
      var battle = new Battle({
        id: replay.battleId,
        format: replay.format,
        numActive: replay.numActive,
        playerIds: replay.players
      });
      var $battleWindow = $(window.JST['battle_window']({
        battle: battle,
        window: window
      }));

      $('#replay').html($battleWindow);

      battle.view = new BattleView({
        el: $battleWindow,
        model: battle
      });

      battle.update(replay.contents);

Fix display of replay name.

extends ../layout

block content
  .fill.flex-center.flex-column
    unless replay
      p No replay found.
    else
      h1.mt-header.mb1
        = replay.getFormat()
        = ": " + replay.getName()
      #replay.relative(style = 'width: 100%; height: 100%;')

block footer
  if replay
    script.
      var PokeBattle = {};
      PokeBattle.autoConnect = false;
    script(src=asset_path('js/data.js', {fingerprint: replay.version('js/data.js')}))
    script(src=asset_path('js/vendor.js', {fingerprint: replay.version('js/vendor.js')}))
    script(src=asset_path('js/templates.js', {fingerprint: replay.version('js/templates.js')}))
    script(src=asset_path('js/replays.js', {fingerprint: replay.version('js/app.js')}))
    script.
      var replay = !{JSON.stringify(replay.toJSON())};
      var battle = new Battle({
        id: replay.battleId,
        format: replay.format,
        numActive: replay.numActive,
        playerIds: replay.players
      });
      var $battleWindow = $(window.JST['battle_window']({
        battle: battle,
        window: window
      }));

      $('#replay').html($battleWindow);

      battle.view = new BattleView({
        el: $battleWindow,
        model: battle
      });

      battle.update(replay.contents);


article.help
    .container-fluid
        section.row-fluid.summary
            .summary.span3
                h3 LOAD CSV
                p.lead Load data from a CSV file
            .details.span9
                p
                    | The
                    code LOAD CSV
                    |  clause instructs Neo4j to load data from a CSV file
                    | located at the given URL. This is typically used
                    | with
                    code CREATE
                    |  and
                    code MERGE
                    |  to import tabular data into the graph.
                table.table-condensed.table-help
                    tr
                        th Reference:
                        td
                            code
                                a(href='http://docs.neo4j.org/chunked/{{neo4j.version}}/cypher-import.html') LOAD CSV
                            |  manual page
                    tr
                        th Related:
                        td
                            a(help-topic='CREATE') :help CREATE
                            |
                            a(help-topic='MERGE') :help MERGE
                            |
                            a(help-topic='cypher') :help Cypher
        section.row-fluid.example
            .span9.offset3
                figure
                    pre.code.runnable.
                      LOAD CSV FROM "http://<insert person.csv>" AS line
                      MERGE (n:Person {id: line[0]})
                      SET n.name = line[1]
                      RETURN n
                    figcaption Import Person nodes from a CSV file into the graph

Add a reference to USING PERIODIC COMMIT to :help LOAD CSV in the browser

article.help
    .container-fluid
        section.row-fluid.summary
            .summary.span3
                h3 LOAD CSV
                p.lead Load data from a CSV file
            .details.span9
                p
                    | The
                    code LOAD CSV
                    |  clause instructs Neo4j to load data from a CSV file
                    | located at the given URL. This is typically used
                    | with
                    code CREATE
                    |  and
                    code MERGE
                    |  to import tabular data into the graph. If you are
                    |  importing a substantially sized data set, you should
                    |  consider using
                    code LOAD CSV
                    |  in combination with
                    code USING PERIODIC COMMIT
                    |  .
                table.table-condensed.table-help
                    tr
                        th Reference:
                        td
                            code
                                a(href='http://docs.neo4j.org/chunked/{{neo4j.version}}/cypher-import.html') LOAD CSV
                            |  manual page;
                            code
                                a(href='http://docs.neo4j.org/chunked/{{neo4j.version}}/cypher-periodic-commit.html') USING PERIODIC COMMIT
                            |  manual page
                    tr
                        th Related:
                        td
                            a(help-topic='CREATE') :help CREATE
                            |
                            a(help-topic='MERGE') :help MERGE
                            |
                            a(help-topic='cypher') :help Cypher
        section.row-fluid.example
            .span9.offset3
                figure
                    pre.code.runnable.
                      LOAD CSV FROM "file://./person.csv" AS line
                      MERGE (n:Person {id: toInt(line[0])})
                      SET n.name = line[1]
                      RETURN n
                    figcaption Import Person nodes from a CSV file into the graph