#assignment-menu
  if (assignmentTitle.length > 0)
    div#assignmentTitle #{assignmentTitle}
  else
    div#assignmentTitle Assignment #{assignmentNumber}

  if (assignmentDescription.length > 0)
    div#assignmentDescription #{assignmentDescription}

  if (owner)
        div(style='margin:10px 10px 10px 10px;')
            div.switch-toggle.well
                input#public(type='radio', name='view',
                    onclick='toggleShare(true)')
                label(for='public') Public
                input#private(type='radio', name='view',
                    onclick='toggleShare(false)')
                label(for='private') Private
                a.btn.btn-primary

  button(class='optionButton', id='reset')
          label Reset view
  if (owner)
      if (linkResources.script[0] == "/js/graph.js")
        button(class='optionButton', id='save')
          label Save Positions

      //button#saveTransform.optionButton(
      //        onclick='saveTransform()')
      //        label Save Zoom and Translation

      button(class='optionButton btn-danger pad', id='delete')
              label Delete Assignment

  span#collapseExpand →

script(src='/js/Bridges/assignment-menu.js')

Add button to save positions for canvas graphs

#assignment-menu
  if (assignmentTitle.length > 0)
    div#assignmentTitle #{assignmentTitle}
  else
    div#assignmentTitle Assignment #{assignmentNumber}

  if (assignmentDescription.length > 0)
    div#assignmentDescription #{assignmentDescription}

  if (owner)
        div(style='margin:10px 10px 10px 10px;')
            div.switch-toggle.well
                input#public(type='radio', name='view',
                    onclick='toggleShare(true)')
                label(for='public') Public
                input#private(type='radio', name='view',
                    onclick='toggleShare(false)')
                label(for='private') Private
                a.btn.btn-primary

  button(class='optionButton', id='reset')
          label Reset view
  if (owner)
      if (linkResources.script[0] == "/js/graph.js" || linkResources.script[0] == "/js/graph-canvas.js")
        button(class='optionButton', id='save')
          label Save Positions

      //button#saveTransform.optionButton(
      //        onclick='saveTransform()')
      //        label Save Zoom and Translation

      button(class='optionButton btn-danger pad', id='delete')
              label Delete Assignment

  span#collapseExpand →

script(src='/js/Bridges/assignment-menu.js')


extends layouts/default

block content
  h2 Maki Plugins

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

Add labels for version, coverage.

extends layouts/default

block content
  h2 Maki Plugins

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


extends layout

mixin displayFeature(feature)
  .panel.panel-default
    .panel-heading: h2.panel-title!= helpers.highlightQuery(feature.name, query)
    dl.dl-horizontal.panel-body: each example in feature.examples
      dt!= helpers.highlightQuery(example.technology, query)
      each snippet in example.snippets
        dd: code!= helpers.highlightQuery(snippet, query)

block content
  // header
  .page-header
    h1
      a(href='/') Rose
      small An interactive, technical, and openly editable Rosetta Stone for developers.

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

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

  // footer
  hr
  footer
    | © 2014
    a(href='http://thenickperson.com') Nicolas McCurdy
    a.pull-right(href='https://github.com/nicolasmccurdy/rose' target='_blank').
      GitHub Repository

Fix the link to my site

extends layout

mixin displayFeature(feature)
  .panel.panel-default
    .panel-heading: h2.panel-title!= helpers.highlightQuery(feature.name, query)
    dl.dl-horizontal.panel-body: each example in feature.examples
      dt!= helpers.highlightQuery(example.technology, query)
      each snippet in example.snippets
        dd: code!= helpers.highlightQuery(snippet, query)

block content
  // header
  .page-header
    h1
      a(href='/') Rose
      small An interactive, technical, and openly editable Rosetta Stone for developers.

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

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

  // footer
  hr
  footer
    | © 2014
    a(href='http://nicolasmccurdy.com/') Nicolas McCurdy
    a.pull-right(href='https://github.com/nicolasmccurdy/rose' target='_blank').
      GitHub Repository


.inner
  h4 Information
  h5 Reference

  ul.undecorated
    li
      a(href='http://neo4j.com/docs/{{neo4j.version | neo4jdoc }}/') Neo4j Manual
    li
      a(href='http://neo4j.com/developer/') Developer Resources

  h5 Guides

  ul
    li
      a(play-topic='intro') Getting started
    li
      a(play-topic='graphs') Basic graph concepts
    li
      a(play-topic='cypher') Writing Cypher queries

  h5 Example graphs
  ul
    li
      a(play-topic='movie-graph') Movie Graph
    li
      a(play-topic='northwind-graph') Northwind Graph
    li
      a(play-topic='query-template') Query Templates

  h5 Help
  ul
    li
      a(help-topic='cypher') Cypher syntax
    li
      a(help-topic='help') Help command
    li
      a(help-topic='commands') Available commands
    li
      a(help-topic='keys') Keyboard shortcuts

footer
  ul
    li
      a.fa.fa-cube(href="../webadmin")  Webadmin

Remove link to webadmin in browser drawer.


!!!
html
  head
    title "Mapper Maker"
    link(href="/public/css/all.css",rel="stylesheet")
    script(src="index.js")
  body
    p jazzycat.emit('meow');

Fix to path of all.js

!!!
html
  head
    title "Mapper Maker"
    link(href="/public/css/all.css",rel="stylesheet")
    script(src="/public/js/all.js")
  body
    p jazzycat.emit('meow');


template(name="editCardSpentTime")
  .edit-card-time
    form.edit-time
      .fields
        label(for="time") {{_ 'time'}}
        input.js-time-field#time(type="number" step="0.01" name="time" value="{{card.getSpentTime}}" placeholder=timeFormat autofocus)
        label(for="overtime") {{_ 'overtime'}}
        a.js-toggle-overtime
          .materialCheckBox#overtime(class="{{#if getIsOvertime}}is-checked{{/if}}" name="overtime")

      if error.get
        .warning {{_ error.get}}
      button.primary.wide.left.js-submit-time(type="submit") {{_ 'save'}}
      button.js-delete-time.negate.wide.right {{_ 'delete'}}

template(name="timeBadge")
  if canModifyCard
    a.js-edit-time.card-time(title="{{showTitle}}" class="{{#if getIsOvertime}}card-label-red{{else}}card-label-green{{/if}}")
      | {{showTime}}
  else
    a.card-time(title="{{showTitle}}" class="{{#if getIsOvertime}}card-label-red{{else}}card-label-green{{/if}}")
      | {{showTime}}

Put checkbox and label in same row

template(name="editCardSpentTime")
  .edit-card-time
    form.edit-time
      .fields
        label(for="time") {{_ 'time'}}
        input.js-time-field#time(type="number" step="0.01" name="time" value="{{card.getSpentTime}}" placeholder=timeFormat autofocus)
        .check-div
          a.flex.js-toggle-overtime
            .materialCheckBox#overtime(class="{{#if getIsOvertime}}is-checked{{/if}}" name="overtime")
            span {{_ 'overtime'}}

      if error.get
        .warning {{_ error.get}}
      button.primary.wide.left.js-submit-time(type="submit") {{_ 'save'}}
      button.js-delete-time.negate.wide.right {{_ 'delete'}}

template(name="timeBadge")
  if canModifyCard
    a.js-edit-time.card-time(title="{{showTitle}}" class="{{#if getIsOvertime}}card-label-red{{else}}card-label-green{{/if}}")
      | {{showTime}}
  else
    a.card-time(title="{{showTitle}}" class="{{#if getIsOvertime}}card-label-red{{else}}card-label-green{{/if}}")
      | {{showTime}}


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

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

	body
		block content

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

Include analytics and correct css output.

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

		link(rel='stylesheet' href='//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css')
		link(rel='stylesheet' href='/styles/out.min.css')
		block styles
		include includes/analytics.html

	body
		block content

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


!!!
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    strong Hello World

    script(src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js)

Include css and js dependency for bootstrap

!!!
html
  head
    title= title
    link(rel='stylesheet', href='/libs/bootstrap/css/bootstrap.min.css')
    link(rel='stylesheet', href='/libs/bootstrap/css/bootstrap-responsive.min.css')
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    strong Hello World

    script(src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js")
    script(src="/libs/bootstrap/js/bootstrap.min.js")


extends layout

block content
  .page-header
    h3 Contact Form

  form.form-horizontal(method='POST')
    input(type='hidden', name='_csrf', value=_csrf)
    .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(name='message', id='message', rows='7')
    .form-group
      .col-sm-offset-2.col-sm-8
        button.btn.btn-primary(type='submit')
          i.fa.fa-envelope
          | Send

Update on the mission page in views folder

extends layout

block content
  .page-header
    h3 New Mission

  form.form-horizontal(method='POST')
    input(type='hidden', name='_csrf', value=_csrf)
    .form-group
      label(class='col-sm-2 control-label', for='name') Mission Type
      .col-sm-8
        select.form-control(type='text', name='missiontype', id='missiontype', autofocus=true)
          option(value='Video Recording') Video Recording
          option(value='Photograph Surveilance') Photograph Surveilance
          option(value='Object Point Cloud') object Point Cloud
          option(value='Orthophoto') Orthophoto
          option(value='Count objects') Count Objects
    .form-group
      label(class='col-sm-2 control-label', for='email') Mission Description
      .col-sm-8
        textarea.form-control(rows='7',type='text', name='missiondesc', id='missiondesc')
    .form-group
      label(class='col-sm-2 control-label', for='message') date/time
      .col-sm-8
        input.form-control(name='missiondate', id='missiondate',  type="datetime-local"  )
    .form-group
      label(class='col-sm-2 control-label', for='email') Budget
      .col-sm-8
        input.form-control(type='text', name='budget', id='budget')
    .form-group
      .col-sm-offset-2.col-sm-8
        button.btn.btn-primary(type='submit')
          | Submit


doctype 5
html
  head
    meta(charset='utf-8')
    title= title
    meta(name='viewport', content='width=device-width, initial-scale=1.0')
    link(rel='stylesheet', href='/bootstrap/css/bootstrap.min.css')
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='/bootstrap/css/bootstrap-responsive.min.css')
  body
    .navbar.navbar-inverse.navbar-fixed-top
      .navbar-inner
        .container
          a.btn.btn-navbar(data-toggle='collapse', data-target='.nav-collapse')
            span.icon-bar
            span.icon-bar
            span.icon-bar
          a.brand(href='#') Express
          .nav-collapse.collapse
            form.navbar-form.pull-right(action='/sessions', method='post')
              input.span2(type='text', name='user', placeholder='Email')
              input.span2(type='password', name='password', placeholder='Password')
              button.btn(type='submit') Sign in
    .container
      - var flashTypes = ['info', 'error']
      each flashType in flashTypes
        if messages[flashType]
          p.flash(class=flashType)
            = messages[flashType]
      block content
  script(src='javascripts/jquery.js')
  script(src='bootstrap/js/bootstrap.min.js')

Use dynamic title in header

doctype 5
html
  head
    meta(charset='utf-8')
    title= title
    meta(name='viewport', content='width=device-width, initial-scale=1.0')
    link(rel='stylesheet', href='/bootstrap/css/bootstrap.min.css')
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='/bootstrap/css/bootstrap-responsive.min.css')
  body
    .navbar.navbar-inverse.navbar-fixed-top
      .navbar-inner
        .container
          a.btn.btn-navbar(data-toggle='collapse', data-target='.nav-collapse')
            span.icon-bar
            span.icon-bar
            span.icon-bar
          a.brand(href='#') #{title}
          .nav-collapse.collapse
            form.navbar-form.pull-right(action='/sessions', method='post')
              input.span2(type='text', name='user', placeholder='Email')
              input.span2(type='password', name='password', placeholder='Password')
              button.btn(type='submit') Sign in
    .container
      - var flashTypes = ['info', 'error']
      each flashType in flashTypes
        if messages[flashType]
          p.flash(class=flashType)
            = messages[flashType]
      block content
  script(src='javascripts/jquery.js')
  script(src='bootstrap/js/bootstrap.min.js')


div(layout-align='center' layout='row')
	div(ng-show='globals.currentUser' ng-include="'/partials/project-creation/project-creation'")

Add projects-list in user projects

div(layout-align='center' layout='column')
	md-card(ng-include="'/partials/project-list/project-list'")
	md-card(ng-show='globals.currentUser' ng-include="'/partials/project-creation/project-creation'")


h1= 'Manage Room: ' + id

if typeof activity !== 'undefined'
  p= 'Created on: ' + new Date(created_at).toLocaleDateString()
  p= 'Expires at: ' + new Date(expires_at).toLocaleString()

  h2= 'Activity: ' + activity

  p= activityData.config.shortDesc

if typeof error !== 'undefined'
  p.error= error

if typeof groups !== 'undefined'
  h2 Groups

  p.
    Instruct your students to enter the one of the following urls to have them join the group you want them in.

  table
    each group in groups
      tr
        td
          a(href='/#/group/' + group.name + '/')= location.protocol + '//' + location.host + '/group/' + group.name + '/'

  div
    a(class='add-group', href='javascript:;') Add Group
else
  p Loading ...

Add simple report export area.

h1= 'Manage Room: ' + id

if typeof activity !== 'undefined'
  p= 'Created on: ' + new Date(created_at).toLocaleDateString()
  p= 'Expires at: ' + new Date(expires_at).toLocaleString()

  h2= 'Activity: ' + activity

  p= activityData.config.shortDesc

if typeof error !== 'undefined'
  p.error= error

if typeof groups !== 'undefined'
  h2 Groups

  p.
    Instruct your students to enter the one of the following urls to have them join the group you want them in.

  table
    each group in groups
      tr
        td
          a(href='/#/group/' + group.name + '/')= location.protocol + '//' + location.host + '/group/' + group.name + '/'

  div
    a(class='add-group', href='javascript:;') Add Group

  div
    a(href='/activities/' + activity + '/report/' + room + '/download').
      Download Report
else
  p Loading ...


.modal-dialog
  .modal-content
    img#live-classroom-background(src="/images/pages/play/modal/subscribe-background-blank.png")

    h1(data-i18n="live_class.title")

    div#close-modal
      span.glyphicon.glyphicon-remove

    div.paper-area.text-center
      h3
        span(data-i18n="live_class.content")

      a.btn.btn-primary#live-codecombat-link(href="https://live.codecombat.com" data-i18n="live_class.link" target="_blank" rel="noopener")

Update live classes poll link

.modal-dialog
  .modal-content
    img#live-classroom-background(src="/images/pages/play/modal/subscribe-background-blank.png")

    h1(data-i18n="live_class.title")

    div#close-modal
      span.glyphicon.glyphicon-remove

    div.paper-area.text-center
      h3
        span(data-i18n="live_class.content")

      a.btn.btn-primary#live-codecombat-link(href="/live-classes" data-i18n="live_class.link" target="_blank" rel="noopener")


h1 OAuth 2.0 Authorization

div
  p Log into #{config.site} to give #{client.title || "the app"} access to
  | your account.

if error
  p.alert.alert-error= error

form.form-horizontal#oauth2-authentication(action="/oauth2/authc", method="post")
  fieldset
    input(type="hidden", name="response_type", value=response_type)
    input(type="hidden", name="client_id", value=client_id)
    input(type="hidden", name="state", value=state)
    input(type="hidden", name="redirect_uri", value=redirect_uri)
    input(type="hidden", name="scope", value=scope)
    input(type="hidden", name="_csrf", value=_csrf)
    .control-group
      label.control-label(for="nickname") Username
      .controls
        input.input-medium#username(type="text", name="nickname")

    .control-group
      label.control-label(for="password") Password
      .controls
        input.input-medium#password(type="password", name="password")

    .form-actions
      // Show in random-ish order
      if (Math.random() < 0.5)
        input.btn.btn-primary#authenticate(type="submit", name="login", value="Login")
        input.btn#cancel(type="submit", name="cancel", value="Cancel")
      else
        input.btn#cancel(type="submit", name="cancel", value="Cancel")
        input.btn.btn-primary#authenticate(type="submit", name="login", value="Login")

Fix newline problem in Pug file


doctype html

head
  script(src="//code.jquery.com/jquery-1.11.2.min.js")

body

  h1 Panda Cluster ELK Demo

  h2 Add something to the index

  form
    input(type="text" name="content")
    input(type="submit" value="Add to index")

  p#response

  script.
    $(function() {
      $('form').submit(function(evt) {
        evt.preventDefault()

        $.post('/', $(this).serialize()).done(function(response) {
          console.log(response)
          $('#response').html(response)
        })
      })
    })


Add bootstrap jade file. Add < IE9 detection. Add urchin integration.

doctype
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 H2O
    meta(name='description', content='H2O Web Client')
    link(rel='stylesheet', href='css/lib.css')
    link(rel='stylesheet', href='css/steam.css')

    //- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries
    //- WARNING: Respond.js doesn't work if you view the page via file://

  body

    p Foo world! This is HTML5 Boilerplate.

    script(src='js/lib.js')
    script(src='js/steam.js')

    //-
      script
        (function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=
        function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;
        e=o.createElement(i);r=o.getElementsByTagName(i)[0];
        e.src='//www.google-analytics.com/analytics.js';
        r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
        ga('create','UA-29263631-3');ga('send','pageview', { 'title': 'h2o-steam' });


.container
  include top-content.jade
  .content
    - for (var i in data.posts) {
    -  var cPost = data.posts[i];
    -  var tags = (cPost.tags = cPost.tags || []).map(function (c) { return "tag-" + c; }).join(" ");
    div(class="post " + tags)
      .post-info
        span.date #{cPost.date} by #{cPost.by}
        - if (cPost.tags.length) {
        span.tags
          - for (var i in cPost.tags) {
          = " | "
          span= cPost.tags[i]
          - }
        - }
      a(href=cPost.url).post-title
         h1 #{cPost.title}
      div.post-content.markdown !{content}
      div.post-bottom-shadow
      div.post-bottom
    - }
    .pagination
      - if (data.page.previous) {
      a.page.prev(href=config.blog.path + '/page/' + data.page.previous) « Previous page
      - }
      - if (data.page.next) {
          a.page.prev(href=config.blog.path + '/page/' + data.page.next) Next page »
      - }
  include footer.jade

Use Moment to format dates

- var Moment = require("moment")
.container
  include top-content.jade
  .content
    - for (var i in data.posts) {
    -  var cPost = data.posts[i];
    -  var tags = (cPost.tags = cPost.tags || []).map(function (c) { return "tag-" + c; }).join(" ");
    div(class="post " + tags)
      .post-info
        - var displayDate = Moment(cPost.date).format("dddd, MMMM D YYYY");
        span.date #{displayDate} by #{cPost.by}
        - if (cPost.tags.length) {
        span.tags
          - for (var i in cPost.tags) {
          = " | "
          span= cPost.tags[i]
          - }
        - }
      a(href=cPost.url).post-title
         h1 #{cPost.title}
      div.post-content.markdown !{cPost.markdown}
      div.post-bottom-shadow
      div.post-bottom
    - }
    .pagination
      - if (data.page.previous) {
      a.page.prev(href=config.blog.path + '/page/' + data.page.previous) « Previous page
      - }
      - if (data.page.next) {
          a.page.prev(href=config.blog.path + '/page/' + data.page.next) Next page »
      - }
  include footer.jade


extends ../layout

block content
  div.news-item
    include ../partials/joinsite

    .page-header
        h3
            a(href=item.html_url)= item.title
        = 'submitted '
        span.timeago(title="#{item.created_at}")= timeago(item.created_at)
        = ' by '
        a(href='/news/user/' + item.user.login, class='user')= item.user.login
        h4
          div(class="item-summary")!= item.body
    include ../partials/postcomment

    each comment, index in comments
      div.comment
        a(href='/news/user/' + comment.user.login)= comment.user.login
        span.timeago(title="#{comment.created_at}")= timeago(comment.created_at)
        blockquote.content
            != comment.body
            button.btn.btn-primary(data-toggle='modal', data-target='##{index}modal', style= 'float: right;') View MD Source
            div(style= 'clear:both;')
        div(id= index + 'modal', tabindex= "-1", role= "dialog").modal.fade
          div.modal-dialog
            div.modal-content
              div.modal-header
                button.close(data-dismiss= "modal")
                  span(aria-hidden= "true", st) ×
                h4.modal-title
                  Comment MD Source
              div.modal-body
                textarea(readonly, style="width: 100%; height: 300px;")
                  #{comment.mdBody}

Make ”View MD Source” buttons less conspicuous

extends ../layout

block content
  div.news-item
    include ../partials/joinsite

    .page-header
        h3
            a(href=item.html_url)= item.title
        = 'submitted '
        span.timeago(title="#{item.created_at}")= timeago(item.created_at)
        = ' by '
        a(href='/news/user/' + item.user.login, class='user')= item.user.login
        h4
          div(class="item-summary")!= item.body
    include ../partials/postcomment

    each comment, index in comments
      div.comment
        a(href='/news/user/' + comment.user.login)= comment.user.login
        span.timeago(title="#{comment.created_at}")= timeago(comment.created_at)
        blockquote.content
            != comment.body
            button.btn.btn-link.btn-xs(data-toggle='modal', data-target='##{index}modal', style= 'float: right;') View MD Source
            div(style= 'clear:both;')
        div(id= index + 'modal', tabindex= "-1", role= "dialog").modal.fade
          div.modal-dialog
            div.modal-content
              div.modal-header
                button.close(data-dismiss= "modal")
                  span(aria-hidden= "true", st) ×
                h4.modal-title
                  Comment MD Source
              div.modal-body
                textarea(readonly, style="width: 100%; height: 300px;")
                  #{comment.mdBody}


doctype html
html
  head
    meta(charset='utf-8')
    link(type='text/css', rel='stylesheet', href='../bower/jasmine/lib/jasmine-core/jasmine.css')
    block css
    title IndexedDB Playground
  body
    h1 IndexedDB Testing

    block content

    block scripts
        script(src='../bower/jasmine/lib/jasmine-core/jasmine.js')
        script(src='../bower/jasmine/lib/jasmine-core/jasmine-html.js')
        script(src='../bower/jasmine/lib/jasmine-core/boot.js')
        script(src='../bower/jasmine-jsreporter/jasmine-jsreporter.js')
        script(src='../dist/db.js')
        script.
            jasmine.getEnv().addReporter(new jasmine.JSReporter2())

Revert back to usage of db.min.js for testing

doctype html
html
  head
    meta(charset='utf-8')
    link(type='text/css', rel='stylesheet', href='../bower/jasmine/lib/jasmine-core/jasmine.css')
    block css
    title IndexedDB Playground
  body
    h1 IndexedDB Testing

    block content

    block scripts
        script(src='../bower/jasmine/lib/jasmine-core/jasmine.js')
        script(src='../bower/jasmine/lib/jasmine-core/jasmine-html.js')
        script(src='../bower/jasmine/lib/jasmine-core/boot.js')
        script(src='../bower/jasmine-jsreporter/jasmine-jsreporter.js')
        script(src='../dist/db.min.js')
        script.
            jasmine.getEnv().addReporter(new jasmine.JSReporter2())


doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='/vendor/font-awesome/css/font-awesome.css')
    script(src="/javascripts/jquery.js")
    script(src='/javascripts/adapter.js')
    script(src='/socket.io/socket.io.js')
    script(src='/javascripts/main.js')
  body
    block content

