.abrv-inner( data-rail= railId )
  .abrv-header
    if followAnnotation
      .abrv-follow-annotation.avant-garde-s-headline Based on
        |
        = followAnnotation
    if viewAllUrl
      a( href= viewAllUrl )
        h1= title
    else
      h1= title
    .abrv-follow-button
      //- rendered on the client

    if viewAllUrl
      a.abrv-view-all( href= viewAllUrl )
        | View All

  .abrv-content
    .abrv-carousel.mgr-horizontal-nav( class='js-my-carousel' )
      ul.abrv-fillwidth-list.fillwidth-list.js-mgr-cells.mgr-cells( class=artworks ? '' : 'mgr-cells--loading' )
        if hasContext
          li.abrv-context.mgr-cell.abrv-fillwidth-row( class='js-mgr-cell' )
            //- rendered on the client
        if artworks && artworks.length
          for artwork in artworks
            li.mgr-cell.abrv-fillwidth-row( class='js-mgr-cell' )
              include brick

        if viewAllUrl
          li.mgr-cell.abrv-fillwidth-row( class='js-mgr-cell' )
            include view_all

        else
          include ./loading

      if artworks && artworks.length
        include ../../merry_go_round/templates/horizontal_navigation

Remove extra space between "Based on" and artist name

.abrv-inner( data-rail= railId )
  .abrv-header
    if followAnnotation
      .abrv-follow-annotation.avant-garde-s-headline Based on #{followAnnotation}
    if viewAllUrl
      a( href= viewAllUrl )
        h1= title
    else
      h1= title
    .abrv-follow-button
      //- rendered on the client

    if viewAllUrl
      a.abrv-view-all( href= viewAllUrl )
        | View All

  .abrv-content
    .abrv-carousel.mgr-horizontal-nav( class='js-my-carousel' )
      ul.abrv-fillwidth-list.fillwidth-list.js-mgr-cells.mgr-cells( class=artworks ? '' : 'mgr-cells--loading' )
        if hasContext
          li.abrv-context.mgr-cell.abrv-fillwidth-row( class='js-mgr-cell' )
            //- rendered on the client
        if artworks && artworks.length
          for artwork in artworks
            li.mgr-cell.abrv-fillwidth-row( class='js-mgr-cell' )
              include brick

        if viewAllUrl
          li.mgr-cell.abrv-fillwidth-row( class='js-mgr-cell' )
            include view_all

        else
          include ./loading

      if artworks && artworks.length
        include ../../merry_go_round/templates/horizontal_navigation


div.navbar.navbar-default.navbar-static-top(class=(navbar_inversed === 'true' ? 'navbar-inverse' : ''))
	div.container-fluid
		div.navbar-header
			button.navbar-toggle.collapsed(type='button', data-toggle='collapse', data-target='#bs-example-navbar-collapse-1')
				span.sr-only Toggle navigation
				span.icon-bar
				span.icon-bar
				span.icon-bar

			a.navbar-brand(href='/') weather|aware

		div.collapse.navbar-collapse#bs-example-navbar-collapse-1
			ul.nav.navbar-nav
				li#nav-home
					a(href='/') Home
							span.sr-only (current)
				li#nav-forecast
					a(href='/forecast') Forecast
				li#nav-alerts
					a(href='/alerts') Alerts
						span.label.label-danger #{alert_count}

			ul.nav.navbar-nav.navbar-right
				li#nav-settings
					a(href='/settings') Settings
						span.fa.fa-cogs

Fix nabber alert count badge not showing

div.navbar.navbar-default.navbar-static-top(class=(navbar_inversed === 'true' ? 'navbar-inverse' : ''))
	div.container-fluid
		div.navbar-header
			button.navbar-toggle.collapsed(type='button', data-toggle='collapse', data-target='#bs-example-navbar-collapse-1')
				span.sr-only Toggle navigation
				span.icon-bar
				span.icon-bar
				span.icon-bar

			a.navbar-brand(href='/') weather|aware

		div.collapse.navbar-collapse#bs-example-navbar-collapse-1
			ul.nav.navbar-nav
				li#nav-home
					a(href='/') Home
							span.sr-only (current)
				li#nav-forecast
					a(href='/forecast') Forecast
				li#nav-alerts
					a(href='/alerts') Alerts
						span.label.label-danger #{weather.alert_count}

			ul.nav.navbar-nav.navbar-right
				li#nav-settings
					a(href='/settings') Settings
						span.fa.fa-cogs


extends ../layout/partial

block billboard
  | Patients

block content
  div(ng-repeat='collection in collections')
    h3 {{ collection }}
    ul.qi-main-list
      li(ng-repeat="subject in subjects | filter: {collection: collection} | orderBy:'number'")
        a(ui-sref="quip.subject({project: subject.project, collection: subject.collection.toLowerCase(), subject: subject.number, subjectdetail: subject.detail})")
          | Patient {{ subject.number }}

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

Add id param with TODO item.

extends ../layout/partial

block billboard
  | Patients

block content
  div(ng-repeat='collection in collections')
    h3 {{ collection }}
    ul.qi-main-list
      li(ng-repeat="subject in subjects | filter: {collection: collection} | orderBy:'number'")
        // TODO - should id: subject._id be subjectdetail: subject.detail? Is there a subject._id?
        a(ui-sref="quip.collection.subject({project: subject.project, collection: subject.collection.toLowerCase(), subject: subject.number, id: subject._id})")
          | Patient {{ subject.number }}

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


extends ../../../components/layout/layouts/blank

block container
  include ../../../components/logged_out_nav/templates/header

  .Home.js-home
    section.HomeSection.HomeHero.js-section
      include ./sections/hero

    section.HomeSection.js-section.js-fold
      include ./sections/platform_for_organizing

    section.HomeSection.js-section
      include ./sections/connect_ideas

    section.HomeSection.js-section
      include ./sections/explore_and_collaborate

    section.HomeSection.js-section
      include ./sections/get_started

  include ../../../components/logged_out_nav/templates/footer

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

Add search box structured data

extends ../../../components/layout/layouts/blank

block meta
  script( type="application/ld+json" ).
    {
      "@context": "http://schema.org",
      "@type": "WebSite",
      "url": "https://www.are.na/",
      "potentialAction": {
        "@type": "SearchAction",
        "target": "https://www.are.na/search/{search_term_string}",
        "query-input": "required name=search_term_string"
      }
    }

block container
  include ../../../components/logged_out_nav/templates/header

  .Home.js-home
    section.HomeSection.HomeHero.js-section
      include ./sections/hero

    section.HomeSection.js-section.js-fold
      include ./sections/platform_for_organizing

    section.HomeSection.js-section
      include ./sections/connect_ideas

    section.HomeSection.js-section
      include ./sections/explore_and_collaborate

    section.HomeSection.js-section
      include ./sections/get_started

  include ../../../components/logged_out_nav/templates/footer

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


mixin commentReply()
  .comment-actions.clj-comment-actions
    +voteUpDownControls
    a.comment-reply.clj-comment-reply(href="#") Reply

mixin commentItem(author, date)
  li.comment-item.clj-comment-item
    .comment-meta
      span.comment-author.clj-comment-author #{author}
      span.comment-date.clj-comment-date #{date}
    .comment-text.clj-comment-text
      block
    +commentReply

mixin commentItemBlank()
  li.comment-item.clj-empty-comment-list-item(data-l8n="content:comment-view/no-comments")
    | !There are no comments yet.

mixin addCommentForm()
  form.add-comment-form.clj-add-comment-form(method='POST', action='/meta/comments')
    input.clj-refer(name='refer', type='hidden', value='!redirect-after-post-uri')
    input.clj-comment-on-uri(name='comment-on-uri', type='hidden', value='!entity-to-comment-on-uri')
    textarea.func--comment-form-text-area(name='comment', rows='5', cols='10', pattern=".{50,}", maxLength='500', required)
    button.button.func--comment-form-submit(type='submit', data-l8n="content:comment-create/post-button") !Add a comment

Add wrapper around objective comments textarea

mixin commentReply()
  .comment-actions.clj-comment-actions
    +voteUpDownControls
    a.comment-reply.clj-comment-reply(href="#") Reply

mixin commentItem(author, date)
  li.comment-item.clj-comment-item
    .comment-meta
      span.comment-author.clj-comment-author #{author}
      span.comment-date.clj-comment-date #{date}
    .comment-text.clj-comment-text
      block
    +commentReply

mixin commentItemBlank()
  li.comment-item.clj-empty-comment-list-item(data-l8n="content:comment-view/no-comments")
    | !There are no comments yet.

mixin addCommentForm()
  form.add-comment-form.clj-add-comment-form(method='POST', action='/meta/comments')
    input.clj-refer(name='refer', type='hidden', value='!redirect-after-post-uri')
    input.clj-comment-on-uri(name='comment-on-uri', type='hidden', value='!entity-to-comment-on-uri')
    p.form-field
      textarea.func--comment-form-text-area(name='comment', rows='5', cols='10', pattern=".{50,}", maxLength='500', required)
    button.button.func--comment-form-submit(type='submit', data-l8n="content:comment-create/post-button") !Add a comment


extends ../layout

block content
    if !user
        .alert.alert-info
            i.fa.fa-cloud-upload
            strong Join this site via pull request!
            |  Make the site better and become a full member. See here for more details.

    .page-header
        h4
            a(href=item.url)= item.title
            if item.summary
                |
                a(href="#", class="show-summary")
                    | ...
                br
                p(class='hidden summary')
                    em= item.summary
        | submitted
        span.timeago(title="#{item.created}")= timeago(item.created)
        |  by
        a(href='/news/user/' + item.poster.username)= item.poster.username
        |  from
        a(href='/news/source/' + item.source)= item.source
    .row
      form(action=item._id + '/comments', method='POST')
        textarea.form-control(name='contents')
        br
        input.btn.btn-primary(type='submit', value='Add Comment')

    each comment, index in comments
      p.comment
        .poster= comment.poster.username
        blockquote.content= comment.contents

Comment creation date and link to comment author profile

extends ../layout

