Fix all target="_blank" anchors to be safer

Fixes #1411
This commit is contained in:
Joseph Schorr 2016-04-28 14:38:22 -04:00
parent 9e88b1413d
commit 54e8e72ad2
39 changed files with 76 additions and 66 deletions

View file

@ -30,4 +30,4 @@
for repository {{ event_data.repository | repository_reference }}
{% if event_data.error_message %}
<br>{{ event_data.error_message }}
{% endif %}
{% endif %}

View file

@ -1,2 +1,2 @@
{% extends "build_event.html" %}
{% block eventkind %}failure{% endblock %}
{% block eventkind %}failure{% endblock %}

View file

@ -1,2 +1,2 @@
{% extends "build_event.html" %}
{% block eventkind %}queued{% endblock %}
{% block eventkind %}queued{% endblock %}

View file

@ -1,2 +1,2 @@
{% extends "build_event.html" %}
{% block eventkind %}started{% endblock %}
{% block eventkind %}started{% endblock %}

View file

@ -1,2 +1,2 @@
{% extends "build_event.html" %}
{% block eventkind %}completed{% endblock %}
{% block eventkind %}completed{% endblock %}

View file

@ -1,4 +1,4 @@
A <a href="{{ event_data.vulnerability.link }}">{{ event_data.vulnerability.priority }} vulnerability</a> ({{ event_data.vulnerability.id }}) was detected in tags
{{ 'tags' | icon_image }}
{% for tag in event_data.tags %}{%if loop.index > 1 %}, {% endif %}{{ (event_data.repository, tag) | repository_tag_reference }}{% endfor %} in
repository {{ event_data.repository | repository_reference }}
repository {{ event_data.repository | repository_reference }}

View file

@ -1,7 +1,7 @@
<div class="application-info-element" style="padding-bottom: 18px">
<div class="auth-header">
<span class="avatar" size="48" data="application.avatar"></span>
<h2><a href="{{ application.url }}" target="_blank">{{ application.name }}</a></h2>
<h2><a href="{{ application.url }}" ng-safenewtab>{{ application.name }}</a></h2>
<h4>
{{ application.organization.name }}
</h4>

View file

@ -29,7 +29,7 @@
<tr ng-repeat="app in applications">
<td><a href="/organization/{{ organization.name }}/application/{{ app.client_id }}">{{ app.name }}</a></td>
<td><a href="{{ app.application_uri }}" ng-if="app.application_uri" target="_blank">{{ app.application_uri }}</a></td>
<td><a href="{{ app.application_uri }}" ng-if="app.application_uri" ng-safenewtab>{{ app.application_uri }}</a></td>
</tr>
</table>
</div>

View file

@ -22,7 +22,7 @@
<tr class="auth-info" ng-repeat="authInfo in authorizedApps">
<td>
<span class="avatar" size="24" data="authInfo.application.avatar"></span>
<a href="{{ authInfo.application.url }}" ng-if="authInfo.application.url" target="_blank"
<a href="{{ authInfo.application.url }}" ng-if="authInfo.application.url" ng-safenewtab
data-title="{{ authInfo.application.description || authInfo.application.name }}" bs-tooltip>
{{ authInfo.application.name }}
</a>

View file

@ -6,11 +6,11 @@
<span bo-if="isPullError(error) && localPullInfo.isLocal">
<span bo-if="!localPullInfo.username" class="error-message">
Error 403: Could not pull private base image <a href="/repository/{{ localPullInfo.repo }}">{{ localPullInfo.repo }}</a> without robot account credentials. Please see
<a href="http://docs.quay.io/issues/base-pull-issue.html" target="_blank">Setting up build trigger credentials</a> for more information.
<a href="http://docs.quay.io/issues/base-pull-issue.html" ng-safenewtab>Setting up build trigger credentials</a> for more information.
</span>
<span bo-if="localPullInfo.username" class="error-message">
Error 403: Could not pull private base image <a href="/repository/{{ localPullInfo.repo }}">{{ localPullInfo.repo }}</a> because robot account <strong>{{ localPullInfo.username}}</strong> does not have access. Please see
<a href="http://docs.quay.io/issues/base-pull-issue.html" target="_blank">Setting up build trigger credentials</a> for more information.
<a href="http://docs.quay.io/issues/base-pull-issue.html" ng-safenewtab>Setting up build trigger credentials</a> for more information.
</span>
</span>

