Change all foreach loops in Soy templates to use the for loop syntax

Soy supports 2 kinds of loops:
foreach- for iterating over items in a collection  e.g. {foreach $item in $list}...{/foreach}
for - for indexed iteration  e.g. {for $i in range(0, 10)}...{/for}

The reason Soy has 2 different loops is an accident of history, Soy didn’t use to have a proper grammar for expressions and so the alternate ‘for...range’ syntax was added to make it possible to write indexed loops.  As the grammar has improved having the two syntaxes is no longer necessary and so we are eliminating one of them.

As of 4a7373333f or mvn release "2018-01-03" the two forms are actually aliases for one another, so the only difference is the keyword (‘for’ vs ‘foreach’), and while the foreach loop is more popular the ‘for’ terminology is more standard so we are switching everything to that.

LSC: []
Tested:
    TAP sample presubmit queue
    []

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=180942763
This commit is contained in:
lukes 2018-01-05 10:12:40 -08:00 committed by Ben McIlwain
parent ab5e16ab67
commit 7aa070b0a5
24 changed files with 109 additions and 103 deletions

View file

@ -1458,10 +1458,10 @@ def com_google_re2j():
def com_google_template_soy(): def com_google_template_soy():
java_import_external( java_import_external(
name = "com_google_template_soy", name = "com_google_template_soy",
jar_sha256 = "3c4e61234e9ee9f79411da997e23b201bcf281255469c76d162dac07a67dbb78", jar_sha256 = "2952b430323a01070d73c7767e34c4030355b9e60c14b5165bebf69b2f6ad927",
jar_urls = [ jar_urls = [
"http://repo1.maven.org/maven2/com/google/template/soy/2017-06-22/soy-2017-06-22.jar", "http://repo1.maven.org/maven2/com/google/template/soy/2018-01-03/soy-2018-01-03.jar",
"http://central.maven.org/maven2/com/google/template/soy/2017-06-22/soy-2017-06-22.jar", "http://central.maven.org/maven2/com/google/template/soy/2018-01-03/soy-2018-01-03.jar",
], ],
deps = [ deps = [
"@args4j", "@args4j",

View file

@ -48,9 +48,9 @@
{/if} {/if}
<contact:addr> <contact:addr>
{if $street} {if $street}
{foreach $s in $street} {for $s in $street}
<contact:street>{$s}</contact:street> <contact:street>{$s}</contact:street>
{/foreach} {/for}
{/if} {/if}
{if $city} {if $city}
<contact:city>{$city}</contact:city> <contact:city>{$city}</contact:city>

View file

@ -39,15 +39,15 @@
<domain:period unit="y">{$period}</domain:period> <domain:period unit="y">{$period}</domain:period>
{if isNonnull($nameservers) and length($nameservers) > 0} {if isNonnull($nameservers) and length($nameservers) > 0}
<domain:ns> <domain:ns>
{foreach $nameserver in $nameservers} {for $nameserver in $nameservers}
<domain:hostObj>{$nameserver}</domain:hostObj> <domain:hostObj>{$nameserver}</domain:hostObj>
{/foreach} {/for}
</domain:ns> </domain:ns>
{/if} {/if}
<domain:registrant>{$registrant}</domain:registrant> <domain:registrant>{$registrant}</domain:registrant>
{foreach $type in keys($contacts)} {for $type in keys($contacts)}
<domain:contact type="{$type}">{$contacts[$type]}</domain:contact> <domain:contact type="{$type}">{$contacts[$type]}</domain:contact>
{/foreach} {/for}
<domain:authInfo> <domain:authInfo>
<domain:pw>{$authInfo}</domain:pw> <domain:pw>{$authInfo}</domain:pw>
</domain:authInfo> </domain:authInfo>
@ -70,14 +70,14 @@
</allocate:create> </allocate:create>
{if isNonnull($dsRecords) and length($dsRecords) > 0} {if isNonnull($dsRecords) and length($dsRecords) > 0}
<secDNS:create xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1"> <secDNS:create xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
{foreach $dsRecord in $dsRecords} {for $dsRecord in $dsRecords}
<secDNS:dsData> <secDNS:dsData>
<secDNS:keyTag>{$dsRecord['keyTag']}</secDNS:keyTag> <secDNS:keyTag>{$dsRecord['keyTag']}</secDNS:keyTag>
<secDNS:alg>{$dsRecord['algorithm']}</secDNS:alg> <secDNS:alg>{$dsRecord['algorithm']}</secDNS:alg>
<secDNS:digestType>{$dsRecord['digestType']}</secDNS:digestType> <secDNS:digestType>{$dsRecord['digestType']}</secDNS:digestType>
<secDNS:digest>{$dsRecord['digest']}</secDNS:digest> <secDNS:digest>{$dsRecord['digest']}</secDNS:digest>
</secDNS:dsData> </secDNS:dsData>
{/foreach} {/for}
</secDNS:create> </secDNS:create>
{/if} {/if}
</extension> </extension>

View file

@ -24,9 +24,9 @@
<command> <command>
<check> <check>
<domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> <domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
{foreach $d in $domainNames} {for $d in $domainNames}
<domain:name>{$d}</domain:name> <domain:name>{$d}</domain:name>
{/foreach} {/for}
</domain:check> </domain:check>
</check> </check>
<clTRID>RegistryTool</clTRID> <clTRID>RegistryTool</clTRID>

View file

@ -24,9 +24,9 @@
<command> <command>
<check> <check>
<domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> <domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
{foreach $d in $domainNames} {for $d in $domainNames}
<domain:name>{$d}</domain:name> <domain:name>{$d}</domain:name>
{/foreach} {/for}
</domain:check> </domain:check>
</check> </check>
<extension> <extension>

View file

@ -24,20 +24,20 @@
<command> <command>
<check> <check>
<domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> <domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
{foreach $d in $domainNames} {for $d in $domainNames}
<domain:name>{$d}</domain:name> <domain:name>{$d}</domain:name>
{/foreach} {/for}
</domain:check> </domain:check>
</check> </check>
<extension> <extension>
<fee:check xmlns:fee="urn:ietf:params:xml:ns:fee-0.6"> <fee:check xmlns:fee="urn:ietf:params:xml:ns:fee-0.6">
{foreach $d in $domainNames} {for $d in $domainNames}
<fee:domain> <fee:domain>
<fee:name>{$d}</fee:name> <fee:name>{$d}</fee:name>
<fee:command>create</fee:command> <fee:command>create</fee:command>
<fee:period unit="y">1</fee:period> <fee:period unit="y">1</fee:period>
</fee:domain> </fee:domain>
{/foreach} {/for}
</fee:check> </fee:check>
</extension> </extension>
<clTRID>RegistryTool</clTRID> <clTRID>RegistryTool</clTRID>

View file

@ -36,18 +36,18 @@
{/if} {/if}
{if length($nameservers) > 0} {if length($nameservers) > 0}
<domain:ns> <domain:ns>
{foreach $s in $nameservers} {for $s in $nameservers}
<domain:hostObj>{$s}</domain:hostObj> <domain:hostObj>{$s}</domain:hostObj>
{/foreach} {/for}
</domain:ns> </domain:ns>
{/if} {/if}
<domain:registrant>{$registrant}</domain:registrant> <domain:registrant>{$registrant}</domain:registrant>
{foreach $admin in $admins} {for $admin in $admins}
<domain:contact type="admin">{$admin}</domain:contact> <domain:contact type="admin">{$admin}</domain:contact>
{/foreach} {/for}
{foreach $tech in $techs} {for $tech in $techs}
<domain:contact type="tech">{$tech}</domain:contact> <domain:contact type="tech">{$tech}</domain:contact>
{/foreach} {/for}
<domain:authInfo> <domain:authInfo>
<domain:pw>{$password}</domain:pw> <domain:pw>{$password}</domain:pw>
</domain:authInfo> </domain:authInfo>

View file

@ -42,40 +42,40 @@
<domain:add> <domain:add>
{if length($addNameservers) > 0} {if length($addNameservers) > 0}
<domain:ns> <domain:ns>
{foreach $s in $addNameservers} {for $s in $addNameservers}
<domain:hostObj>{$s}</domain:hostObj> <domain:hostObj>{$s}</domain:hostObj>
{/foreach} {/for}
</domain:ns> </domain:ns>
{/if} {/if}
{foreach $admin in $addAdmins} {for $admin in $addAdmins}
<domain:contact type="admin">{$admin}</domain:contact> <domain:contact type="admin">{$admin}</domain:contact>
{/foreach} {/for}
{foreach $tech in $addTechs} {for $tech in $addTechs}
<domain:contact type="tech">{$tech}</domain:contact> <domain:contact type="tech">{$tech}</domain:contact>
{/foreach} {/for}
{foreach $status in $addStatuses} {for $status in $addStatuses}
<domain:status s="{$status}"/> <domain:status s="{$status}"/>
{/foreach} {/for}
</domain:add> </domain:add>
{/if} {/if}
{if $remove} {if $remove}
<domain:rem> <domain:rem>
{if length($removeNameservers) > 0} {if length($removeNameservers) > 0}
<domain:ns> <domain:ns>
{foreach $s in $removeNameservers} {for $s in $removeNameservers}
<domain:hostObj>{$s}</domain:hostObj> <domain:hostObj>{$s}</domain:hostObj>
{/foreach} {/for}
</domain:ns> </domain:ns>
{/if} {/if}
{foreach $admin in $removeAdmins} {for $admin in $removeAdmins}
<domain:contact type="admin">{$admin}</domain:contact> <domain:contact type="admin">{$admin}</domain:contact>
{/foreach} {/for}
{foreach $tech in $removeTechs} {for $tech in $removeTechs}
<domain:contact type="tech">{$tech}</domain:contact> <domain:contact type="tech">{$tech}</domain:contact>
{/foreach} {/for}
{foreach $status in $removeStatuses} {for $status in $removeStatuses}
<domain:status s="{$status}"/> <domain:status s="{$status}"/>
{/foreach} {/for}
</domain:rem> </domain:rem>
{/if} {/if}
{if $change} {if $change}

View file

@ -28,14 +28,14 @@
<host:create xmlns:host="urn:ietf:params:xml:ns:host-1.0"> <host:create xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>{$hostname}</host:name> <host:name>{$hostname}</host:name>
{if $ipv4addresses} {if $ipv4addresses}
{foreach $ipv4 in $ipv4addresses} {for $ipv4 in $ipv4addresses}
<host:addr ip="v4">{$ipv4}</host:addr> <host:addr ip="v4">{$ipv4}</host:addr>
{/foreach} {/for}
{/if} {/if}
{if $ipv6addresses} {if $ipv6addresses}
{foreach $ipv6 in $ipv6addresses} {for $ipv6 in $ipv6addresses}
<host:addr ip="v6">{$ipv6}</host:addr> <host:addr ip="v6">{$ipv6}</host:addr>
{/foreach} {/for}
{/if} {/if}
</host:create> </host:create>
</create> </create>

View file

@ -28,11 +28,11 @@
<host:update <host:update
xmlns:host="urn:ietf:params:xml:ns:host-1.0"> xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>{$name}</host:name> <host:name>{$name}</host:name>
{foreach $ip in $ipAddresses} {for $ip in $ipAddresses}
<host:rem> <host:rem>
<host:addr ip="{$ip['type']}">{$ip['address']}</host:addr> <host:addr ip="{$ip['type']}">{$ip['address']}</host:addr>
</host:rem> </host:rem>
{/foreach} {/for}
</host:update> </host:update>
</update> </update>
<extension> <extension>

View file

@ -34,26 +34,26 @@
<domain:add> <domain:add>
{if length($hostsToAdd) > 0} {if length($hostsToAdd) > 0}
<domain:ns> <domain:ns>
{foreach $ha in $hostsToAdd} {for $ha in $hostsToAdd}
<domain:hostObj>{$ha}</domain:hostObj> <domain:hostObj>{$ha}</domain:hostObj>
{/foreach} {/for}
</domain:ns> </domain:ns>
{/if} {/if}
{foreach $la in $locksToApply} {for $la in $locksToApply}
<domain:status s="{$la}" /> <domain:status s="{$la}" />
{/foreach} {/for}
</domain:add> </domain:add>
<domain:rem> <domain:rem>
{if length($hostsToRemove) > 0} {if length($hostsToRemove) > 0}
<domain:ns> <domain:ns>
{foreach $hr in $hostsToRemove} {for $hr in $hostsToRemove}
<domain:hostObj>{$hr}</domain:hostObj> <domain:hostObj>{$hr}</domain:hostObj>
{/foreach} {/for}
</domain:ns> </domain:ns>
{/if} {/if}
{foreach $lr in $locksToRemove} {for $lr in $locksToRemove}
<domain:status s="{$lr}" /> <domain:status s="{$lr}" />
{/foreach} {/for}
</domain:rem> </domain:rem>
</domain:update> </domain:update>
</update> </update>
@ -64,14 +64,14 @@
</secDNS:rem> </secDNS:rem>
{if length($newDsData) > 0} {if length($newDsData) > 0}
<secDNS:add> <secDNS:add>
{foreach $ds in $newDsData} {for $ds in $newDsData}
<secDNS:dsData> <secDNS:dsData>
<secDNS:keyTag>{$ds.keyTag}</secDNS:keyTag> <secDNS:keyTag>{$ds.keyTag}</secDNS:keyTag>
<secDNS:alg>{$ds.alg}</secDNS:alg> <secDNS:alg>{$ds.alg}</secDNS:alg>
<secDNS:digestType>{$ds.digestType}</secDNS:digestType> <secDNS:digestType>{$ds.digestType}</secDNS:digestType>
<secDNS:digest>{$ds.digest}</secDNS:digest> <secDNS:digest>{$ds.digest}</secDNS:digest>
</secDNS:dsData> </secDNS:dsData>
{/foreach} {/for}
</secDNS:add> </secDNS:add>
{/if} {/if}
</secDNS:update> </secDNS:update>

View file

@ -31,14 +31,14 @@
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>{$domainName}</domain:name> <domain:name>{$domainName}</domain:name>
<domain:add> <domain:add>
{foreach $a in $locksToApply} {for $a in $locksToApply}
<domain:status s="{$a}" lang="en"></domain:status> <domain:status s="{$a}" lang="en"></domain:status>
{/foreach} {/for}
</domain:add> </domain:add>
<domain:rem> <domain:rem>
{foreach $r in $locksToRemove} {for $r in $locksToRemove}
<domain:status s="{$r}" lang="en"></domain:status> <domain:status s="{$r}" lang="en"></domain:status>
{/foreach} {/for}
</domain:rem> </domain:rem>
</domain:update> </domain:update>
</update> </update>

View file

@ -10,6 +10,9 @@ closure_js_template_library(
name = "soy", name = "soy",
srcs = glob(["*.soy"]), srcs = glob(["*.soy"]),
globals = "//java/google/registry/ui:globals.txt", globals = "//java/google/registry/ui:globals.txt",
# TODO: remove this when upgrading rules closure. This is only necessary because
# our version of soy is newer than what rules closure expects
should_generate_js_doc = False,
) )
closure_java_template_library( closure_java_template_library(

View file

@ -244,11 +244,11 @@
name="{$name}" name="{$name}"
class="{css('kd-button')} {css('reg-select')}" class="{css('kd-button')} {css('reg-select')}"
{if $readonly}disabled{/if}> {if $readonly}disabled{/if}>
{foreach $option in $options} {for $option in $options}
<option value="{$option}" {if $selected == $option}selected{/if}> <option value="{$option}" {if $selected == $option}selected{/if}>
{$option} {$option}
</option> </option>
{/foreach} {/for}
</select> </select>
</td> </td>
</tr> </tr>
@ -263,12 +263,12 @@
{template .inputRadioWithValue} {template .inputRadioWithValue}
<tr> <tr>
<td colspan="2"> <td colspan="2">
{foreach $value in $values} {for $value in $values}
<input type="radio" <input type="radio"
name="{$name}" name="{$name}"
value="{$value}" value="{$value}"
{if $checkedValue == $value}checked{/if}> {if $checkedValue == $value}checked{/if}>
{/foreach} {/for}
</td> </td>
</tr> </tr>
{/template} {/template}
@ -309,13 +309,13 @@
</span> </span>
<span class="{css('kd-disclosureindicator')}"></span> <span class="{css('kd-disclosureindicator')}"></span>
<ul class="{css('kd-menulist')}"> <ul class="{css('kd-menulist')}">
{foreach $item in $items} {for $item in $items}
<li class="{css('kd-menulistitem')} <li class="{css('kd-menulistitem')}
{if $item == $selected} {if $item == $selected}
{sp}{css('selected')} {sp}{css('selected')}
{/if}"> {/if}">
{$item} {$item}
{/foreach} {/for}
</ul> </ul>
</div> </div>
{/template} {/template}

View file

@ -11,6 +11,9 @@ closure_js_template_library(
srcs = glob(["*.soy"]), srcs = glob(["*.soy"]),
data = ["//java/google/registry/ui/css:registrar_raw"], data = ["//java/google/registry/ui/css:registrar_raw"],
globals = "//java/google/registry/ui:globals.txt", globals = "//java/google/registry/ui:globals.txt",
# TODO: remove this when upgrading rules closure. This is only necessary because
# our version of soy is newer than what rules closure expects
should_generate_js_doc = False,
deps = ["//java/google/registry/ui/soy"], deps = ["//java/google/registry/ui/soy"],
) )

View file

@ -89,13 +89,13 @@
<td colspan="2"> <td colspan="2">
<div id="contact-postalInfo"> <div id="contact-postalInfo">
{if isNonnull($item['contact:postalInfo'])} {if isNonnull($item['contact:postalInfo'])}
{foreach $pi in $item['contact:postalInfo']} {for $pi in $item['contact:postalInfo']}
{call .postalInfo data="all"} {call .postalInfo data="all"}
{param localized: index($pi) == 1 /} {param localized: index($pi) == 1 /}
{param item: $pi/} {param item: $pi/}
{param namePrefix: 'contact:postalInfo[' + index($pi) + '].contact:' /} {param namePrefix: 'contact:postalInfo[' + index($pi) + '].contact:' /}
{/call} {/call}
{/foreach} {/for}
{else} {else}
{call .postalInfo data="all"} {call .postalInfo data="all"}
{param namePrefix: 'contact:postalInfo[0].contact:' /} {param namePrefix: 'contact:postalInfo[0].contact:' /}

View file

@ -28,7 +28,7 @@
<create> <create>
<contact:create xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"> <contact:create xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
<contact:id>{$item['contact:id']}</contact:id> <contact:id>{$item['contact:id']}</contact:id>
{foreach $pi in $item['contact:postalInfo']} {for $pi in $item['contact:postalInfo']}
<contact:postalInfo type="{if index($pi) == 0}int{else}loc{/if}"> <contact:postalInfo type="{if index($pi) == 0}int{else}loc{/if}">
<contact:name>{$pi['contact:name']}</contact:name> <contact:name>{$pi['contact:name']}</contact:name>
<contact:org>{$pi['contact:org']}</contact:org> <contact:org>{$pi['contact:org']}</contact:org>
@ -41,7 +41,7 @@
<contact:cc>{$addr['contact:cc']}</contact:cc> <contact:cc>{$addr['contact:cc']}</contact:cc>
</contact:addr> </contact:addr>
</contact:postalInfo> </contact:postalInfo>
{/foreach} {/for}
<contact:voice>{$item['contact:voice']}</contact:voice> <contact:voice>{$item['contact:voice']}</contact:voice>
<contact:fax>{$item['contact:fax']}</contact:fax> <contact:fax>{$item['contact:fax']}</contact:fax>
<contact:email>{$item['contact:email']}</contact:email> <contact:email>{$item['contact:email']}</contact:email>
@ -70,7 +70,7 @@
<contact:update xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"> <contact:update xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
<contact:id>{$item['contact:id']}</contact:id> <contact:id>{$item['contact:id']}</contact:id>
<contact:chg> <contact:chg>
{foreach $pi in $item['contact:postalInfo']} {for $pi in $item['contact:postalInfo']}
<contact:postalInfo type="{if index($pi) == 0}int{else}loc{/if}"> <contact:postalInfo type="{if index($pi) == 0}int{else}loc{/if}">
<contact:name>{$pi['contact:name']}</contact:name> <contact:name>{$pi['contact:name']}</contact:name>
<contact:org>{$pi['contact:org']}</contact:org> <contact:org>{$pi['contact:org']}</contact:org>
@ -83,7 +83,7 @@
<contact:cc>{$addr['contact:cc']}</contact:cc> <contact:cc>{$addr['contact:cc']}</contact:cc>
</contact:addr> </contact:addr>
</contact:postalInfo> </contact:postalInfo>
{/foreach} {/for}
<contact:voice>{$item['contact:voice']}</contact:voice> <contact:voice>{$item['contact:voice']}</contact:voice>
<contact:fax>{$item['contact:fax']}</contact:fax> <contact:fax>{$item['contact:fax']}</contact:fax>
<contact:email>{$item['contact:email']}</contact:email> <contact:email>{$item['contact:email']}</contact:email>

View file

@ -30,7 +30,7 @@
<div class="{css('set')}"> <div class="{css('set')}">
<h1>Contact settings</h1> <h1>Contact settings</h1>
<table> <table>
{foreach $type in $possibleTypesLookup} {for $type in $possibleTypesLookup}
{if isNonnull($contactsByType[$type[0]])} {if isNonnull($contactsByType[$type[0]])}
<tr class="{css('kd-settings-pane-section')}"> <tr class="{css('kd-settings-pane-section')}">
<td> <td>
@ -40,7 +40,7 @@
</td> </td>
<td id="{$type[0]}-contacts" <td id="{$type[0]}-contacts"
class="{css('info')} {css('summary')} {css('domain-registrar-contacts')}"> class="{css('info')} {css('summary')} {css('domain-registrar-contacts')}">
{foreach $c in $contactsByType[$type[0]]} {for $c in $contactsByType[$type[0]]}
{call .contactInfoCompact} {call .contactInfoCompact}
{param namePrefix: 'contacts[' + index($c) + '].' /} {param namePrefix: 'contacts[' + index($c) + '].' /}
{param name: $c['name'] /} {param name: $c['name'] /}
@ -53,10 +53,10 @@
{param faxNumber: $c['faxNumber'] /} {param faxNumber: $c['faxNumber'] /}
{/call} {/call}
{if (index($c) + 1) % 3 == 0}<br>{/if} {if (index($c) + 1) % 3 == 0}<br>{/if}
{/foreach} {/for}
</td> </td>
{/if} {/if}
{/foreach} {/for}
</table> </table>
</div> </div>
{/template} {/template}
@ -185,11 +185,11 @@
<label class="{css('setting-label')}">Contact type</label> <label class="{css('setting-label')}">Contact type</label>
<td class="{css('setting')}"> <td class="{css('setting')}">
<div class="{css('setting-item-list')}"> <div class="{css('setting-item-list')}">
{foreach $type in $possibleTypesLookup} {for $type in $possibleTypesLookup}
{if $actualTypesLookup[$type[0]]} {if $actualTypesLookup[$type[0]]}
<div>{$type[1]} contact</div> <div>{$type[1]} contact</div>
{/if} {/if}
{/foreach} {/for}
</div> </div>
</td> </td>
<tr><td colspan="2"><hr></tr> <tr><td colspan="2"><hr></tr>
@ -301,7 +301,7 @@
{@param namePrefix: string} {@param namePrefix: string}
{@param actualTypesLookup: map<string, bool>} {@param actualTypesLookup: map<string, bool>}
{@param possibleTypesLookup: list<list<string>>} {@param possibleTypesLookup: list<list<string>>}
{foreach $type in $possibleTypesLookup} {for $type in $possibleTypesLookup}
{let $name: $namePrefix + 'type.' + $type[0] /} {let $name: $namePrefix + 'type.' + $type[0] /}
{let $checked: $actualTypesLookup[$type[0]] /} {let $checked: $actualTypesLookup[$type[0]] /}
<div class="{css('checkbox-with-label')}"> <div class="{css('checkbox-with-label')}">
@ -314,7 +314,7 @@
<span class="{css('description')}">{$type[2]}</span> <span class="{css('description')}">{$type[2]}</span>
</label> </label>
</div> </div>
{/foreach} {/for}
{/template} {/template}

View file

@ -113,7 +113,7 @@
</th> </th>
</tr> </tr>
{if isNonnull($item['domain:ns'] and isNonnull($item['domain:ns']['domain:hostObj']))} {if isNonnull($item['domain:ns'] and isNonnull($item['domain:ns']['domain:hostObj']))}
{foreach $hostObj in $item['domain:ns']['domain:hostObj']} {for $hostObj in $item['domain:ns']['domain:hostObj']}
{let $hostIdx: index($hostObj) /} {let $hostIdx: index($hostObj) /}
{call registry.soy.forms.inputFieldRowWithValue data="all"} {call registry.soy.forms.inputFieldRowWithValue data="all"}
{param label: 'Host ' + $hostIdx /} {param label: 'Host ' + $hostIdx /}
@ -121,7 +121,7 @@
{param value: $hostObj /} {param value: $hostObj /}
{param clazz kind="text"}{css('domain-hostObj')}{/param} {param clazz kind="text"}{css('domain-hostObj')}{/param}
{/call} {/call}
{/foreach} {/for}
{/if} {/if}
<tr id="domain-hosts-footer"></tr> <tr id="domain-hosts-footer"></tr>
@ -165,7 +165,7 @@
{template .showContact_ visibility="private"} {template .showContact_ visibility="private"}
{@param contacts: list<map<string, ?>>} /** List of EPP domain:contacts. */ {@param contacts: list<map<string, ?>>} /** List of EPP domain:contacts. */
{@param type: string} /** Type of contact (e.g. admin, tech) */ {@param type: string} /** Type of contact (e.g. admin, tech) */
{foreach $contact in $contacts} {for $contact in $contacts}
{if $type == $contact['@type']} {if $type == $contact['@type']}
{call registry.soy.forms.inputFieldRowWithValue data="all"} {call registry.soy.forms.inputFieldRowWithValue data="all"}
{param label: $contact['@type'] + ' contact' /} {param label: $contact['@type'] + ' contact' /}
@ -177,7 +177,7 @@
type="hidden" type="hidden"
value="{$contact['@type']}"> value="{$contact['@type']}">
{/if} {/if}
{/foreach} {/for}
{/template} {/template}

View file

@ -32,18 +32,18 @@
{/if} {/if}
{if isNonnull($item['domain:ns'])} {if isNonnull($item['domain:ns'])}
<domain:ns> <domain:ns>
{foreach $hostObj in $item['domain:ns']['domain:hostObj']} {for $hostObj in $item['domain:ns']['domain:hostObj']}
<domain:hostObj>{$hostObj.value}</domain:hostObj> <domain:hostObj>{$hostObj.value}</domain:hostObj>
{/foreach} {/for}
</domain:ns> </domain:ns>
{/if} {/if}
{if isNonnull($item['domain:registrant'])} {if isNonnull($item['domain:registrant'])}
<domain:registrant>{$item['domain:registrant']}</domain:registrant> <domain:registrant>{$item['domain:registrant']}</domain:registrant>
{/if} {/if}
{if isNonnull($item['domain:contact'])} {if isNonnull($item['domain:contact'])}
{foreach $contact in $item['domain:contact']} {for $contact in $item['domain:contact']}
<domain:contact type="{$contact['@type']}">{$contact.value}</domain:contact> <domain:contact type="{$contact['@type']}">{$contact.value}</domain:contact>
{/foreach} {/for}
{/if} {/if}
<domain:authInfo> <domain:authInfo>
<domain:pw>{$item['domain:authInfo']['domain:pw']}</domain:pw> <domain:pw>{$item['domain:authInfo']['domain:pw']}</domain:pw>
@ -128,15 +128,15 @@
<{$tagName}> <{$tagName}>
{if isNonnull($hosts)} {if isNonnull($hosts)}
<domain:ns> <domain:ns>
{foreach $host in $hosts} {for $host in $hosts}
<domain:hostObj>{$host.value}</domain:hostObj> <domain:hostObj>{$host.value}</domain:hostObj>
{/foreach} {/for}
</domain:ns> </domain:ns>
{/if} {/if}
{if isNonnull($contacts)} {if isNonnull($contacts)}
{foreach $contact in $contacts} {for $contact in $contacts}
<domain:contact type="{$contact['@type']}">{$contact.value}</domain:contact> <domain:contact type="{$contact['@type']}">{$contact.value}</domain:contact>
{/foreach} {/for}
{/if} {/if}
</{$tagName}> </{$tagName}>
{/template} {/template}

View file

@ -59,7 +59,7 @@
</th> </th>
</tr> </tr>
{if isNonnull($item['host:addr'])} {if isNonnull($item['host:addr'])}
{foreach $addr in $item['host:addr']} {for $addr in $item['host:addr']}
{if not $readonly} {if not $readonly}
<input type="hidden" <input type="hidden"
name="host:oldAddr[{index($addr)}].value" name="host:oldAddr[{index($addr)}].value"
@ -70,7 +70,7 @@
{param name: 'host:addr[' + index($addr) + '].value' /} {param name: 'host:addr[' + index($addr) + '].value' /}
{param value: $item['host:addr'][index($addr)] /} {param value: $item['host:addr'][index($addr)] /}
{/call} {/call}
{/foreach} {/for}
{/if} {/if}
<tr id="domain-host-addrs-footer"></tr> <tr id="domain-host-addrs-footer"></tr>
</table> </table>

View file

@ -27,10 +27,10 @@
<host:create xmlns:host="urn:ietf:params:xml:ns:host-1.0"> <host:create xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>{$item['host:name']}</host:name> <host:name>{$item['host:name']}</host:name>
{if isNonnull($item['host:addr'])} {if isNonnull($item['host:addr'])}
{foreach $addr in $item['host:addr']} {for $addr in $item['host:addr']}
{let $type: strContains($addr['value'], ':') ? 'v6' : 'v4' /} {let $type: strContains($addr['value'], ':') ? 'v6' : 'v4' /}
<host:addr ip="{$type}">{$addr['value']}</host:addr> <host:addr ip="{$type}">{$addr['value']}</host:addr>
{/foreach} {/for}
{/if} {/if}
</host:create> </host:create>
</create> </create>
@ -101,10 +101,10 @@
{let $tagName: $isAdd ? 'host:add' : 'host:rem' /} {let $tagName: $isAdd ? 'host:add' : 'host:rem' /}
{if length($addrs) > 0} {if length($addrs) > 0}
<{$tagName}> <{$tagName}>
{foreach $addr in $addrs} {for $addr in $addrs}
{let $type: strContains($addr, ':') ? 'v6' : 'v4' /} {let $type: strContains($addr, ':') ? 'v6' : 'v4' /}
<host:addr ip="{$type}">{$addr}</host:addr> <host:addr ip="{$type}">{$addr}</host:addr>
{/foreach} {/for}
</{$tagName}> </{$tagName}>
{/if} {/if}
{/template} {/template}

View file

@ -47,12 +47,12 @@
<td class="{css('setting')}"> <td class="{css('setting')}">
<div class="{css('info')} {css('summary')}"> <div class="{css('info')} {css('summary')}">
<div id="ips"> <div id="ips">
{foreach $ip in $ipAddressWhitelist} {for $ip in $ipAddressWhitelist}
{call .ip} {call .ip}
{param name: 'ipAddressWhitelist[' + index($ip) + ']' /} {param name: 'ipAddressWhitelist[' + index($ip) + ']' /}
{param ip: $ip /} {param ip: $ip /}
{/call} {/call}
{/foreach} {/for}
</div> </div>
<div class="{css('hidden')}"> <div class="{css('hidden')}">
<input id="newIp" value="" placeholder="Enter IP address..."/> <input id="newIp" value="" placeholder="Enter IP address..."/>

View file

@ -149,13 +149,13 @@
{@param? state: string} {@param? state: string}
{@param? zip: string} {@param? zip: string}
{@param countryCode: string} {@param countryCode: string}
{foreach $line in $street} {for $line in $street}
<input type="hidden" <input type="hidden"
name="{$id}.street[{index($line)}]" name="{$id}.street[{index($line)}]"
id="{$id}.street[{index($line)}]" id="{$id}.street[{index($line)}]"
value="{$street[index($line)]}"> value="{$street[index($line)]}">
<div class="{css('contact-address-street')}">{$street[index($line)]}</div> <div class="{css('contact-address-street')}">{$street[index($line)]}</div>
{/foreach} {/for}
<input type="hidden" name="{$id}.city" id="{$id}.city" value="{$city}"> <input type="hidden" name="{$id}.city" id="{$id}.city" value="{$city}">
<input type="hidden" name="{$id}.state" id="{$id}.state" value="{$state}"> <input type="hidden" name="{$id}.state" id="{$id}.state" value="{$state}">
<input type="hidden" name="{$id}.zip" id="{$id}.zip" value="{$zip}"> <input type="hidden" name="{$id}.zip" id="{$id}.zip" value="{$zip}">