.menu#feedback-menu
  .form#feedback-form
    .feedback-notice.loading Loading…
    .feedback-notice.thank-you We got it. Thanks!
    .feedback-notice.error We’re sorry, there was a problem sending feedback at this time. Please try again later.

    | Send us a message:

    textarea#feedback-form-message(placeholder='What do you think of Streetmix?')
    input#feedback-form-email(type='email', placeholder='Your email (optional)', spellcheck='false')
    button#feedback-form-send Send message

  a#feedback-via-twitter(href='#', target='_blank')
    svg.icon
      use(xlink:href='#icon-twitter')
    span(data-i18n='menu.share.twitter') Send a tweet to @streetmix
  a(href='http://streetmix-slack.herokuapp.com/', target='_blank')
    svg.icon
      use(xlink:href='#icon-slack')
    span(data-i18n='menu.contact.slack') Join Slack chat
  a(href='https://github.com/codeforamerica/streetmix/', target='_blank')
    svg.icon
      use(xlink:href='#icon-github')
    span(data-i18n='menu.contact.slack') View source code on GitHub
  a(href='http://blog.streetmix.net', target='_blank') Visit Streetmix blog

Fix Twitter contact translation and edit text

.menu#feedback-menu
  .form#feedback-form
    .feedback-notice.loading Loading…
    .feedback-notice.thank-you We got it. Thanks!
    .feedback-notice.error We’re sorry, there was a problem sending feedback at this time. Please try again later.

    | Send us a message:

    textarea#feedback-form-message(placeholder='What do you think of Streetmix?')
    input#feedback-form-email(type='email', placeholder='Your email (optional)', spellcheck='false')
    button#feedback-form-send Send message

  a#feedback-via-twitter(href='#', target='_blank')
    svg.icon
      use(xlink:href='#icon-twitter')
    span(data-i18n='menu.contact.twitter') Follow us @streetmix
  a(href='http://streetmix-slack.herokuapp.com/', target='_blank')
    svg.icon
      use(xlink:href='#icon-slack')
    span(data-i18n='menu.contact.slack') Join Slack chat
  a(href='https://github.com/codeforamerica/streetmix/', target='_blank')
    svg.icon
      use(xlink:href='#icon-github')
    span(data-i18n='menu.contact.slack') View source code on GitHub
  a(href='http://blog.streetmix.net', target='_blank') Visit Streetmix blog


section
    h1 Karma runner
    img(src="assets/logo.gif", alt="logo")
    h2 JS Unittest featuring AngularJS

section
    h2 What?

    q(cite="https://github.com/karma-runner/karma/").
      A simple tool that allows you to execute JavaScript code in multiple real browsers, powered by Node.js and Socket.io.

    //- pre.fragment
    //-     code(data-trim, contenteditable).
    //-         $.when(that(), other())
    //-             .done(okay)
    //-             .fail(notOkay);

section
  h2 What else?

  p Testing framework

  p Jasmine (by default)

  pre.fragment
      code(data-trim, contenteditable).
        describe("My project", function () {

          describe("my function", function () {

            it("should do something", function () {
              // ...
            });
          };

        });

section
  h2 AngularJS

  p Dependency injection

  pre.fragment
    code(data-trim, contenteditable).
      app.controller(function (myService) {
        myService.call("Hey!");
      });

      app.filter(function (myService) {
        return function (input) {
          return myService.flob(input);
        });
      });

Add first notes for build automation

section
    h1 Build automation / esp. js
    h2 What?

    aside.notes
      - Build automation in general
        - make
        - ninja
        - phing
        - grunt
        - gulp js
        - ant
        - maven
        - gradle
        - features
          - incremental fields
          - dependency graphs
          - plugins
          - package management
        - gulp js
          - vinyl fs
          - createReadStream
          - Buffers vs Streams
      - sources
        -


extends ../layout

block header
  meta(name="description", content="Recipes for cooking and baking.")
  title Recipes

block content
  article
    section
      h1 Recipes
      p.
        This is a collection of recipes I like to use. They have been adapted
        from a variety of sources, and references will be provided where
        applicable.
    section
      ul.bare
        li #[a(href="/recipes/bread") Bread]
        li #[a(href="/recipes/salad") Salad]

Remove dead salads recipes link.


doctype html

html
  head
    meta(charset='UTF-8')
  title Redux DevTools Options
  style.
    body {
      padding: 2px;
    }
    .input {
      margin-bottom: 10px;
    }
    .caption {
      margin-right: 5px;
      width: 105px;
      display: inline-block;
      vertical-align: top;
      padding-top: 3px;
    }
    .comment {
      color: #999;
      margin-left: 5px;
    }
    input[type="text"] {
      width: 25px;
      font-weight: bold;
      text-align: center;
    }
    input[type="checkbox"] {
      width: 24px;
      height: 20px;
    }
    textarea {
      width: 250px;
      height: 50px;
    }
    select {
      width: 250px;
    }

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

Fix the option page layout on Windows

doctype html

html
  head
    meta(charset='UTF-8')
  title Redux DevTools Options
  style.
    body {
      padding: 2px;
      min-width: 360px;
    }
    .input {
      margin-bottom: 10px;
    }
    .caption {
      margin-right: 5px;
      width: 105px;
      display: inline-block;
      vertical-align: top;
      padding-top: 3px;
    }
    .comment {
      color: #999;
      margin-left: 5px;
    }
    input[type="text"] {
      width: 25px;
      font-weight: bold;
      text-align: center;
    }
    input[type="checkbox"] {
      width: 24px;
      height: 20px;
    }
    textarea {
      width: 250px;
      height: 50px;
    }
    select {
      width: 250px;
    }

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


ul.navi.service-tree
  if back
    li.service.parent(data-service-id!=back)
        .item-name
        span
            span.icon-icon-back
            = heading
  else
    li.info-box.= t('sidebar.browse_tip')
  each item in list_items
    li(class!=item.classes data-service-id!=item.id, role="link", tabindex="0")
      .item-name
        span= item.name
      if item.selected
        a.show-button.selected(href="#", role="button", tabindex="0")= t('sidebar.hide')
      else
        a.show-button(href="#", role="button", tabindex="0")= t('sidebar.show')
      if item.has_children
        span.icon-icon-forward

Fix broken service tree back button styles


extends layout

block content
  .page-header
    h1
      a(href='/') ghlint
      |
      small A linter for GitHub projects.
  form(action='/', role='form')
    .form-group
      label(for='repo') Repository
      .input-group
        input#repo.form-control(name='repo', placeholder='owner/repository', autofocus)
        span.input-group-btn
          input.btn.btn-primary(type='submit', value='Lint')
  if repos
    for repo in repos
      h2
        span= repo.owner
        span.text-muted  /
        strong= repo.name
      ul.checklist
        for result in repo.results
          li(class=colorClass(result.result))
            span.glyphicon.icon-column(class=iconClass(result.result))
            span= result.message

Add better help text with ARIA support

extends layout

block content
  .page-header
    h1
      a(href='/') ghlint
      |
      small A linter for GitHub projects.
  form(action='/', role='form')
    span#linter-help.help-block Choose an owner or repository to lint.
    .form-group
      .input-group
        input.form-control(name='repo', placeholder='owner or owner/repository', aria-describedby='linter-help', autofocus)
        span.input-group-btn
          input.btn.btn-primary(type='submit', value='Lint')
  if repos
    for repo in repos
      h2
        span= repo.owner
        span.text-muted  /
        strong= repo.name
      ul.checklist
        for result in repo.results
          li(class=colorClass(result.result))
            span.glyphicon.icon-column(class=iconClass(result.result))
            span= result.message


- var stylesheets = ['https://fonts.googleapis.com/css?family=Lora:400,400italic|Work+Sans:300,400,500,600', './css/bootstrap.min.css', './css/toolkit-startup.min.css', './css/styles.css'];
- var scripts = ['./js/jquery.min.js', './js/toolkit.min.js'];
doctype html
html(lang="en")
  head
    title="Legacy Conf 2016 - 8 October 2016 - Cambridge, UK - The world's first conference dedicated to defeating Legacy Code"
    for stylesheet in stylesheets
      link(rel="stylesheet" href=stylesheet)
    meta(charset="utf-8")
    meta(http-equiv="X-UA-Compatible" content="IE=edge")
    meta(name="viewport" content="width=device-width,initial-scale=1.0")
  body
    div#stage.stage
      include ./partials/sidebar.jade

      div#carousel.block.block-inverse.block-fill-height
        include ./partials/carousel-block.jade
      div.block.block-inverse.text-center
    section(class="navbar navbar-default navbar-fixed-bottom")
      div.navbar-header
        span.navbar-brand="Register your interest"
      include ./partials/mailing-list-signup.jade
    for script in scripts
      script(src=script)

Hide the signup bar on phones

- var stylesheets = ['https://fonts.googleapis.com/css?family=Lora:400,400italic|Work+Sans:300,400,500,600', './css/bootstrap.min.css', './css/toolkit-startup.min.css', './css/styles.css'];
- var scripts = ['./js/jquery.min.js', './js/toolkit.min.js'];
doctype html
html(lang="en")
  head
    title="Legacy Conf 2016 - 8 October 2016 - Cambridge, UK - The world's first conference dedicated to defeating Legacy Code"
    for stylesheet in stylesheets
      link(rel="stylesheet" href=stylesheet)
    meta(charset="utf-8")
    meta(http-equiv="X-UA-Compatible" content="IE=edge")
    meta(name="viewport" content="width=device-width,initial-scale=1.0")
  body
    div#stage.stage
      include ./partials/sidebar.jade

      div#carousel.block.block-inverse.block-fill-height
        include ./partials/carousel-block.jade
      div.block.block-inverse.text-center
    section.navbar.navbar-default.navbar-fixed-bottom.hidden-xs
      div.navbar-header
        span.navbar-brand="Register your interest"
      include ./partials/mailing-list-signup.jade
    for script in scripts
      script(src=script)


//- 💫 INCLUDES > TOP NAVIGATION

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

    ul.c-nav__menu
        - var current_url = '/' + current.path[0]
        each url, item in NAVIGATION
            - var is_active = (current_url == url)
            li.c-nav__menu__item(class=is_active ? "is-active" : null)
                +a(url)(tabindex=is_active ? "-1" : null)=item

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

    progress.c-progress.js-progress(value="0" max="1")

Add user survey to navigation

//- 💫 INCLUDES > TOP NAVIGATION

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

    ul.c-nav__menu
        - var current_url = '/' + current.path[0]
        each url, item in NAVIGATION
            - var is_active = (current_url == url)
            li.c-nav__menu__item(class=is_active ? "is-active" : null)
                +a(url)(tabindex=is_active ? "-1" : null)=item

        li.c-nav__menu__item.u-hidden-xs
            +a("https://survey.spacy.io", true) User Survey 2018

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

    progress.c-progress.js-progress(value="0" max="1")


extends layout

block content
    h3 Full list of albums available
    ul
        each album, i in booklist
            li #{album.Title}

Update the iterator in the album list view

extends layout

block content
    h3 Full list of albums available
    ul
        each album, i in albumList
            li #{album.Title}


extends layout

block content
  .container
    .row
      .panel.panel-primary
        .panel-heading
          h2.panel-title=gettext('Documents')
        .list-group
          - each doc in docs
            include _doc
        - if (!user.admin)
          .panel-footer
            .row
              .col-md-12
                a.btn.btn-default(href='/documents/new')=gettext("Add Document")
    .alert.alert-info
      - if (user.admin)
        p=gettext("This page is where you approve documents submitted by researchers.")
        p=gettext("Attachments can be submitted to Google Drive by using the 'save' button beside the attachment name.")
      - else
        p=gettext("This page is where you record documents found in the progress of your research.")
        p=gettext("Use the 'upload' button to add attachments to a document after adding its details.")
        p=gettext("The administrator will have to approve them before they're made visible in the overview.")

Add Document button at top & bottom of list

extends layout

block content
  .container
    .row
      .panel.panel-primary
        .panel-heading
          h2.panel-title=gettext('Documents')
        - if (!user.admin)
          .panel-footer
            .row
              .col-md-12
                a.btn.btn-default(href='/documents/new')=gettext("Add Document")
        .list-group
          - each doc in docs
            include _doc
        - if (!user.admin)
          .panel-footer
            .row
              .col-md-12
                a.btn.btn-default(href='/documents/new')=gettext("Add Document")
    .alert.alert-info
      - if (user.admin)
        p=gettext("This page is where you approve documents submitted by researchers.")
        p=gettext("Attachments can be submitted to Google Drive by using the 'save' button beside the attachment name.")
      - else
        p=gettext("This page is where you record documents found in the progress of your research.")
        p=gettext("Use the 'upload' button to add attachments to a document after adding its details.")
        p=gettext("The administrator will have to approve them before they're made visible in the overview.")


form(action='/accounts/' + w.account.name, method='POST')
	.title
		.left
			h3 Editing:
		h2 #{w.account.name}
	.right
		button.minimal(type='submit') Save
		a.button.minimal(href='/accounts/' + w.account.name) Cancel
	table#account_info.vertical.top_aligned
		tr
			th.top_aligned
				label(for='name') Name
			td
				input#name(name='name', disabled, value=w.account.name)
		tr
			th.top_aligned
				label(for='domains') Domains
				.note one per line
			td
				textarea#domains(name='domains')= w.account.domains.join("\n")
		- if(w.user.doc.is_admin())
			tr
				th.top_aligned
					label(for='role') Role
				td
					select#role(name='role')
						- for(var role in w.roles)
							option(value=role, selected=(role == w.account.role))= role
			tr
				th.top_aligned
					| Features from
					br
					| '#{w.account.role}' role
				td
					#features.code(name='features', style='width:500px;height:200px;')!= JSON.stringify(w.account.featureSet())

Add a few more .admin css classes

form(action='/accounts/' + w.account.name, method='POST')
	.title
		.left
			h3 Editing:
		h2 #{w.account.name}
	.right
		button.minimal(type='submit') Save
		a.button.minimal(href='/accounts/' + w.account.name) Cancel
	table#account_info.vertical.top_aligned
		tr
			th.top_aligned
				label(for='name') Name
			td
				input#name(name='name', disabled, value=w.account.name)
		tr
			th.top_aligned
				label(for='domains') Domains
				.note one per line
			td
				textarea#domains(name='domains')= w.account.domains.join("\n")
		- if(w.user.doc.is_admin())
			tr.admin
				th.top_aligned
					label(for='role') Role
				td
					select#role(name='role')
						- for(var role in w.roles)
							option(value=role, selected=(role == w.account.role))= role
			tr.admin
				th.top_aligned
					| Features from
					br
					| '#{w.account.role}' role
				td
					#features.code(name='features', style='width:500px;height:200px;')!= JSON.stringify(w.account.featureSet())


doctype html
html(lang="en")
  head
    meta(charset="utf-8")
    link(rel="shortcut icon" href="/favicon.png" type="image/png" sizes="32x32")
    title 真的假的 API
  body
    h1 真的假的 API server
    p
      a(href="/graphql") graphiql & Docs
      | ・
      a(href="http://beta.hackfoldr.org/rumors") Project Hackfoldr
      | ・
      a(href="https://github.com/MrOrz/rumors-api") API server Github
      | ・
      a(href="http://rumors.hacktabl.org") Website
      | ・
      a(href="https://line.me/R/ti/p/%40umn3820l") Line bot

    h2 GraphQL Schema
    code
      pre= schemaStr

Update hackfoldr and github URLs

doctype html
html(lang="en")
  head
    meta(charset="utf-8")
    link(rel="shortcut icon" href="/favicon.png" type="image/png" sizes="32x32")
    title 真的假的 API
  body
    h1 真的假的 API server
    p
      a(href="/graphql") graphiql & Docs
      | ・
      a(href="http://beta.hackfoldr.org/cofacts") Project Hackfoldr
      | ・
      a(href="https://github.com/cofacts/rumors-api") API server Github
      | ・
      a(href="http://rumors.hacktabl.org") Website
      | ・
      a(href="https://line.me/R/ti/p/%40umn3820l") Line bot

    h2 GraphQL Schema
    code
      pre= schemaStr


title= title
meta(charset='utf-8')
| !{cachify_css('/css/style.css')}
| !{cachify_css('/components/leaflet/dist/leaflet.css')}
|	!{cachify_css('http://yui.yahooapis.com/pure/0.1.0/base-min.css')}
|	!{cachify_css('http://yui.yahooapis.com/pure/0.1.0/buttons-min.css')}
| !{cachify_css('/components/leaflet-locatecontrol/src/L.Control.Locate.css')}
| !{cachify_css('/components/font-awesome/build/assets/font-awesome/css/font-awesome.css')}

Use the correct CSS for our version of leaflet.

title= title
meta(charset='utf-8')
| !{cachify_css('/css/style.css')}
| !{cachify_css('/components/leaflet/dist/leaflet.css')}
|	!{cachify_css('http://yui.yahooapis.com/pure/0.1.0/base-min.css')}
|	!{cachify_css('http://yui.yahooapis.com/pure/0.1.0/buttons-min.css')}
| !{cachify_css('/components/leaflet-locatecontrol/src/L.Control.Locate.0.5.css')}
| !{cachify_css('/components/font-awesome/build/assets/font-awesome/css/font-awesome.css')}


extends layout

block title
  | PigeonApp - Thank you for flying with us!

block app
  section
    include partials/header

  section#confirm
    .page-cloud-brown
    .page-brown
      .padding
        .text-center
          form.pure-form
            div.step-indicator
              span.fly-check.done
              span.fly-check.done
              span.fly-check.now.done

            .spacer-40

            .step.current-step
              h1 You are now ready to fly!
              .spacer-5
              h3 Now that everything is completed, we are sending
              h3.text-left
                | 1 - An
                strong email to your address
                | with instructions on how to
                strong integrate PigeonApp in your website
                | .
              h3.text-left
                | 2 - A
                strong confirmation email to the destination address
                | just to ensure Pigeon will not be used against its purpose

              .spacer-20
              p
                small Thanks for flying with us!

                .code-form
                  input(type='text' placeholder='Insert the 7 digits code' maxlength='7')
                  button.pure-button
                    span Activate

      .spacer-20

  section#footer
    .page-cloud-white
    .page-white
      include partials/footer

Fix relative paths for partials and layout

extends ../layout

block title
  | PigeonApp - Thank you for flying with us!

block app
  section
    include ../partials/header

  section#confirm
    .page-cloud-brown
    .page-brown
      .padding
        .text-center
          form.pure-form
            div.step-indicator
              span.fly-check.done
              span.fly-check.done
              span.fly-check.now.done

            .spacer-40

            .step.current-step
              h1 You are now ready to fly!
              .spacer-5
              h3 Now that everything is completed, we are sending
              h3.text-left
                | 1 - An
                strong email to your address
                | with instructions on how to
                strong integrate PigeonApp in your website
                | .
              h3.text-left
                | 2 - A
                strong confirmation email to the destination address
                | just to ensure Pigeon will not be used against its purpose

              .spacer-20
              p
                small Thanks for flying with us!

                .code-form
                  input(type='text' placeholder='Insert the 7 digits code' maxlength='7')
                  button.pure-button
                    span Activate

      .spacer-20

  section#footer
    .page-cloud-white
    .page-white
      include ../partials/footer


.photoStripe
  //- video(autoplay='true', loop='true')
  //-   source(src='/assets/placeholder.mp4', type='video/mp4')
  .imgBack
    img(src="/assets/img/hero/08-ocs.jpg")
  .overlay
    .container
      .callout CANDIDEZ INDEPENDENT LA PREȘEDINȚIE
      .hotlinks.text-center
        a(href="/sustinatori/testimoniale-video") susținători
        a(href="/candidatura/de-ce-sa-ma-votati") de ce să mă votați?
        a(href="/voluntariat") voluntariat
      .chevron
        i.fa.fa-chevron-down.fa-2x
    .quote-bar
      .container
        div
          .quote
            span "Monica Macovei, apărătoarea iconică a libertăților românilor."
            img(src="/assets/img/logo-le-monde.png", style="height: 40%;")

Update photostripe main buttons links.

.photoStripe
  //- video(autoplay='true', loop='true')
  //-   source(src='/assets/placeholder.mp4', type='video/mp4')
  .imgBack
    img(src="/assets/img/hero/08-ocs.jpg")
  .overlay
    .container
      .callout CANDIDEZ INDEPENDENT LA PREȘEDINȚIE
      .hotlinks.text-center
        a(href="/sustinatori/testimoniale-video/") susținători
        a(href="/candidatura/de-ce-sa-ma-votati/") de ce să mă votați?
        a(href="/voluntariat/") voluntariat
      .chevron
        i.fa.fa-chevron-down.fa-2x
    .quote-bar
      .container
        div
          .quote
            span "Monica Macovei, apărătoarea iconică a libertăților românilor."
            img(src="/assets/img/logo-le-monde.png", style="height: 40%;")


template(name="tomeDetails")
	.container
		h1 #{mangasName}
		h3 {{_ "by"}} #{author}
		.thumbnail.col-xs-12.col-sm-12.col-md-6.col-lg-6
			img(src="#{cover}" alt="#{title}")
			.caption
				h3.text-center #{title}
				h4.text-center {{_ "tome"}} #{tomeNumber} - {{_ "version"}} : #{version}
				p {{_ "released"}} #{displayDate} {{_ "byEditor"}} #{editor}
				if owned
					p {{_ "inBiblio"}}
				else
					p {{_ "notInBiblio"}}
		if notOwned
			.col-xs-12.col-sm-12.col-md-6.col-lg-6
				h2 Actions
				a(href="http://www.amazon.fr/s?field-keywords=#{isbn}" target="blank") Achetez le sur Amazon

Improve display of the tomeDetail page

template(name="tomeDetails")
	.container
		.col-xs-12.col-sm-12.col-md-6.col-lg-6
			h1 #{mangasName}
			h3 {{_ "by"}} #{author}
			.thumbnail
				img(src="#{cover}" alt="#{title}")
				.caption
					h3.text-center #{title}
					h4.text-center {{_ "tome"}} #{tomeNumber} - {{_ "version"}} : #{version}
					p {{_ "released"}} #{displayDate} {{_ "byEditor"}} #{editor}
					if owned
						p {{_ "inBiblio"}}
					else
						p {{_ "notInBiblio"}}
		if notOwned
			.col-xs-12.col-sm-12.col-md-6.col-lg-6
				h2 {{_ "actions"}}
				a(href="http://www.amazon.fr/s?field-keywords=#{isbn}" target="blank") {{_ "buyItOnAmazon"}}


extends layout

block title
  | Confirm #{ instance.slug }

block content

  h1 Fantastic

  p
    | thanks for confirming your email - now choose the type of the first
    | politician to add to the site

  //- The various options are dummy options for now
  form(method='post', action='')
    p
      input(type='submit', class="btn", name='elected', value='a politician in an elected assembly')
    p
      input(type='submit', class="btn", disabled, value='a president, prime minister, dictator or supreme leader')
    p
      input(type='submit', class="btn", disabled, value='a candidate for election to an assembly')
    p
      input(type='submit', class="btn", disabled, value='an elected public servant (judge, sheriff)')
    p
      input(type='submit', class="btn", disabled, value='other - create your own custom position')

Replace select type with notice that popit is alpha, data public etc

extends layout

block title
  | Confirm #{ instance.slug }

block content

  h1 Fantastic!

  p
    | You have confirmed your email address, now create your instance.

  p Please note that:

  ul
    li PopIt is still alpha code - things might break.
    li All your data will be public.
    li Some features are missing - we'll working on adding them.

  form(method='post', action='')
    p
      input(type='submit', class="btn", value='I understand, create my site!')


.title
	h2 #{w.account.name}
table.vertical
	tr
		th Current Connections
		td #{w.namespace ? w.namespace.clients.count : 0}
	- if(w.account.hasFeature('sso'))
		tr
			th Secret
			td
				span.code #{w.account.secret}
	tr
		th Base Url
		td.code http://wompt.com/a/#{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')
	- if(w.user.doc.is_admin())
		tr
			th Role
			td= w.account.role
		tr
			th Actions
			td
				a(href='/accounts/' + w.account.name + '/edit') Edit

Add link to analytics on account page

.title
	h2 #{w.account.name}
table.vertical
	tr
		th Current Connections
		td #{w.namespace ? w.namespace.clients.count : 0} -
			a(href='/accounts/' + w.account.name + '/analytics') analytics
	- if(w.account.hasFeature('sso'))
		tr
			th Secret
			td
				span.code #{w.account.secret}
	tr
		th Base Url
		td.code http://wompt.com/a/#{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')
	- if(w.user.doc.is_admin())
		tr
			th Role
			td= w.account.role
		tr
			th Actions
			td
				a(href='/accounts/' + w.account.name + '/edit') Edit


<!-- build:css /css/main.css -->
link(rel='stylesheet', href='/.tmp/css/app.css')
<!-- endbuild -->

Remove rel='stylesheet' from jade file

<!-- build:css /css/main.css -->
link(href='/.tmp/css/app.css')
<!-- endbuild -->


doctype html
html
	//-
		head
		title= something ? "Something" : "Nothing"
		link(rel="stylesheet", href="/style/base.css")
	include header.jade
		style.
			.countdown{text-align:center;}
			#countdown{font-size:100px;font-weight:100;}
			#period-name{font-size:50px;font-weight:100;}
			#in{font-size:16px;}
	body
		div#content
			div#period-name.countdown
				span#period-label Undefined
				div#in.countdown
					span#in-label ends in
					div#countdown.countdown
						span#countdown-label NaN:NaN:NaN
		link(rel="stylesheet",href="/style/main.css")

Add datejs and jquery script stuffs

doctype html
html
	include header.jade
		style.
			.countdown{text-align:center;}
			#countdown{font-size:100px;font-weight:100;}
			#period-name{font-size:50px;font-weight:100;}
			#in{font-size:16px;}
		script(async,defer,src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js")
		script(async,defer,src="//cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js")
	body
		div#content
			div#period-name.countdown
				span#period-label Undefined
				div#in.countdown
					span#in-label ends in
					div#countdown.countdown
						span#countdown-label NaN:NaN:NaN
		link(rel="stylesheet",href="/style/main.css")


extends layout

block content
    html(lang="en")
        head
            meta charset="utf-8"
            title = D3 Test
            script(type = "text/javascript" src="node_modules/d3.js")
            script(src="build/js/d3stuff.js")
            link(rel="stylesheet" type="text/css" href="stylesheets/mystyle.css")
        body

Fix for missing meta parens

extends layout

block content
    html(lang="en")
        head
            meta(charset="utf-8")
            title = D3 Test
            script(type = "text/javascript" src="node_modules/d3.js")
            script(src="build/js/d3stuff.js")
            link(rel="stylesheet" type="text/css" href="stylesheets/mystyle.css")
        body


div.feedback-prompt
  a(href='#', data-uv-trigger='contact')
    = t('feedback.prompt')
div.bottom-logo
  img.logo(src=static_path("images/logos/service-map-logo-#{lang}-small.png") alt="Service Map logo")

Make logo link point to root page.

div.feedback-prompt
  a(href='#', data-uv-trigger='contact')
    = t('feedback.prompt')
div.bottom-logo
  a.external-link(href='/')
    img.logo(src=static_path("images/logos/service-map-logo-#{lang}-small.png") alt="Service Map logo")


#content
  .main
    != self.partial('@admin.core.blocks.breadcrumbs')

    each block in self.blocks
      != self.partial('@admin.vbconvert.blocks.' + block.name, block)

Add header to import bbcode page

#content
  .main
    != self.partial('@admin.core.blocks.breadcrumbs')

    h1 #{self.head.title}

    each block in self.blocks
      != self.partial('@admin.vbconvert.blocks.' + block.name, block)


extends ./dashboard.jade

block poll
  div#poll.columns
    div.column.col-3.centered
      h2.green My Polls
      table.table.table-striped.table-hover
        thead
          tr
            th Title of your Poll
            th Votes
            th
        tbody
          tr
            td The first Poll
            td 19
            td: a(class='btn btn-link' href='/admin/remove/1'): i(class='fa fa-close' aria-hidden='true')
          tr
            td Second Poll
            td 23
            td: a(class='btn btn-link' href='/admin/remove/2'): i(class='fa fa-close' aria-hidden='true')
          tr
            td Third Poll
            td 6
            td: a(class='btn btn-link' href='/admin/remove/3'): i(class='fa fa-close' aria-hidden='true')

Add link to show poll on users polls view

extends ./dashboard.jade

block poll
  div#poll.columns
    div.column.col-3.centered
      h2.green My Polls
      table.table.table-striped.table-hover
        thead
          tr
            th Title of your Poll
            th Votes
            th
        tbody
          tr
            td: a(class='btn btn-link' href='/admin/poll/1') The first Poll
            td 19
            td: a(class='btn btn-link' href='/admin/remove/1'): i(class='fa fa-close' aria-hidden='true')
          tr
            td: a(class='btn btn-link' href='/admin/poll/2') Second Poll
            td 23
            td: a(class='btn btn-link' href='/admin/remove/2'): i(class='fa fa-close' aria-hidden='true')
          tr
            td: a(class='btn btn-link' href='/admin/poll/2') Third Poll
            td 6
            td: a(class='btn btn-link' href='/admin/remove/3'): i(class='fa fa-close' aria-hidden='true')


#tanura-src
    link(rel='stylesheet', href=base+'stylesheets/style.css')
    link(rel='stylesheet', href='https://nginx.it-con.biz/cdn/stylesheets/literallycanvas.css')
    script(type='text/javascript', src=base+'javascripts/throttle.js')
    script(type='text/javascript', src=base+'javascripts/erizo.js')
    script(type='text/javascript', src='https://nginx.it-con.biz/cdn/javascripts/literallycanvas-core.js')
    script(type='text/javascript', src=base+'javascripts/app.js')
    script(type='text/javascript', src=base+'javascripts/script.js', defer)

Remove a useless script[defer] attribute.

#tanura-src
    link(rel='stylesheet', href=base+'stylesheets/style.css')
    link(rel='stylesheet', href='https://nginx.it-con.biz/cdn/stylesheets/literallycanvas.css')
    script(type='text/javascript', src=base+'javascripts/throttle.js')
    script(type='text/javascript', src=base+'javascripts/erizo.js')
    script(type='text/javascript', src='https://nginx.it-con.biz/cdn/javascripts/literallycanvas-core.js')
    script(type='text/javascript', src=base+'javascripts/app.js')
    script(type='text/javascript', src=base+'javascripts/script.js')


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

<%= name || 'Guest' %>

        <%= marked(_.escape(message)) %>

mixin user(name)
  li.list-group-item
    .media
      img.media-object.pull-left(src='http://placekitten.com/20/20', alt='avatar')
      .media-body= name

.modal.fade#profile-modal: .modal-dialog: .modal-content
  .modal-header
    button.close(type='button', data-dismiss='modal', aria-hidden='true') ×
    h4.modal-title Profile
  .modal-body
    .form-group
      label(for='name-field') Name
      input#name-field.form-control(type='text', placeholder='Guest')

Replace placekitten (which is broken :frowning:) with placehold.it

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

<%= name || 'Guest' %>

        <%= marked(_.escape(message)) %>

mixin user(name)
  li.list-group-item
    .media
      img.media-object.pull-left(src='http://placehold.it/20', alt='avatar')
      .media-body= name

.modal.fade#profile-modal: .modal-dialog: .modal-content
  .modal-header
    button.close(type='button', data-dismiss='modal', aria-hidden='true') ×
    h4.modal-title Profile
  .modal-body
    .form-group
      label(for='name-field') Name
      input#name-field.form-control(type='text', placeholder='Guest')


.modal-dialog
  .modal-content
    form#m-wms-singleband-style-form.modal-form(role="form")
      .modal-header
        button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
        h4.modal-title
          | Style Singleband Raster
      .modal-body
          .row
            .col-md-6
              .form-group
                label.control-label(for="m-min-value") Minimum
                input.input-sm#m-min-value.form-control(type="number", placeholder=minimum, value=minimum)
            .col-md-6
              .form-group
                label.control-label(for="m-max-value") Maximum
                input.input-sm#m-max-value.form-control(type="number", placeholder=maximum, value=maximum)
             .col-md-12
              .form-group
                label.control-label(for="m-color-ramp") Color Ramp
                select.form-control#m-color-ramp.m-select-ramp(
                  data-feature=feature
                  data-property=rampKey)
                  each ramp, name in ramps
                    option(data-content!=ramp.display data-ramp-name=name) #{name}
      .modal-footer
        button.btn.btn-small.btn-primary
              i.icon-plus-squared
              | Save Style
        a.btn.btn-small.btn-default(data-dismiss="modal") Cancel

Add the input field for nodata

.modal-dialog
  .modal-content
    form#m-wms-singleband-style-form.modal-form(role="form")
      .modal-header
        button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
        h4.modal-title
          | Style Singleband Raster
      .modal-body
          .row
            .col-md-4
              .form-group
                label.control-label(for="m-min-value") Minimum
                input.input-sm#m-min-value.form-control(type="number", placeholder=minimum, value=minimum)
            .col-md-4
              .form-group
                label.control-label(for="m-max-value") Maximum
                input.input-sm#m-max-value.form-control(type="number", placeholder=maximum, value=maximum)
            .col-md-4
              .form-group
                label.control-label(for="m-nodata-value") Nodata
                input.input-sm#m-nodata-value.form-control(type="number", placeholder=nodata, value=nodata)
            .col-md-12
              .form-group
                label.control-label(for="m-color-ramp") Color Ramp
                select.form-control#m-color-ramp.m-select-ramp(
                  data-feature=feature
                  data-property=rampKey)
                  each ramp, name in ramps
                    option(data-content!=ramp.display data-ramp-name=name) #{name}
      .modal-footer
        button.btn.btn-small.btn-primary
              i.icon-plus-squared
              | Save Style
        a.btn.btn-small.btn-default(data-dismiss="modal") Cancel


