All cybrespace changes through 5/28

shrike
Chronister 2017-05-29 00:09:12 +00:00 committed by beatrix-bitrot
parent 382572c213
commit 65528fc54e
27 changed files with 132 additions and 82 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

View File

@ -140,7 +140,7 @@ export default class StatusActionBar extends ImmutablePureComponent {
<div className='status__action-bar'>
<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 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'>
<DropdownMenu items={menu} icon='ellipsis-h' size={18} direction='right' ariaLabel='More' />

View File

@ -10,19 +10,19 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({
heading: { id: 'getting_started.heading', defaultMessage: 'Getting started' },
home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' },
notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' },
public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' },
home_timeline: { id: 'tabs_bar.home', defaultMessage: '/timelines/home' },
notifications: { id: 'tabs_bar.notifications', defaultMessage: '~/.notifications' },
public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: '/timelines/federated' },
navigation_subheading: { id: 'column_subheading.navigation', defaultMessage: 'Navigation' },
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' },
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },
sign_out: { id: 'navigation_bar.logout', defaultMessage: 'Logout' },
favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },
blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' },
mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },
info: { id: 'navigation_bar.info', defaultMessage: 'Extended information' },
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: '~/.follow-requests' },
sign_out: { id: 'navigation_bar.logout', defaultMessage: 'exit' },
favourites: { id: 'navigation_bar.favourites', defaultMessage: '~/.florps' },
blocks: { id: 'navigation_bar.blocks', defaultMessage: '~/.blocked' },
mutes: { id: 'navigation_bar.mutes', defaultMessage: '~/.muted' },
info: { id: 'navigation_bar.info', defaultMessage: '/about/more' },
});
const mapStateToProps = state => ({
@ -65,7 +65,7 @@ export default class GettingStarted extends ImmutablePureComponent {
}
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')) {

View File

@ -39,7 +39,7 @@ export default class Notification extends ImmutablePureComponent {
<div className='notification notification-favourite'>
<div className='notification__message'>
<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>
<FormattedMessage id='notification.favourite' defaultMessage='{name} favourited your status' values={{ name: link }} />
</div>

View File

@ -82,7 +82,7 @@ export default class ActionBar extends React.PureComponent {
<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 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'>
<DropdownMenu size={18} icon='ellipsis-h' items={menu} direction='left' ariaLabel='More' />

View File

@ -76,7 +76,7 @@ export default class DetailedStatus extends ImmutablePureComponent {
<FormattedNumber value={status.get('reblogs_count')} />
</span>
</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'>
<FormattedNumber value={status.get('favourites_count')} />
</span>

View File

@ -2,7 +2,7 @@
"account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}",
"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.followers": "Followers",
"account.follows": "Follows",
@ -10,7 +10,7 @@
"account.media": "Media",
"account.mention": "Mention @{name}",
"account.mute": "Mute @{name}",
"account.posts": "Posts",
"account.posts": "Pings",
"account.report": "Report @{name}",
"account.requested": "Awaiting approval",
"account.unblock": "Unblock @{name}",
@ -18,14 +18,14 @@
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
"boost_modal.combo": "You can press {combo} to skip this next time",
"column.blocks": "Blocked users",
"column.community": "Local timeline",
"column.favourites": "Favourites",
"column.follow_requests": "Follow requests",
"column.home": "Home",
"column.mutes": "Muted users",
"column.notifications": "Notifications",
"column.public": "Federated timeline",
"column.blocks": "~/.blocked",
"column.community": "/timelines/local",
"column.favourites": "~/.florps",
"column.follow_requests": "~/.follow-requests",
"column.home": "/timelines/home",
"column.mutes": "~/.muted",
"column.notifications": "~/.notifications",
"column.public": "/timelines/federated",
"column_back_button.label": "Back",
"column_header.pin": "Pin",
"column_header.unpin": "Unpin",
@ -33,9 +33,9 @@
"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.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.publish": "Toot",
"compose_form.publish": "Ping",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Mark media as sensitive",
"compose_form.spoiler": "Hide text behind warning",
@ -61,7 +61,7 @@
"emoji_button.travel": "Travel & Places",
"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.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.public_timeline": "the public timeline",
"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.basic": "Basic",
"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.settings": "Column settings",
"lightbox.close": "Close",
"loading_indicator.label": "Loading...",
"media_gallery.toggle_visible": "Toggle visibility",
"missing_indicator.label": "Not found",
"navigation_bar.blocks": "Blocked users",
"navigation_bar.community_timeline": "Local timeline",
"navigation_bar.edit_profile": "Edit profile",
"navigation_bar.favourites": "Favourites",
"navigation_bar.follow_requests": "Follow requests",
"navigation_bar.info": "About this instance",
"navigation_bar.logout": "Logout",
"navigation_bar.mutes": "Muted users",
"navigation_bar.blocks": "~/.blocks",
"navigation_bar.community_timeline": "/timelines/local",
"navigation_bar.edit_profile": "edit ~/.profile",
"navigation_bar.favourites": "~/.florps",
"navigation_bar.follow_requests": "~/.follow-requests",
"navigation_bar.info": "/about/more",
"navigation_bar.logout": "Jack out",
"navigation_bar.mutes": "~/.muted",
"navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline",
"notification.favourite": "{name} favourited your status",
"navigation_bar.public_timeline": "/timelines/federated",
"notification.favourite": "{name} florped your ping",
"notification.follow": "{name} followed you",
"notification.mention": "{name} mentioned you",
"notification.reblog": "{name} boosted your status",
@ -140,18 +140,18 @@
"report.placeholder": "Additional comments",
"report.submit": "Submit",
"report.target": "Reporting",
"search.placeholder": "Search",
"search.placeholder": "Query...",
"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.favourite": "Favourite",
"status.favourite": "Florp",
"status.load_more": "Load more",
"status.media_hidden": "Media hidden",
"status.mention": "Mention @{name}",
"status.mute_conversation": "Mute conversation",
"status.open": "Expand this status",
"status.reblog": "Boost",
"status.reblogged_by": "{name} boosted",
"status.reblog": "Relay",
"status.reblogged_by": "{name} relayed",
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",

View File

@ -12,12 +12,24 @@ body {
@media screen and (min-width: 1300px) {
.column {
flex-grow: 1 !important;
max-width: 400px;
max-width: 500px;
}
.drawer {
width: 17%;
max-width: 400px;
width: 20%;
}
.columns-area {
justify-content: center;
}
}
@media screen and (min-width: 1900px) {
.column, .drawer {
width: 400px;
border-radius: 4px;
height: 96vh;
margin-top: 2vh;
}
}

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true
class StatusLengthValidator < ActiveModel::Validator
MAX_CHARS = 500
MAX_CHARS = 512
def validate(status)
return unless status.local? && !status.reblog?

View File

@ -9,4 +9,4 @@
%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('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'

View File

@ -17,7 +17,7 @@
.wrapper
%h1
= image_tag asset_pack_path('logo.png')
= image_tag asset_pack_path('logo-cybre.png')
= Setting.site_title
%p!= t('about.about_mastodon')
@ -36,7 +36,7 @@
.info
= 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
@ -82,6 +82,6 @@
·
= 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/'

View File

@ -6,7 +6,7 @@
.sidebar-wrapper
.sidebar
= 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
.content-wrapper

View File

@ -6,7 +6,7 @@
.logo-container
%h1
= link_to root_path do
= image_tag asset_pack_path('logo.png')
= image_tag asset_pack_path('logo-cybre.png')
.form-container
= render 'flashes'

View File

@ -1,30 +1,30 @@
---
en:
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 &mdash; 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 &mdash; 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
apps: Apps
business_email: 'Business e-mail:'
closed_registrations: Registrations are currently closed on this instance.
contact: Contact
description_headline: What is %{domain}?
description_headline: What's special about %{domain}?
domain_count_after: other instances
domain_count_before: Connected to
features:
api: Open API for apps and services
blocks: Rich block and muting tools
characters: 500 characters per post
characters: 512 characters per post
chronology: Timelines are chronological
ethics: 'Ethical design: no ads, no tracking'
gifv: GIFV sets and short videos
privacy: Granular, per-post privacy settings
privacy: Granular, per-ping privacy settings
public: Public timelines
features_headline: What sets Mastodon apart
get_started: Get started
links: Links
other_instances: Other instances
source_code: Source code
status_count_after: statuses
status_count_after: pings
status_count_before: Who authored
terms: Terms
user_count_after: users
@ -37,7 +37,7 @@ en:
nothing_here: There is nothing here!
people_followed_by: People whom %{name} follows
people_who_follow: People who follow %{name}
posts: Posts
posts: Pings
remote_follow: Remote follow
reserved_username: The username is reserved
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.
didnt_get_confirmation: Didn't receive confirmation instructions?
forgot_password: Forgot your password?
login: Log in
logout: Logout
register: Sign up
login: Jack in
logout: Jack out
register: Apply for upload
resend_confirmation: Resend confirmation instructions
reset_password: Reset password
set_new_password: Set new password
@ -255,7 +255,7 @@ en:
storage: Media storage
followers:
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
lock_link: Lock your account
purge: Remove from followers
@ -263,7 +263,7 @@ en:
one: In the process of soft-blocking followers from one domain...
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>.
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
generic:
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>.
media_attachments:
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
notification_mailer:
digest:
@ -297,8 +297,8 @@ en:
one: "1 new notification since your last visit \U0001F418"
other: "%{count} new notifications since your last visit \U0001F418"
favourite:
body: 'Your status was favourited by %{name}:'
subject: "%{name} favourited your status"
body: 'Your ping was florped by %{name}:'
subject: "%{name} florped your ping"
follow:
body: "%{name} is now following you!"
subject: "%{name} is now following you"
@ -309,8 +309,8 @@ en:
body: 'You were mentioned by %{name} in:'
subject: You were mentioned by %{name}
reblog:
body: 'Your status was boosted by %{name}:'
subject: "%{name} boosted your status"
body: 'Your ping was relayed by %{name}:'
subject: "%{name} relayed your ping"
pagination:
next: Next
prev: Prev
@ -324,7 +324,7 @@ en:
authorized_apps: Authorized apps
back: Back to Mastodon
delete: Account deletion
edit_profile: Edit profile
edit_profile: edit ~/.profile
export: Data export
followers: Authorized followers
import: Import
@ -344,7 +344,7 @@ en:
unlisted_long: Everyone can see, but not listed on public timelines
stream_entries:
click_to_show: Click to show
reblogged: boosted
reblogged: relayed
sensitive_content: Sensitive content
time:
formats:

View File

@ -8,7 +8,7 @@ en:
one: <span class="name-counter">1</span> character left
other: <span class="name-counter">%{count}</span> characters left
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:
one: <span class="note-counter">1</span> character 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
notification_emails:
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_request: Send e-mail when someone requests to follow 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'
required:
mark: "*"

View File

@ -7,7 +7,7 @@
# For more information, see docs/Running-Mastodon/Administration-guide.md
#
defaults: &defaults
site_title: Mastodon
site_title: 'Cybrespace'
site_description: ''
site_extended_description: ''
site_contact_username: ''

View File

@ -8,8 +8,8 @@
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: #282c37;
color: #9baec8;
background: #181818 url("/background-cybre.png");
color: #1ea21e;
text-align: center;
margin: 0;
padding: 20px;
@ -33,7 +33,7 @@
<body>
<div class="dialog">
<img src="/oops.png" alt="Mastodon" />
<img src="/logo-cybre-glitch.gif" alt="Cybrespace" />
<div>
<h1>We're sorry, but something went wrong.</h1>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 37 KiB

BIN
public/background-cybre.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

View File

@ -3,7 +3,7 @@
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#2b5797</TileColor>
<TileColor>#1ea21e</TileColor>
</tile>
</msapplication>
</browserconfig>

22
public/clock.js Normal file
View 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;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 818 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 27 KiB