include ../../../mixins/rating
include ../../../mixins/text-input

.modal-header
  h3.modal-title Kapitel bewerten
.modal-body
  p Stufe die folgenden drei Aussagen mittels der Sternchen ein (1 Stern: trifft nicht auf mich zu, 5 Sterne: trifft voll auf mich zu). Du kannst deine Wertungen beliebig oft ändern.
  form.form-horizontal(name="ratingForm" novalidate)
    +rating("motivation","Die Bearbeitung dieses Kapitels war für mich sehr motivierend, weiterzumachen viel mir leicht.")
    +rating("success","Ich habe das Gefühl, einiges über das thema dazugelernt zu haben.")
    +rating("usability","Die Webseite lässt sich gut bedienen und es ist klar, was ich als nächstes tun soll.")
    .form-group
      label.control-label(for="comment-input") Kommentar
      textarea#comment-input.form-control(name="comment" data-ng-model="akzeptanz.summary.comment" placeholder="Ergänzungen, Kritik oder Anmerkungen, die du noch loswerden möchtest")
.modal-footer
  button.btn.btn-default(
    type="button"
    data-ng-click="akzeptanz.cancel()"
  ) abbrechen
  button.btn.btn-primary(
    type="button"
    data-ng-click="akzeptanz.ok()"
  ) Kommentar abschicken

Use absolute path for mixins

include /mixins/rating
include /mixins/text-input

.modal-header
  h3.modal-title Kapitel bewerten
.modal-body
  p Stufe die folgenden drei Aussagen mittels der Sternchen ein (1 Stern: trifft nicht auf mich zu, 5 Sterne: trifft voll auf mich zu). Du kannst deine Wertungen beliebig oft ändern.
  form.form-horizontal(name="ratingForm" novalidate)
    +rating("motivation","Die Bearbeitung dieses Kapitels war für mich sehr motivierend, weiterzumachen viel mir leicht.")
    +rating("success","Ich habe das Gefühl, einiges über das thema dazugelernt zu haben.")
    +rating("usability","Die Webseite lässt sich gut bedienen und es ist klar, was ich als nächstes tun soll.")
    .form-group
      label.control-label(for="comment-input") Kommentar
      textarea#comment-input.form-control(name="comment" data-ng-model="akzeptanz.summary.comment" placeholder="Ergänzungen, Kritik oder Anmerkungen, die du noch loswerden möchtest")
.modal-footer
  button.btn.btn-default(
    type="button"
    data-ng-click="akzeptanz.cancel()"
  ) abbrechen
  button.btn.btn-primary(
    type="button"
    data-ng-click="akzeptanz.ok()"
  ) Kommentar abschicken


- extends '__base.jade'

block style
  link(rel='stylesheet', href='{{ STATIC_URL }}brand/css/brand.css')

block content

  img(src='{{ STATIC_URL }}main/images/brand_logo_200.png',style='float:left;padding-right:20px;')
  h1 Welcome to the Brand Repository of the Open Knowledge Foundation
  h2 Brands List
  table
    thead
      tr: th Brand
        th Logo
        th Link
    tbody
      for brand in brands
        tr
          td.brand-table-td=brand.brand_nm
          td.brand-table-td-logo
            img(src="{{brand.brand_logo_src}}",height='50')
          td.brand-table-td
            if brand.brand_link
              a(href="http://#{brand.brand_link}") #{brand.brand_link}
            else
              h4 No link

  div.pagination
    span.step-links
      if brands.has_previous
        a(href="?page={{ brands.previous_page_number }}") Previous
      span.current Page {{ brands.number }} of {{ brands.paginator.num_pages }}.
      if brands.has_next
        a(href="?page={{ brands.next_page_number }}") Next

Add links to BrandView from BrandListView

- extends '__base.jade'

block style
  link(rel='stylesheet', href='{{ STATIC_URL }}brand/css/brand.css')

block content

  img(src='{{ STATIC_URL }}main/images/brand_logo_200.png',style='float:left;padding-right:20px;')
  h1 Welcome to the Brand Repository of the Open Knowledge Foundation
  h2 Brands List
  table
    thead
      tr: th Brand
        th Logo
        th Link
    tbody
      for brand in brands
        tr
          td.brand-table-td
           a(href='{% url "brandlist" %}{{brand.bsin}}') {{brand.brand_nm}}
          td.brand-table-td-logo
            img(src="{{brand.brand_logo_src}}",height='50')
          td.brand-table-td
            if brand.brand_link
              a(href="http://#{brand.brand_link}") #{brand.brand_link}
            else
              h4 No link

  div.pagination
    span.step-links
      if brands.has_previous
        a(href="?page={{ brands.previous_page_number }}") Previous
      span.current Page {{ brands.number }} of {{ brands.paginator.num_pages }}.
      if brands.has_next
        a(href="?page={{ brands.next_page_number }}") Next


extends layout

block includes
  script(src='/js/watchlists.js')

block content
  #main
    .page-header
      img.img-rounded(alt='', src="#{current_user.avatar_image_url}", style='float: left; margin-right: 10px')
      h1= current_user.name
        small
          |  @#{current_user.username}

  .hidden-xs.col-sm-2
    p 👑 Kickstarter Backer!

    p
      small= current_user.description

    hr
    .list-nav
      a(href='?when=future') Upcoming
      a(href='?when=past') Past Events

  .col-xs-12.col-sm-6
    include event-list

  .col-xs-12.col-sm-6

Fix Upcoming/Past Events spacing, increase column width for bio

extends layout

block includes
  script(src='/js/watchlists.js')

block content
  #main
  .row
    .col-md-12
      .page-header
        img.img-rounded(alt='', src="#{current_user.avatar_image_url}", style='float: left; margin-right: 10px')
        h1= current_user.name
          small
            |  @#{current_user.username}

  .row
    .col-xs-12.col-sm-3
      p 👑 Kickstarter Backer!

      p
        small= current_user.description

      hr
      .list-nav
        .list-item
          a(href='?when=future') Upcoming
        .list-item
          a(href='?when=past') Past Events

    .col-xs-12.col-sm-6
      include event-list


extends index
include mixins/meta-search
include mixins/icon
include mixins/loader
include mixins/search-result-asset

append header
  +searchMeta(result, catalog, breadcrumbs)

block content

  block before-results

  .let-it-grow
    section.container-fluid
      if config.features.filterSidebar
        .row
          .col-md-3.col-sm-4.col-xs-12#sidebar
            block sidebar
          .col-md-9.col-sm-8.col-xs-12
            #results-header.has-sidebar
              block results-header
            .row#results.search-results
              block results
            block after-results
              button.btn.btn-primary.btn-lg.load-more#load-more-btn
                +loader('Vis flere...')
      else
        .row#results-header
          block results-header
        #results.search-results
          block results
        block after-results
          button.btn.btn-primary.btn-lg.load-more#load-more-btn
            +loader('Vis flere...')

  .clearfix

  a#toTop
    +icon('scrolltotop')

  include includes/footer

append javascript
  script.
    $(function() {
      $('#toTop').scrollToTop(400);
      // To ensure no boxes are hidden if the was some load error
      $('.loaded-more').removeClass('loaded-more');
    });

Fix layout bug in non-sidebar layut

extends index
include mixins/meta-search
include mixins/icon
include mixins/loader
include mixins/search-result-asset

append header
  +searchMeta(result, catalog, breadcrumbs)

block content

  block before-results

  .let-it-grow
    section.container-fluid
      if config.features.filterSidebar
        .row
          .col-md-3.col-sm-4.col-xs-12#sidebar
            block sidebar
          .col-md-9.col-sm-8.col-xs-12
            #results-header.has-sidebar
              block results-header
            .row#results.search-results
              block results
            block after-results
              button.btn.btn-primary.btn-lg.load-more#load-more-btn
                +loader('Vis flere...')
      else
        #results-header
          block results-header
        .row#results.search-results
          block results
        block after-results
          button.btn.btn-primary.btn-lg.load-more#load-more-btn
            +loader('Vis flere...')

  .clearfix

  a#toTop
    +icon('scrolltotop')

  include includes/footer

append javascript
  script.
    $(function() {
      $('#toTop').scrollToTop(400);
      // To ensure no boxes are hidden if the was some load error
      $('.loaded-more').removeClass('loaded-more');
    });


.c-search-input-container
  .c-search-filter-container
    form.form-inline(role="form")
      .form-group
        .input-group
          .input-group-addon.c-filter-help-button(title="Show filter help")
            i.icon-help
          input#c-search-filter.form-control.input-sm(placeholder="Search filters")
      .form-group
        button.c-search-filter-apply.btn.btn-success.btn-sm(title="Apply filters")
          i.icon-filter
      .form-group
        button.c-search-toggle-layers.btn.btn-default.btn-sm(title="Toggle layer controls")
          i.icon-layers

  .c-search-result-message.pull-right

.c-search-results-container
  .c-search-left-panel
    .c-search-layers-panel.c-control-panel
      .c-control-panel-header
        .c-panel-title
          i.icon-layers
          |  Layers
        a.c-layer-panel-close.panel-close.close ×
      .c-search-layer-control-container

  .c-search-results-list-area

Remove close button from panel header on search page

.c-search-input-container
  .c-search-filter-container
    form.form-inline(role="form")
      .form-group
        .input-group
          .input-group-addon.c-filter-help-button(title="Show filter help")
            i.icon-help
          input#c-search-filter.form-control.input-sm(placeholder="Search filters")
      .form-group
        button.c-search-filter-apply.btn.btn-success.btn-sm(title="Apply filters")
          i.icon-filter
      .form-group
        button.c-search-toggle-layers.btn.btn-default.btn-sm(title="Toggle layer controls")
          i.icon-layers

  .c-search-result-message.pull-right

.c-search-results-container
  .c-search-left-panel
    .c-search-layers-panel.c-control-panel
      .c-control-panel-header
        .c-panel-title
          i.icon-layers
          |  Layers
      .c-search-layer-control-container

  .c-search-results-list-area


.attr-backdrop.save

div(id="#{attribute}_display_#{id}" class="attr-value")
  if value && value != ''
    if kind == 'markdown'
      != value_html
    else
      = value
  else if canEdit
    .placeholder Add #{attribute}
  else
    .placeholder —

form.attr-editor
  if kind == 'markdown'
    textarea(class="markdown editor" autofocus="autofocus" placeholder="Add #{attribute}")= value
  else
    input(class="plaintext editor full" value=value ? value : '' autofocus="autofocus" type="text")

Test if the value contains any characters other than a whitespace

.attr-backdrop.save

div(id="#{attribute}_display_#{id}" class="attr-value")
  if /\S/.test(value)
    if kind == 'markdown'
      != value_html
    else
      = value
  else if canEdit
    .placeholder Add #{attribute}
  else
    .placeholder —

form.attr-editor
  if kind == 'markdown'
    textarea(class="markdown editor" autofocus="autofocus" placeholder="Add #{attribute}")= value
  else
    input(class="plaintext editor full" value=value ? value : '' autofocus="autofocus" type="text")


title mcw
link(href="http://fonts.googleapis.com/css?family=Roboto", rel="stylesheet", type="text/css")
link(href="http://fonts.googleapis.com/css?family=Droid+Sans+Mono", rel="stylesheet", type="text/css")
link(href="http://fonts.googleapis.com/css?family=Roboto+Condensed", rel="stylesheet", type="text/css")
link(rel="stylesheet", href="css/mcw.css")
meta(name="viewport", content="width=device-width; initial-scale=1; user-scaleable=0; maximum-scale=1;")
meta(charset="UTF-8")