extend layout

block content
  p
    | Please, login with your FIWARE LAB
    | credentials:

  form(name="login", method="post")
    div.input
      span.label Username
      input(type="text", name="username")
    div.input
      span.label Password
      input(type="text", name="password")
    div.actions
      input(type="submit", value="Create account")

  br

  p
    | If you still do not have FIWARE LAB
    | credentials, please click here.

block sidebar
  .widget
    h1 What is Cosmos

    p
      | Cosmos is the Reference Implementation
      | of the BigData Generic Enabler.

    p
      | Vivamus hendrerit arcu sed erat molestie
      | vehicula.

MODIFY yhe new account Jade view

extend layout

block content
  p
    | Welcome to Cosmos.

  p
    | We have detected this is your first time
    | using this instance. An account will be
    | inmediately created, please choose a
    | password:

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

block sidebar
  .widget
    h1 What is Cosmos

    p
      | Cosmos is the Reference Implementation
      | of the BigData Generic Enabler.

    p
      | Vivamus hendrerit arcu sed erat molestie
      | vehicula.


extends layout

block content
    h1= title
    div.container
        form.form-horizontal(method='post', action='')
            div.form-group
                label(class=['control-label', 'col-sm-2'],for='name') Name
                div.col-sm-10
                    input.form-control(type='text', name='name', id='name', placeholder='Name')
            div.form-group
                label(class=['control-label', 'col-sm-2'],for='name') Surname
                div.col-sm-10
                    input.form-control(type='text', name='surname', id='surname', placeholder='Surname')

            div.form-group
                div(class=['col-sm-offset-2', 'col-sm-10'])
                    button(type='submit', class=['btn', 'btn-primary'], name='submit') Submit

Use mixin to reduce repetitions

extends layout

mixin textInput(fieldName, fieldLabel)
    div.form-group
        label(class=['control-label', 'col-sm-2'], for='#{fieldName}') #{fieldLabel}
        div.col-sm-10
            input.form-control(type='text', name='#{fieldName}', id='#{fieldName}', placeholder='#{fieldLabel}')

block content
    h1= title
    div.container
        form.form-horizontal(method='post', action='')
            +textInput('name', 'Name')
            +textInput('surname', 'Surname')

            div.form-group
                div(class=['col-sm-offset-2', 'col-sm-10'])
                    button(type='submit', class=['btn', 'btn-primary'], name='submit') Submit


doctype html
block vars
html
head
	title #{title}

	link(rel='stylesheet', href='#{theme_dir}/#{theme}')
	link(rel='stylesheet', href='/css/font-awesome.min.css')
	link(rel='stylesheet', href='/css/weather-icons.min.css')

	script(type='text/javascript', src='/js/jquery-1.11.2.min.js')
	script(type='text/javascript', src='/js/bootstrap.min.js')

Add meta tag for mobile devices

doctype html
block vars
html
head
	meta(name='viewport' content='width=device-width, initial-scale=1')

	title #{title}

	link(rel='stylesheet', href='#{theme_dir}/#{theme}')
	link(rel='stylesheet', href='/css/font-awesome.min.css')
	link(rel='stylesheet', href='/css/weather-icons.min.css')

	script(type='text/javascript', src='/js/jquery-1.11.2.min.js')
	script(type='text/javascript', src='/js/bootstrap.min.js')


html
    head
        link(rel='stylesheet', href='/components/bootstrap/dist/css/bootstrap.min.css')
        link(rel='stylesheet', href='/css/app.css')
    body
        - for (var i=0; i<4; i++) {
            div
                label(for='ai'+i) AI #{i}
                input(id='ai'+i, type='text', value='python ai/ai.py')
        - }
        div
            button#runGame Run Game

        div
            div.box#log(style='float:left; width:400; height:800;')
            iframe#replayer(src='' style='width:1024; height:800;')
        div(style='clear:both')

        script(src='/components/jquery/dist/jquery.min.js')
        script(src='/components/underscore/underscore.js')
        //script(src='/components/bootstrap/dist/js/bootstrap.min.js')
        script(src='/js/app.js')

Replace the default AI to javascript AI.

html
    head
        link(rel='stylesheet', href='/components/bootstrap/dist/css/bootstrap.min.css')
        link(rel='stylesheet', href='/css/app.css')
    body
        - for (var i=0; i<4; i++) {
            div
                label(for='ai'+i) AI #{i}
                input(id='ai'+i, type='text', value='node ai/ai.js')
        - }
        div
            button#runGame Run Game

        div
            div.box#log(style='float:left; width:400; height:800;')
            iframe#replayer(src='' style='width:1024; height:800;')
        div(style='clear:both')

        script(src='/components/jquery/dist/jquery.min.js')
        script(src='/components/underscore/underscore.js')
        //script(src='/components/bootstrap/dist/js/bootstrap.min.js')
        script(src='/js/app.js')


template(name="header")
	nav.navbar.navbar-default.navbar-fixed-top
		.container-fluid
			.navbar-header
				button.navbar-toggle.collapsed(type="button" data-toggle="collapse" data-target="#mkp-navbar" aria-expended="false")
					span.sr-only {{_ "toggleNav"}}
					span.icon-bar
					span.icon-bar
					span.icon-bar
				a.navbar-brand(href="{{pathFor 'home'}}") {{_ "applicationName"}}
			#mkp-navbar.collapse.navbar-collapse
				if currentUser
					ul.nav.navbar-nav
						li(class="#{homeActive}")
							a(href="{{pathFor 'ownedMangas'}}") {{_ "ownedMangas"}}
						li(class="#{missingActive}")
							a(href="{{pathFor 'missingMangas'}}") {{_ "missingMangas"}}
						if admin
							li(class="#{addCompleteMangasActive}")
								a(href="{{pathFor 'addCompleteMangas'}}") {{_ "addCompleteMangas"}}
							form.navbar-form.navbar-left#buttonAddMangas
								button.btn.btn-primary(type="button" data-toggle="modal" data-target="#myModal") {{_ "addAMangas"}}
				.nav.navbar-nav.navbar-right
					+loginButtons
	+addMangas

Add a link for addMangaForUser

template(name="header")
	nav.navbar.navbar-default.navbar-fixed-top
		.container-fluid
			.navbar-header
				button.navbar-toggle.collapsed(type="button" data-toggle="collapse" data-target="#mkp-navbar" aria-expended="false")
					span.sr-only {{_ "toggleNav"}}
					span.icon-bar
					span.icon-bar
					span.icon-bar
				a.navbar-brand(href="{{pathFor 'home'}}") {{_ "applicationName"}}
			#mkp-navbar.collapse.navbar-collapse
				if currentUser
					ul.nav.navbar-nav
						li(class="#{homeActive}")
							a(href="{{pathFor 'ownedMangas'}}") {{_ "ownedMangas"}}
						li(class="#{missingActive}")
							a(href="{{pathFor 'missingMangas'}}") {{_ "missingMangas"}}
						if admin
							li(class="#{addCompleteMangasActive}")
								a(href="{{pathFor 'addCompleteMangas'}}") {{_ "addCompleteMangas"}}
							form.navbar-form.navbar-left#buttonAddMangas
								button.btn.btn-warning(type="button" data-toggle="modal" data-target="#myModal") {{_ "addAMangas"}}
				.nav.navbar-nav.navbar-right
					+loginButtons
	+addMangas


.modal-header
  h3 Löschen von Inhalten
.modal-body
  p(ng-if="main.$state.is('main.author.units.unit.basics')") Möchtest du wirklich das Kapitel „{{units.selected.title}}“ löschen?
  p(ng-if="main.$state.is('main.author.units.unit.topics.topic.basics')") Möchtest du wirklich das Subkapitel „{{topics.selected.title}}“ löschen?
.modal-footer
  input(type="button" ng-click="$close()" value="Ja")
  input(type="button" ng-click="$dismiss()" value="Nein")

Add image removal question to the remove modal in author mode

.modal-header
  h3 Löschen von Inhalten
.modal-body
  p(ng-if="main.$state.includes('main.author.images')") Bild wirklich löschen?
  p(ng-if="main.$state.is('main.author.units.unit.basics')") Möchtest du wirklich das Kapitel „{{units.selected.title}}“ löschen?
  p(ng-if="main.$state.is('main.author.units.unit.topics.topic.basics')") Möchtest du wirklich das Subkapitel „{{topics.selected.title}}“ löschen?
.modal-footer
  input(type="button" ng-click="$close()" value="Ja")
  input(type="button" ng-click="$dismiss()" value="Nein")


//- 💫 INCLUDES > NEWSLETTER

ul.o-block-small
    li.u-text-label.u-color-subtle Stay in the loop!
    li Receive updates about new releases, tutorials and more.

form.o-grid#mc-embedded-subscribe-form(action="//#{MAILCHIMP.user}.list-manage.com/subscribe/post?u=#{MAILCHIMP.id}&id=#{MAILCHIMP.list}" method="post" name="mc-embedded-subscribe-form" target="_blank" novalidate)

    //- MailChimp spam protection
    div(style="position: absolute; left: -5000px;" aria-hidden="true")
        input(type="text" name="b_#{MAILCHIMP.id}_#{MAILCHIMP.list}" tabindex="-1" value="")

    .o-grid-col.o-grid.o-grid--nowrap.o-field.u-padding-small
        input#mce-EMAIL.o-field__input.u-text(type="email" name="EMAIL" placeholder="Your email" aria-label="Your email")
        button#mc-embedded-subscribe.o-field__button.u-text-label.u-color-theme.u-nowrap(type="submit" name="subscribe") Sign up

Fix aligment issues with newsletter signup form

//- 💫 INCLUDES > NEWSLETTER

ul.o-block-small
    li.u-text-label.u-color-subtle Stay in the loop!
    li Receive updates about new releases, tutorials and more.

form.o-grid#mc-embedded-subscribe-form(action="//#{MAILCHIMP.user}.list-manage.com/subscribe/post?u=#{MAILCHIMP.id}&id=#{MAILCHIMP.list}" method="post" name="mc-embedded-subscribe-form" target="_blank" novalidate)

    //- MailChimp spam protection
    div(style="position: absolute; left: -5000px;" aria-hidden="true")
        input(type="text" name="b_#{MAILCHIMP.id}_#{MAILCHIMP.list}" tabindex="-1" value="")

    .o-grid-col.o-grid.o-grid--nowrap.o-field.u-padding-small
        div
            input#mce-EMAIL.o-field__input.u-text(type="email" name="EMAIL" placeholder="Your email" aria-label="Your email")
        button#mc-embedded-subscribe.o-field__button.u-text-label.u-color-theme.u-nowrap(type="submit" name="subscribe") Sign up


div.bottom-logo
  a.external-link(href=href, title='Avaa palvelukartta')
    img.logo(src=staticPath("images/logos/service-map-logo-#{lang}-small.png") alt!=t('assistive.to_frontpage'))

Fix embedded link to open in new window again.

div.bottom-logo
  a.external-link(href=href, target='_blank', title='Avaa palvelukartta')
    img.logo(src=staticPath("images/logos/service-map-logo-#{lang}-small.png") alt!=t('assistive.to_frontpage'))


- extends "test_base.jade"
- load static from staticfiles
- load render_bundle from webpack_loader
- load to_json from json_data

- block title
  | Politinio suderinamumo testas - manoSeimas.lt

- block main
  script.
    window.___INITIAL_STATE__ = {
      test_state: {
        active_topic: undefined,
        next_topic_id: 0,
        previous_topic_id: undefined,
        topics: {% to_json topics %},
        modal: undefined,
        title: {% to_json title %}
      }
    }

  #compat-app

  - render_bundle 'react'
  - render_bundle 'compat_test'

Make sure we always have test_id in React app.

- extends "test_base.jade"
- load static from staticfiles
- load render_bundle from webpack_loader
- load to_json from json_data

- block title
  | Politinio suderinamumo testas - manoSeimas.lt

- block main
  script.
    window.___INITIAL_STATE__ = {
      test_state: {
        active_topic: undefined,
        next_topic_id: 0,
        previous_topic_id: undefined,
        topics: {% to_json topics %},
        modal: undefined,
        title: {% to_json title %},
        test_id: {% to_json test_id %}
      }
    }

  #compat-app

  - render_bundle 'react'
  - render_bundle 'compat_test'


extends layout

append styles
  link(href='//d591zijq8zntj.cloudfront.net/leaflet-0.5.1/leaflet.css',rel='stylesheet')
  //if lte IE 8
    link(href='//d591zijq8zntj.cloudfront.net/leaflet-0.5.1/leaflet.ie.css',rel='stylesheet')
  link(href='/MarkerCluster.css',rel='stylesheet')
  link(href='/styles/map.css',rel='stylesheet')
  link(href='/styles/icons.css',rel='stylesheet')

append scripts
  script(src='//d591zijq8zntj.cloudfront.net/leaflet-0.5.1/leaflet.js')
  script(src='/leaflet.markercluster.js')
  script(src='/leaflet.restoreview.js')

block main
  main#map
  script(src='/plugmap.js')

Use Leaflet 0.7.7 from cdnjs

extends layout

append styles
  link(href='https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/leaflet.css',rel='stylesheet')
  link(href='/MarkerCluster.css',rel='stylesheet')
  link(href='/styles/map.css',rel='stylesheet')
  link(href='/styles/icons.css',rel='stylesheet')

append scripts
  script(src='https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/leaflet.js')
  script(src='/leaflet.markercluster.js')
  script(src='/leaflet.restoreview.js')

block main
  main#map
  script(src='/plugmap.js')


//- -*- tab-width: 2 -*-
extends includes/layout

block vars
  - var ngAppDef = 'LineEditor'

append scripts
  script.
    var mapId = "#{mapid}"
    var competitionId = "#{compid}"

  script(src="/components/angularjs-slider/dist/rzslider.min.js")
  script(src="/javascripts/lvl-uuid.js")
  script(src="/javascripts/line_editor.js")

append css
  link(href="/components/angularjs-slider/dist/rzslider.min.css" rel="stylesheet")
  link(href="/stylesheets/fredrik.css" rel="stylesheet")

block location
    a.breadcrumb-item(href='/home') Home
    a.breadcrumb-item(href='/admin') Admin
    a.breadcrumb-item(ng-href='/admin/{{competitionId}}') {{competition}}
    span.breadcrumb-item.active Line editor

block content
    include line_editor.html

Add intermediate page in line map editor navigation bar

//- -*- tab-width: 2 -*-
extends includes/layout

block vars
  - var ngAppDef = 'LineEditor'

append scripts
  script.
    var mapId = "#{mapid}"
    var competitionId = "#{compid}"

  script(src="/components/angularjs-slider/dist/rzslider.min.js")
  script(src="/javascripts/lvl-uuid.js")
  script(src="/javascripts/line_editor.js")

append css
  link(href="/components/angularjs-slider/dist/rzslider.min.css" rel="stylesheet")
  link(href="/stylesheets/fredrik.css" rel="stylesheet")

block location
    a.breadcrumb-item(href='/home') Home
    a.breadcrumb-item(href='/admin') Admin
    a.breadcrumb-item(ng-href='/admin/{{competitionId}}') {{competition}}
    a.breadcrumb-item(ng-href='/admin/{{competitionId}}/line/maps') Line maps
    span.breadcrumb-item.active Line editor

block content
    include line_editor.html


- pageTitle = 'Futures Market'
- footerClass = ''
- wrapperClass = ''
block vars

doctype html
html
  head
    title
      | Åzone
      | #{pageTitle}
    link(rel="shortcut icon" href="/public/favicon.ico" type="image/x-icon")
    link( type='text/css', rel='stylesheet', href=asset('/assets/all.css') )
    meta(name="viewport" content="initial-scale = 1.0, maximum-scale = 1.0")
    block styles

  body
    .wrapper(class=wrapperClass)
      include ../../nav/templates/index
      include ./modal
      include ./market_status
      main
        include ./flash
        block body
      footer(class=footerClass)
        include ./footer
    block post_footer
    != sharify.script()
    script( src="//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js" )
    script( src=asset('/assets/layout.js') )
    block scripts

Allow a bodyClass var rather than using a completely different layout

- pageTitle = 'Futures Market'
- bodyClass = ''
- footerClass = ''
- wrapperClass = ''
block vars

doctype html
html
  head
    title
      | Åzone
      | #{pageTitle}
    link(rel="shortcut icon" href="/public/favicon.ico" type="image/x-icon")
    link( type='text/css', rel='stylesheet', href=asset('/assets/all.css') )
    meta(name="viewport" content="initial-scale = 1.0, maximum-scale = 1.0")
    block styles

  body(class=bodyClass)
    .wrapper(class=wrapperClass)
      include ../../nav/templates/index
      include ./modal
      include ./market_status
      main
        include ./flash
        block body
      footer(class=footerClass)
        include ./footer
    block post_footer
    != sharify.script()
    script( src="//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js" )
    script( src=asset('/assets/layout.js') )
    block scripts


li.divider(role="presentation")
li(role="presentation")
  a.g-curation-button(role="menuitem")
    i.icon-check
    | Folder curation

Use thumbs-up icon for curation

li.divider(role="presentation")
li(role="presentation")
  a.g-curation-button(role="menuitem")
    i.icon-thumbs-up
    | Folder curation


doctype html
html(lang='en-us')
  head
    meta(charset='UTF-8')
    meta(name='viewport' content='width=device-width' initial-scale='1')

    title Buckle

    // Bower
    link(rel='stylesheet' href='bower_components/normalize-css/normalize.css')

    // Buckle
    link(href='dist/css/buckle.css', rel='stylesheet', type='text/css')

  body
    include examples/menu.jade

    #page.page
      include examples/header.jade

      // Modules
      //- include examples/blog.jade

      // examples
      //- include examples/menu-sidebar.jade
      include examples/heading.jade
      include examples/code.jade
      include examples/blockquote.jade
      include examples/horizontal-rule.jade
      include examples/list.jade
      include examples/button.jade

    // Bower
    script(src='bower_components/jquery/dist/jquery.min.js')

    // Buckle
    script(src='dist/js/jquery.buckle.js')

Fix comments and add an orange background for testing transparency

doctype html
html(lang='en-us')
  head
    meta(charset='UTF-8')
    meta(name='viewport' content='width=device-width' initial-scale='1')

    title Buckle

    //- Bower
    link(rel='stylesheet' href='bower_components/normalize-css/normalize.css')

    //- Buckle
    link(href='dist/css/buckle.css', rel='stylesheet', type='text/css')

  //- body.transparent(style='background-color: rgba(255, 95, 0, .25)')
  body(style='background-color: rgba(255, 95, 0, .25)')
    include examples/menu.jade

    #page.page
      include examples/header.jade

      //- Modules
      //- include examples/blog.jade

      //- examples
      //- include examples/menu-sidebar.jade
      include examples/heading.jade
      include examples/code.jade
      include examples/blockquote.jade
      include examples/horizontal-rule.jade
      include examples/list.jade
      include examples/button.jade

    //- Bower
    script(src='bower_components/jquery/dist/jquery.min.js')

    //- Buckle
    script(src='dist/js/jquery.buckle.js')


!!!
html
  head
    title Nodeca rulez!
  body
    #menu
      ul
        - each item in menus.common.topnav
          li: a(href=item.link)= t(item.title)
    #contents!= content

Add bundled api.js to layout

!!!
html
  head
    title Nodeca rulez!
  body
    #menu
      ul
        - each item in menus.common.topnav
          li: a(href=item.link)= t(item.title)
    #contents!= content

  // TODO: replace with helpers?
  script(src="/assets/system/common/api.js")
  script(src="/assets/system/forum/api.js")
  script(src="/assets/system/blogs/api.js")


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

Fix auth modal for mobile

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


.row
  .columns.text-center
    h1 Account numbers
.accounts

Align the accounts page title better.

.row
  .columns.small-12.medium-8.large-6.large-offset-3
    h1 Account numbers
.accounts


if block.has('image') && block.get('class') !== 'Media'
  .block-img
    a( href= block.getSourceUrl(), target='_blank', rel='nofollow'  )
      img( src= block.resizeImage(1000, 1000, 'large') )

if block.get('class') === 'Media'
  .block-media
    != block.get('embed').html

if block.get('class') === 'Text'
  .block-text( id="attribute-content_#{block.id}" )
    != md(block.get('content'))

if block.get('class') === 'Attachment' && !block.has('image')
  a.block-attachment( href= block.getSourceUrl() target='_blank'  )
    if block.get('attachment').extension === 'mp3'
      img.iconic.iconic-lg(
        data-src="#{sd.IMAGE_PATH}iconic/type-mp3.svg"
      )

    else if block.get('attachment').extension === 'pdf'
      img.iconic.iconic-lg(
        data-src="#{sd.IMAGE_PATH}iconic/type-pdf.svg"
      )

    else
      img.iconic.iconic-lg(
        data-src="#{sd.IMAGE_PATH}iconic/file.svg"
        data-file-extension= block.get('attachment').extension
      )

Add alt tag to block images

if block.has('image') && block.get('class') !== 'Media'
  .block-img
    a( href= block.getSourceUrl(), target='_blank', rel='nofollow'  )
      img(
        src= block.resizeImage(1000, 1000, 'large')
        alt="#{block.get('description')}"
      )

if block.get('class') === 'Media'
  .block-media
    != block.get('embed').html

if block.get('class') === 'Text'
  .block-text( id="attribute-content_#{block.id}" )
    != md(block.get('content'))

if block.get('class') === 'Attachment' && !block.has('image')
  a.block-attachment( href= block.getSourceUrl() target='_blank'  )
    if block.get('attachment').extension === 'mp3'
      img.iconic.iconic-lg(
        data-src="#{sd.IMAGE_PATH}iconic/type-mp3.svg"
      )

    else if block.get('attachment').extension === 'pdf'
      img.iconic.iconic-lg(
        data-src="#{sd.IMAGE_PATH}iconic/type-pdf.svg"
      )

    else
      img.iconic.iconic-lg(
        data-src="#{sd.IMAGE_PATH}iconic/file.svg"
        data-file-extension= block.get('attachment').extension
      )


extends ../layout/default.jade

block title
    | Dashboard

block pageheader
    | Index

block content
    if widgets.length === 0
        | Looks like you have no widgets installed to display.
    else
        each widget in widgets
            - var size = widget.size || 4
            +widget(widget.name, size, widget.rendered)

Fix error when widget is not accessible.

extends ../layout/default.jade

block title
    | Dashboard

block pageheader
    | Index

block content
    if widgets.length === 0
        | Looks like you have no widgets installed to display.
    else
        each widget in widgets
            if widget
                - var size = widget.size || 4
                +widget(widget.name, size, widget.rendered)


include ../mixins/sectionLink.jade