View file

@ -7,7 +7,7 @@
<a id="downloadButton" class="btn btn-primary download-button"
ng-href="/buildlogs/{{ currentBuild.id }}"
target="_blank"
ng-safenewtab
ng-if="logEntries">
<i class="fa fa-download"></i>Download Logs
</a>

View file

@ -148,7 +148,7 @@
</div>
<div class="co-panel-body">
<div class="description">
<p>A <a href="http://redis.io" target="_blank">redis</a> key-value store is required for real-time events and build logs.</p>
<p>A <a href="http://redis.io" ng-safenewtab>redis</a> key-value store is required for real-time events and build logs.</p>
</div>
<table class="config-table">
@ -272,7 +272,7 @@
{{ field.help_text }}
</div>
<div class="help-text" ng-if="field.help_url">
See <a href="{{ field.help_url }}" target="_blank">Documentation</a> for more information
See <a href="{{ field.help_url }}" ng-safenewtab>Documentation</a> for more information
</div>
</td>
</tr>
@ -289,11 +289,11 @@
<!-- ACI Conversion -->
<div class="co-panel">
<div class="co-panel-heading">
<i class="fa rocket-icon" style="width: 20px; height: 20px; background-size: cover; vertical-align: middle;"></i> <a href="http://github.com/coreos/rkt" target="_blank">rkt</a> Conversion
<i class="fa rocket-icon" style="width: 20px; height: 20px; background-size: cover; vertical-align: middle;"></i> <a href="http://github.com/coreos/rkt" ng-safenewtab>rkt</a> Conversion
</div>
<div class="co-panel-body">
<div class="description">
<p>If enabled, all images in the registry can be fetched via <code>rkt fetch</code> or any other <a href="https://github.com/appc/spec/blob/master/spec/discovery.md" target="_blank">AppC discovery</a>-compliant implementation.</p>
<p>If enabled, all images in the registry can be fetched via <code>rkt fetch</code> or any other <a href="https://github.com/appc/spec/blob/master/spec/discovery.md" ng-safenewtab>AppC discovery</a>-compliant implementation.</p>
</div>
<div class="co-checkbox">
@ -302,7 +302,7 @@
</div>
<div class="co-alert co-alert-info" ng-if="config.FEATURE_ACI_CONVERSION" style="margin-top: 20px;">
Documentation on generating these keys can be found at <a href="https://tectonic.com/quay-enterprise/docs/latest/aci-signing-keys.html" target="_blank">Generating ACI Signing Keys</a>.
Documentation on generating these keys can be found at <a href="https://tectonic.com/quay-enterprise/docs/latest/aci-signing-keys.html" ng-safenewtab>Generating ACI Signing Keys</a>.
</div>
<table class="config-table" ng-if="config.FEATURE_ACI_CONVERSION">
@ -503,7 +503,7 @@
verifies user credentials on behalf of <span class="registry-name"></span>.
<br>
Documentation
on the API required can be found here: <a href="https://github.com/coreos/jwt-auth-example" target="_blank">https://github.com/coreos/jwt-auth-example</a>.
on the API required can be found here: <a href="https://github.com/coreos/jwt-auth-example" ng-safenewtab>https://github.com/coreos/jwt-auth-example</a>.
</div>
<table class="config-table" ng-if="config.AUTHENTICATION_TYPE == 'JWT'">
@ -597,7 +597,7 @@
<div class="co-alert co-alert-warning">
Note: This will be stored in
<strong>plaintext</strong> inside the config.yaml, so setting up a dedicated account or using
<a href="http://tools.ietf.org/id/draft-stroeder-hashed-userpassword-values-01.html" target="_blank">a password hash</a> is <strong>highly</strong> recommended.
<a href="http://tools.ietf.org/id/draft-stroeder-hashed-userpassword-values-01.html" ng-safenewtab>a password hash</a> is <strong>highly</strong> recommended.
</div>
<span class="config-string-field" binding="config.LDAP_ADMIN_PASSWD"></span>
<div class="help-text">
@ -642,7 +642,7 @@
<p>
<strong>Note:</strong> A registered GitHub (Enterprise) OAuth application is required.
View instructions on how to
<a href="https://coreos.com/docs/enterprise-registry/github-app/" target="_blank">
<a href="https://coreos.com/docs/enterprise-registry/github-app/" ng-safenewtab>
Create an OAuth Application in GitHub
</a>
</p>
@ -729,7 +729,7 @@
<p>
<strong>Note:</strong> A registered Google OAuth application is required.
Visit the
<a href="https://console.developers.google.com" target="_blank">
<a href="https://console.developers.google.com" ng-safenewtab>
Google Developer Console
</a>
to register an application.
@ -777,7 +777,7 @@
<div ng-if="config.FEATURE_BUILD_SUPPORT" style="margin-top: 10px">
<strong>Note: Build workers are required for this feature.</strong>
See <a href="https://coreos.com/docs/enterprise-registry/build-support/" target="_blank">Adding Build Workers</a> for instructions on how to setup build workers.
See <a href="https://coreos.com/docs/enterprise-registry/build-support/" ng-safenewtab>Adding Build Workers</a> for instructions on how to setup build workers.
</div>
</div>
</div> <!-- /Build Support -->
@ -795,7 +795,7 @@
<p>
<strong>Note:</strong> A registered GitHub (Enterprise) OAuth application (<strong>separate from GitHub Authentication</strong>) is required.
View instructions on how to
<a href="https://coreos.com/docs/enterprise-registry/github-app/" target="_blank">
<a href="https://coreos.com/docs/enterprise-registry/github-app/" ng-safenewtab>
Create an OAuth Application in GitHub
</a>
</p>
@ -860,7 +860,7 @@
<p>
<strong>Note:</strong> A registered BitBucket OAuth application is required.
View instructions on how to
<a href="https://coreos.com/docs/enterprise-registry/bitbucket-app/" target="_blank">
<a href="https://coreos.com/docs/enterprise-registry/bitbucket-app/" ng-safenewtab>
Create an OAuth Application in BitBucket
</a>
</p>
@ -903,7 +903,7 @@
<p>
<strong>Note:</strong> A registered GitLab OAuth application is required.
Visit the
<a href="{{ config.GITLAB_TRIGGER_CONFIG.GITLAB_ENDPOINT || 'https://gitlab.com' }}/admin/applications" target="_blank">
<a href="{{ config.GITLAB_TRIGGER_CONFIG.GITLAB_ENDPOINT || 'https://gitlab.com' }}/admin/applications" ng-safenewtab>
GitLab applications admin panel
</a>
to create a new application.

