Fix meta tags (#4918)
This commit is contained in:
		
							parent
							
								
									052f8b265d
								
							
						
					
					
						commit
						342e48ed77
					
				|  | @ -130,7 +130,7 @@ | |||
| 					<span>{{ $t('status') }}</span> | ||||
| 				</header> | ||||
| 				<div v-for="instance in instances" :style="{ opacity: instance.isNotResponding ? 0.5 : 1 }"> | ||||
| 					<a @click.prevent="showInstance(instance.host)" target="_blank" :href="`https://${instance.host}`" :style="{ textDecoration: instance.isMarkedAsClosed ? 'line-through' : 'none' }">{{ instance.host }}</a> | ||||
| 					<a @click.prevent="showInstance(instance.host)" rel="nofollow noopener" target="_blank" :href="`https://${instance.host}`" :style="{ textDecoration: instance.isMarkedAsClosed ? 'line-through' : 'none' }">{{ instance.host }}</a> | ||||
| 					<span>{{ instance.notesCount | number }}</span> | ||||
| 					<span>{{ instance.usersCount | number }}</span> | ||||
| 					<span>{{ instance.followingCount | number }}</span> | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <template> | ||||
| <a class="a" :href="repositoryUrl" target="_blank" title="View source on GitHub"> | ||||
| <a class="a" :href="repositoryUrl" rel="noopener" target="_blank" title="View source on GitHub"> | ||||
| 	<svg width="80" height="80" viewBox="0 0 250 250" aria-hidden="aria-hidden"> | ||||
| 		<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path> | ||||
| 		<path class="octo-arm" d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor"></path> | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <template> | ||||
| <a class="zxrjzpcj" :href="url" :class="service" target="_blank"> | ||||
| <a class="zxrjzpcj" :href="url" :class="service" rel="noopener" target="_blank"> | ||||
| 	<fa :icon="icon" size="lg" fixed-width /><span>{{ text }}</span> | ||||
| </a> | ||||
| </template> | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ | |||
| 			<div class="content" v-if="!message.isDeleted"> | ||||
| 				<mfm class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/> | ||||
| 				<div class="file" v-if="message.file"> | ||||
| 					<a :href="message.file.url" target="_blank" :title="message.file.name"> | ||||
| 					<a :href="message.file.url" rel="noopener" target="_blank" :title="message.file.name"> | ||||
| 						<img v-if="message.file.type.split('/')[0] == 'image'" :src="message.file.url" :alt="message.file.name" | ||||
| 							:style="{ backgroundColor: message.file.properties.avgColor || 'transparent' }"/> | ||||
| 						<p v-else>{{ message.file.name }}</p> | ||||
|  |  | |||
|  | @ -174,6 +174,7 @@ export default Vue.component('misskey-flavored-markdown', { | |||
| 						key: Math.random(), | ||||
| 						props: { | ||||
| 							url: token.node.props.url, | ||||
| 							rel: 'nofollow noopener', | ||||
| 							target: '_blank' | ||||
| 						}, | ||||
| 						attrs: { | ||||
|  | @ -187,6 +188,7 @@ export default Vue.component('misskey-flavored-markdown', { | |||
| 						attrs: { | ||||
| 							class: 'link', | ||||
| 							href: token.node.props.url, | ||||
| 							rel: 'nofollow noopener', | ||||
| 							target: '_blank', | ||||
| 							title: token.node.props.url, | ||||
| 							style: 'color:var(--mfmLink);' | ||||
|  |  | |||
|  | @ -2,9 +2,9 @@ | |||
| <span class="mk-nav"> | ||||
| 	<a :href="aboutUrl">{{ $t('about') }}</a> | ||||
| 	<i>・</i> | ||||
| 	<a :href="repositoryUrl">{{ $t('repository') }}</a> | ||||
| 	<a :href="repositoryUrl" rel="noopener" target="_blank">{{ $t('repository') }}</a> | ||||
| 	<i>・</i> | ||||
| 	<a :href="feedbackUrl" target="_blank">{{ $t('feedback') }}</a> | ||||
| 	<a :href="feedbackUrl" rel="noopener" target="_blank">{{ $t('feedback') }}</a> | ||||
| 	<i>・</i> | ||||
| 	<a href="/dev">{{ $t('develop') }}</a> | ||||
| </span> | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ | |||
| 	</template> | ||||
| 	<div v-if="data && !$store.state.i.twoFactorEnabled"> | ||||
| 		<ol> | ||||
| 			<li>{{ $t('authenticator') }}<a href="https://support.google.com/accounts/answer/1066447" target="_blank">{{ $t('howtoinstall') }}</a></li> | ||||
| 			<li>{{ $t('authenticator') }}<a href="https://support.google.com/accounts/answer/1066447" rel="noopener" target="_blank">{{ $t('howtoinstall') }}</a></li> | ||||
| 			<li>{{ $t('scan') }}<br><img :src="data.qr"></li> | ||||
| 			<li>{{ $t('done') }}<br> | ||||
| 				<ui-input v-model="token">{{ $t('token') }}</ui-input> | ||||
|  |  | |||
|  | @ -4,21 +4,21 @@ | |||
| 
 | ||||
| 	<section v-if="enableTwitterIntegration"> | ||||
| 		<header><fa :icon="['fab', 'twitter']"/> Twitter</header> | ||||
| 		<p v-if="$store.state.i.twitter">{{ $t('connected-to') }}: <a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p> | ||||
| 		<p v-if="$store.state.i.twitter">{{ $t('connected-to') }}: <a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" rel="nofollow noopener" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p> | ||||
| 		<ui-button v-if="$store.state.i.twitter" @click="disconnectTwitter">{{ $t('disconnect') }}</ui-button> | ||||
| 		<ui-button v-else @click="connectTwitter">{{ $t('connect') }}</ui-button> | ||||
| 	</section> | ||||
| 
 | ||||
| 	<section v-if="enableDiscordIntegration"> | ||||
| 		<header><fa :icon="['fab', 'discord']"/> Discord</header> | ||||
| 		<p v-if="$store.state.i.discord">{{ $t('connected-to') }}: <a :href="`https://discordapp.com/users/${$store.state.i.discord.id}`" target="_blank">@{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}</a></p> | ||||
| 		<p v-if="$store.state.i.discord">{{ $t('connected-to') }}: <a :href="`https://discordapp.com/users/${$store.state.i.discord.id}`" rel="nofollow noopener" target="_blank">@{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}</a></p> | ||||
| 		<ui-button v-if="$store.state.i.discord" @click="disconnectDiscord">{{ $t('disconnect') }}</ui-button> | ||||
| 		<ui-button v-else @click="connectDiscord">{{ $t('connect') }}</ui-button> | ||||
| 	</section> | ||||
| 
 | ||||
| 	<section v-if="enableGithubIntegration"> | ||||
| 		<header><fa :icon="['fab', 'github']"/> GitHub</header> | ||||
| 		<p v-if="$store.state.i.github">{{ $t('connected-to') }}: <a :href="`https://github.com/${$store.state.i.github.login}`" target="_blank">@{{ $store.state.i.github.login }}</a></p> | ||||
| 		<p v-if="$store.state.i.github">{{ $t('connected-to') }}: <a :href="`https://github.com/${$store.state.i.github.login}`" rel="nofollow noopener" target="_blank">@{{ $store.state.i.github.login }}</a></p> | ||||
| 		<ui-button v-if="$store.state.i.github" @click="disconnectGithub">{{ $t('disconnect') }}</ui-button> | ||||
| 		<ui-button v-else @click="connectGithub">{{ $t('connect') }}</ui-button> | ||||
| 	</section> | ||||
|  |  | |||
|  | @ -45,7 +45,7 @@ | |||
| 			</ui-select> | ||||
| 		</label> | ||||
| 
 | ||||
| 		<a href="https://assets.msky.cafe/theme/list" target="_blank">{{ $t('find-more-theme') }}</a> | ||||
| 		<a href="https://assets.msky.cafe/theme/list" rel="noopener" target="_blank">{{ $t('find-more-theme') }}</a> | ||||
| 
 | ||||
| 		<details class="creator"> | ||||
| 			<summary><fa icon="palette"/> {{ $t('create-a-theme') }}</summary> | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ | |||
| 	</blockquote> | ||||
| </div> | ||||
| <div v-else class="mk-url-preview"> | ||||
| 	<a :class="{ mini: narrow, compact }" :href="url" target="_blank" :title="url" v-if="!fetching"> | ||||
| 	<a :class="{ mini: narrow, compact }" :href="url" rel="nofollow noopener" target="_blank" :title="url" v-if="!fetching"> | ||||
| 		<div class="thumbnail" v-if="thumbnail" :style="`background-image: url('${thumbnail}')`"> | ||||
| 			<button v-if="!playerEnabled && player.url" @click.prevent="playerEnabled = true" :title="$t('enable-player')"><fa :icon="['far', 'play-circle']"/></button> | ||||
| 		</div> | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| <template> | ||||
| <a class="mk-url" :href="url" :target="target"> | ||||
| <a class="mk-url" :href="url" :rel="rel" :target="target"> | ||||
| 	<span class="schema">{{ schema }}//</span> | ||||
| 	<span class="hostname">{{ hostname }}</span> | ||||
| 	<span class="port" v-if="port != ''">:{{ port }}</span> | ||||
|  | @ -15,7 +15,7 @@ import Vue from 'vue'; | |||
| import { toUnicode as decodePunycode } from 'punycode'; | ||||
| 
 | ||||
| export default Vue.extend({ | ||||
| 	props: ['url', 'target'], | ||||
| 	props: ['url', 'rel', 'target'], | ||||
| 	data() { | ||||
| 		return { | ||||
| 			schema: null, | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ | |||
| 		<div class="is-remote" v-if="note.user.host != null"> | ||||
| 			<details> | ||||
| 				<summary><fa icon="exclamation-triangle"/> {{ $t('@.is-remote-post') }}</summary> | ||||
| 				<a :href="note.url || note.uri" target="_blank">{{ $t('@.view-on-remote') }}</a> | ||||
| 				<a :href="note.url || note.uri" rel="nofollow noopener" target="_blank">{{ $t('@.view-on-remote') }}</a> | ||||
| 			</details> | ||||
| 		</div> | ||||
| 		<mk-note :note="note" :detail="true" :key="note.id"/> | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ | |||
| 		<div class="is-remote" v-if="user.host != null"> | ||||
| 			<details> | ||||
| 				<summary><fa icon="exclamation-triangle"/> {{ $t('@.is-remote-user') }}</summary> | ||||
| 				<a :href="user.url" target="_blank">{{ $t('@.view-on-remote') }}</a> | ||||
| 				<a :href="user.url" rel="nofollow noopener" target="_blank">{{ $t('@.view-on-remote') }}</a> | ||||
| 			</details> | ||||
| 		</div> | ||||
| 		<header :style="bannerStyle"> | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ | |||
| 		<div class="mkw-rss--body" :data-mobile="platform == 'mobile'"> | ||||
| 			<p class="fetching" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p> | ||||
| 			<div class="feed" v-else> | ||||
| 				<a v-for="item in items" :href="item.link" target="_blank" :title="item.title">{{ item.title }}</a> | ||||
| 				<a v-for="item in items" :href="item.link" rel="nofollow noopener" target="_blank" :title="item.title">{{ item.title }}</a> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</ui-container> | ||||
|  |  | |||
|  | @ -54,7 +54,7 @@ | |||
| 				</div> | ||||
| 				<mk-poll v-if="appearNote.poll" :note="appearNote"/> | ||||
| 				<mk-url-preview v-for="url in urls" :url="url" :key="url" :detail="true"/> | ||||
| 				<a class="location" v-if="appearNote.geo" :href="`https://maps.google.com/maps?q=${appearNote.geo.coordinates[1]},${appearNote.geo.coordinates[0]}`" target="_blank"><fa icon="map-marker-alt"/> {{ $t('location') }}</a> | ||||
| 				<a class="location" v-if="appearNote.geo" :href="`https://maps.google.com/maps?q=${appearNote.geo.coordinates[1]},${appearNote.geo.coordinates[0]}`" rel="noopener" target="_blank"><fa icon="map-marker-alt"/> {{ $t('location') }}</a> | ||||
| 				<div class="map" v-if="appearNote.geo" ref="map"></div> | ||||
| 				<div class="renote" v-if="appearNote.renote"> | ||||
| 					<mk-note-preview :note="appearNote.renote"/> | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ | |||
| 						<mk-media-list :media-list="appearNote.files"/> | ||||
| 					</div> | ||||
| 					<mk-poll v-if="appearNote.poll" :note="appearNote" ref="pollViewer"/> | ||||
| 					<a class="location" v-if="appearNote.geo" :href="`https://maps.google.com/maps?q=${appearNote.geo.coordinates[1]},${appearNote.geo.coordinates[0]}`" target="_blank"><fa icon="map-marker-alt"/> 位置情報</a> | ||||
| 					<a class="location" v-if="appearNote.geo" :href="`https://maps.google.com/maps?q=${appearNote.geo.coordinates[1]},${appearNote.geo.coordinates[0]}`" rel="noopener" target="_blank"><fa icon="map-marker-alt"/> 位置情報</a> | ||||
| 					<div class="renote" v-if="appearNote.renote"><mk-note-preview :note="appearNote.renote"/></div> | ||||
| 					<mk-url-preview v-for="url in urls" :url="url" :key="url" :compact="compact"/> | ||||
| 				</div> | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ | |||
| 		<fa icon="exclamation-triangle"/> {{ $t('@.user-suspended') }} | ||||
| 	</div> | ||||
| 	<div class="is-remote" v-if="user.host != null" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }"> | ||||
| 		<fa icon="exclamation-triangle"/> {{ $t('@.is-remote-user') }}<a :href="user.url" target="_blank">{{ $t('@.view-on-remote') }}</a> | ||||
| 		<fa icon="exclamation-triangle"/> {{ $t('@.is-remote-user') }}<a :href="user.url" rel="nofollow noopener" target="_blank">{{ $t('@.view-on-remote') }}</a> | ||||
| 	</div> | ||||
| 	<div class="main"> | ||||
| 		<x-header class="header" :user="user"/> | ||||
|  |  | |||
|  | @ -7,6 +7,7 @@ | |||
| </div> | ||||
| <a class="kkjnbbplepmiyuadieoenjgutgcmtsvu" v-else | ||||
| 	:href="video.url" | ||||
| 	rel="nofollow noopener" | ||||
| 	target="_blank" | ||||
| 	:style="imageStyle" | ||||
| 	:title="video.name" | ||||
|  |  | |||
|  | @ -40,7 +40,7 @@ | |||
| 				</div> | ||||
| 				<mk-poll v-if="appearNote.poll" :note="appearNote"/> | ||||
| 				<mk-url-preview v-for="url in urls" :url="url" :key="url" :detail="true"/> | ||||
| 				<a class="location" v-if="appearNote.geo" :href="`https://maps.google.com/maps?q=${appearNote.geo.coordinates[1]},${appearNote.geo.coordinates[0]}`" target="_blank"><fa icon="map-marker-alt"/> {{ $t('location') }}</a> | ||||
| 				<a class="location" v-if="appearNote.geo" :href="`https://maps.google.com/maps?q=${appearNote.geo.coordinates[1]},${appearNote.geo.coordinates[0]}`" rel="noopener" target="_blank"><fa icon="map-marker-alt"/> {{ $t('location') }}</a> | ||||
| 				<div class="map" v-if="appearNote.geo" ref="map"></div> | ||||
| 				<div class="renote" v-if="appearNote.renote"> | ||||
| 					<mk-note-preview :note="appearNote.renote"/> | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ | |||
| 					</div> | ||||
| 					<mk-poll v-if="appearNote.poll" :note="appearNote" ref="pollViewer"/> | ||||
| 					<mk-url-preview v-for="url in urls" :url="url" :key="url" :compact="true"/> | ||||
| 					<a class="location" v-if="appearNote.geo" :href="`https://maps.google.com/maps?q=${appearNote.geo.coordinates[1]},${appearNote.geo.coordinates[0]}`" target="_blank"><fa icon="map-marker-alt"/> {{ $t('location') }}</a> | ||||
| 					<a class="location" v-if="appearNote.geo" :href="`https://maps.google.com/maps?q=${appearNote.geo.coordinates[1]},${appearNote.geo.coordinates[0]}`" rel="noopener" target="_blank"><fa icon="map-marker-alt"/> {{ $t('location') }}</a> | ||||
| 					<div class="renote" v-if="appearNote.renote"><mk-note-preview :note="appearNote.renote"/></div> | ||||
| 				</div> | ||||
| 				<span class="app" v-if="appearNote.app && $store.state.settings.showVia">via <b>{{ appearNote.app.name }}</b></span> | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ | |||
| 	</template> | ||||
| 	<div class="wwtwuxyh" v-if="!fetching"> | ||||
| 		<div class="is-suspended" v-if="user.isSuspended"><p><fa icon="exclamation-triangle"/> {{ $t('@.user-suspended') }}</p></div> | ||||
| 		<div class="is-remote" v-if="user.host != null"><p><fa icon="exclamation-triangle"/> {{ $t('@.is-remote-user') }}<a :href="user.url" target="_blank">{{ $t('@.view-on-remote') }}</a></p></div> | ||||
| 		<div class="is-remote" v-if="user.host != null"><p><fa icon="exclamation-triangle"/> {{ $t('@.is-remote-user') }}<a :href="user.url" rel="nofollow noopener" target="_blank">{{ $t('@.view-on-remote') }}</a></p></div> | ||||
| 		<header> | ||||
| 			<div class="banner" :style="style"></div> | ||||
| 			<div class="body"> | ||||
|  |  | |||
|  | @ -6,4 +6,4 @@ block main | |||
| block footer | ||||
| 	p | ||||
| 		= i18n('docs.edit-this-page-on-github') | ||||
| 		a(href=src target="_blank")= i18n('docs.edit-this-page-on-github-link') | ||||
| 		a(href=src rel="noopener" target="_blank")= i18n('docs.edit-this-page-on-github-link') | ||||
|  |  | |||
|  | @ -26,6 +26,9 @@ block meta | |||
| 	meta(name='twitter:card' content='summary') | ||||
| 
 | ||||
| 	// todo | ||||
| 	if user.host | ||||
| 		meta(name='robots' content='noindex') | ||||
| 
 | ||||
| 	if user.twitter | ||||
| 		meta(name='twitter:creator' content=`@${user.twitter.screenName}`) | ||||
| 
 | ||||
|  |  | |||
|  | @ -24,6 +24,9 @@ block meta | |||
| 
 | ||||
| 	meta(name='twitter:card' content='summary') | ||||
| 
 | ||||
| 	if user.host | ||||
| 		meta(name='robots' content='noindex') | ||||
| 
 | ||||
| 	if profile.twitter | ||||
| 		meta(name='twitter:creator' content=`@${profile.twitter.screenName}`) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue