forked from mirrors/catstodon
Merge commit 'd97d31cce664281d868e4c661451687a301c97c8' into glitch-soc/merge-upstream
Conflicts: - `app/models/account.rb`: Upstream refactored this file a bit, moving validation limits to constants. We already had a similar change, although with different constant names. Updated to match upstream's code. The following files were also modified accordingly: - `app/views/settings/profiles/show.html.haml` - `spec/requests/api/v1/accounts/credentials_spec.rb`
This commit is contained in:
commit
f09f5b35f2
47 changed files with 622 additions and 476 deletions
|
@ -205,14 +205,6 @@ Style/SafeNavigation:
|
|||
Exclude:
|
||||
- 'app/models/concerns/account/finder_concern.rb'
|
||||
|
||||
# This cop supports safe autocorrection (--autocorrect).
|
||||
# Configuration parameters: EnforcedStyle.
|
||||
# SupportedStyles: only_raise, only_fail, semantic
|
||||
Style/SignalException:
|
||||
Exclude:
|
||||
- 'lib/devise/strategies/two_factor_ldap_authenticatable.rb'
|
||||
- 'lib/devise/strategies/two_factor_pam_authenticatable.rb'
|
||||
|
||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
||||
# Configuration parameters: Mode.
|
||||
Style/StringConcatenation:
|
||||
|
|
20
Gemfile.lock
20
Gemfile.lock
|
@ -102,17 +102,17 @@ GEM
|
|||
attr_required (1.0.2)
|
||||
awrence (1.2.1)
|
||||
aws-eventstream (1.3.0)
|
||||
aws-partitions (1.916.0)
|
||||
aws-sdk-core (3.192.1)
|
||||
aws-partitions (1.922.0)
|
||||
aws-sdk-core (3.194.0)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.651.0)
|
||||
aws-sigv4 (~> 1.8)
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-kms (1.79.0)
|
||||
aws-sdk-core (~> 3, >= 3.191.0)
|
||||
aws-sdk-kms (1.80.0)
|
||||
aws-sdk-core (~> 3, >= 3.193.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.147.0)
|
||||
aws-sdk-core (~> 3, >= 3.192.0)
|
||||
aws-sdk-s3 (1.149.0)
|
||||
aws-sdk-core (~> 3, >= 3.194.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.8)
|
||||
aws-sigv4 (1.8.0)
|
||||
|
@ -220,7 +220,7 @@ GEM
|
|||
domain_name (0.6.20240107)
|
||||
doorkeeper (5.6.9)
|
||||
railties (>= 5)
|
||||
dotenv (3.1.0)
|
||||
dotenv (3.1.1)
|
||||
drb (2.2.1)
|
||||
ed25519 (1.3.0)
|
||||
elasticsearch (7.13.3)
|
||||
|
@ -350,8 +350,8 @@ GEM
|
|||
activesupport (>= 3.0)
|
||||
nokogiri (>= 1.6)
|
||||
io-console (0.7.2)
|
||||
irb (1.12.0)
|
||||
rdoc
|
||||
irb (1.13.0)
|
||||
rdoc (>= 4.0.0)
|
||||
reline (>= 0.4.2)
|
||||
jmespath (1.6.2)
|
||||
json (2.7.2)
|
||||
|
@ -605,7 +605,7 @@ GEM
|
|||
redlock (1.3.2)
|
||||
redis (>= 3.0.0, < 6.0)
|
||||
regexp_parser (2.9.0)
|
||||
reline (0.5.2)
|
||||
reline (0.5.4)
|
||||
io-console (~> 0.5)
|
||||
request_store (1.6.0)
|
||||
rack (>= 1.4)
|
||||
|
|
|
@ -25,6 +25,8 @@ class Admin::DomainAllowsController < Admin::BaseController
|
|||
def destroy
|
||||
authorize @domain_allow, :destroy?
|
||||
UnallowDomainService.new.call(@domain_allow)
|
||||
log_action :destroy, @domain_allow
|
||||
|
||||
redirect_to admin_instances_path, notice: I18n.t('admin.domain_allows.destroyed_msg')
|
||||
end
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import PersonIcon from '@/material-icons/400-24px/person.svg?react';
|
|||
import SmartToyIcon from '@/material-icons/400-24px/smart_toy.svg?react';
|
||||
|
||||
|
||||
export const Badge = ({ icon, label, domain, roleId }) => (
|
||||
export const Badge = ({ icon = <PersonIcon />, label, domain, roleId }) => (
|
||||
<div className='account-role' data-account-role-id={roleId}>
|
||||
{icon}
|
||||
{label}
|
||||
|
@ -22,10 +22,6 @@ Badge.propTypes = {
|
|||
roleId: PropTypes.string
|
||||
};
|
||||
|
||||
Badge.defaultProps = {
|
||||
icon: <PersonIcon />,
|
||||
};
|
||||
|
||||
export const GroupBadge = () => (
|
||||
<Badge icon={<GroupsIcon />} label={<FormattedMessage id='account.badges.group' defaultMessage='Group' />} />
|
||||
);
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
import PropTypes from 'prop-types';
|
||||
import { useCallback } from 'react';
|
||||
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
|
||||
import FindInPageIcon from '@/material-icons/400-24px/find_in_page.svg?react';
|
||||
import PeopleIcon from '@/material-icons/400-24px/group.svg?react';
|
||||
import TagIcon from '@/material-icons/400-24px/tag.svg?react';
|
||||
import { expandSearch } from 'mastodon/actions/search';
|
||||
import { Icon } from 'mastodon/components/icon';
|
||||
import { LoadMore } from 'mastodon/components/load_more';
|
||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
|
||||
import { SearchSection } from 'mastodon/features/explore/components/search_section';
|
||||
import { useAppDispatch, useAppSelector } from 'mastodon/store';
|
||||
|
||||
import { ImmutableHashtag as Hashtag } from '../../../components/hashtag';
|
||||
import AccountContainer from '../../../containers/account_container';
|
||||
|
@ -26,62 +26,68 @@ const withoutLastResult = list => {
|
|||
}
|
||||
};
|
||||
|
||||
class SearchResults extends ImmutablePureComponent {
|
||||
export const SearchResults = () => {
|
||||
const results = useAppSelector((state) => state.getIn(['search', 'results']));
|
||||
const isLoading = useAppSelector((state) => state.getIn(['search', 'isLoading']));
|
||||
|
||||
static propTypes = {
|
||||
results: ImmutablePropTypes.map.isRequired,
|
||||
expandSearch: PropTypes.func.isRequired,
|
||||
searchTerm: PropTypes.string,
|
||||
};
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
handleLoadMoreAccounts = () => this.props.expandSearch('accounts');
|
||||
const handleLoadMoreAccounts = useCallback(() => {
|
||||
dispatch(expandSearch('accounts'));
|
||||
}, [dispatch]);
|
||||
|
||||
handleLoadMoreStatuses = () => this.props.expandSearch('statuses');
|
||||
const handleLoadMoreStatuses = useCallback(() => {
|
||||
dispatch(expandSearch('statuses'));
|
||||
}, [dispatch]);
|
||||
|
||||
handleLoadMoreHashtags = () => this.props.expandSearch('hashtags');
|
||||
const handleLoadMoreHashtags = useCallback(() => {
|
||||
dispatch(expandSearch('hashtags'));
|
||||
}, [dispatch]);
|
||||
|
||||
render () {
|
||||
const { results } = this.props;
|
||||
let accounts, statuses, hashtags;
|
||||
|
||||
let accounts, statuses, hashtags;
|
||||
|
||||
if (results.get('accounts') && results.get('accounts').size > 0) {
|
||||
accounts = (
|
||||
<SearchSection title={<><Icon id='users' icon={PeopleIcon} /><FormattedMessage id='search_results.accounts' defaultMessage='Profiles' /></>}>
|
||||
{withoutLastResult(results.get('accounts')).map(accountId => <AccountContainer key={accountId} id={accountId} />)}
|
||||
{(results.get('accounts').size > INITIAL_PAGE_LIMIT && results.get('accounts').size % INITIAL_PAGE_LIMIT === 1) && <LoadMore visible onClick={this.handleLoadMoreAccounts} />}
|
||||
</SearchSection>
|
||||
);
|
||||
}
|
||||
|
||||
if (results.get('hashtags') && results.get('hashtags').size > 0) {
|
||||
hashtags = (
|
||||
<SearchSection title={<><Icon id='hashtag' icon={TagIcon} /><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></>}>
|
||||
{withoutLastResult(results.get('hashtags')).map(hashtag => <Hashtag key={hashtag.get('name')} hashtag={hashtag} />)}
|
||||
{(results.get('hashtags').size > INITIAL_PAGE_LIMIT && results.get('hashtags').size % INITIAL_PAGE_LIMIT === 1) && <LoadMore visible onClick={this.handleLoadMoreHashtags} />}
|
||||
</SearchSection>
|
||||
);
|
||||
}
|
||||
|
||||
if (results.get('statuses') && results.get('statuses').size > 0) {
|
||||
statuses = (
|
||||
<SearchSection title={<><Icon id='quote-right' icon={FindInPageIcon} /><FormattedMessage id='search_results.statuses' defaultMessage='Posts' /></>}>
|
||||
{withoutLastResult(results.get('statuses')).map(statusId => <StatusContainer key={statusId} id={statusId} />)}
|
||||
{(results.get('statuses').size > INITIAL_PAGE_LIMIT && results.get('statuses').size % INITIAL_PAGE_LIMIT === 1) && <LoadMore visible onClick={this.handleLoadMoreStatuses} />}
|
||||
</SearchSection>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
return (
|
||||
<div className='search-results'>
|
||||
{accounts}
|
||||
{hashtags}
|
||||
{statuses}
|
||||
</div>
|
||||
if (results.get('accounts') && results.get('accounts').size > 0) {
|
||||
accounts = (
|
||||
<SearchSection title={<><Icon id='users' icon={PeopleIcon} /><FormattedMessage id='search_results.accounts' defaultMessage='Profiles' /></>}>
|
||||
{withoutLastResult(results.get('accounts')).map(accountId => <AccountContainer key={accountId} id={accountId} />)}
|
||||
{(results.get('accounts').size > INITIAL_PAGE_LIMIT && results.get('accounts').size % INITIAL_PAGE_LIMIT === 1) && <LoadMore visible onClick={handleLoadMoreAccounts} />}
|
||||
</SearchSection>
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
if (results.get('hashtags') && results.get('hashtags').size > 0) {
|
||||
hashtags = (
|
||||
<SearchSection title={<><Icon id='hashtag' icon={TagIcon} /><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></>}>
|
||||
{withoutLastResult(results.get('hashtags')).map(hashtag => <Hashtag key={hashtag.get('name')} hashtag={hashtag} />)}
|
||||
{(results.get('hashtags').size > INITIAL_PAGE_LIMIT && results.get('hashtags').size % INITIAL_PAGE_LIMIT === 1) && <LoadMore visible onClick={handleLoadMoreHashtags} />}
|
||||
</SearchSection>
|
||||
);
|
||||
}
|
||||
|
||||
export default SearchResults;
|
||||
if (results.get('statuses') && results.get('statuses').size > 0) {
|
||||
statuses = (
|
||||
<SearchSection title={<><Icon id='quote-right' icon={FindInPageIcon} /><FormattedMessage id='search_results.statuses' defaultMessage='Posts' /></>}>
|
||||
{withoutLastResult(results.get('statuses')).map(statusId => <StatusContainer key={statusId} id={statusId} />)}
|
||||
{(results.get('statuses').size > INITIAL_PAGE_LIMIT && results.get('statuses').size % INITIAL_PAGE_LIMIT === 1) && <LoadMore visible onClick={handleLoadMoreStatuses} />}
|
||||
</SearchSection>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className='search-results'>
|
||||
{!accounts && !hashtags && !statuses && (
|
||||
isLoading ? (
|
||||
<LoadingIndicator />
|
||||
) : (
|
||||
<div className='empty-column-indicator'>
|
||||
<FormattedMessage id='search_results.nothing_found' defaultMessage='Could not find anything for these search terms' />
|
||||
</div>
|
||||
)
|
||||
)}
|
||||
{accounts}
|
||||
{hashtags}
|
||||
{statuses}
|
||||
</div>
|
||||
);
|
||||
|
||||
};
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
import { connect } from 'react-redux';
|
||||
|
||||
import { expandSearch } from 'mastodon/actions/search';
|
||||
import { fetchSuggestions, dismissSuggestion } from 'mastodon/actions/suggestions';
|
||||
|
||||
import SearchResults from '../components/search_results';
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
results: state.getIn(['search', 'results']),
|
||||
suggestions: state.getIn(['suggestions', 'items']),
|
||||
searchTerm: state.getIn(['search', 'searchTerm']),
|
||||
});
|
||||
|
||||
const mapDispatchToProps = dispatch => ({
|
||||
fetchSuggestions: () => dispatch(fetchSuggestions()),
|
||||
expandSearch: type => dispatch(expandSearch(type)),
|
||||
dismissSuggestion: account => dispatch(dismissSuggestion(account.get('id'))),
|
||||
});
|
||||
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(SearchResults);
|
|
@ -29,9 +29,9 @@ import { mascot } from '../../initial_state';
|
|||
import { isMobile } from '../../is_mobile';
|
||||
import Motion from '../ui/util/optional_motion';
|
||||
|
||||
import { SearchResults } from './components/search_results';
|
||||
import ComposeFormContainer from './containers/compose_form_container';
|
||||
import SearchContainer from './containers/search_container';
|
||||
import SearchResultsContainer from './containers/search_results_container';
|
||||
|
||||
const messages = defineMessages({
|
||||
start: { id: 'getting_started.heading', defaultMessage: 'Getting started' },
|
||||
|
@ -138,7 +138,7 @@ class Compose extends PureComponent {
|
|||
<Motion defaultStyle={{ x: -100 }} style={{ x: spring(showSearch ? 0 : -100, { stiffness: 210, damping: 20 }) }}>
|
||||
{({ x }) => (
|
||||
<div className='drawer__inner darker' style={{ transform: `translateX(${x}%)`, visibility: x === -100 ? 'hidden' : 'visible' }}>
|
||||
<SearchResultsContainer />
|
||||
<SearchResults />
|
||||
</div>
|
||||
)}
|
||||
</Motion>
|
||||
|
|
|
@ -89,6 +89,14 @@
|
|||
"announcement.announcement": "Cyhoeddiad",
|
||||
"attachments_list.unprocessed": "(heb eu prosesu)",
|
||||
"audio.hide": "Cuddio sain",
|
||||
"block_modal.remote_users_caveat": "Byddwn yn gofyn i'r gweinydd {domain} barchu eich penderfyniad. Fodd bynnag, nid yw cydymffurfiad wedi'i warantu gan y gall rhai gweinyddwyr drin rhwystro mewn ffyrdd gwahanol. Mae'n bosibl y bydd postiadau cyhoeddus yn dal i fod yn weladwy i ddefnyddwyr nad ydynt wedi mewngofnodi.",
|
||||
"block_modal.show_less": "Dangos llai",
|
||||
"block_modal.show_more": "Dangos mwy",
|
||||
"block_modal.they_cant_mention": "Nid ydynt yn gallu eich crybwyll na'ch dilyn.",
|
||||
"block_modal.they_cant_see_posts": "Nid ydynt yn gallu gweld eich postiadau ac ni fyddwch yn gweld eu rhai hwy.",
|
||||
"block_modal.they_will_know": "Gallant weld eu bod wedi'u rhwystro.",
|
||||
"block_modal.title": "Rhwystro defnyddiwr?",
|
||||
"block_modal.you_wont_see_mentions": "Ni welwch bostiadau sy'n sôn amdanynt.",
|
||||
"boost_modal.combo": "Mae modd pwyso {combo} er mwyn hepgor hyn tro nesa",
|
||||
"bundle_column_error.copy_stacktrace": "Copïo'r adroddiad gwall",
|
||||
"bundle_column_error.error.body": "Nid oedd modd cynhyrchu'r dudalen honno. Gall fod oherwydd gwall yn ein cod neu fater cydnawsedd porwr.",
|
||||
|
@ -169,6 +177,7 @@
|
|||
"confirmations.delete_list.message": "Ydych chi'n siŵr eich bod eisiau dileu'r rhestr hwn am byth?",
|
||||
"confirmations.discard_edit_media.confirm": "Dileu",
|
||||
"confirmations.discard_edit_media.message": "Mae gennych newidiadau heb eu cadw i'r disgrifiad cyfryngau neu'r rhagolwg - eu dileu beth bynnag?",
|
||||
"confirmations.domain_block.confirm": "Rhwystro gweinydd",
|
||||
"confirmations.domain_block.message": "Ydych chi wir, wir eisiau blocio'r holl {domain}? Fel arfer, mae blocio neu dewi pobl penodol yn broses mwy effeithiol. Fyddwch chi ddim yn gweld cynnwys o'r parth hwnnw mewn ffrydiau cyhoeddus neu yn eich hysbysiadau. Bydd eich dilynwyr o'r parth hwnnw yn cael eu ddileu.",
|
||||
"confirmations.edit.confirm": "Golygu",
|
||||
"confirmations.edit.message": "Bydd golygu nawr yn trosysgrifennu'r neges rydych yn ei ysgrifennu ar hyn o bryd. Ydych chi'n siŵr eich bod eisiau gwneud hyn?",
|
||||
|
@ -200,6 +209,27 @@
|
|||
"dismissable_banner.explore_statuses": "Mae'r rhain yn bostiadau o bob rhan o'r we gymdeithasol sydd ar gynnydd heddiw. Mae postiadau mwy diweddar sydd â mwy o hybiau a ffefrynu'n cael eu graddio'n uwch.",
|
||||
"dismissable_banner.explore_tags": "Mae'r rhain yn hashnodau sydd ar gynnydd ar y we gymdeithasol heddiw. Mae hashnodau sy'n cael eu defnyddio gan fwy o unigolion gwahanol yn cael eu graddio'n uwch.",
|
||||
"dismissable_banner.public_timeline": "Dyma'r postiadau cyhoeddus diweddaraf gan bobl ar y we gymdeithasol y mae pobl ar {domain} yn eu dilyn.",
|
||||
"domain_block_modal.block": "Rhwystro gweinydd",
|
||||
"domain_block_modal.block_account_instead": "Rhwystro @{name} yn lle hynny",
|
||||
"domain_block_modal.they_can_interact_with_old_posts": "Gall pobl o'r gweinydd hwn ryngweithio â'ch hen bostiadau.",
|
||||
"domain_block_modal.they_cant_follow": "Ni all neb o'r gweinydd hwn eich dilyn.",
|
||||
"domain_block_modal.they_wont_know": "Fyddan nhw ddim yn gwybod eu bod wedi cael eu rhwystro.",
|
||||
"domain_block_modal.title": "Rhwystro parth?",
|
||||
"domain_block_modal.you_will_lose_followers": "Bydd eich holl ddilynwyr o'r gweinydd hwn yn cael eu tynnu.",
|
||||
"domain_block_modal.you_wont_see_posts": "Fyddwch chi ddim yn gweld postiadau na hysbysiadau gan ddefnyddwyr ar y gweinydd hwn.",
|
||||
"domain_pill.activitypub_lets_connect": "Mae'n caniatáu ichi gysylltu a rhyngweithio â phobl nid yn unig ar Mastodon, ond ar draws gwahanol apiau cymdeithasol hefyd.",
|
||||
"domain_pill.activitypub_like_language": "Mae ActivityPub fel yr iaith y mae Mastodon yn ei siarad â rhwydweithiau cymdeithasol eraill.",
|
||||
"domain_pill.server": "Gweinydd",
|
||||
"domain_pill.their_handle": "Eu handlen:",
|
||||
"domain_pill.their_server": "Eu cartref digidol, lle mae eu holl negeseuon yn byw.",
|
||||
"domain_pill.their_username": "Eu dynodwr unigryw ar eu gweinydd. Mae'n bosibl dod o hyd i ddefnyddwyr gyda'r un enw defnyddiwr ar wahanol weinyddion.",
|
||||
"domain_pill.username": "Enw Defnyddiwr",
|
||||
"domain_pill.whats_in_a_handle": "Beth sydd mewn handlen?",
|
||||
"domain_pill.who_they_are": "Gan fod handlen yn dweud pwy yw rhywun a ble maen nhw, gallwch chi ryngweithio â phobl ar draws gwe gymdeithasol <button>llwyfannau wedi'u pweru gan ActivityPub</button> .",
|
||||
"domain_pill.who_you_are": "Oherwydd bod eich handlen yn dweud pwy ydych chi a ble rydych chi, gall pobl ryngweithio â chi ar draws gwe gymdeithasol <button>llwyfannau wedi'u pweru gan ActivityPub</button> .",
|
||||
"domain_pill.your_handle": "Eich handlen:",
|
||||
"domain_pill.your_server": "Eich cartref digidol, lle mae'ch holl bostiadau'n byw. Ddim yn hoffi'r un hon? Trosglwyddwch weinyddion ar unrhyw adeg a dewch â'ch dilynwyr hefyd.",
|
||||
"domain_pill.your_username": "Eich dynodwr unigryw ar y gweinydd hwn. Mae'n bosibl dod o hyd i ddefnyddwyr gyda'r un enw defnyddiwr ar wahanol weinyddion.",
|
||||
"embed.instructions": "Gosodwch y post hwn ar eich gwefan drwy gopïo'r côd isod.",
|
||||
"embed.preview": "Dyma sut olwg fydd arno:",
|
||||
"emoji_button.activity": "Gweithgarwch",
|
||||
|
@ -267,6 +297,8 @@
|
|||
"filter_modal.select_filter.subtitle": "Defnyddiwch gategori sy'n bodoli eisoes neu crëu un newydd",
|
||||
"filter_modal.select_filter.title": "Hidlo'r postiad hwn",
|
||||
"filter_modal.title.status": "Hidlo postiad",
|
||||
"filtered_notifications_banner.mentions": "{count, plural, one {crybwylliad} other {crybwylliad}}",
|
||||
"filtered_notifications_banner.pending_requests": "Hysbysiadau gan {count, plural, =0 {neb} one {un person} other {# person}} efallai y gwyddoch amdanyn nhw",
|
||||
"filtered_notifications_banner.title": "Hysbysiadau wedi'u hidlo",
|
||||
"firehose.all": "Popeth",
|
||||
"firehose.local": "Gweinydd hwn",
|
||||
|
@ -276,6 +308,8 @@
|
|||
"follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, roedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.",
|
||||
"follow_suggestions.curated_suggestion": "Dewis staff",
|
||||
"follow_suggestions.dismiss": "Peidio â dangos hwn eto",
|
||||
"follow_suggestions.featured_longer": "Wedi'i ddewis â llaw gan dîm {domain}",
|
||||
"follow_suggestions.friends_of_friends_longer": "Yn boblogaidd ymhlith y bobl rydych chi'n eu dilyn",
|
||||
"follow_suggestions.hints.featured": "Mae'r proffil hwn wedi'i ddewis yn arbennig gan dîm {domain}.",
|
||||
"follow_suggestions.hints.friends_of_friends": "Mae'r proffil hwn yn boblogaidd ymhlith y bobl rydych chi'n eu dilyn.",
|
||||
"follow_suggestions.hints.most_followed": "Mae'r proffil hwn yn un o'r rhai sy'n cael ei ddilyn fwyaf ar {domain}.",
|
||||
|
@ -283,6 +317,8 @@
|
|||
"follow_suggestions.hints.similar_to_recently_followed": "Mae'r proffil hwn yn debyg i'r proffiliau rydych chi wedi'u dilyn yn fwyaf diweddar.",
|
||||
"follow_suggestions.personalized_suggestion": "Awgrym personol",
|
||||
"follow_suggestions.popular_suggestion": "Awgrym poblogaidd",
|
||||
"follow_suggestions.popular_suggestion_longer": "Yn boblogaidd ar {domain}",
|
||||
"follow_suggestions.similar_to_recently_followed_longer": "Yn debyg i broffiliau y gwnaethoch chi eu dilyn yn ddiweddar",
|
||||
"follow_suggestions.view_all": "Gweld y cyfan",
|
||||
"follow_suggestions.who_to_follow": "Pwy i ddilyn",
|
||||
"followed_tags": "Hashnodau rydych yn eu dilyn",
|
||||
|
@ -396,6 +432,15 @@
|
|||
"loading_indicator.label": "Yn llwytho…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Cuddio delwedd} other {Cuddio delwedd}}",
|
||||
"moved_to_account_banner.text": "Ar hyn y bryd, mae eich cyfrif {disabledAccount} wedi ei analluogi am i chi symud i {movedToAccount}.",
|
||||
"mute_modal.hide_from_notifications": "Cuddio rhag hysbysiadau",
|
||||
"mute_modal.hide_options": "Cuddio'r dewis",
|
||||
"mute_modal.indefinite": "Nes i mi eu dad-dewi",
|
||||
"mute_modal.show_options": "Dangos y dewis",
|
||||
"mute_modal.they_can_mention_and_follow": "Gallan nhw eich crybwyll a'ch dilyn, ond fyddwch chi ddim yn eu gweld.",
|
||||
"mute_modal.they_wont_know": "Fyddan nhw ddim yn gwybod eu bod wedi cael eu tawelu.",
|
||||
"mute_modal.title": "Tewi defnyddiwr?",
|
||||
"mute_modal.you_wont_see_mentions": "Welwch chi ddim postiadau sy'n sôn amdanyn nhw.",
|
||||
"mute_modal.you_wont_see_posts": "Gallan nhw weld eich postiadau o hyd, ond fyddwch chi ddim yn gweld eu rhai hwy.",
|
||||
"navigation_bar.about": "Ynghylch",
|
||||
"navigation_bar.advanced_interface": "Agor mewn rhyngwyneb gwe uwch",
|
||||
"navigation_bar.blocks": "Defnyddwyr wedi eu blocio",
|
||||
|
@ -428,9 +473,23 @@
|
|||
"notification.follow": "Dilynodd {name} chi",
|
||||
"notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn",
|
||||
"notification.mention": "Crybwyllodd {name} amdanoch chi",
|
||||
"notification.moderation-warning.learn_more": "Dysgu mwy",
|
||||
"notification.moderation_warning": "Rydych wedi derbyn rhybudd cymedroli",
|
||||
"notification.moderation_warning.action_delete_statuses": "Mae rhai o'ch postiadau wedi'u dileu.",
|
||||
"notification.moderation_warning.action_disable": "Mae eich cyfrif wedi'i analluogi.",
|
||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Mae rhai o'ch postiadau wedi'u marcio'n sensitif.",
|
||||
"notification.moderation_warning.action_none": "Mae eich cyfrif wedi derbyn rhybudd cymedroli.",
|
||||
"notification.moderation_warning.action_sensitive": "Bydd eich postiadau'n cael eu marcio'n sensitif o hyn ymlaen.",
|
||||
"notification.moderation_warning.action_silence": "Mae eich cyfrif wedi'i gyfyngu.",
|
||||
"notification.moderation_warning.action_suspend": "Mae eich cyfrif wedi'i hatal.",
|
||||
"notification.own_poll": "Mae eich pleidlais wedi dod i ben",
|
||||
"notification.poll": "Mae pleidlais rydych wedi pleidleisio ynddi wedi dod i ben",
|
||||
"notification.reblog": "Hybodd {name} eich post",
|
||||
"notification.relationships_severance_event": "Wedi colli cysylltiad â {name}",
|
||||
"notification.relationships_severance_event.account_suspension": "Mae gweinyddwr o {from} wedi atal {target}, sy'n golygu na allwch dderbyn diweddariadau ganddynt mwyach na rhyngweithio â nhw.",
|
||||
"notification.relationships_severance_event.domain_block": "Mae gweinyddwr o {from} wedi rhwystro {target}, gan gynnwys {followersCount} o'ch dilynwyr a {followingCount, plural, one {# cyfrif} other {# cyfrif}} arall rydych chi'n ei ddilyn.",
|
||||
"notification.relationships_severance_event.learn_more": "Dysgu mwy",
|
||||
"notification.relationships_severance_event.user_domain_block": "Rydych wedi rhwystro {target}, gan ddileu {followersCount} o'ch dilynwyr a {followingCount, plural, one {# cyfrif} other {#cyfrifon}} arall rydych yn ei ddilyn.",
|
||||
"notification.status": "{name} newydd ei bostio",
|
||||
"notification.update": "Golygodd {name} bostiad",
|
||||
"notification_requests.accept": "Derbyn",
|
||||
|
@ -443,6 +502,8 @@
|
|||
"notifications.column_settings.admin.sign_up": "Cofrestriadau newydd:",
|
||||
"notifications.column_settings.alert": "Hysbysiadau bwrdd gwaith",
|
||||
"notifications.column_settings.favourite": "Ffefrynnau:",
|
||||
"notifications.column_settings.filter_bar.advanced": "Dangos pob categori",
|
||||
"notifications.column_settings.filter_bar.category": "Bar hidlo cyflym",
|
||||
"notifications.column_settings.follow": "Dilynwyr newydd:",
|
||||
"notifications.column_settings.follow_request": "Ceisiadau dilyn newydd:",
|
||||
"notifications.column_settings.mention": "Crybwylliadau:",
|
||||
|
@ -653,9 +714,11 @@
|
|||
"status.direct": "Crybwyll yn breifat @{name}",
|
||||
"status.direct_indicator": "Crybwyll preifat",
|
||||
"status.edit": "Golygu",
|
||||
"status.edited": "Golygwyd ddiwethaf {date}",
|
||||
"status.edited_x_times": "Golygwyd {count, plural, one {count} two {count} other {{count} gwaith}}",
|
||||
"status.embed": "Mewnblannu",
|
||||
"status.favourite": "Hoffi",
|
||||
"status.favourites": "{count, plural, one {ffefryn} other {ffefryn}}",
|
||||
"status.filter": "Hidlo'r postiad hwn",
|
||||
"status.filtered": "Wedi'i hidlo",
|
||||
"status.hide": "Cuddio'r postiad",
|
||||
|
@ -676,6 +739,7 @@
|
|||
"status.reblog": "Hybu",
|
||||
"status.reblog_private": "Hybu i'r gynulleidfa wreiddiol",
|
||||
"status.reblogged_by": "Hybodd {name}",
|
||||
"status.reblogs": "{count, plural, one {hwb} other {hwb}}",
|
||||
"status.reblogs.empty": "Does neb wedi hybio'r post yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.",
|
||||
"status.redraft": "Dileu ac ailddrafftio",
|
||||
"status.remove_bookmark": "Tynnu nod tudalen",
|
||||
|
|
|
@ -469,6 +469,7 @@
|
|||
"notification.follow": "{name} te ha sequite",
|
||||
"notification.follow_request": "{name} ha requestate de sequer te",
|
||||
"notification.mention": "{name} te ha mentionate",
|
||||
"notification.moderation-warning.learn_more": "Apprender plus",
|
||||
"notification.own_poll": "Tu sondage ha finite",
|
||||
"notification.poll": "Un sondage in le qual tu ha votate ha finite",
|
||||
"notification.reblog": "{name} ha impulsate tu message",
|
||||
|
|
|
@ -299,7 +299,7 @@
|
|||
"filter_modal.title.status": "投稿をフィルターする",
|
||||
"filtered_notifications_banner.mentions": "{count, plural, one {メンション} other {メンション}}",
|
||||
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {通知がブロックされているアカウントはありません} other {#アカウントからの通知がブロックされています}}",
|
||||
"filtered_notifications_banner.title": "ブロック済みの通知",
|
||||
"filtered_notifications_banner.title": "保留中の通知",
|
||||
"firehose.all": "すべて",
|
||||
"firehose.local": "このサーバー",
|
||||
"firehose.remote": "ほかのサーバー",
|
||||
|
@ -486,7 +486,7 @@
|
|||
"notification_requests.accept": "受け入れる",
|
||||
"notification_requests.dismiss": "無視",
|
||||
"notification_requests.notifications_from": "{name}からの通知",
|
||||
"notification_requests.title": "ブロック済みの通知",
|
||||
"notification_requests.title": "保留中の通知",
|
||||
"notifications.clear": "通知を消去",
|
||||
"notifications.clear_confirmation": "本当に通知を消去しますか?",
|
||||
"notifications.column_settings.admin.report": "新しい通報:",
|
||||
|
|
|
@ -282,6 +282,7 @@
|
|||
"filter_modal.select_filter.subtitle": "Naudok esamą kategoriją arba sukurk naują.",
|
||||
"filter_modal.select_filter.title": "Filtruoti šį įrašą",
|
||||
"filter_modal.title.status": "Filtruoti įrašą",
|
||||
"filtered_notifications_banner.mentions": "{count, plural, one {paminėjimas} few {paminėjimai} many {paminėjimo} other {paminėjimų}}",
|
||||
"firehose.all": "Visi",
|
||||
"firehose.local": "Šis serveris",
|
||||
"firehose.remote": "Kiti serveriai",
|
||||
|
@ -290,6 +291,8 @@
|
|||
"follow_requests.unlocked_explanation": "Nors tavo paskyra neužrakinta, {domain} personalas mano, kad galbūt norėsi rankiniu būdu patikrinti šių paskyrų sekimo prašymus.",
|
||||
"follow_suggestions.curated_suggestion": "Personalo pasirinkimai",
|
||||
"follow_suggestions.dismiss": "Daugiau nerodyti",
|
||||
"follow_suggestions.featured_longer": "Rankomis atrinkta {domain} komanda",
|
||||
"follow_suggestions.friends_of_friends_longer": "Populiarus tarp žmonių, kurių seki",
|
||||
"follow_suggestions.hints.featured": "Šį profilį atrinko {domain} komanda.",
|
||||
"follow_suggestions.hints.friends_of_friends": "Šis profilis yra populiarus tarp žmonių, kuriuos seki.",
|
||||
"follow_suggestions.hints.most_followed": "Šis profilis yra vienas iš labiausiai sekamų {domain}.",
|
||||
|
@ -297,6 +300,8 @@
|
|||
"follow_suggestions.hints.similar_to_recently_followed": "Šis profilis panašus į profilius, kuriuos neseniai sekei.",
|
||||
"follow_suggestions.personalized_suggestion": "Suasmenintas pasiūlymas",
|
||||
"follow_suggestions.popular_suggestion": "Populiarus pasiūlymas",
|
||||
"follow_suggestions.popular_suggestion_longer": "Populiarus domene {domain}",
|
||||
"follow_suggestions.similar_to_recently_followed_longer": "Panašūs į profilius, kuriuos neseniai seki",
|
||||
"follow_suggestions.view_all": "Peržiūrėti viską",
|
||||
"follow_suggestions.who_to_follow": "Ką sekti",
|
||||
"followed_tags": "Sekami saitažodžiai",
|
||||
|
@ -442,6 +447,15 @@
|
|||
"notification.follow": "{name} seka tave",
|
||||
"notification.follow_request": "{name} paprašė tave sekti",
|
||||
"notification.mention": "{name} paminėjo tave",
|
||||
"notification.moderation-warning.learn_more": "Sužinoti daugiau",
|
||||
"notification.moderation_warning": "Gavai prižiūrėjimo įspėjimą",
|
||||
"notification.moderation_warning.action_delete_statuses": "Kai kurie tavo įrašai buvo pašalintos.",
|
||||
"notification.moderation_warning.action_disable": "Tavo paskyra buvo išjungta.",
|
||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Kai kurie tavo įrašai buvo pažymėtos kaip jautrios.",
|
||||
"notification.moderation_warning.action_none": "Tavo paskyra gavo prižiūrėjimo įspėjimą.",
|
||||
"notification.moderation_warning.action_sensitive": "Nuo šiol tavo įrašai bus pažymėti kaip jautrūs.",
|
||||
"notification.moderation_warning.action_silence": "Tavo paskyra buvo apribota.",
|
||||
"notification.moderation_warning.action_suspend": "Tavo paskyra buvo sustabdyta.",
|
||||
"notification.own_poll": "Tavo apklausa baigėsi",
|
||||
"notification.poll": "Apklausa, kurioje balsavai, pasibaigė",
|
||||
"notification.reblog": "{name} pakėlė tavo įrašą",
|
||||
|
|
|
@ -246,6 +246,7 @@
|
|||
"empty_column.list": "Tento zoznam je zatiaľ prázdny. Keď ale členovia tohoto zoznamu uverejnia nové príspevky, objavia sa tu.",
|
||||
"empty_column.lists": "Zatiaľ nemáte žiadne zoznamy. Keď nejaký vytvoríte, zobrazí sa tu.",
|
||||
"empty_column.mutes": "Zatiaľ ste si nikoho nestíšili.",
|
||||
"empty_column.notification_requests": "Všetko čisté! Nič tu nieje. Keď dostaneš nové oboznámenia, zobrazia sa tu podľa tvojich nastavení.",
|
||||
"empty_column.notifications": "Zatiaľ nemáte žiadne upozornenia. Začnú vám pribúdať, keď s vami začnú interagovať ostatní.",
|
||||
"empty_column.public": "Zatiaľ tu nič nie je. Napíšte niečo verejné alebo začnite sledovať účty z iných serverov, aby tu niečo pribudlo.",
|
||||
"error.unexpected_crash.explanation": "Pre chybu v našom kóde alebo problém s kompatibilitou prehliadača nebolo túto stránku možné zobraziť správne.",
|
||||
|
|
|
@ -50,6 +50,7 @@ export default function search(state = initialState, action) {
|
|||
return state.set('hidden', true);
|
||||
case SEARCH_FETCH_REQUEST:
|
||||
return state.withMutations(map => {
|
||||
map.set('results', ImmutableMap());
|
||||
map.set('isLoading', true);
|
||||
map.set('submitted', true);
|
||||
map.set('type', action.searchType);
|
||||
|
|
|
@ -5616,7 +5616,7 @@ a.status-card {
|
|||
user-select: text;
|
||||
display: flex;
|
||||
|
||||
@media screen and (max-width: $no-gap-breakpoint) {
|
||||
@media screen and (width <= 630px) {
|
||||
margin-top: auto;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -71,6 +71,9 @@ class Account < ApplicationRecord
|
|||
MENTION_RE = %r{(?<![=/[:word:]])@((#{USERNAME_RE})(?:@[[:word:].-]+[[:word:]]+)?)}i
|
||||
URL_PREFIX_RE = %r{\Ahttp(s?)://[^/]+}
|
||||
USERNAME_ONLY_RE = /\A#{USERNAME_RE}\z/i
|
||||
USERNAME_LENGTH_LIMIT = 30
|
||||
DISPLAY_NAME_LENGTH_LIMIT = (ENV['MAX_DISPLAY_NAME_CHARS'] || 30).to_i
|
||||
NOTE_LENGTH_LIMIT = (ENV['MAX_BIO_CHARS'] || 500).to_i
|
||||
|
||||
include Attachmentable # Load prior to Avatar & Header concerns
|
||||
|
||||
|
@ -87,9 +90,6 @@ class Account < ApplicationRecord
|
|||
include DomainNormalizable
|
||||
include Paginable
|
||||
|
||||
MAX_DISPLAY_NAME_LENGTH = (ENV['MAX_DISPLAY_NAME_CHARS'] || 30).to_i
|
||||
MAX_NOTE_LENGTH = (ENV['MAX_BIO_CHARS'] || 500).to_i
|
||||
|
||||
enum :protocol, { ostatus: 0, activitypub: 1 }
|
||||
enum :suspension_origin, { local: 0, remote: 1 }, prefix: true
|
||||
|
||||
|
@ -103,10 +103,10 @@ class Account < ApplicationRecord
|
|||
validates :uri, presence: true, unless: :local?, on: :create
|
||||
|
||||
# Local user validations
|
||||
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' }
|
||||
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: USERNAME_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' }
|
||||
validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' }
|
||||
validates :display_name, length: { maximum: MAX_DISPLAY_NAME_LENGTH }, if: -> { local? && will_save_change_to_display_name? }
|
||||
validates :note, note_length: { maximum: MAX_NOTE_LENGTH }, if: -> { local? && will_save_change_to_note? }
|
||||
validates :display_name, length: { maximum: DISPLAY_NAME_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_display_name? }
|
||||
validates :note, note_length: { maximum: NOTE_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_note? }
|
||||
validates :fields, length: { maximum: DEFAULT_FIELDS_SIZE }, if: -> { local? && will_save_change_to_fields? }
|
||||
validates :uri, absence: true, if: :local?, on: :create
|
||||
validates :inbox_url, absence: true, if: :local?, on: :create
|
||||
|
@ -138,7 +138,6 @@ class Account < ApplicationRecord
|
|||
scope :discoverable, -> { searchable.without_silenced.where(discoverable: true).joins(:account_stat) }
|
||||
scope :by_recent_status, -> { includes(:account_stat).merge(AccountStat.by_recent_status).references(:account_stat) }
|
||||
scope :by_recent_activity, -> { left_joins(:user, :account_stat).order(coalesced_activity_timestamps.desc).order(id: :desc) }
|
||||
scope :popular, -> { order('account_stats.followers_count desc') }
|
||||
scope :by_domain_and_subdomains, ->(domain) { where(domain: Instance.by_domain_and_subdomains(domain).select(:domain)) }
|
||||
scope :not_excluded_by_account, ->(account) { where.not(id: account.excluded_from_timeline_account_ids) }
|
||||
scope :not_domain_blocked_by_account, ->(account) { where(arel_table[:domain].eq(nil).or(arel_table[:domain].not_in(account.excluded_from_timeline_domains))) }
|
||||
|
|
|
@ -22,4 +22,10 @@ class ApplicationRecord < ActiveRecord::Base
|
|||
value
|
||||
end
|
||||
end
|
||||
|
||||
# Prevent implicit serialization in ActiveModel::Serializer or other code paths.
|
||||
# This is a hardening step to avoid accidental leaking of attributes.
|
||||
def as_json
|
||||
raise NotImplementedError
|
||||
end
|
||||
end
|
||||
|
|
|
@ -51,7 +51,6 @@ class CustomFilter < ApplicationRecord
|
|||
after_commit :invalidate_cache!
|
||||
|
||||
def expires_in
|
||||
return @expires_in if defined?(@expires_in)
|
||||
return nil if expires_at.nil?
|
||||
|
||||
EXPIRATION_DURATIONS.find { |expires_in| expires_in.from_now >= expires_at }
|
||||
|
|
|
@ -109,7 +109,9 @@ class Status < ApplicationRecord
|
|||
scope :remote, -> { where(local: false).where.not(uri: nil) }
|
||||
scope :local, -> { where(local: true).or(where(uri: nil)) }
|
||||
scope :with_accounts, ->(ids) { where(id: ids).includes(:account) }
|
||||
scope :without_replies, -> { where('statuses.reply = FALSE OR statuses.in_reply_to_account_id = statuses.account_id') }
|
||||
scope :without_replies, -> { not_reply.or(reply_to_account) }
|
||||
scope :not_reply, -> { where(reply: false) }
|
||||
scope :reply_to_account, -> { where(arel_table[:in_reply_to_account_id].eq arel_table[:account_id]) }
|
||||
scope :without_reblogs, -> { where(statuses: { reblog_of_id: nil }) }
|
||||
scope :tagged_with, ->(tag_ids) { joins(:statuses_tags).where(statuses_tags: { tag_id: tag_ids }) }
|
||||
scope :not_excluded_by_account, ->(account) { where.not(account_id: account.excluded_from_timeline_account_ids) }
|
||||
|
|
7
app/views/admin/rules/_form.html.haml
Normal file
7
app/views/admin/rules/_form.html.haml
Normal file
|
@ -0,0 +1,7 @@
|
|||
.fields-group
|
||||
= form.input :text,
|
||||
wrapper: :with_block_label
|
||||
|
||||
.fields-group
|
||||
= form.input :hint,
|
||||
wrapper: :with_block_label
|
|
@ -1,14 +1,10 @@
|
|||
- content_for :page_title do
|
||||
= t('admin.rules.edit')
|
||||
|
||||
= simple_form_for @rule, url: admin_rule_path(@rule) do |f|
|
||||
= simple_form_for @rule, url: admin_rule_path(@rule) do |form|
|
||||
= render 'shared/error_messages', object: @rule
|
||||
|
||||
.fields-group
|
||||
= f.input :text, wrapper: :with_block_label
|
||||
|
||||
.fields-group
|
||||
= f.input :hint, wrapper: :with_block_label
|
||||
= render form
|
||||
|
||||
.actions
|
||||
= f.button :button, t('generic.save_changes'), type: :submit
|
||||
= form.button :button, t('generic.save_changes'), type: :submit
|
||||
|
|
|
@ -6,17 +6,13 @@
|
|||
%hr.spacer/
|
||||
|
||||
- if can? :create, :rule
|
||||
= simple_form_for @rule, url: admin_rules_path do |f|
|
||||
= simple_form_for @rule, url: admin_rules_path do |form|
|
||||
= render 'shared/error_messages', object: @rule
|
||||
|
||||
.fields-group
|
||||
= f.input :text, wrapper: :with_block_label
|
||||
|
||||
.fields-group
|
||||
= f.input :hint, wrapper: :with_block_label
|
||||
= render form
|
||||
|
||||
.actions
|
||||
= f.button :button, t('admin.rules.add_new'), type: :submit
|
||||
= form.button :button, t('admin.rules.add_new'), type: :submit
|
||||
|
||||
%hr.spacer/
|
||||
|
||||
|
|
7
app/views/admin/warning_presets/_form.html.haml
Normal file
7
app/views/admin/warning_presets/_form.html.haml
Normal file
|
@ -0,0 +1,7 @@
|
|||
.fields-group
|
||||
= form.input :title,
|
||||
wrapper: :with_block_label
|
||||
|
||||
.fields-group
|
||||
= form.input :text,
|
||||
wrapper: :with_block_label
|
|
@ -1,14 +1,10 @@
|
|||
- content_for :page_title do
|
||||
= t('admin.warning_presets.edit_preset')
|
||||
|
||||
= simple_form_for @warning_preset, url: admin_warning_preset_path(@warning_preset) do |f|
|
||||
= simple_form_for @warning_preset, url: admin_warning_preset_path(@warning_preset) do |form|
|
||||
= render 'shared/error_messages', object: @warning_preset
|
||||
|
||||
.fields-group
|
||||
= f.input :title, wrapper: :with_block_label
|
||||
|
||||
.fields-group
|
||||
= f.input :text, wrapper: :with_block_label
|
||||
= render form
|
||||
|
||||
.actions
|
||||
= f.button :button, t('generic.save_changes'), type: :submit
|
||||
= form.button :button, t('generic.save_changes'), type: :submit
|
||||
|
|
|
@ -2,17 +2,13 @@
|
|||
= t('admin.warning_presets.title')
|
||||
|
||||
- if can? :create, :account_warning_preset
|
||||
= simple_form_for @warning_preset, url: admin_warning_presets_path do |f|
|
||||
= simple_form_for @warning_preset, url: admin_warning_presets_path do |form|
|
||||
= render 'shared/error_messages', object: @warning_preset
|
||||
|
||||
.fields-group
|
||||
= f.input :title, wrapper: :with_block_label
|
||||
|
||||
.fields-group
|
||||
= f.input :text, wrapper: :with_block_label
|
||||
= render form
|
||||
|
||||
.actions
|
||||
= f.button :button, t('admin.warning_presets.add_new'), type: :submit
|
||||
= form.button :button, t('admin.warning_presets.add_new'), type: :submit
|
||||
|
||||
%hr.spacer/
|
||||
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
= t('admin.webhooks.edit')
|
||||
|
||||
= simple_form_for @webhook, url: admin_webhook_path(@webhook) do |form|
|
||||
= render partial: 'form', object: form
|
||||
= render form
|
||||
.actions
|
||||
= form.button :button, t('generic.save_changes'), type: :submit
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
= t('admin.webhooks.new')
|
||||
|
||||
= simple_form_for @webhook, url: admin_webhooks_path do |form|
|
||||
= render partial: 'form', object: form
|
||||
= render form
|
||||
.actions
|
||||
= form.button :button, t('admin.webhooks.add_new'), type: :submit
|
||||
|
|
|
@ -15,10 +15,10 @@
|
|||
.fields-row
|
||||
.fields-row__column.fields-row__column-6
|
||||
.fields-group
|
||||
= f.input :display_name, wrapper: :with_block_label, input_html: { maxlength: Account::MAX_DISPLAY_NAME_LENGTH, data: { default: @account.username } }
|
||||
= f.input :display_name, wrapper: :with_block_label, input_html: { maxlength: Account::DISPLAY_NAME_LENGTH_LIMIT, data: { default: @account.username } }
|
||||
|
||||
.fields-group
|
||||
= f.input :note, wrapper: :with_block_label, input_html: { maxlength: Account::MAX_NOTE_LENGTH }
|
||||
= f.input :note, wrapper: :with_block_label, input_html: { maxlength: Account::NOTE_LENGTH_LIMIT }
|
||||
|
||||
.fields-row__column.fields-group.fields-row__column-6
|
||||
.input.with_block_label
|
||||
|
|
|
@ -51,12 +51,8 @@ require_relative '../lib/active_record/database_tasks_extensions'
|
|||
require_relative '../lib/active_record/batches'
|
||||
require_relative '../lib/simple_navigation/item_extensions'
|
||||
|
||||
Dotenv::Rails.load
|
||||
|
||||
Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true'
|
||||
|
||||
require_relative '../lib/mastodon/redis_config'
|
||||
|
||||
module Mastodon
|
||||
class Application < Rails::Application
|
||||
# Initialize configuration defaults for originally generated Rails version.
|
||||
|
@ -98,6 +94,10 @@ module Mastodon
|
|||
app.deprecators[:mastodon] = ActiveSupport::Deprecation.new('4.3', 'mastodon/mastodon')
|
||||
end
|
||||
|
||||
config.before_configuration do
|
||||
require 'mastodon/redis_config'
|
||||
end
|
||||
|
||||
config.to_prepare do
|
||||
Doorkeeper::AuthorizationsController.layout 'modal'
|
||||
Doorkeeper::AuthorizedApplicationsController.layout 'admin'
|
||||
|
|
|
@ -645,6 +645,9 @@ cy:
|
|||
actions_description_html: Penderfynwch pa gamau i'w cymryd i ddatrys yr adroddiad hwn. Os byddwch yn cymryd camau cosbol yn erbyn y cyfrif a adroddwyd, bydd hysbysiad e-bost yn cael ei anfon atyn nhw, ac eithrio pan fydd y categori <strong>Sbam</strong> yn cael ei ddewis.
|
||||
actions_description_remote_html: Penderfynwch pa gamau i'w cymryd i ddatrys yr adroddiad hwn. Bydd hyn ond yn effeithio ar sut <strong>mae'ch</strong> gweinydd yn cyfathrebu â'r cyfrif hwn o bell ac yn trin ei gynnwys.
|
||||
add_to_report: Ychwanegu rhagor i adroddiad
|
||||
already_suspended_badges:
|
||||
local: Wedi atal dros dro ar y gweinydd hwn yn barod
|
||||
remote: Wedi'i atal eisoes ar eu gweinydd
|
||||
are_you_sure: Ydych chi'n siŵr?
|
||||
assign_to_self: Neilltuo i mi
|
||||
assigned: Cymedrolwr wedi'i neilltuo
|
||||
|
@ -804,6 +807,7 @@ cy:
|
|||
desc_html: Mae hyn yn dibynnu ar sgriptiau allanol gan hCaptcha, a all fod yn bryder diogelwch a phreifatrwydd. Yn ogystal, <strong>gall hyn wneud y broses gofrestru yn llawer llai hygyrch i rai pobl (yn enwedig yr anabl)</strong>. Am y rhesymau hyn, ystyriwch fesurau eraill fel cofrestru ar sail cymeradwyaeth neu ar sail gwahoddiad.
|
||||
title: Ei gwneud yn ofynnol i ddefnyddwyr newydd ddatrys CAPTCHA i gadarnhau eu cyfrif
|
||||
content_retention:
|
||||
danger_zone: Parth perygl
|
||||
preamble: Rheoli sut mae cynnwys sy'n cael ei gynhyrchu gan ddefnyddwyr yn cael ei storio yn Mastodon.
|
||||
title: Cadw cynnwys
|
||||
default_noindex:
|
||||
|
@ -1756,13 +1760,26 @@ cy:
|
|||
import: Mewnforio
|
||||
import_and_export: Mewnforio ac allforio
|
||||
migrate: Mudo cyfrif
|
||||
notifications: Hysbysiadau e-bost
|
||||
preferences: Dewisiadau
|
||||
profile: Proffil cyhoeddus
|
||||
relationships: Yn dilyn a dilynwyr
|
||||
severed_relationships: Perthynasau wedi'u torri
|
||||
statuses_cleanup: Dileu postiadau'n awtomatig
|
||||
strikes: Rhybuddion cymedroli
|
||||
two_factor_authentication: Dilysu dau-ffactor
|
||||
webauthn_authentication: Allweddi diogelwch
|
||||
severed_relationships:
|
||||
download: Llwytho i lawr (%{count})
|
||||
event_type:
|
||||
account_suspension: Atal cyfrif (%{target_name})
|
||||
domain_block: Ataliad gweinydd (%{target_name})
|
||||
user_domain_block: Rydych wedi rhwystro %{target_name}
|
||||
lost_followers: Dilynwyr coll
|
||||
lost_follows: Yn dilyn coll
|
||||
preamble: Efallai y byddwch yn colli dilynwyr a'r rhai rydych yn eu dilyn pan fyddwch yn rhwystro parth neu pan fydd eich cymedrolwyr yn penderfynu atal gweinydd o bell. Pan fydd hynny'n digwydd, byddwch yn gallu llwytho i lawr rhestrau o berthnasoedd wedi'u torri, i'w harchwilio ac o bosibl eu mewnforio ar weinydd arall.
|
||||
purged: Mae gwybodaeth am y gweinydd hwn wedi'i dynnu gan weinyddwyr eich gweinydd.
|
||||
type: Digwyddiad
|
||||
statuses:
|
||||
attached:
|
||||
audio:
|
||||
|
@ -1880,6 +1897,7 @@ cy:
|
|||
contrast: Mastodon (Cyferbyniad uchel)
|
||||
default: Mastodon (Tywyll)
|
||||
mastodon-light: Mastodon (Golau)
|
||||
system: Awtomatig (defnyddio thema system)
|
||||
time:
|
||||
formats:
|
||||
default: "%b %d, %Y, %H:%M"
|
||||
|
@ -1992,6 +2010,13 @@ cy:
|
|||
follows_subtitle: Dilynwch gyfrifon adnabyddus
|
||||
follows_title: Pwy i ddilyn
|
||||
follows_view_more: Gweld mwy o bobl i ddilyn
|
||||
hashtags_recent_count:
|
||||
few: "%{people} o bobl yn y 2 ddiwrnod diwethaf"
|
||||
many: "%{people} o bobl yn y 2 ddiwrnod diwethaf"
|
||||
one: "%{people} person yn ystod y 2 ddiwrnod diwethaf"
|
||||
other: "%{people} o bobl yn y 2 ddiwrnod diwethaf"
|
||||
two: "%{people} o bobl yn y 2 ddiwrnod diwethaf"
|
||||
zero: "%{people} o bobl yn y 2 ddiwrnod diwethaf"
|
||||
hashtags_subtitle: Gweld beth sy'n tueddu dros y 2 ddiwrnod diwethaf
|
||||
hashtags_title: Hashnodau tuedd
|
||||
hashtags_view_more: Gweld mwy o hashnodau tuedd
|
||||
|
@ -1999,7 +2024,7 @@ cy:
|
|||
post_step: Dywedwch helo wrth y byd gyda thestun, lluniau, fideos neu arolygon barn.
|
||||
post_title: Creu'ch postiad cyntaf
|
||||
share_action: Rhannu
|
||||
share_step: Gadewch i'ch ffrindiau wybod sut i ddod o hyd i chi ar Mastodon!
|
||||
share_step: Gadewch i'ch ffrindiau wybod sut i ddod o hyd i chi ar Mastodon.
|
||||
share_title: Rhannwch eich proffil Mastodon
|
||||
sign_in_action: Mewngofnodi
|
||||
subject: Croeso i Mastodon
|
||||
|
|
|
@ -174,6 +174,7 @@ cy:
|
|||
read:filters: gweld eich hidlwyr
|
||||
read:follows: gweld eich dilynwyr
|
||||
read:lists: gweld eich rhestrau
|
||||
read:me: darllen dim ond manylion elfennol eich cyfrif
|
||||
read:mutes: gweld eich anwybyddiadau
|
||||
read:notifications: gweld eich hysbysiadau
|
||||
read:reports: gweld eich adroddiadau
|
||||
|
|
|
@ -174,6 +174,7 @@ lt:
|
|||
read:filters: matyti tavo filtrus
|
||||
read:follows: matyti tavo sekimus
|
||||
read:lists: matyti tavo sąrašus
|
||||
read:me: skaityti tik pagrindinę paskyros informaciją
|
||||
read:mutes: matyti tavo nutildymus
|
||||
read:notifications: matyti tavo pranešimus
|
||||
read:reports: matyti tavo ataskaitas
|
||||
|
|
|
@ -751,6 +751,7 @@ gl:
|
|||
desc_html: Ten dependencia de scripts externos desde hCaptcha, que podería ser un problema de seguridade e privacidade. Ademáis, <strong>pode diminuír a accesiblidade para algunhas persoas (principalmente as discapacitadas)</strong>. Por estas razóns, considera medidas alternativas como o rexistro por convite e a aprobación manual das contas.
|
||||
title: Pedirlle ás novas usuarias resolver un CAPTCHA para confirmar a súa conta
|
||||
content_retention:
|
||||
danger_zone: Zona perigosa
|
||||
preamble: Controla como se gardan en Mastodon os contidos creados polas usuarias.
|
||||
title: Retención do contido
|
||||
default_noindex:
|
||||
|
|
|
@ -130,6 +130,7 @@ ia:
|
|||
silenced: Limitate
|
||||
statuses: Messages
|
||||
subscribe: Subscriber
|
||||
suspend: Suspender
|
||||
suspended: Suspendite
|
||||
title: Contos
|
||||
unblock_email: Disblocar adresse de e-mail
|
||||
|
@ -141,6 +142,8 @@ ia:
|
|||
view_domain: Vider summario de dominio
|
||||
action_logs:
|
||||
action_types:
|
||||
change_email_user: Cambiar e-mail pro le usator
|
||||
change_role_user: Cambiar le rolo del usator
|
||||
confirm_user: Confirmar le usator
|
||||
create_account_warning: Crear un advertimento
|
||||
create_announcement: Crear annuncio
|
||||
|
@ -155,6 +158,7 @@ ia:
|
|||
enable_custom_emoji: Activar emoji personalisate
|
||||
enable_user: Activar le usator
|
||||
promote_user: Promover usator
|
||||
resend_user: Reinviar message de confirmation
|
||||
reset_password_user: Reinitialisar contrasigno
|
||||
silence_account: Limitar conto
|
||||
unblock_email_account: Disblocar adresse de e-mail
|
||||
|
@ -187,6 +191,7 @@ ia:
|
|||
delete: Deler
|
||||
disable: Disactivar
|
||||
disabled: Disactivate
|
||||
disabled_msg: Emoji disactivate con successo
|
||||
enable: Activar
|
||||
enabled: Activate
|
||||
enabled_msg: Emoji activate con successo
|
||||
|
|
|
@ -502,6 +502,8 @@ lt:
|
|||
settings:
|
||||
captcha_enabled:
|
||||
desc_html: Tai priklauso nuo hCaptcha išorinių skriptų, kurie gali kelti susirūpinimą dėl saugumo ir privatumo. Be to, <strong>dėl to registracijos procesas kai kuriems žmonėms (ypač neįgaliesiems) gali būti gerokai sunkiau prieinami</strong>. Dėl šių priežasčių apsvarstyk alternatyvias priemones, pavyzdžiui, patvirtinimu arba kvietimu grindžiamą registraciją.
|
||||
content_retention:
|
||||
danger_zone: Pavojinga zona
|
||||
domain_blocks:
|
||||
all: Visiems
|
||||
registrations:
|
||||
|
|
|
@ -77,10 +77,13 @@ cy:
|
|||
warn: Cuddiwch y cynnwys wedi'i hidlo y tu ôl i rybudd sy'n sôn am deitl yr hidlydd
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Cyfrif o bostiadau a gyhoeddir yn lleol, defnyddwyr gweithredol, a chofrestriadau newydd mewn bwcedi wythnosol
|
||||
backups_retention_period: Mae gan ddefnyddwyr y gallu i gynhyrchu archifau o'u postiadau i'w llwytho i lawr yn ddiweddarach. Pan gânt eu gosod i werth positif, bydd yr archifau hyn yn cael eu dileu'n awtomatig o'ch storfa ar ôl y nifer penodedig o ddyddiau.
|
||||
bootstrap_timeline_accounts: Bydd y cyfrifon hyn yn cael eu pinio i frig argymhellion dilynol defnyddwyr newydd.
|
||||
closed_registrations_message: Yn cael eu dangos pan fydd cofrestriadau wedi cau
|
||||
content_cache_retention_period: Bydd yr holl bostiadau gan weinyddion eraill (gan gynnwys hwb ac atebion) yn cael eu dileu ar ôl y nifer penodedig o ddyddiau, heb ystyried unrhyw ryngweithio defnyddiwr lleol â'r postiadau hynny. Mae hyn yn cynnwys postiadau lle mae defnyddiwr lleol wedi ei farcio fel nodau tudalen neu ffefrynnau. Bydd cyfeiriadau preifat rhwng defnyddwyr o wahanol achosion hefyd yn cael eu colli ac yn amhosibl eu hadfer. Mae'r defnydd o'r gosodiad hwn wedi'i fwriadu ar gyfer achosion pwrpas arbennig ac mae'n torri llawer o ddisgwyliadau defnyddwyr pan gaiff ei weithredu at ddibenion cyffredinol.
|
||||
custom_css: Gallwch gymhwyso arddulliau cyfaddas ar fersiwn gwe Mastodon.
|
||||
mascot: Yn diystyru'r darlun yn y rhyngwyneb gwe uwch.
|
||||
media_cache_retention_period: Mae ffeiliau cyfryngau o bostiadau a wneir gan ddefnyddwyr o bell yn cael eu storio ar eich gweinydd. Pan gaiff ei osod i werth positif, bydd y cyfryngau yn cael eu dileu ar ôl y nifer penodedig o ddyddiau. Os gofynnir am y data cyfryngau ar ôl iddo gael ei ddileu, caiff ei ail-lwytho i lawr, os yw'r cynnwys ffynhonnell yn dal i fod ar gael. Oherwydd cyfyngiadau ar ba mor aml y mae cardiau rhagolwg cyswllt yn pleidleisio i wefannau trydydd parti, argymhellir gosod y gwerth hwn i o leiaf 14 diwrnod, neu ni fydd cardiau rhagolwg cyswllt yn cael eu diweddaru ar alw cyn yr amser hwnnw.
|
||||
peers_api_enabled: Rhestr o enwau parth y mae'r gweinydd hwn wedi dod ar eu traws yn y ffediws. Nid oes unrhyw ddata wedi'i gynnwys yma ynghylch a ydych chi'n ffedereiddio â gweinydd penodol, dim ond bod eich gweinydd yn gwybod amdano. Defnyddir hwn gan wasanaethau sy'n casglu ystadegau ar ffedereiddio mewn ystyr cyffredinol.
|
||||
profile_directory: Mae'r cyfeiriadur proffil yn rhestru'r holl ddefnyddwyr sydd wedi dewis i fod yn ddarganfyddiadwy.
|
||||
require_invite_text: Pan fydd angen cymeradwyaeth â llaw ar gyfer cofrestriadau, gwnewch y “Pam ydych chi am ymuno?” mewnbwn testun yn orfodol yn hytrach na dewisol
|
||||
|
@ -240,6 +243,7 @@ cy:
|
|||
backups_retention_period: Cyfnod cadw archif defnyddwyr
|
||||
bootstrap_timeline_accounts: Argymhellwch y cyfrifon hyn i ddefnyddwyr newydd bob amser
|
||||
closed_registrations_message: Neges bersonol pan nad yw cofrestriadau ar gael
|
||||
content_cache_retention_period: Cyfnod cadw cynnwys o bell
|
||||
custom_css: CSS cyfaddas
|
||||
mascot: Mascot cyfaddas (hen)
|
||||
media_cache_retention_period: Cyfnod cadw storfa cyfryngau
|
||||
|
|
|
@ -77,6 +77,7 @@ fi:
|
|||
warn: Piilota suodatettu sisältö varoituksen taakse, jossa mainitaan suodattimen nimi
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Paikallisesti julkaistujen julkaisujen, aktiivisten käyttäjien ja rekisteröitymisten viikoittainen määrä
|
||||
backups_retention_period: Käyttäjillä on mahdollisuus arkistoida julkaisujaan myöhemmin ladattaviksi. Kun tämä on asetettu positiiviseksi arvoksi, nämä arkistot poistetaan automaattisesti asetetun päivien määrän jälkeen.
|
||||
bootstrap_timeline_accounts: Nämä tilit kiinnitetään uusien käyttäjien seuraamissuosituslistojen alkuun.
|
||||
closed_registrations_message: Näkyy, kun rekisteröityminen on suljettu
|
||||
custom_css: Voit käyttää mukautettuja tyylejä Mastodonin verkkoversiossa.
|
||||
|
|
|
@ -77,10 +77,13 @@ gl:
|
|||
warn: Agochar o contido filtrado tras un aviso que conteña o nome do filtro
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Conta do número de publicacións locais, usuarias activas, e novos rexistros en acumulados semanais
|
||||
backups_retention_period: As usuarias poden crear arquivos das súas publicacións para descargalos. Cando se establece un valor positivo, estes arquivos serán borrados automáticamente da túa almacenaxe despois do número de días establecido.
|
||||
bootstrap_timeline_accounts: Estas contas aparecerán fixas na parte superior das recomendacións para as usuarias.
|
||||
closed_registrations_message: Móstrase cando non se admiten novas usuarias
|
||||
content_cache_retention_period: Todas as publicacións procedentes de outros servidores (incluído promocións e respostas) van ser eliminadas despois do número de días indicado, sen importar as interaccións das usuarias locais con esas publicacións. Esto inclúe publicacións que a usuaria local marcou como favoritas ou incluíu nos marcadores. As mencións privadas entre usuarias de diferentes instancias tamén se eliminarán e non se poderán restablecer. O uso desta ferramenta esta orientado a situacións especiais e estraga moitas das expectativas das usuarias ao implementala cun propósito de uso xeral.
|
||||
custom_css: Podes aplicar deseños personalizados na versión web de Mastodon.
|
||||
mascot: Sobrescribe a ilustración na interface web avanzada.
|
||||
media_cache_retention_period: Os ficheiros multimedia de publicacións de usuarias remotas están almacenados no teu servidor. Ao establecer un valor positivo, o multimedia vaise eliminar despois do número de días establecido. Se o multimedia fose requerido após ser eliminado entón descargaríase outra vez, se aínda está dispoñible na orixe. Debido a restricións sobre a frecuencia en que o servizo de vista previa trae recursos de terceiras partes, é recomendable establecer este valor polo menos en 14 días, ou as tarxetas de vista previa non se actualizarán baixo demanda para casos anteriores a ese prazo.
|
||||
peers_api_enabled: Unha lista dos nomes de dominio que este servidor atopou no fediverso. Non se inclúen aquí datos acerca de se estás a federar con eles ou non, só que o teu servidor os recoñeceu. Ten utilidade para servizos que recollen estatísticas acerca da federación nun amplo senso.
|
||||
profile_directory: O directorio de perfís inclúe a tódalas usuarias que optaron por ser descubribles.
|
||||
require_invite_text: Cando os rexistros requiren aprobación manual, facer que o texto "Por que te queres rexistrar?" do convite sexa obrigatorio en lugar de optativo
|
||||
|
@ -240,6 +243,7 @@ gl:
|
|||
backups_retention_period: Período de retención do arquivo da usuaria
|
||||
bootstrap_timeline_accounts: Recomendar sempre estas contas ás novas usuarias
|
||||
closed_registrations_message: Mensaxe personalizada para cando o rexistro está pechado
|
||||
content_cache_retention_period: Período de retención de contido remoto
|
||||
custom_css: CSS personalizado
|
||||
mascot: Mascota propia (herdado)
|
||||
media_cache_retention_period: Período de retención da caché multimedia
|
||||
|
|
|
@ -5,8 +5,10 @@ ia:
|
|||
account:
|
||||
note: 'Tu pote @mentionar altere personas o #hashtags.'
|
||||
defaults:
|
||||
password: Usa al minus 8 characteres
|
||||
setting_display_media_hide_all: Sempre celar le medios
|
||||
setting_display_media_show_all: Sempre monstrar le medios
|
||||
username: Tu pote usar litteras, numeros e tractos de sublineamento
|
||||
webhook:
|
||||
events: Selige le eventos a inviar
|
||||
url: Ubi le eventos essera inviate
|
||||
|
@ -24,7 +26,10 @@ ia:
|
|||
admin_account_action:
|
||||
type: Action
|
||||
types:
|
||||
disable: Gelar
|
||||
none: Inviar un advertimento
|
||||
silence: Limitar
|
||||
suspend: Suspender
|
||||
announcement:
|
||||
text: Annuncio
|
||||
defaults:
|
||||
|
|
|
@ -80,8 +80,10 @@ is:
|
|||
backups_retention_period: Notendur hafa kost á að útbúa safnskrár með færslunum sínum til að sækja svo síðar. Þegar þetta er stillt á jákvætt gildi, verður þessum safnskrám eytt sjáfkrafa eftir þeim tiltekna fjölda daga.
|
||||
bootstrap_timeline_accounts: Þessir notendaaðgangar verða festir efst í meðmælum til nýrra notenda um að fylgjast með þeim.
|
||||
closed_registrations_message: Birtist þegar lokað er á nýskráningar
|
||||
content_cache_retention_period: Öllum færslum af öðrum netþjónum (þar með taldar endurbirtingar og svör) verður eytt eftir uppgefinn fjölda daga, án tillits til gagnvirkni staðværra notenda við þessar færslur. Þetta á einnig við um færslur sem notandinn hefur merkt sem bókamerki eða eftirlæti. Beinar tilvísanir (einkaspjall) milli notenda af mismunandi netþjónum munu einnig tapast og er engin leið til að endurheimta þær. Notkun á þessari stillingu er einungis ætluð sérstilltum netþjónum og mun skemma fyrir notendum ef þetta er sett upp fyrir almenna notkun.
|
||||
custom_css: Þú getur virkjað sérsniðna stíla í vefútgáfu Mastodon.
|
||||
mascot: Þetta tekyr yfir myndskreytinguna í ítarlega vefviðmótinu.
|
||||
media_cache_retention_period: Myndefnisskrár úr færslum sem gerðar eru af fjartengdum notendum eru geymdar á netþjóninum þínum. Þegar þetta er stillt á jákvætt gildi, verður þessum skrám eytt sjáfkrafa eftir þeim tiltekna fjölda daga. Ef beðið er um myndefnið eftir að því er eytt, mun það verða sótt aftur ef frumgögnin eru ennþá aðgengileg. Vegna takmarkana á hversu oft forskoðunarspjöld tengla eru sótt á utanaðkomandi netþjóna, þá er mælt með því að setja þetta gildi á að minnsta kosti 14 daga, annars gæti mistekist að uppfæra forskoðunarspjöld tengla eftir þörfum fyrir þann tíma.
|
||||
peers_api_enabled: Listi yfir þau lénaheiti sem þessi netþjónn hefur rekist á í skýjasambandinu. Engin gögn eru hér sem gefa til kynna hvort þú sért í sambandi við tiltekinn netþjón, bara að netþjónninn þinn viti um hann. Þetta er notað af þjónustum sem safna tölfræði um skýjasambönd á almennan hátt.
|
||||
profile_directory: Notendamappan telur upp alla þá notendur sem hafa valið að vera uppgötvanlegir.
|
||||
require_invite_text: Þegar nýskráningar krefjast handvirks samþykkis, þá skal gera textann í “Hvers vegna viltu taka þátt?” að kröfu en ekki valkvæðan
|
||||
|
|
|
@ -74,6 +74,9 @@ lt:
|
|||
warn: Slėpti filtruojamą turinį po įspėjimu, paminint filtro pavadinimą
|
||||
form_admin_settings:
|
||||
activity_api_enabled: Vietinių paskelbtų įrašų, aktyvių naudotojų ir naujų registracijų skaičiai kas savaitę
|
||||
backups_retention_period: Naudotojai gali generuoti savo įrašų archyvus, kuriuos vėliau galės atsisiųsti. Nustačius teigiamą reikšmę, šie archyvai po nurodyto dienų skaičiaus bus automatiškai ištrinti iš saugyklos.
|
||||
content_cache_retention_period: Visi įrašai iš kitų serverių (įskaitant pakėlimus ir atsakymus) bus ištrinti po nurodyto dienų skaičiaus, neatsižvelgiant į bet kokią vietinio naudotojo sąveiką su tais įrašais. Tai taikoma ir tiems įrašams, kuriuos vietinis naudotojas yra pažymėjęs kaip žymes ar mėgstamus. Privačios paminėjimai tarp naudotojų iš skirtingų instancijų taip pat bus prarastos ir jų bus neįmanoma atkurti. Šis nustatymas skirtas naudoti ypatingos paskirties instancijose, o įgyvendinus jį bendram naudojimui, pažeidžiami daugelio naudotojų lūkesčiai.
|
||||
media_cache_retention_period: Nuotolinių naudotojų įrašytų įrašų medijos failai talpinami tavo serveryje. Nustačius teigiamą reikšmę, medijos bus ištrinamos po nurodyto dienų skaičiaus. Jei medijos duomenų bus paprašyta po to, kai jie bus ištrinti, jie bus atsiųsti iš naujo, jei šaltinio turinys vis dar prieinamas. Dėl apribojimų, susijusių su nuorodų peržiūros kortelių apklausos dažnumu trečiųjų šalių svetainėse, rekomenduojama nustatyti šią reikšmę ne trumpesnę kaip 14 dienų, kitaip nuorodų peržiūros kortelės nebus atnaujinamos pagal pareikalavimą iki to laiko.
|
||||
peers_api_enabled: Domenų pavadinimų sąrašas, su kuriais šis serveris susidūrė fediverse. Čia nėra duomenų apie tai, ar tu bendrauji su tam tikru serveriu, tik apie tai, kad tavo serveris apie jį žino. Tai naudojama tarnybose, kurios renka federacijos statistiką bendrąja prasme.
|
||||
site_contact_email: Kaip žmonės gali su tavimi susisiekti teisiniais ar pagalbos užklausimais.
|
||||
site_contact_username: Kaip žmonės gali tave pasiekti Mastodon.
|
||||
|
@ -145,6 +148,7 @@ lt:
|
|||
form_admin_settings:
|
||||
activity_api_enabled: Skelbti suvestinį statistiką apie naudotojų veiklą per API
|
||||
bootstrap_timeline_accounts: Visada rekomenduoti šias paskyras naujiems naudotojams
|
||||
content_cache_retention_period: Nuotolinio turinio saugojimo laikotarpis
|
||||
custom_css: Pasirinktinis CSS
|
||||
mascot: Pasirinktinis talismanas (pasenęs)
|
||||
registrations_mode: Kas gali užsiregistruoti
|
||||
|
|
|
@ -751,6 +751,7 @@ sv:
|
|||
desc_html: Detta bygger på externa skript från hCaptcha vilket kan vara ett säkerhets- och integritetsproblem. Dessutom,<strong>kan detta göra registreringsprocessen betydligt mindre tillgänglig för vissa personer (särskilt funktionsnedsatta)</strong>. Av dessa skäl bör du överväga alternativa åtgärder såsom godkänningsbaserad eller inbjudningsbaserad registrering.
|
||||
title: Kräv att nya användare löser en CAPTCHA för att erkänna sitt konto
|
||||
content_retention:
|
||||
danger_zone: Farozon
|
||||
preamble: Kontrollera hur användargenererat innehåll lagras i Mastodon.
|
||||
title: Bibehållande av innehåll
|
||||
default_noindex:
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
version: '3'
|
||||
services:
|
||||
db:
|
||||
restart: always
|
||||
|
|
|
@ -16,7 +16,7 @@ module Devise
|
|||
if resource && !resource.otp_required_for_login?
|
||||
success!(resource)
|
||||
else
|
||||
fail(:invalid)
|
||||
fail(:invalid) # rubocop:disable Style/SignalException -- method is from Warden::Strategies::Base
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ module Devise
|
|||
if resource && !resource.otp_required_for_login?
|
||||
success!(resource)
|
||||
else
|
||||
fail(:invalid)
|
||||
fail(:invalid) # rubocop:disable Style/SignalException -- method is from Warden::Strategies::Base
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -191,24 +191,24 @@ module Mastodon::CLI
|
|||
|
||||
def vacuum_and_analyze_statuses
|
||||
if options[:compress_database]
|
||||
say('Run VACUUM FULL ANALYZE to statuses...')
|
||||
say('Running "VACUUM FULL ANALYZE statuses"...')
|
||||
ActiveRecord::Base.connection.execute('VACUUM FULL ANALYZE statuses')
|
||||
say('Run REINDEX to statuses...')
|
||||
say('Running "REINDEX TABLE statuses"...')
|
||||
ActiveRecord::Base.connection.execute('REINDEX TABLE statuses')
|
||||
else
|
||||
say('Run ANALYZE to statuses...')
|
||||
say('Running "ANALYZE statuses"...')
|
||||
ActiveRecord::Base.connection.execute('ANALYZE statuses')
|
||||
end
|
||||
end
|
||||
|
||||
def vacuum_and_analyze_conversations
|
||||
if options[:compress_database]
|
||||
say('Run VACUUM FULL ANALYZE to conversations...')
|
||||
say('Running "VACUUM FULL ANALYZE conversations"...')
|
||||
ActiveRecord::Base.connection.execute('VACUUM FULL ANALYZE conversations')
|
||||
say('Run REINDEX to conversations...')
|
||||
say('Running "REINDEX TABLE conversations"...')
|
||||
ActiveRecord::Base.connection.execute('REINDEX TABLE conversations')
|
||||
else
|
||||
say('Run ANALYZE to conversations...')
|
||||
say('Running "ANALYZE conversations"...')
|
||||
ActiveRecord::Base.connection.execute('ANALYZE conversations')
|
||||
end
|
||||
end
|
||||
|
|
|
@ -79,7 +79,7 @@ RSpec.describe 'credentials API' do
|
|||
end
|
||||
|
||||
describe 'with invalid data' do
|
||||
let(:params) { { note: "This is too long. #{'a' * Account::MAX_NOTE_LENGTH}" } }
|
||||
let(:params) { { note: "This is too long. #{'a' * Account::NOTE_LENGTH_LIMIT}" } }
|
||||
|
||||
it 'returns http unprocessable entity' do
|
||||
subject
|
||||
|
|
Loading…
Reference in a new issue