管理画面でreCAPTCHAのプレビューを表示するように
This commit is contained in:
		
							parent
							
								
									183c82fb8d
								
							
						
					
					
						commit
						70d710c9a9
					
				
					 2 changed files with 35 additions and 2 deletions
				
			
		|  | @ -1253,8 +1253,9 @@ admin/views/instance.vue: | ||||||
|   recaptcha-config: "reCAPTCHAの設定" |   recaptcha-config: "reCAPTCHAの設定" | ||||||
|   recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。" |   recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。" | ||||||
|   enable-recaptcha: "reCAPTCHAを有効にする" |   enable-recaptcha: "reCAPTCHAを有効にする" | ||||||
|   recaptcha-site-key: "reCAPTCHA site key" |   recaptcha-site-key: "サイトキー" | ||||||
|   recaptcha-secret-key: "reCAPTCHA secret key" |   recaptcha-secret-key: "シークレットキー" | ||||||
|  |   recaptcha-preview: "プレビュー" | ||||||
|   hidden-tags: "非表示ハッシュタグ" |   hidden-tags: "非表示ハッシュタグ" | ||||||
|   hidden-tags-info: "集計から除外するハッシュタグを改行で区切って記述します。" |   hidden-tags-info: "集計から除外するハッシュタグを改行で区切って記述します。" | ||||||
|   external-service-integration-config: "外部サービス連携" |   external-service-integration-config: "外部サービス連携" | ||||||
|  |  | ||||||
|  | @ -165,6 +165,10 @@ | ||||||
| 				</ui-horizon-group> | 				</ui-horizon-group> | ||||||
| 			</template> | 			</template> | ||||||
| 		</section> | 		</section> | ||||||
|  | 		<section v-if="enableRecaptcha && recaptchaSiteKey"> | ||||||
|  | 			<header>{{ $t('recaptcha-preview') }}</header> | ||||||
|  | 			<div ref="recaptcha" style="margin: 16px 0 0 0;" :key="recaptchaSiteKey"></div> | ||||||
|  | 		</section> | ||||||
| 		<section> | 		<section> | ||||||
| 			<ui-button @click="updateMeta"><fa :icon="faSave"/> {{ $t('save') }}</ui-button> | 			<ui-button @click="updateMeta"><fa :icon="faSave"/> {{ $t('save') }}</ui-button> | ||||||
| 		</section> | 		</section> | ||||||
|  | @ -376,6 +380,34 @@ export default Vue.extend({ | ||||||
| 		}); | 		}); | ||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
|  | 	mounted() { | ||||||
|  | 		const renderRecaptchaPreview = () => { | ||||||
|  | 			if (!(window as any).grecaptcha) return; | ||||||
|  | 			if (!this.$refs.recaptcha) return; | ||||||
|  | 			if (!this.recaptchaSiteKey) return; | ||||||
|  | 			(window as any).grecaptcha.render(this.$refs.recaptcha, { | ||||||
|  | 				sitekey: this.recaptchaSiteKey | ||||||
|  | 			}); | ||||||
|  | 		}; | ||||||
|  | 
 | ||||||
|  | 		window.onRecaotchaLoad = () => { | ||||||
|  | 			renderRecaptchaPreview(); | ||||||
|  | 		}; | ||||||
|  | 
 | ||||||
|  | 		const head = document.getElementsByTagName('head')[0]; | ||||||
|  | 		const script = document.createElement('script'); | ||||||
|  | 		script.setAttribute('src', 'https://www.google.com/recaptcha/api.js?onload=onRecaotchaLoad'); | ||||||
|  | 		head.appendChild(script); | ||||||
|  | 
 | ||||||
|  | 		this.$watch('enableRecaptcha', () => { | ||||||
|  | 			renderRecaptchaPreview(); | ||||||
|  | 		}); | ||||||
|  | 
 | ||||||
|  | 		this.$watch('recaptchaSiteKey', () => { | ||||||
|  | 			renderRecaptchaPreview(); | ||||||
|  | 		}); | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
| 	methods: { | 	methods: { | ||||||
| 		invite() { | 		invite() { | ||||||
| 			this.$root.api('admin/invite').then(x => { | 			this.$root.api('admin/invite').then(x => { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue