{{#instance}}

  {{^is_private_program}}

    {{#using contacts=instance.owners}}
      {{#contacts}}

          Owner:
          {{firstnonempty name email}}

      {{/contacts}}
      {{^contacts}}

          Owner:

            Not Assigned

      {{/contacts}}
    {{/using}}

  {{/is_private_program}}

      Contact:
      {{#using contact=contact}}
      {{#if contact}}
        {{firstnonempty contact.name contact.email}}
      {{else}}

          Not Assigned

      {{/if}}
      {{/using}}

{{/instance}}

Hide owner in lhn popup for private programs

{{#instance}}

  {{^instance.context.id}}

    {{#using contacts=instance.owners}}
      {{#contacts}}

          Owner:
          {{firstnonempty name email}}

      {{/contacts}}
      {{^contacts}}

          Owner:

            Not Assigned

      {{/contacts}}
    {{/using}}

  {{/instance.context.id}}

      Contact:
      {{#using contact=contact}}
      {{#if contact}}
        {{firstnonempty contact.name contact.email}}
      {{else}}

          Not Assigned

      {{/if}}
      {{/using}}

{{/instance}}


{{! transcluded via renderLive in, for example, assets/mustache/sections/tier2_content.mustache }}
{{#instance}}

Title

{{title}}

      {{#if type}}

        {{type.title}}

      {{/if}}

State

      {{status}}

        {{{render_hooks instance.class.shortName 'info_widget_actions'}}}

{{/instance}}

Fix for script error that shows up during search.

{{! transcluded via renderLive in, for example, assets/mustache/sections/tier2_content.mustache }}
{{#instance}}

Title

{{title}}

      {{#if type}}

        {{type.title}}

      {{/if}}

State

      {{status}}

          {{#if instance}}
            {{#if class}}
              {{{render_hooks shortName 'info_widget_actions'}}}
            {{/if}}
          {{/if}}

{{/instance}}


{{<layout}}

{{$applicationContent}}

LOOKING FOR PLAYERS ....

{{/applicationContent}}

{{/layout}}

Add sample of expected page

{{<layout}}

{{$applicationContent}}

A Minecraft Server : PORT

LOOKING FOR PLAYERS ....

      MajorSlackmore

      100

{{/applicationContent}}

{{/layout}}


using System;
using System.Net.Http;
{{#UsingList}}
using {{Item}};
{{/UsingList}}

{{#ClassList}}
namespace {{Namespace}}
{
    public class AutoGeneratedImpl__{{InterfaceName}} : {{InterfaceName}}
    {
        readonly HttpClient client;
        readonly Dictionary<string, Func<HttpClient, object[], object>> methodImpls;

        public AutoGeneratedImpl__{{InterfaceName}}(HttpClient client, IRequestBuilder requestBuilder)
        {
            methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v));
            this.client = client;
        }

{{#MethodList}}
        public {{ReturnType}} {{Name}}({{ArgumentListWithTypes}})
        {
            var arguments = new object[] { {{ArgumentList}} };
            return ({{ReturnType}}) methodImpls["{{Name}}"](client, arguments);
        }
{{/MethodList}}
    }
}

{{/ClassList}}

Write a comment hint, and make the built class partial so people can bolt things into it in a pinch

using System;
using System.Net.Http;
{{#UsingList}}
using {{Item}};
{{/UsingList}}

/* Hey You!
 *
 * This is a generated file, and gets rewritten every time you build the
 * project. If you want to edit it, you need to edit the mustache template
 * in the Refit package */

{{#ClassList}}
namespace {{Namespace}}
{
    public partial class AutoGenerated{{InterfaceName}} : {{InterfaceName}}
    {
        readonly HttpClient client;
        readonly Dictionary<string, Func<HttpClient, object[], object>> methodImpls;

        public AutoGenerated{{InterfaceName}}(HttpClient client, IRequestBuilder requestBuilder)
        {
            methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v));
            this.client = client;
        }

{{#MethodList}}
        public {{ReturnType}} {{Name}}({{ArgumentListWithTypes}})
        {
            var arguments = new object[] { {{ArgumentList}} };
            return ({{ReturnType}}) methodImpls["{{Name}}"](client, arguments);
        }
{{/MethodList}}
    }
}

{{/ClassList}}


{{{includes.navbar}}}

Search Results: {{term}}

                    JSON

Exact Match

                {{{description}}}

                    {{{resultsTable}}}

            {{{includes.footer}}}

Fix wrapper for footer div order on search template


{#
Copyright 2015 Google Inc. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
#}
# This is the monitoring configuration for MongoDB.
# Look for STATS_USER, STATS_PASS, MONGODB_HOST and MONGODB_PORT to adjust your configuration file.
LoadPlugin mongodb
<Plugin "mongodb">
    # When using non-standard MongoDB configurations, replace the below with
    #Host "MONGODB_HOST"
    #Port "MONGODB_PORT"
    Host "localhost"
    Port "27017"

    # If you restricted access to the database, you can set the username and
    # password here:
    #User "STATS_USER"
    #Password "STATS_PASS"

    # For performance/eventually consistent trade-offs you may add this line
    #PreferSecondaryQuery true
</Plugin>

Remove the deprecated PreferSecondaryQuery flag.

{#
Copyright 2015 Google Inc. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
#}
# This is the monitoring configuration for MongoDB.
# Look for STATS_USER, STATS_PASS, MONGODB_HOST and MONGODB_PORT to adjust your configuration file.
LoadPlugin mongodb
<Plugin "mongodb">
    # When using non-standard MongoDB configurations, replace the below with
    #Host "MONGODB_HOST"
    #Port "MONGODB_PORT"
    Host "localhost"
    Port "27017"

    # If you restricted access to the database, you can set the username and
    # password here:
    #User "STATS_USER"
    #Password "STATS_PASS"
</Plugin>


{{!
    Copyright (C) 2015 Google Inc., authors, and contributors <see AUTHORS file>
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
    Created By: miha@reciprocitylabs.com
    Maintained By: miha@reciprocitylabs.com
}}

    {{firstexist link_text "Upload Files to GDrive"}}

{{#pending}}

{{/pending}}

Add new attach icon on missing places


			{{getDate | date.string}}

			{{getTitle}}

			{{{ getExcerpt }}}

Add thumbnail to post in home

		{{# getThumbnail }}

		{{/ getThumbnail }}

				{{getDate | date.string}}

				{{getTitle}}

				{{{ getExcerpt }}}


{{!
    Copyright (C) 2014 Google Inc., authors, and contributors <see AUTHORS file>
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
    Created By: brad@reciprocitylabs.com
    Maintained By: brad@reciprocitylabs.com
}}

{{^instance.cycles.length}}
<li class="inner-nav-button">
  <button type="submit" href="#workflowStart" data-ggrc-action="start-cycle" data-toggle="modal" class="btn" {{^instance.task_groups.length}}disabled="disabled"{{/task_groups}}>
    Start Workflow
  </button>
</li>
{{/instance}}

Use widget count instead of cycles.length

{{!
    Copyright (C) 2014 Google Inc., authors, and contributors <see AUTHORS file>
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
    Created By: brad@reciprocitylabs.com
    Maintained By: brad@reciprocitylabs.com
}}

{{#widget_list}}
{{#if_equals "Current Cycle" internav_display}}
{{!
    We can't use '^instance.cycles.length' instead of count, because
    it isn't live bound and doesn't get updated when Start Workflow is clicked
}}
{{^count}}
  <li class="inner-nav-button">
    <button type="submit" href="#workflowStart" data-ggrc-action="start-cycle" data-toggle="modal" class="btn" {{^instance.task_groups.length}}disabled="disabled"{{/task_groups}}>
      Start Workflow
    </button>
  </li>
{{/count}}
{{/if_equals}}
{{/widget_list}}


machine:
  php:
    version: 5.6.22

dependencies:
  pre:
    - sudo apt-get update; sudo apt-get install subversion

test:
  pre:
    - bash bin/install-wp-tests.sh wordpress_test root '' localhost latest
  override:
    - phpunit

Use correct default user for MySQL on CircleCI

machine:
  php:
    version: 5.6.22

dependencies:
  pre:
    - sudo apt-get update; sudo apt-get install subversion

test:
  pre:
    - bash bin/install-wp-tests.sh wordpress_test ubuntu '' 127.0.0.1 latest
  override:
    - phpunit


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    {{! At the moment we use Angular's $location service in HTML5 mode with
        html5Mode.requireBase left at its default value (true), so this is
        required. In future we should be able to remove this. }}
    <base href="/">
  </head>
  <body>
    <hypothesis-app></hypothesis-app>

    <script class="js-hypothesis-config" type="application/json">
    {{&settings}}
    </script>

    <script src="/client/build/boot.js"></script>
  </body>
</html>

Remove `<base>` tag from sidebar HTML template

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
  </head>
  <body>
    <hypothesis-app></hypothesis-app>

    <script class="js-hypothesis-config" type="application/json">
    {{&settings}}
    </script>

    <script src="/client/build/boot.js"></script>
  </body>
</html>


////////////////////////////////////////////////////////////////////////////////
//
//  EXPANZ
//  Copyright 2008-2011 EXPANZ
//  All Rights Reserved.
//
//  NOTICE: Expanz permits you to use, modify, and distribute this file
//  in accordance with the terms of the license agreement accompanying it.
//
////////////////////////////////////////////////////////////////////////////////

#import <expanziOS/expanz_ui_ActivityInstanceViewController.h>

@interface {{viewControllerName}} : expanz_ui_ActivityInstanceViewController

{{#fields}}
@property(nonatomic, strong) IBOutlet UITextField* {{name}};
{{/fields}}

{{#methods}}
- (IBAction) {{name}};
{{/methods}}

@end

Use 'do' prefix for method action binders.

////////////////////////////////////////////////////////////////////////////////
//
//  EXPANZ
//  Copyright 2008-2011 EXPANZ
//  All Rights Reserved.
//
//  NOTICE: Expanz permits you to use, modify, and distribute this file
//  in accordance with the terms of the license agreement accompanying it.
//
////////////////////////////////////////////////////////////////////////////////

#import <expanziOS/expanz_ui_ActivityInstanceViewController.h>

@interface {{viewControllerName}} : expanz_ui_ActivityInstanceViewController

{{#fields}}
@property(nonatomic, strong) IBOutlet UITextField* {{name}};
{{/fields}}

{{#methods}}
- (IBAction) do{{name}};
{{/methods}}

@end


//
//  Base{{{dto.name}}}.h
//  {{{projectName}}}
//  Version: {{{version}}}
//
//  Created by Service Generator
//

#import <Foundation/Foundation.h>
{{#dto.objectFields}}
@class {{{iosBaseTypeSingular}}};
{{/dto.objectFields}}
{{#dto.objectArrayFields}}
@class {{{iosBaseTypeSingular}}};
{{/dto.objectArrayFields}}

@interface Base{{{dto.name}}} : NSObject <NSCopying, NSMutableCopying, NSCoding>

{{#dto.fields}}
@property (nonatomic, strong) {{{typeIOS}}} *{{{name}}};	///< {{{comment}}} - Field name on service:{{serviceName}}.
{{/dto.fields}}

- (BOOL)isEqualToBase{{{dto.name}}}:(Base{{{dto.name}}} *)other;

@end

Add Xcode 7 generics support

//
//  Base{{{dto.name}}}.h
//  {{{projectName}}}
//  Version: {{{version}}}
//
//  Created by Service Generator
//

#import <Foundation/Foundation.h>
{{#dto.objectFields}}
@class {{{iosBaseTypeSingular}}};
{{/dto.objectFields}}
{{#dto.objectArrayFields}}
@class {{{iosBaseTypeSingular}}};
{{/dto.objectArrayFields}}

@interface Base{{{dto.name}}} : NSObject <NSCopying, NSMutableCopying, NSCoding>

{{#dto.fields}}
	{{#isObjectArray}}
@property (nonatomic, strong) {{{typeIOS}}}<{{{iosBaseTypeSingular}}} *> *{{{name}}};	///< {{{comment}}} - Field name on service:{{serviceName}}.
	{{/isObjectArray}}
	{{^isObjectArray}}
@property (nonatomic, strong) {{{typeIOS}}} *{{{name}}};	///< {{{comment}}} - Field name on service:{{serviceName}}.
	{{/isObjectArray}}
{{/dto.fields}}

- (BOOL)isEqualToBase{{{dto.name}}}:(Base{{{dto.name}}} *)other;

@end


[program:{{ application_name }}]
command = {{ virtualenv_path }}/bin/gunicorn_start
user = {{ gunicorn_user }}
autostart=true
autorestart=true
startretries=3
stdout_logfile = {{ application_log_file }}
redirect_stderr = true

Change user in supervisor ansible provision

[program:{{ application_name }}]
user = root
command = {{ virtualenv_path }}/bin/gunicorn_start
autostart=true
autorestart=true
startretries=3
stdout_logfile = {{ application_log_file }}
redirect_stderr = true


    {{^allFiles}}There are no flow files. To visualize your flow files put them in {{flowDirectory}}{{/allFiles}}
    {{#allFiles.length}}

                Your flow files:

                    {{#allFiles}}

{{.}}

                    {{/allFiles}}

                Compare with:

                    {{#allFiles}}

{{.}}

                    {{/allFiles}}

    {{/allFiles.length}}

Allow to close compared flow

    {{^allFiles}}There are no flow files. To visualize your flow files put them in {{flowDirectory}}{{/allFiles}}
    {{#allFiles.length}}

                Your flow files:

                    {{#allFiles}}

{{.}}

                    {{/allFiles}}

                Compare with:

none

                    {{#allFiles}}

{{.}}

                    {{/allFiles}}

    {{/allFiles.length}}


window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', '{{trackingId}}', 'auto'{{#clientId}}, { 'userId': '{{clientId}}' }{{/clientId}});

ga(function(tracker) {
	var search = location.search;

	var clId = search.match('id=([0-9]{11})');
	if(clId){
	    ga('set', 'userId', clId[1]);
	}

	var unId1 = search.match('cd1=([a-zA-Z0-9]*)');
	if(unId1){
	    ga('set', 'dimension1', unId1[1]);
	}

	var unId2 = search.match('cd2=([a-zA-Z0-9]*)');
	if(unId2){
	    ga('set', 'dimension2', unId2[1]);
	}
});

{{#clientId}}
ga('set', 'dimension1', {{clientId}});
{{/clientId}}

{{#unitId}}
ga('set', 'dimension2', {{unitId}});
{{/unitId}}

ga('set', 'anonymizeIp', true);
ga('send', 'pageview');

Fix trailing 0 for the GA

window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', '{{trackingId}}', 'auto'{{#clientId}}, { 'userId': '{{clientId}}' }{{/clientId}});

ga(function(tracker) {
	var search = location.search;

	var clId = search.match('id=([0-9]{11})');
	if(clId){
	    ga('set', 'userId', clId[1]);
	}

	var unId1 = search.match('cd1=([a-zA-Z0-9]*)');
	if(unId1){
	    ga('set', 'dimension1', unId1[1]);
	}

	var unId2 = search.match('cd2=([a-zA-Z0-9]*)');
	if(unId2){
	    ga('set', 'dimension2', unId2[1]);
	}
});

{{#clientId}}
ga('set', 'dimension1', "{{clientId}}");
{{/clientId}}

{{#unitId}}
ga('set', 'dimension2', "{{unitId}});
{{/unitId}}

ga('set', 'anonymizeIp', true);
ga('send', 'pageview');


<meta http-equiv="X-Frame-Options" content="SAMEORIGIN" />
	<style id="antiClickjack">body{display:none !important;}</style>
	<script type="text/javascript">
		if (self === top) {
			var antiClickjack = document.getElementById("antiClickjack");
			antiClickjack.parentNode.removeChild(antiClickjack);
		} else {
			top.location = self.location;
		}
	</script>

Fix for chrome error X-Frame-Options


{{stopNumber}} (Stop {{stopName}})

{{#buses}}

{{expectedArrival}}: {{line}} to {{destination}} via {{towards}}

{{/buses}}

Remove "towards", because not needed

{{stopNumber}} (Stop {{stopName}})

{{#buses}}

{{expectedArrival}}: {{line}} to {{destination}}

{{/buses}}


{% set nginx = salt['grains.filter_by']({
    'default': {
        'keepalive_timeout': 120,
        'install_from_source': True,
        'log_formats': {
            'main': '$remote_addr - $remote_user [$time_local] $http_host "$request" $status $body_bytes_sent $request_time $upstream_response_time "$http_referer" "$http_user_agent" "$http_x_forwarded_for"',
        },
        'log_files': {
            'access.log': 'main'
        },
        'extra_http': [],
        'package': 'nginx',
        'repo': 'deb https://nginx.org/packages/mainline/debian/ jessie nginx',
        'repo_key_url': 'https://nginx.org/keys/nginx_signing.key',
        'dh_keysize': 4096,
        'allow_plaintext': True,
        'add_default_https': True,
        'add_default_http': True,
    },
}, merge=salt['pillar.get']('nginx')) %}

Add support for debian stretch to nginx state

{% set nginx = salt['grains.filter_by']({
    'base': {
        'keepalive_timeout': 120,
        'install_from_source': True,
        'log_formats': {
            'main': '$remote_addr - $remote_user [$time_local] $http_host "$request" $status $body_bytes_sent $request_time $upstream_response_time "$http_referer" "$http_user_agent" "$http_x_forwarded_for"',
        },
        'log_files': {
            'access.log': 'main'
        },
        'extra_http': [],
        'package': 'nginx',
        'repo': 'deb https://nginx.org/packages/mainline/debian/ jessie nginx',
        'repo_key_url': 'https://nginx.org/keys/nginx_signing.key',
        'dh_keysize': 4096,
        'allow_plaintext': True,
        'add_default_https': True,
        'add_default_http': True,
    },
    'stretch': {
        'repo': 'deb https://nginx.org/packages/mainline/debian/ stretch nginx',
    }
}, grain='oscodename', merge=salt['pillar.get']('nginx'), base='base') %}


{{# _t }}For a thumbnail alongside the tweet, the image must be a minimum size of 120px by 120px. The image will be cropped to a square on all platforms.{{/ _t }}

{{# _t }}For a full-width prominent image, should be at least 280px in width and at least 150px in height.{{/ _t }}

Update notes for "twitter_card_image" property

{{# _t }}For a thumbnail alongside the tweet, the image must be a minimum size of 144px by 144px. The image will be cropped to a square on all platforms.{{/ _t }}

{{# _t }}For a full-width prominent image, should be at least 300px in width and at least 157px in height.{{/ _t }}


{% set packages = salt['grains.filter_by']({
    'RedHat': {
      'vim': 'vim-enhanced',
    },
    'Arch': {
    },
    'Debian': {
    },
    'FreeBSD': {
  },
  'default': {
      'tmux': 'tmux',
      'vim': 'vim',
      'zsh': 'zsh',
  }
}, base='default') %}

{% set shells = salt['grains.filter_by']({
    'RedHat': {
    },
    'Arch': {
    },
    'Debian': {
    },
    'FreeBSD': {
        'zsh': '/usr/local/bin/zsh',
  },
  'default': {
      'zsh': '/usr/bin/zsh',
  }
}, base='default') %}

Fix wrong zsh shell path.

{% set packages = salt['grains.filter_by']({
    'RedHat': {
      'vim': 'vim-enhanced',
    },
    'Arch': {
    },
    'Debian': {
    },
    'FreeBSD': {
  },
  'default': {
      'tmux': 'tmux',
      'vim': 'vim',
      'zsh': 'zsh',
  }
}, base='default') %}

{% set shells = salt['grains.filter_by']({
    'RedHat': {
    },
    'Arch': {
    },
    'Debian': {
    },
    'FreeBSD': {
        'zsh': '/usr/local/bin/zsh',
  },
  'default': {
      'zsh': '/bin/zsh',
  }
}, base='default') %}


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>{{active_channel}} | Clojurians Slack Log</title>
    <link href='http://fonts.googleapis.com/css?family=Lato:400,700,900' rel='stylesheet' type='text/css'>
    <link href='../global.css' rel='stylesheet' type='text/css'>
</head>
<body>
{{> header}}
<div class="main">
    {{> listings}}
    {{> messages}}
</div>
</body>
</html>

Make sure the CSS gets reloaded

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>{{active_channel}} | Clojurians Slack Log</title>
    <link href='http://fonts.googleapis.com/css?family=Lato:400,700,900' rel='stylesheet' type='text/css'>
    <link href='../global.css?20160817' rel='stylesheet' type='text/css'>
</head>
<body>
{{> header}}
<div class="main">
    {{> listings}}
    {{> messages}}
</div>
</body>
</html>


{% extends "chapter.jinja" %}

{% block intro %}
  {% if pg_meta.sp_img %}

{% endif %}
  {% if pg_meta.sp_review %}

“{{ pg_meta.sp_review|e }}”

    {% if pg_meta.sp_reviewsrc %}
&ndash{{ pg_meta.sp_review_src|e }}
{% endif %}

  {% endif %}
{% endblock %}

Fix SP cover image alt attribute


# {{{ method }}} {{{ path }}}

{{#request}}
+ Request{{#contentType}} ({{{contentType}}}){{/contentType}}

{{#headers?}}
    + Headers

            {{#headers}}
            {{{key}}}: {{{value}}}
            {{/headers}}

{{/headers?}}
{{#body?}}
    + Body

{{/body?}}
{{{body}}}
{{/request}}
{{#response}}
+ Response {{{statusCode}}}{{#contentType}} ({{{contentType}}}){{/contentType}}

{{#headers?}}
    + Headers

            {{#headers}}
            {{{key}}}: {{{value}}}
            {{/headers}}

{{/headers?}}
{{#body?}}
    + Body

{{/body?}}
{{{body}}}
{{/response}}

Fix an issue with missing newline


{{!
@param IRI exercise
}}

{{> sparql/prefixes.mustache }}

SELECT (REPLACE(STR(<{{exercise}}>), "^.*\\/([^/]+)$", "$1") AS ?id)
       ?name
       (REPLACE(?_description, "^\\s+|\\s+$", "") AS ?description)
       ?query
WHERE {
  <{{exercise}}> a sp:Query ;
    rdfs:label ?name ;
    rdfs:comment ?_description ;
    sp:text ?query .
}

Trim trailing whitespace from canonical queries

{{!
@param IRI exercise
}}

{{> sparql/prefixes.mustache }}

SELECT (REPLACE(STR(<{{exercise}}>), "^.*\\/([^/]+)$", "$1") AS ?id)
       ?name
       (REPLACE(?_description, "^\\s+|\\s+$", "") AS ?description)
       (REPLACE(?_query, "^\\s+|\\s+$", "") AS ?query)
WHERE {
  <{{exercise}}> a sp:Query ;
    rdfs:label ?name ;
    rdfs:comment ?_description ;
    sp:text ?_query .
}


<!DOCTYPE html>

<title>{{#title}}{{title}} — {{/title}}{{ site }}{{#section}} {{ section }}{{/section}}</title>

<link rel="stylesheet" type="text/css" href="/css/main.css">

{{ site }} {{ section }}

	{{{ header }}}

{{{ yield }}}

Home

Google+

Twitter

GitHub

Add <link> for linking website with G+

<!DOCTYPE html>

<title>{{#title}}{{title}} — {{/title}}{{ site }}{{#section}} {{ section }}{{/section}}</title>

<link rel="stylesheet" type="text/css" href="/css/main.css">

<link href="https://plus.google.com/b/109306111401276833043/109306111401276833043" rel="publisher">

{{ site }} {{ section }}

	{{{ header }}}

{{{ yield }}}

Home

Google+

Twitter

GitHub


<html>

{{$head}}

<link href="{{{ assetPath }}}stylesheets/style.css" media="screen" rel="stylesheet" type="text/css"/>
{{/head}}

{{$bodyStart}}
{{>googleTagManager}}
{{/bodyStart}}

{{$content}}
<main id="content">
{{$applicationContent}}{{/applicationContent}}
</main>
{{/content}}

{{$bodyEnd}}
<script type="text/javascript" src="{{{ assetPath }}}javascript/main.js"></script>
{{/bodyEnd}}

</html>

Refresh the page every 10 seconds

<html>

{{$head}}
<meta http-equiv="refresh" content="10" />
<link href="{{{ assetPath }}}stylesheets/style.css" media="screen" rel="stylesheet" type="text/css"/>
{{/head}}

{{$bodyStart}}
{{>googleTagManager}}
{{/bodyStart}}

{{$content}}
<main id="content">
{{$applicationContent}}{{/applicationContent}}
</main>
{{/content}}

{{$bodyEnd}}
<script type="text/javascript" src="{{{ assetPath }}}javascript/main.js"></script>
{{/bodyEnd}}

</html>


using System;
using System.Net.Http;
{{#UsingList}}
using {{Item}};
{{/UsingList}}

/* Hey You!
 *
 * This is a generated file, and gets rewritten every time you build the
 * project. If you want to edit it, you need to edit the mustache template
 * in the Refit package */

{{#ClassList}}
namespace {{Namespace}}
{
    public partial class AutoGenerated{{InterfaceName}} : {{InterfaceName}}
    {
        readonly HttpClient client;
        readonly Dictionary<string, Func<HttpClient, object[], object>> methodImpls;

        public AutoGenerated{{InterfaceName}}(HttpClient client, IRequestBuilder requestBuilder)
        {
            methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v));
            this.client = client;
        }

{{#MethodList}}
        public {{ReturnType}} {{Name}}({{ArgumentListWithTypes}})
        {
            var arguments = new object[] { {{ArgumentList}} };
            return ({{ReturnType}}) methodImpls["{{Name}}"](client, arguments);
        }
{{/MethodList}}
    }
}

{{/ClassList}}

Make it easier to modify / subclass generated templates

using System;
using System.Net.Http;
{{#UsingList}}
using {{Item}};
{{/UsingList}}

/* Hey You!
 *
 * This is a generated file, and gets rewritten every time you build the
 * project. If you want to edit it, you need to edit the mustache template
 * in the Refit package */

{{#ClassList}}
namespace {{Namespace}}
{
    public partial class AutoGenerated{{InterfaceName}} : {{InterfaceName}}
    {
        public HttpClient Client { get; protected set; }
        readonly Dictionary<string, Func<HttpClient, object[], object>> methodImpls;

        public AutoGenerated{{InterfaceName}}(HttpClient client, IRequestBuilder requestBuilder)
        {
            methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v));
            Client = client;
        }

{{#MethodList}}
        public virtual {{ReturnType}} {{Name}}({{ArgumentListWithTypes}})
        {
            var arguments = new object[] { {{ArgumentList}} };
            return ({{ReturnType}}) methodImpls["{{Name}}"](Client, arguments);
        }
{{/MethodList}}
    }
}

{{/ClassList}}


<!DOCTYPE html>

    <meta charset="utf-8">
    <title>{{title}}</title>
    <link rel="stylesheet" href="http://yui.yahooapis.com/3.3.0/build/cssgrids/grids-min.css">
    <link rel="stylesheet" href="../assets/css/main.css">
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">

{{title}}

Table of Contents

                {{toc}}

{{>layout_content}}

Move TOC to the right of the content.

<!DOCTYPE html>

    <meta charset="utf-8">
    <title>{{title}}</title>
    <link rel="stylesheet" href="http://yui.yahooapis.com/3.3.0/build/cssgrids/grids-min.css">
    <link rel="stylesheet" href="../assets/css/main.css">
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">

{{title}}

{{>layout_content}}

Table of Contents

                {{toc}}


{% from 'states/nginx/map.jinja' import nginx as nginx_map with context %}

proxy_set_header Host              $host;
proxy_set_header X-Real-IP         $remote_addr;
proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Scheme          $scheme;

proxy_buffering on;

{% for target in upstream %}
server {
{% if target.protocols is defined %}
{% set proto = target.protocols %}
{% else %}
{% set proto = protocol %}
{% endif %}
{% if 'http' in proto %}
    listen {{ nginx_map.ports.http }};
{% if ipv6 %}
    listen [::]:{{ nginx_map.ports.http }};
{% endif %}
{% endif %}
{% if 'https' in proto %}
    listen {{ nginx_map.ports.https }} ssl;
{% if ipv6 %}
    listen [::]:{{ nginx_map.ports.https }} ssl;
{% endif %}
{% endif %}

    server_name {{ target.servername }};

    location / {
        proxy_pass {{ target.url }};
    }
{% if acme_backend %}
    location /.well-known/acme-challenge/ {
        proxy_pass http://{{ acme_backend.ip }}/acme/$host$uri;
    }
{% endif %}
}

{% endfor %}

Add redirects for reverse proxies.

{% from 'states/nginx/map.jinja' import nginx as nginx_map with context %}

proxy_set_header Host              $host;
proxy_set_header X-Real-IP         $remote_addr;
proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Scheme          $scheme;

proxy_buffering on;

{% macro listen(target) %}
{% if target.protocols is defined %}
{% set proto = target.protocols %}
{% else %}
{% set proto = protocol %}
{% endif %}
{% if 'http' in proto %}
listen {{ nginx_map.ports.http }};
{% if ipv6 %}
listen [::]:{{ nginx_map.ports.http }};
{% endif %}
{% endif %}
{% if 'https' in proto %}
listen {{ nginx_map.ports.https }} ssl;
{% if ipv6 %}
listen [::]:{{ nginx_map.ports.https }} ssl;
{% endif %}
{% endif %}
{% endmacro %}

{% for target in upstream %}
server {
    {{ listen(target)|indent }}
    server_name {{ target.servername }};

    location / {
        proxy_pass {{ target.url }};
    }
{% if acme_backend %}
    location /.well-known/acme-challenge/ {
        proxy_pass http://{{ acme_backend.ip }}/acme/$host$uri;
    }
{% endif %}
}

{% if target.get('redirect_from', None) is not none %}
server {
    {{ listen(target)|indent }}
{% for server in target['redirect_from'] %}
    server_name {{ server }};
{% endfor %}
    return 301 $scheme://{{ target.servername }}$request_uri;
}
{% endif %}
{% endfor %}


{{# include_jquery? }}
<script type="text/javascript" src="/javascripts/moz_nav/jquery.js"></script>
{{/ include_jquery? }}

<script type="text/javascript"><!--//<![CDATA[
  $(function() {
    var menu_elements = $('#moz-nav-header .extended, #moz-nav-body .extended');

    $(menu_elements).click(function(e) {
      var $target = $(e.target);
      var $this = $(this);
      var originally_focused = $this.hasClass('focused');
      $(menu_elements).removeClass('focused');

      if (!originally_focused) {
        $this.addClass('focused');
      }
    });

    $('body').click(function(e) {
      var $target = $(e.target);
      if (menu_elements.has($target).length === 0) {
        $(menu_elements).removeClass('focused');
      }
    });

    $('#moz-nav-header .feedback').click(function(e) {
      if (typeof Zenbox !== "undefined") {
        Zenbox.show();
        return false;
      }
    });

  });
//]]>--></script>

Fix drop down arrows on user box so they actually drop-down the menu.

{{# include_jquery? }}
<script type="text/javascript" src="/javascripts/moz_nav/jquery.js"></script>
{{/ include_jquery? }}

<script type="text/javascript"><!--//<![CDATA[
  $(function() {
    var menu_elements = $('#moz-nav-header .extended, #moz-nav-body .extended');

    $(menu_elements).click(function(e) {
      var $target = $(e.target);
      var $this = $(this);
      var originally_focused = $this.hasClass('focused');
      $(menu_elements).removeClass('focused');

      if (!originally_focused) {
        $this.addClass('focused');
        return false;
      }
    });

    $('body').click(function(e) {
      var $target = $(e.target);
      if (menu_elements.has($target).length === 0) {
        $(menu_elements).removeClass('focused');
      }
    });

    $('#moz-nav-header .feedback').click(function(e) {
      if (typeof Zenbox !== "undefined") {
        Zenbox.show();
        return false;
      }
    });

  });
//]]>--></script>


{{#allow_creating}}

        + Meeting

          Meeting

{{/allow_creating}}

Set `context` for new Meetings in Interview Responses

{{#allow_creating}}

        + Meeting

        <a href="javascript://" class="section-create" data-toggle="modal-ajax-form" data-modal-reset="reset" data-modal-class="modal-wide" data-object-singular="Meeting" data-object-plural="meetings" data-object-params='{ "{{#if_match parent_instance.constructor.model_singular "Response$"}}response{{else}}{{parent_instance.constructor.table_singular}}{{/if_match}}": {"id" : {{parent_instance.id}}, "type" : "{{parent_instance.constructor.model_singular}}" }, "context": { "id" : {{firstexist parent_instance.context.id "null"}}, "href" : "{{parent_instance.context.href}}", "type" : "{{parent_instance.context.type}}" }, "modal_title" : "Schedule a Meeting" }'>

          Meeting

{{/allow_creating}}


{{#i18n}}Register{{/i18n}}

{{#errors}}
- {{#i18n}}{{.}}{{/i18n}}

{{/errors}}

<form action="" method="post">
    Username: <input type="text" name="username">
    Password: <input type="text" name="password">
    Email: <input type="text" name="email">
    <input type="submit" value="Register">
</form>

Fix for Scenario: Registration error with invalid credentials

{{#i18n}}Register{{/i18n}}

{{#errors}}
Errors occured:
- {{#i18n}}{{.}}{{/i18n}}

{{/errors}}

<form action="" method="post">
    Username: <input type="text" name="username">
    Password: <input type="text" name="password">
    Email: <input type="text" name="email">
    <input type="submit" value="Register">
</form>


Usage:

    {{#cyan}}bower{{/cyan}} register {{#cyan}}<name>{{/cyan}} <url>

Options:

    {{#yellow}}--no-color{{/yellow}} - Do not print colors

Description:

    Register a package.

Add cyan color to <url> parameter

Usage:

    {{#cyan}}bower{{/cyan}} register {{#cyan}}<name>{{/cyan}} {{#cyan}}<url>{{/cyan}}

Options:

    {{#yellow}}--no-color{{/yellow}} - Do not print colors

Description:

    Register a package.


server {
    server_name {{ armada.server_name }};
    access_log /var/log/nginx/{{ armada.server_name }}_access.log;
    error_log /var/log/nginx/{{ armada.server_name }}_error.log;

    root /srv/www/armada/app;

    location /api {
        proxy_pass	http://localhost:8000/api;
        proxy_redirect	off;
        proxy_set_header	Host $host;
    }

}

Switch over from static serving to webpack-dev-server

server {
    server_name {{ armada.server_name }};
    access_log /var/log/nginx/{{ armada.server_name }}_access.log;
    error_log /var/log/nginx/{{ armada.server_name }}_error.log;

    location /api {
        proxy_pass	http://localhost:8000/api;
        proxy_redirect	off;
        proxy_set_header	Host $host;
    }

    location /{
        proxy_pass	http://localhost:8080/;
        proxy_redirect	off;
        proxy_set_header	Host $host;
    }
}


        {{^checkpoints}}
There are no checkpoints.
{{/checkpoints}}
        {{#checkpoints.length}}

Checkpoints:

                {{#checkpoints}}

{{.}}

                {{/checkpoints}}

        {{/checkpoints.length}}

Options:

        <input type="checkbox" id="show-commands" checked="checked">Show commands

Hide options when no flow is selected

{{#flows.length}}

            {{^checkpoints}}
There are no checkpoints.
{{/checkpoints}}
            {{#checkpoints.length}}

Checkpoints:

                    {{#checkpoints}}

{{.}}

                    {{/checkpoints}}

            {{/checkpoints.length}}

Options:

            <input type="checkbox" id="show-commands" checked="checked">Show commands

{{/flows.length}}


rm /tmp/.X10-lock
fuser -k 6010/tcp
Xvfb :10 -ac &
export DISPLAY=:10
java -jar /usr/bin/selenium-server.jar -multiwindow -htmlSuite "*firefox" "{{pillar['directorzone']['selenium-test-url']}}" "{{pillar['directorzone']['selenium-test-root']}}/suite.html" "report.html"
cp report.html {{pillar['directorzone']['selenium-test-root']}}/public/report.html

Kill Selenium server before running tests

rm /tmp/.X10-lock
fuser -k 6010/tcp
fuser -k 4444/tcp
Xvfb :10 -ac &
export DISPLAY=:10
java -jar /usr/bin/selenium-server.jar -multiwindow -htmlSuite "*firefox" "{{pillar['directorzone']['selenium-test-url']}}" "{{pillar['directorzone']['selenium-test-root']}}/suite.html" "report.html"
cp report.html {{pillar['directorzone']['selenium-test-root']}}/public/report.html


{% set jenkins = salt['grains.filter_by']({
    'default': {
        'package': 'jenkins',
        'service': 'jenkins',
        'ports': {
            'tcp': [8080],
        },
    }
}, base='default') %}

Install OpenJDK together with jenkins.

{% set jenkins = salt['grains.filter_by']({
    'default': {
        'packages': [
            'jenkins',
            'java-1.8.0-openjdk',
        ],
        'service': 'jenkins',
        'ports': {
            'tcp': [8080],
        },
    }
}, base='default') %}


{{#avatar}}{{/avatar}}

    {{title}}

{{{tweet}}}

  {{timestamp}}

Put tweet body in a tag of its own.


{{> sparql/prefixes.mustache }}

SELECT (REPLACE(STR(?exercise), "^.*\\/([^/]+)$", "$1") AS ?id)
       ?name
WHERE {
  ?exercise a sp:Query ;
    rdfs:label ?name ;
    sp:text ?query .
}
ORDER BY STRLEN(?query) {{! Complexity ~ query length }}

Order exercises by their manually assigned difficulty

{{> sparql/prefixes.mustache }}

SELECT (REPLACE(STR(?exercise), "^.*\\/([^/]+)$", "$1") AS ?id)
       ?name
WHERE {
  ?exercise a sp:Query ;
    rdfs:label ?name ;
    sp:text ?query ;
    sparqlab:hasDifficulty/skos:notation ?difficulty .
}
ORDER BY ?difficulty STRLEN(?query) {{! Complexity ~ query length }}


{{!
    Copyright (C) 2016 Google Inc.
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
}}

{{{> "/static/mustache/base_objects/tree_view_filter.mustache"}}}

          Object Type

        {{{> "/static/mustache/base_objects/filter_trigger.mustache}}}

Remove filtering from custom attributes list

{{!
    Copyright (C) 2016 Google Inc.
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
}}

          Object Type


{{!
    Copyright (C) 2015 Google Inc., authors, and contributors <see AUTHORS file>
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
    Created By: swizec@reciprocitylabs.com
    Maintained By: swizec@reciprocitylabs.com
}}

{{#if_instance_of parent_instance 'Audit'}}

  {{#if_equals model.shortName 'Control'}}

  {{/if_equals}}

  {{#if_equals model.shortName 'ControlAssessment'}}

  {{/if_equals}}
{{/if_instance_of}}

Add new auto generate control assessment icon


HALLO IK BREEK EVEN EEN SCREENSHOT

Revert "intentionally break a screenshot test"


{% set haproxy = salt["pillar.get"]("haproxy", {}) -%}

{% for domain, config in haproxy.redirects.items() -%}
server {
    listen 127.0.0.1:19002;
    server_name {{ domain }};
    add_header Strict-Transport-Security "max-age={{ config.get("hsts_seconds", 315360000) }}{% if config.get("hsts_subdomains", True) %}; includeSubDomains{% endif %}{% if config.get("hsts_preload", True) %}; preload{% endif %}";

    {% if config.get("hpkp", True) and pillar["tls"].get("pins") -%}
    # Add HPKP headers for anything that is configured to have them.
    add_header Public-Key-Pins 'max-age={{ config.get("hpkp_seconds", 2592000) }}; {% if config.get("hpkp_subdomains", True) %}includeSubDomains; {% endif %}{% for pin in pillar["tls"]["pins"] %}pin-sha256="{{ pin }}"; {% endfor %}';
    {%- endif %}

    return 301 http{% if config.get("tls", True) %}s{% endif %}://{{ config.target }}{% if config.get("request_uri", True) %}$request_uri{% endif %};
}
{% endfor %}

Remove HPKP support, it's mostly a bad idea at this point

{% set haproxy = salt["pillar.get"]("haproxy", {}) -%}

{% for domain, config in haproxy.redirects.items() -%}
server {
    listen 127.0.0.1:19002;
    server_name {{ domain }};
    add_header Strict-Transport-Security "max-age={{ config.get("hsts_seconds", 315360000) }}{% if config.get("hsts_subdomains", True) %}; includeSubDomains{% endif %}{% if config.get("hsts_preload", True) %}; preload{% endif %}";

    return 301 http{% if config.get("tls", True) %}s{% endif %}://{{ config.target }}{% if config.get("request_uri", True) %}$request_uri{% endif %};
}
{% endfor %}


{
    "id": "{{etcd.framework-name}}",
    "container": {
        "docker": {
            "image": "{{resource.assets.container.docker.etcd-docker}}",
            "forcePullImage": true
        },
        "type": "DOCKER",
        "volumes": []
    },
    "args": [],
    "cpus": {{etcd.cpus}},
    "mem": {{etcd.mem}},
    "instances": 1,
    "ports": [0, 0, 0],
    "env": {
      "FRAMEWORK_NAME":"{{etcd.framework-name}}",
      "CLUSTER_SIZE":"{{etcd.cluster-size}}",
      "MESOS_MASTER":"{{mesos.master}}",
      "ZK_PERSIST":"{{etcd.zk}}",
      "VERBOSITY":"{{etcd.logging-verbosity}}",
      "AUTO_RESEED":"{{etcd.auto-reseed}}",
      "RESEED_TIMEOUT":"{{etcd.reseed-timeout}}",
      "DISK_LIMIT":"{{etcd.disk-limit}}",
      "CPU_LIMIT":"{{etcd.cpu-limit}}",
      "MEM_LIMIT":"{{etcd.mem-limit}}",
      "WEBURI": "http://{{etcd.framework-name}}{{etcd.dns-suffix}}:{{etcd.admin-port}}/stats"
    },
    "healthChecks": [{
      "protocol": "HTTP",
      "path": "/healthz",
      "portIndex": 0,
      "gracePeriodSeconds": 60,
      "intervalSeconds": 30,
      "maxConsecutiveFailures": 0
    }]
}

Set etcd network explicitly to HOST

{
    "id": "{{etcd.framework-name}}",
    "container": {
        "docker": {
            "image": "{{resource.assets.container.docker.etcd-docker}}",
            "network": "HOST",
            "forcePullImage": true
        },
        "type": "DOCKER",
        "volumes": []
    },
    "args": [],
    "cpus": {{etcd.cpus}},
    "mem": {{etcd.mem}},
    "instances": 1,
    "ports": [0, 0, 0],
    "env": {
      "FRAMEWORK_NAME":"{{etcd.framework-name}}",
      "CLUSTER_SIZE":"{{etcd.cluster-size}}",
      "MESOS_MASTER":"{{mesos.master}}",
      "ZK_PERSIST":"{{etcd.zk}}",
      "VERBOSITY":"{{etcd.logging-verbosity}}",
      "AUTO_RESEED":"{{etcd.auto-reseed}}",
      "RESEED_TIMEOUT":"{{etcd.reseed-timeout}}",
      "DISK_LIMIT":"{{etcd.disk-limit}}",
      "CPU_LIMIT":"{{etcd.cpu-limit}}",
      "MEM_LIMIT":"{{etcd.mem-limit}}",
      "WEBURI": "http://{{etcd.framework-name}}{{etcd.dns-suffix}}:{{etcd.admin-port}}/stats"
    },
    "healthChecks": [{
      "protocol": "HTTP",
      "path": "/healthz",
      "portIndex": 0,
      "gracePeriodSeconds": 60,
      "intervalSeconds": 30,
      "maxConsecutiveFailures": 0
    }]
}


                    Edit

Edit

Add to Collection

Delete Repo

                    {{ title }}

                    {{ partial_sha1 }}

                by

                    {{ commit.committer }}

                on {{ commit.commit_date }}

Fix link to user page in Argument widget.


{{#t}}Firefox Accounts{{/t}}

{{#t}}Email verified{{/t}}

{{#t}}Email not verified{{/t}}

{{#t}}Success{{/t}}

    {{#redirectTo}}

{{#t}}You are now ready to use{{/t}} {{ siteName }}

      Continue
    {{/redirectTo}}
    {{^redirectTo}}

{{#t}}Your account is ready!{{/t}}

    {{/redirectTo}}

Make sure the service name shows up on confirmation.

{{#t}}Firefox Accounts{{/t}}

{{#t}}Email verified{{/t}}

{{#t}}Email not verified{{/t}}

{{#t}}Success{{/t}}

    {{#redirectTo}}

{{#t}}You are now ready to use{{/t}} {{ service }}

      Continue
    {{/redirectTo}}
    {{^redirectTo}}

{{#t}}Your account is ready!{{/t}}

    {{/redirectTo}}


{{!
    Copyright (C) 2016 Google Inc.
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
}}

{{#if_instance_of parent_instance 'Audit'}}
  {{#if_helpers '\
    #if_equals' model.shortName 'Control' '\
    or #if_equals' model.shortName 'Assessment'}}

  {{/if_helpers}}
{{/if_instance_of}}

Hide generate assessments icon for Readers

{{!
    Copyright (C) 2016 Google Inc.
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
}}

{{#if_instance_of parent_instance 'Audit'}}
  {{#if_helpers '\
    #if_equals' model.shortName 'Control' '\
    or #if_equals' model.shortName 'Assessment'}}
      {{#is_allowed 'update' parent_instance context="for"}}

      {{/is_allowed}}
  {{/if_helpers}}
{{/if_instance_of}}


{{> header}}

        {{#i18n}}work-adventure.help{{/i18n}} /
        {{#i18n}}work-adventure.signout{{/i18n}}

        <input type="button" class="button hollow" disabled value="Work Adventure"></input>
        Live streaming

{{> footer-light}}

Remove double quote from WA URL


<!DOCTYPE html>

  {{> shared/head}}

      {{> shared/header}}

        {{# children}}

{{name}}

        {{/ children}}

      {{{body}}}

      {{> shared/footer}}

Add analytics to all demo templates

<!DOCTYPE html>

  {{> shared/head}}

      {{> shared/header}}

        {{# children}}

{{name}}

        {{/ children}}

      {{{body}}}

      {{> shared/footer}}

  {{> shared/analytics }}


	{{> organisms-header }}

Article Headline Lorem ipsum dolor sit aweofij

						{{> molecules-byline }}

					{{> organisms-article-body }}

				{{> molecules-social-share }}
				{{> organisms-comment-thread }}

				{{> organisms-related-posts }}
				{{> organisms-recent-tweets }}

	{{> organisms-footer }}

Remove reference to obsolete pattern

	{{> organisms-header }}

Article Headline Lorem ipsum dolor sit aweofij

						{{> molecules-meta }}

					{{> organisms-article-body }}

				{{> molecules-social-share }}
				{{> organisms-comment-thread }}

				{{> organisms-related-posts }}
				{{> organisms-recent-tweets }}

	{{> organisms-footer }}


import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { ApiConfiguration } from './api-configuration';

{{#services}}import { {{serviceClass}} } from './services/{{serviceFile}}';
{{/services}}

/**
 * Module that provides instances for all API services
 */
@NgModule({
  imports: [
    HttpClientModule
  ],
  exports: [
    HttpClientModule
  ],
  declarations: [],
  providers: [
    ApiConfiguration,
{{#services}}   {{serviceClass}}{{^serviceIsLast}},{{/serviceIsLast}}
{{/services}}
  ],
})
export class ApiModule { }

Disable tslint in generated ApiModule

/* tslint:disable */
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { ApiConfiguration } from './api-configuration';

{{#services}}import { {{serviceClass}} } from './services/{{serviceFile}}';
{{/services}}

/**
 * Module that provides instances for all API services
 */
@NgModule({
  imports: [
    HttpClientModule
  ],
  exports: [
    HttpClientModule
  ],
  declarations: [],
  providers: [
    ApiConfiguration,
{{#services}}   {{serviceClass}}{{^serviceIsLast}},{{/serviceIsLast}}
{{/services}}
  ],
})
export class ApiModule { }


{% set psf_internal = salt["pillar.get"]("psf_internal_network") %}
# PostgreSQL Client Authentication Configuration File
# ===================================================
#

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# Monitoring
host    all             diamond         127.0.0.1/32            md5

# Replication
hostssl replication     replicator      {{ psf_internal }}          md5

# Application Databases
hostssl monitoring      monitoring      {{ psf_internal }}          md5
hostssl bugs-python     bugs-python     {{ psf_internal }}          md5
hostssl pydotorg-prod   pydotorg-prod   {{ psf_internal }}          md5
hostssl pydotorg-staging pydotorg-staging {{ psf_internal }}          md5
hostssl pydotorg-staging2 pydotorg-staging {{ psf_internal }}          md5

Allow testpypi from the PyPI network

{% set psf_internal = salt["pillar.get"]("psf_internal_network") %}
{% set pypi_internal = salt["pillar.get"]("pypi_internal_network") %}
# PostgreSQL Client Authentication Configuration File
# ===================================================
#

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# Monitoring
host    all             diamond         127.0.0.1/32            md5

# Replication
hostssl replication     replicator      {{ psf_internal }}      md5

# Application Databases
hostssl monitoring        monitoring       {{ psf_internal }}   md5
hostssl bugs-python       bugs-python      {{ psf_internal }}   md5
hostssl pydotorg-prod     pydotorg-prod    {{ psf_internal }}   md5
hostssl pydotorg-staging  pydotorg-staging {{ psf_internal }}   md5
hostssl pydotorg-staging2 pydotorg-staging {{ psf_internal }}   md5
hostssl testpypi          testpypi         {{ pypi_internal }}  md5


[defaults]
inventory = $INFRASTRUCTURE_REPO/plugins/inventory
roles_path = $INFRASTRUCTURE_REPO/roles:$INFRASTRUCTURE_REPO/roles
filter_plugins = $INFRASTRUCTURE_REPO/plugins/filter_plugins
retry_files_save_path = ~/.ansible-retry
hash_behavior = merge

[ssh_connection]
# this needs the path defined wihtout the use of ENV variables
ssh_args = -F __INFRA_REPO_PATH__/config/private/ssh_config

Store Ansible Galaxy roles outside

[defaults]
inventory = $INFRASTRUCTURE_REPO/plugins/inventory
roles_path = $INFRASTRUCTURE_REPO/../roles:$INFRASTRUCTURE_REPO/roles
filter_plugins = $INFRASTRUCTURE_REPO/plugins/filter_plugins
retry_files_save_path = ~/.ansible-retry
hash_behavior = merge

[ssh_connection]
# this needs the path defined wihtout the use of ENV variables
ssh_args = -F __INFRA_REPO_PATH__/config/private/ssh_config


{% extends "shoop/front/checkout/_base.jinja" %}

{% block content %}
<form role="form" method="post" action="">
    {% csrf_token %}
    {{ bs3.field(form.will_pay) }}

        <button type="submit" class="btn btn-primary btn-lg pull-right">
            Continue
        </button>

</form>
{% endblock %}

Use new template API for the checkout phase

{% extends "shoop/front/checkout/_base.jinja" %}
{% from "shoop/front/checkout/_buttons.jinja" import default_buttons %}

{% block checkout_phase_content %}
<form role="form" method="post" action="">
    {% csrf_token %}
    {{ bs3.field(form.will_pay) }}
    {{ default_buttons() }}
</form>
{% endblock %}


{% set name = 'openttd' %}

Work on deriving package names from grains

{% set name = 'openttd' %}
{% if grains['kernel'] == 'Linux' %}
	{% set os_string_component = 'linux-' + grains['os'].lower() + '-' + grains['oscodename'].lower()  %}
{% endif %}


[Global]
auth-url="{{ pillar['cloud']['openstack']['auth_url'] }}"
username="{{ pillar['cloud']['openstack']['username'] }}"
password="{{ pillar['cloud']['openstack']['password'] }}"
{% if pillar['cloud']['openstack']['project_id'] %}
tenant-id="{{ pillar['cloud']['openstack']['project_id'] }}"
{% else %}
tenant-name="{{ pillar['cloud']['openstack']['project'] }}"
{% endif %}
{% if pillar['cloud']['openstack']['domain_id'] %}
domain-id="{{ pillar['cloud']['openstack']['domain_id'] }}"
{% else %}
domain-name="{{ pillar['cloud']['openstack']['domain'] }}"
{% endif %}
region="{{ pillar['cloud']['openstack']['region'] }}"
[LoadBalancer]
lb-version=v2
subnet-id="{{ pillar['cloud']['openstack']['subnet'] }}"
floating-network-id="{{ pillar['cloud']['openstack']['floating'] }}"
create-monitor=yes
monitor-delay=1m
monitor-timeout=30s
monitor-max-retries={{ pillar['cloud']['openstack']['lb_mon_retries'] }}
[BlockStorage]
trust-device-path=false
bs-version={{ pillar['cloud']['openstack']['bs_version'] }}
ignore-volume-az={{ pillar['cloud']['openstack']['ignore_vol_az'] }}

Fix and remove empty lines in OpenStack cpi config

[Global]
auth-url="{{ pillar['cloud']['openstack']['auth_url'] }}"
username="{{ pillar['cloud']['openstack']['username'] }}"
password="{{ pillar['cloud']['openstack']['password'] }}"
{%- if pillar['cloud']['openstack']['project_id'] %}
tenant-id="{{ pillar['cloud']['openstack']['project_id'] }}"
{%- else %}
tenant-name="{{ pillar['cloud']['openstack']['project'] }}"
{%- endif %}
{%- if pillar['cloud']['openstack']['domain_id'] %}
domain-id="{{ pillar['cloud']['openstack']['domain_id'] }}"
{%- else %}
domain-name="{{ pillar['cloud']['openstack']['domain'] }}"
{%- endif %}
region="{{ pillar['cloud']['openstack']['region'] }}"
[LoadBalancer]
lb-version=v2
subnet-id="{{ pillar['cloud']['openstack']['subnet'] }}"
floating-network-id="{{ pillar['cloud']['openstack']['floating'] }}"
create-monitor=yes
monitor-delay=1m
monitor-timeout=30s
monitor-max-retries={{ pillar['cloud']['openstack']['lb_mon_retries'] }}
[BlockStorage]
trust-device-path=false
bs-version={{ pillar['cloud']['openstack']['bs_version'] }}
ignore-volume-az={{ pillar['cloud']['openstack']['ignore_vol_az'] }}


{{!
@param IRI contract
@param IRI graph
@param int limit
@param int offset (optional)
}}

{{> templates/prefixes.mustache}}

SELECT ?match (SUM(?contractCount) AS ?score)
WHERE {
  {
    SELECT ?match (COUNT(?contract) AS ?contractCount)
    WHERE {
      {
        SELECT ?cpvObject
        WHERE {
          GRAPH <{{graph}}> {
            [] pc:lot <{{contract}}> ;
              pc:mainObject/skos:closeMatch ?cpvObject .
          }
        }
      }
      GRAPH <{{graph}}> {
        ?contract pc:mainObject/skos:closeMatch ?cpvObject ;
          pc:lot/pc:awardedTender/pc:bidder ?match .
      }
    }
    GROUP BY ?match
  }
}
GROUP BY ?match
ORDER BY DESC(?score)
LIMIT {{limit}}
{{#offset}}
OFFSET {{offset}}
{{/offset}}

Fix GROUP BY key to include ?cpvObject to boost contracts that match on more than 1 ?cpvObject

{{!
@param IRI contract
@param IRI graph
@param int limit
@param int offset (optional)
}}

{{> templates/prefixes.mustache}}

SELECT ?match (SUM(?contractCount) AS ?score)
WHERE {
  {
    SELECT ?match (COUNT(?contract) AS ?contractCount)
    WHERE {
      {
        SELECT ?cpvObject
        WHERE {
          GRAPH <{{graph}}> {
            [] pc:lot <{{contract}}> ;
              pc:mainObject/skos:closeMatch ?cpvObject .
          }
        }
      }
      GRAPH <{{graph}}> {
        ?contract pc:mainObject/skos:closeMatch ?cpvObject ;
          pc:lot/pc:awardedTender/pc:bidder ?match .
      }
    }
    GROUP BY ?match ?cpvObject
  }
}
GROUP BY ?match
ORDER BY DESC(?score)
LIMIT {{limit}}
{{#offset}}
OFFSET {{offset}}
{{/offset}}


{{!
    Copyright (C) 2015 Google Inc., authors, and contributors <see AUTHORS file>
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
    Created By: brad@reciprocitylabs.com
    Maintained By: brad@reciprocitylabs.com
}}

{{#is_allowed 'create' model.shortName context='any'}}

    + Create New

{{/is_allowed}}

Add test id for creating a new program in LHN.


{%
  set homu = {
    'rev': 'a7355eb7a2ce5deaab2610c24fa2f29573a27cf1'
  }
%}

Update homu so that it uses default host 0.0.0.0


# you can override this using by setting a system property, for example -Des.logger.level=DEBUG
es.logger.level: INFO
rootLogger: ${es.logger.level}, console
logger:
  # log action execution errors for easier debugging
  action: DEBUG
  # reduce the logging for aws, too much is logged under the default INFO
  com.amazonaws: WARN
  org.apache.http: INFO

  # gateway
  #gateway: DEBUG
  #index.gateway: DEBUG

  # peer shard recovery
  #indices.recovery: DEBUG

  # discovery
  #discovery: TRACE

  index.search.slowlog: TRACE, index_search_slow_log_file
  index.indexing.slowlog: TRACE, index_indexing_slow_log_file

additivity:
  index.search.slowlog: false
  index.indexing.slowlog: false

appender:
  console:
    type: console
    layout:
      type: consolePattern
      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"

  index_search_slow_log_file:
    type: file
    file: ${path.logs}/elasticsearch/index-search-slowlog.log
    layout:
      type: pattern
      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"

  index_indexing_slow_log_file:
    type: file
    file: ${path.logs}/elasticsearch/index-indexing-slowlog.log
    layout:
      type: pattern
      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"

Fix elasticsearch log file locations so they're not nested.

# you can override this using by setting a system property, for example -Des.logger.level=DEBUG
es.logger.level: INFO
rootLogger: ${es.logger.level}, console
logger:
  # log action execution errors for easier debugging
  action: DEBUG
  # reduce the logging for aws, too much is logged under the default INFO
  com.amazonaws: WARN
  org.apache.http: INFO

  # gateway
  #gateway: DEBUG
  #index.gateway: DEBUG

  # peer shard recovery
  #indices.recovery: DEBUG

  # discovery
  #discovery: TRACE

  index.search.slowlog: TRACE, index_search_slow_log_file
  index.indexing.slowlog: TRACE, index_indexing_slow_log_file

additivity:
  index.search.slowlog: false
  index.indexing.slowlog: false

appender:
  console:
    type: console
    layout:
      type: consolePattern
      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"

  index_search_slow_log_file:
    type: file
    file: ${path.logs}/index-search-slowlog.log
    layout:
      type: pattern
      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"

  index_indexing_slow_log_file:
    type: file
    file: ${path.logs}/index-indexing-slowlog.log
    layout:
      type: pattern
      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"


% -*- mode: latex; -*- mustache tags: {{=« »=}} «! the '&' below prevents HTML escaping. »
\ifx\wholebook\relax\else

	\documentclass[10pt,twoside,english]{support/latex/sbabook/sbabook}
  \usepackage{import}
  \subimport{support/latex/}{common.tex}

  \hypersetup{pdfinfo = {
    Title = {«& title»},
    Author = {«& attribution»},
    Keywords = {pharo, smalltalk}}}
  \begin{document}
\fi

\chapter{«& title»}
\chapterprecis{«& attribution»}

«& content»

\ifx\wholebook\relax\else
\end{document}
\fi

Fix support path: add underscore

% -*- mode: latex; -*- mustache tags: {{=« »=}} «! the '&' below prevents HTML escaping. »
\ifx\wholebook\relax\else

	\documentclass[10pt,twoside,english]{_support/latex/sbabook/sbabook}
  \usepackage{import}
  \subimport{_support/latex/}{common.tex}

  \hypersetup{pdfinfo = {
    Title = {«& title»},
    Author = {«& attribution»},
    Keywords = {pharo, smalltalk}}}
  \begin{document}
\fi

\chapter{«& title»}
\chapterprecis{«& attribution»}

«& content»

\ifx\wholebook\relax\else
\end{document}
\fi


{{!
    Copyright (C) 2016 Google Inc.
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
}}

People

  {{#instance.roleConflicts}}

          Assignee and Verifier cannot be the same person!

  {{/instance.roleConflicts}}

    {{#instance.class.assignable_list}}
      {{#if required}}

          <people-group validate="validate" deferred="deferred" editable="editable" instance="instance" mapping="mapping" required="true" type="type"></people-group>

      {{else}}

          <people-group deferred="deferred" editable="editable" instance="instance" mapping="mapping" type="type"></people-group>

      {{/if}}
    {{/instance}}

Fix warning message for role conflicts

{{!
    Copyright (C) 2016 Google Inc.
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
}}

People

  {{#instance.roleConflicts}}

          Assessor and Verifier cannot be the same person!

  {{/instance.roleConflicts}}

    {{#instance.class.assignable_list}}
      {{#if required}}

          <people-group validate="validate" deferred="deferred" editable="editable" instance="instance" mapping="mapping" required="true" type="type"></people-group>

      {{else}}

          <people-group deferred="deferred" editable="editable" instance="instance" mapping="mapping" type="type"></people-group>

      {{/if}}
    {{/instance}}


<!DOCTYPE html>
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6 ieUnsupported"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="no-js ie7 ieUnsupported"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
<head>
	<meta charset="utf-8">
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  	<title>Booknode</title>
  	<meta name="description" content="">
  	<meta name="author" content="">

  	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  	<meta name="apple-mobile-web-app-capable" content="yes" />
	<meta name="apple-mobile-web-app-status-bar-style" content="black" />

  	<link rel="stylesheet" type="text/css" href="/assets/css/style.css?v=2">

</head>

Set page title to the name of the viewing book.

<!DOCTYPE html>
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6 ieUnsupported"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="no-js ie7 ieUnsupported"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
<head>
	<meta charset="utf-8">
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

	{{#book}}
	<title>{{title}}</title>
	{{/book}}

	{{^book}}
  	<title>Booknode</title>
  	{{/book}}
  	<meta name="description" content="">
  	<meta name="author" content="">

  	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  	<meta name="apple-mobile-web-app-capable" content="yes" />
	<meta name="apple-mobile-web-app-status-bar-style" content="black" />

  	<link rel="stylesheet" type="text/css" href="/assets/css/style.css?v=2">

</head>


{#
{% macro repeat(val) %}
{{ val }}
{{ caller() }}
{% endmacro %}
{% macro renderEntity(val) %}
Aaa {{ val }}
{% endmacro %}

{% macro renderModule(val) %}
macro 1
{% call repeat(deferred + 1) %}
{{ renderEntity(val) }}
{% endcall %}
{% endmacro %}

{% call repeat(deferred) %}
{{ renderModule('b') }}
{% endcall %}
#}
{% macro repeat(val) %}
{{ val }}
{{ caller() }}
{% endmacro %}

{% call repeat(deferred) %}
macro 1
{% call repeat(deferred + 1) %}
macro2
{% endcall %}
{% endcall %}

Remove HubL notes in test


{{!
    Copyright (C) 2015 Google Inc., authors, and contributors <see AUTHORS file>
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
    Created By: anze@reciprocitylabs.com
    Maintained By: anze@reciprocitylabs.com
}}

{{#instance}}

      {{#using person=modified_by}}
        {{{render '/static/mustache/people/popover.mustache' person=person}}}
      {{/using}}
      added a response - {{date created_at}}

      {{{firstnonempty description 'No comment was entered'}}}

    {{#instance.class.info_pane_options.documents}}
    {{#add_to_current_scope parent_instance=instance}}

 el.cms_controllers_tree_view(el.data("options")).control("tree_view").display() }}>

    {{/add_to_current_scope}}
    {{/instance}}

{{/instance}}

Use mapping view in request comment subtree

{{!
    Copyright (C) 2015 Google Inc., authors, and contributors <see AUTHORS file>
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
    Created By: anze@reciprocitylabs.com
    Maintained By: anze@reciprocitylabs.com
}}

{{#instance}}

      {{#using person=modified_by}}
        {{{render '/static/mustache/people/popover.mustache' person=person}}}
      {{/using}}
      added a response - {{date created_at}}

      {{{firstnonempty description 'No comment was entered'}}}

    <mapping-tree-view
      parent-instance="instance"
      mapping="instance.class.info_pane_options.documents.mapping"
      item-template="instance.class.info_pane_options.documents.show_view"
    >
    </mapping-tree-view>

{{/instance}}


	<title>{{stopName}}</title>
	<meta name="viewport" content="width=device-width, initial-scale=1">

{{stopName}} {{stopNumber}}

Retrieved at {{when}}

{{#buses}}
{{minutes}} ({{expectedArrival}}): {{line}} to {{destination}}

{{/buses}}

{{^buses}}
No arrivals soon

{{/buses}}
Back to front page

Powered by TfL Open Data

Contains OS data © Crown copyright and database rights 2016

By Tom Parker. Source Code.

Put stop name on new line to avoid wrapping on small screeens


---
services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:2022.9.7"
    network_mode: host
    privileged: true
    restart: always
    volumes:
      - ./config:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
...

Update Home Assistant to 2022.10.0

---
services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:2022.10.0"
    network_mode: host
    privileged: true
    restart: always
    volumes:
      - ./config:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
...


music_directory         "{{{music}}}"
playlist_directory      "{{{playlist}}}"
db_file                 "{{{db}}}"
log_file                "{{{log}}}"
log_level               "verbose"

filesystem_charset      "UTF-8"

follow_outside_symlinks "yes"
follow_inside_symlinks  "yes"

auto_update             "yes"

zeroconf_name           "{{{name}}}"
zeroconf_enabled        "yes"

port                    "{{{port}}}"

metadata_to_use         "artist,album,title,track,name,genre,date,disc"

decoder {
  plugin "mp4ff"
  enabled "no"
}

{{#coreAudio}}
audio_output {
    type "osx"
    name "CoreAudio"
    mixer_type "software"
}
{{/coreAudio}}

{{#alsa}}
audio_output {
    type            "alsa"
    name            "Speakers"
    device          "hw:0,0"
    format          "44100:16:2"
    mixer_type      "software"
}
{{/alsa}}

{{#httpStreaming}}
audio_output {
    type            "httpd"
    name            "Web Stream"
    encoder         "lame"
    port            "{{{httpPort}}}"
    bind_to_address "0.0.0.0"
    bitrate         "128"
    format          "44100:16:1"
    max_clients     "0"
}
{{/httpStreaming}}

Stop http streamer from disconnecting clients

music_directory         "{{{music}}}"
playlist_directory      "{{{playlist}}}"
db_file                 "{{{db}}}"
log_file                "{{{log}}}"
log_level               "verbose"

filesystem_charset      "UTF-8"

follow_outside_symlinks "yes"
follow_inside_symlinks  "yes"

auto_update             "yes"

zeroconf_name           "{{{name}}}"
zeroconf_enabled        "yes"

port                    "{{{port}}}"

metadata_to_use         "artist,album,title,track,name,genre,date,disc"

decoder {
  plugin "mp4ff"
  enabled "no"
}

{{#coreAudio}}
audio_output {
    type "osx"
    name "CoreAudio"
    mixer_type "software"
}
{{/coreAudio}}

{{#alsa}}
audio_output {
    type            "alsa"
    name            "Speakers"
    device          "hw:0,0"
    format          "44100:16:2"
    mixer_type      "software"
}
{{/alsa}}

{{#httpStreaming}}
audio_output {
    type            "httpd"
    name            "Web Stream"
    encoder         "lame"
    port            "{{{httpPort}}}"
    bind_to_address "0.0.0.0"
    bitrate         "128"
    format          "44100:16:1"
    max_clients     "0"
    always_on       "yes"
}
{{/httpStreaming}}


machine:
  php:
    version: 5.6.14

test:
  pre:
    - bash bin/install-wp-tests.sh wordpress_test root '' localhost latest
  override:
    - phpunit

Use PHP version specific to Trusty

machine:
  php:
    version: 5.6.22

test:
  pre:
    - bash bin/install-wp-tests.sh wordpress_test root '' localhost latest
  override:
    - phpunit


{{!
    Copyright (C) 2016 Google Inc.
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
}}

  {{#instance}}
  {{title}}
  {{attribute_type}}
  {{#if mandatory}}Yes{{else}}No{{/mandatory}}

          Edit

  {{/instance}}

Fix UI update on CA definition deletion


[program:nbviewer]
command=/usr/share/nbviewer/venv/bin/gunicorn -w 3 -b 0.0.0.0:8080 app:gist
numprocs=1
numprocs_start=0
process_name=%(program_name)s
autostart=true
autorestart=true
startsecs=1
startretries=3
exitcodes=0,2
stopsignal=QUIT
stopwaitsecs=10
user=nobody
stdout_logfile=/var/log/nbviewer
directory=/usr/share/nbviewer
environment=HOME="/usr/share/nbviewer",USER="nobody",PATH="/usr/share/nbviewer/venv/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games",VIRTUAL_ENV="/usr/share/nbviewer/venv"
redirect_stderr=false
stdout_logfile=AUTO
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stdout_capture_maxbytes=0
stdout_events_enabled=false
stderr_logfile=AUTO
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
stderr_capture_maxbytes=0
stderr_events_enabled=false
serverurl=AUTO

Add in memory sqlite database

[program:nbviewer]
command=/usr/share/nbviewer/venv/bin/gunicorn -w 3 -b 0.0.0.0:8080 app:gist
numprocs=1
numprocs_start=0
process_name=%(program_name)s
autostart=true
autorestart=true
startsecs=1
startretries=3
exitcodes=0,2
stopsignal=QUIT
stopwaitsecs=10
user=nobody
stdout_logfile=/var/log/nbviewer
directory=/usr/share/nbviewer
environment=HOME="/usr/share/nbviewer",USER="nobody",PATH="/usr/share/nbviewer/venv/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games",VIRTUAL_ENV="/usr/share/nbviewer/venv",DATABASE_URL="sqlite:///:memory:"
redirect_stderr=false
stdout_logfile=AUTO
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stdout_capture_maxbytes=0
stdout_events_enabled=false
stderr_logfile=AUTO
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
stderr_capture_maxbytes=0
stderr_events_enabled=false
serverurl=AUTO


{% set defaults = salt['grains.filter_by']({
    'RedHat': {
    },
    'Debian': {
        'nogroup': 'nogroup',
    },
    'FreeBSD': {
        'rootgroup': 'wheel',
    },
    'Arch': {
    },
    'default': {
        'rootgroup': 'root',
        'nobody': 'nobody',
        'nogroup': 'nobody',
    }
}, base='default') %}

Add nologin binary default path.

{% set defaults = salt['grains.filter_by']({
    'RedHat': {
    },
    'Debian': {
        'nogroup': 'nogroup',
    },
    'FreeBSD': {
        'rootgroup': 'wheel',
    },
    'Arch': {
    },
    'default': {
        'rootgroup': 'root',
        'nobody': 'nobody',
        'nogroup': 'nobody',
        'nologin': '/sbin/nologin',
    }
}, base='default') %}


<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">

  {%- block html_head_title %}
  <title>{{ metadata.title }}</title>
  {%- endblock html_head_title %}
  <meta name="viewport" content="width=device-width, initial-scale=1">
  {%- block html_head_canonicalurl %}
  {%- if canonical_url %}
  <link rel="canonical" href="{{ canonical_url }}" />
  {%- endif %}
  {%- endblock html_head_canonicalurl %}
  {%- block html_head_description %}
  {%- if description %}
  <meta name="description" content="{{ description }}" />
  {%- endif %}
  {%- endblock html_head_description %}

  {%- block html_head_appendix %}
  {%- endblock html_head_appendix %}
</head>

<body>
{% block html_body %}
<div class="lander-page-wrapper">

{% block html_page_header %}
{% endblock html_page_header %}

<main>
{% block html_page_main %}
{% endblock html_page_main %}
</main>

{% block html_page_footer %}
{% endblock html_page_footer %}
</div>
{% endblock html_body %}
</body>

</html>

Include pdfviewer on the page

<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">

  {%- block html_head_title %}
  <title>{{ metadata.title }}</title>
  {%- endblock html_head_title %}
  <meta name="viewport" content="width=device-width, initial-scale=1">
  {%- block html_head_canonicalurl %}
  {%- if canonical_url %}
  <link rel="canonical" href="{{ canonical_url }}" />
  {%- endif %}
  {%- endblock html_head_canonicalurl %}
  {%- block html_head_description %}
  {%- if description %}
  <meta name="description" content="{{ description }}" />
  {%- endif %}
  {%- endblock html_head_description %}

  {%- block html_head_appendix %}
  {%- endblock html_head_appendix %}
</head>

<body>
{% block html_body %}
<div class="lander-page-wrapper">

{% block html_page_header %}
{% endblock html_page_header %}

<main>
{% block html_page_main %}
{% endblock html_page_main %}
</main>

{% block html_page_footer %}
{% endblock html_page_footer %}
</div>
{% endblock html_body %}

{% block html_bottom_javascript %}
<script src="app.bundle.js"></script>
{% endblock html_bottom_javascript %}
</body>

</html>


{{!
    Copyright (C) 2016 Google Inc.
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
}}

{{#if instance.viewLink}}
  {{#is_allowed "view_object_page" instance}}
    {{^openIsHidden}}

      Open

    {{/openIsHidden}}

      View

  {{/is_allowed}}
{{/if}}

Hide open button for snapshots in treeView

{{!
    Copyright (C) 2016 Google Inc.
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
}}

{{#if instance.viewLink}}
  {{#is_allowed "view_object_page" instance}}
    {{^openIsHidden}}
    {{^instance.snapshot}}

      Open

    {{/instance.snapshot}}
    {{/openIsHidden}}

      View

  {{/is_allowed}}
{{/if}}


<link type="text/css" rel="stylesheet" href="/stylesheets/moz_nav/{{ environment }}/all.css" />

<!--[if lte IE 6]>
<script src="/javascripts/moz_nav/belated.js" type="text/javascript"></script>
<![endif]-->

<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" href="/stylesheets/moz_nav/ie.css" />
<![endif]-->

Use production or dev stylesheet for ie.

<link type="text/css" rel="stylesheet" href="/stylesheets/moz_nav/{{ environment }}/all.css" />

<!--[if lte IE 6]>
<script src="/javascripts/moz_nav/belated.js" type="text/javascript"></script>
<![endif]-->

<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" href="/stylesheets/moz_nav/{{ environment }}/ie.css" />
<![endif]-->


<?php

return array(

    'service' => array(

        'assets'=>array(

            'source_template_path' => __DIR__.'/../assets/v2',

            'template_path_on_ram_disk' => '/tmp/pdf_ramdisk/assets/v2',

            'intermediate_file_path' => '/tmp/pdf_ramdisk'
        ),

    ),

    'worker' => array(

        'testResponse'=>array(

            'path' => __DIR__.'/../test-data/output/',

        ),

        'redisResponse'=>array(

            'host' => 'redisback.local',
            'port' => 6379,

            // The number of files that can be stored in Redis.
            'size' => 30,

        ),

    ),

    'log' => [
        'path' => '{{pillar['apps']['opg-lpa-pdf']['log-dir']}}/application.log',
        'sentry-uri' => '{{pillar['opg-lpa']['sentry']['api-uri']}}',
    ], // log

    'pdf' => [
        'encryption' => [
            // Keys MUST be a 32 character ASCII string
            'keys' => [
                'queue'     => '{{pillar['pdf']['encryption']['key']['queue']}}',      // Key for JSON pushed onto the queue
                'document'  => '{{pillar['pdf']['encryption']['key']['document']}}',   // Key for generated PDFs in the file store
            ],
            'options' => [
                'algorithm' => 'aes',
                'mode' => 'cbc',
            ],
        ],
    ], // pdf

);

Set correct pillar referance for the logging directory

<?php

return array(

    'service' => array(

        'assets'=>array(

            'source_template_path' => __DIR__.'/../assets/v2',

            'template_path_on_ram_disk' => '/tmp/pdf_ramdisk/assets/v2',

            'intermediate_file_path' => '/tmp/pdf_ramdisk'
        ),

    ),

    'worker' => array(

        'testResponse'=>array(

            'path' => __DIR__.'/../test-data/output/',

        ),

        'redisResponse'=>array(

            'host' => 'redisback.local',
            'port' => 6379,

            // The number of files that can be stored in Redis.
            'size' => 30,

        ),

    ),

    'log' => [
        'path' => '{{pillar['apps']['opg-lpa-pdf2']['log-dir']}}/application.log',
        'sentry-uri' => '{{pillar['opg-lpa']['sentry']['api-uri']}}',
    ], // log

    'pdf' => [
        'encryption' => [
            // Keys MUST be a 32 character ASCII string
            'keys' => [
                'queue'     => '{{pillar['pdf']['encryption']['key']['queue']}}',      // Key for JSON pushed onto the queue
                'document'  => '{{pillar['pdf']['encryption']['key']['document']}}',   // Key for generated PDFs in the file store
            ],
            'options' => [
                'algorithm' => 'aes',
                'mode' => 'cbc',
            ],
        ],
    ], // pdf

);


-# This surrounding is_allowed check should be removed! FIXME
{{^is_allowed 'read' model.shortName context="for"}}

      You do not have access to read this information.

{{/is_allowed}}

Comment out a comment that was left in template.

{{! This surrounding is_allowed check should be removed! FIXME}}
{{^is_allowed 'read' model.shortName context="for"}}

      You do not have access to read this information.

{{/is_allowed}}


#!/bin/sh
# {{route_type}}
test "${IFACE}" = "{{iface}}" || exit 0
{% for route in routes %}{% if route.name %}# {{route.name}}
{%endif%}route {{route_type}} -net {% if route.ipaddr %}{{route.ipaddr}}{%endif%} {% if route.netmask %}netmask {{route.netmask}}{%endif%} {% if route.gateway %}gateway {{route.gateway}}{%endif%} dev {{iface}}
{% endfor %}

Use ip route instead of the deprecated route

#!/bin/sh
# {{route_type}}
test "${IFACE}" = "{{iface}}" || exit 0
{% for route in routes %}{% if route.name %}# {{route.name}}
{%endif%}ip route {{route_type}} {% if route.ipaddr %}{{route.ipaddr}}{%endif%}{% if route.netmask %}/{{route.netmask}}{%endif%} {% if route.gateway %}via {{route.gateway}}{%endif%} dev {{iface}}
{% endfor %}


Pod::Spec.new do |s|
  s.name     = 'AVOSCloudIM'
  s.version  = '{{{version}}}'
  s.homepage = 'https://leancloud.cn/'
  s.summary  = 'LeanCloud Swift Crash Reporting SDK'
  s.authors  = 'LeanCloud'
  s.license  = {
    :type => 'Apache License, Version 2.0',
    :file => 'LICENSE'
  }

  s.platform = :ios, :osx

  s.ios.deployment_target = '7.0'
  s.osx.deployment_target = '10.9'

  s.source = {
    :git => "https://github.com/leancloud/objc-sdk.git",
    :tag => "#{s.version}"
  }

  s.source_files =
    {{{source_files}}}

  s.public_header_files =
    {{{public_header_files}}}

  s.dependency 'AVOSCloud', "#{s.version}"
end

Update pod name of crash reporting module

Pod::Spec.new do |s|
  s.name     = 'AVOSCloudCrashReporting'
  s.version  = '{{{version}}}'
  s.homepage = 'https://leancloud.cn/'
  s.summary  = 'LeanCloud Swift Crash Reporting SDK'
  s.authors  = 'LeanCloud'
  s.license  = {
    :type => 'Apache License, Version 2.0',
    :file => 'LICENSE'
  }

  s.platform = :ios, :osx

  s.ios.deployment_target = '7.0'
  s.osx.deployment_target = '10.9'

  s.source = {
    :git => "https://github.com/leancloud/objc-sdk.git",
    :tag => "#{s.version}"
  }

  s.source_files =
    {{{source_files}}}

  s.public_header_files =
    {{{public_header_files}}}

  s.dependency 'AVOSCloud', "#{s.version}"
end


{
  "name": "{{plugin_name}}",
  "version": "0.0.0",
  "main": "Gruntfile.js",
  "author": "YOUR NAME HERE",
  "devDependencies": {
    "grunt": "^0.4.5",
    "grunt-wp-i18n": "^0.5.0",
    "grunt-wp-readme-to-markdown": "~0.9.0"
  }
}

Use plugin slug in plugin's packages.json


{{!
    Copyright (C) 2016 Google Inc.
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
}}

{{#list}}

  {{#using program=program}}

          {{title}}

  {{/using}}

{{/list}}

{{#list.is_loading}}

    <spinner toggle="list.is_loading"></spinner>

{{/list.is_loading}}

Fix obsolete link for view audit on LHN


module(load="imfile")
{% if accumulator is defined %}
{% for application_name, application in accumulator|dictsort() %}
{% set name = application_name|replace('-log', '') %}
{% for file in application[0].files %}
{% if file.tag is defined %}
{% set identifier = 'application-' + name + '-' + file.tag %}
{% else %}
{% set identifier = 'application-' + name %}
{% endif %}

# application: {{ name }} --- file: {{ file.path }}

template(name="{{ identifier }}-json" type="list") {
    constant(value="{")
        constant(value="\"logtype\":\"")          constant(value="{{ identifier }}")
        constant(value="\",\"content\":{")
            constant(value="\"message\":\"")       property(name="msg" format="json")
        constant(value="\"}")
        constant(value=",\"hostinfo\":{")
            constant(value="\"hostname\":\"")       property(name="$myhostname")
        constant(value="\"}")
    constant(value="}")
}

ruleset(name="forward-{{ identifier }}") {
    action(
        name="forward-tcp"
        type="omfwd"
        Template="{{ identifier }}-json"
        Target="log.lab"
        Port="514"
        Protocol="tcp"
    )
}

input(type="imfile"
    File="{{ file.path }}"
    Tag="{{ identifier }}"
    StateFile="{{ file.path|replace('/', '-') }}.state"
    ruleset="forward-{{ identifier }}"
)
{% endfor %}
{% endfor %}
{% endif %}

Change JSON application log format.

module(load="imfile")
{% if accumulator is defined %}
{% for application_name, application in accumulator|dictsort() %}
{% set name = application_name|replace('-log', '') %}
{% for file in application[0].files %}
{% if file.tag is defined %}
{% set identifier = name + '-' + file.tag %}
{% else %}
{% set identifier = name %}
{% endif %}

# application: {{ name }} --- file: {{ file.path }}

template(name="{{ identifier }}-json" type="list") {
    constant(value="{")
        constant(value="\"logtype\":\"")          constant(value="application")
        constant(value="\",\"application\":\"")   constant(value="{{ identifier }}")
        constant(value="\",\"content\":{")
            constant(value="\"message\":\"")      property(name="msg" format="json")
        constant(value="\"}")
        constant(value=",\"hostinfo\":{")
            constant(value="\"hostname\":\"")     property(name="$myhostname")
        constant(value="\"}")
    constant(value="}")
}

ruleset(name="forward-{{ identifier }}") {
    action(
        name="forward-tcp"
        type="omfwd"
        Template="{{ identifier }}-json"
        Target="log.lab"
        Port="514"
        Protocol="tcp"
    )
}

input(type="imfile"
    File="{{ file.path }}"
    Tag="{{ identifier }}"
    StateFile="{{ file.path|replace('/', '-') }}.state"
    ruleset="forward-{{ identifier }}"
)
{% endfor %}
{% endfor %}
{% endif %}


<!doctype html>

        <meta charset="UTF-8">
        <title>De Balletboetiek - Klassiek ballet en workshops in Elst</title>
        <link rel="stylesheet" href="/resources/css/balletboetiek.css">

balletschool

De Balletboetiek

            <address>
                Dansstudio Kultuurklup

                Dorpsstraat 39

                Elst

            </address>

                    {{ #navigation }}

{{{ label }}}

                    {{ /navigation }}

Make sure the balletboetiek.css is loaded

<!doctype html>

        <meta charset="UTF-8">
        <title>De Balletboetiek - Klassiek ballet en workshops in Elst</title>
        <link rel="stylesheet" href="resources/css/balletboetiek.css">

balletschool

De Balletboetiek

            <address>
                Dansstudio Kultuurklup

                Dorpsstraat 39

                Elst

            </address>

                    {{ #navigation }}

{{{ label }}}

                    {{ /navigation }}


.u-icon {
    background-repeat: no-repeat;

    {{#items}}
    &.u-icon-{{slug}} {
        background-image: url('{{{datauri}}}');
        width: {{width}}px;
        height: {{height}}px;
    }

    {{/items}}
}

Remove width and height from iconify template

.u-icon {
    background-repeat: no-repeat;

    {{#items}}
    &.u-icon-{{slug}} {
        background-image: url('{{{datauri}}}');
    }

    {{/items}}
}


{{!
    Copyright (C) 2016 Google Inc.
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
}}

<custom-attributes instance="instance">
    {{#if instance.custom_attribute_definitions.length}}
      {{#iterate_by_two items}}

      {{#list}}

            <inline-edit
              instance="instance"
              ca-id="cad.id"
              {{#if cav.attribute_object}}
              value="cav.attribute_object"
              {{else}}
              value="cav.attribute_value"
              {{/if}}
              values="cad.multi_choice_options"
              title="cad.title"
              label="cad.label"
              type="{{type}}"
              mandatory="cad.mandatory"
              placeholder="cad.placeholder"
              helptext="cad.helptext"
              {{^is_allowed 'update' instance context='for'}}
                readonly
              {{/is_allowed}}
              {{#if_instance_of instance 'Request'}}
                can-before-edit="instance.confirmBeginEdit"
              {{/if_instance_of}}
            ></inline-edit>

      {{/list}}

      {{/iterate_by_two}}
    {{/if}}
</custom-attributes>

Disable editing GCA for snapshots

{{!
    Copyright (C) 2016 Google Inc.
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
}}

<custom-attributes instance="instance">
    {{#if instance.custom_attribute_definitions.length}}
      {{#iterate_by_two items}}

      {{#list}}

            <inline-edit
              instance="instance"
              ca-id="cad.id"
              {{#if cav.attribute_object}}
              value="cav.attribute_object"
              {{else}}
              value="cav.attribute_value"
              {{/if}}
              values="cad.multi_choice_options"
              title="cad.title"
              label="cad.label"
              type="{{type}}"
              mandatory="cad.mandatory"
              placeholder="cad.placeholder"
              helptext="cad.helptext"
              {{#if instance.snapshot}}
                readonly
              {{else}}
                {{^is_allowed 'update' instance context='for'}}
                  readonly
                {{/is_allowed}}
              {{/if}}
              {{#if_instance_of instance 'Request'}}
                can-before-edit="instance.confirmBeginEdit"
              {{/if_instance_of}}
            ></inline-edit>

      {{/list}}

      {{/iterate_by_two}}
    {{/if}}
</custom-attributes>


version: 0.1
log:
  level: {{log_level}}
  fields:
    service: registry
storage:
  cache:
    layerinfo: redis
  {{storage_provider_info}}
  maintenance:
    uploadpurging:
      enabled: false
  delete:
    enabled: true
{% if storage_redirect_disabled %}
  redirect:
    disable: true
{% endif %}
redis:
  addr: {{redis_host}}:{{redis_port}}
  password: {{redis_password}}
  db: {{redis_db_index_reg}}
http:
  addr: :5000
  secret: placeholder
  debug:
    addr: localhost:5001
auth:
  token:
    issuer: harbor-token-issuer
    realm: {{public_url}}/service/token
    rootcertbundle: /etc/registry/root.crt
    service: harbor-registry
validation:
  disabled: true
notifications:
  endpoints:
  - name: harbor
    disabled: false
    url: {{core_url}}/service/notifications
    timeout: 3000ms
    threshold: 5
    backoff: 1s
compatibility:
  schema1:
    enabled: true

Add ignore mediatypes for registry

version: 0.1
log:
  level: {{log_level}}
  fields:
    service: registry
storage:
  cache:
    layerinfo: redis
  {{storage_provider_info}}
  maintenance:
    uploadpurging:
      enabled: false
  delete:
    enabled: true
{% if storage_redirect_disabled %}
  redirect:
    disable: true
{% endif %}
redis:
  addr: {{redis_host}}:{{redis_port}}
  password: {{redis_password}}
  db: {{redis_db_index_reg}}
http:
  addr: :5000
  secret: placeholder
  debug:
    addr: localhost:5001
auth:
  token:
    issuer: harbor-token-issuer
    realm: {{public_url}}/service/token
    rootcertbundle: /etc/registry/root.crt
    service: harbor-registry
validation:
  disabled: true
notifications:
  endpoints:
  - name: harbor
    disabled: false
    url: {{core_url}}/service/notifications
    timeout: 3000ms
    threshold: 5
    backoff: 1s
    ignoredmediatypes:
        - application/vnd.docker.image.rootfs.diff.tar.gzip
        - application/vnd.docker.image.rootfs.foreign.diff.tar.gzip
        - application/vnd.oci.image.layer.v1.tar
        - application/vnd.oci.image.layer.v1.tar+gzip
        - application/vnd.oci.image.layer.v1.tar+zstd
        - application/vnd.oci.image.layer.nondistributable.v1.tar
        - application/vnd.oci.image.layer.nondistributable.v1.tar+gzip
        - application/vnd.oci.image.layer.nondistributable.v1.tar+zstd
        - application/octet-stream
compatibility:
  schema1:
    enabled: true


{{!
Copyright (C) 2015 Google Inc., authors, and contributors <see AUTHORS file>
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
    Created By: urban@reciprocitylabs.com
    Maintained By: urban@reciprocitylabs.com
}}

<div data-object-id="{{instance.id}}" data-object-type="{{instance.class.table_singular}}" class="tree-item-placeholder">
    {{{firstnonempty instance.title instance.description_inline instance.name instance.email ''}}}
</div>

Fix indentation in tree view placeholder template


{% set git = salt['grains.filter_by']({
    'RedHat': {
    },
    'Debian': {
    },
    'FreeBSD': {
    },
    'Arch': {
    },
    'default': {
        'package': 'git',
        'user': 'git',
        'home': '/var/lib/vcs-git',
        'uid': '801',
        'gid': '801',
        'http': {
            'cbackend': '/usr/libexec/git-core/git-http-backend',
        },
    }
}, base='default') %}

Change repo path to make SELinux happy.

{% set git = salt['grains.filter_by']({
    'RedHat': {
    },
    'Debian': {
    },
    'FreeBSD': {
    },
    'Arch': {
    },
    'default': {
        'package': 'git',
        'user': 'git',
        'home': '/var/lib/git-repos',
        'uid': '801',
        'gid': '801',
        'http': {
            'cbackend': '/usr/libexec/git-core/git-http-backend',
        },
    }
}, base='default') %}


Word templates

                    Title
                    Description
                    Download

                    Letter (A4) Blank
                    Empty App-Arena.com letter

                            Download

                    Letter (A4) with Dummy text
                    Prefilled letter including address and sender

                            Download

Add stellenanzeigen template to the word templates section

Word templates

                    Title
                    Description
                    Download

                    Letter (A4) Blank
                    Empty App-Arena.com letter

                            Download

                    Letter (A4) with Dummy text
                    Prefilled letter including address and sender

                            Download

                    Stellenanzeige (A4)
                    Vorausgefüllte Stellenanzeige

                            Download


{%
  set admin = {
    'ssh_users': [
      'ajeffrey',
      'avadacatavra',
      'edunham',
      'emilio',
      'eijebong',
      'ferjm',
      'gw',
      'jack',
      'jdm',
      'jlempereur',
      'jonleighton',
      'larsberg',
      'manishearth',
      'mbrubeck',
      'Ms2ger',
      'mwu',
      'notriddle',
      'paulrouget',
      'pcwalton',
      'simonsapin'
    ]
  }
%}

Add missing entry to list of approved ssh keys.

{%
  set admin = {
    'ssh_users': [
      'ajeffrey',
      'avadacatavra',
      'edunham',
      'emilio',
      'eijebong',
      'ferjm',
      'gw',
      'jack',
      'jdm',
      'jlempereur',
      'jonleighton',
      'larsberg',
      'manishearth',
      'mbrubeck',
      'Ms2ger',
      'mwu',
      'notriddle',
      'nox',
      'paulrouget',
      'pcwalton',
      'simonsapin'
    ]
  }
%}


  {{form_title}}

<form id="nyu_pds_login_form" action="/pds" method="post">
  <fieldset>
    {{#error}}

{{error}}

    {{/error}}
    <input type="hidden" name="func" value="login" />
    <input type="hidden" name="calling_system" value="{{calling_system}}" />
    <input type="hidden" name="institute" value="{{institute_key_uc}}" />
    <input type="hidden" name="term1" value="short" />
    <input type="hidden" name="selfreg" value="" />
    <input type="hidden" name="url" value="{{target_url}}" />
    <input type="hidden" name="pds_handle" value="{{session_id}}" />
    {{username_label}}
    <input id="bor_id" type="text" name="bor_id" value="{{id}}" placeholder="{{username_placeholder}}" />
    {{password_label}}
    <input id="bor_verification" type="password" name="bor_verification" placeholder="{{password_placeholder}}" />

    <button type="submit" class="btn">Login</button>
  </fieldset>
</form>

Update module and tests :cake:


ENABLED="true"
VIRTUALENV="/srv/www/stationspinner/env"
CELERY_CONFIG_MODULE="celeryconfig"
CELERY_APP="stationspinner.celery:app"
CELERYD_LOG_LEVEL="info"
CELERYD_NODES="{%- for worker_name in stationspinner.workers.processes %}{{worker_name}} {%endfor%}"
CELERYD_CHDIR="/srv/www/stationspinner/web"
PATH="$VIRTUALENV/bin:$PATH"
CELERY_BIN="$VIRTUALENV/bin/celery"
CELERYD_OPTS="--time-limit=7200 --concurrency={{stationspinner.workers.concurrency}}"
CELERYD_LOG_FILE="/srv/www/stationspinner/log/celery-%n.log"
CELERYD_PID_FILE="/srv/www/stationspinner/run/celery-%n.pid"
CELERYD_USER="stationspinner"
CELERYD_GROUP="stationspinner"
export DJANGO_SETTINGS_MODULE="stationspinner.settings"

Switch to eventlet for performance

ENABLED="true"
VIRTUALENV="/srv/www/stationspinner/env"
CELERY_CONFIG_MODULE="celeryconfig"
CELERY_APP="stationspinner.celery:app"
CELERYD_LOG_LEVEL="info"
CELERYD_NODES="{%- for worker_name in stationspinner.workers.processes %}{{worker_name}} {%endfor%}"
CELERYD_CHDIR="/srv/www/stationspinner/web"
PATH="$VIRTUALENV/bin:$PATH"
CELERY_BIN="$VIRTUALENV/bin/celery"
CELERYD_OPTS="--time-limit=7200 --concurrency={{stationspinner.workers.concurrency}} -P eventlet"
CELERYD_LOG_FILE="/srv/www/stationspinner/log/celery-%n.log"
CELERYD_PID_FILE="/srv/www/stationspinner/run/celery-%n.pid"
CELERYD_USER="stationspinner"
CELERYD_GROUP="stationspinner"
export DJANGO_SETTINGS_MODULE="stationspinner.settings"


port                    "{{{port}}}"
music_directory         "{{{music}}}"
playlist_directory      "{{{playlist}}}"
db_file                 "{{{db}}}"
log_file                "{{{log}}}"

Add OSX mpd audio output

port                    "{{{port}}}"
music_directory         "{{{music}}}"
playlist_directory      "{{{playlist}}}"
db_file                 "{{{db}}}"
log_file                "{{{log}}}"
audio_output {
    type "osx"
    name "CoreAudio"
    mixer_type "software"
}


<!DOCTYPE html>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="/static/style.css">
    <title>Portier – {{ title }} {{ display_origin }}</title>

          {{ explanation }}

          {{ use }}

          {{ display_origin }}

          <form id="form" action="/auth" method="post">
            {{# params }}
              <input type="hidden" name="{{ name }}" value="{{ value }}">
            {{/ params }}
            <input type="text" name="login_hint" autofocus autocomplete="off" autocorrect="off" autocapitalize="off"><button type="submit">Login</button>
          </form>

Set favicon for login page

<!DOCTYPE html>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="/static/style.css">
    <title>Portier – {{ title }} {{ display_origin }}</title>
    <link rel="icon" type="image/svg+xml" href="/static/portier_p.svg">

          {{ explanation }}

          {{ use }}

          {{ display_origin }}

          <form id="form" action="/auth" method="post">
            {{# params }}
              <input type="hidden" name="{{ name }}" value="{{ value }}">
            {{/ params }}
            <input type="text" name="login_hint" autofocus autocomplete="off" autocorrect="off" autocapitalize="off"><button type="submit">Login</button>
          </form>


{{!
  Copyright (C) 2016 Google Inc., authors, and contributors <see AUTHORS file>
  Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
  Created By: ivan@reciprocitylabs.com
  Maintained By: ivan@reciprocitylabs.com
}}

{{#if context.isEdit}}
  {{#mandatory}}*{{/mandatory}}
  {{#helptext}}{{/helptext}}
  <datepicker date="context.value"></datepicker>
{{else}}

    {{{firstnonempty context.value 'None'}}}

{{/if}}

Remove help text from inline-edit structure

{{!
  Copyright (C) 2016 Google Inc., authors, and contributors <see AUTHORS file>
  Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
  Created By: ivan@reciprocitylabs.com
  Maintained By: ivan@reciprocitylabs.com
}}

{{#if context.isEdit}}
  {{#mandatory}}*{{/mandatory}}
  <datepicker date="context.value"></datepicker>
{{else}}

    {{{firstnonempty context.value 'None'}}}

{{/if}}


Product and Tools

      Features

      Pricing and Plans

      SEOmoz PRO Web App

      Open Site Explorer

      SEO Toolbar

      SEOmoz API

Fix footer links at Miranda's request.

Product and Tools

      Features

      Pricing and Plans

      Open Site Explorer

      SEO Toolbar

      SEOmoz API

      More SEO Tools


{{!
    Copyright (C) 2013 Google Inc., authors, and contributors <see AUTHORS file>
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
    Created By: brad@reciprocitylabs.com
    Maintained By: brad@reciprocitylabs.com
}}

{{!div class="modal-footer"}}

        {{firstnonempty custom_save_button_text 'Save'}}

{{!/div}}

Rename Submit for Review modal button

{{!
    Copyright (C) 2013 Google Inc., authors, and contributors <see AUTHORS file>
    Licensed under http://www.apache.org/licenses/LICENSE-2.0 <see LICENSE file>
    Created By: brad@reciprocitylabs.com
    Maintained By: brad@reciprocitylabs.com
}}

{{!div class="modal-footer"}}

        {{firstnonempty custom_save_button_text 'Submit'}}

{{!/div}}


  {{instance.title}}
  {{#if instance.context.id}}

  {{/if}}

Add missing text in Program page header

    Program:

  {{instance.title}}
  {{#if instance.context.id}}

  {{/if}}


  {{ user.username }}

{{ time_ago }} ago

followed

Use followed translation in followed stream activity

  {{ user.username }}

{{ time_ago }} ago

{{global.t.followed}}