View file

@ -132,7 +132,7 @@
<div ng-if="getHelpUrl(field, currentConfig)"
style="margin-top: 10px; margin-bottom: 10px">
See: <a href="{{ getHelpUrl(field, currentConfig) }}" target="_blank">{{ getHelpUrl(field, currentConfig) }}</a>
See: <a href="{{ getHelpUrl(field, currentConfig) }}" ng-safenewtab>{{ getHelpUrl(field, currentConfig) }}</a>
</div>
<div class="co-alert co-alert-info" ng-if="currentMethod.id == 'webhook'"
@ -141,7 +141,7 @@
<br><br>
The contents for each event can be found in the user guide:
<a href="http://docs.quay.io/guides/notifications.html#webhook{{ currentEvent.id ? '_' + currentEvent.id : '' }}"
target="_blank">
ng-safenewtab>
http://docs.quay.io/guides/notifications.html
</a>
</div>

View file

@ -22,7 +22,7 @@
<span ng-if="externalLoginInfo[provider.id]">
Attached to {{ provider.title() }} account
<b ng-if="provider.hasUserInfo">
<a ng-href="{{ provider.getUserInfo(externalLoginInfo[provider.id]).endpoint }}" target="_blank">
<a ng-href="{{ provider.getUserInfo(externalLoginInfo[provider.id]).endpoint }}" ng-safenewtab>
{{ provider.getUserInfo(externalLoginInfo[provider.id]).username }}
</a>
</b>

View file

@ -8,7 +8,7 @@
<ul class="dropdown-menu dropdown-menu-right pull-right">
<li ng-if="methodInfo.id == 'webhook'">
<a href="http://docs.quay.io/guides/notifications.html#webhook_{{ eventInfo.id }}"
target="_blank">
ng-safenewtab>
<i class="fa fa-book"></i>
Webhook Documentation</a>
</li>

View file

