mirror of
https://github.com/google/nomulus.git
synced 2025-07-26 12:38:32 +02:00
To support the open source community, which may want to use different analytics services, we implement a soy template for analytics services that: 1) Does not require users to implement Google Analytics 2) Allows users to add their own analytics code to `Analytics.soy` 3) Gives users the flexibility to pass as much or as little static configuration to their custom analytics code as needed. 4) Ensures that users can merge upstream Nomulus code in the future without having to delete their custom analytics implementations 5) Does not allow code to be injected from configuration, which Soy as a framework actively discourages. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=248340081
357 lines
13 KiB
Text
357 lines
13 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.console}
|
|
|
|
|
|
/**
|
|
* Main registrar page. We use a single page architecture (SPA) so content is
|
|
* filled in dynamically into reg-app element via JS rendering of Component.soy
|
|
* and other templates within it.
|
|
*/
|
|
{template .main}
|
|
{@param xsrfToken: string} /** Security token. */
|
|
{@param clientId: string} /** Registrar client identifier. */
|
|
{@param allClientIds: list<string>} /** All registrar client identifiers for the user. */
|
|
{@param isAdmin: bool}
|
|
{@param isOwner: bool}
|
|
{@param username: string} /** Arbitrary username to display. */
|
|
{@param logoutUrl: string} /** Generated URL for logging out of Google. */
|
|
{@param productName: string} /** Name to display for this software product. */
|
|
{@param integrationEmail: string}
|
|
{@param supportEmail: string}
|
|
{@param announcementsEmail: string}
|
|
{@param supportPhoneNumber: string}
|
|
{@param technicalDocsUrl: string}
|
|
{@param environment: string}
|
|
{@param analyticsConfig: [googleAnalyticsId: string|null]}
|
|
|
|
{call registry.soy.console.header}
|
|
{param app: 'registrar' /}
|
|
{param subtitle: 'Registrar Console' /}
|
|
{param analyticsConfig: $analyticsConfig /}
|
|
{/call}
|
|
{call registry.soy.console.googlebar data="all" /}
|
|
<div id="reg-app">
|
|
<div id="reg-appbar" class="{css('kd-appbar')}">
|
|
<div class="{css('kd-description')}">
|
|
Accessing <span class="{css('kd-value')}">{$clientId}</span> as{sp}
|
|
{if $isOwner}<span class="{css('kd-value')}">Owner</span>{/if}
|
|
{if $isAdmin}<span class="{css('kd-value')}">Admin</span>{/if}
|
|
{if length($allClientIds) > 1}
|
|
{sp}(Switch registrar: {call .clientIdSelect_ data="all" /})
|
|
{/if}
|
|
</div>
|
|
<div id="reg-app-buttons" class="{css('kd-buttonbar')} {css('left')}"></div>
|
|
</div>
|
|
{call .navbar_ data="all" /}
|
|
<div id="reg-content-and-footer">
|
|
<div id="reg-content">
|
|
// Dynamic content goes here.
|
|
</div>
|
|
{call registry.soy.console.footer /}
|
|
</div>
|
|
</div>
|
|
{switch DEBUG}
|
|
{case google.registry.ui.ConsoleDebug.PRODUCTION}
|
|
<script src="/assets/js/registrar_bin.js"></script>
|
|
{case google.registry.ui.ConsoleDebug.DEBUG}
|
|
<script src="/assets/js/registrar_dbg.js"></script>
|
|
{case google.registry.ui.ConsoleDebug.RAW}
|
|
<script>var CLOSURE_NO_DEPS = true;</script>
|
|
<script src="/assets/sources/com_google_javascript_closure_library/closure/googbase.js"></script>
|
|
<script src="/assets/sources/domain_registry/java/google/registry/ui/deps.js"></script>
|
|
<script>goog.require('registry.registrar.main');</script>
|
|
{/switch}
|
|
{if isNonnull(DEBUG)}
|
|
<script>
|
|
registry.registrar.main({$xsrfToken},
|
|
{$clientId},
|
|
{if $isAdmin}true{else}false{/if},
|
|
{if $isOwner}true{else}false{/if},
|
|
{$productName},
|
|
{$integrationEmail},
|
|
{$supportEmail},
|
|
{$announcementsEmail},
|
|
{$supportPhoneNumber},
|
|
{$technicalDocsUrl},
|
|
{$environment});
|
|
</script>
|
|
{/if}
|
|
{/template}
|
|
|
|
|
|
/** Sidebar nav. Ids on each elt for testing only. */
|
|
{template .navbar_ visibility="private"}
|
|
{@param isAdmin: bool}
|
|
|
|
<div id="reg-nav" class="{css('kd-content-sidebar')}">
|
|
<ul id="reg-navlist">
|
|
<li>
|
|
<a href="#">Home</a>
|
|
<li>
|
|
<a href="#resources">Resources & billing</a>
|
|
<li>
|
|
<ul>
|
|
<span class="{css('reg-navlist-sub')}">Settings</span>
|
|
<li>
|
|
<a href="#whois-settings">WHOIS</a>
|
|
<li>
|
|
<a href="#security-settings">Security</a>
|
|
<li>
|
|
<a href="#contact-settings">Contact</a>
|
|
{if $isAdmin}
|
|
<li>
|
|
<a href="#admin-settings">Admin</a>
|
|
{/if}
|
|
</ul>
|
|
<li>
|
|
<a href="#contact-us">Contact us</a>
|
|
</ul>
|
|
</div>
|
|
{/template}
|
|
|
|
|
|
/** Drop-down selection for the clientId. */
|
|
{template .clientIdSelect_ visibility="private"}
|
|
{@param clientId: string} /** Registrar client identifier. */
|
|
{@param allClientIds: list<string>}
|
|
<form>
|
|
<select name="clientId"
|
|
id="select-client-id"
|
|
class="{css('kd-button')} {css('kd-button-submit')}"
|
|
onchange='this.form.submit()'>
|
|
<option value="">[auto select]</option>
|
|
{for $id in $allClientIds}
|
|
<option value="{$id}" {if $id == $clientId}selected{/if}>{$id}</option>
|
|
{/for}
|
|
</select>
|
|
</form>
|
|
{/template}
|
|
|
|
|
|
/**
|
|
* Feature disabled
|
|
*/
|
|
{template .disabled}
|
|
{@param logoFilename: string}
|
|
{@param productName: string}
|
|
{@param analyticsConfig: [googleAnalyticsId: string|null]}
|
|
{call registry.soy.console.header}
|
|
{param app: 'registrar' /}
|
|
{param subtitle: 'Console Disabled' /}
|
|
{param analyticsConfig: $analyticsConfig /}
|
|
{/call}
|
|
<div class="{css('whoAreYou-disabled')}">
|
|
<a class="{css('logo')}" href="/registrar">
|
|
<img src="/assets/images/{$logoFilename}" alt="{$productName}">
|
|
</a>
|
|
<h1>Console is disabled</h1>
|
|
<p>
|
|
The {$productName} registrar console is temporarily disabled. Please
|
|
contact your customer service representative for more information.
|
|
<p>
|
|
<img src="/assets/images/android_sad.png">
|
|
</div>
|
|
{/template}
|
|
|
|
|
|
/**
|
|
* Who goes thar?!
|
|
*/
|
|
{template .whoareyou}
|
|
{@param username: string} /** Arbitrary username to display. */
|
|
{@param logoutUrl: string} /** Generated URL for logging out of Google. */
|
|
{@param logoFilename: string}
|
|
{@param productName: string}
|
|
{@param? clientId: string}
|
|
{@param analyticsConfig: [googleAnalyticsId: string|null]}
|
|
{call registry.soy.console.header}
|
|
{param app: 'registrar' /}
|
|
{param subtitle: 'Not Authorized' /}
|
|
{param analyticsConfig: $analyticsConfig /}
|
|
{/call}
|
|
<div class="{css('whoAreYou')}">
|
|
<a class="{css('logo')}" href="/registrar">
|
|
<img src="/assets/images/{$logoFilename}" alt="{$productName}">
|
|
</a>
|
|
<h1>You need permission</h1>
|
|
{if isNonnull($clientId)} // A clientId was given - but we don't have access to it
|
|
<p>
|
|
The account you are logged in as is not associated with the registrar
|
|
{sp}{$clientId}. Please contact your customer service representative or
|
|
switch to an account associated with {$clientId}. Alternatively, click
|
|
{sp}<a href="?">here</a> to find a registrar associated with your
|
|
account.
|
|
{else}
|
|
<p>
|
|
The account you are logged in as is not associated with {$productName}.
|
|
Please contact your customer service representative or
|
|
switch to an account associated with {$productName}.
|
|
{/if}
|
|
<p>
|
|
You are signed in as <strong>{$username}</strong>.
|
|
<div>
|
|
<a href="{$logoutUrl}"
|
|
class="{css('kd-button')} {css('kd-button-submit')}"
|
|
tabindex="-1">Logout and switch to another account</a>
|
|
{if isNonnull($clientId)} // A clientId was given - but we don't have access to it
|
|
{sp}
|
|
<a href="?"
|
|
class="{css('kd-button')} {css('kd-button-submit')}"
|
|
tabindex="-1">Find registrar associated with your account</a>
|
|
{/if}
|
|
</div>
|
|
</div>
|
|
{/template}
|
|
|
|
|
|
/** Welcome text and nav. */
|
|
{template .dashboard}
|
|
{@param productName: string}
|
|
<div id="domain-registrar-dashboard">
|
|
<h1>Welcome to the {$productName} Registrar Console<super>BETA</super></h1>
|
|
<p>This console can help you manage your relationship with {$productName} and
|
|
allow self-service for key operations.</p>
|
|
<table>
|
|
<tr>
|
|
<td>
|
|
<div class="{css('dashbox')}">
|
|
<img src="/assets/images/homeResources.png">
|
|
<h2>Access Resources</h2>
|
|
Use Google Drive to view<br>
|
|
onboarding FAQs, technical<br>
|
|
documentation & billing reports.
|
|
</div>
|
|
<td>
|
|
<div class="{css('dashbox')}">
|
|
<img id="gear" src="/assets/images/homeSettings.png">
|
|
<h2>Manage Settings</h2>
|
|
Security, WHOIS & contact<br>
|
|
settings are easy to view and edit.
|
|
</div>
|
|
<td>
|
|
<div class="{css('dashbox')}">
|
|
<img src="/assets/images/homeContact.png">
|
|
<h2>Contact Us</h2>
|
|
View important phone & email<br>
|
|
contact information for<br>
|
|
{$productName}.
|
|
</div>
|
|
</tr>
|
|
</table>
|
|
<p><img id="rotate" src="/assets/images/explore_24.png">We're
|
|
hard at work creating new features for the console. Stay tuned
|
|
for updates!
|
|
</div>
|
|
{/template}
|
|
|
|
|
|
/** Contact us. */
|
|
{template .contactUs}
|
|
{@param? phonePasscode: string}
|
|
{@param integrationEmail: string}
|
|
{@param supportEmail: string}
|
|
{@param announcementsEmail: string}
|
|
{@param supportPhoneNumber: string}
|
|
<div id="domain-registrar-contact-us" class="{css('item')}">
|
|
<h1>Contact us</h1>
|
|
<p>Our support team can assist you with any technical or operational
|
|
questions you may have regarding our registry services.
|
|
|
|
<table>
|
|
<tr class="{css('kd-settings-pane-section')}">
|
|
<td>
|
|
<label class="{css('setting-label')}">Email</label>
|
|
</td>
|
|
<td class="{css('setting')}">
|
|
<p>
|
|
<a href="mailto:{$integrationEmail}">{$integrationEmail}</a><br>
|
|
For help with OT&E sandbox and certification, or new
|
|
technical requirements for any of our new TLD launches.
|
|
|
|
<p>
|
|
<a href="mailto:{$supportEmail}">{$supportEmail}</a><br>
|
|
For general purpose questions once you are integrated
|
|
with our registry system. If the issue is urgent, please put
|
|
"Urgent" in the email title.
|
|
|
|
<p class="{css('description')}">Note: You may receive occasional service
|
|
announcements
|
|
via <strong>{$announcementsEmail}</strong>. You
|
|
will not be able to reply to those messages.
|
|
|
|
<tr><td colspan="2"><hr>
|
|
<tr class="{css('kd-settings-pane-section')}">
|
|
<td>
|
|
<label class="{css('setting-label')}">Phone</label>
|
|
<span class="{css('description')}">For general support inquiries 24x7</span>
|
|
</td>
|
|
<td class="{css('setting')}">
|
|
<p>Please be ready with your account name and telephone passcode
|
|
when contacting us by phone.
|
|
|
|
<p>Your telephone passcode
|
|
is: <span id="domain-registrar-phone-passcode">
|
|
{if (isNonnull($phonePasscode))}
|
|
{$phonePasscode}
|
|
{else}
|
|
<em>pending allocation</em>
|
|
{/if}
|
|
</span>
|
|
|
|
<p>Call us at:
|
|
<p id="registry-phone"><a href="tel:{$supportPhoneNumber}">{$supportPhoneNumber}</a>
|
|
</td>
|
|
</table>
|
|
</div>
|
|
{/template}
|
|
|
|
|
|
/** Resources and billing links. */
|
|
{template .resources}
|
|
{@param? driveFolderId: string}
|
|
{@param technicalDocsUrl: string}
|
|
<div id="domain-registrar-resources">
|
|
<h1>Resources & billing</h1>
|
|
<p>
|
|
The registry system uses <strong>Google Drive</strong> to share
|
|
important documentation.
|
|
<h2><img src="/assets/images/folder.png">TLD information</h2>
|
|
<p>
|
|
Find onboarding FAQs & technical documentation here:
|
|
<br><br>
|
|
<a class="{css('kd-button')} {css('kd-button-submit')}"
|
|
href="{$technicalDocsUrl}"
|
|
target="_blank" rel="noopener">View TLD information on Google Drive</a>
|
|
<h2><img src="/assets/images/folder.png">Billing details</h2>
|
|
<p>
|
|
Find information on all transaction activity behind your monthly invoices in this folder.
|
|
<p>
|
|
{if (isNonnull($driveFolderId))}
|
|
<a id="reg-resources-driveLink"
|
|
class="{css('kd-button')} {css('kd-button-submit')}"
|
|
href="https://drive.google.com/drive/folders/{$driveFolderId}"
|
|
target="_blank" rel="noopener">View billing details on Google Drive</a>
|
|
{else}
|
|
<em>Your billing folder is pending allocation.</em>
|
|
{/if}
|
|
</div>
|
|
{/template}
|
|
|
|
|
|
/** Loading page. */
|
|
{template .loading}
|
|
<img alt="[Loading...]" src="/assets/images/loader4x.gif" width="87" height="87">
|
|
{/template}
|