mirror of
https://github.com/wassname/talk.git
synced 2026-06-30 18:16:50 +08:00
Merge branch 'master' into update-readme
This commit is contained in:
@@ -5,6 +5,7 @@ import styles from './NotFound.css';
|
||||
import { Button, TextField, Alert, Success } from 'coral-ui';
|
||||
import Recaptcha from 'react-recaptcha';
|
||||
import cn from 'classnames';
|
||||
import t from 'coral-framework/services/i18n';
|
||||
|
||||
class AdminLogin extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -41,13 +42,13 @@ class AdminLogin extends React.Component {
|
||||
{errorMessage && <Alert>{errorMessage}</Alert>}
|
||||
<TextField
|
||||
id="email"
|
||||
label="Email Address"
|
||||
label={t('login.email_address')}
|
||||
value={this.state.email}
|
||||
onChange={e => this.setState({ email: e.target.value })}
|
||||
/>
|
||||
<TextField
|
||||
id="password"
|
||||
label="Password"
|
||||
label={t('login.password')}
|
||||
value={this.state.password}
|
||||
onChange={e => this.setState({ password: e.target.value })}
|
||||
type="password"
|
||||
@@ -60,10 +61,10 @@ class AdminLogin extends React.Component {
|
||||
full
|
||||
onClick={this.handleSignIn}
|
||||
>
|
||||
Sign In
|
||||
{t('login.sign_in_button')}
|
||||
</Button>
|
||||
<p className={styles.forgotPasswordCTA}>
|
||||
Forgot your password?{' '}
|
||||
{t('login.forgot_password')}{' '}
|
||||
<a
|
||||
href="#"
|
||||
className={styles.forgotPasswordLink}
|
||||
@@ -72,7 +73,7 @@ class AdminLogin extends React.Component {
|
||||
this.setState({ requestPassword: true });
|
||||
}}
|
||||
>
|
||||
Request a new one.
|
||||
{t('login.request_passowrd')}
|
||||
</a>
|
||||
</p>
|
||||
{loginMaxExceeded && (
|
||||
@@ -95,14 +96,14 @@ class AdminLogin extends React.Component {
|
||||
>
|
||||
{this.props.passwordRequestSuccess}{' '}
|
||||
<a className={styles.signInLink} href="#">
|
||||
Sign in
|
||||
{t('login.sign_in')}
|
||||
</a>
|
||||
<Success />
|
||||
</p>
|
||||
) : (
|
||||
<form onSubmit={this.handleRequestPassword}>
|
||||
<TextField
|
||||
label="Email Address"
|
||||
label={t('login.email_address')}
|
||||
value={this.state.email}
|
||||
onChange={e => this.setState({ email: e.target.value })}
|
||||
/>
|
||||
@@ -112,17 +113,15 @@ class AdminLogin extends React.Component {
|
||||
full
|
||||
onClick={this.handleRequestPassword}
|
||||
>
|
||||
Reset Password
|
||||
{t('login.reset_password')}
|
||||
</Button>
|
||||
</form>
|
||||
);
|
||||
return (
|
||||
<Layout fixedDrawer restricted={true}>
|
||||
<div className={cn(styles.loginLayout, 'talk-admin-login')}>
|
||||
<h1 className={styles.loginHeader}>Team sign in</h1>
|
||||
<p className={styles.loginCTA}>
|
||||
Sign in to interact with your community.
|
||||
</p>
|
||||
<h1 className={styles.loginHeader}>{t('login.team_sign_in')}</h1>
|
||||
<p className={styles.loginCTA}>{t('login.sign_in_message')}</p>
|
||||
{this.state.requestPassword ? requestPasswordForm : signInForm}
|
||||
</div>
|
||||
</Layout>
|
||||
|
||||
@@ -43,21 +43,21 @@ class ForgotPassword extends React.Component {
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
{errorMessage && <Alert>{errorMessage}</Alert>}
|
||||
<TextField
|
||||
label="Email Address"
|
||||
label={t('login.email_address')}
|
||||
value={email}
|
||||
onChange={this.handleEmailChange}
|
||||
/>
|
||||
<Button type="submit" cStyle="black" full>
|
||||
Reset Password
|
||||
{t('login.reset_password')}
|
||||
</Button>
|
||||
<p className={styles.cta}>
|
||||
Go back to{' '}
|
||||
{t('login.go_back')}{' '}
|
||||
<a
|
||||
href="#"
|
||||
className={styles.signInLink}
|
||||
onClick={this.handleSignInLink}
|
||||
>
|
||||
Sign In
|
||||
{t('login.sign_in')}
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
|
||||
@@ -92,7 +92,7 @@ const CoralHeader = ({
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
View latest version
|
||||
{t('configure.view_last_version')}
|
||||
</a>
|
||||
</MenuItem>
|
||||
<MenuItem>
|
||||
@@ -101,7 +101,7 @@ const CoralHeader = ({
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
Report a bug or give feedback
|
||||
{t('configure.report_bug_or_feedback')}
|
||||
</a>
|
||||
</MenuItem>
|
||||
{currentUser && (
|
||||
|
||||
@@ -5,6 +5,7 @@ import PropTypes from 'prop-types';
|
||||
import styles from './Login.css';
|
||||
import Layout from 'coral-admin/src/components/Layout';
|
||||
import cn from 'classnames';
|
||||
import t from 'coral-framework/services/i18n';
|
||||
|
||||
class LoginContainer extends Component {
|
||||
renderForm() {
|
||||
@@ -19,8 +20,8 @@ class LoginContainer extends Component {
|
||||
return (
|
||||
<Layout fixedDrawer restricted={true}>
|
||||
<div className={cn(styles.layout, 'talk-admin-login')}>
|
||||
<h1 className={styles.header}>Team sign in</h1>
|
||||
<p className={styles.cta}>Sign in to interact with your community.</p>
|
||||
<h1 className={styles.header}>{t('login.team_sign_in')}</h1>
|
||||
<p className={styles.cta}>{t('login.sign_in_message')}</p>
|
||||
{this.renderForm()}
|
||||
</div>
|
||||
</Layout>
|
||||
|
||||
@@ -5,6 +5,7 @@ import { Button, TextField, Alert } from 'coral-ui';
|
||||
import cn from 'classnames';
|
||||
import Recaptcha from 'coral-framework/components/Recaptcha';
|
||||
import External from './External';
|
||||
import t from 'coral-framework/services/i18n';
|
||||
|
||||
class SignIn extends React.Component {
|
||||
recaptcha = null;
|
||||
@@ -40,13 +41,13 @@ class SignIn extends React.Component {
|
||||
{errorMessage && <Alert>{errorMessage}</Alert>}
|
||||
<TextField
|
||||
id="email"
|
||||
label="Email Address"
|
||||
label={t('login.email_address')}
|
||||
value={email}
|
||||
onChange={this.handleEmailChange}
|
||||
/>
|
||||
<TextField
|
||||
id="password"
|
||||
label="Password"
|
||||
label={t('login.password')}
|
||||
value={password}
|
||||
onChange={this.handlePasswordChange}
|
||||
type="password"
|
||||
@@ -68,17 +69,17 @@ class SignIn extends React.Component {
|
||||
cStyle="black"
|
||||
full
|
||||
>
|
||||
Sign In
|
||||
{t('login.sign_in')}
|
||||
</Button>
|
||||
<p className={styles.forgotPasswordCTA}>
|
||||
{/* TODO: translate */}
|
||||
Forgot your password?{' '}
|
||||
{t('login.forgot_password')}{' '}
|
||||
<a
|
||||
href="#"
|
||||
className={styles.forgotPasswordLink}
|
||||
onClick={this.handleForgotPasswordLink}
|
||||
>
|
||||
Request a new one.
|
||||
{t('login.request_passowrd')}
|
||||
</a>
|
||||
</p>
|
||||
</form>
|
||||
|
||||
@@ -34,7 +34,7 @@ class EmbedLink extends Component {
|
||||
`;
|
||||
|
||||
return (
|
||||
<ConfigureCard title={'Embed Comment Stream'}>
|
||||
<ConfigureCard title={t('configure.embed_comment_stream')}>
|
||||
<p>{t('configure.copy_and_paste')}</p>
|
||||
<textarea
|
||||
rows={5}
|
||||
|
||||
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
|
||||
import styles from './StorySearch.css';
|
||||
import { Button, Spinner, Icon } from 'coral-ui';
|
||||
import Story from './Story';
|
||||
import t from 'coral-framework/services/i18n';
|
||||
|
||||
const StorySearch = props => {
|
||||
const {
|
||||
@@ -36,14 +37,14 @@ const StorySearch = props => {
|
||||
onClick={props.search}
|
||||
raised
|
||||
>
|
||||
Search
|
||||
{t('streams.search')}
|
||||
</Button>
|
||||
</div>
|
||||
<div className={styles.results}>
|
||||
{props.assetId && (
|
||||
<div className={styles.cta}>
|
||||
<a onClick={props.goToModerateAll}>
|
||||
Moderate comments on All Stories
|
||||
{t('moderate_all_streams')}
|
||||
</a>
|
||||
</div>
|
||||
)}
|
||||
@@ -51,13 +52,15 @@ const StorySearch = props => {
|
||||
{props.moderation.storySearchString ? (
|
||||
<div className={styles.searchResults}>
|
||||
<Icon name="search" />
|
||||
<span className={styles.headlineRecent}>Search Results</span>
|
||||
<span className={styles.headlineRecent}>
|
||||
{t('streams.search_results')}
|
||||
</span>
|
||||
</div>
|
||||
) : (
|
||||
<div className={styles.searchResults}>
|
||||
<Icon name="access_time" />
|
||||
<span className={styles.headlineRecent}>
|
||||
Most Recent Stories
|
||||
{t('streams.most_recent_stories')}
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
@@ -85,7 +88,9 @@ const StorySearch = props => {
|
||||
)}
|
||||
|
||||
{assets.nodes.length === 0 && (
|
||||
<div className={styles.noResults}>No results</div>
|
||||
<div className={styles.noResults}>
|
||||
{t('streams.search_results')}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -140,7 +140,6 @@ de:
|
||||
open_stream: 'Kommentarbereich öffnen'
|
||||
open_stream_configuration: 'Dieser Kommentarbereich ist momentan geöffnet. Nach dem Schließen dieses Kommentarbereich wird es nicht mehr möglich sein, zu kommentieren. Bestehende Kommentare bleiben sichtbar.'
|
||||
organization_contact_email: 'E-Mail-Adresse der Organisation'
|
||||
organization_details: 'Details zur Organisation'
|
||||
organization_info_copy: 'Wir verwenden diese Informationen in automatisierten E-Mail-Benachrichtigungen, die Talk versendet. Damit können Nutzer Ihre Organisation identifizieren und sie haben die Möglichkeit bei Problemen in Kontakt mit Ihnen zu treten.'
|
||||
organization_info_copy_2: 'Wir empfehlen, einee generische E-Mail-Adresse (z.B. community@yournewsroom.com) für diesen Zweck einzurichten. Die kann über die Zeit gleich bleiben, und gibt nach außen keine Namen preis, die von Nutzern im Fall von Konflikten für persönliche Angriffe missbraucht werden könnten.'
|
||||
organization_information: 'Über die Organisation'
|
||||
|
||||
+17
-2
@@ -119,7 +119,7 @@ en:
|
||||
edit_comment_timeframe_text_post: 'seconds to edit their comments.'
|
||||
edit_comment_timeframe_text_pre: 'Commenters will have'
|
||||
edit_info: 'Edit Info'
|
||||
embed_comment_stream: 'Embed Stream'
|
||||
embed_comment_stream: 'Embed Comment Stream'
|
||||
enable_pre_moderation: 'Enable pre-moderation'
|
||||
enable_pre_moderation_text: 'Moderators must approve any comment before it is published.'
|
||||
enable_premod: 'Enable Premoderation'
|
||||
@@ -140,11 +140,11 @@ en:
|
||||
open_stream: 'Open Stream'
|
||||
open_stream_configuration: 'This comment stream is currently open. By closing this comment stream no new comments may be submitted and all previous comments will still be displayed.'
|
||||
organization_contact_email: 'Organization Contact Email'
|
||||
organization_details: 'Organization Details'
|
||||
organization_info_copy: 'We use this information in email notifications generated by Talk. This connects the messages to your organization, and provides a way for users to contact you if they have an issue with their account.'
|
||||
organization_info_copy_2: 'We recommend creating a generic email account (eg. community@yournewsroom.com) for this purpose. This means it can remain consistent over time, and doesn''t expose a name that users could target if their account were blocked.'
|
||||
organization_information: 'Organization Information'
|
||||
organization_name: 'Organization Name'
|
||||
report_bug_or_feedback: 'Report a bug or give feedback'
|
||||
require_email_verification: 'Require Email Verification'
|
||||
require_email_verification_text: 'New Users must verify their email before commenting'
|
||||
save: Save
|
||||
@@ -163,6 +163,7 @@ en:
|
||||
suspect_word_title: 'Suspect words list'
|
||||
tech_settings: 'Tech Settings'
|
||||
title: 'Configure Comment Stream'
|
||||
view_last_version: 'View latest version'
|
||||
weeks: Weeks
|
||||
wordlist: 'Banned Words'
|
||||
confirm_email:
|
||||
@@ -349,7 +350,18 @@ en:
|
||||
title: 'Permitted domains'
|
||||
like: Like
|
||||
loading_results: 'Loading Results'
|
||||
login:
|
||||
email_address: 'Email Address'
|
||||
forgot_password: 'Forgot your password?'
|
||||
go_back: 'Go back'
|
||||
sign_in: 'Sign In'
|
||||
sign_in_button: 'Sign Inx'
|
||||
sign_in_message: 'Sign in to interact with your community.'
|
||||
password: Password
|
||||
request_passowrd: 'Request a new one.'
|
||||
team_sign_in: 'Team sign in'
|
||||
marketing: 'This looks like an ad/marketing'
|
||||
moderate_all_streams: 'Moderate comments on All Stories'
|
||||
moderate_this_stream: 'Moderate this stream'
|
||||
modqueue:
|
||||
account: 'account flags'
|
||||
@@ -465,11 +477,14 @@ en:
|
||||
closed: Closed
|
||||
empty_result: 'No assets match this search. Maybe try widening your search?'
|
||||
filter_streams: 'Filter Streams'
|
||||
most_recent_stories: 'Most Recent Stories'
|
||||
newest: Newest
|
||||
no_results: 'No results'
|
||||
oldest: Oldest
|
||||
open: Open
|
||||
pubdate: 'Publication Date'
|
||||
search: Search
|
||||
search_results: 'Search Results'
|
||||
sort_by: 'Sort By'
|
||||
status: 'Stream Status'
|
||||
stream_status: 'Stream Status'
|
||||
|
||||
@@ -135,7 +135,6 @@ es:
|
||||
open_stream: 'Abrir Hilo de Comentarios'
|
||||
open_stream_configuration: 'Este hilo de comentarios está abierto. Al cerrarlo no se podrán publicar nuevos comentarios pero todos los comentarios anteriores aún serán mostrados.'
|
||||
organization_contact_email: 'Email de la Organización'
|
||||
organization_details: 'Detalles de la Organización'
|
||||
organization_info_copy: 'Nosotros usamos esta información en las notificaciones de email generadas por Talk. Esto conecta los mensajes de tu organización, y provee una forma para que los usuarios se comuniquen si tienen un inconveniente con su cuenta.'
|
||||
organization_info_copy_2: 'Recomendamos crear un email genérico (ej: community@yournewsroom.com) for this purpose. Esto significa que puede permanecer consistente con el tiempo y no expone un nombre que los usuarios puedan atacar si su cuenta fue bloqueada.'
|
||||
organization_information: 'Información de la Organización'
|
||||
|
||||
+28
-2
@@ -107,12 +107,15 @@ pt_BR:
|
||||
custom_css_url_desc: 'URL de uma folha de estilo CSS para substituir os estilos padrão dos comentários embutidos. Pode ser interno ou externo.'
|
||||
days: Dias
|
||||
description: 'Personalizar as configurações da lista de comentários para esta história.'
|
||||
disable_commenting_desc: 'Escreva uma mensagem que será exibida enquanto os comentários estiverem desativados.'
|
||||
disable_commenting_title: 'Desativar todos os comentários do site.'
|
||||
domain_list_text: 'Insira os domínios que você gostaria de permitir para o Talk, como seus ambientes de desenvolvimento, teste ou produção (ej. localhost:3000 staging.domain.com domain.com).'
|
||||
domain_list_title: 'Domínios permitidos'
|
||||
edit_comment_timeframe_heading: 'Período de tempo para editar comentários'
|
||||
edit_comment_timeframe_text_post: 'segundos para editar seus comentários.'
|
||||
edit_comment_timeframe_text_pre: 'Os usuários terão'
|
||||
embed_comment_stream: 'Comentários embutidos'
|
||||
edit_info: 'Alterar Informações'
|
||||
embed_comment_stream: 'Incorporar stream de comentários'
|
||||
enable_pre_moderation: 'Habilitar pré-moderação'
|
||||
enable_pre_moderation_text: 'Demandar aprovação de moderadores para todos os comentários.'
|
||||
enable_premod: 'Habilitar pré-moderação'
|
||||
@@ -132,8 +135,15 @@ pt_BR:
|
||||
open: Abrir
|
||||
open_stream: 'Abrir comentários'
|
||||
open_stream_configuration: 'Comentários abertos no momento. Ao fechar esta lista de comentários, nenhum novo comentário poderá ser enviado. Mas os comentários anteriores ainda serão exibidos.'
|
||||
organization_contact_email: 'Email da organização'
|
||||
organization_info_copy: 'Usamos essas informações em notificações de email geradas pelo Talk. Isso conecta as mensagens à sua organização e fornece uma maneira de os usuários entrarem em contato com você caso tenham um problema com a conta.'
|
||||
organization_info_copy_2: 'Recomendamos a criação de uma conta de e-mail genérica (por exemplo, comunidade@suaredacao.com) para essa finalidade. Isso significa que ele pode permanecer consistente ao longo do tempo e não expor um nome que os usuários pudessem segmentar se a conta fosse bloqueada.'
|
||||
organization_information: 'Informações da Organização'
|
||||
organization_name: 'Nome da Organização'
|
||||
report_bug_or_feedback: 'Relatar bug ou dar um feedback'
|
||||
require_email_verification: 'Requerer verificação de email'
|
||||
require_email_verification_text: 'Novos usuários devem verificar seu e-mail antes de comentar'
|
||||
save: Salvar
|
||||
save_changes: 'Salvar alterações'
|
||||
shortcuts: Atalhos
|
||||
sign_out: Sair
|
||||
@@ -143,12 +153,13 @@ pt_BR:
|
||||
suspect_word_title: 'Lista de palavras suspeitas'
|
||||
tech_settings: 'Configurações técnicas'
|
||||
title: 'Configurar comentários'
|
||||
view_last_version: 'Ver últimos releases'
|
||||
weeks: Semanas
|
||||
wordlist: 'Palavras Proibidas'
|
||||
confirm_email:
|
||||
click_to_confirm: 'Clique abaixo para confirmar seu endereço de email'
|
||||
confirm: Confirmar
|
||||
continue: Continua
|
||||
continue: Continuar
|
||||
createdisplay:
|
||||
check_the_form: 'Formulário inválido. Verifique as entradas do formulário.'
|
||||
continue: 'Continue com o mesmo nome de usuário do Facebook'
|
||||
@@ -284,7 +295,18 @@ pt_BR:
|
||||
title: 'Domínios permitidos'
|
||||
like: Gostar
|
||||
loading_results: 'Carregando resultados'
|
||||
login:
|
||||
email_address: 'Email'
|
||||
forgot_password: 'Esqueceu sua senha?'
|
||||
go_back: 'Voltar'
|
||||
sign_in: 'Entrar'
|
||||
sign_in_button: 'Entrar'
|
||||
sign_in_message: 'Entre para interagir com a comunidade.'
|
||||
password: Senha
|
||||
request_passowrd: 'Recupere-a clicando aqui.'
|
||||
team_sign_in: 'Team sign in'
|
||||
marketing: 'Isso parece um anúncio/marketing'
|
||||
moderate_all_streams: 'Comentários moderados em todas as matérias'
|
||||
moderate_this_stream: 'Moderar comentários'
|
||||
modqueue:
|
||||
account: 'contas marcadas'
|
||||
@@ -319,6 +341,7 @@ pt_BR:
|
||||
prev_comment: 'Vá para o comentário anterior'
|
||||
reject: Rejeitar
|
||||
rejected: Rejeitado
|
||||
reported: Reportado
|
||||
reply: Responder
|
||||
select_stream: 'Selecione a lista'
|
||||
shift_key: ⇧
|
||||
@@ -388,11 +411,14 @@ pt_BR:
|
||||
closed: Fechado
|
||||
empty_result: 'Nenhum resultado encontrado para esta pesquisa. Que tal refazer a pesquisa com termos diferentes?'
|
||||
filter_streams: 'Filtra as listas'
|
||||
most_recent_stories: 'Matérias mais recentes'
|
||||
newest: 'O mais novo'
|
||||
no_results: 'No results'
|
||||
oldest: 'O mais velho'
|
||||
open: Aberto
|
||||
pubdate: 'Data de publicação'
|
||||
search: Pesquisar
|
||||
search_results: 'Pesquisar Resultados'
|
||||
sort_by: 'Ordenar por'
|
||||
status: 'Situação dos comentários'
|
||||
stream_status: 'Situação dos comentários'
|
||||
|
||||
Reference in New Issue
Block a user