{* $Header: /cvsroot/tikiwiki/tiki/templates/modules/mod-since_last_visit.tpl,v 1.3 2003-08-07 20:56:53 zaufi Exp $ *}

{if $user}

{include file="modules/module-title.tpl" module_title="{tr}Since your last visit{/tr}" module_name="since_last_visit"}

{tr}Since your last visit on{/tr}

{$nvi_info.lastVisit|tiki_short_datetime}

{$nvi_info.images} {tr}new images{/tr}

{$nvi_info.pages} {tr}wiki pages changed{/tr}

{$nvi_info.files} {tr}new files{/tr}

{$nvi_info.comments} {tr}new comments{/tr}

{$nvi_info.users} {tr}new users{/tr}

{/if}

Fix time format so no unneeded link will be generated bu wiki

{* $Header: /cvsroot/tikiwiki/tiki/templates/modules/mod-since_last_visit.tpl,v 1.4 2003-08-13 22:46:11 zaufi Exp $ *}

{if $user}

{include file="modules/module-title.tpl" module_title="{tr}Since your last visit{/tr}" module_name="since_last_visit"}

{tr}Since your last visit on{/tr}

{$nvi_info.lastVisit|tiki_short_datetime|replace:"[":""|replace:"]":""}

{$nvi_info.images} {tr}new images{/tr}

{$nvi_info.pages} {tr}wiki pages changed{/tr}

{$nvi_info.files} {tr}new files{/tr}

{$nvi_info.comments} {tr}new comments{/tr}

{$nvi_info.users} {tr}new users{/tr}

{/if}


unique template repository/config/stratuslab;

@{
desc = name of the template describing package repository where StratusLab components can be loaded from
values = list of template name, including namespace after repository/ (string)
default = list('stratuslab')
required = no
}
variable STRATUSLAB_PACKAGE_REPOSITORIES ?= list('stratuslab');

# Add StratusLab repository
'/software/repositories' = {
  if ( is_list(STRATUSLAB_PACKAGE_REPOSITORIES) ) {
    debug('Adding repositories for StratusLab components ('+to_string(STRATUSLAB_PACKAGE_REPOSITORIES)+')');
    add_repositories(STRATUSLAB_PACKAGE_REPOSITORIES);
  } else if ( is_undefined(STRATUSLAB_PACKAGE_REPOSITORIES) ) {
    debug('No specific repositories defined for StratusLab components');
    SELF;
  } else {
    error('STRATUSLAB_PACKAGE_REPOSITORIES must be a list of string');
  };
};

Fix an include in StratusLab repository configuration

unique template repository/config/stratuslab;

@{
desc = name of the template describing package repository where StratusLab components can be loaded from
values = list of template name, including namespace after repository/ (string)
default = list('stratuslab')
required = no
}
variable STRATUSLAB_PACKAGE_REPOSITORIES ?= list('stratuslab');

include { 'quattor/functions/repository' };

# Add StratusLab repository
'/software/repositories' = {
  if ( is_list(STRATUSLAB_PACKAGE_REPOSITORIES) ) {
    debug('Adding repositories for StratusLab components ('+to_string(STRATUSLAB_PACKAGE_REPOSITORIES)+')');
    add_repositories(STRATUSLAB_PACKAGE_REPOSITORIES);
  } else if ( is_undefined(STRATUSLAB_PACKAGE_REPOSITORIES) ) {
    debug('No specific repositories defined for StratusLab components');
    SELF;
  } else {
    error('STRATUSLAB_PACKAGE_REPOSITORIES must be a list of string');
  };
};


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::${bucket_name}/*/AWSLogs/*/*",
      "Principal": {
        "AWS": "arn:aws:iam::${principal}:root"
      }
    }
  ]
}

Update ELB log bucket policy


<%page args="abstract,track_class,contrib_type,status,track_view"/>

<%inherit file="abstract.tpl" />

<%block name="management_data" args="track_view">
    \vspace{1em}
    \textbf{${_("Track Status:")} |latex_escape} ${track_view[0]}
    % if track_view[1] is not None:
        % if not isinstance(track_view[1], list):
            (${track_view[1].getId() | latex_escape}: ``${track_view[1].getTitle() | latex_escape}'')
        % else:
        \setdescription{leftmargin=2em,labelindent=2em}
        \begin{description}
            % for elem in track_view[1]:
                \item[${elem[0] | latex_escape}] ${elem[1] | latex_escape}
            % endfor
        \end{description}
        % endif
    % endif

    \vspace{1em}
</%block>

Fix wrong } in latex template

<%page args="abstract,track_class,contrib_type,status,track_view"/>

<%inherit file="abstract.tpl" />

<%block name="management_data" args="track_view">
    \vspace{1em}
    \textbf{${_("Track Status:") | latex_escape}} ${track_view[0]}
    % if track_view[1] is not None:
        % if not isinstance(track_view[1], list):
            (${track_view[1].getId() | latex_escape}: ``${track_view[1].getTitle() | latex_escape}'')
        % else:
        \setdescription{leftmargin=2em,labelindent=2em}
        \begin{description}
            % for elem in track_view[1]:
                \item[${elem[0] | latex_escape}] ${elem[1] | latex_escape}
            % endfor
        \end{description}
        % endif
    % endif

    \vspace{1em}
</%block>


{tikimodule title={tr}Cart{/tr} name="cart"}
	<form method="post" action="">

			{tr}Product{/tr}
			{tr}Unit cost{/tr}
			{tr}Qty{/tr}

		{foreach from=$cart_content item=item}

					{if $item.href}
						{$item.description|escape}
					{else}
						{$item.description|escape}
					{/if}

				{$item.price|escape}
				<input type="text" name="cart[{$item.code|escape}]" size="3" value="{$item.quantity|escape}"/>

		{/foreach}

			<input type="submit" name="update" value="{tr}Update{/tr}"/>

	</form>

{tr}Total{/tr}: {$cart_total|escape} {$prefs.payment_currency|escape}

	<form method="post" action="">

<input type="submit" name="checkout" value="{tr}Check-out{/tr}"/>

	</form>
{/tikimodule}

Enable standard module parameters (flip, notitle, decorations, nobox).

{tikimodule error=$module_params.error title=$tpl_module_title name="cart" flip=$module_params.flip decorations=$module_params.decorations nobox=$module_params.nobox notitle=$module_params.notitle}
	<form method="post" action="">

			{tr}Product{/tr}
			{tr}Unit cost{/tr}
			{tr}Qty{/tr}

		{foreach from=$cart_content item=item}

					{if $item.href}
						{$item.description|escape}
					{else}
						{$item.description|escape}
					{/if}

				{$item.price|escape}
				<input type="text" name="cart[{$item.code|escape}]" size="3" value="{$item.quantity|escape}"/>

		{/foreach}

			<input type="submit" name="update" value="{tr}Update{/tr}"/>

	</form>

{tr}Total{/tr}: {$cart_total|escape} {$prefs.payment_currency|escape}

	<form method="post" action="">

<input type="submit" name="checkout" value="{tr}Check-out{/tr}"/>

	</form>
{/tikimodule}


{nabu_assign var=info_section section=empty_categories}
{nabu_raw_assign}
    table_metadata: [
        toolbar: [
            groups: [
                1: [
                    buttons: [
                        add: [
                            type: "default"
                            icon: "fa fa-plus"
                            apply: "all"
                        ]
                        edit: [
                            type: "default"
                            icon: "fa fa-pencil"
                            apply: "single"
                        ]
                    ]
                ]
                2: [
                    buttons: [
                        delete: [
                            type: "danger"
                            icon: "fa fa-trash"
                            apply: "multiple"
                        ]
                    ]
                ]
            ]
        ]
        fields: [
            id: [
                title: "ID"
                order: "alpha"
                align: "right"
                id: true
            ]
            sku: [
                title: "SKU"
                order: "alpha"
            ]
            name: [
                title: "Nombre"
                order: "number"
            ]
            slug: [
                title: "Slug"
                order: "alpha"
            ]
            price_amount: [
                title: "Precio"
                order: "number"
                align: "right"
            ]
            tax_percentage: [
                title: "% IVA"
                order: "number"
                align: "right"
            ]
        ]
        translations: [
            search_button: "{nabu_static key=btn_search}"
            columns_button: "{nabu_static key=btn_columns}"
            show_all_columns: "{nabu_static key=sel_show_all}"
            hide_all_columns: "{nabu_static key=sel_hide_all}"
            empty_message: "{"\""|str_replace:"\\\"":$info_section.translation.content}"
            translation_not_available: "{nabu_static key=lbl_translation_not_available}"
        ]
    ]
{/nabu_raw_assign}
{nabu_assign var=ajax_editor cta=ajax_product}
{assign var=ajax_editor value="{$ajax_editor.translation.final_url|sprintf:$edit_commerce.id:'%s'}"}
{include file="content/parts/table-splitted-panels.tpl" id=products_list editor=$ajax_editor editor_mode=ajax
         data=$edit_commerce.products metadata=$table_metadata languages=$edit_commerce.languages}


<img
	src="{@$__wcf->getPath()}images/reaction/{$reactionType->iconFile}"
	class="reactionType"
	data-reaction-type-id="{$reactionType->reactionTypeID}"
>

Add missing alt attribute to reaction type image

<img
	src="{@$__wcf->getPath()}images/reaction/{$reactionType->iconFile}"
	alt="{$reactionType->getTitle()}"
	class="reactionType"
	data-reaction-type-id="{$reactionType->reactionTypeID}"
>


{* $Id *}

{tr}Set up Files and File Gallery{/tr}

{tr}Set up your file gallery and external file paths{/tr}

<fieldset>
	<legend>{tr}File Gallery storage{/tr}</legend>
	{preference name='fgal_use_db'}
	If stored in a directory, you need specify the path ...
	{preference name='fgal_use_dir'}

	{tr}See also{/tr} {tr}File Gallery admin panel{/tr}
</fieldset>

<fieldset>
	<legend>{tr}Attachment storage{/tr}</legend>
	{preference name=feature_wiki_attachments}
	If attachments are enabled ...
	{preference name=w_use_db}
	{preference name=w_use_dir}

	{tr}See also{/tr} {tr}File Gallery admin panel{/tr}
</fieldset>

Use proper SVN Id tag

{* $Id$ *}

{tr}Set up Files and File Gallery{/tr}

{tr}Set up your file gallery and external file paths{/tr}

<fieldset>
	<legend>{tr}File Gallery storage{/tr}</legend>
	{preference name='fgal_use_db'}
	If stored in a directory, you need specify the path ...
	{preference name='fgal_use_dir'}

	{tr}See also{/tr} {tr}File Gallery admin panel{/tr}
</fieldset>

<fieldset>
	<legend>{tr}Attachment storage{/tr}</legend>
	{preference name=feature_wiki_attachments}
	If attachments are enabled ...
	{preference name=w_use_db}
	{preference name=w_use_dir}

	{tr}See also{/tr} {tr}File Gallery admin panel{/tr}
</fieldset>


Add template for displaying result of AJAX operations

{*  ============================================================================
 *  spMARKS
 *
 *  A Web 2.0 Bookmark Management System
 *  ============================================================================
 *  The MIT License
 *
 *  Copyright (c) 2008 Sanjeev Premi <spremi@ymail.com>
 *
 *  Permission is hereby granted, free of charge, to any person obtaining a copy
 *  of this software and associated documentation files (the "Software"), to
 *  deal in the Software without restriction, including without limitation the
 *  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 *  sell copies of the Software, and to permit persons to whom the Software is
 *  furnished to do so, subject to the following conditions:
 *
 *  The above copyright notice and this permission notice shall be included in
 *  all copies or substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 *  IN THE SOFTWARE.
 *  ============================================================================
 *}

{*  ============================================================================
 *  Status of the last AJAX operation
 *  ============================================================================
 *}
{$ajaxMessage}


{if $status}

		{tr}Status{/tr}

			{include 'trackerinput/status.tpl' status_types=$status_types status=$status}

{/if}
{foreach from=$fields item=field}

			{$field.name|tra|escape}
			{if $field.isMandatory eq 'y'}
				*
			{/if}

			{trackerinput field=$field}
			{if !empty($field.description) && $field.type ne 'S'}
				{if $field.descriptionIsParsed eq 'y'}

{wiki}{$field.description}{/wiki}

				{else}

{$field.description|tra|escape}

				{/if}
			{/if}

{/foreach}
{jq}$('label').click(function() {$('input, select, textarea', '#'+$(this).attr('for')).focus();});{/jq}

Make header fields in flat item view layout look like headings


<form name="data">
    {$formh}
    <button
        type="button"
        class="button color oppose"
        onclick="{$submitdata}"
    >
        {$c->__('button.validate')}
    </button>
</form>

Disable autoescape for AccountNext form

<form name="data">
    {autoescape="off"}
        {$formh}
    {/autoescape}
    <button
        type="button"
        class="button color oppose"
        onclick="{$submitdata}"
    >
        {$c->__('button.validate')}
    </button>
</form>


Basic

{button_link label="Button"}
{button_link label="Button with html tags" isHtmlLabel=true}
{button_link icon="like"}
{button_link icon="trophy" label="With Icon"}
{button_link label="As a link" href="/"}

Large

{button_link class="button-large" label="Button"}
{button_link icon="gift" class="button-large" label="With Icon"}

Themes

{button_link theme='default' label="Default"}
{button_link theme='highlight' label="Highlight"}
{button_link theme='success' label="Success"}
{button_link theme='danger' label="Danger"}

Confirmation

{button_link class="confirmAction" label="With Confirmation" data=['click-confirmed' => true]}
{button_link class="confirmAction warning" icon='trash' iconConfirm='trash-open' label="With Warning" data=['click-confirmed' => true]}

Add example button as link

Basic

{button_link label="Button"}
{button_link label="Button with html tags" isHtmlLabel=true}
{button_link icon="like"}
{button_link icon="trophy" label="With Icon"}
{button_link label="As a link" href="/"}
{button_link icon="gift" label="Link with icon" href="/"}

Large

{button_link class="button-large" label="Button"}
{button_link icon="gift" class="button-large" label="With Icon"}
{button_link class="button-large" label="As a link" href="/"}
{button_link icon="gift" class="button-large" label="Link with icon" href="/"}

Themes

{button_link theme='default' label="Default"}
{button_link theme='highlight' label="Highlight"}
{button_link theme='success' label="Success"}
{button_link theme='danger' label="Danger"}

Confirmation

{button_link class="confirmAction" label="With Confirmation" data=['click-confirmed' => true]}
{button_link class="confirmAction warning" icon='trash' iconConfirm='trash-open' label="With Warning" data=['click-confirmed' => true]}


// THIS FILE IS AUTO-GENERATED BY CCGEN
// DO NOT MODIFY

package commandclass

type CommandClassID byte

const (
  {{range .CommandClasses}}
  {{.GetConstName}} CommandClassID = {{.Key}}{{end}}
)

func (c CommandClassID) String() string {
  switch c {
    {{range .CommandClasses}}
    case {{.GetConstName}}:
      return "{{.Help}}"
    {{end}}
    default:
      return fmt.Sprintf("Unknown (0x%X)", byte(c))
  }
}

func Parse(payload []byte) (interface{}, error) {
  switch CommandClassID(payload[0]) {
    {{range $_, $cc := .CommandClasses}}{{if .CanGen}}{{$version := .Version}}
    case {{.GetConstName}}:
      switch payload[1] {
        {{range .Commands}}case {{.Key}}:
          command := {{$cc.GetPackageName}}.{{(ToGoName .Name)}}{}
          err := command.UnmarshalBinary(payload[2:])
          if err != nil {
            return nil, err
          }

          return command, nil
        {{end}}default:
          return nil, errors.New("Unknown command in command class {{.Help}}")
      }
    {{end}}{{end}}

    default:
      return nil, errors.New("Unknown command class")
  }
}

Fix errors with duplicate switch cases in generated code

// THIS FILE IS AUTO-GENERATED BY CCGEN
// DO NOT MODIFY

package commandclass

type CommandClassID byte

const (
  {{range .CommandClasses}}
  {{.GetConstName}} CommandClassID = {{.Key}}{{end}}
)

func (c CommandClassID) String() string {
  switch c {
    {{range .CommandClasses}}
    {{if eq .Version 1}}
    case {{.GetConstName}}:
      return "{{.Help}}"
    {{end}}
    {{end}}
    default:
      return fmt.Sprintf("Unknown (0x%X)", byte(c))
  }
}

func Parse(ccVersion uint8, payload []byte) (interface{}, error) {
  switch {
    {{range $_, $cc := .CommandClasses}}{{if .CanGen}}{{$version := .Version}}
    case payload[0] == byte({{.GetConstName}}) && ccVersion == {{$version}}:
      switch payload[1] {
        {{range .Commands}}case {{.Key}}:
          command := {{$cc.GetPackageName}}.{{(ToGoName .Name)}}{}
          if err := command.UnmarshalBinary(payload[2:]); err != nil {
            return nil, err
          }
          return command, nil
        {{end}}default:
          return nil, errors.New("Unknown command in command class {{.Help}}")
      }
    {{end}}{{end}}

    default:
      return nil, errors.New("Unknown command class")
  }
}


yieldUnescaped '<!DOCTYPE html>'
html {
    head {
        meta('http-equiv':'"Content-Type" content="text/html; charset=utf-8"')
        title("$title")
    }

    body {
        h1("$title")
        h2("What a wonderful sample!")

        div {
            headingsToCommitMap.each { k, v ->
                if (k != "None") {
                    fragment "h2(title)", title: k
                }
                v.each {
                    fragment "li(commit)", commit: it
                }
            }
        }
    }
}

Make template use ul+li instead of just li

yieldUnescaped '<!DOCTYPE html>'
html {
    head {
        meta('charset':'UTF-8')
        title("$title")
    }

    body {
        h1("$title")
        h2("What a wonderful sample!")

        div {
            headingsToCommitMap.each { k, v ->
                if (k != "None") {
                    fragment "h2(title)", title: k
                }
                newLine()
                ul {
                    v.each {
                        fragment "li(commit)", commit: it
                        newLine()
                    }
                }
            }
        }
    }
}


<div class="<?=$this->rootElementClass?>" style="max-width:<?=$this->width;?>px;<? if ($this->defineWidth) {?> width:<?=$this->width;?>px;<? } ?>">
<? if ($this->baseUrl) { ?>
    <?=$this->component($this->linkTag)?>
    <div class="container<? if ($this->width>100) { ?> webResponsiveImgLoading<? } ?>" style="padding-bottom:<?=$this->aspectRatio?>%;"
            data-min-width="<?=$this->minWidth;?>"
            data-max-width="<?=$this->maxWidth;?>"
            data-src="<?=$this->baseUrl;?>">

            <?=$this->image($this->image, $this->altText, $this->imgCssClass)?>

    <?if ($this->hasContent($this->linkTag)) {?>

    <?}?>
    <? if ($this->showImageCaption && !empty($this->image_caption)) { ?>
    <div class="imageCaption" style="max-width:<?=$this->imageParam($this->image,'width','default');?>px;"><?=(!empty($this->image_caption) ? $this->image_caption : '');?>

    <? } ?>
<? } ?>

Change template like Image template

<div class="<?=$this->rootElementClass?> kwfUp-kwcImage" style="<?=$this->style;?>">
<? if ($this->baseUrl) { ?>
    <?=$this->component($this->linkTag)?>
    <div class="<?=$this->containerClass?>" style="padding-bottom:<?=$this->aspectRatio?>%;"
            data-min-width="<?=$this->minWidth;?>"
            data-max-width="<?=$this->maxWidth;?>"
            data-src="<?=$this->baseUrl;?>">

            <?=$this->image($this->image, $this->altText, $this->imgCssClass)?>

    <?if ($this->hasContent($this->linkTag)) {?>

    <?}?>
    <? if ($this->showImageCaption && !empty($this->image_caption)) { ?>
    <div class="<?=$this->bemClass('imageCaption')?> kwfUp-imageCaption" style="<?=$this->captionStyle;?>"><?=(!empty($this->image_caption) ? $this->image_caption : '');?>

    <? } ?>
<? } ?>


                {$c->__('page.chats')}

            {if="$c->supported('upload')"}

            {/if}

                {if="$contact != null"}
                    {$contact->getTrueName()}
                {else}
                    {$jid|echapJS}
                {/if}

{$contact->jid}

Fix an old .active in the Chat header


Signup to: ${course}

{var textarea = "textarea"}

        {for component in components}

            ${component}

        {/for}

    <form id="signup-confirm" action="#">
        {for componentId in componentIds}<input type="hidden" name="components" value="${componentId}"/>{/for}<input type="hidden" name="courseId" value="${courseId}"/>

                        Supervisor Email

                    <input type="text" class="valid-email" name="email" id="supervisor-email" size="40"/>

                        Message to supervisor

<${textarea} name="message" id="supervisor-note" cols="40" rows="8">Reason for requesting to attend this module:

Other comments: </${textarea}>

        <input type="submit" value="Confirm Signup"/><input type="submit" class="cancel" value="Cancel"/>
    </form>

Make sure the students know it's their supervisors emails.

Signup to: ${course}

{var textarea = "textarea"}

        {for component in components}

            ${component}

        {/for}

    <form id="signup-confirm" action="#">
        {for componentId in componentIds}<input type="hidden" name="components" value="${componentId}"/>{/for}<input type="hidden" name="courseId" value="${courseId}"/>

                        Your Supervisor's Email

                    <input type="text" class="valid-email" name="email" id="supervisor-email" size="40"/>

                        Message to supervisor

<${textarea} name="message" id="supervisor-note" cols="40" rows="8">Reason for requesting to attend this module:

Other comments: </${textarea}>

        <input type="submit" value="Confirm Signup"/><input type="submit" class="cancel" value="Cancel"/>
    </form>


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.pulsar" name="Pulsar" version="$VERSION" provider-name="steeve">
    <requires>
        <import addon="xbmc.python" version="2.1.0"/>
    </requires>
    <extension point="xbmc.python.pluginsource" library="main.py">
        <provides>video</provides>
    </extension>
    <extension point="xbmc.service" library="pulsard.py" start="login"/>
    <extension point="xbmc.addon.metadata">
        <platform>all</platform>
        <language></language>
    </extension>
</addon>

Add pulsar as a module

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.pulsar" name="Pulsar" version="$VERSION" provider-name="steeve">
    <requires>
        <import addon="xbmc.python" version="2.1.0"/>
    </requires>
    <extension point="xbmc.python.pluginsource" library="main.py">
        <provides>video</provides>
    </extension>
    <extension point="xbmc.service" library="pulsard.py" start="login"/>
    <extension point="xbmc.python.module" library="resources/site-packages" />
    <extension point="xbmc.addon.metadata">
        <platform>all</platform>
        <language></language>
    </extension>
</addon>


 Twitter Social Authentication

<form>

			Create a Twitter Application via the
			Twitter Developers Page and then
			paste your application details here.

		<input type="text" data-field="social:twitter:key" title="API Key" class="form-control input-lg" placeholder="API Key">

		<input type="text" data-field="social:twitter:secret" title="API Secret" class="form-control input-md" placeholder="API Secret">

</form>

<button class="btn btn-lg btn-primary" id="save">Save</button>

Update the twitter url and adds a paragraph about the callback URL

 Twitter Social Authentication

<form>

			Create a Twitter Application via the
			Twitter Developers Page and then
			paste your application details here.

			Use http://your.domain/auth/twitter/callback as the callback URL.

		<input type="text" data-field="social:twitter:key" title="API Key" class="form-control input-lg" placeholder="API Key">

		<input type="text" data-field="social:twitter:secret" title="API Secret" class="form-control input-md" placeholder="API Secret">

</form>

<button class="btn btn-lg btn-primary" id="save">Save</button>


{
    "volume": ["name~", "status", "metadata",
               "bootable", "migration_status", "availability_zone",
               "group_id", "user_id"],
    "backup": ["name", "status", "volume_id"],
    "snapshot": ["name~", "status", "volume_id", "metadata",
                 "availability_zone"],
    "group": [],
    "group_snapshot": ["status", "group_id"],
    "attachment": ["volume_id", "status", "instance_id", "attach_status"],
    "message": ["resource_uuid", "resource_type", "event_id",
                "request_id", "message_level"],
    "pool": ["name", "volume_type"]
}

Add required resource filter for volume type


<select name="{$field.ins_id}" {if $context.preselection}disabled="disabled"{/if}>
	{if $field.isMandatory ne 'y' || empty($field.value)}
		<option value=""></option>
	{/if}
	{foreach key=id item=label from=$field.list}
		<option value="{$id|escape}" {if $context.preselection and $context.preselection eq $id or !$context.preselection and $field.value eq $id}selected="selected"{/if}>
			{if $field.listdisplay[$id] eq ""}
				{$label|escape}
			{else}
				{$field.listdisplay[$id]|escape}
			{/if}
		</option>
	{/foreach}
</select>

Apply preselection only when no value yet exists, to avoid accidental changing of existing value

<select name="{$field.ins_id}" {if $context.preselection}disabled="disabled"{/if}>
	{if $field.isMandatory ne 'y' || empty($field.value)}
		<option value=""></option>
	{/if}
	{foreach key=id item=label from=$field.list}
		<option value="{$id|escape}" {if $context.preselection and !$field.value and $context.preselection eq $id or $field.value eq $id}selected="selected"{/if}>
			{if $field.listdisplay[$id] eq ""}
				{$label|escape}
			{else}
				{$field.listdisplay[$id]|escape}
			{/if}
		</option>
	{/foreach}
</select>


{if $perspectives|@count gt 0}
	{tikimodule error=$module_params.error title=$tpl_module_title name="perspective" flip=$module_params.flip decorations=$module_params.decorations nobox=$module_params.nobox notitle=$module_params.notitle}
		<form method="get" action="tiki-switch_perspective.php">
			<select name="perspective">
				<option>{tr}Default{/tr}</option>
				{foreach from=$perspectives item=persp}
					<option value="{$persp.perspectiveId|escape}"{if $persp.perspectiveId eq $current_perspective} selected="selected"{/if}>{$persp.name|escape}</option>
				{/foreach}
			</select>
			<input type="submit" value="{tr}Go{/tr}"/>
		</form>
		{if $tiki_p_perspective_admin eq 'y'}

			{tr}Edit perspectives{/tr}

		{/if}
	{/tikimodule}
{/if}

Use javascript to switch perspective on select change (and hide "Go" button) if enabled, to be more consistent with other modules (theme, lang etc)

{if $perspectives|@count gt 0}
	{tikimodule error=$module_params.error title=$tpl_module_title name="perspective" flip=$module_params.flip decorations=$module_params.decorations nobox=$module_params.nobox notitle=$module_params.notitle}
		<form method="get" action="tiki-switch_perspective.php">
			<select name="perspective" onchange="this.form.submit();">
				<option>{tr}Default{/tr}</option>
				{foreach from=$perspectives item=persp}
					<option value="{$persp.perspectiveId|escape}"{if $persp.perspectiveId eq $current_perspective} selected="selected"{/if}>{$persp.name|escape}</option>
				{/foreach}
			</select>

				<input type="submit" value="{tr}Go{/tr}"/>

		</form>
		{if $tiki_p_perspective_admin eq 'y'}

			{tr}Edit perspectives{/tr}

		{/if}
	{/tikimodule}
{/if}


        {$avatar}

            {$title}
            {$contact}

                {$date}

        {$content}

        {$tags}
        {$toolbox}
        {$enc}
        {$comments}
        {$place}
        {$recycle}
        {$group}

Remove unnecessary z-index and add a little margin to avoid the text message to be displayed below flag.


            Name:
            <input type="text" ng-model="yourName" placeholder="Enter a name here">

Hello {literal}{{yourName}}{/literal}!

Update AngularJS with Smarty PHP

        <title>{$title}</title>

            {$body}:
            <input type="text" ng-model="yourName" placeholder="Enter a name here">

Hello {literal}{{yourName}}{/literal}!


                {{#renderImg}}

                {{/renderImg}}

{{title}}

                    {{#minimize}}
                    <button class="wm-minimize"> </button>
                    {{/minimize}}
                    <button class="wm-maximize"> </button>
                    <button class="wm-close"> </button>
                    {{#detach}}
                    <button class="wm-detach"> </button>
                    {{/detach}}

            <button class="wm-resize top-right"> </button>
            <button class="wm-resize top-left"> </button>
            <button class="wm-resize bottom-left"> </button>
            <button class="wm-resize bottom-right"> </button>

Move detach button between maximize and close.

                {{#renderImg}}

                {{/renderImg}}

{{title}}

                    {{#minimize}}
                    <button class="wm-minimize"> </button>
                    {{/minimize}}
                    <button class="wm-maximize"> </button>
                    {{#detach}}
                    <button class="wm-detach"> </button>
                    {{/detach}}
                    <button class="wm-close"> </button>

            <button class="wm-resize top-right"> </button>
            <button class="wm-resize top-left"> </button>
            <button class="wm-resize bottom-left"> </button>
            <button class="wm-resize bottom-right"> </button>


# Macros for building CUDA code.
def cuda_path_flags():
    """Stub for compatibility with internal build."""
    return []

def if_cuda(if_true, if_false = []):
    """Shorthand for select()'ing on whether we're building with CUDA.

    Returns a select statement which evaluates to if_true if we're building
    with CUDA enabled.  Otherwise, the select statement evaluates to if_false.

    """
    return select({
        "@local_config_cuda//cuda:using_nvcc": if_true,
        "//conditions:default": if_false
    })

def if_cuda_is_configured(x):
    """Tests if the CUDA was enabled during the configure process.

    Unlike if_cuda(), this does not require that we are building with
    --config=cuda. Used to allow non-CUDA code to depend on CUDA libraries.
    """
    if %{cuda_is_configured}:
      return x
    return []

Add cuda_is_configured() build macro for testing whether CUDA was enabled at configure time. Change: 141474932

# Macros for building CUDA code.
def cuda_path_flags():
    """Stub for compatibility with internal build."""
    return []

def if_cuda(if_true, if_false = []):
    """Shorthand for select()'ing on whether we're building with CUDA.

    Returns a select statement which evaluates to if_true if we're building
    with CUDA enabled.  Otherwise, the select statement evaluates to if_false.

    """
    return select({
        "@local_config_cuda//cuda:using_nvcc": if_true,
        "//conditions:default": if_false
    })

def cuda_is_configured():
    """Returns true if CUDA was enabled during the configure process."""
    return %{cuda_is_configured}

def if_cuda_is_configured(x):
    """Tests if the CUDA was enabled during the configure process.

    Unlike if_cuda(), this does not require that we are building with
    --config=cuda. Used to allow non-CUDA code to depend on CUDA libraries.
    """
    if cuda_is_configured():
      return x
    return []


      {@view~map.popup.table.th.data@}
      {@view~map.popup.table.th.value@}

  {foreach $attributes as $attribute}
  {if $attribute['name'] != 'geometry' && $attribute['name'] != 'maptip'}

      {$attribute['name']}
      {$attribute['name']|featurepopup:$attribute['value'],$repository,$project}

  {/if}
  {/foreach}

Hide empty fields in HTML popup

      {@view~map.popup.table.th.data@}
      {@view~map.popup.table.th.value@}

  {foreach $attributes as $attribute}
  {if $attribute['name'] != 'geometry' && $attribute['name'] != 'maptip' && $attribute['value'] != ''}

      {$attribute['name']}
      {$attribute['name']|featurepopup:$attribute['value'],$repository,$project}

  {/if}
  {/foreach}


There are multiple shipping methods available for your order. Please select your prefered shipping method below.

<form action="{if _MULTILANGUAGE}{$lclanguage}/{/if}cart/shipping/" method="POST">

    {foreach from=$shippingMethods key=methodid item=method}

<input type="radio" name="shippingmethod" value="{$methodid}" id="shippingMethod_{$methodid}" {if $selectedMethod == $methodid} checked="checked"{/if} />{$method.label} - {$currency|default:$OPTIONS.cart_default_currency}{$currencysymbol|default:' '}{$method.cost|string_format:"%01.2f"}

    {/foreach}

    <input type="submit" value="Continue" />

</form>

Fix bug with shipping page sending user to wrong URL when multilanguage is off and site running from a subfolder.

There are multiple shipping methods available for your order. Please select your prefered shipping method below.

<form action="{if $OPTIONS.multilanguage=='yes'}{$lclanguage}/{/if}cart/shipping/" method="POST">

    {foreach from=$shippingMethods key=methodid item=method}

<input type="radio" name="shippingmethod" value="{$methodid}" id="shippingMethod_{$methodid}" {if $selectedMethod == $methodid} checked="checked"{/if} />{$method.label} - {$currency|default:$OPTIONS.cart_default_currency}{$currencysymbol|default:' '}{$method.cost|string_format:"%01.2f"}

    {/foreach}

    <input type="submit" value="Continue" />

</form>


<div class="<?=$this->cssClass?><? if ($this->showImageCaption && !empty($this->image_caption)) { ?> showImageCaption<? } ?>" style="max-width:<?=$this->width;?>px;<? if ($this->defineWidth) {?> width:<?=$this->width;?>px;<? } ?>">
<? if ($this->baseUrl) { ?>
    <?=$this->component($this->linkTag)?>
    <div class="container<? if ($this->width>100) { ?> webResponsiveImgLoading<? } ?>" style="padding-bottom:<?=$this->aspectRatio?>%;"
            data-min-width="<?=$this->minWidth;?>"
            data-max-width="<?=$this->maxWidth;?>"
            data-src="<?=$this->baseUrl;?>">

            <?=$this->image($this->image, $this->altText, $this->imgAttributes)?>

    <? if ($this->showImageCaption && !empty($this->image_caption)) { ?>
    <div class="imageCaption" style="max-width:<?=$this->imageParam($this->image,'width','default');?>px;"><?=(!empty($this->image_caption) ? $this->image_caption : '');?>

    <? } ?>
    <?if ($this->hasContent($this->linkTag)) {?>

    <?}?>
<? } ?>

Use style and classes set in image component

<div class="<?=$this->cssClass?><? if ($this->showImageCaption && !empty($this->image_caption)) { ?> showImageCaption<? } ?>" style="<?=$this->style;?>">
<? if ($this->baseUrl) { ?>
    <?=$this->component($this->linkTag)?>
    <div class="<?=$this->containerClass?>" style="padding-bottom:<?=$this->aspectRatio?>%;"
            data-min-width="<?=$this->minWidth;?>"
            data-max-width="<?=$this->maxWidth;?>"
            data-src="<?=$this->baseUrl;?>">

            <?=$this->image($this->image, $this->altText, $this->imgAttributes)?>

    <? if ($this->showImageCaption && !empty($this->image_caption)) { ?>
    <div class="imageCaption" style="max-width:<?=$this->imageParam($this->image,'width','default');?>px;"><?=(!empty($this->image_caption) ? $this->image_caption : '');?>

    <? } ?>
    <?if ($this->hasContent($this->linkTag)) {?>

    <?}?>
<? } ?>


{% if q.in_collection %}
{% with m.rsc[q.in_collection].o.haspart as ps %}
    {% for p in ps %}
    {% if p == id %}
        {% with ps[forloop.counter-1], ps[forloop.counter+1] as prev, next %}

          {% if prev %}

←

          {% endif %}
          {% if next %}

→

          {% endif %}

        {% endwith %}
    {% endif %}
    {% endfor %}
{% endwith %}
{% endif %}

{{ m.rsc[id].title }}

Add collection prev/next when id is in a collection or when q.in_collection is given.

{% with q.in_collection|default:id.s.haspart[1] as in_collection %}
{% if in_collection %}
{% with m.rsc[in_collection].o.haspart as ps %}
    {% for p in ps %}
    {% if p == id %}
        {% with ps[forloop.counter-1], ps[forloop.counter+1] as prev, next %}

          {% if prev %}

←

          {% endif %}
          {% if next %}

→

          {% endif %}

        {% endwith %}
    {% endif %}
    {% endfor %}
{% endwith %}
{% endif %}
{% endwith %}

{{ m.rsc[id].title }}


<meta property="og:type" content="article" />
<meta property="og:title" content="{if $page_title}{% $str->escape($str->upperFirst($page_title)) %}{else}{site_name}{/if}" />
<meta property="og:description" content="{% $str->escape($str->upperFirst($meta_description)) %}" />
<meta property="og:url" content="{current_url}" />

<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="{if $page_title}{% $str->escape($str->upperFirst($page_title)) %}{else}{site_name}{/if}" />
<meta name="twitter:description" content="{% $str->escape($str->upperFirst($meta_description)) %}" />
<meta name="twitter:url" content="{current_url}" />

{if !empty($image_social_meta_tag)}
    <meta name="thumbnail" content="{image_social_meta_tag}" />
    <meta name="twitter:image" content="{image_social_meta_tag}" />
    <meta property="og:image" content="{image_social_meta_tag}" />
{/if}

Store condition checks/func call into variables

{{ $social_meta_title = $page_title ? $str->escape($str->upperFirst($page_title)) : $site_name }}
{{ $social_meta_desc = $str->escape($str->upperFirst($meta_description)) }}

<meta property="og:type" content="article" />
<meta property="og:title" content="{social_meta_title}" />
<meta property="og:description" content="{social_meta_desc}" />
<meta property="og:url" content="{current_url}" />

<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="{social_meta_title}" />
<meta name="twitter:description" content="{social_meta_desc}" />
<meta name="twitter:url" content="{current_url}" />

{if !empty($image_social_meta_tag)}
    <meta name="thumbnail" content="{image_social_meta_tag}" />
    <meta name="twitter:image" content="{image_social_meta_tag}" />
    <meta property="og:image" content="{image_social_meta_tag}" />
{/if}


<form action="" method="POST">

        %(title)s

<%= _("""Please, note that fields marked with * are mandatory""")%>

            %(personalData)s

    %(otherSections)s

        <input type="button" class="btn" value="<%= _("register")%>">

</form>

Fix JS errors in registration form preview


%import time
%now = time.time()
%helper = app.helper
%datamgr = app.datamgr

%rebase widget globals(), css=['graphs/css/widget_graphs.css']

%if not elt:
    No element selected!
%else:

  %uris = app.get_graph_uris(elt, now - 3600*4, now)
  %if len(uris) == 0:
    No graph for this element
  %end

    %for g in uris:
      %img_src = g['img_src']
      %link = g['link']

   %end

%end

Add the source parameter. Value : 'dashboard' Reduce the time-range : 1h.

%import time
%now = time.time()
%helper = app.helper
%datamgr = app.datamgr

%rebase widget globals(), css=['graphs/css/widget_graphs.css']

%if not elt:
    No element selected!
%else:

  # Reduce the time range of the dashboard graph. Last hour.
  # and specify the source  : dashboard
  %uris = app.get_graph_uris(elt, now - 3600, now, 'dashboard')
  %if len(uris) == 0:
    No graph for this element
  %end

    %for g in uris:
      %img_src = g['img_src']
      %link = g['link']

   %end

%end


service_type: loadbalancer
service_name: octavia
prefix: '/v2(\.0)?(/lbaas|/octavia)?'

resources:
  healthmonitors:
    type_uri: network/loadbalancer/healthmonitors
  loadbalancers:
    type_uri: network/loadbalancers
    children:
      stats:
        singleton: true
      status:
        singleton: true
      failover:
        singleton: true
  listeners:
    type_uri: network/loadbalancer/listeners
    children:
      stats:
        singleton: true
  pools:
    type_uri: network/loadbalancer/pools
    children:
      members:
  l7policies:
    type_uri: network/loadbalancer/l7policies
    el_type_uri: network/loadbalancer/l7policy
    # the unique ID of an l7policy is located in attribute 'l7policy_id' (not 'id')
    custom_id: l7policy_id
    children:
      rules:
  quotas:
    type_uri: network/loadbalancer/quotas
    children:
      defaults:
        singleton: true
  flavors:
    type_uri: network/loadbalancer/flavors
  flavorprofiles:
    type_uri: network/loadbalancer/flavorprofiles
  availabilityzoneprofiles:
    type_uri: network/loadbalancer/availabilityzoneprofiles
  providers:
    type_uri: network/loadbalancer/providers
    children:
      flavor_capabilities:
        singleton: true
      availability_zone_capabilities:
        singleton: true
  amphorae:
    type_uri: network/loadbalancer/amphorae
    children:
      stats:
        singleton: true
      config:
        singleton: true
      failover:
        singleton: true

Fix audit map: /octavia doesn't need to be optional

service_type: loadbalancer
service_name: octavia
prefix: '/v2(\.0)?(/lbaas)?'

resources:
  healthmonitors:
    type_uri: network/loadbalancer/healthmonitors
  loadbalancers:
    type_uri: network/loadbalancers
    children:
      stats:
        singleton: true
      status:
        singleton: true
      failover:
        singleton: true
  listeners:
    type_uri: network/loadbalancer/listeners
    children:
      stats:
        singleton: true
  pools:
    type_uri: network/loadbalancer/pools
    children:
      members:
  l7policies:
    type_uri: network/loadbalancer/l7policies
    el_type_uri: network/loadbalancer/l7policy
    # the unique ID of an l7policy is located in attribute 'l7policy_id' (not 'id')
    custom_id: l7policy_id
    children:
      rules:
  quotas:
    type_uri: network/loadbalancer/quotas
    children:
      defaults:
        singleton: true
  flavors:
    type_uri: network/loadbalancer/flavors
  flavorprofiles:
    type_uri: network/loadbalancer/flavorprofiles
  availabilityzoneprofiles:
    type_uri: network/loadbalancer/availabilityzoneprofiles
  providers:
    type_uri: network/loadbalancer/providers
    children:
      flavor_capabilities:
        singleton: true
      availability_zone_capabilities:
        singleton: true
  octavia:
    singleton: true
    children:
      amphorae:
        type_uri: network/loadbalancer/amphorae
        children:
          stats:
            singleton: true
          config:
            singleton: true
          failover:
            singleton: true


    {include 'progressbar.inc.tpl'}
    {{ JoinForm::step1() }}

{lang 'Already registered?'} url('user','main','login') }}">{lang 'Sign In!'}

    {if !empty($user_ref)}
        getUserAvatar($username, $sex, 400) }}" title="{first_name}" data-popup="image">getUserAvatar($username, $sex, 200) }}" />

{{ $designModel->ad(200,200) }}

    {else}

        {{ $userDesignModel->profilesBlock() }}
    {/if}

Add float:left on user registration form


{{/*
Config dirs
*/}}
{{- define "config.dirs" }}
- name: POLYAXON_DIRS_DOCKER
  value: {{ .Values.dirs.docker | quote }}
- name: POLYAXON_DIRS_NVIDIA
  value: {{ toJson .Values.dirs.nvidia | quote }}
{{- if and .Values.mountPaths.nvidia.lib .Values.mountPaths.nvidia.bin .Values.mountPaths.nvidia.libcuda }}
- name: POLYAXON_MOUNT_PATHS_NVIDIA
  value: {{ toJson .Values.mountPaths.nvidia | quote }}
- name: LD_LIBRARY_PATH
  value: "{{ .Values.mountPaths.nvidia.lib }}:{{ .Values.mountPaths.nvidia.libcuda }}"
{{- else if and .Values.dirs.nvidia.lib .Values.dirs.nvidia.bin .Values.dirs.nvidia.libcuda }}
- name: POLYAXON_MOUNT_PATHS_NVIDIA
  value: {{ toJson .Values.dirs.nvidia | quote }}
- name: LD_LIBRARY_PATH
  value: "{{ .Values.dirs.nvidia.lib }}:{{ .Values.dirs.nvidia.libcuda }}"
{{- end }}
{{- end -}}

Update dirs with docker volume mount

{{/*
Config dirs
*/}}
{{- define "config.dirs" }}
- name: POLYAXON_DIRS_DOCKER
  value: {{ .Values.dirs.docker | quote }}
- name: POLYAXON_DIRS_NVIDIA
  value: {{ toJson .Values.dirs.nvidia | quote }}
{{- if .Values.mountPaths.docker }}
- name: POLYAXON_MOUNT_PATHS_DOCKER
  value: {{ toJson .Values.mountPaths.docker | quote }}
{{- else }}
- name: POLYAXON_MOUNT_PATHS_DOCKER
  value: {{ toJson .Values.dirs.docker | quote }}
{{- end }}
{{- if and .Values.mountPaths.nvidia.lib .Values.mountPaths.nvidia.bin .Values.mountPaths.nvidia.libcuda }}
- name: POLYAXON_MOUNT_PATHS_NVIDIA
  value: {{ toJson .Values.mountPaths.nvidia | quote }}
- name: LD_LIBRARY_PATH
  value: "{{ .Values.mountPaths.nvidia.lib }}:{{ .Values.mountPaths.nvidia.libcuda }}"
{{- else if and .Values.dirs.nvidia.lib .Values.dirs.nvidia.bin .Values.dirs.nvidia.libcuda }}
- name: POLYAXON_MOUNT_PATHS_NVIDIA
  value: {{ toJson .Values.dirs.nvidia | quote }}
- name: LD_LIBRARY_PATH
  value: "{{ .Values.dirs.nvidia.lib }}:{{ .Values.dirs.nvidia.libcuda }}"
{{- end }}
{{- end -}}


{tikimodule error=$module_params.error title=$tpl_module_title name="forums_last_posts" flip=$module_params.flip decorations=$module_params.decorations notitle=$module_params.notitle}
{modules_list list=$modForumsLastPosts nonums=$nonums}
	{section name=ix loop=$modForumsLastPosts}

			{$modForumsLastPosts[ix].name|escape}{if $author eq 'y'} {tr}by{/tr} {$modForumsLastPosts[ix].user|username}{/if}{if $date eq 'y'}, {$modForumsLastPosts[ix].date|tiki_short_datetime}{/if}

	{/section}
{/modules_list}
{/tikimodule}

Reformat and {strip} (separate lines are good!)

{strip}
{tikimodule error=$module_params.error title=$tpl_module_title name="forums_last_posts" flip=$module_params.flip decorations=$module_params.decorations notitle=$module_params.notitle}
	{modules_list list=$modForumsLastPosts nonums=$nonums}
			{section name=ix loop=$modForumsLastPosts}

				<a class="linkmodule" href="{$modForumsLastPosts[ix].href}"
					title="{if $date eq 'n'}{$modForumsLastPosts[ix].date|tiki_short_datetime}{/if}
							{if $author eq 'n'}
								{if $date eq 'n'}, {tr}by{/tr}{else}{tr}By{/tr}{/if}
								{if $modForumsLastPosts[ix].user ne ''}{$modForumsLastPosts[ix].user}{else}{tr}Anonymous{/tr}{/if}
							{/if}
							{if !empty($modForumsLastPosts[ix].title) ne ''}
								{if $date eq 'n' or $author eq 'n'} - {/if}
								{$modForumsLastPosts[ix].title}
							{/if}">
					{$modForumsLastPosts[ix].name|escape}

				{if $author eq 'y'} {tr}by{/tr} {$modForumsLastPosts[ix].user|username}{/if}
				{if $date eq 'y'}, {$modForumsLastPosts[ix].date|tiki_short_datetime}{/if}

		{/section}
	{/modules_list}
{/tikimodule}
{/strip}


{% for key, values in facets %}

    <label>{{ key }}</label>
    <select name="filter_{{key}}" class="form-control">
        <option value="">({_ all _})</option>

        {# Derive currently selected value from selected_facets #}
        {% with selected_facets|element:1|index_of:key as selected_index %}
            {% if selected_index %}
                {% with (selected_facets|element:2)|slice:[selected_index, selected_index+1]|first as selected_value %}
                    {% for name, label, count, uri, value in values %}
                        <option value="{{ value }}"{% if value == selected_value %} selected{% endif %}>{{ label|default:value }} ({{ count }})</option>
                    {% endfor %}
                {% endwith %}
            {% else %}
                <option value="{{ value }}">{{ label|default:value }} ({{ count }})</option>
            {% endif %}
        {% endwith %}
    </select>
{% endfor %}

Fix facets not showing up when none are selected

{% for key, values in facets %}

    <label>{{ key }}</label>
    <select name="filter_{{key}}" class="form-control">
        <option value="">({_ all _})</option>

        {# Derive currently selected value from selected_facets #}
        {% with selected_facets|element:1|index_of:key as selected_index %}
            {% if selected_index %}
                {% with (selected_facets|element:2)|slice:[selected_index, selected_index+1]|first as selected_value %}
                    {% for name, label, count, uri, value in values %}
                        <option value="{{ value }}"{% if value == selected_value %} selected{% endif %}>{{ label|default:value }} ({{ count }})</option>
                    {% endfor %}
                {% endwith %}
            {% else %}
                {% for name, label, count, uri, value in values %}
                   <option value="{{ value }}">{{ label|default:value }} ({{ count }})</option>
                {% endfor %}
            {% endif %}
        {% endwith %}
    </select>
{% endfor %}


Not Authorized (type 2)

		Put DateTime	<?= event.putDate ?>

		Reason Code	<?= reason.code ?> - <?= reason.desc ?>

		Queue Manager	<?= event.QMgrName.value ?>

		Queue Name	<?= event.QName.value ?>

		User	<?= event.UserIdentifier.value ?>

On an MQOPEN or MQPUT1 call, the user is not authorized to open the object for the options specified.

Add application and application type

Not Authorized (type 2)

		Put DateTime	<?= event.putDate ?>

		Reason Code	<?= reason.code ?> - <?= reason.desc ?>

		Queue Manager	<?= event.QMgrName.value ?>

		Queue Name	<?= event.QName.value ?>

		User	<?= event.UserIdentifier.value ?>

		Application Type	<?= event.ApplType.display ?>

		Application	<?= event.ApplName.value ?>

On an MQOPEN or MQPUT1 call, the user is not authorized to open the object for the options specified.


{lang "It's time to Validate your Site!"}

    {{ new ValidationForm }}

{lang 'Validate your site by entering your valid email address and confirm it through your emailbox.'}

    {lang "This will officially validate your site. Although you probably don't need this if you test only pH7CMS on your local machine server, it is still highly recommended to do it for getting all security patches and new versions by email before all."}

Change text of the validation box

{lang "It's time to Validate your Site!"}

    {{ new ValidationForm }}

{lang 'Validate your site by entering your valid email address and confirm it through your emailbox.'}

    {lang "This will officially validate your site. Although you probably don't need this if you test only pH7CMS on your local machine server, it is still highly recommended to do it for getting all security patches and new versions by email before everybody else."}


<?php
    echo "";
    echo     htmlspecialchars($bug[$field]);
    echo "";
?>

Add default support for array types

<?php
    echo "";
    if( is_array($bug[$field]) ) {
        echo htmlspecialchars(implode(', ', $bug[$field]));
    }else{
        echo htmlspecialchars($bug[$field]);
    }
    echo "";
?>


            <input type="text" class="form-control" placeholder="Search...">

                <button class="btn btn-default" type="button">

                </button>

Improve design of search form

<input id="search_organism" class="form-control" placeholder="Search...">


#
# {{ header }}
#

MAILTO=input-tracebacks@mozilla.com

HOME=/tmp

# Once a day at 2:00am run the l10n completion script.
# Note: This runs as root so it has access to the locale/ directory
# to do an svn up.
10 2 * * * root cd {{ source }} && (./bin/run_l10n_completion.sh {{ source }} {{ python }} > /dev/null)

# Once a day at 3:00am run the translation daily activites.
0 3 * * * {{ user }} cd {{ source }} && {{ python }} manage.py translation_daily -v 0 --traceback

# Every hour, sync translations. This pulls and pushes to the various
# translation systems.
0 * * * * {{ user }} cd {{ source }} && {{ python }} manage.py translation_sync -v 0 --traceback

# On Sundays at 3:10am, purge data per our data retention policies.
10 3 * * 0 {{ user }} cd {{ source }} && {{ python }} manage.py purge_data -v 3 --traceback

Stop sending output to /dev/null

#
# {{ header }}
#

MAILTO=input-tracebacks@mozilla.com

HOME=/tmp

# Once a day at 2:00am run the l10n completion script.
# Note: This runs as root so it has access to the locale/ directory
# to do an svn up.
10 2 * * * root cd {{ source }} && (./bin/run_l10n_completion.sh {{ source }} {{ python }})

# Once a day at 3:00am run the translation daily activites.
0 3 * * * {{ user }} cd {{ source }} && {{ python }} manage.py translation_daily -v 0 --traceback

# Every hour, sync translations. This pulls and pushes to the various
# translation systems.
0 * * * * {{ user }} cd {{ source }} && {{ python }} manage.py translation_sync -v 0 --traceback

# On Sundays at 3:10am, purge data per our data retention policies.
10 3 * * 0 {{ user }} cd {{ source }} && {{ python }} manage.py purge_data -v 3 --traceback


{include:file='{$PATH_WWW}/install/layout/templates/head.tpl'}

Database configuration

{form:step3}
	{option:formError}

{$formError}

{/option:formError}

Enter your database details. Make sure this database already exists.

			Hostname*
			{$txtHostname} {$txtHostnameError}
			If you are working locally, your hostname is probably localhost.

			Database*
			{$txtDatabase} {$txtDatabaseError}

			Username*
			{$txtUsername} {$txtUsernameError}

			Password*
			{$txtPassword} {$txtPasswordError}

		<input id="installerButton" class="button inputButton mainButton" type="submit" name="installer" value="Next" />

{/form:step3}

{include:file='{$PATH_WWW}/install/layout/templates/foot.tpl'}

Clarify that DB should be empty

{include:file='{$PATH_WWW}/install/layout/templates/head.tpl'}

Database configuration

{form:step3}
	{option:formError}

{$formError}

{/option:formError}

Enter your database details. Make sure this database already exists.

			Hostname*
			{$txtHostname} {$txtHostnameError}
			If you are working locally, your hostname is probably localhost.

			Database*
			{$txtDatabase} {$txtDatabaseError}
			Make sure this database is empty!

			Username*
			{$txtUsername} {$txtUsernameError}

			Password*
			{$txtPassword} {$txtPasswordError}

		<input id="installerButton" class="button inputButton mainButton" type="submit" name="installer" value="Next" />

{/form:step3}

{include:file='{$PATH_WWW}/install/layout/templates/foot.tpl'}


address=/{{ domain }}/{{ ipv4 }}
{% if ipv6 %}
address=/{{ domain }}/{{ ipv6 }}
{% endif %}
txt-record={{ domain }},"v=spf1 mx a -all"
mx-host={{ domain }},{{ domain }},5
srv-host=_xmpp-client._tcp.{{ domain }},{{ domain }},5222,0,5
srv-host=_xmpp-server._tcp.{{ domain }},{{ domain }},5269,0,5

Add xmpp-upload stuff in dnsmasq conf

address=/{{ domain }}/{{ ipv4 }}
address=/xmpp-upload.{{ domain }}/{{ ipv4 }}
{% if ipv6 %}
address=/{{ domain }}/{{ ipv6 }}
address=/xmpp-upload.{{ domain }}/{{ ipv6 }}
{% endif %}
txt-record={{ domain }},"v=spf1 mx a -all"
mx-host={{ domain }},{{ domain }},5
srv-host=_xmpp-client._tcp.{{ domain }},{{ domain }},5222,0,5
srv-host=_xmpp-server._tcp.{{ domain }},{{ domain }},5269,0,5


{load_templates subtemplates/locale-selector.tpl}

    {capture assign=laddrLink}Laddr{/capture}
    {capture assign=cfpLink}Code for Philly{/capture}
    {sprintf(_("Powered by %s — a %s project."), $laddrLink, $cfpLink)}

    {localeSelector}
    {*
    {if $responseID == 'home'}

Cover photo by XXXXXX.
    {/if}
    *}

Use newer style responseId global

{load_templates subtemplates/locale-selector.tpl}

    {capture assign=laddrLink}Laddr{/capture}
    {capture assign=cfpLink}Code for Philly{/capture}
    {sprintf(_("Powered by %s — a %s project."), $laddrLink, $cfpLink)}

    {localeSelector}
    {*
    {if $.responseId == 'home'}

Cover photo by XXXXXX.
    {/if}
    *}


  <button class="u-rSpace--m Widget-buttonIcon js-searchToggle">

  </button>

    <% if (!isLocked) { %>
      <%- categoriesCount > 12 ? (categoriesCount - 11) : categoriesCount  %> categor<%- categoriesCount !== 1 ? "ies" : "y" %> <%- categoriesCount > 12 ? "more" : "" %>
    <% } %>

  <% for (var i = 0, l = pages; i < l; i++) { %><button class="Widget-dot Widget-dot--navigation js-page <% if (currentPage === i) { %>is-selected<% } %>" data-page="<%- i %>"></button><% } %>

Add search text close to the lens icon when category widget is locked

  <button class="u-rSpace--m Widget-buttonIcon js-searchToggle">

  </button>

    <% if (isLocked) { %>
      search
    <% } else { %>
      <%- categoriesCount > 12 ? (categoriesCount - 11) : categoriesCount  %> categor<%- categoriesCount !== 1 ? "ies" : "y" %> <%- categoriesCount > 12 ? "more" : "" %>
    <% } %>

  <% for (var i = 0, l = pages; i < l; i++) { %><button class="Widget-dot Widget-dot--navigation js-page <% if (currentPage === i) { %>is-selected<% } %>" data-page="<%- i %>"></button><% } %>


	<fieldset>

{lang}wcf.user.username{/lang}

				<input type="text" id="username" name="username" value="{$username}" required="required" class="long" autofocus="true" />
				{if $errorType[username]|isset}

						{if $errorType[username] == 'empty'}
							{lang}wcf.global.form.error.empty{/lang}
						{else}
							{lang}wcf.user.username.error.$errorType[username]{/lang}
						{/if}

				{/if}

	</fieldset>

	{include file='captcha'}

	<input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" />

Fix username errors in comment guest dialog

	<fieldset>

{lang}wcf.user.username{/lang}

				<input type="text" id="username" name="username" value="{$username}" required="required" class="long" autofocus="true" />
				{if $errorType[username]|isset}

						{if $errorType[username] == 'empty'}
							{lang}wcf.global.form.error.empty{/lang}
						{else}
							{lang}wcf.user.username.error.{$errorType[username]}{/lang}
						{/if}

				{/if}

	</fieldset>

	{include file='captcha'}

	<input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" />


The {lang 'Hot Dating App'} for dating singles in your city.

{lang 'Language Exchange'} - A community for motivated and open-minded men/women living abroad and wanted to learn the local language by meeting native people.

{lang 'Local Dating Site'}{lang} is one of the most promising Local Dating Service and also our trusted partner for our dating software development.{/lang}

{lang 'Your Advertising Here!'}

{lang}Please{/lang} url('contact','contact','index') }}">{lang}contact us{/lang} {lang}if you want to be partner of %site_name%{/lang}.

Add language key + fix misspelling sentenses

The {lang 'Hot Dating App'} {lang}for dating singles in your city.{/lang}

{lang 'Language Exchange'} - {lang}A community for motivated and open-minded men/women living abroad and wanting to learn local languages by meeting native people.{/lang}

{lang 'Local Dating Site'} {lang}is one of the most promising Local Dating Service and also our trusted partner for our dating software development.{/lang}

{lang 'Your Advertising Here!'}

{lang}Please{/lang} url('contact','contact','index') }}">{lang}contact us{/lang} {lang}if you want to be partner of %site_name%{/lang}.


{% spaceless %}{% load i18n %}

{% blocktrans %}Your last weight entry is from {{date}} ({{days}} days ago).
Please click the link to access the application and enter a new one.{% endblocktrans %}

{% endspaceless %}

{% blocktrans %}You will regularly receive such reminders till you enter your current weight.{% endblocktrans %}
{% blocktrans %}If you don't want to ever receive email reminders, deactivate the
option in your settings.{% endblocktrans %}

{% trans "the wger.de team" %}

* https://{{site}}{% url 'weight:overview' user.username %}
* https://{{site}}{% url 'core:user:preferences' %}

Add link to directly add weight entry from email

{% spaceless %}{% load i18n %}

{% blocktrans %}Your last weight entry is from {{date}} ({{days}} days ago).
Please click the link to access the application and enter a new one.{% endblocktrans %}

{% endspaceless %}

{% blocktrans %}You will regularly receive such reminders till you enter your current weight.{% endblocktrans %}
{% blocktrans %}If you don't want to ever receive email reminders, deactivate the
option in your settings.{% endblocktrans %}

{% trans "the wger.de team" %}

* https://{{site}}{% url 'weight:overview' user.username %}
* https://{{site}}{% url 'weight:add' %}
* https://{{site}}{% url 'core:user:preferences' %}


topology = "tier"

server "backend.internal",
  :ipaddress => "${back_end_ip}/${cidr}",
  :role => "backend",
  :bootstrap => true

backend_vip "backend.internal",
  :ipaddress => "${back_end_ip}/${cidr}"

server "frontend.internal",
  :ipaddress => "${front_end_ip}/${cidr}",
  :role => "frontend"

api_fqdn = "frontend.internal"

profiles['root_url'] = 'http://frontend.internal:9998'

opscode_erchef['keygen_start_size'] = 30

opscode_erchef['keygen_cache_size'] = 60

nginx['ssl_dhparam'] = '/etc/opscode/dhparam.pem'

insecure_addon_compat = false

data_collector['token'] = 'foobar'

nginx['enable_ipv6'] = ${enable_ipv6}

Fix terraform rhel-6 tiered-upgrade compliance tests

topology = "tier"

server "backend.internal",
  :ipaddress => "${back_end_ip}/${cidr}",
  :role => "backend",
  :bootstrap => true

backend_vip "backend.internal",
  :ipaddress => "${back_end_ip}/${cidr}"

server "frontend.internal",
  :ipaddress => "${front_end_ip}/${cidr}",
  :role => "frontend"

api_fqdn = "frontend.internal"

# The public IPV6 address is not bound to the network interface of the machine.
# rhel-7 and rhel-8 are able to resolve this but the older rhel-6 is not.
# Using the ipv6 localhost instead of the public IP to fix this.
require 'ipaddr'
if IPAddr.new("${front_end_ip}/${cidr}").ipv6?
  profiles['root_url'] = 'http://[::1]:9998'
else
  profiles['root_url'] = 'http://frontend.internal:9998'
end

opscode_erchef['keygen_start_size'] = 30

opscode_erchef['keygen_cache_size'] = 60

nginx['ssl_dhparam'] = '/etc/opscode/dhparam.pem'

insecure_addon_compat = false

data_collector['token'] = 'foobar'

nginx['enable_ipv6'] = ${enable_ipv6}


How to Change the Email Template Design

If you wish to change the design of the emails your users received (like when they create an account, get messages, friend requests, etc) you can edit the CSS style (between <style></style>) by editing "_protected/framework/Layout/Html/Mail.class.php" file.

Update highlighted lines on github


daemon off;

http {
    include    /etc/nginx/proxy.conf;
    include    /etc/nginx/mime.types;

    server {
	    client_body_temp_path /tmp/nginx_client_temp 1 2;
        listen 8080 default_server;
        resolver ${DNS_SERVER};
        access_log /dev/stdout;

        ## Match every first element of the path and proxy to subdomain
        ## https://test.net/value/test will proxy to https://value.test.net/test
        location ~* ^/([^/]+)(.*) {
            proxy_pass ${MBAAS_PROTOCOL}://$1.${MBAAS_HOST_BASE}/$2;
            proxy_redirect ${MBAAS_PROTOCOL}://$1.${MBAAS_HOST_BASE} /$1;
            proxy_cookie_path / /$1;
        }

        ## Match root to proxy to platform gui.
        location = / {
            proxy_pass ${CORE_SERVICE_URL};
        }
    }
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
}

error_log  /dev/stdout ${LOG_LEVEL};
events {
    worker_connections  2048;
}

Add redirect instead of proxy for core

daemon off;

http {
    include    /etc/nginx/proxy.conf;
    include    /etc/nginx/mime.types;

    server {
	    client_body_temp_path /tmp/nginx_client_temp 1 2;
        listen 8080 default_server;
        resolver ${DNS_SERVER};
        access_log /dev/stdout;

        ## Match every first element of the path and proxy to subdomain
        ## https://test.net/value/test will proxy to https://value.test.net/test
        location ~* ^/([^/]+)(.*) {
            proxy_pass ${MBAAS_PROTOCOL}://$1.${MBAAS_HOST_BASE}/$2;
            proxy_redirect ${MBAAS_PROTOCOL}://$1.${MBAAS_HOST_BASE} /$1;
            proxy_cookie_path / /$1;
        }

        ## Match root to proxy to platform gui.
        location = / {
            return 301 ${CORE_SERVICE_URL};
        }
    }
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
}

error_log  /dev/stdout ${LOG_LEVEL};
events {
    worker_connections  2048;
}


Use pH7CMS on a non-Linux system

Of course, you can also install pH7CMS on Mac and Windows!

All pH7CMS versions are compatible with Mac OS and from pH7CMS 1.0.2 with Windows OS.

You can install a server manually but to simplify tasks, we generally recommend MAMP for Mac and XAMP/Wamp for Windows.

Please make sure you download the package with PHP 5.6/7 versions or higher.

These software allow you to quickly install a server environment on a non-Linux server and it often prevents problems.

Keep in mind that for security reasons, these kind of software is only recommended for a development/private server and not for a production server. Please refer to the website of the software for more information.

Fix typo in XAMPP name + fix potential security flaws

Use pH7CMS on a non-Linux system

Of course, you can also install pH7CMS on Mac and Windows!

All pH7CMS versions are compatible with Mac OS and from pH7CMS 1.0.2 with Windows OS.

You can install a server manually but to simplify tasks, we generally recommend MAMP for Mac and XAMPP/Wamp for Windows.

Please make sure you download the package with PHP 5.6/7 versions or higher.

These software allow you to quickly install a server environment on a non-Linux server and it often prevents problems.

Keep in mind that for security reasons, these kind of software is only recommended for a development/private server and not for a production server. Please refer to the website of the software for more information.


{* HEADER *}

{include file="CRM/common/formButtons.tpl" location="top"}

{foreach from=$groups item=group}

{$group.name}

	{foreach from=$avalabledashlets item=avalabledashlet}
		<input type="checkbox" value="1" name="defaultdashlets[{$group.id}][{$avalabledashlet.id}]" {if !empty($defaultdashlets[$group.id][$avalabledashlet.id])}checked{/if}> {$avalabledashlet.label}
	{/foreach}

{/foreach}

{* FOOTER *}

{include file="CRM/common/formButtons.tpl" location="bottom"}

Add help text to form

{* HEADER *}

Select the active dashlets for new users of each group. Groups must have Group Type set to Access Control. This activates dashlets for newly created users only. It will not alter existing users.

{include file="CRM/common/formButtons.tpl" location="top"}

{foreach from=$groups item=group}

{$group.name}

	{foreach from=$avalabledashlets item=avalabledashlet}
		<input type="checkbox" value="1" name="defaultdashlets[{$group.id}][{$avalabledashlet.id}]" {if !empty($defaultdashlets[$group.id][$avalabledashlet.id])}checked{/if}> {$avalabledashlet.label}
	{/foreach}

{/foreach}

{* FOOTER *}

{include file="CRM/common/formButtons.tpl" location="bottom"}


{event name='statistics'}

{if MODULE_LIKE && $user->likesReceived}

{if $__wcf->getSession()->getPermission('user.profile.canViewUserProfile') && !$user->isProtected()}{lang}wcf.like.likesReceived{/lang}{else}{lang}wcf.like.likesReceived{/lang}{/if}

{#$user->likesReceived}

{/if}

{if $user->activityPoints}

userID}">{lang}wcf.user.activityPoint{/lang}

{#$user->activityPoints}

{/if}

{if MODULE_TROPHY && $__wcf->session->getPermission('user.profile.trophy.canSeeTrophies') && ($user->isAccessible('canViewTrophies') || $user->userID == $__wcf->session->userID)}

userID}" title="{lang}wcf.user.trophy.showTrophies{/lang}">{lang}wcf.user.trophy.trophyPoints{/lang}

{#$user->trophyPoints}

{/if}

Hide trophy points if the user hasn't trophy points

{event name='statistics'}

{if MODULE_LIKE && $user->likesReceived}

{if $__wcf->getSession()->getPermission('user.profile.canViewUserProfile') && !$user->isProtected()}{lang}wcf.like.likesReceived{/lang}{else}{lang}wcf.like.likesReceived{/lang}{/if}

{#$user->likesReceived}

{/if}

{if $user->activityPoints}

userID}">{lang}wcf.user.activityPoint{/lang}

{#$user->activityPoints}

{/if}

{if MODULE_TROPHY && $__wcf->session->getPermission('user.profile.trophy.canSeeTrophies') && $user->trophyPoints && ($user->isAccessible('canViewTrophies') || $user->userID == $__wcf->session->userID)}

userID}" title="{lang}wcf.user.trophy.showTrophies{/lang}">{lang}wcf.user.trophy.trophyPoints{/lang}

{#$user->trophyPoints}

{/if}


		% for command in activity["activities"]:
			% command_path = "{}/{}".format(activity["name"], command["name"])

                <button class="pure-button {{command.get('css-class') or ''}}" onclick='post("{{ url('activity', activity=command_path) }}")'>
                  % if command.get('icon'):

                  % end
                  {{command["description"] if "description" in command else command["name"]}}
                </button>

		% end

		%rebase('layout.tpl', title=activity["description"], subtitle=activity.get('subtitle'), devices=devices, activities=activities)

Use same column arrangement in activities as in devices


	{foreach from=$birthdayUserProfiles item=birthdayUserProfile}

			{user object=$birthdayUserProfile type='avatar32' ariaHidden='true' tabindex='-1'}

{user object=$birthdayUserProfile}

				{$birthdayUserProfile->getBirthday()}

	{/foreach}

{if $birthdayUserProfiles|count >= 10}
	{lang}wcf.global.button.showAll{/lang}

{/if}

Use new component in birthday box

	{foreach from=$birthdayUserProfiles item=birthdayUserProfile}

			{user object=$birthdayUserProfile type='avatar32' ariaHidden='true' tabindex='-1'}

{user object=$birthdayUserProfile}

				{$birthdayUserProfile->getBirthday()}

	{/foreach}

{if $birthdayUserProfiles|count >= 10}
	<button type="button" class="jsTodaysBirthdays button small more jsOnly">{lang}wcf.global.button.showAll{/lang}</button>

{/if}


// goal: read JSON metadata for packages and create the mocks
// DEPENDS ON GLOBAL OBJECT: 'ComponentMocker'

var packageMetadata = <%= METADATA %>
var globalContext = (typeof global !== 'undefined') ? global : window
var originalContext = []

/*
originalContext = [
  {
    context: window,
    propertyName: 'Meteor',
    value: {}
  }
]
*/

function _saveOriginal(context, propertyName) {
  originalContext.push({
    context: context,
    propertyName: propertyName,
    value: context[propertyName]
  })
}

function _restoreOriginal(original) {
  original.context[original.propertyName] = original.value
}

function restoreOriginals() {
  originalContext.forEach(_restoreOriginal)
  originalContext = []
}

function loadMocks(targetContext) {
  targetContext = targetContext || globalContext

  for (var packageName in packageMetadata) {
    for (var packageExportName in packageMetadata[packageName]) {
      _saveOriginal(targetContext, packageExportName)
      var packageExport = packageMetadata[packageName][packageExportName]
      targetContext[packageExportName] = ComponentMocker.generateFromMetadata(packageExport)
    }
  }
}

beforeEach(loadMocks)
afterEach(restoreOriginals)

Remove beforeEach parameter for synchronous execution mode

// goal: read JSON metadata for packages and create the mocks
// DEPENDS ON GLOBAL OBJECT: 'ComponentMocker'

var packageMetadata = <%= METADATA %>
var globalContext = (typeof global !== 'undefined') ? global : window
var originalContext = []

/*
originalContext = [
  {
    context: window,
    propertyName: 'Meteor',
    value: {}
  }
]
*/

function _saveOriginal(context, propertyName) {
  originalContext.push({
    context: context,
    propertyName: propertyName,
    value: context[propertyName]
  })
}

function _restoreOriginal(original) {
  original.context[original.propertyName] = original.value
}

function restoreOriginals() {
  originalContext.forEach(_restoreOriginal)
  originalContext = []
}

function loadMocks() {
  for (var packageName in packageMetadata) {
    for (var packageExportName in packageMetadata[packageName]) {
      _saveOriginal(globalContext, packageExportName)
      var packageExport = packageMetadata[packageName][packageExportName]
      globalContext[packageExportName] = ComponentMocker.generateFromMetadata(packageExport)
    }
  }
}

beforeEach(loadMocks)
afterEach(restoreOriginals)


{* $Id$ *}

{title}{tr}Admin Wizard{/tr}{/title}

<form action="tiki-wizard_admin.php" method="post">
{include file="wizard/wizard_bar_admin.tpl"}
<div id="wizardBody">
{include file="{$wizardBody}"}
</div>
{include file="wizard/wizard_bar_admin.tpl"}
</form>

Hide the title from the admin wizard. More space and less Admin-wizardy front page

{* $Id$ *}

{* {title}{tr}Admin Wizard{/tr}{/title} *}

<form action="tiki-wizard_admin.php" method="post">
{include file="wizard/wizard_bar_admin.tpl"}
<div id="wizardBody">
{include file="{$wizardBody}"}
</div>
{include file="wizard/wizard_bar_admin.tpl"}
</form>


Dear <!-- RECIPIENT NAME -->,

This is a courtesy email to notify you that an entry was created or updated in the %1$s section. You can view or edit the entry by going to: %2$s

Remove unnecessary “courtesy” wording from email template

Dear <!-- RECIPIENT NAME -->,

An entry was created or updated in the %1$s section. You can view or edit the entry by going to: %2$s


    {{if !isset($form.buttons)}}

{{sugar_button module="$module" id="EDIT" view="$view" form_id="formDetailView"}}

{{sugar_button module="$module" id="DUPLICATE" view="$view" form_id="formDetailView"}}

{{sugar_button module="$module" id="DELETE" view="$view" form_id="formDetailView"}}

    {{else}}
    {{counter assign="num_buttons" start=0 print=false}}
    {{foreach from=$form.buttons key=val item=button}}
    {{if !is_array($button) && in_array($button, $built_in_buttons)}}
    {{counter print=false}}

{{sugar_button module="$module" id="$button" view="DetailView" form_id="formDetailView"}}

    {{/if}}
    {{/foreach}}
    {{if count($form.buttons) > $num_buttons}}
    {{foreach from=$form.buttons key=val item=button}}
    {{if is_array($button) && $button.customCode}}

{{sugar_button module="$module" id="$button" view="DetailView" form_id="formDetailView"}}

    {{/if}}
    {{/foreach}}
    {{/if}}
    {{if empty($form.hideAudit) || !$form.hideAudit}}
    {{sugar_button module="$module" id="Audit" view="DetailView" form_id="formDetailView"}}
    {{/if}}
    {{/if}}

Duplicate button fixed in Action Buttons menu

    {{if !isset($form.buttons)}}

{{sugar_button module="$module" id="EDIT" view="$view" form_id="formDetailView"}}

{{sugar_button module="$module" id="DUPLICATE" view="EditView" form_id="formDetailView"}}

{{sugar_button module="$module" id="DELETE" view="$view" form_id="formDetailView"}}

    {{else}}
    {{counter assign="num_buttons" start=0 print=false}}
    {{foreach from=$form.buttons key=val item=button}}
    {{if !is_array($button) && in_array($button, $built_in_buttons)}}
    {{counter print=false}}

{{sugar_button module="$module" id="$button" view="EditView" form_id="formDetailView"}}

    {{/if}}
    {{/foreach}}
    {{if count($form.buttons) > $num_buttons}}
    {{foreach from=$form.buttons key=val item=button}}
    {{if is_array($button) && $button.customCode}}

{{sugar_button module="$module" id="$button" view="EditView" form_id="formDetailView"}}

    {{/if}}
    {{/foreach}}
    {{/if}}
    {{if empty($form.hideAudit) || !$form.hideAudit}}

{{sugar_button module="$module" id="Audit" view="EditView" form_id="formDetailView"}}

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


{$c->__('publishbrief.add_link')}

    <form name="link">

            <input name="url"
                id="url"
                type="url"
                placeholder="http://myurl.com/picture.jpg"/>
            URL

    </form>

    <button onclick="Dialog_ajaxClear();" class="button flat">
        {$c->__('button.close')}
    </button>
    <button onclick="PublishBrief.addUrl(); this.classList.add('disabled')" class="button flat">
        {$c->__('button.add')}
    </button>

Disable form submission in publishbrief_link widget.

{$c->__('publishbrief.add_link')}

    <form name="link" onsubmit="return false;">

            <input name="url"
                id="url"
                type="url"
                placeholder="http://myurl.com/picture.jpg"/>
            URL

    </form>

    <button onclick="Dialog_ajaxClear();" class="button flat">
        {$c->__('button.close')}
    </button>
    <button onclick="PublishBrief.addUrl(); this.classList.add('disabled')" class="button flat">
        {$c->__('button.add')}
    </button>


{# Add one or more cat="NAME" to the query below to filter the result #}

{%
    with
        results_template,
        cat,
        paged|default:true,
        cat_exclude|default:['meta', 'menu'],
        search_text|default:q.value|default:q.qs,
        cg_name,
        pagelen|default:10
    as
        results_template,
        cat,
        paged,
        cat_exclude,
        search_text,
        content_group,
        pagelen
%}
    {% if paged %}
        {% with m.search.paged[{query cat_exclude=cat_exclude content_group=content_group text=search_text pagelen=pagelen custompivot="ginger_findable" filter=["is_excluded_from_search", `=`, "f"]}}] as result %}
            {% include results_template %}
        {% endwith %}
    {% else %}
        {% with m.search[{query cat_exclude=cat_exclude content_group=content_group text=search_text pagelen=pagelen page=q.page custompivot="ginger_findable" filter=["is_excluded_from_search", `=`, "f"]}] as result %}
            {% include results_template result=result %}
        {% endwith %}
    {% endif %}

{% endwith %}

Fix typo in search query

{# Add one or more cat="NAME" to the query below to filter the result #}

{%
    with
        results_template,
        cat,
        paged|default:true,
        cat_exclude|default:['meta', 'menu'],
        search_text|default:q.value|default:q.qs,
        cg_name,
        pagelen|default:10
    as
        results_template,
        cat,
        paged,
        cat_exclude,
        search_text,
        content_group,
        pagelen
%}
    {% if paged %}
        {% with m.search.paged[{query cat_exclude=cat_exclude content_group=content_group text=search_text pagelen=pagelen custompivot="ginger_findable" filter=["is_excluded_from_search", `=`, "f"]}] as result %}
            {% include results_template %}
        {% endwith %}
    {% else %}
        {% with m.search[{query cat_exclude=cat_exclude content_group=content_group text=search_text pagelen=pagelen page=q.page custompivot="ginger_findable" filter=["is_excluded_from_search", `=`, "f"]}] as result %}
            {% include results_template result=result %}
        {% endwith %}
    {% endif %}

{% endwith %}


// AUTOMATICALLY GENERATED FILE. PLEASE DO NOT MODIFY IT MANUALLY

// PIO Unified Debugger
//
// Documentation: https://docs.platformio.org/page/plus/debugging.html
// Configuration: https://docs.platformio.org/page/projectconf/section_env_debug.html

% from os.path import dirname, join
%
% def _escape_path(path):
%   return path.replace('\\\\', '/').replace('\\', '/').replace('"', '\\"')
% end
%
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "platformio-debug",
            "request": "launch",
            "name": "PIO Debug",
            "executable": "{{ _escape_path(prog_path) }}",
            "toolchainBinDir": "{{ _escape_path(dirname(gdb_path)) }}",
% if svd_path:
            "svdPath": "{{ _escape_path(svd_path) }}",
% end
            "preLaunchTask": "PlatformIO: Pre-Debug",
            "internalConsoleOptions": "openOnSessionStart"
        },
        {
            "type": "platformio-debug",
            "request": "launch",
            "name": "PIO Debug (Skip Pre-Debug)",
            "executable": "{{ _escape_path(prog_path) }}",
            "toolchainBinDir": "{{ _escape_path(dirname(gdb_path)) }}",
% if svd_path:
            "svdPath": "{{ _escape_path(svd_path) }}",
% end
            "internalConsoleOptions": "openOnSessionStart"
        }
    ]
}

Use Pre-Debug task by its VSCode defination

// AUTOMATICALLY GENERATED FILE. PLEASE DO NOT MODIFY IT MANUALLY

// PIO Unified Debugger
//
// Documentation: https://docs.platformio.org/page/plus/debugging.html
// Configuration: https://docs.platformio.org/page/projectconf/section_env_debug.html

% from os.path import dirname, join
%
% def _escape_path(path):
%   return path.replace('\\\\', '/').replace('\\', '/').replace('"', '\\"')
% end
%
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "platformio-debug",
            "request": "launch",
            "name": "PIO Debug",
            "executable": "{{ _escape_path(prog_path) }}",
            "toolchainBinDir": "{{ _escape_path(dirname(gdb_path)) }}",
% if svd_path:
            "svdPath": "{{ _escape_path(svd_path) }}",
% end
            "preLaunchTask": {
                "type": "PlatformIO",
                "task": "Pre-Debug"
            },
            "internalConsoleOptions": "openOnSessionStart"
        },
        {
            "type": "platformio-debug",
            "request": "launch",
            "name": "PIO Debug (Skip Pre-Debug)",
            "executable": "{{ _escape_path(prog_path) }}",
            "toolchainBinDir": "{{ _escape_path(dirname(gdb_path)) }}",
% if svd_path:
            "svdPath": "{{ _escape_path(svd_path) }}",
% end
            "internalConsoleOptions": "openOnSessionStart"
        }
    ]
}


{% block css %}
    {% lib
        "css/site/screen.css"
        "css/edit-copyrights.css"
    %}
{% endblock %}

Add image width/height Open Graph tags

{% block css %}
    {% lib
        "css/site/screen.css"
        "css/edit-copyrights.css"
    %}
{% endblock %}

{% if id and id.depiction %}
    <meta property="og:image:width" content="200" /> {# Set in mod_facebook/templates/mediaclass.config #}
    <meta property="og:image:height" content="200" />
{% endif %}


{assign var='count' value=$event->getAuthors()|count}{assign var='guestTimesTriggered' value=$event->getNotification()->guestTimesTriggered}{assign var='authors' value=$event->getAuthors()|array_values}
{if $mimeType === 'text/plain'}
	{capture assign='authorList'}{lang}wcf.user.notification.mail.authorList.plaintext{/lang}{/capture}
	{lang}wcf.user.notification.userRegistration.mail.plaintext{/lang}
{else}
	{capture assign='authorList'}{lang}wcf.user.notification.mail.authorList.html{/lang}{/capture}
	{lang}wcf.user.notification.userRegistration.mail.html{/lang}
	{assign var='user' value=$event->getAuthor()}

	{if $notificationType == 'instant'}{assign var='avatarSize' value=48}
	{else}{assign var='avatarSize' value=32}{/if}
	{capture assign='userContent'}

				username}">{@$user->getAvatar()->getImageTag($avatarSize)}

					{include file='email_userInformationHeadline'}

	{/capture}
	{include file='email_paddingHelper' block=true class='box'|concat:$avatarSize content=$userContent sandbox=true}
{/if}

Fix layout of text/plain version of userRegistration notification mail


{if $show_get_started_section}
  {manual_include 'get_started_intro.inc.tpl'}
{/if}

{manual_include 'stat.tpl'}

{if $is_news_feed}

  {manual_include 'news.inc.tpl'}
{/if}

Remove unnecessary extra new line


{include file="header.tpl"}

{if $ecran=="relation-add"}

      {include file="ecran/relation-add.tpl"}

{elseif $ecran=="relation-review"}

      {include file="ecran/relation-review.tpl"}

{elseif $ecran=="relation-visualise"}

      {include file="ecran/relation-visualise.tpl"}

{else}

      {include file="ecran/homepage.tpl"}

{/if}

{include file="footer.tpl"}

Change screen directory name references.

{include file="header.tpl"}

{if $ecran=="relation-add"}

      {include file="screen/relation-add.tpl"}

{elseif $ecran=="relation-review"}

      {include file="screen/relation-review.tpl"}

{elseif $ecran=="relation-visualise"}

      {include file="screen/relation-visualise.tpl"}

{else}

      {include file="screen/homepage.tpl"}

{/if}

{include file="footer.tpl"}


FROM alpine:latest

RUN mkdir -p /opt/stratumn/bin
ADD LICENSE /opt/stratumn/
ADD dist/linux-amd64/{{CMD}} /opt/stratumn/bin/
WORKDIR /opt/stratumn/bin/

CMD ["./{{CMD}}"]

Add ca-certificates to Docker images

FROM alpine:latest

RUN apk add --no-cache ca-certificates
RUN mkdir -p /opt/stratumn/bin
ADD LICENSE /opt/stratumn/
ADD dist/linux-amd64/{{CMD}} /opt/stratumn/bin/
WORKDIR /opt/stratumn/bin/

CMD ["./{{CMD}}"]


{extends designs/site.tpl}

{block title}How to help — {$dwoo.parent}{/block}

{block content}
    {$Checkin = $data}

{_ "Success!"}

Thanks for checking in {if $Checkin->Project}to {projectLink $Checkin->Project}{/if} @ {Laddr::$siteName|escape}!

{_ "Things to do next:"}

        {if $Checkin->Project}

Project->getURL()}">{_ "Post an update to your project"}

        {else}

{_ "Find or start a project"}

        {/if}

{_ "Return to the home page"}

        {if $.Session->hasAccountLevel('Developer')}

{_ "Add stuff to this list"}

        {/if}

{/block}

Fix title of checkin complete page

{extends designs/site.tpl}

{block title}Checkin Complete — {$dwoo.parent}{/block}

{block content}
    {$Checkin = $data}

{_ "Success!"}

Thanks for checking in {if $Checkin->Project}to {projectLink $Checkin->Project}{/if} @ {Laddr::$siteName|escape}!

{_ "Things to do next:"}

        {if $Checkin->Project}

Project->getURL()}">{_ "Post an update to your project"}

        {else}

{_ "Find or start a project"}

        {/if}

{_ "Return to the home page"}

        {if $.Session->hasAccountLevel('Developer')}

{_ "Add stuff to this list"}

        {/if}

{/block}


/* Copyright lowRISC contributors. */
/* Licensed under the Apache License, Version 2.0, see LICENSE for details. */
/* SPDX-License-Identifier: Apache-2.0 */
/*

  OTBN has a pure Harvard architecture, with instruction and data
  memory both starting at address 0.

  This linker script template is interpolated by otbn-ld after it gets
  the LMAs and memory sizes from otbn.hjson.

*/
MEMORY
{
    imem (x)  : ORIGIN = 0, LENGTH = ${imem_length}
    dmem (rw) : ORIGIN = 0, LENGTH = ${dmem_length}

    /* LMA addresses (for VMAs in imem/dmem, respectively) */
    imem_load (rw) : ORIGIN = ${imem_lma}, LENGTH = ${imem_length}
    dmem_load (rw) : ORIGIN = ${dmem_lma}, LENGTH = ${dmem_length}
}

SECTIONS
{
    .text ALIGN(4) :
    {
        *(.text*)
    } >imem AT >imem_load

    .data ALIGN(32) :
    {
        *(.data*)
        . = ALIGN(32);
        *(.bss*)
    } >dmem AT >dmem_load
}

Fix .data VMA in OTBN linker script

/* Copyright lowRISC contributors. */
/* Licensed under the Apache License, Version 2.0, see LICENSE for details. */
/* SPDX-License-Identifier: Apache-2.0 */
/*

  OTBN has a pure Harvard architecture, with instruction and data
  memory both starting at address 0.

  This linker script template is interpolated by otbn-ld after it gets
  the LMAs and memory sizes from otbn.hjson.

*/
MEMORY
{
    imem (x)  : ORIGIN = 0, LENGTH = ${imem_length}
    dmem (rw) : ORIGIN = 0, LENGTH = ${dmem_length}

    /* LMA addresses (for VMAs in imem/dmem, respectively) */
    imem_load (rw) : ORIGIN = ${imem_lma}, LENGTH = ${imem_length}
    dmem_load (rw) : ORIGIN = ${dmem_lma}, LENGTH = ${dmem_length}
}

SECTIONS
{
    .text ORIGIN(imem) : ALIGN(4)
    {
        *(.text*)
    } >imem AT>imem_load

    .data ORIGIN(dmem) : ALIGN(32)
    {
        *(.data*)
        . = ALIGN(32);
        *(.bss*)
    } >dmem AT>dmem_load
}


Create new template for displaying top trait types

188341

Habitat

                View Details


Hostname "{{ COLLECTD_HOST }}"

FQDNLookup false
Interval {{ COLLECTD_INTERVAL | default(10) }}
Timeout 2
ReadThreads 5

LoadPlugin write_graphite
<Plugin "write_graphite">
    <Carbon>
        Host "{{ GRAPHITE_HOST }}"
        Port "{{ GRAPHITE_PORT | default("2003") }}"
        Protocol "tcp"
        Prefix "{{ GRAPHITE_PREFIX | default("collectd.") }}"
        StoreRates true
        EscapeCharacter "."
        AlwaysAppendDS false
        SeparateInstances true
    </Carbon>
</Plugin>

LoadPlugin exec
<Plugin exec>
  Exec "nobody" "/collector" "-endpoint" "unix:///var/run/docker.sock" "-host" {{ COLLECTD_HOST }} "-interval" "{{ COLLECTD_INTERVAL | default(10) }}"
</Plugin>

Include hostname in double-quotes to suppress hostname cutting after first dash

Hostname "{{ COLLECTD_HOST }}"

FQDNLookup false
Interval {{ COLLECTD_INTERVAL | default(10) }}
Timeout 2
ReadThreads 5

LoadPlugin write_graphite
<Plugin "write_graphite">
    <Carbon>
        Host "{{ GRAPHITE_HOST }}"
        Port "{{ GRAPHITE_PORT | default("2003") }}"
        Protocol "tcp"
        Prefix "{{ GRAPHITE_PREFIX | default("collectd.") }}"
        StoreRates true
        EscapeCharacter "."
        AlwaysAppendDS false
        SeparateInstances true
    </Carbon>
</Plugin>

LoadPlugin exec
<Plugin exec>
  Exec "nobody" "/collector" "-endpoint" "unix:///var/run/docker.sock" "-host" "{{ COLLECTD_HOST }}" "-interval" "{{ COLLECTD_INTERVAL | default(10) }}"
</Plugin>


Add an example template for SIP OPTIONS requests

OPTIONS sip:${RAND_ALPHA=8}@${DADDR} SIP/2.0
Via: SIP/2.0/UDP ${SADDR}:${SPORT};branch=${RAND_ALPHA=6}.${RAND_DIGIT=10};rport;alias
From: sip:${RAND_ALPHA=8}@${SADDR}:${SPORT};tag=${RAND_DIGIT=8}
To: sip:${RAND_ALPHA=8}@${DADDR}
Call-ID: ${RAND_DIGIT=10}@${SADDR}
CSeq: 1 OPTIONS
Contact: sip:${RAND_ALPHA=8}@${SADDR}:${SPORT}
Content-Length: 0
Max-Forwards: 20
User-Agent: ${RAND_ALPHA=8}
Accept: text/plain


Send notification email to group leaders when a user join/leave a group

{tr}You are getting this email because you are a group leader of group{/tr} - {$mail_group}

{$mail_real} ({$mail_user}) {tr}joined group{/tr} - {$mail_group}

{tr}The user needs to be approved before he is admitted to the group.{/tr}

{tr}Click here to manage the members of your group.{/tr}


{% with margin_top|default:3, margin_bottom|default:3,
    margin_left|default:3, margin_right|default:3 as margin_top, margin_bottom, margin_left, margin_right  %}
{% with width + margin_left + margin_right, height + margin_top + margin_bottom as width, height %}
{% with height - margin_top - margin_bottom  as bg_height %}
{% with width - margin_left - margin_right as bg_width %}

<svg class="bar-chart" width="{{ width }}" height="{{ height }}">
    <g class="container-group" transform="translate({{ margin_left }},{{ margin_top }})">
        {% with values | list_max:`count` as max %}
        {% with [0, max[value_prop]] as range %}
             {% for v in values %}
             {% with v[value_prop] as value %}
             {% with value | scale_linear:range:[0,bg_height]  + (1/2) as bar_height %}
                 {% if bar_href %}<a xlink:href="{% include bar_href forloop=forloop value=v %}">{% endif %}
                     <rect x={{ forloop.counter0 * barwidth }} y ={{ bg_height - bar_height }} height="{{ bar_height }}" width="{{ barwidth - 1 }}"
                              {% if bar_attrs %}{% include bar_attrs forloop=forloop value=v bar_prop_extra=bar_prop_extra %}{% endif %}></rect>
                    <text x="{{ forloop.counter0 * barwidth + (barwidth/2) }}" y="{{ bg_height - bar_height }}"  text-anchor="middle" dy="1em">{{ value }}</text>
                 {% if bar_href %}</a>{% endif %}
             {% endwith %}
             {% endwith %}
             {% endfor %}
             {% if bar_tick %}
                 {% for v in values %}
                     <text fill="#000" x="{{ forloop.counter0 * barwidth + (barwidth/2) }}" y="{{ bg_height }}"  text-anchor="middle" dy="1em">{% include bar_tick value=v %}</text>
                 {% endfor %}
             {% endif %}
        {% endwith %}
        {% endwith %}
    </svg>
</svg>

{% endwith %}
{% endwith %}
{% endwith %}
{% endwith %}


Remove data heading of project trait details page

{#extends file='layoutWithBars.tpl'#}
{#block name='content'#}
{#call_webservice path="details/Traits" data=["trait_type_id"=>$trait_type_id, "dbversion"=>$DbVersion] assign='data'#}

{#$data['name']#}

    {#if $data['trait_format'] == 'categorical_free' #}

    {#else #}

Unknown trait type

    {#/if#}

{#/block#}


            <input type="text" class="form-control" placeholder="Search...">

                <button class="btn btn-default" type="button">

                </button>


Create Announcements page template edit for announcements bar

				Announcements

				{$annc.new}

				{$annc.poll}{$annc.link} — Posted by {$annc.user} on {$annc.date}


Add missing template for nova configmap-etc

# Copyright 2017 The Openstack-Helm Authors.
#
# 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.

[client.{{ .Values.ceph.cinder_user }}]
{{- if .Values.ceph.cinder_keyring }}
    key = {{ .Values.ceph.cinder_keyring }}
{{- else }}
    key = {{- include "secrets/ceph-client-key" . -}}
{{- end }}


%name% 様

このたびは派遣講師登録サイトへのご登録をありがとうございました。

ご登録いただきましたメールアドレスの確認のために以下のURLを
クリックしてメールアドレスの認証を行ってください。

%authurl%

メールアドレスの認証後、プロフィール登録を行なってください。

送信先：%email%

このメールにお心あたりがない場合には、削除ください。


Add template for displaying optional searchform of trait search

Refine your search (optional)

Search within a taxon group

                    <input id="search_trait_taxon" class="form-control" placeholder="Enter taxon group name to select group">

Set specific value

                    <input id="search_trait_value" class="form-control" placeholder="Enter a word, phrase or number">


Edit: <wiki:title/>

<form class="editor">
  <textarea><wiki:source/></textarea>

  <button name="Preview" type="button">Preview</button>
  <button name="Submit" type="button">Submit</button>
</form>


% if caption:

{{caption}}

% end

    % for name in columns:
      {{name}}
    % end

    % for row in data:

        % include unit_link unit=row[0], db=db

      % for item in row[1:]:
      {{item}}
      % end

    % end

Use version-specific icons in category table view

% suffix = '?version='+db.queryversion if db.queryversion else ''
% if caption:

{{caption}}

% end

    % for name in columns:
      {{name}}
    % end

    % for row in data:

        % include unit_link unit=row[0], db=db

      % for item in row[1:]:
      {{item}}
      % end

    % end


    {{ ConfigFileCoreForm::display('service.api', PH7_PATH_APP_CONFIG) }}

{lang}Google Map might not be working if you are not using a API key. It is highly recommended to use one.{/lang}

    {lang 'You can get one here. Enable Google Map API (which is disabled by default). Finally create an API key. Select "Api Key" for the Credential type, then select "Server Key", them you will get your API key to paste in this form. ', 'http://console.developers.google.com/apis/library'}


Dear $username,
	Thank you for registering at $sitename. Your account has been created.
The login details are as follows:

Site Location:	$siteurl
Login Name:	$email
Password:	$password

You may change your password from your account "Settings" page after logging
in.

Please take a few moments to review the other account settings on that page.

Thank you and welcome to $sitename.

Sincerely,
	$sitename Administrator

Add some text suggesting that new folks add some basic profile information if they want to make any friends.

Dear $username,
	Thank you for registering at $sitename. Your account has been created.
The login details are as follows:

Site Location:	$siteurl
Login Name:	$email
Password:	$password

You may change your password from your account "Settings" page after logging
in.

Please take a few moments to review the other account settings on that page.

You may also wish to add some basic information to your default profile
(on the "Profiles" page) so that other people can easily find you.

We recommend setting your full name, adding a profile photo,
adding some profile "keywords" (very useful in making new friends) - and
perhaps what country you live in; if you do not wish to be more specific
than that.

We fully respect your right to privacy, and none of these items are necessary.
If you are new and do not know anybody here, they may help
you to make some new and interesting friends.

Thank you and welcome to $sitename.

Sincerely,
	$sitename Administrator


Add smarty template which contains the layout.tpl and the navbars

{#extends file='layout.tpl'#}
{#block name='body'#}

        {#include file='navigation.tpl'#}

            {#include file='title.tpl'#}

{#/block#}


Add index template for use with grunt-template

<!DOCTYPE html>

    <meta charset="utf-8">

    <title><%- title %></title>

    <meta name="description" content="<%- description %>">
    <meta name="author" content="<%- author %>">

    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">

    <link rel="stylesheet" href="css/reveal.css">
    <link rel="stylesheet" href="css/theme/black.css" id="theme">

    <link rel="stylesheet" href="lib/css/zenburn.css">

		<%= slides %>


Add template which contains the content of organisms by a specific trait

{#extends file='layoutWithBars.tpl'#}
{#block name='content'#}
    {#include file='components/searchForm.tpl'#}
    {#include file='components/gridByTrait.tpl'#}
{#/block#}


metadata table

            metadata
            sample 1
            sample 2
            sample 3
            sample 4
            sample 5

            metadata
            sample 1
            sample 2
            sample 3
            sample 4
            sample 5

            host
            Achillea
            Bellis
            Thermopsis
            Rosa
            Arabidopsis

            tissue
            flower
            flower
            leaf
            leaf
            leaf

            sample#
            1
            2
            3
            4
            5


{foreach $results as $result}
		<div class="col-md-6">
			{assign var=grpname value="syn_organicgrp_`$result.object_id`"}
			{if not $grpname|in_group}
				{include file="syn-groupsbox.tpl" private="{if $result.status == 'o'}n{elseif $result.status == 'p'}y{/if}"}
			{/if}
		</div>
{/foreach}

Join Collaborations - The first search result starts at the wrong location.

{foreach $results as $result}
	{assign var=grpname value="syn_organicgrp_`$result.object_id`"}
	{if not $grpname|in_group}
		<div class="col-md-6">
			{include file="syn-groupsbox.tpl" private="{if $result.status == 'o'}n{elseif $result.status == 'p'}y{/if}"}
		</div>
	{/if}
{/foreach}