Use protocol agnostic font URLs and add bold and italic font styles for Roboto and Roboto Condensed

title mcw
link(href="//fonts.googleapis.com/css?family=Roboto:400,400italic,700,700italic", rel="stylesheet", type="text/css")
link(href="//fonts.googleapis.com/css?family=Droid+Sans+Mono", rel="stylesheet", type="text/css")
link(href="//fonts.googleapis.com/css?family=Roboto+Condensed:400,700", rel="stylesheet", type="text/css")
link(rel="stylesheet", href="css/mcw.css")
meta(name="viewport", content="width=device-width; initial-scale=1; user-scaleable=0; maximum-scale=1;")
meta(charset="UTF-8")


extends layout

block content
  form(method='post')
    input(type='hidden',name='_csrf',value=csrfToken)
    p Enter your desired username:
    input(type='text',name='username')
    p Enter a full name for your profile:
    input(type='text',name='displayname',placeholder='eg. Stuart P. Bentley')
    p Enter your desired password:
    input#password(type='password',name='password')
    input#password2(type='password',placeholder='Optional verification')
    p(style='background-color: #ffa')#passwarn Using an empty password will make your account email-login-token-only
    label
      input(type="checkbox",name="authenticate",checked)
      | Log into my new account when I submit this form
    input(type='submit')
  script.
    var pwInput = document.getElementById('password')
    var pw2Input = document.getElementById('password2')
    var pWarn = document.getElementById('passwarn')
    function checkAndWarn(){
      if (pwInput.value == '') {
        pWarn.textContent = 'Using an empty password will make your account email-login-token-only';
        pWarn.style.backgroundColor = '#ffa';
      else if (pwInput.value == pw2Input.value) {
        pWarn.textContent = 'Passwords match';
        pWarn.style.backgroundColor = '#afa';
      } else {
        pWarn.textContent = 'Passwords do not match';
        pWarn.style.backgroundColor = '#faa';
      }
    }
    pwInput.addEventListener('keyup', checkAndWarn);
    pw2Input.addEventListener('keyup', checkAndWarn);

Fix js typo in registration page

extends layout

block content
  form(method='post')
    input(type='hidden',name='_csrf',value=csrfToken)
    p Enter your desired username:
    input(type='text',name='username')
    p Enter a full name for your profile:
    input(type='text',name='displayname',placeholder='eg. Stuart P. Bentley')
    p Enter your desired password:
    input#password(type='password',name='password')
    input#password2(type='password',placeholder='Optional verification')
    p(style='background-color: #ffa')#passwarn Using an empty password will make your account email-login-token-only
    label
      input(type="checkbox",name="authenticate",checked)
      | Log into my new account when I submit this form
    input(type='submit')
  script.
    var pwInput = document.getElementById('password')
    var pw2Input = document.getElementById('password2')
    var pWarn = document.getElementById('passwarn')
    function checkAndWarn(){
      if (pwInput.value == '') {
        pWarn.textContent = 'Using an empty password will make your account email-login-token-only';
        pWarn.style.backgroundColor = '#ffa';
      } else if (pwInput.value == pw2Input.value) {
        pWarn.textContent = 'Passwords match';
        pWarn.style.backgroundColor = '#afa';
      } else {
        pWarn.textContent = 'Passwords do not match';
        pWarn.style.backgroundColor = '#faa';
      }
    }
    pwInput.addEventListener('keyup', checkAndWarn);
    pw2Input.addEventListener('keyup', checkAndWarn);


.share-links
  iframe(src="https://platform.twitter.com/widgets/tweet_button.html?url=http://github.com/gravityonmars/nodejs-starter&via=gravityonmars&size=small&related=cristiandouce&count=none&text=Nodejs Starter - Simple project setup using industry's best practices and modules.", allowtransparency='true', frameborder='0', scrolling='0', width='60', height='20')

  iframe(src='http://ghbtns.com/github-btn.html?user=gravityonmars&repo=nodejs-starter&type=watch&count=true&size=small', allowtransparency='true', frameborder='0', scrolling='0', width='86', height='20')

  iframe(src='http://ghbtns.com/github-btn.html?user=gravityonmars&repo=nodejs-starter&type=fork&count=true&size=small', allowtransparency='true', frameborder='0', scrolling='0', width='120', height='20')

header
  h1 NodeJS Starter
  p.description Simple project setup using industry's best practices and modules. Node.js, Express, Mongoose, passport.js, component.io, Jade, Stylus and Bootstrap.

h4 Run from your terminal:

pre.code-box
  | git clone git@github.com:gravityonmars/nodejs-starter.git
  | cd nodejs-starter
  | make

p
  strong Note
  span edit your config/development.json with your Facebook & Twitter keys.
  a(href="https://cloudup.com/c41pFaKcMBu", target="blank") Instructions here

h4 The authentication system is included:
p.social-login
  a(href="/auth/twitter").btn.btn-primary  login with Twitter

  a(href="/auth/facebook").btn.btn-primary  login with Facebook

h4 Projects using it:
ul
  li
    a(href="http://github.com/democracyos/app", target="_blank") DemocracyOS

h4 Contributors
ul
  li
    a(href="http://twitter.com/cristiandouce") Cristian Douce
  li
    a(href="http://twitter.com/gravityonmars") Ricardo Rauch

Update main page showing translation messages.

h1 Bill Tracker

ul
  li #{t('The bill start here.')} (02/07/2014)
  li #{t('Also went here')} (02/10/2014)
  li=t('Now, the bill is here') + '(Today)'


doctype html
html
    head
        title= title
        link(rel='stylesheet', href='/styles/styles.css')

        block head

    body

        include menu

        #main
            block content

        script(src="/app/lib/underscore-min.js")
        script(src="/vendor/jquery/jquery.min.js")
        script(src="/vendor/jquery-ui/ui/jquery-ui.js")
        script(src="/vendor/bootstrap/dist/js/bootstrap.min.js")
        script(src="/vendor/angular/angular.js")
        script(src="/vendor/angular-animate/angular-animate.min.js")
        script(src="/vendor/angular-bootstrap/ui-bootstrap-tpls.min.js")
        script(src="/vendor/angular-ui-utils/ui-utils.js")
        script(src="/vendor/bootbox/bootbox.js")
        script(src="/vendor/angular-ui-sortable/src/sortable.js")
        script(src="/app/common/focus.js")
        script(src="/app/common/confirmExit.js")
        script(src="/app/common/ngDebounce.js")
        script(src="/app/main.js")

        block scripts

Use the meta viewport tag to prevent making the website microscopic on mobile

doctype html
html
    head
        title= title
        link(rel='stylesheet', href='/styles/styles.css')
        meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1")

        block head

    body

        include menu

        #main
            block content

        script(src="/app/lib/underscore-min.js")
        script(src="/vendor/jquery/jquery.min.js")
        script(src="/vendor/jquery-ui/ui/jquery-ui.js")
        script(src="/vendor/bootstrap/dist/js/bootstrap.min.js")
        script(src="/vendor/angular/angular.js")
        script(src="/vendor/angular-animate/angular-animate.min.js")
        script(src="/vendor/angular-bootstrap/ui-bootstrap-tpls.min.js")
        script(src="/vendor/angular-ui-utils/ui-utils.js")
        script(src="/vendor/bootbox/bootbox.js")
        script(src="/vendor/angular-ui-sortable/src/sortable.js")
        script(src="/app/common/focus.js")
        script(src="/app/common/confirmExit.js")
        script(src="/app/common/ngDebounce.js")
        script(src="/app/main.js")

        block scripts


doctype 5
html(ng-app='wolkentask')
	head
		title= title
		link(rel='stylesheet', href='/stylesheets/style.css')
		link(rel='stylesheet', href='//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css')
		link(rel='stylesheet', href='//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css')
		meta(name="viewport", content="width=device-width, initial-scale=1.0")

		block head

	body
		block content

		script(type='application/javascript', src="https://code.jquery.com/jquery.js")
		script(type='application/javascript', src="//netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js")
		script(type='application/javascript', src='https://ajax.googleapis.com/ajax/libs/angularjs/1.2.4/angular.min.js')
		script(type='application/javascript', src='//cdnjs.cloudflare.com/ajax/libs/dropbox.js/0.10.2/dropbox.min.js')
		script(type='text/javascript', src='/javascripts/modules/WolkentaskApp.js')

Change to doctype html (jade)

doctype html
html(ng-app='wolkentask')
	head
		title= title
		link(rel='stylesheet', href='/stylesheets/style.css')
		link(rel='stylesheet', href='//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css')
		link(rel='stylesheet', href='//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css')
		meta(name="viewport", content="width=device-width, initial-scale=1.0")

		block head

	body
		block content

		script(type='application/javascript', src="https://code.jquery.com/jquery.js")
		script(type='application/javascript', src="//netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js")
		script(type='application/javascript', src='https://ajax.googleapis.com/ajax/libs/angularjs/1.2.4/angular.min.js')
		script(type='application/javascript', src='//cdnjs.cloudflare.com/ajax/libs/dropbox.js/0.10.2/dropbox.min.js')
		script(type='text/javascript', src='/javascripts/modules/WolkentaskApp.js')


extends layout

block scripts
  script(src="/bower_components/easeljs/lib/easeljs-0.7.1.min.js")
  script(src="/bower_components/createjs-tweenjs/lib/tweenjs-0.5.1.min.js")
  script(src="/canvas/scripts/canvas/utils.js")

block styles
  link(rel="stylesheet", href="/canvas/styles/main.css")

block content
  .container
    .page-header
      h1=title
        |
        small
          span(class=['the-cube', 'glyphicon', 'glyphicon-stop'])
          |  The jumping cube
    blockquote
      p Based on the tutorial
        a(href="http://indiegamr.com/retro-style-plattform-runner-game-for-mobile-with-easeljs-part-1/") Retro Style Platform Runner Game for mobile with EaselJS
        | .
    p Use space and numpad-0 to jump.
    canvas(id="mainCanvas" width="500" height="300") Alternate content

  script(src="/canvas/scripts/app.js")
  script(src="/canvas/scripts/controllers/main.js")
  script(src="/canvas/scripts/canvas/hero.js")
  script(src="/canvas/scripts/canvas/jumpy.js")

Use  instead of


doctype html
html
	head
		title AutoRobot
		script(type="text/javascript" src="./../../static/js/index.js")

Move loading of add script to the bottom of body

doctype html
html
	head
		title AutoRobot
	body
		#root

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


#requestModal.modal.fade(tabindex="-1", role="dialog", aria-labelledby="requestModalLabel")
  .modal-dialog(role="document")
    .modal-content
      .modal-header
        button.close(type="button", data-dismiss="modal", aria-label="Close")
          span(aria-hidden="true") ×
        h4#requestModalLabel.modal-title
      .modal-body
        .container-fluid
          .row
            .col-xs-4.service-type(name=RequestType.LEARN) Learn
            .col-xs-4.service-type(name=RequestType.SHARE) Share
            .col-xs-4.service-type(name=RequestType.EXCHANGE) Exchange
        form.profile-request-form
          #request-recipient(style="display:none;" recipient)
          .form-group
            label.control-label(for="skill") Request one skill:
            .skill-select
          .form-group
            label.control-label(for="message-text") Message:
            textarea#message-text.form-control
      .modal-footer
        button.btn.btn-primary#submit-skill-request(type="button") Request

Change copy on request modal

#requestModal.modal.fade(tabindex="-1", role="dialog", aria-labelledby="requestModalLabel")
  .modal-dialog(role="document")
    .modal-content
      .modal-header
        button.close(type="button", data-dismiss="modal", aria-label="Close")
          span(aria-hidden="true") ×
        h4#requestModalLabel.modal-title
      .modal-body
        .container-fluid
          .row
            .col-xs-4.service-type(name=RequestType.LEARN) Receive
            .col-xs-4.service-type(name=RequestType.SHARE) Give
            .col-xs-4.service-type(name=RequestType.EXCHANGE) Exchange
        form.profile-request-form
          #request-recipient(style="display:none;" recipient)
          .form-group
            label.control-label(for="skill") Request one skill:
            .skill-select
          .form-group
            label.control-label(for="message-text") Message:
            textarea#message-text.form-control
      .modal-footer
        button.btn.btn-primary#submit-skill-request(type="button") Request


template(name="board")
  if isBoardReady.get
    if currentBoard
      if onlyShowCurrentCard
        +cardDetails(currentCard)
      else
        +boardBody
    else
      //-- XXX We need a better error message in case the board has been archived
      //-- +message(label="board-not-found")
      | {{goHome}}
  else
    +spinner

template(name="boardBody")
  .board-wrapper(class=currentBoard.colorClass)
    +sidebar
    .board-canvas.js-swimlanes.js-perfect-scrollbar(
      class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}"
      class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}"
      class="{{#if draggingActive.get}}is-dragging-active{{/if}}")
      if showOverlay.get
        .board-overlay
      if currentBoard.isTemplatesBoard
        each currentBoard.swimlanes
          +swimlane(this)
      else if isViewSwimlanes
        each currentBoard.swimlanes
          +swimlane(this)
      else if isViewLists
        +listsGroup(currentBoard)
      else if isViewCalendar
        +calendarView
      else
        +listsGroup(currentBoard)

