Cybrespace branding
|
@ -196,7 +196,7 @@ export default class StatusActionBar extends ImmutablePureComponent {
|
||||||
<div className='status__action-bar'>
|
<div className='status__action-bar'>
|
||||||
<IconButton className='status__action-bar-button' disabled={anonymousAccess} title={replyTitle} icon={replyIcon} onClick={this.handleReplyClick} />
|
<IconButton className='status__action-bar-button' disabled={anonymousAccess} title={replyTitle} icon={replyIcon} onClick={this.handleReplyClick} />
|
||||||
<IconButton className='status__action-bar-button' disabled={anonymousAccess || !publicStatus} active={status.get('reblogged')} pressed={status.get('reblogged')} title={!publicStatus ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} />
|
<IconButton className='status__action-bar-button' disabled={anonymousAccess || !publicStatus} active={status.get('reblogged')} pressed={status.get('reblogged')} title={!publicStatus ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} />
|
||||||
<IconButton className='status__action-bar-button star-icon' disabled={anonymousAccess} animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} />
|
<IconButton className='status__action-bar-button star-icon' disabled={anonymousAccess} animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='floppy-o' onClick={this.handleFavouriteClick} />
|
||||||
{shareButton}
|
{shareButton}
|
||||||
|
|
||||||
<div className='status__action-bar-dropdown'>
|
<div className='status__action-bar-dropdown'>
|
||||||
|
|
|
@ -356,8 +356,8 @@ export default class EmojiPickerDropdown extends React.PureComponent {
|
||||||
<div ref={this.setTargetRef} className='emoji-button' title={title} aria-label={title} aria-expanded={active} role='button' onClick={this.onToggle} onKeyDown={this.onToggle} tabIndex={0}>
|
<div ref={this.setTargetRef} className='emoji-button' title={title} aria-label={title} aria-expanded={active} role='button' onClick={this.onToggle} onKeyDown={this.onToggle} tabIndex={0}>
|
||||||
<img
|
<img
|
||||||
className={classNames('emojione', { 'pulse-loading': active && loading })}
|
className={classNames('emojione', { 'pulse-loading': active && loading })}
|
||||||
alt='🙂'
|
alt='🤔'
|
||||||
src={`${assetHost}/emoji/1f602.svg`}
|
src={`${assetHost}/emoji/1f914.svg`}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -12,13 +12,13 @@ const DEFAULTS = [
|
||||||
'+1',
|
'+1',
|
||||||
'grinning',
|
'grinning',
|
||||||
'kissing_heart',
|
'kissing_heart',
|
||||||
'heart_eyes',
|
'vhs',
|
||||||
'laughing',
|
'laughing',
|
||||||
'stuck_out_tongue_winking_eye',
|
'floppy_disk',
|
||||||
'sweat_smile',
|
'sweat_smile',
|
||||||
'joy',
|
'joy',
|
||||||
'yum',
|
'yum',
|
||||||
'disappointed',
|
'computer',
|
||||||
'thinking_face',
|
'thinking_face',
|
||||||
'weary',
|
'weary',
|
||||||
'sob',
|
'sob',
|
||||||
|
|
|
@ -14,20 +14,20 @@ import { Link } from 'react-router-dom';
|
||||||
import NavigationBar from '../compose/components/navigation_bar';
|
import NavigationBar from '../compose/components/navigation_bar';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
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' },
|
||||||
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' },
|
||||||
direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' },
|
direct: { id: 'navigation_bar.direct', defaultMessage: '~/.dms' },
|
||||||
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
|
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'edit ~/.config' },
|
||||||
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },
|
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: '~/.follow-requests' },
|
||||||
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' },
|
||||||
domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' },
|
domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: '~/.hidden-domains' },
|
||||||
mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },
|
mutes: { id: 'navigation_bar.mutes', defaultMessage: '~/.muted' },
|
||||||
pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' },
|
pins: { id: 'navigation_bar.pins', defaultMessage: '~/.pinned' },
|
||||||
lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },
|
lists: { id: 'navigation_bar.lists', defaultMessage: '~/.lists' },
|
||||||
discover: { id: 'navigation_bar.discover', defaultMessage: 'Discover' },
|
discover: { id: 'navigation_bar.discover', defaultMessage: 'Discover' },
|
||||||
personal: { id: 'navigation_bar.personal', defaultMessage: 'Personal' },
|
personal: { id: 'navigation_bar.personal', defaultMessage: 'Personal' },
|
||||||
security: { id: 'navigation_bar.security', defaultMessage: 'Security' },
|
security: { id: 'navigation_bar.security', defaultMessage: 'Security' },
|
||||||
|
|
|
@ -102,7 +102,7 @@ export default class Notification extends ImmutablePureComponent {
|
||||||
<div className='notification notification-favourite focusable' tabIndex='0'>
|
<div className='notification notification-favourite focusable' tabIndex='0'>
|
||||||
<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>
|
||||||
|
|
|
@ -161,7 +161,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 className='star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} /></div>
|
<div className='detailed-status__button'><IconButton className='star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='floppy-o' onClick={this.handleFavouriteClick} /></div>
|
||||||
{shareButton}
|
{shareButton}
|
||||||
|
|
||||||
<div className='detailed-status__action-bar-dropdown'>
|
<div className='detailed-status__action-bar-dropdown'>
|
||||||
|
|
|
@ -118,7 +118,7 @@ export default class DetailedStatus extends ImmutablePureComponent {
|
||||||
<a className='detailed-status__datetime' href={status.get('url')} target='_blank' rel='noopener'>
|
<a className='detailed-status__datetime' href={status.get('url')} target='_blank' rel='noopener'>
|
||||||
<FormattedDate value={new Date(status.get('created_at'))} hour12={false} year='numeric' month='short' day='2-digit' hour='2-digit' minute='2-digit' />
|
<FormattedDate value={new Date(status.get('created_at'))} hour12={false} year='numeric' month='short' day='2-digit' hour='2-digit' minute='2-digit' />
|
||||||
</a>{applicationLink} · {reblogLink} · <Link to={`/statuses/${status.get('id')}/favourites`} className='detailed-status__link'>
|
</a>{applicationLink} · {reblogLink} · <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>
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
.column-0
|
.column-0
|
||||||
.brand
|
.brand
|
||||||
= link_to root_url do
|
= link_to root_url do
|
||||||
= image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
|
= image_tag asset_pack_path('logo-cybre.png')
|
||||||
|
= Setting.site_title
|
||||||
|
|
||||||
- if Setting.timeline_preview
|
- if Setting.timeline_preview
|
||||||
.column-1
|
.column-1
|
||||||
|
|
|
@ -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.svg'), class: 'logo', alt: 'Mastodon'
|
= image_tag asset_pack_path('logo-cybre.png'), class: 'logo', alt: 'Cybrespace'
|
||||||
|
|
||||||
= render_navigation
|
= render_navigation
|
||||||
.content-wrapper
|
.content-wrapper
|
||||||
|
|
|
@ -6,7 +6,8 @@
|
||||||
.logo-container
|
.logo-container
|
||||||
%h1
|
%h1
|
||||||
= link_to root_path do
|
= link_to root_path do
|
||||||
= image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
|
= image_tag asset_pack_path('logo-cybre.png')
|
||||||
|
= Setting.site_title
|
||||||
|
|
||||||
.form-container
|
.form-container
|
||||||
= render 'flashes'
|
= render 'flashes'
|
||||||
|
|
|
@ -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_terms: ''
|
site_terms: ''
|
||||||
|
|
|
@ -29,11 +29,11 @@ module Mastodon
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_s
|
def to_s
|
||||||
[to_a.join('.'), flags].join
|
[to_a.join('.'), flags, '-cybre'].join
|
||||||
end
|
end
|
||||||
|
|
||||||
def source_base_url
|
def source_base_url
|
||||||
'https://github.com/tootsuite/mastodon'
|
'https://github.com/cybrespace/mastodon'
|
||||||
end
|
end
|
||||||
|
|
||||||
# specify git tag or commit hash here
|
# specify git tag or commit hash here
|
||||||
|
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 37 KiB |
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>#282c37</TileColor>
|
<TileColor>#1ea21e</TileColor>
|
||||||
</tile>
|
</tile>
|
||||||
</msapplication>
|
</msapplication>
|
||||||
</browserconfig>
|
</browserconfig>
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
document.addEventListener("DOMContentLoaded", function(event) {
|
||||||
|
updateClock();
|
||||||
|
setInterval(updateClock, 1000);
|
||||||
|
});
|
||||||
|
|
||||||
|
function getNextOpen(now) {
|
||||||
|
var days = [[0, 14], [4, 18], [8, 22], [12], [2, 16], [6, 20], [10]]
|
||||||
|
var nowday = now.getUTCDay();
|
||||||
|
var nour = now.getUTCHours();
|
||||||
|
|
||||||
|
var open_hour = -1;
|
||||||
|
var d = 0;
|
||||||
|
|
||||||
|
while (open_hour == -1) {
|
||||||
|
var times = days[(nowday + d) % 7];
|
||||||
|
for (var i = 0; i < times.length; ++i) {
|
||||||
|
var time = times[i];
|
||||||
|
if (time == nour) {
|
||||||
|
return "refresh";
|
||||||
|
} else if (time > nour || d > 0) {
|
||||||
|
open_hour = time;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (open_hour == -1) {
|
||||||
|
d += 1;
|
||||||
|
nour = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var open = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() + d));
|
||||||
|
var ts = open.setUTCHours(open_hour);
|
||||||
|
return open;
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateClock() {
|
||||||
|
var clock = document.querySelector(".closed-registrations-message .clock");
|
||||||
|
var now = new Date();
|
||||||
|
var open = getNextOpen(now);
|
||||||
|
|
||||||
|
if (open == "refresh") {
|
||||||
|
location.reload();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
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: 997 B After Width: | Height: | Size: 310 KiB |
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 295 KiB |
After Width: | Height: | Size: 398 KiB |
After Width: | Height: | Size: 818 KiB |
After Width: | Height: | Size: 184 KiB |
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 24 KiB |