@ -24,16 +24,16 @@
<li><a ng-href="/tour/" target="{{ appLinkTarget() }}" quay-section="tour">Tour</a></li>
<li><a ng-href="/tutorial/" target="{{ appLinkTarget() }}" quay-section="tutorial">Tutorial</a></li>
<li quay-require="['BILLING']"><a ng-href="/plans/" target="{{ appLinkTarget() }}" quay-section="plans">Pricing</a></li>
<li><a href="https://docs.quay.io/" target="_blank">Docs</a></li>
<li><a href="https://blog.quay.io/" target="_blank">Blog</a></li>
<li><a href="https://docs.quay.io/" ng-safenewtab>Docs</a></li>
<li><a href="https://blog.quay.io/" ng-safenewtab>Blog</a></li>
</ul>
<!-- Signed in -->
<ul class="nav navbar-nav navbar-links" ng-if="!user.anonymous">
<li><a ng-href="/repository/" target="{{ appLinkTarget() }}" quay-section="repository">Repositories</a></li>
<li><a ng-href="/tutorial/" target="{{ appLinkTarget() }}" quay-section="tutorial">Tutorial</a></li>
<li><a href="https://docs.quay.io/" target="_blank">Docs</a></li>
<li><a href="https://blog.quay.io/" target="_blank">Blog</a></li>
<li><a href="https://docs.quay.io/" ng-safenewtab>Docs</a></li>
<li><a href="https://blog.quay.io/" ng-safenewtab>Blog</a></li>
</ul>
<!-- Phone -->

View file

@ -108,7 +108,7 @@
</td>
<td class="single-col nowrap-col">
<a bo-text="vuln.name" ng-click="toggleDetails(vuln)" class="expand-link"></a>
<a href="{{ vuln.link }}" class="external-link hidden-xs hidden-sm hidden-md" target="_blank">
<a href="{{ vuln.link }}" class="external-link hidden-xs hidden-sm hidden-md" ng-safenewtab>
<i class="fa fa-link"></i>
</a>
</td>

View file

@ -37,7 +37,7 @@
</thead>
<tr ng-repeat="vulnerability in securityVulnerabilities | filter:options.vulnFilter | orderBy:'index'">
<td><a href="{{ vulnerability.link }}" target="_blank">{{ vulnerability.name }}</a></td>
<td><a href="{{ vulnerability.link }}" ng-safenewtab>{{ vulnerability.name }}</a></td>
<td style="white-space: nowrap;">
<span class="vulnerability-priority-view" priority="vulnerability.severity"></span>
</td>

View file

@ -21,4 +21,4 @@
<button class="btn btn-primary btn-block" type="submit">Send Recovery Email</button>
</form>
</div>
</div>
</div>

View file

@ -77,7 +77,7 @@
</span>
<b>Automated Security Scanning (Preview)</b>
<div>Continually scanning this repository for 17K+ known vulnerabilities. <a href="https://blog.quay.io/security-scanning-beta" target="_blank">Read more about this feature</a>.</div>
<div>Continually scanning this repository for 17K+ known vulnerabilities. <a href="https://blog.quay.io/security-scanning-beta" ng-safenewtab>Read more about this feature</a>.</div>
<div class="configure-alerts" ng-if="!hasEvents">
<a href="/repository/{{ repository.namespace }}/{{ repository.name }}?tab=settings&add_event=vulnerability_found"><i class="fa fa-bell-o"></i>Configure Vulnerability Alerts</a>
</div>

View file

@ -20,7 +20,7 @@
<div ng-show="!showingHistory">
<div class="co-alert co-alert-danger" ng-if="hasDefcon1">
One or more of your tags has an <strong>extremely critical</strong> vulnerability which should be addressed immediately:
<a href="{{ vuln.Link }}" ng-repeat="(key, vuln) in defcon1" style="margin-left: 10px;" target="_blank">
<a href="{{ vuln.Link }}" ng-repeat="(key, vuln) in defcon1" style="margin-left: 10px;" ng-safenewtab>
{{ vuln.Name }}
</a>
</div>

View file