template(name="calendarView")
  if isViewCalendar
    .calendar-view.swimlane
      if currentCard
        +cardDetails(currentCard)
      +fullcalendar(calendarOptions)

Fix bug: When on board, clicking Admin Panel redirects to All Boards page, so it did require to click Admin Panel again.

template(name="board")
  if isBoardReady.get
    if currentBoard
      if onlyShowCurrentCard
        +cardDetails(currentCard)
      else
        +boardBody
    else
      //-- XXX We need a better error message in case the board has been archived
      +message(label="board-not-found")
      //-- | {{goHome}}
  else
    +spinner

template(name="boardBody")
  .board-wrapper(class=currentBoard.colorClass)
    +sidebar
    .board-canvas.js-swimlanes.js-perfect-scrollbar(
      class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}"
      class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}"
      class="{{#if draggingActive.get}}is-dragging-active{{/if}}")
      if showOverlay.get
        .board-overlay
      if currentBoard.isTemplatesBoard
        each currentBoard.swimlanes
          +swimlane(this)
      else if isViewSwimlanes
        each currentBoard.swimlanes
          +swimlane(this)
      else if isViewLists
        +listsGroup(currentBoard)
      else if isViewCalendar
        +calendarView
      else
        +listsGroup(currentBoard)

template(name="calendarView")
  if isViewCalendar
    .calendar-view.swimlane
      if currentCard
        +cardDetails(currentCard)
      +fullcalendar(calendarOptions)


table.table.table-bordered.table-hover
  thead
    tr
      th Tables in database
  tbody
    each table in tables
      tr
        td= table.name

Use list group instead of table when listing tables in database

.list-group.table-list
  each table in tables
    a(href='#', data-table-name=table.name).list-group-item= table.name


extends /src/layouts/post

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

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

Fix small typo in title on post about Makefiles

extends /src/layouts/post

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

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


#auth-page-signup-social
  a.auth-page-facebook.avant-garde-box-button.avant-garde-box-button-black(
    href='/users/auth/facebook?redirect-to=#{redirectTo}'
  ) Facebook
  a.auth-page-twitter.avant-garde-box-button.avant-garde-box-button-black(
    href='/users/auth/twitter?redirect-to=#{redirectTo}'
  ) Twitter
  a.avant-garde-box-button.avant-garde-box-button-black(
    href='/sign_up?email=1&redirect-to=#{redirectTo}'
  ) Your email address

Remove twitter from the signups options

#auth-page-signup-social
  a.auth-page-facebook.avant-garde-box-button.avant-garde-box-button-black(
    href='/users/auth/facebook?redirect-to=#{redirectTo}'
  ) Facebook
  a.avant-garde-box-button.avant-garde-box-button-black(
    href='/sign_up?email=1&redirect-to=#{redirectTo}'
  ) Your email address


//- index.jade
doctype html
html
  include ./includes/head.jade
  body#page-top(data-spy="scroll" data-target=".navbar-custom")
    include ./includes/header.jade
    div.container
      section.information
        h2
          | The following is a list of all our open source projects.
        div
          | If you have questions, suggestions or comments about any of
          | these projects please contact the dev team on our public
          a(href='http://inaka.net/hipchat') Open-Source
          |  hipchat room.
      section#projects
        div#filters
          span SHOW
          a(href='#' data-lang='all') All
        ul
          include ./includes/projects.jade

Change the way to contact us

//- index.jade
doctype html
html
  include ./includes/head.jade
  body#page-top(data-spy="scroll" data-target=".navbar-custom")
    include ./includes/header.jade
    div.container
      section.information
        h2
          | The following is a list of all our open source projects.
        div
          | If you have questions, suggestions or comments about any of
          | these projects please contact the dev team at inakos@googlegroups.com
      section#projects
        div#filters
          span SHOW
          a(href='#' data-lang='all') All
        ul
          include ./includes/projects.jade


doctype 5
html(lang="en")
  head
    title
     | ZoomHub:
     = ' ' + content.id
    style.
        html, body {
            background-color: #000;
            margin: 0;
            height: 100%;
        }

        #container {
            width: 100%;
            height: 100%;
        }
  body
    #container
    script(src='/static/js/openseadragon.min.js')
    script.
        var viewer = OpenSeadragon({
            id: 'container',
            prefixUrl: '/static/js/images/',
            tileSources: '/static/dzi/#{content.id}.dzi'
        });

Add link to content metadata

doctype 5
html(lang="en")
  head
    title
     | ZoomHub:
     = ' ' + content.id
    style.
        html, body {
            font-family: Helvetica, Arial, sans-serif;
            background-color: #000;
            margin: 0;
            height: 100%;
            color: #fff;
        }

        a {
          color: #999;
          text-decoration: none;
        }

        a:hover {
          color: #666;
        }

        #metadata {
          position: absolute;
          right: 0;
          bottom: 0;
          background-color: #222;
          padding: 0.8em 1.5em;
          text-align: right;
        }

        #container {
            width: 100%;
            height: 100%;
        }
  body
    #container
    #metadata
        a(href=content.self) Metadata
    script(src='/static/js/openseadragon.min.js')
    script.
        var viewer = OpenSeadragon({
            id: 'container',
            prefixUrl: '/static/js/images/',
            tileSources: '/static/dzi/#{content.id}.dzi'
        });


extends ../../../components/layout/index

block body
  include ./path
  .profile
    include ./partials/_channel_groups.jade

block scripts
  script( src=asset('/assets/profile.js') )

Add empty state for channels view

extends ../../../components/layout/index

block body
  include ./path
  .profile
    include ./partials/_channel_groups.jade
  .channel-empty
    include ./empty

block scripts
  script( src=asset('/assets/profile.js') )


tg-lightbox-close
form
    h2.title(translate="COMMON.NEW_BULK")
    fieldset
        textarea(
            cols="200"
            wrap="off"
            ng-model="form.data"
            data-required="true"
            data-linewidth="200"
            ng-attr-placeholder="{{'COMMON.ONE_ITEM_LINE' | translate}}"

        )

    button.button-green.button-large.button-block(
        type="submit"
        title="{{'COMMON.SAVE' | translate}}"
        translate="COMMON.SAVE"
    )

Fix taskboard add bulk task button on lightbox

tg-lightbox-close
form
    h2.title(translate="COMMON.NEW_BULK")
    fieldset
        textarea(
            cols="200"
            wrap="off"
            ng-model="form.data"
            data-required="true"
            data-linewidth="200"
            ng-attr-placeholder="{{'COMMON.ONE_ITEM_LINE' | translate}}"

        )

    button.btn-big(
        type="submit"
        title="{{'COMMON.SAVE' | translate}}"
        translate="COMMON.SAVE"
    )


.follows-item(id=item.id)
  h3
    span.name
      a(href=item.clientUrl())= item.get('name')
    button.avant-garde-button-white.follow-button
  .artworks
    .loading-spinner

Correct the styling of the names of following artists/categories.

.follows-item(id=item.id)
  h3
    span.name
      a.avant-garde-button-text(href=item.clientUrl())= item.get('name')
    button.avant-garde-button-white.follow-button
  .artworks
    .loading-spinner


!!! 5
html(oncontextmenu='return false')
  head
    link(href='css/style.css', rel='stylesheet')
  body
    p.
      A problem has been detected and Windows has been
      shut down to prevent damage to your computer.
    br
    br
    p
      | If this is the first time you've seen this Stop error screen,
      br
      | restart your computer.
      | If this screen appears again, follow
      br
      | these steps:
    p
      | Check to make sure any new hardware of software is properly installed.
      br
      | If this is a new installation, ask your hardware or software manufacturer
      br
      | for any Windows updates you might need.
    p
      | If problems continue, disable or remove any newly installed hardware
      br
      | or software. Disable BIOS memory options such as caching or shadowing.
      br
      | If you need to use Safety Mode to remove or disable components, restart
      br
      | your computer, press F8 to select Advanced Startup Options, and then
      br
      | select Safe Mode.
    p.
      Technical information:
    p.
      *** STOP: 0x000000005 (0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
      0x0000000000000000)

Update deprecated Jade doctype declaration

doctype html
html(oncontextmenu='return false')
  head
    link(href='css/style.css', rel='stylesheet')
  body
    p.
      A problem has been detected and Windows has been
      shut down to prevent damage to your computer.
    br
    br
    p
      | If this is the first time you've seen this Stop error screen,
      br
      | restart your computer.
      | If this screen appears again, follow
      br
      | these steps:
    p
      | Check to make sure any new hardware of software is properly installed.
      br
      | If this is a new installation, ask your hardware or software manufacturer
      br
      | for any Windows updates you might need.
    p
      | If problems continue, disable or remove any newly installed hardware
      br
      | or software. Disable BIOS memory options such as caching or shadowing.
      br
      | If you need to use Safety Mode to remove or disable components, restart
      br
      | your computer, press F8 to select Advanced Startup Options, and then
      br
      | select Safe Mode.
    p.
      Technical information:
    p.
      *** STOP: 0x000000005 (0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
      0x0000000000000000)


.header
	span#okness
	= " "
	span#status
pre#errors
#warnings
iframe#iframe(src="javascript:;")

