google-nomulus/java/google/registry/ui/soy/registrar/HostEpp.soy
jakubvrana 04a61794e0 Fix closing and self-closing tags in templates
Void tags (e.g. <img>) couldn't have a closing tag (e.g. </img> is invalid). Non-void tags (e.g. <div>) couldn't be self closing (e.g. <div/> is invalid) and must be closed explicitly (e.g. with </div>). This CL fixes the tags which also prepares the templates for stricthtml which enforces it.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=168829028
2017-09-20 10:27:17 -04:00

110 lines
2.9 KiB
Text

// Copyright 2017 The Nomulus Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
{namespace registry.soy.registrar.hostepp autoescape="strict"}
/**
* Host create request.
* @param item
* @param clTrid
*/
{template .create stricthtml="false"}
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<create>
<host:create xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>{$item['host:name']}</host:name>
{if isNonnull($item['host:addr'])}
{foreach $addr in $item['host:addr']}
{let $type: strContains($addr['value'], ':') ? 'v6' : 'v4' /}
<host:addr ip="{$type}">{$addr['value']}</host:addr>
{/foreach}
{/if}
</host:create>
</create>
<clTRID>{$clTrid}</clTRID>
</command>
</epp>
{/template}
/**
* Host update request.
* @param item
* @param clTrid
* @param? addAddrs list of addrs to add.
* @param? remAddrs list of addrs to remove.
*/
{template .update stricthtml="false"}
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<update>
<host:update xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>{$item['host:name']}</host:name>
{call .addRem}
{param isAdd: true /}
{param addrs: $addAddrs /}
{/call}
{call .addRem}
{param isAdd: false /}
{param addrs: $remAddrs /}
{/call}
{if $item['host:name'] != $item['host:chgName']}
<host:chg>
<host:name>{$item['host:chgName']}</host:name>
</host:chg>
{/if}
</host:update>
</update>
<clTRID>{$clTrid}</clTRID>
</command>
</epp>
{/template}
/**
* Host info request.
* @param clTrid
* @param id The hostname (named "id" to preserve component API).
*/
{template .info stricthtml="false"}
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<info>
<host:info xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>{$id}</host:name>
</host:info>
</info>
<clTRID>{$clTrid}</clTRID>
</command>
</epp>
{/template}
/**
* @param isAdd
* @param? addrs
*/
{template .addRem}
{let $tagName: $isAdd ? 'host:add' : 'host:rem' /}
{if length($addrs) > 0}
<{$tagName}>
{foreach $addr in $addrs}
{let $type: strContains($addr, ':') ? 'v6' : 'v4' /}
<host:addr ip="{$type}">{$addr}</host:addr>
{/foreach}
</{$tagName}>
{/if}
{/template}