Add jquery from bower dependency

doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='/vendor/font-awesome/css/font-awesome.css')
    script(src="/vendor/jquery/dist/jquery.js")
    script(src='/javascripts/adapter.js')
    script(src='/socket.io/socket.io.js')
    script(src='/javascripts/main.js')
  body
    block content


extends layout

block content
    div.container-fluid
        h1.text-center Welcome to Move Modulate
        div.spacer
        div.text-center
            a.btn.btn-large.btn-primary(href=authorizationUrl) Authorize Moves
        div.spacer
        div.text-center.demo
            if (allowDemo)
                a.demo.btn.btn-large.btn-inverse Demonstration Mode
    script(src="/javascripts/login.js")

Add note that iOS app required for Moves authorization

extends layout

block content
    div.container-fluid
        h1.text-center Welcome to Move Modulate
        div.spacer
        div.text-center
            a.btn.btn-large.btn-primary(href=authorizationUrl) Authorize Moves
            p
                small Requires Moves iOS app
        div.spacer
        div.text-center.demo
            if (allowDemo)
                a.demo.btn.btn-large.btn-inverse Demonstration Mode
    script(src="/javascripts/login.js")


doctype html
html
    head
        title Magic View
        link(rel="stylesheet", type="text/css", href="/css/semantic.css")
        link(rel="stylesheet", type="text/css", href="/css/magic-view.css")

    body
        .ui.teal.inverted.menu
            .ui.container
                a.brand.active.item(href="/") Magic View
                a.item(href="/search") Search

        #main
            .ui.four.column.centered.grid
                block main

        script(src="https://code.jquery.com/jquery-1.10.2.min.js")
        script(src="https://intercoolerreleases-leaddynocom.netdna-ssl.com/intercooler-1.0.3.min.js")

Remove obsolete links in top bar

doctype html
html
    head
        title Magic View
        link(rel="stylesheet", type="text/css", href="/css/semantic.css")
        link(rel="stylesheet", type="text/css", href="/css/magic-view.css")

    body
        .ui.teal.inverted.menu
            .ui.container
                a.brand.active.item(href="/") Magic View

        #main
            .ui.four.column.centered.grid
                block main

        script(src="https://code.jquery.com/jquery-1.10.2.min.js")
        script(src="https://intercoolerreleases-leaddynocom.netdna-ssl.com/intercooler-1.0.3.min.js")


.artwork-item-caption__bid-now
  if artwork.get('forsale')
    a(href=artwork.href(), data-id=artwork.get('id')) Bid now
  else
    | Auction closed

Fix auction state on comm filtering

.artwork-item-caption__bid-now
  if artwork.get('forsale') || artwork.get('is_for_sale')
    a(href=artwork.href(), data-id=artwork.get('id')) Bid now
  else
    | Auction closed


