All cybrespace changes through 5/28
BIN
app/javascript/images/background-cybre.png
Normal file
After Width: | Height: | Size: 232 KiB |
BIN
app/javascript/images/logo-cybre.png
Normal file
After Width: | Height: | Size: 184 KiB |
|
@ -140,7 +140,7 @@ export default class StatusActionBar extends ImmutablePureComponent {
|
||||||
<div className='status__action-bar'>
|
<div className='status__action-bar'>
|
||||||
<IconButton className='status__action-bar-button' title={replyTitle} icon={replyIcon} onClick={this.handleReplyClick} />
|
<IconButton className='status__action-bar-button' title={replyTitle} icon={replyIcon} onClick={this.handleReplyClick} />
|
||||||
<IconButton className='status__action-bar-button' disabled={reblogDisabled} active={status.get('reblogged')} title={reblogDisabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} />
|
<IconButton className='status__action-bar-button' disabled={reblogDisabled} active={status.get('reblogged')} title={reblogDisabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} />
|
||||||
<IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} />
|
<IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='floppy-o' onClick={this.handleFavouriteClick} />
|
||||||
|
|
||||||
<div className='status__action-bar-dropdown'>
|
<div className='status__action-bar-dropdown'>
|
||||||
<DropdownMenu items={menu} icon='ellipsis-h' size={18} direction='right' ariaLabel='More' />
|
<DropdownMenu items={menu} icon='ellipsis-h' size={18} direction='right' ariaLabel='More' />
|
||||||
|
|
|
@ -10,19 +10,19 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
heading: { id: 'getting_started.heading', defaultMessage: 'Getting started' },
|
heading: { id: 'getting_started.heading', defaultMessage: 'Getting started' },
|
||||||
home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' },
|
home_timeline: { id: 'tabs_bar.home', defaultMessage: '/timelines/home' },
|
||||||
notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' },
|
notifications: { id: 'tabs_bar.notifications', defaultMessage: '~/.notifications' },
|
||||||
public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' },
|
public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: '/timelines/federated' },
|
||||||
navigation_subheading: { id: 'column_subheading.navigation', defaultMessage: 'Navigation' },
|
navigation_subheading: { id: 'column_subheading.navigation', defaultMessage: 'Navigation' },
|
||||||
settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' },
|
settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' },
|
||||||
community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' },
|
community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: '/timelines/local' },
|
||||||
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
|
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
|
||||||
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },
|
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: '~/.follow-requests' },
|
||||||
sign_out: { id: 'navigation_bar.logout', defaultMessage: 'Logout' },
|
sign_out: { id: 'navigation_bar.logout', defaultMessage: 'exit' },
|
||||||
favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },
|
favourites: { id: 'navigation_bar.favourites', defaultMessage: '~/.florps' },
|
||||||
blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' },
|
blocks: { id: 'navigation_bar.blocks', defaultMessage: '~/.blocked' },
|
||||||
mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },
|
mutes: { id: 'navigation_bar.mutes', defaultMessage: '~/.muted' },
|
||||||
info: { id: 'navigation_bar.info', defaultMessage: 'Extended information' },
|
info: { id: 'navigation_bar.info', defaultMessage: '/about/more' },
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapStateToProps = state => ({
|
const mapStateToProps = state => ({
|
||||||
|
@ -65,7 +65,7 @@ export default class GettingStarted extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
navItems = navItems.concat([
|
navItems = navItems.concat([
|
||||||
<ColumnLink key='4' icon='star' text={intl.formatMessage(messages.favourites)} to='/favourites' />,
|
<ColumnLink key='4' icon='floppy-o' text={intl.formatMessage(messages.favourites)} to='/favourites' />,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (me.get('locked')) {
|
if (me.get('locked')) {
|
||||||
|
|
|
@ -39,7 +39,7 @@ export default class Notification extends ImmutablePureComponent {
|
||||||
<div className='notification notification-favourite'>
|
<div className='notification notification-favourite'>
|
||||||
<div className='notification__message'>
|
<div className='notification__message'>
|
||||||
<div className='notification__favourite-icon-wrapper'>
|
<div className='notification__favourite-icon-wrapper'>
|
||||||
<i className='fa fa-fw fa-star star-icon' />
|
<i className='fa fa-fw fa-floppy-o star-icon'/>
|
||||||
</div>
|
</div>
|
||||||
<FormattedMessage id='notification.favourite' defaultMessage='{name} favourited your status' values={{ name: link }} />
|
<FormattedMessage id='notification.favourite' defaultMessage='{name} favourited your status' values={{ name: link }} />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -82,7 +82,7 @@ export default class ActionBar extends React.PureComponent {
|
||||||
<div className='detailed-status__action-bar'>
|
<div className='detailed-status__action-bar'>
|
||||||
<div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.reply)} icon={status.get('in_reply_to_id', null) === null ? 'reply' : 'reply-all'} onClick={this.handleReplyClick} /></div>
|
<div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.reply)} icon={status.get('in_reply_to_id', null) === null ? 'reply' : 'reply-all'} onClick={this.handleReplyClick} /></div>
|
||||||
<div className='detailed-status__button'><IconButton disabled={reblog_disabled} active={status.get('reblogged')} title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} /></div>
|
<div className='detailed-status__button'><IconButton disabled={reblog_disabled} active={status.get('reblogged')} title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} /></div>
|
||||||
<div className='detailed-status__button'><IconButton animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} activeStyle={{ color: '#ca8f04' }} /></div>
|
<div className='detailed-status__button'><IconButton animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='floppy-o' onClick={this.handleFavouriteClick} activeStyle={{ color: '#ca8f04' }} /></div>
|
||||||
|
|
||||||
<div className='detailed-status__action-bar-dropdown'>
|
<div className='detailed-status__action-bar-dropdown'>
|
||||||
<DropdownMenu size={18} icon='ellipsis-h' items={menu} direction='left' ariaLabel='More' />
|
<DropdownMenu size={18} icon='ellipsis-h' items={menu} direction='left' ariaLabel='More' />
|
||||||
|
|
|
@ -76,7 +76,7 @@ export default class DetailedStatus extends ImmutablePureComponent {
|
||||||
<FormattedNumber value={status.get('reblogs_count')} />
|
<FormattedNumber value={status.get('reblogs_count')} />
|
||||||
</span>
|
</span>
|
||||||
</Link> · <Link to={`/statuses/${status.get('id')}/favourites`} className='detailed-status__link'>
|
</Link> · <Link to={`/statuses/${status.get('id')}/favourites`} className='detailed-status__link'>
|
||||||
<i className='fa fa-star' />
|
<i className='fa fa-floppy-o' />
|
||||||
<span className='detailed-status__favorites'>
|
<span className='detailed-status__favorites'>
|
||||||
<FormattedNumber value={status.get('favourites_count')} />
|
<FormattedNumber value={status.get('favourites_count')} />
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"account.block": "Block @{name}",
|
"account.block": "Block @{name}",
|
||||||
"account.block_domain": "Hide everything from {domain}",
|
"account.block_domain": "Hide everything from {domain}",
|
||||||
"account.disclaimer": "This user is from another instance. This number may be larger.",
|
"account.disclaimer": "This user is from another instance. This number may be larger.",
|
||||||
"account.edit_profile": "Edit profile",
|
"account.edit_profile": "edit ~/.profile",
|
||||||
"account.follow": "Follow",
|
"account.follow": "Follow",
|
||||||
"account.followers": "Followers",
|
"account.followers": "Followers",
|
||||||
"account.follows": "Follows",
|
"account.follows": "Follows",
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
"account.media": "Media",
|
"account.media": "Media",
|
||||||
"account.mention": "Mention @{name}",
|
"account.mention": "Mention @{name}",
|
||||||
"account.mute": "Mute @{name}",
|
"account.mute": "Mute @{name}",
|
||||||
"account.posts": "Posts",
|
"account.posts": "Pings",
|
||||||
"account.report": "Report @{name}",
|
"account.report": "Report @{name}",
|
||||||
"account.requested": "Awaiting approval",
|
"account.requested": "Awaiting approval",
|
||||||
"account.unblock": "Unblock @{name}",
|
"account.unblock": "Unblock @{name}",
|
||||||
|
@ -18,14 +18,14 @@
|
||||||
"account.unfollow": "Unfollow",
|
"account.unfollow": "Unfollow",
|
||||||
"account.unmute": "Unmute @{name}",
|
"account.unmute": "Unmute @{name}",
|
||||||
"boost_modal.combo": "You can press {combo} to skip this next time",
|
"boost_modal.combo": "You can press {combo} to skip this next time",
|
||||||
"column.blocks": "Blocked users",
|
"column.blocks": "~/.blocked",
|
||||||
"column.community": "Local timeline",
|
"column.community": "/timelines/local",
|
||||||
"column.favourites": "Favourites",
|
"column.favourites": "~/.florps",
|
||||||
"column.follow_requests": "Follow requests",
|
"column.follow_requests": "~/.follow-requests",
|
||||||
"column.home": "Home",
|
"column.home": "/timelines/home",
|
||||||
"column.mutes": "Muted users",
|
"column.mutes": "~/.muted",
|
||||||
"column.notifications": "Notifications",
|
"column.notifications": "~/.notifications",
|
||||||
"column.public": "Federated timeline",
|
"column.public": "/timelines/federated",
|
||||||
"column_back_button.label": "Back",
|
"column_back_button.label": "Back",
|
||||||
"column_header.pin": "Pin",
|
"column_header.pin": "Pin",
|
||||||
"column_header.unpin": "Unpin",
|
"column_header.unpin": "Unpin",
|
||||||
|
@ -33,9 +33,9 @@
|
||||||
"column_subheading.settings": "Settings",
|
"column_subheading.settings": "Settings",
|
||||||
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
|
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
|
||||||
"compose_form.lock_disclaimer.lock": "locked",
|
"compose_form.lock_disclaimer.lock": "locked",
|
||||||
"compose_form.placeholder": "What is on your mind?",
|
"compose_form.placeholder": "What is in your databanks?",
|
||||||
"compose_form.privacy_disclaimer": "Your post will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is not a public post, and it may be boosted or otherwise made visible to unintended recipients.",
|
"compose_form.privacy_disclaimer": "Your post will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is not a public post, and it may be boosted or otherwise made visible to unintended recipients.",
|
||||||
"compose_form.publish": "Toot",
|
"compose_form.publish": "Ping",
|
||||||
"compose_form.publish_loud": "{publish}!",
|
"compose_form.publish_loud": "{publish}!",
|
||||||
"compose_form.sensitive": "Mark media as sensitive",
|
"compose_form.sensitive": "Mark media as sensitive",
|
||||||
"compose_form.spoiler": "Hide text behind warning",
|
"compose_form.spoiler": "Hide text behind warning",
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
"emoji_button.travel": "Travel & Places",
|
"emoji_button.travel": "Travel & Places",
|
||||||
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
|
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
|
||||||
"empty_column.hashtag": "There is nothing in this hashtag yet.",
|
"empty_column.hashtag": "There is nothing in this hashtag yet.",
|
||||||
"empty_column.home": "You aren't following anyone yet. Visit {public} or use search to get started and meet other users.",
|
"empty_column.home": "You aren't following anyone yet. Visit {public} or use query to get started and meet other users.",
|
||||||
"empty_column.home.inactivity": "Your home feed is empty. If you have been inactive for a while, it will be regenerated for you soon.",
|
"empty_column.home.inactivity": "Your home feed is empty. If you have been inactive for a while, it will be regenerated for you soon.",
|
||||||
"empty_column.home.public_timeline": "the public timeline",
|
"empty_column.home.public_timeline": "the public timeline",
|
||||||
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
|
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
|
||||||
|
@ -76,24 +76,24 @@
|
||||||
"home.column_settings.advanced": "Advanced",
|
"home.column_settings.advanced": "Advanced",
|
||||||
"home.column_settings.basic": "Basic",
|
"home.column_settings.basic": "Basic",
|
||||||
"home.column_settings.filter_regex": "Filter out by regular expressions",
|
"home.column_settings.filter_regex": "Filter out by regular expressions",
|
||||||
"home.column_settings.show_reblogs": "Show boosts",
|
"home.column_settings.show_reblogs": "Show relays",
|
||||||
"home.column_settings.show_replies": "Show replies",
|
"home.column_settings.show_replies": "Show replies",
|
||||||
"home.settings": "Column settings",
|
"home.settings": "Column settings",
|
||||||
"lightbox.close": "Close",
|
"lightbox.close": "Close",
|
||||||
"loading_indicator.label": "Loading...",
|
"loading_indicator.label": "Loading...",
|
||||||
"media_gallery.toggle_visible": "Toggle visibility",
|
"media_gallery.toggle_visible": "Toggle visibility",
|
||||||
"missing_indicator.label": "Not found",
|
"missing_indicator.label": "Not found",
|
||||||
"navigation_bar.blocks": "Blocked users",
|
"navigation_bar.blocks": "~/.blocks",
|
||||||
"navigation_bar.community_timeline": "Local timeline",
|
"navigation_bar.community_timeline": "/timelines/local",
|
||||||
"navigation_bar.edit_profile": "Edit profile",
|
"navigation_bar.edit_profile": "edit ~/.profile",
|
||||||
"navigation_bar.favourites": "Favourites",
|
"navigation_bar.favourites": "~/.florps",
|
||||||
"navigation_bar.follow_requests": "Follow requests",
|
"navigation_bar.follow_requests": "~/.follow-requests",
|
||||||
"navigation_bar.info": "About this instance",
|
"navigation_bar.info": "/about/more",
|
||||||
"navigation_bar.logout": "Logout",
|
"navigation_bar.logout": "Jack out",
|
||||||
"navigation_bar.mutes": "Muted users",
|
"navigation_bar.mutes": "~/.muted",
|
||||||
"navigation_bar.preferences": "Preferences",
|
"navigation_bar.preferences": "Preferences",
|
||||||
"navigation_bar.public_timeline": "Federated timeline",
|
"navigation_bar.public_timeline": "/timelines/federated",
|
||||||
"notification.favourite": "{name} favourited your status",
|
"notification.favourite": "{name} florped your ping",
|
||||||
"notification.follow": "{name} followed you",
|
"notification.follow": "{name} followed you",
|
||||||
"notification.mention": "{name} mentioned you",
|
"notification.mention": "{name} mentioned you",
|
||||||
"notification.reblog": "{name} boosted your status",
|
"notification.reblog": "{name} boosted your status",
|
||||||
|
@ -140,18 +140,18 @@
|
||||||
"report.placeholder": "Additional comments",
|
"report.placeholder": "Additional comments",
|
||||||
"report.submit": "Submit",
|
"report.submit": "Submit",
|
||||||
"report.target": "Reporting",
|
"report.target": "Reporting",
|
||||||
"search.placeholder": "Search",
|
"search.placeholder": "Query...",
|
||||||
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
|
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
|
||||||
"status.cannot_reblog": "This post cannot be boosted",
|
"status.cannot_reblog": "This ping cannot be relayed",
|
||||||
"status.delete": "Delete",
|
"status.delete": "Delete",
|
||||||
"status.favourite": "Favourite",
|
"status.favourite": "Florp",
|
||||||
"status.load_more": "Load more",
|
"status.load_more": "Load more",
|
||||||
"status.media_hidden": "Media hidden",
|
"status.media_hidden": "Media hidden",
|
||||||
"status.mention": "Mention @{name}",
|
"status.mention": "Mention @{name}",
|
||||||
"status.mute_conversation": "Mute conversation",
|
"status.mute_conversation": "Mute conversation",
|
||||||
"status.open": "Expand this status",
|
"status.open": "Expand this status",
|
||||||
"status.reblog": "Boost",
|
"status.reblog": "Relay",
|
||||||
"status.reblogged_by": "{name} boosted",
|
"status.reblogged_by": "{name} relayed",
|
||||||
"status.reply": "Reply",
|
"status.reply": "Reply",
|
||||||
"status.replyAll": "Reply to thread",
|
"status.replyAll": "Reply to thread",
|
||||||
"status.report": "Report @{name}",
|
"status.report": "Report @{name}",
|
||||||
|
|
|
@ -12,13 +12,25 @@ body {
|
||||||
@media screen and (min-width: 1300px) {
|
@media screen and (min-width: 1300px) {
|
||||||
.column {
|
.column {
|
||||||
flex-grow: 1 !important;
|
flex-grow: 1 !important;
|
||||||
max-width: 400px;
|
max-width: 500px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drawer {
|
.drawer {
|
||||||
width: 17%;
|
width: 20%;
|
||||||
max-width: 400px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.columns-area {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1900px) {
|
||||||
|
.column, .drawer {
|
||||||
|
width: 400px;
|
||||||
|
border-radius: 4px;
|
||||||
|
height: 96vh;
|
||||||
|
margin-top: 2vh;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.muted {
|
.muted {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class StatusLengthValidator < ActiveModel::Validator
|
class StatusLengthValidator < ActiveModel::Validator
|
||||||
MAX_CHARS = 500
|
MAX_CHARS = 512
|
||||||
|
|
||||||
def validate(status)
|
def validate(status)
|
||||||
return unless status.local? && !status.reblog?
|
return unless status.local? && !status.reblog?
|
||||||
|
|
|
@ -9,4 +9,4 @@
|
||||||
%li= link_to t('about.get_started'), new_user_registration_path
|
%li= link_to t('about.get_started'), new_user_registration_path
|
||||||
%li= link_to t('auth.login'), new_user_session_path
|
%li= link_to t('auth.login'), new_user_session_path
|
||||||
%li= link_to t('about.terms'), terms_path
|
%li= link_to t('about.terms'), terms_path
|
||||||
%li= link_to t('about.source_code'), 'https://github.com/tootsuite/mastodon'
|
%li= link_to t('about.source_code'), 'https://github.com/chronister/mastodon'
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
.wrapper
|
.wrapper
|
||||||
%h1
|
%h1
|
||||||
= image_tag asset_pack_path('logo.png')
|
= image_tag asset_pack_path('logo-cybre.png')
|
||||||
= Setting.site_title
|
= Setting.site_title
|
||||||
|
|
||||||
%p!= t('about.about_mastodon')
|
%p!= t('about.about_mastodon')
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
.info
|
.info
|
||||||
= link_to t('auth.login'), new_user_session_path, class: 'webapp-btn'
|
= link_to t('auth.login'), new_user_session_path, class: 'webapp-btn'
|
||||||
·
|
·
|
||||||
= link_to t('about.other_instances'), 'https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/List-of-Mastodon-instances.md'
|
= link_to t('about.other_instances'), 'https://instances.mastodon.xyz/'
|
||||||
·
|
·
|
||||||
= link_to t('about.about_this'), about_more_path
|
= link_to t('about.about_this'), about_more_path
|
||||||
|
|
||||||
|
@ -82,6 +82,6 @@
|
||||||
·
|
·
|
||||||
= link_to t('about.apps'), 'https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md'
|
= link_to t('about.apps'), 'https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md'
|
||||||
·
|
·
|
||||||
= link_to t('about.source_code'), 'https://github.com/tootsuite/mastodon'
|
= link_to t('about.source_code'), 'https://github.com/chronister/mastodon'
|
||||||
·
|
·
|
||||||
= link_to t('about.other_instances'), 'https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/List-of-Mastodon-instances.md'
|
= link_to t('about.other_instances'), 'https://instances.mastodon.xyz/'
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
.sidebar-wrapper
|
.sidebar-wrapper
|
||||||
.sidebar
|
.sidebar
|
||||||
= link_to root_path do
|
= link_to root_path do
|
||||||
= image_tag asset_pack_path('logo.png'), class: 'logo'
|
= image_tag asset_pack_path('logo-cybre.png'), class: 'logo'
|
||||||
|
|
||||||
= render_navigation
|
= render_navigation
|
||||||
.content-wrapper
|
.content-wrapper
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
.logo-container
|
.logo-container
|
||||||
%h1
|
%h1
|
||||||
= link_to root_path do
|
= link_to root_path do
|
||||||
= image_tag asset_pack_path('logo.png')
|
= image_tag asset_pack_path('logo-cybre.png')
|
||||||
|
|
||||||
.form-container
|
.form-container
|
||||||
= render 'flashes'
|
= render 'flashes'
|
||||||
|
|
|
@ -1,30 +1,30 @@
|
||||||
---
|
---
|
||||||
en:
|
en:
|
||||||
about:
|
about:
|
||||||
about_mastodon: Mastodon is a <em>free, open-source</em> social network. A <em>decentralized</em> alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication. Pick a server that you trust — whichever you choose, you can interact with everyone else. Anyone can run their own Mastodon instance and participate in the <em>social network</em> seamlessly.
|
about_mastodon: Cybrespace is an instance of Mastodon, a <em>free, open-source</em> social network. A <em>decentralized</em> alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication. Pick a server that you trust — whichever you choose, you can interact with everyone else. Anyone can run their own Mastodon instance and participate in the <em>social network</em> seamlessly.
|
||||||
about_this: About this instance
|
about_this: About this instance
|
||||||
apps: Apps
|
apps: Apps
|
||||||
business_email: 'Business e-mail:'
|
business_email: 'Business e-mail:'
|
||||||
closed_registrations: Registrations are currently closed on this instance.
|
closed_registrations: Registrations are currently closed on this instance.
|
||||||
contact: Contact
|
contact: Contact
|
||||||
description_headline: What is %{domain}?
|
description_headline: What's special about %{domain}?
|
||||||
domain_count_after: other instances
|
domain_count_after: other instances
|
||||||
domain_count_before: Connected to
|
domain_count_before: Connected to
|
||||||
features:
|
features:
|
||||||
api: Open API for apps and services
|
api: Open API for apps and services
|
||||||
blocks: Rich block and muting tools
|
blocks: Rich block and muting tools
|
||||||
characters: 500 characters per post
|
characters: 512 characters per post
|
||||||
chronology: Timelines are chronological
|
chronology: Timelines are chronological
|
||||||
ethics: 'Ethical design: no ads, no tracking'
|
ethics: 'Ethical design: no ads, no tracking'
|
||||||
gifv: GIFV sets and short videos
|
gifv: GIFV sets and short videos
|
||||||
privacy: Granular, per-post privacy settings
|
privacy: Granular, per-ping privacy settings
|
||||||
public: Public timelines
|
public: Public timelines
|
||||||
features_headline: What sets Mastodon apart
|
features_headline: What sets Mastodon apart
|
||||||
get_started: Get started
|
get_started: Get started
|
||||||
links: Links
|
links: Links
|
||||||
other_instances: Other instances
|
other_instances: Other instances
|
||||||
source_code: Source code
|
source_code: Source code
|
||||||
status_count_after: statuses
|
status_count_after: pings
|
||||||
status_count_before: Who authored
|
status_count_before: Who authored
|
||||||
terms: Terms
|
terms: Terms
|
||||||
user_count_after: users
|
user_count_after: users
|
||||||
|
@ -37,7 +37,7 @@ en:
|
||||||
nothing_here: There is nothing here!
|
nothing_here: There is nothing here!
|
||||||
people_followed_by: People whom %{name} follows
|
people_followed_by: People whom %{name} follows
|
||||||
people_who_follow: People who follow %{name}
|
people_who_follow: People who follow %{name}
|
||||||
posts: Posts
|
posts: Pings
|
||||||
remote_follow: Remote follow
|
remote_follow: Remote follow
|
||||||
reserved_username: The username is reserved
|
reserved_username: The username is reserved
|
||||||
unfollow: Unfollow
|
unfollow: Unfollow
|
||||||
|
@ -205,9 +205,9 @@ en:
|
||||||
delete_account_html: If you wish to delete your account, you can <a href="%{path}">proceed here</a>. You will be asked for confirmation.
|
delete_account_html: If you wish to delete your account, you can <a href="%{path}">proceed here</a>. You will be asked for confirmation.
|
||||||
didnt_get_confirmation: Didn't receive confirmation instructions?
|
didnt_get_confirmation: Didn't receive confirmation instructions?
|
||||||
forgot_password: Forgot your password?
|
forgot_password: Forgot your password?
|
||||||
login: Log in
|
login: Jack in
|
||||||
logout: Logout
|
logout: Jack out
|
||||||
register: Sign up
|
register: Apply for upload
|
||||||
resend_confirmation: Resend confirmation instructions
|
resend_confirmation: Resend confirmation instructions
|
||||||
reset_password: Reset password
|
reset_password: Reset password
|
||||||
set_new_password: Set new password
|
set_new_password: Set new password
|
||||||
|
@ -255,7 +255,7 @@ en:
|
||||||
storage: Media storage
|
storage: Media storage
|
||||||
followers:
|
followers:
|
||||||
domain: Domain
|
domain: Domain
|
||||||
explanation_html: If you want to ensure the privacy of your statuses, you must be aware of who is following you. <strong>Your private statuses are delivered to all instances where you have followers</strong>. You may wish to review them, and remove followers if you do not trust your privacy to be respected by the staff or software of those instances.
|
explanation_html: If you want to ensure the privacy of your pings , you must be aware of who is following you. <strong>Your private pings are delivered to all instances where you have followers</strong>. You may wish to review them, and remove followers if you do not trust your privacy to be respected by the staff or software of those instances.
|
||||||
followers_count: Number of followers
|
followers_count: Number of followers
|
||||||
lock_link: Lock your account
|
lock_link: Lock your account
|
||||||
purge: Remove from followers
|
purge: Remove from followers
|
||||||
|
@ -263,7 +263,7 @@ en:
|
||||||
one: In the process of soft-blocking followers from one domain...
|
one: In the process of soft-blocking followers from one domain...
|
||||||
other: In the process of soft-blocking followers from %{count} domains...
|
other: In the process of soft-blocking followers from %{count} domains...
|
||||||
true_privacy_html: Please mind that <strong>true privacy can only be achieved with end-to-end encryption</strong>.
|
true_privacy_html: Please mind that <strong>true privacy can only be achieved with end-to-end encryption</strong>.
|
||||||
unlocked_warning_html: Anyone can follow you to immediately view your private statuses. %{lock_link} to be able to review and reject followers.
|
unlocked_warning_html: Anyone can follow you to immediately view your private pings. %{lock_link} to be able to review and reject followers.
|
||||||
unlocked_warning_title: Your account is not locked
|
unlocked_warning_title: Your account is not locked
|
||||||
generic:
|
generic:
|
||||||
changes_saved_msg: Changes successfully saved!
|
changes_saved_msg: Changes successfully saved!
|
||||||
|
@ -284,7 +284,7 @@ en:
|
||||||
landing_strip_signup_html: If you don't, you can <a href="%{sign_up_path}">sign up here</a>.
|
landing_strip_signup_html: If you don't, you can <a href="%{sign_up_path}">sign up here</a>.
|
||||||
media_attachments:
|
media_attachments:
|
||||||
validations:
|
validations:
|
||||||
images_and_video: Cannot attach a video to a status that already contains images
|
images_and_video: Cannot attach a video to a ping that already contains images
|
||||||
too_many: Cannot attach more than 4 files
|
too_many: Cannot attach more than 4 files
|
||||||
notification_mailer:
|
notification_mailer:
|
||||||
digest:
|
digest:
|
||||||
|
@ -297,8 +297,8 @@ en:
|
||||||
one: "1 new notification since your last visit \U0001F418"
|
one: "1 new notification since your last visit \U0001F418"
|
||||||
other: "%{count} new notifications since your last visit \U0001F418"
|
other: "%{count} new notifications since your last visit \U0001F418"
|
||||||
favourite:
|
favourite:
|
||||||
body: 'Your status was favourited by %{name}:'
|
body: 'Your ping was florped by %{name}:'
|
||||||
subject: "%{name} favourited your status"
|
subject: "%{name} florped your ping"
|
||||||
follow:
|
follow:
|
||||||
body: "%{name} is now following you!"
|
body: "%{name} is now following you!"
|
||||||
subject: "%{name} is now following you"
|
subject: "%{name} is now following you"
|
||||||
|
@ -309,8 +309,8 @@ en:
|
||||||
body: 'You were mentioned by %{name} in:'
|
body: 'You were mentioned by %{name} in:'
|
||||||
subject: You were mentioned by %{name}
|
subject: You were mentioned by %{name}
|
||||||
reblog:
|
reblog:
|
||||||
body: 'Your status was boosted by %{name}:'
|
body: 'Your ping was relayed by %{name}:'
|
||||||
subject: "%{name} boosted your status"
|
subject: "%{name} relayed your ping"
|
||||||
pagination:
|
pagination:
|
||||||
next: Next
|
next: Next
|
||||||
prev: Prev
|
prev: Prev
|
||||||
|
@ -324,7 +324,7 @@ en:
|
||||||
authorized_apps: Authorized apps
|
authorized_apps: Authorized apps
|
||||||
back: Back to Mastodon
|
back: Back to Mastodon
|
||||||
delete: Account deletion
|
delete: Account deletion
|
||||||
edit_profile: Edit profile
|
edit_profile: edit ~/.profile
|
||||||
export: Data export
|
export: Data export
|
||||||
followers: Authorized followers
|
followers: Authorized followers
|
||||||
import: Import
|
import: Import
|
||||||
|
@ -344,7 +344,7 @@ en:
|
||||||
unlisted_long: Everyone can see, but not listed on public timelines
|
unlisted_long: Everyone can see, but not listed on public timelines
|
||||||
stream_entries:
|
stream_entries:
|
||||||
click_to_show: Click to show
|
click_to_show: Click to show
|
||||||
reblogged: boosted
|
reblogged: relayed
|
||||||
sensitive_content: Sensitive content
|
sensitive_content: Sensitive content
|
||||||
time:
|
time:
|
||||||
formats:
|
formats:
|
||||||
|
|
|
@ -8,7 +8,7 @@ en:
|
||||||
one: <span class="name-counter">1</span> character left
|
one: <span class="name-counter">1</span> character left
|
||||||
other: <span class="name-counter">%{count}</span> characters left
|
other: <span class="name-counter">%{count}</span> characters left
|
||||||
header: PNG, GIF or JPG. At most 2MB. Will be downscaled to 700x335px
|
header: PNG, GIF or JPG. At most 2MB. Will be downscaled to 700x335px
|
||||||
locked: Requires you to manually approve followers and defaults post privacy to followers-only
|
locked: Requires you to manually approve followers and defaults ping privacy to followers-only
|
||||||
note:
|
note:
|
||||||
one: <span class="note-counter">1</span> character left
|
one: <span class="note-counter">1</span> character left
|
||||||
other: <span class="note-counter">%{count}</span> characters left
|
other: <span class="note-counter">%{count}</span> characters left
|
||||||
|
@ -46,11 +46,11 @@ en:
|
||||||
must_be_following: Block notifications from people you don't follow
|
must_be_following: Block notifications from people you don't follow
|
||||||
notification_emails:
|
notification_emails:
|
||||||
digest: Send digest e-mails
|
digest: Send digest e-mails
|
||||||
favourite: Send e-mail when someone favourites your status
|
favourite: Send e-mail when someone florps your ping
|
||||||
follow: Send e-mail when someone follows you
|
follow: Send e-mail when someone follows you
|
||||||
follow_request: Send e-mail when someone requests to follow you
|
follow_request: Send e-mail when someone requests to follow you
|
||||||
mention: Send e-mail when someone mentions you
|
mention: Send e-mail when someone mentions you
|
||||||
reblog: Send e-mail when someone boosts your status
|
reblog: Send e-mail when someone boosts your ping
|
||||||
'no': 'No'
|
'no': 'No'
|
||||||
required:
|
required:
|
||||||
mark: "*"
|
mark: "*"
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# For more information, see docs/Running-Mastodon/Administration-guide.md
|
# For more information, see docs/Running-Mastodon/Administration-guide.md
|
||||||
#
|
#
|
||||||
defaults: &defaults
|
defaults: &defaults
|
||||||
site_title: Mastodon
|
site_title: 'Cybrespace'
|
||||||
site_description: ''
|
site_description: ''
|
||||||
site_extended_description: ''
|
site_extended_description: ''
|
||||||
site_contact_username: ''
|
site_contact_username: ''
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||||
background: #282c37;
|
background: #181818 url("/background-cybre.png");
|
||||||
color: #9baec8;
|
color: #1ea21e;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="dialog">
|
<div class="dialog">
|
||||||
<img src="/oops.png" alt="Mastodon" />
|
<img src="/logo-cybre-glitch.gif" alt="Cybrespace" />
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h1>We're sorry, but something went wrong.</h1>
|
<h1>We're sorry, but something went wrong.</h1>
|
||||||
|
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 37 KiB |
BIN
public/background-cybre.png
Normal file
After Width: | Height: | Size: 232 KiB |
|
@ -3,7 +3,7 @@
|
||||||
<msapplication>
|
<msapplication>
|
||||||
<tile>
|
<tile>
|
||||||
<square150x150logo src="/mstile-150x150.png"/>
|
<square150x150logo src="/mstile-150x150.png"/>
|
||||||
<TileColor>#2b5797</TileColor>
|
<TileColor>#1ea21e</TileColor>
|
||||||
</tile>
|
</tile>
|
||||||
</msapplication>
|
</msapplication>
|
||||||
</browserconfig>
|
</browserconfig>
|
||||||
|
|
22
public/clock.js
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
document.addEventListener("DOMContentLoaded", function(event) {
|
||||||
|
updateClock();
|
||||||
|
setInterval(updateClock, 1000);
|
||||||
|
});
|
||||||
|
|
||||||
|
function updateClock() {
|
||||||
|
var clock = document.querySelector(".closed-registrations-message .clock");
|
||||||
|
var now = new Date();
|
||||||
|
var open = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
|
||||||
|
var ts = open.setUTCHours(19);
|
||||||
|
if (open - now < 0) {
|
||||||
|
open = new Date(ts + 24*60*60*1000);
|
||||||
|
}
|
||||||
|
var until = open - now;
|
||||||
|
var ms = until % 1000;
|
||||||
|
var s = Math.floor((until / 1000)) % 60;
|
||||||
|
var m = Math.floor((until / 1000 / 60)) % 60;
|
||||||
|
var h = Math.floor((until / 1000 / 60 / 60));
|
||||||
|
if (m < 10) m = "0" + m;
|
||||||
|
if (s < 10) s = "0" + s;
|
||||||
|
clock.innerHTML = h + ":" + m + ":" + s;
|
||||||
|
}
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 310 KiB |
BIN
public/logo-cybre-glitch.gif
Normal file
After Width: | Height: | Size: 818 KiB |
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 27 KiB |