block content
    if !user
        .alert.alert-info
            i.fa.fa-cloud-upload
            strong Join this site via pull request!
            |  Make the site better and become a full member. See here for more details.

    .page-header
        h4
            a(href=item.url)= item.title
            if item.summary
                |
                a(href="#", class="show-summary")
                    | ...
                br
                p(class='hidden summary')
                    em= item.summary
        | submitted
        span.timeago(title="#{item.created}")= timeago(item.created)
        |  by
        a(href='/news/user/' + item.poster.username)= item.poster.username
        |  from
        a(href='/news/source/' + item.source)= item.source
    .row
      form(action=item._id + '/comments', method='POST')
        textarea.form-control(name='contents')
        br
        input.btn.btn-primary(type='submit', value='Add Comment')

    each comment, index in comments
      p.comment
        a(href='/news/user/' + comment.poster.username)= comment.poster.username

        span.timeago(title="#{comment.created}")= timeago(comment.created)
        blockquote.content= comment.contents


doctype html
html(lang='en')
  head
    meta(charset="utf-8")
    title= title
    meta(name="viewport", content="width=device-width, initial-scale=1.0")
    meta(name="author", content="#{author}")
    meta(name="description", content="#{description}")
    link(rel="stylesheet", href="css/app.css")
    link(rel='stylesheet', href='http://fonts.googleapis.com/css?family=Open+Sans:400,700')
    script(src='https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js')
    script(src='https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js')

  body
    .app-container.container-fluid
      .app-row.row
        .app-sidebar.col-md-3
          include sidebar
          include map-controls
        .app-map.col-md-9

  script(src='//oss.maxcdn.com/d3js/3.4.3/d3.min.js')
  script(src='//oss.maxcdn.com/jquery/2.1.0/jquery.min.js')
  script(src='js/transition.js')
  script(src='js/collapse.js')
  script(src='js/app.js')

Disable Map Controls for now

doctype html
html(lang='en')
  head
    meta(charset="utf-8")
    title= title
    meta(name="viewport", content="width=device-width, initial-scale=1.0")
    meta(name="author", content="#{author}")
    meta(name="description", content="#{description}")
    link(rel="stylesheet", href="css/app.css")
    link(rel='stylesheet', href='http://fonts.googleapis.com/css?family=Open+Sans:400,700')
    script(src='https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js')
    script(src='https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js')

  body
    .app-container.container-fluid
      .app-row.row
        .app-sidebar.col-md-3
          include sidebar
          // include map-controls
        .app-map.col-md-9

  script(src='//oss.maxcdn.com/d3js/3.4.3/d3.min.js')
  script(src='//oss.maxcdn.com/jquery/2.1.0/jquery.min.js')
  script(src='js/transition.js')
  script(src='js/collapse.js')
  script(src='js/app.js')


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

    tg-kanban-user-avatar(model="us.assigned_to")

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

Add missing assigned tu event on clicks on kanban task user avatar.

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

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

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


mixin headband
	.row.home-item
		.text-center
			h2 Friends Bet
		.text-center
			button.btn.btn-default Let's Bet

Change the button to a green one

mixin headband
	.row.home-item
		.text-center
			h2 Friends Bet
		.text-center
			button.btn.btn-success Let's Bet


extends ../layout

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

    form#payment-form(action="/checkouts", method="post")
      section
        label(for="amount")
          span.input-label Amount
          .input-wrapper.amount-wrapper
            input#amount(name="amount" type="tel" min="1" placeholder="Amount" value="10")

        .bt-drop-in-wrapper
          #bt-dropin

      input#nonce(type="hidden" name="payment_method_nonce")
      button.button(type="submit")
        span Test Transaction

  script(src="https://js.braintreegateway.com/web/dropin/1.2.0/js/dropin.min.js")
  script.
    var form = document.querySelector('#payment-form');
    var token = '#{clientToken}';

    braintree.dropin.create({
      authorization: token,
      selector: '#bt-dropin',
      paypal: {
        flow: 'vault'
      }
    }, function (createErr, instance) {
      form.addEventListener('submit', function (event) {
        event.preventDefault();

        instance.requestPaymentMethod(function (err, payload) {
          if (err) {
            console.log('Error', err);
            return;
          }

          // Add the nonce to the form and submit
          document.querySelector('#nonce').value = payload.nonce;
          form.submit();
        });
      });
    });

    var checkout = new Demo({
      formID: 'payment-form'
    });

Use container instead of selector in Drop-in

extends ../layout

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

    form#payment-form(action="/checkouts", method="post")
      section
        label(for="amount")
          span.input-label Amount
          .input-wrapper.amount-wrapper
            input#amount(name="amount" type="tel" min="1" placeholder="Amount" value="10")

        .bt-drop-in-wrapper
          #bt-dropin

      input#nonce(type="hidden" name="payment_method_nonce")
      button.button(type="submit")
        span Test Transaction

  script(src="https://js.braintreegateway.com/web/dropin/1.2.0/js/dropin.min.js")
  script.
    var form = document.querySelector('#payment-form');
    var token = '#{clientToken}';

    braintree.dropin.create({
      authorization: token,
      container: '#bt-dropin',
      paypal: {
        flow: 'vault'
      }
    }, function (createErr, instance) {
      form.addEventListener('submit', function (event) {
        event.preventDefault();

        instance.requestPaymentMethod(function (err, payload) {
          if (err) {
            console.log('Error', err);
            return;
          }

          // Add the nonce to the form and submit
          document.querySelector('#nonce').value = payload.nonce;
          form.submit();
        });
      });
    });

    var checkout = new Demo({
      formID: 'payment-form'
    });


.g-user-text
  if user
    a.g-user-dropdown-link(data-toggle="dropdown", data-target="#g-user-action-menu")
      | #[i.icon-user] #{user.get('login')}
      i.icon-down-open
    #g-user-action-menu.dropdown
      ul.dropdown-menu(role="menu")
        li.dropdown-header(role="presentation")
          | #{user.get('firstName')} #{user.get('lastName')}
        li(role="presentation")
          a.g-my-folders
            i.icon-folder
            | My folders
        li(role="presentation")
          a.g-my-settings
            i.icon-cog
            | My account
        li.divider(role="presentation")
        li(role="presentation")
          a.g-logout
            i.icon-logout
            | Log out
  else
    a.g-register Register
    .g-or-text or
    a.g-login Log In
      i.icon-login

Remove user full name from dropdown menu

.g-user-text
  if user
    a.g-user-dropdown-link(data-toggle="dropdown", data-target="#g-user-action-menu")
      | #[i.icon-user] #{user.get('login')}
      i.icon-down-open
    #g-user-action-menu.dropdown
      ul.dropdown-menu(role="menu")
        li(role="presentation")
          a.g-my-folders
            i.icon-folder
            | My folders
        li(role="presentation")
          a.g-my-settings
            i.icon-cog
            | My account
        li.divider(role="presentation")
        li(role="presentation")
          a.g-logout
            i.icon-logout
            | Log out
  else
    a.g-register Register
    .g-or-text or
    a.g-login Log In
      i.icon-login


extends /templates/core/modal-base

block modal-header-content
  if view.classroom
    h3.modal-title(data-i18n="courses.edit_settings1")
  else
    h3.modal-title(data-i18n="courses.create_new_class")

block modal-body-content
  .form
    .form-group
      label(data-i18n="courses.title")
      - var name = view.classroom && view.classroom.get('name') ? view.classroom.get('name') : '';
      input.form-control.settings-name-input(type='text', value="#{name}")
    .form-group
      label(data-i18n="courses.description")
      - var description = view.classroom && view.classroom.get('description') ? view.classroom.get('description') : '';
      textarea.form-control.settings-description-input(rows=2)= description
    .form-group
      label(data-i18n="choose_hero.programming_language")
      select.form-control#programming-language-select
        - var aceConfig = view.classroom ? view.classroom.get('aceConfig') || {} : {};
        option(value="python", selected=aceConfig.language==='python') Python
        option(value="javascript", selected=aceConfig.language==='javascript') JavaScript

block modal-footer-content
  if view.classroom
    button#save-settings-btn.btn(data-i18n="common.save_changes")
  else
    button#save-settings-btn.btn(data-i18n="courses.create_class")

Update classroom settings Learn Python copy

extends /templates/core/modal-base

block modal-header-content
  if view.classroom
    h3.modal-title(data-i18n="courses.edit_settings1")
  else
    h3.modal-title(data-i18n="courses.create_new_class")

block modal-body-content
  .form
    .form-group
      label(data-i18n="courses.title")
      - var name = view.classroom && view.classroom.get('name') ? view.classroom.get('name') : '';
      input.form-control.settings-name-input(type='text', value="#{name}")
    .form-group
      label(data-i18n="courses.description")
      - var description = view.classroom && view.classroom.get('description') ? view.classroom.get('description') : '';
      textarea.form-control.settings-description-input(rows=2)= description
    .form-group
      label(data-i18n="choose_hero.programming_language")
      select.form-control#programming-language-select
        - var aceConfig = view.classroom ? view.classroom.get('aceConfig') || {} : {};
        option(value="python", selected=aceConfig.language==='python') Learn Python
        option(value="javascript", selected=aceConfig.language==='javascript') Learn JavaScript

block modal-footer-content
  if view.classroom
    button#save-settings-btn.btn(data-i18n="common.save_changes")
  else
    button#save-settings-btn.btn(data-i18n="courses.create_class")


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

Define site language in HTML

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


.footer-banner
  .banner--service-gdpr
    p.banner--service-gdpr-text *This system is for demonstration purposes only and is not intended to process Personal Data.  No Personal Data is to be entered into this system as it may not have the necessary controls in place to meet the requirements of the General Data Protection Regulation (EU) 2016/679.
  ._demo--container.footer-container
    .footer-title Next Up: Build your own app
    .footer-tagline Use Visual Recognition to get started.
    a.base--a.bottom-links(href='https://www.ibm.com/watson/developercloud/visual-recognition/api/v3/', target='_blank') API Reference
    a.base--a.bottom-links(href='https://console.bluemix.net/docs/services/visual-recognition/getting-started.html', target='_blank') Documentation
    a.base--a.bottom-links(href='https://github.com/watson-developer-cloud/visual-recognition-nodejs', target='_blank') Fork on Github

Update link to API reference

.footer-banner
  .banner--service-gdpr
    p.banner--service-gdpr-text *This system is for demonstration purposes only and is not intended to process Personal Data.  No Personal Data is to be entered into this system as it may not have the necessary controls in place to meet the requirements of the General Data Protection Regulation (EU) 2016/679.
  ._demo--container.footer-container
    .footer-title Next Up: Build your own app
    .footer-tagline Use Visual Recognition to get started.
    a.base--a.bottom-links(href='https://console.bluemix.net/apidocs/visual-recognition?language=node', target='_blank') API Reference
    a.base--a.bottom-links(href='https://console.bluemix.net/docs/services/visual-recognition/getting-started.html', target='_blank') Documentation
    a.base--a.bottom-links(href='https://github.com/watson-developer-cloud/visual-recognition-nodejs', target='_blank') Fork on Github


.fluid-container#feed-container
	.row-fluid(infinite-scroll = 'nextPage()', infinite-scroll-disabled = 'busy', infinite-scroll-distance = '1')
		feedList
			feedItem(ng-repeat = 'feed in feeds')
				h2
					a(ng-href = "{{feed.link}}", ng-bind-html-unsafe = "feed.title")
				.feed-body(ng-bind-html-unsafe = "feed.description")
				.feed-footer
					span {{ feed.published | date:'medium' }}
					span(style = "padding: 2px;") read
					input(type = "checkbox", ng-model = "feed.read")

Put h2 inside the header and update angular ng-bind-html-unsafe => ng-bind-html

.fluid-container#feed-container
	.row-fluid(infinite-scroll = 'nextPage()', infinite-scroll-disabled = 'busy', infinite-scroll-distance = '1')
		feedList
			feedItem(ng-repeat = 'feed in feeds')
				.feed-header
					h2
						a(ng-href = "{{feed.link}}", ng-bind-html = "feed.title")
				.feed-body(ng-bind-html = "feed.description")
				.feed-footer
					span {{ feed.published | date:'medium' }}
					span(style = "padding: 2px;") read
					input(type = "checkbox", ng-model = "feed.read")


layout: index
description: Tomviz Web
subtitle: Tomviz for Web Visualization
comments: false
---

ul#intro-feature-list
  li.intro-feature-wrap
    .intro-feature
      .intro-feature-icon
        i.fa.fa-check
      h3.intro-feature-title
        a(href="http://www.tomviz.org/").link Tomviz
      p.intro-feature-desc
        | Desktop application for full materials tomography workflow

  li.intro-feature-wrap
    .intro-feature
      .intro-feature-icon
        i.fa.fa-cloud
      h3.intro-feature-title
        .link Tomviz Web
      p.intro-feature-desc
        | Interactive sharing of materials tomography data on the web

center
  div.tomviz-data-viewer(
    data-url="data/GeometryVolume.tomviz",
    data-viewport="100%x300",
    data-no-ui,
    data-animation="azimuth=100",
    data-step="azimuth=5",
    data-background-color="ffffff"
    style="margin-top: 20px;margin-bottom: 40px;")

script(type="text/javascript", src="data/js/tomviz.js")

Increase the height of the viewport

layout: index
description: Tomviz Web
subtitle: Tomviz for Web Visualization
comments: false
---

ul#intro-feature-list
  li.intro-feature-wrap
    .intro-feature
      .intro-feature-icon
        i.fa.fa-check
      h3.intro-feature-title
        a(href="http://www.tomviz.org/").link Tomviz
      p.intro-feature-desc
        | Desktop application for full materials tomography workflow

  li.intro-feature-wrap
    .intro-feature
      .intro-feature-icon
        i.fa.fa-cloud
      h3.intro-feature-title
        .link Tomviz Web
      p.intro-feature-desc
        | Interactive sharing of materials tomography data on the web

center
  div.tomviz-data-viewer(
    data-url="data/GeometryVolume.tomviz",
    data-viewport="100%x600",
    data-no-ui,
    data-animation="azimuth=100",
    data-step="azimuth=5",
    data-background-color="ffffff"
    style="margin-top: 20px;margin-bottom: 40px;")

script(type="text/javascript", src="data/js/tomviz.js")


doctype html
html(lang='en')
    head
        include templates/head
    body
        .resume-wrapper
            include templates/navigation
            include templates/header
            #sections
                section#about
                    include templates/about
                section#projects
                    include templates/cool-projects
                section#skills
                    include templates/skills
                section#awards
                    include templates/awards
                section#employment
                    include templates/employment
            div#home
                a(href="/") home

Fix navigation by stopping the page from refresh.

doctype html
html(lang='en')
    head
        include templates/head
    body
        .resume-wrapper
            include templates/navigation
            include templates/header
            #sections
                section#about
                    include templates/about
                section#projects
                    include templates/cool-projects
                section#skills
                    include templates/skills
                section#awards
                    include templates/awards
                section#employment
                    include templates/employment
            div#home
                a(href="/#/") home


extend layout

block content
    div#chat
        div#chatbox
        div.input-group
            input#message(type="text").form-control(autocomplete="off")
            span.input-group-btn
                button#sendMessage(type="button").btn.btn-default Send

    script(src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js")
    script(src="/javascripts/socket.io.js")
    script(src="/javascripts/chat.js")

Add setting name markup to the Jade file

extend layout

block content
    div#chat
        div.row
            div.welcome.top-buffer
            div.top-buffer#setYourName
                label(for="name", autocomplete="off") Enter your chat name
                    div.input-group
                        input#name.form-control(name="name", type="text")
                        span.input-group-btn
                            button#setName.btn.btn-default(type="button") Set Name
        div#chatbox
        div.input-group
            input#message(type="text", autocomplete="off").form-control
            span.input-group-btn
                button#sendMessage(type="button").btn.btn-default Send

    script(src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js")
    script(src="/javascripts/socket.io.js")
    script(src="/javascripts/chat.js")


if cards
    .ui.main.fluid.vertical.segment
        table.ui.celled.table
            thead
                tr
                    th Name
                    th.center.aligned Mana cost
                    th.center.aligned Set
                    th Type
                    th Tags
                    th
            tbody
                for card in cards
                    tr
                        td.collapsing #{card.name}
                        td.collapsing!= mana.mana2x(card.manaCost)
                        td.collapsing #{card.set}
                        td.collapsing #{card.type}
                        td
                            if card.tags
                                .ui.blue.labels
                                    for tag in card.tags
                                        .ui.label #{tag}
                        td.collapsing
                            .ui.primary.button(
                                ic-get-from="/api/cards/#{card.multiverseId}",
                                ic-target="#card"
                                ) View details
                                i.angle.double.right.icon
            tfoot
                tr
                    th(colspan="6")
                        .ui.right.floated.metadata.menu
                            if metadata.pagination
                                a.icon.item(
                                    ic-get-from!=metadata.pagination.first.href
                                    ic-target="#search-results"
                                    )
                                    i.step.backward.icon
                                for link in metadata.pagination.pages
                                    a.item(
                                        ic-get-from!=link.href
                                        ic-target="#search-results"
                                        class=link.currentPage ? "active" : ""
                                    ) #{link.name}
                                a.icon.item(
                                    ic-get-from!=metadata.pagination.last.href
                                    ic-target="#search-results"
                                    )
                                    i.step.forward.icon
else
    .ui.main.fluid.vertical.segment
        .ui.blue.message No results

Move set at the end of the result table

if cards
    .ui.main.fluid.vertical.segment
        table.ui.celled.table
            thead
                tr
                    th Name
                    th.center.aligned Mana cost
                    th Type
                    th Tags
                    th.center.aligned Set
                    th
            tbody
                for card in cards
                    tr
                        td.collapsing #{card.name}
                        td.collapsing!= mana.mana2x(card.manaCost)
                        td.collapsing #{card.type}
                        td
                            if card.tags
                                .ui.blue.labels
                                    for tag in card.tags
                                        .ui.label #{tag}
                        td.collapsing #{card.set}
                        td.collapsing
                            .ui.primary.button(
                                ic-get-from="/api/cards/#{card.multiverseId}",
                                ic-target="#card"
                                ) View details
                                i.angle.double.right.icon
            tfoot
                tr
                    th(colspan="6")
                        .ui.right.floated.metadata.menu
                            if metadata.pagination
                                a.icon.item(
                                    ic-get-from!=metadata.pagination.first.href
                                    ic-target="#search-results"
                                    )
                                    i.step.backward.icon
                                for link in metadata.pagination.pages
                                    a.item(
                                        ic-get-from!=link.href
                                        ic-target="#search-results"
                                        class=link.currentPage ? "active" : ""
                                    ) #{link.name}
                                a.icon.item(
                                    ic-get-from!=metadata.pagination.last.href
                                    ic-target="#search-results"
                                    )
                                    i.step.forward.icon
else
    .ui.main.fluid.vertical.segment
        .ui.blue.message No results


extends ../layout

block content
  .col-sm-8.col-sm-offset-2
    form(method='POST')
      legend Forgot Password
      input(type='hidden', name='_csrf', value=_csrf)
      .form-group
        p Enter your email address below and we will send you password reset instructions.
        label.control-label(for='email') Email
        input.form-control(type='email', name='email', id='email', placeholder='Email', autofocus=true, required=true)
      .form-group
        button.btn.btn-primary(type='submit')
          i.fa.fa-key
          | Reset Password

Drop the true from input

extends ../layout

block content
  .col-sm-8.col-sm-offset-2
    form(method='POST')
      legend Forgot Password
      input(type='hidden', name='_csrf', value=_csrf)
      .form-group
        p Enter your email address below and we will send you password reset instructions.
        label.control-label(for='email') Email
        input.form-control(type='email', name='email', id='email', placeholder='Email', autofocus, required)
      .form-group
        button.btn.btn-primary(type='submit')
          i.fa.fa-key
          | Reset Password


extends ./base

block styles
	link(rel="stylesheet", type="text/css", href="/static/css/new-collection.css")
	link(rel="stylesheet", type="text/css", href="/static/css/jqueryui/jquery-ui-1.8.16.custom.css")

block scripts
	script(type="application/javascript", src="/static/js/jquery-ui-1.8.16.custom.min.js")
	script(type="application/javascript", src="/static/js/new-collection.js")
	script(type="application/javascript")
		| collectionName = "#{collectionName}"

block page-content
	#new-collection-block
		#new-collection-block-title.block-title Create a new collection
		#new-collection-block-content.block-content
			form#new-collection(name="collectionForm", method="post")
				table
					tr
						td.input-label
							label(for="collectionTitle") Collection Name:
						td.input-column
							input#collectionTitle(name="collectionTitle")
					tr
						td.input-label
							label(for="parentCollections") Parent Collections:
						td.input-column
							input#parentCollectionNames
							input#parentCollectionValues(name="parentCollections", style="display: none")
					tr
						td.input-label
							label(for="collectionDescription") Description:
						td.input-column
							textarea#collectionDescription(name="collectionDescription")
				table#submit-table
					tr
						td
							input#save-collection(type="submit") Submit

Set 'action' property for the form element

extends ./base

block styles
	link(rel="stylesheet", type="text/css", href="/static/css/new-collection.css")
	link(rel="stylesheet", type="text/css", href="/static/css/jqueryui/jquery-ui-1.8.16.custom.css")

block scripts
	script(type="application/javascript", src="/static/js/jquery-ui-1.8.16.custom.min.js")
	script(type="application/javascript", src="/static/js/new-collection.js")
	script(type="application/javascript")
		| collectionName = "#{collectionName}"

block page-content
	#new-collection-block
		#new-collection-block-title.block-title Create a new collection
		#new-collection-block-content.block-content
			form#new-collection(name="collectionForm", method="post", action="/new-collection/")
				table
					tr
						td.input-label
							label(for="collectionTitle") Collection Name:
						td.input-column
							input#collectionTitle(name="collectionTitle")
					tr
						td.input-label
							label(for="parentCollections") Parent Collections:
						td.input-column
							input#parentCollectionNames
							input#parentCollectionValues(name="parentCollections", style="display: none")
					tr
						td.input-label
							label(for="collectionDescription") Description:
						td.input-column
							textarea#collectionDescription(name="collectionDescription")
				table#submit-table
					tr
						td
							input#save-collection(type="submit") Submit


extends layout

block content
  h1 L-System Drawing

  canvas(id="lsys_canvas", name="lsys_canvas", height="800", width="800")

  script.
    var canvas = document.getElementById('lsys_canvas')
    var context = canvas.getContext('2d')
    var lsys = !{JSON.stringify(lsys)};
    lsys_draw(400, 400, context, lsys)

Add "Back" link to L-System page

extends layout

block content
  h1 L-System Drawing

  p
    a(href="/") Back

  canvas(id="lsys_canvas", name="lsys_canvas", height="800", width="800")

  script.
    var canvas = document.getElementById('lsys_canvas')
    var context = canvas.getContext('2d')
    var lsys = !{JSON.stringify(lsys)};
    lsys_draw(400, 400, context, lsys)


if tips
  .Tips__tips
    for tip in tips
      a.Tip.js-tip(
        href=tip.href
        data-id=tip.id
        data-trigger=tip.trigger
      )
        .Tip__title!= tip.title
        .Tip__close.js-close
          span(
            class='iconic iconic-sm'
            data-glyph='x'
            title='x'
            aria-hidden='true'
          )

Move link from tip container to tip title

if tips
  .Tips__tips
    for tip in tips
      .Tip.js-tip(
        data-id=tip.id
        data-trigger=tip.trigger
      )
        a(href=tip.href)
          .Tip__title!= tip.title
        .Tip__close.js-close
          span.js-close(
            class='iconic iconic-sm'
            data-glyph='x'
            title='x'
            aria-hidden='true'
          )


div(ng-switch="vm.validNumberOfMemberships")
    p(
        ng-switch-when="true"
        translate="{{vm.ownerMessage}}"
        translate-values="{maxProjects: vm.maxProjects, currentProjects: vm.currentProjects}"
    )

    .transfer-project-options

        a.button.button-green(
            ng-switch-when="true"
            href="#"
            title="{{'ADMIN.PROJECT_TRANSFER.CHANGE_MY_PLAN' | translate}}"
            translate="ADMIN.PROJECT_TRANSFER.CHANGE_MY_PLAN"
        )

    p(
        ng-switch-when="false"
        translate="ADMIN.PROJECT_TRANSFER.CANT_BE_OWNED_BY_MEMBERSHIPS"
    )

Fix change my plan button when transfer project

div(ng-switch="vm.validNumberOfMemberships")
    p(
        ng-switch-when="true"
        translate="{{vm.ownerMessage}}"
        translate-values="{maxProjects: vm.maxProjects, currentProjects: vm.currentProjects}"
    )

    .transfer-project-options

        a.button.button-green(
            ng-switch-when="true"
            href="#"
            tg-nav="user-settings-contrib:plugin='subscriptions'"
            title="{{'ADMIN.PROJECT_TRANSFER.CHANGE_MY_PLAN' | translate}}"
            translate="ADMIN.PROJECT_TRANSFER.CHANGE_MY_PLAN"
        )

    p(
        ng-switch-when="false"
        translate="ADMIN.PROJECT_TRANSFER.CANT_BE_OWNED_BY_MEMBERSHIPS"
    )


tg-lightbox-close

form
    h2.title
    p
        span.subtitle
        span.message

    div.options
        button.btn-small.btn-form
            span(translate="COMMON.CANCEL")

        button.btn-small.btn-delete.btn-confirm
            tg-svg(svg-icon="icon-trash")
            span(translate="COMMON.DELETE")

Add cancel to delete lightbox

tg-lightbox-close

form
    h2.title
    p
        span.subtitle
        span.message

    div.options
        button.btn-small.btn-form.btn-cancel
            span(translate="COMMON.CANCEL")

        button.btn-small.btn-delete.btn-confirm
            tg-svg(svg-icon="icon-trash")
            span(translate="COMMON.DELETE")


#loginpage
  form.form-horizontal#login(method="post", action="/main/javascript-disabled")
    legend Login to your account
    .control-group#nickname-group
      label.control-label(for="nickname") Nickname
      .controls
        input#nickname(type="text", name="nickname", size="16")

    .control-group#password-group
      label.control-label(for="password") Password
      .controls
        input#password(type="password", name="password", size="16")
        if config.haveEmail
          a(href="/main/recover") Forgot your password?

    .control-group
      .controls
        button.btn.btn-primary(type="submit", disabled="disabled") Login

  if config.disableRegistration
    p.text-warning Registrations disabled for new users.
  else
    p
      a.add-continue(href="/main/register") New user?

  p
    a.add-continue(href="/main/remote") Account on another server?

Add a space before 'Forgot your password' link

#loginpage
  form.form-horizontal#login(method="post", action="/main/javascript-disabled")
    legend Login to your account
    .control-group#nickname-group
      label.control-label(for="nickname") Nickname
      .controls
        input#nickname(type="text", name="nickname", size="16")

    .control-group#password-group
      label.control-label(for="password") Password
      .controls
        input#password(type="password", name="password", size="16")
        if config.haveEmail
          |
          a(href="/main/recover") Forgot your password?

    .control-group
      .controls
        button.btn.btn-primary(type="submit", disabled="disabled") Login

  if config.disableRegistration
    p.text-warning Registrations disabled for new users.
  else
    p
      a.add-continue(href="/main/register") New user?

  p
    a.add-continue(href="/main/remote") Account on another server?


extends layout

block head-extras
    link(rel='stylesheet', href='/stylesheets/index.css')
    title='Unicode-Webiste'
    meta(description='Analyse and get information on Unicode text.')

block content
    div.jumbotron
        h1 Welcome to #{title}
        p Do stuff with Unicode.
        p
            a.btn(href='about') Help finding your way
            a.btn(href='unicode') Learn how Unicode works

    form#searchForm(role="form", action="search")
        textarea#search(name="inp",form="searchForm", placeholder="Enter text, a character, or even a code point",required)
        button#submit(type="submit")
            i.fa.fa-flask.fa-5x
            br
            h2(style="margin:0") Go!

Make it clearer what you should do on the homepage

extends layout

block head-extras
    link(rel='stylesheet', href='/stylesheets/index.css')
    title='Unicode-Webiste'
    meta(description='Analyse and get information on Unicode text.')

block content
    div.jumbotron
        h1 Welcome to #{title}
        p Do stuff with Unicode.
        p
            a.btn(href='about') Help finding your way
            a.btn(href='unicode') Learn how Unicode works

    form#searchForm(role="form", action="search")
        textarea#search(name="inp",form="searchForm", placeholder="Paste or type a character, or some text!",required)
        button#submit(type="submit")
            i.fa.fa-flask.fa-5x
            br
            h2(style="margin:0") Go!


extends layout

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

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

  // results
  .search-results
    .panel.panel-default(ng-repeat='feature in features')
      .panel-heading: h2.panel-title(ng-bind-html='feature.name | highlight:query')
      dl.dl-horizontal.panel-body
        dt(ng-bind-html='example.technology | highlight:query', ng-repeat-start='example in feature.examples')
        dd(ng-repeat='snippet in listify(example.snippets)', ng-repeat-end)
          pre: code(ng-bind-html='snippet | highlight:query')
    h2.text-muted(ng-if='!features') No results

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

Use tables for displaying examples

extends layout

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

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

  // results
  .search-results
    .panel.panel-default(ng-repeat='feature in features')
      .panel-heading: h2.panel-title(ng-bind-html='feature.name | highlight:query')
      table.table.table-striped
        tr(ng-repeat='example in feature.examples')
          td(ng-bind-html='example.technology | highlight:query')
          td
            div(ng-repeat='snippet in listify(example.snippets)')
              pre: code(ng-bind-html='snippet | highlight:query')
    h2.text-muted(ng-if='!features') No results

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


extends ../layout/default.jade

block title
    | Rights Management

block pageheader
    | Rights - #{user.username} - Edit

block content
    form(action='/rights/user/' + user.id, method='POST')
        .form-group
            label(for='permissions[]') Permissions
            a.btn.btn-success.fa.fa-plus.pull-right#btnAddPermission(href='#')
            each permission in user.permissions
                input.form-control(type='text', name='permissions[]', placeholder='Permission', value=permission)
            input.form-control(type='text', name='permissions[]', placeholder='Permission')
        .form-group
            input(type='hidden', name='_method', value='PATCH')
            button.btn.btn-success(type='submit') Save

Allow selecting of groups in user edit view.

extends ../layout/default.jade

block title
    | Rights Management

block pageheader
    | Rights - #{user.username} - Edit

block content
    form(action='/rights/user/' + user.id, method='POST')
        .form-group
            label(for='permissions[]') Permissions
            a.btn.btn-success.fa.fa-plus.pull-right#btnAddPermission(href='#')
            each permission in user.permissions
                input.form-control(type='text', name='permissions[]', placeholder='Permission', value=permission)
            input.form-control(type='text', name='permissions[]', placeholder='Permission')
        .form-group
            label Permission Groups
            each group in groups
                .checkbox
                    label
                        - var in_group = _.find(user.groups, function(to_check) { return to_check.id == group.id; })
                        if in_group
                            input(type='checkbox', name='groups[]', value=group.id, checked)
                            = group.name
                        else
                            input(type='checkbox', name='groups[]', value=group.id)
                            = group.name
        .form-group
            input(type='hidden', name='_method', value='PATCH')
            button.btn.btn-success(type='submit') Save


extends ../layout/default.jade

block title
    | Rights Management

block pageheader
    if group
        | Rights - #{group.name} - Edit
    else
        | Rights - New group

block content
    - var method = group ? 'PATCH' : 'PUT'
    - var action = group ? '/rights/group/' + group.id : '/rights/group'
    form(action=action, method='POST')
        .form-group
            label(for='name') Name
            input.form-control(type='text', name='name', placeholder='Group name', value=(group ? group.name : ''))
        .form-group
            label(for='permissions[]')
            a.btn.btn-success.fa.fa-plus#btnAddPermission(href='#')
            if group
                each permission in group.permissions
                    input.form-control(type='text', name='permissions[]', placeholder='Permission', value=permission)
            input.form-control(type='text', name='permissions[]', placeholder='Permission')
        .form-group
            input(type='hidden', name='_method', value=method)
            button.btn-success(type='submit') Save

Fix some things in edit view of group.

extends ../layout/default.jade

block title
    | Rights Management

block pageheader
    if group
        | Rights - #{group.name} - Edit
    else
        | Rights - New group

block content
    - var method = group ? 'PATCH' : 'PUT'
    - var action = group ? '/rights/group/' + group.id : '/rights/group'
    form(action=action, method='POST')
        .form-group
            label(for='name') Name
            input.form-control(type='text', name='name', placeholder='Group name', value=(group ? group.name : ''))
        .form-group
            label(for='permissions[]') Permissions
            a.btn.btn-success.fa.fa-plus.pull-right#btnAddPermission(href='#')
            if group
                each permission in group.permissions
                    input.form-control(type='text', name='permissions[]', placeholder='Permission', value=permission)
            input.form-control(type='text', name='permissions[]', placeholder='Permission')
        .form-group
            input(type='hidden', name='_method', value=method)
            button.btn.btn-success(type='submit') Save


div(id='wms_info_dialog', title="WMS Layer Info")
script(type="text/javascript").
    $("#wms_info_dialog").dialog({
        autoOpen: false
    });

Increase default width of dialog

div(id='wms_info_dialog', title="WMS Layer Info")
script(type="text/javascript").
    $("#wms_info_dialog").dialog({
        autoOpen: false,
        width: 600
    });


template(name="layout")
    +header
    .container
        +errors
        #main
            +yield
    +footer

Remove footer from the template


doctype xml
rss(version='2.0',
    xmlns:content='http://purl.org/rss/1.0/modules/content/',
    xmlns:wfw='http://wellformedweb.org/CommentAPI/',
    xmlns:dc='http://purl.org/dc/elements/1.1/'
    xmlns:atom='http://www.w3.org/2005/Atom')
  channel
    - var articles = env.helpers.getArticles(contents);
    title= locals.name
    atom:link(href=locals.url + '/feed.xml', rel='self', type='application/rss+xml')
    link= locals.url
    description= locals.description
    pubDate= articles[0].rfc822date
    generator Wintersmith - https://github.com/jnordberg/wintersmith
    language en
    each article in articles
      - var permalink = locals.url + article.url;
      item
        title= article.title
        link= permalink
        pubDate= article.rfc822date
        guid(isPermaLink='true')= permalink
        - var author = contents.authors[article.metadata.author + '.json'];
        author= author.metadata.name
        //- passing locals.url resolves all relative urls to absolute
        description= article.getHtml(locals.url)

Add check to ensure author file exists

doctype xml
rss(version='2.0',
    xmlns:content='http://purl.org/rss/1.0/modules/content/',
    xmlns:wfw='http://wellformedweb.org/CommentAPI/',
    xmlns:dc='http://purl.org/dc/elements/1.1/'
    xmlns:atom='http://www.w3.org/2005/Atom')
  channel
    - var articles = env.helpers.getArticles(contents);
    title= locals.name
    atom:link(href=locals.url + '/feed.xml', rel='self', type='application/rss+xml')
    link= locals.url
    description= locals.description
    pubDate= articles[0].rfc822date
    generator Wintersmith - https://github.com/jnordberg/wintersmith
    language en
    each article in articles
      - var permalink = locals.url + article.url;
      item
        title= article.title
        link= permalink
        pubDate= article.rfc822date
        guid(isPermaLink='true')= permalink
        - var author = contents.authors[article.metadata.author + '.json'];
        - if (!author) {author = { metadata: {name: null}} };
        author= author.metadata.name
        //- passing locals.url resolves all relative urls to absolute
        description= article.getHtml(locals.url)


head
	title FETE EKlore
	meta(charset="utf-8")
	meta(name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
	//link(rel="stylesheet" href="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.css")

Add meta tag to be visible by Google

head
	title FETE EKlore
	meta(charset="utf-8")
	meta(name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
	meta(name="google-site-verification" content="p4MtkG3Oo_YOsQlGnl-zHYgkBg7nUP8vv1TeAzZ74Jk")


// Breadcrumbs menu for debug
ol.breadcrumb
  li
    a(ui-sref="upgrade") Upgrade
  li
    a(ui-sref="upgrade.prepare") Prepare Nodes
  li
    a(ui-sref="upgrade.backup") Backup
    li.active Reinstall Admin Server

button.btn.btn-primary.pull-right(type='button', ng-click="steps.nextStep()", ng-if="!steps.isLastStep()")
  span.fa-fw.fa.fa-chevron-right(aria-hidden="true")
  | Continue Upgrade Process
button.btn.btn-primary.disabled.pull-right(type='button', ng-click="steps.nextStep()", ng-if="steps.isLastStep()")
  span.fa-fw.fa-spinner.fa.fa-spin(aria-hidden="true")
  | Upgrading Nodes...

Remove breadcrumbs from nav widget


section.about.column-contain
  article.left
    header
      h2 About Marionette
    p.
      Marionette is a composite application library for Backbone that aims to simplify the construction of large scale JavaScript applications.
    p.
      It is a collection of common design and implementation patterns found in the applications that we have been building with Backbone and includes pieces inspired by composite application architectures, event-driven architectures, messaging architectures, and more.
  .quick-links.right
    nav.bottom-quick-links
      h3 Requirements
      ul
        li
          a(href="http://jquery.com/", target="_blank") jQuery
          span v1.8+
        li
          a(href= "http://underscorejs.org/", target="_blank") Underscore
          span v1.4.4+
        li
          a(href= "http://backbonejs.org/", target= "_blank") Backbone
          span
            | v1.1.x
            strong.note is preferred. v1.0.0, v0.9.9 and v0.9.10 should work still.
        li
          a(href= "https://github.com/marionettejs/backbone.wreqr", target= "_blank") Backbone.Wreqr
        li
          a(href= "https://github.com/marionettejs/backbone.babysitter", target= "_blank") Backbone.BabySitter
  .cl

Add space to fix flow of text This is small fix to issue that is apparent when viewing page as text/epub: * Backbone v1.1.xis preferred fixed to: * Backbone v1.1.x is preferred


nav.navbar.navbar-default.navbar-static-top
  .navbar-header
    button.navbar-toggle.collapsed(type='button', data-toggle='collapse', data-target='#navbar', aria-expanded='false', aria-controls='navbar')
      span.sr-only Toggle navigation
      span.icon-bar
      span.icon-bar
      span.icon-bar
    a.navbar-brand(href='/') Project name
  #navbar.navbar-collapse.collapse
    ul.nav.navbar-nav
      li(class=(title == 'Home') ? 'active' : null)
        a(href='/') Home
      li
        a(href='/contact') Contact
    ul.nav.navbar-nav.navbar-right
      if user
        li(class=(title == 'Account Management') ? 'active' : null)
          a(href='/account') My Account
        li
          a(href='/logout') Logout
      else
        li(class=(title == 'Log in') ? 'active' : null)
          a(href='/login') Log in
        li(class=(title == 'Sign up') ? 'active' : null)
          a(href='/signup') Sign up

Use dropdown menu when logged in

nav.navbar.navbar-default.navbar-static-top
  .navbar-header
    button.navbar-toggle.collapsed(type='button', data-toggle='collapse', data-target='#navbar', aria-expanded='false', aria-controls='navbar')
      span.sr-only Toggle navigation
      span.icon-bar
      span.icon-bar
      span.icon-bar
    a.navbar-brand(href='/') Project name
  #navbar.navbar-collapse.collapse
    ul.nav.navbar-nav
      li(class=(title == 'Home') ? 'active' : null)
        a(href='/') Home
      li
        a(href='/contact') Contact
    ul.nav.navbar-nav.navbar-right
      if user
        li.dropdown(class=(title == 'My Account') ? 'active' : null)
          a.dropdown-toggle(href='#', data-toggle='dropdown')
            if user.picture
              img(src=user.picture)
            | #{user.name || user.email || user.id}
            i.caret
          ul.dropdown-menu
            li
              a(href='/account') My Account
            li.divider
            li
              a(href='/logout') Logout
      else
        li(class=(title == 'Log in') ? 'active' : null)
          a(href='/login') Log in
        li(class=(title == 'Sign up') ? 'active' : null)
          a(href='/signup') Sign up


doctype html

html
  head
    meta(charset='UTF-8')
    title Checkdesk
    link(href='/css/stylesheet.css', rel='stylesheet')
    link(href='/images/logo/favicon.ico', rel='icon')
    script(src='/js/config.js')

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

Add viewport initial scale for mobile devices

doctype html

html
  head
    meta(charset='UTF-8')
    meta(name="viewport" content="width=device-width, initial-scale=1")
    title Checkdesk
    link(href='/css/stylesheet.css', rel='stylesheet')
    link(href='/images/logo/favicon.ico', rel='icon')
    script(src='/js/config.js')

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


extends layout

block title
  | wat do?

block content
  section#timeline-wrap
    div.timeline-visualization
  section#home
    div.content-wrap
      div.content
        h2.maintext What should I do now?

        h4.subtext If you're like us, and often ask yourself this question, then
          span.watdo wat-do
          |  can probably help you.

        .features
          .feature
            .icons
              i.icon-list-ol
              span.big  +
              i.icon-calendar
            p Get the best of both worlds: see
              strong what
              |  to do and
              strong when
              |  to do it all in one intuitive timeline.
          .feature
            .icons
              i.icon-group
              span.big  +
              i.icon-bullhorn
            p Effortlessly collaborate with your friends by sharing and subscribing to lists.
          .feature
            .icons
              i.icon-cloud
              span.big  +
              i.icon-tasks
            p Access your lists from any of your devices, wherever you are.

        .heading Getting started couldn't be easier
        p All you need to do is click the login button. That's literally all there is to it. We identify you by your
          a(href='https://developers.google.com/accounts/docs/OpenID') Google OpenID
          | , which means that there's no registration process whatsoever.

        a.btn(href='/login') Login with Google

Add quotation marks back in for front page text

extends layout

block title
  | wat do?

block content
  section#timeline-wrap
    div.timeline-visualization
  section#home
    div.content-wrap
      div.content
        h2.maintext "What should I do now?"

        h4.subtext If you're like us, and often ask yourself this question, then
          span.watdo wat-do
          |  can probably help you.

        .features
          .feature
            .icons
              i.icon-list-ol
              span.big  +
              i.icon-calendar
            p Get the best of both worlds: see
              strong what
              |  to do and
              strong when
              |  to do it all in one intuitive timeline.
          .feature
            .icons
              i.icon-group
              span.big  +
              i.icon-bullhorn
            p Effortlessly collaborate with your friends by sharing and subscribing to lists.
          .feature
            .icons
              i.icon-cloud
              span.big  +
              i.icon-tasks
            p Access your lists from any of your devices, wherever you are.

        .heading Getting started couldn't be easier
        p All you need to do is click the login button. That's literally all there is to it. We identify you by your
          a(href='https://developers.google.com/accounts/docs/OpenID') Google OpenID
          | , which means that there's no registration process whatsoever.

        a.btn(href='/login') Login with Google


!!!
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/application.css')
    script(src="/javascripts/jquery.js")
    script(src="/javascripts/application.js")
  body
    #header
      h1= title

    each flashType in ['info', 'error']
      if flash[flashType]
        p.flash(class=flashType)
          = flash[flashType]

    != body

Add link to route in the header

!!!
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/application.css')
    script(src="/javascripts/jquery.js")
    script(src="/javascripts/application.js")
  body
    #header
      h1
        a(href='/')=title
    each flashType in ['info', 'error']
      if flash[flashType]
        p.flash(class=flashType)
          = flash[flashType]

    != body


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

Fix missing slash in stylesheet URL that resulted in it loading the wrong thing when not on the index.

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


extends layout

block content
    div(class='container')
        div(class="page-header")
            h1 家電控制
        h2 平面圖
        div(class="text-center")
            div()
                img(src="/images/floor_plan.png")

Add LED & Plug switch

extends layout

block css
    link(rel='stylesheet', href='/css/bootstrap-switch.min.css')

block content
    div(class='container')
        div(class="page-header")
            h1 家電控制
        h2 LED電燈
        h3 Room 1
        input(type="checkbox" name="led_0")
        h3 Room 2
        input(type="checkbox" name="led_1")
        h3 Room 3
        input(type="checkbox" name="led_2")
        h2 插頭
        h3 插座 1
        input(type="checkbox" name="plug_0")
        h3 插座 2
        input(type="checkbox" name="plug_1")

block javascript
    script(type="text/javascript" src="javascripts/bootstrap-switch.min.js")
    script(type="text/javascript").
        $(function () {
            $("[name='led_0']").bootstrapSwitch();
            $("[name='led_1']").bootstrapSwitch();
            $("[name='led_2']").bootstrapSwitch();

            $("[name='plug_0']").bootstrapSwitch();
            $("[name='plug_1']").bootstrapSwitch();
        });


#navigation(style="width:100%;")
  .ui.menu.large
    a.item(href="/")
      i.icon.left(class="#{ config.service.icon || 'lab' }")
      | #{config.service.name}

    block mainMenu
      .right.menu
        if (user)
          a.item(href="/people/#{user.slug}") #{user.username}
          a.item(href="/sessions/#{session.hash}?method=delete") Logout
        else
          a.item(href="/sessions")
            i.user.icon
            | Login »
          a.item(href="/people")
            i.icons
              i.user.icon
              i.corner.add.icon
            |  Register »

  .ui.menu.small.bottom(style="margin-top: -1.25em;")
    a.item(href="/", title="#{config.service.name} Homepage", ng-class="{ active: isActive('/')}")
      i.home.icon
      |  Home

Disable UI when public registration is disabled.

#navigation(style="width:100%;")
  .ui.menu.large
    a.item(href="/")
      i.icon.left(class="#{ config.service.icon || 'lab' }")
      | #{config.service.name}

    block mainMenu
      .right.menu
        if (user)
          a.item(href="/people/#{user.slug}") #{user.username}
          a.item(href="/sessions/#{session.hash}?method=delete") Logout
        else if (config.config.allowPublicRegistration)
          a.item(href="/sessions")
            i.user.icon
            | Login »
          a.item(href="/people")
            i.icons
              i.user.icon
              i.corner.add.icon
            |  Register »

  .ui.menu.small.bottom(style="margin-top: -1.25em;")
    a.item(href="/", title="#{config.service.name} Homepage", ng-class="{ active: isActive('/')}")
      i.home.icon
      |  Home


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

block content

  h1 #{item.title}

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

  h2 Edit

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

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

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

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

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

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

Add support for editing the title.

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

block content

  h1 #{item.title}

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

  h2 Edit

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

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

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

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

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

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

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


!!! 5
html
  include ../includes/head
  body
    //-header.container(data-ng-include="'views/header.html'", data-role="navigation")
    include ../includes/noscript
    block content
    //-footer.container(data-ng-include="'views/footer.html'", data-role="footer")
    //include ../includes/foot
    include ../includes/foot_dev

Change the production js inclusion script file

!!! 5
html
  include ../includes/head
  body
    //-header.container(data-ng-include="'views/header.html'", data-role="navigation")
    include ../includes/noscript
    block content
    //-footer.container(data-ng-include="'views/footer.html'", data-role="footer")
    include ../includes/foot


.main-layout-header-user
  if user
    span.mlh-user-name.hover-pulldown( data-anchor='right', data-mode='hover' )
      a( href='/user/saves' )
        include ../../public/icons/person.svg

      .hover-pulldown-menu
        if user.isAdmin()
          a( href= sd.ADMIN_URL ) Admin
        if user.isAdmin() || user.get('has_partner_access')
          a( href= sd.CMS_URL ) CMS
        if user.isAdmin() || user.get('has_partner_access')
          hr

        a( href='/user/saves' )
          | Saves & Follows
        a( href='/profile/edit' )
          | Collector Profile
        a( href='/user/edit' )
          | Settings

        a.mlh-logout
          | Log out

  else
    a.avant-garde-button-white.mlh-login( href='/log_in' ) Log in
    a.avant-garde-button-black.mlh-signup( href='/sign_up' ) Sign up

Fix missing href tag on logout link

.main-layout-header-user
  if user
    span.mlh-user-name.hover-pulldown( data-anchor='right', data-mode='hover' )
      a( href='/user/saves' )
        include ../../public/icons/person.svg

      .hover-pulldown-menu
        if user.isAdmin()
          a( href= sd.ADMIN_URL ) Admin
        if user.isAdmin() || user.get('has_partner_access')
          a( href= sd.CMS_URL ) CMS
        if user.isAdmin() || user.get('has_partner_access')
          hr

        a( href='/user/saves' )
          | Saves & Follows
        a( href='/profile/edit' )
          | Collector Profile
        a( href='/user/edit' )
          | Settings

        a( href='#' ).mlh-logout
          | Log out

  else
    a.avant-garde-button-white.mlh-login( href='/log_in' ) Log in
    a.avant-garde-button-black.mlh-signup( href='/sign_up' ) Sign up


.currencies
  a(href="#/xrp", ng-class="{active: $route.current.tabName == 'xrp'}", l10n) XRP
  a(href="#/btc", ng-class="{active: $route.current.tabName == 'btc'}", ng-show="'web' === client", l10n) BTC
  a(href="#/usd", ng-class="{active: $route.current.tabName == 'usd'}", l10n) USD (US only)
  a(href="#/trust", ng-class="{active: $route.current.tabName == 'trust'}", l10n) Gateways
a(href="https://support.ripplelabs.com/hc/en-us/articles/202847686-Gateway-Information", target="_blank", l10n) Learn more about gateways

Remove USD tab from fund page

.currencies
  a(href="#/xrp", ng-class="{active: $route.current.tabName == 'xrp'}", l10n) XRP
  a(href="#/btc", ng-class="{active: $route.current.tabName == 'btc'}", ng-show="'web' === client", l10n) BTC
  //a(href="#/usd", ng-class="{active: $route.current.tabName == 'usd'}", l10n) USD (US only)
  a(href="#/trust", ng-class="{active: $route.current.tabName == 'trust'}", l10n) Gateways
a(href="https://support.ripplelabs.com/hc/en-us/articles/202847686-Gateway-Information", target="_blank", l10n) Learn more about gateways


doctype html
html
  head
    meta(http-equiv="content-type", content="text/html; charset=UTF-8")
    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 user-scalable=no")

    title= title
    link(rel='stylesheet', href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css')
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    nav.navbar-inverse.navbar-default
      div.navbar-header
        button.navbar-toggle.collapsed(data-toggle="collapse", type="button")
          span.sr-only Toggle navigation
          span.icon-bar
          span.icon-bar
          span.icon-bar
        a.navbar-brand(href="/") Echo Music

      div.collapse.navbar-collapse
        ul.nav.navbar-nav
          li
            a(href="/") Home
          li
            a(href="/albums") Albums
          li
            a(href="/artists") Artists
          li
            a(href="/about") About

    div.col-md-1
    div.container-fluid.col-md-10
      block content
    div.col-md-1

    include footer

Add chat link to the page header.

doctype html
html
  head
    meta(http-equiv="content-type", content="text/html; charset=UTF-8")
    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 user-scalable=no")

    title= title
    link(rel='stylesheet', href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css')
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    nav.navbar-inverse.navbar-default
      div.navbar-header
        button.navbar-toggle.collapsed(data-toggle="collapse", type="button")
          span.sr-only Toggle navigation
          span.icon-bar
          span.icon-bar
          span.icon-bar
        a.navbar-brand(href="/") Echo Music

      div.collapse.navbar-collapse
        ul.nav.navbar-nav
          li
            a(href="/") Home
          li
            a(href="/albums") Albums
          li
            a(href="/artists") Artists
          li
            a(href="/chat") Chat
          li
            a(href="/about") About

    div.col-md-1
    div.container-fluid.col-md-10
      block content
    div.col-md-1

    include footer


doctype html
html
    head
        title= title
        link(rel='stylesheet', href='http://willi.am/stylesheets/screen.css')
    body
        header#header.inner
            h1
                a(href='/')= blog.title
            nav#main-nav
                ul#main
                    li: a(href='/plugins') Plugins
        #content.inner
            block content

Add highlight.js stylesheet to style highlighted code

doctype html
html
    head
        title= title
        link(rel='stylesheet', href='http://willi.am/stylesheets/screen.css')
        link(rel='stylesheet', href='http://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.1/styles/default.min.css')
    body
        header#header.inner
            h1
                a(href='/')= blog.title
            nav#main-nav
                ul#main
                    li: a(href='/plugins') Plugins
        #content.inner
            block content


div(class='row')
    div(class='small-12 large-4 large-offset-4 columns')
        p
            span You need to be connected to play LoLve
            br
            span(class='info') (please note this is not your League of Legends account)

        div(id='login')
            p Login !

            form(action='/login', method='POST', data-ajax='{}')
                label(class='label', for='username') Username
                input(name='username', type='text')
                label(class='label', for='password') Password
                input(name='password', type='text')
                input(name='mode', type='hidden', value='login')
                br
                input(type='submit', class='hollow button', value='Login')
        div(id='register')
            p No account yet ? Register !

            form(action='/login', method='POST', data-ajax='{}')
                label(class='label', for='username') Username
                input(name='username', type='text')
                label(class='label', for='password') Password
                input(name='password', type='text')
                input(name='mode', type='hidden', value='registering')
                input(name='avatar', type='hidden', value='Trundle')
                label(class='label', for='avatar') Avatar (click on a champion image below to change)
                img(class='avatar')
                br
                input(type='submit', class='hollow button', value='Register')

Add hidden input for origin

div(class='row')
    div(class='small-12 large-4 large-offset-4 columns')
        p
            span You need to be connected to play LoLve
            br
            span(class='info') (please note this is not your League of Legends account)

        div(id='login')
            p Login !

            form(action='/login', method='POST', data-ajax='{}')
                label(class='label', for='username') Username
                input(name='username', type='text')
                label(class='label', for='password') Password
                input(name='password', type='text')
                input(name='mode', type='hidden', value='login')
                input(name='origin', type='hidden', value=origin)
                br
                input(type='submit', class='hollow button', value='Login')
        div(id='register')
            p No account yet ? Register !

            form(action='/login', method='POST', data-ajax='{}')
                label(class='label', for='username') Username
                input(name='username', type='text')
                label(class='label', for='password') Password
                input(name='password', type='text')
                input(name='mode', type='hidden', value='registering')
                input(name='avatar', type='hidden', value='Trundle')
                input(name='origin', type='hidden', value=origin)
                label(class='label', for='avatar') Avatar (click on a champion image below to change)
                img(class='avatar')
                br
                input(type='submit', class='hollow button', value='Register')


.manage__block__collection__header
  .manage__block__title.manage__block__column.manage__block__sort__link(data-sort="title") Title
  .manage__block__block_count.manage__block__column.manage__block__sort__link(data-sort="length") Length
  .manage__block__status.manage__block__column.manage__block__sort_link(data-sort="status") Status
  .manage__block__collaborator_count.manage__block__column.manage__block__sort__link(data-sort="collaboratore_ids.length") Collaborators
  .manage__block__follower_count.manage__block__column.manage__block__sort__link(data-sort="followed_by_ids.length") Followers
  .manage__block__export.manage__block__column

.manage__block__collection__contents
  for block in blocks
    include block_manage

Add ability to export from manage panel


!!!
html(ng-app="nobotApp")
  head
    meta(charset='utf8')
    meta(http-equiv='X-UA-Compatible', content='IE=edge')
    meta(name='viewport', content='width=device-width, initial-scale=1')
    base(href='/')
    title Nobot.email

    //- loading bootstrap
    link(rel='stylesheet', href='//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.2.0/css/bootstrap.min.css')

    //- loading font awesome!
    link(rel='stylesheet', href='//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.min.css')

    //- loading custom stylesheets
    link(rel='stylesheet', href='/css/app.css')
    link(rel='stylesheet', href='/css/flat-ui.css')
    link(rel='stylesheet', href='//cdnjs.cloudflare.com/ajax/libs/nprogress/0.1.3/nprogress.min.css')
  body
    block body

Fix deprecated issue with jade

doctype
html(ng-app="nobotApp")
  head
    meta(charset='utf8')
    meta(http-equiv='X-UA-Compatible', content='IE=edge')
    meta(name='viewport', content='width=device-width, initial-scale=1')
    base(href='/')
    title Nobot.email

    //- loading bootstrap
    link(rel='stylesheet', href='//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.2.0/css/bootstrap.min.css')

    //- loading font awesome!
    link(rel='stylesheet', href='//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.min.css')

    //- loading custom stylesheets
    link(rel='stylesheet', href='/css/app.css')
    link(rel='stylesheet', href='/css/flat-ui.css')
    link(rel='stylesheet', href='//cdnjs.cloudflare.com/ajax/libs/nprogress/0.1.3/nprogress.min.css')
  body
    block body


script(src="http://code.jquery.com/jquery-2.0.3.min.js")
script(src="/bootstrap/js/bootstrap.js")
script(src="/javascripts/ga.js")
script(src="/javascripts/twitter-share.js")
script(src="/javascripts/holder.js")
script(src="/javascripts/cloudcv.js")

span(id="forkongithub")
    a(href="https://github.com/BloodAxe/CloudCV") Fork me on GitHub

div.navbar.navbar-fixed-top.navbar-inverse
    div.container
        a.navbar-brand(href="/") CloudCV

        ul.nav.navbar-nav.navbar-right
            li
                a(href="http://ua.linkedin.com/in/cvtalks/")
                    i.icon-linkedin-sign
                    |  Ievgen Khvedchenia
            li
                a(href="http://github.com/BloodAxe/CloudCV")
                    i.icon-github-alt
                    |  CloudCV
            li
                a(href="http://twitter.com/cvtalks")
                    i.icon-twitter
                    |  @cvtalks

Move scripts to the end of the page


doctype html
html
  head
    block head
      title #{title} - tptelements
      link(rel='stylesheet', href='/css/print.css', media='print')
      link(rel='stylesheet', href='/css/screen.css', media='screen, projection')
  body
    block body
      header
        block header
          include header
      main
        block content
          p not yet implemented
      footer
        block footer
          include footer
      // jay queery
      script(src='//code.jquery.com/jquery-1.11.0.min.js')

Add a last modified date to all files

doctype html
html
  head
    block head
      title #{title} - tptelements
      link(rel='stylesheet', href='/css/print.css', media='print')
      link(rel='stylesheet', href='/css/screen.css', media='screen, projection')
  body
    block body
      header
        block header
          include header
      main
        block content
          p not yet implemented
      footer
        block footer
          include footer
      // jay queery
      script(src='//code.jquery.com/jquery-1.11.0.min.js')

      //- last modified :D
      - var x = new Date().toString();
      .lastmod Last Modified: #{x}


doctype 5
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    block content

Add backbone and underscore from cdn

doctype 5
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    script(type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min.js')
    script(type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.0.0/backbone-min.js')
  body
    block content


extends layout

block content
  h1(style='text-align: center')= contact['name']
  h4(style='text-align: center') #{ contact['email'] } :: #[a(href="http://#{ contact['website'] }") #{ contact['website'] }]

  h3 Toolbox
  table
    tr
      td Languages:
      td= toolbox['languages'].join(', ')
    tr
      td Databases:
      td= toolbox['databases'].join(', ')
    tr
      td Systems:
      td= toolbox['systems'].join(', ')
    tr
      td Configuration:
      td= toolbox['configuration'].join(', ')

  h3 Experience
  each exp, key in experience
    h4 #{exp['name']} :: #{exp['location']} :: #{exp['dates']}
    each titleDetail, title in exp['titles']
      h5= title
      ul
        each line in titleDetail
          li= line[0]
          if line[1] != undefined && line[1] != null
            ul
              each l in line[1]
                li= l
    h5 Technologies: #{ exp['technologies'].join(', ') }

  h3 College Education + Employment
  h4 #{ education['college']['name'] } :: #{ education['college']['degree'] } in #{ education['college']['subject'] } :: #{ education['college']['date'] }
  ul
    each job, key in education['college']['jobs']
      li #{ job['name'] } :: #{ job['title'] } - #{ job['type'] } :: #{ job['location'] } :: #{ job['dates'] }
      ul
        li= job['detail']

  h3 References
  p Available upon request

Move education to the top

extends layout

block content
  h1(style='text-align: center')= contact['name']
  h4(style='text-align: center') #{ contact['email'] } :: #[a(href="http://#{ contact['website'] }") #{ contact['website'] }]

  h3 Toolbox
  table
    tr
      td Languages:
      td= toolbox['languages'].join(', ')
    tr
      td Databases:
      td= toolbox['databases'].join(', ')
    tr
      td Systems:
      td= toolbox['systems'].join(', ')
    tr
      td Configuration:
      td= toolbox['configuration'].join(', ')

  h3 Education
  h4 #{ education['college']['name'] }
  h4 #{ education['college']['degree'] } in #{ education['college']['subject'] } :: #{ education['college']['date'] }

  h3 Experience
  each exp, key in experience
    h4 #{exp['name']} :: #{exp['location']} :: #{exp['dates']}
    each titleDetail, title in exp['titles']
      h5= title
      ul
        each line in titleDetail
          li= line[0]
          if line[1] != undefined && line[1] != null
            ul
              each l in line[1]
                li= l
    h5 Technologies: #{ exp['technologies'].join(', ') }

  h3 Internships and Other Employment
  ul
    each job, key in education['college']['jobs']
      li #{ job['name'] } :: #{ job['title'] } - #{ job['type'] } :: #{ job['location'] } :: #{ job['dates'] }
      ul
        li= job['detail']

  h3 References
  p Available upon request


doctype hmtl
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    block content

Fix hmtl typo to html

doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    block content


//- layout.jade
doctype html
html(lang=en)
  head
    meta(charset="UTF-8")
    title Document
    link(rel="stylesheet", href="/plugins/bootstrap/css/bootstrap.min.css")
    link(rel="stylesheet", href="/plugins/materialdesignicons/css/materialdesignicons.min.css")
    link(rel="stylesheet", href="/plugins/waves/waves.min.css")
    link(rel="stylesheet", href="/css/emde.css")
    block page_css
  body.emde-grey-red
    #wrapper
      include _header.jade
      include _sidebar.jade
      #content
        block content

      script(src="/plugins/jquery/jquery-2.1.4.min.js")
      script(src="/plugins/bootstrap/js/bootstrap.min.js")
      script(src="/plugins/waves/waves.js")
      script(src="/js/emde.js")
      script(src="/js/app.js")

Change default color scheme to 'indigo amber'

//- layout.jade
doctype html
html(lang=en)
  head
    meta(charset="UTF-8")
    title Document
    link(rel="stylesheet", href="/plugins/bootstrap/css/bootstrap.min.css")
    link(rel="stylesheet", href="/plugins/materialdesignicons/css/materialdesignicons.min.css")
    link(rel="stylesheet", href="/plugins/waves/waves.min.css")
    link(rel="stylesheet", href="/css/emde.css")
    block page_css
  body.emde-indigo-amber
    #wrapper
      include _header.jade
      include _sidebar.jade
      #content
        block content

      script(src="/plugins/jquery/jquery-2.1.4.min.js")
      script(src="/plugins/bootstrap/js/bootstrap.min.js")
      script(src="/plugins/waves/waves.js")
      script(src="/js/emde.js")
      script(src="/js/app.js")


.title
	h2 #{w.account.name}
table.vertical
	tr
		th Current Connections
		td #{w.namespace.clients.count}
	tr
		th Peak Connections (today)
		td #{w.namespace.clientStats.max}
	tr
		th Secret
		td
			span.code #{w.account.secret}
	tr
		th Base Url
		td.code http://wompt.com/#{w.account.name}/
	tr
		th Owners
		td
			- each owner in w.account_owners
				a(href='/users/' + owner.id)= owner.name
				br
			- if(w.user.doc.is_admin())
				form(action='/accounts/' + w.account.name, method="POST")
					label(for='add_owner') Add by ID:
					input(type='text', id='add_owner', name='add_owner_id')

Remove max client stat on account page

.title
	h2 #{w.account.name}
table.vertical
	tr
		th Current Connections
		td #{w.namespace.clients.count}
	tr
		th Secret
		td
			span.code #{w.account.secret}
	tr
		th Base Url
		td.code http://wompt.com/#{w.account.name}/
	tr
		th Owners
		td
			- each owner in w.account_owners
				a(href='/users/' + owner.id)= owner.name
				br
			- if(w.user.doc.is_admin())
				form(action='/accounts/' + w.account.name, method="POST")
					label(for='add_owner') Add by ID:
					input(type='text', id='add_owner', name='add_owner_id')


.contain-to-grid
  nav.top-bar(data-topbar)
    ul.title-area
      li.name
        h1
          a(href="/")
            img(src="/assets/img/regard-logo-and-text.png" height="54px" width="172px")
    section.top-bar-section
      ul.right
        if user
          li.has-dropdown
            a(href="#")
              img(src=user.avatar_url height="54px" width="54px")
              = user.name
            ul.dropdown
              li
                a(href="/logout") Logout
        else
          li
            a(href="/login") Log in

Change login text to something more descriptive.

.contain-to-grid
  nav.top-bar(data-topbar)
    ul.title-area
      li.name
        h1
          a(href="/")
            img(src="/assets/img/regard-logo-and-text.png" height="54px" width="172px")
    section.top-bar-section
      ul.right
        if user
          li.has-dropdown
            a(href="#")
              img(src=user.avatar_url height="54px" width="54px")
              = user.name
            ul.dropdown
              li
                a(href="/logout") Logout
        else
          li
            a(href="/login") Log in with Github


extends ../layout

block content

	h3 Get all restaurants
	each restaurant in restaurants
		div(class="row")
			div(class="large-3 columns") #{restaurant._id}
			div(class="large-1 columns") #{restaurant.name}
			div(class="large-1 columns") #{restaurant.owner_name}
			div(class="large-3 columns") #{restaurant.reservation_email}
			div(class="large-3 columns") #{restaurant.survey_url}

Use table to render tabular restaurant data

extends ../layout

block content

	h3 Show all restaurants
	table
		thead
			tr
				th Restaurant ID
				th(width="150") Name
				th(width="150") Owner Name
				th(width="300") Reservation Email
				th(width="350") Survey URL
		tbody
		each restaurant in restaurants
			tr
				td #{restaurant._id}
				td #{restaurant.name}
				td #{restaurant.owner_name}
				td #{restaurant.reservation_email}
				td #{restaurant.survey_url}


extends layout

block header
  .container.push--top.profil-page
    .row
      .col-lg-2
        img.img-circle(src='http://www.gravatar.com/avatar/' + hash, width='140', alt='')
      .col-lg-10
        h1 Addresses
        ul.list-unstyled
          - for (var i = 0; i < addresses.length; ++i) {
            - var address = addresses[i].address
            li.well.well-sm
              p
                = address
                button.btn.btn-info(class="copy-button pull-right", data-clipboard-text=address, title="Click to clipboard")
                    span.legend Copy to Clipboard
                    span.glyphicon.glyphicon-check.hidden
          - }

Use table instead of list

extends layout

block header
  .container.push--top.profil-page
    .row
      .col-lg-2
        img.img-circle(src='http://www.gravatar.com/avatar/' + hash, width='140', alt='')
      .col-lg-10
        table.table.table-hover
          tr
            th Currency
            th Address
            th
          - for (var i = 0; i < addresses.length; ++i) {
            - var address = addresses[i].address
            tr
              td Placeholder
              td= address
              td
                button.btn.btn-info(class="copy-button pull-right", data-clipboard-text=address, title="Click to clipboard")
                    span.legend Copy to Clipboard
                    span.glyphicon.glyphicon-check.hidden
          - }


if view.options.level.isType('game-dev')
  button.btn.btn-lg.btn-illustrated.btn-success.game-dev-play-btn
    span(data-i18n="common.play")
  button.btn.btn-lg.btn-illustrated.btn-success.done-button.secret
    span(data-i18n="play_level.done")

else

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

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

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

      if view.autoSubmitsToLadder
        .hidden
          .ladder-submission-view

Use ladder submission button instead of random submit button in ladder levels

if view.options.level.isType('game-dev')
  button.btn.btn-lg.btn-illustrated.btn-success.game-dev-play-btn
    span(data-i18n="common.play")
  button.btn.btn-lg.btn-illustrated.btn-success.done-button.secret
    span(data-i18n="play_level.done")

else

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

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

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

      if view.autoSubmitsToLadder
        .hidden
          .ladder-submission-view


extends layout

block content

  row
    div
      table.table.table-striped.table-responsive
        thead
          tr
            th name
            th status
            for lang in layout.languages
              th= lang
            th service
         tbody
          each blog, i in blogs
            tr
              td
                a(href='#{layout.htmlroot}/blog/' + blog.id) #{blog.name}
              td= blog.status
              - var allclosed=true
              for lang in layout.languages
                td
                  if blog["close"+lang]
                    | closed
                  else
                    - allclosed = false
                    if blog["reviewComment"+lang]
                      | review
                    else
                      a(href="#{layout.htmlroot}/article/list?markdown#{lang}=&category=!=--unpublished--&blog=#{blog.name}")
                        span.glyphicon.glyphicon-pencil

              td
                if allclosed
                  a(href="#{layout.htmlroot}/blog/#{blog.id}?setStatus=closed") Close Blog
                else
                  | -

Disable Help Blogs if not only help blogs are displayed.

extends layout

block content

  row
    div
      table.table.table-striped.table-responsive
        thead
          tr
            th name
            th status
            for lang in layout.languages
              th= lang
            th service
         tbody
          - var onlyhelp = true
          each blog in blogs
            if blog.status != help
              -onlyhelp = false

          each blog, i in blogs
            tr
              if (onlyhelp || blog.status != "help")
                td
                  a(href='#{layout.htmlroot}/blog/' + blog.id) #{blog.name}
                td= blog.status
                - var allclosed=true
                for lang in layout.languages
                  td
                    if blog["close"+lang]
                      | closed
                    else
                      - allclosed = false
                      if blog["reviewComment"+lang]
                        | review
                      else
                        a(href="#{layout.htmlroot}/article/list?markdown#{lang}=&category=!=--unpublished--&blog=#{blog.name}")
                          span.glyphicon.glyphicon-pencil

                td
                  if allclosed
                    a(href="#{layout.htmlroot}/blog/#{blog.id}?setStatus=closed") Close Blog
                  else
                    | -