h2.section-title #{data.about.title}
header
    h1
        span  #{data.person.firstName + ' ' + data.person.lastName}
    h2
        span.iresume-terminal
        span {#{data.person.jobTitle}}

    .quick-contact
        .quick-contact-mobile
            span.iresume-whatsapp
        .quick-contact-email
            span.iresume-google3
        - var today = new Date().toLocaleDateString('en-GB', {day : 'numeric', month : 'long', year : 'numeric'}).split(' ').join(' ');
        .quick-contact-note (last updated: #{today})
p.section-description #{data.about.description}

Update last updated message format

h2.section-title #{data.about.title}
header
    h1
        span  #{data.person.firstName + ' ' + data.person.lastName}
    h2
        span.iresume-terminal
        span {#{data.person.jobTitle}}

    .quick-contact
        .quick-contact-mobile
            span.iresume-whatsapp
        .quick-contact-email
            span.iresume-google3
        - var today = new Date().toLocaleDateString('en-GB', {day : 'numeric', month : 'long', year : 'numeric'}).split(' ').join(' ');
        .quick-contact-note {last updated: #{today}}
p.section-description #{data.about.description}


section.list-filters
    ul
        li
            a(href="#").active
                span.icon.icon-issues
                | SHOW LIST

        li
            a(href="#")
                span.icon.icon-graph
                | SHOW GRAPH

    div.new-issue
        a.button.button-green(href="")
            span.text
                | + NEW ISSUE
        a.button-bulk(href="")
            span.icon.icon-bulk

Comment buttons on issues list.

section.list-filters
    ul
        // li
        //     a(href="#").active
        //         span.icon.icon-issues
        //         | SHOW LIST

        // li
        //     a(href="#")
        //         span.icon.icon-graph
        //         | SHOW GRAPH

    div.new-issue
        a.button.button-green(href="")
            span.text
                | + NEW ISSUE
        a.button-bulk(href="")
            span.icon.icon-bulk


doctype html
html
  head
    meta(charset="utf-8")
    meta(http-equiv="X-UA-Compatible", content="IE=edge")
    meta(name="viewport", content="width=device-width, initial-scale=1.0")
    meta(name="author", content="Adam Heins")

    link(rel="stylesheet", href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css")
    link(rel="stylesheet", href="/css/layout.css")

    block header
    block styles

  body
    .container
      .account
        if user
          a.signin.auth(href="/user/signout") Sign out
          if isAdmin
            .username!= 'Hi, ' + user.name + ''
          else
            .username= 'Hi, ' + user.name
      .header
        .brand
          h1
            a.name(href="/") Adam Heins
          .flavour Code, Math, and Electronics
        nav
          a(href="/blog") Blog
          a(href="/projects") Projects
          a(href="/resume") Résumé
          a(href="/about") About
      .content
        block content
      .footer
        .contact
          a#github-link.fa.fa-github.fa-lg(href="https://github.com/adamheins")
          a#email-link.fa.fa-envelope.fa-lg(href="mailto:mail@adamheins.com")
          a#linkedin-link.fa.fa-linkedin.fa-lg(href="http://ca.linkedin.com/in/adamwheins")
        .credit Adam Heins &copy 2015
    block scripts

Clean up fa links a bit.

doctype html
html
  head
    meta(charset="utf-8")
    meta(http-equiv="X-UA-Compatible", content="IE=edge")
    meta(name="viewport", content="width=device-width, initial-scale=1.0")
    meta(name="author", content="Adam Heins")

    link(rel="stylesheet", href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css")
    link(rel="stylesheet", href="/css/layout.css")

    block header
    block styles

  body
    .container
      .account
        if user
          a.signin.auth(href="/user/signout") Sign out
          if isAdmin
            .username!= 'Hi, ' + user.name + ''
          else
            .username= 'Hi, ' + user.name
      .header
        .brand
          h1
            a.name(href="/") Adam Heins
          .flavour Code, Math, and Electronics
        nav
          a(href="/blog") Blog
          a(href="/projects") Projects
          a(href="/resume") Résumé
          a(href="/about") About
      .content
        block content
      .footer
        .contact
          a.fa.fa-lg.fa-github(href="https://github.com/adamheins")
          a.fa.fa-lg.fa-envelope(href="mailto:mail@adamheins.com")
          a.fa.fa-lg.fa-linkedin(href="http://ca.linkedin.com/in/adamwheins")
        .credit Adam Heins &copy 2015
    block scripts


//- Auction
if feature && sale && sale.get('is_auction')
  a( href= feature.href() )
    p
      | Work offered by
      br
      = feature.get('name')
    .avant-garde-jump-link
      | Go to auction

//- Auction promo
if sale && sale.isAuctionPromo()
  a( href= sale.href() )
    p
      | Work offered by
      = ' '
      if sale.has('profile')
        = sale.related().profile.displayName()
      else
        = sale.get('name')

    if sale.has('profile')
      p: img( src= sale.related().profile.iconImageUrl() )
    else
      .avant-garde-jump-link
        | Go to sale

//- Sale
if feature && sale && !sale.get('is_auction')
  a( href= feature.href() )
    p
      | Work offered by
      br
      = feature.get('name')
    .avant-garde-jump-link
      | Go to sale

//- Fair
if fair && fair.get('has_full_feature') && fair.get('published')
  a( href= fair.href() )
    p
      | Work offered by
      br
      = fair.get('name')
    .avant-garde-jump-link
      | Go to fair

Make related navigation states mutually exclusive

if feature && sale && sale.get('is_auction')
  //- Auction
  a( href= feature.href() )
    p
      | Work offered by
      br
      = feature.get('name')
    .avant-garde-jump-link
      | Go to auction

else if sale && sale.isAuctionPromo()
  //- Auction promo
  a( href= sale.href() )
    p
      | Work offered by
      = ' '
      if sale.has('profile')
        = sale.related().profile.displayName()
      else
        = sale.get('name')

    if sale.has('profile')
      p: img( src= sale.related().profile.iconImageUrl() )
    else
      .avant-garde-jump-link
        | Go to sale

else if feature && sale && !sale.get('is_auction')
  //- Sale
  a( href= feature.href() )
    p
      | Work offered by
      br
      = feature.get('name')
    .avant-garde-jump-link
      | Go to sale

else if fair && fair.get('has_full_feature') && fair.get('published')
  //- Fair
  a( href= fair.href() )
    p
      | Work offered by
      br
      = fair.get('name')
    .avant-garde-jump-link
      | Go to fair


extends /src/includes/layout.jade

include /src/includes/post.jade

block head
	title #{file.data.title} - strugee.net
	link(rel='pingback', href='https://webmention.io/strugee.net/xmlrpc')
	link(rel='webmention', href='https://webmention.io/strugee.net/webmention')
	script(src='/js/webmentions.js', type='text/javascript')

block content
	+renderPost(file, false)

	hr
	p#webmention-replies-header WebMention replies

	div#webmentions
	noscript
		p Couldn't load WebMentions because you turned your JavaScript off. Sorry about that!

Fix `false` in post page category links

extends /src/includes/layout.jade

include /src/includes/post.jade

block head
	title #{file.data.title} - strugee.net
	link(rel='pingback', href='https://webmention.io/strugee.net/xmlrpc')
	link(rel='webmention', href='https://webmention.io/strugee.net/webmention')
	script(src='/js/webmentions.js', type='text/javascript')

block content
	+renderPost(file, '/blog/', false)

	hr
	p#webmention-replies-header WebMention replies

	div#webmentions
	noscript
		p Couldn't load WebMentions because you turned your JavaScript off. Sorry about that!


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

		title Resume

		link(rel="stylesheet", href="main.css")
	body
		main.container
			.row.header
				header
					div.col-xs-12.col-md-3.text-left
						span.contact-name= person.name
					div.col-xs-6.col-md-3.text-center
						a.contact-email(href="mailto:"+person.email)= person.email
					div.col-xs-6.col-md-3.text-center
						a.contact-github(href="https://github.com/"+person.github, target="_blank")= "github.com/"+person.github
					div.col-xs-12.col-md-3.text-right
						span.contact-phone= $utils.phone.format(person.phone, "NNN.NNN.NNNN")

			article
				block content

Add proper telephone link to contact phone number

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

		title Resume

		link(rel="stylesheet", href="main.css")
	body
		main.container
			.row.header
				header
					div.col-xs-12.col-md-3.text-left
						span.contact-name= person.name
					div.col-xs-6.col-md-3.text-center
						a.contact-email(href="mailto:"+person.email)= person.email
					div.col-xs-6.col-md-3.text-center
						a.contact-github(href="https://github.com/"+person.github, target="_blank")= "github.com/"+person.github
					div.col-xs-12.col-md-3.text-right
						a(href="tel:+1"+$utils.phone.normalize(person.phone)).contact-phone= $utils.phone.format(person.phone, "NNN.NNN.NNNN")

			article
				block content


//- NOTE: ReCaptcha markup is hidden by default.
//- You must control it's visibility manually via Knockout bindings.

.control-group.captcha-image(data-bind="visible: visible", style="display: none")
  .controls
    span#recaptcha_image
    div.captcha-reload
      a(tabindex=-1, data-on-click="common.blocks.recaptcha.update") #{self.t('change_image')}

.control-group(data-bind="visible: visible, css: css", style="display: none")
  label.control-label(for='recaptcha_response_field') #{self.t('captcha')}
  .controls
    .row-fluid
      input.span12(id="recaptcha_response_field", name="recaptcha_response_field", type='text')
      span.help-block(data-bind="ifnot: message") #{self.t('captcha_help')}
      span.help-block(data-bind="if: message, text: message")

Apply 'css' Knockout binding to both ReCatcha control groups.

//- NOTE: ReCaptcha markup is hidden by default.
//- You must control it's visibility manually via Knockout bindings.

.control-group.captcha-image(data-bind="visible: visible, css: css", style="display: none")
  .controls
    span#recaptcha_image
    div.captcha-reload
      a(tabindex=-1, data-on-click="common.blocks.recaptcha.update") #{self.t('change_image')}

.control-group(data-bind="visible: visible, css: css", style="display: none")
  label.control-label(for='recaptcha_response_field') #{self.t('captcha')}
  .controls
    .row-fluid
      input.span12(id="recaptcha_response_field", name="recaptcha_response_field", type='text')
      span.help-block(data-bind="ifnot: message") #{self.t('captcha_help')}
      span.help-block(data-bind="if: message, text: message")


extends ../../../components/layout/index--bare

block body
  .Page
    .UI
      include ./sections/colors
      hr.Base
      include ./sections/typography
      hr.Base
      include ./sections/buttons
      hr.Base
      include ./sections/forms
      hr.Base
      include ./sections/tabs

Include reference to badges component

extends ../../../components/layout/index--bare

block body
  .Page
    .UI
      include ./sections/colors
      hr.Base
      include ./sections/typography
      hr.Base
      include ./sections/buttons
      hr.Base
      include ./sections/forms
      hr.Base
      include ./sections/tabs
      hr.Base
      include ./sections/badges

      //- WIP
      //- hr.Base
      //- include ./sections/dropdown


span.mlh-top-nav-link.hover-pulldown( data-mode='hover' )
  | More
  .hover-pulldown-menu
    div.mlh-pulldown-top
      a.mlh-pulldown-top-link( href='/collect', class= activeClass("/collect") ) Artworks
      a.mlh-pulldown-top-link( href='/auctions', class= activeClass('/auctions') ) Auctions
      a.mlh-pulldown-top-link.galleries( href='/galleries', class= activeClass('/galleries') ) Galleries
      a.mlh-pulldown-top-link.fairs( href='/art-fairs', class= activeClass('/art-fairs') ) Fairs
      a.mlh-pulldown-top-link.magazine( href='/articles', class= activeClass('/articles') ) Magazine
      a.mlh-pulldown-top-link-persistent( href='/artists', class= activeClass('/artists') ) Artists
      a.mlh-pulldown-top-link-persistent( href='/shows', class= activeClass('/shows') ) Shows
      a.mlh-pulldown-top-link-persistent( href='/institutions', class= activeClass('/institutions') ) Museums
    hr.mlh-pulldown-top
    div.mlh-pulldown-bottom
      a.mlh-pulldown-bottom-link( href='/about' ) About Artsy

Remove About from More menu


//- NOTE: ReCaptcha markup is hidden by default.
//- You must control it's visibility manually via Knockout bindings.

.control-group.captcha-image(data-bind="visible: visible", style="display: none")
  .controls
    span#recaptcha_image
    div.captcha-reload
      a(tabindex=-1, data-on-click="common.blocks.recaptcha.update") #{self.t('change_image')}

.control-group(data-bind="visible: visible, css: css", style="display: none")
  label.control-label(for='recaptcha_response_field') #{self.t('captcha')}
  .controls
    .row-fluid
      input.span12(id="recaptcha_response_field", name="recaptcha_response_field", type='text')
      span.help-block #{self.t('captcha_help')}

Allow to show custom message below ReCaptcha input field.

//- NOTE: ReCaptcha markup is hidden by default.
//- You must control it's visibility manually via Knockout bindings.

.control-group.captcha-image(data-bind="visible: visible", style="display: none")
  .controls
    span#recaptcha_image
    div.captcha-reload
      a(tabindex=-1, data-on-click="common.blocks.recaptcha.update") #{self.t('change_image')}

.control-group(data-bind="visible: visible, css: css", style="display: none")
  label.control-label(for='recaptcha_response_field') #{self.t('captcha')}
  .controls
    .row-fluid
      input.span12(id="recaptcha_response_field", name="recaptcha_response_field", type='text')
      span.help-block(data-bind="ifnot: message") #{self.t('captcha_help')}
      span.help-block(data-bind="if: message, text: message")


.js-child-sortable(data-id="{{ attr.id }}")
    .js-form(
        ng-repeat="option in attr.extra track by $index"
        tg-bind-scope
    )
        div.row.js-view-custom-field-extra
            tg-svg.e2e-drag(svg-icon="icon-drag")
            div.custom-extra-attr-wrapper
                span {{ option }}

        div.row.js-edit-custom-field-extra.hidden
            div.custom-extra-attr-wrapper
                input(
                    type="text"
                    name="name"
                    ng-model="attr.extra[$index]"
                    data-required="true"
                    data-maxlength="64"
                )
            .custom-options
                .custom-options-wrapper
                    a.js-delete-custom-field-extra-button(
                        href=""
                        tabindex="-1"
                        title="{{'ADMIN.CUSTOM_ATTRIBUTES.DELETE' | translate}}"
                        ng-if="attr.extra.length > 1"
                    )
                        tg-svg(svg-icon="icon-trash")

div.custom-extra-actions.hidden
    a.js-add-option-custom-field-extra-button(href="")
        tg-svg(svg-icon="icon-add")
        span Add option

Fix draggable icon on dropdown admin setting

.js-child-sortable(data-id="{{ attr.id }}")
    .js-form(
        ng-repeat="option in attr.extra track by $index"
        tg-bind-scope
    )
        div.row.js-view-custom-field-extra
            tg-svg.e2e-drag(svg-icon="icon-draggable")
            div.custom-extra-attr-wrapper
                span {{ option }}

        div.row.js-edit-custom-field-extra.hidden
            div.custom-extra-attr-wrapper
                input(
                    type="text"
                    name="name"
                    ng-model="attr.extra[$index]"
                    data-required="true"
                    data-maxlength="64"
                )
            .custom-options
                .custom-options-wrapper
                    a.js-delete-custom-field-extra-button(
                        href=""
                        tabindex="-1"
                        title="{{'ADMIN.CUSTOM_ATTRIBUTES.DELETE' | translate}}"
                        ng-if="attr.extra.length > 1"
                    )
                        tg-svg(svg-icon="icon-trash")

div.custom-extra-actions.hidden
    a.js-add-option-custom-field-extra-button(href="")
        tg-svg(svg-icon="icon-add")
        span Add option


.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 another profile header layout problem


extends ../_layout

block content
  .page-header
    h3= t('game:add.header.title')

  form.form-horizontal(role='form', method='POST', action='/game/start')
    .form-group
      label.col-sm-2.control-label(for='name')= t('game:add.name.label')
      .col-sm-8
        input.form-control(name='name', type='text', value=name)
    .form-group
      label.col-sm-2.control-label(for='players')= t('game:add.players.label')
      .col-sm-8
        textarea.form-control(name='players', autofocus=true, rows=5) #{players}
    .form-group
      .col-sm-offset-2.col-sm-8
        button.btn.btn-primary(type='submit')
          span.glyphicon.glyphicon-chevron-right
          | #{t('game:add.start.text')}

Make default value a placeholder;

extends ../_layout

block content
  .page-header
    h3= t('game:add.header.title')

  form.form-horizontal(role='form', method='POST', action='/game/start')
    .form-group
      label.col-sm-2.control-label(for='name')= t('game:add.name.label')
      .col-sm-8
        input.form-control.placeholder(name='name', type='text', value=name)
    .form-group
      label.col-sm-2.control-label(for='players')= t('game:add.players.label')
      .col-sm-8
        textarea.form-control.placeholder(name='players', rows=5) #{players}
    .form-group
      .col-sm-offset-2.col-sm-8
        button.btn.btn-primary(type='submit')
          span.glyphicon.glyphicon-chevron-right
          | #{t('game:add.start.text')}

  script.
    $(function(){
        $(".placeholder").each(function(){
            var that = $(this);
            that.data("placeholder", that.val());
        }).focus(function(){
            var that = $(this);
            if(that.val() === that.data("placeholder")){
                that.val('');
            }
        }).blur(function(){
            var that = $(this);
            if(that.val() === ""){
                that.val(that.data("placeholder"));
            }
        }).triggerHandler("blur");
    });


mixin button(buttonClass, iconClass, l8nKey)
  button.button(type="submit", class=buttonClass)
    if iconClass != null
      i.fa.button__icon(class=iconClass)
    span.button__text(data-l8n=l8nKey)
      block

mixin removeButton(buttonClass, iconClass, l8nKey)
  +button("button--transparent clj--authorised-app__remove-button", "fa-remove", l8nKey)
    block

mixin authorisedAppItemEmpty()
  li.app__item.clj--authorised-app__list-item--empty
    .app__title(data-l8n="content:applications/list-empty") !No applications use your Profile Card

mixin authorisedAppItem(appName)
  li.app__item.clj--authorised-app__list-item
    .app__title.clj--client-name #{appName}
    .app__remove
      a.clj--app-item__unshare-link.func--app-item__unshare-link(href="./unshare-profile-card")
        +removeButton(null, null, "content:applications/unshare-button") !Unshare Card

Remove App remove button tag

mixin authorisedAppItemEmpty()
  li.app__item.clj--authorised-app__list-item--empty
    .app__title(data-l8n="content:applications/list-empty") !No applications use your Profile Card

mixin authorisedAppItem(appName)
  li.app__item.clj--authorised-app__list-item
    .app__title.clj--client-name #{appName}
    .app__remove
      a.button.button--transparent.clj--app-item__unshare-link.func--app-item__unshare-link(href="./unshare-profile-card")
        i.fa.fa-remove.button__icon
        span.button__text(data-l8n="content:applications/unshare-button") !Unshare Card


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

Add descriptive text to search nav element.

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


.PricingSquares
  a.Square.Square--arena(href="/sign_up")
    h4.Type.Type--size-h4 Are.na
    .Square__features
      p.Type
        | Unlimited public blocks
      p.Type
        | Up to 100 private blocks
    .Square__price Free
  a.Square.Square--premium(href="/settings/premium")
    h4.Type.Type--size-h4.Type--premium Premium
    .Square__features
      p.Type Unlimited public blocks
        br
      p.Type
        strong Unlimited private blocks
      p.Type
        strong Hide from search engines
      p.Type
        strong Priority support
    .Square__price
      | $45 / year
      .Square__price__sub
        | or $5 / month
  a.Square.Square--teams(href="mailto:info@are.na")
    h4.Type.Type--size-h4 Teams
    //- for spacing
    .Square__features
    .Square__price Coming soon

Fix link to billing page

.PricingSquares
  a.Square.Square--arena(href="/sign_up")
    h4.Type.Type--size-h4 Are.na
    .Square__features
      p.Type
        | Unlimited public blocks
      p.Type
        | Up to 100 private blocks
    .Square__price Free
  a.Square.Square--premium(href="/settings/billing")
    h4.Type.Type--size-h4.Type--premium Premium
    .Square__features
      p.Type Unlimited public blocks
        br
      p.Type
        strong Unlimited private blocks
      p.Type
        strong Hide from search engines
      p.Type
        strong Priority support
    .Square__price
      | $45 / year
      .Square__price__sub
        | or $5 / month
  a.Square.Square--teams(href="mailto:info@are.na")
    h4.Type.Type--size-h4 Teams
    //- for spacing
    .Square__features
    .Square__price Coming soon


.isic-form-page.isic-upload-dataset-request-container
  h2.isic-page-title Upload dataset

  .isic-form-container
    .isic-form-group
      h3 Request Dataset Contributor access
      p.
        Thank you for your interest in contributing to the ISIC Archive. We accept X
        type of dermoscopic images, with Y metadata, under CC-0, CC-BY and CC-BY-NC
        license. Please click below to request access to contribute images:
      form#isic-dataset-form.text-center(role="form")
        button#isic-dataset-submit.btn.btn-primary.btn-md.text-center(type="submit") Request access

Update dataset contributor access request page text

.isic-form-page.isic-upload-dataset-request-container
  h2.isic-page-title Upload dataset

  .isic-form-container
    .isic-form-group
      h3 Request Dataset Contributor access
      p.
        Thank you for your interest in contributing to the ISIC Archive.
        We accept dermoscopic images with metadata, under
        #[a(href="https://creativecommons.org/publicdomain/zero/1.0/", target="_blank") CC-0],
        #[a(href="https://creativecommons.org/licenses/by/4.0/", target="_blank") CC-BY] and
        #[a(href="https://creativecommons.org/licenses/by-nc/4.0/", target="_blank") CC-BY-NC] licenses.
        Please click below to request access to contribute images:
      form#isic-dataset-form.text-center(role="form")
        button#isic-dataset-submit.btn.btn-primary.btn-md.text-center(type="submit") Request access


header.topbar(class=frontpage ? 'topbar--frontpage' : '')
  .container-fluid
    nav
      .topbar-items
        div(class=frontpage ? 'hidden-md hidden-lg' : '')
          a.logo-wrap(href='/')
            .logo
              +icon('logo')
            .logo-text.hidden-xs
              | Nationalmuseets
              br
              | Samlinger Online
        - var path = (req.path).split('/')
        - var searchMethod = (isSearching ? 'modify-query' : '')
        form.search-box(method='get', data-method='modify-query')
          .input-group
            input.form-control(
              type='text',
              id='search-input',
              placeholder='Søg på samlinger.natmus.dk',
              name='q',
              autocomplete="off",
              value=req.query.q || '')
            .input-group-btn
              button.btn-search.btn
                span.sr-only Søg
                +icon('search')
        #heading-categories-menu.hamburger
          span.sr-only Kataloger og kategorier
          +icon('menu')
      if frontpage
        .logo-wrap.big-wrap.hidden-sm.hidden-xs
          .logo
            +icon('logo')
          .logo-text
            h1 Nationalmuseets Samlinger Online
            .tag-line Udforsk #{totalAssets} billeder fra Nationalmuseets samling

Fix a bug we fixed

header.topbar(class=frontpage ? 'topbar--frontpage' : '')
  .container-fluid
    nav
      .topbar-items
        div(class=frontpage ? 'hidden-md hidden-lg' : '')
          a.logo-wrap(href='/')
            .logo
              +icon('logo')
            .logo-text.hidden-xs
              | Nationalmuseets
              br
              | Samlinger Online
        - var path = (req.path).split('/')
        - var searchMethod = (isSearching ? 'modify-query' : '')
        form.search-box(method='get', action='/', data-method=searchMethod)
          .input-group
            input.form-control(
              type='text',
              id='search-input',
              placeholder='Søg på samlinger.natmus.dk',
              name='q',
              autocomplete="off",
              value=req.query.q || '')
            .input-group-btn
              button.btn-search.btn
                span.sr-only Søg
                +icon('search')
        #heading-categories-menu.hamburger
          span.sr-only Kataloger og kategorier
          +icon('menu')
      if frontpage
        .logo-wrap.big-wrap.hidden-sm.hidden-xs
          .logo
            +icon('logo')
          .logo-text
            h1 Nationalmuseets Samlinger Online
            .tag-line Udforsk #{totalAssets} billeder fra Nationalmuseets samling


template(name="curatorSourceDetails")
  with source
    .curator-inbox-header.curator-source-details-header(class="{{#if isReviewed}} reviewed {{/if}}")
      +curatorUserStatus selectedSourceId=selectedSourceId
      h2(id="sourceDetailsTitle" data-toggle="tooltip" data-placement="bottom")
        .back-to-list
          i.fa.fa-chevron-circle-left(title="Return to source list")
        a(href="https://promedmail.org/post/#{_sourceId}" target="_blank")= title
      .curator-source-details-options
        button.btn.btn-success.toggle-reviewed(class="{{#if isReviewed}} reviewed {{/if}}")
          if isReviewed
            span Reviewed
          else
            span Mark Reviewed
      if notifying
        .notification
          .checks
            i.fa.fa-check-circle.confirmation(aria-hidden="true")
            .circle
          p Preparing next source
      .transition(class="{{#if notifying}} active {{/if}}")
    .curator-source-details-content
      if incidentsLoaded
        .curator-source-details-copy-wrapper
          .curator-source-details-copy= annotatedContent
        +incidentTable incidents=acceptedIncidents scrollToAnnotations=true
        +curatorEvents selectedSourceId=selectedSourceId
        if notifying
          .veil
      else
        +loading message="Processing Source"

Remove curator events from inbox

template(name="curatorSourceDetails")
  with source
    .curator-inbox-header.curator-source-details-header(class="{{#if isReviewed}} reviewed {{/if}}")
      +curatorUserStatus selectedSourceId=selectedSourceId
      h2(id="sourceDetailsTitle" data-toggle="tooltip" data-placement="bottom")
        .back-to-list
          i.fa.fa-chevron-circle-left(title="Return to source list")
        a(href="https://promedmail.org/post/#{_sourceId}" target="_blank")= title
      .curator-source-details-options
        button.btn.btn-success.toggle-reviewed(class="{{#if isReviewed}} reviewed {{/if}}")
          if isReviewed
            span Reviewed
          else
            span Mark Reviewed
      if notifying
        .notification
          .checks
            i.fa.fa-check-circle.confirmation(aria-hidden="true")
            .circle
          p Preparing next source
      .transition(class="{{#if notifying}} active {{/if}}")
    .curator-source-details-content
      if incidentsLoaded
        .curator-source-details-copy-wrapper
          .curator-source-details-copy= annotatedContent
        +incidentTable incidents=acceptedIncidents scrollToAnnotations=true
        if notifying
          .veil
      else
        +loading message="Processing Source"


.hinge.hinge-0
.hinge.hinge-1
.hinge.hinge-2
.hinge.hinge-3

if includeSpellList
  .btn.btn-small.btn-illustrated.spell-list-button(data-i18n="[title]play_level.tome_see_all_methods", title="See all methods you can edit")
    .glyphicon.glyphicon-chevron-down

.thang-avatar-placeholder

.method-name-area
  .method-label(data-i18n="play_level.tome_current_method") Current Method
  .method-signature #{methodSignature}

.spell-tool-buttons
  .btn.btn-small.btn-illustrated.reload-code(data-i18n="[title]play_level.tome_reload_method", title="Reload original code for this method")
    .glyphicon.glyphicon-repeat
    span.spl(data-i18n="play_level.reload") Reload

  if levelType !== 'hero' && levelType !== 'hero-ladder' && levelType !== 'hero-coop'
   .btn.btn-small.btn-illustrated.fullscreen-code(title=maximizeShortcutVerbose)
     .glyphicon.glyphicon-fullscreen
     .glyphicon.glyphicon-resize-small

  if codeLanguage === 'javascript' && levelType !== 'hero' && levelType !== 'hero-ladder' && levelType !== 'hero-coop'
    .btn.btn-small.btn-illustrated.beautify-code(title=beautifyShortcutVerbose)
      .glyphicon.glyphicon-magnet

  .clearfix

Fix reload code button in play view on IE9

.hinge.hinge-0
.hinge.hinge-1
.hinge.hinge-2
.hinge.hinge-3

if includeSpellList
  .btn.btn-small.btn-illustrated.spell-list-button(data-i18n="[title]play_level.tome_see_all_methods", title="See all methods you can edit")
    .glyphicon.glyphicon-chevron-down

.thang-avatar-placeholder

.method-name-area
  .method-label(data-i18n="play_level.tome_current_method") Current Method
  .method-signature #{methodSignature}

.spell-tool-buttons
  .btn.btn-small.btn-illustrated.btn-warning.reload-code(data-i18n="[title]play_level.tome_reload_method", title="Reload original code for this method")
    .glyphicon.glyphicon-repeat
    span.spl(data-i18n="play_level.reload") Reload

  if levelType !== 'hero' && levelType !== 'hero-ladder' && levelType !== 'hero-coop'
   .btn.btn-small.btn-illustrated.fullscreen-code(title=maximizeShortcutVerbose)
     .glyphicon.glyphicon-fullscreen
     .glyphicon.glyphicon-resize-small

  if codeLanguage === 'javascript' && levelType !== 'hero' && levelType !== 'hero-ladder' && levelType !== 'hero-coop'
    .btn.btn-small.btn-illustrated.beautify-code(title=beautifyShortcutVerbose)
      .glyphicon.glyphicon-magnet

  .clearfix


// If there is image data, then the image selector is a button which
// opens the image.
// Otherwise, the image selector is a button which loads the image.
//
// Note - The openImage function is defined in the session detail
// controller. Apparently, openImage is not visible in the button
// scope.
// TODO - try setting openImage in the qiImageSelection directive
// scope with the following magic setting:
//   openImage: '='
button.btn.btn-default.btn-xs.qi-nav-btn.qi-image-btn(
  ng-click='$parent.$parent.openImage(image)'
  ng-show='image.data'
)
  .glyphicon.glyphicon-eye-open

button.btn.btn-default.btn-xs.qi-nav-btn.qi-image-btn(
  ng-click='image.load()'
  ng-hide='image.data'
  ng-disabled='image.state.loading'
  qi-spin="image.state.loading"
)
  .glyphicon.glyphicon-download

Make the comment a block.

//
  If there is image data, then the image selector is a button which
  opens the image. Otherwise, the image selector is a button which
  loads the image.

  Note - The openImage function is defined in the session detail
  controller. Apparently, openImage is not visible in the button
  scope.
  TODO - try setting openImage in the qiImageSelection directive
  scope with the following magic setting:
    openImage: '='
button.btn.btn-default.btn-xs.qi-nav-btn.qi-image-btn(
  ng-click='$parent.$parent.openImage(image)'
  ng-show='image.data'
)
  .glyphicon.glyphicon-eye-open

button.btn.btn-default.btn-xs.qi-nav-btn.qi-image-btn(
  ng-click='image.load()'
  ng-hide='image.data'
  ng-disabled='image.state.loading'
  qi-spin="image.state.loading"
)
  .glyphicon.glyphicon-download


.tribe-linked.js-tribe-linked(ng-class="{'is-active': vm.open, 'is-inactive': vm.open == false}")
    .tribe-linked-inner
        .tribe-linked-header
            img.tribe-logo(
                ng-click="vm.show()"
                alt=""
                title="{{ 'US.TRIBE.PUBLISHED_AS_GIG' | translate }}"
                src="/#{v}/images/tribe-logo.png"
            )
            p.title {{ "US.TRIBE.PUBLISHED_AS_GIG" | translate }}
            a.close(
                ng-click="vm.hide()"
                href=""
                title="{{ 'US.TRIBE.CLOSE' | translate }}"
            ) tg-svg.icon-remove(svg-icon="icon-close")

        a.gig-title(
            href="{{::vm.tribeHost}}/gigs/{{gigId}}"
            title="gigTitle"
            target="_blank"
        ) {{gigTitle}}

        a.delete-link(
            href="{{::vm.tribeHost}}/gigs/{{gigId}}/link-with-taiga?from=taiga"
            title="{{ 'US.TRIBE.EDIT_LINK' | translate }}"
        ) {{ 'US.TRIBE.EDIT_LINK' | translate }}

        a.synchronize-link.button-tribe(
            ng-href="{{::vm.tribeHost}}/gigs/sync/{{gigId}}?from=taiga"
            title="{{ 'US.TRIBE.SINCHRONIZE_LINK' }}"
        ) {{ 'US.TRIBE.SYNCHRONIZE_LINK' | translate }}

Fix close button in tribe link popover (now is when :smile_cat:)


.code-bar
  .actions
    .toggle(ng-if='frame.type == "cypher" && availableModes.length > 1')
      a.toggle-graph(ng-class='{active: isActive("graph")}', ng-click='setActive("graph")') Graph
      .switch
        label(ng-class='{right: isActive("table")}', ng-click='setActive()')
          .switch-inner
          .handle
      a.toggle-table(ng-class='{active: isActive("table")}', ng-click='setActive("table")') Table
    a.button.fa.fa-download(exportable ng-click='exportJSON(frame.response)', tooltip-placement='bottom', tooltip='Export JSON', ng-show='frame.exportable')
    a.button.fa.fa-expand(ng-click="toggleFullscreen(true)", tooltip-placement='bottom', tooltip='Fullscreen', ng-show='frame.fullscreenable')
    a.button.fa.fa-times-circle(ng-click='frames.close(frame)', tooltip-placement='bottom', tooltip='Remove')
  .status
    //- div(class="label label-default label-{{frame.type | lowercase}}") {{frame.type | uppercase}}
    span.prompt.code(ng-if='frame.type == "cypher"') $
    span.code.mono(click-to-code='frame.input') {{frame.input | uncomment}}
  a.close-fullscreen.fa.fa-compress(ng-click="toggleFullscreen(false)")

Rename frame × button from 'Remove' to 'Close'.

.code-bar
  .actions
    .toggle(ng-if='frame.type == "cypher" && availableModes.length > 1')
      a.toggle-graph(ng-class='{active: isActive("graph")}', ng-click='setActive("graph")') Graph
      .switch
        label(ng-class='{right: isActive("table")}', ng-click='setActive()')
          .switch-inner
          .handle
      a.toggle-table(ng-class='{active: isActive("table")}', ng-click='setActive("table")') Table
    a.button.fa.fa-download(exportable ng-click='exportJSON(frame.response)', tooltip-placement='bottom', tooltip='Export JSON', ng-show='frame.exportable')
    a.button.fa.fa-expand(ng-click="toggleFullscreen(true)", tooltip-placement='bottom', tooltip='Fullscreen', ng-show='frame.fullscreenable')
    a.button.fa.fa-times-circle(ng-click='frames.close(frame)', tooltip-placement='bottom', tooltip='Close')
  .status
    //- div(class="label label-default label-{{frame.type | lowercase}}") {{frame.type | uppercase}}
    span.prompt.code(ng-if='frame.type == "cypher"') $
    span.code.mono(click-to-code='frame.input') {{frame.input | uncomment}}
  a.close-fullscreen.fa.fa-compress(ng-click="toggleFullscreen(false)")


extends default

block content
  .row
    main.main.grid-xs-24.grid-s-20.grid-s-offset-2.grid-l-20.grid-l-offset-2(role="main")
      block main

Add clearfix to one columnt layout

extends default

block content
  .row
    main.main.grid-xs-24.grid-s-20.grid-s-offset-2.grid-l-20.grid-l-offset-2(role="main")
      block main

  .clearfix


ul.points-per-role
    li.total
        span.points <%- totalPoints %>
        span.role total
    <% _.each(roles, function(role) { %>
    li(class!="total <% if(editable){ %>clickable<% } %>", data-role-id!="<%- role.id %>")
        span.points <%- role.points %>
        span.role <%- role.name %>
    <% }); %>

Add tooltip for points per role

ul.points-per-role
    li.total
        span.points <%- totalPoints %>
        span.role total
    <% _.each(roles, function(role) { %>
    li(class!="total <% if(editable){ %>clickable<% } %>", data-role-id!="<%- role.id %>", title!="<%- role.name %>")
        span.points <%- role.points %>
        span.role <%- role.name %>
    <% }); %>


if cards
    .ui.main.fluid.vertical.segment
        .ui.three.cards
            for card in cards
                .ui.card
                    .content
                        .header(href="##{card.name}") #{card.name}
                    .content
                        img.left.floated.small.ui.image(src="http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=#{card.multiverseId}&type=card")
                        .ui.violet.labels
                            .ui.label lorem ipsum
                            .ui.label dolor sit amet
                            .ui.label consectetuer
                            .ui.label adipiscing elit
                    .ui.bottom.attached.button View details
                        i.angle.double.right.icon

else
    .ui.main.fluid.vertical.segment
        .ui.violet.message No results

Add button to show a card

if cards
    .ui.main.fluid.vertical.segment
        .ui.three.cards
            for card in cards
                .ui.card
                    .content
                        .header #{card.name}
                    .content
                        img.left.floated.small.ui.image(src="http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=#{card.multiverseId}&type=card")
                        .ui.violet.labels
                            .ui.label lorem ipsum
                            .ui.label dolor sit amet
                            .ui.label consectetuer
                            .ui.label adipiscing elit
                    .ui.bottom.attached.button(
                        ic-post-to="/ic/card/#{card.multiverseId}",
                        ic-target="#card"
                        ) View details
                        i.angle.double.right.icon

else
    .ui.main.fluid.vertical.segment
        .ui.violet.message No results


doctype html
meta(charset="utf-8")
title Popup my Bookmarks
each x in ["common", "pmb"]
  link(rel="stylesheet", href="css/#{x}.css")

body.panel-width
  div#sub.container.panel-width
  div#main.container.panel-width
    div#searchbox
      input#search-input(type="search", tabindex="-1")

  div#menu-cover.ninja(hidden)
  div#menu(hidden)
  div#editor.panel-width(hidden)
    span#edit-title
    input(type="text")
    input(type="text")
    button
    button

  div#preload(hidden)
    div.box-template
      div.headbox
        div.head-title.no-text-overflow
        div.head-close
      div.folderlist

    p.item.bookmark-item.no-text-overflow(draggable="true")
      img.icon(src="", alt="", draggable="false")
      span

    p.no-bkmark.item.bookmark-item.no-text-overflow

    div.no-result.no-text-overflow

    div#drag-place

each x in ["common", "pmb"]
  script(src="js/#{x}.js")

Fix wrong indent in Jade


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
				if currentUser
					ul.nav.navbar-nav
						li(class="#{homeActive}")
							a(href="{{pathFor 'ownedMangas'}}") {{_ "ownedMangas"}}
						li(class="#{missingActive}")
							a(href="{{pathFor 'missingMangas'}}") {{_ "missingMangas"}}
						if admin
							li(class="#{addCompleteMangasActive}")
								a(href="{{pathFor 'addCompleteMangas'}}") {{_ "addCompleteMangas"}}
					form.navbar-form.navbar-left#buttonAddMangas
						button.btn.btn-primary(type="button" data-toggle="modal" data-target="#myModal") {{_ "addAMangas"}}
				.nav.navbar-nav.navbar-right
					+loginButtons
	+addMangas

Move addMangas button in the if admin part


h4.col-md-offset-1 Clinical Profile
.qi-profile-panel
  accordion(close-others='false')
    // Contrary to expectation, the scope of the qi-demographics-table
    // directive below is a peer of the accordion-group scope rather
    // than a child. Work around this anomaly by making a parent div
    // for both the accordion-group and the qi-demographics-table.
    // TODO - explain this anomaly.
    div(ng-controller='AccordionGroupCtrl')
      accordion-group(is-open="isOpen")
        qi-demographics

    // Iterate over the encounters to include the encounter type
    // script fragment. See the leading comment above.
    div(ng-repeat="encounter in subject.encounters" ng-controller='AccordionGroupCtrl')
     accordion-group(is-open="isOpen")
      qi-encounter

Change encounter directive to include.

h4.qi-profile-heading Clinical Profile
.qi-profile-panel
  accordion(close-others='false')
    // Contrary to expectation, the scope of the qi-demographics-table
    // directive below is a peer of the accordion-group scope rather
    // than a child. Work around this anomaly by making a parent div
    // for both the accordion-group and the qi-demographics-table.
    // TODO - explain this anomaly.
    div(ng-controller='AccordionGroupCtrl')
      accordion-group(is-open="isOpen")
        qi-demographics

    // Iterate over the encounters to include the encounter type
    // script fragment. See the leading comment above.
    div(ng-repeat="encounter in subject.encounters" ng-controller='AccordionGroupCtrl')
     accordion-group(is-open="isOpen")
       include encounter


doctype html
html(lang="en")
  head
    meta(charset='utf-8')
    meta(http-equiv='X-UA-Compatible', content='IE=edge')
    meta(name='description', content='Mikko Kivelä is a developer and designer of accessible web and app experiences')
    meta(name='viewport', content='width=device-width, initial-scale=1')
    meta(name="google-site-verification" content="kp0S7R6R8GgklniNtOjwUbAxlAcR2ysiIRbAsiN9xcs")
    title Mikko Kivelä
    style(type="text/css")
      include ../../build/stylesheets/app.css
    <!--[if lt IE 9]>
    <script src="/javascripts/html5shiv.min.js"></script>
    <![endif]-->
    script
      include ga.js
    script(type="text/javascript", src="http://fast.fonts.net/jsapi/f5dc34d3-e5ae-4fd4-a647-0edc6acc7954.js")
  body(class="#{currentPage()}")
    block body
    script(type="text/javascript", src="/javascripts/app.js", async=true)
    block scripts

Add job title to page title

doctype html
html(lang="en")
  head
    meta(charset='utf-8')
    meta(http-equiv='X-UA-Compatible', content='IE=edge')
    meta(name='description', content='Mikko Kivelä is a developer and designer of accessible web and app experiences')
    meta(name='viewport', content='width=device-width, initial-scale=1')
    meta(name="google-site-verification" content="kp0S7R6R8GgklniNtOjwUbAxlAcR2ysiIRbAsiN9xcs")
    title Mikko Kivelä - Developer & Designer
    style(type="text/css")
      include ../../build/stylesheets/app.css
    <!--[if lt IE 9]>
    <script src="/javascripts/html5shiv.min.js"></script>
    <![endif]-->
    script
      include ga.js
    script(type="text/javascript", src="http://fast.fonts.net/jsapi/f5dc34d3-e5ae-4fd4-a647-0edc6acc7954.js")
  body(class="#{currentPage()}")
    block body
    script(type="text/javascript", src="/javascripts/app.js", async=true)
    block scripts


div.register-form-container(tg-register)
    form.register-form
        fieldset
            input(type="text", placeholder="Pick a username", ng-model="data.username",
                  data-required="true")
        fieldset
            input(type="text", placeholder="Your email", ng-model="data.email", data-required="true")
        fieldset
            input(type="password"  placeholder="Set a password", ng-model="data.password",
                  data-required="true")
        fieldset
            a.button.button-register.button-gray(href="", title="Sign up") Sign up
            input(type="submit", class="hidden")

    p.register-text
        span By clicking "Sign up", you agree to our <br />
        a(href="", title="See terms of service")  terms of service
        span  and
        a(href="", title="See privacy policy")  privacy policy.

Add a TODO comment in the legal section

div.register-form-container(tg-register)
    form.register-form
        fieldset
            input(type="text", placeholder="Pick a username", ng-model="data.username",
                  data-required="true")
        fieldset
            input(type="text", placeholder="Your email", ng-model="data.email", data-required="true")
        fieldset
            input(type="password"  placeholder="Set a password", ng-model="data.password",
                  data-required="true")
        fieldset
            a.button.button-register.button-gray(href="", title="Sign up") Sign up
            input(type="submit", class="hidden")

    p.register-text
        // TODO
        span By clicking "Sign up", you agree to our <br />
        a(href="", title="See terms of service")  terms of service
        span  and
        a(href="", title="See privacy policy")  privacy policy.


#new-person
  form(name="create-new-person")
    // more content inserted in the bb view
    input(type='submit', value="Create new person")

  ul.suggestions
    // content inserted by the bb view
    li No matches

Add title to explain what the suggestions are

#new-person
  form(name="create-new-person")
    // more content inserted in the bb view

    h2 Suggestions
    ul.suggestions

    input(type='submit', value="Create new person")


template(name="editDeprecated")
	if deprecated
		.radio
			label
				input(type="radio" name="deprecated" value="notDeprecated")
				| {{_ "active"}}
		.radio
			label
				input(type="radio" name="deprecated" value="deprecated" checked)
				| {{_ "inactive"}}
	else
		.radio
			label
				input(type="radio" name="deprecated" value="notDeprecated" checked)
				| {{_ "active"}}
		.radio
			label
				input(type="radio" name="deprecated" value="deprecated")
				| {{_ "inactive"}}


ADD view for users setting a new password

extend layout

block content
    p
        | Welcome to FIWARE LAB Cosmos Global Instance.
    p
        | We have detected you already had an account
        | in the old Global Instance of Cosmos at FIWARE
        | LAB. This step will simply reset your SSH
        | password; your HDFS space, data and username
        | have been moved to this new Global Instance:

    form(name="new_password", action="new_password", method="post")
        div.input
            span.label Password
            input(type="text", name="password1")
        div.input
            span.label Retype the password
            input(type="text", name="password2")
        div.actions
            input(type="submit", value="Validate account")

block sidebar
    .widget
        h1 What is Cosmos?
        p
            | Cosmos is the Reference Implementation
            | of the BigData Generic Enabler.
        p
            | Please, find further information at the
            | catalogue.


extends /layouts/post

block exports
  -exports.type = "post"
  -exports.comments = true
  -exports.author = "kud"
  -exports.title = "Se mettre au frontend en 2014, par où commencer ?"
  -exports.tags = ["frontend", "css", "js", "worflow", "interview"]
  -exports.date = "2014-05-15"

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

Fix a mispelled article tag (js -> javascript)

extends /layouts/post

block exports
  -exports.type = "post"
  -exports.comments = true
  -exports.author = "kud"
  -exports.title = "Se mettre au frontend en 2014, par où commencer ?"
  -exports.tags = ["frontend", "css", "javascript", "worflow", "interview"]
  -exports.date = "2014-05-15"

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


Add template for activity assigned users

.diff-status-wrapper
    span.key(
        translate="ACTIVITY.FIELDS.ASSIGNED_USERS"
    )
    span.diff(ng-if="vm.diff[0]") {{vm.diff[0]}}
    span.diff(ng-if="!vm.diff[0]" translate="ACTIVITY.VALUES.UNASSIGNED")

    tg-svg(
        svg-icon="icon-arrow-right"
    )

    span.diff(ng-if="vm.diff[1]") {{vm.diff[1]}}
    span.diff(ng-if="!vm.diff[1]" translate="ACTIVITY.VALUES.UNASSIGNED")


!!! 5
html(lang="en")
	head
		!= SocketStream
		meta(charset="utf-8")
		title Couchbone Todos
	body
		#todoapp
			header
				h1 Todos
				input#new-todo(type="text", placeholder="What needs to be done?")

			section#main
				input#toggle-all(type="checkbox")
				label(for="toggle-all") Mark all as complete
				ul#todo-list

			footer
				a#clear-completed Clear completed
				#todo-count

		#instructions Double-click to edit a todo.

		#credits
			| Full details at
			br
			a(href="http://github.com/colinf/couchbone-todos") couchbone-todos github site

Change github url to https

!!! 5
html(lang="en")
	head
		!= SocketStream
		meta(charset="utf-8")
		title Couchbone Todos
	body
		#todoapp
			header
				h1 Todos
				input#new-todo(type="text", placeholder="What needs to be done?")

			section#main
				input#toggle-all(type="checkbox")
				label(for="toggle-all") Mark all as complete
				ul#todo-list

			footer
				a#clear-completed Clear completed
				#todo-count

		#instructions Double-click to edit a todo.

		#credits
			| Full details at
			br
			a(href="https://github.com/colinf/couchbone-todos") couchbone-todos github site


- title = app.auction.get('name') + ' | Artsy'
- description = app.auction.mdToHtmlToText('description')

title= title
meta( property='og:title', content= title )
meta( name='description', content= description )
meta( property='og:description', content= description )
meta( property='twitter:description', content= description )
meta( property='og:url', content='#{sd.APP_URL}#{app.auction.href()}' )
link( rel='canonical', href='#{sd.APP_URL}#{app.auction.href()}' )

meta( property='og:type', content='website' )
meta( property='og:event', content='auction' )
if app.auction.get('cover_image')
  meta( property='og:image', content= app.auction.get('cover_image').cropped.url )
meta( property='twitter:card', content='summary' )
meta( name='fragment', content='!' )

Mark all sales as auctions for seo

- title = app.auction.get('name') + ' | Artsy'
- description = app.auction.mdToHtmlToText('description')

title= title
meta( property='og:title', content= title )
meta( name='description', content= description )
meta( property='og:description', content= description )
meta( property='twitter:description', content= description )
meta( property='og:url', content='#{sd.APP_URL}#{app.auction.href()}' )
link( rel='canonical', href='#{sd.APP_URL}/auction/#{app.auction.id}' )

meta( property='og:type', content='website' )
meta( property='og:event', content='auction' )
if app.auction.get('cover_image')
  meta( property='og:image', content= app.auction.get('cover_image').cropped.url )
meta( property='twitter:card', content='summary' )
meta( name='fragment', content='!' )


extends common-content
- load markdown
- load staticfiles
- load i18n
- load reference

block content_js_media
    include comments/media-js

block content_media
    include comments/media-css

block header
    div(style='float:right')
        if perms.judge.change_solution
            | [#[a(href='{% url "admin:judge_solution_change" solution.id %}') {% trans "Edit" %}]]

block body
    .content-description
        .alert.alert-info
            | {% trans "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist. Submitting an official solution before solving the problem yourself is a bannable offence." %}
        | #{solution.content|with_math:MATH_ENGINE|markdown:"solution"|reference}
    hr
    include comments/list

block bodyend
    if REQUIRE_JAX
        include mathjax-load
    include comments/math

Make it red, so people can't say they didn't see it

extends common-content
- load markdown
- load staticfiles
- load i18n
- load reference

block content_js_media
    include comments/media-js

block content_media
    include comments/media-css

block header
    div(style='float:right')
        if perms.judge.change_solution
            | [#[a(href='{% url "admin:judge_solution_change" solution.id %}') {% trans "Edit" %}]]

block body
    .content-description
        if not has_solved_problem
            .alert.alert-danger
                | {% trans "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist. Submitting an official solution before solving the problem yourself is a bannable offence." %}
        | #{solution.content|with_math:MATH_ENGINE|markdown:"solution"|reference}
    hr
    include comments/list

block bodyend
    if REQUIRE_JAX
        include mathjax-load
    include comments/math


fieldset(style='border:none')
    | {{original_widget}}
    if empty
        | Nothing here.
    else
        label(for=select_all_id)
            input.checkall(id=select_all_id, name=select_all_name, checked=all_selected, type='checkbox')
            | Check all
script(type='text/javascript')
    (function ($) {
        $(document).ready(function() {
            $('.checkall').click(function ()  {
                $(this).parents('fieldset:eq(0)').find(':checkbox').attr('checked', this.checked);
            });
        });
    })(django.jQuery);

Select all doesn't look nice at all in django-suit

div(style='border:none', id=select_all_name)
    | {{original_widget}}
    if empty
        | Nothing here.
    else
        label(for=select_all_id)
            input.checkall(id=select_all_id, name=select_all_name, checked=all_selected, type='checkbox')
            |  Check all
script(type='text/javascript')
    (function ($) {
        $(document).ready(function() {
            $('.checkall').click(function ()  {
                $('div#{{ select_all_name }}').find(':checkbox').prop('checked', this.checked);
            });
        });
    })(django.jQuery);


table.table
  tr
    th(colspan=3)
      span(data-i18n="general.results")
        | Results
      span
        |: #{documents.length}

  tr
    th(data-i18n="general.name") Name
    th(data-i18n="general.description") Description
    th(data-i18n="general.version") Version

  for data in documents
    - data = data.attributes;
    tr
      td
        a(href="/editor/thang/#{data.slug || data._id}")
          | #{data.name}
      td.body-row #{data.description}
      td #{data.version.major}.#{data.version.minor}

Put back the portraits in the thang type search view.

table.table
  tr
    th(colspan=3)
      span(data-i18n="general.results")
        | Results
      span
        |: #{documents.length}

  tr
    th#portrait-col
    th(data-i18n="general.name") Name
    th(data-i18n="general.description") Description
    th(data-i18n="general.version") Version

  for data in documents
    - data = data.attributes;
    tr
      td
        - path = '/file/db/thang.type/'+data.original+'/portrait.png'
        img(title="Add " + data.name, src=path, alt="").portrait
      td
        a(href="/editor/thang/#{data.slug || data._id}")
          | #{data.name}
      td.body-row #{data.description}
      td #{data.version.major}.#{data.version.minor}


// Scala jasongoodwin/authentikat-jwt
article.jwt-scala.accordion(data-accordion)
  .panel-heading(data-control)
    img(src='/img/12.svg')
    h3 Scala
  .panel-wrap(data-content)
    .panel-body
      .column
        p
          i.icon-budicon-500
          | Sign
        p
          i.icon-budicon-500
          | Verify
        p
          i.icon-budicon-501
          code iss
          |  check
        p
          i.icon-budicon-501
          code sub
          |  check
        p
          i.icon-budicon-501
          code aud
          |  check
        p
          i.icon-budicon-500
          code exp
          |  check
        p
          i.icon-budicon-500
          code nbf
          |  check
        p
          i.icon-budicon-501
          code iat
          |  check
        p
          i.icon-budicon-501
          code jti
          |  check
      .column
        p
          i.icon-budicon-500
          | HS256
        p
          i.icon-budicon-500
          | HS384
        p
          i.icon-budicon-500
          | HS512
        p
          i.icon-budicon-500
          | RS256
        p
          i.icon-budicon-500
          | RS384
        p
          i.icon-budicon-500
          | RS512
        p
          i.icon-budicon-500
          | ES256
        p
          i.icon-budicon-500
          | ES384
        p
          i.icon-budicon-500
          | ES512

    .author-info
      .maintainer
        a(href='https://github.com/pauldijou')
          i.icon-budicon-333(data-toggle='tooltip', title='', data-original-title='Maintainer')
          | pauldijou
        span.stars(data-repo='pauldijou/jwt-scala', style='display: inline;')
          i.icon-budicon-466
      .repository
        i.icon-1392070209-icon-social-github
        a(href='https://github.com/pauldijou/jwt-scala') View Repo

    .panel-footer
      code sbt: "pdi" %% "jwt-core" % "0.3.0"


.modal-dialog
  .modal-content
    form#m-wms-point-style-form.modal-form(role="form")
      .modal-header
        button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
        h4.modal-title
          | Style Wms Points
      .modal-body
        .row
          .col-md-4
            .form-group
              label.control-label(for="m-attribute") Attribute
              select.form-control#m-attribute
                each attribute in attributes
                  option(value= attribute)= attribute
          .col-md-4
            .form-group
              label.control-label(for="m-color-ramp") Color Ramp
              select.form-control#m-color-ramp.m-select-ramp(
                data-feature=feature
                data-property=rampKey)
                each ramp, name in ramps
                  option(data-content!=ramp.display data-ramp-name=name) #{name}
          .col-md-4
            .form-group
              label.control-label(for="m-marker") Marker
              select.form-control#m-marker
                each marker in markers
                  option(value= marker)= marker
      .modal-footer
         button.btn.btn-small.btn-primary#foobar
           i.icon-plus-squared
           | Save Style
         a.btn.btn-small.btn-default(data-dismiss="modal") Cancel


doctype html
html
  head
    title  Satellite Grid Controls
    meta(http-equiv="content-type", content="text/html; charset=utf-8")
    meta(name="viewport", content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0")
    meta(name="apple-mobile-web-app-capable", content="yes")
    meta(name="mobile-web-app-capable", content="yes")
    meta(name="apple-mobile-web-app-status-bar-style", content="black")

    link(rel="stylesheet", href="/stylesheets/dancer.css")

    script(src="/socket.io/socket.io.js")
    script(src="/bower_components/jquery/jquery.min.js")
    script(src="/bower_components/underscore/underscore-min.js")

  body
    div#alpha
    div#beta
    div#gamma
    div#x
    div#y
    div#z

    a(href="/")
        button Quit

    script(src="javascript/gridcontrol/gridcontrol.js")
    script.
      $('body').on('touchmove', '.scrollable', function(e) {
        e.stopPropagation();
      });
    script.
      $(document).on('ready',function(){
        //- startTrack();
        });
      $('#tracking').click(toggleTracking);


extends /layouts/_default

block content
  header
    h1 <%= _.slugify(projectName) %>

Add some gibberish to index page

extends /layouts/_default

block content
  header
    h1 project: <%= _.slugify(projectName) %>
    p this is powered by the jade template engine and served via node.js
    p until now this is what you got. No fancy js and css frameworks.
    p but you can add them very easily. Just update your bower file and run
bower install


extends layout

block content
  form(method="POST")
    label(for="post") URL of post to watch
    input(name="post",placeholder="https://reddit.com/r/...")
    label(for="phrase") Phrase to watch for
    input(name="phrase")
    button(type="submit") Add forfeit


Add page where a new author can be added

extends layout

block content
    h3= title

    form#add-author-form(method="post", action="/addAuthor")
        span Name
        input#author-name.form-control(type="text", name="author_name", "placeholder"= "Randall Munroe")

        span Book Name
        input#book-name.form-control(type="text", name="book_name", placeholder="What If?")

        button#add-author.btn.btn-primary(type="submit") Add


section

  section.sec-slide(data-background="#d35400")

    h1.white.upper Começando
    h2.white.upper do
    h1.white.upper Começo

  section.sec-slide(data-background="#2c3e50")

    h1.white.upper Paradigmas

  section.sec-slide(data-background="#2c3e50")

    h1.white Imperativas
    hr
    h1.white Declarativas

  section.sec-slide.left
    h3 Imperativas
    ul
      li.fragment Expressam uma lista de instruções para o programa.
      li.fragment Estruturada, OOP...
      li.fragment C, C++, Objective-C, Java, C#, Pascal, PHP, Ruby, Python, Perl, JavaScript, Lua, Fortran, Cobol, Smalltalk, Self...

  section.sec-slide.left
    h3 Declarativas
    ul
      li.fragment Não descrevem como fazer algo, e sim o quê deve ser feito.
      li.fragment Lógicas, Funcionais...
      li.fragment Common Lisp, Scheme, Dylan, Clojure, Scala, F#, OCaml, SML, Haskell, Erlang...


a#github-ribbon(href="https://github.com/jeremija/peer-calls")
  img(src="res/fork.png" alt="Fork me on GitHub")

Add target _blank for fork me ribbon

a#github-ribbon(href="https://github.com/jeremija/peer-calls" target="_blank")
  img(src="res/fork.png" alt="Fork me on GitHub")


Add the template for the postgres geojson widget

.modal-dialog
  .modal-content
    form#m-postgres.modal-form(role="form")
      .modal-header
        button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
        h4.modal-title
          | Postgres geojson
      .modal-body
        .form-group
          label.control-label(for="m-state-name") Name
            select.form-control#m-state-name.input-lg()
              each val in NAME
                option(value=val)= val
        .form-group
          label.control-label(for="m-production-category") Production Category
            select.form-control#m-production-category.input-lg()
              each val in PRODUCTION_CATEGORY
                option(value=val)= val
        .form-group
          label.control-label(for="m-category") Category
            select.form-control#m-category.input-lg()
              each val in CATEGORY
                option(value=val)= val
        .form-group
          label.control-label(for="m-sub-category") Sub Category
            select.form-control#m-sub-category.input-lg()
              each val in SUB_CATEGORY
                option(value=val)= val
        .form-group
          label.control-label(for="m-data-derivation") Data Derivation
            select.form-control#m-data-derivation.input-lg()
              each val in DATA_DERIVATION
                option(value=val)= val
      .modal-footer
        a.btn.btn-small.btn-default(data-dismiss="modal") Cancel
        button#m-refresh-dropdowns.btn.btn-small.btn-warning
            | Refresh Dropdowns
        button#m-get-geojson.btn.btn-small.btn-primary
            i.icon-plus-squared
            | Get Geojson


div.popover.select-color
    ul
        - for (var z = 0; z < 21; z++)
            li.color
    input(type="text", placeholder="personalized colors")
    div.selected-color(style="background-color: red")

Select color popover predefined colors

div.popover.select-color
    ul
        li.color(style="background: #fce94f")
        li.color(style="background: #edd400")
        li.color(style="background: #c4a000")
        li.color(style="background: #8ae234")
        li.color(style="background: #73d216")
        li.color(style="background: #4e9a06")
        li.color(style="background: #d3d7cf")
        li.color(style="background: #fcaf3e")
        li.color(style="background: #f57900")
        li.color(style="background: #ce5c00")
        li.color(style="background: #729fcf")
        li.color(style="background: #3465a4")
        li.color(style="background: #204a87")
        li.color(style="background: #888a85")
        li.color(style="background: #ad7fa8")
        li.color(style="background: #75507b")
        li.color(style="background: #5c3566")
        li.color(style="background: #ef2929")
        li.color(style="background: #cc0000")
        li.color(style="background: #a40000")
        li.color(style="background: #2e3436")

    input(type="text", placeholder="personalized colors")
    div.selected-color(style="background-color: red")


template(name="addTome")
	.panel.panel-default
		.panel-body
			form
				.form-group
					label(for="title") {{_ "tomeTitle"}}
					input.form-control.title(type="text")
				.form-group
					label(for="tomeNumber") {{_ "tomeNumber"}}
					input.form-control.tomeNumber(type="number" min="1" value="1")
				.form-group
					label(for="isbn") {{_ "isbnOrBarcode"}}
					input.form-control.isbn(type="text")
				.form-group
					label(for="cover") {{_ "cover"}}
					input.form-control.cover(type="url")
				.form-group
					label(for="releaseDate") {{_ "releaseDate"}}
					input.form-control.releaseDate(type="url")
				.form-group
					label(for="editor") {{_ "editor"}}
					input.form-control.awesomplete.editor(type="text")
				.form-group
					label(for="version") {{_ "version"}}
					input.form-control.awesomplete.version(type="text")