---
layout: default
title: Mod Phon
---
.jumbotron
 .row
  .col-md-12
    :markdown
      # Voxen
      ## The Synthesizer Different

      Touch the keys. Feel the knobs. Hear the music. The Synthesizer
      Different is here.  Or more precisely, it is *almost*
      here. Meanwhile, please keep your eyes, ears and mind open.

      Coming April 2014 to an iPad near you...
  .row
    .col-md-8.col-md-offset-2
      img(src="/img/screenshot.png" width="100%" alt="Voxen screen shot")
.row
  .col-md-6
    :markdown
      ## Products

      After over a year of development, Voxen is due to be
      available from the App Store within the coming month.

  .col-md-6
    :markdown
      ## Community

      Our [community](http://community.modphon.com) is *the* place to
      discuss anything and everything about our apps and software.

      It uses [Discourse](http://www.discourse.org), the new forum software
      intended for the next decade instead of the last one.

Bump release month to May 2014

---
layout: default
title: Mod Phon
---
.jumbotron
 .row
  .col-md-12
    :markdown
      # Voxen
      ## The Synthesizer Different

      Touch the keys. Feel the knobs. Hear the music. The Synthesizer
      Different is here.  Or more precisely, it is *almost*
      here. Meanwhile, please keep your eyes, ears and mind open.

      Coming May 2014 to an iPad near you...
  .row
    .col-md-8.col-md-offset-2
      img(src="/img/screenshot.png" width="100%" alt="Voxen screen shot")
.row
  .col-md-6
    :markdown
      ## Products

      After over a year of development, Voxen is due to be
      available from the App Store within the coming month.

  .col-md-6
    :markdown
      ## Community

      Our [community](http://community.modphon.com) is *the* place to
      discuss anything and everything about our apps and software.

      It uses [Discourse](http://www.discourse.org), the new forum software
      intended for the next decade instead of the last one.


extends layout

block content
  h1 Platform Status Indicator
  p Platform Status Indicator is an browser addon provides quick access to platform status data of specification you are reading.
  div.download
   a(href='https://chrome.google.com/webstore/detail/platform-status-indicator/fgpenaabfgmnbkgfhocpijmbnjmakpfg') Download Platform Status Indicator from Chrome Web Store
  div.figure
    img(alt='', src='/images/addons/ps-indicator.png')
  h2 Rational
  p Every time I read a specification, I imagine the world where every browser implements the specification. Soon after, I wake from the dream. I know the real is different. I know there are some specifications which some browsers supoort and others don't intent to support.
  p Today, major browser vendors maintain platform statuses which show roadmaps of their browsers. However, platform statuses are not integrated with specifications. Thus I need to open 4 web sites in addition to the specification.
  p Platform Status Indicator provides quick access to platform status data of specification I am reading.

  h2 Q & A
  dl
  dt Are ther any plans to support browsers other than Google Chrome
  dd
    p Yes, Plateostatus intents to make Platform Status Indicator WebExtentions compatible.
    div.figure
      img(alt='', src='images/addons/ps-indicator-webextensions.png')

Fix path of an image

extends layout

block content
  h1 Platform Status Indicator
  p Platform Status Indicator is an browser addon provides quick access to platform status data of specification you are reading.
  div.download
   a(href='https://chrome.google.com/webstore/detail/platform-status-indicator/fgpenaabfgmnbkgfhocpijmbnjmakpfg') Download Platform Status Indicator from Chrome Web Store
  div.figure
    img(alt='', src='/images/addons/ps-indicator.png')
  h2 Rational
  p Every time I read a specification, I imagine the world where every browser implements the specification. Soon after, I wake from the dream. I know the real is different. I know there are some specifications which some browsers supoort and others don't intent to support.
  p Today, major browser vendors maintain platform statuses which show roadmaps of their browsers. However, platform statuses are not integrated with specifications. Thus I need to open 4 web sites in addition to the specification.
  p Platform Status Indicator provides quick access to platform status data of specification I am reading.

  h2 Q & A
  dl
  dt Are ther any plans to support browsers other than Google Chrome
  dd
    p Yes, Plateostatus intents to make Platform Status Indicator WebExtentions compatible.
    div.figure
      img(alt='', src='/images/addons/ps-indicator-webextensions.png')


doctype 5
html
    head
        title CDN performance in numbers - CDNperf

        link(rel='stylesheet', href='css/vendor/normalize.css')
        link(rel='stylesheet', href='css/vendor/foundation.min.css')
        link(rel='stylesheet', href='css/base.css')

        script(src='js/vendor/xdate.js')
        script(src='js/vendor/jquery/jquery.js')

        block head
    body
        header.panel
            h1.siteName CDNperf

            p.tagLine CDN performance in numbers

        .row
            article
                block content

        footer.panel.row
            .large-3.columns
                p.credits Brought to you by

            .large-3.columns
                a(href='http://www.jsdelivr.com/')
                    img(src='images/jsdelivr.png', alt='jsDelivr')

            .large-3.columns
                a(href='http://jster.net/')
                    img(src='images/jster.png', alt='JSter')

            .large-3.columns
                a(href='https://www.pingdom.com/')
                    img(src='images/pingdom.png', alt='Pingdom')

Mark header as a row to make it more compact

doctype 5
html
    head
        title CDN performance in numbers - CDNperf

        link(rel='stylesheet', href='css/vendor/normalize.css')
        link(rel='stylesheet', href='css/vendor/foundation.min.css')
        link(rel='stylesheet', href='css/base.css')

        script(src='js/vendor/xdate.js')
        script(src='js/vendor/jquery/jquery.js')

        block head
    body
        header.panel.row
            h1.siteName CDNperf

            p.tagLine CDN performance in numbers

        .row
            article
                block content

        footer.panel.row
            .large-3.columns
                p.credits Brought to you by

            .large-3.columns
                a(href='http://www.jsdelivr.com/')
                    img(src='images/jsdelivr.png', alt='jsDelivr')

            .large-3.columns
                a(href='http://jster.net/')
                    img(src='images/jster.png', alt='JSter')

            .large-3.columns
                a(href='https://www.pingdom.com/')
                    img(src='images/pingdom.png', alt='Pingdom')


!!!
html
  head
    meta(charset="utf-8")
    meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1")
    title= title
    link(rel='stylesheet', href='/css/persona-buttons.css')
    link(rel='stylesheet', href='/css/style.css')
    link(rel="stylesheet", href="/css/alertify.core.css")
    link(rel="stylesheet", href="/css/alertify.default.css")
    link(rel="stylesheet", href="/css/bootstrap.min.css")
    script(src="#{persona_uri}/include.js")
    script(src='/lib/jquery.min.js')
    script(src="/js/adapter.js")
    script(src='/socket.io/socket.io.js')
    script(src="/js/alertify.js")
  != body

Modify jayout file to add missing meta/link tags

!!!
html
	head
		meta(charset="utf-8")
		meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1")
		meta(name="description", content="#")
		meta(name="author", content="#")

		title= 'Mozilla Tin Can'

		link(rel='stylesheet', href='/css/persona-buttons.css')
		link(rel='stylesheet', href='/css/style.css')
		link(rel="stylesheet", href="/css/alertify.core.css")
		link(rel="stylesheet", href="/css/alertify.default.css")
		link(rel="stylesheet", href="/css/bootstrap.min.css")

		link(rel="apple-touch-icon-precomposed",sizes="144x144",href="#")
		link(rel="apple-touch-icon-precomposed",sizes="114x114",href="#")
		link(rel="apple-touch-icon-precomposed",sizes="72x72",href="#")

		script(src="#{persona_uri}/include.js")
		script(src='/lib/jquery.min.js')
		script(src="/js/adapter.js")
		script(src='/socket.io/socket.io.js')
		script(src="/js/alertify.js")
	!= body


doctype html
html
  head
    meta(name="viewport", content="width=device-width, initial-scale=1")
    link(rel='stylesheet', href='/bower_components/bootstrap/dist/css/bootstrap.min.css')
    link(rel='stylesheet', href='/bower_components/bootstrap/dist/css/bootstrap-theme.min.css')
    link(rel='stylesheet', href='/stylesheets/style.css')
    script(src="/bower_components/jquery/jquery.min.js")
    script(src="/bower_components/bootstrap/dist/js/bootstrap.min.js")
    title= title
  body
    h1
      a(href="/") HR Search
    block content
    nav.navbar.navbar-default.navbar-fixed-bottom
      .container
        block nav-content

Move script to body end

doctype html
html
  head
    meta(name="viewport", content="width=device-width, initial-scale=1")
    link(rel='stylesheet', href='/bower_components/bootstrap/dist/css/bootstrap.min.css')
    link(rel='stylesheet', href='/bower_components/bootstrap/dist/css/bootstrap-theme.min.css')
    link(rel='stylesheet', href='/stylesheets/style.css')
    title= title
  body
    h1
      a(href="/") HR Search
    block content
    nav.navbar.navbar-default.navbar-fixed-bottom
      .container
        block nav-content
    script(src="/bower_components/jquery/jquery.min.js")
    script(src="/bower_components/bootstrap/dist/js/bootstrap.min.js")


template(name="adminHeader")
	nav.navbar.navbar-default.navbar-fixed-top
		.container
			.navbar-header
				button.navbar-toggle.collapsed(type="button" data-toggle="collapse" data-target="#eklore-navbar" aria-expended="false")
					span.sr-only {{_ "toggleNav"}}
					span.icon-bar
					span.icon-bar
					span.icon-bar
				a.navbar-brand(href="{{pathFor 'home'}}") EKlore admin
			#eklore-navbar.collapse.navbar-collapse
				ul.nav.navbar-nav
				.nav.navbar-nav.navbar-right
					+loginButtons

Change path for the home button

template(name="adminHeader")
	nav.navbar.navbar-default.navbar-fixed-top
		.container
			.navbar-header
				button.navbar-toggle.collapsed(type="button" data-toggle="collapse" data-target="#eklore-navbar" aria-expended="false")
					span.sr-only {{_ "toggleNav"}}
					span.icon-bar
					span.icon-bar
					span.icon-bar
				a.navbar-brand(href="{{pathFor 'admin'}}") EKlore admin
			#eklore-navbar.collapse.navbar-collapse
				ul.nav.navbar-nav
				.nav.navbar-nav.navbar-right
					+loginButtons


{% load thumbnail %}

li.clearfix
    a(href="{{ game.get_absolute_url }}")
        {% thumbnail game.title_logo "184x69" crop="center" as img %}
        img.game-cover(src="{{ img.url }}",alt="{{ game.name }}")
        {% empty %}
        span.game-cover no image
        {% endthumbnail %}
    div
        a.game-title(href='{{ game.get_absolute_url }}') {{ game.name }}
        for platform in game.platforms.all
            a.filter-link(href='{% url "games_by_plaform" slug=platform.slug %}') {{ platform }}
        .info
            div
                for genre in game.genres.all
                    a(href="{ url 'games_by_genre' genre.slug %}") {{ genre }}
                if game.year
                    Released in
                    a(href="{ url 'games_by_year' game.year %}") {{ game.year }}
                    br
                if game.developer
                    Developed by
                    a(href="{ url 'games_by_company' game.developer.slug %}") {{ game.developer }}
                if game.publisher
                    Published by
                    a(href="{ url 'games_by_company' game.publisher.slug %}") {{ game.publisher }}

Fix wording in game list

{% load thumbnail %}

li.clearfix
    a(href="{{ game.get_absolute_url }}")
        {% thumbnail game.title_logo "184x69" crop="center" as img %}
        img.game-cover(src="{{ img.url }}",alt="{{ game.name }}")
        {% empty %}
        span.game-cover no image
        {% endthumbnail %}
    div
        a.game-title(href='{{ game.get_absolute_url }}') {{ game.name }}
        for platform in game.platforms.all
            a.filter-link(href='{% url "games_by_plaform" slug=platform.slug %}') {{ platform }}
        .info
            div
                for genre in game.genres.all
                    a(href="{ url 'games_by_genre' genre.slug %}") {{ genre }}
                if game.year
                    Released in
                    a(href="{ url 'games_by_year' game.year %}") {{ game.year }}
                    br
                if game.developer
                    | Developed by
                    a(href="{ url 'games_by_company' game.developer.slug %}") {{ game.developer }}
                if game.publisher
                    | Published by
                    a(href="{ url 'games_by_company' game.publisher.slug %}") {{ game.publisher }}


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

Fix deprecated !!! in jade template

doctype xml
doctype 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}')


head
  meta(charset='utf-8')
  meta(http-equiv='X-UA-Compatible', content='IE=edge')
  block title
    title Dash
  meta(name='description', content='Dash brings all the information you care about into one central location.')
  meta(name='viewport', content='width=device-width, initial-scale=1')

  <!-- Stylesheets -->
  link(rel='stylesheet', href='/materialize/materialize.css')
  link(rel='stylesheet', href='/static/css/style.css')

  <!-- Fonts -->
  link(rel='stylesheet', href='https://fonts.googleapis.com/icon?family=Material+Icons')

  <!-- Favicon -->
  <!--[if lt IE 9]>
  <link rel='shortcut icon' href='/static/ico/favicon.ico'>
  <![endif]-->
  link(rel='icon', href='/static/ico/favicon.ico')

Add block for additional stylesheets

head
  meta(charset='utf-8')
  meta(http-equiv='X-UA-Compatible', content='IE=edge')
  block title
    title Dash
  meta(name='description', content='Dash brings all the information you care about into one central location.')
  meta(name='viewport', content='width=device-width, initial-scale=1')

  <!-- Stylesheets -->
  link(rel='stylesheet', href='/materialize/materialize.css')
  link(rel='stylesheet', href='/static/css/style.css')
  block additionalStyles

  <!-- Fonts -->
  link(rel='stylesheet', href='https://fonts.googleapis.com/icon?family=Material+Icons')

  <!-- Favicon -->
  <!--[if lt IE 9]>
  <link rel='shortcut icon' href='/static/ico/favicon.ico'>
  <![endif]-->
  link(rel='icon', href='/static/ico/favicon.ico')


include ../../../../components/util/activator

mixin tab(name, path)
  a.avant-garde-tablist__tab(
    class='js-avant-garde-tablist__tab'
    href= path
    data-state= activeState(path)
  )= name

nav.avant-garde-tablist
  +tab('Saves & Follows', '/user/saves')
  +tab('Settings', '/user/edit')
  +tab('Profile', '/profile/edit')

Move saves tab to end

include ../../../../components/util/activator

mixin tab(name, path)
  a.avant-garde-tablist__tab(
    class='js-avant-garde-tablist__tab'
    href= path
    data-state= activeState(path)
  )= name

nav.avant-garde-tablist
  +tab('Settings', '/user/edit')
  +tab('Profile', '/profile/edit')
  +tab('Saves & Follows', '/user/saves')


extends ../layout/partial

block billboard
  | {{ image.parent.session.subject.collection | capitalize }}
  | Patient {{ image.parent.session.subject.number }}
  | Session {{ image.parent.session.number }}
  | {{ image.parent.container_type | capitalize }}
  | {{ image.parent.name }}
  | Time Point {{ image.time_point }}

block content
  qi-series-image(image='image')

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

Use the image container title.

extends ../layout/partial

block billboard
  | {{ image.parent.session.subject.collection | capitalize }}
  | Patient {{ image.parent.session.subject.number }}
  | Session {{ image.parent.session.number }}
  | {{ image.parent.title }}
  | Time Point {{ image.time_point }}

block content
  qi-series-image(image='image')

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


doctype
html
  head
    title= title
    - if ( environment == "development" ) server = ''
    link(rel="stylesheet" href=server+"/assets/stylesheets/main.css")
    script(src=server+"/assets/scripts/jquery.min.js")
    script(src=server+"/assets/scripts/knockout-3.1.0.js")
    script(src=server+"/assets/scripts/bootstrap.min.js")
    script(src=server+"/assets/scripts/main.js")
  body
    != yield

Update the layout to include mapping plugin and harp global data

doctype
html
  head
    title= title
    - if ( environment == "development" ) server = ''
    link(rel="stylesheet" href=server+"/assets/stylesheets/main.css")
    script(src=server+"/assets/scripts/jquery.min.js")
    script(src=server+"/assets/scripts/knockout-3.1.0.js")
    script(src=server+"/assets/scripts/knockout.mapping.js")
    script(src=server+"/assets/scripts/bootstrap.min.js")
    script(src=server+"/assets/scripts/main.js")
  body
    != yield
    script.
        var harpData = !{ JSON.stringify( data ) };


extends dummy-layout

block head
    title Taiga  Your agile, free, and open source project management tool

block content
    div.wrapper
        div.login-main
            div.login-container
                h1.logo
                    img(src="/images/logo.png", alt="TAIGA")
                p.tagline Your agile, free, and open source project management tool

                include views/modules/change-password-from-recovery-form

Change logo on change password from recovery partial.

extends dummy-layout

block head
    title Taiga  Your agile, free, and open source project management tool

block content
    div.wrapper
        div.login-main
            div.login-container
                h1.logo
                    img.logo-svg(src="/svg/logo.svg", alt="TAIGA")
                p.tagline Your agile, free, and open source project management tool

                include views/modules/change-password-from-recovery-form


doctype html
html(xmlns:wb='http://open.weibo.com/wb')
    head
        meta(http-equiv="Content-Type" content="text/html; charset=UTF-8")
        title 洋葱数学
        meta(charset='utf8')
        meta(name='keywords', content='洋葱数学，初中数学，数学，数学学习，微课，微视频，翻转课堂')
        meta(name='description' content='洋葱数学让每个学生“一学就懂”！将趣味短视频与习题结合，轻松进行个性化在线学习，每天5分钟，赶快体验！')
        link(rel='shortcut icon', href='favicon.ico', type='image/x-icon')
        link(rel='stylesheet' href='seed2.css')
        meta(name='viewport', content='width=device-width, maximum-scale=1, user-scalable=no')
        // inject:css
        // endinject

    body
        #mobileluodi
            #isolateF.mobile-banner
                .mobile-logo
                    img(src="mobile-logo.png")
                .mobile-slogan 让数学变简单

            .mobile-space
                ul.list
                    each val in chapterList
                        li
                            a(href='[chapter] ' + val.chapterName + '.html')
                                img(src=val.chapterIcon, alt="")
                                h3= val.chapterName

    // inject:js
    // endinject
    script(src='script1.js')

Add post-point enterLandingPage and clickLandingChapterList

doctype html
html(xmlns:wb='http://open.weibo.com/wb')
    head
        meta(http-equiv="Content-Type" content="text/html; charset=UTF-8")
        title 洋葱数学
        meta(charset='utf8')
        meta(name='keywords', content='洋葱数学，初中数学，数学，数学学习，微课，微视频，翻转课堂')
        meta(name='description' content='洋葱数学让每个学生“一学就懂”！将趣味短视频与习题结合，轻松进行个性化在线学习，每天5分钟，赶快体验！')
        link(rel='shortcut icon', href='favicon.ico', type='image/x-icon')
        link(rel='stylesheet' href='seed2.css')
        meta(name='viewport', content='width=device-width, maximum-scale=1, user-scalable=no')
        // inject:css
        // endinject

    body(post-point='{"eventKey": "enterLandingPage"}')
        #mobileluodi
            #isolateF.mobile-banner
                .mobile-logo
                    img(src="mobile-logo.png")
                .mobile-slogan 让数学变简单

            .mobile-space
                ul.list
                    each val in chapterList
                        li
                            a(href='[chapter] ' + val.chapterName + '.html',post-point='{"eventKey":"clickLandingChapter","chapterName":"#{val.chapterName}"}')
                                img(src=val.chapterIcon, alt="")
                                h3= val.chapterName

    // inject:js
    // endinject
    script(src='script1.js')


section.sprints
    header
        h1 SPRINTS
        div.summary
            ul
                li
                    span.number(ng-bind="project.total_milestones") --
                    span.description <br/>sprints
            div.new-sprint
                a.button.button-green(href="", title="Add New sprint",
                                      ng-click="ctrl.addNewSprint()",
                                      tg-check-permission="add_milestone")
                    span.text + New sprint

    div.sprint.sprint-open(ng-repeat="sprint in openSprints track by sprint.id" tg-backlog-sprint="sprint")
        include sprint

    a.filter-closed-sprints(href="")
        span.icon.icon-archive
        span(tg-backlog-toggle-closed-sprints-visualization="ctrl.excludeClosedSprints") Show closed sprints
        span.load

    div.sprint.sprint-closed(ng-repeat="sprint in closedSprints track by sprint.id" tg-backlog-sprint="sprint")
        include sprint

Fix ng-show condition in milestone

section.sprints
    header
        h1 SPRINTS
        div.summary
            ul
                li
                    span.number(ng-bind="project.total_milestones") --
                    span.description <br/>sprints
            div.new-sprint
                a.button.button-green(href="", title="Add New sprint",
                                      ng-click="ctrl.addNewSprint()",
                                      tg-check-permission="add_milestone")
                    span.text + New sprint

    div.sprint.sprint-open(ng-repeat="sprint in openSprints track by sprint.id" tg-backlog-sprint="sprint")
        include sprint

    a.filter-closed-sprints(href="", ng-show="project.total_closed_milestones")
        span.icon.icon-archive
        span(tg-backlog-toggle-closed-sprints-visualization="ctrl.excludeClosedSprints") Show closed sprints
        span.load

    div.sprint.sprint-closed(ng-repeat="sprint in closedSprints track by sprint.id" tg-backlog-sprint="sprint")
        include sprint


head
	title Live Basket-Ball Stats
	meta(charset="utf-8")
	meta(name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")

Add link to last version of Bootstrap

head
	title Live Basket-Ball Stats
	meta(charset="utf-8")
	meta(
		name="viewport"
		content="width=device-width,
		initial-scale=1,
		shrink-to-fit=no"
	)
	link(
		rel="stylesheet"
		href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css"
		integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ"
		crossorigin="anonymous"
	)


div.wrapper.roles(ng-controller="RolesController as ctrl",
                        ng-init="section='admin'", tg-roles)
    sidebar.menu-secondary.sidebar(tg-admin-navigation="roles")
        include ../includes/modules/admin-menu
    sidebar.menu-tertiary.sidebar
        include ../includes/modules/admin-submenu-roles

    section.main.admin-roles.admin-common
        .header-with-actions
            include ../includes/components/mainTitle
            .action-buttons
                a.button-red.delete-role(href="", title="Delete", ng-click="ctrl.delete()") Delete

        div(tg-edit-role)
            .edit-role
                input(type="text", value="{{ role.name }}")
                a.save.icon.icon-floppy(href="", title="Save")

            p.total
                span.role-name(title="{{ role.members_count }} members with this role") {{ role.name }}
                a.edit-value.icon.icon-edit

        div.any-computable-role(ng-hide="anyComputableRole") Be careful, no role in your project will be able to estimate the point value for user stories

        div.general-category
            | When enabled, members assigned to this role will be able to estimate the point value for user stories
            div.check
                input(type="checkbox", ng-model="role.computable", ng-change="ctrl.setComputable()")
                div
                span.check-text.check-yes Yes
                span.check-text.check-no No

        div(tg-role-permissions, ng-model="role")

Fix broken button style on admin roles

div.wrapper.roles(ng-controller="RolesController as ctrl",
                        ng-init="section='admin'", tg-roles)
    sidebar.menu-secondary.sidebar(tg-admin-navigation="roles")
        include ../includes/modules/admin-menu
    sidebar.menu-tertiary.sidebar
        include ../includes/modules/admin-submenu-roles

    section.main.admin-roles.admin-common
        .header-with-actions
            include ../includes/components/mainTitle
            .action-buttons
                a.button-red.delete-role(href="", title="Delete", ng-click="ctrl.delete()")
                    span Delete

        div(tg-edit-role)
            .edit-role
                input(type="text", value="{{ role.name }}")
                a.save.icon.icon-floppy(href="", title="Save")

            p.total
                span.role-name(title="{{ role.members_count }} members with this role") {{ role.name }}
                a.edit-value.icon.icon-edit

        div.any-computable-role(ng-hide="anyComputableRole") Be careful, no role in your project will be able to estimate the point value for user stories

        div.general-category
            | When enabled, members assigned to this role will be able to estimate the point value for user stories
            div.check
                input(type="checkbox", ng-model="role.computable", ng-change="ctrl.setComputable()")
                div
                span.check-text.check-yes Yes
                span.check-text.check-no No

        div(tg-role-permissions, ng-model="role")


extends layout

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

block content
  header
    .cq-header-wrapper
      .cq-brand
        a(href="/") ⌘ + Queue
      .cq-nav
        if loggedIn
          a(href="/auth/logout") Log out
        else
          a(href="/auth/login") Log in
  if !loggedIn
    .cq-landing
      .cq-landing-wrapper
        h1.cq-title ⌘ + Queue
        noscript
          h2.cq-subtitle Whoa there! ⌘ + Queue makes heavy use of JavaScript.
        h2.cq-subtitle sign in with your Andrew account to join, create, or browse queues
        a.cq-github-link(href="#") GitHub
  #cq-target(data-user-id=userId)
  #modal-target

block scripts
  script(src='/js/bundle.js')

Add link to GitHub repo

extends layout

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

block content
  header
    .cq-header-wrapper
      .cq-brand
        a(href="/") ⌘ + Queue
      .cq-nav
        if loggedIn
          a(href="/auth/logout") Log out
        else
          a(href="/auth/login") Log in
  if !loggedIn
    .cq-landing
      .cq-landing-wrapper
        h1.cq-title ⌘ + Queue
        noscript
          h2.cq-subtitle Whoa there! ⌘ + Queue makes heavy use of JavaScript.
        h2.cq-subtitle sign in with your Andrew account to join, create, or browse queues
        a.cq-github-link(href="https://github.com/jez/cmdqueue") GitHub
  #cq-target(data-user-id=userId)
  #modal-target

block scripts
  script(src='/js/bundle.js')


extends ../../../components/layout/index--info

block vars
  - extraClasses = 'no-messages body--static'

block body
  .gs
    h1 Are.na / Getting Started
    .gs__body
      include ./slides/1-channels.jade
      include ./slides/2-blocks.jade
      include ./slides/3-connections.jade
      include ./slides/4-users.jade
      include ./slides/5-feed.jade
    if user
      .gs__profile
        a.btn(href="/#{user.get('slug')}") Go to your profile

Add sign up button if not logged in

extends ../../../components/layout/index--info

block vars
  - extraClasses = 'no-messages body--static'

block body
  .gs
    h1 Are.na / Getting Started
    .gs__body
      include ./slides/1-channels.jade
      include ./slides/2-blocks.jade
      include ./slides/3-connections.jade
      include ./slides/4-users.jade
      include ./slides/5-feed.jade
    .gs__profile
      if user
        a.btn(href="/#{user.get('slug')}") Go to your profile
      else
        a.btn(href="/#{user.get('slug')}") Sign up


extend ../layout

block title
  | #{ person.name }

block content
  .page-header
    h1 #{ person.name }

  p
    | #{ person.summary }
    a(href="#{person.slug_url}/edit") Edit

  pre
    #{ JSON.stringify( person ) }

  h2 Contact details

  ul
    for contact in person.contact_details
      li
        b #{ contact.kind }:
        | #{ contact.value }
        a(href="#{person.slug_url}/contacts/#{contact.id}/edit") Edit
    li
      a(href="#{person.slug_url}/contacts/new/edit") create new contact

  h2 Links

  ul
    for link in person.links
      li
        a(href=link.url) #{ link.url }:
        | #{ link.comment }
        a(href="#{person.slug_url}/links/#{link.id}/edit") Edit
    li
      a(href="#{person.slug_url}/links/new/edit") create new link

Tidy up person page - but the data dump at the end.

extend ../layout

block title
  | #{ person.name }

block content
  .page-header
    h1 #{ person.name }

  p
    | #{ person.summary }
    a(href="#{person.slug_url}/edit") Edit

  h2 Contact details

  ul
    for contact in person.contact_details
      li
        b #{ contact.kind }:
        | #{ contact.value }
        a(href="#{person.slug_url}/contacts/#{contact.id}/edit") Edit
    li
      a(href="#{person.slug_url}/contacts/new/edit") create new contact

  h2 Links

  ul
    for link in person.links
      li
        a(href=link.url) #{ link.url }:
        | #{ link.comment }
        a(href="#{person.slug_url}/links/#{link.id}/edit") Edit
    li
      a(href="#{person.slug_url}/links/new/edit") create new link

  h2 Raw data

  pre
    #{ JSON.stringify( person ) }


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

- block content

  if back_url
    .alert.alert-primary
      = _("alert_login_first", url=back_url_unquoted)

  if show_ekklesia_login

    h2= _("title_ekklesia_login", name=ekklesia_login_name)

    .help_text
      = ekklesia_login_explanation|markdown

    a.btn.btn-primary(href=ekklesia_login_url)
      i.fas.fa-sign-in-alt
      |
      = _("button_ekklesia_login", name=ekklesia_login_name)

    hr

  if show_internal_login
    h2 Interner Login

    if insecure_development_mode_enabled
      .alert.alert-danger
        strong= _('warning_development_mode')

    form(action="/login", method="POST")
      p
        label(for="username") Username
        input(name="username" value=username)

      p
        label(for="password") Password
        input(name="password" type="password")

      if back_url
        input(type="submit")
        input(type="hidden", name="back_url", value=back_url)

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

Bring back the internal login button...

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

- block content

  if back_url
    .alert.alert-primary
      = _("alert_login_first", url=back_url_unquoted)

  if show_ekklesia_login

    h2= _("title_ekklesia_login", name=ekklesia_login_name)

    .help_text
      = ekklesia_login_explanation|markdown

    a.btn.btn-primary(href=ekklesia_login_url)
      i.fas.fa-sign-in-alt
      |
      = _("button_ekklesia_login", name=ekklesia_login_name)

    hr

  if show_internal_login
    h2 Interner Login

    if insecure_development_mode_enabled
      .alert.alert-danger
        strong= _('warning_development_mode')

    form(action="/login", method="POST")
      p
        label(for="username") Username
        input(name="username" value=username)

      p
        label(for="password") Password
        input(name="password" type="password")

      if back_url
        input(type="hidden", name="back_url", value=back_url)

      input(type="submit")

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


.contain-to-grid
  nav.top-bar(data-topbar)
    ul.title-area
      li.name
        h1
          a(href="/")
            img(src="/assets/img/regard-logo-and-text.png" height="54px" width="172px")
    section.top-bar-section
      ul.right
        li
          a(href="/about") About

Apply active style to menu items when selected

.contain-to-grid
  nav.top-bar(data-topbar)
    ul.title-area
      li.name
        h1
          a(href="/")
            img(src="/assets/img/regard-logo-and-text.png" height="54px" width="172px")
    section.top-bar-section
      ul.right
        li(class="#{menu==='blog' ? 'active' : ''}")
          a(href="/blog") Blog
        li(class="#{menu==='about' ? 'active' : ''}")
          a(href="/about") About


doctype 5
html(lang='en')
  head
    meta(charset='utf-8')
    title= title
    //link(rel='stylesheet', href='/stylesheets/style.css')
    script(src='/socket.io/socket.io.js')
    script(src='/js/tinyDOM.min.js')
    script
      var socket = io.connect();

      socket.on('users', function (data) {
        $.id('current_users').innerHTML = data.count;
      });

      socket.on('tweet', function (data) {
        var item = document.createElement('li');
        item.innerHTML = 'User: ' + data.user.name + ', Date: ' + data.created_at + ', Tweet: ' + data.text;
        var list = $.id('tweets');
        list.insertBefore(item, list.firstChild);
      });
  body
    h1= title
    div.
      Currently connected users: 0
    div
      ul#tweets

Make tweets slightly easier to read for now

doctype 5
html(lang='en')
  head
    meta(charset='utf-8')
    title= title
    //link(rel='stylesheet', href='/stylesheets/style.css')
    script(src='/socket.io/socket.io.js')
    script(src='/js/tinyDOM.min.js')
    script
      var socket = io.connect();

      socket.on('users', function (data) {
        $.id('current_users').innerHTML = data.count;
      });

      socket.on('tweet', function (data) {
        var item = document.createElement('li');
        item.innerHTML = 'User: ' + data.user.name + '
Date: ' + data.created_at + '
Tweet: ' + data.text;
        var list = $.id('tweets');
        list.insertBefore(item, list.firstChild);
      });
  body
    h1= title
    div.
      Currently connected users: 0
    div
      ul#tweets


li.media.person.major(data-person-id=person.id)
  a.pull-left(href=person.url)
    if person.image && person.image.url
      img.img-rounded.media-object(src=(person.image.pump_io && person.image.pump_io.proxyURL) ? person.image.pump_io.proxyURL : person.image.url, width="64", height="64")
    else
      img.img-rounded.media-object(src="/images/default.png", width="64", height="64")

  .media-body
    h4.media-heading
      a(href=person.url)!= person.displayName
      small
        if person.id && person.id.substr(0, 5) === 'acct:'
          = person.id.substr(5)
        else
          = person.preferredUsername

    .pull-right
      include ./profile-responses.jade

    if person.location
      p.location!= person.location.displayName
    if person.summary
      p.summary!= person.summary

Add a missing space between people's names and ids

li.media.person.major(data-person-id=person.id)
  a.pull-left(href=person.url)
    if person.image && person.image.url
      img.img-rounded.media-object(src=(person.image.pump_io && person.image.pump_io.proxyURL) ? person.image.pump_io.proxyURL : person.image.url, width="64", height="64")
    else
      img.img-rounded.media-object(src="/images/default.png", width="64", height="64")

  .media-body
    h4.media-heading
      a(href=person.url)!= person.displayName
      |
      small
        if person.id && person.id.substr(0, 5) === 'acct:'
          = person.id.substr(5)
        else
          = person.preferredUsername

    .pull-right
      include ./profile-responses.jade

    if person.location
      p.location!= person.location.displayName
    if person.summary
      p.summary!= person.summary


doctype html
html
  head
    meta(charset="utf-8")
    title Todos
    meta(name="viewport", content="width=device-width, initial-scale=1")
    link(rel="stylesheet", href=assets.main.css)
  body
    #root!= content
    script.
      window.__INITIAL_STATE__ = !{initialState}
    script(src=assets.main.js)

Use single quotes in Jade template

doctype html
html
  head
    meta(charset='utf-8')
    title Todos
    meta(name='viewport', content='width=device-width, initial-scale=1')
    link(rel='stylesheet', href=assets.main.css)
  body
    #root!= content
    script.
      window.__INITIAL_STATE__ = !{initialState}
    script(src=assets.main.js)


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

block content
  .ui.feed
    for item in recordings
      .event
        .content
          .summary
            a.user(href="/shows/#{item._show.slug}") #{item._show.name}
            |  published
            a(href="/recordings/#{item.slug}") #{item.title}
            abbr.date.tooltipped(title="#{ moment( item.released ).format('MMMM Do YYYY, h:mm:ss a') }") #{ moment( item.released ).fromNow() }
          .extra.text(style="max-width: none;") !{ (item.description) ? markdown( item.description.split('\n\n')[0] ) : '' }
          .meta
            if (user && user.can('edit', item))
              a.ui.button(href="/recordings/#{item.slug}")
                i.edit.icon
                | edit

Make edit button a real link.

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

block content
  .ui.feed
    for item in recordings
      .event
        .content
          .summary
            a.user(href="/shows/#{item._show.slug}") #{item._show.name}
            |  published
            a(href="/recordings/#{item.slug}") #{item.title}
            abbr.date.tooltipped(title="#{ moment( item.released ).format('MMMM Do YYYY, h:mm:ss a') }") #{ moment( item.released ).fromNow() }
          .extra.text(style="max-width: none;") !{ (item.description) ? markdown( item.description.split('\n\n')[0] ) : '' }
          .meta
            if (user && user.can('edit', item))
              a.ui.button(href="/recordings/#{item.slug}/edit")
                i.edit.icon
                | edit


extends layout

append styles
  link(href='/styles/plug.css',rel='stylesheet')
  link(href='/styles/icons.css',rel='stylesheet')

block content
  .infocard
    img(src=plug.images[720]).plugimage
    h2.plugvenue= plug.venue
    h3.plugname= plug.name
    .ownercredit
      ="mapped by "
      //- if the currently logged-in user mapped this
      if currentUser && plug.owner._id == currentUser._id
        a(href='/user/'+plug.owner.username).ownername you
      else
        a(href='/user/'+plug.owner.username).ownername
          = plug.owner.username
          img(src='//gravatar.com/avatar/'+plug.owner.emailMD5).owneravatar

  userUpvolted = currentUser && ~plug.upvolters.indexOf(currentUser._id)

  #upvolt-button(class = (userUpvolted ? 'upvolted' : ''))
    span.icon-upvolt
    =' '
    span.upvolt-count= plug.upvolters.length
    =' Upvolts'
  if currentUser
    script var csrfToken = !{JSON.stringify(csrfToken)};
    script(src="/upvolt.js")

Fix class where ID should be

extends layout

append styles
  link(href='/styles/plug.css',rel='stylesheet')
  link(href='/styles/icons.css',rel='stylesheet')

block content
  .infocard
    img(src=plug.images[720]).plugimage
    h2.plugvenue= plug.venue
    h3.plugname= plug.name
    .ownercredit
      ="mapped by "
      //- if the currently logged-in user mapped this
      if currentUser && plug.owner._id == currentUser._id
        a(href='/user/'+plug.owner.username).ownername you
      else
        a(href='/user/'+plug.owner.username).ownername
          = plug.owner.username
          img(src='//gravatar.com/avatar/'+plug.owner.emailMD5).owneravatar

  userUpvolted = currentUser && ~plug.upvolters.indexOf(currentUser._id)

  #upvolt-button(class = (userUpvolted ? 'upvolted' : ''))
    span.icon-upvolt
    =' '
    span#upvolt-count= plug.upvolters.length
    =' Upvolts'
  if currentUser
    script var csrfToken = !{JSON.stringify(csrfToken)};
    script(src="/upvolt.js")


doctype html

div.wrapper.memberships(
    ng-controller="MembershipsController as ctrl"
    ng-init="section='admin'; sectionName='ADMIN.MEMBERSHIPS.TITLE'"
    tg-memberships
)
    tg-project-menu

    sidebar.menu-secondary.sidebar.settings-nav(tg-admin-navigation="memberships")
        include ../includes/modules/admin-menu

    section.main.admin-membership.admin-common
        .header-with-actions
            header
                include ../includes/components/mainTitle
                .header-message
                    tg-no-more-memberships-explanation(ng-if="canAddUsers == false", project="project", owner-email="projectOwnerEmail")

                    .action-buttons(
                            ng-if="canAddUsers == true"
                        )
                        button.button-green(
                            translate="ADMIN.MEMBERSHIPS.ADD_BUTTON"
                            title="{{ ADMIN.MEMBERSHIPS.ADD_BUTTON_TITLE | translate }}",
                            ng-click="ctrl.addNewMembers()"
                        )

        include ../includes/modules/admin/admin-membership-table

        div.paginator.memberships-paginator

Refactor button position add memberships

doctype html

div.wrapper.memberships(
    ng-controller="MembershipsController as ctrl"
    ng-init="section='admin'; sectionName='ADMIN.MEMBERSHIPS.TITLE'"
    tg-memberships
)
    tg-project-menu

    sidebar.menu-secondary.sidebar.settings-nav(tg-admin-navigation="memberships")
        include ../includes/modules/admin-menu

    section.main.admin-membership.admin-common
        .header-with-actions
            header
                include ../includes/components/mainTitle
                .header-message(ng-if="canAddUsers == false")
                    tg-no-more-memberships-explanation(project="project", owner-email="projectOwnerEmail")

            .action-buttons(
                    ng-if="canAddUsers == true"
                )
                button.button-green(
                    translate="ADMIN.MEMBERSHIPS.ADD_BUTTON"
                    title="{{ ADMIN.MEMBERSHIPS.ADD_BUTTON_TITLE | translate }}",
                    ng-click="ctrl.addNewMembers()"
                )

        include ../includes/modules/admin/admin-membership-table

        div.paginator.memberships-paginator


.contaner
  .row
    .alert.alert-danger.animated.fadeIn(ng-show='errors')
      div(ng-repeat='error in errors') {{ error.msg }}
  .row
    form(ng-submit='submit(auth)', name="authForm", novalidate)
      .col-sm-8.col-sm-offset-2
        .form-group(ng-class="{'has-error' : authForm.email.$invalid && authForm.email.$dirty}")
          label.control-label(for='email') Email
          input.form-control(type='text', name='email', ng-model='auth.email', placeholder='Email', autofocus=true, required)
        .form-group(ng-class="{'has-error' : authForm.password.$invalid && authForm.password.$dirty}")
          label.control-label(for='password') Пароль
          input.form-control(type='password', name='password', ng-model='auth.password', placeholder='Пароль', required)
        .form-group
          button.btn.btn-primary(type='submit', ng-disabled='authForm.$invalid')
            i.fa.fa-unlock-alt
            | Войти
          a.btn.btn-link(href='/forgot') Забыли пароль ?
        .panel.panel-dafault
          h3: span.social-border Войти как пользователь
          .panel-footer
            include ../partials/social-auth

Fix a typo ".contaner" -> ".container"

.container
  .row
    .alert.alert-danger.animated.fadeIn(ng-show='errors')
      div(ng-repeat='error in errors') {{ error.msg }}
  .row
    form(ng-submit='submit(auth)', name="authForm", novalidate)
      .col-sm-8.col-sm-offset-2
        .form-group(ng-class="{'has-error' : authForm.email.$invalid && authForm.email.$dirty}")
          label.control-label(for='email') Email
          input.form-control(type='text', name='email', ng-model='auth.email', placeholder='Email', autofocus=true, required)
        .form-group(ng-class="{'has-error' : authForm.password.$invalid && authForm.password.$dirty}")
          label.control-label(for='password') Пароль
          input.form-control(type='password', name='password', ng-model='auth.password', placeholder='Пароль', required)
        .form-group
          button.btn.btn-primary(type='submit', ng-disabled='authForm.$invalid')
            i.fa.fa-unlock-alt
            | Войти
          a.btn.btn-link(href='/forgot') Забыли пароль ?
        .panel.panel-dafault
          h3: span.social-border Войти как пользователь
          .panel-footer
            include ../partials/social-auth


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

Simplify formatting the Rom's timestamp.

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


extends /src/layouts/post

block exports
  -exports.type = "post"
  -exports.comments = true
  -exports.authors = ["kud", "MoOx"]
  -exports.title = "L'auto-entrepenariat : retour d'expériences."
  -exports.tags = ["auto-entrepreneur", "administratif", "entreprendre"]
  -exports.date = "2014-10-30"

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

Remove full stop at the end.

extends /src/layouts/post

block exports
  -exports.type = "post"
  -exports.comments = true
  -exports.authors = ["kud", "MoOx"]
  -exports.title = "L'auto-entrepenariat : retour d'expériences"
  -exports.tags = ["auto-entrepreneur", "administratif", "entreprendre"]
  -exports.date = "2014-10-30"

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


doctype 5
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='/stylesheets/github.css')
  body
    a(href='https://github.com/renstrom/webassets')
      img(style='position: absolute; top: 0; right: 0; border: 0;',src='https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png',alt='Fork me on GitHub')
    block content
    script(src='/javascripts/rainbow-custom.min.js')

Use dynamic protocol reference to "Fork me..." image.

doctype 5
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    link(rel='stylesheet', href='/stylesheets/github.css')
  body
    a(href='https://github.com/renstrom/webassets')
      img(style='position: absolute; top: 0; right: 0; border: 0;',src='//s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png',alt='Fork me on GitHub')
    block content
    script(src='/javascripts/rainbow-custom.min.js')


.block-sidebar__section.block-sidebar__section--connect
  if connections && connections.length
    - s = connections.length == 1 ? '' : 's'
    .block-sidebar__separator(id="tab-connection-count") #{connections.length} Connection#{s}
    .js-connections-list
      for channel in connections
        .block-connection-outer
          include ../../../../components/list_view/templates/_connection

    .js-url-connections-list
      //- rendered on the client
    .block-sidebar__section--connect__button.pointer.js-connect-button Connect
    .block-connect-container.connect-container
      //- rendered on the client

Add arrow to connect button

.block-sidebar__section.block-sidebar__section--connect
  if connections && connections.length
    - s = connections.length == 1 ? '' : 's'
    .block-sidebar__separator(id="tab-connection-count") #{connections.length} Connection#{s}
    .js-connections-list
      for channel in connections
        .block-connection-outer
          include ../../../../components/list_view/templates/_connection

    .js-url-connections-list
      //- rendered on the client
    .block-sidebar__section--connect__button.pointer.js-connect-button Connect →
    .block-connect-container.connect-container
      //- rendered on the client


extends layout

block content
  h1= title
  p Welcome to #{title}
  a(href="https://www.facebook.com/dialog/oauth?client_id=" + facebookAppId + "&redirect_uri=https://salty-beach-7387.herokuapp.com/facebook/&scope=public_profile,user_friends,email,user_about_me,user_actions.books,user_actions.fitness,user_actions.music,user_actions.news,user_actions.video,user_birthday,user_education_history,user_events,user_games_activity,user_hometown,user_likes,user_location,user_managed_groups,user_photos,user_posts,user_relationships,user_relationship_details,user_religion_politics,user_tagged_places,user_videos,user_website,user_work_history") Sync with Facebook

Add all links to the title page

extends layout

block content
  h1= title
  p Welcome to #{title}
  a(href="https://www.facebook.com/dialog/oauth?client_id=" + facebookAppId + "&redirect_uri=https://salty-beach-7387.herokuapp.com/facebook/&scope=public_profile,user_friends,email,user_about_me,user_actions.books,user_actions.fitness,user_actions.music,user_actions.news,user_actions.video,user_birthday,user_education_history,user_events,user_games_activity,user_hometown,user_likes,user_location,user_managed_groups,user_photos,user_posts,user_relationships,user_relationship_details,user_religion_politics,user_tagged_places,user_videos,user_website,user_work_history") Sync with Facebook
  br
  hr

  div
    a(href="https://salty-beach-7387.herokuapp.com/facebook/profile/init") Create DSM [Profile]
  div
    a(href="https://salty-beach-7387.herokuapp.com/facebook/posts/init") Create DSM [Timeline]
  div
    a(href="https://salty-beach-7387.herokuapp.com/facebook/events/init") Create DSM [Events]
  br
  div
    a(href="https://salty-beach-7387.herokuapp.com/facebook/profile/update") Pull Profile Data
  div
    a(href="https://salty-beach-7387.herokuapp.com/facebook/profile/update") Pull Timeline Data
  div
    a(href="https://salty-beach-7387.herokuapp.com/facebook/profile/update") Pull Events Data


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

Tidy up the feed items to have a header, body and footer.

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


.row
    .col-lg-12
        .page-header
            h1= t('app.search.header')
        .page-content
            .row
                .col-12.col-lg-12
                    form#search-form(role='form')
                        .form-group
                            label(for='name') Name
                            input#name.form-control(type='text',name='name',placeholder='')
                            span#help.help-block
                        .form-group
                            label(for='achievements') Number of Achievements
                            input#achievements.form-control(type='text',name='achievements',placeholder='')
                        .form-group
                            label(for='metacritic') Metacritic Score
                            input#metacritic.form-control(type='text',name='metacritic',placeholder='')
                        .form-group
                            label(for='recommendations') Number of Recommendations
                            input#recommendations.form-control(type='text',name='recommendations',placeholder='')
                        .row
                            |{@iterate key=.}
                            .form-group.col-12.col-lg-4
                                label.capitalize(for='{$key}') {$key}
                                select.form-control(name='{$key}',multiple)
                                    |{@iterate key=$value}
                                    option.capitalize(value='{$value.name}') {$value.name}
                                    |{/iterate}
                            |{/iterate}
                        button.btn.btn-primary(type='submit')= t('app.buttons.search')

Update form to submit to URL

.row
    .col-lg-12
        .page-header
            h1= t('app.search.header')
        .page-content
            .row
                .col-12.col-lg-12
                    form#search-form(role='form',method='GET',action='/search')
                        .form-group
                            label(for='name') Name
                            input#name.form-control(type='text',name='name',placeholder='')
                            span#help.help-block
                        .form-group
                            label(for='achievements') Number of Achievements
                            input#achievements.form-control(type='text',name='achievements',placeholder='')
                        .form-group
                            label(for='metacritic') Metacritic Score
                            input#metacritic.form-control(type='text',name='metacritic',placeholder='')
                        .form-group
                            label(for='recommendations') Number of Recommendations
                            input#recommendations.form-control(type='text',name='recommendations',placeholder='')
                        .row
                            |{@iterate key=.}
                            .form-group.col-12.col-lg-4
                                label.capitalize(for='{$key}') {$key}
                                select.form-control(name='{$key}',multiple)
                                    |{@iterate key=$value}
                                    option.capitalize(value='{$value.name}') {$value.name}
                                    |{/iterate}
                            |{/iterate}
                        button.btn.btn-primary(type='submit')= t('app.buttons.search')


a(id="#{id}", href="#albums/#{id}")
    img(src="#{thumbsrc})")
    span.title
        if folderid == "all"
            = title
        else
            b= title

Fix syntax error on default thumbnail

a(id="#{id}", href="#albums/#{id}")
    img(src="#{thumbsrc}")
    span.title
        if folderid == "all"
            = title
        else
            b= title


.container

block title
  h1 Budget Comparison Tool

  p
  |Open Budget: Grand Rapids is still awaiting 2018 budget data from the City of Grand Rapids. In 2016, the City partnered with Citizen Labs to create and promote this website to increase understanding and provide transparency in our city government. Once we have 2018 budget data we will be able to provide the comparison tool.

Since 2017 Grand Rapids Budget ApprovedCountup

  #root

script(src="js/dist/compare.bundle.js")

Revert "add counter to page"

.container
  #root

script(src="js/dist/compare.bundle.js")


extends layout

block body
  main
    h1 Instant.io - Streaming file transfer over WebTorrent
    p Download/upload files using the WebTorrent protocol (BitTorrent over WebRTC). This is a beta.
    h2#logHeading(style='display: none') Log
    .speed
    .log

    h2 Start seeding
    p
      | Drag-and-drop a file (or files) to begin sharing. Or choose a file:
      | #{ ' ' }
      input(type='file', name='upload', multiple)

    h2 Start downloading
    form
      label(for='infoHash') Download a file by info hash
      input(name='infoHash')
      button(type='submit') Download

    footer
      p: small WebTorrent is powered by JavaScript and WebRTC. Works in Chrome, Firefox, and Opera (desktop and Android).
      p: small Code is available on GitHub under MIT License. Run localStorage.debug = '*' in the console and refresh to enable verbose logs.

Support directory seeding from upload input

extends layout

block body
  main
    h1 Instant.io - Streaming file transfer over WebTorrent
    p Download/upload files using the WebTorrent protocol (BitTorrent over WebRTC). This is a beta.
    h2#logHeading(style='display: none') Log
    .speed
    .log

    h2 Start seeding
    p
      | Drag-and-drop a file (or files) to begin sharing. Or choose a file:
      | #{ ' ' }
      input(type='file', name='upload', multiple, webkitdirectory)

    h2 Start downloading
    form
      label(for='infoHash') Download a file by info hash
      input(name='infoHash')
      button(type='submit') Download

    footer
      p: small WebTorrent is powered by JavaScript and WebRTC. Works in Chrome, Firefox, and Opera (desktop and Android).
      p: small Code is available on GitHub under MIT License. Run localStorage.debug = '*' in the console and refresh to enable verbose logs.


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

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

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

Add navigation to main site from blog.

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

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

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


!!! 5
html(lang="en")
    head
        title
          #{page_url}
    frameset(rows="49,*", frameborder="0", framespacing="0", cols="*")
        frame(src=header_url)
        frame(src=parse_url)
        noframes
            h1 Your browser does not support frames

Fix chrome frame resize bug.

!!! 5
html(lang="en")
    head
        title
          #{page_url}
        style * { height:100%; }
        //- 100% is a workaround for https://code.google.com/p/chromium/issues/detail?id=299614
    frameset(rows="49,*", frameborder="0", framespacing="0", cols="*")
        frame(src=header_url)
        frame(src=parse_url)
        noframes
            h1 Your browser does not support frames


mixin Posts(limit, tags)
  .putainde-List
    -var posts = getPages({type:"post"})
    -posts.sort(function(prev, next){return prev.date > next.date ? -1 : 1})
    if limit
      -posts = posts.slice(0, limit)
    if tags
      -var flag = -1
    each post in posts
      -var author = contributors.map[post.author]
      .putainde-List-item.js-Post

        +Avatar(author).putainde-List-authorPicture

        a.putainde-List-title(href="#{uri(post.slug + '.html', page)}")
          | #{post.title}

        if post.tags
          ul.putainde-Tags
            each tag in post.tags
              if tags
                -if(!tags.hasOwnProperty(tag))
                  - tags[tag] = ++flag
              li.putainde-Tag(
                class=tags ? "js-Tag" : null
                data-tag=tags ? "#{tags[tag]}" : null
              )
                | #{tag}

        .putainde-List-author
          | #{lang.initialCommit}
          =" "
          a(href="http://github.com/#{author.github}")
            | #{post.author}
          if post.date
            br
            time #{lang.the} #{formatDate(post.date)}

  if tags
    .putainde-Message.putainde-Message--hidden.js-NoPosts
      | #{lang.noPosts}

Fix "initial commit par" link sur le username

mixin Posts(limit, tags)
  .putainde-List
    -var posts = getPages({type:"post"})
    -posts.sort(function(prev, next){return prev.date > next.date ? -1 : 1})
    if limit
      -posts = posts.slice(0, limit)
    if tags
      -var flag = -1
    each post in posts
      -var author = contributors.map[post.author]
      .putainde-List-item.js-Post

        +Avatar(author).putainde-List-authorPicture

        a.putainde-List-title(href="#{uri(post.slug + '.html', page)}")
          | #{post.title}

        if post.tags
          ul.putainde-Tags
            each tag in post.tags
              if tags
                -if(!tags.hasOwnProperty(tag))
                  - tags[tag] = ++flag
              li.putainde-Tag(
                class=tags ? "js-Tag" : null
                data-tag=tags ? "#{tags[tag]}" : null
              )
                | #{tag}

        .putainde-List-author
          | #{lang.initialCommit}
          =" "
          a(href="http://github.com/#{author.login}")
            | #{post.author}
          if post.date
            br
            time #{lang.the} #{formatDate(post.date)}

  if tags
    .putainde-Message.putainde-Message--hidden.js-NoPosts
      | #{lang.noPosts}


h1.home-title CEE's Interactive Activities

ul.home-activity-list
  each activity in activities
    li.home-activity-item
      a.home-activity-link(href='#activity/' + activity.slug + '/')
        h3.home-activity-name=activity.config.name
        p.home-activity-desc= activity.config.shortDesc

Add For Instructors section under activity list on /

h1.home-title CEE's Interactive Activities

ul.home-activity-list
  each activity in activities
    li.home-activity-item
      a.home-activity-link(href='#activity/' + activity.slug + '/')
        h3.home-activity-name=activity.config.name
        p.home-activity-desc= activity.config.shortDesc

h2.home-title For Instructors

ul.home-activity-list
  li.home-activity-item
    a.home-activity-link(href='#room/')
      h3.home-activity-name Create Activity Room
      p.home-activity-desc Create a multi user room for an activity


a.unit(href="/unit/#{id}")
  .service-type
    = t('position.service_type.' + area.get('type'))
  .title
    = name
  if emergencyUnitId
    .emergency-unit-notice
      != t('position.emergency_care.common', {children: t('position.emergency_care.children')})
      = " "
      a(href="/unit/" + emergencyUnitId, class="blue-link")
        != t('position.emergency_care.unit.' + emergencyUnitId)
      = " "
      != t('position.emergency_care.link')

Add street address to district unit list.

a.unit(href="/unit/#{id}")
  .service-type
    = t('position.service_type.' + area.get('type'))
  .title
    = name
  .address
    if street_address
      = street_address
  if emergencyUnitId
    .emergency-unit-notice
      != t('position.emergency_care.common', {children: t('position.emergency_care.children')})
      = " "
      a(href="/unit/" + emergencyUnitId, class="blue-link")
        != t('position.emergency_care.unit.' + emergencyUnitId)
      = " "
      != t('position.emergency_care.link')


extends layout

block content
  .container
    .row#nickname-row
      include partials/greeting
    .row: .col-lg-12: .panel(class='panel-primary')
      .panel-heading
        h3
          span.label JOIN A DAILY
      .panel-body
        .row
          .col-lg-9(class='col-xs-9')
            input(class="form-control text-center" type='text' placeholder="Give your stand up a name...")
          .col-lg-3(class='col-xs-3')
            button.form-control(class='btn-large btn-warning')
              i.glyphicon(class='glyphicon-plus')
        hr
        .panel: button.form-control(class='btn-large btn-success')
          i.glyphicon(class='glyphicon-time')
          |  RTBI DAILY STANDUP
          i.glyphicon(class='glyphicon-time')
        .panel: button.form-control(class='btn-large btn-success')
          i.glyphicon(class='glyphicon-time')
          |  IMDB DAILY STANDUP
          i.glyphicon(class='glyphicon-time')

block extra scripts
  script(src='/javascripts/async.js')

Rename client js include to match static file

extends layout

block content
  .container
    .row#nickname-row
      include partials/greeting
    .row: .col-lg-12: .panel(class='panel-primary')
      .panel-heading
        h3
          span.label JOIN A DAILY
      .panel-body
        .row
          .col-lg-9(class='col-xs-9')
            input(class="form-control text-center" type='text' placeholder="Give your stand up a name...")
          .col-lg-3(class='col-xs-3')
            button.form-control(class='btn-large btn-warning')
              i.glyphicon(class='glyphicon-plus')
        hr
        .panel: button.form-control(class='btn-large btn-success')
          i.glyphicon(class='glyphicon-time')
          |  RTBI DAILY STANDUP
          i.glyphicon(class='glyphicon-time')
        .panel: button.form-control(class='btn-large btn-success')
          i.glyphicon(class='glyphicon-time')
          |  IMDB DAILY STANDUP
          i.glyphicon(class='glyphicon-time')

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


template(name="archivedBoards")
  h2
    i.fa.fa-archive
    | {{_ 'archived-boards'}}

  ul.archived-lists
    each archivedBoards
      li.archived-lists-item
        div.board-header-btns
          if currentUser.isBoardAdmin
            button.board-header-btn.js-delete-board
              i.fa.fa-trash-o
              | {{_ 'delete-board'}}
          button.board-header-btn.js-restore-board
            i.fa.fa-undo
            | {{_ 'restore-board'}}
          = title
    else
      li.no-items-message {{_ 'no-archived-boards'}}

template(name="boardDeletePopup")
  p {{_ 'delete-board-confirm-popup'}}
  button.js-confirm.negate.full(type="submit") {{_ 'delete'}}

Fix delete board button not visible.

template(name="archivedBoards")
  h2
    i.fa.fa-archive
    | {{_ 'archived-boards'}}

  ul.archived-lists
    each archivedBoards
      li.archived-lists-item
        div.board-header-btns
          button.board-header-btn.js-delete-board
            i.fa.fa-trash-o
            | {{_ 'delete-board'}}
          button.board-header-btn.js-restore-board
            i.fa.fa-undo
            | {{_ 'restore-board'}}
          = title
    else
      li.no-items-message {{_ 'no-archived-boards'}}

template(name="boardDeletePopup")
  p {{_ 'delete-board-confirm-popup'}}
  button.js-confirm.negate.full(type="submit") {{_ 'delete'}}


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

title
    block 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")

!=favicon_tag(theme.favicon)

link(rel="canonical", href="#{config.url + '/' + page.path}")

link(rel="stylesheet", href="//#{theme.google_fonts_mirror || 'fonts.googleapis.com'}/css?family=Kreon:400,700")
link(rel="stylesheet", href="//at.alicdn.com/t/font_1451304868_2981977.css")
link(rel="stylesheet", href=url_for("styles/sleepless.css"))

- var domain_list = theme.enforce_ssl_on_domains;

if domain_list
    script.
        if (!{JSON.stringify(domain_list)}.indexOf(window.location.host) >= 0 && window.location.protocol !== 'https:') {
            window.location.protocol = 'https:';
        }

Adjust order of meta tags

meta(charset="utf-8")

title
    block title
        = config.title

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

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

!=favicon_tag(theme.favicon)

link(rel="canonical", href="#{config.url + '/' + page.path}")

link(rel="stylesheet", href="//#{theme.google_fonts_mirror || 'fonts.googleapis.com'}/css?family=Kreon:400,700")
link(rel="stylesheet", href="//at.alicdn.com/t/font_1451304868_2981977.css")
link(rel="stylesheet", href=url_for("styles/sleepless.css"))

- var domain_list = theme.enforce_ssl_on_domains;

if domain_list
    script.
        if (!{JSON.stringify(domain_list)}.indexOf(window.location.host) >= 0 && window.location.protocol !== 'https:') {
            window.location.protocol = 'https:';
        }


h1= self.t('admin.forum.title')

ul.context_menu
  li: a(href=self.link_to('admin.forum.add_category'))= self.t('admin.forum.add_forum')
  li: a(href=self.link_to('admin.forum.add_forum'))= self.t('admin.forum.add_category')

.threads
//-
  ul
    - each category in self.sections
      li
        p= category.title
        .controls
          // Category controls should be here
        - each forum in category.child_list
          ul
            li
              p= forum.title
              .controls
                // Forum controls should be here
  .permissions
    form
      input(type="text", name='moderator')
      select(name='moderator_group')
        option(value='')
    input(type="button", value=self.t('admin.forum.add_moderator'))

Move breadcrumbs stub from layout to current pages(ACP)

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

h1= self.t('admin.forum.title')

ul.context_menu
  li: a(href=self.link_to('admin.forum.add_category'))= self.t('admin.forum.add_forum')
  li: a(href=self.link_to('admin.forum.add_forum'))= self.t('admin.forum.add_category')

.threads
//-
  ul
    - each category in self.sections
      li
        p= category.title
        .controls
          // Category controls should be here
        - each forum in category.child_list
          ul
            li
              p= forum.title
              .controls
                // Forum controls should be here
  .permissions
    form
      input(type="text", name='moderator')
      select(name='moderator_group')
        option(value='')
    input(type="button", value=self.t('admin.forum.add_moderator'))


extends ../../../layouts/base-whitefooter.jade

block head
  title DC/OS Release 1.8.7

block content

  .container.container--dark-background
    +header

    .container__content
      h1 DC/OS Release 1.8.7
      p.hero-subtitle
        a(href='https://downloads.dcos.io/dcos/stable/dcos_generate_config.sh').cta.cta--button Download
        a(href='/docs/1.8/').cta.cta--text View Documentation →

  .container
    .container__content
      .container__content--release-notes.docs-layout__docs-content
        include:markdown notes.md

  .container
      +footer

Add 1.8.7 hash for download

extends ../../../layouts/base-whitefooter.jade

block head
  title DC/OS Release 1.8.7

block content

  .container.container--dark-background
    +header

    .container__content
      h1 DC/OS Release 1.8.7
      p.hero-subtitle
        a(href='https://downloads.dcos.io/dcos/stable/commit/1b43ff7a0b9124db9439299b789f2e2dc3cc086c/dcos_generate_config.sh').cta.cta--button Download
        a(href='/docs/1.8/').cta.cta--text View Documentation →

  .container
    .container__content
      .container__content--release-notes.docs-layout__docs-content
        include:markdown notes.md

  .container
      +footer


.staticPage
	h1 Getting Bloom On Linux
	P Bloom 3 is currently available
		strong
			|  for testing
		| on Ubuntu Precise and Trusty.

	H3 Step 1: Add the repository to your sytem
	pre
		sudo echo have sudo
		wget -qO - http://packages.sil.org/sil.gpg | sudo apt-key add -
		wget -qO - http://linux.lsdev.sil.org/downloads/sil-testing.gpg | sudo apt-key add -
		sudo add-apt-repository "deb http://packages.sil.org/ubuntu $(lsb_release -sc) main"
		sudo add-apt-repository "deb http://packages.sil.org/ubuntu $(lsb_release -sc)-experimental main"
		sudo add-apt-repository "deb http://linux.lsdev.sil.org/ubuntu $(lsb_release -sc) main"
		sudo add-apt-repository "deb http://linux.lsdev.sil.org/ubuntu $(lsb_release -sc)-experimental main"
		sudo apt-get update
		sudo apt-get dist-upgrade
	H3 Step 2: Add Bloom Desktop
	pre
		sudo apt-get install bloom-desktop

	H3 Reporting Errors While Testing

	p Start Bloom in a new Terminal. If Bloom dies/crashes,
		ol
			li Create a .txt file from the contents of the Terminal.
			li Look at /var/crash for a file created about the time of the Bloom crash.
			li Attach those files with information about what OS you were using (precise, trusty) (64bit, 32bit) and where the OS was running (Virtual Machine, Real hardware), and what you were doing.  Using Screenshot is a plus for when you feel that something is not quite right about what is happening.
			li Mail to issues at bloomlibrary dot o r g.

Remove extra error reporting instructions.


.isic-terms-acceptance
  label.control-label(for="isic-terms-agreement")
    | Terms of Use
  #isic-terms-agreement.isic-legal-container
    .isic-legal-content
      include legal/terms_of_use.html

  .isic-terms-agreement-link-container
    a.isic-terms-agreement-link(href="#{documentsRoot}/Terms of Use.txt" download="Terms of Use.txt")
      i.icon-doc-text
      | Download as text
    a.isic-terms-agreement-link(href="#{documentsRoot}/Terms of Use.pdf" download="Terms of Use.pdf")
      i.icon-file-pdf
      | Download as PDF

  p
    button#isic-terms-accept.btn.btn-primary.btn-md I Accept
    button#isic-terms-reject.btn.btn-primary.btn-md I Decline

Apply form page style to Terms of Use acceptance page

.isic-form-page.isic-terms-acceptance
  .isic-form-container
    .isic-form-group
      h3 Terms of Use
      #isic-terms-agreement.isic-legal-container
        .isic-legal-content
          include legal/terms_of_use.html

      .isic-terms-agreement-link-container
        a.isic-terms-agreement-link(href="#{documentsRoot}/Terms of Use.txt" download="Terms of Use.txt")
          i.icon-doc-text
          | Download as text
        a.isic-terms-agreement-link(href="#{documentsRoot}/Terms of Use.pdf" download="Terms of Use.pdf")
          i.icon-file-pdf
          | Download as PDF

      .isic-terms-agreement-button-container.btn-toolbar
        button#isic-terms-accept.btn.btn-primary.btn-md I Accept
        button#isic-terms-reject.btn.btn-primary.btn-md I Decline


.user-box.span1
	a(href="#", rel="tooltip", title="#{locals.currentUser.image.url}")
		img.avatar-small.img-rounded.avatar(src="#{locals.currentUser.image.url}")
		.clearfix
		small.user-name="@ " + locals.currentUser.displayName

Make the name only show on hover

.user-box.span1
	a(href="#", rel="tooltip", title="#{locals.currentUser.displayName}")
		img.avatar-small.img-rounded.avatar(src="#{locals.currentUser.image.url}")
		.clearfix


extends layout

block content
    p.lead Friendly gebos
    ul
        - for (var i =0; i < friends.length; i++)
            li #{friends[i].name} - #{friends[i].email}
                button.btn.btn-default.btn-mini
                    span.glyphicon.glyicon-star Poke
    p.lead Registered agents
    ul
        - for (var i = 0; i < registrants.length; i++)
            li #{registrants[i].name} - #{registrants[i].email}
                button.btn.btn-default.btn-mini
                    span.glyphicon.glyicon-star Poke

Remove button from friends list


link(rel="canonical" href="#{channel.href()}")
link(
  rel='alternate'
  type='application/rss+xml'
  title="Are.na / #{channel.get('title')} / Feed"
  href="#{channel.href()}/feed/rss"
)

//- Do not index private channels
if channel.get('status') == 'private'
  meta(name="robots" content="none")

//- Do not index channels who's users have turned off search indexing
unless channel.get('can_index') || followers
  meta(name="robots" content="none")

//- Standard channel meta
meta(name="twitter:title", content="Are.na / #{channel.get('title')}")
meta(name="twitter:url", content="https://www.are.na/#{author.get('slug')}/#{channel.get('slug')}")
meta(property="og:title" content="Are.na / #{channel.get('title')}")
meta(property="og:url" content="https://www.are.na/#{author.get('slug')}/#{channel.get('slug')}")

- description = (channel.has('metadata') && channel.get('metadata').description && channel.get('metadata').description.replace(/(?:\r\n|\r|\n)/g, ' ')) || "Are.na is a social platform for creative and collaborative research."
meta(name="twitter:description", content=description)
meta(property="og:description" content=description)

Update meta tag for channel app

link(rel="canonical" href="#{sd.APP_URL}#{channel.href()}")
link(
  rel='alternate'
  type='application/rss+xml'
  title="Are.na / #{channel.get('title')} / Feed"
  href="#{channel.href()}/feed/rss"
)

//- Do not index private channels
if channel.get('status') == 'private'
  meta(name="robots" content="none")

//- Do not index channels who's users have turned off search indexing
unless channel.get('can_index') || followers
  meta(name="robots" content="none")

//- Standard channel meta
meta(name="twitter:title", content="Are.na / #{channel.get('title')}")
meta(name="twitter:url", content="https://www.are.na/#{author.get('slug')}/#{channel.get('slug')}")
meta(property="og:title" content="Are.na / #{channel.get('title')}")
meta(property="og:url" content="https://www.are.na/#{author.get('slug')}/#{channel.get('slug')}")

- description = (channel.has('metadata') && channel.get('metadata').description && channel.get('metadata').description.replace(/(?:\r\n|\r|\n)/g, ' ')) || "Are.na is a social platform for creative and collaborative research."
meta(name="twitter:description", content=description)
meta(property="og:description" content=description)
meta(name="Description" content=description)


h2.sr-only= t('personalisation.language')
each item, index in items
  if index > 0
    span.separator= ' | '
  if type == 'visible'
    a.external-link.language(href=item.link data-language!=item.code)
      = item.name
  else if type == 'hidden'
    a.external-link.language(href=item.link data-language!=item.code tabindex='-1')
      = item.name

Fix for accessing language controls wiht NVDA

h2.sr-only= t('personalisation.language')
each item, index in items
  if index > 0
    span.separator(aria-hidden='true')= ' | '
  if type == 'visible'
    a.external-link.language(href=item.link data-language!=item.code)
      = item.name
  else if type == 'hidden'
    div
      a.external-link.language(href=item.link data-language!=item.code tabindex='-1')
        = item.name


extends layout
block content
  h1 Open Access Button

  p A BMJ / Rewired State hackday hack

  h2 The team

  ul.thumbnails
    li.span2
      .thumbnail
        img(src='/img/joe.jpg')
        .caption
          h3 Joe
    li.span2
      .thumbnail
        img(src='/img/david.jpg')
        .caption
          h3 David
    li.span2
      .thumbnail
        img(src='https://secure.gravatar.com/avatar/9637895e310caf25237e89155157b2a7?s=200')
        .caption
          h3 Nick
    li.span2
      .thumbnail
        img(src='https://secure.gravatar.com/avatar/bbb9eb1af3b427f8259df33f6e8844aa?s=200')
        .caption
          h3 Andy
    li.span2
      .thumbnail
        img(src='https://secure.gravatar.com/avatar/d178a6201be696c466c41c355c671707?s=200')
        .caption
          h3 Florian
    li.span2
      .thumbnail
        img(src='/img/elliot.jpg')
        .caption
          h3 Elliot

Add twitter handles to team page

extends layout
block content
  h1 Open Access Button

  p A BMJ / Rewired State hackday hack

  h2 The team

  ul.thumbnails
    li.span2
      a(href="http://twitter.com/Mcarthur_Joe")
        .thumbnail
          img(src='/img/joe.jpg')
          .caption
            h3 Joe
            p @Mcarthur_Joe
    li.span2
      a(href="http://twitter.com/davidecarroll")
        .thumbnail
          img(src='/img/david.jpg')
          .caption
            h3 David
            p @davidecarroll
    li.span2
      a(href="http://twitter.com/nicholascwng")
        .thumbnail
          img(src='https://secure.gravatar.com/avatar/9637895e310caf25237e89155157b2a7?s=200')
          .caption
            h3 Nick
            p @nicholascwng
    li.span2
      a(href="http://twitter.com/andylolz")
        .thumbnail
          img(src='https://secure.gravatar.com/avatar/bbb9eb1af3b427f8259df33f6e8844aa?s=200')
          .caption
            h3 Andy
            p @andylolz
    li.span2
      a(href="http://twitter.com/frathgeber")
        .thumbnail
          img(src='https://secure.gravatar.com/avatar/d178a6201be696c466c41c355c671707?s=200')
          .caption
            h3 Florian
            p @frathgeber
    li.span2
      .thumbnail
        img(src='/img/elliot.jpg')
        .caption
          h3 Elliot


extends layout
block title
    |Statik
block content
    h2
        | Statik
        br
        small
            | The system info collector for
            a(href='http://bukkit.org/', target='_blank') Bukkit
            |  plugins.
    hr
    .row
        .col-lg-12
            p
                | Statik is a statistic collection system for Bukkit plugins, actively used by
                strong #{numberOfPlugins}
                |  plugins and counting.
            p
                | In the last
                strong {TIME}
                | from countries across the globe over
                strong {PLAYERS}
                | have been seen playing on over
                strong #{numberOfServers}
                | servers.

Fix spaces on the text.


extends layouts/default

block content
  h2 List of Users

  each user in users
    a.ui.card.fluid.link(href="/users/#{user._id}")
      .content
        h3.header #{user.username}

  form.ui.form(method="POST", action="/users")
    .field
      input(type="text", name="username")
    .field
      input(type="text", name="email")
    .field
      input(type="password", name="password")

    .field
      button.ui.button.primary(type="submit") Get Started

    a.ui.button
      i.icon.twitter
      | sign in with Twitter

Add labels to registration form.

extends layouts/default

block content
  h2 List of Users

  each user in users
    a.ui.card.fluid.link(href="/users/#{user._id}")
      .content
        h3.header #{user.username}

  h3 Sign Up
  form.ui.form(method="POST", action="/users")
    .field
      label(for="username") Username
      input(type="text", name="username")
    .field
      label(for="username") Email
      input(type="text", name="email")
    .field
      label(for="username") Password
      input(type="password", name="password")

    .field
      button.ui.button.primary(type="submit") Get Started

    a.ui.button
      i.icon.twitter
      | sign in with Twitter


html
    head
        // Third-party CSS
        link(rel='stylesheet', href='/components/bootstrap/dist/css/bootstrap.min.css')

        // Custom 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')
                input(id='log'+i, type='radio', name='log', value=i)
                label(for='log'+i) Show log for this AI
        - }

        div
            button#wsTest Connect to WS server

        div#log

        // Third-party JS
        script(src='/components/jquery/dist/jquery.min.js')
        script(src='/components/underscore/underscore.js')
        //script(src='/components/bootstrap/dist/js/bootstrap.min.js')

        // Custom JS
        script(src='/js/app.js')

Add default for radio buttons

html
    head
        // Third-party CSS
        link(rel='stylesheet', href='/components/bootstrap/dist/css/bootstrap.min.css')

        // Custom 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')
                input(id='log'+i, type='radio', name='log', value=i, checked=i==0)
                label(for='log'+i) Show log for this AI
        - }

        div
            button#wsTest Connect to WS server

        div#log

        // Third-party JS
        script(src='/components/jquery/dist/jquery.min.js')
        script(src='/components/underscore/underscore.js')
        //script(src='/components/bootstrap/dist/js/bootstrap.min.js')

        // Custom JS
        script(src='/js/app.js')


mixin userCard(curr_user, card_user)
  include ../partials/userCard
extends ../layout

block content
  include ../partials/newrequest
  input#csrf_token(type='hidden', name='_csrf', value=_csrf)
  .row.filter-options
    .col-xs-4.service-type.selected Learn
    .col-xs-4.service-type Share
    .col-xs-4.service-type Exchange
    .clearfix.visible-xs-block.visible-sm-block
    .col-md-6.category-filter
      .glyphicon.glyphicon-triangle-right
      | Categories
      div
        each skill in current_user_interests
          .skill-label #{skill.label}
    .col-md-6.range-filter
      | Distance
      input(type='range', min='0', max='20')
    .col-md-12
      .button-wrapper
        button.btn.btn-primary.btn-large.filter-button(type='submit') Apply filter
      .button-wrapper
        button.btn.btn-primary.btn-large(onclick="location.href='/users/surprise';" type='submit') Surprise me!
  .grid.user-list
    each person, i in users
      mixin userCard(user, person)

  script(src='/js/showall.js')
  script(src='/js/profile.js')

Allow categories to be clickable in search filter

mixin userCard(curr_user, card_user)
  include ../partials/userCard
extends ../layout

block content
  include ../partials/newrequest
  input#csrf_token(type='hidden', name='_csrf', value=_csrf)
  .row.filter-options
    .col-xs-4.service-type.selected Learn
    .col-xs-4.service-type Share
    .col-xs-4.service-type Exchange
    .clearfix.visible-xs-block.visible-sm-block
    .col-md-6.category-filter
      .glyphicon.glyphicon-triangle-right
      | Categories
      .skill-select
        each skill in current_user_interests
          .skill-label #{skill.label}
    .col-md-6.range-filter
      | Distance
      input(type='range', min='0', max='20')
    .col-md-12
      .button-wrapper
        button.btn.btn-primary.btn-large.filter-button(type='submit') Apply filter
      .button-wrapper
        button.btn.btn-primary.btn-large(onclick="location.href='/users/surprise';" type='submit') Surprise me!
  .grid.user-list
    each person, i in users
      mixin userCard(user, person)

  script(src='/js/showall.js')
  script(src='/js/profile.js')


head
	title Festival EKlore des Talents et de l'Emploi : festivaleklore.fr
	meta(charset="utf-8")
	meta(name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
	meta(name="google-site-verification" content="p4MtkG3Oo_YOsQlGnl-zHYgkBg7nUP8vv1TeAzZ74Jk")

Add better referencement for google

head
	title Festival EKlore des Talents et de l'Emploi : festivaleklore.fr
	meta(charset="utf-8")
	meta(name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
	meta(name="google-site-verification" content="p4MtkG3Oo_YOsQlGnl-zHYgkBg7nUP8vv1TeAzZ74Jk")
script(type="application/ld+json")
	{
		"@context": "http://schema.org",
		"@type": "Festival",
		"name": "Festival EKlore des Talents et de l'Emploi",
		"url": "http://festivaleklore.fr/",
		"director": "Solenn Thomas",
		"doorTime": "2016-10-03T08:30-02:00",
		"startDate": "2016-10-03T10:00-02:00",
		"endDate": "2016-10-03T23:30-02:00",
		"duration": "P1D",
		"funder": "Solenn Thomas",
		"inLanguage": "fr-FR",
		"image": "http://festivaleklore.fr/pictures/banniere.jpg",
		"isAccessibleForFree": false,
		"location": {
			"@type": "PostalAddress",
			"addressCountry": "France",
			"addressLocality": "Paris",
			"postalCode": "75019",
			"streetAddress": "30 Avenue Corentin Cariou"
		},
		"organizer": "EKlore",
		"description": "Dans un monde du travail à bout de souffle, nous souhaitons nous offrir un bol d’air. Un rendez-vous festif pour nous retrouver, nous, acteurs de l’emploi, décideurs et talents. Rejoindre un réseau social réel et humain pour échanger, révéler et célébrer toute la richesse des talents et des solutions à l’emploi existantes ou à venir."
	}


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

block vars
  - var ngAppDef = 'Home'

append scripts
  script(src='/javascripts/home.js')

block location
  a(href='/home' style="color:#333333") Home

block content
  .row
    .col-md-offset-2.col-md-8
      a(href='/line') Line
			a(href='/maze') Maze
      a(href='/admin') Admin

Revert "Test to see if push to server works"

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

block vars
  - var ngAppDef = 'Home'

append scripts
  script(src='/javascripts/home.js')

block location
  a(href='/home' style="color:#333333") Home

block content
  .row
    .col-md-offset-2.col-md-8
      a(href='/line') Line
      a(href='/admin') Admin


-@ val todos: com.mongodb.casbah.MongoCursor
- attributes("title") = "Todo App"
- attributes("headline") = "My Todo App"

a(href="/new-todo")= "New todo"
- for (todo <- todos)
  p= todo.get("name")

Add more data to view

-@ val todos: com.mongodb.casbah.MongoCursor
- attributes("title") = "Todo App"
- attributes("headline") = "My Todo App"

a(href="/new-todo")= "New todo"
- for (todo <- todos)
  div
    p= todo.get("name")
    p
      Created
      = todo.get("timestamp")
    button Mark Completed
    button Remove


extends ../layout

block content
    .action-page
        h1.form-title.action-title What do you want to do?

        button.btn.btn-primary.btn-action
            b.btn-content Create a new poll
        button.btn.btn-secondary.btn-action([router-link]="['PollsList']")
            b.btn-content Access a poll

Add routing on 'Create a poll' button.

extends ../layout

block content
    .action-page
        h1.form-title.action-title What do you want to do?

        button.btn.btn-primary.btn-action([router-link]="['PollEditor']")
            b.btn-content Create a new poll
        button.btn.btn-secondary.btn-action([router-link]="['PollsList']")
            b.btn-content Access a poll


extends layout

block content
    .page-header
        h1 Vote

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

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

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

Add ui-state-default to list items

extends layout

block content
    .page-header
        h1 Vote

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

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

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


nav.navbar.navbar-default.navbar-fixed-top
  .container
    .row
      .col-md-12
        .navbar-header
          a.navbar-brand(href='https://lapis.blue')
            img.sponge-logo(src='/img/lapis.png')
          button.navbar-toggle.collapsed(data-toggle='collapse', data-target='#navbar-collapse')
            i.fa.fa-bars
        .collapse.navbar-collapse#navbar-collapse
          ul.nav.navbar-nav
            li.active
              a(href='https://docs.lapis.blue')
                i.fa.fa-fw.fa-book
                |  Docs
            li
              a(href='https://jd.lapis.blue')
                i.fa.fa-fw.fa-folder-open
                |  Javadocs
            li
              a(href='https://github.com/LapisBlue')
                i.fa.fa-fw.fa-github
                |  Code
            li
              a(href='https://ci.lapis.blue')
                i.fa.fa-fw.fa-tasks
                |  CI

Use git.io instead of direct link

nav.navbar.navbar-default.navbar-fixed-top
  .container
    .row
      .col-md-12
        .navbar-header
          a.navbar-brand(href='https://lapis.blue')
            img.sponge-logo(src='/img/lapis.png')
          button.navbar-toggle.collapsed(data-toggle='collapse', data-target='#navbar-collapse')
            i.fa.fa-bars
        .collapse.navbar-collapse#navbar-collapse
          ul.nav.navbar-nav
            li.active
              a(href='https://docs.lapis.blue')
                i.fa.fa-fw.fa-book
                |  Docs
            li
              a(href='https://jd.lapis.blue')
                i.fa.fa-fw.fa-folder-open
                |  Javadocs
            li
              a(href='https://git.io/lapis')
                i.fa.fa-fw.fa-github
                |  Code
            li
              a(href='https://ci.lapis.blue')
                i.fa.fa-fw.fa-tasks
                |  CI