Allow iframe to use browser fullscreen API

.header
	span#okness
	= " "
	span#status
pre#errors
#warnings
iframe#iframe(src="javascript:;" allowfullscreen)


//- under the #nco-control
//-.NcoControl
.NcoControl_request

.NcoControl_mylist

.NcoControl_actions
    button.NcoControl_actions_btn.skip.fa.fa-forward(title="Skip")
    button.NcoControl_actions_btn.good.fa.fa-thumbs-up(title="Good")
    button.NcoControl_actions_btn.mylist.fa.fa-star(title="Mylist")
    button.NcoControl_actions_btn.request.fa.fa-hand-o-right(title="Request")
    button.NcoControl_actions_btn.reload.fa.fa-refresh(title="リロード")
    button.NcoControl_actions_btn.openNsen.fa.fa-external-link(title="Nsenを開く")

.NcoControl_comment
    .NcoControl_comment_opt
        label.NcoControl_comment_opt_184
            input(type="checkbox", name="comment_184")
            | 184で投稿

    .NcoControl_comment_alert エラー
    textarea.NcoControl_comment_input(placeholder="コメント")

Add comment input form desctiption in placeholder.

//- under the #nco-control
//-.NcoControl
.NcoControl_request

.NcoControl_mylist

.NcoControl_actions
    button.NcoControl_actions_btn.skip.fa.fa-forward(title="Skip")
    button.NcoControl_actions_btn.good.fa.fa-thumbs-up(title="Good")
    button.NcoControl_actions_btn.mylist.fa.fa-star(title="Mylist")
    button.NcoControl_actions_btn.request.fa.fa-hand-o-right(title="Request")
    button.NcoControl_actions_btn.reload.fa.fa-refresh(title="リロード")
    button.NcoControl_actions_btn.openNsen.fa.fa-external-link(title="Nsenを開く")

.NcoControl_comment
    .NcoControl_comment_opt
        label.NcoControl_comment_opt_184
            input(type="checkbox", name="comment_184")
            | 184で投稿

    .NcoControl_comment_alert エラー
    textarea.NcoControl_comment_input(placeholder="コメント(Shift + Enterで改行)")


div(style="margin-left: {{comment.hierarchy * 50}}px")
  div
    span.author {{ comment.author }}
    span.less-important  -
    time.timeago.less-important(datetime="{{comment.time}}")
    div.data(id="comment-readonly-{{comment.id}}")
      pre.custompre {{ comment.data }}
    my-comment-form.hideCommentForm(placeholder="", user="author", button="Post", id="comment-edit-{{comment.id}}" comment="comment", mode="edit")
    div.less-important(ng-show="controller.isLoggedIn()")
      ul.horizontal-list
        li( ng-show="author === '{{comment.author}}'" )
          my-comment-edit(comment-id="{{comment.id}}")
        li
          my-comment-reply(comment-id="{{comment.id}}" )
    div(style="margin-left: {{comment.hierarchy + 1 * 50}}px")
      my-comment-form.hideCommentForm(placeholder="Post a reply", user="author", button="Post", id="comment-reply-{{comment.id}}" comment="comment")

Allow using html in comments.

div(style="margin-left: {{comment.hierarchy * 50}}px")
  div
    span.author {{ comment.author }}
    span.less-important  -
    time.timeago.less-important(datetime="{{comment.time}}")
    div.data(id="comment-readonly-{{comment.id}}")
      div(ng-bind-html="comment.data")
    my-comment-form.hideCommentForm(placeholder="", user="author", button="Post", id="comment-edit-{{comment.id}}" comment="comment", mode="edit")
    div.less-important(ng-show="controller.isLoggedIn()")
      ul.horizontal-list
        li( ng-show="author === '{{comment.author}}'" )
          my-comment-edit(comment-id="{{comment.id}}")
        li
          my-comment-reply(comment-id="{{comment.id}}" )
    div(style="margin-left: {{comment.hierarchy + 1 * 50}}px")
      my-comment-form.hideCommentForm(placeholder="Post a reply", user="author", button="Post", id="comment-reply-{{comment.id}}" comment="comment")


extends layout

mixin displayFeature(feature)
  = feature.name
  ul: each key in Object.keys(feature.examples)
    li
      +displayExample({ technology: key, code: feature.examples[key]})

mixin displayExample(example)
  b #{example.technology}:
  if typeof example.code === 'string'
    code= example.code
  else
    each str in example.code
      code= str

block content
  .container

    // navbar
    nav.navbar.navbar-default(role='navigation')
      a.navbar-brand(href='#') Rose

    // search form
    form.input-group.input-group-lg(role='search')
      input.form-control(type='text', name='query', placeholder='Search for a method, function, or command', autofocus='')
      .input-group-btn
        button.btn.btn-primary(type='submit')
          span.glyphicon.glyphicon-search
    // results
    h2 Results
    ol: each feature in features
      li
        +displayFeature(feature)

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

Add a link to Rose's GitHub repository

extends layout

mixin displayFeature(feature)
  = feature.name
  ul: each key in Object.keys(feature.examples)
    li
      +displayExample({ technology: key, code: feature.examples[key]})

mixin displayExample(example)
  b #{example.technology}:
  if typeof example.code === 'string'
    code= example.code
  else
    each str in example.code
      code= str

block content
  .container

    // navbar
    nav.navbar.navbar-default(role='navigation')
      .navbar-header
        a.navbar-brand(href='#') Rose
      .collapse.navbar-collapse
        ul.nav.navbar-nav.navbar-right
          li: a(href='https://github.com/thenickperson/rose' target='_blank').
            GitHub Repository

    // search form
    form.input-group.input-group-lg(role='search')
      input.form-control(type='text', name='query', placeholder='Search for a method, function, or command', autofocus='')
      .input-group-btn
        button.btn.btn-primary(type='submit')
          span.glyphicon.glyphicon-search
    // results
    h2 Results
    ol: each feature in features
      li
        +displayFeature(feature)

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


extends layout

mixin displayFeature(feature)
  = feature.name
  ul: each key in Object.keys(feature.examples)
    li
      +displayExample({ technology: key, code: feature.examples[key]})

mixin displayExample(example)
  b #{example.technology}:
  if typeof example.code === 'string'
    code= example.code
  else
    each str in example.code
      code= str

block content
  .container

    // navbar
    nav.navbar.navbar-default(role='navigation')
      .navbar-header
        a.navbar-brand(href='#') Rose
      .collapse.navbar-collapse
        ul.nav.navbar-nav.navbar-right
          li: a(href='https://github.com/thenickperson/rose' target='_blank').
            GitHub Repository

    // search form
    form.input-group.input-group-lg(role='search')
      input.form-control(type='text', name='query', placeholder='Search for a method, function, or command', autofocus='')
      .input-group-btn
        button.btn.btn-primary(type='submit')
          span.glyphicon.glyphicon-search
    // results
    h2 Results
    ol: each feature in features
      li
        +displayFeature(feature)

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

Use a dictionary list for each feature result

extends layout

mixin displayFeature(feature)
  = feature.name
  dl: each key in Object.keys(feature.examples)
    +displayExample({ technology: key, code: feature.examples[key]})

mixin displayExample(example)
  dt #{example.technology}:
  dd
    if typeof example.code === 'string'
      code= example.code
    else
      each str in example.code
        code= str

block content
  .container

    // navbar
    nav.navbar.navbar-default(role='navigation')
      .navbar-header
        a.navbar-brand(href='#') Rose
      .collapse.navbar-collapse
        ul.nav.navbar-nav.navbar-right
          li: a(href='https://github.com/thenickperson/rose' target='_blank').
            GitHub Repository

    // search form
    form.input-group.input-group-lg(role='search')
      input.form-control(type='text', name='query', placeholder='Search for a method, function, or command', autofocus='')
      .input-group-btn
        button.btn.btn-primary(type='submit')
          span.glyphicon.glyphicon-search
    // results
    h2 Results
    ol: each feature in features
      li
        +displayFeature(feature)

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


extends layout

block content
  h1(style="")= title
  div(id='icon', style="line-height:140pt; font-size:200pt; font-size-adjust:0.55; margin-top:20px; overflow:block; text-align:center;", data-icon="")
    strong
      div(class="lead", style="clear:both; margin-top:40px; text-align:center;", id='stat_str') requesting your location...
  script(src="/js/tmprtr.js")

Update styles to disregard iphone

extends layout

block content
  h1(style="")= title
  div(id='icon', style="line-height:140pt; font-size:200pt; margin-top:20px; padding-top:30px; text-align:center;", data-icon="")
    strong
      div(class="lead", style="clear:both; margin-top:40px; text-align:center;", id='stat_str') requesting your location...
  script(src="/js/tmprtr.js")


- if layout
  - extends "ekklesia_portal/layout.j2.jade"

- block content
  .argument_content
    h5.argument_title
      if details
        a(href=details_link)= title
      else
        = title

    if options.extended
      small= abstract
      hr
      .argument_details_extended= (details or "")|markdown
    else
      p.argument_text= abstract

        if details
          a.read_more(href=self_link)   >>>

// generated from jade
//- vim: set filetype=jade sw=2 ts=2 sts=2 expandtab:

Add text to read on link

- if layout
  - extends "ekklesia_portal/layout.j2.jade"

- block content
  .argument_content
    h5.argument_title
      if details
        a(href=details_link)= title
      else
        = title

    if options.extended
      small= abstract
      hr
      .argument_details_extended= (details or "")|markdown
    else
      p.argument_text= abstract

        if details
          a.read_more(href=details_link)
            |  >>>
            = _('read_on')|capitalize

// generated from jade
//- vim: set filetype=jade sw=2 ts=2 sts=2 expandtab:


div.change-email-form(tg-change-email)
    p
        strong(translate="CHANGE_EMAIL_FORM.TITLE")
    p
        span(translate="CHANGE_EMAIL_FORM.SUBTITLE")

    form
        fieldset
            input(
                type="hidden"
                name="email_token"
                ng-model="data.email_token"
                data-required="true"
                placeholder="{{'CHANGE_EMAIL_FORM.PLACEHOLDER_INPUT_TOKEN' | translate}}"
            )

            a.button-gray.ng-submit-form(
                href=""
                title="{{'CHANGE_EMAIL_FORM.ACTION_CHANGE_EMAIL' | translate}}"
                translate="CHANGE_EMAIL_FORM.ACTION_CHANGE_EMAIL"
            )
            button(type="submit", class="hidden")

Add new button to confirm email

div.change-email-form(tg-change-email)
    p
        strong(translate="CHANGE_EMAIL_FORM.TITLE")
    p
        span(translate="CHANGE_EMAIL_FORM.SUBTITLE")

    form
        fieldset
            input(
                type="hidden"
                name="email_token"
                ng-model="data.email_token"
                data-required="true"
                placeholder="{{'CHANGE_EMAIL_FORM.PLACEHOLDER_INPUT_TOKEN' | translate}}"
            )

            a.btn-small.ng-submit-form(
                variant="primary"
                href=""
                title="{{'CHANGE_EMAIL_FORM.ACTION_CHANGE_EMAIL' | translate}}"
                translate="CHANGE_EMAIL_FORM.ACTION_CHANGE_EMAIL"
            )
            button(type="submit", class="hidden")