mixin updateEntryOfSpecification(updated, orgTitle, org)
  - var updateEntries = updated.filter(function(updateEntry) { return !!updateEntry[org]; });
  if updateEntries.length > 0
    h3=orgTitle
    ul.sections
      each updateEntry in updateEntries
        li.section
          +sectionLink(updateEntry.section)
          div.whatwg WHATWG HTML Standard:
            if updateEntry.whatwg
              strong
                | #{updateEntry.whatwg.splitted}
            else
              | not modified
          div.w3c W3C HTML 5.1:
            if updateEntry.w3c
              strong
                | #{updateEntry.w3c.splitted}
            else
              | not modified

mixin updateEntry(update)
  if update.updated && update.updated.length > 0
    +updateEntryOfSpecification(update.updated, 'WHATWG HTML Standard', 'whatwg')
    +updateEntryOfSpecification(update.updated, 'W3C HTML 5.1', 'w3c')
  else
    p The HTML specifications are not updated.

Add summary to update information

include ../mixins/sectionLink.jade

mixin updateEntryOfSpecification(updated, orgTitle, org)
  - var updateEntries = (updated || []).filter(function(updateEntry) { return !!updateEntry[org]; });
  h3=orgTitle
  if updateEntries.length > 0
    p= orgTitle
     |  is updated
    ul.sections
      each updateEntry in updateEntries
        li.section
          +sectionLink(updateEntry.section)
          div.whatwg WHATWG HTML Standard:
            if updateEntry.whatwg
              strong
                | #{updateEntry.whatwg.splitted}
            else
              | not modified
          div.w3c W3C HTML 5.1:
            if updateEntry.w3c
              strong
                | #{updateEntry.w3c.splitted}
            else
              | not modified
  else
    p= orgTitle
     |  is not updated

mixin updateEntry(update)
  +updateEntryOfSpecification(update.updated, 'WHATWG HTML Standard', 'whatwg')
  +updateEntryOfSpecification(update.updated, 'W3C HTML 5.1', 'w3c')


mixin postInfo(item)
    .post-meta
        .post-time
            != full_date(item.date, 'll')

//- Index Page
mixin posts()
    ul.home.post-list
        - page.posts.each(function (item) {
            li.post-list-item
                article.post-block
                    h2.post-title
                        a.post-title-link(href= url_for(item.path))
                            != item.title
                    +postInfo( item )
                    .post-content
                        != item.excerpt
                    a.read-more(href=item.path)!= __('more')
        - })

//- Post Page
mixin post(item)
    .post
        article.post-block
            h1.post-title
                != item.title
            +postInfo(item)
            .post-content
                != item.content

Repair bug: Click more button redirect to 404 page when page number > 1

mixin postInfo(item)
    .post-meta
        .post-time
            != full_date(item.date, 'll')

//- Index Page
mixin posts()
    ul.home.post-list
        - page.posts.each(function (item) {
            li.post-list-item
                article.post-block
                    h2.post-title
                        a.post-title-link(href= url_for(item.path))
                            != item.title
                    +postInfo( item )
                    .post-content
                        != item.excerpt
                    a.read-more(href= url_for(item.path))!= __('more')
        - })

//- Post Page
mixin post(item)
    .post
        article.post-block
            h1.post-title
                != item.title
            +postInfo(item)
            .post-content
                != item.content


extends layouts/base

block content
	h1 Hi #{user.name}!

	p Thanks for opting to become a member of the JavaScript Society of New Zealand. Your support goes a long way to helping out the local JavaScript society and is hugely appreciated by us all on the committee.

	p For your reference here are your membership details

	p Membership type: #{user.membershipType}
	p Annual cost: #{user.membershipType == "regular" ? "$25" : "$10"}

	p

	p If you decide that you wish to cancel your membership you can do so by #[a(href='http://javascript.org.nz/account/cancel?userId=#{user.)id}') visiting our cancellation page].

	p

	p Regards,
	p The JavaScript Society of New Zealand committee

Fix type in UserID for sending sub. cancellation emails

extends layouts/base

block content
	h1 Hi #{user.name}!

	p Thanks for opting to become a member of the JavaScript Society of New Zealand. Your support goes a long way to helping out the local JavaScript society and is hugely appreciated by us all on the committee.

	p For your reference here are your membership details

	p Membership type: #{user.membershipType}
	p Annual cost: #{user.membershipType == "regular" ? "$25" : "$10"}

	p

	p If you decide that you wish to cancel your membership you can do so by #[a(href='http://javascript.org.nz/account/cancel?userId=#{user.id}') visiting our cancellation page].

	p

	p Regards,
	p The JavaScript Society of New Zealand committee


!!! xml
!!! cobertura
coverage(branch-rate='0', line-rate='#{(cov.coverage / 100) || 0}', timestamp='#{+new Date()}', version='3.5.1')
	sources
		- var src = "<source>" + cov.src + "</source>"
		| !{src}
	packages
		package(branch-rate='0', complexity='0.0', line-rate='#{(cov.coverage / 100) || 0}', name='.')
			classes
				for file in cov.files
					class(branch-rate='0', complexity='0.0', filename='#{file.filename}', line-rate='#{(file.coverage / 100) || 0}', name='#{file.filename.split(".")[0]}')
						methods
						lines
							for line, number in file.source
								if line.coverage >= 0
									line(hits='#{line.coverage}', number='#{number}')
								else
									line(hits='', number='#{number}')

Support modules with dotted names

!!! xml
!!! cobertura
coverage(branch-rate='0', line-rate='#{(cov.coverage / 100) || 0}', timestamp='#{+new Date()}', version='3.5.1')
	sources
		- var src = "<source>" + cov.src + "</source>"
		| !{src}
	packages
		package(branch-rate='0', complexity='0.0', line-rate='#{(cov.coverage / 100) || 0}', name='.')
			classes
				for file in cov.files
					class(branch-rate='0', complexity='0.0', filename='#{file.filename}', line-rate='#{(file.coverage / 100) || 0}', name='#{file.filename.split(".").slice(0, -1).join(".")}')
						methods
						lines
							for line, number in file.source
								if line.coverage >= 0
									line(hits='#{line.coverage}', number='#{number}')
								else
									line(hits='', number='#{number}')


extends ../layout/default.jade

block title
    | Rights Management

block pageheader
    | Rights

block content
    .panel.panel-primary
        .panel-heading
            | Users
        table.table
            thead
                th #
                th Name
                th Permissions
                th Groups
            tbody
                each user in users
                    tr
                        td= user.id
                        td
                            a(href='/rights/user/#{user.id}')= user.username
                        if user.permissions.length > 0
                            td= user.permissions.join(' - ')
                        else
                            td None

                        if user.groups.length > 0
                            td= user.groups.join(', ')
                        else
                            td None

    .panel.panel-primary
        .panel-heading
            | Groups
        table.table
            thead
                th #
                th Name
                th Permissions
                th # Users
            tbody
                each group in groups
                    tr
                        td= group.id
                        td
                            a(href='/rights/group/#{group.id}')= group.name
                        if group.permissions.length > 0
                            td= group.permissions.join(', ')
                        else
                            td None

                        td= group.users

Fix groups not getting displayed correctly.

extends ../layout/default.jade

block title
    | Rights Management

block pageheader
    | Rights

block content
    .panel.panel-primary
        .panel-heading
            | Users
        table.table
            thead
                th #
                th Name
                th Permissions
                th Groups
            tbody
                each user in users
                    tr
                        td= user.id
                        td
                            a(href='/rights/user/#{user.id}')= user.username
                        if user.permissions.length > 0
                            td= user.permissions.join(' - ')
                        else
                            td None

                        if user.groups.length > 0
                            td= _.map(user.groups, function(group) { return group.name; }).join(', ')
                        else
                            td None

    .panel.panel-primary
        .panel-heading
            | Groups
        table.table
            thead
                th #
                th Name
                th Permissions
                th # Users
            tbody
                each group in groups
                    tr
                        td= group.id
                        td
                            a(href='/rights/group/#{group.id}')= group.name
                        if group.permissions.length > 0
                            td= group.permissions.join(', ')
                        else
                            td None

                        td= group.users


---
layout: default
title: Contact
---
script
  $(function () { $("#contact-nav-button").addClass("active"); });
h1 {{ page.title }}

