Skip to content

Commit 5741905

Browse files
phanansdras
authored andcommitted
chore: add rel=sponsor to partner links (#2316)
1 parent 7d690e1 commit 5741905

19 files changed

+522
-464
lines changed

src/v2/cookbook/form-validation.md

Lines changed: 435 additions & 435 deletions
Large diffs are not rendered by default.

src/v2/guide/class-and-style.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ order: 6
77
A common need for data binding is manipulating an element's class list and its inline styles. Since they are both attributes, we can use `v-bind` to handle them: we only need to calculate a final string with our expressions. However, meddling with string concatenation is annoying and error-prone. For this reason, Vue provides special enhancements when `v-bind` is used with `class` and `style`. In addition to strings, the expressions can also evaluate to objects or arrays.
88

99
## Binding HTML Classes
10-
<div class="vueschool"><a href="https://vueschool.io/lessons/vuejs-dynamic-classes?friend=vuejs" target="_blank" rel="noopener" title="Free Vue.js Dynamic Classes Lesson">Watch a free video lesson on Vue School</a></div>
10+
<div class="vueschool"><a href="https://vueschool.io/lessons/vuejs-dynamic-classes?friend=vuejs" target="_blank" rel="sponsored noopener" title="Free Vue.js Dynamic Classes Lesson">Watch a free video lesson on Vue School</a></div>
1111

1212
### Object Syntax
1313

src/v2/guide/components-dynamic-async.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ Check out more details on `<keep-alive>` in the [API reference](../api/#keep-ali
201201

202202
## Async Components
203203

204-
<div class="vueschool"><a href="https://vueschool.io/lessons/dynamically-load-components?friend=vuejs" target="_blank" rel="noopener" title="Free Vue.js Async Components lesson">Watch a free video lesson on Vue School</a></div>
204+
<div class="vueschool"><a href="https://vueschool.io/lessons/dynamically-load-components?friend=vuejs" target="_blank" rel="sponsored noopener" title="Free Vue.js Async Components lesson">Watch a free video lesson on Vue School</a></div>
205205

206206
In large applications, we may need to divide the app into smaller chunks and only load a component from the server when it's needed. To make that easier, Vue allows you to define your component as a factory function that asynchronously resolves your component definition. Vue will only trigger the factory function when the component needs to be rendered and will cache the result for future re-renders. For example:
207207

src/v2/guide/components-registration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ order: 101
66

77
> This page assumes you've already read the [Components Basics](components.html). Read that first if you are new to components.
88
9-
<div class="vueschool"><a href="https://vueschool.io/lessons/global-vs-local-components?friend=vuejs" target="_blank" rel="noopener" title="Free Vue.js Component Registration lesson">Watch a free video lesson on Vue School</a></div>
9+
<div class="vueschool"><a href="https://vueschool.io/lessons/global-vs-local-components?friend=vuejs" target="_blank" rel="sponsored noopener" title="Free Vue.js Component Registration lesson">Watch a free video lesson on Vue School</a></div>
1010

1111
## Component Names
1212

src/v2/guide/components.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ type: guide
44
order: 11
55
---
66

7-
<div class="vueschool"><a href="https://vueschool.io/courses/vuejs-components-fundamentals?friend=vuejs" target="_blank" rel="noopener" title="Free Vue.js Components Fundamentals Course">Watch a free video course on Vue School</a></div>
7+
<div class="vueschool"><a href="https://vueschool.io/courses/vuejs-components-fundamentals?friend=vuejs" target="_blank" rel="sponsored noopener" title="Free Vue.js Components Fundamentals Course">Watch a free video course on Vue School</a></div>
88

99
## Base Example
1010

src/v2/guide/custom-directive.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ order: 302
66

77
## Intro
88

9-
<div class="vueschool"><a href="https://vueschool.io/lessons/create-vuejs-directive?friend=vuejs" target="_blank" rel="noopener" title="Free Vue.js Custom Directives lesson">Watch a free video lesson on Vue School</a></div>
9+
<div class="vueschool"><a href="https://vueschool.io/lessons/create-vuejs-directive?friend=vuejs" target="_blank" rel="sponsored noopener" title="Free Vue.js Custom Directives lesson">Watch a free video lesson on Vue School</a></div>
1010

1111
In addition to the default set of directives shipped in core (`v-model` and `v-show`), Vue also allows you to register your own custom directives. Note that in Vue 2.0, the primary form of code reuse and abstraction is components - however there may be cases where you need some low-level DOM access on plain elements, and this is where custom directives would still be useful. An example would be focusing on an input element, like this one:
1212

src/v2/guide/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ If you’d like to learn more about Vue before diving in, we <a id="modal-player
1212

1313
If you are an experienced frontend developer and want to know how Vue compares to other libraries/frameworks, check out the [Comparison with Other Frameworks](comparison.html).
1414

15-
<div class="vue-mastery"><a href="https://www.vuemastery.com/courses/intro-to-vue-js/vue-instance/" target="_blank" rel="noopener" title="Free Vue.js Course">Watch a free video course on Vue Mastery</a></div>
15+
<div class="vue-mastery"><a href="https://www.vuemastery.com/courses/intro-to-vue-js/vue-instance/" target="_blank" rel="sponsored noopener" title="Free Vue.js Course">Watch a free video course on Vue Mastery</a></div>
1616

1717
## Getting Started
1818

@@ -403,4 +403,4 @@ Although Vue doesn't use custom elements internally, it has [great interoperabil
403403

404404
We've briefly introduced the most basic features of Vue.js core - the rest of this guide will cover them and other advanced features with much finer details, so make sure to read through it all!
405405

406-
<div id="video-modal" class="modal"><div class="video-space" style="padding: 56.25% 0 0 0; position: relative;"><iframe src="https://player.vimeo.com/video/247494684?dnt=1" style="height: 100%; left: 0; position: absolute; top: 0; width: 100%; margin: 0" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div><script src="https://player.vimeo.com/api/player.js"></script><p class="modal-text">Video by <a href="https://www.vuemastery.com" target="_blank" rel="noopener" title="Vue.js Courses on Vue Mastery">Vue Mastery</a>. Watch Vue Mastery’s free <a href="https://www.vuemastery.com/courses/intro-to-vue-js/vue-instance/" target="_blank" rel="noopener" title="Vue.js Courses on Vue Mastery">Intro to Vue course</a>.</div>
406+
<div id="video-modal" class="modal"><div class="video-space" style="padding: 56.25% 0 0 0; position: relative;"><iframe src="https://player.vimeo.com/video/247494684?dnt=1" style="height: 100%; left: 0; position: absolute; top: 0; width: 100%; margin: 0" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div><script src="https://player.vimeo.com/api/player.js"></script><p class="modal-text">Video by <a href="https://www.vuemastery.com" target="_blank" rel="sponsored noopener" title="Vue.js Courses on Vue Mastery">Vue Mastery</a>. Watch Vue Mastery’s free <a href="https://www.vuemastery.com/courses/intro-to-vue-js/vue-instance/" target="_blank" rel="sponsored noopener" title="Vue.js Courses on Vue Mastery">Intro to Vue course</a>.</div>

src/v2/guide/installation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ Vue provides an [official CLI](https://github.com/vuejs/vue-cli) for quickly sca
7676

7777
<p class="tip">The CLI assumes prior knowledge of Node.js and the associated build tools. If you are new to Vue or front-end build tools, we strongly suggest going through <a href="./">the guide</a> without any build tools before using the CLI.</p>
7878

79-
<div class="vue-mastery"><a href="https://www.vuemastery.com/courses/real-world-vue-js/vue-cli" target="_blank" rel="noopener" title="Vue CLI">Watch a video explanation on Vue Mastery</a></div>
79+
<div class="vue-mastery"><a href="https://www.vuemastery.com/courses/real-world-vue-js/vue-cli" target="_blank" rel="sponsored noopener" title="Vue CLI">Watch a video explanation on Vue Mastery</a></div>
8080

8181
## Explanation of Different Builds
8282

src/v2/guide/instance.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ In the future, you can consult the [API reference](../api/#Instance-Properties)
123123

124124
## Instance Lifecycle Hooks
125125

126-
<div class="vueschool"><a href="https://vueschool.io/lessons/understanding-the-vuejs-lifecycle-hooks?friend=vuejs" target="_blank" rel="noopener" title="Free Vue.js Lifecycle Hooks Lesson">Watch a free lesson on Vue School</a></div>
126+
<div class="vueschool"><a href="https://vueschool.io/lessons/understanding-the-vuejs-lifecycle-hooks?friend=vuejs" target="_blank" rel="sponsored noopener" title="Free Vue.js Lifecycle Hooks Lesson">Watch a free lesson on Vue School</a></div>
127127

128128
Each Vue instance goes through a series of initialization steps when it's created - for example, it needs to set up data observation, compile the template, mount the instance to the DOM, and update the DOM when data changes. Along the way, it also runs functions called **lifecycle hooks**, giving users the opportunity to add their own code at specific stages.
129129

src/v2/guide/reactivity.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ order: 601
66

77
Now it's time to take a deep dive! One of Vue's most distinct features is the unobtrusive reactivity system. Models are just plain JavaScript objects. When you modify them, the view updates. It makes state management simple and intuitive, but it's also important to understand how it works to avoid some common gotchas. In this section, we are going to dig into some of the lower-level details of Vue's reactivity system.
88

9-
<div class="vue-mastery"><a href="https://www.vuemastery.com/courses/advanced-components/build-a-reactivity-system" target="_blank" rel="noopener" title="Vue Reactivity">Watch a video explanation on Vue Mastery</a></div>
9+
<div class="vue-mastery"><a href="https://www.vuemastery.com/courses/advanced-components/build-a-reactivity-system" target="_blank" rel="sponsored noopener" title="Vue Reactivity">Watch a video explanation on Vue Mastery</a></div>
1010

1111
## How Changes Are Tracked
1212

src/v2/guide/single-file-components.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ order: 401
66

77
## Introduction
88

9-
<div class="vueschool"><a href="https://vueschool.io/lessons/introduction-to-single-file-components?friend=vuejs" target="_blank" rel="noopener" title="Free Vue.js Single File Components lesson">Watch a free video lesson on Vue School</a></div>
9+
<div class="vueschool"><a href="https://vueschool.io/lessons/introduction-to-single-file-components?friend=vuejs" target="_blank" rel="sponsored noopener" title="Free Vue.js Single File Components lesson">Watch a free video lesson on Vue School</a></div>
1010

1111
In many Vue projects, global components will be defined using `Vue.component`, followed by `new Vue({ el: '#container' })` to target a container element in the body of every page.
1212

src/v2/guide/state-management.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ order: 502
88

99
Large applications can often grow in complexity, due to multiple pieces of state scattered across many components and the interactions between them. To solve this problem, Vue offers [vuex](https://github.com/vuejs/vuex): our own Elm-inspired state management library. It even integrates into [vue-devtools](https://github.com/vuejs/vue-devtools), providing zero-setup access to [time travel debugging](https://raw.githubusercontent.com/vuejs/vue-devtools/master/media/demo.gif).
1010

11-
<div class="vue-mastery"><a href="https://www.vuemastery.com/courses/mastering-vuex/intro-to-vuex/" target="_blank" rel="noopener" title="Vuex Tutorial">Watch a video explanation on Vue Mastery</a></div>
11+
<div class="vue-mastery"><a href="https://www.vuemastery.com/courses/mastering-vuex/intro-to-vuex/" target="_blank" rel="sponsored noopener" title="Vuex Tutorial">Watch a video explanation on Vue Mastery</a></div>
1212

1313
### Information for React Developers
1414

themes/vue/layout/index.ejs

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,33 @@
119119
</div>
120120

121121
<div id="video-modal" class="modal">
122-
<div class="video-space" style="padding: 56.25% 0 0 0; position: relative;"><iframe src="https://player.vimeo.com/video/247494684?dnt=1" style="height: 100%; left: 0; position: absolute; top: 0; width: 100%;" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
123-
</div><script src="https://player.vimeo.com/api/player.js"></script>
124-
<p class="modal-text">Video by <a href="https://www.vuemastery.com" target="_blank" rel="noopener" title="Vue.js Courses on Vue Mastery">Vue Mastery</a>. Watch Vue Mastery’s free <a href="https://www.vuemastery.com/courses/intro-to-vue-js/vue-instance/" target="_blank" rel="noopener" title="Vue.js Courses on Vue Mastery">Intro to Vue course</a>.
122+
<div class="video-space" style="padding: 56.25% 0 0 0; position: relative;">
123+
<iframe
124+
src="https://player.vimeo.com/video/247494684?dnt=1"
125+
style="height: 100%; left: 0; position: absolute; top: 0; width: 100%;"
126+
frameborder="0"
127+
webkitallowfullscreen
128+
mozallowfullscreen
129+
allowfullscreen></iframe>
130+
</div>
131+
<script src="https://player.vimeo.com/api/player.js"></script>
132+
<p class="modal-text">
133+
Video by
134+
<a
135+
href="https://www.vuemastery.com"
136+
target="_blank"
137+
rel="sponsored noopener"
138+
title="Vue.js Courses on Vue Mastery">
139+
Vue Mastery
140+
</a>. Watch Vue Mastery’s free
141+
<a
142+
href="https://www.vuemastery.com/courses/intro-to-vue-js/vue-instance/"
143+
target="_blank"
144+
rel="sponsored noopener"
145+
title="Vue.js Courses on Vue Mastery"
146+
>
147+
Intro to Vue course
148+
</a>.
125149
</p>
126150
</div>
127151

themes/vue/layout/partials/learn_dropdown.ejs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,20 @@
1414
<li><h4>Video Courses</h4></li>
1515
<li>
1616
<ul>
17-
<li><a href="https://www.vuemastery.com/courses/" class="nav-link" target="_blank" rel="noopener">Vue Mastery</a></li>
18-
<li><a href="https://vueschool.io/?friend=vuejs&utm_source=Vuejs.org&utm_medium=Link&utm_content=Navbar%20Dropdown" class="nav-link" target="_blank" rel="noopener">Vue School</a></li>
17+
<li>
18+
<a href="https://www.vuemastery.com/courses/" class="nav-link" target="_blank" rel="sponsored noopener">
19+
Vue Mastery
20+
</a>
21+
</li>
22+
<li>
23+
<a
24+
href="https://vueschool.io/?friend=vuejs&utm_source=Vuejs.org&utm_medium=Link&utm_content=Navbar%20Dropdown"
25+
class="nav-link"
26+
target="_blank" rel="sponsored noopener"
27+
>
28+
Vue School
29+
</a>
30+
</li>
1931
</ul>
2032
</li>
2133
</ul>

themes/vue/layout/partials/platinum_sponsors.ejs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<span>Platinum Sponsors</span>
44
<div>
55
<%_ for (const sponsor of theme.platinum_sponsors) {_%>
6-
<a href="<%- sponsor.url %>" target="_blank" rel="noopener" class="logo">
6+
<a href="<%- sponsor.url %>" target="_blank" rel="sponsored noopener" class="logo">
77
<img src="<%- url_for(`/images/${sponsor.wide_img || sponsor.img}`) %>" alt="<%-sponsor.name-%>">
88
</a>
99
<%_ } _%>

themes/vue/layout/partials/sponsors.ejs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<h3>Patreon Sponsors</h3>
22

33
<%_ for (const sponsor of theme.platinum_sponsors) {_%>
4-
<a href="<%- sponsor.url %>" target="_blank" rel="noopener" style="width: 160px;">
4+
<a href="<%- sponsor.url %>" target="_blank" rel="sponsored noopener" style="width: 160px;">
55
<img src="<%- url_for(`/images/${sponsor.img}`) %>" style="width: 160px;" alt="<%-sponsor.name-%>">
66
</a>
77
<%_ } _%>
88
<br>
99
<br>
1010
<%_ for (const sponsor of theme.gold_sponsors) {_%>
11-
<a href="<%- sponsor.url %>" target="_blank" rel="noopener" style="width: 120px;">
11+
<a href="<%- sponsor.url %>" target="_blank" rel="sponsored noopener" style="width: 120px;">
1212
<img src="<%- url_for(`/images/${sponsor.img}`) %>" style="width: 120px;" alt="<%-sponsor.name-%>">
1313
</a>
1414
<%_ } _%>
@@ -20,13 +20,21 @@
2020
<h3>OpenCollective Sponsors</h3>
2121
<h4>Platinum</h4>
2222
<%_ for (let i = 0; i < 2; i++) {_%>
23-
<a href="https://opencollective.com/vuejs/tiers/platinum-sponsors/<%- i %>/website" rel="noopener" target="_blank">
23+
<a
24+
href="https://opencollective.com/vuejs/tiers/platinum-sponsors/<%- i %>/website"
25+
rel="sponsored noopener"
26+
target="_blank"
27+
>
2428
<img src="https://opencollective.com/vuejs/tiers/platinum-sponsors/<%- i %>/avatar.svg" alt="Vue.JS sponsor">
2529
</a>
2630
<%_ } _%>
2731
<h4>Gold</h4>
2832
<%_ for (let i = 0; i < 8; i++) {_%>
29-
<a href="https://opencollective.com/vuejs/tiers/gold-sponsors/<%- i %>/website" rel="noopener" target="_blank">
33+
<a
34+
href="https://opencollective.com/vuejs/tiers/gold-sponsors/<%- i %>/website"
35+
rel="sponsored noopener"
36+
target="_blank"
37+
>
3038
<img src="https://opencollective.com/vuejs/tiers/gold-sponsors/<%- i %>/avatar.svg" alt="Vue.JS sponsor">
3139
</a>
3240
<%_ } _%>

themes/vue/layout/partials/sponsors_sidebar.ejs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<span>Special Sponsor</span>
44
<div>
55
<%_ for (const sponsor of theme.special_sponsors) {_%>
6-
<a href="<%- sponsor.url %>" target="_blank" rel="noopener" class="logo">
6+
<a href="<%- sponsor.url %>" target="_blank" rel="sponsored noopener" class="logo">
77
<img src="<%- url_for(`/images/${sponsor.wide_img || sponsor.img}`) %>" alt="<%-sponsor.name-%>">
88
</a>
99
<%_ } _%>

themes/vue/layout/partners-page.ejs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
<div id="partners">
22
<p>
33
Vue Partners are premium shops that provide first-class Vue consulting and development.
4-
If your company is interested in being listed as a partner, please contact us at <a href="mailto:partners@vuejs.org">partners@vuejs.org.</a>
4+
If your company is interested in being listed as a partner, please contact us at
5+
<a href="mailto:partners@vuejs.org">partners@vuejs.org.</a>
56
</p>
67

78
<h2 id="active-partners">Active Partners</h2>
89

910
<% for (let partner of page.partners_list) { %>
1011
<div class="partner">
1112
<div class="logo">
12-
<a href="https://<%- partner.url_link %>" target="_blank">
13-
<img src="<%- partner.logo.startsWith(`http`) ? partner.logo : url_for(`/images/${partner.logo}`) %>" alt="<%= partner.name %>">
13+
<a href="https://<%- partner.url_link %>" target="_blank" rel="sponsored noopener">
14+
<img
15+
alt="<%= partner.name %>"
16+
src="<%- partner.logo.startsWith(`http`) ? partner.logo : url_for(`/images/${partner.logo}`) %>"
17+
>
1418
</a>
1519
</div>
1620
<div class="profile">
@@ -22,7 +26,9 @@
2226
<span class="sr-only">Link</span>
2327
</dt>
2428
<dd>
25-
<a href="https://<%- partner.url_link %>" target=_blank><%- partner.url_text %></a>
29+
<a href="https://<%- partner.url_link %>" target="_blank" rel="sponsored noopener">
30+
<%- partner.url_text %>
31+
</a>
2632
</dd>
2733
2834
<dt>
@@ -52,7 +58,13 @@
5258
<ul>
5359
<% for (let proficiency of partner.proficiencies) { %>
5460
<li>
55-
<a href="<%- proficiency.url || page.proficiencies_urls[proficiency] %>" target=_blank rel="noopener"> <%= proficiency.name || proficiency %></a>
61+
<a
62+
href="<%- proficiency.url || page.proficiencies_urls[proficiency] %>"
63+
target="_blank"
64+
rel="sponsored noopener"
65+
>
66+
<%= proficiency.name || proficiency %>
67+
</a>
5668
</li>
5769
<% } %>
5870
</ul>
@@ -66,7 +78,7 @@
6678
</a>
6779
<% } %>
6880
<% for( let link of partner.social_links) { %>
69-
<a class="<%= link.class %>" href="<%- link.url %>">
81+
<a class="<%= link.class %>" href="<%- link.url %>" target="_blank" rel="noopener">
7082
<i class="fa fa-<%= link.class %>"></i>
7183
<span class="sr-only"><%= link.name %></span>
7284
</a>

themes/vue/source/css/_partners.styl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@
7070
color: #0077B5
7171
&.instagram
7272
color: #C13584
73+
&.youtube
74+
color: #f00
7375
i
7476
vertical-align: text-bottom
7577
font-size: 1.3em

0 commit comments

Comments
 (0)