@ -49,7 +49,7 @@
Dockerfile found
pulls from the private <span class="registry-name"></span> repository
<a href="/repository/{{ pullInfo.analysis.namespace }}/{{ pullInfo.analysis.name }}" target="_blank">
<a href="/repository/{{ pullInfo.analysis.namespace }}/{{ pullInfo.analysis.name }}" ng-safenewtab>
{{ pullInfo.analysis.namespace }}/{{ pullInfo.analysis.name }}
</a>
</div>
@ -95,7 +95,7 @@
<div ng-if="!pullInfo.analysis.robots.length && pullInfo.analysis.name"
style="margin-top: 20px; margin-bottom: 0px;">
<strong>Note</strong>: No robot account currently has access to the private repository. Please create one and/or assign access in the
<a href="/repository/{{ pullInfo.analysis.namespace }}/{{ pullInfo.analysis.name }}/admin" target="_blank">
<a href="/repository/{{ pullInfo.analysis.namespace }}/{{ pullInfo.analysis.name }}/admin" ng-safenewtab>
repository's admin panel.
</a>
</div>

View file

@ -2,7 +2,7 @@
<soan class="commit-circle-container" data-title="Commit" data-container="body" bs-tooltip>
<span class="commit-circle"></span>
</span>
<span class="anchor" href="{{ getUrl(commitSha, urlTemplate) }}" target="_blank"
<span class="anchor" href="{{ getUrl(commitSha, urlTemplate) }}" ng-safenewtab
is-only-text="!urlTemplate || !getUrl(commitSha, urlTemplate)">
{{ commitSha.substring(0, 7) }}
</span>

View file

@ -3,13 +3,13 @@
<!-- Branch -->
<span ng-switch-when="heads">
<i class="fa fa-code-fork" data-container="body" data-title="Branch" bs-tooltip></i>
<span class="anchor" href="{{ getUrl(ref, branchTemplate, 'branch') }}" is-only-text="!branchTemplate || !getUrl(ref, branchTemplate, 'branch')" target="_blank">{{ getTitle(ref) }}</span>
<span class="anchor" href="{{ getUrl(ref, branchTemplate, 'branch') }}" is-only-text="!branchTemplate || !getUrl(ref, branchTemplate, 'branch')" ng-safenewtab>{{ getTitle(ref) }}</span>
</span>
<!-- Tag -->
<span ng-switch-when="tags">
<i class="fa fa-tag" data-container="body" data-title="Tag" bs-tooltip></i>
<span class="anchor" href="{{ getUrl(ref, tagTemplate, 'tag') }}" is-only-text="!tagTemplate || !getUrl(ref, tagTemplate, 'tag')" target="_blank">{{ getTitle(ref) }}</span>
<span class="anchor" href="{{ getUrl(ref, tagTemplate, 'tag') }}" is-only-text="!tagTemplate || !getUrl(ref, tagTemplate, 'tag')" ng-safenewtab>{{ getTitle(ref) }}</span>
</span>
</span>
</span>

View file

@ -164,7 +164,7 @@
<img src="/static/img/testimonial-frank.png">
<span class="speaker-info-internal">
<span class="speaker">Frank Macreery</span>
<span class="speaker-title"><a href="https://www.aptible.com" target="_blank" alt="Aptible">Aptible</a> - CTO & Co-Founder</span>
<span class="speaker-title"><a href="https://www.aptible.com" ng-safenewtab alt="Aptible">Aptible</a> - CTO & Co-Founder</span>
</span>
</div>
</div>

View file

@ -125,7 +125,7 @@
<li ng-repeat="branchName in branchNames | limitTo:20"
class="ref-reference"
ng-class="isMatching('heads', branchName, state.branchTagFilter) ? 'match' : 'not-match'">
<span ng-click="addRef('heads', branchName)" target="_blank">
<span ng-click="addRef('heads', branchName)" ng-safenewtab>
{{ branchName }}
</span>
</li>
@ -138,7 +138,7 @@
<li ng-repeat="tagName in tagNames | limitTo:20"
class="ref-reference"
ng-class="isMatching('tags', tagName, state.branchTagFilter) ? 'match' : 'not-match'">
<span ng-click="addRef('tags', tagName)" target="_blank">
<span ng-click="addRef('tags', tagName)" ng-safenewtab>
{{ tagName }}
</span>
</li>

View file

@ -4,4 +4,4 @@
<a href="{{ trigger.repository_url }}" target="_new">
{{ trigger.config.build_source }}
</a>
</span>
</span>

View file

@ -5,6 +5,6 @@
<li>You must give the following public key read access to the git repository.</li>
<li>You must set your repository to POST to the following URL to trigger a build.</li>
</ul>
For more information, refer to the <a href="http://docs.quay.io/guides/custom-trigger.html" target="_blank">Custom Git Triggers documentation</a>.
For more information, refer to the <a href="http://docs.quay.io/guides/custom-trigger.html" ng-safenewtab>Custom Git Triggers documentation</a>.
</p>
</div>
</div>