doctype html
html(lang='en')
head
  title Tools for the Hack Architecture
  link(rel='stylesheet', type='text/css', href='/app.css')

body
  include ../includes/nav.jade
  main#content
    router-view
  include ../includes/footer.jade
  script(type='text/javascript', src='DIGEST(/app.js)')
  script(type='text/javascript').
    require('initialize');

Fix initialization path and add wrapper class to main html element

doctype html
html(lang='en')
head
  title Tools for the Hack Architecture
  link(rel='stylesheet', type='text/css', href='/app.css')

body
  include ../includes/nav.jade
  main.wrapper#content
    router-view
  include ../includes/footer.jade
  script(type='text/javascript', src='DIGEST(/app.js)')
  script(type='text/javascript').
    require('code/initialize');


---
layout: "default"
---
section.post
  h1 #{document.title}
  != content

Add post meta inside within an article.

---
layout: "default"
---
section.post
  article
    h1 #{document.title}
    h2.post-meta
      a(href='mailto:#{site.owner.email}', title='Email #{site.owner.name}') #{site.owner.name}
      |  | #{document.date}
    != content


doctype html
html
  head
    title exercism tracks

  body
    table
      tr
        each track in tracks
          td(valign='top')
            table
              tr
                th= track.language
              each problem in track.problems
                tr
                  td(style='white-space: nowrap')
                    - var name = problem.split('/').pop()
                    a(href='https://github.com/exercism/x-common/blob/master/' + name + '.md')
                        = name

Add footer similar to exercism.io main web site.

doctype html
html
  head
    title exercism tracks

  body
    table
      tr
        each track in tracks
          td(valign='top')
            table
              tr
                th= track.language
              each problem in track.problems
                tr
                  td(style='white-space: nowrap')
                    - var name = problem.split('/').pop()
                    a(href='https://github.com/exercism/x-common/blob/master/' + name + '.md')
                        = name
    hr
    img(src='http://exercism.io/img/logo.png' style='margin-right: 20px' width='120')
    |Copyright © Katrina Owen Source:
    a(href='https://github.com/exercism/synopsis')
      |github.com/exercism/synopsis
    |.  Report bugs and submit feedback on
    a(href='https://github.com/exercism/exercism.io/issues')
      |GitHub
    |.  Ask questions on
    a(href='http://stackoverflow.com/questions/tagged/exercism')
      |StackOverflow
    |.


extends ../layout

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

block content
  .page-header
    h3 All Projects
    //sidebar list
    div
      //parent list
      ul
        mixin sidebarItem('Project status',['Development','Public test','Official / running'])
        mixin sidebarItem('Dedicated for',['Civil society organizations','Cities','Watchdogs'])
        mixin sidebarItem('Development status',['active','Suspended'])
        mixin sidebarItem('Join as',['backend developer','frontend developer','designer','editorial staff'])
        mixin sidebarItem('Developed locally in',['San Francisco'])
        mixin sidebarItem('Technologies',['Android','AngularJS','Django','iOS','Javascript'])
    //Add projects
    div.row
      .col-sm-6
        each project in projects
          .project-card
            img(href='http://placekitten.com/g/200/300')
            span.title= project.name
            br
            span.description= project.description
            br
            span.link= project.homepage
            br
            br

Add Changes to product cards

extends ../layout

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

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


include partials/userStub.jade
include partials/head.jade
include partials/header.jade
include splash.jade
include partials/footer.jade

doctype html5
html
  head
    +head()
  body
    div.page-wrapper
      +header()
      section
        +splash()
      +footer()

Remove userStub reference that isn't used


extends layout

block content
  .page-header
    h1
      a(href='/') ghlint
      |
      small A linter for GitHub projects.
  form(action='/', role='form')
    .form-group
      label(for='repo') Repository
      .input-group
        input#repo.form-control(name='repo', placeholder='user/repository', autofocus)
        span.input-group-btn
          input.btn.btn-primary(type='submit', value='Lint')
  if results
    h2 Results
    table.table
      thead
        tr
          th Linter
          th Status
      tbody
        for result in results
          tr
            td= result.message
            td= result.result
  script(src='http://codepen.io/assets/libs/fullpage/jquery.js')
  script(src='http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js')

Use semantic classes for table rows

extends layout

block content
  .page-header
    h1
      a(href='/') ghlint
      |
      small A linter for GitHub projects.
  form(action='/', role='form')
    .form-group
      label(for='repo') Repository
      .input-group
        input#repo.form-control(name='repo', placeholder='user/repository', autofocus)
        span.input-group-btn
          input.btn.btn-primary(type='submit', value='Lint')
  if results
    h2 Results
    table.table.table-bordered
      thead
        tr
          th Linter
          th Status
      tbody
        for result in results
          tr(class=(result.result ? 'success' : 'danger'))
            td= result.message
            td= result.result
  script(src='http://codepen.io/assets/libs/fullpage/jquery.js')
  script(src='http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js')


div.taskboard-tagline(tg-colorize-tags="task.tags", tg-colorize-tags-type="taskboard")
div.taskboard-task-inner
    div.taskboard-user-avatar(tg-taskboard-user-avatar="task.assigned_to", ng-model="task",
                             ng-class="{iocaine: task.is_iocaine}")
    span.icon.icon-iocaine(ng-if="task.is_iocaine", title="Feeling a bit overwhelmed by a task? Make sure others know about it by clicking on Iocaine when editing a task. It's possible to become immune to this (fictional) deadly poison by consuming small amounts over time just as it's possible to get better at what you do by occasionally taking on extra challenges!")
    p.taskboard-text
        a.task-assigned(href="", title="Assign task")
        span.task-num(tg-bo-ref="task.ref")
        a.task-name(href="", title="See task details", tg-bind-html="task.subject",
                    tg-nav="project-tasks-detail:project=project.slug,ref=task.ref")
    a.icon.icon-edit(tg-check-permission="modify_task",
        href="", title="Edit task")

    a.icon.icon-drag-h(tg-check-permission="modify_task",
        href="", title="Drag&Drop")

Fix wrong html escaping on taskboard task subject.

div.taskboard-tagline(tg-colorize-tags="task.tags", tg-colorize-tags-type="taskboard")
div.taskboard-task-inner
    div.taskboard-user-avatar(tg-taskboard-user-avatar="task.assigned_to", ng-model="task",
                             ng-class="{iocaine: task.is_iocaine}")
    span.icon.icon-iocaine(ng-if="task.is_iocaine", title="Feeling a bit overwhelmed by a task? Make sure others know about it by clicking on Iocaine when editing a task. It's possible to become immune to this (fictional) deadly poison by consuming small amounts over time just as it's possible to get better at what you do by occasionally taking on extra challenges!")
    p.taskboard-text
        a.task-assigned(href="", title="Assign task")
        span.task-num(tg-bo-ref="task.ref")
        a.task-name(href="", title="See task details", ng-bind="task.subject",
                    tg-nav="project-tasks-detail:project=project.slug,ref=task.ref")
    a.icon.icon-edit(tg-check-permission="modify_task",
        href="", title="Edit task")

    a.icon.icon-drag-h(tg-check-permission="modify_task",
        href="", title="Drag&Drop")


- title('Customize the styles')

div.left
    :markdown
        ## Customize the styles

        Bibliosoph comes with some handy [Elements](#elements-intro) but you can easily customize them or add your own. The css is written using [Stylus](http://learnboost.github.io/stylus/) and sits in the `assets/css` folder. Though if you ever want to upgrade Bibliosoph and benefit from new Elements and features, you mustn't edit any of the `*.styl` files. That way, when you update Bibliosoph, the css can upgrade silently.

        But don't worry we got you covered if you want to overwrite the css, there is a `assets/css/customize/` folder with a `base.styl` file in it. You can do whatever you want inside this folder, create new files, import them inside the `base.styl`...

        The `base.styl` is loaded last in the project, so it lets you overwrite everything.

    :markdown
      ### Add icons to the menu items

      Bibliosoph comes with the [TWG icon set](http://blog.twg.ca/2010/11/retina-display-icon-set/) (optimized for the web). To add an icon to a menu item, add something like this to the `assets/css/customize/base.styl` file:

      ```
      .my-menu-item-class span {
        background: url('../images/icons/the-desired-icon.png') no-repeat 0 0;
      }
      ```

Update the doc for responsive design

- title('Customize the styles')

div.left
    :markdown
        ## Customize the styles

        Bibliosoph comes with some handy [Elements](#elements-intro) but you can easily customize them or add your own. The css is written using [Stylus](http://learnboost.github.io/stylus/) and sits in the `assets/css` folder. Though if you ever want to upgrade Bibliosoph and benefit from new Elements and features, you mustn't edit any of the `*.styl` files. That way, when you update Bibliosoph, the css can upgrade silently.

        But don't worry we got you covered if you want to overwrite the css, there is a `assets/css/customize/` folder with a `base.styl` file in it. You can do whatever you want inside this folder, create new files, import them inside the `base.styl`...

        The `base.styl` is loaded last in the project, so it lets you overwrite everything.

    :markdown
      ### Add icons to the menu items

      Bibliosoph comes with the [TWG icon set](http://blog.twg.ca/2010/11/retina-display-icon-set/) (optimized for the web). To add an icon to a menu item, add something like this to the `assets/css/customize/base.styl` file:

      ```
      .my-menu-item-class span {
        background: url('../images/icons/icon_48.png') no-repeat 0 0;
      }

      body.left-nav-narrow .my-menu-item-class span {
        background: url('../images/icons/icon_24.png') no-repeat 0 0;
      }
      ```

      The `left-nav-narrow` class is used by the responsive layout.


script(id="switch", type="text/html")
  select(data-bind="options: $data.enum, value: value, attr: { placeholder: description, title: description }, jqSwitch: { value: value }")
script(id="input", type="text/html")
  input.span5(type='text', data-bind="attr: { placeholder: description, title: description}, value: value, valueUpdate: 'afterkeydown' ")
script(id="spinner", type="text/html")
  input.span5(type='text', data-bind="spinner: {value: value }, attr: { placeholder: description, title: description}, valueUpdate: 'afterkeydown' ")

script(id="list", type="text/html")
  form(data-bind="listWidget: value")
    input(type="text", data-bind='value:itemToAdd, valueUpdate: "afterkeydown"')
    button(type="submit", data-bind="enable: itemToAdd().length > 0")='Add'
  select(multiple="multiple", height="5", data-bind="options:value, selectedOptions:selectedItems")
  div
   button(data-bind="click: removeSelected, enable: selectedItems().length > 0")="Remove"

Switch widget: Adding div to make ko render it before aother stuff

script(id="switch", type="text/html")
  #switch
    select(data-bind="options: $data.enum, value: value, attr: { placeholder: description, title: description }, jqSwitch: { value: value }")
script(id="input", type="text/html")
  input.span5(type='text', data-bind="attr: { placeholder: description, title: description}, value: value, valueUpdate: 'afterkeydown' ")
script(id="spinner", type="text/html")
  input.span5(type='text', data-bind="spinner: {value: value }, attr: { placeholder: description, title: description}, valueUpdate: 'afterkeydown' ")

script(id="list", type="text/html")
  form(data-bind="listWidget: value")
    input(type="text", data-bind='value:itemToAdd, valueUpdate: "afterkeydown"')
    button(type="submit", data-bind="enable: itemToAdd().length > 0")='Add'
  select(multiple="multiple", height="5", data-bind="options:value, selectedOptions:selectedItems")
  div
   button(data-bind="click: removeSelected, enable: selectedItems().length > 0")="Remove"


table.table.table-striped.table-hover.table-bordered
  thead.result-labels
    td Data Set
    td
      abbr(title="Visual-Inertial Odometry") ALGA
    td
      abbr(title="ALGB") SM
    td
      abbr(title="Bundle Adjustment") BA
    td Trajectory Length
  tbody
    each resultSet in resultsByDataset
      tr
        td(id="#{resultSet[0].dataset}-name") #{resultSet[0].dataset}
        each result in resultSet
          td.bullet-container(id="#{result.dataset}-#{result.metric}")
            svg
        td(id="#{resultSet[0].dataset}-length") #{resultSet[0].length}

Fix result order dependence by hardcoding to metrics.

table.table.table-striped.table-hover.table-bordered
  thead.result-labels
    td Data Set
    td
      abbr(title="Visual-Inertial Odometry") ALGA
    td
      abbr(title="ALGB") SM
    td
      abbr(title="Bundle Adjustment") BA
    td Trajectory Length
  tbody
    each resultSet in resultsByDataset
      tr
        td(id="#{resultSet[0].dataset}-name") #{resultSet[0].dataset}
        td.bullet-container(id="#{resultSet[0].dataset}-alga")
          svg
        td.bullet-container(id="#{resultSet[0].dataset}-sparse")
          svg
        td.bullet-container(id="#{resultSet[0].dataset}-ba")
          svg
        td(id="#{resultSet[0].dataset}-length") #{resultSet[0].length}


extend layout

block title
  title= site.title

block content
  each post in posts
    article.post-item
      header.post-item__header
        h1
          a(href=post.url)= post.title.text
        span.post-item__meta
          time= post.date.text
      section.post-item__desc
        != post.desc.html

Add links for prev and next pages.

extend layout

block title
  title= site.title

block content
  each post in posts
    article.post-item
      header.post-item__header
        h1
          a(href=post.url)= post.title.text
        span.post-item__meta
          time= post.date.text
      section.post-item__desc
        != post.desc.html

  nav.nav
    if prevPage
      a(href=prevPage).nav__left ⇜ Prev
    if nextPage
      a(href=nextPage).nav__right Next ⇝


a.avant-garde-button-white.personalize-skip Skip

header.personalize-header
  h2= state.stepDisplay()
  h1 Follow artists you are interested in
  aside Get notified when new shows open or works are added

section.personalize-step( data-step='artists' )
  #personalize-search-container
    input#personalize-search.bordered-input.is-block(
      type='text', placeholder!='Type your favorite artist’s name', autofocus=autofocus
    )
    #personalize-search-spinner: .loading-spinner-small

  #personalize-followed

#personalize-suggestions-container: #personalize-suggestions: .loading-spinner

Use the generic autocomplete input styling

a.avant-garde-button-white.personalize-skip Skip

header.personalize-header
  h2= state.stepDisplay()
  h1 Follow artists you are interested in
  aside Get notified when new shows open or works are added

section.personalize-step( data-step='artists' )
  #personalize-search-container.autocomplete-input-container.is-block
    input#personalize-search.bordered-input(
      type='text', placeholder!='Type your favorite artist’s name', autofocus=autofocus
    )
    .autocomplete-loading-indicator: .loading-spinner-small

  #personalize-followed

#personalize-suggestions-container: #personalize-suggestions: .loading-spinner


html(ng-app="keranbeandco")
   head
      link(rel="stylesheet" href ="css/main.css")
      title Keranbeandco
   body
      div(ui-view="" layout="column" layout-margin)
      script(src="js/vendor.js")
      script(src="js/app.templates.js")
      script(src="js/lb-services.js")
      script(src="js/app.js")

Add toolbar with useless buttons

html(ng-app="keranbeandco")
   head
      link(rel="stylesheet" href ="css/main.css")
      title Keranbeandco
   body
      md-content
         md-toolbar
            .md-toolbar-tools
               md-button TEST
               h2 La famille Molin
               span(flex)
               md-button COOL
               md-button LOL
         div(ui-view="" layout="column" layout-margin)
      script(src="js/vendor.js")
      script(src="js/app.templates.js")
      script(src="js/lb-services.js")
      script(src="js/app.js")


h3  Index Page of Home Service

ul
  li
    a(href="/home/private")  Home Private Page
  li
    a(href="/public")  Home Public Page
  li
    a(href="/account/protected") Account Protected Page
  li
    a(href="/account/login") Account Login Page
  li
    a(href="/project/param1/param2") Page with parameters

Add link to io example.

h3  Index Page of Home Service

ul
  li
    a(href="/home/private")  Home Private Page
  li
    a(href="/public")  Home Public Page
  li
    a(href="/account/protected") Account Protected Page
  li
    a(href="/account/login") Account Login Page
  li
    a(href="/project/param1/param2") Page with parameters
  li
    a(href="/io") Socket.IO exmaple


nav(class="navbar navbar-inverse navbar-fixed-top" role="navigation")
  div(class="container")
    div(class="navbar-header")
      button(class="navbar-toggle collapsed", type="button", data-toggle="collapse", data-target="#navbar", aria-expanded="false", aria-controls="navbar")
        span Menu
      a(class="navbar-brand" href="/") Tucson ReactJS
    //-div(class="collapse navbar-collapse", id="navbar-collapse-1")
      ul(class="nav navbar-nav")
        li(class="active")
          a(href="/posts") Posts
            span(class="sr-only") (current)

Hide Menu button for now

nav(class="navbar navbar-inverse navbar-fixed-top" role="navigation")
  div(class="container")
    div(class="navbar-header")
      //- button(class="navbar-toggle collapsed", type="button", data-toggle="collapse", data-target="#navbar", aria-expanded="false", aria-controls="navbar")
      //-   span Menu
      a(class="navbar-brand" href="/") Tucson ReactJS
    //-div(class="collapse navbar-collapse", id="navbar-collapse-1")
      ul(class="nav navbar-nav")
        li(class="active")
          a(href="/posts") Posts
            span(class="sr-only") (current)


extends layout

block content
	script(type="text/template", class="logRow")
		div.row.log-row
			div.col-lg-12
				div.col-lg-2 <%= timestamp %>
				div.col-lg-10
					span.label.label-primary <%= source %>
					<% _.each(tags, function(tag) { %>
					span.label.label-default <%= tag %>
					<% }) %>
					span.label.label-info <%= type %>
					div.message <%= message %>
					div.pull-right
						a(href="#").btn.btn-primary.btn-xs View
		hr

	div.container-fluid
		div.row
			div.col-lg-12
				h1.page-header= title
		div.row
			div.col-lg-12
				div.panel.panel-default
					div.panel-heading Timeline
					div.panel-body
						div.graph
							div#graph-container
		div.row
			div.col-lg-12
				div.panel.panel-default
					div.panel-heading Logs
					div.panel-body
						div.log-results

Move the view button in the table row for logs

extends layout

block content
	script(type="text/template", class="logRow")
		div.row.log-row
			div.col-lg-12
				div.col-lg-2 <%= timestamp %>
				div.col-lg-10
					div.pull-right
						a(href="#").btn.btn-primary.btn-xs View
					span.label.label-primary <%= source %>
					<% _.each(tags, function(tag) { %>
					span.label.label-default <%= tag %>
					<% }) %>
					span.label.label-info <%= type %>
					div.message <%= message %>
		hr

	div.container-fluid
		div.row
			div.col-lg-12
				h1.page-header= title
		div.row
			div.col-lg-12
				div.panel.panel-default
					div.panel-heading Timeline
					div.panel-body
						div.graph
							div#graph-container
		div.row
			div.col-lg-12
				div.panel.panel-default
					div.panel-heading Logs
					div.panel-body
						div.log-results


navbar.navbar-inverse.navbar-fixed-top(role='navigation')
	.container
		.navbar-header
			button.navbar-toggle(type='button', data-toggle='collapse', data-target='.navbar-collapse')
				span.icon-bar
				span.icon-bar
				span.icon-bar
			a.navbar-brand(href="./") Lenovo Monitor Utility
		.collapse.navbar-collapse
			ul.nav.navbar-nav
				li.dropdown
					a.dropdown-toggle(href='#', data-toggle='dropdown')
						| Monitor
						span.caret
					ul.dropdown-menu(role='menu')
						li
							a(href="./monitorlog/show") List
						li
							a(href="./monitorlog/import") Import
						li.divider
						li
							a(href='./monitorlog/summary') Error summary
						li
							a(href='#') One more separated link
				li
					a(href="#about") About
				li
					a(href="./logout") Log out

Add Akamai menu. Move back to old path.

navbar.navbar-inverse.navbar-fixed-top(role='navigation')
	.container
		.navbar-header
			button.navbar-toggle(type='button', data-toggle='collapse', data-target='.navbar-collapse')
				span.icon-bar
				span.icon-bar
				span.icon-bar
			a.navbar-brand(href="/") Lenovo Monitor Utility
		.collapse.navbar-collapse
			ul.nav.navbar-nav
				li.dropdown
					a.dropdown-toggle(href='#', data-toggle='dropdown')
						| LU Monitor
						span.caret
					ul.dropdown-menu(role='menu')
						li
							a(href="/monitorlog/show") List
						li
							a(href="/monitorlog/import") Import
						li.divider
						li
							a(href='/monitorlog/summary') Error summary
								li.dropdown
					a.dropdown-toggle(href='#', data-toggle='dropdown')
						| Akamai
						span.caret
					ul.dropdown-menu(role='menu')
						li
							a(href="/akamai/show") List
						li
							a(href="/akamai/import") Import
						li.divider
						li
							a(href='/akamai/summary') Error summary
				li
					a(href="#about") About
				li
					a(href="/logout") Log out


doctype html
html(lang="en")
	head
		meta(charset="utf-8")
		meta(name="author", content="Matt McKellar-Spence")
		meta(name="description", content="My thoughts on various topics")
		meta(name="viewport", content="width=device-width, initial-scale=1.0")

		title Thoughts of MattMS

		link(
			href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css",
			rel="stylesheet"
		)
		link(
			href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap-theme.min.css",
			rel="stylesheet"
		)
	body
		header.container
			.btn-toolbar
				a.btn.btn-default.btn-sm(href="/") Home
		article.container

Add Ubuntu font and change header nav

doctype html
html(lang="en")
	head
		meta(charset="utf-8")
		meta(name="author", content="Matt McKellar-Spence")
		meta(name="description", content="My thoughts on various topics")
		meta(name="viewport", content="width=device-width, initial-scale=1.0")

		title Thoughts of MattMS

		link(
			href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css",
			rel="stylesheet"
		)
		link(
			href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap-theme.min.css",
			rel="stylesheet"
		)
		link(
			href='http://fonts.googleapis.com/css?family=Ubuntu',
			rel='stylesheet',
			type='text/css'
		)
		link(href='/base.css', rel='stylesheet', type='text/css')
	body
		header.container
			ul.nav.nav-pills
				li: a(href="/") Home
		article.container


doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/reset.css')
    link(rel='stylesheet', href='/stylesheets/style.css')
    meta(name='viewport', content='width=400, initial-scale=1, minimum-scale=1, maximum-scale=1')
  body
    block content
    link(rel='stylesheet', href='https://nginx.it-con.biz/cdn/stylesheets/literallycanvas.css')
    link(rel='stylesheet', href='https://nginx.it-con.biz/cdn/stylesheets/font-awesome.css')
    script(type='text/javascript', src='/javascripts/throttle.js')
    script(type='text/javascript', src='/javascripts/erizo.js')
    script(type='text/javascript', src='https://nginx.it-con.biz/cdn/javascripts/literallycanvas-core.js')
    script(type='text/javascript', src='/javascripts/script.js')

Move all <script>s and <link>s into <head>.

doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/reset.css')
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='https://nginx.it-con.biz/cdn/stylesheets/literallycanvas.css')
    link(rel='stylesheet', href='https://nginx.it-con.biz/cdn/stylesheets/font-awesome.css')
    script(type='text/javascript', src='/javascripts/throttle.js')
    script(type='text/javascript', src='/javascripts/erizo.js')
    script(type='text/javascript', src='https://nginx.it-con.biz/cdn/javascripts/literallycanvas-core.js')
    script(type='text/javascript', src='/javascripts/script.js')
    meta(name='viewport', content='width=400, initial-scale=1, minimum-scale=1, maximum-scale=1')
  body
    block content


doctype 5
html
  head
    title= title
    link(rel='stylesheet', href='/css/style.css')
  body
    header.navbar.navbar-inverse.navbar-fixed-top(role='banner')
      .container
        .navbar-header
          button.navbar-toggle(type='button', data-toggle='collapse', data-target='.bs-navbar-collapse')
            span.sr-only Toggle navigation
            span.icon-bar
            span.icon-bar
            span.icon-bar
          a.navbar-brand(href='/') Aquarium
        nav.collapse.navbar-collapse.bs-navbar-collapse.navbar-left(role='navigation')
          ul.nav.navbar-nav
            - if (user)
              - if (user.admin)
                li
                  a(href='/dashboard') Dashboard
              - else
                li
                  a(href='/sites') Sites
        nav.collapse.navbar-collapse.bs-navbar-collapse.navbar-right
          ul.nav.navbar-nav
            li
              - if (user)
                form.navbar-form(method='POST', action='/logout')
                  button.btn.btn-link(type="submit") Logout
              - else if (!isLogin)
                a(href='/login') Login
    block content
    script(src="/js/jquery-2.0.3.min.js")
    script(src="/js/bootstrap.js")

Add button for username in nav

doctype 5
html
  head
    title= title
    link(rel='stylesheet', href='/css/style.css')
  body
    header.navbar.navbar-inverse.navbar-fixed-top(role='banner')
      .container
        .navbar-header
          button.navbar-toggle(type='button', data-toggle='collapse', data-target='.bs-navbar-collapse')
            span.sr-only Toggle navigation
            span.icon-bar
            span.icon-bar
            span.icon-bar
          a.navbar-brand(href='/') Aquarium
        nav.collapse.navbar-collapse.bs-navbar-collapse.navbar-left(role='navigation')
          ul.nav.navbar-nav
            - if (user)
              - if (user.admin)
                li
                  a(href='/dashboard') Dashboard
              - else
                li
                  a(href='/sites') Sites
        nav.collapse.navbar-collapse.bs-navbar-collapse.navbar-right
          ul.nav.navbar-nav
            - if (user)
              li
                button.btn.navbar-btn.btn-link=user.username
              li
                form.navbar-form(method='POST', action='/logout')
                  button.btn.btn-link(type="submit") Logout
            - else if (!isLogin)
              li
                a(href='/login') Login
    block content
    script(src="/js/jquery-2.0.3.min.js")
    script(src="/js/bootstrap.js")


extend ../layout

block title
  | People

block content
  .page-header
    h1 People

  p
    a(href="/person/new") Create a new person

  if people.length
    ul
      for person in people
        li
          a(href="#{ person.slug_url }") #{ person.name }
          pre #{ JSON.stringify( person ) }
  else
    p.error There are no people in the system yet

Drop data dump, put in commented out code for the thumbnails

extend ../layout

block title
  | People

block content
  .page-header
    h1 People

  p
    a(href="/person/new") Create a new person

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

  else
    p.error There are no people in the system yet


extends layout

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

  h1= title
  p Welcome to #{title}
  br
  button(onclick="signin()") Login

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

Update lock to version 9

extends layout

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

  h1= title
  p Welcome to #{title}
  br
  button(onclick="signin()") Login

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


    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>

Post a picture

    <form id="post-picture" action="/main/upload" enctype="multipart/form-data">
      <fieldset>
        Title
        <input type="text" id="picture-title" placeholder="(optional)" name="title"></input>
        Description
        <textarea id="picture-description" class="span5" name="description" placeholder="Description (optional)" rows="3">
        </textarea>

          <%= partial("recipient-selector", {name: "to", id: "picture-to", label: "To"}) %>

          <%= partial("recipient-selector", {name: "cc", id: "picture-cc", label: "CC"}) %>

      </fieldset>
    </form>

    <button type="submit" class="btn btn-primary" id="send-picture">Send</button>

Rewrite picture post modal in Jade

include ./recipient-selector.jade

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

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

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

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

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


unless artwork.is_in_auction
  form.artwork-commercial( class='js-artwork-commercial' )
    include templates/index
    | Questions about buying art on Artsy?
    | Read our&nbsp
    a.collector-faq( href='/#' ) Collector FAQ

Remove questions about non-buyable works

unless artwork.is_in_auction || artwork.is_for_sale == false
  form.artwork-commercial( class='js-artwork-commercial' )
    include templates/index
    | Questions about buying art on Artsy?
    | Read our
    a.collector-faq( href='/#' ) Collector FAQ


uib-alert(type="info" ng-if="unit.patches.length>0 && !unit.error" role="alert")
  span.fa.fa-spinner.fa-spin
  span lade Änderungen hoch…
uib-alert(ng-if="unit.error && unit.error.status === 404") Dieses Kapitel konnte nicht gefunden werden. Es wurde möglicherweise von einem anderen Autor gelöscht.
uib-alert(ng-if="unit.error && unit.error.status === 412" role="alert") Dieses Kapitel wurde zwischenzeitlich von einem anderen Autor geändert. Mittels Refresh erhältst du die aktuelle Version.
ul.nav.nav-tabs
  li(ui-sref-active="active"): a(ui-sref=".basics") Grunddaten
  li(ui-sref-active="active"): a(ui-sref=".topics.new") Subkapitel
  li(ui-sref-active="active"): a(ui-sref=".tests") Testaufgaben
div(ui-view)

Move alerts under the form when in author mode

ul.nav.nav-tabs
  li(ui-sref-active="active"): a(ui-sref=".basics") Grunddaten
  li(ui-sref-active="active"): a(ui-sref=".topics.new") Subkapitel
  li(ui-sref-active="active"): a(ui-sref=".tests") Testaufgaben
div(ui-view)
uib-alert(type="info" ng-if="unit.patches.length>0 && !unit.error" role="alert")
  span.fa.fa-spinner.fa-spin
  span lade Änderungen hoch…
uib-alert(ng-if="unit.error && unit.error.status === 404") Dieses Kapitel konnte nicht gefunden werden. Es wurde möglicherweise von einem anderen Autor gelöscht.
uib-alert(ng-if="unit.error && unit.error.status === 412" role="alert") Dieses Kapitel wurde zwischenzeitlich von einem anderen Autor geändert. Mittels Refresh erhältst du die aktuelle Version.


case tx.type
  when "sent"
    .type-info
      | You sent Bob
      span.number {{tx.amount | rpamount}}
      span.currency  XRP

Add realtime notification for receiving payments.

case tx.type
  when "sent"
    .type-info
      | You sent Bob
      span.number {{tx.amount | rpamount}}
      span.currency  XRP
  when "received"
    .type-success
      | Bob sent you
      span.number {{tx.amount | rpamount}}
      span.currency  XRP


doctype
html
  head
    meta(charset='utf-8')
    meta(http-equiv='X-UA-Compatible', content='IE=edge')
    title Dashboard Map
    meta(name='description', content='')
    meta(name='viewport', content='width=device-width, initial-scale=1, shrink-to-fit=no')
    link(rel="stylesheet", href="/style.css")

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

  body
    nav.navbar.navbar-dark.navbar-fixed-top.bg-inverse
      include ./app/views/includes/navbar.jade

    div#content.container-fluid
      div.row
        div#things-list.col-sm-12.col-md-3.sidebar.hidden-sm-down
          h5 Sensor Stations

          ul.list-group

        div#map-container.col-xs-12.col-sm-12.col-md-9.col-md-offset-3
          div#map

      div#mobile-footer.hidden-md-up.navbar-fixed-bottom.bg-inverse
        div.row
          div.col-sm-6
            button.btn.btn-primary.show-things-list ← View Sensors List
          div.col-sm-6.pull-xs-right
            button.btn.btn-primary.show-things-map.pull-xs-right View Sensors Map →

    script(type="text/javascript").
      $(function() {
        new App.Views.MapView();
      });

Adjust size of sidebar for mobile

doctype
html
  head
    meta(charset='utf-8')
    meta(http-equiv='X-UA-Compatible', content='IE=edge')
    title Dashboard Map
    meta(name='description', content='')
    meta(name='viewport', content='width=device-width, initial-scale=1, shrink-to-fit=no')
    link(rel="stylesheet", href="/style.css")

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

  body
    nav.navbar.navbar-dark.navbar-fixed-top.bg-inverse
      include ./app/views/includes/navbar.jade

    div#content.container-fluid
      div.row
        div#things-list.col-xs-12.col-md-3.sidebar.hidden-sm-down
          h5 Sensor Stations

          ul.list-group

        div#map-container.col-xs-12.col-sm-12.col-md-9.col-md-offset-3
          div#map

      div#mobile-footer.hidden-md-up.navbar-fixed-bottom.bg-inverse
        div.row
          div.col-sm-6
            button.btn.btn-primary.show-things-list ← View Sensors List
          div.col-sm-6.pull-xs-right
            button.btn.btn-primary.show-things-map.pull-xs-right View Sensors Map →

    script(type="text/javascript").
      $(function() {
        new App.Views.MapView();
      });


!!! 5
html(ng-app="iodocs")
    head
        - if (apiInfo().name)
            - var title = apiInfo().name + ' API Documentation'
        -else
            - var title = 'Live Documentation'
        title=title

        link(rel='stylesheet', href='/stylesheets/prettify.css')
        link(rel='stylesheet', href='/stylesheets/angular.treeview.css')
        link(rel='stylesheet', href='/stylesheets/' + config.theme + '-bs.css')
        link(rel='stylesheet', href='/stylesheets/style.css')

    body
        block content

        #io-footer
          span.credit
            | ©
            a(href='http://mashery.com/io') Mashery, Inc.
            |   and
            a(href='http://www.intermine.org') InterMine
          .tech
            | Powered by
            a(href='https://github.com/alexkalderimis/iodocs') I/O Docs

        script(src='/javascripts/vendor/json2.js')

        block scripts

Move the fixed footer up.

!!! 5
html(ng-app="iodocs")
    head
        - if (apiInfo().name)
            - var title = apiInfo().name + ' API Documentation'
        -else
            - var title = 'Live Documentation'
        title=title

        link(rel='stylesheet', href='/stylesheets/prettify.css')
        link(rel='stylesheet', href='/stylesheets/angular.treeview.css')
        link(rel='stylesheet', href='/stylesheets/' + config.theme + '-bs.css')
        link(rel='stylesheet', href='/stylesheets/style.css')

    body
        #io-footer
          span.credit
            | ©
            a(href='http://mashery.com/io') Mashery, Inc.
            |   and
            a(href='http://www.intermine.org') InterMine
          .tech
            | Powered by
            a(href='https://github.com/alexkalderimis/iodocs') I/O Docs

        block content

        script(src='/javascripts/vendor/json2.js')

        block scripts


doctype
html
    head
        title= title

        meta(charset='utf-8')
        meta(name='viewport', content='width=device-width, initial-scale=1')
        meta(name='author', content=config.authors.join(', '))
        meta(name='description', content=(description || config.description))
        meta(name='globalsign-domain-verification' content='vJwh9ymdYQvKKoNsjOXy8GEoFDllB-6CS3whL8b9XH')
        meta('http-equiv'='X-UA-Compatible' content='IE=edge')

        link(rel='shortcut', href=config.favicon)

        link(rel='stylesheet', href=helpers.theme.css(config, theme))

        - if (config.stylesheets)
            - each css in config.stylesheets
                link(rel='stylesheet', href=css)

        - if (config.javascript && config.javascript.before)
            - each js in config.javascript.before
                script(src=js, charset="utf-8")

        block head

    body
        include _partials/header

        block content

        - if (config.google_analytics)
            include _partials/javascripts/google_analytics

        - if (config.javascript && config.javascript.after)
            - each js in config.javascript.after
                script(src=js)

        //-include _partials/footer
        include _partials/javascripts/after

        block last

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

Fix `head` meta properties order.

doctype
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')
        title=title
        meta(name='author', content=config.authors.join(', '))
        meta(name='description', content=(description || config.description))
        meta(name='globalsign-domain-verification' content='vJwh9ymdYQvKKoNsjOXy8GEoFDllB-6CS3whL8b9XH')

        link(rel='shortcut icon', href=config.favicon)

        link(rel='stylesheet', href=helpers.theme.css(config, theme))

        - if (config.stylesheets)
            - each css in config.stylesheets
                link(rel='stylesheet', href=css)

        - if (config.javascript && config.javascript.before)
            - each js in config.javascript.before
                script(src=js, charset="utf-8")

        block head

    body
        include _partials/header

        block content

        - if (config.google_analytics)
            include _partials/javascripts/google_analytics

        - if (config.javascript && config.javascript.after)
            - each js in config.javascript.after
                script(src=js)

        //-include _partials/footer
        include _partials/javascripts/after

        block last

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


!!! 5
html
	head
		meta(charset='utf-8')
		meta(http-equiv='X-UA-Compatible', content='IE=edge,chrome=1')
		meta(name='viewport', content='width=device-width,initial-scale=1.0')
		title= title
		meta(http-equiv='Content-type', content='text/html;charset=UTF-8')
		link(rel='stylesheet', href='/css/loowid.min.css?#{(new Date()).getTime()}')
	body
		#letsencrypt(style='padding-left:10px;padding-top:10px')
			h1
				b Look what I'm doing - Let's Encrypt !!
			form(name='letsencryptform', action='acme-challenge-new', method='post', style='padding-left:10px;padding-top:10px')
				input(type='hidden',name='_csrf',value='#{token}')
				label
					b Filename:
				input(type='text',name='filename',value='',size='100')
				br
				label
					b Fileconent:
				input(type='text',name='filecontent',value='',size='100')
				br
				input(type='submit',value='Send')

Include let's encrypt command in admin page.

!!! 5
html
	head
		meta(charset='utf-8')
		meta(http-equiv='X-UA-Compatible', content='IE=edge,chrome=1')
		meta(name='viewport', content='width=device-width,initial-scale=1.0')
		title= title
		meta(http-equiv='Content-type', content='text/html;charset=UTF-8')
		link(rel='stylesheet', href='/css/loowid.min.css?#{(new Date()).getTime()}')
	body
		#letsencrypt(style='padding-left:10px;padding-top:10px')
			h1
				b Look what I'm doing - Let's Encrypt !!
			h2 Type this command to generate your certificate
			div(style='padding-left:10px;padding-top:10px')
				b ./letsencrypt-auto --agree-dev-preview -d your-domain --server https://acme-v01.api.letsencrypt.org/directory -a manual auth -v --debug
			div(style='padding-left:10px;padding-top:10px')
				i Now full this form with the values required by let's encrypt
			form(name='letsencryptform', action='acme-challenge-new', method='post', style='padding-left:10px;padding-top:10px')
				input(type='hidden',name='_csrf',value='#{token}')
				label
					b Filename:
				input(type='text',name='filename',value='',size='100')
				br
				label
					b Fileconent:
				input(type='text',name='filecontent',value='',size='100')
				br
				input(type='submit',value='Send')


div(ng-controller='PathologyCtrl' ng-show="pathology")
  div(ng-repeat="tumor in pathology.tumors")
    include tumor

Add support for multiple tumors in clinical profile.

div(ng-controller='PathologyCtrl' ng-show="pathology")
  // If multiple tumors exist, display a title for each tumor and
  //   place its content in a nested panel.
  div(ng-show="pathology.tumors.length > 1")
    div(ng-repeat="tumor in pathology.tumors")
      .qi-subtable-title Tumor {{ $index + 1 }}
      .qi-panel.qi-nested
        include tumor
  div(ng-show="pathology.tumors.length == 1")
    div(ng-init="tumor = pathology.tumors[0]")
      include tumor


mixin tap

  if (attributes.href)
    a&attributes(attributes).tap.a(ontouchstart="")
      block
      span.tap__highlight-color
  else if (attributes.for)
    label&attributes(attributes).tap.label(ontouchstart="")
      block
      span.tap__highlight-color
  else
    button&attributes(attributes).tap.button(ontouchstart="")
      block
      span.tap__highlight-color

Prepare attributes values are empty

mixin tap

  if (attributes.href || attributes.href === "")
    a&attributes(attributes).tap.a(ontouchstart="")
      block
      span.tap__highlight-color
  else if (attributes.for || attributes.for === "")
    label&attributes(attributes).tap.label(ontouchstart="")
      block
      span.tap__highlight-color
  else
    button&attributes(attributes).tap.button(ontouchstart="")
      block
      span.tap__highlight-color


table.table.table-responsive.table-compact
  thead.result-labels
    th(colspan="2")
      .agg-label-header
        | Algorithm
    if algorithms.length >= 1 && aggTrends[algorithms[0]].length > 1
      th
        .agg-sparkline-header
          | Last 7 Days
    th(colspan="2")
      .agg-bullet-header
        | #{aggregate_metric_name}
  tbody
  each algorithm in algorithms
    tr.info-section-chart(id="#{algorithm}-aggregate-container")
      td.agg-status-dot
        svg.statusDot
            circle.none(id="#{algorithm}-aggregate-dot" r="10", cx="10", cy="10")
      td
        .agg-label
          | #{algorithm.toUpperCase()}
      if algorithms.length >= 1 && aggTrends[algorithms[0]].length > 1
        td
          .agg-sparkline(id="#{algorithm}-aggregate-sparkline")
            svg
      td
        .agg-value
          | #{Math.round(aggTrends[algorithm][aggTrends[algorithm].length-1] * 10000) / 10000}
      td
        .agg-bullet(id="#{algorithm}-aggregate-bullet")
          svg(id="#{algorithm}-aggregate-bullet-svg")

Generalize dashboard aggregate metric table headers

table.table.table-responsive.table-compact
  thead.result-labels
    th(colspan="2")
      .agg-label-header
        | Aggregate Metric
    if algorithms.length >= 1 && aggTrends[algorithms[0]].length > 1
      th
        .agg-sparkline-header
          | Last 7 Days
    th(colspan="2")
      .agg-bullet-header
        | Submission Value
  tbody
  each algorithm in algorithms
    tr.info-section-chart(id="#{algorithm}-aggregate-container")
      td.agg-status-dot
        svg.statusDot
            circle.none(id="#{algorithm}-aggregate-dot" r="10", cx="10", cy="10")
      td
        .agg-label
          | #{algorithm.toUpperCase()}
      if algorithms.length >= 1 && aggTrends[algorithms[0]].length > 1
        td
          .agg-sparkline(id="#{algorithm}-aggregate-sparkline")
            svg
      td
        .agg-value
          | #{Math.round(aggTrends[algorithm][aggTrends[algorithm].length-1] * 10000) / 10000}
      td
        .agg-bullet(id="#{algorithm}-aggregate-bullet")
          svg(id="#{algorithm}-aggregate-bullet-svg")


block admin_users_edit
    md-tab(label='Edit', ng-disabled='!editQueue.ids.length', md-on-select='toast.hide()')
        md-tab-content.edit.md-padding(ng-if='tabs.i === 1', ng-controller='adminUsersEditController')
            md-progress-circular(ng-show='!data', md-mode='indeterminate')
            form(ng-show='data', name='editForm')
                div(layout='row')
                    md-input-container(style='width: 125px')
                        label User ID
                        input(type='number', ng-model='data.id', disabled)
                    md-input-container(flex)
                        label Username
                        input(
                        required
                        name='username'
                        ng-disabled='saving'
                        ng-model='data.username'
                        maxlength='255'
                        )
                        div(ng-messages='editForm.username.$error')
                            div(ng-message='required') This is required
                div(layout='row', layout-align='end center')
                    md-switch(
                    ng-disabled='saving',
                    ng-model='data.isAdmin'
                    aria-label='is administrator'
                    )
                        | Administrator
                    md-button.md-raised.md-warn(ng-click='cancel()', ng-disabled='saving') Cancel
                    md-button.md-raised.md-primary(ng-click='save()', ng-disabled='!data.username')
                        div(ng-show='!saving') Save
                        md-progress-circular(ng-show='saving', md-mode='indeterminate', md-diameter='20px')

Remove unnecessary inline CSS style

block admin_users_edit
    md-tab(label='Edit', ng-disabled='!editQueue.ids.length', md-on-select='toast.hide()')
        md-tab-content.edit.md-padding(ng-if='tabs.i === 1', ng-controller='adminUsersEditController')
            md-progress-circular(ng-show='!data', md-mode='indeterminate')
            form(ng-show='data', name='editForm')
                div(layout='row')
                    md-input-container
                        label User ID
                        input(type='number', ng-model='data.id', disabled)
                    md-input-container(flex)
                        label Username
                        input(
                        required
                        name='username'
                        ng-disabled='saving'
                        ng-model='data.username'
                        maxlength='255'
                        )
                        div(ng-messages='editForm.username.$error')
                            div(ng-message='required') This is required
                div(layout='row', layout-align='end center')
                    md-switch(
                    ng-disabled='saving',
                    ng-model='data.isAdmin'
                    aria-label='is administrator'
                    )
                        | Administrator
                    md-button.md-raised.md-warn(ng-click='cancel()', ng-disabled='saving') Cancel
                    md-button.md-raised.md-primary(ng-click='save()', ng-disabled='!data.username')
                        div(ng-show='!saving') Save
                        md-progress-circular(ng-show='saving', md-mode='indeterminate', md-diameter='20px')