Cybrespace branding
|
@ -206,7 +206,7 @@ export default class StatusActionBar extends ImmutablePureComponent {
|
|||
<div className='status__action-bar'>
|
||||
<div className='status__action-bar__counter'><IconButton className='status__action-bar-button' disabled={anonymousAccess} title={replyTitle} icon={replyIcon} onClick={this.handleReplyClick} /><span className='status__action-bar__counter__label' >{obfuscatedCount(status.get('replies_count'))}</span></div>
|
||||
<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}
|
||||
|
||||
<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}>
|
||||
<img
|
||||
className={classNames('emojione', { 'pulse-loading': active && loading })}
|
||||
alt='🙂'
|
||||
src={`${assetHost}/emoji/1f602.svg`}
|
||||
alt='🤔'
|
||||
src={`${assetHost}/emoji/1f914.svg`}
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -12,13 +12,13 @@ const DEFAULTS = [
|
|||
'+1',
|
||||
'grinning',
|
||||
'kissing_heart',
|
||||
'heart_eyes',
|
||||
'vhs',
|
||||
'laughing',
|
||||
'stuck_out_tongue_winking_eye',
|
||||
'floppy_disk',
|
||||
'sweat_smile',
|
||||
'joy',
|
||||
'yum',
|
||||
'disappointed',
|
||||
'computer',
|
||||
'thinking_face',
|
||||
'weary',
|
||||
'sob',
|
||||
|
|
|
@ -14,20 +14,20 @@ import { Link } from 'react-router-dom';
|
|||
import NavigationBar from '../compose/components/navigation_bar';
|
||||
|
||||
const messages = defineMessages({
|
||||
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' },
|
||||
settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' },
|
||||
community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' },
|
||||
direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' },
|
||||
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
|
||||
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },
|
||||
favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },
|
||||
blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' },
|
||||
domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' },
|
||||
mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },
|
||||
pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' },
|
||||
lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },
|
||||
community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: '/timelines/local' },
|
||||
direct: { id: 'navigation_bar.direct', defaultMessage: '~/.dms' },
|
||||
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'edit ~/.config' },
|
||||
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: '~/.follow-requests' },
|
||||
favourites: { id: 'navigation_bar.favourites', defaultMessage: '~/.florps' },
|
||||
blocks: { id: 'navigation_bar.blocks', defaultMessage: '~/.blocked' },
|
||||
domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: '~/.hidden-domains' },
|
||||
mutes: { id: 'navigation_bar.mutes', defaultMessage: '~/.muted' },
|
||||
pins: { id: 'navigation_bar.pins', defaultMessage: '~/.pinned' },
|
||||
lists: { id: 'navigation_bar.lists', defaultMessage: '~/.lists' },
|
||||
discover: { id: 'navigation_bar.discover', defaultMessage: 'Discover' },
|
||||
personal: { id: 'navigation_bar.personal', defaultMessage: 'Personal' },
|
||||
security: { id: 'navigation_bar.security', defaultMessage: 'Security' },
|
||||
|
|
|
@ -116,7 +116,7 @@ export default class Notification extends ImmutablePureComponent {
|
|||
<div className='notification notification-favourite focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage({ id: 'notification.favourite', defaultMessage: '{name} favourited your status' }, { name: notification.getIn(['account', 'acct']) }), notification.get('created_at'))}>
|
||||
<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>
|
||||
|
|
|
@ -161,7 +161,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 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}
|
||||
|
||||
<div className='detailed-status__action-bar-dropdown'>
|
||||
|
|
|
@ -119,7 +119,7 @@ export default class DetailedStatus extends ImmutablePureComponent {
|
|||
<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' />
|
||||
</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'>
|
||||
<FormattedNumber value={status.get('favourites_count')} />
|
||||
</span>
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
.column-0
|
||||
.brand
|
||||
= 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
|
||||
.column-1
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
.sidebar-wrapper
|
||||
.sidebar
|
||||
= 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
|
||||
.content-wrapper
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
.logo-container
|
||||
%h1
|
||||
= 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
|
||||
= render 'flashes'
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
# For more information, see docs/Running-Mastodon/Administration-guide.md
|
||||
#
|
||||
defaults: &defaults
|
||||
site_title: Mastodon
|
||||
site_title: 'Cybrespace'
|
||||
site_short_description: ''
|
||||
site_description: ''
|
||||
site_extended_description: ''
|
||||
|
|
|
@ -29,7 +29,7 @@ module Mastodon
|
|||
end
|
||||
|
||||
def to_s
|
||||
[to_a.join('.'), flags].join
|
||||
[to_a.join('.'), flags, '-cybre'].join
|
||||
end
|
||||
|
||||
def repository
|
||||
|
@ -37,7 +37,7 @@ module Mastodon
|
|||
end
|
||||
|
||||
def source_base_url
|
||||
"https://github.com/#{repository}"
|
||||
'https://cybre.tech/cybrespace/mastodon'
|
||||
end
|
||||
|
||||
# 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>
|
||||
<tile>
|
||||
<square150x150logo src="/mstile-150x150.png"/>
|
||||
<TileColor>#282c37</TileColor>
|
||||
<TileColor>#1ea21e</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</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 |