View file

@ -1,4 +1,4 @@
<span>
<i class="fa fa-git-square fa-lg" style="margin-right: 6px;" data-title="git" bs-tooltip="tooltip.title"></i>
Push to {{ trigger.config.build_source }}
</span>
</span>

View file

@ -1,3 +1,3 @@
<div class="co-alert co-alert-info">
<p>The following key has been automatically added to your source control repository.</p>
</div>
</div>

View file

@ -4,4 +4,4 @@
<a href="{{ trigger.repository_url }}" target="_new">
{{ trigger.config.build_source }}
</a>
</span>
</span>

View file

@ -28,7 +28,7 @@
<div class="tbd-content" ng-switch-when="fullcommit">
<div class="commit-message">
<span class="anchor" is-only-text="!TriggerService.getFullLinkTemplate(build, 'commit')"
target="_blank" href="{{ TriggerService.getFullLinkTemplate(build, 'commit').replace('{sha}', TriggerService.getCommitSHA(build.trigger_metadata)) }}">
ng-safenewtab href="{{ TriggerService.getFullLinkTemplate(build, 'commit').replace('{sha}', TriggerService.getCommitSHA(build.trigger_metadata)) }}">
{{ getMessageSummary(build.trigger_metadata.commit_info.message) }}
</span>
<span class="long-description-toggle"
@ -44,7 +44,7 @@
<span class="anchor commit-who"
href="{{ build.trigger_metadata.commit_info.author.url }}"
is-only-text="!build.trigger_metadata.commit_info.author.url"
target="_blank">
ng-safenewtab>
<img ng-src="{{ build.trigger_metadata.commit_info.author.avatar_url }}"
ng-if="build.trigger_metadata.commit_info.author.avatar_url">
{{ build.trigger_metadata.commit_info.author.username }}

View file

@ -0,0 +1,10 @@
/**
* Adds both target="_blank" and rel="noopener" to the marked anchor tag.
* Background on noopener: https://mathiasbynens.github.io/rel-noopener/
*/
angular.module('quay').directive('ngSafenewtab', function () {
return function (scope, element, attr) {
element.attr('target', '_blank');
element.attr('rel', 'noopener');
};
});

View file

@ -54,16 +54,16 @@
<div class="row">
<div class="trusted-logos">
<div class="col-md-3 trusted-logo">
<a href="http://www.modcloth.com" target="_blank" alt="ModCloth"><img src="/static/img/modcloth-logo.png"></a>
<a href="http://www.modcloth.com" ng-safenewtab alt="ModCloth"><img src="/static/img/modcloth-logo.png"></a>
</div>
<div class="col-md-3 trusted-logo">
<a href="https://travis-ci.com" target="_blank" alt="Travis CI"><img src="/static/img/travisci-logo.png"></a>
<a href="https://travis-ci.com" ng-safenewtab alt="Travis CI"><img src="/static/img/travisci-logo.png"></a>
</div>
<div class="col-md-3 trusted-logo apptentive">
<a href="http://www.apptentive.com" target="_blank" alt="Apptentive"><img src="/static/img/apptentive-logo.svg"></a>
<a href="http://www.apptentive.com" ng-safenewtab alt="Apptentive"><img src="/static/img/apptentive-logo.svg"></a>
</div>
<div class="col-md-3 trusted-logo">
<a href="https://www.aptible.com" target="_blank" alt="Aptible"><img src="/static/img/aptible-logo.png" style="width: 200px;"></a>
<a href="https://www.aptible.com" ng-safenewtab alt="Aptible"><img src="/static/img/aptible-logo.png" style="width: 200px;"></a>
</div>
</div>
</div>
@ -129,7 +129,7 @@
<img src="/static/img/testimonial-mike.png">
<span class="speaker-info-internal">
<span class="speaker">Mike Saffitz</span>
<span class="speaker-title"><a href="http://www.apptentive.com" target="_blank" alt="Apptentive">Apptentive</a> - CTO & Co-Founder</span>
<span class="speaker-title"><a href="http://www.apptentive.com" ng-safenewtab alt="Apptentive">Apptentive</a> - CTO & Co-Founder</span>
</span>
</div>
<a class="learn-more" href="/tour">Learn more</a>

View file

@ -65,7 +65,7 @@
<div class="form-group nested">
<label for="fieldAppAvatar">Avatar E-mail (optional)</label>
<input type="email" class="form-control" id="fieldAppAvatar" placeholder="Avatar E-mail" ng-model="application.avatar_email">
<div class="description">An e-mail address representing the <a href="http://docs.quay.io/glossary/avatar" target="_blank">Avatar</a> for the application. See above for the icon.</div>
<div class="description">An e-mail address representing the <a href="http://docs.quay.io/glossary/avatar" ng-safenewtab>Avatar</a> for the application. See above for the icon.</div>
</div>
<div class="form-group nested" style="margin-top: 10px; padding-top: 10px; border-top: 1px solid #eee;">
@ -122,7 +122,7 @@
<a class="btn btn-success"
href="{{ Config.getUrl('/oauth/authorize?response_type=token&client_id=' + application.client_id + '&scope=' + getScopes(genScopes).join(' ') + '&redirect_uri=' + Config.getUrl(Config['LOCAL_OAUTH_HANDLER'])) }}"
ng-disabled="!getScopes(genScopes).length" target="_blank">
ng-disabled="!getScopes(genScopes).length" ng-safenewtab>
Generate Access Token
</a>
</div>

View file

@ -72,7 +72,7 @@
Select a service above to view its local logs
<div>
<a class="btn btn-primary" href="/systemlogsarchive?_csrf_token={{ csrf_token }}" target="_blank">
<a class="btn btn-primary" href="/systemlogsarchive?_csrf_token={{ csrf_token }}" ng-safenewtab>
<i class="fa fa-download fa-lg" style="margin-right: 4px;"></i> Download All Local Logs (.tar.gz)
</a>
</div>

View file

@ -1 +1 @@
That's it for the introduction tutorial! If you have any questions, please check the <a href="http://docs.quay.io" target="_blank">Documentation</a> or <a href="/contact">contact us</a>!
That's it for the introduction tutorial! If you have any questions, please check the <a href="http://docs.quay.io" ng-safenewtab>Documentation</a> or <a href="/contact">contact us</a>!

View file

@ -212,7 +212,7 @@ mixpanel.init("{{ mixpanel_key }}", { track_pageview : false, debug: {{ is_debug
</ul>
</div>
<div class="col-md-4">
<a href="https://coreos.com" target="_blank"><img src="/static/img/coreos.svg"></a>
<a href="https://coreos.com" ng-safenewtab><img src="/static/img/coreos.svg"></a>
</div>
</nav>
@ -251,7 +251,7 @@ mixpanel.init("{{ mixpanel_key }}", { track_pageview : false, debug: {{ is_debug
b[k]=o+'d.write("'+p().replace(/"/g,String.fromCharCode(92)+'"')+'");d.close();'}a.P(2)};ld()};nt()})({
loader: "static.olark.com/jsclient/loader0.js",name:"olark",methods:["configure","extend","declare","identify"]});
/* custom configuration goes here (www.olark.com/documentation) */
olark.identify('1189-336-10-9918');/*]]>*/</script><noscript><a href="https://www.olark.com/site/1189-336-10-9918/contact" title="Contact us" target="_blank">Questions? Feedback?</a> powered by <a href="http://www.olark.com?welcome" title="Olark live chat software">Olark live chat software</a></noscript>
olark.identify('1189-336-10-9918');/*]]>*/</script><noscript><a href="https://www.olark.com/site/1189-336-10-9918/contact" title="Contact us" ng-safenewtab>Questions? Feedback?</a> powered by <a href="http://www.olark.com?welcome" title="Olark live chat software">Olark live chat software</a></noscript>
<!-- end olark code -->
{% endif %}

View file

@ -14,7 +14,7 @@
<div class="container auth-container" ng-if="!user.anonymous">
<div class="auth-header">
<span class="avatar" size="48" data="{{ application.avatar }}"></span>
<h2><a href="{{ application.url }}" target="_blank">{{ application.name }}</a></h2>
<h2><a href="{{ application.url }}" ng-safenewtab>{{ application.name }}</a></h2>
<h4>
<span class="avatar" size="24" data="{{ application.organization.avatar }}"
style="vertical-align: middle; margin-right: 4px;"></span>