:markdown
  The best way to contact is by participating in our online community,
  [http://community.modphon.com](http://community.modphon.com/).
  We are active participants in our own community, so you are likely to
  receive a quick reply.

  If for some reason you want to contact us privately, you can do so
  by sending email to <info@modphon.com>.

Remove link to not-yet-ready community forum

---
layout: default
title: Contact
---
script
  $(function () { $("#contact-nav-button").addClass("active"); });
h1 {{ page.title }}

:markdown
  The best way to contact us will be by participating in our online community,
  which is very nearly but not yet active.

  For the time being you can contact us
  by sending email to <info@modphon.com>.

//:markdown
  The best way to contact us is by participating in our online community,
  [http://community.modphon.com](http://community.modphon.com/).
  We are active participants in our own community, so you are likely to
  receive a quick reply.

  If for some reason you want to contact us privately, you can do so
  by sending email to <info@modphon.com>.


doctype html
html(lang="ja")
  head
    meta(content="charset=utf-8")
    title Music Player in browser
    script(src="scripts/main/music-player.js")
    script(src="bower_components/vue/dist/vue.js")
    script(src="scripts/main/main.js")
  body#app
    h1 Music Player in browser
    input(type="file" value="" multiple v-on="change: loadMusic")
    output

Add audio element(data bindings to v-attr and v-repeat)

doctype html
html(lang="ja")
  head
    meta(content="charset=utf-8")
    title Music Player in browser
    script(src="scripts/main/music-player.js")
    script(src="bower_components/vue/dist/vue.js")
    script(src="scripts/main/main.js")
  body#app
    h1 Music Player in browser
    input(type="file" value="" multiple v-on="change: loadMusic")
    audio(src="" v-attr="src: source" v-repeat="source : sources")


!!! 5
//if lt IE 7 ]><html class="ie ie6" lang="en">
//if IE 7 ]><html class="ie ie7" lang="en">
//if IE 8 ]><html class="ie ie8" lang="en">
// [if (gte IE 9)|!(IE)]><!--><html lang="en"> <!--<![endif]
head
  // HTML5 shim for lt IE9
  //if lt IE 9]><script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>

  meta(charset='utf-8')
  title App
  meta(name='description', content='')
  meta(name='author', content='')

  // Mobile Specific
  meta(name="viewport", content="width=device-width, initial-scale=1.0")

  // CSS
  != css('app')

body
  block content

  != js('http://code.jquery.com/jquery.min.js')
  != js('app')

| </html>

Fix IE conditional comments, class in html

!!! 5
//[if lt IE 7 ]><html class="ie ie6" lang="en"><![endif]
//[if IE 7 ]><html class="ie ie7" lang="en"><![endif]
//[if IE 8 ]><html class="ie ie8" lang="en"><![endif]
//[if (gte IE 9)|!(IE)]><!--><html lang="en"><!--<![endif]
head
  //[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script> <![endif]

  meta(charset='utf-8')
  title App
  meta(name='description', content='')
  meta(name='author', content='')

  // Mobile Specific
  meta(name="viewport", content="width=device-width, initial-scale=1.0")

  // CSS
  != css('app')

body
  block content

  != js('http://code.jquery.com/jquery.min.js')
  != js('app')

| </html>


mixin headerSignedOut
  header.header
    .header__middle-container
      .header__logo: a.logo__link(href="./index") Mooncake
      .header__actions
        a.action-link.clj--STRIP.clj--sign-in__link.func--sign-in__link(href="./sign-in")
          span.action-link__icon.action-link__icon--sign-in
          span.action-link__title.visuallyhidden(data-l8n="content:default/sign-in-link") !Sign in

mixin headerSignedIn
  header.header
    .header__middle-container
      .header__logo.clj--header__logo: a.logo__link(href="./index") Mooncake
      .header__actions
        span.header__username.clj--username cjcheshire

        a.action-link.clj--STRIP(href="./customise-feed")
          span.action-link__icon.action-link__icon--cog
          span.action-link__title.visuallyhidden(data-l8n="content:default/nav-customise-feed") !Customise feed

        a.action-link.clj--STRIP.clj--sign-out__link.func--sign-out__link(href="./sign-out")
          span.action-link__icon.action-link__icon--sign-out
          span.action-link__title.visuallyhidden(data-l8n="content:default/sign-out-link") !Sign out

Remove my name from the header -- oops

mixin headerSignedOut
  header.header
    .header__middle-container
      .header__logo: a.logo__link(href="./index") Mooncake
      .header__actions
        a.action-link.clj--STRIP.clj--sign-in__link.func--sign-in__link(href="./sign-in")
          span.action-link__icon.action-link__icon--sign-in
          span.action-link__title.visuallyhidden(data-l8n="content:default/sign-in-link") !Sign in

mixin headerSignedIn
  header.header
    .header__middle-container
      .header__logo.clj--header__logo: a.logo__link(href="./index") Mooncake
      .header__actions
        span.header__username.clj--username

        a.action-link.clj--STRIP(href="./customise-feed")
          span.action-link__icon.action-link__icon--cog
          span.action-link__title.visuallyhidden(data-l8n="content:default/nav-customise-feed") !Customise feed

        a.action-link.clj--STRIP.clj--sign-out__link.func--sign-out__link(href="./sign-out")
          span.action-link__icon.action-link__icon--sign-out
          span.action-link__title.visuallyhidden(data-l8n="content:default/sign-out-link") !Sign out


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

Fix the font. How did that get changed? :O

doctype html
html(lang='en')
  head
    meta(charset='utf-8')
    meta(name='viewport', content='width=device-width, minimum-scale=1.0')
    title ShieldBattery
    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='site.css', rel='stylesheet', type='text/css')
    link(rel='icon', type='image/x-icon', href='/images/favicon.ico')
  body
    block content


extends ./_layouts/default.jade

block content
  div.jumbotron
    h1 A collection of tweet-sized* d3 creations
      p
        small  *116 characters + helpers
    p.lead.
      To add yours, just tweet the code followed by #[code='https://t.d3fc.io'].
      To help get the size down, both
      #[a(href='https://github.com/chrisprice/t-d3fc/blob/master/server/public/src/base.js') JavaScript]
      and
      #[a(href='https://github.com/chrisprice/t-d3fc/blob/master/server/public/src/base.css') CSS]
      helpers are provided and all code is transpiled by Babel (es2015/stage-2).
      Any suggestions welcome on
      #[a(href='https://github.com/chrisprice/t-d3fc/issues') GitHub].
  div.alert.alert-warning
    p.
      Due to the hidden complexities of
      #[a(href='http://blog.codepen.io/2014/02/17/can-iframes-annoying-free/') iframe sandboxing]
      it's possible for ne'er-do-well-ers to create dialogs. I can't blame them, but I will be banning
      them as I spot them.
    p
      a(href='https://twitter.com/100pxls') Chris
  div.marketing
    include ./_includes/statuses.jade

Add link to introduction blog post

extends ./_layouts/default.jade

block content
  div.jumbotron
    h1 A collection of tweet-sized* d3 creations
      p
        small  *116 characters + helpers
    p.lead.
      To add yours, just tweet the code followed by #[code='https://t.d3fc.io'].
      To help get the size down, both
      #[a(href='https://github.com/chrisprice/t-d3fc/blob/master/server/public/src/base.js') JavaScript]
      and
      #[a(href='https://github.com/chrisprice/t-d3fc/blob/master/server/public/src/base.css') CSS]
      helpers are provided and all code is transpiled by Babel (es2015/stage-2).
      Any suggestions welcome on
      #[a(href='https://github.com/chrisprice/t-d3fc/issues') GitHub].
      For a brief guide to creating your own,
      #[a(href='http://blog.scottlogic.com/2016/03/08/deconstructing-a-tweet-sized-d3-creation.html')see this blog post].
  div.alert.alert-warning
    p.
      Due to the hidden complexities of
      #[a(href='http://blog.codepen.io/2014/02/17/can-iframes-annoying-free/') iframe sandboxing]
      it's possible for ne'er-do-well-ers to create dialogs. I can't blame them, but I will be banning
      them as I spot them.
    p
      a(href='https://twitter.com/100pxls') Chris
  div.marketing
    include ./_includes/statuses.jade


section.pubkey= config.pubkey
section.copyright !{link_to('http://opensource.org/licenses/MIT', 'MIT License')} · Published with !{link_to('https://hexo.io/', 'Hexo')} · !{link_to(config.feed.path, 'RSS Feed')}

Update Atom feed URL to reflect config changes

section.pubkey= config.pubkey
section.copyright !{link_to('http://opensource.org/licenses/MIT', 'MIT License')} · Published with !{link_to('https://hexo.io/', 'Hexo')} · !{link_to(config.feed.url, 'RSS Feed')}


extends layout

block main
  form(method='post')
    input(type='hidden',name='_csrf',value=csrfToken)
    p Enter your desired username:
    input(type='text',name='username')
    p Enter your desired password:
    input#password(type='password',name='password')
    input#password2(type='password')
    p#passwarn
    label
      input(type="checkbox",name="authenticate",checked)
      | Log into my new account when I submit this form
    input(type='submit')
  script.
    var pwInput = document.getElementById('password')
    var pw2Input = document.getElementById('password2')
    var pWarn = document.getElementById('passwarn')
    function checkAndWarn(){
      if (pwInput.value == pw2Input.value) {
        pWarn.textContent = 'Passwords match';
        pWarn.style.backgroundColor = '#afa';
      } else {
        pWarn.textContent = 'Passwords do not match';
        pWarn.style.backgroundColor = '#faa';
      }
    }
    pwInput.addEventListener('keydown', checkAndWarn);
    pw2Input.addEventListener('keydown', checkAndWarn);

Use keyup for password matching

extends layout

block main
  form(method='post')
    input(type='hidden',name='_csrf',value=csrfToken)
    p Enter your desired username:
    input(type='text',name='username')
    p Enter your desired password:
    input#password(type='password',name='password')
    input#password2(type='password')
    p#passwarn
    label
      input(type="checkbox",name="authenticate",checked)
      | Log into my new account when I submit this form
    input(type='submit')
  script.
    var pwInput = document.getElementById('password')
    var pw2Input = document.getElementById('password2')
    var pWarn = document.getElementById('passwarn')
    function checkAndWarn(){
      if (pwInput.value == pw2Input.value) {
        pWarn.textContent = 'Passwords match';
        pWarn.style.backgroundColor = '#afa';
      } else {
        pWarn.textContent = 'Passwords do not match';
        pWarn.style.backgroundColor = '#faa';
      }
    }
    pwInput.addEventListener('keyup', checkAndWarn);
    pw2Input.addEventListener('keyup', checkAndWarn);


doctype html
html
  head
    meta(charset='utf-8')
    title= repoName
    style.
      html {
        margin: 0 32px 0 0;
      }
      body {
        margin: 0;
        position: relative;
      }
  body
    for cat in stargazes
      - var created = new Date(cat.created_at);
      - var top = ((Date.now() - created) / 60000) + 'px';
      - var left = (Math.random() * 100) + '%';
      img(src="/github-media/octocats/blacktocat-32.png",
        alt=cat.actor.login,
        style="position:absolute;top:" +top+';left:'+left+';')

Use title for username rather than alt

doctype html
html
  head
    meta(charset='utf-8')
    title= repoName
    style.
      html {
        margin: 0 32px 0 0;
      }
      body {
        margin: 0;
        position: relative;
      }
  body
    for cat in stargazes
      - var created = new Date(cat.created_at);
      - var top = ((Date.now() - created) / 60000) + 'px';
      - var left = (Math.random() * 100) + '%';
      img(src="/github-media/octocats/blacktocat-32.png",
        alt='(cat)', title=cat.actor.login,
        style="position:absolute;top:" +top+';left:'+left+';')


doctype html
html
  head
    title
      block title
        | Welcome

    meta(charset='utf-8')
    meta(name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0')

    link(rel='stylesheet' href='//cdnjs.cloudflare.com/ajax/libs/pure/0.6.0/pure-min.css')
    link(rel='stylesheet' href='//cdnjs.cloudflare.com/ajax/libs/pure/0.6.0/grids-responsive-min.css')
    link(rel='stylesheet' href='//fonts.googleapis.com/css?family=Open+Sans:400,300,600,700')
    link(rel='stylesheet' href='static/css/style.css')
    link(rel='stylesheet' href='static/css/clean.css')
    link(rel='shortcut icon' href='static/img/favicon.png' type='image/png')

    block head

  body

    block app

    script(src='static/js/main.js')
    block script

Add basic SEO and OGTags

doctype html
html
  head
    title
      block title
        | Welcome

    meta(charset='utf-8')
    meta(name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0')

    // Basic SEO improvements
    meta(name='keywords', content='')
    meta(name='author', content='')
    meta(name='description', content='')

    block ogtag
      // Open Graph protocol - Discover more at http://ogp.me/
      meta(property='og:title', content='')
      meta(property='og:url', content='')
      meta(property='og:description', content='')
      meta(property='og:image', content='')

    link(rel='stylesheet' href='//cdnjs.cloudflare.com/ajax/libs/pure/0.6.0/pure-min.css')
    link(rel='stylesheet' href='//cdnjs.cloudflare.com/ajax/libs/pure/0.6.0/grids-responsive-min.css')
    link(rel='stylesheet' href='//fonts.googleapis.com/css?family=Open+Sans:400,300,600,700')
    link(rel='stylesheet' href='static/css/style.css')
    link(rel='stylesheet' href='static/css/clean.css')
    link(rel='shortcut icon' href='static/img/favicon.png' type='image/png')

    block head

  body

    block app

    script(src='static/js/main.js')
    block script


doctype xml
rss(version='2.0', xmlns:atom='http://www.w3.org/2005/Atom')
  channel
    title Imgur
    link https://imgur.com
    language en-US
    description The Internet's visual storytelling community. Explore, share, and discuss the best visual stories the Internet has to offer.
    if images.length
      lastBuildDate= formatDate(images[0].datetime)

    each image in images
      if !image.is_album
        item
          title=image.title
          link #{image.link}
          pubDate= formatDate(image.datetime)
          description
            | <![CDATA[
            if image.animated
              video(autoplay=true width=image.width height=image.height loop=image.looping)
                source(src=image.webm type='video/webm')
                source(src=image.mp4 type='mp4')
                img(src=image.link alt='HTML5 video unsupported')/
            else
              img(src=image.link alt='')/
            p image.title
            | ]]>

Fix mp4 video content type

doctype xml
rss(version='2.0', xmlns:atom='http://www.w3.org/2005/Atom')
  channel
    title Imgur
    link https://imgur.com
    language en-US
    description The Internet's visual storytelling community. Explore, share, and discuss the best visual stories the Internet has to offer.
    if images.length
      lastBuildDate= formatDate(images[0].datetime)

    each image in images
      if !image.is_album
        item
          title=image.title
          link #{image.link}
          pubDate= formatDate(image.datetime)
          description
            | <![CDATA[
            if image.animated
              video(autoplay=true width=image.width height=image.height loop=image.looping)
                source(src=image.webm type='video/webm')
                source(src=image.mp4 type='video/mp4')
                img(src=image.link alt='HTML5 video unsupported')/
            else
              img(src=image.link alt='')/
            p image.title
            | ]]>


div.well.well-small.sidebar-nav
  ul.nav.nav-list
    if locals.proj && locals.users
      if locals.rev
        li.nav-header Repository
        li: a(href="/#{kind}/#{proj}/#{users.join('-')}") #{kind}/#{proj} #{users.join('-')}
        li.divider
      li.nav-header Project
      li: a(href="/#{kind}/#{proj}") #{kind}/#{proj}
      li.divider
      li.nav-header User#{users.length > 1 ? 's' : ''}
      each user in users
        li: a(href='/u/' + user)= user
      li.divider
    li.nav-header Recent Builds
      li.muted: small.
        #{moment.unix(stats.interval.oldestDate).calendar()}
        + #{moment.duration(stats.interval.latestDate - stats.interval.oldestDate, 'seconds').humanize()}
      li.muted
        span.badge(class="badge-#{stats.open > stats.completed ? 'warning' : 'info'}").
          #{stats.open}
        |  pending
      li.muted
        span.badge #{stats.completed}
        |  complete
      li.muted
        span.badge(class="badge-#{stats.failed > 0 ? 'important' : 'default' }") #{stats.failed}
        |  failed

Handle missing recent build statistics

div.well.well-small.sidebar-nav
  ul.nav.nav-list
    if locals.proj && locals.users
      if locals.rev
        li.nav-header Repository
        li: a(href="/#{kind}/#{proj}/#{users.join('-')}") #{kind}/#{proj} #{users.join('-')}
        li.divider
      li.nav-header Project
      li: a(href="/#{kind}/#{proj}") #{kind}/#{proj}
      li.divider
      li.nav-header User#{users.length > 1 ? 's' : ''}
      each user in users
        li: a(href='/u/' + user)= user
      li.divider
    li.nav-header Recent Builds
      if ! stats.interval
        li.muted waiting for statistics...
      else
        li.muted: small.
          #{moment.unix(stats.interval.oldestDate).calendar()}
          + #{moment.duration(stats.interval.latestDate - stats.interval.oldestDate, 'seconds').humanize()}
        li.muted
          span.badge(class="badge-#{stats.open > stats.completed ? 'warning' : 'info'}").
            #{stats.open}
          |  pending
        li.muted
          span.badge #{stats.completed}
          |  complete
        li.muted
          span.badge(class="badge-#{stats.failed > 0 ? 'important' : 'default' }") #{stats.failed}
          |  failed


doctype html
html( data-logged-in=(user && user) )
  head
    include ../modules/title
    include ../modules/meta
    include ../modules/styles

    block head
  body
    .Container.js-container
      .Container__content
        block container

    block body

    include ../modules/analytics
    include ../modules/scripts

Fix data-attr value in layout

doctype html
html( data-logged-in=(user && true) )
  head
    include ../modules/title
    include ../modules/meta
    include ../modules/styles

    block head
  body
    .Container.js-container
      .Container__content
        block container

    block body

    include ../modules/analytics
    include ../modules/scripts


doctype xml
rss(version='2.0', xmlns:atom='http://www.w3.org/2005/Atom')
  channel
    title Imgur
    link https://imgur.com
    language en-US
    description The Internet's visual storytelling community. Explore, share, and discuss the best visual stories the Internet has to offer.
    if images.length
      lastBuildDate= formatDate(images[0].datetime)

    each image in images
      if !image.is_album
        item
          title=image.title
          link #{image.link}
          pubDate= formatDate(image.datetime)
          description
            | <![CDATA[
            if image.animated
              video(autoplay=true width=image.width height=image.height loop=image.looping)
                source(src=image.webm type='video/webm')
                source(src=image.mp4 type='video/mp4')
                img(src=image.link alt='HTML5 video unsupported')/
            else
              img(src=image.link alt='')/
            p image.title
            | ]]>

Fix image title under image

doctype xml
rss(version='2.0', xmlns:atom='http://www.w3.org/2005/Atom')
  channel
    title Imgur
    link https://imgur.com
    language en-US
    description The Internet's visual storytelling community. Explore, share, and discuss the best visual stories the Internet has to offer.
    if images.length
      lastBuildDate= formatDate(images[0].datetime)

    each image in images
      if !image.is_album
        item
          title=image.title
          link #{image.link}
          pubDate= formatDate(image.datetime)
          description
            | <![CDATA[
            if image.animated
              video(autoplay=true width=image.width height=image.height loop=image.looping)
                source(src=image.webm type='video/webm')
                source(src=image.mp4 type='video/mp4')
                img(src=image.link alt='HTML5 video unsupported')/
            else
              img(src=image.link alt='')/
            p= image.title
            | ]]>


div.wrapper(ng-controller="ProjectProfileController as ctrl",
            ng-init="section='admin'; sectionName='Export'")
    sidebar.menu-secondary.sidebar(tg-admin-navigation="project-profile")
        include ../includes/modules/admin-menu

    sidebar.menu-tertiary.sidebar(tg-admin-navigation="export")
        include ../includes/modules/admin-submenu-project-profile

    section.main.admin-common(tg-project-export)
        header
            include ../includes/components/mainTitle
            p.admin-subtitle Export your project to save a backup or to create a new one based on this.

        div.admin-project-export-buttons
            a.button-green.button-export(href="", title="Export your project")
                span Export

        div.admin-project-export-result.hidden
            div.spin.hidden
                img(src="/svg/spinner-circle.svg", alt="loading...")
            h3.result-title
            p.result-message

Add link to support page of import/export

div.wrapper(ng-controller="ProjectProfileController as ctrl",
            ng-init="section='admin'; sectionName='Export'")
    sidebar.menu-secondary.sidebar(tg-admin-navigation="project-profile")
        include ../includes/modules/admin-menu

    sidebar.menu-tertiary.sidebar(tg-admin-navigation="export")
        include ../includes/modules/admin-submenu-project-profile

    section.main.admin-common(tg-project-export)
        header
            include ../includes/components/mainTitle
            p.admin-subtitle Export your project to save a backup or to create a new one based on this.

        div.admin-project-export-buttons
            a.button-green.button-export(href="", title="Export your project")
                span Export

        div.admin-project-export-result.hidden
            div.spin.hidden
                img(src="/svg/spinner-circle.svg", alt="loading...")
            h3.result-title
            p.result-message

        a.help-button(href="https://taiga.io/support/import-export-projects/", target="_blank")
            span.icon.icon-help
            span Do you need help? Check out our support page!


a.force#about-the-service(href="#")
  span.icon.icon-icon-info
    = t('disclaimer.info')
|
a.force(id=copyrightLink ? "map-copyright" : "map-copyright-nolink", target="_blank", href!=copyrightLink ? copyrightLink : "#")
  span.icon.icon-icon-copyright
    = copyright

Fix about service section accessibility with screen readers

a.force#about-the-service(href="#")
  h2.sr-only
    =t ('disclaimer.info')
  span.icon.icon-icon-info(aria-hidden="true")
    = t('disclaimer.info')
|
a.force(id=copyrightLink ? "map-copyright" : "map-copyright-nolink", target="_blank", href!=copyrightLink ? copyrightLink : "#")
  span.icon.icon-icon-copyright
    = copyright


.isic-study-users-container
  h4 Users
    if studyAdmin
      a.isic-study-add-user-button.btn.btn-default.btn-sm.isic-tooltip(
        title="Add user")
        i.icon-plus
  .isic-listing-content.isic-study-users-content
    if study.get('users').length
      ul
        each user in study.get('users')
          li= formatUser(user)
    else
      | (no users)

.isic-study-featureset-container
  h4 Featureset
  .isic-listing-content.isic-study-featureset-content
    | #{study.get('featureset').name}, version #{study.get('featureset').version}

.isic-study-images-container
  h4 Images
    |  (#{study.get('images').length})
  .isic-listing-content.isic-study-images-content
    if study.get('images').length
      table
        tr
          th.isic-study-images-content-name Image Name
          th.isic-study-images-content-imageid Image Id
        each image in study.get('images')
          tr
            td.isic-study-images-content-name= image.name
            td.isic-study-images-content-imageid= image._id
    else
      | (no images)

Add study ID display to study detail page

.isic-study-users-container
  h4 Unique ID
  .isic-listing-content
    code= study.id
  h4 Users
    if studyAdmin
      a.isic-study-add-user-button.btn.btn-default.btn-sm.isic-tooltip(
        title="Add user")
        i.icon-plus
  .isic-listing-content.isic-study-users-content
    if study.get('users').length
      ul
        each user in study.get('users')
          li= formatUser(user)
    else
      | (no users)

.isic-study-featureset-container
  h4 Featureset
  .isic-listing-content.isic-study-featureset-content
    | #{study.get('featureset').name}, version #{study.get('featureset').version}

.isic-study-images-container
  h4 Images
    |  (#{study.get('images').length})
  .isic-listing-content.isic-study-images-content
    if study.get('images').length
      table
        tr
          th.isic-study-images-content-name Image Name
          th.isic-study-images-content-imageid Image Id
        each image in study.get('images')
          tr
            td.isic-study-images-content-name= image.name
            td.isic-study-images-content-imageid= image._id
    else
      | (no images)


head
  link(href="https://maxcdn.bootstrapcdn.com/bootswatch/latest/slate/bootstrap.min.css", rel="stylesheet")
  //link(rel="stylesheet", href="angular-ui-notification.min.css")
  base(href="/")
body(ng-app="huezNg")
  div.container
    div(ui-view="")

Use simplex theme, moved Navbar

head
  link(href="https://maxcdn.bootstrapcdn.com/bootswatch/latest/simplex/bootstrap.min.css", rel="stylesheet")
  //link(rel="stylesheet", href="angular-ui-notification.min.css")
  base(href="/")
body(ng-app="huezNg")
  div.container
    nav.navbar.navbar-default
      .container-fluid
        .navbar-header
          button.navbar-toggle.collapsed(type="button", data-toggle="collapse", data-target="#main-navbar")
            span.sr-only Toggle navigation
            span.icon-bar
            span.icon-bar
            span.icon-bar
          a.navbar-brand(href="#")
            i.fa.fa-home
            | Huez Ng
        #main-navbar.collapse.navbar-collapse
          ul.nav.navbar-nav.navbar-right
            login-buttons

    div(ui-view="")


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

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

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

Add chrome mobile theme color

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

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

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


.eoy_2016-artist
  .eoy_2016-artist__thumb
    img(src="#{sd.API_URL}/api/v1/artist/#{artist.slug}/image")
  .eoy_2016-artist__name
    a.eoy_2016-artist__name__link(href="/artist/#{artist.slug}")= artist.name

Use force proxy to get artist thumbnail

.eoy_2016-artist
  .eoy_2016-artist__thumb
    img(src="#{sd.ARTSY_URL}/search/image/artist/#{artist.slug}")
  .eoy_2016-artist__name
    a.eoy_2016-artist__name__link(href="/artist/#{artist.slug}")= artist.name